{"version":3,"sources":["webpack:///./presentation/components/ribbons/tiers/MobileTier.tsx","webpack:///./presentation/components/ribbons/tiers/MobileTier.stylesheet.ts","webpack:///./presentation/components/ribbons/tiers/Mobile.tsx","webpack:///../node_modules/@ux/text-button/dist/es/text-button.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:///./presentation/components/Shortcode/Tooltip.tsx","webpack:///./presentation/components/Shortcode/Shortcode.tsx","webpack:///./presentation/components/Shortcode/index.ts","webpack:///./presentation/hocs/withLanguage.ts","webpack:///./presentation/utils/createImageAlt.ts","webpack:///../node_modules/@ux/badge/dist/es/badge.js","webpack:///./domain/constants/callToAction.ts","webpack:///./presentation/hocs/callToAction.js","webpack:///../node_modules/react-animate-height/lib/AnimateHeight.js","webpack:///./presentation/utils/rgba.js"],"names":["ArrowDirection","enhance","pureEnhance","hocs","callToAction","withLanguage","hooks","withProps","ownerProps","to","behavior","goto","dynamicLinkHook","hasGlyph","isNotNilOrEmpty","glyph","hasImage","imageUrl","hasBadge","badge","badgeKind","r","Colorway","DARK","HIGHLIGHT","BadgeKind","PRIMARY","arrowIcon","CLOSED","onClick","evt","onExpandClick","first","preventDefault","setTimeout","handleClick","theme","colorway","spacing","typography","palette","contrastColor","getContrastColor","useStyles","default","root","longhand","bottomWidth","bottomStyle","color","opacify","grey06","button","position","display","justifyContent","alignItems","width","percentage","fontFamily","content","borderWidth","outline","textAlign","cursor","cssSides","Side","Y","gu2px","X","getTitleColor","backgroundColor","textDecoration","text","flex","flexBasis","overflow","textOverflow","whiteSpace","icon","marginRight","marginTop","marginBottom","image","height","minWidth","opacity","objectFit","objectPosition","tint","top","left","right","bottom","marginLeft","arrow","modifier","rgba","borderBottomColor","highlightContrast","primaryContrast","PRIMARY_GRADIENT","styles","label","selected","DynamicLink","href","externalRoutes","style","data-selector","size","loading","src","alt","createImageAlt","Shortcode","against","code","flush","kind","PureMobileTiers","id","ribbonId","otherLinks","hasSelectedLink","selectedLink","arrowDirection","transitionHeight","intl","formatMessage","duration","key","i","link","injectIntl","withState","withHandlers","setExpanded","expanded","links","OPENED","Size","Against","ContentType","_defineProperty","obj","value","Object","defineProperty","enumerable","configurable","writable","disabled","block","caps","MD","contentType","DEFAULT","_ref","_useStyles","hover","active","fill","LIGHT","secondary","NEUTRAL","tertiary","PRIMARY_FADED","HIGHLIGHT_FADED","highlight","assign","A","lineHeight","paddingBottom","transition","inner","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","randomWidth","Math","floor","random","puree","lines","elements","RecursiveShortcode","rest","primary","fontWeight","fontStyle","getUsfConfig","wlSelectors","getAppConfig","mapStateToProps","connect","attributes","analyticskey","TextButtonSize","escapeShortCodes","nl2br","string","split","map","reduce","prev","cur","newline","isFalse","formatText","ReactTooltip","lazy","withBreakpointsHook","isMinLg","eventToggle","padding","CallToAction","fallback","tagName","useDefaultStyles","maxWidth","Glyph","Sup","List","OrderedList","ListItem","TickListItem","ProductPrice","PhoneNumber","element","genericShortcodeHandler","shortcodeName","Component","props","String","getAgainst","Element","nuller","Text","Italic","Bold","Alt","Link","Tooltip","PendingShortcode","BaseComponent","compose","state","currentLanguage","getCurrentLanguage","str","match","replace","Kind","isAgainstPrimary","isAgainstPrimaryGradient","isAgainstHighlight","isAgainstNeutral","Badge","_reactCSS","_ref$theme","curvature","SECONDARY","grey04","grey10","SUCCESS","green01","WARNING","yellow01","ERROR","red01","WEAK","borderRadius","STRONG","component","Behavior","formatPricingTier","defaultProps","buttonId","index","getExternalRoutes","ribbon","getRibbon","ribbonType","ribbonName","product","ribbonList","createRibbonName","addingStatus","getAddingStatus","dispatch","bindActionCreators","addToBasket","applyVoucher","setVisibility","push","openReduxModal","signals","open","productClicked","promotionClicked","productAddToBasket","stateProps","dispatchProps","ownProps","actions","handleAnalytics","ctaType","type","list","productId","promotion","handleAddToBasketClick","postAction","pricingTier","productData","name","price","selectors","getPrice","includeTax","category","categoryName","handleNavigateClick","handleApplyVoucherClick","voucherCode","handleConfigureClick","initialSku","query","qs","stringify","pathname","search","handleSetVisibilityClick","visibilitySet","handlePlayVideoClick","videoId","provider","route","params","ADD_TO_BASKET","APPLY_VOUCHER","CONFIGURE","SET_VISIBILITY","PLAY_VIDEO","NAVIGATION","analytics","linkAttribution","exports","_typeof","Symbol","iterator","constructor","_extends","target","arguments","source","_createClass","defineProperties","descriptor","Constructor","protoProps","staticProps","_react2","_interopRequireDefault","_propTypes2","_classnames2","__esModule","ANIMATION_STATE_CLASSES","animating","animatingUp","animatingDown","animatingToHeightZero","animatingToHeightAuto","animatingToHeightSpecific","static","staticHeightZero","staticHeightAuto","staticHeightSpecific","PROPS_TO_OMIT","omit","_len","keys","Array","_key","res","objectKeys","cancelAnimationFrames","requestAnimationFrameIDs","forEach","cancelAnimationFrame","isNumber","n","isNaN","parseFloat","isFinite","isPercentage","substr","runCallback","callback","AnimateHeight","_React$Component","instance","TypeError","_classCallCheck","this","_this","self","ReferenceError","_possibleConstructorReturn","__proto__","getPrototypeOf","animationFrameIDs","animationStateClasses","getStaticStateClasses","shouldUseTransitions","subClass","superClass","create","setPrototypeOf","_inherits","contentElement","hideContent","prevProps","prevState","_this2","_props","delay","onAnimationEnd","onAnimationStart","_cx","showContent","contentHeight","offsetHeight","totalDuration","newHeight","timeoutState","isCurrentHeightAuto","timeoutAnimationStateClasses","setState","clearTimeout","timeoutID","animationClassesTimeoutID","requestAnimationFrame","startAnimationHelper","_cx2","_cx3","_this3","_props2","animateOpacity","applyInlineTransitions","className","contentClassName","easing","_state","componentStyle","WebkitTransition","contentStyle","componentClasses","apply","undefined","concat","ref","el","propTypes","bool","object","any","isRequired","number","propName","componentName","func","c","a","alpha"],"mappings":"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","file":"pex-static/67.56e4dbe1dfc78da7de0a.chunk.js","sourcesContent":["import React, { ComponentType } from 'react';\nimport {\n withProps,\n} from '@team-griffin/rehook';\nimport Shortcode, { ShortcodeProps } from 'components/Shortcode';\nimport callToAction from 'presentation/hocs/callToAction';\nimport Badge, { Kind as BadgeKind } from '@ux/badge';\nimport Glyph from '@ux/glyphs';\nimport { Colorway } from 'domain/constants/colorway';\nimport { isNotNilOrEmpty } from 'crosscutting/ramda';\nimport { dynamicLinkHook } from '@ux/dynamic-link';\nimport stylesheet, { Styles } from './MobileTier.stylesheet';\nimport * as r from 'ramda';\nimport createImageAlt from 'presentation/utils/createImageAlt';\nimport withLanguage from 'presentation/hocs/withLanguage';\nimport { Theme } from '@ux/theme-utils';\nimport pureEnhance from '@ux/pure-enhance';\n\nexport enum ArrowDirection {\n OPENED = 'OPENED',\n CLOSED = 'CLOSED',\n}\n\ninterface OuterProps {\n ribbonId?: string,\n theme: Theme,\n colorway: Colorway,\n imageUrl?: string,\n badge?: ShortcodeProps,\n glyph?: string,\n behavior?: {\n goto: string,\n },\n arrowDirection?: ArrowDirection,\n first?: boolean,\n onExpandClick: (evt?: any) => void,\n selected?: boolean,\n label?: ShortcodeProps | string,\n href?: string,\n externalRoutes: string[],\n}\n\ninterface MiddleProps extends OuterProps {\n onClick?: (evt?: any) => void,\n handleClick?: (evt?: any) => void,\n}\nexport interface InnerProps extends MiddleProps {\n styles: Styles,\n currentLanguage: string,\n hasGlyph: boolean,\n hasImage: boolean,\n hasBadge: boolean,\n badgeKind: BadgeKind,\n arrowIcon: string,\n to: string,\n onClick: (evt: any) => void,\n DynamicLink: ComponentType | string,\n}\nexport const PureMobileTier = ({\n theme,\n colorway,\n styles,\n glyph,\n imageUrl,\n badge,\n label,\n onClick,\n hasBadge,\n hasGlyph,\n hasImage,\n selected,\n badgeKind,\n arrowIcon,\n DynamicLink,\n to,\n href,\n externalRoutes,\n}: InnerProps) => (\n
\n \n \n
\n \n \n \n \n \n \n
\n
\n \n \n\n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n
\n);\n\nexport const enhance = pureEnhance(\n 'MobileTier', {\n hocs: [\n callToAction,\n withLanguage,\n ],\n hooks: [\n withProps((ownerProps: OuterProps) => ({ to: ownerProps.behavior.goto })),\n withProps(dynamicLinkHook),\n withProps((ownerProps: MiddleProps) => ({\n hasGlyph: isNotNilOrEmpty(ownerProps.glyph),\n hasImage: isNotNilOrEmpty(ownerProps.imageUrl),\n hasBadge: isNotNilOrEmpty(ownerProps.badge),\n badgeKind: r.ifElse(\n r.pipe(\n r.prop('colorway'),\n r.contains(r.__, [\n Colorway.DARK,\n Colorway.HIGHLIGHT,\n ]),\n ),\n r.always(BadgeKind.PRIMARY),\n r.always(BadgeKind.HIGHLIGHT),\n )(ownerProps),\n arrowIcon: r.ifElse(\n r.propEq('arrowDirection', ArrowDirection.CLOSED),\n r.always('chevronDown'),\n r.always('chevronUp'),\n )(ownerProps),\n onClick: (evt: any) => {\n // toggle the nav\n ownerProps.onExpandClick();\n // if we're first item, just toggle the nav and no more\n if (ownerProps.first) {\n if (evt && typeof evt.preventDefault === 'function') {\n // stop jump to top of page\n evt.preventDefault();\n }\n } else {\n // wait for the menu to close and then navigate or executa cta\n setTimeout(() => {\n if (ownerProps.onClick) {\n ownerProps.onClick();\n }\n if (ownerProps.handleClick) {\n ownerProps.handleClick();\n }\n }, 600); // offset by the menu transition time so we don't scroll past\n }\n },\n })),\n withProps(stylesheet),\n ],\n },\n);\n\nexport default enhance(PureMobileTier);\n","import { useStyles } from '@team-griffin/stylr';\nimport { Colorway } from 'domain/constants/colorway';\nimport { content } from '@ux/type-size';\nimport cssSides, { Side } from '@team-griffin/css-sides';\nimport longhand from '@team-griffin/css-longhand';\nimport { gu2px } from '@ux/theme-utils';\nimport { percentage, modifier, opacify } from '@ux/style-utils';\nimport rgba from 'presentation/utils/rgba';\nimport { getContrastColor, getTitleColor } from 'presentation/utils/colorway';\nimport { InnerProps } from './MobileTier';\nimport { CSSProperties } from 'react';\nimport * as r from 'ramda';\n\nexport interface Styles {\n root: CSSProperties,\n button: CSSProperties,\n text: CSSProperties,\n icon: CSSProperties,\n imageCropper: CSSProperties,\n image: CSSProperties,\n tint: CSSProperties,\n badge: CSSProperties,\n arrow: CSSProperties,\n arrowIcon: CSSProperties,\n}\n\nexport default ({\n theme,\n colorway,\n}: InnerProps) => {\n const {\n spacing,\n typography,\n palette,\n } = theme;\n\n const contrastColor = getContrastColor(theme, colorway);\n\n return useStyles({\n default: {\n root: {\n ...longhand('border', {\n bottomWidth: 2,\n bottomStyle: 'solid',\n color: opacify(palette.grey06, 0.2),\n }),\n },\n button: {\n position: 'relative',\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n width: percentage(100),\n fontFamily: typography.display,\n ...content(typography),\n borderWidth: 0,\n outline: 0,\n textAlign: 'left',\n cursor: 'pointer',\n ...cssSides('padding', Side.Y, gu2px(2, spacing)),\n // 3GU standard + 1GU Container\n ...cssSides('padding', Side.X, gu2px(4, spacing)),\n color: getTitleColor(theme, colorway),\n backgroundColor: 'transparent',\n textDecoration: 'none',\n },\n text: {\n flex: 1,\n flexBasis: 'auto',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n },\n icon: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n marginRight: gu2px(1, spacing),\n marginTop: r.negate(gu2px(0.5, spacing)),\n marginBottom: r.negate(gu2px(0.5, spacing)),\n width: gu2px(3, spacing),\n color: contrastColor,\n },\n image: {\n width: gu2px(3, spacing),\n height: gu2px(3, spacing),\n minWidth: gu2px(3, spacing),\n opacity: 1,\n objectFit: 'cover',\n objectPosition: 'center',\n },\n tint: {\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n },\n badge: {\n marginLeft: gu2px(1, spacing),\n },\n arrow: {\n marginLeft: gu2px(3, spacing),\n },\n arrowIcon: {\n width: gu2px(3, spacing),\n color: contrastColor,\n },\n },\n\n [modifier('colorway', Colorway.DARK)]: {\n tint: {\n backgroundColor: rgba('#fff', 0.05),\n },\n },\n\n [modifier('colorway', Colorway.HIGHLIGHT)]: {\n root: {\n borderBottomColor: opacify(palette.highlightContrast, 0.2),\n },\n tint: {\n backgroundColor: rgba('#000', 0.05),\n },\n },\n\n [modifier('colorway', Colorway.PRIMARY)]: {\n root: {\n borderBottomColor: opacify(palette.primaryContrast, 0.2),\n },\n tint: {\n backgroundColor: rgba('#000', 0.05),\n },\n },\n\n [modifier('colorway', Colorway.PRIMARY_GRADIENT)]: {\n root: {\n borderBottomColor: opacify(palette.primaryContrast, 0.2),\n },\n tint: {\n backgroundColor: rgba('#000', 0.05),\n },\n },\n }, [\n { colorway },\n ]);\n};\n","import React from 'react';\nimport {\n withProps,\n withState,\n withHandlers,\n} from '@team-griffin/rehook';\nimport { injectIntl, IntlShape } from 'react-intl';\nimport AnimateHeight from 'react-animate-height';\nimport Tier, { ArrowDirection } from './MobileTier';\nimport * as r from 'ramda';\nimport { Theme } from '@ux/theme-utils';\nimport { Colorway } from 'domain/constants/colorway';\nimport pureEnhance from '@ux/pure-enhance';\nimport { Link } from './Tiers';\n\n\ninterface OuterProps {\n theme: Theme,\n selected: number,\n id: string,\n colorway: Colorway,\n links: Link[],\n externalRoutes: string[],\n}\n\ninterface WithHandlerProps extends OuterProps {\n expanded: boolean,\n onExpandClick: (props: {\n setExpanded: any;\n expanded: any;\n }) => () => any,\n}\ninterface InnerProps extends WithHandlerProps {\n hasSelectedLink: boolean,\n arrowDirection: ArrowDirection,\n transitionHeight: number,\n otherLinks: Link[],\n intl: IntlShape,\n selectedLink: Link,\n}\n\ndeclare const i: number;\ndeclare const link: Link;\nexport const PureMobileTiers = ({\n id: ribbonId,\n theme,\n otherLinks,\n hasSelectedLink,\n selectedLink,\n colorway,\n onExpandClick,\n arrowDirection,\n transitionHeight,\n intl,\n externalRoutes,\n}: InnerProps) => (\n \n);\n\nexport const enhance = pureEnhance(\n 'MobileTiers', {\n hocs: [\n injectIntl,\n ],\n hooks: [\n withState('expanded', 'setExpanded', false),\n withHandlers({\n onExpandClick: ({\n setExpanded,\n expanded,\n }: {\n setExpanded: Function,\n expanded: boolean,\n }) => () => setExpanded(r.not(expanded)),\n }),\n withProps((ownerProps: WithHandlerProps) => ({\n hasSelectedLink: ownerProps.selected > -1,\n // if no selected link, return whole array, otherwise remove the selected item\n otherLinks: r.ifElse(\n r.equals(-1),\n r.always(ownerProps.links),\n () => r.remove(ownerProps.selected, 1, ownerProps.links),\n )(ownerProps.selected),\n selectedLink: ownerProps.links[ownerProps.selected],\n arrowDirection: r.ifElse(\n r.propEq('expanded', true),\n r.always(ArrowDirection.OPENED),\n r.always(ArrowDirection.CLOSED),\n )(ownerProps),\n transitionHeight: r.ifElse(\n r.propEq('expanded', true),\n r.always('auto'),\n r.always(0),\n )(ownerProps),\n })),\n ],\n },\n);\n\nexport default enhance(PureMobileTiers);\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 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 {\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 pureEnhance from '@ux/pure-enhance';\nimport { defaultProps } from '@team-griffin/rehook';\nimport { Content } from '@ux/typeface';\nimport { modifier, withStylesHook } from '@ux/style-utils';\nimport cssSides, { Side } from '@team-griffin/css-sides';\nimport { gu2px, Curvature } from '@ux/theme-utils';\nimport { footnote } from '@ux/type-size';\nimport reactCSS from 'reactcss';\nimport { equals, cond, always, T } from 'ramda';\n\nvar Kind;\n\n(function (Kind) {\n Kind[\"PRIMARY\"] = \"PRIMARY\";\n Kind[\"SECONDARY\"] = \"SECONDARY\";\n Kind[\"SUCCESS\"] = \"SUCCESS\";\n Kind[\"WARNING\"] = \"WARNING\";\n Kind[\"ERROR\"] = \"ERROR\";\n Kind[\"HIGHLIGHT\"] = \"HIGHLIGHT\";\n})(Kind || (Kind = {}));\n\nvar Against;\n\n(function (Against) {\n Against[\"PRIMARY\"] = \"PRIMARY\";\n Against[\"PRIMARY_GRADIENT\"] = \"PRIMARY_GRADIENT\";\n Against[\"LIGHT\"] = \"LIGHT\";\n Against[\"NEUTRAL\"] = \"NEUTRAL\";\n Against[\"DARK\"] = \"DARK\";\n Against[\"HIGHLIGHT\"] = \"HIGHLIGHT\";\n})(Against || (Against = {}));\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nvar isAgainstPrimary = equals(Against.PRIMARY);\nvar isAgainstPrimaryGradient = equals(Against.PRIMARY_GRADIENT);\nvar isAgainstHighlight = equals(Against.HIGHLIGHT);\nvar isAgainstNeutral = equals(Against.NEUTRAL);\nvar stylesheet = (function (_ref) {\n var _reactCSS;\n\n var _ref$theme = _ref.theme,\n palette = _ref$theme.palette,\n spacing = _ref$theme.spacing,\n typography = _ref$theme.typography,\n curvature = _ref$theme.curvature,\n kind = _ref.kind,\n against = _ref.against,\n flush = _ref.flush;\n return reactCSS((_reactCSS = {\n default: {\n root: Object.assign({\n display: 'inline-block'\n }, cssSides('padding', Side.A, gu2px(0.75, spacing)), cssSides('margin', Side.X, gu2px(1, spacing)), footnote(typography), {\n lineHeight: 1,\n whiteSpace: 'nowrap'\n })\n },\n flush: {\n root: Object.assign({}, cssSides('margin', Side.X, 0))\n }\n }, _defineProperty(_reactCSS, modifier('kind', Kind.PRIMARY), {\n root: {\n backgroundColor: cond([[isAgainstPrimary, always(palette.primaryContrast)], [isAgainstPrimaryGradient, always(palette.primaryContrast)], [T, always(palette.primary)]])(against),\n color: cond([[isAgainstPrimary, always(palette.primary)], [isAgainstPrimaryGradient, always(palette.primary)], [T, always(palette.primaryContrast)]])(against)\n }\n }), _defineProperty(_reactCSS, modifier('kind', Kind.SECONDARY), {\n root: {\n backgroundColor: cond([[isAgainstNeutral, always(palette.grey04)], [T, always(palette.grey10)]])(against),\n color: cond([[isAgainstNeutral, always(palette.grey10)], [T, always(palette.grey04)]])(against)\n }\n }), _defineProperty(_reactCSS, modifier('kind', Kind.SUCCESS), {\n root: {\n backgroundColor: palette.green01,\n color: '#fff'\n }\n }), _defineProperty(_reactCSS, modifier('kind', Kind.WARNING), {\n root: {\n backgroundColor: palette.yellow01,\n color: palette.grey04\n }\n }), _defineProperty(_reactCSS, modifier('kind', Kind.ERROR), {\n root: {\n backgroundColor: palette.red01,\n color: '#fff'\n }\n }), _defineProperty(_reactCSS, modifier('kind', Kind.HIGHLIGHT), {\n root: {\n backgroundColor: cond([[isAgainstHighlight, always(palette.highlightContrast)], [T, always(palette.highlight)]])(against),\n color: cond([[isAgainstHighlight, always(palette.highlight)], [T, always(palette.highlightContrast)]])(against)\n }\n }), _defineProperty(_reactCSS, modifier('curvature', String(Curvature.WEAK)), {\n root: {\n borderRadius: 4\n }\n }), _defineProperty(_reactCSS, modifier('curvature', String(Curvature.STRONG)), {\n root: Object.assign({\n borderRadius: 100\n }, cssSides('padding', Side.X, gu2px(1.5, spacing)))\n }), _reactCSS), [{\n kind: kind\n }, {\n flush: flush\n }, {\n curvature: curvature\n }]);\n});\n\nvar PureBadge = function PureBadge(_ref) {\n var theme = _ref.theme,\n styles = _ref.styles,\n children = _ref.children;\n return React.createElement(Content, {\n theme: theme,\n component: \"span\",\n style: styles.root\n }, children);\n};\n\nvar enhance = pureEnhance('Badge', [defaultProps({\n kind: Kind.PRIMARY,\n against: Against.LIGHT,\n flush: false\n}), withStylesHook(stylesheet)]);\nvar Badge = enhance(PureBadge); // eslint-disable-next-line no-underscore-dangle\n\nexport default Badge;\nexport { Against, Kind };\n","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 * as r from 'ramda';\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 { push } from 'connected-react-router';\nimport { signals } from '@team-griffin/redux-modal-router';\nimport { isNotNilOrEmpty } from '@team-griffin/capra';\nimport { selectors } from '@ux/product';\nimport qs from 'qs';\n\nconst formatPricingTier = r.pipe(\n r.converge(\n r.unapply(r.identity),\n [\n r.prop('paymentInterval'),\n r.prop('term'),\n ],\n ),\n // if both interval and term are null then we don't want to return anything\n r.ifElse(\n r.all(r.isNil),\n r.always(void 0),\n r.pipe(\n r.map(r.defaultTo('')),\n r.join(':'),\n ),\n ),\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 = r.prop('type', ribbon);\n const ribbonName = r.path([ 'props', 'name' ], ribbon);\n const product = r.path(['product' ], props);\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 push,\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 withHandlers({\n handleAnalytics: (props) => () => {\n const ctaType = r.path([ 'behavior', 'type' ], props);\n const type = r.path([ 'behavior', 'analytics', 'type' ], props);\n const list = r.prop('ribbonList', props);\n const product = r.prop('product', props);\n\n if (type === 'PRODUCT') {\n const productId = r.path([ 'behavior', 'analytics', 'productId' ], props);\n props.actions.productClicked({\n productId,\n list,\n });\n } else if (type === 'PROMOTION') {\n const promotion = r.path([ 'behavior', 'analytics', 'promotion' ], props);\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 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 actions: {\n push,\n },\n behavior: {\n productId,\n initialSku,\n pricingTier,\n },\n }) => () => {\n const query = qs.stringify({\n productId,\n initialSku,\n pricingTier: formatPricingTier(pricingTier),\n });\n push({\n pathname: '/configuration',\n search: `?${query}`,\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: r.cond([\n [\n r.propEq('type', Behavior.ADD_TO_BASKET),\n r.always(ownerProps.handleAddToBasketClick),\n ],\n [\n r.propEq('type', Behavior.APPLY_VOUCHER),\n r.always(ownerProps.handleApplyVoucherClick),\n ],\n [\n r.propEq('type', Behavior.CONFIGURE),\n r.always(ownerProps.handleConfigureClick),\n ],\n [\n r.propEq('type', Behavior.SET_VISIBILITY),\n r.always(ownerProps.handleSetVisibilityClick),\n ],\n [\n r.propEq('type', Behavior.PLAY_VIDEO),\n r.always(ownerProps.handlePlayVideoClick),\n ],\n [\n r.propEq('type', Behavior.NAVIGATION),\n r.always(ownerProps.handleNavigateClick),\n ],\n [\n r.T,\n // noop\n r.always(r.always(null)),\n ],\n ])(ownerProps.behavior),\n // add an analytics prefixed `id` to the cta if required\n id: r.ifElse(\n r.pathSatisfies(isNotNilOrEmpty, [ 'analytics', 'linkAttribution' ]),\n ({ analytics }) => `usf-cta-${analytics.linkAttribution}`,\n r.always(ownerProps.id),\n )(ownerProps.behavior),\n })),\n);\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar ANIMATION_STATE_CLASSES = {\n animating: 'rah-animating',\n animatingUp: 'rah-animating--up',\n animatingDown: 'rah-animating--down',\n animatingToHeightZero: 'rah-animating--to-height-zero',\n animatingToHeightAuto: 'rah-animating--to-height-auto',\n animatingToHeightSpecific: 'rah-animating--to-height-specific',\n static: 'rah-static',\n staticHeightZero: 'rah-static--height-zero',\n staticHeightAuto: 'rah-static--height-auto',\n staticHeightSpecific: 'rah-static--height-specific'\n};\n\nvar PROPS_TO_OMIT = ['animateOpacity', 'animationStateClasses', 'applyInlineTransitions', 'children', 'contentClassName', 'delay', 'duration', 'easing', 'height', 'onAnimationEnd', 'onAnimationStart'];\n\nfunction omit(obj) {\n for (var _len = arguments.length, keys = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n keys[_key - 1] = arguments[_key];\n }\n\n if (!keys.length) {\n return obj;\n }\n\n var res = {};\n var objectKeys = Object.keys(obj);\n\n for (var i = 0; i < objectKeys.length; i++) {\n var key = objectKeys[i];\n\n if (keys.indexOf(key) === -1) {\n res[key] = obj[key];\n }\n }\n\n return res;\n}\n\n// Start animation helper using nested requestAnimationFrames\nfunction startAnimationHelper(callback) {\n var requestAnimationFrameIDs = [];\n\n requestAnimationFrameIDs[0] = requestAnimationFrame(function () {\n requestAnimationFrameIDs[1] = requestAnimationFrame(function () {\n callback();\n });\n });\n\n return requestAnimationFrameIDs;\n}\n\nfunction cancelAnimationFrames(requestAnimationFrameIDs) {\n requestAnimationFrameIDs.forEach(function (id) {\n return cancelAnimationFrame(id);\n });\n}\n\nfunction isNumber(n) {\n return !isNaN(parseFloat(n)) && isFinite(n);\n}\n\nfunction isPercentage(height) {\n // Percentage height\n return typeof height === 'string' && height.search('%') === height.length - 1 && isNumber(height.substr(0, height.length - 1));\n}\n\nfunction runCallback(callback, params) {\n if (callback && typeof callback === 'function') {\n callback(params);\n }\n}\n\nvar AnimateHeight = function (_React$Component) {\n _inherits(AnimateHeight, _React$Component);\n\n function AnimateHeight(props) {\n _classCallCheck(this, AnimateHeight);\n\n var _this = _possibleConstructorReturn(this, (AnimateHeight.__proto__ || Object.getPrototypeOf(AnimateHeight)).call(this, props));\n\n _this.animationFrameIDs = [];\n\n var height = 'auto';\n var overflow = 'visible';\n\n if (isNumber(props.height)) {\n // If value is string \"0\" make sure we convert it to number 0\n height = props.height < 0 || props.height === '0' ? 0 : props.height;\n overflow = 'hidden';\n } else if (isPercentage(props.height)) {\n // If value is string \"0%\" make sure we convert it to number 0\n height = props.height === '0%' ? 0 : props.height;\n overflow = 'hidden';\n }\n\n _this.animationStateClasses = _extends({}, ANIMATION_STATE_CLASSES, props.animationStateClasses);\n\n var animationStateClasses = _this.getStaticStateClasses(height);\n\n _this.state = {\n animationStateClasses: animationStateClasses,\n height: height,\n overflow: overflow,\n shouldUseTransitions: false\n };\n return _this;\n }\n\n _createClass(AnimateHeight, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n var height = this.state.height;\n\n // Hide content if height is 0 (to prevent tabbing into it)\n // Check for contentElement is added cause this would fail in tests (react-test-renderer)\n // Read more here: https://github.com/Stanko/react-animate-height/issues/17\n\n if (this.contentElement && this.contentElement.style) {\n this.hideContent(height);\n }\n }\n }, {\n key: 'componentDidUpdate',\n value: function componentDidUpdate(prevProps, prevState) {\n var _this2 = this;\n\n var _props = this.props,\n delay = _props.delay,\n duration = _props.duration,\n height = _props.height,\n onAnimationEnd = _props.onAnimationEnd,\n onAnimationStart = _props.onAnimationStart;\n\n // Check if 'height' prop has changed\n\n if (this.contentElement && height !== prevProps.height) {\n var _cx;\n\n // Remove display: none from the content div\n // if it was hidden to prevent tabbing into it\n this.showContent(prevState.height);\n\n // Cache content height\n this.contentElement.style.overflow = 'hidden';\n var contentHeight = this.contentElement.offsetHeight;\n this.contentElement.style.overflow = '';\n\n // set total animation time\n var totalDuration = duration + delay;\n\n var newHeight = null;\n var timeoutState = {\n height: null, // it will be always set to either 'auto' or specific number\n overflow: 'hidden'\n };\n var isCurrentHeightAuto = prevState.height === 'auto';\n\n if (isNumber(height)) {\n // If value is string \"0\" make sure we convert it to number 0\n newHeight = height < 0 || height === '0' ? 0 : height;\n timeoutState.height = newHeight;\n } else if (isPercentage(height)) {\n // If value is string \"0%\" make sure we convert it to number 0\n newHeight = height === '0%' ? 0 : height;\n timeoutState.height = newHeight;\n } else {\n // If not, animate to content height\n // and then reset to auto\n newHeight = contentHeight; // TODO solve contentHeight = 0\n timeoutState.height = 'auto';\n timeoutState.overflow = null;\n }\n\n if (isCurrentHeightAuto) {\n // This is the height to be animated to\n timeoutState.height = newHeight;\n\n // If previous height was 'auto'\n // set starting height explicitly to be able to use transition\n newHeight = contentHeight;\n }\n\n // Animation classes\n var animationStateClasses = (0, _classnames2.default)((_cx = {}, _defineProperty(_cx, this.animationStateClasses.animating, true), _defineProperty(_cx, this.animationStateClasses.animatingUp, prevProps.height === 'auto' || height < prevProps.height), _defineProperty(_cx, this.animationStateClasses.animatingDown, height === 'auto' || height > prevProps.height), _defineProperty(_cx, this.animationStateClasses.animatingToHeightZero, timeoutState.height === 0), _defineProperty(_cx, this.animationStateClasses.animatingToHeightAuto, timeoutState.height === 'auto'), _defineProperty(_cx, this.animationStateClasses.animatingToHeightSpecific, timeoutState.height > 0), _cx));\n\n // Animation classes to be put after animation is complete\n var timeoutAnimationStateClasses = this.getStaticStateClasses(timeoutState.height);\n\n // Set starting height and animating classes\n // We are safe to call set state as it will not trigger infinite loop\n // because of the \"height !== prevProps.height\" check\n this.setState({ // eslint-disable-line react/no-did-update-set-state\n animationStateClasses: animationStateClasses,\n height: newHeight,\n overflow: 'hidden',\n // When animating from 'auto' we first need to set fixed height\n // that change should be animated\n shouldUseTransitions: !isCurrentHeightAuto\n });\n\n // Clear timeouts\n clearTimeout(this.timeoutID);\n clearTimeout(this.animationClassesTimeoutID);\n\n if (isCurrentHeightAuto) {\n // When animating from 'auto' we use a short timeout to start animation\n // after setting fixed height above\n timeoutState.shouldUseTransitions = true;\n\n cancelAnimationFrames(this.animationFrameIDs);\n this.animationFrameIDs = startAnimationHelper(function () {\n _this2.setState(timeoutState);\n\n // ANIMATION STARTS, run a callback if it exists\n runCallback(onAnimationStart, { newHeight: timeoutState.height });\n });\n\n // Set static classes and remove transitions when animation ends\n this.animationClassesTimeoutID = setTimeout(function () {\n _this2.setState({\n animationStateClasses: timeoutAnimationStateClasses,\n shouldUseTransitions: false\n });\n\n // ANIMATION ENDS\n // Hide content if height is 0 (to prevent tabbing into it)\n _this2.hideContent(timeoutState.height);\n // Run a callback if it exists\n runCallback(onAnimationEnd, { newHeight: timeoutState.height });\n }, totalDuration);\n } else {\n // ANIMATION STARTS, run a callback if it exists\n runCallback(onAnimationStart, { newHeight: newHeight });\n\n // Set end height, classes and remove transitions when animation is complete\n this.timeoutID = setTimeout(function () {\n timeoutState.animationStateClasses = timeoutAnimationStateClasses;\n timeoutState.shouldUseTransitions = false;\n\n _this2.setState(timeoutState);\n\n // ANIMATION ENDS\n // If height is auto, don't hide the content\n // (case when element is empty, therefore height is 0)\n if (height !== 'auto') {\n // Hide content if height is 0 (to prevent tabbing into it)\n _this2.hideContent(newHeight); // TODO solve newHeight = 0\n }\n // Run a callback if it exists\n runCallback(onAnimationEnd, { newHeight: newHeight });\n }, totalDuration);\n }\n }\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n cancelAnimationFrames(this.animationFrameIDs);\n\n clearTimeout(this.timeoutID);\n clearTimeout(this.animationClassesTimeoutID);\n\n this.timeoutID = null;\n this.animationClassesTimeoutID = null;\n this.animationStateClasses = null;\n }\n }, {\n key: 'showContent',\n value: function showContent(height) {\n if (height === 0) {\n this.contentElement.style.display = '';\n }\n }\n }, {\n key: 'hideContent',\n value: function hideContent(newHeight) {\n if (newHeight === 0) {\n this.contentElement.style.display = 'none';\n }\n }\n }, {\n key: 'getStaticStateClasses',\n value: function getStaticStateClasses(height) {\n var _cx2;\n\n return (0, _classnames2.default)((_cx2 = {}, _defineProperty(_cx2, this.animationStateClasses.static, true), _defineProperty(_cx2, this.animationStateClasses.staticHeightZero, height === 0), _defineProperty(_cx2, this.animationStateClasses.staticHeightSpecific, height > 0), _defineProperty(_cx2, this.animationStateClasses.staticHeightAuto, height === 'auto'), _cx2));\n }\n }, {\n key: 'render',\n value: function render() {\n var _cx3,\n _this3 = this;\n\n var _props2 = this.props,\n animateOpacity = _props2.animateOpacity,\n applyInlineTransitions = _props2.applyInlineTransitions,\n children = _props2.children,\n className = _props2.className,\n contentClassName = _props2.contentClassName,\n duration = _props2.duration,\n easing = _props2.easing,\n delay = _props2.delay,\n style = _props2.style;\n var _state = this.state,\n height = _state.height,\n overflow = _state.overflow,\n animationStateClasses = _state.animationStateClasses,\n shouldUseTransitions = _state.shouldUseTransitions;\n\n\n var componentStyle = _extends({}, style, {\n height: height,\n overflow: overflow || style.overflow\n });\n\n if (shouldUseTransitions && applyInlineTransitions) {\n componentStyle.transition = 'height ' + duration + 'ms ' + easing + ' ' + delay + 'ms';\n\n // Include transition passed through styles\n if (style.transition) {\n componentStyle.transition = style.transition + ', ' + componentStyle.transition;\n }\n\n // Add webkit vendor prefix still used by opera, blackberry...\n componentStyle.WebkitTransition = componentStyle.transition;\n }\n\n var contentStyle = {};\n\n if (animateOpacity) {\n contentStyle.transition = 'opacity ' + duration + 'ms ' + easing + ' ' + delay + 'ms';\n // Add webkit vendor prefix still used by opera, blackberry...\n contentStyle.WebkitTransition = contentStyle.transition;\n\n if (height === 0) {\n contentStyle.opacity = 0;\n }\n }\n\n var componentClasses = (0, _classnames2.default)((_cx3 = {}, _defineProperty(_cx3, animationStateClasses, true), _defineProperty(_cx3, className, className), _cx3));\n\n return _react2.default.createElement(\n 'div',\n _extends({}, omit.apply(undefined, [this.props].concat(PROPS_TO_OMIT)), {\n 'aria-hidden': height === 0,\n className: componentClasses,\n style: componentStyle\n }),\n _react2.default.createElement(\n 'div',\n {\n className: contentClassName,\n style: contentStyle,\n ref: function ref(el) {\n return _this3.contentElement = el;\n }\n },\n children\n )\n );\n }\n }]);\n\n return AnimateHeight;\n}(_react2.default.Component);\n\nvar heightPropType = function heightPropType(props, propName, componentName) {\n var value = props[propName];\n\n if (typeof value === 'number' && value >= 0 || isPercentage(value) || value === 'auto') {\n return null;\n }\n\n return new TypeError('value \"' + value + '\" of type \"' + (typeof value === 'undefined' ? 'undefined' : _typeof(value)) + '\" is invalid type for ' + propName + ' in ' + componentName + '. ' + 'It needs to be a positive number, string \"auto\" or percentage string (e.g. \"15%\").');\n};\n\nAnimateHeight.propTypes = {\n animateOpacity: _propTypes2.default.bool,\n animationStateClasses: _propTypes2.default.object,\n applyInlineTransitions: _propTypes2.default.bool,\n children: _propTypes2.default.any.isRequired,\n className: _propTypes2.default.string,\n contentClassName: _propTypes2.default.string,\n duration: _propTypes2.default.number,\n delay: _propTypes2.default.number,\n easing: _propTypes2.default.string,\n height: heightPropType,\n onAnimationEnd: _propTypes2.default.func,\n onAnimationStart: _propTypes2.default.func,\n style: _propTypes2.default.object\n};\n\nAnimateHeight.defaultProps = {\n animateOpacity: false,\n animationStateClasses: ANIMATION_STATE_CLASSES,\n applyInlineTransitions: true,\n duration: 250,\n delay: 0,\n easing: 'ease',\n style: {}\n};\n\nexports.default = AnimateHeight;","import color from 'color';\n\nexport default (c, a) =>\n color(c)\n .alpha(a)\n .string();\n"],"sourceRoot":""}