{"version":3,"sources":["webpack:///./screens/shared/components/header.js","webpack:///./screens/shared/components/shops-header.js","webpack:///./screens/index.js","webpack:///./screens/my-profile/my-profile.js","webpack:///./screens/my-profile/profile-details.js","webpack:///./screens/my-profile/my-profile-old.js","webpack:///./screens/my-profile/index.js","webpack:///./screens/recipient-slug/easter-egg-amounts.js","webpack:///./screens/recipient-slug/extract-amount-info.js","webpack:///./screens/recipient-slug/slug-recipient-profile.js","webpack:///./screens/seller/slug-seller-recipient-profile.js","webpack:///./screens/recipient-slug/slug-not-found.js","webpack:///./screens/recipient-slug/recipient-slug.js","webpack:///./screens/recipient-slug/recipient-slug-profile.js","webpack:///./screens/recipient-slug/recipient-slug-old.js","webpack:///./screens/recipient-slug/index.js","webpack:///./screens/seller/products/index.js","webpack:///./screens/shared/components/cover-photo.js","webpack:///./screens/shared/components/profile-card.js","webpack:///./screens/shared/components/share.js","webpack:///./screens/shops-buyer/cart/index.js","webpack:///./screens/shops-buyer/cart/utils/cart-products.js","webpack:///./screens/shops-buyer/shared/components/product-cover-photo.js","webpack:///./screens/shops-buyer/shared/components/mobile-cart-half-sheet.js","webpack:///./screens/shops-buyer/product-detail/unable-to-buy-alert.js","webpack:///./screens/shops-buyer/product-detail/shared-utils.js","webpack:///./screens/shops-buyer/multi-cart-product/index.js","webpack:///./screens/shops-buyer/single-cart-product/index.js","webpack:///./screens/shops-buyer/product-detail/index.js","webpack:///./screens/shops-buyer/shared/components/paypal-logo-icon.js","webpack:///./screens/shops-buyer/shared/components/buttons/pay-with-paypal.js","webpack:///./screens/shops-buyer/shared/components/powered-by-paypal-footer.js","webpack:///./screens/shops-buyer/shared/components/buttons/pay-as-guest.js","webpack:///./screens/shops-buyer/shared/components/buttons/checkout-buttons.js","webpack:///./screens/shops-buyer/shared/components/quantity-dropdown.js","webpack:///./utils/name.js","webpack:///./utils/photo.js"],"names":["l10n","getContent","Header","this","props","isUserLoggedIn","mobileBannerStyle","padding","clientData","isProfileTreatment","userHasCoverPhoto","position","background","borderColor","loginUrl","getLoginUrl","returnUri","window","location","href","addZIndex","zIndex","className","role","style","color","paddingTop","React","Component","ShopsNavMain","css","display","flexDirection","justifyContent","alignItems","minHeight","maxHeight","borderBottom","backgroundColor","smallAndBigger","right","left","top","width","WebkitTransition","OTransition","transition","ShopNavSection","outline","ShopsNavLinks","margin","phone6PlusPortraitMaxAndSmaller","LinkStyle","textDecoration","CartCount","whiteSpace","CustomFont","fontSize","CustomMarginLeft","marginLeft","CustomMarginRight","marginRight","ShopsHeader","slug","profilePhoto","shopName","handleShopClick","addLoader","handleCartClick","to","ShopsBuyerState","shopsBuyerState","cartCount","getTotalCartCount","onClick","src","alt","size","length","slice","innerWidth","SIZE_SMALL","propTypes","PropTypes","bool","isShopsWebExperienceAllowed","Main","string","SpinnerContainer","glamorous","div","height","animation","isCommerce","isMultiCartExperienceEnabled","id","SPINNER_ID","theme","screenReaderText","children","dangerouslySetInnerHTML","__html","footerHtml","INSTRUMENTATION","INSTRUMENTATION_MAP","profile","locality","locale","country","Container","marginTop","CoverContainer","marginBottom","ProfileCardContainer","ShareContainer","maxWidth","MyProfile","settings","state","slugDetails","paypalmeSlugName","userInfo","profilePhotoUrl","displayName","displayAddress","personalizationSettings","coverPhotoUrl","coverPhotoVerticalPan","welcomeNote","useEffect","trackImpression","OLD","PAGE_GROUP","PAGE_NAME","tracking","Events","public_identity_my_profile_screen_shown","photoUrl","photoVerticalPan","getProfilePhotoUrl","getDisplayName","handle","displayLocation","blurb","slugInfo","onShare","platform","trackLinkWithData","public_identity_my_profile_share_pressed","imageURL","containerStyles","backgroundSize","backgroundRepeat","paddingBottom","phoneLandscapeMinAndSmaller","myProfilePage","ProfileDetails","SettingsContainer","e","pi","sqrt2","phi","tau","graham","avogadro","googolplex","googol","beer","pizza","coffee","hamburger","Math","random","toFixed","חי","currencyRegex","extractAmountInfo","amountString","decodedAmountString","decodeURI","easterEggResult","getEasterEggInfo","primaryCurrencyCode","supportedCurrencyCode","match","currency","amountOnly","replace","includes","toUpperCase","amount","Number","toCanonicalNumber","easterEggAmounts","firstPart","secondPart","recipient","UTM_TAGS","utmTags","PARTNER_TAGS","partnerTags","ReportContainer","ReportLink","a","withRouter","public_identity_profile_screen_shown","useState","getReportLink","reportLink","useRef","current","params","amountInfo","currencyCode","showAmount","isProfileAmountTreatment","isNaN","getAmountFieldInfo","currencyDecimal","currencySymbolMap","getFormattedAmount","symbolIsoCurrency","formattedAmount","handleSendReqUrl","type","trackLink","public_identity_profile_request_pressed","redirectUrl","getSendUrl","isLoggedIn","String","normalizeNumber","getRequestUrl","isPSD2Treatment","assign","body","fetch","requestURI","method","headers","csrf","JSON","stringify","response","json","data","status","showActions","onSend","onRequest","formatAmount","getFormattedValue","amountLabel","as","secondary","target","rel","public_identity_profile_report_pressed","Wrapper","textAlign","Warning","img","HeaderContainer","BodyContainer","SlugNotFound","ILLUSTRATIONS","WARNING","aria-level","recipientSlugDetails","isSellerProfile","SlugDetails","RecipientProfile","SlugSellerRecipientProfile","SlugRecipientProfile","isProfileStatusActive","previewData","ProfileViewStyling","phoneLandscapeMaxAndSmaller","ProfileViewParentStyling","PayPalMeProfile","initialAmount","initialCurrencyCode","smallAndSmaller","content","bottom","showAmountInput","recipientSlugPage","Boolean","RecipientSlug","RecipientSlugOld","fontFamily","minWidth","FadeIn","keyframes","from","opacity","ProductsBlock","Products","products","scrollTo","public_identity_shop_product_list_screen_shown","count","data-test-id","heading","NEW_ARRIVALS_PREVIEW_TYPE","showHeading","CONTAINER_HEIGHT_PX","CONTAINER_WIDTH_PX","ContainerBase","DraggableContainer","cursor","Photo","fadeIn","borderRadius","backgroundPositionX","backgroundPositionY","EditContainer","EditButton","button","border","EditText","clip","overflow","DragButton","transform","ChevronContainer","ChevronUpIcon","DragText","span","fontWeight","WithDrag","isDraggable","onDrag","onDragEnd","onDragCancel","onPan","onPanEnd","onPanCancel","options","recognizers","pan","threshold","CoverPhoto","isEditable","onEdit","isLoaded","setIsLoaded","isPhotoCached","setIsPhotoCached","photoImage","Image","onload","onerror","complete","getDisplayCoverPhotoUrl","aria-label","name","aria-hidden","PrimaryText","SecondaryText","Card","boxShadow","Content","overflowWrap","AvatarContainer","AvatarStyles","GenericAvatar","lineHeight","PhotoAvatar","backgroundImage","backgroundPosition","AvatarEdit","font","EditCamera","ShareButton","SecondaryContent","TertiaryContent","AmountContainer","paddingLeft","paddingRight","Footer","Button","borderRight","borderTop","flexBasis","ProfileCard","isShareable","sendLink","value","inputProps","readOnly","selectProps","disabled","l10nSettings","ShareTitle","SVGParent","phone5PortraitMaxAndSmaller","SVGStyling","SVG","forwardProps","rootEl","SpanText","CopyContainer","TooltipCopied","borderLeft","ShareYourLink","isCopied","preventDefault","sharing","shareURLByFacebook","twitterShareLink","encodeURIComponent","shareByTwitter","shareByWhatsApp","shareURLByMessenger","setState","setTimeout","strong","lang","text","onCopy","copyToClipboard","svgString","svgImages","clipBoard","transitionName","transitionEnterTimeout","transitionLeaveTimeout","key","handleFBClick","facebook","handleMessengerClick","messenger","handleTwitterClick","twitter","CartError","CartContent","EmptyCartDiv","EmptyCartContent","HeadingTextStyles","foldPortraitMaxAndSmaller","EmptyCartButtonStyles","EmptyCartBackground","ProductDetails","ProductImage","objectFit","ProductText","ProductName","RemoveBtn","ProductPriceQuantity","ProductPrice","alignSelf","Subtotal","ButtonDiv","Divider","FullDivider","containerPadding","ShoppingButton","Cart","addOrUpdateItemInCart","deleteItemFromCart","getCountForShopProductId","shopCatalogDetails","shopHandle","getCartStorage","productsForShopInCart","setProductsForShopInCart","cartAvailabilityError","setCartAvailabilityError","showAvailabilityError","setShowAvailabilityError","cartQuantityError","setCartQuantityError","showQuantityError","setShowQuantityError","getProductListForCart","allProducts","subTotal","productList","filter","product","isAvailable","isCartEmpty","disableButton","public_identity_buyer_review_cart_screen_shown","total_count","subtotal_amt","item_id","map","item","productId","join","item_cnt","quantity","unavailableProducts","productName","productTitle","Array","fill","validateCart","public_identity_buyer_review_cart_continue_shopping_pressed","history","push","handleRemove","public_identity_buyer_review_cart_remove_item_pressed","updatedCartProducts","handleQuantityChange","updatedQuantity","allProductsInCart","cartProductList","productsWithError","errorType","forEach","public_identity_buyer_review_cart_inventory_error_occurred","error_type","availableQuantity","SHOP_CART_ERROR_TYPES","soldOut","error","index","closeButton","newAvailabilityArray","SHOP_CART_IMAGES","EMPTY_CART","cartItem","price","imageUrl","tertiary","parseFloat","toString","flow","availableItems","errorTextLabel","cartHasErrors","handleCheckoutWhenError","fireTrackingEvent","eventName","cart","object","shippingTotal","number","subTotalRaw","productInshopCatalogDetails","find","shopCatalogDetail","listingImages","heights","ContentBlock","BackgroundPhoto","image","noPagination","boxSizing","encodeURI","TopPhoto","PaginationContainer","Page","ActivePage","Hidden","ProductCoverPhoto","currentPage","setCurrentPage","productPhotos","productPhotoCount","totalPageCount","onChange","page","prevPageLabel","nextPageLabel","paginationLabel","pageClassName","activePageClassName","arrowLeftClassName","arrowRightClassName","arrowSpaceClassName","CartSheet","overflowX","CartList","CartItem","SheetActions","MobileCartHalfSheet","cartSubtotal","showCartHalfSheet","handleAdvanceToCart","handleCloseHalfSheet","totalCartCount","public_identity_buyer_add_cart_confirmation_screen_shown","sheetTitle","isOpen","onCloseComplete","title","footerContents","public_identity_buyer_add_cart_confirmation_review_cart_pressed","public_identity_buyer_add_cart_confirmation_continue_shopping_pressed","footerAlign","reverse","clampAtLine","arrayOf","shape","func","UnableToBuyAlert","isAllowedToBuy","handleDismiss","isBusinessUser","showUnableToPurchaseAlert","setShowUnableToPurchaseAlert","public_identity_buyer_generic_error_occurred","error_desc","acct_type","defaultProps","getQuantityContent","getShippingContent","shippingFeePrice","shippingDetails","shippingContent","isHiddenOrDeleted","listingStatus","errObj","UI_ERROR_STATES","getShopProductDetailError","WidgetContainer","Price","ProductBlock","ProductTitle","ProductDescription","DividerCss","ShippingFee","ShopActions","shopActionButton","ProductDetail","catalogListing","currentProductId","public_identity_buyer_item_screen_shown","public_identity_buyer_item_inventory_error_occurred","opt_sel","event","currentProduct","isMobile","quantityFromState","rawAvailableQuantity","setQuantity","setShowCartHalfSheet","setCartProductList","setCartSubtotal","pathname","hasOwnProperty","handleAddToCart","public_identity_buyer_item_add_to_cart_pressed","cost","allowEdit","description","closedBy","public_identity_buyer_add_cart_confirmation_dismiss_pressed","dismiss_method","shopId","analyticsData","isPurchasable","handleOnClick","ProductDetailsView","MultiItemPurchase","SingleItemPurchase","PaypalLogoIcon","xmlns","viewBox","stroke","d","ButtonStyles","PaypalCheckoutImage","verticalAlign","PayWithPaypalButton","branded","clickHandler","iconComponent","LOGOS","PAYPAL_PRIMARY","PoweredByPaypal","flexFlow","PayWithPaypalFooter","PoweredByPaypalFooter","PayAsAGuestButton","CheckoutButtons","encryptedFlowData","loginCheckoutPage","updateFlowData","encryptedData","removeLoader","checkoutUrlForLoggedInUser","generatePpshopsUrl","result","guestCheckoutPage","checkoutUrlForGuest","QuantityLabel","RemoveButton","QuantityDropdownWidget","showQuantityLabel","showRemoveButton","handleOnRemove","itemQuantity","abs","stateQuantity","setStateQuantity","errorState","setErrorState","availabilityOptions","_","primaryText","hidden","constructAvailabilityOptions","label","menuButtonClassName","menuLabelClassName","menuItemClassName","errorText","public_identity_buyer_item_quantity_selection_pressed","public_identity_buyer_review_cart_update_quantity_selection_pressed","selectedQuantity","public_identity_buyer_item_quantity_dropdown_pressed","public_identity_buyer_review_cart_update_dropdown_pressed","isRequired","url","DEFAULT_PROFILE_PHOTO"],"mappings":"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","file":"ppme-slug.bundle.js","sourcesContent":["// @flow\n// Component renders a simple PayPal header when users are not logged in\nimport React, { Fragment } from 'react'\nimport getContent from 'pp-react-l10n'\n\nimport { getLoginUrl } from 'utils/generate-urls'\nimport clientData from 'utils/client-data'\n\nconst l10n = getContent('inc/header')\n\ntype Props = {\n isUserLoggedIn: boolean,\n userHasCoverPhoto: boolean,\n}\n\nexport default class Header extends React.Component {\n render() {\n if (this.props.isUserLoggedIn) {\n return null\n }\n\n const mobileBannerStyle = {\n padding: '0 30px 0 40px',\n ...(!clientData.isProfileTreatment && this.props.userHasCoverPhoto\n ? {\n position: 'absolute',\n background: 'transparent',\n borderColor: 'transparent',\n }\n : {}),\n }\n\n const loginUrl = getLoginUrl({ returnUri: window.location.href })\n\n // Needed to place log in/Paypal home buttons on top level for\n // mobile views when slug has a cover photo. Creates an overlay effect.\n const addZIndex = {\n ...(this.props.userHasCoverPhoto ? { zIndex: 801 } : {}),\n }\n return (\n \n
\n
\n \n \n \n
\n
\n \n {l10n('header.login')}\n {l10n('header.login')}\n \n
\n
\n
\n \n
\n
\n
\n
\n
\n
\n \n \n \n
\n
    \n
  • \n \n {l10n('header.login')}\n {l10n('header.login')}\n \n
  • \n
\n
\n
\n
\n )\n }\n}\n","// @flow\n// Component renders a simple PayPal header when users are not logged in\nimport React from 'react'\nimport PropTypes from 'prop-types'\nimport clientData from 'utils/client-data'\nimport { get } from 'lodash'\nimport {\n V2ShoppingcartIcon,\n white,\n BodyText,\n Link,\n Avatar,\n NumericBadge,\n} from '@paypalcorp/pp-react'\nimport { css } from 'glamor'\nimport { smallAndBigger } from 'lib/styles/media-queries'\nimport {\n phone6PlusPortraitMaxAndSmaller,\n SIZE_SMALL,\n} from 'lib/styles/media-queries'\nimport ShopsBuyerState from '../../shops-buyer/state'\nimport { Subscribe } from 'unstated'\nimport getContent from 'pp-react-l10n'\n\nimport { addLoader } from '../../../utils/loader'\n\nconst l10n = getContent('pages/shops/header')\n\nconst ShopsNavMain = css({\n display: 'flex',\n flexDirection: 'row',\n justifyContent: 'space-between',\n alignItems: 'center',\n padding: '0',\n minHeight: '72px',\n maxHeight: '84px',\n borderBottom: `1px solid ${white} `,\n backgroundColor: white,\n [smallAndBigger]: {\n display: 'flex',\n position: 'fixed',\n right: 0,\n left: 0,\n top: 0,\n width: '100%',\n zIndex: '1030',\n WebkitTransition: 'right 250ms left 250ms',\n OTransition: ' right 250ms left 250ms',\n transition: 'right 250ms left 250ms',\n },\n})\n\nconst ShopNavSection = css({\n display: 'flex',\n alignItems: 'center',\n '&:focus': {\n outline: 'none',\n },\n})\n\nconst ShopsNavLinks = css({\n margin: '20px 5px 20px 10px',\n [phone6PlusPortraitMaxAndSmaller]: {\n margin: '20px 5px 20px 5px',\n },\n})\n\nconst LinkStyle = css({\n textDecoration: 'none',\n color: '#000000',\n})\n\nconst CartCount = css({\n whiteSpace: 'nowrap',\n position: 'absolute',\n top: '-5px',\n left: '21px',\n})\n\nconst CustomFont = css({\n fontSize: '1.25rem',\n})\n\nconst CustomMarginLeft = css({\n marginLeft: '20px',\n [phone6PlusPortraitMaxAndSmaller]: {\n marginLeft: '2px',\n },\n})\n\nconst CustomMarginRight = css({\n marginRight: '30px',\n [phone6PlusPortraitMaxAndSmaller]: {\n marginRight: '15px',\n },\n})\n\nShopsHeader.propTypes = {\n isUserLoggedIn: PropTypes.bool,\n userHasCoverPhoto: PropTypes.bool,\n isShopsWebExperienceAllowed: PropTypes.bool,\n}\n\nfunction ShopsHeader() {\n const slug = get(clientData, 'shop.slug', '')\n const profilePhoto = get(\n clientData,\n 'recipientSlugDetails.slugDetails.userInfo.profilePhotoUrl',\n 'https://www.paypalobjects.com/p2p_seller_profiles/storeImage.jpg',\n )\n const shopName = get(\n clientData,\n 'recipientSlugDetails.slugDetails.userInfo.alternateFullName',\n '',\n )\n\n const handleShopClick = () => {\n addLoader()\n window.location.href = `/paypalme/${slug}`\n }\n\n const handleCartClick = () => {\n addLoader()\n window.location.href = `/paypalme/${slug}/buy/cart`\n }\n\n return (\n \n {shopsBuyerState => {\n const cartCount = shopsBuyerState.getTotalCartCount()\n return (\n <>\n
\n {slug && slug !== '' ? (\n
\n {profilePhoto ? (\n
\n {\n handleShopClick()\n }}\n >\n \n \n
\n ) : null}\n
\n {\n handleShopClick()\n }}\n {...LinkStyle}\n >\n \n {shopName.length > 20\n ? `${shopName.slice(0, 20)}...`\n : shopName}\n \n \n
\n
\n ) : (\n false\n )}\n
\n {window.innerWidth >= SIZE_SMALL ? (\n
\n {\n handleCartClick()\n }}\n {...LinkStyle}\n >\n {l10n('cartLink')}\n \n
\n ) : null}\n
\n {\n handleCartClick()\n }}\n {...LinkStyle}\n >\n \n {cartCount && cartCount > 0 ? (\n {cartCount}\n ) : null}\n \n \n
\n
\n
\n \n )\n }}\n
\n )\n}\n\nexport default ShopsHeader\n","// @flow\n/**\n * Main Flow Container. This will contain all the other container components.\n * This component is mounted at 'transfer/'.\n * If we ever move header/footer to React this is where it should live...\n */\n\nimport React from 'react'\nimport PropTypes from 'prop-types'\nimport clientData from 'utils/client-data'\nimport _ from 'lodash'\nimport Header from 'screens/shared/components/header'\nimport ShopsHeader from 'screens/shared/components/shops-header'\n\nimport { SPINNER_ID } from 'utils/loader'\nimport { LoadingSpinner as Spinner } from '@paypalcorp/pp-react'\nimport glamorous from 'glamorous'\n\nMain.propTypes = {\n userHasCoverPhoto: PropTypes.string,\n isShopsWebExperienceAllowed: PropTypes.bool,\n}\n\nconst SpinnerContainer = glamorous.div({\n position: 'fixed',\n top: 0,\n left: 0,\n width: '100%',\n height: '100%',\n backgroundColor: 'rgba(255, 255, 255, 0.6)',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n animation: 'vx_fade-in 0.3s ease-out 0s both',\n zIndex: 1,\n})\n\nfunction Main(props) {\n const userHasCoverPhoto = !!_.get(\n clientData,\n 'recipientSlugDetails.slugDetails.personalizationSettings.coverPhotoUrl',\n '',\n )\n\n const isShopsWebExperienceAllowed = !!_.get(\n clientData,\n 'isShopsWebExperienceAllowed',\n false,\n )\n\n const isCommerce = !!_.get(\n clientData,\n 'recipientSlugDetails.slugDetails.intent',\n )\n\n const isMultiCartExperienceEnabled = !!_.get(\n clientData,\n 'isMultiCartExperienceEnabled',\n false,\n )\n\n return (\n
\n \n \n \n {isShopsWebExperienceAllowed &&\n isCommerce &&\n isMultiCartExperienceEnabled ? (\n \n ) : (\n \n )}\n
\n
\n {props.children}\n
\n \n
\n
\n )\n}\n\nexport default Main\n","// @flow\n\nimport React, { useEffect } from 'react'\nimport glamorous from 'glamorous'\n\nimport Events from 'lib/analytics/event-tags'\nimport { trackImpression, trackLinkWithData, tracking } from 'lib/analytics'\n\nimport clientData from 'utils/client-data'\nimport { getProfilePhotoUrl } from 'utils/photo'\nimport { getDisplayName } from 'utils/name'\n\nimport CoverPhoto from 'screens/shared/components/cover-photo'\nimport ProfileCard from 'screens/shared/components/profile-card'\nimport Share from 'components/share'\n\nimport { INSTRUMENTATION_MAP } from 'utils/constants'\n\nconst INSTRUMENTATION = INSTRUMENTATION_MAP.profile\n\nconst { locality: { locale, country } = {} } = clientData\n\nconst Container = glamorous.div({\n marginTop: '1.75rem',\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n})\n\nconst CoverContainer = glamorous.div({\n zIndex: 0,\n marginBottom: '-6.375rem',\n})\n\nconst ProfileCardContainer = glamorous.div({\n zIndex: 1,\n})\n\nconst ShareContainer = glamorous.div({\n maxWidth: '21.5rem',\n marginTop: '1.5rem',\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n position: 'relative', // for copied tooltip\n})\n\ntype Props = {\n history: {\n push: () => any,\n },\n settings: SettingsState,\n}\n\nfunction MyProfile(props: Props) {\n const {\n settings: {\n state: {\n slugDetails = {},\n slugDetails: {\n paypalmeSlugName = '',\n userInfo: {\n profilePhotoUrl = '',\n displayName = '',\n displayAddress = '',\n } = {},\n personalizationSettings: {\n coverPhotoUrl = '',\n coverPhotoVerticalPan = '50',\n welcomeNote = '',\n } = {},\n } = {},\n } = {},\n } = {},\n } = props\n\n useEffect(() => {\n trackImpression(\n INSTRUMENTATION.OLD.PAGE_GROUP,\n INSTRUMENTATION.OLD.PAGE_NAME,\n )\n tracking(Events.public_identity_my_profile_screen_shown({}))\n }, [])\n\n const onShare = (platform: string) => {\n trackLinkWithData(\n 'share',\n INSTRUMENTATION.OLD.PAGE_GROUP,\n INSTRUMENTATION.OLD.PAGE_NAME,\n { platform },\n 'link',\n )\n tracking(Events.public_identity_my_profile_share_pressed({}))\n }\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n )\n}\n\nexport default MyProfile\n","// @flow\n\nimport React, { Component, Fragment } from 'react'\nimport ProfileView from '../shared/components/profile-view'\nimport SettingsState from '../settings/state'\nimport LazyLoader from 'components/lazy-load-image'\nimport { phoneLandscapeMinAndSmaller } from 'lib/styles/media-queries'\n\n/**\n * This React component is responsible for querying Apollo for the posts\n * and passing the results to the child Post components for rendering\n */\n\ntype Props = {\n profile: SettingsState,\n}\n\nclass MyProfile extends Component {\n render() {\n const {\n profile: {\n state,\n state: {\n userHasCoverPhoto,\n slugDetails: {\n personalizationSettings: {\n coverPhotoUrl,\n coverPhotoVerticalPan = '50',\n } = {},\n } = {},\n } = {},\n },\n } = this.props\n\n return (\n \n {coverPhotoUrl && (\n \n )}\n \n \n )\n }\n}\n\nexport default MyProfile\n","// @flow\n\nimport React from 'react'\nimport MyProfile from './profile-details'\nimport SettingsContainer from '../settings/state'\nimport { Subscribe } from 'unstated'\n\ntype Props = {\n profile: SettingsContainer,\n}\n\nclass ProfileDetails extends React.Component {\n render() {\n return (\n
\n \n
\n )\n }\n}\n\n// Use the graphql container to run the allPosts query and pass the results to PostsContainer\nexport default () => (\n \n {profile => }\n \n)\n","import _ from 'lodash'\n\nimport clientData from 'utils/client-data'\n\nimport MyProfile from './my-profile'\nimport MyProfileOld from './my-profile-old'\n\nconst isProfileTreatment = _.get(clientData, 'isProfileTreatment', false)\n\nconst Component = isProfileTreatment ? MyProfile : MyProfileOld\n\nexport default Component\n","export default {\n // Mathematical constants\n e: '2.71',\n pi: '3.14',\n sqrt2: '1.41',\n phi: '1.62',\n tau: '6.28',\n graham: '99999.99',\n avogadro: '999999.99',\n googolplex: '99999.99',\n googol: '99999.99',\n\n // Food and their emojis\n beer: '3.82',\n '🍺': '3.82',\n pizza: '9.00',\n '🍕': '9.00',\n coffee: '2.95',\n '☕️': '2.95',\n hamburger: '3.57',\n '🍔': '3.57',\n\n // Other\n '💰': (Math.random() * 80 + 20).toFixed(2),\n // chai\n חי: '18.00',\n}\n","// This module is used to take the \"amountInfo\" part of the URL on the\n// receipient page (the part that comes after the user's slug) and attempts\n// to parse it into the amount and currency\nimport easterEggAmounts from './easter-egg-amounts'\nimport { toCanonicalNumber } from 'amount-utils'\nimport clientData from 'utils/client-data'\nimport _ from 'lodash'\n\nconst currencyRegex = /[A-Za-z]{3}/\n\n// This is the main function that performs the amount info extraction.\nfunction extractAmountInfo(amountString = '') {\n const decodedAmountString = decodeURI(amountString)\n const easterEggResult = getEasterEggInfo(decodedAmountString)\n if (easterEggResult) {\n return easterEggResult\n }\n\n const primaryCurrencyCode = _.get(\n clientData,\n 'recipientSlugDetails.slugDetails.userInfo.primaryCurrencyCode',\n 'USD',\n )\n\n const supportedCurrencyCode = _.get(clientData, 'supportedCurrencies', [])\n\n let [currency = 'USD'] =\n decodedAmountString.match(currencyRegex) || [primaryCurrencyCode] || []\n\n const amountOnly = decodedAmountString.replace(currency, '') || '0'\n\n // if the currency code passed by user is not supported then default back to the recipients user currency code\n if (!supportedCurrencyCode.includes(currency.toUpperCase())) {\n currency = primaryCurrencyCode\n }\n\n return {\n amount: Number(toCanonicalNumber(amountOnly)).toFixed(2),\n currency: currency.toUpperCase(),\n }\n}\n\nexport function isValidNumber(amountString = '') {\n const { amount } = extractAmountInfo(amountString)\n return !isNaN(amount)\n}\n\n// This will check whether the amountString is referencing one of the easter\n// eggs (emoji/mathmatical constants/etc.)\nfunction getEasterEggInfo(amountString) {\n const supportedCurrencyCode = _.get(clientData, 'supportedCurrencies', [])\n const primaryCurrencyCode = _.get(\n clientData,\n 'recipientSlugDetails.slugDetails.userInfo.primaryCurrencyCode',\n 'USD',\n )\n\n // `pizza`\n if (easterEggAmounts[amountString]) {\n return {\n amount: easterEggAmounts[amountString],\n currency: primaryCurrencyCode,\n }\n }\n\n // `pizzaUSD`\n const firstPart = amountString.slice(0, amountString.length - 3)\n if (easterEggAmounts[firstPart]) {\n let currency = amountString.slice(-3).toUpperCase()\n\n // if the currency code passed by user is not supported then default back to the recipients user currency code\n if (!supportedCurrencyCode.includes(currency.toUpperCase())) {\n currency = primaryCurrencyCode\n }\n\n return {\n amount: easterEggAmounts[firstPart],\n currency,\n }\n }\n\n // `USDpizza`\n const secondPart = amountString.slice(3)\n if (easterEggAmounts[secondPart]) {\n let currency = amountString.slice(0, 3).toUpperCase()\n\n // if the currency code passed by user is not supported then default back to the recipients user currency code\n if (!supportedCurrencyCode.includes(currency.toUpperCase())) {\n currency = primaryCurrencyCode\n }\n return {\n amount: easterEggAmounts[secondPart],\n currency,\n }\n }\n return null\n}\n\nexport { extractAmountInfo }\n","// @flow\n\nimport React, { useEffect, useState, useRef } from 'react'\nimport { withRouter } from 'react-router-dom'\nimport glamorous from 'glamorous'\nimport getContent from 'pp-react-l10n'\nimport { Link } from '@paypalcorp/pp-react'\nimport clientData from 'utils/client-data'\nimport { getProfilePhotoUrl } from 'utils/photo'\nimport { getDisplayName } from 'utils/name'\nimport { getSendUrl, getRequestUrl, getReportLink } from 'utils/generate-urls'\nimport { extractAmountInfo } from 'screens/recipient-slug/extract-amount-info'\nimport {\n getAmountFieldInfo,\n getFormattedValue,\n getFormattedAmount,\n normalizeNumber,\n} from 'screens/shared/amount-utils'\n\nimport Events from 'lib/analytics/event-tags'\nimport { trackImpression, trackLink, tracking } from 'lib/analytics'\n\nimport { INSTRUMENTATION_MAP } from 'utils/constants'\n\nimport CoverPhoto from 'screens/shared/components/cover-photo'\nimport ProfileCard from 'screens/shared/components/profile-card'\n\nconst INSTRUMENTATION = INSTRUMENTATION_MAP.recipient\n\nconst l10n = getContent('pages/shared')\n\nconst UTM_TAGS = clientData.utmTags\nconst PARTNER_TAGS = clientData.partnerTags\n\nconst Container = glamorous.div({\n margin: '2.25rem 0 2rem',\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n})\n\nconst CoverContainer = glamorous.div({\n zIndex: 0,\n marginBottom: '-6.375rem',\n})\n\nconst ProfileCardContainer = glamorous.div({\n zIndex: 1,\n})\n\nconst ReportContainer = glamorous.div({\n marginTop: '3rem',\n})\nconst ReportLink = glamorous.a({ fontSize: '0.875rem' })\n\ntype Props = {\n slugDetails: SlugDetails,\n match: Match,\n}\n\nfunction SlugRecipientProfile(props: Props) {\n useEffect(() => {\n trackImpression(\n INSTRUMENTATION.OLD.PAGE_GROUP,\n INSTRUMENTATION.OLD.PAGE_NAME,\n { ...UTM_TAGS, ...PARTNER_TAGS },\n )\n tracking(\n Events.public_identity_profile_screen_shown({\n ...UTM_TAGS,\n ...PARTNER_TAGS,\n }),\n )\n }, [])\n\n const [reportLink] = useState(() => getReportLink())\n const { current: isUserLoggedIn } = useRef(clientData.isUserLoggedIn)\n\n const {\n match: { params: { amountInfo } = {} } = {},\n slugDetails = {},\n slugDetails: {\n paypalmeSlugName = '',\n userInfo: {\n profilePhotoUrl = '',\n displayName = '',\n displayAddress = '',\n } = {},\n personalizationSettings: {\n coverPhotoUrl = '',\n coverPhotoVerticalPan = '50',\n welcomeNote = '',\n } = {},\n } = {},\n } = props\n\n const [{ amount, currency: currencyCode } = {}] = useState(() =>\n extractAmountInfo(amountInfo),\n )\n const showAmount =\n clientData.isProfileAmountTreatment && !isNaN(amount) && amount > 0\n const [{ currencyDecimal, currencySymbolMap } = {}] = useState(() =>\n getAmountFieldInfo(),\n )\n const [formattedAmount] = useState(() =>\n getFormattedAmount({\n amount,\n currencyCode,\n symbolIsoCurrency: true,\n }),\n )\n\n const handleSendReqUrl = async type => {\n trackLink(\n type,\n INSTRUMENTATION.OLD.PAGE_GROUP,\n INSTRUMENTATION.OLD.PAGE_NAME,\n 'link',\n )\n let redirectUrl\n\n if (type === 'send') {\n tracking(Events.public_identity_profile_request_pressed({}))\n\n redirectUrl = getSendUrl({\n isLoggedIn: isUserLoggedIn,\n slugDetails,\n ...(showAmount && {\n amount: String(normalizeNumber(amount)),\n currencyCode,\n }),\n })\n } else {\n tracking(Events.public_identity_profile_request_pressed({}))\n\n redirectUrl = getRequestUrl({\n isLoggedIn: isUserLoggedIn,\n slugDetails,\n ...(showAmount && {\n amount: String(normalizeNumber(amount)),\n currencyCode,\n }),\n })\n }\n\n if (type === 'request' || !clientData.isPSD2Treatment) {\n window.location.assign(redirectUrl)\n return\n }\n\n const body = {\n redirectUrl,\n slugDetails,\n isUserLoggedIn,\n }\n\n if (showAmount) {\n body.amount = String(normalizeNumber(amount))\n body.currencyCode = currencyCode\n }\n\n const response = await fetch(`${clientData.requestURI}/v1/guest`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'X-CSRF-TOKEN': clientData.csrf,\n },\n body: JSON.stringify(body),\n })\n\n try {\n const data = await response.json()\n\n if (response.status >= 400) {\n window.location.assign(redirectUrl)\n return\n }\n\n window.location.assign(data.loginUrl)\n return\n } catch (err) {\n window.location.assign(redirectUrl)\n }\n }\n\n const onReport = () => {\n trackLink(\n 'report',\n INSTRUMENTATION.OLD.PAGE_GROUP,\n INSTRUMENTATION.OLD.PAGE_NAME,\n 'link',\n )\n tracking(Events.public_identity_profile_report_pressed({}))\n }\n\n return (\n \n \n \n \n \n handleSendReqUrl('send')}\n onRequest={() => handleSendReqUrl('request')}\n showAmount={showAmount}\n amount={amount}\n currencyCode={currencyCode}\n currencyDecimal={currencyDecimal}\n currencySymbolMap={currencySymbolMap}\n formatAmount={(amount: string) =>\n getFormattedValue({ amount, currencyCode })\n }\n amountLabel={formattedAmount}\n />\n \n \n \n {l10n('button.report')}\n \n \n \n )\n}\n\nexport default withRouter(SlugRecipientProfile)","import React from 'react'\nimport { withRouter } from 'react-router-dom'\nimport glamorous from 'glamorous'\nimport { ThemeProvider } from '@paypalcorp/pp-react'\nimport Preview from './preview'\n\nconst Wrapper = glamorous.div({\n margin: '2.25rem 0 2rem',\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n})\n\nfunction SlugSellerRecipientProfile(props) {\n return (\n \n \n \n \n \n )\n}\nexport default withRouter(SlugSellerRecipientProfile)\n","// @flow\n\nimport React from 'react'\nimport glamorous from 'glamorous'\nimport getContent from 'pp-react-l10n'\nimport { HeadingText, BodyText } from '@paypalcorp/pp-react'\n\nimport { ILLUSTRATIONS } from 'utils/constants'\n\nconst l10n = getContent('pages/error')\n\nconst Wrapper = glamorous.div({\n display: 'flex',\n justifyContent: 'center',\n})\nconst Container = glamorous.div({\n margin: '5rem 0',\n maxWidth: '21rem',\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n textAlign: 'center',\n})\n\nconst Warning = glamorous.img({\n width: '7rem',\n height: '7rem',\n})\n\nconst HeaderContainer = glamorous.div({\n marginTop: '0.5rem',\n})\nconst BodyContainer = glamorous.div({\n marginTop: '2rem',\n})\n\nfunction SlugNotFound() {\n return (\n \n \n \n \n \n {l10n('error.title.slugDoesNotExist')}\n \n \n \n {l10n('error.subheader.slugDoesNotExist')}\n \n \n \n )\n}\n\nexport default SlugNotFound\n","// @flow\n\nimport React from 'react'\n\nimport clientData from 'utils/client-data'\nimport { get } from 'lodash'\nimport SlugRecipientProfile from './slug-recipient-profile'\nimport SlugSellerRecipientProfile from '../seller/slug-seller-recipient-profile.js'\nimport SlugNotFound from './slug-not-found'\n\nconst { recipientSlugDetails: { slugDetails = {} } = {} } = clientData\nconst isSellerProfile = get(slugDetails, 'intent') === 'COMMERCE'\nfunction SlugDetails(props) {\n const RecipientProfile = isSellerProfile\n ? SlugSellerRecipientProfile\n : SlugRecipientProfile\n return (\n <>\n {clientData.slug && slugDetails.isProfileStatusActive ? (\n \n ) : (\n \n )}\n \n )\n}\n\nexport default SlugDetails\n","// @flow\n\nimport React, { Component } from 'react'\nimport ProfileView from 'components/profile-view'\nimport glamorous from 'glamorous'\nimport LazyLoader from 'components/lazy-load-image'\n\nimport { trackImpression } from 'lib/analytics'\n\nimport {\n smallAndSmaller,\n phoneLandscapeMaxAndSmaller,\n phoneLandscapeMinAndSmaller,\n} from 'lib/styles/media-queries'\n\nimport clientData from 'utils/client-data'\n\nimport { INSTRUMENTATION_MAP } from 'utils/constants'\n\nconst INSTRUMENTATION = INSTRUMENTATION_MAP.recipient\n\nconst UTM_TAGS = clientData.utmTags\nconst PARTNER_TAGS = clientData.partnerTags\n\n/**\n * This React component is responsible for querying Apollo for the posts\n * and passing the results to the child Post components for rendering\n */\n\ntype Props = {\n recipientSlugDetails: {\n slugDetails: SlugDetails,\n },\n userHasCoverPhoto: boolean,\n initialAmount?: string,\n initialCurrencyCode?: string,\n}\n\nconst ProfileViewStyling = glamorous.div({\n width: '480px',\n textAlign: 'center',\n margin: '0 auto',\n [phoneLandscapeMaxAndSmaller]: {\n width: '100%',\n },\n})\n\nconst ProfileViewParentStyling = glamorous.div({\n paddingTop: '26px',\n '@media (max-width: 844px)': {\n paddingTop: '0',\n },\n})\n\nclass PayPalMeProfile extends Component {\n constructor(props: Props) {\n super(props)\n\n trackImpression(\n INSTRUMENTATION.OLD.PAGE_GROUP,\n INSTRUMENTATION.OLD.PAGE_NAME,\n { ...UTM_TAGS, ...PARTNER_TAGS },\n )\n }\n\n render() {\n const {\n recipientSlugDetails,\n recipientSlugDetails: {\n slugDetails: {\n personalizationSettings: {\n coverPhotoUrl,\n coverPhotoVerticalPan = '50',\n } = {},\n } = {},\n },\n userHasCoverPhoto,\n initialAmount,\n initialCurrencyCode,\n } = this.props\n\n return (\n \n \n {coverPhotoUrl && (\n \n )}\n \n \n \n )\n }\n}\n\nexport default PayPalMeProfile\n","// @flow\n\nimport React, { Component } from 'react'\nimport _ from 'lodash'\nimport PayPalMeProfile from './recipient-slug-profile'\nimport clientData from 'utils/client-data'\nimport SlugNotFound from './slug-not-found'\nimport { extractAmountInfo } from './extract-amount-info'\n\ntype Props = {\n match: {\n params: {\n slug: string,\n amountInfo?: string,\n },\n },\n recipientSlugDetails: { slugDetails: SlugDetails },\n userHasCoverPhoto: boolean,\n}\n\nclass SlugDetails extends Component {\n static defaultProps = {\n recipientSlugDetails: _.get(clientData, 'recipientSlugDetails'),\n userHasCoverPhoto: Boolean(\n _.get(\n clientData,\n 'recipientSlugDetails.slugDetails.personalizationSettings.coverPhotoUrl',\n ),\n ),\n }\n\n render() {\n const { amount, currency } = extractAmountInfo(\n this.props.match.params.amountInfo,\n )\n\n const {\n recipientSlugDetails,\n recipientSlugDetails: { slugDetails = {} } = {},\n userHasCoverPhoto,\n } = this.props\n\n return (\n
\n {clientData.slug &&\n slugDetails.isProfileStatusActive &&\n !isNaN(amount) ? (\n \n ) : (\n \n )}\n
\n )\n }\n}\n\nexport default SlugDetails\n","import _ from 'lodash'\n\nimport clientData from 'utils/client-data'\n\nimport RecipientSlug from './recipient-slug'\nimport RecipientSlugOld from './recipient-slug-old'\n\nconst isProfileTreatment = _.get(clientData, 'isProfileTreatment', false)\n\nconst Component = isProfileTreatment ? RecipientSlug : RecipientSlugOld\n\nexport default Component\n","import React, { useEffect } from 'react'\nimport clientData from '../../../utils/client-data'\nimport glamorous from 'glamorous'\nimport { css } from 'glamor'\nimport { white } from '@paypalcorp/pp-react'\nimport getContent from 'pp-react-l10n'\nimport { NEW_ARRIVALS_PREVIEW_TYPE } from '../constants/constants'\nimport { phone6PlusPortraitMaxAndSmaller } from 'lib/styles/media-queries'\nimport ProductList from '../preview/product-list'\nimport ReportProfileLink from '../shared/report-profile-link'\nimport { tracking } from 'lib/analytics'\nimport Events from 'lib/analytics/event-tags'\nimport { get } from 'lodash'\n\nconst l10n = getContent('pages/seller/preview')\n\nconst Container = glamorous.div({\n fontFamily: 'PayPalSansBig-Regular,\"Helvetica Neue\",Arial,sans-serif',\n margin: '0px',\n padding: 15,\n width: '100%',\n minWidth: 320,\n maxWidth: 612,\n})\n\nconst FadeIn = css.keyframes({ from: { opacity: 0 }, to: { opacity: 1 } })\nconst Wrapper = glamorous.div({\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n animation: `${FadeIn} 0.5s`,\n})\n\nconst ProductsBlock = glamorous.div({\n minHeight: 400,\n margin: '10px 0',\n padding: '10%',\n backgroundColor: white,\n [phone6PlusPortraitMaxAndSmaller]: {\n padding: '0 3%',\n },\n})\n\nfunction Products(props) {\n const products = get(clientData, 'shop.shopCatalogDetails', []) || []\n\n let {\n match: {\n params: { slug },\n },\n } = props\n\n useEffect(() => {\n window.scrollTo(0, 0)\n tracking(\n Events.public_identity_shop_product_list_screen_shown({\n count: products && products.length,\n }),\n )\n }, [products])\n\n return (\n \n \n \n \n \n \n \n \n )\n}\nexport default Products\n","// @flow\n\nimport React, { useState, useEffect } from 'react'\nimport Hammer from 'react-hammerjs'\nimport { css } from 'glamor'\nimport glamorous from 'glamorous'\nimport getContent from 'pp-react-l10n'\nimport { Icon, grey100 } from '@paypalcorp/pp-react'\n\nimport { getDisplayCoverPhotoUrl } from 'utils/image-utils'\n\nconst l10n = getContent('pages/profile')\n\nexport const CONTAINER_HEIGHT_PX = '286'\nexport const CONTAINER_WIDTH_PX = '494'\n\nconst ContainerBase = {\n position: 'relative',\n height: `${CONTAINER_HEIGHT_PX / 16}rem`,\n width: `${CONTAINER_WIDTH_PX / 16}rem`,\n}\n\nconst Container = glamorous.div({\n ...ContainerBase,\n})\n\nconst DraggableContainer = css({\n ...ContainerBase,\n cursor: 'move',\n cursor: 'grab', // eslint-disable-line no-dupe-keys\n '&:active': {\n cursor: 'grabbing',\n },\n})\n\nconst FadeIn = css.keyframes({ from: { opacity: 0 }, to: { opacity: 1 } })\nconst Photo = glamorous.div(\n ({ photoUrl, photoVerticalPan, fadeIn = true }) => ({\n height: '100%',\n width: '100%',\n borderRadius: '5% 5% 100% 100% / 10% 10% 50% 50%',\n background: `url(${photoUrl})`,\n backgroundSize: 'cover',\n backgroundPositionX: '50%',\n backgroundPositionY: `${photoVerticalPan}%`,\n backgroundRepeat: 'no-repeat',\n ...(fadeIn && { animation: `${FadeIn} 0.2s` }),\n }),\n)\n\nconst EditContainer = glamorous.div({\n '@media (max-width: 30.875em)': {\n width: '100vw',\n position: 'absolute',\n marginLeft: 'auto',\n marginRight: 'auto',\n left: 0,\n right: 0,\n textAlign: 'center',\n top: 0,\n },\n})\n\nconst EditButton = glamorous.button({\n position: 'absolute',\n top: '0',\n right: '0',\n border: 'none',\n padding: '0.15rem',\n cursor: 'pointer',\n outline: 'inherit',\n color: grey100,\n background: 'rgba(0, 0, 0, 0.3)',\n borderRadius: '50%',\n margin: '0.5rem 0.5rem 0 0',\n '&:focus': {\n outline: '1px auto rgb(0, 95, 204)',\n },\n})\n\n// hide text visually without hiding it from assistive technology\nconst EditText = glamorous.div({\n border: '0',\n clip: 'rect(0 0 0 0)',\n height: '1px',\n margin: '-1px',\n overflow: 'hidden',\n padding: '0',\n position: 'absolute',\n whiteSpace: 'nowrap',\n width: '1px',\n})\n\nconst DragButton = glamorous.div({\n position: 'absolute',\n top: '20%',\n left: '50%',\n transform: 'translateX(-50%)',\n padding: '0 1.75rem',\n color: 'white',\n background: 'rgba(0, 0, 0, 0.3)',\n borderRadius: '99999rem',\n display: 'flex',\n alignItems: 'center',\n})\n\nconst ChevronContainer = glamorous.div({\n display: 'flex',\n flexDirection: 'column',\n marginRight: '0.5rem',\n})\n\nconst ChevronUpIcon = css({\n marginBottom: '-0.75rem',\n})\n\nconst DragText = glamorous.span({\n fontWeight: '500',\n fontSize: '0.8125rem',\n})\n\ntype Props = {\n photoUrl: string,\n photoVerticalPan: string,\n isEditable?: boolean,\n onEdit?: () => any,\n isDraggable?: boolean,\n onDrag?: () => any,\n onDragEnd?: () => any,\n onDragCancel?: () => any,\n}\n\nfunction CoverPhoto(props: Props) {\n const {\n photoUrl,\n photoVerticalPan,\n isEditable = false,\n onEdit,\n isDraggable = false,\n onDrag = () => {},\n onDragEnd = () => {},\n onDragCancel = () => {},\n } = props\n\n const [isLoaded, setIsLoaded] = useState(false)\n const [isPhotoCached, setIsPhotoCached] = useState(false)\n\n useEffect(() => {\n const photoImage = new Image()\n photoImage.onload = () => {\n setIsLoaded(true)\n }\n photoImage.onerror = () => {\n // image failed to load so do nothing\n }\n photoImage.src = photoUrl\n if (photoImage.complete) {\n setIsPhotoCached(true)\n }\n\n return () => {\n photoImage.onload = () => {}\n }\n }, [])\n\n return (\n \n {isLoaded && (\n <>\n \n {isEditable && (\n \n \n \n {l10n('cover.edit')}\n \n \n )}\n {isDraggable && (\n \n \n \n \n \n {l10n('cover.drag')}\n \n )}\n \n )}\n \n )\n}\n\nfunction WithDrag({\n isDraggable = false,\n onDrag,\n onDragEnd,\n onDragCancel,\n children,\n}) {\n return isDraggable ? (\n \n
{children}
\n \n ) : (\n {children}\n )\n}\n\nexport default CoverPhoto\n","// @flow\n\nimport React, { useState, useEffect } from 'react'\nimport glamorous from 'glamorous'\nimport { css } from 'glamor'\nimport getContent from 'pp-react-l10n'\nimport PPAmountField from 'pp-amount-field/dist/pp-amount-field.basic.v2.umd'\nimport {\n HeadingText,\n BodyText,\n Link,\n Icon,\n grey100,\n grey200,\n grey600,\n grey700,\n blue600,\n} from '@paypalcorp/pp-react'\n\nconst l10n = getContent('pages/profile')\n\nconst PrimaryText = glamorous.div({\n color: grey700,\n})\nconst SecondaryText = glamorous.div({\n color: grey600,\n})\n\nconst Card = glamorous.div({\n minHeight: '12.125rem',\n width: '21.5rem',\n borderRadius: '0.75rem',\n backgroundColor: 'white',\n boxShadow: '0 2px 4px 0 rgba(0,0,0,0.15)',\n display: 'flex',\n flexDirection: 'column',\n position: 'relative',\n})\n\nconst Content = glamorous.div(({ showActions = false }) => ({\n margin: `1rem 1.5rem ${showActions ? '1.5rem' : '2rem'}`,\n overflowWrap: 'break-word',\n}))\n\nconst AvatarContainer = glamorous.div({\n height: '5.625rem',\n width: '5.625rem',\n marginTop: '-3.125rem',\n marginLeft: '1.25rem',\n position: 'relative',\n})\nconst AvatarStyles = {\n width: 'inherit',\n height: 'inherit',\n border: '4px solid white',\n borderRadius: '50%',\n}\nconst GenericAvatar = glamorous.div(({ background }) => ({\n ...AvatarStyles,\n background,\n textAlign: 'center',\n ' span': {\n color: 'white',\n lineHeight: '5.125rem',\n },\n}))\nconst FadeIn = css.keyframes({ from: { opacity: 0 }, to: { opacity: 1 } })\nconst PhotoAvatar = glamorous.div(({ photoUrl, fadeIn = true }) => ({\n ...AvatarStyles,\n backgroundImage: `url(\"${photoUrl}\")`,\n backgroundSize: 'cover',\n backgroundPosition: '50%',\n backgroundRepeat: 'no-repeat',\n ...(fadeIn && { animation: `${FadeIn} 0.2s` }),\n}))\nconst AvatarEdit = glamorous.button({\n color: 'inherit',\n padding: 0,\n font: 'inherit',\n cursor: 'pointer',\n outline: 'inherit',\n width: '2rem',\n height: '2rem',\n border: '2px solid white',\n textAlign: 'center',\n borderRadius: '50%',\n backgroundColor: grey200,\n position: 'absolute',\n bottom: 0,\n right: 0,\n '&:focus': {\n outline: '1px auto rgb(0, 95, 204)',\n },\n})\n\nconst EditCamera = css({\n color: grey700,\n lineHeight: '1.75rem',\n})\n\nconst ShareContainer = glamorous.div({\n position: 'absolute',\n top: '0.8125rem',\n right: '0.5rem',\n})\nconst ShareButton = glamorous.button({\n background: 'none',\n border: 'none',\n padding: '0',\n cursor: 'pointer',\n outline: 'inherit',\n})\n\nconst SecondaryContent = glamorous.div({ marginTop: '0.125rem' })\nconst TertiaryContent = glamorous.div({ marginTop: '1.5rem' })\n\nconst AmountContainer = glamorous.div({\n marginTop: '1rem',\n ' .ppaf-input': {\n '&:focus': {\n outline: 'revert',\n },\n },\n ' .ppaf-select-wrapper': {\n marginTop: '0.375rem',\n },\n ' .ppaf-select': {\n paddingLeft: '0.5rem',\n paddingRight: '0.5rem',\n },\n})\n\nconst Footer = glamorous.div({\n display: 'flex',\n marginTop: 'auto',\n overflowWrap: 'break-word',\n})\n\nconst Button = glamorous.a(({ borderRight }) => ({\n borderTop: '1px solid ' + grey100,\n ...(borderRight && { borderRight: '1px solid ' + grey100 }),\n flexBasis: '100%',\n minWidth: 0, // let flex item shrink smaller than content\n padding: '1rem 0',\n textDecoration: 'none',\n '&:active, &:focus, &:hover, &:visited': {\n textDecoration: 'none',\n },\n}))\n\ntype Props = {\n isEditable?: boolean,\n onEdit?: () => {},\n isShareable?: boolean,\n onShare?: () => {},\n photoUrl?: string,\n displayName: string,\n handle: string,\n displayLocation?: string,\n blurb?: string,\n showActions?: boolean,\n sendLink?: string,\n onSend?: () => any,\n showAmount?: boolean,\n amount?: string,\n currencyCode?: string,\n currencyDecimal?: string,\n currencySymbolMap?: { [string]: string },\n formatAmount?: (amount: string) => string,\n amountLabel?: string,\n}\n\nfunction ProfileCard(props: Props) {\n const {\n isEditable = false,\n onEdit,\n isShareable = false,\n onShare,\n photoUrl,\n displayName,\n handle,\n displayLocation,\n blurb,\n sendLink,\n onSend,\n showActions = false,\n showAmount = false,\n amount,\n currencyCode,\n currencyDecimal,\n currencySymbolMap,\n formatAmount,\n amountLabel,\n } = props\n\n const [isLoaded, setIsLoaded] = useState(!photoUrl)\n const [isPhotoCached, setIsPhotoCached] = useState(false)\n\n useEffect(() => {\n if (!photoUrl) {\n return\n }\n\n const photoImage = new Image()\n photoImage.onload = () => {\n setIsLoaded(true)\n }\n photoImage.onerror = () => {\n // image failed to load so do nothing\n }\n photoImage.src = photoUrl\n if (photoImage.complete) {\n setIsPhotoCached(true)\n }\n\n return () => {\n photoImage.onload = () => {}\n }\n }, [])\n\n return (\n \n \n {photoUrl ? (\n isLoaded && (\n \n )\n ) : (\n \n \n \n )}\n {isEditable && isLoaded && (\n \n \n \n )}\n \n {isShareable && (\n \n \n \n \n \n )}\n \n \n {displayName}\n \n \n \n {handle}\n \n {displayLocation && (\n \n {displayLocation}\n \n )}\n \n {blurb && (\n \n \n {blurb}\n \n \n )}\n {showAmount && (\n \n \n \n )}\n \n {showActions && (\n
\n \n {l10n('send')}\n \n
\n )}\n
\n )\n}\n\nexport default ProfileCard\n","// @flow\n\nimport React, { Fragment } from 'react'\nimport { CSSTransitionGroup } from 'react-transition-group'\nimport glamorous from 'glamorous'\nimport getContent from 'pp-react-l10n'\nimport { BodyText, grey700 } from '@paypalcorp/pp-react'\nimport CopyToClipboard from 'react-copy-to-clipboard'\nimport sharing from 'consumerweb-sharing'\n\nimport { svgImages } from 'components/index'\nimport SVG from 'components/svg-logo'\n\nimport { phone5PortraitMaxAndSmaller } from 'lib/styles/media-queries'\n\nconst l10n = getContent('pages/shared')\nconst l10nSettings = getContent('pages/settings')\n\nconst ShareTitle = glamorous.div({ color: grey700, textAlign: 'center' })\n\nconst SVGParent = glamorous.button({\n textAlign: 'center',\n display: 'inline-block',\n width: '3.75rem',\n margin: '0 0.625rem',\n background: 'none',\n color: 'inherit',\n border: 'none',\n padding: '0',\n font: 'inherit',\n cursor: 'pointer',\n outline: 'inherit',\n transition: 'all .2s ease-in-out',\n ':hover': {\n transform: 'scale(1.1)',\n },\n '@media (max-width: 880px)': {\n transform: 'scale(0.95)',\n marginRight: '10px',\n },\n [phone5PortraitMaxAndSmaller]: {\n transform: 'scale(0.9)',\n marginRight: 0,\n },\n '&:focus': {\n outline: '1px auto rgb(0, 95, 204)',\n },\n})\n\nconst SVGStyling = glamorous(SVG, {\n forwardProps: ['svgString'],\n rootEl: 'span',\n})({})\n\nconst SpanText = glamorous.span({\n display: 'inline-table',\n fontSize: '0.8125rem',\n color: '#ababab',\n position: 'relative',\n})\n\nconst CopyContainer = glamorous.div({\n position: 'relative',\n display: 'inline-block',\n})\n\nconst TooltipCopied = glamorous.span({\n padding: '0.25rem 0.5rem',\n position: 'absolute',\n bottom: '-2.75rem',\n fontWeight: 500,\n left: '0.5rem',\n backgroundColor: '#e1e7eb',\n color: 'black',\n\n ':before': {\n content: '\"\"',\n position: 'absolute',\n width: 0,\n height: 0,\n borderLeft: '6px solid transparent',\n borderRight: '6px solid transparent',\n marginLeft: '5px',\n borderBottom: '6px solid #e1e7eb',\n top: '-6px',\n },\n\n '&.tooltip-enter': {\n opacity: 0.01,\n },\n\n '&.tooltip-enter.tooltip-enter-active': {\n opacity: '1',\n transition: 'opacity 300ms ease-in',\n },\n\n '&.tooltip-leave.tooltip-leave-active': {\n opacity: 0.01,\n transition: 'opacity 300ms ease-in',\n },\n})\n\ntype State = {\n isCopied: boolean,\n}\ntype Props = {\n slugInfo: { slugDetails: SlugDetails },\n locale?: string,\n country?: string,\n onShare?: (platform: string) => any,\n}\n\nclass ShareYourLink extends React.Component {\n _ref: ?HTMLElement = null\n\n state = {\n isCopied: false,\n }\n\n onShare = platform => {\n if (this.props.onShare) {\n this.props.onShare(platform)\n }\n }\n\n handleFBClick = (e: SyntheticEvent) => {\n e.preventDefault()\n\n this.onShare('facebook')\n\n const {\n slugInfo: { slugDetails: { paypalmeSlugName = '' } = {} } = {},\n } = this.props\n sharing.shareURLByFacebook(\n `https://paypal.me/${paypalmeSlugName}?country.x=${this.props.country}&locale.x=${this.props.locale}`,\n 575,\n 400,\n )\n }\n\n handleTwitterClick = (e: SyntheticEvent) => {\n e.preventDefault()\n\n this.onShare('twitter')\n\n const {\n slugInfo: { slugDetails: { paypalmeSlugName = '' } = {} } = {},\n } = this.props\n const twitterShareLink = `${l10n(\n 'share.twitter',\n )} https://paypal.me/${encodeURIComponent(paypalmeSlugName)}?country.x=${\n this.props.country\n }&locale.x=${this.props.locale}`\n sharing.shareByTwitter(twitterShareLink, 575, 400)\n }\n\n handleWhatsappClick = (e: SyntheticEvent) => {\n e.preventDefault()\n\n this.onShare('whatsapp')\n\n const {\n slugInfo: { slugDetails: { paypalmeSlugName = '' } = {} } = {},\n } = this.props\n sharing.shareByWhatsApp(\n `https://paypal.me/${encodeURIComponent(paypalmeSlugName)}?locale.x=${\n this.props.locale\n }`,\n 575,\n 400,\n )\n }\n\n handleMessengerClick = (e: SyntheticEvent) => {\n e.preventDefault()\n\n this.onShare('messenger')\n\n const {\n slugInfo: { slugDetails: { paypalmeSlugName = '' } = {} } = {},\n } = this.props\n sharing.shareURLByMessenger(\n `https://paypal.me/${encodeURIComponent(paypalmeSlugName)}?country.x=${\n this.props.country\n }&locale.x=${this.props.locale}`,\n '321983581337375',\n window.location.href,\n )\n }\n\n copyToClipboard() {\n this.onShare('copylink')\n\n this.setState({ isCopied: true })\n setTimeout(() => {\n this.setState({ isCopied: false })\n }, 1000)\n }\n\n render() {\n const {\n slugInfo: { slugDetails: { paypalmeSlugName = '' } = {} } = {},\n } = this.props\n\n return (\n \n \n {l10n('header.share')}\n \n
\n {\n this.copyToClipboard()\n }}\n >\n \n \n \n {l10nSettings('share.copy')}\n \n \n {this.state.isCopied && (\n \n \n \n )}\n \n \n \n \n \n {l10nSettings('share.facebook')}\n \n \n \n {l10nSettings('share.messenger')}\n \n \n \n {l10nSettings('share.twitter')}\n \n
\n
\n )\n }\n}\n\nexport default ShareYourLink\n","import React, { useState, useEffect } from 'react'\nimport { get } from 'lodash'\nimport PropTypes from 'prop-types'\nimport glamorous from 'glamorous'\nimport { css } from 'glamor'\nimport {\n Button,\n HeadingText,\n white,\n v2neutral100,\n Alert,\n} from '@paypalcorp/pp-react'\nimport getContent from 'pp-react-l10n'\nimport clientData from 'utils/client-data'\nimport QuantityDropdownWidget from '../shared/components/quantity-dropdown'\nimport { tracking } from 'lib/analytics'\nimport Events from 'lib/analytics/event-tags'\nimport { getFormattedAmount } from '../../shared/amount-utils'\nimport CheckoutButtons from '../shared/components/buttons/checkout-buttons'\nimport getProductListForCart from './utils/cart-products'\nimport { getCartStorage } from './utils/local-storage'\nimport { SHOP_CART_IMAGES, SHOP_CART_ERROR_TYPES } from 'utils/constants'\nimport {\n smallAndBigger,\n phoneLandscapeMinAndSmaller,\n foldPortraitMaxAndSmaller,\n} from 'lib/styles/media-queries'\n\nconst l10n = getContent('pages/shops/cart')\nconst mobileTallScreen = `@media only screen and (max-width: 480px), screen and (min-height: 768)`\nconst productImageHeight = 80\nconst containerPadding = 15\n\nconst FadeIn = css.keyframes({ from: { opacity: 0 }, to: { opacity: 1 } })\nconst Wrapper = glamorous.div({\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n animation: `${FadeIn} 0.5s`,\n})\n\nconst Container = glamorous.div({\n fontFamily: 'PayPalSansBig-Regular,\"Helvetica Neue\",Arial,sans-serif',\n margin: '0px',\n padding: '15px',\n width: '100%',\n minWidth: 320,\n maxWidth: 612,\n [phoneLandscapeMinAndSmaller]: {\n padding: 0,\n },\n})\n\nconst CartError = glamorous.div({\n margin: '10px 0 15px',\n '& div': {\n marginTop: '15px',\n '&:first-child': {\n marginTop: 0,\n },\n },\n [phoneLandscapeMinAndSmaller]: {\n padding: '0 15px',\n },\n})\n\nconst CartContent = glamorous.div({\n width: '100%',\n margin: '10px 0',\n backgroundColor: white,\n padding: `${containerPadding}px`,\n})\n\nconst EmptyCartDiv = glamorous.div({\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n justifyContent: 'center',\n textAlign: 'center',\n width: '100%',\n marginBottom: '-30px',\n backgroundColor: `${white}`,\n overflow: 'hidden',\n [smallAndBigger]: {\n marginTop: '100px',\n marginBottom: 0,\n },\n})\n\nconst EmptyCartContent = glamorous.div({\n paddingTop: '50px',\n width: '100%',\n height: '100%',\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n justifyContent: 'center',\n [mobileTallScreen]: {\n height: '80vh',\n },\n})\n\nconst HeadingTextStyles = css({\n width: '75%',\n [foldPortraitMaxAndSmaller]: {\n fontSize: '1.35rem',\n width: '70%',\n },\n [smallAndBigger]: {\n paddingTop: '50px',\n },\n})\n\nconst EmptyCartButtonStyles = css({\n width: '75%',\n marginTop: '50px',\n [foldPortraitMaxAndSmaller]: {\n fontSize: '1rem',\n width: '80%',\n },\n})\n\nconst EmptyCartBackground = css({\n width: '102%',\n height: '100%',\n marginTop: '10px',\n})\n\nconst ProductDetails = glamorous.div({\n margin: '15px 0 10px',\n display: 'flex',\n height: '100%',\n})\n\nconst ProductImage = glamorous.img({\n width: `${productImageHeight}px`,\n height: `${productImageHeight}px`,\n borderRadius: '6px',\n objectFit: 'cover',\n margin: '5px 10px 0 0',\n})\n\nconst ProductText = glamorous.div({\n height: `${productImageHeight}px`,\n marginTop: '5px',\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'flex-start',\n})\n\nconst ProductName = glamorous.div({\n fontSize: '1.15rem',\n})\n\nconst RemoveBtn = css({\n padding: 0,\n marginTop: '12px',\n})\n\nconst ProductPriceQuantity = glamorous.div({\n display: 'flex',\n flexDirection: 'column',\n marginLeft: 'auto',\n})\n\nconst ProductPrice = css({\n lineHeight: 'inherit',\n marginBottom: '12px',\n alignSelf: 'flex-end',\n})\n\nconst Subtotal = css({\n marginTop: '20px',\n display: 'flex',\n justifyContent: 'space-between',\n})\n\nconst ButtonDiv = glamorous.div({\n width: '100%',\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n margin: '25px auto 30px auto',\n [smallAndBigger]: {\n marginTop: '30px',\n width: '75%',\n },\n})\n\nconst Divider = glamorous.div({\n margin: '5px 0',\n borderTop: `3px solid ${v2neutral100}`,\n})\n\nconst FullDivider = glamorous.div({\n margin: '5px 0',\n height: '7px',\n width: `calc(100% + ${containerPadding * 2}px)`,\n transform: `translateX(-${containerPadding}px)`,\n backgroundColor: v2neutral100,\n})\n\nconst ShoppingButton = css({\n marginBottom: '20px',\n})\n\nCart.propTypes = {\n cart: PropTypes.object,\n shippingTotal: PropTypes.number,\n currencyCode: PropTypes.string,\n disableButton: PropTypes.bool,\n}\n\nfunction Cart(props) {\n const {\n shopsBuyerState: {\n addOrUpdateItemInCart = () => {},\n deleteItemFromCart = () => {},\n getCountForShopProductId = () => {},\n } = {},\n } = props\n\n const shopCatalogDetails = get(clientData, 'shop.shopCatalogDetails')\n const shopHandle = get(clientData, 'shop.slug', '')\n const [productsForShopInCart, setProductsForShopInCart] = useState(\n get(getCartStorage(), shopHandle, []),\n )\n const [cartAvailabilityError, setCartAvailabilityError] = useState([])\n const [showAvailabilityError, setShowAvailabilityError] = useState([])\n const [cartQuantityError, setCartQuantityError] = useState('')\n const [showQuantityError, setShowQuantityError] = useState(false)\n const { allProducts = [], subTotal = '0' } = getProductListForCart(\n productsForShopInCart,\n shopCatalogDetails,\n )\n const productList = allProducts.filter(product => product.isAvailable)\n const isCartEmpty = productList.length === 0\n const { isUserLoggedIn } = clientData\n const disableButton = allProducts.length <= 0\n\n useEffect(() => {\n tracking(\n Events.public_identity_buyer_review_cart_screen_shown({\n total_count: productList.length,\n subtotal_amt: subTotal,\n item_id: productList.map(item => item.productId).join(','),\n item_cnt: productList.map(item => item.quantity).join(','),\n }),\n )\n\n // Show unavailability errors only once when page loads\n const unavailableProducts = allProducts.filter(\n product => !product.isAvailable,\n )\n if (unavailableProducts.length) {\n setCartAvailabilityError(\n unavailableProducts.map(product => {\n return l10n('error.notAvailable', {\n productName: product.productTitle,\n })\n }),\n )\n setShowAvailabilityError(Array(unavailableProducts.length).fill(true))\n } else {\n setCartAvailabilityError([])\n setShowAvailabilityError([])\n }\n validateCart(productsForShopInCart)\n }, [])\n\n const handleShopClick = () => {\n tracking(\n Events.public_identity_buyer_review_cart_continue_shopping_pressed({\n total_count: productList.length,\n subtotal_amt: subTotal,\n item_id: productList.map(item => item.productId).join(','),\n item_cnt: productList.map(item => item.quantity).join(','),\n }),\n )\n props.history.push(`/${shopHandle}`)\n }\n\n const handleRemove = async (shopHandle, productId, quantity) => {\n tracking(\n Events.public_identity_buyer_review_cart_remove_item_pressed({\n item_id: productId,\n item_cnt: quantity,\n }),\n )\n await deleteItemFromCart(shopHandle, productId)\n const updatedCartProducts = get(getCartStorage(), shopHandle, [])\n setProductsForShopInCart(updatedCartProducts)\n validateCart(updatedCartProducts)\n }\n\n const handleQuantityChange = async (\n updatedQuantity,\n productId,\n shopHandle,\n ) => {\n const quantityFromState = getCountForShopProductId(shopHandle, productId)\n\n if (quantityFromState > 0) {\n await addOrUpdateItemInCart(shopHandle, {\n productId,\n quantity: updatedQuantity,\n })\n const updatedCartProducts = get(getCartStorage(), shopHandle, [])\n setProductsForShopInCart(updatedCartProducts)\n validateCart(updatedCartProducts)\n }\n }\n\n const formatPrice = (price, currencyCode) =>\n getFormattedAmount({\n amount: price.toString(),\n currencyCode,\n symbolIsoCurrency: false,\n })\n\n const validateCart = (allProductsInCart = []) => {\n const { allProducts = [] } = getProductListForCart(\n allProductsInCart,\n shopCatalogDetails,\n )\n\n const cartProductList = allProducts.filter(product => product.isAvailable)\n const productsWithError = cartProductList.filter(\n product => product.errorType,\n )\n if (productsWithError.length) {\n productsWithError.forEach(product => {\n tracking(\n Events.public_identity_buyer_review_cart_inventory_error_occurred({\n item_id: product.productId,\n item_cnt: product.quantity,\n error_type: product.errorType,\n status:\n product?.availableQuantity > 0 ||\n product?.availableQuantity === null\n ? 'in stock'\n : 'out of stock',\n }),\n )\n })\n\n if (\n productsWithError.filter(\n product => product.errorType === SHOP_CART_ERROR_TYPES.soldOut,\n ).length === productsWithError.length\n ) {\n // If all products (with error) are sold out, show the sold out error\n setCartQuantityError(l10n('error.soldOut'))\n setShowQuantityError(true)\n } else if (\n productsWithError.filter(\n product => product.errorType === SHOP_CART_ERROR_TYPES.quantity,\n ).length === productsWithError.length\n ) {\n // If all products (with error) have quantity differences, show the quantity error\n setCartQuantityError(l10n('error.quantity'))\n setShowQuantityError(true)\n } else {\n // If it's a mix of sold out and quantity errors, show the combination error\n setCartQuantityError(l10n('error.combination'))\n setShowQuantityError(true)\n }\n } else {\n setCartQuantityError('')\n setShowQuantityError(false)\n }\n }\n\n const handleCheckoutWhenError = () => {\n window.scrollTo(0, 0)\n if (cartQuantityError) {\n setShowQuantityError(true)\n }\n }\n\n const fireTrackingEvent = eventName => {\n tracking(\n Events[eventName]({\n total_count: productList.length,\n subtotal_amt: subTotal,\n item_id: productList.map(item => item.productId).join(','),\n item_cnt: productList.map(item => item.quantity).join(','),\n }),\n )\n }\n\n return (\n \n \n \n {cartAvailabilityError.map((error, index) => {\n return (\n showAvailabilityError[index] && (\n {\n const newAvailabilityArray = [...showAvailabilityError]\n newAvailabilityArray[index] = false\n setShowAvailabilityError(newAvailabilityArray)\n },\n }}\n >\n {error}\n \n )\n )\n })}\n {showQuantityError && (\n setShowQuantityError(false),\n }}\n >\n {cartQuantityError}\n \n )}\n \n \n {isCartEmpty ? (\n \n \n \n {l10n('emptyCartText')}\n \n {\n handleShopClick()\n }}\n data-test-id=\"shops-cart-empty-btn\"\n >\n {l10n('continueShopping')}\n \n \n \n \n ) : (\n
\n {l10n('cartReviewPageTitle')}\n \n\n {productList &&\n productList.map((cartItem, index) => {\n return (\n \n \n \n\n \n \n {cartItem.productTitle}\n \n\n \n handleRemove(\n shopHandle,\n cartItem.productId,\n cartItem.quantity,\n )\n }\n data-test-id=\"shops-cart-product-remove-btn\"\n >\n {l10n('removeButton')}\n \n \n\n \n {cartItem?.price?.value &&\n cartItem?.price?.currencyCode && (\n \n {`${formatPrice(\n parseFloat(\n cartItem?.quantity * cartItem?.price?.value,\n ).toFixed(2),\n cartItem?.price?.currencyCode,\n )}`}\n \n )}\n\n \n \n \n {index < productList.length - 1 && }\n
\n )\n })}\n\n \n\n \n {l10n('subTotal')}\n {subTotal}\n \n\n \n {\n handleShopClick()\n }}\n data-test-id=\"shops-cart-continue-btn\"\n >\n {l10n('continueShopping')}\n \n\n \n \n \n )}\n
\n
\n
\n )\n}\n\nexport default Cart\n","import { getFormattedAmount } from '../../../shared/amount-utils'\nimport { SHOP_CART_ERROR_TYPES } from 'utils/constants'\n\nconst getProductListForCart = (productsForShopInCart, shopCatalogDetails) => {\n let subTotal = 0,\n subTotalRaw = 0\n\n const allProducts = productsForShopInCart.map(product => {\n const productInshopCatalogDetails = shopCatalogDetails.find(\n shopCatalogDetail => shopCatalogDetail.id == product.productId,\n )\n\n if (productInshopCatalogDetails) {\n subTotalRaw +=\n product?.quantity *\n parseFloat(productInshopCatalogDetails?.price?.value).toFixed(2)\n }\n\n let errorType = ''\n if (productInshopCatalogDetails?.availableQuantity !== null) {\n if (productInshopCatalogDetails?.availableQuantity <= 0) {\n errorType = SHOP_CART_ERROR_TYPES.soldOut\n } else if (\n productInshopCatalogDetails?.availableQuantity < product.quantity\n ) {\n errorType = SHOP_CART_ERROR_TYPES.quantity\n }\n }\n\n return {\n ...product,\n productTitle: productInshopCatalogDetails?.name || product.name || '',\n imageUrl: productInshopCatalogDetails?.listingImages[0].imageUrl || '',\n price: productInshopCatalogDetails?.price || '',\n isAvailable: !!productInshopCatalogDetails,\n errorType,\n }\n })\n\n subTotal = getFormattedAmount({\n amount: parseFloat(subTotalRaw).toFixed(2).toString(),\n currencyCode: allProducts[0] && allProducts[0].price?.currencyCode,\n symbolIsoCurrency: false,\n })\n\n return { allProducts, subTotal }\n}\n\nexport default getProductListForCart\n","import React, { useState } from 'react'\nimport glamorous from 'glamorous'\nimport { css } from 'glamor'\nimport getContent from 'pp-react-l10n'\nimport { Pagination, v2white, v2black, v2grey300 } from '@paypalcorp/pp-react'\nimport {\n foldPortraitMaxAndSmaller,\n phoneLandscapeMaxAndSmaller,\n phoneLandscapeMinAndSmaller,\n} from 'lib/styles/media-queries'\n\nconst l10n = getContent('pages/shops/common')\n\nconst heights = {\n desktop: '350px',\n phoneMax: '280px',\n phoneMin: '240px',\n pagination: '30px',\n}\n\nconst Container = glamorous.div({\n height: `${heights.desktop}`,\n width: '100%',\n position: 'relative',\n overflow: 'hidden',\n borderRadius: '10px 10px 0 0',\n [phoneLandscapeMaxAndSmaller]: {\n height: `${heights.phoneMax}`,\n },\n [phoneLandscapeMinAndSmaller]: {\n height: `${heights.phoneMin}`,\n },\n [foldPortraitMaxAndSmaller]: {\n borderRadius: 0,\n },\n})\n\nconst ContentBlock = glamorous.div({\n height: `${heights.desktop}`,\n width: '100%',\n top: 0,\n left: '50%',\n transform: 'translateX(-50%)',\n overflow: 'hidden',\n position: 'absolute',\n [phoneLandscapeMaxAndSmaller]: {\n height: `${heights.phoneMax}`,\n },\n [phoneLandscapeMinAndSmaller]: {\n height: `${heights.phoneMin}`,\n },\n})\n\nconst BackgroundPhoto = glamorous.div(({ image, noPagination }) => ({\n position: 'absolute',\n boxSizing: 'border-box',\n width: '100%',\n height: `${\n noPagination\n ? `${heights.desktop}`\n : `calc(${heights.desktop} - ${heights.pagination})`\n }`,\n left: '50%',\n transform: 'translateX(-50%)',\n backgroundImage: `url(${encodeURI(image)})`,\n backgroundRepeat: 'no-repeat',\n backgroundSize: 'cover',\n filter: 'brightness(40%) blur(3px)',\n [phoneLandscapeMaxAndSmaller]: {\n height: `${\n noPagination\n ? `${heights.phoneMax}`\n : `calc(${heights.phoneMax} - ${heights.pagination})`\n }`,\n },\n [phoneLandscapeMinAndSmaller]: {\n height: `${\n noPagination\n ? `${heights.phoneMin}`\n : `calc(${heights.phoneMin} - ${heights.pagination})`\n }`,\n },\n}))\n\nconst TopPhoto = glamorous.img(({ noPagination }) => ({\n position: 'absolute',\n top: 0,\n width: 'auto',\n height: `${noPagination ? '100%' : `calc(100% - ${heights.pagination})`}`,\n left: '50%',\n margin: 'auto',\n textAlign: 'center',\n transform: 'translateX(-50%)',\n [phoneLandscapeMaxAndSmaller]: {\n height: `${\n noPagination\n ? `${heights.phoneMax}`\n : `calc(${heights.phoneMax} - ${heights.pagination})`\n }`,\n },\n [phoneLandscapeMinAndSmaller]: {\n height: `${\n noPagination\n ? `${heights.phoneMin}`\n : `calc(${heights.phoneMin} - ${heights.pagination})`\n }`,\n },\n}))\n\nconst PaginationContainer = css({\n position: 'absolute',\n bottom: '0px',\n width: '100%',\n display: 'flex',\n justifyContent: 'center',\n backgroundColor: v2white,\n height: `${heights.pagination}`,\n})\n\nconst Page = css({\n height: '6px',\n width: '6px',\n borderRadius: '100%',\n backgroundColor: v2grey300,\n margin: '0 4px',\n color: v2white,\n fontSize: 0,\n ':hover': {\n color: v2white,\n textDecoration: 'none',\n },\n})\n\nconst ActivePage = css({\n backgroundColor: v2black,\n color: v2white,\n transition: 'none',\n})\n\nconst Hidden = css({\n display: 'none',\n})\n\nfunction ProductCoverPhoto(props) {\n const [currentPage, setCurrentPage] = useState(0)\n const { productPhotos, productName } = props\n\n const handleChange = page => {\n setCurrentPage(page - 1)\n }\n\n const productPhotoCount = props?.productPhotos?.length\n const noPagination = productPhotoCount <= 1\n\n return (\n \n \n {productPhotoCount && (\n <>\n \n \n \n \n )\n}\n\nexport default ProductCoverPhoto\n","import React, { useEffect } from 'react'\nimport PropTypes from 'prop-types'\nimport glamorous from 'glamorous'\nimport { css } from 'glamor'\nimport getContent from 'pp-react-l10n'\nimport {\n Button,\n HeadingText,\n BodyText,\n CaptionText,\n Sheet,\n v2neutral100,\n} from '@paypalcorp/pp-react'\nimport { tracking } from 'lib/analytics'\nimport Events from 'lib/analytics/event-tags'\nimport { getFormattedAmount } from '../../../shared/amount-utils'\n\nconst l10n = getContent('pages/shops/product-detail')\n\nconst CartSheet = css({\n overflowX: 'hidden',\n})\n\nconst CartList = glamorous.div({\n display: 'flex',\n flexDirection: 'column',\n marginTop: '10px',\n})\n\nconst CartItem = glamorous.div({\n height: '80px',\n marginBottom: '10px',\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'flex-start',\n})\n\nconst ProductImage = glamorous.img({\n height: '100%',\n width: '80px',\n marginRight: '10px',\n objectFit: 'cover',\n borderRadius: '6px',\n})\n\nconst ProductText = glamorous.div({\n height: '100%',\n display: 'flex',\n flexDirection: 'column',\n paddingRight: '15px',\n})\n\nconst ProductPrice = glamorous.div({\n marginLeft: 'auto',\n})\n\nconst FullDivider = glamorous.div({\n margin: '5px 0',\n height: '7px',\n width: 'calc(100% + 2rem)',\n transform: 'translateX(-1rem)',\n backgroundColor: v2neutral100,\n})\n\nconst Subtotal = glamorous.div({\n display: 'flex',\n flexDirection: 'row',\n justifyContent: 'space-between',\n})\n\nconst SheetActions = glamorous.div({\n display: 'flex',\n flexDirection: 'column',\n '& button:first-child': {\n marginBottom: '15px',\n },\n})\n\nconst formatPrice = (price, currencyCode) =>\n getFormattedAmount({\n amount: price.toString(),\n currencyCode,\n symbolIsoCurrency: false,\n })\n\nMobileCartHalfSheet.propTypes = {\n shopHandle: PropTypes.string,\n cartProductList: PropTypes.arrayOf(\n PropTypes.shape({\n productId: PropTypes.string,\n productTitle: PropTypes.string,\n imageUrl: PropTypes.string,\n quantity: PropTypes.number,\n price: PropTypes.shape({\n currencyCode: PropTypes.string,\n value: PropTypes.string,\n }),\n }),\n ),\n cartSubtotal: PropTypes.string,\n showCartHalfSheet: PropTypes.bool,\n handleAdvanceToCart: PropTypes.func,\n handleCloseHalfSheet: PropTypes.func,\n totalCartCount: PropTypes.number,\n}\n\nfunction MobileCartHalfSheet(props) {\n const {\n cartProductList = {},\n cartSubtotal = 0,\n showCartHalfSheet = false,\n handleAdvanceToCart = () => {},\n handleCloseHalfSheet = () => {},\n totalCartCount = 0,\n } = props\n\n useEffect(() => {\n if (showCartHalfSheet) {\n tracking(\n Events.public_identity_buyer_add_cart_confirmation_screen_shown({\n total_count: cartProductList.length,\n subtotal_amt: cartSubtotal,\n item_id: cartProductList.map(item => item.productId).join(','),\n item_cnt: cartProductList.map(item => item.quantity).join(','),\n }),\n )\n }\n }, [showCartHalfSheet])\n\n const sheetTitle =\n totalCartCount > 1\n ? l10n('sheet.multiItemTitle', { totalCartCount })\n : l10n('sheet.singleItemTitle', { totalCartCount })\n\n const sheetActions = () => (\n \n {\n e.preventDefault()\n tracking(\n Events.public_identity_buyer_add_cart_confirmation_review_cart_pressed(\n {\n total_count: cartProductList.length,\n subtotal_amt: cartSubtotal,\n item_id: cartProductList.map(item => item.productId).join(','),\n item_cnt: cartProductList.map(item => item.quantity).join(','),\n },\n ),\n )\n handleAdvanceToCart()\n }}\n data-test-id=\"shops-product-sheet-cart-review\"\n >\n {l10n('button.reviewCart')}\n \n {\n e.preventDefault()\n tracking(\n Events.public_identity_buyer_add_cart_confirmation_continue_shopping_pressed(\n {\n total_count: cartProductList.length,\n subtotal_amt: cartSubtotal,\n item_id: cartProductList.map(item => item.productId).join(','),\n item_cnt: cartProductList.map(item => item.quantity).join(','),\n },\n ),\n )\n handleCloseHalfSheet(e, 'continueShopping')\n }}\n data-test-id=\"shops-product-sheet-continue-shopping\"\n >\n {l10n('button.continueShopping')}\n \n \n )\n\n return (\n \n \n {cartProductList &&\n [...cartProductList].reverse().map((cartItem, index) => {\n return (\n cartItem.isAvailable && (\n \n \n \n \n {cartItem.productTitle || ''}\n \n \n {`${l10n('sheet.quantityText')}: ${cartItem.quantity}`}\n \n \n \n \n {`${formatPrice(\n cartItem.price.value,\n cartItem.price.currencyCode,\n )}`}\n \n \n \n )\n )\n })}\n \n \n \n {l10n('sheet.subtotal')}\n \n {cartSubtotal}\n \n \n \n )\n}\n\nexport default MobileCartHalfSheet\n","import React, { useState, useEffect } from 'react'\nimport clientData from '../../../../../client/src/utils/client-data'\nimport { get } from 'lodash'\nimport { Alert } from '@paypalcorp/pp-react'\n\nimport { tracking } from 'lib/analytics'\nimport Events from 'lib/analytics/event-tags'\nimport getContent from 'pp-react-l10n'\n\nconst l10n = getContent('pages/seller/preview')\n\nUnableToBuyAlert.defaultProps = {\n isAllowedToBuy: get(clientData, 'shop.isAllowedToBuy', true),\n}\n\nfunction UnableToBuyAlert(props) {\n const { isAllowedToBuy = true, handleDismiss } = props\n const { isUserLoggedIn, isBusinessUser } = clientData\n\n const [showUnableToPurchaseAlert, setShowUnableToPurchaseAlert] = useState(\n !isAllowedToBuy,\n )\n\n const handleOnDismiss = () => {\n if (handleDismiss) {\n handleDismiss()\n } else {\n setShowUnableToPurchaseAlert(!showUnableToPurchaseAlert)\n }\n }\n\n useEffect(() => {\n showUnableToPurchaseAlert &&\n tracking(\n Events.public_identity_buyer_generic_error_occurred({\n error_desc: l10n('unableToBuy'),\n acct_type: isUserLoggedIn\n ? isBusinessUser\n ? 'business'\n : 'personal'\n : 'guest',\n }),\n )\n }, [showUnableToPurchaseAlert])\n\n return showUnableToPurchaseAlert ? (\n {\n handleOnDismiss()\n },\n }}\n >\n {l10n('unableToBuy')}\n \n ) : null\n}\nexport default UnableToBuyAlert\n","import getContent from 'pp-react-l10n'\nconst l10n = getContent('pages/shops/product-detail')\n\nconst getQuantityContent = availableQuantity => {\n if (availableQuantity !== null) {\n const quantityContent =\n availableQuantity > 0\n ? l10n('itemsInStock', { availableQuantity })\n : l10n('soldOut')\n\n return quantityContent\n }\n return null\n}\n\nconst getShippingContent = (product, shippingFeePrice) => {\n const { shippingDetails: { type } = {} } = product\n\n let shippingContent = ''\n\n if (type === 'FLAT_RATE') {\n shippingContent = l10n('shippingFee', { shippingFeePrice })\n } else if (type === 'FREE') {\n shippingContent = l10n('freeShipping')\n } else if (type === 'NOT_APPLICABLE') {\n shippingContent = l10n('noShippingNeeded')\n }\n\n return shippingContent\n}\n\nconst isPurchasable = product => {\n return product?.availableQuantity > 0 || product?.availableQuantity === null\n}\n\nconst isHiddenOrDeleted = product => {\n return product?.listingStatus !== 'LISTED'\n}\n\nexport {\n getQuantityContent,\n getShippingContent,\n isPurchasable,\n isHiddenOrDeleted,\n}\n","import React, { useState, useEffect } from 'react'\nimport { get, find } from 'lodash'\nimport clientData from 'utils/client-data'\nimport PropTypes from 'prop-types'\nimport glamorous from 'glamorous'\nimport { css } from 'glamor'\nimport {\n HeadingText,\n BodyText,\n CaptionText,\n TextDisplay,\n Divider,\n Button,\n V2ShippingSendIcon,\n v2grey600,\n white,\n} from '@paypalcorp/pp-react'\nimport { tracking } from 'lib/analytics'\nimport getContent from 'pp-react-l10n'\nimport Events from 'lib/analytics/event-tags'\n\nimport ProductCoverPhoto from '../shared/components/product-cover-photo'\nimport QuantityDropdownWidget from '../shared/components/quantity-dropdown'\nimport MobileCartHalfSheet from '../shared/components/mobile-cart-half-sheet'\nimport UnableToBuyAlert from '../product-detail/unable-to-buy-alert'\nimport { getFormattedAmount } from '../../shared/amount-utils'\nimport getProductListForCart from '../cart/utils/cart-products'\nimport { getCartStorage } from '../cart/utils/local-storage'\nimport ReportProfileLink from '../../seller/shared/report-profile-link'\nimport {\n getQuantityContent,\n getShippingContent,\n isHiddenOrDeleted,\n} from '../product-detail/shared-utils'\n\nconst l10n = getContent('pages/shops/product-detail')\n\nimport {\n UI_ERROR_STATES,\n getShopProductDetailError,\n} from '../../seller/error/ui-error-states'\nconst errObj = UI_ERROR_STATES[`${getShopProductDetailError()}`]\n\nconst Wrapper = glamorous.div({\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n animation: `${FadeIn} 0.5s`,\n})\n\nconst Container = glamorous.div({\n fontFamily: 'PayPalSansBig-Regular,\"Helvetica Neue\",Arial,sans-serif',\n margin: '0px',\n padding: 15,\n width: '100%',\n minWidth: 320,\n maxWidth: 612,\n})\n\nconst WidgetContainer = glamorous.div({\n display: 'flex',\n flexDirection: 'row',\n justifyContent: 'space-between',\n alignItems: 'center',\n height: '100%',\n width: '100%',\n})\n\nconst Price = glamorous.div({\n height: '64px',\n width: '210px',\n '& #txtDsplyVlu_basic': {\n display: 'inline-flex',\n alignItems: 'center',\n paddingTop: '0',\n paddingBottom: '0',\n fontSize: '28px',\n },\n '& #message_text-input-basic': {\n fontSize: '14px',\n marginTop: '-5px',\n },\n})\n\nconst FadeIn = css.keyframes({ from: { opacity: 0 }, to: { opacity: 1 } })\n\nconst ProductBlock = glamorous.div({\n width: '100%',\n margin: '10px 0',\n backgroundColor: white,\n})\n\nconst ContentBlock = glamorous.div({\n padding: '3% 10% 10% 10%',\n})\n\nconst ProductTitle = css({\n marginBottom: 5,\n overflowWrap: 'break-word',\n})\n\nconst ProductDescription = css({\n marginBottom: 24,\n})\n\nconst DividerCss = css({\n margin: '24px 0',\n})\n\nconst ShippingFee = glamorous.div({\n marginTop: 24,\n color: v2grey600,\n display: 'flex',\n alignItems: 'center',\n})\n\nconst ShopActions = glamorous.div({\n marginTop: 36,\n display: 'flex',\n justifyContent: 'space-around',\n})\n\nconst shopActionButton = css({\n width: '100%',\n height: 48,\n padding: 0,\n '&:first-child': {\n marginRight: 16,\n },\n})\n\nconst formatPrice = (price, currencyCode) =>\n getFormattedAmount({\n amount: price.toString(),\n currencyCode,\n symbolIsoCurrency: false,\n })\n\nProductDetail.propTypes = {\n product: PropTypes.object,\n productId: PropTypes.string,\n shopId: PropTypes.string,\n isUserLoggedIn: PropTypes.bool,\n}\n\nfunction ProductDetail(props) {\n const {\n match: {\n params: { productId },\n },\n shopsBuyerState: {\n addOrUpdateItemInCart = () => {},\n getCountForShopProductId = () => {},\n getTotalCartCount = () => {},\n state: { catalogListing = [], currentProductId = '' } = {},\n } = {},\n } = props\n\n useEffect(() => {\n tracking(\n Events.public_identity_buyer_item_screen_shown({\n status:\n product?.availableQuantity > 0 || product?.availableQuantity === null\n ? 'in stock'\n : 'out of stock',\n item_id: product?.id,\n count: product?.availableQuantity,\n }),\n )\n window.scrollTo(0, 0)\n\n if (availableQuantity === 0) {\n tracking(\n Events.public_identity_buyer_item_inventory_error_occurred({\n item_id: productId,\n item_cnt: quantity,\n opt_sel: event.target.value,\n status: 'out of stock',\n }),\n )\n }\n }, [])\n\n const currentProduct = find(catalogListing, item => {\n return item.id === currentProductId\n })\n\n const { isMobile = false } = clientData\n\n const product = currentProduct || get(clientData, 'shop.currentItem')\n const shopHandle = get(clientData, 'shop.slug', '')\n const shopCatalogDetails = get(clientData, 'shop.shopCatalogDetails')\n const isAllowedToBuy = get(clientData, 'shop.isAllowedToBuy')\n\n const [showUnableToPurchaseAlert, setShowUnableToPurchaseAlert] = useState(\n !isAllowedToBuy,\n )\n const quantityFromState = getCountForShopProductId(shopHandle, productId)\n const rawAvailableQuantity = get(product, 'availableQuantity')\n const availableQuantity =\n rawAvailableQuantity === null ? 10 : rawAvailableQuantity || 0\n\n const [quantity, setQuantity] = useState(quantityFromState || 1)\n const [showCartHalfSheet, setShowCartHalfSheet] = useState(false)\n const [cartProductList, setCartProductList] = useState([])\n const [cartSubtotal, setCartSubtotal] = useState('0')\n\n useEffect(() => {\n if (isHiddenOrDeleted(product)) {\n props.history.replace({\n pathname: `/${shopHandle}`,\n })\n }\n }, [product])\n\n useEffect(() => {\n if (product?.hasOwnProperty('errors')) {\n props.history.push(errObj)\n }\n }, [product])\n\n const handleAdvanceToCart = () => {\n window.location.href = `/paypalme/${shopHandle}/buy/cart`\n }\n\n const handleAddToCart = async e => {\n e.preventDefault()\n tracking(\n Events.public_identity_buyer_item_add_to_cart_pressed({\n item_id: productId,\n item_cnt: quantity,\n opt_sel: event.target.value,\n status:\n availableQuantity > 0 || availableQuantity === null\n ? `${availableQuantity} in stock`\n : 'out of stock',\n }),\n )\n if (isAllowedToBuy) {\n setShowUnableToPurchaseAlert(true)\n }\n if (quantity > 0) {\n await addOrUpdateItemInCart(shopHandle, {\n name: product.name,\n productId,\n quantity,\n availableQuantity,\n })\n const productsForShopInCart = get(getCartStorage(), shopHandle, [])\n const { allProducts = {}, subTotal = 0 } = getProductListForCart(\n productsForShopInCart,\n shopCatalogDetails,\n )\n setCartProductList(allProducts)\n setCartSubtotal(subTotal)\n setShowCartHalfSheet(true)\n }\n }\n\n const handleQuantityChange = async updatedQuantity => {\n setQuantity(updatedQuantity)\n }\n\n const handleCloseHalfSheet = (e, closedBy) => {\n tracking(\n Events.public_identity_buyer_add_cart_confirmation_dismiss_pressed({\n dismiss_method: closedBy,\n total_count: cartProductList.length,\n subtotal_amt: cartSubtotal,\n item_id: cartProductList.map(item => item.productId).join(','),\n item_cnt: cartProductList.map(item => item.quantity).join(','),\n }),\n )\n setShowCartHalfSheet(false)\n }\n\n const shippingFeePrice =\n product.shippingDetails &&\n product.shippingDetails.type === 'FLAT_RATE' &&\n getFormattedAmount({\n amount: product.shippingDetails.cost.value,\n currencyCode: product.shippingDetails.cost.currencyCode,\n symbolIsoCurrency: false,\n })\n\n return (\n \n \n {showUnableToPurchaseAlert && (\n {\n setShowUnableToPurchaseAlert(!showUnableToPurchaseAlert)\n }}\n />\n )}\n\n \n \n\n \n \n {product && product.name}\n \n\n \n\n \n \n \n \n {getQuantityContent(rawAvailableQuantity)}\n \n \n\n {availableQuantity > 0 ? (\n \n ) : null}\n \n\n \n \n \n {getShippingContent(product, shippingFeePrice)}\n \n \n\n \n {availableQuantity > 0 ? (\n <>\n \n {l10n('button.addToCart')}\n \n \n ) : null}\n \n\n \n\n \n {l10n('productDetails')}\n \n\n \n {product && product.description}\n \n \n \n \n \n {isMobile && (\n \n )}\n \n )\n}\n\nexport default ProductDetail\n","import React, { useEffect, useState } from 'react'\nimport { get, find } from 'lodash'\nimport PropTypes from 'prop-types'\nimport glamorous from 'glamorous'\nimport clientData from 'utils/client-data'\nimport { css } from 'glamor'\nimport {\n HeadingText,\n BodyText,\n TextDisplay,\n CaptionText,\n Divider,\n V2ShippingSendIcon,\n v2grey600,\n white,\n} from '@paypalcorp/pp-react'\nimport { tracking } from 'lib/analytics'\nimport getContent from 'pp-react-l10n'\nimport Events from 'lib/analytics/event-tags'\nimport ProductCoverPhoto from '../shared/components/product-cover-photo'\nimport CheckoutButtons from '../shared/components/buttons/checkout-buttons'\nimport { getFormattedAmount } from '../../shared/amount-utils'\nimport ReportProfileLink from '../../seller/shared/report-profile-link'\n\nimport UnableToBuyAlert from '../product-detail/unable-to-buy-alert'\nimport {\n getQuantityContent,\n getShippingContent,\n isPurchasable,\n isHiddenOrDeleted,\n} from '../product-detail/shared-utils'\n\nimport {\n phone6PlusPortraitMaxAndSmaller,\n foldPortraitMaxAndSmaller,\n} from 'lib/styles/media-queries'\n\nconst l10n = getContent('pages/shops/product-detail')\n\nimport {\n UI_ERROR_STATES,\n getShopProductDetailError,\n} from '../../seller/error/ui-error-states'\nconst errObj = UI_ERROR_STATES[`${getShopProductDetailError()}`]\n\nconst Container = glamorous.div({\n fontFamily: 'PayPalSansBig-Regular,\"Helvetica Neue\",Arial,sans-serif',\n margin: '0px',\n padding: 15,\n width: '100%',\n minWidth: 320,\n maxWidth: 612,\n})\n\nconst FadeIn = css.keyframes({ from: { opacity: 0 }, to: { opacity: 1 } })\nconst Wrapper = glamorous.div({\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n animation: `${FadeIn} 0.5s`,\n})\n\nconst ProductBlock = glamorous.div({\n width: '100%',\n margin: '10px 0',\n backgroundColor: white,\n})\n\nconst ContentBlock = glamorous.div({\n padding: '3% 10% 10% 10%',\n})\n\nconst Price = glamorous.div({\n height: '64px',\n width: '210px',\n '& #txtDsplyVlu_basic': {\n display: 'inline-flex',\n alignItems: 'center',\n paddingTop: '0',\n paddingBottom: '0',\n fontSize: '28px',\n },\n '& #message_text-input-basic': {\n fontSize: '14px',\n marginTop: '-5px',\n },\n})\n\nconst ProductTitle = css({\n marginBottom: '5px',\n overflowWrap: 'break-word',\n})\n\nconst ProductDescription = css({\n marginBottom: '24px',\n})\n\nconst DividerCss = css({\n margin: '24px 0',\n})\n\nconst ShippingFee = glamorous.div({\n marginTop: '24px',\n color: v2grey600,\n display: 'flex',\n alignItems: 'center',\n})\n\nconst ShopActions = glamorous.div({\n width: '75%',\n margin: '36px auto',\n display: 'flex',\n justifyContent: 'center',\n [phone6PlusPortraitMaxAndSmaller]: {\n width: '100%',\n },\n [foldPortraitMaxAndSmaller]: {\n width: '100%',\n },\n})\n\nconst formatPrice = (price, currencyCode) =>\n getFormattedAmount({\n amount: price.toString(),\n currencyCode,\n symbolIsoCurrency: false,\n })\n\nProductDetail.propTypes = {\n product: PropTypes.object,\n productId: PropTypes.string,\n shopId: PropTypes.string,\n isUserLoggedIn: PropTypes.bool,\n}\n\nfunction ProductDetail(props) {\n useEffect(() => {\n tracking(Events.public_identity_buyer_item_screen_shown(analyticsData))\n window.scrollTo(0, 0)\n }, [])\n\n const {\n shopsBuyerState: { state: { catalogListing, currentProductId } = {} } = {},\n } = props\n\n const currentProduct = find(catalogListing, item => {\n return item.id === currentProductId\n })\n\n const { isUserLoggedIn } = clientData\n\n const product = currentProduct || get(clientData, 'shop.currentItem')\n const slug = get(clientData, 'shop.slug', '') || ''\n const availableQuantity = get(product, 'availableQuantity', 0)\n const isAllowedToBuy = get(clientData, 'shop.isAllowedToBuy')\n\n const analyticsData = {\n status:\n product?.availableQuantity > 0 || product?.availableQuantity === null\n ? 'in stock'\n : 'out of stock',\n item_id: product?.id,\n count: product?.availableQuantity,\n }\n\n const [showUnableToPurchaseAlert, setShowUnableToPurchaseAlert] = useState(\n !isAllowedToBuy,\n )\n\n useEffect(() => {\n if (isHiddenOrDeleted(product)) {\n props.history.replace({\n pathname: `/${slug}`,\n })\n }\n }, [product])\n\n useEffect(() => {\n if (product?.hasOwnProperty('errors')) {\n props.history.push(errObj)\n }\n }, [product])\n\n const shippingFeePrice =\n product.shippingDetails &&\n product.shippingDetails.type === 'FLAT_RATE' &&\n getFormattedAmount({\n amount: product.shippingDetails.cost.value,\n currencyCode: product.shippingDetails.cost.currencyCode,\n symbolIsoCurrency: true,\n })\n\n const fireTrackingEvent = eventName => {\n tracking(\n Events[eventName]({\n item_id: product?.id,\n status:\n product?.availableQuantity > 0 || product?.availableQuantity === null\n ? 'in stock'\n : 'out of stock',\n }),\n )\n }\n\n return (\n product && (\n \n \n {showUnableToPurchaseAlert && (\n {\n setShowUnableToPurchaseAlert(!showUnableToPurchaseAlert)\n }}\n />\n )}\n\n \n \n\n \n \n {product && product.name}\n \n\n \n \n \n \n {getQuantityContent(availableQuantity)}\n \n \n\n \n \n \n {getShippingContent(product, shippingFeePrice)}\n \n \n\n \n {isPurchasable(product) ? (\n {\n if (!showUnableToPurchaseAlert) {\n setShowUnableToPurchaseAlert(!showUnableToPurchaseAlert)\n }\n }}\n fireTrackingEvent={fireTrackingEvent}\n productId={product?.id}\n subTotal={product?.price?.value}\n />\n ) : null}\n \n\n \n\n \n {l10n('productDetails')}\n \n\n \n {product && product.description}\n \n \n \n \n \n \n )\n )\n}\nexport default ProductDetail\n","// @flow\n\nimport React from 'react'\n\nimport clientData from 'utils/client-data'\nimport { get } from 'lodash'\nimport MultiItemPurchase from '../multi-cart-product'\nimport SingleItemPurchase from '../single-cart-product'\n\nfunction ProductDetails(props) {\n const isMultiCartExperienceEnabled = get(\n clientData,\n 'isMultiCartExperienceEnabled',\n false,\n )\n\n const ProductDetailsView = isMultiCartExperienceEnabled\n ? MultiItemPurchase\n : SingleItemPurchase\n\n return (\n <>\n \n \n )\n}\n\nexport default ProductDetails\n","import React from 'react'\n\nimport { v2blue600, v2blue300 } from '@paypalcorp/pp-react'\n\nfunction PaypalLogoIcon() {\n return (\n \n \n \n \n \n \n \n )\n}\n\nexport default PaypalLogoIcon\n","import React from 'react'\nimport { css } from 'glamor'\nimport { Button } from '@paypalcorp/pp-react'\nimport PaypalLogoIcon from '../paypal-logo-icon'\nimport { LOGOS } from 'utils/constants'\n\nimport getContent from 'pp-react-l10n'\n\nconst l10n = getContent('pages/shops/cart')\n\nconst ButtonStyles = css({\n width: '100%',\n marginBottom: '10px',\n})\n\nconst PaypalCheckoutImage = css({\n width: '65px',\n display: 'inline-block',\n verticalAlign: 'middle',\n})\n\nfunction PayWithPaypalButton(props) {\n return (\n \n \n \n )\n}\n\nexport default PayWithPaypalButton\n","import React from 'react'\nimport glamorous from 'glamorous'\nimport { css } from 'glamor'\nimport getContent from 'pp-react-l10n'\nimport { LOGOS } from 'utils/constants'\nconst l10n = getContent('pages/shops/cart')\n\nconst PoweredByPaypal = glamorous.div({\n width: '100%',\n display: 'inline-flex',\n flexFlow: 'row wrap',\n alignItems: 'center',\n justifyContent: 'center',\n})\n\nconst PayWithPaypalFooter = css({\n marginRight: '5px',\n})\n\nconst PaypalCheckoutImage = css({\n width: '65px',\n display: 'inline-block',\n verticalAlign: 'middle',\n})\n\nfunction PoweredByPaypalFooter() {\n return (\n \n \n {l10n('poweredBy')}\n \n\n \n \n )\n}\n\nexport default PoweredByPaypalFooter\n","import React from 'react'\nimport { css } from 'glamor'\nimport { Button } from '@paypalcorp/pp-react'\nimport PoweredByPaypalFooter from '../powered-by-paypal-footer'\n\nimport getContent from 'pp-react-l10n'\n\nconst l10n = getContent('pages/shops/cart')\n\nconst ButtonStyles = css({\n backgroundColor: '#2C2E2F',\n borderColor: '#2C2E2F',\n width: '100%',\n marginBottom: 10,\n})\nfunction PayAsAGuestButton(props) {\n return (\n !props.isUserLoggedIn && (\n <>\n \n {l10n('guestCheckout')}\n \n \n \n )\n )\n}\n\nexport default PayAsAGuestButton\n","import React from 'react'\nimport { get } from 'lodash'\nimport PropTypes from 'prop-types'\nimport glamorous from 'glamorous'\nimport clientData from 'utils/client-data'\nimport { generatePpshopsUrl } from 'utils/generate-urls'\nimport '@paypalcorp/pp-vx/dist/components/tile/tile.css'\nimport PayWithPaypalButton from './pay-with-paypal'\nimport PayAsAGuestButton from './pay-as-guest'\nimport { addLoader, removeLoader } from '../../../../../utils/loader'\n\nconst Container = glamorous.div({\n fontFamily: 'PayPalSansBig-Regular,\"Helvetica Neue\",Arial,sans-serif',\n margin: '0px',\n width: '100%',\n minWidth: 250,\n})\n\nCheckoutButtons.propTypes = {\n isUserLoggedIn: PropTypes.bool,\n disableButton: PropTypes.bool,\n cartHasErrors: PropTypes.bool,\n handleCheckoutWhenError: PropTypes.func,\n isAllowedToBuy: PropTypes.bool,\n fireTrackingEvent: PropTypes.func,\n}\n\nfunction CheckoutButtons(props) {\n const {\n isUserLoggedIn = false,\n disableButton = false,\n cartHasErrors = false,\n handleCheckoutWhenError = () => {},\n isAllowedToBuy = true,\n handleOnClick = () => {},\n fireTrackingEvent = () => {},\n productId = '',\n subTotal = 0,\n } = props\n const encryptedFlowData = get(clientData, 'encryptedFlowData', '')\n\n const isMultiCartExperienceEnabled = get(\n clientData,\n 'isMultiCartExperienceEnabled',\n false,\n )\n\n const loginCheckoutPage = async e => {\n e.preventDefault()\n if (isMultiCartExperienceEnabled) {\n fireTrackingEvent(\n 'public_identity_buyer_review_cart_paypal_checkout_pressed',\n )\n } else {\n fireTrackingEvent('public_identity_buyer_item_paypal_pay_pressed')\n }\n\n if (cartHasErrors) {\n handleCheckoutWhenError()\n } else {\n if (isAllowedToBuy) {\n addLoader()\n\n const response = await updateFlowData(\n encryptedFlowData,\n subTotal,\n productId,\n )\n const { encryptedData, error } = response\n\n if (error) {\n removeLoader()\n\n props.history.push({\n pathname: `/seller/error`,\n })\n } else {\n const checkoutUrlForLoggedInUser = generatePpshopsUrl(\n false,\n encryptedData,\n )\n\n window.location.href = checkoutUrlForLoggedInUser\n }\n } else {\n window.scrollTo(0, 0)\n handleOnClick()\n }\n }\n }\n\n const updateFlowData = async (encryptedFlowData, subTotal, productId) => {\n let result\n\n try {\n result = await fetch(`${clientData.requestURI}/v1/updateFlowData`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'X-CSRF-TOKEN': clientData.csrf,\n },\n body: JSON.stringify({\n encryptedFlowData,\n subTotal,\n productId,\n }),\n })\n } catch (e) {\n return { error: e }\n }\n\n return result.json()\n }\n\n const guestCheckoutPage = async e => {\n e.preventDefault()\n if (isMultiCartExperienceEnabled) {\n fireTrackingEvent(\n 'public_identity_buyer_review_cart_guest_checkout_pressed',\n )\n } else {\n fireTrackingEvent('public_identity_buyer_item_guest_pay_pressed')\n }\n\n if (cartHasErrors) {\n handleCheckoutWhenError()\n } else {\n if (isAllowedToBuy) {\n addLoader()\n\n const response = await updateFlowData(\n encryptedFlowData,\n subTotal,\n productId,\n )\n const { encryptedData, error } = response\n\n if (error) {\n removeLoader()\n\n props.history.push({\n pathname: `/seller/error`,\n })\n } else {\n const checkoutUrlForGuest = generatePpshopsUrl(true, encryptedData)\n\n window.location.href = checkoutUrlForGuest\n }\n } else {\n window.scrollTo(0, 0)\n handleOnClick()\n }\n }\n }\n\n return (\n \n \n \n \n )\n}\n\nexport default CheckoutButtons\n","// @flow\n\nimport React, { useState, useEffect } from 'react'\nimport glamorous from 'glamorous'\nimport { css } from 'glamor'\nimport PropTypes from 'prop-types'\nimport getContent from 'pp-react-l10n'\nimport {\n ThemeProvider,\n DropdownMenu,\n TextDisplay,\n Button,\n} from '@paypalcorp/pp-react'\nimport { tracking } from 'lib/analytics'\nimport Events from 'lib/analytics/event-tags'\n\nconst l10n = getContent('pages/shops/cart')\n\nconst Container = glamorous.div({\n height: '100%',\n minWidth: '100px',\n maxWidth: '105px',\n width: 'fit-content',\n display: 'flex',\n flexDirection: 'column',\n '& .menu_button': {\n paddingTop: 0,\n paddingBottom: 0,\n },\n '& .menu_label': {\n display: 'none',\n },\n '& .menu_item[hidden]': {\n display: 'none',\n },\n '& #dropdown_errorText': {\n alignItems: 'flex-start',\n },\n})\n\nconst QuantityLabel = css({\n marginTop: '5px',\n})\n\nconst RemoveButton = css({\n padding: '8px 0 0',\n alignSelf: 'flex-end',\n width: 'fit-content',\n})\n\nQuantityDropdownWidget.propTypes = {\n flow: PropTypes.string,\n productId: PropTypes.string.isRequired,\n shopHandle: PropTypes.string,\n availableItems: PropTypes.number,\n quantity: PropTypes.number,\n handleQuantityChange: PropTypes.func,\n showQuantityLabel: PropTypes.bool,\n showRemoveButton: PropTypes.bool,\n handleOnRemove: PropTypes.func,\n errorTextLabel: PropTypes.string,\n errorType: PropTypes.string,\n}\n\nQuantityDropdownWidget.defaultProps = {\n flow: '',\n productId: '',\n shopHandle: '',\n availableItems: 1,\n quantity: 1,\n handleQuantityChange: () => {},\n showQuantityLabel: false,\n showRemoveButton: false,\n handleOnRemove: () => {},\n errorTextLabel: '',\n errorType: '',\n}\n\nfunction constructAvailabilityOptions(availableItems, quantity) {\n if (availableItems > 0 && quantity >= 0) {\n const options = Array.from({ length: availableItems }, (_, index) => {\n const value = index + 1\n return {\n primaryText: value.toString(),\n value: value.toString(),\n }\n })\n\n /**\n * If selected quantity is greater than the available items (during product-detail -> cart)\n * Then we need to show the dropdown with an error state, while still showing the selected quantity.\n * To do this, we need to add the selected quantity as an option, but hide it with css so it can't be selected.\n * */\n if (quantity > availableItems) {\n options.push({\n primaryText: quantity.toString(),\n value: quantity.toString(),\n hidden: true,\n })\n }\n return options\n } else if (availableItems <= 0) {\n // TODO: we might need some fixing here once error states/content is finalized\n return [\n {\n primaryText: quantity.toString(),\n value: quantity.toString(),\n hidden: true,\n },\n {\n primaryText: '0',\n value: '0',\n },\n ]\n }\n}\n\nfunction QuantityDropdownWidget(props) {\n const {\n flow,\n productId,\n shopHandle,\n availableItems,\n quantity,\n handleQuantityChange,\n disabled,\n showQuantityLabel,\n showRemoveButton,\n handleOnRemove,\n errorTextLabel,\n errorType,\n } = props\n\n const itemQuantity = Math.abs(quantity)\n const [stateQuantity, setStateQuantity] = useState(itemQuantity.toString())\n const [errorState, setErrorState] = useState(false)\n const availabilityOptions = constructAvailabilityOptions(\n availableItems,\n itemQuantity,\n )\n\n useEffect(() => {\n if (errorType) {\n setErrorState(true)\n } else {\n setErrorState(false)\n }\n }, [errorType])\n\n const onChange = event => {\n if (flow === 'product') {\n tracking(\n Events.public_identity_buyer_item_quantity_selection_pressed({\n item_id: productId,\n opt_sel: event.target.value,\n status: availableItems\n ? `${availableItems} in stock`\n : 'out of stock',\n }),\n )\n } else if (flow === 'cart') {\n tracking(\n Events.public_identity_buyer_review_cart_update_quantity_selection_pressed(\n {\n item_id: productId,\n item_cnt: stateQuantity,\n opt_sel: event.target.value,\n },\n ),\n )\n }\n const selectedQuantity = Number(event.target.value) || 1\n setStateQuantity(event.target.value)\n handleQuantityChange(selectedQuantity, productId, shopHandle)\n }\n\n const trackClickEvent = () => {\n if (flow === 'product') {\n tracking(\n Events.public_identity_buyer_item_quantity_dropdown_pressed({\n item_id: productId,\n status: availableItems\n ? `${availableItems} in stock`\n : 'out of stock',\n }),\n )\n } else if (flow === 'cart') {\n tracking(\n Events.public_identity_buyer_review_cart_update_dropdown_pressed({\n item_id: productId,\n item_cnt: stateQuantity,\n }),\n )\n }\n }\n\n return (\n \n \n \n \n {showQuantityLabel && (\n \n )}\n {showRemoveButton && (\n handleOnRemove()}\n className={`${RemoveButton}`}\n >\n {l10n('removeButton')}\n \n )}\n \n )\n}\n\nexport default QuantityDropdownWidget\n","// @flow\n\nimport _ from 'lodash'\n\nexport function getDisplayName(displayName: string) {\n // display name is escaped at the service layer but React escapes strings by default\n // so this string ends up getting double escaped and does not get displayed properly\n return _.unescape(displayName)\n}\n","// @flow\n\nimport { DEFAULT_PROFILE_PHOTO } from 'utils/constants'\n\nexport function getProfilePhotoUrl(url?: string) {\n // return any profile photo URL except for default SVG\n if (url !== DEFAULT_PROFILE_PHOTO) {\n return url\n }\n}\n"],"sourceRoot":""}