{"version":3,"sources":["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","ShopsNavMain","css","display","flexDirection","justifyContent","alignItems","padding","minHeight","maxHeight","borderBottom","backgroundColor","smallAndBigger","position","right","left","top","width","zIndex","WebkitTransition","OTransition","transition","ShopNavSection","outline","ShopsNavLinks","margin","phone6PlusPortraitMaxAndSmaller","LinkStyle","textDecoration","color","CartCount","whiteSpace","CustomFont","fontSize","CustomMarginLeft","marginLeft","CustomMarginRight","marginRight","ShopsHeader","slug","clientData","profilePhoto","shopName","handleShopClick","addLoader","window","location","href","handleCartClick","to","ShopsBuyerState","shopsBuyerState","cartCount","getTotalCartCount","role","onClick","src","alt","size","length","slice","innerWidth","SIZE_SMALL","style","propTypes","isUserLoggedIn","PropTypes","bool","userHasCoverPhoto","isShopsWebExperienceAllowed","Main","string","SpinnerContainer","glamorous","div","height","animation","props","isCommerce","isMultiCartExperienceEnabled","id","SPINNER_ID","theme","screenReaderText","className","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","this","imageURL","containerStyles","backgroundSize","backgroundRepeat","paddingBottom","phoneLandscapeMinAndSmaller","myProfilePage","Component","ProfileDetails","React","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_send_pressed","redirectUrl","getSendUrl","isLoggedIn","String","normalizeNumber","public_identity_profile_request_pressed","getRequestUrl","isPSD2Treatment","assign","body","fetch","requestURI","method","headers","csrf","JSON","stringify","response","json","data","status","loginUrl","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","paddingTop","PayPalMeProfile","initialAmount","initialCurrencyCode","smallAndSmaller","background","content","bottom","showAmountInput","recipientSlugPage","Boolean","RecipientSlug","RecipientSlugOld","fontFamily","minWidth","FadeIn","keyframes","from","opacity","ProductsBlock","Products","products","scrollTo","public_identity_shop_product_list_screen_shown","count","data-test-id","heading","NEW_ARRIVALS_PREVIEW_TYPE","showHeading","CONTAINER_HEIGHT_PX","CONTAINER_WIDTH_PX","ContainerBase","DraggableContainer","cursor","Photo","fadeIn","borderRadius","backgroundPositionX","backgroundPositionY","EditContainer","EditButton","button","border","EditText","clip","overflow","DragButton","transform","ChevronContainer","ChevronUpIcon","DragText","span","fontWeight","WithDrag","isDraggable","onDrag","onDragEnd","onDragCancel","onPan","onPanEnd","onPanCancel","options","recognizers","pan","threshold","CoverPhoto","isEditable","onEdit","isLoaded","setIsLoaded","isPhotoCached","setIsPhotoCached","photoImage","Image","onload","onerror","complete","getDisplayCoverPhotoUrl","aria-label","name","aria-hidden","PrimaryText","SecondaryText","Card","boxShadow","Content","overflowWrap","AvatarContainer","AvatarStyles","GenericAvatar","lineHeight","PhotoAvatar","backgroundImage","backgroundPosition","AvatarEdit","font","EditCamera","ShareButton","SecondaryContent","TertiaryContent","AmountContainer","paddingLeft","paddingRight","Footer","Button","borderRight","borderTop","flexBasis","ProfileCard","isShareable","sendLink","value","inputProps","readOnly","selectProps","disabled","l10nSettings","ShareTitle","SVGParent","phone5PortraitMaxAndSmaller","SVGStyling","SVG","forwardProps","rootEl","SpanText","CopyContainer","TooltipCopied","borderLeft","ShareYourLink","isCopied","preventDefault","sharing","shareURLByFacebook","twitterShareLink","encodeURIComponent","shareByTwitter","shareByWhatsApp","shareURLByMessenger","setState","setTimeout","strong","lang","text","onCopy","copyToClipboard","svgString","svgImages","clipBoard","transitionName","transitionEnterTimeout","transitionLeaveTimeout","key","handleFBClick","facebook","handleMessengerClick","messenger","handleTwitterClick","twitter","CartError","CartContent","EmptyCartDiv","EmptyCartContent","HeadingTextStyles","foldPortraitMaxAndSmaller","EmptyCartButtonStyles","EmptyCartBackground","ProductDetails","ProductImage","objectFit","ProductText","ProductName","RemoveBtn","ProductPriceQuantity","ProductPrice","alignSelf","Subtotal","ButtonDiv","Divider","FullDivider","containerPadding","ShoppingButton","Cart","addOrUpdateItemInCart","deleteItemFromCart","getCountForShopProductId","shopCatalogDetails","shopHandle","getCartStorage","productsForShopInCart","setProductsForShopInCart","cartAvailabilityError","setCartAvailabilityError","showAvailabilityError","setShowAvailabilityError","cartQuantityError","setCartQuantityError","showQuantityError","setShowQuantityError","getProductListForCart","allProducts","subTotal","productList","filter","product","isAvailable","isCartEmpty","disableButton","public_identity_buyer_review_cart_screen_shown","total_count","subtotal_amt","item_id","map","item","productId","join","item_cnt","quantity","unavailableProducts","productName","productTitle","Array","fill","validateCart","public_identity_buyer_review_cart_continue_shopping_pressed","history","push","handleRemove","public_identity_buyer_review_cart_remove_item_pressed","updatedCartProducts","handleQuantityChange","updatedQuantity","allProductsInCart","cartProductList","productsWithError","errorType","forEach","public_identity_buyer_review_cart_inventory_error_occurred","error_type","availableQuantity","SHOP_CART_ERROR_TYPES","soldOut","error","index","closeButton","newAvailabilityArray","SHOP_CART_IMAGES","EMPTY_CART","cartItem","price","imageUrl","tertiary","parseFloat","toString","flow","availableItems","errorTextLabel","cartHasErrors","handleCheckoutWhenError","fireTrackingEvent","eventName","cart","object","shippingTotal","number","subTotalRaw","productInshopCatalogDetails","find","shopCatalogDetail","listingImages","heights","ContentBlock","BackgroundPhoto","image","noPagination","boxSizing","encodeURI","TopPhoto","PaginationContainer","Page","ActivePage","Hidden","ProductCoverPhoto","currentPage","setCurrentPage","productPhotos","productPhotoCount","totalPageCount","onChange","page","prevPageLabel","nextPageLabel","paginationLabel","pageClassName","activePageClassName","arrowLeftClassName","arrowRightClassName","arrowSpaceClassName","CartSheet","overflowX","CartList","CartItem","SheetActions","MobileCartHalfSheet","cartSubtotal","showCartHalfSheet","handleAdvanceToCart","handleCloseHalfSheet","totalCartCount","public_identity_buyer_add_cart_confirmation_screen_shown","sheetTitle","isOpen","onCloseComplete","title","footerContents","public_identity_buyer_add_cart_confirmation_review_cart_pressed","public_identity_buyer_add_cart_confirmation_continue_shopping_pressed","footerAlign","reverse","clampAtLine","arrayOf","shape","func","UnableToBuyAlert","isAllowedToBuy","handleDismiss","isBusinessUser","showUnableToPurchaseAlert","setShowUnableToPurchaseAlert","public_identity_buyer_generic_error_occurred","error_desc","acct_type","defaultProps","getQuantityContent","getShippingContent","shippingFeePrice","shippingDetails","shippingContent","isHiddenOrDeleted","listingStatus","errObj","UI_ERROR_STATES","getShopProductDetailError","WidgetContainer","Price","ProductBlock","ProductTitle","ProductDescription","DividerCss","ShippingFee","ShopActions","shopActionButton","ProductDetail","catalogListing","currentProductId","public_identity_buyer_item_screen_shown","public_identity_buyer_item_inventory_error_occurred","opt_sel","event","currentProduct","isMobile","quantityFromState","rawAvailableQuantity","setQuantity","setShowCartHalfSheet","setCartProductList","setCartSubtotal","pathname","hasOwnProperty","handleAddToCart","public_identity_buyer_item_add_to_cart_pressed","cost","allowEdit","description","closedBy","public_identity_buyer_add_cart_confirmation_dismiss_pressed","dismiss_method","shopId","analyticsData","isPurchasable","handleOnClick","ProductDetailsView","MultiItemPurchase","SingleItemPurchase","PaypalLogoIcon","xmlns","viewBox","stroke","d","ButtonStyles","PaypalCheckoutImage","verticalAlign","PayWithPaypalButton","branded","clickHandler","iconComponent","LOGOS","PAYPAL_PRIMARY","PoweredByPaypal","flexFlow","PayWithPaypalFooter","PoweredByPaypalFooter","borderColor","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 from 'react'\nimport PropTypes from 'prop-types'\nimport clientData from 'utils/client-data'\nimport { get } from 'lodash'\nimport {\n V2ShoppingcartIcon,\n white,\n BodyText,\n Link,\n Avatar,\n NumericBadge,\n} from '@paypalcorp/pp-react'\nimport { css } from 'glamor'\nimport {\n phone6PlusPortraitMaxAndSmaller,\n SIZE_SMALL,\n smallAndBigger,\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', // NOSONAR\n OTransition: ' right 250ms left 250ms',\n transition: 'right 250ms left 250ms',\n },\n})\n\nconst ShopNavSection = css({\n display: 'flex',\n alignItems: 'center',\n '&:focus': {\n outline: 'none',\n },\n})\n\nconst ShopsNavLinks = css({\n margin: '20px 5px 20px 10px',\n [phone6PlusPortraitMaxAndSmaller]: {\n margin: '20px 5px 20px 5px',\n },\n})\n\nconst LinkStyle = css({\n textDecoration: 'none',\n color: '#000000',\n})\n\nconst CartCount = css({\n whiteSpace: 'nowrap',\n position: 'absolute',\n top: '-5px',\n left: '21px',\n})\n\nconst CustomFont = css({\n fontSize: '1.25rem',\n})\n\nconst CustomMarginLeft = css({\n marginLeft: '20px',\n [phone6PlusPortraitMaxAndSmaller]: {\n marginLeft: '2px',\n },\n})\n\nconst CustomMarginRight = css({\n marginRight: '30px',\n [phone6PlusPortraitMaxAndSmaller]: {\n marginRight: '15px',\n },\n})\n\nShopsHeader.propTypes = {\n isUserLoggedIn: PropTypes.bool,\n userHasCoverPhoto: PropTypes.bool,\n isShopsWebExperienceAllowed: PropTypes.bool,\n}\n\nfunction ShopsHeader() {\n const slug = get(clientData, 'shop.slug', '')\n const profilePhoto = get(\n clientData,\n 'recipientSlugDetails.slugDetails.userInfo.profilePhotoUrl',\n 'https://www.paypalobjects.com/p2p_seller_profiles/storeImage.jpg',\n )\n const shopName = get(\n clientData,\n 'recipientSlugDetails.slugDetails.userInfo.alternateFullName',\n '',\n )\n\n const handleShopClick = () => {\n addLoader()\n window.location.href = `/paypalme/${slug}`\n }\n\n const handleCartClick = () => {\n addLoader()\n window.location.href = `/paypalme/${slug}/buy/cart`\n }\n\n return (\n \n {shopsBuyerState => {\n const cartCount = shopsBuyerState.getTotalCartCount()\n return (\n <>\n
\n {slug && slug !== '' ? (\n
\n {profilePhoto ? (\n
\n {\n handleShopClick()\n }}\n >\n \n \n
\n ) : null}\n
\n {\n handleShopClick()\n }}\n {...LinkStyle}\n >\n \n {shopName.length > 20\n ? `${shopName.slice(0, 20)}...`\n : shopName}\n \n \n
\n
\n ) : (\n false\n )}\n
\n {window.innerWidth >= SIZE_SMALL ? (\n
\n {\n handleCartClick()\n }}\n {...LinkStyle}\n >\n {l10n('cartLink')}\n \n
\n ) : null}\n
\n {\n handleCartClick()\n }}\n {...LinkStyle}\n >\n \n {cartCount && cartCount > 0 ? (\n {cartCount}\n ) : null}\n \n \n
\n
\n
\n \n )\n }}\n
\n )\n}\n\nexport default ShopsHeader\n","// @flow\n/**\n * Main Flow Container. This will contain all the other container components.\n * This component is mounted at 'transfer/'.\n * If we ever move header/footer to React this is where it should live...\n */\n\nimport React from 'react'\nimport PropTypes from 'prop-types'\nimport clientData from 'utils/client-data'\nimport _ from 'lodash'\nimport 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 {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_send_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)\n","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: 700,\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 const {\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%)', // NOSONAR\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 return availableQuantity > 0\n ? l10n('itemsInStock', { availableQuantity })\n : l10n('soldOut')\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\nconst OUT_OF_STOCK = 'out of stock'\n\nProductDetail.propTypes = {\n product: PropTypes.object,\n productId: PropTypes.string,\n shopId: PropTypes.string,\n isUserLoggedIn: PropTypes.bool,\n}\n\nfunction ProductDetail(props) {\n const {\n match: {\n params: { productId },\n },\n shopsBuyerState: {\n addOrUpdateItemInCart = () => {},\n getCountForShopProductId = () => {},\n getTotalCartCount = () => {},\n state: { catalogListing = [], currentProductId = '' } = {},\n } = {},\n } = props\n\n useEffect(() => {\n tracking(\n Events.public_identity_buyer_item_screen_shown({\n status:\n product?.availableQuantity > 0 || product?.availableQuantity === null\n ? 'in stock'\n : OUT_OF_STOCK,\n item_id: product?.id,\n count: product?.availableQuantity,\n }),\n )\n window.scrollTo(0, 0)\n\n if (availableQuantity === 0) {\n tracking(\n Events.public_identity_buyer_item_inventory_error_occurred({\n item_id: productId,\n item_cnt: quantity,\n opt_sel: event.target.value,\n status: OUT_OF_STOCK,\n }),\n )\n }\n }, [])\n\n const currentProduct = find(catalogListing, item => {\n return item.id === currentProductId\n })\n\n const { isMobile = false } = clientData\n\n const product = currentProduct || get(clientData, 'shop.currentItem')\n const shopHandle = get(clientData, 'shop.slug', '')\n const shopCatalogDetails = get(clientData, 'shop.shopCatalogDetails')\n const isAllowedToBuy = get(clientData, 'shop.isAllowedToBuy')\n\n const [showUnableToPurchaseAlert, setShowUnableToPurchaseAlert] = useState(\n !isAllowedToBuy,\n )\n const quantityFromState = getCountForShopProductId(shopHandle, productId)\n const rawAvailableQuantity = get(product, 'availableQuantity')\n const availableQuantity =\n rawAvailableQuantity === null ? 10 : rawAvailableQuantity || 0\n\n const [quantity, setQuantity] = useState(quantityFromState || 1)\n const [showCartHalfSheet, setShowCartHalfSheet] = useState(false)\n const [cartProductList, setCartProductList] = useState([])\n const [cartSubtotal, setCartSubtotal] = useState('0')\n\n useEffect(() => {\n if (isHiddenOrDeleted(product)) {\n props.history.replace({\n pathname: `/${shopHandle}`,\n })\n }\n }, [product])\n\n useEffect(() => {\n if (product?.hasOwnProperty('errors')) {\n props.history.push(errObj)\n }\n }, [product])\n\n const handleAdvanceToCart = () => {\n window.location.href = `/paypalme/${shopHandle}/buy/cart`\n }\n\n const handleAddToCart = async e => {\n e.preventDefault()\n tracking(\n Events.public_identity_buyer_item_add_to_cart_pressed({\n item_id: productId,\n item_cnt: quantity,\n opt_sel: event.target.value,\n status:\n availableQuantity > 0 || availableQuantity === null\n ? `${availableQuantity} in stock`\n : OUT_OF_STOCK,\n }),\n )\n if (isAllowedToBuy) {\n setShowUnableToPurchaseAlert(true)\n }\n if (quantity > 0) {\n await addOrUpdateItemInCart(shopHandle, {\n name: product.name,\n productId,\n quantity,\n availableQuantity,\n })\n const productsForShopInCart = get(getCartStorage(), shopHandle, [])\n const { allProducts = {}, subTotal = 0 } = getProductListForCart(\n productsForShopInCart,\n shopCatalogDetails,\n )\n setCartProductList(allProducts)\n setCartSubtotal(subTotal)\n setShowCartHalfSheet(true)\n }\n }\n\n const handleQuantityChange = async updatedQuantity => {\n setQuantity(updatedQuantity)\n }\n\n const handleCloseHalfSheet = (e, closedBy) => {\n tracking(\n Events.public_identity_buyer_add_cart_confirmation_dismiss_pressed({\n dismiss_method: closedBy,\n total_count: cartProductList.length,\n subtotal_amt: cartSubtotal,\n item_id: cartProductList.map(item => item.productId).join(','),\n item_cnt: cartProductList.map(item => item.quantity).join(','),\n }),\n )\n setShowCartHalfSheet(false)\n }\n\n const shippingFeePrice =\n product.shippingDetails &&\n product.shippingDetails.type === 'FLAT_RATE' &&\n getFormattedAmount({\n amount: product.shippingDetails.cost.value,\n currencyCode: product.shippingDetails.cost.currencyCode,\n symbolIsoCurrency: false,\n })\n\n return (\n \n \n {showUnableToPurchaseAlert && (\n {\n setShowUnableToPurchaseAlert(!showUnableToPurchaseAlert)\n }}\n />\n )}\n\n \n \n\n \n \n {product && product.name}\n \n\n \n\n \n \n \n \n {getQuantityContent(rawAvailableQuantity)}\n \n \n\n {availableQuantity > 0 ? (\n \n ) : null}\n \n\n \n \n \n {getShippingContent(product, shippingFeePrice)}\n \n \n\n \n {availableQuantity > 0 ? (\n <>\n \n {l10n('button.addToCart')}\n \n \n ) : null}\n \n\n \n\n \n {l10n('productDetails')}\n \n\n \n {product && product.description}\n \n \n \n \n \n {isMobile && (\n \n )}\n \n )\n}\n\nexport default ProductDetail\n","import React, { useEffect, useState } from 'react'\nimport { get, find } from 'lodash'\nimport PropTypes from 'prop-types'\nimport glamorous from 'glamorous'\nimport clientData from 'utils/client-data'\nimport { css } from 'glamor'\nimport {\n HeadingText,\n BodyText,\n TextDisplay,\n CaptionText,\n Divider,\n V2ShippingSendIcon,\n v2grey600,\n white,\n} from '@paypalcorp/pp-react'\nimport { tracking } from 'lib/analytics'\nimport getContent from 'pp-react-l10n'\nimport Events from 'lib/analytics/event-tags'\nimport ProductCoverPhoto from '../shared/components/product-cover-photo'\nimport CheckoutButtons from '../shared/components/buttons/checkout-buttons'\nimport { getFormattedAmount } from '../../shared/amount-utils'\nimport ReportProfileLink from '../../seller/shared/report-profile-link'\n\nimport UnableToBuyAlert from '../product-detail/unable-to-buy-alert'\nimport {\n getQuantityContent,\n getShippingContent,\n isPurchasable,\n isHiddenOrDeleted,\n} from '../product-detail/shared-utils'\n\nimport {\n phone6PlusPortraitMaxAndSmaller,\n foldPortraitMaxAndSmaller,\n} from 'lib/styles/media-queries'\n\nconst l10n = getContent('pages/shops/product-detail')\n\nimport {\n UI_ERROR_STATES,\n getShopProductDetailError,\n} from '../../seller/error/ui-error-states'\nconst errObj = UI_ERROR_STATES[`${getShopProductDetailError()}`]\n\nconst Container = glamorous.div({\n fontFamily: 'PayPalSansBig-Regular,\"Helvetica Neue\",Arial,sans-serif',\n margin: '0px',\n padding: 15,\n width: '100%',\n minWidth: 320,\n maxWidth: 612,\n})\n\nconst FadeIn = css.keyframes({ from: { opacity: 0 }, to: { opacity: 1 } })\nconst Wrapper = glamorous.div({\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n animation: `${FadeIn} 0.5s`,\n})\n\nconst ProductBlock = glamorous.div({\n width: '100%',\n margin: '10px 0',\n backgroundColor: white,\n})\n\nconst ContentBlock = glamorous.div({\n padding: '3% 10% 10% 10%',\n})\n\nconst Price = glamorous.div({\n height: '64px',\n width: '210px',\n '& #txtDsplyVlu_basic': {\n display: 'inline-flex',\n alignItems: 'center',\n paddingTop: '0',\n paddingBottom: '0',\n fontSize: '28px',\n },\n '& #message_text-input-basic': {\n fontSize: '14px',\n marginTop: '-5px',\n },\n})\n\nconst ProductTitle = css({\n marginBottom: '5px',\n overflowWrap: 'break-word',\n})\n\nconst ProductDescription = css({\n marginBottom: '24px',\n})\n\nconst DividerCss = css({\n margin: '24px 0',\n})\n\nconst ShippingFee = glamorous.div({\n marginTop: '24px',\n color: v2grey600,\n display: 'flex',\n alignItems: 'center',\n})\n\nconst ShopActions = glamorous.div({\n width: '75%',\n margin: '36px auto',\n display: 'flex',\n justifyContent: 'center',\n [phone6PlusPortraitMaxAndSmaller]: {\n width: '100%',\n },\n [foldPortraitMaxAndSmaller]: {\n width: '100%',\n },\n})\n\nconst formatPrice = (price, currencyCode) =>\n getFormattedAmount({\n amount: price.toString(),\n currencyCode,\n symbolIsoCurrency: false,\n })\n\nProductDetail.propTypes = {\n product: PropTypes.object,\n productId: PropTypes.string,\n shopId: PropTypes.string,\n isUserLoggedIn: PropTypes.bool,\n}\n\nfunction ProductDetail(props) {\n useEffect(() => {\n tracking(Events.public_identity_buyer_item_screen_shown(analyticsData))\n window.scrollTo(0, 0)\n }, [])\n\n const {\n shopsBuyerState: { state: { catalogListing, currentProductId } = {} } = {},\n } = props\n\n const currentProduct = find(catalogListing, item => {\n return item.id === currentProductId\n })\n\n const { isUserLoggedIn } = clientData\n\n const product = currentProduct || get(clientData, 'shop.currentItem')\n const slug = get(clientData, 'shop.slug', '') || ''\n const availableQuantity = get(product, 'availableQuantity', 0)\n const isAllowedToBuy = get(clientData, 'shop.isAllowedToBuy')\n\n const analyticsData = {\n status:\n product?.availableQuantity > 0 || product?.availableQuantity === null\n ? 'in stock'\n : 'out of stock',\n item_id: product?.id,\n count: product?.availableQuantity,\n }\n\n const [showUnableToPurchaseAlert, setShowUnableToPurchaseAlert] = useState(\n !isAllowedToBuy,\n )\n\n useEffect(() => {\n if (isHiddenOrDeleted(product)) {\n props.history.replace({\n pathname: `/${slug}`,\n })\n }\n }, [product])\n\n useEffect(() => {\n if (product?.hasOwnProperty('errors')) {\n props.history.push(errObj)\n }\n }, [product])\n\n const shippingFeePrice =\n product.shippingDetails &&\n product.shippingDetails.type === 'FLAT_RATE' &&\n getFormattedAmount({\n amount: product.shippingDetails.cost.value,\n currencyCode: product.shippingDetails.cost.currencyCode,\n symbolIsoCurrency: true,\n })\n\n const fireTrackingEvent = eventName => {\n tracking(\n Events[eventName]({\n item_id: product?.id,\n status:\n product?.availableQuantity > 0 || product?.availableQuantity === null\n ? 'in stock'\n : 'out of stock',\n }),\n )\n }\n\n return (\n product && (\n \n \n {showUnableToPurchaseAlert && (\n {\n setShowUnableToPurchaseAlert(!showUnableToPurchaseAlert)\n }}\n />\n )}\n\n \n \n\n \n \n {product && product.name}\n \n\n \n \n \n \n {getQuantityContent(availableQuantity)}\n \n \n\n \n \n \n {getShippingContent(product, shippingFeePrice)}\n \n \n\n \n {isPurchasable(product) ? (\n {\n if (!showUnableToPurchaseAlert) {\n setShowUnableToPurchaseAlert(!showUnableToPurchaseAlert)\n }\n }}\n fireTrackingEvent={fireTrackingEvent}\n productId={product?.id}\n subTotal={product?.price?.value}\n />\n ) : null}\n \n\n \n\n \n {l10n('productDetails')}\n \n\n \n {product && product.description}\n \n \n \n \n \n \n )\n )\n}\nexport default ProductDetail\n","// @flow\n\nimport React from 'react'\n\nimport clientData from 'utils/client-data'\nimport { get } from 'lodash'\nimport MultiItemPurchase from '../multi-cart-product'\nimport SingleItemPurchase from '../single-cart-product'\n\nfunction ProductDetails(props) {\n const isMultiCartExperienceEnabled = get(\n clientData,\n 'isMultiCartExperienceEnabled',\n false,\n )\n\n const ProductDetailsView = isMultiCartExperienceEnabled\n ? MultiItemPurchase\n : SingleItemPurchase\n\n return (\n <>\n \n \n )\n}\n\nexport default ProductDetails\n","import React from 'react'\n\nimport { v2blue600, v2blue300 } from '@paypalcorp/pp-react'\n\nfunction PaypalLogoIcon() {\n return (\n \n \n \n \n \n \n \n )\n}\n\nexport default PaypalLogoIcon\n","import React from 'react'\nimport { css } from 'glamor'\nimport { Button } from '@paypalcorp/pp-react'\nimport PaypalLogoIcon from '../paypal-logo-icon'\nimport { LOGOS } from 'utils/constants'\n\nimport getContent from 'pp-react-l10n'\n\nconst l10n = getContent('pages/shops/cart')\n\nconst ButtonStyles = css({\n width: '100%',\n marginBottom: '10px',\n})\n\nconst PaypalCheckoutImage = css({\n width: '65px',\n display: 'inline-block',\n verticalAlign: 'middle',\n})\n\nfunction PayWithPaypalButton(props) {\n return (\n \n \n \n )\n}\n\nexport default PayWithPaypalButton\n","import React from 'react'\nimport glamorous from 'glamorous'\nimport { css } from 'glamor'\nimport getContent from 'pp-react-l10n'\nimport { LOGOS } from 'utils/constants'\nconst l10n = getContent('pages/shops/cart')\n\nconst PoweredByPaypal = glamorous.div({\n width: '100%',\n display: 'inline-flex',\n flexFlow: 'row wrap',\n alignItems: 'center',\n justifyContent: 'center',\n})\n\nconst PayWithPaypalFooter = css({\n marginRight: '5px',\n})\n\nconst PaypalCheckoutImage = css({\n width: '65px',\n display: 'inline-block',\n verticalAlign: 'middle',\n})\n\nfunction PoweredByPaypalFooter() {\n return (\n \n \n {l10n('poweredBy')}\n \n\n \n \n )\n}\n\nexport default PoweredByPaypalFooter\n","import React from 'react'\nimport { css } from 'glamor'\nimport { Button } from '@paypalcorp/pp-react'\nimport PoweredByPaypalFooter from '../powered-by-paypal-footer'\n\nimport getContent from 'pp-react-l10n'\n\nconst l10n = getContent('pages/shops/cart')\n\nconst ButtonStyles = css({\n backgroundColor: '#2C2E2F',\n borderColor: '#2C2E2F',\n width: '100%',\n marginBottom: 10,\n})\nfunction PayAsAGuestButton(props) {\n return (\n !props.isUserLoggedIn && (\n <>\n \n {l10n('guestCheckout')}\n \n \n \n )\n )\n}\n\nexport default PayAsAGuestButton\n","import React from 'react'\nimport { get } from 'lodash'\nimport PropTypes from 'prop-types'\nimport glamorous from 'glamorous'\nimport clientData from 'utils/client-data'\nimport { generatePpshopsUrl } from 'utils/generate-urls'\nimport '@paypalcorp/pp-vx/dist/components/tile/tile.css'\nimport PayWithPaypalButton from './pay-with-paypal'\nimport PayAsAGuestButton from './pay-as-guest'\nimport { addLoader, removeLoader } from '../../../../../utils/loader'\n\nconst Container = glamorous.div({\n fontFamily: 'PayPalSansBig-Regular,\"Helvetica Neue\",Arial,sans-serif',\n margin: '0px',\n width: '100%',\n minWidth: 250,\n})\n\nCheckoutButtons.propTypes = {\n isUserLoggedIn: PropTypes.bool,\n disableButton: PropTypes.bool,\n cartHasErrors: PropTypes.bool,\n handleCheckoutWhenError: PropTypes.func,\n isAllowedToBuy: PropTypes.bool,\n fireTrackingEvent: PropTypes.func,\n}\n\nfunction CheckoutButtons(props) {\n const {\n isUserLoggedIn = false,\n disableButton = false,\n cartHasErrors = false,\n handleCheckoutWhenError = () => {},\n isAllowedToBuy = true,\n handleOnClick = () => {},\n fireTrackingEvent = () => {},\n productId = '',\n subTotal = 0,\n } = props\n const encryptedFlowData = get(clientData, 'encryptedFlowData', '')\n\n const isMultiCartExperienceEnabled = get(\n clientData,\n 'isMultiCartExperienceEnabled',\n false,\n )\n\n const loginCheckoutPage = async e => {\n e.preventDefault()\n if (isMultiCartExperienceEnabled) {\n fireTrackingEvent(\n 'public_identity_buyer_review_cart_paypal_checkout_pressed',\n )\n } else {\n fireTrackingEvent('public_identity_buyer_item_paypal_pay_pressed')\n }\n\n if (cartHasErrors) {\n handleCheckoutWhenError()\n } else {\n if (isAllowedToBuy) {\n addLoader()\n\n const response = await updateFlowData(\n encryptedFlowData,\n subTotal,\n productId,\n )\n const { encryptedData, error } = response\n\n if (error) {\n removeLoader()\n\n props.history.push({\n pathname: `/seller/error`,\n })\n } else {\n const checkoutUrlForLoggedInUser = generatePpshopsUrl(\n false,\n encryptedData,\n )\n\n window.location.href = checkoutUrlForLoggedInUser\n }\n } else {\n window.scrollTo(0, 0)\n handleOnClick()\n }\n }\n }\n\n const updateFlowData = async (encryptedFlowData, subTotal, productId) => {\n let result\n\n try {\n result = await fetch(`${clientData.requestURI}/v1/updateFlowData`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'X-CSRF-TOKEN': clientData.csrf,\n },\n body: JSON.stringify({\n encryptedFlowData,\n subTotal,\n productId,\n }),\n })\n } catch (e) {\n return { error: e }\n }\n\n return result.json()\n }\n\n const guestCheckoutPage = async e => {\n e.preventDefault()\n if (isMultiCartExperienceEnabled) {\n fireTrackingEvent(\n 'public_identity_buyer_review_cart_guest_checkout_pressed',\n )\n } else {\n fireTrackingEvent('public_identity_buyer_item_guest_pay_pressed')\n }\n\n if (cartHasErrors) {\n handleCheckoutWhenError()\n } else {\n if (isAllowedToBuy) {\n addLoader()\n\n const response = await updateFlowData(\n encryptedFlowData,\n subTotal,\n productId,\n )\n const { encryptedData, error } = response\n\n if (error) {\n removeLoader()\n\n props.history.push({\n pathname: `/seller/error`,\n })\n } else {\n const checkoutUrlForGuest = generatePpshopsUrl(true, encryptedData)\n\n window.location.href = checkoutUrlForGuest\n }\n } else {\n window.scrollTo(0, 0)\n handleOnClick()\n }\n }\n }\n\n return (\n \n \n \n \n )\n}\n\nexport default CheckoutButtons\n","// @flow\n\nimport React, { useState, useEffect } from 'react'\nimport glamorous from 'glamorous'\nimport { css } from 'glamor'\nimport PropTypes from 'prop-types'\nimport getContent from 'pp-react-l10n'\nimport {\n ThemeProvider,\n DropdownMenu,\n TextDisplay,\n Button,\n} from '@paypalcorp/pp-react'\nimport { tracking } from 'lib/analytics'\nimport Events from 'lib/analytics/event-tags'\n\nconst l10n = getContent('pages/shops/cart')\n\nconst Container = glamorous.div({\n height: '100%',\n minWidth: '100px',\n maxWidth: '105px',\n width: 'fit-content',\n display: 'flex',\n flexDirection: 'column',\n '& .menu_button': {\n paddingTop: 0,\n paddingBottom: 0,\n },\n '& .menu_label': {\n display: 'none',\n },\n '& .menu_item[hidden]': {\n display: 'none',\n },\n '& #dropdown_errorText': {\n alignItems: 'flex-start',\n },\n})\n\nconst QuantityLabel = css({\n marginTop: '5px',\n})\n\nconst RemoveButton = css({\n padding: '8px 0 0',\n alignSelf: 'flex-end',\n width: 'fit-content',\n})\n\nQuantityDropdownWidget.propTypes = {\n flow: PropTypes.string,\n productId: PropTypes.string.isRequired,\n shopHandle: PropTypes.string,\n availableItems: PropTypes.number,\n quantity: PropTypes.number,\n handleQuantityChange: PropTypes.func,\n showQuantityLabel: PropTypes.bool,\n showRemoveButton: PropTypes.bool,\n handleOnRemove: PropTypes.func,\n errorTextLabel: PropTypes.string,\n errorType: PropTypes.string,\n}\n\nQuantityDropdownWidget.defaultProps = {\n flow: '',\n productId: '',\n shopHandle: '',\n availableItems: 1,\n quantity: 1,\n handleQuantityChange: () => {},\n showQuantityLabel: false,\n showRemoveButton: false,\n handleOnRemove: () => {},\n errorTextLabel: '',\n errorType: '',\n}\n\nfunction constructAvailabilityOptions(availableItems, quantity) {\n if (availableItems > 0 && quantity >= 0) {\n const options = Array.from({ length: availableItems }, (_, index) => {\n const value = index + 1\n return {\n primaryText: value.toString(),\n value: value.toString(),\n }\n })\n\n /**\n * If selected quantity is greater than the available items (during product-detail -> cart)\n * Then we need to show the dropdown with an error state, while still showing the selected quantity.\n * To do this, we need to add the selected quantity as an option, but hide it with css so it can't be selected.\n * */\n if (quantity > availableItems) {\n options.push({\n primaryText: quantity.toString(),\n value: quantity.toString(),\n hidden: true,\n })\n }\n return options\n } else if (availableItems <= 0) {\n // TODO: we might need some fixing here once error states/content is finalized\n return [\n {\n primaryText: quantity.toString(),\n value: quantity.toString(),\n hidden: true,\n },\n {\n primaryText: '0',\n value: '0',\n },\n ]\n }\n}\n\nfunction QuantityDropdownWidget(props) {\n const {\n flow,\n productId,\n shopHandle,\n availableItems,\n quantity,\n handleQuantityChange,\n disabled,\n showQuantityLabel,\n showRemoveButton,\n handleOnRemove,\n errorTextLabel,\n errorType,\n } = props\n\n const itemQuantity = Math.abs(quantity)\n const [stateQuantity, setStateQuantity] = useState(itemQuantity.toString())\n const [errorState, setErrorState] = useState(false)\n const availabilityOptions = constructAvailabilityOptions(\n availableItems,\n itemQuantity,\n )\n\n useEffect(() => {\n if (errorType) {\n setErrorState(true)\n } else {\n setErrorState(false)\n }\n }, [errorType])\n\n const onChange = event => {\n if (flow === 'product') {\n tracking(\n Events.public_identity_buyer_item_quantity_selection_pressed({\n item_id: productId,\n opt_sel: event.target.value,\n status: availableItems\n ? `${availableItems} in stock`\n : 'out of stock',\n }),\n )\n } else if (flow === 'cart') {\n tracking(\n Events.public_identity_buyer_review_cart_update_quantity_selection_pressed(\n {\n item_id: productId,\n item_cnt: stateQuantity,\n opt_sel: event.target.value,\n },\n ),\n )\n }\n const selectedQuantity = Number(event.target.value) || 1\n setStateQuantity(event.target.value)\n handleQuantityChange(selectedQuantity, productId, shopHandle)\n }\n\n const trackClickEvent = () => {\n if (flow === 'product') {\n tracking(\n Events.public_identity_buyer_item_quantity_dropdown_pressed({\n item_id: productId,\n status: availableItems\n ? `${availableItems} in stock`\n : 'out of stock',\n }),\n )\n } else if (flow === 'cart') {\n tracking(\n Events.public_identity_buyer_review_cart_update_dropdown_pressed({\n item_id: productId,\n item_cnt: stateQuantity,\n }),\n )\n }\n }\n\n return (\n \n \n \n \n {showQuantityLabel && (\n \n )}\n {showRemoveButton && (\n handleOnRemove()}\n className={`${RemoveButton}`}\n >\n {l10n('removeButton')}\n \n )}\n \n )\n}\n\nexport default QuantityDropdownWidget\n","// @flow\n\nimport _ from 'lodash'\n\nexport function getDisplayName(displayName: string) {\n // display name is escaped at the service layer but React escapes strings by default\n // so this string ends up getting double escaped and does not get displayed properly\n return _.unescape(displayName)\n}\n","// @flow\n\nimport { DEFAULT_PROFILE_PHOTO } from 'utils/constants'\n\nexport function getProfilePhotoUrl(url?: string) {\n // return any profile photo URL except for default SVG\n if (url !== DEFAULT_PROFILE_PHOTO) {\n return url\n }\n}\n"],"sourceRoot":""}