{"version":3,"sources":["webpack:///./presentation/components/ribbons/tiers/DesktopTier.tsx","webpack:///src/presentation/components/ribbons/tiers/DesktopTier.stylesheet.ts","webpack:///./presentation/components/ribbons/tiers/Desktop.tsx","webpack:///src/presentation/components/ribbons/tiers/Desktop.stylesheet.ts","webpack:///./presentation/components/Shortcode/PendingShortcode.tsx","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/Shortcode.tsx","webpack:///./presentation/components/Shortcode/index.ts","webpack:///./domain/constants/alignment.ts","webpack:///./presentation/utils/urlLanguageParse.ts","webpack:///./presentation/hocs/withLanguage.ts","webpack:///./presentation/utils/createImageAlt.ts","webpack:///./domain/constants/callToAction.ts","webpack:///./presentation/hocs/callToAction.js","webpack:///./presentation/hocs/callToActionHandlers/handleAnalytics.ts","webpack:///./presentation/hocs/callToActionHandlers/handleAddToBasketClick.ts","webpack:///./presentation/hocs/callToActionHandlers/handleNavigateClick.ts","webpack:///./presentation/hocs/callToActionHandlers/handleApplyVoucherClick.ts","webpack:///./presentation/hocs/callToActionHandlers/handleConfigureClick.ts","webpack:///./presentation/hocs/callToActionHandlers/handleSetVisibilityClick.ts","webpack:///./presentation/hocs/callToActionHandlers/handlePlayVideoClick.ts","webpack:///../node_modules/@ux/badge/dist/es/badge.js","webpack:///./presentation/utils/rgba.js","webpack:///./crosscutting/ramda.ts"],"names":["enhance","pureEnhance","hocs","withLanguage","withHover","callToAction","hooks","withProps","ownerProps","hasGlyph","isNotNilOrEmpty","glyph","hasImage","imageUrl","hasBadge","badge","badgeKind","r","Colorway","DARK","HIGHLIGHT","BadgeKind","PRIMARY","hover","typography","contrastColor","getContrastColor","theme","useStyles","default","root","display","alignItems","height","percentage","position","textAlign","fontFamily","content","color","getTitleColor","width","borderWidth","outline","cursor","paddingTop","gu2px","paddingBottom","cssSides","Side","longhand","style","backgroundColor","transition","textDecoration","text","overflow","textOverflow","whiteSpace","icon","justifyContent","marginRight","spacing","image","minWidth","objectFit","objectPosition","marginLeft","selected","borderBottomColor","rgba","colorway","styles","label","behavior","handleClick","currentLanguage","externalRoutes","onClick","to","goto","data-selector","size","loading","src","urlLanguageParse","alt","createImageAlt","Boolean","Shortcode","against","code","flush","kind","PureDesktopTiers","id","ribbonId","links","tiers","className","link","key","i","layout","alignment","palette","opacify","overflowX","overflowY","marginBottom","modifier","Alignment","randomWidth","Math","floor","random","PendingShortcode","lines","elements","displayName","getColor","Against","LIGHT","NEUTRAL","primary","tertiary","Alt","RecursiveShortcode","rest","useTheme","Bold","fontWeight","fontStyle","Link","contentType","attributes","useAppConfig","analyticskey","TextButtonSize","INHERIT","rel","target","newTab","formatText","newline","formattedText","split","join","escapeShortCodes","string","reduce","prev","cur","nl2br","Text","ReactTooltip","lazy","TooltipShortcode","isMinLg","useBreakpoints","eventToggle","padding","cssTheme","CallToAction","fallback","tagName","useDefaultStyles","maxWidth","Glyph","Sup","List","OrderedList","ListItem","TickListItem","ProductPrice","PhoneNumber","map","element","JSON","stringify","props","getAgainst","Element","type","name","Italic","Tooltip","ShortcodeWrapper","url","language","length","parsedLanguage","toUpperCase","replace","BaseComponent","compose","connect","state","getCurrentLanguage","getImageName","str","match","formatName","Behavior","formatPricingTier","tier","paymentInterval","term","window","useWindow","buttonId","index","getExternalRoutes","ribbon","getRibbon","ribbonType","ribbonName","product","analytics","linkAttribution","ribbonList","createRibbonName","isNilOrEmpty","addingStatus","getAddingStatus","dispatch","bindActionCreators","addToBasket","applyVoucher","setVisibility","openReduxModal","signals","open","productClicked","promotionClicked","productAddToBasket","stateProps","dispatchProps","ownProps","actions","withHandlers","handleAnalytics","ctaType","list","productId","promotion","handleAddToBasketClick","postAction","pricingTier","productData","skuId","defaultSkuId","price","selectors","getPrice","includeTax","category","categoryName","handleNavigateClick","handleApplyVoucherClick","voucherCode","handleConfigureClick","query","URLSearchParams","append","q","toString","location","href","handleSetVisibilityClick","visibilitySet","handlePlayVideoClick","videoId","provider","route","params","ADD_TO_BASKET","APPLY_VOUCHER","CONFIGURE","PLAY_VIDEO","SET_VISIBILITY","NAVIGATION","Kind","_defineProperty","obj","value","Object","defineProperty","enumerable","configurable","writable","isAgainstPrimary","isAgainstPrimaryGradient","PRIMARY_GRADIENT","isAgainstHighlight","isAgainstNeutral","Badge","_ref","_reactCSS","_ref$theme","curvature","assign","A","X","lineHeight","primaryContrast","SECONDARY","grey04","grey10","SUCCESS","green01","WARNING","yellow01","ERROR","red01","highlightContrast","highlight","String","WEAK","borderRadius","STRONG","children","createElement","component","c","a","alpha","isNotEmpty","isNotNil","mapIndexed","rA","arr","fn"],"mappings":"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","file":"pex-static/40/67.144732615afd41192b38.chunk.js","sourcesContent":["import React, { ComponentType } from 'react';\nimport {\n withProps,\n} from '@team-griffin/rehook';\nimport Glyph from '@ux/glyphs';\nimport Shortcode, { ShortcodeProps } from 'components/Shortcode';\nimport Badge, { Kind as BadgeKind } from '@ux/badge';\nimport callToAction from 'presentation/hocs/callToAction';\nimport { DynamicLink } from '@ux/dynamic-link';\nimport { Colorway } from 'domain/constants/colorway';\nimport { isNotNilOrEmpty } from 'crosscutting/ramda';\nimport stylesheet, { Styles } from './DesktopTier.stylesheet';\nimport * as r from 'ramda';\nimport createImageAlt from 'presentation/utils/createImageAlt';\nimport urlLanguageParse from 'presentation/utils/urlLanguageParse';\nimport withLanguage from 'presentation/hocs/withLanguage';\nimport { withHover } from '@team-griffin/stylr';\nimport { Theme } from '@ux/theme-utils';\nimport pureEnhance from '@ux/pure-enhance';\n\ninterface OuterProps {\n ribbonId?: string,\n theme: Theme,\n colorway: Colorway,\n imageUrl?: string,\n badge?: ShortcodeProps,\n glyph?: string,\n selected?: boolean,\n behavior?: {\n goto: string,\n },\n label?: ShortcodeProps,\n externalRoutes: string[],\n}\n\nexport interface InnerProps extends OuterProps {\n styles: Styles,\n currentLanguage: string,\n hasGlyph: boolean,\n hasImage: boolean,\n hasBadge: boolean,\n badgeKind: BadgeKind,\n handleClick?: (evt?: any) => void,\n DynamicLink: ComponentType | string,\n hover: boolean,\n}\n\nexport const PureDesktopTier = ({\n theme,\n colorway,\n styles,\n glyph,\n imageUrl,\n label,\n behavior,\n badge,\n hasBadge,\n hasGlyph,\n hasImage,\n badgeKind,\n handleClick,\n currentLanguage,\n externalRoutes,\n}: InnerProps) => (\n \n \n \n \n \n \n \n \n \n \n \n\n \n \n \n\n \n \n \n \n \n \n \n \n);\n\nexport const enhance = pureEnhance(\n 'DesktopTier', {\n hocs: [\n withLanguage,\n withHover,\n callToAction,\n ],\n hooks: [\n withProps((ownerProps: OuterProps) => ({\n hasGlyph: isNotNilOrEmpty(ownerProps.glyph),\n hasImage: isNotNilOrEmpty(ownerProps.imageUrl),\n hasBadge: isNotNilOrEmpty(ownerProps.badge),\n badgeKind: r.ifElse(\n r.pipe(\n r.prop('colorway'),\n r.contains(r.__, [\n Colorway.DARK,\n Colorway.HIGHLIGHT,\n ]),\n ),\n r.always(BadgeKind.PRIMARY),\n r.always(BadgeKind.HIGHLIGHT),\n )(ownerProps),\n })),\n withProps(stylesheet),\n ],\n },\n);\n\nexport default enhance(PureDesktopTier);\n","import { useStyles } from '@team-griffin/stylr';\nimport { percentage } from '@ux/style-utils';\nimport { gu2px } from '@ux/theme-utils';\nimport { content } from '@ux/type-size';\nimport cssSides, { Side } from '@team-griffin/css-sides';\nimport longhand from '@team-griffin/css-longhand';\nimport { getContrastColor, getTitleColor } from 'presentation/utils/colorway';\nimport rgba from 'presentation/utils/rgba';\nimport { InnerProps } from './DesktopTier';\nimport { CSSProperties } from 'react';\n\nexport interface Styles {\n root: CSSProperties,\n badge:CSSProperties,\n image: CSSProperties,\n imageCropper: CSSProperties,\n icon: CSSProperties,\n text: CSSProperties,\n}\nexport default ({\n theme,\n colorway,\n selected,\n hover,\n}: InnerProps) => {\n const {\n spacing,\n typography,\n } = theme;\n\n const contrastColor = getContrastColor(theme, colorway);\n\n return useStyles({\n default: {\n root: {\n display: 'flex',\n alignItems: 'center',\n height: percentage(100),\n position: 'relative',\n textAlign: 'center',\n fontFamily: typography.display,\n ...content(typography),\n color: getTitleColor(theme, colorway),\n width: percentage(100),\n borderWidth: 0,\n outline: 0,\n cursor: 'pointer',\n paddingTop: gu2px(2, spacing),\n paddingBottom: gu2px(2, spacing),\n ...cssSides('padding', Side.X, 0),\n ...longhand('borderBottom', {\n width: 4,\n style: 'solid',\n color: 'transparent',\n }),\n backgroundColor: 'transparent',\n transition: 'border-bottom-color 0.3s ease-in-out',\n textDecoration: 'none',\n },\n text: {\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n },\n icon: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n width: gu2px(3, spacing),\n height: gu2px(3, spacing),\n color: contrastColor,\n marginRight: gu2px(1, spacing),\n },\n image: {\n width: gu2px(3, spacing),\n height: gu2px(3, spacing),\n minWidth: gu2px(3, spacing),\n objectFit: 'cover',\n objectPosition: 'center',\n },\n badge: {\n marginLeft: gu2px(1, spacing),\n },\n },\n\n selected: {\n root: {\n borderBottomColor: contrastColor,\n },\n },\n\n hover: {\n root: {\n borderBottomColor: rgba(getContrastColor(theme, colorway), 0.9),\n },\n },\n }, [\n { hover },\n { colorway },\n { selected },\n ]);\n};\n","import React from 'react';\nimport {\n withProps,\n} from '@team-griffin/rehook';\nimport Tier from './DesktopTier';\nimport { Container } from '@ux/grid';\nimport stylesheet, { Styles } from './Desktop.stylesheet';\nimport * as r from 'ramda';\nimport pureEnhance from '@ux/pure-enhance';\nimport { Theme } from '@ux/theme-utils';\nimport { Link } from './Tiers';\nimport { Colorway } from 'domain/constants/colorway';\nimport { Layout } from 'domain/constants/layout';\nimport Helmet from 'react-helmet';\n\n\ninterface OuterProps {\n theme: Theme,\n id: string,\n links: Link[],\n colorway: Colorway,\n selected: number,\n layout: Layout,\n externalRoutes: string[],\n}\nexport interface InnerProps extends OuterProps {\n styles: Styles,\n}\n\ndeclare const i: number;\ndeclare const link: Link;\n\nexport const PureDesktopTiers = ({\n id: ribbonId,\n theme,\n styles,\n links,\n colorway,\n selected,\n externalRoutes,\n}: InnerProps) => (\n
\n \n \n \n \n \n \n \n \n
\n \n \n \n \n);\n\nexport const enhance = pureEnhance(\n 'DesktopTiers', [\n withProps(stylesheet),\n ],\n);\n\nexport default enhance(PureDesktopTiers);\n","import { useStyles } from '@team-griffin/stylr';\nimport { modifier, opacify } from '@ux/style-utils';\nimport longhand from '@team-griffin/css-longhand';\nimport { Colorway } from 'domain/constants/colorway';\nimport { gu2px } from '@ux/theme-utils';\nimport cssSides, { Side } from '@team-griffin/css-sides';\nimport { Alignment } from 'domain/constants/alignment';\nimport { InnerProps } from './Desktop';\nimport { CSSProperties } from 'react';\n\nexport interface Styles {\n root: CSSProperties,\n tiers: CSSProperties,\n link: CSSProperties,\n}\n\nexport default ({\n theme,\n colorway,\n layout: {\n alignment,\n },\n}: InnerProps) => {\n const {\n spacing,\n palette,\n } = theme;\n\n return useStyles({\n default: {\n root: {\n },\n tiers: {\n display: 'flex',\n ...longhand('borderBottom', {\n width: 2,\n style: 'solid',\n color: opacify(palette.grey06, 0.2),\n }),\n overflowX: 'scroll',\n overflowY: 'hidden',\n },\n link: {\n ...cssSides('padding', Side.X, gu2px(3, spacing)),\n marginRight: gu2px(1, spacing),\n marginBottom: -2, // offset the 4px border so its over the top\n },\n },\n\n [modifier('alignment', Alignment.STARTING)]: {\n tiers: {\n justifyContent: 'flex-start',\n },\n },\n\n [modifier('alignment', Alignment.CENTER)]: {\n tiers: {\n justifyContent: 'center',\n },\n },\n\n [modifier('colorway', Colorway.HIGHLIGHT)]: {\n tiers: {\n borderBottomColor: opacify(palette.highlightContrast, 0.2),\n },\n },\n\n [modifier('colorway', Colorway.PRIMARY)]: {\n tiers: {\n borderBottomColor: opacify(palette.primaryContrast, 0.2),\n },\n },\n\n [modifier('colorway', Colorway.PRIMARY_GRADIENT)]: {\n tiers: {\n borderBottomColor: opacify(palette.primaryContrast, 0.2),\n },\n },\n }, [\n { alignment },\n { colorway },\n ]);\n};\n","import React from 'react';\nimport Shimmer from '@ux/shimmer';\nimport { ShortcodeProps } from './';\nimport { Colorway } from '@ux/theme-utils';\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 = ({\n code,\n against,\n}: OuterProps) => (\n \n \n \n);\n\nPendingShortcode.displayName = 'PendingShortcode';\n\nexport default PendingShortcode;\n","import React from 'react';\nimport { RecursiveShortcodeProps } from './Shortcode';\nimport { Against } from 'domain/constants/colorway';\nimport { Theme, useTheme } from '@ux/theme-utils';\n\nconst getColor = (theme: Theme, against: Against) => {\n switch (against) {\n case Against.LIGHT: return theme.palette.primary;\n case Against.NEUTRAL: return theme.palette.primary;\n case Against.DARK: return theme.palette.tertiary;\n default: return 'inherit';\n }\n};\nconst Alt = ({\n RecursiveShortcode,\n elements,\n against,\n ...rest\n}: RecursiveShortcodeProps) => {\n const {\n theme,\n } = useTheme();\n return (\n \n \n \n );\n};\n\nAlt.displayName = 'Alt';\n\nexport default Alt;","import React from 'react';\nimport { RecursiveShortcodeProps } from './Shortcode';\n\nconst Bold = ({ elements, RecursiveShortcode, ...rest }: RecursiveShortcodeProps) => (\n \n \n \n);\n\nBold.displayName = 'Bold';\n\nexport default Bold;","import React from 'react';\nimport { RecursiveShortcodeProps } from './Shortcode';\n\nconst Bold = ({ elements, RecursiveShortcode, ...rest }: RecursiveShortcodeProps) => (\n \n \n \n);\n\nBold.displayName = 'Bold';\n\nexport default Bold;","import React from 'react';\nimport TextButton, {\n Size as TextButtonSize,\n} from '@ux/text-button';\nimport { RecursiveShortcodeProps } from './Shortcode';\nimport { useTheme } from '@ux/theme-utils';\nimport { useAppConfig } from '@ux/whitelabel';\n\nconst Link = ({\n RecursiveShortcode,\n elements,\n contentType,\n attributes,\n against,\n ...rest\n}: RecursiveShortcodeProps) => {\n const {\n theme,\n } = useTheme();\n const externalRoutes = useAppConfig('usf')?.externalRoutes ?? [];\n return (\n \n \n \n );\n};\n\nLink.displayName = 'Link';\n\nexport default Link;","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) => (string ?? '').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) => {\n\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) => (\n \n {formatText(text, nl2br)}\n \n);\n\nText.displayName = 'Text';\n\nexport default Text;","import React, { lazy, Suspense } from 'react';\nimport TextButton, { Size as TextButtonSize } from '@ux/text-button';\nimport { RecursiveShortcodeProps } from './Shortcode';\nimport { useTheme, cssTheme } from '@ux/theme-utils';\nimport { useBreakpoints } from '@ux/responsive';\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(() => import(\n /* webpackChunkName: \"react-tooltip-lite\" */\n 'react-tooltip-lite'\n));\n\nconst TooltipShortcode = ({\n RecursiveShortcode,\n against,\n attributes,\n elements,\n}: RecursiveShortcodeProps) => {\n const {\n isMinLg,\n } = useBreakpoints();\n const {\n theme,\n } = useTheme();\n const eventToggle = isMinLg ? void 0 : '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 \n \n )}\n >\n {CallToAction}\n \n \n );\n};\n\nTooltipShortcode.displayName = 'TooltipShortcode';\n\nexport default TooltipShortcode;\n","import React, { Suspense, lazy, ReactNode } from 'react';\nimport PendingShortcode from './PendingShortcode';\nimport { getAgainst } from 'presentation/utils/colorway';\nimport { Layout } from 'domain/constants/layout';\nimport { ShortcodeProps } from '.';\n\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 Alt from './Alt';\nimport Bold from './Bold';\nimport Italic from './Italic';\nimport Link from './Link';\nimport Text from './Text';\nimport Tooltip from './Tooltip';\nimport { Against } from 'domain/constants/colorway';\n\nconst Glyph = lazy(() => import(\n /* webpackChunkName: \"shortcode-glyph\" */\n './Glyph'\n));\n\nconst Sup = lazy(() => import(\n /* webpackChunkName: \"shortcode-sup\" */\n './Sup'\n));\n\nconst List = lazy(() => import(\n /* webpackChunkName: \"shortcode-list\" */\n './List'\n));\n\nconst OrderedList = lazy(() => import(\n /* webpackChunkName: \"shortcode-ordered-list\" */\n './OrderedList'\n));\n\nconst ListItem = lazy(() => import(\n /* webpackChunkName: \"shortcode-list-item\" */\n './ListItem'\n));\n\nconst TickListItem = lazy(() => import(\n /* webpackChunkName: \"shortcode-tick-list-item\" */\n './TickListItem'\n));\n\nconst ProductPrice = lazy(() => import(\n /* webpackChunkName: \"shortcode-product-price\" */\n './ProductPrice'\n));\n\nconst PhoneNumber = lazy(() => import(\n /* webpackChunkName: \"shortcode-phone-number\" */\n './PhoneNumber'\n));\n\ndeclare const i: number;\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?: ShortcodeProps[],\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) => (\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') {\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 const Element = (props: any) => {\n const {\n code,\n type,\n name,\n } = props;\n if (typeof props.code === 'string') {\n return (\n \n );\n }\n if (props.type === 'text') {\n return (\n \n );\n }\n if (type === 'element') {\n switch (name) {\n case 'list':\n if (props?.attributes?.style === 'number') {\n return (\n \n );\n }\n return (\n \n );\n case 'li':\n if (props?.attributes?.style === 'glyph') {\n return (\n \n );\n }\n return (\n \n );\n case 'i':\n return (\n \n );\n case 'b':\n return (\n \n );\n case 'alt':\n return (\n \n );\n case 'sup':\n return (\n \n );\n case 'glyph':\n return (\n \n );\n case 'tel':\n return (\n \n );\n case 'link':\n return (\n \n );\n case 'productprice':\n return (\n \n );\n case 'tooltip':\n return (\n \n );\n case 'root':\n return (\n \n );\n default: return null;\n }\n }\n return null;\n };\n\n return (\n \n );\n};\n\nconst ShortcodeWrapper = (props: RecursiveShortcodeProps) => (\n \n )}\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","export default (url: string, language: string) => {\n if (url && url.length && language) {\n let parsedLanguage;\n if (language.split('-').length === 2) {\n parsedLanguage = [\n language.split('-')[0],\n language.split('-')[1].toUpperCase(),\n ].join('-');\n } else {\n parsedLanguage = language;\n }\n return url.replace('{{language}}', parsedLanguage);\n }\n return url;\n};","import {\n compose,\n} from 'recompose';\nimport { connect } from 'react-redux';\nimport { getCurrentLanguage } from 'domain/selectors/ribbons';\n\nexport default (BaseComponent: any) => {\n return compose(\n connect((state) => {\n return {\n currentLanguage: getCurrentLanguage(state),\n };\n }),\n )(BaseComponent);\n};\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(\n hasImage,\n r.pipe(\n r.prop('imageUrl'),\n getImageName,\n formatName,\n ),\n r.always(''),\n);","export enum Behavior {\n NAVIGATION = 'navigation',\n ADD_TO_BASKET = 'addToBasket',\n APPLY_VOUCHER = 'APPLY_VOUCHER',\n CONFIGURE = 'configure',\n SET_VISIBILITY = 'changeActiveVisibilitySet',\n PLAY_VIDEO = 'playVideo',\n}\n\nexport default null;\n","import { compose, withProps, withHandlers } from 'recompose';\nimport { connect } from 'react-redux';\nimport { bindActionCreators } from 'redux';\nimport { useWindow } from '@ux/hooks';\nimport { addToBasket, applyVoucher } from 'application/signals/basket';\nimport { setVisibility } from 'application/signals/ribbons';\nimport { productClicked, promotionClicked, productAddToBasket } from 'application/signals/cta';\nimport { getAddingStatus } from 'domain/selectors/basket';\nimport { getExternalRoutes } from 'domain/selectors/common';\nimport { createRibbonName } from 'domain/transformers/ribbons';\nimport { getRibbon } from 'domain/selectors/ribbons';\nimport { Behavior } from 'domain/constants/callToAction';\nimport { signals } from '@team-griffin/redux-modal-router';\nimport handleAddToBasketClick from './callToActionHandlers/handleAddToBasketClick';\nimport handleApplyVoucherClick from './callToActionHandlers/handleApplyVoucherClick';\nimport handleConfigureClick from './callToActionHandlers/handleConfigureClick';\nimport handlePlayVideoClick from './callToActionHandlers/handlePlayVideoClick';\nimport handleSetVisibilityClick from './callToActionHandlers/handleSetVisibilityClick';\nimport handleNavigateClick from './callToActionHandlers/handleNavigateClick';\nimport handleAnalytics from './callToActionHandlers/handleAnalytics';\nimport { isNilOrEmpty } from 'presentation/utils/generalUtils';\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 externalRoutes = getExternalRoutes(state);\n const ribbon = getRibbon(props.ribbonId)(state);\n const ribbonType = ribbon?.type;\n const ribbonName = 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 externalRoutes,\n addingStatus: getAddingStatus(buttonId)(state),\n buttonId,\n ribbonList,\n product,\n id,\n behavior,\n };\n};\n\nconst mapDispatchToProps = (dispatch) =>\n bindActionCreators(\n {\n addToBasket,\n applyVoucher,\n setVisibility,\n openReduxModal: signals.open,\n productClicked,\n promotionClicked,\n productAddToBasket,\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(() => ({\n window: useWindow(),\n })),\n connect(mapStateToProps, mapDispatchToProps, mergeProps),\n withHandlers({\n handleAnalytics: handleAnalytics,\n }),\n withHandlers({\n handleAddToBasketClick: handleAddToBasketClick,\n handleNavigateClick: handleNavigateClick,\n handleApplyVoucherClick: handleApplyVoucherClick,\n handleConfigureClick: handleConfigureClick,\n handleSetVisibilityClick: handleSetVisibilityClick,\n handlePlayVideoClick: handlePlayVideoClick,\n }),\n withProps((ownerProps) => ({\n handleClick: (() => {\n switch (ownerProps.behavior?.type) {\n case Behavior.ADD_TO_BASKET:\n return ownerProps.handleAddToBasketClick;\n case Behavior.APPLY_VOUCHER:\n return ownerProps.handleApplyVoucherClick;\n case Behavior.CONFIGURE:\n return ownerProps.handleConfigureClick;\n case Behavior.PLAY_VIDEO:\n return ownerProps.handlePlayVideoClick;\n case Behavior.SET_VISIBILITY:\n return ownerProps.handleSetVisibilityClick;\n case Behavior.NAVIGATION:\n return ownerProps.handleNavigateClick;\n default:\n return () => null;\n }\n })(),\n })),\n);\n","import { Product } from '@ux/product';\n\nexport default (\n props: {\n behavior: {\n type: any;\n analytics: {\n type: any;\n productId: string;\n promotion: string;\n };\n };\n ribbonList: any;\n product: Product;\n actions: {\n productClicked: (arg0: { productId: any; list: any; }) => void;\n promotionClicked: (arg0: { promotion: any; }) => void;\n productAddToBasket: (arg0: { list: any; product: any; }) => void;\n };\n },\n) => () => {\n const ctaType = props?.behavior?.type;\n const type = props?.behavior?.analytics?.type;\n const list = props.ribbonList;\n const product = props.product;\n\n if (type === 'PRODUCT') {\n const productId = props?.behavior?.analytics?.productId;\n props.actions.productClicked({\n productId,\n list,\n });\n } else if (type === 'PROMOTION') {\n const promotion = props?.behavior?.analytics?.promotion;\n props.actions.promotionClicked({ promotion });\n } else if (ctaType === 'addToBasket') {\n props.actions.productAddToBasket({\n list,\n product,\n });\n }\n};","import { Product, selectors } from '@ux/product';\nimport { formatPricingTier } from '../callToAction';\n\nexport default (props: {\n buttonId: string;\n product: Product;\n actions: {\n addToBasket: any;\n };\n behavior: {\n productId: any;\n postAction: any;\n pricingTier: any;\n };\n handleAnalytics: any;\n}) => () => {\n const {\n buttonId,\n product,\n actions: { addToBasket },\n behavior: { productId, postAction, pricingTier },\n handleAnalytics,\n } = props;\n const productData = {\n skuId: product ? product.defaultSkuId : null,\n name: product ? product.name : null,\n price: product ? selectors.getPrice({\n product,\n includeTax: false,\n }) : null,\n category: product ? product.categoryName : null,\n };\n addToBasket(\n buttonId,\n productId,\n postAction,\n formatPricingTier(pricingTier),\n 1, //quantity\n productData,\n );\n\n handleAnalytics();\n};","export default ({ handleAnalytics }: { handleAnalytics: any }) => () => {\n handleAnalytics();\n};","export default ({\n buttonId,\n actions: {\n applyVoucher,\n },\n behavior: {\n voucherCode,\n postAction,\n },\n}: {\n buttonId: string,\n actions: {\n applyVoucher: any,\n },\n behavior: {\n voucherCode: string;\n postAction: any;\n }\n}) => () => {\n applyVoucher(buttonId, voucherCode, postAction);\n};","import { formatPricingTier } from '../callToAction';\n\nexport default ({\n window,\n behavior: {\n productId,\n pricingTier,\n },\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};","export default ({\n actions: {\n setVisibility,\n },\n behavior,\n}: {\n\tactions: {\n\t\tsetVisibility: any,\n\t},\n\tbehavior: {\n\t\tvisibilitySet: any,\n\t}\n}) => () => {\n setVisibility(behavior.visibilitySet);\n};","export default ({\n actions: {\n openReduxModal,\n },\n behavior: {\n videoId,\n provider,\n },\n}: {\n actions: {\n openReduxModal: any;\n },\n behavior: {\n videoId: string;\n provider: string;\n }\n}) => () => {\n openReduxModal({\n route: 'PLAY_VIDEO',\n params: {\n videoId,\n provider,\n },\n });\n};","import React from 'react';\nimport pureEnhance from '@ux/pure-enhance';\nimport { defaultProps } from '@team-griffin/rehook';\nimport { Content } from '@ux/typeface';\nimport { modifier, withStylesHook } from '@ux/style-utils';\nimport cssSides, { Side } from '@team-griffin/css-sides';\nimport { gu2px, Curvature } from '@ux/theme-utils';\nimport { footnote } from '@ux/type-size';\nimport reactCSS from 'reactcss';\nimport { equals, cond, always, T } from 'ramda';\n\nvar Kind;\n\n(function (Kind) {\n Kind[\"PRIMARY\"] = \"PRIMARY\";\n Kind[\"SECONDARY\"] = \"SECONDARY\";\n Kind[\"SUCCESS\"] = \"SUCCESS\";\n Kind[\"WARNING\"] = \"WARNING\";\n Kind[\"ERROR\"] = \"ERROR\";\n Kind[\"HIGHLIGHT\"] = \"HIGHLIGHT\";\n})(Kind || (Kind = {}));\n\nvar Against;\n\n(function (Against) {\n Against[\"PRIMARY\"] = \"PRIMARY\";\n Against[\"PRIMARY_GRADIENT\"] = \"PRIMARY_GRADIENT\";\n Against[\"LIGHT\"] = \"LIGHT\";\n Against[\"NEUTRAL\"] = \"NEUTRAL\";\n Against[\"DARK\"] = \"DARK\";\n Against[\"HIGHLIGHT\"] = \"HIGHLIGHT\";\n})(Against || (Against = {}));\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 isAgainstPrimary = equals(Against.PRIMARY);\nvar isAgainstPrimaryGradient = equals(Against.PRIMARY_GRADIENT);\nvar isAgainstHighlight = equals(Against.HIGHLIGHT);\nvar isAgainstNeutral = equals(Against.NEUTRAL);\nvar stylesheet = (function (_ref) {\n var _reactCSS;\n\n var _ref$theme = _ref.theme,\n palette = _ref$theme.palette,\n spacing = _ref$theme.spacing,\n typography = _ref$theme.typography,\n curvature = _ref$theme.curvature,\n kind = _ref.kind,\n against = _ref.against,\n flush = _ref.flush;\n return reactCSS((_reactCSS = {\n default: {\n root: Object.assign({\n display: 'inline-block'\n }, cssSides('padding', Side.A, gu2px(0.75, spacing)), cssSides('margin', Side.X, gu2px(1, spacing)), footnote(typography), {\n lineHeight: 1,\n whiteSpace: 'nowrap'\n })\n },\n flush: {\n root: Object.assign({}, cssSides('margin', Side.X, 0))\n }\n }, _defineProperty(_reactCSS, modifier('kind', Kind.PRIMARY), {\n root: {\n backgroundColor: cond([[isAgainstPrimary, always(palette.primaryContrast)], [isAgainstPrimaryGradient, always(palette.primaryContrast)], [T, always(palette.primary)]])(against),\n color: cond([[isAgainstPrimary, always(palette.primary)], [isAgainstPrimaryGradient, always(palette.primary)], [T, always(palette.primaryContrast)]])(against)\n }\n }), _defineProperty(_reactCSS, modifier('kind', Kind.SECONDARY), {\n root: {\n backgroundColor: cond([[isAgainstNeutral, always(palette.grey04)], [T, always(palette.grey10)]])(against),\n color: cond([[isAgainstNeutral, always(palette.grey10)], [T, always(palette.grey04)]])(against)\n }\n }), _defineProperty(_reactCSS, modifier('kind', Kind.SUCCESS), {\n root: {\n backgroundColor: palette.green01,\n color: '#fff'\n }\n }), _defineProperty(_reactCSS, modifier('kind', Kind.WARNING), {\n root: {\n backgroundColor: palette.yellow01,\n color: palette.grey04\n }\n }), _defineProperty(_reactCSS, modifier('kind', Kind.ERROR), {\n root: {\n backgroundColor: palette.red01,\n color: '#fff'\n }\n }), _defineProperty(_reactCSS, modifier('kind', Kind.HIGHLIGHT), {\n root: {\n backgroundColor: cond([[isAgainstHighlight, always(palette.highlightContrast)], [T, always(palette.highlight)]])(against),\n color: cond([[isAgainstHighlight, always(palette.highlight)], [T, always(palette.highlightContrast)]])(against)\n }\n }), _defineProperty(_reactCSS, modifier('curvature', String(Curvature.WEAK)), {\n root: {\n borderRadius: 4\n }\n }), _defineProperty(_reactCSS, modifier('curvature', String(Curvature.STRONG)), {\n root: Object.assign({\n borderRadius: 100\n }, cssSides('padding', Side.X, gu2px(1.5, spacing)))\n }), _reactCSS), [{\n kind: kind\n }, {\n flush: flush\n }, {\n curvature: curvature\n }]);\n});\n\nvar PureBadge = function PureBadge(_ref) {\n var theme = _ref.theme,\n styles = _ref.styles,\n children = _ref.children;\n return React.createElement(Content, {\n theme: theme,\n component: \"span\",\n style: styles.root\n }, children);\n};\n\nvar enhance = pureEnhance('Badge', [defaultProps({\n kind: Kind.PRIMARY,\n against: Against.LIGHT,\n flush: false\n}), withStylesHook(stylesheet)]);\nvar Badge = enhance(PureBadge); // eslint-disable-next-line no-underscore-dangle\n\nexport default Badge;\nexport { Against, Kind };\n","import color from 'color';\n\nexport default (c, a) =>\n color(c)\n .alpha(a)\n .string();\n","import * as rA from 'ramda-adjunct';\nimport * as r from 'ramda';\nimport {\n curry2,\n isNotNilOrEmpty,\n} from '@team-griffin/capra';\n\nconst {\n isNotEmpty,\n isNotNil,\n mapIndexed,\n} = rA;\n\nexport {\n curry2,\n isNotNilOrEmpty,\n isNotEmpty,\n isNotNil,\n mapIndexed,\n};\n\nexport const headOr = r.curryN(2, (fallback: any, arr: any[]) => r.pipe(\n r.defaultTo([]),\n r.head,\n r.defaultTo(fallback),\n)(arr));\n\nexport const getFirstKey = r.pipe(\n r.keys,\n r.head,\n) as (data: any)=>string;\n\nexport const getFirstValue = r.pipe(\n //@ts-ignore\n r.values,\n r.head,\n);\n\nexport const mapKeys = r.curryN(2, (fn: any, obj: any) => r.pipe(\n r.defaultTo({}),\n r.mapObjIndexed(\n r.converge(\n r.unapply(r.identity),\n [\n r.pipe(\n r.nthArg(1),\n fn,\n ),\n r.identity,\n ]\n ),\n ),\n r.values,\n r.fromPairs,\n)(obj));\n"],"sourceRoot":""}