{"version":3,"sources":["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:///./presentation/hocs/withLanguage.tsx","webpack:///./presentation/utils/urlLanguageParse.ts","webpack:///./presentation/components/common/CallToAction.tsx","webpack:///./domain/constants/callToAction.ts","webpack:///./application/actions/reactive-knowledge/useShowToast.ts","webpack:///./infrastructure/basket/createBasket.ts","webpack:///./infrastructure/basket/addToBasket.ts","webpack:///./application/actions/cta/useAddProductToBasket.ts","webpack:///./application/actions/cta/usePostActionNavigate.ts","webpack:///./presentation/hocs/callToActionHandlers/handleAddToBasketClick.ts","webpack:///./presentation/hocs/callToActionHandlers/handleConfigureClick.ts","webpack:///./application/actions/cta/sendProductClicked.ts","webpack:///./application/actions/cta/sendProductOnAddToBasket.ts","webpack:///./application/actions/cta/sendPromotion.ts","webpack:///./presentation/hocs/callToAction.tsx","webpack:///./presentation/hocs/callToActionHandlers/handleAnalytics.ts","webpack:///./presentation/hocs/callToActionHandlers/utils.ts","webpack:///./presentation/hocs/callToActionHandlers/handleSetVisibilityClick.ts","webpack:///./presentation/hocs/callToActionHandlers/handlePlayVideoClick.ts","webpack:///./presentation/utils/getActiveImageWithAspectRatios.ts","webpack:///../node_modules/@uds/illustrations/dist/es/illustrations.js","webpack:///./presentation/components/ribbons/pillars-recumbent/Pillar.tsx","webpack:///src/presentation/components/ribbons/pillars-recumbent/Pillar.stylesheet.ts","webpack:///./presentation/components/ribbons/pillars-recumbent/PillarsRecumbent.tsx","webpack:///./presentation/components/ribbons/pillars-recumbent/PillarsRecumbent.stylesheet.ts","webpack:///./presentation/components/ribbons/pillars-recumbent/index.ts"],"names":["getColor","theme","against","Against","LIGHT","NEUTRAL","palette","primary","DARK","tertiary","Alt","RecursiveShortcode","elements","rest","useTheme","style","color","displayName","Bold","fontWeight","fontStyle","Link","contentType","attributes","isExternalRoute","route","useIsExternalRoute","goto","href","id","analyticskey","size","TextButtonSize","INHERIT","rel","target","newTab","formatText","text","newline","values","formattedText","replace","_","match","replaceValues","split","join","escapeShortCodes","string","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","type","name","glyph","Italic","Tooltip","ShortcodeWrapper","Component","currentLanguage","useCurrentLanguage","url","language","length","parsedLanguage","toUpperCase","PureCallToAction","kind","label","addingStatus","handleClick","behavior","status","Status","PENDING","SUCCESS","FAILURE","DEFAULT","getStatus","isExternal","openNewWindowProps","buttonProps","omit","onClick","alt","callToAction","Behavior","useShowToast","add","useAdd","intl","useIntl","message","KnowledgeType","SMIRK","formatMessage","createBasket","async","driver","makeDriver","response","method","Method","POST","headers","brandId","basketId","body","setCookie","makeAddToBasket","items","localeCode","getLanguageCookie","cookie","getCookie","cookieDecoded","decode","e","getBaskedId","data","useAddProductToBasket","postActionNavigate","handleAnalytics","useBrandId","showToast","refetchBasket","useRefreshBasketCount","useMutation","onError","ERK","onSuccess","usePostActionNavigate","postAction","history","useHistory","isInternal","isInternalUrl","orderUrl","useOrderProcessUrl","window","useWindow","navigateUrl","push","location","statusMap","idle","loading","success","error","sendProductClicked","productId","list","getProductData","locale","skuId","then","product","price","productSelectors","getPrice","includeTax","ecommerce","sendProductOnAddToBasket","currency","term","category","categoryName","dispatchFBEvent","content_ids","content_name","value","quantity","content_type","defaultPrice","dispatchGA4Event","sendPromotion","promotion","ec","ecomm","promoNameToPromoId","VideoModal","ribbonId","setAddingStatus","useState","isVideoModalOpen","setIsVideoModalOpen","externalRoutes","useExternalRoutes","useCurrency","ribbon","useRibbon","createRibbonName","ctaType","analytics","pricingTier","useHandleAnalytics","handleAddToBasketClick","mutateAsync","addToBasket","useEffect","timeoutRef","setTimeout","clearTimeout","defaultSkuId","paymentInterval","useHandleAddToBasketClick","handleConfigureClick","tier","formatPricingTier","query","URLSearchParams","append","q","toString","useHandleConfigureClick","handleSetVisibilityClick","setVisibility","useVisibilitySetsAction","visibilitySet","useHandleSetVisibilityClick","ctaId","linkAttribution","actionType","toggleVideoModal","isOpen","ADD_TO_BASKET","CONFIGURE","PLAY_VIDEO","handlePlayVideoClick","SET_VISIBILITY","NAVIGATION","videoId","provider","closeModal","breakpoints","image","imagesWithAspectRatios","imageUrl","imageAspectRatio","preserveDimension","findResponsiveItem","reactPropsRegex","fn","cache","arg","memoize","prop","test","charCodeAt","restOp","obj","keysToExclude","Object","keys","filter","includes","acc","curr","assign","warnIfInvalid","componentName","Root","tag","options","render","ref","as","component","class","className","filteredProps","indexOf","key","_len","arguments","classNames","Array","_key","Boolean","cx","vars","variable","result","unit","__linaria","Result","innerRef","extends","styled$1","_ref","iconSize","iconName","themeSpacing","gu","getSize","createPaintbrushUrl$1","icon","params","illustrations","forEach","iconSet","Illustration$1","spacing","children","src","importance","PurePillar","hBaseline","illustration","title","colorway","ctas","isMinSm","styles","hasMultipleCtas","useStyles","default","marginLeft","gu2px","flex","flexBasis","overflow","wordWrap","imageContainer","height","position","left","transform","marginTop","cta","spaceCtas","marginRight","useStylesheet","activeImage","getActiveImageWithAspectRatios","hasTitle","isNilOrEmpty","hasBody","root","getClassNames","showIllustration","showImage","urlLanguageParse","createImageAlt","depth","block","Size","SM","concat","withLanguage","PurePillarsRecumbent","layout","pillars","isMinMd","grid","columnGap","rowGap","gridTemplateColumns","Ribbon","Type","PILLARS_RECUMBENT","Pillar","pillar","errorBoundary","PillarsRecumbent"],"mappings":"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","file":"pex-static/34/44.f55bc9f01921ad66499e.chunk.js","sourcesContent":["import React from 'react';\nimport { Theme, useTheme, Colorway as Against } from '@uds/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 { ReactRouterTextButton } from '@uds/react-router-adapter';\nimport { Size as TextButtonSize } from '@uds/text-button';\nimport { useIsExternalRoute } from 'domain/selectors/common';\n\nimport { RecursiveShortcodeProps } from './Shortcode';\n\nconst Link = ({ RecursiveShortcode, elements, contentType, attributes, against, ...rest }: RecursiveShortcodeProps) => {\n const [isExternalRoute, route] = useIsExternalRoute(attributes?.goto);\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 replaceValues = (text: string, values?: Record) => {\n if (values == null) {\n return text;\n }\n return text.replace(/{(?[^{]*)}/g, (_, match) => {\n return values[match];\n });\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, values?: Record) => {\n const formattedText = replaceValues(escapeShortCodes(text) ?? '', values);\n if (newline === false) {\n return formattedText;\n }\n return nl2br(formattedText);\n};\n\ninterface OuterProps {\n text?: string | undefined;\n nl2br?: boolean | Element;\n values?: Record;\n}\nconst Text = ({ text, nl2br, values }: OuterProps) => {formatText(text ?? '', nl2br, values)};\n\nText.displayName = 'Text';\n\nexport default Text;\n","import React, { lazy, Suspense } from 'react';\nimport TextButton, { Size as TextButtonSize } from '@uds/text-button';\nimport { cssTheme } from '@uds/theme-utils';\nimport { useBreakpoints } from '@uds/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, attributes, elements }: RecursiveShortcodeProps) => {\n const { isMinLg } = useBreakpoints();\n const eventToggle = isMinLg ? undefined : 'onClick';\n const padding = cssTheme.gu2;\n const CallToAction = {attributes?.label};\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 '@uds/penders';\n\nimport { ShortcodeProps } from './';\n\nexport interface OuterProps {\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 }: 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 { Colorway as Against } from '@uds/theme-utils';\nimport { IconName } from '@uds/glyphs';\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 glyph: string;\n use?: number;\n number?: number;\n RecursiveShortcode: (props: RecursiveShortcodeProps) => JSX.Element;\n analyticskey?: string;\n goto?: string;\n label?: ReactNode;\n icon: IconName;\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 | undefined;\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 values?: Record;\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 props.against = getAgainst(props.against);\n props.RecursiveShortcode = RecursiveShortcode;\n props.attributes = props?.attributes ?? ({} as ShortcodeAttributesProps);\n\n const { type, name, values } = 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\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","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","export default (url: string, language?: string) => {\n if (url && url.length && language) {\n let parsedLanguage;\n if (language.split('-').length === 2) {\n parsedLanguage = [language.split('-')[0], language.split('-')[1].toUpperCase()].join('-');\n } else {\n parsedLanguage = language;\n }\n return url.replace('{{language}}', parsedLanguage);\n }\n return url;\n};\n","import React from 'react';\nimport { Status, Size } from '@uds/button';\nimport { CTA } from 'core/ribbons/cta';\nimport { Product } from '@uds/product';\nimport { Glyph, IconName } from '@uds/glyphs';\nimport callToAction from 'presentation/hocs/callToAction';\nimport { omit } from 'presentation/utils/generalUtils';\nimport { ReactRouterButton } from '@uds/react-router-adapter';\nimport { useIsExternalRoute } from 'domain/selectors/common';\n\ninterface OuterProps extends CTA {\n product?: Product;\n block?: boolean;\n size?: Size;\n ribbonId: string;\n index: number;\n glyph?: IconName;\n}\n\ninterface InnerProps extends OuterProps {\n addingStatus?: Status;\n handleClick: (props: any) => () => void;\n}\n\nconst getStatus = (addingStatus: string | undefined) => {\n switch (addingStatus) {\n case 'PENDING':\n return Status.PENDING;\n case 'SUCCESS':\n return Status.SUCCESS;\n case 'FAILURE':\n return Status.FAILURE;\n default:\n return Status.DEFAULT;\n }\n};\n\nconst PureCallToAction = ({ kind, label, addingStatus, handleClick, behavior, ...props }: InnerProps) => {\n const status = getStatus(addingStatus);\n const goto = 'goto' in behavior ? behavior.goto : undefined;\n const [isExternal, url] = useIsExternalRoute(goto);\n const newTab = 'newTab' in behavior ? behavior.newTab : null;\n const rel = 'rel' in behavior ? behavior.rel : undefined;\n\n const openNewWindowProps =\n newTab === 'true'\n ? {\n rel: rel,\n target: '_blank',\n }\n : {};\n\n const buttonProps = omit(\n [\n 'actions',\n 'buttonId',\n 'ribbonId',\n 'index',\n 'handlePlayVideoClick',\n 'handleSetVisibilityClick',\n 'handleConfigureClick',\n 'handleAddToBasketClick',\n 'handleNavigateClick',\n 'handleAnalytics',\n 'ribbonList',\n 'glyph',\n ],\n props,\n );\n\n return (\n }\n >\n {label}\n \n );\n};\n\nPureCallToAction.displayName = 'CallToAction';\n\nexport default callToAction(PureCallToAction);\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 { useAdd, KnowledgeType } from '@uds/reactive-knowledge';\nimport { useIntl } from 'react-intl';\n\nexport type ShowToast = (messageId: string, type?: KnowledgeType) => void;\n\nexport default function useShowToast(): ShowToast {\n const add = useAdd();\n const intl = useIntl();\n return (message: string, type: KnowledgeType = KnowledgeType.SMIRK) => {\n add({\n type,\n message: intl.formatMessage({ id: message }),\n });\n };\n}\n","import { Http, Method } from '@ux/drivers';\nimport { setCookie } from '@uds/cookies';\nimport { CreateBasket } from 'core/basket';\nimport makeDriver from 'infrastructure/drivers/json';\n\nconst createBasket: CreateBasket = async (brandId: string) => {\n const driver: Http = makeDriver();\n\n const response = await driver({\n url: '/api/basket/api/v2/baskets',\n method: Method.POST,\n headers: {\n 'X-Tenant': brandId,\n },\n });\n\n const basketId = (await response.body.id) ?? null;\n if (basketId != null) {\n setCookie('basket', basketId);\n }\n\n return basketId;\n};\n\nexport default createBasket;\n","import decode from 'jwt-decode';\nimport { Http, Method } from '@ux/drivers';\nimport { getCookie } from '@uds/cookies';\nimport { AddToBasket } from 'core/basket';\nimport makeDriver from 'infrastructure/drivers/json';\nimport { getLanguageCookie } from 'domain/selectors/common';\n\nimport createBasket from './createBasket';\n\ntype CookieDecoded =\n | {\n basketId: string;\n }\n | {\n [key: string]: never;\n };\n\nconst makeAddToBasket = (brandId: string): AddToBasket => {\n const driver: Http = makeDriver();\n\n const getBaskedId = () => {\n const cookie = getCookie('basket');\n let basketId;\n\n try {\n const cookieDecoded: CookieDecoded = cookie != null ? decode(cookie) : {};\n if (cookieDecoded.basketId != null) {\n basketId = cookieDecoded.basketId;\n return basketId;\n }\n return createBasket(brandId);\n } catch (e: unknown) {\n basketId = cookie;\n return basketId;\n }\n };\n\n return async ({ items }) => {\n const localeCode = getLanguageCookie();\n const basketId = await getBaskedId();\n\n return driver({\n url: `/api/basket/api/v2/baskets/${basketId}/items?localeCode=${localeCode}`,\n method: Method.POST,\n data: { items },\n headers: {\n 'X-Tenant': brandId,\n },\n });\n };\n};\n\nexport default makeAddToBasket;\n","import { useMutation } from 'react-query';\nimport { useBrandId } from '@ux/whitelabel';\nimport { useRefreshBasketCount } from '@uds/bookends';\nimport { KnowledgeType } from '@uds/reactive-knowledge';\nimport makeAddToBasket from 'infrastructure/basket/addToBasket';\nimport { AddProductToBasketArgs } from 'core/basket';\n\nimport useShowToast from '../reactive-knowledge/useShowToast';\n\ninterface AddProductToBasketProps {\n handleAnalytics: () => void;\n postActionNavigate: () => void;\n}\n\nconst useAddProductToBasket = ({ postActionNavigate, handleAnalytics }: AddProductToBasketProps) => {\n const brandId = useBrandId();\n const showToast = useShowToast();\n const refetchBasket = useRefreshBasketCount();\n const addToBasket = (items: Array) => {\n handleAnalytics();\n return makeAddToBasket(brandId)({ items });\n };\n\n return useMutation(addToBasket, {\n onError: () => {\n showToast('usf.addToBasket.failure', KnowledgeType.ERK);\n },\n onSuccess: () => {\n refetchBasket();\n showToast('usf.addToBasket.success');\n postActionNavigate();\n },\n });\n};\n\nexport default useAddProductToBasket;\n","import { useHistory } from 'react-router';\nimport { useWindow } from '@uds/hooks';\nimport { isInternalUrl } from 'domain/url';\nimport { useOrderProcessUrl } from 'domain/selectors/common';\n\nconst usePostActionNavigate = (postAction?: { type: string; url?: string }) => {\n const type = postAction?.type;\n const url = postAction?.url;\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;\n","import { Dispatch, useEffect } from 'react';\nimport { QueryStatus } from 'react-query';\nimport { Status } from '@uds/button';\nimport { Product } from '@uds/product';\nimport { AddProductToBasketArgs } from 'core/basket';\nimport { AddToBasketCta, BehaviorType } from 'core/ribbons/cta';\nimport useAddProductToBasket from 'application/actions/cta/useAddProductToBasket';\nimport usePostActionNavigate from 'application/actions/cta/usePostActionNavigate';\n\nconst statusMap: Record = {\n idle: Status.DEFAULT,\n loading: Status.PENDING,\n success: Status.SUCCESS,\n error: Status.FAILURE,\n};\n\ninterface HandleAddToBasketClick {\n product?: Product;\n behavior?: BehaviorType;\n setAddingStatus: Dispatch;\n handleAnalytics: () => void;\n postAction?: {\n type: string;\n url?: string;\n };\n}\n\nexport default ({ product, setAddingStatus, handleAnalytics, postAction }: HandleAddToBasketClick) => {\n const postActionNavigate = usePostActionNavigate(postAction);\n const { mutateAsync: addToBasket, status } = useAddProductToBasket({\n postActionNavigate,\n handleAnalytics,\n });\n\n useEffect(() => {\n let timeoutRef: ReturnType;\n setAddingStatus(statusMap[status]);\n\n if (status === 'error' || status === 'success') {\n timeoutRef = setTimeout(() => {\n setAddingStatus(Status.DEFAULT);\n }, 1000);\n }\n\n return () => {\n clearTimeout(timeoutRef);\n };\n }, [status, setAddingStatus]);\n\n return ({ behavior }: { behavior?: AddToBasketCta }) => {\n const items: Array = [];\n items.push({\n skuId: product?.defaultSkuId ?? behavior?.productId,\n quantity: 1,\n term: behavior?.pricingTier?.term,\n paymentInterval: behavior?.pricingTier?.paymentInterval,\n });\n\n addToBasket(items);\n };\n};\n","import { useWindow } from '@uds/hooks';\nimport { ConfigureProductCta } from 'core/ribbons/cta';\n\nimport { formatPricingTier } from './utils';\n\ninterface Props {\n behavior?: ConfigureProductCta;\n}\n\nexport default () => {\n const window = useWindow();\n\n return ({ behavior }: Props) => {\n const tier = formatPricingTier(behavior?.pricingTier);\n const productId = behavior?.productId;\n const query = new URLSearchParams();\n\n if (productId != null) {\n query.append('productId', productId);\n }\n\n if (tier != null) {\n query.append('pricingTier', tier);\n }\n\n const q = query.toString();\n window.location.href = `/configure?${q}`;\n };\n};\n","import { ecommerce } from '@uds/tagmg';\nimport { selectors as productSelectors } from '@uds/product';\nimport { GetProductData } from 'core/cta';\nimport { getLanguageCookie } from 'domain/selectors/common';\n\nconst sendProductClicked = ({\n productId,\n list,\n getProductData,\n}: {\n list: string;\n productId?: string | null;\n getProductData: GetProductData;\n}) => {\n const locale = getLanguageCookie();\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;\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;\n","import { dispatchFBEvent, ecommerce } from '@uds/tagmg';\nimport { selectors as productSelectors } from '@uds/product';\nimport { GetProductData } from 'core/cta';\nimport { getLanguageCookie } from 'domain/selectors/common';\nimport { dispatchGA4Event } from 'infrastructure/ga4';\n\nconst sendProductOnAddToBasket = ({\n productId,\n list,\n getProductData,\n currency,\n brandId,\n term,\n}: {\n list: string;\n productId?: string | null;\n getProductData: GetProductData;\n currency: string;\n brandId: string;\n term?: number | null;\n}) => {\n const locale = getLanguageCookie();\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: true,\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 // Send GA4 ecommerce data\n const items = [{\n 'item_name': product.name,\n 'item_id': product.id,\n 'item_group_id': product.id,\n 'item_brand': brandId,\n 'item_category': product.categoryName,\n 'item_variant': `${product.name} ${term ?? product.defaultPrice?.term}`,\n 'currency': currency,\n 'price': price,\n 'quantity': 1,\n }];\n dispatchGA4Event('add_to_cart', { items });\n });\n};\n\nexport default sendProductOnAddToBasket;\n","import { Ecommerce, ecommerce } from '@uds/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 { useState, Suspense, lazy, ElementType } from 'react';\nimport { Status } from '@uds/button';\nimport { Product } from '@uds/product';\nimport { BehaviorType } from 'core/ribbons/cta';\nimport { Behavior } from 'domain/constants/callToAction';\nimport { useExternalRoutes } from 'domain/selectors/common';\n\nimport {\n useHandleAddToBasketClick,\n useHandleConfigureClick,\n handlePlayVideoClick,\n useHandleAnalytics,\n useHandleSetVisibilityClick,\n} from './callToActionHandlers';\n\nconst VideoModal = lazy(() => import('presentation/components/modal/Video'));\n\ninterface Props {\n id?: string;\n ribbonId?: string;\n product?: Product;\n behavior?: BehaviorType;\n [key: string]: any;\n}\n\nexport default function (Component: ElementType) {\n return function CallToActionWrapper({ id, ribbonId, behavior, product, ...props }: Props) {\n const [addingStatus, setAddingStatus] = useState(Status.DEFAULT);\n const [isVideoModalOpen, setIsVideoModalOpen] = useState(false);\n const externalRoutes = useExternalRoutes();\n const handleAnalytics = useHandleAnalytics({ ribbonId });\n const handleAddToBasketClick = useHandleAddToBasketClick({\n product,\n setAddingStatus,\n handleAnalytics: () => handleAnalytics({ behavior }),\n postAction: behavior != null && 'postAction' in behavior ? behavior.postAction : undefined,\n });\n const handleConfigureClick = useHandleConfigureClick();\n const handleSetVisibilityClick = useHandleSetVisibilityClick();\n // add an analytics prefixed `id` to the cta if required\n const ctaId = behavior?.analytics?.linkAttribution == null ? id : `usf-cta-${behavior.analytics.linkAttribution}`;\n const actionType = behavior?.type;\n const toggleVideoModal = () => {\n return setIsVideoModalOpen((isOpen) => !isOpen);\n };\n\n const handleClick = (() => {\n if (actionType === Behavior.ADD_TO_BASKET) {\n return () => handleAddToBasketClick({ behavior });\n }\n if (actionType === Behavior.CONFIGURE) {\n return () => handleConfigureClick({ behavior });\n }\n if (actionType === Behavior.PLAY_VIDEO) {\n return () => handlePlayVideoClick({ toggleVideoModal });\n }\n if (actionType === Behavior.SET_VISIBILITY) {\n return () => handleSetVisibilityClick({ behavior });\n }\n if (actionType === Behavior.NAVIGATION) {\n return () => handleAnalytics({ behavior });\n }\n\n return () => null;\n })();\n\n if (actionType === Behavior.PLAY_VIDEO) {\n return (\n <>\n \n {isVideoModalOpen && (\n \n )}\n \n \n \n );\n }\n\n return (\n \n );\n };\n}\n","import { useCurrency } from '@ux/currency';\nimport { useBrandId } from '@ux/whitelabel';\nimport { Analytics } from 'core/ribbons/cta';\nimport { Behavior } from 'domain/constants/callToAction';\nimport { sendProductClicked, sendProductOnAddToBasket, sendPromotion } from 'application/actions/cta';\nimport { getProductData } from 'infrastructure/cta';\nimport { createRibbonName } from 'domain/transformers/ribbons';\nimport { useRibbon } from 'domain/selectors/ribbons';\n\ninterface Props {\n ribbonId?: string;\n behavior?: {\n type: Behavior;\n analytics?: Analytics;\n productId?: string | null;\n pricingTier?: {\n term?: number | null;\n };\n };\n}\n\nexport default ({ ribbonId }: Props) => {\n const currency = useCurrency();\n const brandId = useBrandId();\n const ribbon = useRibbon(ribbonId);\n const list = createRibbonName(ribbon?.type, ribbon?.props?.name);\n\n return ({ behavior }: Props) => {\n const ctaType = behavior?.type;\n const type = behavior?.analytics?.type;\n const term = behavior?.pricingTier?.term;\n\n if (type === 'PRODUCT') {\n const productId = behavior?.analytics?.productId;\n sendProductClicked({\n productId,\n list,\n getProductData,\n });\n } else if (type === 'PROMOTION') {\n const promotion = behavior?.analytics?.promotion;\n sendPromotion({ promotion });\n } else if (ctaType === 'addToBasket') {\n const productId = behavior?.productId;\n sendProductOnAddToBasket({ productId, list, getProductData, currency, brandId, term });\n }\n };\n};\n","export const formatPricingTier = (tier: { paymentInterval?: number; term?: number } | undefined) => {\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","import { VisibilitySetCta } from 'core/ribbons/cta';\nimport { useVisibilitySetsAction } from 'presentation/context/VisibilitySets';\n\nexport default () => {\n const setVisibility = useVisibilitySetsAction();\n\n return ({ behavior }: { behavior?: VisibilitySetCta }) => {\n if (setVisibility != null) {\n setVisibility(behavior?.visibilitySet);\n }\n };\n};\n","export default ({ toggleVideoModal }: { toggleVideoModal: () => void }) => {\n toggleVideoModal();\n};\n","import { BreakpointProps } from '@ux/responsive';\nimport { ImagesWithAspectRatios, ImageWithAspectRatios } from 'core/ribbons/primitives';\nimport { ImageAspectRatio } from 'domain/constants/imageAspectRatio';\nimport { Dimension } from 'domain/constants/dimension';\nimport findResponsiveItem from 'presentation/utils/findResponsiveItem';\n\n/**\n * If imagesWithAspectRatios is present in ribbon props, this should be used.\n * This array follows the existing standard of [mobile,tablet,desktop] structure.\n * Where imagesWithAspectRatios is empty/omitted, the existing imageUrl and imageAspectRatio should be used.\n */\n\ntype ImageProps = {\n imageUrl?: string;\n imageAspectRatio?: ImageAspectRatio;\n preserveDimension?: Dimension | string;\n};\n\nexport default (\n breakpoints: BreakpointProps,\n image: ImageProps,\n imagesWithAspectRatios: ImagesWithAspectRatios | undefined,\n): ImageWithAspectRatios => {\n const { imageUrl: url, imageAspectRatio, preserveDimension } = image;\n\n if (imagesWithAspectRatios != null && imagesWithAspectRatios.length > 0) {\n const activeImageWithAspectRatios = findResponsiveItem(breakpoints, imagesWithAspectRatios);\n return activeImageWithAspectRatios || {};\n }\n\n return {\n url,\n imageAspectRatio,\n preserveDimension,\n };\n};\n","import { gu2px, useTheme } from '@uds/theme-utils';\nimport * as React from 'react';\nimport './illustration.stylesheet_1xw0u3m.css';\nimport { jsx } from 'react/jsx-runtime';\n\nfunction memoize(fn) {\n var cache = {};\n return function (arg) {\n if (cache[arg] === undefined) cache[arg] = fn(arg);\n return cache[arg];\n };\n}\n\nvar reactPropsRegex = /^((children|dangerouslySetInnerHTML|key|ref|autoFocus|defaultValue|defaultChecked|innerHTML|suppressContentEditableWarning|suppressHydrationWarning|valueLink|accept|acceptCharset|accessKey|action|allow|allowUserMedia|allowPaymentRequest|allowFullScreen|allowTransparency|alt|async|autoComplete|autoPlay|capture|cellPadding|cellSpacing|challenge|charSet|checked|cite|classID|className|cols|colSpan|content|contentEditable|contextMenu|controls|controlsList|coords|crossOrigin|data|dateTime|decoding|default|defer|dir|disabled|disablePictureInPicture|download|draggable|encType|form|formAction|formEncType|formMethod|formNoValidate|formTarget|frameBorder|headers|height|hidden|high|href|hrefLang|htmlFor|httpEquiv|id|inputMode|integrity|is|keyParams|keyType|kind|label|lang|list|loading|loop|low|marginHeight|marginWidth|max|maxLength|media|mediaGroup|method|min|minLength|multiple|muted|name|nonce|noValidate|open|optimum|pattern|placeholder|playsInline|poster|preload|profile|radioGroup|readOnly|referrerPolicy|rel|required|reversed|role|rows|rowSpan|sandbox|scope|scoped|scrolling|seamless|selected|shape|size|sizes|slot|span|spellCheck|src|srcDoc|srcLang|srcSet|start|step|style|summary|tabIndex|target|title|type|useMap|value|width|wmode|wrap|about|datatype|inlist|prefix|property|resource|typeof|vocab|autoCapitalize|autoCorrect|autoSave|color|inert|itemProp|itemScope|itemType|itemID|itemRef|on|results|security|unselectable|accentHeight|accumulate|additive|alignmentBaseline|allowReorder|alphabetic|amplitude|arabicForm|ascent|attributeName|attributeType|autoReverse|azimuth|baseFrequency|baselineShift|baseProfile|bbox|begin|bias|by|calcMode|capHeight|clip|clipPathUnits|clipPath|clipRule|colorInterpolation|colorInterpolationFilters|colorProfile|colorRendering|contentScriptType|contentStyleType|cursor|cx|cy|d|decelerate|descent|diffuseConstant|direction|display|divisor|dominantBaseline|dur|dx|dy|edgeMode|elevation|enableBackground|end|exponent|externalResourcesRequired|fill|fillOpacity|fillRule|filter|filterRes|filterUnits|floodColor|floodOpacity|focusable|fontFamily|fontSize|fontSizeAdjust|fontStretch|fontStyle|fontVariant|fontWeight|format|from|fr|fx|fy|g1|g2|glyphName|glyphOrientationHorizontal|glyphOrientationVertical|glyphRef|gradientTransform|gradientUnits|hanging|horizAdvX|horizOriginX|ideographic|imageRendering|in|in2|intercept|k|k1|k2|k3|k4|kernelMatrix|kernelUnitLength|kerning|keyPoints|keySplines|keyTimes|lengthAdjust|letterSpacing|lightingColor|limitingConeAngle|local|markerEnd|markerMid|markerStart|markerHeight|markerUnits|markerWidth|mask|maskContentUnits|maskUnits|mathematical|mode|numOctaves|offset|opacity|operator|order|orient|orientation|origin|overflow|overlinePosition|overlineThickness|panose1|paintOrder|pathLength|patternContentUnits|patternTransform|patternUnits|pointerEvents|points|pointsAtX|pointsAtY|pointsAtZ|preserveAlpha|preserveAspectRatio|primitiveUnits|r|radius|refX|refY|renderingIntent|repeatCount|repeatDur|requiredExtensions|requiredFeatures|restart|result|rotate|rx|ry|scale|seed|shapeRendering|slope|spacing|specularConstant|specularExponent|speed|spreadMethod|startOffset|stdDeviation|stemh|stemv|stitchTiles|stopColor|stopOpacity|strikethroughPosition|strikethroughThickness|string|stroke|strokeDasharray|strokeDashoffset|strokeLinecap|strokeLinejoin|strokeMiterlimit|strokeOpacity|strokeWidth|surfaceScale|systemLanguage|tableValues|targetX|targetY|textAnchor|textDecoration|textRendering|textLength|to|transform|u1|u2|underlinePosition|underlineThickness|unicode|unicodeBidi|unicodeRange|unitsPerEm|vAlphabetic|vHanging|vIdeographic|vMathematical|values|vectorEffect|version|vertAdvY|vertOriginX|vertOriginY|viewBox|viewTarget|visibility|widths|wordSpacing|writingMode|x|xHeight|x1|x2|xChannelSelector|xlinkActuate|xlinkArcrole|xlinkHref|xlinkRole|xlinkShow|xlinkTitle|xlinkType|xmlBase|xmlns|xmlnsXlink|xmlLang|xmlSpace|y|y1|y2|yChannelSelector|z|zoomAndPan|for|class|autofocus)|(([Dd][Aa][Tt][Aa]|[Aa][Rr][Ii][Aa]|x)-.*))$/; // https://esbench.com/bench/5bfee68a4cd7e6009ef61d23\n\nvar index = memoize(function (prop) {\n return reactPropsRegex.test(prop) || prop.charCodeAt(0) === 111\n /* o */ && prop.charCodeAt(1) === 110\n /* n */ && prop.charCodeAt(2) < 91;\n}\n/* Z+1 */);\n\nfunction cx() {\n for (var _len = arguments.length, classNames = new Array(_len), _key = 0; _key < _len; _key++) {\n classNames[_key] = arguments[_key];\n }\n return classNames.filter(Boolean).join(' ');\n}\n\n/**\n * This file contains an runtime version of `styled` component. Responsibilities of the component are:\n * - returns ReactElement based on HTML tag used with `styled` or custom React Component\n * - injects classNames for the returned component\n * - injects CSS variables used to define dynamic styles based on props\n */\n\n// Workaround for rest operator\nconst restOp = (obj, keysToExclude) => Object.keys(obj).filter(prop => !keysToExclude.includes(prop)).reduce((acc, curr) => Object.assign(acc, {\n [curr]: obj[curr]\n}), {}); // rest operator workaround\n\nconst warnIfInvalid = (value, componentName) => {\n if (process.env.NODE_ENV !== 'production') {\n if (typeof value === 'string' ||\n // eslint-disable-next-line no-self-compare\n typeof value === 'number' && isFinite(value)) {\n return;\n }\n const stringified = typeof value === 'object' ? JSON.stringify(value) : String(value); // eslint-disable-next-line no-console\n\n console.warn(`An interpolation evaluated to '${stringified}' in the component '${componentName}', which is probably a mistake. You should explicitly cast or transform the value to a string.`);\n }\n}; // If styled wraps custom component, that component should have className property\n\nfunction styled(tag) {\n return options => {\n if (process.env.NODE_ENV !== 'production') {\n if (Array.isArray(options)) {\n // We received a strings array since it's used as a tag\n throw new Error('Using the \"styled\" tag in runtime is not supported. Make sure you have set up the Babel plugin correctly. See https://github.com/callstack/linaria#setup');\n }\n }\n const render = (props, ref) => {\n const {\n as: component = tag,\n class: className\n } = props;\n const rest = restOp(props, ['as', 'class']);\n let filteredProps; // Check if it's an HTML tag and not a custom element\n\n if (typeof component === 'string' && component.indexOf('-') === -1) {\n filteredProps = {}; // eslint-disable-next-line guard-for-in\n\n for (const key in rest) {\n if (key === 'as' || index(key)) {\n // Don't pass through invalid attributes to HTML elements\n filteredProps[key] = rest[key];\n }\n }\n } else {\n filteredProps = rest;\n }\n filteredProps.ref = ref;\n filteredProps.className = cx(filteredProps.className || className, options.class);\n const {\n vars\n } = options;\n if (vars) {\n const style = {}; // eslint-disable-next-line guard-for-in\n\n for (const name in vars) {\n const variable = vars[name];\n const result = variable[0];\n const unit = variable[1] || '';\n const value = typeof result === 'function' ? result(props) : result;\n warnIfInvalid(value, options.name);\n style[`--${name}`] = `${value}${unit}`;\n }\n filteredProps.style = Object.assign(style, filteredProps.style);\n }\n if (tag.__linaria && tag !== component) {\n // If the underlying tag is a styled component, forward the `as` prop\n // Otherwise the styles from the underlying component will be ignored\n filteredProps.as = component;\n return /*#__PURE__*/React.createElement(tag, filteredProps);\n }\n return /*#__PURE__*/React.createElement(component, filteredProps);\n };\n const Result = React.forwardRef ? /*#__PURE__*/React.forwardRef(render) :\n // React.forwardRef won't available on older React versions and in Preact\n // Fallback to a innerRef prop in that case\n props => {\n const rest = restOp(props, ['innerRef']);\n return render(rest, props.innerRef);\n };\n Result.displayName = options.name; // These properties will be read by the babel plugin for interpolation\n\n Result.__linaria = {\n className: options.class,\n extends: tag\n };\n return Result;\n };\n}\nvar styled$1 = process.env.NODE_ENV !== 'production' ? new Proxy(styled, {\n get(o, prop) {\n return o(prop);\n }\n}) : styled;\n\nconst getSize = _ref => {\n let {\n iconSize,\n iconName,\n themeSpacing\n } = _ref;\n if (iconSize == null) {\n // if banner add more spacing\n const gu = /^banner/.test(iconName) ? 8 : 2;\n return `${gu2px(gu, themeSpacing)}`;\n }\n return iconSize;\n};\nconst Root = /*#__PURE__*/styled$1(\"div\")({\n name: \"Root\",\n class: \"r14nixs\",\n vars: {\n \"r14nixs-0\": [props => getSize(props), \"px\"]\n }\n});\nconst classNames = {\n remote: \"r1ccyfzc\"\n};\n\nconst baseUrl = 'https://paintbrush.heg-cp.com';\nconst createPaintbrushUrl = (icon, theme) => {\n const params = new URLSearchParams();\n Object.keys(theme.palette.illustrations).forEach(key => {\n params.append(`palette[${key}]`, theme.palette.illustrations[key]);\n });\n params.append('iconSet', theme.iconSet);\n return `${baseUrl}/illustrations/${icon}.svg?${params.toString()}`;\n};\nvar createPaintbrushUrl$1 = createPaintbrushUrl;\n\nconst Illustration = _ref => {\n let {\n icon,\n alt,\n size\n } = _ref;\n const {\n theme\n } = useTheme();\n return /*#__PURE__*/jsx(Root, {\n iconName: icon,\n iconSize: size,\n themeSpacing: theme.spacing,\n children: /*#__PURE__*/jsx(\"img\", {\n src: createPaintbrushUrl$1(icon, theme),\n alt: alt,\n className: classNames.remote\n // @ts-ignore: This is sort of supported\n ,\n importance: \"low\",\n loading: \"lazy\"\n })\n });\n};\nvar Illustration$1 = Illustration;\n\nexport { Illustration$1 as Illustration, createPaintbrushUrl$1 as createPaintbrushUrl, Illustration$1 as default };\n","import React, { ComponentType } from 'react';\nimport { Heading04, BodyCopy } from '@uds/typography';\nimport PaddingBox from '@uds/padding-box';\nimport Illustration from '@uds/illustrations';\nimport { useBreakpoints } from '@ux/responsive';\nimport { useTheme, Colorway } from '@uds/theme-utils';\nimport { Size } from '@uds/button';\nimport { CTA } from 'core/ribbons/cta';\nimport { ImagesWithAspectRatios } from 'core/ribbons/primitives';\nimport createImageAlt from 'presentation/utils/createImageAlt';\nimport urlLanguageParse from 'presentation/utils/urlLanguageParse';\nimport withLanguage from 'presentation/hocs/withLanguage';\nimport { isNilOrEmpty } from 'presentation/utils/generalUtils';\nimport getActiveImageWithAspectRatios from 'presentation/utils/getActiveImageWithAspectRatios';\nimport Shortcode, { ShortcodeProps } from 'components/Shortcode';\nimport CallToAction from 'presentation/components/common/CallToAction';\n\nimport useStylesheet, { getClassNames } from './Pillar.stylesheet';\n\nexport interface OuterProps {\n hBaseline: number;\n illustration?: string;\n imageUrl?: string;\n imagesWithAspectRatios?: ImagesWithAspectRatios;\n title?: ShortcodeProps;\n body?: ShortcodeProps;\n colorway: Colorway;\n ctas?: Array;\n ribbonId?: string;\n}\nexport interface InnerProps extends OuterProps {\n currentLanguage: string;\n}\n\nexport const PurePillar = ({\n hBaseline,\n illustration,\n imageUrl,\n imagesWithAspectRatios,\n title,\n body,\n colorway,\n currentLanguage,\n ctas,\n ribbonId,\n}: InnerProps) => {\n const { theme } = useTheme();\n const breakpoints = useBreakpoints();\n const { isMinSm } = breakpoints;\n const { styles } = useStylesheet({\n theme,\n colorway,\n ctas,\n });\n const activeImage = getActiveImageWithAspectRatios(\n breakpoints,\n {\n imageUrl,\n },\n imagesWithAspectRatios,\n );\n const showImage = (url: string | undefined): url is string => {\n return isNilOrEmpty(illustration) && !isNilOrEmpty(url);\n };\n const showIllustration = (illustration: string | undefined): illustration is string => !isNilOrEmpty(illustration);\n const hasTitle = !isNilOrEmpty(title);\n const hasBody = !isNilOrEmpty(body);\n\n const classNames = getClassNames();\n return (\n \n
\n {showIllustration(illustration) ? (\n \n ) : null}\n {showImage(activeImage.url) ? (\n
\n \n
\n ) : null}\n
\n
\n {hasTitle && (\n \n \n \n )}\n {hasBody && (\n \n \n \n )}\n {ctas == null ? null : (\n
\n {ctas.map((cta, i) => (\n
\n \n
\n ))}\n
\n )}\n
\n
\n );\n};\n\nPurePillar.displayName = 'Pillar';\n\nexport default withLanguage(PurePillar) as ComponentType;\n","import { useStyles } from '@team-griffin/stylr';\nimport { gu2px, Theme, Colorway } from '@uds/theme-utils';\nimport { useBreakpoints } from '@ux/responsive';\nimport { CTA } from 'core/ribbons/cta';\nimport { css } from 'linaria';\n\nexport const getClassNames = () => {\n return {\n root: css`\n display: flex;\n `,\n };\n};\nexport default ({ theme: { spacing }, ctas }: { theme: Theme; colorway: Colorway; ctas?: Array }) => {\n const { isMinSm, isMinLg } = useBreakpoints();\n const hasMultipleCtas = (ctas ?? []).length > 1;\n\n return useStyles(\n {\n default: {\n content: {\n marginLeft: gu2px(3, spacing),\n flex: 1,\n flexBasis: 'auto',\n overflow: 'hidden',\n wordWrap: 'break-word',\n },\n illustration: {\n width: gu2px(10, spacing),\n },\n imageContainer: {\n width: gu2px(10, spacing),\n overflow: 'hidden',\n },\n image: {\n height: gu2px(10, spacing),\n position: 'relative',\n left: '50%',\n transform: 'translateX(-50%)',\n },\n ctas: {\n overflow: 'hidden',\n marginTop: gu2px(2, spacing),\n },\n cta: {\n marginTop: gu2px(1, spacing),\n },\n },\n\n isMinSm: {\n illustration: {\n width: gu2px(14, spacing),\n },\n imageContainer: {\n width: gu2px(14, spacing),\n overflow: 'hidden',\n },\n image: {\n height: gu2px(14, spacing),\n },\n },\n\n isMinLg: {\n illustration: {\n width: gu2px(16, spacing),\n },\n imageContainer: {\n width: gu2px(16, spacing),\n overflow: 'hidden',\n },\n image: {\n height: gu2px(16, spacing),\n },\n content: {\n marginLeft: gu2px(4, spacing),\n },\n },\n spaceCtas: {\n cta: {\n marginRight: gu2px(1, spacing),\n display: 'inline-block',\n },\n },\n },\n {\n isMinSm,\n isMinLg,\n spaceCtas: isMinSm && hasMultipleCtas,\n },\n );\n};\n","import React, { ComponentType } from 'react';\nimport { Container } from '@uds/grid';\nimport { useTheme } from '@uds/theme-utils';\nimport { CTA } from 'core/ribbons/cta';\nimport { ImagesWithAspectRatios } from 'core/ribbons/primitives';\nimport { RibbonProps, Type } from 'domain/constants/ribbons';\nimport visibilitySet from 'presentation/hocs/visibilitySet';\nimport errorBoundary from 'presentation/hocs/errorBoundary';\nimport Ribbon from 'components/ribbons/Ribbon';\nimport { ShortcodeProps } from 'presentation/components/Shortcode';\n\nimport Pillar from './Pillar';\nimport useStylesheet from './PillarsRecumbent.stylesheet';\n\ntype PillarProps = {\n illustration?: string;\n imageUrl?: string;\n preserveDimension?: string;\n imagesWithAspectRatios?: ImagesWithAspectRatios;\n title?: ShortcodeProps;\n body?: ShortcodeProps;\n ctas?: Array;\n};\n\ninterface OuterProps extends RibbonProps {\n pillars: Array;\n}\n\ndeclare const i: number;\ndeclare const pillar: PillarProps;\n\nexport const PurePillarsRecumbent = ({ id, hBaseline = 3, layout, pillars, colorway, loading, name }: OuterProps) => {\n const { theme } = useTheme();\n const { styles } = useStylesheet({ theme });\n return (\n \n \n
\n \n \n \n
\n
\n
\n );\n};\n\nPurePillarsRecumbent.displayName = 'PillarsRecumbent';\n\nexport default visibilitySet(errorBoundary(PurePillarsRecumbent)) as ComponentType;\n","import { useStyles } from '@team-griffin/stylr';\nimport { useBreakpoints } from '@uds/responsive';\nimport { gu2px, Theme } from '@uds/theme-utils';\n\nexport default ({ theme: { spacing } }: { theme: Theme }) => {\n const { isMinSm, isMinMd } = useBreakpoints();\n return useStyles(\n {\n default: {\n grid: {\n display: 'grid',\n columnGap: gu2px(2, spacing),\n rowGap: gu2px(1, spacing),\n },\n },\n\n isMinSm: {\n grid: {\n rowGap: gu2px(2, spacing),\n },\n },\n\n isMinMd: {\n grid: {\n gridTemplateColumns: 'repeat(2, 1fr)',\n },\n },\n },\n {\n isMinSm,\n isMinMd,\n },\n );\n};\n","import PillarsRecumbent from './PillarsRecumbent';\n\nexport default PillarsRecumbent;\n"],"sourceRoot":""}