{"version":3,"sources":["webpack:///./presentation/utils/rgba.js","webpack:///./presentation/components/Shortcode/Alt.tsx","webpack:///./presentation/components/Shortcode/Bold.tsx","webpack:///./presentation/components/Shortcode/Italic.tsx","webpack:///./presentation/components/Shortcode/Link.tsx","webpack:///./presentation/components/Shortcode/Text.tsx","webpack:///src/presentation/components/Shortcode/Tooltip.tsx","webpack:///./presentation/components/Shortcode/PendingShortcode.tsx","webpack:///./presentation/components/Shortcode/Shortcode.tsx","webpack:///./presentation/components/Shortcode/index.ts","webpack:///./domain/constants/alignment.ts","webpack:///./presentation/hocs/withLanguage.tsx","webpack:///../node_modules/@ux/type-size/dist/es/type-size.js","webpack:///../node_modules/@uds/badge/dist/es/index.js","webpack:///./presentation/utils/createImageAlt.ts","webpack:///./application/actions/reactive-knowledge/useShowToast.ts","webpack:///./domain/constants/callToAction.ts","webpack:///./presentation/hooks/usePostActionNavigate.ts","webpack:///./presentation/hooks/useAddToBasket.ts","webpack:///./application/actions/cta/sendProductClicked.ts","webpack:///./application/actions/cta/sendProductOnAddToBasket.ts","webpack:///./application/actions/cta/sendPromotion.ts","webpack:///./presentation/hocs/callToActionHandlers/handleAnalytics.ts","webpack:///./presentation/hocs/callToAction.js","webpack:///./presentation/hocs/callToActionHandlers/handleConfigureClick.ts","webpack:///./presentation/hocs/callToActionHandlers/handlePlayVideoClick.ts","webpack:///./presentation/hocs/callToActionHandlers/handleAddToBasketClick.ts","webpack:///./presentation/hocs/callToActionHandlers/handleSetVisibilityClick.ts"],"names":["c","a","color","alpha","string","getColor","theme","against","Against","LIGHT","NEUTRAL","palette","primary","DARK","tertiary","Alt","RecursiveShortcode","elements","rest","useTheme","style","displayName","Bold","fontWeight","fontStyle","Link","contentType","attributes","externalRoutes","useExternalRoutes","to","goto","id","analyticskey","size","TextButtonSize","INHERIT","rel","target","newTab","formatText","text","newline","formattedText","split","join","escapeShortCodes","reduce","prev","cur","i","nl2br","Text","ReactTooltip","lazy","TooltipShortcode","isMinLg","useBreakpoints","eventToggle","undefined","padding","cssTheme","CallToAction","fallback","tagName","useDefaultStyles","content","maxWidth","randomWidth","Math","floor","random","PendingShortcode","code","display","width","lines","Glyph","Sup","List","OrderedList","ListItem","TickListItem","ProductPrice","PhoneNumber","map","element","index","Shortcode","JSON","stringify","props","String","getAgainst","Element","type","name","glyph","Italic","Tooltip","ShortcodeWrapper","Alignment","Component","currentLanguage","useCurrentLanguage","_SizeMap","_defineProperty","obj","key","value","Object","defineProperty","enumerable","configurable","writable","SMALL","MEDIUM","LARGE","_SizeMap$1","_SizeMap$2","_SizeMap$3","_SizeMap$4","_LineHeightMap","_SizeMap$5","_SizeMap$6","_SizeMap$7","fontSize","lineHeight","footnote","smallprint","SizeMap$1","headingXxl","typography","sizing","SizeMap$2","headingXl","SizeMap$3","LineHeightMap","headingL","height","SizeMap$4","LineHeightMap$1","headingM","SizeMap$5","LineHeightMap$2","headingS","SizeMap$6","LineHeightMap$3","headingXs","SizeMap$7","LineHeightMap$4","headingXxs","Kind","colors","PRIMARY","HIGHLIGHT","WARNING","ALERT","MUTED","PureBadge$1","_ref","children","tag","kind","flush","classNames","badge","badgeWrapper","badgeTag","getClassNames","className","component","hasImage","r","isNotNilOrEmpty","str","image","match","replace","useShowToast","dispatch","useDispatch","message","KnowledgeType","SMIRK","messages","ADD","payload","Behavior","usePostActionNavigate","postAction","url","history","useHistory","isInternal","isInternalUrl","orderUrl","useOrderProcessUrl","window","useWindow","navigateUrl","push","location","href","drivers","makeDrivers","useAddToBasket","data","brandId","useBrandId","showToast","refetch","refetchBasket","useBasket","postActionNavigate","useMutation","productId","pricingTier","addons","quantity","productData","setAddingStatus","handleAnalytics","skuId","addonSkuIds","add","onError","ERK","onSuccess","onSettled","setTimeout","sendProductClicked","list","getProductData","locale","browserCookies","get","then","product","price","productSelectors","getPrice","includeTax","e","notifyCradle","Level","CRITICAL","ecommerce","sendProductOnAddToBasket","currency","category","categoryName","dispatchFBEvent","content_ids","content_name","content_type","sendPromotion","promotion","ec","ecomm","promoNameToPromoId","ctaType","behavior","analytics","ribbonList","formatPricingTier","tier","paymentInterval","term","compose","withProps","ownerProps","ribbon","useRibbon","ribbonId","addingStatus","useState","connect","state","buttonId","ribbonType","ribbonName","linkAttribution","createRibbonName","isNilOrEmpty","bindActionCreators","openReduxModal","signals","open","stateProps","dispatchProps","ownProps","actions","withHandlers","handleConfigureClick","query","URLSearchParams","append","q","toString","handlePlayVideoClick","videoId","provider","route","params","handleClick","ADD_TO_BASKET","defaultSkuId","selectors","useCurrency","useAnalytics","mutateAsync","addToBasket","handleAddToBasketClick","CONFIGURE","PLAY_VIDEO","SET_VISIBILITY","setVisibility","useVisibilitySetsAction","visibilitySet","handleSetVisibilityClick","NAVIGATION"],"mappings":"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","file":"pex-static/90/15.31838299c0ce2999188b.chunk.js","sourcesContent":["import color from 'color';\n\nexport default (c, a) => color(c).alpha(a).string();\n","import React from 'react';\nimport { Against } from 'domain/constants/colorway';\nimport { Theme, useTheme } from '@ux/theme-utils';\n\nimport { RecursiveShortcodeProps } from './Shortcode';\n\nconst getColor = (theme: Theme, against: Against | undefined) => {\n switch (against) {\n case Against.LIGHT:\n return theme.palette.primary;\n case Against.NEUTRAL:\n return theme.palette.primary;\n case Against.DARK:\n return theme.palette.tertiary;\n default:\n return 'inherit';\n }\n};\nconst Alt = ({ RecursiveShortcode, elements, against, ...rest }: RecursiveShortcodeProps) => {\n const { theme } = useTheme();\n return (\n \n {RecursiveShortcode ? : null}\n \n );\n};\n\nAlt.displayName = 'Alt';\n\nexport default Alt;\n","import React from 'react';\n\nimport { RecursiveShortcodeProps } from './Shortcode';\n\nconst Bold = ({ elements, RecursiveShortcode, ...rest }: RecursiveShortcodeProps) => (\n \n {RecursiveShortcode ? : null}\n \n);\n\nBold.displayName = 'Bold';\n\nexport default Bold;\n","import React from 'react';\n\nimport { RecursiveShortcodeProps } from './Shortcode';\n\nconst Bold = ({ elements, RecursiveShortcode, ...rest }: RecursiveShortcodeProps) => (\n \n {RecursiveShortcode ? : null}\n \n);\n\nBold.displayName = 'Bold';\n\nexport default Bold;\n","import React from 'react';\nimport TextButton, { Size as TextButtonSize } from '@ux/text-button';\nimport { useExternalRoutes } from 'domain/selectors/common';\n\nimport { RecursiveShortcodeProps } from './Shortcode';\n\nconst Link = ({ RecursiveShortcode, elements, contentType, attributes, against, ...rest }: RecursiveShortcodeProps) => {\n const externalRoutes = useExternalRoutes();\n\n return (\n \n {/* @ts-ignore: error when upgrading to @ux/config */}\n \n \n );\n};\n\nLink.displayName = 'Link';\n\nexport default Link;\n","import React, { Fragment } from 'react';\n\nconst escapeShortCodes = (text: string) => {\n if (typeof text !== 'string') {\n return null;\n }\n const replaceA = (text ?? '').split('[!').join('[');\n const replaceB = replaceA.split('!/]').join('/]');\n const replaceC = replaceB.split('[/!').join('[/');\n return replaceC;\n // using split/join because for some reason replaceAll fails for backstop\n // tests but not for backstop storybook?\n // if anyone can tell me why, I'd appreciate it.\n // return (text ?? '').replaceAll('[!', '[').replaceAll('!/]', '/]')\n // .replaceAll('[/!', '[/');\n};\n\nconst nl2br = (string: string) =>\n (string ?? '')\n .split('\\n')\n // @ts-ignore typescript cant figure typing out\n // eslint-disable-next-line react/no-array-index-key\n .reduce((prev, cur, i) => [prev,
, cur]);\n\nconst formatText = (text: string, newline: boolean | Element | undefined) => {\n const formattedText = escapeShortCodes(text) ?? '';\n if (newline === false) {\n return formattedText;\n }\n return nl2br(formattedText);\n};\n\ninterface OuterProps {\n text: string;\n nl2br?: Element;\n}\nconst Text = ({ text, nl2br }: OuterProps) => {formatText(text, nl2br)};\n\nText.displayName = 'Text';\n\nexport default Text;\n","import React, { lazy, Suspense } from 'react';\nimport TextButton, { Size as TextButtonSize } from '@ux/text-button';\nimport { cssTheme } from '@ux/theme-utils';\nimport { useBreakpoints } from '@ux/responsive';\n\nimport { RecursiveShortcodeProps } from './Shortcode';\n\n/*\n React-Tooltip is a heavy dependency therefore we asynchronously load it in\n and gracefully decorate the functionality in once it has loaded\n*/\nconst ReactTooltip = lazy(\n () =>\n import(\n /* webpackChunkName: \"react-tooltip-lite\" */\n 'react-tooltip-lite'\n ),\n);\n\nconst TooltipShortcode = ({ RecursiveShortcode, against, attributes, elements }: RecursiveShortcodeProps) => {\n const { isMinLg } = useBreakpoints();\n const eventToggle = isMinLg ? undefined : 'onClick';\n const padding = cssTheme.gu2;\n const CallToAction = (\n \n {attributes?.label}\n \n );\n\n return (\n \n {/* @ts-ignore children doesnt exist */}\n \n {/* @ts-ignore: error when upgrading to @ux/config */}\n \n \n }\n >\n {CallToAction}\n \n \n );\n};\n\nTooltipShortcode.displayName = 'TooltipShortcode';\n\nexport default TooltipShortcode;\n","import React from 'react';\nimport Shimmer from '@ux/shimmer';\nimport { Colorway } from '@ux/theme-utils';\n\nimport { ShortcodeProps } from './';\n\nexport interface OuterProps {\n against?: Colorway;\n code?: ShortcodeProps;\n}\n\n// random % width for shimmer betwen 50% and 95%\nconst randomWidth = () => Math.floor(Math.random() * (95 - 50) + 50);\n\nconst PendingShortcode = ({ code, against }: OuterProps) => (\n \n \n \n);\n\nPendingShortcode.displayName = 'PendingShortcode';\n\nexport default PendingShortcode;\n","import React, { Suspense, lazy, ReactNode } from 'react';\nimport { getAgainst } from 'presentation/utils/colorway';\nimport { Layout } from 'domain/constants/layout';\n/*\n These shortcodes should not be lazy loaded in as they are already in the\n main bundle and it causes a unnecessary shimmer which makes the page feel\n less responsive\n*/\nimport { Against } from 'domain/constants/colorway';\n\nimport Alt from './Alt';\nimport Bold from './Bold';\nimport Italic from './Italic';\nimport Link from './Link';\nimport Text from './Text';\nimport Tooltip from './Tooltip';\nimport PendingShortcode from './PendingShortcode';\n\nimport { ShortcodeProps } from '.';\n\nconst Glyph = lazy(\n () =>\n import(\n /* webpackChunkName: \"shortcode-glyph\" */\n './Glyph'\n ),\n);\n\nconst Sup = lazy(\n () =>\n import(\n /* webpackChunkName: \"shortcode-sup\" */\n './Sup'\n ),\n);\n\nconst List = lazy(\n () =>\n import(\n /* webpackChunkName: \"shortcode-list\" */\n './List'\n ),\n);\n\nconst OrderedList = lazy(\n () =>\n import(\n /* webpackChunkName: \"shortcode-ordered-list\" */\n './OrderedList'\n ),\n);\n\nconst ListItem = lazy(\n () =>\n import(\n /* webpackChunkName: \"shortcode-list-item\" */\n './ListItem'\n ),\n);\n\nconst TickListItem = lazy(\n () =>\n import(\n /* webpackChunkName: \"shortcode-tick-list-item\" */\n './TickListItem'\n ),\n);\n\nconst ProductPrice = lazy(\n () =>\n import(\n /* webpackChunkName: \"shortcode-product-price\" */\n './ProductPrice'\n ),\n);\n\nconst PhoneNumber = lazy(\n () =>\n import(\n /* webpackChunkName: \"shortcode-phone-number\" */\n './PhoneNumber'\n ),\n);\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\ndeclare const i: number;\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\ndeclare const element: ShortcodeProps;\n\nexport interface ShortcodeAttributesProps {\n use?: number;\n number?: number;\n RecursiveShortcode: (props: RecursiveShortcodeProps) => JSX.Element;\n analyticskey?: string;\n goto?: string;\n label?: ReactNode;\n prices?: Array<{\n gross: number;\n net: number;\n raw: number;\n tax: number;\n }>;\n inctax?: string;\n style?: string;\n rel?: string;\n newTab?: string;\n}\nexport interface RecursiveShortcodeProps {\n elements?: Array;\n RecursiveShortcode?: (props: RecursiveShortcodeProps) => JSX.Element;\n type?: string;\n name?: string;\n layout?: Layout;\n against?: Against;\n attributes?: ShortcodeAttributesProps;\n nl2br?: boolean;\n rest?: {\n [key: string]: any;\n };\n [key: string]: any;\n}\n\nconst RecursiveShortcode = ({ elements = [], ...rest }: RecursiveShortcodeProps) => (\n <>\n {elements.map((element, index) => (\n // Temporarily allow index as key waiting for BE to add ids\n // eslint-disable-next-line react/no-array-index-key\n \n ))}\n \n);\n\nexport interface ShortcodeOuterProps {\n against?: Against;\n code: RecursiveShortcodeProps;\n type?: string;\n name?: string;\n}\n\nconst Shortcode = ({ code, ...rest }: RecursiveShortcodeProps) => {\n let props = {\n ...rest,\n } as RecursiveShortcodeProps;\n if (typeof code === 'string' || code instanceof String) {\n props.code = code;\n } else {\n props = {\n ...props,\n ...code,\n };\n }\n\n // @ts-ignore: error when upgrading to @ux/config\n props.against = getAgainst(props.against);\n props.RecursiveShortcode = RecursiveShortcode;\n props.attributes = props?.attributes ?? ({} as ShortcodeAttributesProps);\n const Element = (props: any) => {\n const { code, type, name } = props;\n if (typeof props.code === 'string') {\n return ;\n }\n if (props.type === 'text') {\n return ;\n }\n if (type === 'element') {\n switch (name) {\n case 'list':\n if (props?.attributes?.style === 'number') {\n return ;\n }\n return ;\n case 'li':\n if (props?.attributes?.style === 'glyph') {\n return ;\n }\n return ;\n case 'i':\n return ;\n case 'b':\n return ;\n case 'alt':\n return ;\n case 'sup':\n return ;\n case 'glyph':\n return ;\n case 'tel':\n return ;\n case 'link':\n return ;\n case 'productprice':\n return ;\n case 'tooltip':\n return ;\n case 'root':\n return ;\n default:\n return null;\n }\n }\n return null;\n };\n\n return ;\n};\n\nconst ShortcodeWrapper = (props: RecursiveShortcodeProps) => (\n }>\n \n \n);\n\nShortcodeWrapper.displayName = 'Shortcode';\n\nexport default ShortcodeWrapper;\n","import Shortcode, { RecursiveShortcodeProps } from './Shortcode';\n\n// TODO: help.. please.\nexport type ShortcodeProps = RecursiveShortcodeProps;\n\nexport default Shortcode;\n","export enum Alignment {\n STARTING = 'STARTING',\n CENTER = 'CENTER',\n}\n\nexport default null;\n","import React from 'react';\nimport { useCurrentLanguage } from 'domain/selectors/page';\n\nexport default (Component: any) => {\n return function EnhancedComponent(props: any) {\n const currentLanguage = useCurrentLanguage();\n return ;\n };\n};\n","import { useTheme, TypographySizing } from '@ux/theme-utils';\nimport px2em from '@ux/px2em';\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nvar _SizeMap;\nvar SizeMap = (_SizeMap = {}, _defineProperty(_SizeMap, TypographySizing.SMALL, 48), _defineProperty(_SizeMap, TypographySizing.MEDIUM, 55), _defineProperty(_SizeMap, TypographySizing.LARGE, 63), _SizeMap);\nvar display = (function () {\n var _useTheme = useTheme(),\n theme = _useTheme.theme;\n\n var size = SizeMap[theme.typography.sizing] || 55;\n return {\n fontSize: px2em(size),\n lineHeight: '1.14'\n };\n});\n\n// content is the same on any size scale\nvar content = (function () {\n return {\n fontSize: px2em(16),\n lineHeight: '1.5'\n };\n});\n\n// footnote is the same on any size scale\nvar footnote = (function () {\n return {\n fontSize: px2em(14),\n lineHeight: '1.5'\n };\n});\n\n// smallprint is the same on any size scale\nvar smallprint = (function () {\n return {\n fontSize: px2em(12),\n lineHeight: '1.5'\n };\n});\n\nvar _SizeMap$1;\nvar SizeMap$1 = (_SizeMap$1 = {}, _defineProperty(_SizeMap$1, TypographySizing.SMALL, 32), _defineProperty(_SizeMap$1, TypographySizing.MEDIUM, 36), _defineProperty(_SizeMap$1, TypographySizing.LARGE, 42), _SizeMap$1);\nvar headingXxl = (function () {\n var _useTheme = useTheme(),\n theme = _useTheme.theme;\n\n var size = SizeMap$1[theme.typography.sizing] || 36;\n return {\n fontSize: px2em(size),\n lineHeight: '1.2'\n };\n});\n\nvar _SizeMap$2;\nvar SizeMap$2 = (_SizeMap$2 = {}, _defineProperty(_SizeMap$2, TypographySizing.SMALL, 28), _defineProperty(_SizeMap$2, TypographySizing.MEDIUM, 32), _defineProperty(_SizeMap$2, TypographySizing.LARGE, 36), _SizeMap$2);\nvar headingXl = (function () {\n var _useTheme = useTheme(),\n theme = _useTheme.theme;\n\n var size = SizeMap$2[theme.typography.sizing] || 32;\n return {\n fontSize: px2em(size),\n lineHeight: '1.2'\n };\n});\n\nvar _SizeMap$3;\nvar SizeMap$3 = (_SizeMap$3 = {}, _defineProperty(_SizeMap$3, TypographySizing.SMALL, 24), _defineProperty(_SizeMap$3, TypographySizing.MEDIUM, 28), _defineProperty(_SizeMap$3, TypographySizing.LARGE, 32), _SizeMap$3);\n\nvar LineHeightMap = _defineProperty({}, TypographySizing.SMALL, '1.25');\n\nvar headingL = (function () {\n var _useTheme = useTheme(),\n theme = _useTheme.theme;\n\n var size = SizeMap$3[theme.typography.sizing] || 28;\n var height = LineHeightMap[theme.typography.sizing] || '1.2';\n return {\n fontSize: px2em(size),\n lineHeight: height\n };\n});\n\nvar _SizeMap$4, _LineHeightMap;\nvar SizeMap$4 = (_SizeMap$4 = {}, _defineProperty(_SizeMap$4, TypographySizing.SMALL, 21), _defineProperty(_SizeMap$4, TypographySizing.MEDIUM, 24), _defineProperty(_SizeMap$4, TypographySizing.LARGE, 28), _SizeMap$4);\nvar LineHeightMap$1 = (_LineHeightMap = {}, _defineProperty(_LineHeightMap, TypographySizing.SMALL, '1.3'), _defineProperty(_LineHeightMap, TypographySizing.MEDIUM, '1.25'), _defineProperty(_LineHeightMap, TypographySizing.LARGE, '1.2'), _LineHeightMap);\nvar headingM = (function () {\n var _useTheme = useTheme(),\n theme = _useTheme.theme;\n\n var size = SizeMap$4[theme.typography.sizing] || 24;\n var height = LineHeightMap$1[theme.typography.sizing] || '1.25';\n return {\n fontSize: px2em(size),\n lineHeight: height\n };\n});\n\nvar _SizeMap$5;\nvar SizeMap$5 = (_SizeMap$5 = {}, _defineProperty(_SizeMap$5, TypographySizing.SMALL, 18), _defineProperty(_SizeMap$5, TypographySizing.MEDIUM, 21), _defineProperty(_SizeMap$5, TypographySizing.LARGE, 24), _SizeMap$5);\n\nvar LineHeightMap$2 = _defineProperty({}, TypographySizing.LARGE, '1.25');\n\nvar headingS = (function () {\n var _useTheme = useTheme(),\n theme = _useTheme.theme;\n\n var size = SizeMap$5[theme.typography.sizing] || 21;\n var height = LineHeightMap$2[theme.typography.sizing] || '1.3';\n return {\n fontSize: px2em(size),\n lineHeight: height\n };\n});\n\nvar _SizeMap$6;\nvar SizeMap$6 = (_SizeMap$6 = {}, _defineProperty(_SizeMap$6, TypographySizing.SMALL, 16), _defineProperty(_SizeMap$6, TypographySizing.MEDIUM, 18), _defineProperty(_SizeMap$6, TypographySizing.LARGE, 21), _SizeMap$6);\n\nvar LineHeightMap$3 = _defineProperty({}, TypographySizing.SMALL, '1.5');\n\nvar headingXs = (function () {\n var _useTheme = useTheme(),\n theme = _useTheme.theme;\n\n var size = SizeMap$6[theme.typography.sizing] || 18;\n var height = LineHeightMap$3[theme.typography.sizing] || '1.3';\n return {\n fontSize: px2em(size),\n lineHeight: height\n };\n});\n\nvar _SizeMap$7;\nvar SizeMap$7 = (_SizeMap$7 = {}, _defineProperty(_SizeMap$7, TypographySizing.SMALL, 14), _defineProperty(_SizeMap$7, TypographySizing.MEDIUM, 16), _defineProperty(_SizeMap$7, TypographySizing.LARGE, 18), _SizeMap$7);\n\nvar LineHeightMap$4 = _defineProperty({}, TypographySizing.LARGE, '1.3');\n\nvar headingXxs = (function () {\n var _useTheme = useTheme(),\n theme = _useTheme.theme;\n\n var size = SizeMap$7[theme.typography.sizing] || 16;\n var height = LineHeightMap$4[theme.typography.sizing] || '1.5';\n return {\n fontSize: px2em(size),\n lineHeight: height\n };\n});\n\nexport { content, display, footnote, headingL, headingM, headingS, headingXl, headingXs, headingXxl, headingXxs, smallprint };\n","import { classNames, Heading06 } from '@uds/typography';\nimport { cx } from 'linaria';\nimport './badge.stylesheet_1h9r18g.css';\nimport { jsxs, jsx } from 'react/jsx-runtime';\n\nlet Kind;\n\n(function (Kind) {\n Kind[\"PRIMARY\"] = \"PRIMARY\";\n Kind[\"HIGHLIGHT\"] = \"HIGHLIGHT\";\n Kind[\"WARNING\"] = \"WARNING\";\n Kind[\"ALERT\"] = \"ALERT\";\n Kind[\"NEUTRAL\"] = \"NEUTRAL\";\n Kind[\"MUTED\"] = \"MUTED\";\n})(Kind || (Kind = {}));\n\nconst badgeWrapper = \"b8lv12d\";\nconst flushed = \"f1jgljld\";\nconst badge = \"b1kjbh2x\";\nconst badgeTag = \"b1im6t4a\";\nconst colors = {\n PRIMARY: \"pi7709t\",\n HIGHLIGHT: \"h13te26t\",\n WARNING: \"wfo8huu\",\n ALERT: \"a1ts93wr\",\n NEUTRAL: \"nh9nguv\",\n MUTED: \"myd1t1i\"\n};\nconst getClassNames = _ref => {\n let {\n kind,\n flush\n } = _ref;\n return {\n badge: cx(badge, classNames.headingXxs, kind != null && colors[kind]),\n badgeWrapper: cx(badgeWrapper, flush && flushed),\n badgeTag\n };\n};\n\nconst PureBadge = _ref => {\n let {\n children,\n tag,\n kind = Kind.PRIMARY,\n flush = false\n } = _ref;\n const classNames = getClassNames({\n kind,\n flush\n });\n return /*#__PURE__*/jsxs(\"div\", {\n className: classNames.badgeWrapper,\n children: [/*#__PURE__*/jsx(\"div\", {\n className: classNames.badge,\n children: children\n }), tag != null && /*#__PURE__*/jsx(\"span\", {\n className: classNames.badgeTag,\n children: /*#__PURE__*/jsx(Heading06, {\n component: \"span\",\n children: tag\n })\n })]\n });\n};\n\nvar PureBadge$1 = PureBadge;\n\nexport { PureBadge$1 as Badge, Kind, PureBadge$1 as default };\n","/*\n createImageAlt({\n illustration: ?String,\n imageUrl: String,\n });\n\n Returns a relevant alt tag text from the URL path\n*/\n\nimport { isNotNilOrEmpty } from '@team-griffin/capra';\nimport * as r from 'ramda';\n\nconst hasImage = r.propSatisfies(isNotNilOrEmpty, 'imageUrl');\n\n/*\n getImageName\n From a URL like https://img1.wsimg.com/cdn/Image/All/Website/2/en-GB/ad586f1e-81a0-4a9d-a675-e266e25e965f/Christian_Jaroljmek.jpg\n return the text between the final slash and dot (Christian_Jaroljmek)\n\n If no regex match, return the string as is (this will capture illustrations)\n*/\nconst getImageName = (str: string) => {\n if (typeof str !== 'string') {\n return '';\n }\n\n const image = str.match(/\\/([^/]+?)\\.[a-zA-Z0-9]+$/);\n\n if (image && image[1]) {\n return image[1];\n }\n\n return str;\n};\n\n/*\n formatName\n Replace any underscores and hyphens with whitespace\n*/\nconst formatName = (str: string) => str.replace(/[-_]/g, ' ');\n\n// eslint-disable-next-line no-underscore-dangle\nexport const __test__ = {\n getImageName,\n formatName,\n};\n\nexport default r.ifElse(hasImage, r.pipe(r.prop('imageUrl'), getImageName, formatName), r.always(''));\n","import { useDispatch } from 'react-redux';\nimport { messages, KnowledgeType } from '@ux/reactive-knowledge';\n\nexport type ShowToast = (messageId: string, type?: KnowledgeType) => void;\n\nexport default function useShowToast(): ShowToast {\n const dispatch = useDispatch();\n return (message: string, type: KnowledgeType = KnowledgeType.SMIRK) => {\n dispatch({\n type: messages.ADD,\n payload: {\n type,\n message,\n },\n });\n };\n}\n","export enum Behavior {\n NAVIGATION = 'navigation',\n ADD_TO_BASKET = 'addToBasket',\n CONFIGURE = 'configure',\n SET_VISIBILITY = 'changeActiveVisibilitySet',\n PLAY_VIDEO = 'playVideo',\n}\n\nexport default null;\n","import { useHistory } from 'react-router';\nimport { useWindow } from '@ux/hooks';\nimport { isInternalUrl } from 'domain/url';\nimport { useOrderProcessUrl } from 'domain/selectors/common';\n\nconst usePostActionNavigate = (postAction: { type: string; url: string }) => {\n const { type, url } = postAction ?? {};\n const history = useHistory();\n const isInternal = isInternalUrl(url);\n const orderUrl = useOrderProcessUrl();\n const window = useWindow();\n const navigateUrl = type === 'CHECKOUT' ? orderUrl : url;\n\n return () => {\n if (navigateUrl == null) {\n return;\n }\n if (isInternal) {\n history.push(navigateUrl);\n } else {\n window.location.href = navigateUrl;\n }\n };\n};\n\nexport default usePostActionNavigate;","import { useMutation } from 'react-query';\nimport useShowToast from 'application/actions/reactive-knowledge/useShowToast';\nimport makeDrivers from 'infrastructure/drivers/middleware';\nimport { ProductData } from 'core/basket';\nimport { useBrandId } from '@ux/whitelabel';\nimport { useBasket } from '@uds/bookends';\nimport { KnowledgeType } from '@ux/reactive-knowledge';\nimport { Dispatch } from 'react';\nimport usePostActionNavigate from 'presentation/hooks/usePostActionNavigate';\n\nconst drivers = makeDrivers();\n\nconst add = ({\n brandId,\n productId,\n pricingTier,\n addons,\n quantity,\n productData,\n setAddingStatus,\n handleAnalytics,\n}: {\n brandId: string;\n productId: string;\n pricingTier?: string;\n addons: unknown;\n quantity?: number;\n productData?: ProductData;\n setAddingStatus: Dispatch;\n handleAnalytics: () => void;\n}) => {\n const data = {} as {\n pricingTier?: string;\n quantity?: number;\n brandId: string;\n skuId: string | number;\n addonSkuIds: unknown;\n };\n handleAnalytics();\n setAddingStatus('REQUESTED');\n data.pricingTier = pricingTier;\n if (quantity) {\n data.quantity = quantity;\n }\n data.brandId = brandId;\n data.skuId = productData?.skuId ?? productId;\n data.addonSkuIds = addons;\n return drivers('0', 'addBasketItem', data);\n};\n\nconst useAddToBasket = (data: {\n productId: string;\n pricingTier?: string;\n addons: unknown;\n quantity?: number;\n productData?: ProductData;\n setAddingStatus: Dispatch;\n handleAnalytics: () => void;\n postAction: {\n type: string;\n url: string;\n };\n}) => {\n const brandId = useBrandId();\n const showToast = useShowToast();\n const { refetch: refetchBasket } = useBasket();\n const addToBasket = () => add({ ...data, brandId });\n const postActionNavigate = usePostActionNavigate(data.postAction);\n return useMutation(addToBasket, {\n onError: () => {\n showToast('usf.addToBasket.failure', KnowledgeType.ERK);\n data.setAddingStatus('FAILURE');\n },\n onSuccess: () => {\n refetchBasket();\n showToast('usf.addToBasket.success');\n data.setAddingStatus('SUCCESS');\n postActionNavigate();\n },\n onSettled: () => {\n setTimeout(() => data.setAddingStatus('DEFAULT'), 1000);\n },\n });\n};\n\nexport default useAddToBasket;\n","import { ecommerce } from '@ux/tagmg';\nimport browserCookies from 'browser-cookies';\nimport { GetProductData } from 'core/cta';\nimport { Level, notifyCradle } from '@ux/cradle';\nimport { selectors as productSelectors } from '@uds/product';\n\nconst sendProductClicked = ({\n productId,\n list,\n getProductData,\n}: {\n list: string;\n productId: string;\n getProductData: GetProductData;\n}) => {\n const locale = browserCookies.get('ux-language-preferred');\n\n if (!productId) {\n return;\n }\n return getProductData({\n skuId: productId,\n locale,\n }).then((product) => {\n const id = product?.id;\n const name = product?.name;\n let price = 0;\n // in case we ever get a malformed product, getPrice would throw an error\n try {\n price = productSelectors.getPrice({\n product,\n includeTax: false,\n });\n } catch (e) {\n return notifyCradle(Level.CRITICAL, e, 'Malformed product');\n }\n\n ecommerce([\n [\n 'addProduct',\n {\n id: `${id}`,\n name,\n price,\n },\n ],\n ['setAction', 'click', { list }],\n ]);\n });\n};\n\nexport default sendProductClicked;","import { dispatchFBEvent, ecommerce } from '@ux/tagmg';\nimport { selectors as productSelectors } from '@uds/product';\nimport browserCookies from 'browser-cookies';\nimport { GetProductData } from 'core/cta';\n\nconst sendProductOnAddToBasket = ({\n productId,\n list,\n getProductData,\n currency,\n}: {\n list: string;\n productId: string;\n getProductData: GetProductData;\n currency?: string;\n}) => {\n const locale = browserCookies.get('ux-language-preferred');\n if (!productId) {\n return;\n }\n return getProductData({\n skuId: productId,\n locale,\n }).then((product) => {\n let price = 0;\n // in case we ever get a malformed product, getPrice would throw an error\n try {\n price = productSelectors.getPrice({\n product,\n includeTax: false,\n });\n } catch (e) {\n return;\n }\n if (product == null) return;\n const id = product.id;\n const name = product.name;\n const category = product.categoryName;\n dispatchFBEvent('AddToCart', {\n // eslint-disable-next-line camelcase\n content_ids: [id],\n // eslint-disable-next-line camelcase\n content_name: name,\n value: price,\n quantity: 1,\n // eslint-disable-next-line camelcase\n content_type: category,\n currency: currency,\n });\n ecommerce([\n [\n 'addProduct',\n {\n id: `${id}`,\n name,\n price,\n },\n ],\n [\n 'setAction',\n 'add',\n {\n list,\n },\n ],\n ]);\n });\n};\n\nexport default sendProductOnAddToBasket;\n","import { Ecommerce, ecommerce } from '@ux/tagmg';\nimport { promoNameToPromoId } from 'domain/logic/promotion';\n\nconst sendPromotion = ({ promotion, ec }: { promotion?: string; ec?: Ecommerce }) => {\n // for test purposes, we allow an overwrite\n const ecomm = ec || ecommerce;\n if (!promotion) {\n return;\n }\n\n const promoId = promoNameToPromoId(promotion);\n ecomm([\n [\n 'addPromo',\n {\n id: promoId,\n name: promotion,\n },\n ],\n ['setAction', 'promo_click'],\n ]);\n};\n\nexport default sendPromotion;\n","import { sendProductClicked, sendProductOnAddToBasket, sendPromotion } from 'application/actions/cta';\nimport { GetProductData } from 'core/cta';\n\nexport default (props: {\n behavior: {\n type: any;\n analytics: {\n type: string;\n productId: string;\n promotion: string;\n };\n productId: string;\n };\n ribbonList: string;\n getProductData: GetProductData;\n currency?: string;\n}) => {\n const ctaType = props.behavior?.type;\n const type = props.behavior?.analytics?.type;\n const list = props.ribbonList;\n const currency = props.currency;\n const getProductData = props.getProductData;\n return () => {\n if (type === 'PRODUCT') {\n const productId = props.behavior?.analytics?.productId;\n sendProductClicked({\n productId,\n list,\n getProductData,\n });\n } else if (type === 'PROMOTION') {\n const promotion = props.behavior?.analytics?.promotion;\n sendPromotion({ promotion });\n } else if (ctaType === 'addToBasket') {\n const productId = props.behavior?.productId;\n sendProductOnAddToBasket({ productId, list, getProductData, currency });\n }\n };\n};\n","import { compose, withProps, withHandlers } from 'recompose';\nimport { connect } from 'react-redux';\nimport { bindActionCreators } from 'redux';\nimport { useWindow } from '@ux/hooks';\nimport { useExternalRoutes } from 'domain/selectors/common';\nimport { createRibbonName } from 'domain/transformers/ribbons';\nimport { useRibbon } from 'domain/selectors/ribbons';\nimport { Behavior } from 'domain/constants/callToAction';\nimport { signals } from '@team-griffin/redux-modal-router';\nimport { isNilOrEmpty } from 'presentation/utils/generalUtils';\nimport { useState } from 'react';\nimport { getProductData } from 'infrastructure/cta';\n\nimport {\n handleAddToBasketClick,\n handleConfigureClick,\n handlePlayVideoClick,\n handleAnalytics,\n handleSetVisibilityClick,\n} from './callToActionHandlers';\n\nexport const formatPricingTier = (tier) => {\n if (tier == null) {\n return;\n }\n if (tier.paymentInterval == null || tier.term == null) {\n return;\n }\n return `${tier.paymentInterval}:${tier.term}`;\n};\n\nconst mapStateToProps = (state, props) => {\n const buttonId = `${props.ribbonId}-cta-${props.index}`;\n const ribbonType = props?.ribbon?.type;\n const ribbonName = props?.ribbon?.props?.name;\n const product = props?.product;\n // add an analytics prefixed `id` to the cta if required\n const id = (() => {\n const behavior = props.behavior;\n const id = props.id;\n if (behavior?.analytics?.linkAttribution) {\n return `usf-cta-${behavior.analytics.linkAttribution}`;\n }\n return id;\n })();\n const ribbonList = createRibbonName(ribbonType, ribbonName);\n const behavior = isNilOrEmpty(props.behavior) ? {} : props.behavior;\n return {\n buttonId,\n ribbonList,\n product,\n id,\n behavior,\n };\n};\n\nconst mapDispatchToProps = (dispatch) =>\n bindActionCreators(\n {\n openReduxModal: signals.open,\n },\n dispatch,\n );\n\nconst mergeProps = (stateProps, dispatchProps, ownProps) => {\n return {\n ...stateProps,\n ...ownProps,\n actions: {\n ...dispatchProps,\n ...ownProps.actions,\n },\n };\n};\n\nexport default compose(\n withProps((ownerProps) => ({\n ribbon: useRibbon(ownerProps.ribbonId),\n externalRoutes: useExternalRoutes(),\n })),\n withProps((ownerProps) => ({\n window: useWindow(),\n getProductData,\n ...(() => {\n const [addingStatus, setAddingStatus] = useState('DEFAULT');\n return {\n setAddingStatus,\n addingStatus,\n };\n })(ownerProps),\n })),\n connect(mapStateToProps, mapDispatchToProps, mergeProps),\n withHandlers({\n handleConfigureClick: handleConfigureClick,\n handlePlayVideoClick: handlePlayVideoClick,\n }),\n withProps((ownerProps) => ({\n handleClick: (() => {\n switch (ownerProps.behavior?.type) {\n case Behavior.ADD_TO_BASKET:\n return handleAddToBasketClick(ownerProps);\n case Behavior.CONFIGURE:\n return ownerProps.handleConfigureClick;\n case Behavior.PLAY_VIDEO:\n return ownerProps.handlePlayVideoClick;\n case Behavior.SET_VISIBILITY:\n return handleSetVisibilityClick(ownerProps);\n case Behavior.NAVIGATION:\n return handleAnalytics(ownerProps);\n default:\n return () => null;\n }\n })(),\n })),\n);\n","import { formatPricingTier } from '../callToAction';\n\nexport default ({\n window,\n behavior: { productId, pricingTier },\n}: {\n window: Window;\n behavior: {\n productId: string;\n pricingTier: string;\n };\n}) => {\n return () => {\n const tier = formatPricingTier(pricingTier);\n const query = new URLSearchParams();\n query.append('productId', productId);\n if (tier) {\n query.append('pricingTier', tier);\n }\n const q = query.toString();\n window.location.href = `/configure?${q}`;\n };\n};\n","export default ({\n actions: { openReduxModal },\n behavior: { videoId, provider },\n }: {\n actions: {\n openReduxModal: any;\n };\n behavior: {\n videoId: string;\n provider: string;\n };\n }) =>\n () => {\n openReduxModal({\n route: 'PLAY_VIDEO',\n params: {\n videoId,\n provider,\n },\n });\n };\n","import { useCurrency } from '@ux/currency';\nimport { Product, selectors } from '@uds/product';\nimport { ProductData } from 'core/basket';\nimport { GetProductData } from 'core/cta';\nimport useAddToBasket from 'presentation/hooks/useAddToBasket';\nimport { Dispatch } from 'react';\n\nimport { formatPricingTier } from '../callToAction';\nimport handleAnalytics from './handleAnalytics';\n\nexport default (props: {\n ribbonList: string;\n getProductData: GetProductData;\n product: Product;\n setAddingStatus: Dispatch;\n behavior: {\n type: string;\n productId: string;\n postAction: {\n type: string;\n url: string;\n };\n pricingTier: string;\n analytics: {\n type: string;\n productId: string;\n promotion: string;\n };\n };\n}) => {\n const {\n product,\n setAddingStatus,\n behavior: { productId, postAction, pricingTier },\n } = props;\n const productData = {\n skuId: product ? product.defaultSkuId : null,\n name: product ? product.name : null,\n price: product\n ? selectors.getPrice({\n product,\n includeTax: false,\n })\n : null,\n category: product ? product.categoryName : null,\n } as ProductData;\n\n const currency = useCurrency();\n const useAnalytics = handleAnalytics({ ...props, currency });\n const { mutateAsync: addToBasket } = useAddToBasket({\n productId,\n pricingTier: formatPricingTier(pricingTier),\n productData,\n addons: undefined,\n quantity: 1,\n setAddingStatus,\n postAction,\n handleAnalytics: useAnalytics,\n });\n\n return addToBasket;\n};\n","import { useVisibilitySetsAction } from 'presentation/context/VisibilitySets';\n\nexport default ({ behavior }: { behavior: { visibilitySet: any } }) => {\n const setVisibility = useVisibilitySetsAction();\n if (setVisibility == null) {\n // eslint-disable-next-line react/display-name\n return () => null;\n }\n\n return () => {\n setVisibility(behavior?.visibilitySet);\n };\n};\n"],"sourceRoot":""}