{"version":3,"sources":["webpack:///./presentation/components/ribbons/info/Info.tsx","webpack:///./presentation/components/ribbons/info/Info.stylesheet.ts","webpack:///./presentation/components/ribbons/info/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:///../node_modules/@ux/typography/dist/es/typography.js","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/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:///./presentation/components/Shortcode/Tooltip.tsx","webpack:///./presentation/components/Shortcode/Shortcode.tsx","webpack:///./presentation/components/Shortcode/index.ts","webpack:///./presentation/hocs/visibilitySet.tsx","webpack:///./domain/constants/alignment.ts","webpack:///./crosscutting/ramda.ts","webpack:///./presentation/components/common/CallToAction.tsx","webpack:///./domain/constants/callToAction.ts","webpack:///./presentation/hocs/callToAction.js"],"names":["enhance","pureEnhance","hocs","errorBoundary","visibilitySet","hooks","withBreakpointsHook","defaultProps","hBaseline","withProps","ownerProps","hasTitle","isNotNilOrEmpty","title","hasSubtitle","subtitle","hasCta","ctas","theme","layout","colorway","isMinSm","spacing","alignment","useStyles","default","root","textAlign","display","width","percentage","color","getTitleColor","getBodyColor","overflow","marginTop","gu2px","cta","marginRight","modifier","Alignment","CENTER","justifyContent","id","styles","loading","name","Ribbon","type","style","depth","Shortcode","against","code","component","key","i","CallToAction","getAgainst","ribbonId","index","block","r","Info","isMinLg","flush","shrinkLeading","shrinkTrailing","getPaddingSize","shrinkSide","isFlush","leading","Flush","LEADING","trailing","TRAILING","paddingTop","paddingBottom","Size","Against","ContentType","_defineProperty","obj","value","Object","defineProperty","enumerable","configurable","writable","disabled","caps","size","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","content","lineHeight","backgroundColor","outline","cursor","textDecoration","transition","inner","opacity","borderBottomStyle","textTransform","SM","fontSize","LG","INHERIT","PHONE_NUMBER","borderBottomWidth","TextButton","_a","children","domProps","s","e","t","p","prototype","hasOwnProperty","call","indexOf","getOwnPropertySymbols","length","__rest","createElement","stylesheet","useTheme","getBackgroundColor","ribbonPadding","cssSides","Side","isMinMd","ErrorBoundary","compose","withState","lifecycle","componentDidCatch","this","mergeStyles","createHeading","headingSize","props","Number","concat","Y","fontWeight","Heading01","Heading02","Heading03","Heading04","Heading05","Heading06","stylesheet$1","_ref$theme","gu","marginBottom","SubHeading01","SubHeading02","stylesheet$2","PreHeading01","PreHeading02","BodyCopy01","hooksA","pipe","mapProps","selector","useMemo","getRibbonAnalytics","analytics","useSelector","dispatch","useDispatch","actions","bindActionCreators","sendImpression","withHandlers","onImpression","ribbonName","ribbonType","hooksB","isFullyInViewport","stopWatcher","useEffect","mapPropsHoc","branch","Watch","deepLink","withRouter","componentDidMount","location","hash","scrollWhenReady","animationComplete","setTimeout","scroller","scrollTo","duration","delay","smooth","WrappedComponent","mapFit","fit","Fit","FULLSCREEN","minHeight","FILL","flex","flexBasis","AUTO","height","isFinite","targetRef","useRef","duoLayout","activeFit","findResponsiveItem","getBreakpoints","padding","duoLayoutFlex","duoRibbonWidth","position","flexDirection","ribbon","Colorway","PRIMARY_GRADIENT","backgroundImage","primary","primaryGradient","ref","withRibbonImpression","randomWidth","Math","floor","random","puree","lines","elements","RecursiveShortcode","rest","fontStyle","getUsfConfig","wlSelectors","getAppConfig","mapStateToProps","connect","attributes","externalRoutes","to","goto","analyticskey","TextButtonSize","escapeShortCodes","nl2br","string","split","map","reduce","prev","cur","text","newline","isFalse","formatText","ReactTooltip","lazy","eventToggle","label","fallback","tagName","useDefaultStyles","maxWidth","Glyph","Sup","List","OrderedList","ListItem","TickListItem","ProductPrice","PhoneNumber","element","genericShortcodeHandler","shortcodeName","Component","String","Element","nuller","Text","Italic","Bold","Alt","Link","Tooltip","glyph","PendingShortcode","BaseComponent","isNotEmpty","isNotNil","mapIndexed","rA","arr","fn","callToAction","kind","addingStatus","handleClick","status","Status","PENDING","SUCCESS","FAILURE","buttonProps","onClick","Behavior","formatPricingTier","tier","paymentInterval","term","behavior","state","buttonId","getExternalRoutes","getRibbon","product","ribbonList","createRibbonName","getAddingStatus","addToBasket","applyVoucher","setVisibility","openReduxModal","signals","open","productClicked","promotionClicked","productAddToBasket","stateProps","dispatchProps","ownProps","window","useWindow","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","ADD_TO_BASKET","APPLY_VOUCHER","CONFIGURE","PLAY_VIDEO","SET_VISIBILITY","NAVIGATION","linkAttribution"],"mappings":"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","file":"pex-static/20/31.19a5186ef76abc7259c3.chunk.js","sourcesContent":["import React from 'react';\nimport {\n withProps,\n defaultProps,\n} from '@team-griffin/rehook';\nimport pureEnhance from '@ux/pure-enhance';\nimport { Container } from '@ux/grid';\nimport PaddingBox from '@ux/padding-box';\nimport { Heading02, SubHeading01 } from '@ux/typography';\nimport Shortcode, { ShortcodeProps } from 'components/Shortcode';\nimport Ribbon from 'components/ribbons/Ribbon';\nimport CallToAction from 'components/common/CallToAction';\nimport { withBreakpointsHook, BreakpointProps } from '@ux/responsive';\nimport { isNotNilOrEmpty } from 'crosscutting/ramda';\nimport visibilitySet from 'presentation/hocs/visibilitySet';\nimport errorBoundary from 'presentation/hocs/errorBoundary';\nimport { getAgainst } from 'presentation/utils/colorway';\nimport stylesheet, { Styles } from './Info.stylesheet';\nimport * as r from 'ramda';\nimport { RibbonProps } from 'domain/constants/ribbons';\nimport { CTA } from 'core/ribbons/cta';\n\ninterface OuterProps extends RibbonProps {\n title: ShortcodeProps,\n subtitle: ShortcodeProps,\n ctas: CTA[],\n}\ninterface DefaultProps extends OuterProps {\n hBaseline: number,\n}\nexport interface InnerProps extends DefaultProps, BreakpointProps {\n styles: Styles,\n hasTitle: boolean,\n hasSubtitle: boolean,\n hasCta: boolean,\n}\n\ndeclare const i: number;\ndeclare const cta: CTA;\n\nexport const PureInfo = ({\n id,\n styles,\n theme,\n loading,\n name,\n title,\n subtitle,\n ctas,\n colorway,\n hasTitle,\n hasSubtitle,\n hasCta,\n hBaseline,\n isMinSm,\n layout,\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\nexport const enhance = pureEnhance(\n 'Intro', {\n hocs: [\n errorBoundary,\n visibilitySet,\n ],\n hooks: [\n withBreakpointsHook,\n defaultProps({\n hBaseline: 1,\n }),\n withProps((ownerProps: DefaultProps) => ({\n hasTitle: isNotNilOrEmpty(ownerProps.title),\n hasSubtitle: isNotNilOrEmpty(ownerProps.subtitle),\n hasCta: isNotNilOrEmpty(ownerProps.ctas),\n })),\n withProps(stylesheet),\n ],\n }\n);\n\nexport default enhance(PureInfo);\n","import { useStyles } from '@team-griffin/stylr';\nimport { modifier, percentage } from '@ux/style-utils';\nimport { getTitleColor, getBodyColor } from 'presentation/utils/colorway';\nimport { gu2px } from '@ux/theme-utils';\nimport { Alignment } from 'domain/constants/alignment';\nimport { InnerProps } from './Info';\nimport { CSSProperties } from 'react';\n\nexport interface Styles {\n root: CSSProperties,\n title: CSSProperties,\n subtitle: CSSProperties,\n ctas: CSSProperties,\n cta: CSSProperties,\n}\nexport default ({\n theme,\n layout,\n colorway,\n isMinSm,\n}: InnerProps) => {\n const {\n spacing,\n } = theme;\n\n const {\n alignment,\n } = layout;\n\n return useStyles({\n default: {\n root: {\n textAlign: 'left',\n display: 'block',\n width: percentage(100),\n },\n title: {\n color: getTitleColor(theme, colorway),\n },\n subtitle: {\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 ctas: {\n display: 'flex',\n },\n cta: {\n marginRight: gu2px(1, spacing),\n },\n },\n\n [modifier('alignment', Alignment.CENTER)]: {\n root: {\n textAlign: 'center',\n },\n ctas: {\n justifyContent: 'center',\n },\n },\n\n }, [\n { isMinSm },\n { alignment },\n ]);\n};\n","import Info from './Info';\n\nexport default Info;\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 {\n compose,\n lifecycle,\n withState,\n withProps,\n} 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 {\n getBackgroundColor,\n getTitleColor,\n} 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 } 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 = ({\n colorway,\n isMinSm,\n isMinMd,\n isMinLg,\n layout,\n flush,\n}: InnerProps) => {\n const { theme } = useTheme();\n const {\n spacing,\n } = theme;\n\n return useStyles({\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 },\n { isMinSm },\n { 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 );\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 { 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 { 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\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 React from 'react';\nimport { puree, GetInnerProps } from '@ux/pure-enhance';\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 enhance = puree('PendingShortcode')();\n\ntype InnerProps = GetInnerProps;\n\nconst PurePendingShortcode = ({\n code,\n against,\n}: InnerProps) => (\n \n \n
\n);\n\nexport default enhance(PurePendingShortcode);\n","import React from 'react';\nimport * as r from 'ramda';\nimport pureEnhance from '@ux/pure-enhance';\nimport { RecursiveShortcodeProps } from './Shortcode';\n\nexport default pureEnhance(\n 'Alt',\n)(({\n RecursiveShortcode,\n elements,\n theme,\n against,\n ...rest\n}) => (\n \n \n \n));\n","import React from 'react';\nimport { RecursiveShortcodeProps } from './Shortcode';\nimport pureEnhance from '@ux/pure-enhance';\n\nexport default pureEnhance(\n 'Bold',\n)(({ elements, RecursiveShortcode, ...rest }) => (\n \n \n \n));\n","import React from 'react';\nimport pureEnhance from '@ux/pure-enhance';\nimport { RecursiveShortcodeProps } from './Shortcode';\n\nexport default pureEnhance(\n 'Bold',\n)(({ elements, RecursiveShortcode, ...rest }) => (\n \n \n \n));","import React from 'react';\nimport { withProps } from '@team-griffin/rehook';\nimport TextButton, {\n Size as TextButtonSize,\n} from '@ux/text-button';\nimport { connect } from '@ux/fabric';\nimport { selectors as wlSelectors } from '@ux/whitelabel';\nimport pureEnhance from '@ux/pure-enhance';\nimport * as r from 'ramda';\nimport { RecursiveShortcodeProps } from './Shortcode';\n\nconst getUsfConfig = wlSelectors.getAppConfig('usf');\n\nconst mapStateToProps = r.pipe(\n getUsfConfig,\n r.pathOr([], [ 'externalRoutes' ]),\n r.objOf('externalRoutes'),\n);\n\nexport default pureEnhance(\n 'Link', [\n //@ts-ignore (apparently incompatible states)\n withProps(connect(mapStateToProps)),\n ])(({\n RecursiveShortcode,\n elements,\n contentType,\n attributes,\n theme,\n against,\n externalRoutes,\n ...rest\n}) => (\n \n \n \n));\n","import React, { Fragment } from 'react';\nimport { isFalse } from '@team-griffin/capra';\nimport * as r from 'ramda';\nimport pureEnhance from '@ux/pure-enhance';\n\nconst escapeShortCodes = r.pipe(\n r.replace('[!', '['),\n r.replace('!/]', '/]'),\n r.replace('[/!', '[/'),\n);\n\nconst nl2br = (string: string) => string.split('\\n')\n .map(r.identity)\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) => r.pipe(\n escapeShortCodes,\n // unless newline is false, run through nl2br\n r.unless(\n r.always(isFalse(newline)),\n nl2br,\n ),\n)(text);\n\ninterface Props {\n text: string,\n nl2br: Element,\n}\nexport default pureEnhance(\n 'Text',\n)(({ text, nl2br }) => (\n \n {formatText(text, nl2br)}\n \n));\n","import React, { lazy, Suspense } from 'react';\nimport { withProps } from '@team-griffin/rehook';\nimport TextButton, { Size as TextButtonSize } from '@ux/text-button';\nimport { withBreakpointsHook } from '@ux/responsive';\nimport { gu2px } from '@ux/theme-utils';\nimport pureEnhance from '@ux/pure-enhance';\nimport { RecursiveShortcodeProps } from './Shortcode';\n\n/*\n React-Tooltip is a heavy dependency therefore we asynchronously load it in\n and gracefully decorate the functionality in once it has loaded\n*/\nconst ReactTooltip = lazy(() => import(\n /* webpackChunkName: \"react-tooltip-lite\" */\n 'react-tooltip-lite'\n));\n\nexport default pureEnhance(\n 'TooltipShortcode', [\n withBreakpointsHook,\n withProps(({\n theme,\n isMinLg,\n }: RecursiveShortcodeProps) => {\n return {\n eventToggle: isMinLg ? void 0 : 'onClick',\n padding: `${gu2px(2, theme.spacing)}px`, // requires String; gross\n };\n }),\n ],\n)(({\n RecursiveShortcode,\n theme,\n against,\n padding,\n eventToggle,\n attributes,\n elements,\n}) => {\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","import React, { Fragment, Suspense, lazy, ReactNode } from 'react';\nimport pureEnhance from '@ux/pure-enhance';\nimport PendingShortcode from './PendingShortcode';\nimport { getAgainst } from 'presentation/utils/colorway';\nimport { nuller } from '@team-griffin/capra';\nimport { Theme } from '@ux/theme-utils';\nimport { Layout } from 'domain/constants/layout';\nimport { Styles } from './stylesheets';\nimport { BreakpointProps } from '@ux/responsive';\nimport { ShortcodeProps } from '.';\nimport * as r from 'ramda';\nimport { Against } from '@ux/button';\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';\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 RecursiveShortcodeProps extends BreakpointProps{\n elements: ShortcodeProps[],\n layout?: Layout,\n RecursiveShortcode: React.LazyExoticComponent,\n theme?: Theme,\n against?: Against,\n styles?: Styles,\n attributes?: {\n use?: string,\n number?: number,\n analyticskey?: string,\n goto?: string,\n label?: ReactNode,\n prices?: string,\n inctax?: string,\n }\n nl2br?: boolean,\n rest: {\n [key: string]: any,\n }\n [key: string]: any,\n}\nconst RecursiveShortcode = ({ elements, ...rest }: RecursiveShortcodeProps) => (\n \n \n \n \n \n);\n\nexport interface ShortcodeOuterProps {\n theme?: Theme,\n against?: Against,\n RecursiveShortcode: React.LazyExoticComponent,\n code: RecursiveShortcodeProps,\n}\n\nfunction genericShortcodeHandler(\n shortcodeName: string,\n Component: React.LazyExoticComponent | React.ComponentType,\n) {\n return [\n r.both(\n r.propEq('type', 'element'),\n r.propEq('name', shortcodeName),\n ),\n (props: ShortcodeOuterProps) => (\n \n ),\n ];\n}\n\nconst Shortcode = ({ code, ...rest }: ShortcodeOuterProps) => {\n const props = r.pipe(\n r.ifElse(\n () => r.is(String, code),\n r.assoc('code', code),\n r.mergeDeepLeft(code),\n ),\n r.over(\n r.lensProp('against'),\n (colorway) => getAgainst(colorway),\n ),\n r.assoc('RecursiveShortcode', RecursiveShortcode),\n r.over(\n r.lensProp('attributes'),\n r.defaultTo({}),\n ),\n )(rest);\n\n // @ts-ignore\n const Element = r.cond([\n [\n r.isNil,\n nuller,\n ],\n [\n r.propIs(String, 'code'),\n () => (\n //@ts-ignore\n \n ),\n ],\n [\n r.propEq('type', 'text'),\n () => (\n \n ),\n ],\n genericShortcodeHandler('i', Italic),\n genericShortcodeHandler('b', Bold),\n genericShortcodeHandler('alt', Alt),\n genericShortcodeHandler('sup', Sup),\n genericShortcodeHandler('glyph', Glyph),\n genericShortcodeHandler('tel', PhoneNumber),\n genericShortcodeHandler('link', Link),\n genericShortcodeHandler('productprice', ProductPrice),\n genericShortcodeHandler('tooltip', Tooltip),\n [\n r.both(\n r.propEq('type', 'element'),\n r.propEq('name', 'list'),\n ),\n () => r.ifElse(\n r.propEq('style', 'number'),\n () => (\n \n ),\n () => (\n
\n ),\n )(props.attributes),\n ],\n [\n r.both(\n r.propEq('type', 'element'),\n r.propEq('name', 'li'),\n ),\n () => r.ifElse(\n r.propEq('style', 'glyph'),\n () => (\n \n ),\n () => (\n \n ),\n )(props.attributes),\n ],\n //@ts-ignore\n genericShortcodeHandler('root', RecursiveShortcode),\n [\n r.T,\n nuller,\n ],\n ]);\n\n return (\n \n );\n};\n\nconst ShortcodeWrapper = (props: ShortcodeOuterProps) => (\n \n )}\n >\n \n \n);\n\nconst enhance = pureEnhance('Shortcode');\n\nexport default enhance(ShortcodeWrapper);\n","import Shortcode, { RecursiveShortcodeProps } from './Shortcode';\n\n//TODO: help.. please.\nexport type ShortcodeProps = RecursiveShortcodeProps;\n\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 enum Alignment {\n STARTING = 'STARTING',\n CENTER = 'CENTER',\n}\n\nexport default null;\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","import React from 'react';\nimport {\n defaultProps,\n} from '@team-griffin/rehook';\nimport Button, {\n Against,\n Status,\n Size,\n} from '@ux/reactive-button';\nimport callToAction from 'presentation/hocs/callToAction';\nimport * as r from 'ramda';\nimport pureEnhance from '@ux/pure-enhance';\nimport { Theme } from '@ux/theme-utils';\nimport { CTA } from 'core/ribbons/cta';\nimport { Product } from '@ux/product';\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}\ninterface DefaultProps extends OuterProps {\n against: Against,\n}\ninterface InnerProps extends DefaultProps {\n addingStatus: Status,\n handleClick: (props: any) => () => void,\n}\n\nconst PureCallToAction = ({\n kind,\n against,\n label,\n addingStatus,\n handleClick,\n ...props\n}: InnerProps) => {\n const status = r.cond([\n [ r.equals('REQUESTED'), r.always(Status.PENDING) ],\n [ r.equals('SUCCESS'), r.always(Status.SUCCESS) ],\n [ r.equals('FAILED'), r.always(Status.FAILURE) ],\n [ r.T, r.always(Status.DEFAULT) ],\n ])(addingStatus);\n\n const goto = r.pathOr(null, [ 'behavior', 'goto' ], props);\n\n const buttonProps = r.omit([\n 'colorway',\n 'actions',\n 'buttonId',\n 'ribbonId',\n 'index',\n 'behavior',\n 'handlePlayVideoClick',\n 'handleSetVisibilityClick',\n 'handleConfigureClick',\n 'handleApplyVoucherClick',\n 'handleAddToBasketClick',\n 'handleNavigateClick',\n 'handleAnalytics',\n 'ribbonList',\n ], props);\n\n return (\n \n );\n};\n\nexport const enhance = pureEnhance(\n 'CallToAction',\n {\n hocs: [\n callToAction,\n ],\n hooks: [\n defaultProps({\n against: Against.LIGHT,\n }),\n ],\n },\n);\n\nexport default enhance(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 {\n compose,\n defaultProps,\n withProps,\n withHandlers,\n} 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 {\n productClicked,\n promotionClicked,\n productAddToBasket,\n} 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 { selectors } from '@ux/product';\n\nconst 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\n const ribbonList = createRibbonName(ribbonType, ribbonName);\n return {\n externalRoutes,\n addingStatus: getAddingStatus(buttonId)(state),\n buttonId,\n ribbonList,\n product,\n };\n};\n\nconst mapDispatchToProps = (dispatch) => bindActionCreators({\n addToBasket,\n applyVoucher,\n setVisibility,\n openReduxModal: signals.open,\n productClicked,\n promotionClicked,\n productAddToBasket,\n}, dispatch);\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 defaultProps({\n behavior: {},\n }),\n connect(\n mapStateToProps,\n mapDispatchToProps,\n mergeProps,\n ),\n withProps(() => ({\n window: useWindow(),\n })),\n withHandlers({\n handleAnalytics: (props) => () => {\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 },\n }),\n withHandlers({\n handleAddToBasketClick: (props) => () => {\n const {\n buttonId,\n product,\n actions: {\n addToBasket,\n },\n behavior: {\n productId,\n postAction,\n pricingTier,\n },\n handleAnalytics,\n } = props;\n const productData = {\n skuId: product ? product.defaultSkuId : null,\n name: product ? product.name : null,\n price: product ? selectors.getPrice({ product, includeTax: false }) : 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 },\n handleNavigateClick: ({ handleAnalytics }) => () => {\n handleAnalytics();\n },\n handleApplyVoucherClick: ({\n buttonId,\n actions: {\n applyVoucher,\n },\n behavior: {\n voucherCode,\n postAction,\n },\n }) => () => {\n applyVoucher(buttonId, voucherCode, postAction);\n },\n handleConfigureClick: ({\n window,\n behavior: {\n productId,\n pricingTier,\n },\n }) => {\n return () => {\n const tier = formatPricingTier(pricingTier);\n const query = new URLSearchParams();\n query.append('productId', productId);\n if (tier) {\n query.append('pricingTier', tier);\n }\n const q = query.toString();\n window.location.href = `/configure?${q}`;\n };\n },\n handleSetVisibilityClick: ({\n actions: {\n setVisibility,\n },\n behavior,\n }) => () => {\n setVisibility(behavior.visibilitySet);\n },\n handlePlayVideoClick: ({\n actions: {\n openReduxModal,\n },\n behavior: {\n videoId,\n provider,\n },\n }) => () => {\n openReduxModal({\n route: 'PLAY_VIDEO',\n params: {\n videoId,\n provider,\n },\n });\n },\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 // add an analytics prefixed `id` to the cta if required\n id: (() => {\n const behavior = ownerProps.behavior;\n const id = ownerProps.id;\n if(behavior?.analytics?.linkAttribution) {\n return `usf-cta-${behavior.analytics.linkAttribution}`\n } else {\n return id;\n }\n })(),\n })),\n);"],"sourceRoot":""}