{"mappings":"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","sources":["scripts/src/react/basket/utils/context.ts","scripts/src/react/components/Modal/index.tsx"],"sourcesContent":["import { createContext } from \"react\";\r\nimport { IBasketContext } from \"../types\";\r\n\r\nconst defaultLabels = {\r\n infoLabel: \"Info\", // aria for (i) icon\r\n\r\n increaseQuantityLabel: \"Increase quantity\",\r\n decreaseQuantityLabel: \"Decrease quantity\",\r\n removeLabel: \"Remove\", // aria for x to remove item\r\n\r\n addPromoLabel: \"Add promo code\",\r\n addPromoGiftLabel: \"Add gift card or promo code\",\r\n addLabel: \"Add\",\r\n\r\n weAcceptLabel: \"We accept\",\r\n subtotalLabel: \"Subtotal\",\r\n totalLabel: \"Total\",\r\n\r\n checkoutLabel: \"Checkout\",\r\n guestCheckoutLabel: \"Guest Checkout\",\r\n\r\n orderSummaryLabel: \"Order summary\",\r\n\r\n closeBasketModalLabel: \"Close basket\",\r\n editBasketLabel: \"Edit basket\",\r\n showBasketInfoLabel: \"Show more info\",\r\n noItemsInBasketLabel: \"You don't have any items in your cart.\",\r\n giftBoxingMessageBasket:\r\n \"Gifting these? You can add gift-boxing in the checkout for 0 for that extra special touch\",\r\n deliveryLabel: \"Delivery\",\r\n basketRefLabel: \"Your basket\",\r\n basketRefEmptyLabel: \"Your basket is empty\",\r\n deliveryDateLabel: \"Delivery date\",\r\n toLabel: \"To\",\r\n fromLabel: \"From\",\r\n messageLabel: \"Message\",\r\n emailLabel: \"Email\",\r\n basketQueryLabel:\r\n \"

If you have a query regarding your order, please call \\n\" +\r\n \"01793 427450 quoting your Basket Ref: {0}

\",\r\n d365BasketQueryLabel:\r\n \"

If you have a query regarding your order, please call \\n\" +\r\n \"01793 427450.

\",\r\n basketSpendLabel: \"\",\r\n editLabel: \"Edit\",\r\n cancelLabel: \"Cancel\",\r\n saveChangesLabel: \"Save Changes\",\r\n giftCardModalLabels: {\r\n giftCardValue: {\r\n label: \"Choose amount or enter value\",\r\n helperText: \"Minimum spend £10. *Required\"\r\n },\r\n giftCardRecipient: {\r\n label: \"Recipient Name\",\r\n helperText: \"\"\r\n },\r\n recipientEmailAddress: {\r\n label: \"Recipient Email\",\r\n helperText: \"\"\r\n },\r\n giftCardSender: {\r\n label: \"Your Name\",\r\n helperText: \"\"\r\n },\r\n customerRequestedDate: {\r\n label: \"Send on this date\",\r\n helperText: \"\"\r\n },\r\n giftCardMessage: {\r\n label: \"Add a note\",\r\n helperText: \"\"\r\n }\r\n }\r\n};\r\n\r\nconst defaultContext = {\r\n config: {\r\n labels: defaultLabels,\r\n culture: \"en-GB\",\r\n urls: {\r\n checkout: \"/checkout\",\r\n checkoutEnterEmail: \"/checkout/enter-email\"\r\n },\r\n cardImgUrls: [\r\n \"/img/dist/card_amex.png\",\r\n \"/img/dist/card_maestro.png\",\r\n \"/img/dist/card_mastercard.png\",\r\n \"/img/dist/card_visa.png\"\r\n ],\r\n productImgFallback: \"/img/dist/sprite/neptuneLogo.svg\",\r\n giftCardValues: [10, 20, 50, 100, 200, 500]\r\n },\r\n giftCardModal: {\r\n selectedGiftCard: false as false,\r\n openEditGiftCardModal: () => undefined,\r\n closeEditGiftCardModal: () => undefined,\r\n comboboxBoxConfig: []\r\n },\r\n appliedGiftCards: []\r\n};\r\n\r\nconst BasketContext = createContext(defaultContext);\r\n\r\nconst ThemeContext = createContext(\"dark\");\r\n\r\nexport { BasketContext, ThemeContext, defaultLabels };\r\n","// React\r\nimport React, { useEffect, useContext, useRef, useState } from \"react\";\r\n// Vendor\r\nimport cx from \"classnames\";\r\n\r\n// Shared site scripts outside react app\r\nimport { closeModal, modal, openModal } from \"../../../modal\";\r\nimport { BasketContext } from \"../../basket/utils/context\";\r\nimport SVGIcon from \"../SVGIcon\";\r\n\r\n// App\r\nexport interface ILink {\r\n name: string | undefined;\r\n onClick: (args?: any) => void;\r\n className?: string;\r\n isLoading?: boolean;\r\n}\r\n\r\ntype SlideoutOrient = \"left\" | \"right\";\r\n\r\ninterface IModalProps {\r\n id: string;\r\n closeModalLabel?: string;\r\n title?: string | object;\r\n linkCancel?: ILink;\r\n linkAccept?: ILink;\r\n footerLinks?: ILink[];\r\n passive?: boolean; // modal is passive if there are no actions in the footer\r\n open: boolean;\r\n onClose: () => void;\r\n cssClass?: string;\r\n cssClassClose?: string;\r\n isSlideout?: boolean;\r\n slideoutOrient?: SlideoutOrient;\r\n noScrollLargeScreen?: boolean;\r\n overlayBlur?: boolean;\r\n centralized?: boolean;\r\n titleStrong?: boolean;\r\n isSignedin?: boolean;\r\n isD365SettingEnable?: boolean;\r\n seasonalTextColor?: string;\r\n}\r\n\r\nconst stopPropagation = (e: any) => e.stopPropagation();\r\n\r\nconst Modal = ({\r\n id,\r\n children,\r\n closeModalLabel = \"Close\",\r\n linkCancel,\r\n linkAccept,\r\n footerLinks,\r\n title,\r\n open,\r\n onClose,\r\n passive = false, // modal is passive if there are no actions in the footer\r\n cssClass,\r\n cssClassClose,\r\n isSlideout,\r\n slideoutOrient,\r\n noScrollLargeScreen,\r\n overlayBlur,\r\n centralized,\r\n titleStrong,\r\n isSignedin,\r\n seasonalTextColor,\r\n isD365SettingEnable\r\n}: React.PropsWithChildren) => {\r\n const context = useContext(BasketContext);\r\n const {\r\n config: {\r\n labels: { buttonLoadingLabel }\r\n }\r\n } = context;\r\n\r\n const [modalInitialized, setModalInitialized] = useState(false);\r\n const modalEl = useRef(null);\r\n useEffect(() => {\r\n // ensure modal is only initialized once\r\n // if set to open, initialise then open\r\n\r\n if (!modalInitialized && open) {\r\n modal();\r\n setModalInitialized(true);\r\n openModal(id);\r\n return;\r\n }\r\n if (modalInitialized) {\r\n if (open) {\r\n openModal(id);\r\n } else {\r\n closeModal(id);\r\n }\r\n }\r\n }, [id, open]);\r\n\r\n useEffect(() => {\r\n // cleanup\r\n return () => {\r\n closeModal(id);\r\n }\r\n }, []);\r\n\r\n const handleCancelClick = (event: any) => {\r\n if (event) {\r\n event.preventDefault();\r\n }\r\n linkCancel!.onClick(); // only rendering this upon checking for linkCancel\r\n };\r\n const handleAcceptClick = (event: any) => {\r\n if (event) {\r\n event.preventDefault();\r\n }\r\n linkAccept!.onClick(); // only rendering this upon checking for accept click\r\n };\r\n\r\n const renderFooterLinks = () => {\r\n const fullBtnClass = {\r\n \"btn--full-width-center\":\r\n (linkAccept && !linkCancel) || (!linkAccept && linkCancel)\r\n };\r\n const loadingClass =\r\n linkAccept && linkAccept.isLoading ? \"btn--loading\" : \"\";\r\n\r\n return (\r\n
\r\n {linkCancel && (\r\n \r\n {linkCancel.name}\r\n \r\n )}\r\n {linkAccept && (\r\n \r\n {(linkAccept && linkAccept.isLoading && (\r\n \r\n )) ||\r\n linkAccept.name}\r\n \r\n )}\r\n {footerLinks &&\r\n\r\n\r\n footerLinks.map(function (link, index) {\r\n\r\n return (\r\n \r\n {(link && link.isLoading && (\r\n \r\n )) ||\r\n link.name}\r\n \r\n );\r\n })}\r\n
\r\n );\r\n };\r\n return (\r\n \r\n {/* tslint:disable-next-line: jsx-boolean-value */}\r\n\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n {title && typeof title === \"string\" && (\r\n \r\n {title}\r\n \r\n )}\r\n {/* Passed in the whole element */}\r\n {title && typeof title === \"object\" && title}\r\n
\r\n \r\n
{children}
\r\n \r\n {(linkAccept || linkCancel || footerLinks) && renderFooterLinks()}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default Modal;\r\n"],"names":["$kgL75","parcelRequire","$be267a30dbcede65$export$ab4f92552796fc83","infoLabel","increaseQuantityLabel","decreaseQuantityLabel","removeLabel","addPromoLabel","addPromoGiftLabel","addLabel","weAcceptLabel","subtotalLabel","totalLabel","checkoutLabel","guestCheckoutLabel","orderSummaryLabel","closeBasketModalLabel","editBasketLabel","showBasketInfoLabel","noItemsInBasketLabel","giftBoxingMessageBasket","deliveryLabel","basketRefLabel","basketRefEmptyLabel","deliveryDateLabel","toLabel","fromLabel","messageLabel","emailLabel","basketQueryLabel","d365BasketQueryLabel","basketSpendLabel","editLabel","cancelLabel","saveChangesLabel","giftCardModalLabels","giftCardValue","label","helperText","giftCardRecipient","recipientEmailAddress","giftCardSender","customerRequestedDate","giftCardMessage","$be267a30dbcede65$var$defaultContext","config","labels","culture","urls","checkout","checkoutEnterEmail","cardImgUrls","productImgFallback","giftCardValues","giftCardModal","selectedGiftCard","openEditGiftCardModal","closeEditGiftCardModal","comboboxBoxConfig","appliedGiftCards","$be267a30dbcede65$export$33436df2da416f27","createContext","$eA4hF","$0a5225890e5bf8c4$var$stopPropagation","e","stopPropagation","$0a5225890e5bf8c4$export$2e2bcd8739ae039","id","children","closeModalLabel","linkCancel","linkAccept","footerLinks","title","open","onClose","passive","cssClass","cssClassClose","isSlideout","slideoutOrient","noScrollLargeScreen","overlayBlur","centralized","titleStrong","isSignedin","seasonalTextColor","isD365SettingEnable","context","useContext","$f8gaR","BasketContext","buttonLoadingLabel","modalInitialized","setModalInitialized","useState","modalEl","useRef","useEffect","$1CmoP","modal","openModal","closeModal","handleCancelClick","event","preventDefault","onClick","handleAcceptClick","jsx","ref","className","$parcel$interopDefault","$aGMAK","tabIndex","jsxs","role","$bEN3t","default","name","fullBtnClass","loadingClass","isLoading","disabled","map","link","index","renderFooterLinks"],"version":3,"file":"basket.ebe218ce.js.map"}