{"version":3,"sources":["webpack:///./presentation/components/ribbons/billboard-product/BillboardProduct.tsx","webpack:///./presentation/components/ribbons/billboard-product/index.ts","webpack:///./presentation/hocs/withLanguage.ts","webpack:///./crosscutting/ramda.ts","webpack:///../node_modules/@ux/badge/dist/es/badge.js","webpack:///./presentation/utils/rgba.js","webpack:///../node_modules/@ux/prices/dist/es/prices.js","webpack:///./presentation/components/common/Saving.js","webpack:///./presentation/components/common/ProductPrice/LegalText.tsx","webpack:///./presentation/components/common/ProductPrice/utils.ts","webpack:///./presentation/components/common/ProductPrice/ProductPrice.tsx","webpack:///./presentation/components/common/ProductPrice/ProductPrice.stylesheet.ts","webpack:///./presentation/components/common/ProductPrice/ConnectedProductPrice.ts","webpack:///./presentation/components/common/ProductPrice/index.ts","webpack:///./presentation/components/common/ProductPrice/constants.ts","webpack:///./presentation/hooks/withUrlComponent.ts","webpack:///./presentation/components/common/Layer/Parallax.tsx","webpack:///./presentation/components/common/Layer/Parallax.stylesheet.ts","webpack:///./presentation/components/common/Layer/Static.tsx","webpack:///./presentation/components/common/Layer/Layer.tsx","webpack:///./presentation/components/common/Layer/Layer.stylesheet.ts","webpack:///./presentation/components/common/Layer/index.ts","webpack:///../node_modules/ulid/dist/index.esm.js","webpack:///src/presentation/components/ribbons/billboard/CornerEmbellishments.stylesheet.ts","webpack:///./presentation/components/ribbons/billboard/CornerEmbellishments.tsx","webpack:///./presentation/components/ribbons/billboard/Wash.tsx","webpack:///./presentation/components/ribbons/billboard/Wash.stylesheet.ts","webpack:///./presentation/components/ribbons/billboard/Background.tsx","webpack:///./presentation/components/ribbons/billboard/Background.stylesheet.ts","webpack:///./presentation/components/ribbons/billboard/Body.tsx","webpack:///src/presentation/components/ribbons/billboard/Body.stylesheet.ts","webpack:///./presentation/components/ribbons/billboard/Scroll.tsx","webpack:///./presentation/components/ribbons/billboard/Scroll.stylesheet.ts","webpack:///./presentation/components/ribbons/billboard/styles.ts","webpack:///./presentation/components/ribbons/billboard/layouts/Generic.tsx","webpack:///./presentation/components/ribbons/billboard/layouts/Generic.stylesheet.ts","webpack:///./presentation/components/ribbons/billboard/layouts/Duo.tsx","webpack:///src/presentation/components/ribbons/billboard/layouts/Duo.stylesheet.ts","webpack:///./presentation/components/ribbons/billboard/constants.ts","webpack:///./presentation/components/ribbons/billboard/Tile.tsx","webpack:///src/presentation/components/ribbons/billboard/Tile.stylesheet.ts","webpack:///./presentation/components/ribbons/billboard/Tiles.tsx","webpack:///./presentation/components/ribbons/billboard/Tiles.stylesheet.ts","webpack:///./presentation/components/ribbons/billboard/layouts/WithTiles.tsx","webpack:///src/presentation/components/ribbons/billboard/layouts/WithTiles.stylesheet.ts","webpack:///./presentation/components/ribbons/billboard/Billboard.tsx","webpack:///./presentation/components/ribbons/billboard/index.ts","webpack:///../node_modules/ramda/es/includes.js","webpack:///../node_modules/ramda/es/mergeRight.js"],"names":["enhance","pureEnhance","hocs","errorBoundary","theme","colorway","product","currency","pricingStrategy","footerText","billboardProps","additionalText","ProductPrice","showLegalCaveat","bespoke","BillboardProduct","BaseComponent","compose","connect","state","currentLanguage","getCurrentLanguage","isNotEmpty","isNotNil","mapIndexed","rA","r","fallback","arr","fn","obj","Kind","Against","_defineProperty","key","value","Object","defineProperty","enumerable","configurable","writable","isAgainstPrimary","PRIMARY","isAgainstPrimaryGradient","PRIMARY_GRADIENT","isAgainstHighlight","HIGHLIGHT","isAgainstNeutral","NEUTRAL","Badge","kind","against","LIGHT","flush","_ref","_reactCSS","_ref$theme","palette","spacing","typography","curvature","default","root","assign","display","A","X","lineHeight","whiteSpace","backgroundColor","primaryContrast","primary","color","SECONDARY","grey04","grey10","SUCCESS","green01","WARNING","yellow01","ERROR","red01","highlightContrast","highlight","String","WEAK","borderRadius","STRONG","styles","children","createElement","component","style","c","a","alpha","string","shouldUseDecimalDenomination","props","round","Math","Prices","hooks","ownerProps","useDecimalDenomination","amount","concat","mapStateToProps","market","getMarket","ConnectedPrices","enhance$1","isPercentage","isFixed","Saving","intlNamespace","id","values","saving","setDisplayName","defaultProps","withBreakpoints","withProps","useStyles","marginLeft","gu2px","percentage","fontWeight","verticalAlign","fixed","textDecoration","type","BadgeKind","createStructuredSelector","interval","term","LegalText","getInterval","selectors","getDisplayPeriod","hasSavingValue","hasBadge","isNotNilOrEmpty","shouldShowSetupFee","viewModes","excludeViewModes","mapProps","showFee","proposition","hasProposition","hasSaving","showSetupFee","renewalPeriod","withBreakpointsHook","isMinSm","isMinLg","priceLayout","marginTop","intro","getTitleColor","content","badge","price","getContrastColor","marginRight","setupFee","fee","renewal","legalCaveat","smallprint","opacity","modifier","Layout","COMPACT","priceWrapper","width","alignItems","justifyContent","pricing","flex","flexBasis","textAlign","badgeAndNoProposition","upFront","legalText","hasDiscount","discountPerc","Boolean","parseInt","Shortcode","code","period","shouldIncludeTax","includeTax","displayInterval","viewMode","productPrice","ConnectedProductPrice","withUrlComponent","Component","isInternalUrl","url","NavLink","to","isHashUrl","href","getParallaxData","layer","start","duration","properties","startValue","fx","endValue","property","withLanguage","data","image","height","backgroundImage","urlLanguageParse","imageUrl","backgroundRepeat","backgroundSize","backgroundPosition","parallaxData","test","navigator","userAgent","vendor","webpUrl","focus","role","isParallax","position","top","overflow","plx","aria-label","createImageAlt","Parallax","Static","LayerComponent","createError","message","err","Error","source","ENCODING","ENCODING_LEN","length","TIME_MAX","pow","randomChar","prng","rand","floor","charAt","encodeTime","now","len","isNaN","Number","isInteger","mod","str","encodeRandom","detectPrng","allowInsecure","arguments","undefined","window","browserCrypto","crypto","msCrypto","buffer","Uint8Array","getRandomValues","nodeCrypto","randomBytes","readUInt8","e","console","error","random","ulid","currPrng","seedTime","Date","factory","cornerToPosition","gu2CornerSize","gu","cornerSize","cornerArrayToCssProperty","cornerImages","size","repeat","generateCornerImages","pointerEvents","bottom","left","right","longhand","wash","clr","Colorway","rgba","generateBackground","Alignment","CENTER","gradient","background","DARK","findResponsiveItem","getBreakpoints","activeBackground","backgroundType","Array","isArray","videoWrapper","video","objectFit","objectPosition","fallbackVideoImage","minHeight","minWidth","layout","duoLayout","hasTiles","loop","muted","autoPlay","playsInline","poster","src","mp4","webm","loading","alt","Layer","i","Wash","hBaseline","hasBodyText","hasCta","hasPrecursor","hasTitle","hasFooterText","alignment","precursor","title","subtitle","getBodyColor","ctas","flexDirection","cta","cssSides","Side","marginBottom","text","ribbonId","depth","body","CallToAction","getAgainst","block","ButtonSize","LG","index","side","scrollAgainst","scroller","paddingTop","onScrollClick","onClick","TERTIARY","glyph","halfContainerWidth","getActiveAnchor","anchor","breakpoints","from","getActive","flexAnchors","Anchor","TOP","justify","Justify","breakpointProps","activeAnchor","showScroll","Background","vblock","xs","md","lg","Body","Scroll","startDuoLayout","maxWidth","isDuoLayoutMd","isDuoLayoutLg","isDuoLayoutXl","isMinMd","isMinXl","callToAction","branch","withHover","rightTile","tilesSide","getBackgroundColor","ribbonPadding","shrinkLeading","shrinkTrailing","leftTile","container","paddingRight","box","wrapperText","wrapperIcon","icon","hover","animation","animationTimingFunction","animationDirection","animationFillMode","leftTileMedium","rightTileMedium","leftTileLarge","tilesStartLarge","TilesSide","START","action","linkAttribution","tile","WebkitFlexBasis","tiles","tileAnimation","Tile","direction","END","Direction","ROW","ROW_REVERSE","webkitFlexBasis","row","lgStartTile","gutters","Tiles","hasTwoTiles","shouldShowScroll","fit","Fit","FULLSCREEN","FILL","BillboardLayout","visibilitySet","duo","withState","withHandlers","bottomScrollName","scrollTo","delay","smooth","name","cornerEmbellishments","Ribbon","CornerEmbellishments","Billboard","includes","mergeRight","l"],"mappings":"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","file":"pex-static/20/17.752011c786b4657f8655.chunk.js","sourcesContent":["import React from 'react';\nimport Billboard, { BillboardProps } from 'components/ribbons/billboard';\nimport ProductPrice, {\n LegalText,\n} from 'components/common/ProductPrice';\nimport errorBoundary from 'presentation/hocs/errorBoundary';\nimport pureEnhance from '@ux/pure-enhance';\nimport { Product } from '@ux/product';\n\ninterface OuterProps extends BillboardProps {\n product: Product,\n currency: string,\n pricingStrategy?: {\n proposition?: string,\n paymentIntervalDisplay: number,\n viewMode: number,\n pricingTier: {\n paymentInterval: number,\n term: number,\n }\n },\n}\n\ninterface InnerProps extends OuterProps {}\n\nconst PureBillboardProduct = ({\n theme,\n colorway,\n product,\n currency,\n pricingStrategy,\n footerText,\n ...billboardProps\n}: InnerProps) => (\n \n )}\n footerText={(\n \n )}\n />\n);\n\nconst enhance = pureEnhance(\n 'BillboardProduct',\n {\n hocs: [\n errorBoundary,\n ],\n }\n);\n\nexport default enhance(PureBillboardProduct);\n","import BillboardProduct from './BillboardProduct';\n\nexport default BillboardProduct;\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","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 pureEnhance from '@ux/pure-enhance';\nimport { defaultProps } from '@team-griffin/rehook';\nimport { Content } from '@ux/typeface';\nimport { modifier, withStylesHook } from '@ux/style-utils';\nimport cssSides, { Side } from '@team-griffin/css-sides';\nimport { gu2px, Curvature } from '@ux/theme-utils';\nimport { footnote } from '@ux/type-size';\nimport reactCSS from 'reactcss';\nimport { equals, cond, always, T } from 'ramda';\n\nvar Kind;\n\n(function (Kind) {\n Kind[\"PRIMARY\"] = \"PRIMARY\";\n Kind[\"SECONDARY\"] = \"SECONDARY\";\n Kind[\"SUCCESS\"] = \"SUCCESS\";\n Kind[\"WARNING\"] = \"WARNING\";\n Kind[\"ERROR\"] = \"ERROR\";\n Kind[\"HIGHLIGHT\"] = \"HIGHLIGHT\";\n})(Kind || (Kind = {}));\n\nvar Against;\n\n(function (Against) {\n Against[\"PRIMARY\"] = \"PRIMARY\";\n Against[\"PRIMARY_GRADIENT\"] = \"PRIMARY_GRADIENT\";\n Against[\"LIGHT\"] = \"LIGHT\";\n Against[\"NEUTRAL\"] = \"NEUTRAL\";\n Against[\"DARK\"] = \"DARK\";\n Against[\"HIGHLIGHT\"] = \"HIGHLIGHT\";\n})(Against || (Against = {}));\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nvar isAgainstPrimary = equals(Against.PRIMARY);\nvar isAgainstPrimaryGradient = equals(Against.PRIMARY_GRADIENT);\nvar isAgainstHighlight = equals(Against.HIGHLIGHT);\nvar isAgainstNeutral = equals(Against.NEUTRAL);\nvar stylesheet = (function (_ref) {\n var _reactCSS;\n\n var _ref$theme = _ref.theme,\n palette = _ref$theme.palette,\n spacing = _ref$theme.spacing,\n typography = _ref$theme.typography,\n curvature = _ref$theme.curvature,\n kind = _ref.kind,\n against = _ref.against,\n flush = _ref.flush;\n return reactCSS((_reactCSS = {\n default: {\n root: Object.assign({\n display: 'inline-block'\n }, cssSides('padding', Side.A, gu2px(0.75, spacing)), cssSides('margin', Side.X, gu2px(1, spacing)), footnote(typography), {\n lineHeight: 1,\n whiteSpace: 'nowrap'\n })\n },\n flush: {\n root: Object.assign({}, cssSides('margin', Side.X, 0))\n }\n }, _defineProperty(_reactCSS, modifier('kind', Kind.PRIMARY), {\n root: {\n backgroundColor: cond([[isAgainstPrimary, always(palette.primaryContrast)], [isAgainstPrimaryGradient, always(palette.primaryContrast)], [T, always(palette.primary)]])(against),\n color: cond([[isAgainstPrimary, always(palette.primary)], [isAgainstPrimaryGradient, always(palette.primary)], [T, always(palette.primaryContrast)]])(against)\n }\n }), _defineProperty(_reactCSS, modifier('kind', Kind.SECONDARY), {\n root: {\n backgroundColor: cond([[isAgainstNeutral, always(palette.grey04)], [T, always(palette.grey10)]])(against),\n color: cond([[isAgainstNeutral, always(palette.grey10)], [T, always(palette.grey04)]])(against)\n }\n }), _defineProperty(_reactCSS, modifier('kind', Kind.SUCCESS), {\n root: {\n backgroundColor: palette.green01,\n color: '#fff'\n }\n }), _defineProperty(_reactCSS, modifier('kind', Kind.WARNING), {\n root: {\n backgroundColor: palette.yellow01,\n color: palette.grey04\n }\n }), _defineProperty(_reactCSS, modifier('kind', Kind.ERROR), {\n root: {\n backgroundColor: palette.red01,\n color: '#fff'\n }\n }), _defineProperty(_reactCSS, modifier('kind', Kind.HIGHLIGHT), {\n root: {\n backgroundColor: cond([[isAgainstHighlight, always(palette.highlightContrast)], [T, always(palette.highlight)]])(against),\n color: cond([[isAgainstHighlight, always(palette.highlight)], [T, always(palette.highlightContrast)]])(against)\n }\n }), _defineProperty(_reactCSS, modifier('curvature', String(Curvature.WEAK)), {\n root: {\n borderRadius: 4\n }\n }), _defineProperty(_reactCSS, modifier('curvature', String(Curvature.STRONG)), {\n root: Object.assign({\n borderRadius: 100\n }, cssSides('padding', Side.X, gu2px(1.5, spacing)))\n }), _reactCSS), [{\n kind: kind\n }, {\n flush: flush\n }, {\n curvature: curvature\n }]);\n});\n\nvar PureBadge = function PureBadge(_ref) {\n var theme = _ref.theme,\n styles = _ref.styles,\n children = _ref.children;\n return React.createElement(Content, {\n theme: theme,\n component: \"span\",\n style: styles.root\n }, children);\n};\n\nvar enhance = pureEnhance('Badge', [defaultProps({\n kind: Kind.PRIMARY,\n against: Against.LIGHT,\n flush: false\n}), withStylesHook(stylesheet)]);\nvar Badge = enhance(PureBadge); // eslint-disable-next-line no-underscore-dangle\n\nexport default Badge;\nexport { Against, Kind };\n","import color from 'color';\n\nexport default (c, a) =>\n color(c)\n .alpha(a)\n .string();\n","import React, { Fragment } from 'react';\nimport pureEnhance from '@ux/pure-enhance';\nimport { withProps, mapProps } from '@team-griffin/rehook';\nimport { allTrue } from '@team-griffin/capra';\nimport { FormattedNumber } from 'react-intl';\nimport { invoker, __, equals, prop, lt, when, over, lensProp, pipe, multiply } from 'ramda';\nimport { createStructuredSelector } from 'reselect';\nimport { selectors } from '@ux/whitelabel';\nimport { connect } from '@ux/fabric';\n\nvar PurePrices = function PurePrices(_ref) {\n var amount = _ref.amount,\n useDecimalDenomination = _ref.useDecimalDenomination,\n currency = _ref.currency;\n return React.createElement(Fragment, null, useDecimalDenomination ? React.createElement(\"span\", null, \"\".concat(amount, \"p\")) : React.createElement(FormattedNumber, {\n value: amount,\n currency: currency // eslint-disable-next-line react/style-prop-object\n ,\n style: \"currency\"\n }));\n};\n\nvar shouldUseDecimalDenomination = function shouldUseDecimalDenomination(props) {\n return allTrue([equals(prop('market', props), 'GB'), equals(prop('currency', props), 'GBP'), lt(prop('amount', props), 1)]);\n};\n\nvar round = invoker(1, 'round')(__, Math);\nvar enhance = pureEnhance('Prices', {\n hooks: [withProps(function (ownerProps) {\n return {\n useDecimalDenomination: shouldUseDecimalDenomination(ownerProps)\n };\n }), mapProps(when(prop('useDecimalDenomination'), over(lensProp('amount'), pipe(multiply(100), round))))]\n}); // eslint-disable-next-line no-underscore-dangle\nvar Prices = enhance(PurePrices);\n\nvar mapStateToProps = createStructuredSelector({\n market: selectors.getMarket\n});\nvar enhance$1 = pureEnhance('ConnectedPrices', [withProps(connect(mapStateToProps))]);\nvar ConnectedPrices = enhance$1(Prices);\n\nexport default ConnectedPrices;\nexport { ConnectedPrices, Prices };\n","import React from 'react';\nimport {\n compose,\n setDisplayName,\n defaultProps,\n withProps,\n} from 'recompose';\n// import { fastCompare } from '@ux/perf';\nimport {\n FormattedNumber, FormattedMessage,\n} from 'react-intl';\nimport Message from '@ux/message';\nimport Badge, { Kind as BadgeKind } from '@ux/badge';\nimport { Display } from '@ux/typeface';\nimport { withBreakpoints } from '@ux/responsive';\nimport { gu2px } from '@ux/theme-utils';\nimport * as r from 'ramda';\nimport { Heading06 } from '@ux/typography';\nimport { useStyles } from '@team-griffin/stylr';\n\nconst stylesheet = ({\n theme,\n}) => {\n const {\n spacing,\n palette,\n } = theme;\n\n return useStyles({\n default: {\n root: {\n marginLeft: r.negate(gu2px(1, spacing)),\n },\n percentage: {\n fontWeight: 'normal',\n color: palette.highlight,\n verticalAlign: 'middle',\n },\n fixed: {\n fontWeight: 'normal',\n color: palette.highlight,\n verticalAlign: 'middle',\n textDecoration: 'line-through',\n },\n },\n }, []);\n};\n\nconst isPercentage = r.propEq('type', 'percentage');\nconst isFixed = r.propEq('type', 'fixed');\n\nconst Saving = r.cond([\n [ isPercentage, ({\n value,\n intlNamespace,\n }) => (\n {`${value}%`}),\n }}\n />\n ) ],\n [ isFixed, ({\n value,\n currency,\n intlNamespace,\n }) => (\n \n ),\n }}\n />\n ) ],\n [ r.T, r.always(null) ],\n]);\n\nexport const PureSaving = ({\n styles,\n theme,\n type,\n value,\n currency,\n intlNamespace,\n}) => (\n \n \n \n \n \n \n \n \n);\n\nexport const enhance = compose(\n setDisplayName('Saving'),\n // fastCompare,\n defaultProps({\n intlNamespace: 'usf',\n }),\n withBreakpoints,\n withProps(stylesheet),\n);\n\nexport default enhance(PureSaving);\n","import { withProps } from '@team-griffin/rehook';\nimport { createStructuredSelector } from 'reselect';\nimport * as r from 'ramda';\nimport { LegalText } from '@ux/product';\nimport pureEnhance from '@ux/pure-enhance';\n\nconst enhance = pureEnhance('LegalText', [\n withProps(createStructuredSelector({\n interval: r.path([ 'pricingStrategy', 'pricingTier', 'paymentInterval' ]),\n term: r.path([ 'pricingStrategy', 'pricingTier', 'term' ]),\n })),\n]);\n\nexport default enhance(LegalText);\n","import * as r from 'ramda';\nimport * as rA from 'ramda-adjunct';\nimport { selectors } from '@ux/product';\n\nconst { getInterval } = selectors;\n\nexport const getDisplayPeriod = rA.dispatch([\n r.path([ 'pricingStrategy', 'paymentIntervalDisplay' ]),\n getInterval,\n]);\n\nexport default null;\n","import React from 'react';\nimport {\n mapProps,\n withProps,\n} from '@team-griffin/rehook';\nimport { FormattedMessage } from 'react-intl';\nimport { Display } from '@ux/typeface';\nimport Saving from 'components/common/Saving';\nimport {\n Heading04,\n Heading06,\n SubHeading02,\n} from '@ux/typography';\nimport stylesheet, { Styles } from './ProductPrice.stylesheet';\nimport { BreakpointProps, withBreakpointsHook } from '@ux/responsive';\nimport * as r from 'ramda';\nimport {\n isNotNilOrEmpty,\n} from '@team-griffin/capra';\nimport LegalText from './LegalText';\nimport Shortcode from 'components/Shortcode';\nimport Badge, { Kind as BadgeKind } from '@ux/badge';\nimport Prices from '@ux/prices';\nimport { RenewalPeriod, Product } from '@ux/product';\nimport {\n getDisplayPeriod,\n} from './utils';\nimport { RibbonProps } from 'domain/constants/ribbons';\nimport { Layout } from 'components/common/ProductPrice/constants';\nimport pureEnhance from '@ux/pure-enhance';\n\nconst hasSavingValue = r.propSatisfies(\n r.both(\n r.is(Object),\n r.has('value')\n ),\n 'saving',\n);\n\nconst hasBadge = r.anyPass([\n hasSavingValue,\n r.propEq('hasDiscount', true),\n r.propSatisfies(isNotNilOrEmpty, 'badge'),\n]);\n\n// returns true if we are in a viewMode not in given array\n// 0 = retail price with setup cost underneath (default)\n// 1 = no setup cost, price incs. upfront cost\n// 2 = no setup cost, just show retail\nconst excludeViewModes = (viewModes: number[], props: DefaultProps) => r.pipe(\n r.path([ 'pricingStrategy', 'viewMode' ]),\n //@ts-ignore\n r.includes(\n r.__,\n viewModes,\n ),\n r.not,\n // @ts-ignore\n)(props);\n\nconst shouldShowSetupFee = r.allPass([\n // check product has a setup fee\n r.propEq('hasUpFrontCost', true),\n // check whether showFee is not false\n r.propEq('showFee', true),\n //check we are in a valid view mode (0)\n (props) => excludeViewModes([ 1, 2 ], props),\n]);\n\n// eslint-disable-next-line no-underscore-dangle\nexport const __test__ = {\n shouldShowSetupFee,\n};\n\ninterface OuterProps extends RibbonProps {\n showFee?: boolean,\n showLegalCaveat?: boolean,\n price: number,\n priceLayout?: Layout,\n viewMode: number,\n currency: string,\n discountPerc: string,\n product: Product,\n pricingStrategy: {\n proposition?: string,\n paymentIntervalDisplay: number,\n viewMode: number,\n pricingTier: {\n paymentInterval: number,\n term: number,\n }\n },\n hasDiscount?: boolean,\n badge?: string,\n upFront?: number,\n legalText?: string,\n saving?: {\n type: string,\n value: number,\n currency: string,\n },\n displayInterval: number,\n interval: number,\n term: number,\n}\n\ninterface DefaultProps extends OuterProps {\n showFee: true,\n showLegalCaveat: true,\n}\n\nexport interface InnerProps extends DefaultProps, BreakpointProps {\n styles: Styles,\n proposition: string,\n hasProposition: boolean,\n hasSaving: boolean,\n showSetupFee: boolean,\n renewalPeriod: number,\n hasBadge: boolean,\n}\nconst PureProductPrice = ({\n theme,\n colorway,\n styles,\n currency,\n price,\n upFront,\n renewalPeriod,\n hasSaving,\n saving,\n badge,\n proposition,\n hasProposition,\n showSetupFee,\n showLegalCaveat,\n legalText,\n product,\n pricingStrategy,\n hasDiscount,\n discountPerc,\n}: InnerProps) => (\n
\n
\n \n \n \n \n \n \n \n {badge}\n \n \n \n \n \n \n \n \n \n \n \n
\n \n \n \n \n \n \n \n \n \n ),\n renewal: (\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);\nconst enhance = pureEnhance(\n 'ProductPrice', {\n hooks: [\n // @ts-ignore\n mapProps(r.mergeRight({\n showFee: true,\n showLegalCaveat: true,\n })),\n withProps((ownerProps: DefaultProps) => ({\n proposition: r.path([ 'pricingStrategy', 'proposition' ], ownerProps),\n hasProposition: r.pathSatisfies(\n isNotNilOrEmpty,\n [ 'pricingStrategy', 'proposition' ],\n ownerProps\n ),\n hasSaving: hasSavingValue(ownerProps),\n showSetupFee: shouldShowSetupFee(ownerProps),\n renewalPeriod: getDisplayPeriod(ownerProps),\n hasBadge: hasBadge(ownerProps),\n })),\n withBreakpointsHook,\n withProps(stylesheet),\n ],\n }\n\n);\n\nexport default enhance(PureProductPrice);\n","import { useStyles } from '@team-griffin/stylr';\nimport { gu2px } from '@ux/theme-utils';\nimport {\n content,\n smallprint,\n} from '@ux/type-size';\nimport {\n percentage,\n modifier,\n} from '@ux/style-utils';\nimport { Layout } from 'components/common/ProductPrice/constants';\nimport { getTitleColor, getContrastColor } from 'presentation/utils/colorway';\nimport { InnerProps } from './ProductPrice';\nimport { CSSProperties } from 'react';\n\nexport interface Styles {\n root: CSSProperties,\n intro: CSSProperties,\n badge: CSSProperties,\n price: CSSProperties,\n setupFee: CSSProperties,\n fee: CSSProperties,\n renewal: CSSProperties,\n legalCaveat: CSSProperties,\n priceWrapper: CSSProperties,\n pricing: CSSProperties,\n}\nexport default ({\n theme,\n isMinSm,\n isMinLg,\n colorway,\n priceLayout,\n hasProposition,\n hasBadge,\n}: InnerProps) => {\n const {\n spacing,\n typography,\n } = theme;\n\n return useStyles({\n default: {\n root: {\n marginTop: gu2px(3, spacing),\n },\n intro: {\n color: getTitleColor(theme, colorway),\n marginTop: gu2px(2, spacing),\n ...content(typography),\n },\n badge: {\n marginLeft: gu2px(-1, spacing),\n },\n price: {\n color: getContrastColor(theme, colorway),\n marginRight: gu2px(1, spacing),\n },\n setupFee: {\n color: getTitleColor(theme, colorway),\n marginTop: gu2px(1, spacing),\n },\n fee: {\n color: getContrastColor(theme, colorway),\n },\n renewal: {\n color: getTitleColor(theme, colorway),\n },\n legalCaveat: {\n ...smallprint(typography),\n marginTop: gu2px(1, spacing),\n opacity: 0.9,\n },\n },\n [modifier('priceLayout', Layout.COMPACT)]: {\n priceWrapper: {\n display: 'flex',\n width: percentage(100),\n alignItems: 'center',\n justifyContent: 'space-between',\n },\n pricing: {\n flex: 1,\n flexBasis: 'auto',\n textAlign: 'right',\n },\n setupFee: {\n textAlign: 'right',\n marginTop: 0,\n },\n },\n badgeAndNoProposition: {\n pricing: {\n marginTop: gu2px(2, spacing),\n },\n },\n }, [\n { isMinSm },\n { isMinLg },\n { priceLayout },\n { badgeAndNoProposition: hasBadge && !hasProposition && priceLayout !== Layout.COMPACT },\n ]);\n};","// @fabric\nimport pureEnhance from '@ux/pure-enhance';\nimport { withProps } from '@team-griffin/rehook';\nimport { createStructuredSelector } from 'reselect';\nimport { connect } from '@ux/fabric';\nimport ProductPrice from './ProductPrice';\nimport { selectors, productPrice } from '@ux/product';\nimport * as r from 'ramda';\n\nconst { shouldIncludeTax } = selectors;\n\nconst mapStateToProps = createStructuredSelector({\n includeTax: shouldIncludeTax,\n});\n\nconst enhance = pureEnhance('ConnectedProductPrice', [\n withProps(connect(mapStateToProps)),\n withProps(createStructuredSelector({\n displayInterval: r.path([ 'pricingStrategy', 'paymentIntervalDisplay' ]),\n viewMode: r.path([ 'pricingStrategy', 'viewMode' ]),\n interval: r.path([ 'pricingStrategy', 'pricingTier', 'paymentInterval' ]),\n term: r.path([ 'pricingStrategy', 'pricingTier', 'term' ]),\n })),\n productPrice(),\n]);\n\nexport default enhance(ProductPrice);\n","import ConnectedProductPrice from './ConnectedProductPrice';\nimport LegalText from './LegalText';\n\nexport {\n LegalText,\n};\n\nexport default ConnectedProductPrice;\n","export enum Layout {\n COMPACT = 'COMPACT',\n DEFAULT = 'DEFAULT',\n}\n\nexport default null;","import * as r from 'ramda';\nimport { withProps } from '@team-griffin/rehook';\nimport { isInternalUrl, isHashUrl } from 'domain/url';\nimport { NavLink } from 'react-router-dom';\n\ninterface AnyProps {\n url?: string,\n action?: {\n url?: string,\n [key: string]: any,\n }\n [key: string]: any,\n}\n\nexport type UrlComponentType = typeof NavLink | 'a' | 'div';\nconst withUrlComponent = withProps((props: AnyProps) => r.pipe(\n r.either(\n r.prop('url'),\n r.path([ 'action', 'url' ]),\n ),\n r.cond([\n [\n r.isNil,\n () => ({\n Component: 'div',\n }),\n ],\n [\n isInternalUrl,\n (url) => ({\n Component: NavLink,\n to: url,\n }),\n ],\n [\n isHashUrl,\n (url) => ({\n Component: NavLink,\n to: url,\n }),\n ],\n [\n r.T,\n (url) => ({\n Component: 'a',\n href: url,\n }),\n ],\n ]),\n//@ts-ignore\n)(props));\n\nexport default withUrlComponent;","import React from 'react';\nimport {\n withProps,\n} from '@team-griffin/rehook';\nimport stylesheet, { Styles } from './Parallax.stylesheet';\nimport Plx from 'react-plx';\nimport * as r from 'ramda';\nimport withLanguage from 'presentation/hocs/withLanguage';\nimport { Layer } from './Layer';\nimport pureEnhance from '@ux/pure-enhance';\n\ninterface OuterProps {\n layer: Layer,\n}\n\nexport interface InnerProps extends OuterProps {\n currentLanguage: string,\n styles: Styles,\n data: {\n start: string,\n duration: string,\n properties: [\n {\n startValue: number,\n endValue: number,\n property: string,\n },\n ],\n }\n}\nconst getParallaxData = ({\n layer,\n}: OuterProps) => {\n return [{\n start: 'self',\n // @TODO: this value will have to be determined by the ribbon's height.\n // We might have to use react-height here to help us.\n // ---\n // It is double the value of the viewheight to ensure that\n // it keeps performing the parallax scrolling past.\n // 200vh was an arbitary number. This will have to be tweaked with Matt's\n // consent.Make sure that when you tweak this number you also tweak\n // the height calc in the stylesheet\n duration: '200vh',\n properties: [\n {\n startValue: r.ifElse(\n r.equals('parallax'),\n r.always(r.negate(400)),\n r.always(0)\n )(layer.fx.type),\n endValue: 0,\n property: 'translateY',\n },\n ],\n }];\n};\n\nexport const PureParallax = ({\n styles,\n data,\n}: InnerProps) => (\n \n);\n\nexport const enhance = pureEnhance(\n 'Parallax',\n {\n hocs: [\n withLanguage,\n ],\n hooks: [\n withProps((props: OuterProps) => ({\n data: getParallaxData(props),\n })),\n withProps(stylesheet),\n ],\n }\n);\n\nexport default enhance(PureParallax);\n","import { CSSProperties } from 'react';\nimport { useStyles } from '@team-griffin/stylr';\nimport { percentage } from '@ux/style-utils';\nimport urlLanguageParse from 'presentation/utils/urlLanguageParse';\nimport { InnerProps } from './Parallax';\n\nexport interface Styles {\n image: CSSProperties,\n}\nexport default ({\n layer,\n currentLanguage,\n}: InnerProps) => {\n\n return useStyles({\n default: {\n image: {\n width: percentage(100),\n height: percentage(100),\n backgroundImage: `url(${urlLanguageParse(layer.imageUrl, currentLanguage)})`,\n backgroundRepeat: 'no-repeat',\n backgroundSize: 'cover',\n backgroundPosition: 'center center',\n },\n },\n }, []);\n};\n","import React, { CSSProperties } from 'react';\nimport {\n withProps,\n} from '@team-griffin/rehook';\nimport { percentage } from '@ux/style-utils';\nimport urlLanguageParse from 'presentation/utils/urlLanguageParse';\nimport withLanguage from 'presentation/hocs/withLanguage';\nimport { useStyles } from '@team-griffin/stylr';\nimport pureEnhance from '@ux/pure-enhance';\nimport { Layer } from './Layer';\n\ninterface OuterProps {\n layer: Layer,\n}\n\ninterface InnerProps extends OuterProps {\n currentLanguage: string,\n imageUrl: string,\n styles: {\n image: CSSProperties,\n },\n}\n\nconst stylesheet = ({\n layer,\n imageUrl,\n}: InnerProps) => {\n\n return useStyles({\n default: {\n image: {\n width: percentage(100),\n height: percentage(100),\n backgroundSize: 'cover',\n backgroundPosition: layer.focus || 'center center',\n backgroundImage: `url(${imageUrl})`,\n backgroundRepeat: 'no-repeat',\n },\n },\n });\n};\n\nexport const PureStatic = ({\n styles,\n}: InnerProps) => (\n \n);\n\nexport const enhance = pureEnhance(\n 'Static',\n {\n hocs: [\n withLanguage,\n ],\n hooks: [\n withProps(({\n layer,\n currentLanguage,\n }: InnerProps) => {\n const isChrome = /Chrome/.test(navigator.userAgent) && /Google Inc/.test(navigator.vendor);\n const image = (isChrome === true && layer.webpUrl != null) ? layer.webpUrl : layer.imageUrl;\n const imageUrl = urlLanguageParse(image, currentLanguage);\n\n return {\n imageUrl,\n };\n }),\n withProps(stylesheet),\n ],\n },\n\n);\n\nexport default enhance(PureStatic);\n","import React from 'react';\nimport pureEnhance from '@ux/pure-enhance';\nimport {\n withProps,\n} from '@team-griffin/rehook';\nimport Parallax from './Parallax';\nimport Static from './Static';\nimport createImageAlt from 'presentation/utils/createImageAlt';\nimport stylesheet, { Styles } from './Layer.stylesheet';\nimport * as r from 'ramda';\n\nexport interface Layer {\n imageUrl?: string,\n focus: string,\n webpUrl?: string,\n fx: {\n type: string\n },\n}\n\ninterface OuterProps {\n layer: Layer,\n}\nexport interface InnerProps extends OuterProps {\n styles: Styles,\n isParallax: boolean,\n}\nexport const PureLayer = ({\n styles,\n layer,\n isParallax,\n}: InnerProps) => (\n \n \n \n
\n \n
\n
\n \n \n \n
\n \n);\n\nexport const enhance = pureEnhance(\n 'Layer',\n {\n hooks: [\n withProps((props: OuterProps) => ({\n isParallax: r.pathEq([ 'layer', 'fx', 'type' ], 'parallax', props),\n })),\n withProps(stylesheet),\n ],\n }\n);\n\nexport default enhance(PureLayer);\n","import { useStyles } from '@team-griffin/stylr';\nimport { percentage } from '@ux/style-utils';\nimport { CSSProperties } from 'react';\n\nexport interface Styles {\n root: CSSProperties,\n plx: CSSProperties,\n}\n\nexport default () => useStyles({\n default: {\n // We wrap the actual parallax element in another\n // element as parallax uses `transform` and we can\n // not specify 2 of those one a single element.\n root: {\n position: 'absolute',\n top: 0,\n width: percentage(100),\n height: percentage(100),\n overflow: 'hidden',\n },\n plx: {\n // We add on 400px here as a buffer space to work with parallaxing.\n // Whatever the amount to parallax is set to * 2.\n height: `calc(${percentage(100)} + 400px)`,\n position: 'absolute',\n top: 0,\n width: percentage(100),\n },\n },\n});\n","import LayerComponent, { Layer } from './Layer';\nexport {\n Layer,\n};\nexport default LayerComponent;\n","function createError(message) {\n var err = new Error(message);\n err.source = \"ulid\";\n return err;\n}\n// These values should NEVER change. If\n// they do, we're no longer making ulids!\nvar ENCODING = \"0123456789ABCDEFGHJKMNPQRSTVWXYZ\"; // Crockford's Base32\nvar ENCODING_LEN = ENCODING.length;\nvar TIME_MAX = Math.pow(2, 48) - 1;\nvar TIME_LEN = 10;\nvar RANDOM_LEN = 16;\nfunction replaceCharAt(str, index, char) {\n if (index > str.length - 1) {\n return str;\n }\n return str.substr(0, index) + char + str.substr(index + 1);\n}\nfunction incrementBase32(str) {\n var done = undefined;\n var index = str.length;\n var char = void 0;\n var charIndex = void 0;\n var maxCharIndex = ENCODING_LEN - 1;\n while (!done && index-- >= 0) {\n char = str[index];\n charIndex = ENCODING.indexOf(char);\n if (charIndex === -1) {\n throw createError(\"incorrectly encoded string\");\n }\n if (charIndex === maxCharIndex) {\n str = replaceCharAt(str, index, ENCODING[0]);\n continue;\n }\n done = replaceCharAt(str, index, ENCODING[charIndex + 1]);\n }\n if (typeof done === \"string\") {\n return done;\n }\n throw createError(\"cannot increment this string\");\n}\nfunction randomChar(prng) {\n var rand = Math.floor(prng() * ENCODING_LEN);\n if (rand === ENCODING_LEN) {\n rand = ENCODING_LEN - 1;\n }\n return ENCODING.charAt(rand);\n}\nfunction encodeTime(now, len) {\n if (isNaN(now)) {\n throw new Error(now + \" must be a number\");\n }\n if (now > TIME_MAX) {\n throw createError(\"cannot encode time greater than \" + TIME_MAX);\n }\n if (now < 0) {\n throw createError(\"time must be positive\");\n }\n if (Number.isInteger(now) === false) {\n throw createError(\"time must be an integer\");\n }\n var mod = void 0;\n var str = \"\";\n for (; len > 0; len--) {\n mod = now % ENCODING_LEN;\n str = ENCODING.charAt(mod) + str;\n now = (now - mod) / ENCODING_LEN;\n }\n return str;\n}\nfunction encodeRandom(len, prng) {\n var str = \"\";\n for (; len > 0; len--) {\n str = randomChar(prng) + str;\n }\n return str;\n}\nfunction decodeTime(id) {\n if (id.length !== TIME_LEN + RANDOM_LEN) {\n throw createError(\"malformed ulid\");\n }\n var time = id.substr(0, TIME_LEN).split(\"\").reverse().reduce(function (carry, char, index) {\n var encodingIndex = ENCODING.indexOf(char);\n if (encodingIndex === -1) {\n throw createError(\"invalid character found: \" + char);\n }\n return carry += encodingIndex * Math.pow(ENCODING_LEN, index);\n }, 0);\n if (time > TIME_MAX) {\n throw createError(\"malformed ulid, timestamp too large\");\n }\n return time;\n}\nfunction detectPrng() {\n var allowInsecure = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n var root = arguments[1];\n\n if (!root) {\n root = typeof window !== \"undefined\" ? window : null;\n }\n var browserCrypto = root && (root.crypto || root.msCrypto);\n if (browserCrypto) {\n return function () {\n var buffer = new Uint8Array(1);\n browserCrypto.getRandomValues(buffer);\n return buffer[0] / 0xff;\n };\n } else {\n try {\n var nodeCrypto = require(\"crypto\");\n return function () {\n return nodeCrypto.randomBytes(1).readUInt8() / 0xff;\n };\n } catch (e) {}\n }\n if (allowInsecure) {\n try {\n console.error(\"secure crypto unusable, falling back to insecure Math.random()!\");\n } catch (e) {}\n return function () {\n return Math.random();\n };\n }\n throw createError(\"secure crypto unusable, insecure Math.random not allowed\");\n}\nfunction factory(currPrng) {\n if (!currPrng) {\n currPrng = detectPrng();\n }\n return function ulid(seedTime) {\n if (isNaN(seedTime)) {\n seedTime = Date.now();\n }\n return encodeTime(seedTime, TIME_LEN) + encodeRandom(RANDOM_LEN, currPrng);\n };\n}\nfunction monotonicFactory(currPrng) {\n if (!currPrng) {\n currPrng = detectPrng();\n }\n var lastTime = 0;\n var lastRandom = void 0;\n return function ulid(seedTime) {\n if (isNaN(seedTime)) {\n seedTime = Date.now();\n }\n if (seedTime <= lastTime) {\n var incrementedRandom = lastRandom = incrementBase32(lastRandom);\n return encodeTime(lastTime, TIME_LEN) + incrementedRandom;\n }\n lastTime = seedTime;\n var newRandom = lastRandom = encodeRandom(RANDOM_LEN, currPrng);\n return encodeTime(seedTime, TIME_LEN) + newRandom;\n };\n}\nvar ulid = factory();\n\nexport { replaceCharAt, incrementBase32, randomChar, encodeTime, encodeRandom, decodeTime, detectPrng, factory, monotonicFactory, ulid };\n","import { useStyles } from '@team-griffin/stylr';\nimport longhand from '@team-griffin/css-longhand';\nimport { gu2px } from '@ux/theme-utils';\nimport urlLanguageParse from 'presentation/utils/urlLanguageParse';\nimport * as r from 'ramda';\nimport { InnerProps } from './CornerEmbellishments';\nimport { CSSProperties } from 'react';\n\nexport interface Styles {\n root: CSSProperties,\n}\nconst cornerToPosition = r.cond([\n [ r.equals('topLeft'), r.always('0 0') ],\n [ r.equals('topRight'), r.always('right 0') ],\n [ r.equals('bottomLeft'), r.always('0 bottom') ],\n [ r.equals('bottomRight'), r.always('right bottom') ],\n]) as (str: string) => string;\n\nconst gu2CornerSize = (gu: number, spacing?: number) => `${gu2px(gu, spacing)}px ${gu2px(gu, spacing)}px`;\n\nconst cornerSize = (props: InnerProps) => r.cond([\n [\n r.propEq('isMinMd', true),\n r.always(gu2CornerSize(6, props.theme.spacing)),\n ],\n [\n r.propEq('isMinSm', true),\n r.always(gu2CornerSize(5, props.theme.spacing)),\n ],\n [\n r.T,\n r.always(gu2CornerSize(4)),\n ],\n])(props) as string;\n\nconst generateCornerImages = (props: InnerProps) => r.pipe(\n r.defaultTo({}),\n r.reject(r.isNil),\n r.toPairs,\n r.map(([ corner, url ]) => ({\n image: `url(${urlLanguageParse(url, props.currentLanguage)})`,\n size: cornerSize(props),\n position: cornerToPosition(corner),\n repeat: 'no-repeat',\n })),\n)(props.cornerEmbellishments) as unknown as {\n image: string,\n size: string,\n position: string,\n repeat: string,\n}[];\n\nconst cornerArrayToCssProperty = (\n prop: string,\n cornerImages: {\n image: string,\n size: string,\n position: string,\n repeat: string,\n }[],\n//r.pluck wants (never, unknown) as props. I'm more speciifc\n//@ts-ignore\n) => r.join(',', r.pluck(prop, cornerImages));\n\nexport default (props: InnerProps) => {\n const cornerImages = generateCornerImages(props);\n\n return useStyles({\n default: {\n root: {\n position: 'absolute',\n pointerEvents: 'none',\n top: 0,\n bottom: 0,\n left: 0,\n right: 0,\n ...longhand('background', {\n size: cornerArrayToCssProperty('size', cornerImages),\n image: cornerArrayToCssProperty('image', cornerImages),\n position: cornerArrayToCssProperty('position', cornerImages),\n repeat: cornerArrayToCssProperty('repeat', cornerImages),\n }),\n },\n },\n }, []);\n};","import React from 'react';\nimport pureEnhance from '@ux/pure-enhance';\nimport { withProps } from '@team-griffin/rehook';\nimport { withBreakpointsHook } from '@ux/responsive';\nimport withLanguage from 'presentation/hocs/withLanguage';\nimport stylesheet, { Styles } from './CornerEmbellishments.stylesheet';\nimport { Theme } from '@ux/theme-utils';\n\nexport type cornerEmbellishments = {\n topRight?: string,\n bottomRight?: string,\n bottomLeft?: string,\n topLeft?: string\n};\ninterface OuterProps {\n theme: Theme,\n cornerEmbellishments?: cornerEmbellishments,\n}\n\nexport interface InnerProps extends OuterProps {\n styles: Styles,\n currentLanguage: string,\n}\nconst PureCornerEmbellishments = ({\n styles,\n}: InnerProps) => (\n
\n);\n\nconst enhance = pureEnhance('CornerEmbellishments', {\n hocs: [\n withLanguage,\n ],\n hooks: [\n withBreakpointsHook,\n withProps(stylesheet),\n ],\n});\n\nexport default enhance(PureCornerEmbellishments);","import React from 'react';\nimport {\n withProps,\n} from '@team-griffin/rehook';\nimport stylesheet, { Styles } from './Wash.stylesheet';\nimport pureEnhance from '@ux/pure-enhance';\nimport { Theme } from '@ux/theme-utils';\nimport { Colorway } from 'domain/constants/colorway';\nimport { Layout } from 'domain/constants/layout';\nimport { withBreakpointsHook, BreakpointProps } from '@ux/responsive';\n\ninterface OuterProps {\n theme: Theme,\n colorway: Colorway,\n layout: Layout,\n hasTiles: boolean,\n duoLayout: boolean,\n}\nexport interface InnerProps extends OuterProps, BreakpointProps {\n styles: Styles,\n}\n\nexport const PureWash = ({\n styles,\n}: InnerProps) => (\n
\n);\n\nexport const enhance = pureEnhance(\n 'Wash',\n {\n hooks: [\n withBreakpointsHook,\n withProps(stylesheet),\n ],\n },\n);\n\nexport default enhance(PureWash);\n","import { useStyles } from '@team-griffin/stylr';\nimport { UnsafeColorway as Colorway } from 'domain/constants/colorway';\nimport {\n modifier,\n percentage,\n} from '@ux/style-utils';\nimport rgba from 'presentation/utils/rgba';\nimport { Alignment } from 'domain/constants/alignment';\nimport * as r from 'ramda';\nimport { InnerProps } from './Wash';\nimport { Color } from '@ux/theme-utils';\nimport { CSSProperties } from 'react';\n\nexport interface Styles {\n root: CSSProperties,\n}\nexport default (props: InnerProps) => {\n const {\n theme,\n colorway,\n } = props;\n\n const {\n palette,\n } = theme;\n\n const wash = (clr: Color|string) => r.ifElse(\n r.propEq('colorway', Colorway.LIGHT),\n r.always(rgba(clr, 0.9)),\n r.always(rgba(clr, 0.75)),\n )(props);\n\n const gradient = (clr: Color|string) => `\n linear-gradient(\n to right,\n ${rgba(clr, 0.9)} 40%,\n ${rgba(clr, 0.8)} 50%,\n ${rgba(clr, 0)} 65%\n )`;\n\n /*\n Creates a gradient or semi opaque wash\n Use the wash on mobile, and gradient on tablet and above, unless:\n - we're center aligned text\n - we're a duo layout\n - we have tiles and are on desktop view\n */\n const generateBackground = r.pipe(\n (clr: Color|string) => r.cond([\n // eslint-disable-next-line max-len\n [ r.pathEq([ 'layout', 'alignment' ], Alignment.CENTER), () => wash(clr) ],\n [ r.propEq('duoLayout', true), () => wash(clr) ],\n [ r.both(\n r.propEq('hasTiles', true),\n r.propEq('isMinLg'),\n ), () => wash(clr) ],\n [ r.propEq('isMinMd', true), () => gradient(clr) ],\n [ r.T, () => wash(clr) ],\n ])(props),\n );\n\n return useStyles({\n default: {\n root: {\n position: 'absolute',\n top: 0,\n width: percentage(100),\n height: percentage(100),\n },\n },\n\n [modifier('colorway', Colorway.LIGHT)]: {\n root: {\n background: generateBackground('#ffffff'),\n },\n },\n\n [modifier('colorway', Colorway.NEUTRAL)]: {\n root: {\n background: generateBackground(palette.grey10),\n },\n },\n\n [modifier('colorway', Colorway.DARK)]: {\n root: {\n background: generateBackground('#000000'),\n },\n },\n\n [modifier('colorway', Colorway.PRIMARY)]: {\n root: {\n background: generateBackground(palette.primary),\n },\n },\n\n [modifier('colorway', Colorway.PRIMARY_GRADIENT)]: {\n root: {\n background: generateBackground(palette.primary),\n },\n },\n\n [modifier('colorway', Colorway.HIGHLIGHT)]: {\n root: {\n background: generateBackground(palette.highlight),\n },\n },\n\n }, {\n colorway,\n });\n\n};\n","import React, { Fragment } from 'react';\nimport {\n withProps,\n} from '@team-griffin/rehook';\nimport { withBreakpointsHook, BreakpointProps } from '@ux/responsive';\nimport stylesheet, { Styles } from './Background.stylesheet';\nimport Layer, { Layer as ImageLayer } from 'presentation/components/common/Layer';\nimport Wash from './Wash';\nimport withLanguage from 'presentation/hocs/withLanguage';\nimport urlLanguageParse from 'presentation/utils/urlLanguageParse';\nimport findResponsiveItem from 'presentation/utils/findResponsiveItem';\nimport getBreakpoints from 'presentation/utils/getBreakpoints';\nimport * as r from 'ramda';\nimport pureEnhance from '@ux/pure-enhance';\nimport { Layout } from 'domain/constants/layout';\nimport { Colorway } from 'domain/constants/colorway';\nimport { Theme } from '@ux/theme-utils';\nimport { ResponsiveSet } from 'core/ribbons/primitives';\n\ninterface Background {\n fallback: {\n url: string,\n },\n mp4?: string,\n webm?: string,\n}\nexport type BackgroundArray = ResponsiveSet;\n\ninterface OuterProps {\n layout: Layout,\n background: BackgroundArray,\n duoLayout?: boolean,\n hasTiles?: boolean,\n colorway: Colorway,\n theme: Theme,\n}\ninterface InnerProps extends OuterProps, BreakpointProps {\n styles: Styles,\n activeBackground: Background,\n backgroundType: string,\n currentLanguage: string,\n}\n\ndeclare const layer: ImageLayer;\ndeclare const i: number;\n\nexport const PureBackground = ({\n styles,\n activeBackground,\n backgroundType,\n layout,\n duoLayout,\n hasTiles,\n colorway,\n theme,\n currentLanguage,\n}: InnerProps) => {\n return (\n \n \n
\n \n \n \n \n \n
\n
\n \n \n \n \n \n \n
\n );\n};\n\n//we need this because of the withProps that uses findResponsiveItem\ninterface MiddleProps extends OuterProps, BreakpointProps {}\nexport const enhance = pureEnhance(\n 'Background',\n {\n hocs: [\n withLanguage,\n ],\n hooks: [\n withBreakpointsHook,\n withProps((ownerProps: MiddleProps) => ({\n ...r.pipe(\n (ownerProps: MiddleProps) => findResponsiveItem(\n getBreakpoints(ownerProps),\n ownerProps.background\n ), r.defaultTo({}),\n (activeBackground) => ({\n activeBackground,\n backgroundType: r.ifElse(\n Array.isArray,\n r.always('image'),\n r.always('video'),\n )(activeBackground),\n })\n )(ownerProps),\n })),\n withProps(stylesheet),\n ],\n }\n);\n\n\nexport default enhance(PureBackground);\n","import { useStyles } from '@team-griffin/stylr';\nimport { percentage } from '@ux/style-utils';\nimport { CSSProperties } from 'react';\n\nexport interface Styles {\n videoWrapper: CSSProperties,\n video: CSSProperties,\n fallbackVideoImage: CSSProperties,\n}\n\nexport default () => {\n return useStyles({\n default: {\n videoWrapper: {\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n overflow: 'hidden',\n },\n video: {\n objectFit: 'cover',\n objectPosition: 'center center',\n width: percentage(100),\n height: percentage(100),\n },\n fallbackVideoImage: {\n minHeight: percentage(100),\n minWidth: percentage(100),\n position: 'absolute',\n top: 0,\n },\n },\n }, []);\n};\n","import React, { Fragment, ReactNode } from 'react';\nimport pureEnhance from '@ux/pure-enhance';\nimport { withProps, defaultProps } from '@team-griffin/rehook';\nimport { PreHeading01, Heading01, SubHeading01 } from '@ux/typography';\nimport PaddingBox, { Side } from '@ux/padding-box';\nimport CallToAction from 'components/common/CallToAction';\nimport { Size as ButtonSize } from '@ux/button';\nimport Shortcode, { ShortcodeProps } from 'components/Shortcode';\nimport { getAgainst } from 'presentation/utils/colorway';\nimport { withBreakpointsHook, BreakpointProps } from '@ux/responsive';\nimport stylesheet, { Styles } from './Body.stylesheet';\nimport { isNotNilOrEmpty } from '@team-griffin/capra';\nimport * as r from 'ramda';\nimport { Theme } from '@ux/theme-utils';\nimport { Layout } from 'domain/constants/layout';\nimport { Colorway } from 'domain/constants/colorway';\nimport { CTA } from 'core/ribbons/cta';\n\n\nexport interface OuterProps {\n theme: Theme,\n hBaseline?: number,\n text: {\n precursor?: ShortcodeProps,\n title?: ShortcodeProps,\n body?: ShortcodeProps,\n },\n additionalText?: string|ReactNode,\n footerText?: string|ReactNode,\n ctas: CTA[],\n colorway: Colorway,\n layout: Layout,\n ribbonId: string,\n}\nexport interface DefaultProps extends OuterProps {\n hBaseline: number,\n}\nexport interface InnerProps extends DefaultProps, BreakpointProps {\n styles: Styles,\n hasPrecursor: boolean,\n hasTitle: boolean,\n hasBodyText: boolean,\n hasCta: boolean,\n hasFooterText: boolean,\n}\n\ndeclare const cta: CTA;\ndeclare const i: number;\n\nconst PureBody = ({\n theme,\n styles,\n hBaseline,\n hasPrecursor,\n hasTitle,\n hasBodyText,\n hasCta,\n hasFooterText,\n text,\n additionalText,\n footerText,\n ctas,\n colorway,\n layout,\n ribbonId,\n isMinSm,\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 {additionalText}\n \n
\n \n \n \n \n \n
\n
\n \n \n \n {footerText}\n \n \n
\n);\n\nconst enhance = pureEnhance('BillboardBody', {\n hooks: [\n defaultProps({\n hBaseline: 1,\n }),\n withProps((ownerProps: DefaultProps) => ({\n hasBodyText: r.pathSatisfies(\n isNotNilOrEmpty,\n [ 'text', 'body' ],\n ownerProps,\n ),\n hasCta: r.propSatisfies(\n isNotNilOrEmpty,\n 'ctas',\n )(ownerProps),\n hasPrecursor: r.pathSatisfies(\n isNotNilOrEmpty,\n [ 'text', 'precursor' ],\n ownerProps,\n ),\n hasTitle: r.pathSatisfies(\n isNotNilOrEmpty,\n [ 'text', 'title' ],\n ownerProps,\n ),\n hasFooterText: r.propSatisfies(\n isNotNilOrEmpty,\n 'footerText',\n )(ownerProps),\n })),\n withBreakpointsHook,\n withProps(stylesheet),\n ],\n});\n\nexport default enhance(PureBody);","import { useStyles } from '@team-griffin/stylr';\nimport { getTitleColor, getBodyColor } from 'presentation/utils/colorway';\nimport { gu2px } from '@ux/theme-utils';\nimport cssSides, { Side } from '@team-griffin/css-sides';\nimport { modifier } from '@ux/style-utils';\nimport { Alignment } from 'domain/constants/alignment';\nimport { smallprint } from '@ux/type-size';\nimport * as r from 'ramda';\nimport { InnerProps } from './Body';\nimport { CSSProperties } from 'react';\n\n\nexport interface Styles {\n root: CSSProperties,\n precursor: CSSProperties,\n title: CSSProperties,\n subtitle: CSSProperties,\n ctas: CSSProperties,\n cta: CSSProperties,\n footerText: CSSProperties,\n}\nexport default ({\n theme,\n colorway,\n theme: {\n spacing,\n typography,\n },\n layout: {\n alignment,\n },\n isMinSm,\n}: InnerProps) => useStyles({\n default: {\n root: {\n position: 'relative',\n },\n precursor: {\n color: getTitleColor(theme, colorway),\n },\n title: {\n color: getTitleColor(theme, colorway),\n },\n subtitle: {\n color: getBodyColor(theme, colorway),\n marginTop: gu2px(2, spacing),\n },\n ctas: {\n display: 'flex',\n flexDirection: 'column',\n marginTop: gu2px(2, spacing),\n overflow: 'hidden',\n },\n cta: {\n marginTop: gu2px(1, spacing),\n },\n footerText: {\n marginTop: gu2px(1, spacing),\n ...smallprint(typography),\n color: getBodyColor(theme, colorway),\n opacity: 0.9,\n },\n },\n\n isMinSm: {\n ctas: {\n flexDirection: 'row',\n ...cssSides('margin', Side.X, r.negate(gu2px(0.5, spacing))),\n },\n cta: {\n marginBottom: 0,\n ...cssSides('margin', Side.X, gu2px(0.5, spacing)),\n },\n },\n\n [modifier('alignment', Alignment.CENTER)]: {\n root: {\n textAlign: 'center',\n },\n footerText: {\n textAlign: 'center',\n },\n ctas: {\n justifyContent: 'center',\n },\n },\n}, [\n { isMinSm },\n { alignment },\n]);","import React from 'react';\nimport pureEnhance from '@ux/pure-enhance';\nimport PaddingBox from '@ux/padding-box';\nimport { Button, Kind, Against } from '@ux/button';\nimport Message from '@ux/message';\nimport { Colorway } from 'domain/constants/colorway';\nimport { withProps } from '@team-griffin/rehook';\nimport stylesheet, { Styles } from './Scroll.stylesheet';\nimport * as r from 'ramda';\nimport { Theme } from '@ux/theme-utils';\nimport { Layout } from 'domain/constants/layout';\n\ninterface OuterProps {\n theme: Theme,\n colorway: Colorway,\n onScrollClick: (evt: any) => any,\n layout: Layout,\n}\nexport interface InnerProps extends OuterProps {\n styles: Styles,\n scrollAgainst: Against,\n}\nexport const PureBillboardScroll = ({\n onScrollClick,\n scrollAgainst,\n styles,\n}: InnerProps) => (\n \n \n \n \n \n);\n\nconst enhance = pureEnhance(\n 'BillboardScroll',\n {\n hooks: [\n withProps((ownerProps: OuterProps) => ({\n scrollAgainst: r.when(\n r.equals(Colorway.PRIMARY_GRADIENT),\n r.always(Colorway.PRIMARY),\n )(ownerProps.colorway),\n })),\n withProps(stylesheet),\n ],\n }\n);\n\nexport default enhance(PureBillboardScroll);\n","import { useStyles } from '@team-griffin/stylr';\nimport { gu2px } from '@ux/theme-utils';\nimport { Alignment } from 'domain/constants/alignment';\nimport { modifier } from '@ux/style-utils';\nimport { InnerProps } from './Scroll';\nimport { CSSProperties } from 'react';\n\nexport interface Styles {\n scroller: CSSProperties,\n}\nexport default ({\n theme: {\n spacing,\n },\n layout: {\n alignment,\n },\n}: InnerProps) => useStyles({\n default: {\n scroller: {\n paddingTop: gu2px(2, spacing),\n },\n },\n [modifier('alignment', Alignment.CENTER)]: {\n scroller: {\n textAlign: 'center',\n },\n },\n\n}, [\n { alignment },\n]);\n","import * as r from 'ramda';\nimport { gu2px } from '@ux/theme-utils';\nimport flexAnchors, { AnchorArray } from 'presentation/utils/flexAnchors';\nimport findResponsiveItem from 'presentation/utils/findResponsiveItem';\nimport { Anchor } from 'domain/constants/anchor';\nimport { BreakpointProps } from '@ux/responsive';\n\n/**\n * Two layouts: Tiles and Duo, require separate containers to site\n * next to each other, bleed to the far edge, but still maintain the\n * site width rules of a single container. This function returns half\n * the width of the container size\n */\nexport const halfContainerWidth = (width: number, spacing: number) => r.pipe(\n // add the extra gu of spacing between the two items\n r.add(gu2px(1, spacing)),\n // account for the additional padding at either side\n r.divide(r.__, 2),\n // remove the accounted for spacing\n r.subtract(r.__, gu2px(1, spacing)),\n)(width);\n\n\nexport const getActiveAnchor = (anchor: AnchorArray, breakpoints: BreakpointProps) => {\n\n const getActive = (from: AnchorArray) => findResponsiveItem(\n breakpoints,\n from,\n );\n\n const activeAnchor = getActive(\n flexAnchors([ Anchor.TOP, null, null ], anchor),\n );\n\n return activeAnchor;\n};\n\nexport default null;","import React, { Fragment } from 'react';\nimport { withProps } from '@team-griffin/rehook';\nimport { Container, Row, Column, Justify } from '@ux/grid';\nimport pureEnhance from '@ux/pure-enhance';\nimport Background, { BackgroundArray } from '../Background';\nimport Body, { OuterProps as BodyProps } from '../Body';\nimport Scroll from '../Scroll';\nimport { Alignment } from 'domain/constants/alignment';\nimport stylesheet, { Styles } from './Generic.stylesheet';\n\ninterface OuterProps extends BodyProps {\n showScroll: boolean,\n background: BackgroundArray,\n onScrollClick: (evt: any) => any,\n}\nexport interface InnerProps extends OuterProps, BreakpointProps {\n styles: Styles,\n justify: Justify,\n}\n\nimport * as r from 'ramda';\nimport { withBreakpointsHook, BreakpointProps } from '@ux/responsive';\n\nexport const PureBillboardGeneric = ({\n styles,\n theme,\n layout,\n colorway,\n hBaseline,\n ctas,\n text,\n additionalText,\n footerText,\n justify,\n onScrollClick,\n showScroll,\n ribbonId,\n background,\n}: InnerProps) => (\n \n \n
\n \n \n \n \n \n \n \n
\n \n \n \n \n \n
\n);\n\nconst enhance = pureEnhance('BillboardGeneric', [\n withBreakpointsHook,\n withProps((ownerProps: OuterProps) => ({\n justify: r.ifElse(\n r.pathEq([ 'layout', 'alignment' ], Alignment.CENTER),\n r.always(Justify.CENTER),\n r.always(null),\n )(ownerProps),\n })),\n withProps(stylesheet),\n]);\n\nexport default enhance(PureBillboardGeneric);\n","import { useStyles } from '@team-griffin/stylr';\nimport getBreakpoints from 'presentation/utils/getBreakpoints';\nimport { getActiveAnchor } from '../styles';\nimport { InnerProps } from './Generic';\nimport { CSSProperties } from 'react';\n\nexport interface Styles {\n content: CSSProperties,\n}\n\nexport default (props: InnerProps) => {\n const {\n layout,\n } = props;\n\n const {\n anchor,\n } = layout;\n\n\n const breakpointProps = getBreakpoints(props);\n const activeAnchor = getActiveAnchor(anchor, breakpointProps);\n\n return useStyles({\n default: {\n content: {\n flex: 1,\n flexBasis: 'auto',\n justifyContent: activeAnchor,\n display: 'flex',\n flexDirection: 'column',\n },\n },\n }, []);\n};\n","import React, { Fragment } from 'react';\nimport { Container } from '@ux/grid';\nimport pureEnhance from '@ux/pure-enhance';\nimport Background, { BackgroundArray } from '../Background';\nimport Body, { OuterProps as BodyProps } from '../Body';\nimport Scroll from '../Scroll';\nimport stylesheet, { Styles } from './Duo.stylesheet';\nimport { withBreakpointsHook, BreakpointProps } from '@ux/responsive';\nimport { withProps } from '@team-griffin/rehook';\nimport { Theme } from '@ux/theme-utils';\nimport { Colorway } from 'domain/constants/colorway';\nimport { Layout } from 'domain/constants/layout';\n\ninterface OuterProps extends BodyProps {\n theme: Theme,\n layout: Layout,\n colorway: Colorway,\n hBaseline: number,\n showScroll: boolean,\n duoLayout: boolean,\n background: BackgroundArray,\n onScrollClick: (evt: any) => any,\n}\n\nexport interface InnerProps extends OuterProps, BreakpointProps {\n styles: Styles,\n}\n\nexport const PureBillboardDuo = ({\n styles,\n theme,\n layout,\n colorway,\n hBaseline,\n ctas,\n text,\n additionalText,\n footerText,\n onScrollClick,\n showScroll,\n ribbonId,\n background,\n}: InnerProps) => (\n \n \n
\n
\n \n
\n
\n \n \n
\n \n
\n
\n
\n
\n);\n\nconst enhance = pureEnhance('BillboardDuo', [\n withBreakpointsHook,\n withProps(stylesheet),\n]);\n\nexport default enhance(PureBillboardDuo);\n","import { useStyles } from '@team-griffin/stylr';\nimport getBreakpoints from 'presentation/utils/getBreakpoints';\nimport { getActiveAnchor, halfContainerWidth } from '../styles';\nimport { breakpoints } from '@ux/responsive';\nimport cssSides, { Side } from '@team-griffin/css-sides';\nimport { gu2px } from '@ux/theme-utils';\nimport * as r from 'ramda';\nimport { percentage } from '@ux/style-utils';\nimport { InnerProps } from './Duo';\nimport { CSSProperties } from 'react';\n\nexport interface Styles {\n content: CSSProperties,\n duoLayout: CSSProperties,\n}\nexport default (props: InnerProps) => {\n const {\n isMinSm,\n isMinMd,\n isMinLg,\n isMinXl,\n layout,\n duoLayout,\n theme,\n } = props;\n\n const {\n anchor,\n } = layout;\n\n const startDuoLayout = r.pathOr(false, [ 'layout', 'startDuoLayout' ], props);\n // @todo this prop isn't set properly due to how ribbon raid loops and creates duo\n // const endDuoLayout = r.pathOr(false, [ 'layout', 'endDuoLayout' ], props);\n\n const breakpointProps = getBreakpoints(props);\n const activeAnchor = getActiveAnchor(anchor, breakpointProps);\n\n return useStyles({\n default: {\n content: {\n flex: 1,\n flexBasis: 'auto',\n justifyContent: activeAnchor,\n display: 'flex',\n flexDirection: 'column',\n },\n duoLayout: {\n ...cssSides('padding', Side.X, gu2px(1, theme.spacing)),\n ...cssSides('margin', Side.X, 'auto'),\n width: percentage(100),\n maxWidth: percentage(100),\n },\n },\n\n isMinSm: {\n duoLayout: {\n maxWidth: breakpoints.sm - gu2px(1, theme.spacing),\n },\n },\n\n isDuoLayoutMd: {\n duoLayout: {\n maxWidth: halfContainerWidth(breakpoints.md, theme.spacing),\n marginLeft: 0,\n },\n },\n isDuoLayoutLg: {\n duoLayout: {\n maxWidth: halfContainerWidth(breakpoints.lg, theme.spacing),\n },\n },\n isDuoLayoutXl: {\n duoLayout: {\n maxWidth: halfContainerWidth(breakpoints.xl, theme.spacing),\n },\n },\n startDuoLayout: {\n duoLayout: {\n marginRight: 0,\n marginLeft: 'auto',\n },\n },\n }, [\n { anchor },\n { isMinSm },\n { isDuoLayoutMd: duoLayout && isMinMd },\n { isDuoLayoutLg: duoLayout && isMinLg },\n { isDuoLayoutXl: duoLayout && isMinXl },\n { startDuoLayout },\n ]);\n};\n","export enum Side {\n START = 'START',\n END = 'END',\n}\n\nexport enum Layout {\n DUO = 'DUO',\n TILES = 'TILES',\n}\n\nexport default null;","import React from 'react';\nimport {\n branch,\n} from 'recompose';\nimport PaddingBox from '@ux/padding-box';\nimport {\n Heading02,\n BodyCopy01,\n} from '@ux/typography';\nimport { withProps } from '@team-griffin/rehook';\nimport Shortcode, { ShortcodeProps } from 'components/Shortcode';\nimport stylesheet, { Styles } from './Tile.stylesheet';\nimport Glyph from '@ux/glyphs';\nimport { gu2px, Theme } from '@ux/theme-utils';\nimport callToAction from 'presentation/hocs/callToAction';\nimport pureEnhance from '@ux/pure-enhance';\nimport { withBreakpointsHook, BreakpointProps } from '@ux/responsive';\nimport * as r from 'ramda';\nimport withUrlComponent, { UrlComponentType } from 'presentation/hooks/withUrlComponent';\nimport { withHover } from '@team-griffin/stylr';\nimport { Colorway } from 'domain/constants/colorway';\nimport { Layout } from 'domain/constants/layout';\n\nexport interface TileProps {\n colorway: Colorway,\n type: string,\n text: {\n body?: ShortcodeProps,\n title?: ShortcodeProps,\n },\n action: {\n url: string,\n linkAttribution?: string,\n },\n}\ninterface OuterProps extends TileProps {\n theme: Theme,\n hBaseline: number,\n layout: Layout,\n leftTile: boolean,\n rightTile: boolean,\n}\nexport interface InnerProps extends OuterProps, BreakpointProps {\n styles: Styles,\n hover: boolean,\n Component: UrlComponentType,\n}\n\nexport const PureTile = ({\n styles,\n theme,\n colorway,\n text,\n hBaseline,\n action,\n Component,\n}: InnerProps) => {\n const {\n title,\n body,\n } = text;\n\n return (\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('Tile', {\n hocs: [\n callToAction,\n branch(\n r.path([ 'action', 'url' ]),\n //@ts-ignore\n withHover\n ),\n ],\n hooks: [\n withBreakpointsHook,\n withUrlComponent,\n withProps(stylesheet),\n ],\n});\n\nexport default enhance(PureTile);","import { useStyles } from '@team-griffin/stylr';\nimport { gu2px } from '@ux/theme-utils';\nimport { getTitleColor, getBodyColor, getBackgroundColor } from 'presentation/utils/colorway';\nimport { modifier, percentage } from '@ux/style-utils';\nimport { Alignment } from 'domain/constants/alignment';\nimport cssSides, { Side } from '@team-griffin/css-sides';\nimport { breakpoints } from '@ux/responsive';\nimport { Side as TilesSide } from './constants';\nimport { halfContainerWidth } from './styles';\nimport ribbonPadding from 'presentation/utils/ribbonPadding';\nimport { InnerProps } from './Tile';\nimport { CSSProperties } from 'react';\n\nexport interface Styles {\n root: CSSProperties,\n container: CSSProperties,\n title: CSSProperties,\n subtitle: CSSProperties,\n box: CSSProperties,\n wrapperText: CSSProperties,\n wrapperIcon: CSSProperties,\n icon: CSSProperties,\n}\nexport default ({\n theme,\n colorway,\n hover,\n layout,\n isMinSm,\n isMinMd,\n isMinLg,\n isMinXl,\n leftTile,\n rightTile,\n}: InnerProps) => {\n const {\n alignment,\n tilesSide,\n } = layout;\n\n const {\n spacing,\n } = theme;\n\n return useStyles({\n default: {\n root: {\n flex: 1,\n flexBasis: 'auto',\n display: 'flex',\n flexDirection: 'column',\n justifyContent: isMinLg ? 'center' : 'flex-start',\n backgroundColor: getBackgroundColor(theme, colorway),\n textAlign: 'left',\n textDecoration: 'none',\n height: percentage(100),\n ...ribbonPadding({\n spacing,\n isMinSm,\n isMinLg,\n layout: {\n shrinkLeading: isMinLg && rightTile,\n shrinkTrailing: isMinLg && leftTile,\n },\n }),\n },\n container: {\n ...cssSides('padding', Side.X, gu2px(1, spacing)),\n ...cssSides('margin', Side.X, 'auto'),\n position: 'relative',\n width: percentage(100),\n maxWidth: percentage(100),\n },\n title: {\n color: getTitleColor(theme, colorway),\n paddingRight: gu2px(3, spacing),\n },\n subtitle: {\n color: getBodyColor(theme, colorway),\n marginTop: gu2px(2, spacing),\n },\n box: {\n display: 'flex',\n },\n wrapperText: {\n flex: 1,\n flexBasis: 'auto',\n paddingRight: gu2px(2, spacing),\n },\n wrapperIcon: {\n minWidth: gu2px(3, spacing),\n position: 'relative',\n paddingTop: gu2px(0.5, spacing),\n },\n icon: {\n color: getTitleColor(theme, colorway),\n opacity: 1,\n width: gu2px(3, spacing),\n position: 'absolute',\n right: 0,\n },\n },\n hover: {\n root: {\n textDecoration: 'none',\n },\n icon: {\n opacity: 1,\n marginRight: 0,\n animation: 'arrowAnimation 0.3s',\n animationTimingFunction: 'ease-in-out',\n animationDirection: 'normal',\n animationFillMode: 'forwards',\n },\n },\n\n [modifier('alignment', Alignment.CENTER)]: {\n root: {\n textAlign: 'center',\n },\n },\n\n isMinSm: {\n container: {\n maxWidth: breakpoints.sm - gu2px(1, spacing),\n },\n },\n\n isMinMd: {\n container: {\n // theu're side by side so need an additional 1GU removing\n maxWidth: halfContainerWidth(breakpoints.md, spacing),\n },\n },\n\n isMinLg: {\n container: {\n maxWidth: halfContainerWidth(breakpoints.lg, spacing),\n },\n },\n isMinXl: {\n container: {\n maxWidth: halfContainerWidth(breakpoints.xl, spacing),\n },\n },\n leftTileMedium: {\n container: {\n marginRight: 0,\n },\n },\n rightTileMedium: {\n container: {\n marginLeft: 0,\n },\n },\n leftTileLarge: {\n container: {\n marginRight: 'auto',\n marginLeft: 0,\n },\n },\n\n tilesStartLarge: {\n container: {\n marginLeft: 'auto',\n marginRight: 0,\n },\n },\n }, [\n { alignment },\n { hover },\n { alignment },\n { isMinSm },\n { isMinMd },\n { isMinLg },\n { isMinXl },\n { leftTileMedium: leftTile && isMinMd },\n { rightTileMedium: rightTile && isMinMd },\n { leftTileLarge: leftTile && isMinLg },\n { tilesStartLarge: isMinLg && tilesSide === TilesSide.START },\n ]);\n};\n","import React from 'react';\nimport {\n withProps,\n} from '@team-griffin/rehook';\nimport { withBreakpointsHook, BreakpointProps } from '@ux/responsive';\nimport Tile, { TileProps } from './Tile';\nimport stylesheet, { Styles } from './Tiles.stylesheet';\nimport { gu2px, Theme } from '@ux/theme-utils';\nimport { Layout } from 'domain/constants/layout';\nimport pureEnhance from '@ux/pure-enhance';\n\ninterface OuterProps {\n theme: Theme,\n tiles: TileProps[],\n hBaseline: number,\n layout: Layout,\n}\nexport interface InnerProps extends OuterProps, BreakpointProps {\n styles: Styles,\n}\nconst tileAnimation = (spacing: number) => `@keyframes arrowAnimation {\n from {\n right: ${gu2px(3, spacing)}px;\n opacity: 0.1;\n }\n to {\n right: ${gu2px(0, spacing)}px;\n opacity: 1;\n }\n}`;\n\ndeclare const i: number;\ndeclare const tile: TileProps;\n\nexport const PureTiles = ({\n theme,\n tiles,\n styles,\n hBaseline,\n layout,\n}: InnerProps) => (\n
\n \n \n \n \n
\n \n
\n);\n\n\nexport const enhance = pureEnhance(\n 'Tiles',\n {\n hooks: [\n withBreakpointsHook,\n withProps(stylesheet),\n ],\n },\n\n);\n\nexport default enhance(PureTiles);\n","import { useStyles } from '@team-griffin/stylr';\nimport { percentage } from '@ux/style-utils';\nimport { InnerProps } from './Tiles';\nimport { CSSProperties } from 'react';\n\nexport interface Styles {\n root: CSSProperties,\n tile: CSSProperties,\n}\nexport default ({\n isMinMd,\n isMinLg,\n}: InnerProps) => {\n return useStyles({\n default: {\n tile: {\n flex: 1,\n flexBasis: 'auto',\n // Safari is not filling 100% height of flex parent\n // in nested flex containers\n WebkitFlexBasis: 0,\n position: 'relative',\n },\n },\n\n isMinMd: {\n root: {\n flexDirection: 'row',\n display: 'flex',\n },\n tile: {\n width: percentage(50),\n },\n },\n isMinLg: {\n root: {\n flexDirection: 'column',\n height: percentage(100),\n },\n tile: {\n width: percentage(100),\n },\n },\n }, [\n { isMinMd },\n { isMinLg },\n ]);\n};\n","import React, { Fragment } from 'react';\nimport { Container, Row, Column, Direction, Justify } from '@ux/grid';\nimport pureEnhance from '@ux/pure-enhance';\nimport Background, { BackgroundArray } from '../Background';\nimport Body, { OuterProps as BodyProps } from '../Body';\nimport Scroll from '../Scroll';\nimport Tiles from '../Tiles';\nimport PaddingBox, { Side } from '@ux/padding-box';\nimport { withBreakpointsHook, BreakpointProps } from '@ux/responsive';\nimport { withProps } from '@team-griffin/rehook';\nimport { Side as TilesSide } from '../constants';\nimport stylesheet, { Styles } from './WithTiles.stylesheet';\nimport * as r from 'ramda';\nimport { TileProps } from '../Tile';\nimport { isNotNilOrEmpty } from 'crosscutting/ramda';\n\ninterface OuterProps extends BodyProps {\n showScroll: boolean,\n background: BackgroundArray,\n onScrollClick: (evt: any) => any,\n justify: Justify,\n tiles: TileProps[],\n}\nexport interface InnerProps extends OuterProps, BreakpointProps {\n styles: Styles,\n direction: Direction,\n hasFooterText: boolean,\n}\nexport const PureBillboardTiles = ({\n styles,\n theme,\n layout,\n colorway,\n hBaseline,\n ctas,\n text,\n additionalText,\n footerText,\n tiles,\n onScrollClick,\n justify,\n showScroll,\n ribbonId,\n hasFooterText,\n background,\n direction,\n isMinLg,\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 {footerText}\n \n \n \n \n \n \n
\n \n
\n
\n
\n);\n\nconst enhance = pureEnhance('BillboardTiles', [\n withBreakpointsHook,\n withProps((ownerProps: OuterProps) => ({\n direction: r.ifElse(\n r.pathEq([ 'layout', 'tilesSide' ], TilesSide.END),\n r.always(Direction.ROW),\n r.always(Direction.ROW_REVERSE),\n )(ownerProps),\n hasFooterText: r.propSatisfies(\n isNotNilOrEmpty,\n 'footerText',\n )(ownerProps),\n })),\n withProps(stylesheet),\n]);\n\nexport default enhance(PureBillboardTiles);\n","import { useStyles } from '@team-griffin/stylr';\nimport { getActiveAnchor, halfContainerWidth } from '../styles';\nimport { breakpoints } from '@ux/responsive';\nimport cssSides, { Side } from '@team-griffin/css-sides';\nimport { gu2px } from '@ux/theme-utils';\nimport ribbonPadding from 'presentation/utils/ribbonPadding';\nimport { Side as TilesSide } from '../constants';\nimport { percentage } from '@ux/style-utils';\nimport { InnerProps } from './WithTiles';\nimport { CSSProperties } from 'react';\n\nexport interface Styles {\n content: CSSProperties,\n body: CSSProperties,\n container: CSSProperties,\n row: CSSProperties,\n}\n\nexport default ({\n layout,\n theme,\n isMinSm,\n isMinMd,\n isMinLg,\n isMinXl,\n}: InnerProps) => {\n const {\n spacing,\n } = theme;\n\n const {\n anchor,\n tilesSide,\n } = layout;\n\n const activeAnchor = getActiveAnchor(anchor, {\n isMinSm,\n isMinMd,\n isMinLg,\n isMinXl,\n });\n\n return useStyles({\n default: {\n content: {\n flex: 1,\n flexBasis: 'auto',\n justifyContent: activeAnchor,\n display: 'flex',\n flexDirection: 'column',\n ...ribbonPadding({\n spacing,\n isMinSm,\n isMinLg,\n }),\n },\n body: {\n flex: 1,\n flexBasis: 'auto',\n },\n },\n\n isMinLg: {\n container: {\n ...cssSides('padding', Side.X, gu2px(1, spacing)),\n display: 'flex',\n flex: 1,\n flexBasis: 'auto',\n // Safari is not filling 100% height of flex parent\n // in nested flex containers\n webkitFlexBasis: 0,\n width: percentage(100),\n maxWidth: percentage(100),\n },\n row: {\n width: percentage(100),\n },\n content: {\n marginLeft: 'auto',\n maxWidth: halfContainerWidth(breakpoints.lg, spacing),\n height: percentage(100),\n },\n },\n\n isMinXl: {\n content: {\n maxWidth: halfContainerWidth(breakpoints.xl, spacing),\n },\n },\n\n lgStartTile: {\n content: {\n marginLeft: 0,\n marginRight: 'auto',\n },\n },\n }, [\n { isMinSm },\n { isMinLg },\n { isMinXl },\n { lgStartTile: tilesSide === TilesSide.START && isMinLg },\n ]);\n};\n","import React, { Fragment, ReactNode } from 'react';\nimport pureEnhance from '@ux/pure-enhance';\nimport {\n withProps,\n defaultProps,\n withHandlers,\n withState,\n} from '@team-griffin/rehook';\nimport Ribbon from '../Ribbon';\nimport findResponsiveItem from 'presentation/utils/findResponsiveItem';\nimport getBreakpoints from 'presentation/utils/getBreakpoints';\nimport visibilitySet from 'presentation/hocs/visibilitySet';\nimport { Fit, RibbonProps } from 'domain/constants/ribbons';\nimport { scroller, Element } from 'react-scroll';\nimport { ulid } from 'ulid';\nimport CornerEmbellishments, { cornerEmbellishments } from './CornerEmbellishments';\nimport BillboardGeneric from './layouts/Generic';\nimport BillboardDuo from './layouts/Duo';\nimport BillboardTiles from './layouts/WithTiles';\nimport errorBoundary from 'presentation/hocs/errorBoundary';\nimport { OuterProps as BodyProps } from './Body';\nimport * as r from 'ramda';\nimport { withBreakpointsHook, BreakpointProps } from '@ux/responsive';\nimport { CTA } from 'core/ribbons/cta';\n\nexport interface OuterProps extends BodyProps, RibbonProps {\n cornerEmbellishments?: cornerEmbellishments,\n}\ninterface DefaultProps extends OuterProps {\n ctas: CTA[],\n additionalText: string|ReactNode,\n footerText: string|ReactNode,\n duo: boolean,\n duoLayout: boolean,\n}\ninterface MiddleProps extends DefaultProps, BreakpointProps {}\ninterface InnerProps extends MiddleProps {\n bottomScrollName: string,\n hasTiles: boolean,\n}\n\nconst hasTwoTiles = r.pipe(r.length, r.equals(2));\n\nconst shouldShowScroll = (props: MiddleProps) => r.ifElse(\n r.propEq('isMinSm', true),\n r.pipe(\n r.path([ 'layout', 'fit' ]),\n (fit) => findResponsiveItem(\n getBreakpoints(props),\n fit,\n ),\n r.either(\n r.equals(Fit.FULLSCREEN),\n r.equals(Fit.FILL),\n ),\n ),\n r.always(false),\n)(props);\n\n\nconst BillboardLayout = r.cond([\n [ r.prop('hasTiles'), (props) => ],\n [ r.prop('duoLayout'), (props) => ],\n [ r.T, (props) => ],\n]);\n\nexport const PureBillboard = ({\n id,\n theme,\n layout,\n loading,\n colorway,\n name,\n bottomScrollName,\n hasTiles,\n duoLayout,\n cornerEmbellishments,\n ...props\n}: InnerProps) => (\n \n \n \n \n \n \n \n);\n\n\nexport const enhance = pureEnhance(\n 'Billboard',\n {\n hocs: [\n errorBoundary,\n visibilitySet,\n ],\n hooks: [\n defaultProps({\n ctas: [],\n additionalText: null,\n footerText: null,\n duo: false,\n }),\n withState('bottomScrollName', 'setBottomScrollName', () => {\n return ulid();\n }),\n withHandlers({\n onScrollClick: ({ bottomScrollName }: { bottomScrollName: string }) => () => {\n scroller.scrollTo(bottomScrollName, {\n duration: 500,\n delay: 100,\n smooth: true,\n });\n },\n }),\n withBreakpointsHook,\n withProps((ownerProps: MiddleProps) => ({\n showScroll: shouldShowScroll(ownerProps),\n hasTiles: r.both(\n r.propSatisfies(hasTwoTiles, 'tiles'),\n r.propEq('duo', false),\n )(ownerProps),\n })),\n ],\n },\n);\n\nexport default enhance(PureBillboard);\n","import Billboard, { OuterProps } from './Billboard';\nimport { Side } from './constants';\n\nexport {\n Side,\n OuterProps as BillboardProps,\n};\nexport default Billboard;","import _includes from \"./internal/_includes.js\";\nimport _curry2 from \"./internal/_curry2.js\";\n/**\n * Returns `true` if the specified value is equal, in [`R.equals`](#equals)\n * terms, to at least one element of the given list; `false` otherwise.\n * Works also with strings.\n *\n * @func\n * @memberOf R\n * @since v0.26.0\n * @category List\n * @sig a -> [a] -> Boolean\n * @param {Object} a The item to compare against.\n * @param {Array} list The array to consider.\n * @return {Boolean} `true` if an equivalent item is in the list, `false` otherwise.\n * @see R.any\n * @example\n *\n * R.includes(3, [1, 2, 3]); //=> true\n * R.includes(4, [1, 2, 3]); //=> false\n * R.includes({ name: 'Fred' }, [{ name: 'Fred' }]); //=> true\n * R.includes([42], [[42]]); //=> true\n * R.includes('ba', 'banana'); //=>true\n */\n\nvar includes =\n/*#__PURE__*/\n_curry2(_includes);\n\nexport default includes;","import _objectAssign from \"./internal/_objectAssign.js\";\nimport _curry2 from \"./internal/_curry2.js\";\n/**\n * Create a new object with the own properties of the first object merged with\n * the own properties of the second object. If a key exists in both objects,\n * the value from the second object will be used.\n *\n * @func\n * @memberOf R\n * @since v0.26.0\n * @category Object\n * @sig {k: v} -> {k: v} -> {k: v}\n * @param {Object} l\n * @param {Object} r\n * @return {Object}\n * @see R.mergeLeft, R.mergeDeepRight, R.mergeWith, R.mergeWithKey\n * @example\n *\n * R.mergeRight({ 'name': 'fred', 'age': 10 }, { 'age': 40 });\n * //=> { 'name': 'fred', 'age': 40 }\n *\n * const withDefaults = R.mergeRight({x: 0, y: 0});\n * withDefaults({y: 2}); //=> {x: 0, y: 2}\n * @symb R.mergeRight(a, b) = {...a, ...b}\n */\n\nvar mergeRight =\n/*#__PURE__*/\n_curry2(function mergeRight(l, r) {\n return _objectAssign({}, l, r);\n});\n\nexport default mergeRight;"],"sourceRoot":""}