{"version":3,"sources":["webpack:///./src/helpers/media.ts","webpack:///./src/stories/Components/Global/SectionWrapper/SectionWrapper.tsx","webpack:///./src/stories/Components/Buttons/GeneralButton/Button.tsx","webpack:///(webpack)/buildin/global.js","webpack:///./src/stories/Components/Global/SiteWide/SiteWide.tsx","webpack:///./src/stories/Components/Global/SectionWrapper/SectionWrapper.styles.ts","webpack:///./src/stories/Components/Breadcrumb/Breadcrumb.styles.ts","webpack:///./src/stories/Components/Buttons/GeneralButton/Button.styles.ts","webpack:///./src/helpers/global.ts","webpack:///./node_modules/query-string/index.js","webpack:///./src/helpers/brand.ts","webpack:///./src/stories/Widgets/OfferBanner/OfferBanner.styles.ts","webpack:///./src/stories/Widgets/OfferBanner/OfferBanner.tsx","webpack:///./src/hooks/useIntersectionObserver.ts","webpack:///./src/hooks/useInView.ts","webpack:///./node_modules/strict-uri-encode/index.js","webpack:///./node_modules/decode-uri-component/index.js","webpack:///./src/helpers/fonts.ts","webpack:///./node_modules/split-on-first/index.js","webpack:///./node_modules/filter-obj/index.js","webpack:///./src/helpers/cssVar.ts","webpack:///./src/helpers/fluid.ts","webpack:///./src/helpers/srOnly.ts","webpack:///./src/stories/Components/Breadcrumb/Breadcrumb.tsx","webpack:///./src/helpers/image.ts","webpack:///./src/stories/Components/Global/SiteWide/SiteWide.styles.ts","webpack:///./src/helpers/animation.ts","webpack:///./src/helpers/scrollbars.ts"],"names":["Device","from","size","until","between","start","end","SectionWrapper","React","ref","children","className","flush","fullWidth","id","innerWidth","spacing","otherProps","inViewRef","active","useInView","rootMargin","S","ScrollAnchor","Container","r","current","SiteWide","width","displayName","Button","addon","addonPosition","branding","disabled","form","title","type","onClick","rest","createElement","ButtonStyles","iconPosition","Icon","position","Text","LinkButton","href","target","as","g","this","Function","e","window","module","exports","s","styled","section","setCssVar","TabletLarge","DesktopLarge","props","css","setSpacing","cssVar","div","SectionWrapperStyles","value","side","output","nav","scrollbars","brand","black","white","BreadcrumbStyles","Item","MobileLarge","srOnly","Link","a","fonts","sofiaPro","regular","PrimaryStyles","primary","blue","base","light","SecondaryStyles","TertiaryStyles","OutlineStyles","TransparentStyles","IconLeft","DesktopSmall","IconRight","hideText","BaseButtonStyles","transition","ButtonTextStyles","inter","semiBold","button","navHeight","navHeightMobile","siteWideWidth","siteWideWidthNarrow","siteWideWidthInner","siteWidePadding","siteWidePaddingTablet","siteWidePaddingMobile","ButtonReset","strictUriEncode","decodeComponent","splitOnFirst","filterObject","encodeFragmentIdentifier","Symbol","validateArrayFormatSeparator","length","TypeError","encode","options","strict","encodeURIComponent","decode","removeHash","input","hashStart","indexOf","slice","extract","queryStart","parseValue","parseNumbers","Number","isNaN","trim","parseBooleans","toLowerCase","parse","query","Object","assign","sort","arrayFormat","arrayFormatSeparator","formatter","result","key","accumulator","exec","replace","undefined","concat","isArray","includes","isEncodedArray","newValue","split","map","item","test","arrayValue","parserForArrayFormat","ret","create","param","keys","k","reduce","Boolean","Array","keysSorter","b","stringify","object","shouldFilter","skipNull","skipEmptyString","index","join","keyValueSep","encoderForArrayFormat","objectCopy","filter","x","parseUrl","url","url_","hash","parseFragmentIdentifier","fragmentIdentifier","stringifyUrl","queryFromUrl","parsedQueryFromUrl","queryString","getHash","pick","exclude","exclusionFilter","colourWithTransparency","hexValue","hex","bigint","parseInt","grey","dark","lightAlt","highlight","steel","grey13","grey20","grey35","grey40","grey44","grey60","grey76","grey80","grey90","grey97","validation","invalid","TopSection","Desktop","BottomSection","BreadcrumbWrapper","ImageWrapper","mediaStyles","Image","img","Tablet","Video","TagWrapper","Tag","span","extraBold","fluid","ContentWrapper","Title","h1","Content","p","medium","Metadata","MetadataIcon","MetadataValue","EventBannerStyles","CtaWrapper","OfferBanner","breadcrumb","content","cta","image","mobileImage","altText","tag","tintAmount","video","Breadcrumb","style","media","srcSet","getImageUrl","mode","ActualDesktop","height","loading","alt","role","src","ReactPlayer","playsinline","playing","controls","muted","loop","dangerouslySetInnerHTML","__html","text","useIntersectionObserver","callback","observerRef","useRef","rootRef","elementRef","useEffect","IntersectionObserver","root","observe","disconnect","reverse","isEditMode","inView","setInView","useState","entries","isIntersecting","str","charCodeAt","toString","toUpperCase","singleMatcher","RegExp","multiMatcher","decodeComponents","components","decodeURIComponent","err","left","right","prototype","call","tokens","match","i","encodedURI","replaceMap","customDecodeURIComponent","bold","string","separator","separatorIndex","obj","predicate","isArr","val","name","DEFAULT_MIN_VALUE","TabletSmall","DEFAULT_MAX_VALUE","min","max","minWidth","maxWidth","minRem","maxRem","minWidthRem","maxWidthRem","slope","yAxisIntersection","clampMin","round","clampVal","clampMax","num","Math","items","darkText","isLong","acc","cur","DEFAULT_PARAMS","upscale","imageParams","params","heightratio","widthratio","fixPadParams","global","cubicEaseOut","FadeUpBase","FadeUpActive","shouldAnimate","innerCss","properties","duration","timing","verticalFadeIn","amount","hidden","opacity","y","visible"],"mappings":"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","file":"OfferBanner-ec172060338746586d48.js","sourcesContent":["export var Device;\r\n(function (Device) {\r\n Device[Device[\"MobileSmall\"] = 320] = \"MobileSmall\";\r\n Device[Device[\"Mobile\"] = 375] = \"Mobile\";\r\n Device[Device[\"MobileLarge\"] = 480] = \"MobileLarge\";\r\n Device[Device[\"TabletSmall\"] = 568] = \"TabletSmall\";\r\n Device[Device[\"Tablet\"] = 768] = \"Tablet\";\r\n Device[Device[\"TabletLarge\"] = 1024] = \"TabletLarge\";\r\n Device[Device[\"DesktopSmall\"] = 1280] = \"DesktopSmall\";\r\n Device[Device[\"Desktop\"] = 1366] = \"Desktop\";\r\n Device[Device[\"DesktopLarge\"] = 1600] = \"DesktopLarge\";\r\n Device[Device[\"ActualDesktop\"] = 1920] = \"ActualDesktop\";\r\n Device[Device[\"DesktopXL\"] = 2560] = \"DesktopXL\";\r\n})(Device || (Device = {}));\r\nexport function from(size) {\r\n return `(min-width: ${size}px)`;\r\n}\r\nexport function until(size) {\r\n return `(max-width: ${size - 1}px)`;\r\n}\r\nexport function between(start, end) {\r\n return `${from(start)} and ${until(end)}`;\r\n}\r\n","import { useInView } from '@hooks/useInView';\r\nimport * as React from 'react';\r\nimport S from './SectionWrapper.styles';\r\nimport { rootMargin } from '@helpers/animation';\r\nconst SectionWrapper = React.forwardRef(({ children, className, flush = 'none', fullWidth = false, id, innerWidth = 'default', spacing = 'margin', ...otherProps }, ref) => {\r\n const [inViewRef, active] = useInView({\r\n rootMargin,\r\n });\r\n return (React.createElement(React.Fragment, null,\r\n id && React.createElement(S.ScrollAnchor, { id: id }),\r\n React.createElement(S.Container, { ref: (r) => {\r\n // Handle forwarded ref.\r\n if (typeof ref === 'function') {\r\n ref(r);\r\n }\r\n else if (ref) {\r\n ref.current = r;\r\n }\r\n // Handle internal refs.\r\n inViewRef.current = r;\r\n }, className: className, flush: flush, spacing: spacing, \"data-active\": active, ...otherProps }, fullWidth ? children : React.createElement(S.SiteWide, { width: innerWidth }, children))));\r\n});\r\nSectionWrapper.displayName = 'SectionWrapper';\r\nexport default SectionWrapper;\r\n","import React from 'react';\r\nimport { ButtonStyles } from './Button.styles';\r\nconst Button = ({ addon, addonPosition, branding, className, disabled, form, size, title, type = 'button', onClick, ...rest }) => {\r\n return (React.createElement(ButtonStyles.Button, { className: className, branding: branding, disabled: disabled, form: form, size: size, iconPosition: addonPosition, type: type, onClick: onClick, ...rest },\r\n addon && addonPosition === 'left' && (React.createElement(ButtonStyles.Icon, { position: addonPosition }, addon)),\r\n React.createElement(ButtonStyles.Text, null, title),\r\n addon && addonPosition === 'right' && (React.createElement(ButtonStyles.Icon, { position: addonPosition }, addon))));\r\n};\r\nconst LinkButton = ({ addon, addonPosition, branding, className, href, size, target = '_self', title, ...rest }) => {\r\n return (React.createElement(ButtonStyles.Button, { className: className, as: \"a\", branding: branding, href: href, size: size, target: target, ...rest },\r\n addon && addonPosition === 'left' && (React.createElement(ButtonStyles.Icon, { position: addonPosition }, addon)),\r\n React.createElement(ButtonStyles.Text, null, title),\r\n addon && addonPosition === 'right' && (React.createElement(ButtonStyles.Icon, { position: addonPosition }, addon))));\r\n};\r\nexport { Button as default, LinkButton };\r\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","import React from 'react';\r\nimport s from './SiteWide.styles';\r\nconst SiteWide = ({ children, className, width = 'default', id }) => {\r\n return (React.createElement(s.Container, { id: id, className: className, width: width }, children));\r\n};\r\nexport default SiteWide;\r\n","import { cssVar, setCssVar } from '@helpers/cssVar';\r\nimport { Device, from } from '@helpers/media';\r\nimport SiteWide from '@stories/Components/Global/SiteWide/SiteWide';\r\nimport styled, { css } from 'styled-components';\r\nconst Container = styled.section `\r\n ${setCssVar('sectionMargin', '32px')};\r\n ${setCssVar('sitePadding', '18px')};\r\n ${setCssVar('siteWidth', '100%')};\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n ${setCssVar('sectionMargin', '64px')};\r\n }\r\n\r\n @media ${from(Device.DesktopLarge)} {\r\n ${setCssVar('sitePadding', '18px')};\r\n ${setCssVar('siteWidth', '1640px')};\r\n }\r\n\r\n ${(props) => css `\r\n /* Set default spacing. */\r\n ${setSpacing(cssVar('sectionMargin'), props.spacing, 'both')}\r\n\r\n /* Override based on flush prop. */\r\n ${props.flush && setSpacing('0px', props.spacing, props.flush)}\r\n `}\r\n`;\r\nconst ScrollAnchor = styled.div `\r\n scroll-margin: calc(var(--headerHeight) + var(--headerReducedOffset) + 32px) 0 0;\r\n`;\r\nconst StyledSiteWide = styled(SiteWide) ``;\r\nconst SectionWrapperStyles = {\r\n Container,\r\n SiteWide: StyledSiteWide,\r\n ScrollAnchor,\r\n};\r\nexport default SectionWrapperStyles;\r\nfunction setSpacing(value, type, side) {\r\n let output = '';\r\n if (side === 'none') {\r\n return;\r\n }\r\n if (side === 'both') {\r\n output = `\r\n ${type}-top: ${value};\r\n ${type}-bottom: ${value};\r\n `;\r\n }\r\n else {\r\n output = `\r\n ${type}-${side}: ${value};\r\n `;\r\n }\r\n return css `\r\n ${output}\r\n `;\r\n}\r\n","import brand from '@helpers/brand';\r\nimport fonts from '@helpers/fonts';\r\nimport { Device, until } from '@helpers/media';\r\nimport scrollbars from '@helpers/scrollbars';\r\nimport srOnly from '@helpers/srOnly';\r\nimport styled from 'styled-components';\r\nconst Container = styled.nav `\r\n ${scrollbars};\r\n\r\n --scrollbar-width: 4px;\r\n\r\n display: flex;\r\n color: var(--fgColor);\r\n flex-wrap: wrap;\r\n padding-bottom: 4px;\r\n\r\n &[data-theme='dark'] {\r\n --fgColor: ${brand.black};\r\n }\r\n\r\n &[data-theme='light'] {\r\n --fgColor: ${brand.white};\r\n }\r\n`;\r\nconst Item = styled.div `\r\n &:not(:last-child)::after {\r\n content: '/';\r\n margin: 0 6px;\r\n }\r\n\r\n /* Hide all but the last 2 items on mobile */\r\n @media ${until(Device.MobileLarge)} {\r\n ${Container}[data-truncate='true'] &:not(:nth-last-child(-n + 2)) {\r\n ${srOnly}\r\n }\r\n }\r\n`;\r\nconst Link = styled.a `\r\n color: currentColor;\r\n ${fonts.sofiaPro.regular};\r\n font-size: 17px;\r\n letter-spacing: 0.1em;\r\n line-height: 1em;\r\n text-decoration: none;\r\n text-transform: uppercase;\r\n text-underline-position: under;\r\n\r\n &:focus-visible {\r\n outline: auto;\r\n }\r\n\r\n &:hover {\r\n text-decoration: underline;\r\n }\r\n\r\n &[aria-current='page'] {\r\n text-decoration: none;\r\n\r\n &:focus,\r\n &:hover {\r\n text-decoration: none;\r\n }\r\n }\r\n`;\r\nconst BreadcrumbStyles = {\r\n Container,\r\n Item,\r\n Link,\r\n};\r\nexport default BreadcrumbStyles;\r\n","import { transition } from '@helpers/animation';\r\nimport brand from '@helpers/brand';\r\nimport fonts from '@helpers/fonts';\r\nimport { Device, until } from '@helpers/media';\r\nimport styled, { css } from 'styled-components';\r\nconst Text = styled.div ``;\r\nexport const PrimaryStyles = css `\r\n border: 2px solid ${brand.primary.blue.base};\r\n background-color: ${brand.primary.blue.base};\r\n color: ${brand.white};\r\n\r\n &:focus-visible,\r\n &:hover {\r\n border-color: var(--hoverColor, ${brand.primary.blue.light}) !important;\r\n background-color: var(--hoverColor, ${brand.primary.blue.light}) !important;\r\n color: ${brand.white};\r\n }\r\n\r\n &:active {\r\n border-color: ${brand.primary.blue.base};\r\n background-color: ${brand.primary.blue.base};\r\n color: ${brand.white};\r\n }\r\n`;\r\nexport const SecondaryStyles = css `\r\n background-color: transparent;\r\n color: ${brand.white};\r\n border: 2px solid ${brand.white};\r\n\r\n &:focus-visible,\r\n &:hover,\r\n &:active {\r\n border-color: ${brand.primary.blue.light};\r\n background-color: ${brand.primary.blue.light};\r\n color: ${brand.white};\r\n }\r\n`;\r\nexport const TertiaryStyles = css `\r\n background-color: ${brand.white};\r\n color: ${brand.black};\r\n border: 2px solid ${brand.white};\r\n\r\n &:focus-visible,\r\n &:hover {\r\n border-color: ${brand.primary.blue.base};\r\n background-color: ${brand.primary.blue.base};\r\n color: ${brand.white};\r\n }\r\n\r\n &:active {\r\n border-color: ${brand.white};\r\n background-color: ${brand.primary.blue.base};\r\n color: ${brand.white};\r\n }\r\n`;\r\nexport const OutlineStyles = css `\r\n background-color: ${brand.white};\r\n color: ${brand.primary.blue.base};\r\n border: 2px solid ${brand.primary.blue.base};\r\n\r\n &:focus-visible,\r\n &:hover,\r\n &:active {\r\n border-color: ${brand.primary.blue.light};\r\n background-color: ${brand.primary.blue.light};\r\n color: ${brand.white};\r\n }\r\n`;\r\nexport const TransparentStyles = css `\r\n background-color: transparent;\r\n color: ${brand.white};\r\n border: 2px solid ${brand.white};\r\n\r\n &:focus-visible,\r\n &:hover,\r\n &:active {\r\n border-color: ${brand.white};\r\n background-color: ${brand.primary.blue.base};\r\n color: ${brand.white};\r\n }\r\n`;\r\nconst IconLeft = css `\r\n padding-right: 15px;\r\n\r\n @media ${until(Device.DesktopSmall)} {\r\n padding-right: 0;\r\n }\r\n`;\r\nconst IconRight = css `\r\n padding-left: 15px;\r\n\r\n @media ${until(Device.DesktopSmall)} {\r\n padding-left: 0;\r\n }\r\n`;\r\nconst hideText = css `\r\n ${Text} {\r\n @media ${until(Device.DesktopSmall)} {\r\n display: none;\r\n }\r\n }\r\n`;\r\nconst Icon = styled.div `\r\n display: inline-block;\r\n vertical-align: middle;\r\n\r\n ${({ position }) => {\r\n switch (position) {\r\n case 'left':\r\n return IconLeft;\r\n case 'right':\r\n return IconRight;\r\n default:\r\n break;\r\n }\r\n}}\r\n\r\n svg {\r\n max-height: 24px;\r\n width: 20px;\r\n }\r\n`;\r\nexport const BaseButtonStyles = css `\r\n ${transition('color, background-color, border-color')};\r\n\r\n display: inline-flex;\r\n align-items: center;\r\n border-radius: 25px;\r\n height: 50px;\r\n justify-content: center;\r\n padding: 0 32px;\r\n text-decoration: none;\r\n user-select: none;\r\n white-space: nowrap;\r\n`;\r\nexport const ButtonTextStyles = css `\r\n ${fonts.inter.semiBold};\r\n\r\n font-size: 16px;\r\n line-height: 26px;\r\n text-transform: uppercase;\r\n transform: translateY(-2px);\r\n vertical-align: middle;\r\n\r\n @media ${until(Device.TabletLarge)} {\r\n font-size: 12px;\r\n line-height: 20px;\r\n white-space: break-spaces;\r\n text-align: center;\r\n }\r\n`;\r\nconst Button = styled.button `\r\n ${BaseButtonStyles};\r\n\r\n ${Text} {\r\n ${ButtonTextStyles};\r\n\r\n display: inline-block;\r\n }\r\n\r\n ${({ branding }) => {\r\n switch (branding) {\r\n case 'primary':\r\n return PrimaryStyles;\r\n case 'secondary':\r\n return SecondaryStyles;\r\n case 'tertiary':\r\n return TertiaryStyles;\r\n case 'outline':\r\n return OutlineStyles;\r\n case 'transparent':\r\n return TransparentStyles;\r\n default:\r\n break;\r\n }\r\n}}\r\n\r\n ${({ iconPosition }) => {\r\n switch (iconPosition) {\r\n case 'right':\r\n return hideText;\r\n default:\r\n break;\r\n }\r\n}}\r\n\r\n &:disabled {\r\n opacity: 0.5;\r\n pointer-events: none;\r\n }\r\n`;\r\nexport const ButtonStyles = {\r\n Button,\r\n Icon,\r\n Text,\r\n};\r\n","import { css } from 'styled-components';\r\nexport default {\r\n navHeight: 175,\r\n navHeightMobile: 92,\r\n siteWideWidth: 1760,\r\n siteWideWidthNarrow: 1430,\r\n siteWideWidthInner: 860,\r\n siteWidePadding: 36,\r\n siteWidePaddingTablet: 26,\r\n siteWidePaddingMobile: 15,\r\n};\r\nexport const ButtonReset = css `\r\n border: none;\r\n outline: none;\r\n padding: 0px;\r\n background: none;\r\n border-radius: 0px;\r\n`;\r\n","'use strict';\nconst strictUriEncode = require('strict-uri-encode');\nconst decodeComponent = require('decode-uri-component');\nconst splitOnFirst = require('split-on-first');\nconst filterObject = require('filter-obj');\n\nconst isNullOrUndefined = value => value === null || value === undefined;\n\nconst encodeFragmentIdentifier = Symbol('encodeFragmentIdentifier');\n\nfunction encoderForArrayFormat(options) {\n\tswitch (options.arrayFormat) {\n\t\tcase 'index':\n\t\t\treturn key => (result, value) => {\n\t\t\t\tconst index = result.length;\n\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [...result, [encode(key, options), '[', index, ']'].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [\n\t\t\t\t\t...result,\n\t\t\t\t\t[encode(key, options), '[', encode(index, options), ']=', encode(value, options)].join('')\n\t\t\t\t];\n\t\t\t};\n\n\t\tcase 'bracket':\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [...result, [encode(key, options), '[]'].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [...result, [encode(key, options), '[]=', encode(value, options)].join('')];\n\t\t\t};\n\n\t\tcase 'colon-list-separator':\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [...result, [encode(key, options), ':list='].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [...result, [encode(key, options), ':list=', encode(value, options)].join('')];\n\t\t\t};\n\n\t\tcase 'comma':\n\t\tcase 'separator':\n\t\tcase 'bracket-separator': {\n\t\t\tconst keyValueSep = options.arrayFormat === 'bracket-separator' ?\n\t\t\t\t'[]=' :\n\t\t\t\t'=';\n\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\t// Translate null to an empty string so that it doesn't serialize as 'null'\n\t\t\t\tvalue = value === null ? '' : value;\n\n\t\t\t\tif (result.length === 0) {\n\t\t\t\t\treturn [[encode(key, options), keyValueSep, encode(value, options)].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [[result, encode(value, options)].join(options.arrayFormatSeparator)];\n\t\t\t};\n\t\t}\n\n\t\tdefault:\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [...result, encode(key, options)];\n\t\t\t\t}\n\n\t\t\t\treturn [...result, [encode(key, options), '=', encode(value, options)].join('')];\n\t\t\t};\n\t}\n}\n\nfunction parserForArrayFormat(options) {\n\tlet result;\n\n\tswitch (options.arrayFormat) {\n\t\tcase 'index':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /\\[(\\d*)\\]$/.exec(key);\n\n\t\t\t\tkey = key.replace(/\\[\\d*\\]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = {};\n\t\t\t\t}\n\n\t\t\t\taccumulator[key][result[1]] = value;\n\t\t\t};\n\n\t\tcase 'bracket':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /(\\[\\])$/.exec(key);\n\t\t\t\tkey = key.replace(/\\[\\]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = [value];\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], value);\n\t\t\t};\n\n\t\tcase 'colon-list-separator':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /(:list)$/.exec(key);\n\t\t\t\tkey = key.replace(/:list$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = [value];\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], value);\n\t\t\t};\n\n\t\tcase 'comma':\n\t\tcase 'separator':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tconst isArray = typeof value === 'string' && value.includes(options.arrayFormatSeparator);\n\t\t\t\tconst isEncodedArray = (typeof value === 'string' && !isArray && decode(value, options).includes(options.arrayFormatSeparator));\n\t\t\t\tvalue = isEncodedArray ? decode(value, options) : value;\n\t\t\t\tconst newValue = isArray || isEncodedArray ? value.split(options.arrayFormatSeparator).map(item => decode(item, options)) : value === null ? value : decode(value, options);\n\t\t\t\taccumulator[key] = newValue;\n\t\t\t};\n\n\t\tcase 'bracket-separator':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tconst isArray = /(\\[\\])$/.test(key);\n\t\t\t\tkey = key.replace(/\\[\\]$/, '');\n\n\t\t\t\tif (!isArray) {\n\t\t\t\t\taccumulator[key] = value ? decode(value, options) : value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst arrayValue = value === null ?\n\t\t\t\t\t[] :\n\t\t\t\t\tvalue.split(options.arrayFormatSeparator).map(item => decode(item, options));\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = arrayValue;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], arrayValue);\n\t\t\t};\n\n\t\tdefault:\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], value);\n\t\t\t};\n\t}\n}\n\nfunction validateArrayFormatSeparator(value) {\n\tif (typeof value !== 'string' || value.length !== 1) {\n\t\tthrow new TypeError('arrayFormatSeparator must be single character string');\n\t}\n}\n\nfunction encode(value, options) {\n\tif (options.encode) {\n\t\treturn options.strict ? strictUriEncode(value) : encodeURIComponent(value);\n\t}\n\n\treturn value;\n}\n\nfunction decode(value, options) {\n\tif (options.decode) {\n\t\treturn decodeComponent(value);\n\t}\n\n\treturn value;\n}\n\nfunction keysSorter(input) {\n\tif (Array.isArray(input)) {\n\t\treturn input.sort();\n\t}\n\n\tif (typeof input === 'object') {\n\t\treturn keysSorter(Object.keys(input))\n\t\t\t.sort((a, b) => Number(a) - Number(b))\n\t\t\t.map(key => input[key]);\n\t}\n\n\treturn input;\n}\n\nfunction removeHash(input) {\n\tconst hashStart = input.indexOf('#');\n\tif (hashStart !== -1) {\n\t\tinput = input.slice(0, hashStart);\n\t}\n\n\treturn input;\n}\n\nfunction getHash(url) {\n\tlet hash = '';\n\tconst hashStart = url.indexOf('#');\n\tif (hashStart !== -1) {\n\t\thash = url.slice(hashStart);\n\t}\n\n\treturn hash;\n}\n\nfunction extract(input) {\n\tinput = removeHash(input);\n\tconst queryStart = input.indexOf('?');\n\tif (queryStart === -1) {\n\t\treturn '';\n\t}\n\n\treturn input.slice(queryStart + 1);\n}\n\nfunction parseValue(value, options) {\n\tif (options.parseNumbers && !Number.isNaN(Number(value)) && (typeof value === 'string' && value.trim() !== '')) {\n\t\tvalue = Number(value);\n\t} else if (options.parseBooleans && value !== null && (value.toLowerCase() === 'true' || value.toLowerCase() === 'false')) {\n\t\tvalue = value.toLowerCase() === 'true';\n\t}\n\n\treturn value;\n}\n\nfunction parse(query, options) {\n\toptions = Object.assign({\n\t\tdecode: true,\n\t\tsort: true,\n\t\tarrayFormat: 'none',\n\t\tarrayFormatSeparator: ',',\n\t\tparseNumbers: false,\n\t\tparseBooleans: false\n\t}, options);\n\n\tvalidateArrayFormatSeparator(options.arrayFormatSeparator);\n\n\tconst formatter = parserForArrayFormat(options);\n\n\t// Create an object with no prototype\n\tconst ret = Object.create(null);\n\n\tif (typeof query !== 'string') {\n\t\treturn ret;\n\t}\n\n\tquery = query.trim().replace(/^[?#&]/, '');\n\n\tif (!query) {\n\t\treturn ret;\n\t}\n\n\tfor (const param of query.split('&')) {\n\t\tif (param === '') {\n\t\t\tcontinue;\n\t\t}\n\n\t\tlet [key, value] = splitOnFirst(options.decode ? param.replace(/\\+/g, ' ') : param, '=');\n\n\t\t// Missing `=` should be `null`:\n\t\t// http://w3.org/TR/2012/WD-url-20120524/#collect-url-parameters\n\t\tvalue = value === undefined ? null : ['comma', 'separator', 'bracket-separator'].includes(options.arrayFormat) ? value : decode(value, options);\n\t\tformatter(decode(key, options), value, ret);\n\t}\n\n\tfor (const key of Object.keys(ret)) {\n\t\tconst value = ret[key];\n\t\tif (typeof value === 'object' && value !== null) {\n\t\t\tfor (const k of Object.keys(value)) {\n\t\t\t\tvalue[k] = parseValue(value[k], options);\n\t\t\t}\n\t\t} else {\n\t\t\tret[key] = parseValue(value, options);\n\t\t}\n\t}\n\n\tif (options.sort === false) {\n\t\treturn ret;\n\t}\n\n\treturn (options.sort === true ? Object.keys(ret).sort() : Object.keys(ret).sort(options.sort)).reduce((result, key) => {\n\t\tconst value = ret[key];\n\t\tif (Boolean(value) && typeof value === 'object' && !Array.isArray(value)) {\n\t\t\t// Sort object keys, not values\n\t\t\tresult[key] = keysSorter(value);\n\t\t} else {\n\t\t\tresult[key] = value;\n\t\t}\n\n\t\treturn result;\n\t}, Object.create(null));\n}\n\nexports.extract = extract;\nexports.parse = parse;\n\nexports.stringify = (object, options) => {\n\tif (!object) {\n\t\treturn '';\n\t}\n\n\toptions = Object.assign({\n\t\tencode: true,\n\t\tstrict: true,\n\t\tarrayFormat: 'none',\n\t\tarrayFormatSeparator: ','\n\t}, options);\n\n\tvalidateArrayFormatSeparator(options.arrayFormatSeparator);\n\n\tconst shouldFilter = key => (\n\t\t(options.skipNull && isNullOrUndefined(object[key])) ||\n\t\t(options.skipEmptyString && object[key] === '')\n\t);\n\n\tconst formatter = encoderForArrayFormat(options);\n\n\tconst objectCopy = {};\n\n\tfor (const key of Object.keys(object)) {\n\t\tif (!shouldFilter(key)) {\n\t\t\tobjectCopy[key] = object[key];\n\t\t}\n\t}\n\n\tconst keys = Object.keys(objectCopy);\n\n\tif (options.sort !== false) {\n\t\tkeys.sort(options.sort);\n\t}\n\n\treturn keys.map(key => {\n\t\tconst value = object[key];\n\n\t\tif (value === undefined) {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (value === null) {\n\t\t\treturn encode(key, options);\n\t\t}\n\n\t\tif (Array.isArray(value)) {\n\t\t\tif (value.length === 0 && options.arrayFormat === 'bracket-separator') {\n\t\t\t\treturn encode(key, options) + '[]';\n\t\t\t}\n\n\t\t\treturn value\n\t\t\t\t.reduce(formatter(key), [])\n\t\t\t\t.join('&');\n\t\t}\n\n\t\treturn encode(key, options) + '=' + encode(value, options);\n\t}).filter(x => x.length > 0).join('&');\n};\n\nexports.parseUrl = (url, options) => {\n\toptions = Object.assign({\n\t\tdecode: true\n\t}, options);\n\n\tconst [url_, hash] = splitOnFirst(url, '#');\n\n\treturn Object.assign(\n\t\t{\n\t\t\turl: url_.split('?')[0] || '',\n\t\t\tquery: parse(extract(url), options)\n\t\t},\n\t\toptions && options.parseFragmentIdentifier && hash ? {fragmentIdentifier: decode(hash, options)} : {}\n\t);\n};\n\nexports.stringifyUrl = (object, options) => {\n\toptions = Object.assign({\n\t\tencode: true,\n\t\tstrict: true,\n\t\t[encodeFragmentIdentifier]: true\n\t}, options);\n\n\tconst url = removeHash(object.url).split('?')[0] || '';\n\tconst queryFromUrl = exports.extract(object.url);\n\tconst parsedQueryFromUrl = exports.parse(queryFromUrl, {sort: false});\n\n\tconst query = Object.assign(parsedQueryFromUrl, object.query);\n\tlet queryString = exports.stringify(query, options);\n\tif (queryString) {\n\t\tqueryString = `?${queryString}`;\n\t}\n\n\tlet hash = getHash(object.url);\n\tif (object.fragmentIdentifier) {\n\t\thash = `#${options[encodeFragmentIdentifier] ? encode(object.fragmentIdentifier, options) : object.fragmentIdentifier}`;\n\t}\n\n\treturn `${url}${queryString}${hash}`;\n};\n\nexports.pick = (input, filter, options) => {\n\toptions = Object.assign({\n\t\tparseFragmentIdentifier: true,\n\t\t[encodeFragmentIdentifier]: false\n\t}, options);\n\n\tconst {url, query, fragmentIdentifier} = exports.parseUrl(input, options);\n\treturn exports.stringifyUrl({\n\t\turl,\n\t\tquery: filterObject(query, filter),\n\t\tfragmentIdentifier\n\t}, options);\n};\n\nexports.exclude = (input, filter, options) => {\n\tconst exclusionFilter = Array.isArray(filter) ? key => !filter.includes(key) : (key, value) => !filter(key, value);\n\n\treturn exports.pick(input, exclusionFilter, options);\n};\n","const brand = {\r\n black: '#191919',\r\n white: '#FEFFFF',\r\n primary: {\r\n grey: {\r\n dark: '#3B4044',\r\n base: '#949494',\r\n light: '#F1F1F1',\r\n lightAlt: '#F1F3F8',\r\n },\r\n blue: { base: '#01346B', light: '#7185BE', highlight: '#3CB5AB', steel: '#227C9D' },\r\n },\r\n grey: {\r\n grey13: '#212121',\r\n grey20: '#333333',\r\n grey35: '#595959',\r\n grey40: '#666666',\r\n grey44: '#707070',\r\n grey60: '#999999',\r\n grey76: '#C2C2C2',\r\n grey80: '#CCCCCC',\r\n grey90: '#E5E5E5',\r\n grey97: '#F7F7F7',\r\n },\r\n validation: {\r\n invalid: '#DA291C',\r\n },\r\n};\r\nexport default brand;\r\nexport function colourWithTransparency(hexValue, value) {\r\n const hex = hexValue.replace('#', '');\r\n const bigint = parseInt(hex, 16);\r\n const r = (bigint >> 16) & 255;\r\n const g = (bigint >> 8) & 255;\r\n const b = bigint & 255;\r\n const rgbValue = `${r}, ${g}, ${b}`;\r\n return `rgba(${rgbValue}, ${value})`;\r\n}\r\n","import brand from '@helpers/brand';\r\nimport { fluid } from '@helpers/fluid';\r\nimport fonts from '@helpers/fonts';\r\nimport { Device, from, until } from '@helpers/media';\r\nimport { ButtonStyles } from '@stories/Components/Buttons/GeneralButton/Button.styles';\r\nimport SectionWrapper from '@stories/Components/Global/SectionWrapper/SectionWrapper';\r\nimport styled, { css } from 'styled-components';\r\nconst Container = styled(SectionWrapper) ``;\r\nconst TopSection = styled.div `\r\n position: relative;\r\n background: ${brand.black};\r\n color: ${brand.white};\r\n min-height: 400px;\r\n padding: 88px 18px;\r\n\r\n @media ${from(Device.Desktop)} {\r\n padding: 104px 18px;\r\n }\r\n`;\r\nconst BottomSection = styled.div `\r\n margin: 0 auto;\r\n max-width: 896px;\r\n padding: 40px 18px;\r\n`;\r\nconst BreadcrumbWrapper = styled.div `\r\n position: absolute;\r\n top: 24px;\r\n left: 0;\r\n display: block;\r\n width: 100%;\r\n z-index: 4;\r\n`;\r\nconst ImageWrapper = styled.div `\r\n [data-content='true'] & {\r\n &::before {\r\n content: '';\r\n position: absolute;\r\n top: 0;\r\n left: 0;\r\n background: ${brand.black};\r\n height: 100%;\r\n opacity: var(--tint);\r\n width: 100%;\r\n z-index: 2;\r\n }\r\n }\r\n\r\n &::after {\r\n content: '';\r\n position: absolute;\r\n top: 0;\r\n left: 0;\r\n background: linear-gradient(to bottom, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0.78) 100%);\r\n height: 100%;\r\n width: 100%;\r\n z-index: 3;\r\n }\r\n`;\r\nconst mediaStyles = css `\r\n position: absolute;\r\n top: 0;\r\n left: 0;\r\n height: 100%;\r\n object-fit: cover;\r\n object-position: center;\r\n width: 100%;\r\n`;\r\nconst Image = styled.img `\r\n ${mediaStyles}\r\n display: block;\r\n\r\n ${ImageWrapper}[data-has-video=\"true\"] & {\r\n @media ${from(Device.Tablet)} {\r\n display: none;\r\n }\r\n }\r\n`;\r\nconst Video = styled.div `\r\n ${mediaStyles};\r\n\r\n display: none;\r\n\r\n @media ${from(Device.Tablet)} {\r\n display: block;\r\n\r\n video,\r\n iframe {\r\n height: 100%;\r\n object-fit: cover;\r\n object-position: center;\r\n width: 100%;\r\n }\r\n }\r\n`;\r\nconst TagWrapper = styled.div `\r\n position: absolute;\r\n bottom: 0;\r\n left: 50%;\r\n display: block;\r\n width: 100%;\r\n max-width: 896px;\r\n transform: translateX(-50%);\r\n z-index: 4;\r\n padding: 0 18px;\r\n`;\r\nconst Tag = styled.span `\r\n ${fonts.inter.extraBold};\r\n\r\n display: inline-flex;\r\n align-items: center;\r\n background: ${brand.primary.blue.base};\r\n border: ${fluid(1, 2)} solid ${brand.white};\r\n border-bottom: 0;\r\n border-radius: 0 20px 0 0;\r\n color: ${brand.white};\r\n font-size: 14px;\r\n line-height: 1em;\r\n min-width: 120px;\r\n padding: 10px 40px 10px 25px;\r\n white-space: nowrap;\r\n width: auto;\r\n`;\r\nconst ContentWrapper = styled.div ``;\r\nconst Title = styled.h1 `\r\n ${fonts.inter.extraBold};\r\n\r\n font-size: 26px;\r\n letter-spacing: 0.01em;\r\n line-height: 38px;\r\n margin: 0 0 16px;\r\n\r\n @media ${from(Device.Desktop)} {\r\n font-size: 40px;\r\n line-height: 60px;\r\n }\r\n`;\r\nconst Content = styled.p `\r\n ${fonts.sofiaPro.regular};\r\n font-size: 18px;\r\n letter-spacing: 0.01em;\r\n line-height: 28px;\r\n margin: 0 0 32px;\r\n\r\n @media ${from(Device.Desktop)} {\r\n ${fonts.sofiaPro.medium};\r\n line-height: 34px;\r\n }\r\n`;\r\nconst Metadata = styled.div `\r\n display: grid;\r\n align-items: center;\r\n gap: 16px 8px;\r\n grid-template-columns: 28px auto;\r\n justify-items: start;\r\n\r\n @media ${from(Device.Desktop)} {\r\n grid-template-columns: 40px auto;\r\n }\r\n`;\r\nconst MetadataIcon = styled.span `\r\n display: block;\r\n`;\r\nconst MetadataValue = styled.span `\r\n display: block;\r\n ${fonts.sofiaPro.regular};\r\n font-size: 18px;\r\n letter-spacing: 0.01em;\r\n line-height: 1em;\r\n\r\n @media ${from(Device.Desktop)} {\r\n font-size: 22px;\r\n }\r\n`;\r\nconst CtaWrapper = styled.div `\r\n margin-top: 48px;\r\n\r\n @media ${until(Device.MobileLarge)} {\r\n margin-top: 32px;\r\n\r\n ${ButtonStyles.Button} {\r\n width: 100%;\r\n }\r\n }\r\n`;\r\nconst EventBannerStyles = {\r\n BottomSection,\r\n BreadcrumbWrapper,\r\n Container,\r\n Content,\r\n ContentWrapper,\r\n CtaWrapper,\r\n Image,\r\n ImageWrapper,\r\n Metadata,\r\n MetadataIcon,\r\n MetadataValue,\r\n Tag,\r\n TagWrapper,\r\n Title,\r\n TopSection,\r\n Video,\r\n};\r\nexport default EventBannerStyles;\r\n","import { getImageUrl } from '@helpers/image';\r\nimport { Device, from } from '@helpers/media';\r\nimport Breadcrumb from '@stories/Components/Breadcrumb/Breadcrumb';\r\nimport { LinkButton } from '@stories/Components/Buttons/GeneralButton/Button';\r\nimport SiteWide from '@stories/Components/Global/SiteWide/SiteWide';\r\nimport * as React from 'react';\r\nimport ReactPlayer from 'react-player/lazy';\r\nimport S from './OfferBanner.styles';\r\nconst OfferBanner = ({ breadcrumb, content, cta, image, mobileImage, altText, tag, tintAmount = 0.6, title, video, ...props }) => {\r\n return (React.createElement(S.Container, { id: props.id, flush: \"both\", fullWidth: true },\r\n React.createElement(S.TopSection, null,\r\n breadcrumb && (React.createElement(S.BreadcrumbWrapper, null,\r\n React.createElement(SiteWide, null,\r\n React.createElement(Breadcrumb, { ...breadcrumb })))),\r\n image || video ? (React.createElement(S.ImageWrapper, { \"data-has-video\": !!video, style: { '--tint': tintAmount } },\r\n image && (React.createElement(\"picture\", null,\r\n React.createElement(\"source\", { media: from(Device.DesktopSmall), srcSet: [\r\n `${getImageUrl(image, { mode: 'crop', width: Device.ActualDesktop, height: 400 })} 1x`,\r\n `${getImageUrl(image, { mode: 'crop', width: Device.ActualDesktop * 2, height: 800 })} 2x`,\r\n ].join(',') }),\r\n React.createElement(\"source\", { media: from(Device.TabletLarge), srcSet: [\r\n `${getImageUrl(image, { mode: 'crop', width: Device.DesktopSmall, height: 400 })} 1x`,\r\n `${getImageUrl(image, { mode: 'crop', width: Device.DesktopSmall * 2, height: 800 })} 2x`,\r\n ].join(',') }),\r\n React.createElement(\"source\", { media: from(Device.Tablet), srcSet: [\r\n `${getImageUrl(image, {\r\n mode: 'crop',\r\n width: Device.TabletLarge,\r\n height: 400,\r\n })} 1x`,\r\n `${getImageUrl(image, {\r\n mode: 'crop',\r\n width: Device.TabletLarge * 2,\r\n height: 800,\r\n })} 2x`,\r\n ].join(',') }),\r\n React.createElement(\"source\", { media: from(Device.MobileLarge), srcSet: [\r\n `${getImageUrl(mobileImage ? mobileImage : image, {\r\n mode: 'crop',\r\n width: Device.Tablet,\r\n height: 400,\r\n })} 1x`,\r\n `${getImageUrl(mobileImage ? mobileImage : image, {\r\n mode: 'crop',\r\n width: Device.Tablet * 2,\r\n height: 800,\r\n })} 2x`,\r\n ].join(',') }),\r\n React.createElement(S.Image, { loading: \"eager\", alt: altText, role: altText ? undefined : 'presentation', src: getImageUrl(mobileImage ? mobileImage : image, {\r\n mode: 'crop',\r\n width: Device.MobileLarge,\r\n height: 400,\r\n }), srcSet: [\r\n `${getImageUrl(mobileImage ? mobileImage : image, {\r\n mode: 'crop',\r\n width: Device.MobileLarge,\r\n height: 400,\r\n })} 1x`,\r\n `${getImageUrl(mobileImage ? mobileImage : image, {\r\n mode: 'crop',\r\n width: Device.MobileLarge * 2,\r\n height: 800,\r\n })} 2x`,\r\n ].join(',') }))),\r\n video && (React.createElement(S.Video, null,\r\n React.createElement(ReactPlayer, { width: \"100%\", height: \"100%\", playsinline: true, playing: true, controls: false, url: video, muted: true, loop: true }))))) : null,\r\n tag && (React.createElement(S.TagWrapper, null,\r\n React.createElement(S.Tag, null, tag)))),\r\n React.createElement(S.BottomSection, null,\r\n React.createElement(S.ContentWrapper, null,\r\n title && React.createElement(S.Title, null, title),\r\n content && React.createElement(S.Content, { dangerouslySetInnerHTML: { __html: content } }),\r\n cta && (React.createElement(S.CtaWrapper, null,\r\n React.createElement(LinkButton, { branding: \"primary\", href: cta.url, target: cta.target, title: cta.text })))))));\r\n};\r\nexport default OfferBanner;\r\n","import { useEffect, useRef } from 'react';\r\n/**\r\n * Use the IntersectionObserver to track visibility of an element in the viewport.\r\n * @param {IntersectionObserverCallback} callback\r\n * @param {IntersectionObserverInit} options\r\n * @returns {UseIntersectionObserverReturn}\r\n */\r\nfunction useIntersectionObserver(callback, options = {}) {\r\n const observerRef = useRef(null);\r\n const rootRef = useRef(null);\r\n const elementRef = useRef(null);\r\n useEffect(() => {\r\n if (!elementRef.current) {\r\n return undefined;\r\n }\r\n observerRef.current = new IntersectionObserver(callback, {\r\n root: rootRef.current,\r\n ...options,\r\n });\r\n observerRef.current.observe(elementRef.current);\r\n return () => {\r\n if (observerRef.current === null) {\r\n return;\r\n }\r\n observerRef.current.disconnect();\r\n };\r\n }, [callback, options]);\r\n return { elementRef, observerRef, rootRef };\r\n}\r\nexport default useIntersectionObserver;\r\n","import { useState } from 'react';\r\nimport useIntersectionObserver from './useIntersectionObserver';\r\nexport function useInView(options, reverse = false, isEditMode = false) {\r\n const [inView, setInView] = useState(false);\r\n const { elementRef } = useIntersectionObserver((entries) => {\r\n if (entries[0].isIntersecting) {\r\n setInView(true);\r\n }\r\n else if (reverse === true) {\r\n setInView(false);\r\n }\r\n }, options);\r\n return [elementRef, isEditMode ? true : inView];\r\n}\r\n","'use strict';\nmodule.exports = str => encodeURIComponent(str).replace(/[!'()*]/g, x => `%${x.charCodeAt(0).toString(16).toUpperCase()}`);\n","'use strict';\nvar token = '%[a-f0-9]{2}';\nvar singleMatcher = new RegExp(token, 'gi');\nvar multiMatcher = new RegExp('(' + token + ')+', 'gi');\n\nfunction decodeComponents(components, split) {\n\ttry {\n\t\t// Try to decode the entire string first\n\t\treturn decodeURIComponent(components.join(''));\n\t} catch (err) {\n\t\t// Do nothing\n\t}\n\n\tif (components.length === 1) {\n\t\treturn components;\n\t}\n\n\tsplit = split || 1;\n\n\t// Split the array in 2 parts\n\tvar left = components.slice(0, split);\n\tvar right = components.slice(split);\n\n\treturn Array.prototype.concat.call([], decodeComponents(left), decodeComponents(right));\n}\n\nfunction decode(input) {\n\ttry {\n\t\treturn decodeURIComponent(input);\n\t} catch (err) {\n\t\tvar tokens = input.match(singleMatcher);\n\n\t\tfor (var i = 1; i < tokens.length; i++) {\n\t\t\tinput = decodeComponents(tokens, i).join('');\n\n\t\t\ttokens = input.match(singleMatcher);\n\t\t}\n\n\t\treturn input;\n\t}\n}\n\nfunction customDecodeURIComponent(input) {\n\t// Keep track of all the replacements and prefill the map with the `BOM`\n\tvar replaceMap = {\n\t\t'%FE%FF': '\\uFFFD\\uFFFD',\n\t\t'%FF%FE': '\\uFFFD\\uFFFD'\n\t};\n\n\tvar match = multiMatcher.exec(input);\n\twhile (match) {\n\t\ttry {\n\t\t\t// Decode as big chunks as possible\n\t\t\treplaceMap[match[0]] = decodeURIComponent(match[0]);\n\t\t} catch (err) {\n\t\t\tvar result = decode(match[0]);\n\n\t\t\tif (result !== match[0]) {\n\t\t\t\treplaceMap[match[0]] = result;\n\t\t\t}\n\t\t}\n\n\t\tmatch = multiMatcher.exec(input);\n\t}\n\n\t// Add `%C2` at the end of the map to make sure it does not replace the combinator before everything else\n\treplaceMap['%C2'] = '\\uFFFD';\n\n\tvar entries = Object.keys(replaceMap);\n\n\tfor (var i = 0; i < entries.length; i++) {\n\t\t// Replace all decoded components\n\t\tvar key = entries[i];\n\t\tinput = input.replace(new RegExp(key, 'g'), replaceMap[key]);\n\t}\n\n\treturn input;\n}\n\nmodule.exports = function (encodedURI) {\n\tif (typeof encodedURI !== 'string') {\n\t\tthrow new TypeError('Expected `encodedURI` to be of type `string`, got `' + typeof encodedURI + '`');\n\t}\n\n\ttry {\n\t\tencodedURI = encodedURI.replace(/\\+/g, ' ');\n\n\t\t// Try the built in decoder first\n\t\treturn decodeURIComponent(encodedURI);\n\t} catch (err) {\n\t\t// Fallback to a more advanced decoder\n\t\treturn customDecodeURIComponent(encodedURI);\n\t}\n};\n","import { css } from 'styled-components';\r\nexport default {\r\n inter: {\r\n light: css `\r\n font-family: 'Inter', system-ui, -apple-system, BlinkMacSystemFont;\r\n font-style: normal;\r\n font-weight: 300;\r\n `,\r\n regular: css `\r\n font-family: 'Inter', system-ui, -apple-system, BlinkMacSystemFont;\r\n font-style: normal;\r\n font-weight: 400;\r\n `,\r\n medium: css `\r\n font-family: 'Inter', system-ui, -apple-system, BlinkMacSystemFont;\r\n font-style: normal;\r\n font-weight: 500;\r\n `,\r\n semiBold: css `\r\n font-family: 'Inter', system-ui, -apple-system, BlinkMacSystemFont;\r\n font-style: normal;\r\n font-weight: 600;\r\n `,\r\n bold: css `\r\n font-family: 'Inter', system-ui, -apple-system, BlinkMacSystemFont;\r\n font-style: normal;\r\n font-weight: 700;\r\n `,\r\n extraBold: css `\r\n font-family: 'Inter', system-ui, -apple-system, BlinkMacSystemFont;\r\n font-style: normal;\r\n font-weight: 800;\r\n `,\r\n },\r\n sofiaPro: {\r\n light: css `\r\n font-family: 'sofia-pro', system-ui, -apple-system, BlinkMacSystemFont;\r\n font-style: normal;\r\n font-weight: 300;\r\n `,\r\n regular: css `\r\n font-family: 'sofia-pro', system-ui, -apple-system, BlinkMacSystemFont;\r\n font-style: normal;\r\n font-weight: 400;\r\n `,\r\n medium: css `\r\n font-family: 'sofia-pro', system-ui, -apple-system, BlinkMacSystemFont;\r\n font-style: normal;\r\n font-weight: 500;\r\n `,\r\n semiBold: css `\r\n font-family: 'sofia-pro', system-ui, -apple-system, BlinkMacSystemFont;\r\n font-style: normal;\r\n font-weight: 600;\r\n `,\r\n bold: css `\r\n font-family: 'sofia-pro', system-ui, -apple-system, BlinkMacSystemFont;\r\n font-style: normal;\r\n font-weight: 700;\r\n `,\r\n black: css `\r\n font-family: 'sofia-pro', system-ui, -apple-system, BlinkMacSystemFont;\r\n font-style: normal;\r\n font-weight: 900;\r\n `,\r\n },\r\n};\r\n","'use strict';\n\nmodule.exports = (string, separator) => {\n\tif (!(typeof string === 'string' && typeof separator === 'string')) {\n\t\tthrow new TypeError('Expected the arguments to be of type `string`');\n\t}\n\n\tif (separator === '') {\n\t\treturn [string];\n\t}\n\n\tconst separatorIndex = string.indexOf(separator);\n\n\tif (separatorIndex === -1) {\n\t\treturn [string];\n\t}\n\n\treturn [\n\t\tstring.slice(0, separatorIndex),\n\t\tstring.slice(separatorIndex + separator.length)\n\t];\n};\n","'use strict';\nmodule.exports = function (obj, predicate) {\n\tvar ret = {};\n\tvar keys = Object.keys(obj);\n\tvar isArr = Array.isArray(predicate);\n\n\tfor (var i = 0; i < keys.length; i++) {\n\t\tvar key = keys[i];\n\t\tvar val = obj[key];\n\n\t\tif (isArr ? predicate.indexOf(key) !== -1 : predicate(key, val, obj)) {\n\t\t\tret[key] = val;\n\t\t}\n\t}\n\n\treturn ret;\n};\n","const variables = [\r\n 'fgColor',\r\n 'bgColor',\r\n 'accentColor',\r\n 'siteWidth',\r\n 'sitePadding',\r\n 'sectionMargin',\r\n];\r\nfunction cssVar(name) {\r\n return `var(--${name})`;\r\n}\r\nfunction setCssVar(name, value) {\r\n return `--${name}: ${value}`;\r\n}\r\nexport { cssVar, setCssVar };\r\n","import { Device } from './media';\r\n/**\r\n * Base pixel value for the \"rem\" unit.\r\n */\r\nexport const PIXELS_PER_REM = 16;\r\n/**\r\n * Default pixel value for the min width.\r\n */\r\nexport const DEFAULT_MIN_VALUE = Device.TabletSmall;\r\n/**\r\n * Default pixel value for the max width.\r\n */\r\nexport const DEFAULT_MAX_VALUE = Device.ActualDesktop;\r\n/**\r\n * Define a fluid value between the min/max values at the min/max widths.\r\n */\r\nexport function fluid(min, max, minWidth = DEFAULT_MIN_VALUE, maxWidth = DEFAULT_MAX_VALUE) {\r\n const minRem = min / PIXELS_PER_REM;\r\n const maxRem = max / PIXELS_PER_REM;\r\n const minWidthRem = minWidth / PIXELS_PER_REM;\r\n const maxWidthRem = maxWidth / PIXELS_PER_REM;\r\n const slope = (maxRem - minRem) / (maxWidthRem - minWidthRem);\r\n const yAxisIntersection = -minWidthRem * slope + minRem;\r\n const clampMin = `${round(minRem)}rem`;\r\n const clampVal = `${round(yAxisIntersection)}rem + ${round(slope * 100)}vw`;\r\n const clampMax = `${round(maxRem)}rem`;\r\n return `clamp(${clampMin}, ${clampVal}, ${clampMax})`;\r\n}\r\n/**\r\n * Round to nearest hundredth.\r\n */\r\nfunction round(num) {\r\n return Math.round(num * 100) / 100;\r\n}\r\n","import { css } from 'styled-components';\r\n/**\r\n * Show only for screen readers.\r\n * @description Sourced from https://gist.github.com/ffoodd/000b59f431e3e64e4ce1a24d5bb36034\r\n */\r\nconst srOnly = css `\r\n border: 0 !important;\r\n clip: rect(1px, 1px, 1px, 1px) !important;\r\n -webkit-clip-path: inset(50%) !important;\r\n clip-path: inset(50%) !important;\r\n height: 1px !important;\r\n margin: -1px !important;\r\n overflow: hidden !important;\r\n padding: 0 !important;\r\n position: absolute !important;\r\n width: 1px !important;\r\n white-space: nowrap !important;\r\n`;\r\nexport default srOnly;\r\n","import * as React from 'react';\r\nimport S from './Breadcrumb.styles';\r\nconst Breadcrumb = ({ items, darkText = false }) => {\r\n const characterCount = items.map((x) => x.title.length).reduce((acc, cur) => acc + cur, 0);\r\n // If the character count is too long, only show the last two items (LMGR-62) //\r\n const isLong = characterCount > 40;\r\n return (React.createElement(S.Container, { \"aria-label\": \"Breadcrumb\", \"data-theme\": darkText ? 'dark' : 'light', \"data-truncate\": isLong }, items.map((item, index) => (React.createElement(S.Item, { key: item.id },\r\n React.createElement(S.Link, { href: item.url, \"aria-current\": index === items.length - 1 ? 'page' : undefined }, item.title))))));\r\n};\r\nexport default Breadcrumb;\r\n","import queryString from 'query-string';\r\nconst DEFAULT_PARAMS = {\r\n mode: 'crop',\r\n upscale: true,\r\n};\r\n/**\r\n * Create an image URL for ImageProcessor\r\n * @param image The image model\r\n * @param imageParams The image parameters\r\n * @returns The image URL\r\n */\r\nexport function getImageUrl(image, imageParams) {\r\n if (!image) {\r\n return '';\r\n }\r\n let params = { ...DEFAULT_PARAMS, ...imageParams };\r\n if (params.mode === 'crop' || params.mode === 'boxpad' || params.mode === 'pad') {\r\n params = fixPadParams(params);\r\n }\r\n return `${image}?${queryString.stringify(params)}`;\r\n}\r\nfunction fixPadParams(imageParams) {\r\n if (!imageParams.height && !!imageParams.width && !!imageParams.heightratio) {\r\n return {\r\n ...imageParams,\r\n height: imageParams.width * imageParams.heightratio,\r\n };\r\n }\r\n else if (!imageParams.width && !!imageParams.height && !!imageParams.widthratio) {\r\n return {\r\n ...imageParams,\r\n width: imageParams.height * imageParams.widthratio,\r\n };\r\n }\r\n else if (!!imageParams.width && !!imageParams.height) {\r\n return imageParams;\r\n }\r\n else {\r\n return { ...imageParams, mode: 'boxpad' };\r\n }\r\n}\r\n","import { cssVar, setCssVar } from '@helpers/cssVar';\r\nimport global from '@helpers/global';\r\nimport { Device, from } from '@helpers/media';\r\nimport styled, { css } from 'styled-components';\r\nconst Container = styled.div `\r\n ${setCssVar('sitePadding', `${global.siteWidePaddingMobile}px`)};\r\n ${setCssVar('siteWidth', '100%')};\r\n\r\n margin-left: auto;\r\n margin-right: auto;\r\n max-width: calc(${cssVar('siteWidth')} + (${cssVar('sitePadding')} * 2));\r\n padding-left: ${cssVar('sitePadding')};\r\n padding-right: ${cssVar('sitePadding')};\r\n width: 100%;\r\n\r\n @media ${from(Device.MobileLarge)} {\r\n ${setCssVar('sitePadding', `${global.siteWidePaddingTablet}px`)};\r\n }\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n ${setCssVar('sitePadding', `${global.siteWidePadding}px`)};\r\n }\r\n\r\n ${({ width }) => {\r\n switch (width) {\r\n case 'default':\r\n return css `\r\n @media ${from(Device.DesktopLarge)} {\r\n ${setCssVar('siteWidth', `${global.siteWideWidth}px`)};\r\n }\r\n `;\r\n case 'narrow':\r\n return css `\r\n @media ${from(Device.DesktopSmall)} {\r\n ${setCssVar('siteWidth', `${global.siteWideWidthNarrow}px`)};\r\n }\r\n `;\r\n case 'inner':\r\n return css `\r\n @media ${from(Device.Tablet)} {\r\n ${setCssVar('siteWidth', `${global.siteWideWidthInner}px`)};\r\n }\r\n `;\r\n }\r\n}}\r\n`;\r\nexport default {\r\n Container,\r\n};\r\n","import { css } from 'styled-components';\r\nexport const rootMargin = '0px 0px -20% 0px';\r\nexport const cubicEaseOut = `cubic-bezier(0.215, 0.61, 0.355, 1)`;\r\nexport const FadeUpBase = css `\r\n opacity: 0;\r\n transform: translateY(16px);\r\n transition: opacity var(--a-duration) ${cubicEaseOut}, transform var(--a-duration) ${cubicEaseOut};\r\n transition-delay: var(--a-delay);\r\n`;\r\nexport const FadeUpActive = css `\r\n opacity: 1;\r\n transform: translateY(0);\r\n`;\r\nexport const shouldAnimate = (innerCss) => {\r\n return css `\r\n @media (prefers-reduced-motion: no-preference) {\r\n ${innerCss}\r\n }\r\n `;\r\n};\r\nexport const transition = (properties, duration = 0.35, timing = cubicEaseOut) => {\r\n return shouldAnimate(css `\r\n transition-duration: ${typeof duration === 'string' ? duration : `${duration}s`};\r\n transition-property: ${properties};\r\n transition-timing-function: ${timing};\r\n will-change: ${properties};\r\n `);\r\n};\r\nexport const horizontalFadeIn = (amount, duration) => {\r\n return {\r\n hidden: {\r\n opacity: 0,\r\n x: amount ?? 20,\r\n },\r\n visible: {\r\n opacity: 1,\r\n x: 0,\r\n transition: {\r\n duration: duration ?? 0.35,\r\n },\r\n },\r\n };\r\n};\r\nexport const verticalFadeIn = (amount, duration) => {\r\n return {\r\n hidden: {\r\n opacity: 0,\r\n y: amount ?? 20,\r\n },\r\n visible: {\r\n opacity: 1,\r\n y: 0,\r\n transition: {\r\n duration: duration ?? 0.35,\r\n },\r\n },\r\n };\r\n};\r\n","import { css } from 'styled-components';\r\nexport default css `\r\n &::-webkit-scrollbar-track {\r\n background-color: none;\r\n }\r\n\r\n &::-webkit-scrollbar {\r\n background-color: none;\r\n height: var(--scrollbar-width, 10px);\r\n width: var(--scrollbar-width, 10px);\r\n }\r\n\r\n &::-webkit-scrollbar-thumb {\r\n background-color: #9c9fa1;\r\n border-radius: calc(var(--scrollbar-width, 10px) / 2);\r\n cursor: pointer;\r\n }\r\n`;\r\n"],"sourceRoot":""}