{"version":3,"sources":["webpack:///./presentation/components/ribbons/pillars-recumbent/Pillar.tsx","webpack:///./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","webpack:///./presentation/utils/ribbonPadding.ts","webpack:///../node_modules/@ux/text-button/dist/es/text-button.js","webpack:///src/presentation/hocs/errorBoundary.tsx","webpack:///./presentation/hocs/withRibbonImpression.ts","webpack:///./presentation/utils/ribbonWidth.ts","webpack:///./presentation/hocs/deepLink.tsx","webpack:///./presentation/components/ribbons/Ribbon/Ribbon.tsx","webpack:///./presentation/components/ribbons/Ribbon/ConnectedRibbon.ts","webpack:///./presentation/components/ribbons/Ribbon/index.ts","webpack:///./presentation/utils/getBreakpoints.ts","webpack:///../node_modules/@ux/typography/dist/es/typography.js","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:///./presentation/hocs/visibilitySet.tsx","webpack:///./presentation/utils/urlLanguageParse.ts","webpack:///./presentation/hocs/withLanguage.ts","webpack:///./presentation/utils/createImageAlt.ts","webpack:///./presentation/components/common/CallToAction.tsx","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/illustrations/dist/es/illustrations.js","webpack:///../node_modules/ramda/es/test.js","webpack:///../node_modules/ramda/es/internal/_isRegExp.js"],"names":["PurePillar","hBaseline","illustration","imageUrl","title","body","colorway","currentLanguage","ctas","ribbonId","theme","useTheme","styles","spacing","curvature","isMinSm","isMinLg","useBreakpoints","hasMultipleCtas","length","useStyles","default","root","display","content","marginLeft","gu2px","flex","flexBasis","overflow","wordWrap","color","getTitleColor","width","imageContainer","image","height","position","left","transform","getBodyColor","marginTop","cta","modifier","Curvature","WEAK","imageInner","borderRadius","STRONG","spaceCtas","marginRight","useStylesheet","showImage","isNilOrEmpty","showIllustration","hasTitle","hasBody","hasCtas","style","size","icon","loading","src","urlLanguageParse","alt","createImageAlt","depth","Shortcode","code","against","map","i","key","concat","String","CallToAction","getAgainst","block","Size","SM","index","displayName","withLanguage","PurePillarsRecumbent","id","layout","pillars","name","isMinMd","grid","columnGap","rowGap","gridTemplateColumns","Ribbon","type","Pillar","pillar","visibilitySet","errorBoundary","PillarsRecumbent","flush","r","shrinkLeading","shrinkTrailing","getPaddingSize","shrinkSide","isFlush","leading","Flush","LEADING","trailing","TRAILING","paddingTop","paddingBottom","Against","ContentType","_defineProperty","obj","value","Object","defineProperty","enumerable","configurable","writable","enhance","hooks","disabled","caps","MD","contentType","DEFAULT","_ref","_useStyles","hover","active","palette","typography","fill","LIGHT","secondary","NEUTRAL","DARK","tertiary","PRIMARY","primaryContrast","PRIMARY_FADED","HIGHLIGHT","highlightContrast","HIGHLIGHT_FADED","highlight","assign","A","fontFamily","lineHeight","textAlign","backgroundColor","outline","cursor","textDecoration","transition","inner","opacity","borderBottomStyle","textTransform","fontSize","LG","INHERIT","PHONE_NUMBER","borderBottomWidth","TextButton","_a","children","domProps","s","e","t","p","prototype","hasOwnProperty","call","indexOf","getOwnPropertySymbols","__rest","createElement","stylesheet","getBackgroundColor","ribbonPadding","cssSides","Side","ErrorBoundary","compose","withState","lifecycle","componentDidCatch","this","withProps","hooksA","pipe","mapProps","props","selector","useMemo","getRibbonAnalytics","analytics","useSelector","dispatch","useDispatch","actions","bindActionCreators","sendImpression","withHandlers","onImpression","ribbonName","ribbonType","hooksB","isFullyInViewport","stopWatcher","useEffect","pureEnhance","hocs","mapPropsHoc","branch","Watch","deepLink","withRouter","componentDidMount","location","hash","scrollWhenReady","animationComplete","setTimeout","scroller","scrollTo","duration","delay","smooth","WrappedComponent","mapFit","fit","Fit","FULLSCREEN","minHeight","FILL","AUTO","isFinite","targetRef","useRef","withBreakpointsHook","duoLayout","activeFit","findResponsiveItem","getBreakpoints","padding","duoLayoutFlex","duoRibbonWidth","flexDirection","percentage","ribbon","Colorway","PRIMARY_GRADIENT","backgroundImage","primary","primaryGradient","ref","withRibbonImpression","mergeStyles","createHeading","component","headingSize","Number","Y","fontWeight","Heading01","Heading02","Heading03","Heading04","Heading05","Heading06","stylesheet$1","_ref$theme","gu","marginBottom","SubHeading01","SubHeading02","stylesheet$2","PreHeading01","PreHeading02","BodyCopy01","randomWidth","Math","floor","random","PendingShortcode","lines","elements","getColor","Alt","RecursiveShortcode","rest","Bold","fontStyle","Link","attributes","externalRoutes","useAppConfig","to","goto","analyticskey","TextButtonSize","rel","target","newTab","formatText","text","newline","formattedText","split","join","escapeShortCodes","string","reduce","prev","cur","nl2br","Text","ReactTooltip","lazy","TooltipShortcode","eventToggle","cssTheme","fallback","tagName","useDefaultStyles","maxWidth","Glyph","Sup","List","OrderedList","ListItem","TickListItem","ProductPrice","PhoneNumber","element","JSON","stringify","Element","glyph","Italic","Tooltip","ShortcodeWrapper","BaseComponent","url","language","parsedLanguage","toUpperCase","replace","connect","state","getCurrentLanguage","hasImage","isNotNilOrEmpty","getImageName","str","match","formatName","PureCallToAction","kind","label","addingStatus","handleClick","behavior","status","Status","PENDING","SUCCESS","FAILURE","getStatus","openNewWindowProps","buttonProps","omit","onClick","callToAction","Behavior","formatPricingTier","tier","paymentInterval","term","window","useWindow","buttonId","getExternalRoutes","getRibbon","product","linkAttribution","ribbonList","createRibbonName","getAddingStatus","addToBasket","applyVoucher","setVisibility","openReduxModal","signals","open","productClicked","promotionClicked","productAddToBasket","stateProps","dispatchProps","ownProps","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","href","handleSetVisibilityClick","handlePlayVideoClick","videoId","provider","route","params","ownerProps","ADD_TO_BASKET","APPLY_VOUCHER","CONFIGURE","PLAY_VIDEO","SET_VISIBILITY","NAVIGATION","createPaintbrushUrl$1","iconSet","Illustration","remote","top","importance","_curry2","pattern","x","_isRegExp","TypeError","_cloneRegExp","test"],"mappings":"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","file":"pex-static/40/40.fe694c1de07541dc5e6b.chunk.js","sourcesContent":["import React, { ComponentType } from 'react';\nimport { Heading04, BodyCopy01 } from '@ux/typography';\nimport PaddingBox from '@ux/padding-box';\nimport Shortcode, { ShortcodeProps } from 'components/Shortcode';\nimport Illustration from '@ux/illustrations';\nimport useStylesheet from './Pillar.stylesheet';\nimport createImageAlt from 'presentation/utils/createImageAlt';\nimport urlLanguageParse from 'presentation/utils/urlLanguageParse';\nimport withLanguage from 'presentation/hocs/withLanguage';\nimport { useTheme, Colorway } from '@ux/theme-utils';\nimport { isNilOrEmpty } from 'presentation/utils/generalUtils';\nimport { CTA } from 'core/ribbons/cta';\nimport CallToAction from 'presentation/components/common/CallToAction';\nimport { getAgainst } from 'presentation/utils/colorway';\nimport { useBreakpoints } from '@ux/responsive';\nimport { Size } from '@ux/button';\n\nexport interface OuterProps {\n hBaseline: number,\n illustration?: string,\n imageUrl?: string,\n title?: ShortcodeProps,\n body?: ShortcodeProps,\n colorway: Colorway,\n ctas?: CTA[],\n ribbonId?: string,\n}\nexport interface InnerProps extends OuterProps {\n currentLanguage: string,\n}\n\nexport const PurePillar = ({\n hBaseline,\n illustration,\n imageUrl,\n title,\n body,\n colorway,\n currentLanguage,\n ctas,\n ribbonId,\n}: InnerProps) => {\n const {\n theme,\n } = useTheme();\n const {\n styles,\n } = useStylesheet({\n theme,\n colorway,\n ctas,\n });\n const showImage = isNilOrEmpty(illustration) && !isNilOrEmpty(imageUrl);\n const showIllustration = !isNilOrEmpty(illustration);\n const hasTitle = !isNilOrEmpty(title);\n const hasBody = !isNilOrEmpty(body);\n const {\n isMinSm,\n } = useBreakpoints();\n const hasCtas = ctas && ctas.length > 0;\n return (\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 {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 { modifier } from '@ux/style-utils';\nimport { gu2px, Curvature, Theme, Colorway } from '@ux/theme-utils';\nimport { getTitleColor, getBodyColor } from 'presentation/utils/colorway';\nimport { useBreakpoints } from '@ux/responsive';\nimport { CTA } from 'core/ribbons/cta';\n\nexport default ({\n theme,\n theme: {\n spacing,\n curvature,\n },\n colorway,\n ctas,\n}: {\n theme: Theme,\n colorway: Colorway,\n ctas?: CTA[],\n}) => {\n const {\n isMinSm,\n isMinLg,\n } = useBreakpoints();\n const hasMultipleCtas = (ctas ?? []).length > 1;\n return useStyles({\n default: {\n root: {\n display: 'flex',\n },\n content: {\n marginLeft: gu2px(3, spacing),\n flex: 1,\n flexBasis: 'auto',\n overflow: 'hidden',\n wordWrap: 'break-word',\n },\n title: {\n color: getTitleColor(theme, colorway),\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 body: {\n color: getBodyColor(theme, colorway),\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\n [modifier('curvature', Curvature.WEAK)]: {\n imageInner: {\n borderRadius: 3,\n },\n },\n\n [modifier('curvature', Curvature.STRONG)]: {\n imageInner: {\n borderRadius: 8,\n },\n },\n spaceCtas: {\n cta: {\n marginRight: gu2px(1, spacing),\n display: 'inline-block',\n },\n },\n }, {\n curvature,\n isMinSm,\n isMinLg,\n spaceCtas: isMinSm && hasMultipleCtas,\n });\n};","import React, { ComponentType } from 'react';\nimport Ribbon from 'components/ribbons/Ribbon';\nimport Pillar from './Pillar';\nimport { Container } from '@ux/grid';\nimport visibilitySet from 'presentation/hocs/visibilitySet';\nimport errorBoundary from 'presentation/hocs/errorBoundary';\nimport useStylesheet from './PillarsRecumbent.stylesheet';\nimport { RibbonProps } from 'domain/constants/ribbons';\nimport { ShortcodeProps } from 'presentation/components/Shortcode';\nimport { useTheme } from '@ux/theme-utils';\nimport { CTA } from 'core/ribbons/cta';\n\ntype PillarProps = {\n illustration?: string,\n imageUrl?: string,\n title?: ShortcodeProps,\n body?:ShortcodeProps,\n preserveDimension?: string,\n ctas?: CTA[],\n};\n\ninterface OuterProps extends RibbonProps {\n pillars: PillarProps[],\n}\n\ndeclare const i: number;\ndeclare const pillar: PillarProps;\n\nexport const PurePillarsRecumbent = ({\n id,\n hBaseline = 3,\n layout,\n pillars,\n colorway,\n loading,\n name,\n}: OuterProps) => {\n const {\n theme,\n } = useTheme();\n const {\n styles,\n } = 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 '@ux/responsive';\nimport { gu2px, Theme } from '@ux/theme-utils';\nexport default ({\n theme: {\n spacing,\n },\n}: {\n theme: Theme,\n}) => {\n const {\n isMinSm,\n isMinMd,\n } = useBreakpoints();\n return useStyles({\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 isMinSm,\n isMinMd,\n });\n};","import PillarsRecumbent from './PillarsRecumbent';\n\nexport default PillarsRecumbent;\n","import { Flush } from 'domain/constants/ribbons';\nimport { gu2px } from '@ux/theme-utils';\nimport * as r from 'ramda';\nimport { Layout } from 'domain/constants/layout';\n\nexport default ({\n spacing,\n isMinSm,\n isMinLg,\n layout,\n flush,\n}: {\n spacing: number,\n isMinSm: boolean,\n isMinLg: boolean,\n layout?: Layout,\n flush?: Flush|boolean,\n}) => {\n\n if (r.equals(flush, true)) {\n // Component will handle all padding, used on full bleed image ribbons\n return {};\n }\n\n const {\n //@ts-ignore\n shrinkLeading,\n //@ts-ignore\n shrinkTrailing,\n } = r.defaultTo({}, layout);\n\n /*\n shrinkSide:\n shrink[Leading/Trailing] prop is true then return a reduced padding\n depending on screen size\n isFlush:\n leading or trailing edge has been designated as flush, no padding\n */\n const getPaddingSize = (shrinkSide: string, isFlush: boolean) => {\n\n if (isFlush) {\n return 0;\n }\n\n return r.cond([\n [ r.propEq(shrinkSide, true), () => r.ifElse(\n r.equals(true),\n r.always(1),\n r.always(0.5),\n )(isMinSm) ],\n [ r.propEq('isMinLg', true), r.always(6) ],\n [ r.propEq('isMinSm', true), r.always(5) ],\n [ r.T, r.always(4) ],\n ])({\n isMinLg,\n isMinSm,\n shrinkLeading,\n shrinkTrailing,\n });\n };\n\n const leading = getPaddingSize('shrinkLeading', flush === Flush.LEADING);\n const trailing = getPaddingSize('shrinkTrailing', flush === Flush.TRAILING);\n\n return {\n paddingTop: gu2px(leading, spacing),\n paddingBottom: gu2px(trailing, spacing),\n };\n};\n","import React from 'react';\nimport { defaultProps, withProps, mapProps } from '@team-griffin/rehook';\nimport pureEnhance from '@ux/pure-enhance';\nimport { DynamicLink } from '@ux/dynamic-link';\nimport { useStyles, withInteraction } from '@team-griffin/stylr';\nimport cssSides, { Side } from '@team-griffin/css-sides';\nimport longhand from '@team-griffin/css-longhand';\nimport px2em from '@ux/px2em';\nimport { content } from '@ux/type-size';\nimport { percentage, modifier } from '@ux/style-utils';\nimport { cond, equals, always, T, omit } from 'ramda';\n\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n\r\nfunction __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\r\n t[p[i]] = s[p[i]];\r\n return t;\r\n}\n\nvar Size;\n\n(function (Size) {\n Size[\"SM\"] = \"SM\";\n Size[\"MD\"] = \"MD\";\n Size[\"LG\"] = \"LG\";\n Size[\"INHERIT\"] = \"INHERIT\";\n})(Size || (Size = {}));\n\nvar Against;\n\n(function (Against) {\n Against[\"LIGHT\"] = \"LIGHT\";\n Against[\"NEUTRAL\"] = \"NEUTRAL\";\n Against[\"DARK\"] = \"DARK\";\n Against[\"PRIMARY\"] = \"PRIMARY\";\n Against[\"PRIMARY_FADED\"] = \"PRIMARY_FADED\";\n Against[\"HIGHLIGHT\"] = \"HIGHLIGHT\";\n Against[\"HIGHLIGHT_FADED\"] = \"HIGHLIGHT_FADED\";\n})(Against || (Against = {}));\n\nvar ContentType;\n\n(function (ContentType) {\n ContentType[\"DEFAULT\"] = \"DEFAULT\";\n ContentType[\"PHONE_NUMBER\"] = \"PHONE_NUMBER\";\n})(ContentType || (ContentType = {}));\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 stylesheet = function stylesheet(_ref) {\n var _useStyles;\n\n var theme = _ref.theme,\n against = _ref.against,\n block = _ref.block,\n disabled = _ref.disabled,\n size = _ref.size,\n caps = _ref.caps,\n contentType = _ref.contentType,\n hover = _ref.hover,\n active = _ref.active;\n var palette = theme.palette,\n typography = theme.typography;\n var fill = cond([[equals(Against.LIGHT), always(palette.secondary)], [equals(Against.NEUTRAL), always(palette.secondary)], [equals(Against.DARK), always(palette.tertiary)], [equals(Against.PRIMARY), always(palette.primaryContrast)], [equals(Against.PRIMARY_FADED), always(palette.secondary)], [equals(Against.HIGHLIGHT), always(palette.highlightContrast)], [equals(Against.HIGHLIGHT_FADED), always(palette.highlight)], [T, always(palette.secondary)]])(against);\n return useStyles((_useStyles = {\n default: {\n root: Object.assign({}, content(theme.typography), longhand('border', {\n color: 'transparent',\n style: 'solid',\n width: 0\n }), cssSides('margin', Side.A, 0), cssSides('padding', Side.A, 0), {\n fontFamily: typography.content,\n lineHeight: 1.1,\n paddingBottom: 1,\n color: fill,\n textAlign: 'left',\n backgroundColor: 'transparent',\n outline: 0,\n cursor: equals(disabled, true) ? 'not-allowed' : 'pointer',\n textDecoration: 'none',\n transition: 'opacity 0.2s ease-in-out, border 0.1s ease-in-out'\n }),\n\n /*\r\n we apply the border on the inner text span as we need to ensure\r\n that if the text wraps over 2 lines, both lines have a dotted border.\r\n If there is any padding on this inner element it breaks the underline\r\n when in a css column.\r\n */\n inner: Object.assign({}, longhand('borderBottom', {\n style: 'dotted',\n color: fill,\n width: 1\n }))\n },\n hover: {\n root: {\n opacity: 0.75\n },\n inner: {\n borderBottomStyle: 'solid',\n opacity: 0.75\n }\n },\n active: {\n inner: {\n borderBottomStyle: 'solid',\n opacity: 0.75\n }\n },\n caps: {\n root: {\n textTransform: 'uppercase'\n }\n },\n block: {\n root: {\n display: 'block',\n width: percentage(100)\n }\n }\n }, _defineProperty(_useStyles, modifier('size', Size.SM), {\n root: {\n fontSize: px2em(12)\n }\n }), _defineProperty(_useStyles, modifier('size', Size.MD), {\n root: {\n fontSize: px2em(14)\n }\n }), _defineProperty(_useStyles, modifier('size', Size.LG), {\n root: {\n fontSize: px2em(16)\n }\n }), _defineProperty(_useStyles, modifier('size', Size.INHERIT), {\n root: {\n fontSize: 'inherit',\n lineHeight: 'inherit'\n }\n }), _defineProperty(_useStyles, modifier('contentType', ContentType.PHONE_NUMBER), {\n inner: {\n borderBottomWidth: 0\n }\n }), _defineProperty(_useStyles, \"disabled\", {\n root: {\n opacity: 0.3\n }\n }), _useStyles), [{\n hover: hover\n }, {\n active: active\n }, {\n caps: caps\n }, {\n block: block\n }, {\n disabled: disabled\n }, {\n size: size\n }, {\n contentType: contentType\n }, {\n against: against\n }]);\n};\n\nvar PureTextButton = function PureTextButton(_a) {\n var styles = _a.styles,\n children = _a.children,\n domProps = __rest(_a, [\"styles\", \"children\"]);\n\n return React.createElement(DynamicLink, Object.assign({\n style: styles.root\n }, domProps), React.createElement(\"span\", {\n style: styles.inner\n }, children));\n};\nvar enhance = pureEnhance('TextButton', {\n hooks: [defaultProps({\n disabled: false,\n block: false,\n caps: false,\n size: Size.MD,\n contentType: ContentType.DEFAULT\n }), withProps(stylesheet), mapProps(omit(['theme', 'against', 'hover', 'active', 'focus', 'hocus', 'caps', 'block', 'size', 'contentType']))]\n});\nvar TextButton = withInteraction(enhance(PureTextButton)); // eslint-disable-next-line no-underscore-dangle\n\nexport default TextButton;\nexport { Against, ContentType, Size };\n","import React, { CSSProperties } from 'react';\nimport { compose, lifecycle, withState, withProps } from 'recompose';\nimport Message from '@ux/message';\nimport { Container } from '@ux/grid';\nimport * as r from 'ramda';\nimport cssSides, { Side } from '@team-griffin/css-sides';\nimport { getBackgroundColor, getTitleColor } from 'presentation/utils/colorway';\nimport { gu2px, useTheme } from '@ux/theme-utils';\nimport ribbonPadding from 'presentation/utils/ribbonPadding';\nimport { useStyles } from '@team-griffin/stylr';\nimport { Colorway } from 'domain/constants/colorway';\nimport { Layout } from 'domain/constants/layout';\nimport { Flush } from 'domain/constants/ribbons';\nimport { BreakpointProps, useBreakpoints } from '@ux/responsive';\n\ninterface OuterProps extends BreakpointProps {\n colorway: Colorway;\n layout: Layout;\n flush?: Flush | boolean;\n}\n\ninterface InnerProps extends OuterProps {\n styles: {\n root: CSSProperties;\n };\n hasErrored: boolean;\n}\nconst stylesheet = ({ colorway, layout, flush }: InnerProps) => {\n const { theme } = useTheme();\n const { isMinSm, isMinMd, isMinLg } = useBreakpoints();\n const { spacing } = theme;\n\n return useStyles(\n {\n default: {\n root: {\n backgroundColor: getBackgroundColor(theme, colorway),\n color: getTitleColor(theme, colorway),\n ...ribbonPadding({\n spacing,\n isMinSm,\n isMinLg,\n layout,\n flush,\n }),\n ...cssSides('Side', Side.X, gu2px(3, spacing)),\n textAlign: 'center',\n },\n },\n isMinSm: {\n root: {\n ...cssSides('Side', Side.X, gu2px(4, spacing)),\n },\n },\n },\n [{ colorway }, { isMinSm }, { isMinMd }],\n );\n};\n\nexport default (WrappedComponent: any) => {\n const ErrorBoundary = r.ifElse(\n r.propEq('hasErrored', true),\n ({ styles }) => (\n
\n \n \n \n
\n ),\n (props: InnerProps) => ,\n );\n\n return compose(\n withState('hasErrored', 'setHasErrored', false),\n lifecycle({\n componentDidCatch: function() {\n //@ts-ignore\n this.props.setHasErrored(true);\n },\n }),\n withProps(stylesheet),\n )(ErrorBoundary);\n};\n","import { useMemo, useEffect } from 'react';\nimport { branch, mapProps as mapPropsHoc } from 'recompose';\nimport pureEnhance from '@ux/pure-enhance';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { bindActionCreators } from 'redux';\nimport { pipe, withProps, mapProps, withHandlers } from '@team-griffin/rehook';\nimport { Watch } from 'scrollmonitor-react';\nimport * as r from 'ramda';\nimport { sendImpression } from 'application/signals/ribbons';\nimport { getRibbonAnalytics } from 'domain/selectors/ribbons';\nimport { Type } from 'domain/constants/ribbons';\n\nconst hooksA = pipe(\n mapProps((props: any) => {\n const { id } = props;\n const selector = useMemo(() => getRibbonAnalytics(id), [ id ]);\n const analytics = useSelector(selector);\n const dispatch = useDispatch();\n const actions = bindActionCreators({ sendImpression }, dispatch);\n\n return r.mergeDeepLeft(props, {\n analytics,\n actions,\n });\n }),\n withHandlers({\n onImpression: ({\n name,\n type,\n analytics,\n actions: {\n sendImpression,\n },\n }: {\n name: string,\n type: Type,\n analytics: any,\n actions: {\n sendImpression: Function,\n }\n }) => () => sendImpression({\n ...analytics,\n ribbonName: name,\n ribbonType: type,\n }),\n }),\n);\n\nconst hooksB = pipe(\n withProps(({\n isFullyInViewport,\n stopWatcher,\n onImpression,\n analytics,\n }: {\n isFullyInViewport: boolean,\n stopWatcher: () => void,\n onImpression: (a: any) => void,\n analytics: any,\n }) => {\n useEffect(() => {\n if (isFullyInViewport) {\n stopWatcher();\n onImpression(analytics);\n }\n }, [ isFullyInViewport ]);\n }),\n);\n\nexport default pureEnhance('RibbonImpression', {\n hocs: [\n mapPropsHoc(hooksA),\n branch(\n r.propSatisfies(r.complement(r.isNil), 'analytics'),\n Watch,\n ),\n mapPropsHoc(hooksB),\n ],\n});\n","export const duoRibbonWidth = ({\n isMinMd,\n duoLayout,\n}: {\n isMinMd: boolean,\n duoLayout?: boolean,\n}) => {\n if (!isMinMd || duoLayout == null) {\n return {};\n }\n\n const flexSize = (isMinMd && duoLayout) ? 50 : 100;\n return {\n flex: `${flexSize}%`,\n };\n};\n\nexport default null;","import React, { Fragment } from 'react';\nimport {\n compose,\n lifecycle,\n} from 'recompose';\nimport { withRouter } from 'react-router';\nimport { Element, scroller } from 'react-scroll';\n\nconst deepLink = compose(\n withRouter,\n lifecycle({\n componentDidMount: function() {\n //Adding some ts-ignores here so it doesn't throw not recognizing\n //this.props\n\n //@ts-ignore\n if (this.props.location.hash === `#${this.props.name}`) {\n const scrollWhenReady = () => {\n // we can't scroll to eagerly or we'll end up in the wrong place\n //@ts-ignore\n if (this.props.loading || !this.props.animationComplete) {\n return setTimeout(scrollWhenReady, 100);\n }\n //@ts-ignore\n scroller.scrollTo(this.props.name, {\n duration: 500,\n delay: 100,\n smooth: true,\n });\n };\n setTimeout(scrollWhenReady, 100);\n }\n },\n }),\n (WrappedComponent: any) => {\n return (props: any) => (\n \n \n \n \n );\n },\n);\n\nexport default deepLink;\n","import React, { useRef, useLayoutEffect, CSSProperties, ReactNode, Ref } from 'react';\nimport { withProps } from '@team-griffin/rehook';\nimport pureEnhance from '@ux/pure-enhance';\nimport { withBreakpointsHook, BreakpointProps } from '@ux/responsive';\nimport findResponsiveItem from 'presentation/utils/findResponsiveItem';\nimport getBreakpoints from 'presentation/utils/getBreakpoints';\nimport ribbonPadding from 'presentation/utils/ribbonPadding';\nimport { duoRibbonWidth } from 'presentation/utils/ribbonWidth';\nimport { percentage, modifier } from '@ux/style-utils';\nimport deepLink from 'presentation/hocs/deepLink';\nimport { getBackgroundColor } from 'presentation/utils/colorway';\nimport { useStyles } from '@team-griffin/stylr';\nimport { Colorway } from 'domain/constants/colorway';\nimport { Fit, Flush, RibbonProps } from 'domain/constants/ribbons';\nimport * as r from 'ramda';\n\nexport {\n Flush,\n};\n\ninterface OuterProps extends RibbonProps {\n children?: ReactNode,\n}\ninterface WithHandlerProps extends OuterProps {\n setAnimationComplete: Function,\n setRibbonHeight: Function,\n setHeight: Function,\n onAnimationEnd: (props: {\n newHeight: number;\n }) => void,\n}\n\ninterface InnerProps extends WithHandlerProps, BreakpointProps {\n rendered: boolean,\n targetRef: Ref,\n duration: number,\n styles: {\n root: CSSProperties,\n inner: CSSProperties,\n ribbon: CSSProperties,\n }\n}\n\nconst mapFit = (fit: Fit) => r.cond([\n [ r.equals(Fit.FULLSCREEN), r.always({\n minHeight: '100vh',\n }) ],\n [ r.equals(Fit.FILL), r.always({\n flex: 1,\n flexBasis: 'auto',\n }) ],\n [ r.equals(Fit.AUTO), r.always({\n height: 'auto',\n }) ],\n [ isFinite, r.always({\n minHeight: fit,\n }) ],\n [ r.T, r.always({\n height: 'auto',\n }) ],\n])(fit);\n\nconst stylesheet = ({\n theme,\n colorway,\n loading,\n layout,\n flush,\n ...props\n}: InnerProps) => {\n const {\n palette,\n spacing,\n } = theme;\n const {\n //@ts-ignore\n fit,\n } = r.defaultTo({}, layout);\n\n const {\n isMinSm,\n isMinMd,\n isMinLg,\n duoLayout,\n } = props;\n\n const activeFit = findResponsiveItem(\n getBreakpoints(props),\n fit,\n );\n\n const padding = ribbonPadding({\n spacing,\n isMinSm,\n isMinLg,\n layout,\n flush,\n });\n\n const duoLayoutFlex = duoRibbonWidth({\n isMinMd,\n duoLayout,\n });\n\n return useStyles({\n default: {\n root: {\n backgroundColor: getBackgroundColor(theme, colorway),\n position: 'relative',\n display: 'flex',\n flexDirection: 'column',\n width: percentage(100),\n ...mapFit(activeFit),\n ...padding,\n ...duoLayoutFlex,\n },\n inner: {\n flex: 1,\n flexBasis: 'auto',\n display: 'flex',\n height: 'auto',\n },\n ribbon: {\n display: 'flex',\n flexDirection: 'column',\n width: percentage(100),\n },\n },\n\n [modifier('colorway', Colorway.PRIMARY_GRADIENT)]: {\n root: {\n backgroundImage: `linear-gradient(to right, ${palette.primary}, ${palette.primaryGradient})`,\n },\n },\n }, [\n { loading },\n { colorway },\n { isMinSm },\n { isMinMd },\n { isMinLg },\n ]);\n};\n\nexport const PureRibbon = ({\n styles,\n targetRef,\n children,\n}: InnerProps) => (\n
\n
\n \n {children}\n
\n \n
\n);\n\nexport const enhance = pureEnhance('Ribbon', {\n hocs: [\n deepLink,\n ],\n hooks: [\n withProps(() => {\n const targetRef = useRef({});\n\n if (process.env.NODE_ENV !== 'production') {\n useLayoutEffect(() => {\n // when backstop runs on ribbons, this lets us filter out a lot of false\n // positives and a lot of race condition fails by only initialising\n // the snapshot once loading has finished + a delay to wait for fonts etc to load\n // eslint-disable-next-line\n setTimeout(() => {\n // eslint-disable-next-line\n console.log('BACKSTOP_RIBBON_READY');\n }, 3000);\n }, [ targetRef.current ]);\n }\n\n return {\n targetRef,\n };\n }),\n withBreakpointsHook,\n withProps(stylesheet),\n ],\n});\n\nexport default enhance(PureRibbon);\n","import pureEnhance from '@ux/pure-enhance';\nimport withRibbonImpression from 'presentation/hocs/withRibbonImpression';\n\nimport Ribbon from './Ribbon';\n\nconst enhance = pureEnhance('ConnectedRibbon', {\n hocs: [ withRibbonImpression ],\n});\n\nexport default enhance(Ribbon);\n","import Ribbon from './ConnectedRibbon';\nimport { Flush } from './Ribbon';\n\nexport { Flush };\n\nexport default Ribbon;\n","import * as r from 'ramda';\nimport { BreakpointProps } from '@ux/responsive';\n\ninterface anyProps extends BreakpointProps {\n [key: string]: any,\n}\nexport default (props: anyProps) => r.pick([\n 'isMinSm',\n 'isMinMd',\n 'isMinLg',\n 'isMinXl',\n], props) as anyProps;\n","import { headingXl, headingXxl, display, headingL, headingM, headingS, headingXs, headingXxs, content } from '@ux/type-size';\nimport reactCSS from 'reactcss';\nimport cssSides, { Side } from '@team-griffin/css-sides';\nimport { createElement } from 'react';\nimport { defaultProps, mapProps } from '@team-griffin/rehook';\nimport pureEnhance from '@ux/pure-enhance';\nimport { withStylesHook } from '@ux/style-utils';\nimport { withBreakpoints } from '@ux/responsive';\nimport { pipe, converge, assoc, mergeDeepRight, path, propOr, identity, dissoc, is, defaultTo } from 'ramda';\nimport { gu2px } from '@ux/theme-utils';\n\nvar mergeStyles = pipe(converge(assoc('style'), [converge(mergeDeepRight, [path(['styles', 'root']), propOr({}, 'style')]), identity]), dissoc('styles'));\n\nvar createHeading = function createHeading(name, component, headingSize, stylesheet) {\n return pureEnhance(name, {\n hocs: [withBreakpoints],\n hooks: [defaultProps({\n component: component\n }), withStylesHook(function (props) {\n return stylesheet(Object.assign({}, props, {\n headingSize: headingSize\n }));\n }), mapProps(pipe(mergeStyles, function (props) {\n // if a `depth` prop is provided, make the `` element\n if (is(Number, props.depth)) {\n return assoc('component', \"h\".concat(props.depth), props);\n }\n\n return props;\n }))]\n })(function (_ref) {\n var style = _ref.style,\n children = _ref.children,\n component = _ref.component;\n return createElement(component, {\n style: style\n }, children);\n });\n};\n\nvar stylesheet = function stylesheet(_ref) {\n var typography = _ref.theme.typography,\n isMinSm = _ref.isMinSm,\n isMinLg = _ref.isMinLg,\n headingSize = _ref.headingSize;\n return reactCSS({\n default: {\n root: Object.assign({}, headingSize[0](typography), cssSides('margin', Side.Y, 0), {\n fontWeight: 'normal',\n fontFamily: typography.display\n })\n },\n isMinSm: {\n root: Object.assign({}, headingSize[1](typography))\n },\n isMinLg: {\n root: Object.assign({}, headingSize[2](typography))\n }\n }, [{\n isMinSm: isMinSm\n }, {\n isMinLg: isMinLg\n }]);\n};\n/* eslint-disable max-len */\n\n\nvar Heading01 = createHeading('Heading01', 'h1', [headingXl, headingXxl, display], stylesheet);\nvar Heading02 = createHeading('Heading02', 'h1', [headingL, headingXl, headingXxl], stylesheet);\nvar Heading03 = createHeading('Heading03', 'h1', [headingM, headingL, headingXl], stylesheet);\nvar Heading04 = createHeading('Heading04', 'h1', [headingS, headingM, headingL], stylesheet);\nvar Heading05 = createHeading('Heading05', 'h1', [headingXs, headingS, headingM], stylesheet);\nvar Heading06 = createHeading('Heading06', 'h1', [headingXxs, headingXs, headingS], stylesheet);\n\nvar stylesheet$1 = function stylesheet(_ref) {\n var _ref$theme = _ref.theme,\n typography = _ref$theme.typography,\n spacing = _ref$theme.spacing,\n gu = _ref.gu,\n isMinSm = _ref.isMinSm,\n isMinLg = _ref.isMinLg,\n headingSize = _ref.headingSize;\n return reactCSS({\n default: {\n root: Object.assign({}, headingSize[0](typography), {\n marginTop: gu2px(defaultTo(2, gu), spacing),\n marginBottom: 0,\n fontWeight: 'normal',\n fontFamily: typography.display\n })\n },\n isMinSm: {\n root: Object.assign({}, headingSize[1](typography))\n },\n isMinLg: {\n root: Object.assign({}, headingSize[2](typography))\n }\n }, [{\n isMinSm: isMinSm\n }, {\n isMinLg: isMinLg\n }]);\n};\n/* eslint-disable max-len */\n\n\nvar SubHeading01 = createHeading('SubHeading01', 'h2', [headingXs, headingS, headingM], stylesheet$1);\nvar SubHeading02 = createHeading('SubHeading02', 'h3', [headingXxs, headingXxs, headingXs], function (props) {\n return stylesheet$1(mergeDeepRight(props, {\n gu: 1\n }));\n});\n\nvar stylesheet$2 = function stylesheet(_ref) {\n var _ref$theme = _ref.theme,\n typography = _ref$theme.typography,\n spacing = _ref$theme.spacing,\n isMinSm = _ref.isMinSm,\n isMinLg = _ref.isMinLg,\n headingSize = _ref.headingSize;\n return reactCSS({\n default: {\n root: Object.assign({}, headingSize[0](typography), {\n marginTop: 0,\n marginBottom: gu2px(1, spacing),\n fontWeight: 'normal',\n fontFamily: typography.display\n })\n },\n isMinSm: {\n root: Object.assign({}, headingSize[1](typography))\n },\n isMinLg: {\n root: Object.assign({}, headingSize[2](typography))\n }\n }, [{\n isMinSm: isMinSm\n }, {\n isMinLg: isMinLg\n }]);\n};\n/* eslint-disable max-len */\n\n\nvar PreHeading01 = createHeading('PreHeading01', 'div', [headingXxs, headingXs, headingS], stylesheet$2);\nvar PreHeading02 = createHeading('PreHeading02', 'div', [headingXxs, headingXxs, headingXs], stylesheet$2);\n\nvar stylesheet$3 = function stylesheet(_ref) {\n var _ref$theme = _ref.theme,\n typography = _ref$theme.typography,\n spacing = _ref$theme.spacing,\n isMinSm = _ref.isMinSm,\n isMinLg = _ref.isMinLg,\n headingSize = _ref.headingSize;\n return reactCSS({\n default: {\n root: Object.assign({}, headingSize[0](typography), {\n marginTop: gu2px(1, spacing),\n marginBottom: 0,\n fontWeight: 'normal',\n fontFamily: typography.content\n })\n },\n isMinSm: {\n root: Object.assign({}, headingSize[1](typography))\n },\n isMinLg: {\n root: Object.assign({}, headingSize[2](typography))\n }\n }, [{\n isMinSm: isMinSm\n }, {\n isMinLg: isMinLg\n }]);\n};\n/* eslint-disable max-len */\n\n\nvar BodyCopy01 = createHeading('BodyCopy01', 'p', [content, content, content], stylesheet$3);\n\nvar index = null;\n\nexport default index;\nexport { BodyCopy01, Heading01, Heading02, Heading03, Heading04, Heading05, Heading06, PreHeading01, PreHeading02, SubHeading01, SubHeading02 };\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","import React from 'react';\nimport * as r from 'ramda';\n\nexport default (BaseComponent: any) => r.ifElse(\n r.prop('visible'),\n (props) => ,\n (props) => (\n
\n \n
\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 = [\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);","import React from 'react';\nimport Button, {\n Against,\n Status,\n Size,\n} from '@ux/reactive-button';\nimport callToAction from 'presentation/hocs/callToAction';\nimport { Theme } from '@ux/theme-utils';\nimport { CTA } from 'core/ribbons/cta';\nimport { Product } from '@ux/product';\nimport { omit } from 'presentation/utils/generalUtils';\n\ninterface OuterProps extends CTA {\n product?: Product,\n theme: Theme,\n against?: Against,\n block?: boolean,\n size?: Size,\n ribbonId: string,\n index: number,\n glyph?: string,\n}\n\ninterface InnerProps extends OuterProps {\n addingStatus: Status,\n handleClick: (props: any) => () => void,\n}\n\nconst getStatus = (addingStatus: string) => {\n switch (addingStatus) {\n case 'REQUESTED': return Status.PENDING;\n case 'SUCCESS': return Status.SUCCESS;\n case 'FAILED': return Status.FAILURE;\n default: return Status.DEFAULT;\n }\n};\n\nconst PureCallToAction = ({\n kind,\n against = Against.LIGHT,\n label,\n addingStatus,\n handleClick,\n behavior,\n ...props\n}: InnerProps) => {\n\n const status = getStatus(addingStatus);\n //@ts-ignore goto exists on NavigationCTA\n const goto = behavior?.goto ?? null;\n //@ts-ignore newTab exists on NavigationCTA\n const newTab = behavior?.newTab ?? null;\n //@ts-ignore rel exists on NavigationCTA\n const rel = behavior?.rel ?? null;\n\n const openNewWindowProps = newTab==='true' ? {\n rel: rel,\n target: '_blank',\n } : { };\n\n const buttonProps = omit([\n 'colorway',\n 'actions',\n 'buttonId',\n 'ribbonId',\n 'index',\n 'handlePlayVideoClick',\n 'handleSetVisibilityClick',\n 'handleConfigureClick',\n 'handleApplyVoucherClick',\n 'handleAddToBasketClick',\n 'handleNavigateClick',\n 'handleAnalytics',\n 'ribbonList',\n ], props);\n\n return (\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 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 { defaultProps, withProps } from '@team-griffin/rehook';\nimport pureEnhance from '@ux/pure-enhance';\nimport { useStyles } from '@team-griffin/stylr';\nimport { percentage } from '@ux/style-utils';\nimport { gu2px } from '@ux/theme-utils';\nimport { when, isNil, pipe, always, ifElse, test, curryN, prop } from 'ramda';\nimport { stringify } from 'qs';\n\nvar size = function size(ownerProps) {\n return when(isNil, pipe(always(ownerProps.icon), ifElse(test(/^banner/), always(gu2px(8, ownerProps.theme.spacing)), always(gu2px(2, ownerProps.theme.spacing)))))(ownerProps.size);\n};\n\nvar stylesheet = (function (ownerProps) {\n return useStyles({\n default: {\n root: {\n maxWidth: percentage(100),\n height: size(ownerProps),\n width: size(ownerProps),\n position: 'relative',\n display: 'inline-block'\n },\n remote: {\n position: 'absolute',\n width: percentage(100),\n height: percentage(100),\n left: 0,\n top: 0\n }\n }\n }, []);\n});\n\nvar baseUrl = 'https://paintbrush.heg-cp.com';\n\nvar createPaintbrushUrl = function createPaintbrushUrl(icon, theme) {\n return \"\".concat(baseUrl, \"/illustrations/\").concat(icon, \".svg?\").concat(stringify({\n palette: prop('illustrations')(theme.palette),\n iconSet: theme.iconSet\n }));\n};\n\nvar createPaintbrushUrl$1 = curryN(2, createPaintbrushUrl);\n\nvar PureIllustration = function PureIllustration(_ref) {\n var styles = _ref.styles,\n icon = _ref.icon,\n theme = _ref.theme,\n alt = _ref.alt;\n return /*#__PURE__*/React.createElement(\"div\", {\n style: styles.root\n }, /*#__PURE__*/React.createElement(\"img\", {\n src: createPaintbrushUrl$1(icon, theme),\n alt: alt,\n style: styles.remote // @ts-ignore\n ,\n importance: \"low\",\n loading: \"lazy\"\n }));\n};\n\nvar enhance = pureEnhance('Illustration', {\n hooks: [defaultProps({}), withProps(stylesheet)]\n});\nvar Illustration = enhance(PureIllustration); // eslint-disable-next-line no-underscore-dangle\n\nexport default Illustration;\nexport { Illustration, createPaintbrushUrl$1 as createPaintbrushUrl };\n","import _cloneRegExp from \"./internal/_cloneRegExp.js\";\nimport _curry2 from \"./internal/_curry2.js\";\nimport _isRegExp from \"./internal/_isRegExp.js\";\nimport toString from \"./toString.js\";\n/**\n * Determines whether a given string matches a given regular expression.\n *\n * @func\n * @memberOf R\n * @since v0.12.0\n * @category String\n * @sig RegExp -> String -> Boolean\n * @param {RegExp} pattern\n * @param {String} str\n * @return {Boolean}\n * @see R.match\n * @example\n *\n * R.test(/^x/, 'xyz'); //=> true\n * R.test(/^y/, 'xyz'); //=> false\n */\n\nvar test =\n/*#__PURE__*/\n_curry2(function test(pattern, str) {\n if (!_isRegExp(pattern)) {\n throw new TypeError('‘test’ requires a value of type RegExp as its first argument; received ' + toString(pattern));\n }\n\n return _cloneRegExp(pattern).test(str);\n});\n\nexport default test;","export default function _isRegExp(x) {\n return Object.prototype.toString.call(x) === '[object RegExp]';\n}"],"sourceRoot":""}