{"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","AvatarBorder","border","LinkStyle","textDecoration","CartCount","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","initials","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","EditText","clip","overflow","whiteSpace","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} 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 AvatarBorder = css({\n border: `2px solid ${white}`,\n backgroundColor: '#e85e00',\n})\n\nconst LinkStyle = css({\n textDecoration: 'none',\n color: '#000000',\n})\n\nconst CartCount = css({\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 className={`${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 className={`${LinkStyle}`}\n >\n \n {l10n('cartLink')}\n \n \n
\n ) : null}\n
\n {\n handleCartClick()\n }}\n className={`${LinkStyle}`}\n >\n \n {cartCount && cartCount > 0 ? (\n
\n \n
\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}\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}\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 } = 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 (Number(stateQuantity) > availableItems) {\n setErrorState(true)\n } else {\n setErrorState(false)\n }\n }, [stateQuantity, availableItems])\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":""}