{"version":3,"sources":["webpack:///./src/stories/Widgets/RichText/RichText.styles.ts","webpack:///(webpack)/buildin/global.js","webpack:///./src/stories/Components/Breadcrumb/Breadcrumb.styles.ts","webpack:///./src/stories/Components/Breadcrumb/Breadcrumb.tsx","webpack:///./src/stories/Components/ImageWithCredit/ImageWithCredit.styles.ts","webpack:///./src/stories/Components/ImageWithCredit/ImageWithCredit.tsx","webpack:///./node_modules/query-string/index.js","webpack:///./node_modules/lodash/_Symbol.js","webpack:///./node_modules/lodash/isNumber.js","webpack:///./src/helpers/responsive.ts","webpack:///./src/stories/Widgets/NewsArticleHero/NewsArticleHero.styles.ts","webpack:///./src/stories/Widgets/NewsArticleHero/NewsArticleHero.tsx","webpack:///./node_modules/strict-uri-encode/index.js","webpack:///./node_modules/decode-uri-component/index.js","webpack:///./node_modules/split-on-first/index.js","webpack:///./node_modules/filter-obj/index.js","webpack:///./node_modules/lodash/_baseGetTag.js","webpack:///./node_modules/lodash/_root.js","webpack:///./node_modules/lodash/_freeGlobal.js","webpack:///./node_modules/lodash/_getRawTag.js","webpack:///./node_modules/lodash/_objectToString.js","webpack:///./node_modules/lodash/isObjectLike.js","webpack:///./src/stories/Components/Buttons/LinkButton/LinkButton.styles.ts","webpack:///./src/helpers/animation.ts","webpack:///./src/helpers/image.ts","webpack:///./src/stories/Components/Buttons/ButtonShared.styles.ts"],"names":["linkStyles","css","cssVar","fonts","sourceSansPro","regular","tableStyles","ParagraphStyles","RegularStyles","contentStyles","HeadingStyles","H1Styles","H2Styles","H3Styles","H4Styles","H5Styles","H6Styles","SmallStyles","from","Device","Desktop","bold","UnorderedListStyles","LiStyles","semiBoldItalic","TabletLarge","semiBold","Container","styled","SectionWrapper","setCssVar","brand","hta","green","greenDark","purple","greyLight","black","apl","greenAlt","greenLight","hortHouse","white","orange","rss","grey","isActive","fadeIn","animation","easeInOutCubic","hasBackground","LinkButtonStyles","Button","ContentBlock","div","align","Content","leadParagraphWide","leadParagraphBold","LargeStyles","g","this","Function","e","window","module","exports","nav","List","ul","Item","li","until","MobileLarge","Link","a","Breadcrumb","items","React","createElement","S","map","item","key","id","url","href","target","accessibleText","text","as","Image","img","ImageCredit","span","rgba","ImageWithCredit","image","imageMode","imageProps","sizes","srcSet","alt","altText","draggable","loading","role","src","imageUrl","credit","strictUriEncode","decodeComponent","splitOnFirst","filterObject","encodeFragmentIdentifier","Symbol","validateArrayFormatSeparator","value","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","accumulator","exec","replace","undefined","concat","isArray","includes","isEncodedArray","newValue","split","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_","hash","parseFragmentIdentifier","fragmentIdentifier","stringifyUrl","queryFromUrl","parsedQueryFromUrl","queryString","getHash","pick","exclude","exclusionFilter","baseGetTag","isObjectLike","responsiveSizes","additionalTransformations","breakpoints","values","isNumber","images","i","size","previousSize","breakpoint","sizeRange","previousBreakpoint","s","Math","round","forEach","scaledValue","MobileSmall","width","entries","Tablet","Inner","BreadcrumbWrapper","ContentWrapper","PreTitle","Title","h1","Author","p","RichTextStyles","ImageWrapper","ImageWithCreditStyles","LogoIcon","NewsArticleHero","author","breadcrumb","logoIcon","tag","title","flush","heightRatio","mode","icon","str","charCodeAt","toString","toUpperCase","singleMatcher","RegExp","multiMatcher","decodeComponents","components","decodeURIComponent","err","left","right","prototype","call","tokens","match","encodedURI","replaceMap","customDecodeURIComponent","string","separator","separatorIndex","obj","predicate","isArr","val","getRawTag","objectToString","symToStringTag","toStringTag","freeGlobal","freeSelf","self","root","global","objectProto","hasOwnProperty","nativeObjectToString","isOwn","unmasked","sharedButtonStyles","themeOption","buttonTheme","bgColor","htaRebrand","borderColor","fgColor","greenLightAlt","greenBright","inView","threshold","rootMargin","earlyRootMargin","globalThreshold","animate","duration","delay","easingFunc","transition","properties","timing","imageParams","imageSource","params","bgcolor","height","getImageHeight","quality","rmode","rxy","focalPoint","top","getImageWidth","widthratio","heightratio","theme","Icon","Text"],"mappings":"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","file":"NewsArticleHero-15f803d4e95c4f57c774.js","sourcesContent":["import animation, { fadeIn } from '@helpers/animation';\r\nimport brand from '@helpers/brand';\r\nimport { cssVar, setCssVar } from '@helpers/cssVar';\r\nimport fonts from '@helpers/fonts';\r\nimport { Device, from } from '@helpers/media';\r\nimport LinkButtonStyles from '@stories/Components/Buttons/LinkButton/LinkButton.styles';\r\nimport HeadingStyles from '@stories/Components/Global/Typography/Heading.styles';\r\nimport ParagraphStyles from '@stories/Components/Global/Typography/Paragraph.styles';\r\nimport UnorderedListStyles from '@stories/Components/Global/Typography/UnorderedList.styles';\r\nimport SectionWrapper from '@stories/Components/SectionWrapper/SectionWrapper';\r\nimport styled, { css } from 'styled-components';\r\nconst linkStyles = css `\r\n background-color: transparent;\r\n background-image: linear-gradient(\r\n to right,\r\n ${cssVar('accentColor')} 0%,\r\n ${cssVar('accentColor')} 100%\r\n );\r\n background-repeat: no-repeat;\r\n background-size: 0% 100%;\r\n color: ${cssVar('fgColor')};\r\n ${fonts.sourceSansPro.regular};\r\n margin: -3px;\r\n padding: 3px;\r\n text-decoration: underline;\r\n text-underline-position: under;\r\n transition: background-size 0.15s ease-out;\r\n\r\n &:focus {\r\n outline: none;\r\n }\r\n\r\n &:focus,\r\n &:hover {\r\n background-size: 100% 100%;\r\n }\r\n`;\r\nconst tableStyles = css `\r\n margin: 0 0 16px;\r\n\r\n th,\r\n td {\r\n border: 1px solid ${cssVar('fgColor')};\r\n color: ${cssVar('fgColor')};\r\n ${ParagraphStyles.RegularStyles};\r\n height: auto !important; // override inline height - no point this being content editable.\r\n margin: 0;\r\n padding: 8px 16px;\r\n }\r\n`;\r\nconst contentStyles = css `\r\n color: ${cssVar('fgColor')};\r\n ${fonts.sourceSansPro.regular};\r\n\r\n h1 {\r\n ${HeadingStyles.H1Styles};\r\n }\r\n\r\n h2 {\r\n ${HeadingStyles.H2Styles};\r\n }\r\n\r\n h3 {\r\n ${HeadingStyles.H3Styles};\r\n }\r\n\r\n h4 {\r\n ${HeadingStyles.H4Styles};\r\n }\r\n\r\n h5 {\r\n ${HeadingStyles.H5Styles};\r\n }\r\n\r\n h6 {\r\n ${HeadingStyles.H6Styles};\r\n }\r\n\r\n p {\r\n ${ParagraphStyles.RegularStyles};\r\n\r\n .theme-rss & {\r\n ${ParagraphStyles.SmallStyles};\r\n\r\n @media ${from(Device.Desktop)} {\r\n font-size: 20px;\r\n }\r\n }\r\n }\r\n\r\n strong {\r\n ${fonts.sourceSansPro.bold};\r\n }\r\n\r\n ol,\r\n ul {\r\n display: block;\r\n ${ParagraphStyles.RegularStyles};\r\n padding: 0 0 0 40px;\r\n }\r\n\r\n ol {\r\n list-style: decimal;\r\n\r\n li {\r\n display: list-item;\r\n }\r\n }\r\n\r\n ul {\r\n padding-left: 0;\r\n\r\n li {\r\n ${UnorderedListStyles.LiStyles};\r\n display: list-item;\r\n }\r\n }\r\n\r\n a {\r\n ${linkStyles};\r\n }\r\n\r\n > *:last-child {\r\n margin-bottom: 0;\r\n }\r\n\r\n table {\r\n ${tableStyles};\r\n }\r\n\r\n hr {\r\n margin: 16px 0;\r\n }\r\n\r\n sup {\r\n position: relative;\r\n top: -0.5em;\r\n font-size: 80%;\r\n }\r\n\r\n sub {\r\n position: relative;\r\n top: 0.5em;\r\n font-size: 80%;\r\n }\r\n\r\n blockquote {\r\n ${fonts.sourceSansPro.semiBoldItalic};\r\n font-size: 18px;\r\n line-height: 28px;\r\n margin: 20px 0;\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n font-size: 26px;\r\n line-height: 36px;\r\n }\r\n }\r\n\r\n cite {\r\n ${fonts.sourceSansPro.semiBold};\r\n font-size: 16px;\r\n line-height: 26px;\r\n font-style: normal;\r\n color: ${cssVar('accentColorAlt')};\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n font-size: 18px;\r\n line-height: 28px;\r\n }\r\n }\r\n\r\n .primary-colour {\r\n color: ${cssVar('accentColor')};\r\n }\r\n\r\n .secondary-colour {\r\n color: ${cssVar('accentColor2')};\r\n }\r\n\r\n span {\r\n display: inline;\r\n }\r\n`;\r\nconst Container = styled(SectionWrapper) `\r\n ${setCssVar('accentColor', brand.hta.green)};\r\n ${setCssVar('accentColorAlt', brand.hta.greenDark)};\r\n ${setCssVar('accentColor2', brand.hta.purple)};\r\n ${setCssVar('bgColor', brand.greyLight)};\r\n ${setCssVar('fgColor', brand.black)};\r\n\r\n .theme-apl & {\r\n ${setCssVar('accentColor', brand.apl.green)};\r\n ${setCssVar('accentColorAlt', brand.apl.greenAlt)};\r\n ${setCssVar('accentColor2', brand.apl.greenLight)};\r\n ${setCssVar('fgColor', brand.black)};\r\n }\r\n\r\n .theme-hh & {\r\n ${setCssVar('accentColor', brand.hortHouse.green)};\r\n ${setCssVar('accentColorAlt', brand.white)};\r\n ${setCssVar('accentColor2', brand.hortHouse.orange)};\r\n ${setCssVar('fgColor', brand.white)};\r\n }\r\n\r\n .theme-rss & {\r\n ${setCssVar('accentColor', brand.rss.greenDark)};\r\n ${setCssVar('accentColor2', brand.rss.greenLight)};\r\n ${setCssVar('bgColor', brand.rss.grey)};\r\n ${setCssVar('fgColor', brand.white)};\r\n }\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n opacity: 0;\r\n\r\n ${({ isActive }) => isActive &&\r\n css `\r\n ${fadeIn(isActive, 375, 0, animation.easeInOutCubic)};\r\n `}\r\n }\r\n\r\n ${({ hasBackground }) => hasBackground &&\r\n css `\r\n padding: 50px 0;\r\n background-color: ${cssVar('bgColor')};\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n padding: 100px 0;\r\n }\r\n `}\r\n\r\n &[data-long-cta='true'] {\r\n ${LinkButtonStyles.Button} {\r\n width: 100%;\r\n }\r\n }\r\n\r\n ${LinkButtonStyles.Button} {\r\n margin: 30px 0;\r\n }\r\n`;\r\nconst ContentBlock = styled.div `\r\n margin: 0;\r\n width: 100%;\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n max-width: 800px;\r\n }\r\n\r\n ${({ align }) => align === 'center' &&\r\n css `\r\n margin: 0 auto;\r\n `}\r\n`;\r\nconst Content = styled.div `\r\n ${contentStyles}\r\n\r\n h1,\r\n h2,\r\n h3,\r\n h4,\r\n h5,\r\n h6 {\r\n ${fonts.sourceSansPro.semiBold};\r\n }\r\n\r\n ${({ align }) => align === 'center' &&\r\n css `\r\n text-align: center;\r\n margin: 0 auto;\r\n `}\r\n\r\n ${({ align }) => align === 'left' &&\r\n css `\r\n text-align: left;\r\n\r\n h3 {\r\n @media ${from(Device.TabletLarge)} {\r\n width: 125%;\r\n max-width: 950px;\r\n }\r\n }\r\n `}\r\n\r\n ${({ leadParagraphWide, align }) => leadParagraphWide &&\r\n align === 'left' &&\r\n css `\r\n @media ${from(Device.TabletLarge)} {\r\n p:first-of-type {\r\n width: 125%;\r\n max-width: 950px;\r\n }\r\n }\r\n `}\r\n\r\n ${({ leadParagraphBold }) => leadParagraphBold &&\r\n css `\r\n p:first-of-type {\r\n ${ParagraphStyles.LargeStyles};\r\n ${fonts.sourceSansPro.semiBold};\r\n }\r\n `}\r\n`;\r\nexport default {\r\n Container,\r\n Content,\r\n ContentBlock,\r\n contentStyles,\r\n linkStyles,\r\n};\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 { until, Device } from '@helpers/media';\r\nimport fonts from '@helpers/fonts';\r\nimport styled from 'styled-components';\r\nconst Container = styled.nav `\r\n display: flex;\r\n`;\r\nconst List = styled.ul `\r\n display: flex;\r\n align-items: center;\r\n flex-wrap: wrap;\r\n justify-content: flex-start;\r\n`;\r\nconst Item = styled.li `\r\n display: flex;\r\n align-items: center;\r\n ${fonts.sourceSansPro.regular};\r\n font-size: 16px;\r\n justify-content: flex-start;\r\n line-height: 1.2em;\r\n\r\n &:not(:last-child)::after {\r\n content: '|';\r\n padding: 0 4px;\r\n }\r\n\r\n @media ${until(Device.MobileLarge)} {\r\n font-size: 12px;\r\n }\r\n`;\r\nconst Link = styled.a `\r\n display: block;\r\n color: currentColor;\r\n text-decoration: none;\r\n text-underline-position: under;\r\n\r\n &:focus,\r\n &:hover {\r\n text-decoration: underline;\r\n }\r\n`;\r\nexport default {\r\n Container,\r\n Item,\r\n Link,\r\n List,\r\n};\r\n","import React from 'react';\r\nimport S from './Breadcrumb.styles';\r\nconst Breadcrumb = ({ items }) => {\r\n return (React.createElement(S.Container, { \"aria-label\": \"Breadcrumb\" },\r\n React.createElement(S.List, null, items.map((item) => (React.createElement(S.Item, { key: item.id }, item.url ? (React.createElement(S.Link, { href: item.url, target: item.target, \"aria-label\": item.accessibleText }, item.text)) : (React.createElement(S.Link, { as: \"span\" }, item.text))))))));\r\n};\r\nexport default Breadcrumb;\r\n","import brand from '@helpers/brand';\r\nimport styled from 'styled-components';\r\nimport { rgba } from 'polished';\r\nimport fonts from '@helpers/fonts';\r\nconst Container = styled.div `\r\n position: relative;\r\n`;\r\nconst Image = styled.img `\r\n display: block;\r\n width: 100%;\r\n\r\n [data-image-mode='contain'] & {\r\n position: absolute;\r\n top: 0;\r\n left: 0;\r\n object-fit: contain;\r\n height: 100%;\r\n object-position: center center;\r\n }\r\n\r\n [data-image-mode='cover'] & {\r\n position: absolute;\r\n top: 0;\r\n left: 0;\r\n object-fit: cover;\r\n height: 100%;\r\n object-position: center center;\r\n }\r\n`;\r\nconst ImageCredit = styled.span `\r\n ${fonts.sourceSansPro.regular};\r\n position: absolute;\r\n z-index: 2;\r\n bottom: 0;\r\n right: 0;\r\n color: ${brand.white};\r\n background-color: ${rgba(brand.black, 0.8)};\r\n padding: 5px 20px;\r\n border-radius: 12px 12px 0 0;\r\n font-size: 16px;\r\n line-height: 28px;\r\n`;\r\nexport default {\r\n Container,\r\n Image,\r\n ImageCredit,\r\n};\r\n","import { imageUrl } from '@helpers/image';\r\nimport React from 'react';\r\nimport S from './ImageWithCredit.styles';\r\nconst ImageWithCredit = ({ image, imageMode = undefined, imageProps = {}, sizes, srcSet, }) => {\r\n return (React.createElement(S.Container, { \"data-image-mode\": imageMode },\r\n React.createElement(S.Image, { alt: image?.altText, draggable: false, loading: \"eager\", role: \"presentation\", src: imageUrl(image, imageProps), sizes: sizes, srcSet: srcSet }),\r\n image.credit && React.createElement(S.ImageCredit, null, image.credit)));\r\n};\r\nexport default ImageWithCredit;\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 '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 '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","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar numberTag = '[object Number]';\n\n/**\n * Checks if `value` is classified as a `Number` primitive or object.\n *\n * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are\n * classified as numbers, use the `_.isFinite` method.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a number, else `false`.\n * @example\n *\n * _.isNumber(3);\n * // => true\n *\n * _.isNumber(Number.MIN_VALUE);\n * // => true\n *\n * _.isNumber(Infinity);\n * // => true\n *\n * _.isNumber('3');\n * // => false\n */\nfunction isNumber(value) {\n return typeof value == 'number' ||\n (isObjectLike(value) && baseGetTag(value) == numberTag);\n}\n\nmodule.exports = isNumber;\n","import isNumber from 'lodash/isNumber';\r\nimport { imageUrl } from './image';\r\nimport { Device } from './media';\r\nexport function responsiveSizes(sizes, image, \r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\nadditionalTransformations) {\r\n // Get all responsive sizes //\r\n const breakpoints = Object.values(Device)\r\n .filter((x) => isNumber(x))\r\n .map((x) => Number(x));\r\n const images = {};\r\n for (let i = 0; i < sizes.length; i++) {\r\n const size = sizes[i];\r\n const previousSize = i > 0 ? sizes[i - 1] : undefined;\r\n if (size.breakpoint) {\r\n // We can use the breakpoint to work out which sizes to render //\r\n const breakpoint = size.breakpoint; // Stops stupid linting error about size.breakpoint being undefined.... when it isn't //\r\n // Get the range of sizes from the previous size to this size //\r\n let sizeRange = breakpoints.filter((x) => x <= breakpoint);\r\n if (previousSize) {\r\n const previousBreakpoint = previousSize.breakpoint;\r\n if (previousBreakpoint) {\r\n sizeRange = sizeRange.filter((x) => x > previousBreakpoint);\r\n }\r\n }\r\n const scaledValues = sizeRange.map((s) => Math.round(s * (size.value / 100)));\r\n scaledValues.forEach((scaledValue) => {\r\n if (scaledValue >= Device.MobileSmall) {\r\n images[scaledValue] = `${imageUrl(image, {\r\n width: scaledValue,\r\n ...additionalTransformations,\r\n })} ${scaledValue}w`;\r\n }\r\n });\r\n }\r\n else {\r\n let sizeRange = breakpoints;\r\n if (previousSize) {\r\n const previousBreakpoint = previousSize.breakpoint;\r\n if (previousBreakpoint) {\r\n sizeRange = sizeRange.filter((x) => x > previousBreakpoint);\r\n }\r\n }\r\n const scaledValues = sizeRange.map((s) => Math.round(s * (size.value / 100)));\r\n scaledValues.forEach((scaledValue) => {\r\n if (scaledValue >= Device.MobileSmall) {\r\n images[scaledValue] = `${imageUrl(image, {\r\n width: scaledValue,\r\n ...additionalTransformations,\r\n })} ${scaledValue}w`;\r\n }\r\n });\r\n }\r\n }\r\n return Object.entries(images)\r\n .map((x) => x[1])\r\n .join(', ');\r\n}\r\n","import brand from '@helpers/brand';\r\nimport { cssVar, setCssVar } from '@helpers/cssVar';\r\nimport fonts from '@helpers/fonts';\r\nimport { Device, from, until } from '@helpers/media';\r\nimport HeadingStyles from '@stories/Components/Global/Typography/Heading.styles';\r\nimport ImageWithCredit from '@stories/Components/ImageWithCredit/ImageWithCredit';\r\nimport ImageWithCreditStyles from '@stories/Components/ImageWithCredit/ImageWithCredit.styles';\r\nimport SectionWrapper from '@stories/Components/SectionWrapper/SectionWrapper';\r\nimport styled from 'styled-components';\r\nimport RichTextStyles from '../RichText/RichText.styles';\r\nconst Container = styled(SectionWrapper) `\r\n ${setCssVar('accentColor', brand.hta.greenDark)};\r\n ${setCssVar('bgColor', brand.hta.greenLight)};\r\n ${setCssVar('fgColor', brand.black)};\r\n\r\n display: flex;\r\n background: ${cssVar('bgColor')};\r\n min-height: 300px;\r\n padding: 32px 0;\r\n position: relative;\r\n margin-bottom: 100px;\r\n\r\n .theme-apl & {\r\n ${setCssVar('accentColor', brand.black)};\r\n ${setCssVar('bgColor', brand.apl.greenLight)};\r\n ${setCssVar('fgColor', brand.black)};\r\n }\r\n\r\n .theme-hh & {\r\n ${setCssVar('accentColor', brand.black)};\r\n ${setCssVar('bgColor', brand.hortHouse.green)};\r\n ${setCssVar('fgColor', brand.black)};\r\n }\r\n\r\n &[data-image='true'] {\r\n @media ${until(Device.TabletLarge)} {\r\n padding: 32px 0 60px;\r\n }\r\n\r\n @media ${until(Device.Tablet)} {\r\n padding: 32px 0;\r\n }\r\n }\r\n\r\n &[data-image='false'] {\r\n overflow: hidden;\r\n @media ${from(Device.Desktop)} {\r\n min-height: 500px;\r\n }\r\n }\r\n`;\r\nconst Inner = styled.div `\r\n position: relative;\r\n height: 100%;\r\n justify-content: center;\r\n\r\n display: grid;\r\n gap: 30px;\r\n grid-template-columns: repeat(12, 1fr);\r\n z-index: 1;\r\n`;\r\nconst BreadcrumbWrapper = styled.div `\r\n position: absolute;\r\n top: 0;\r\n left: 0;\r\n color: ${brand.grey};\r\n transform: translateY(-10px);\r\n`;\r\nconst ContentWrapper = styled.div `\r\n padding: 32px 0;\r\n\r\n [data-image='false'] & {\r\n @media ${until(Device.Tablet)} {\r\n grid-column: 1 / span 12;\r\n }\r\n\r\n @media ${from(Device.Tablet)} {\r\n grid-column: 3 / span 8;\r\n }\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n grid-column: 1 / span 6;\r\n }\r\n }\r\n\r\n [data-image='true'] & {\r\n @media ${until(Device.Tablet)} {\r\n grid-column: 1 / span 12;\r\n }\r\n\r\n @media ${from(Device.Tablet)} {\r\n grid-column: 3 / span 8;\r\n }\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n grid-column: 1 / span 5;\r\n }\r\n }\r\n`;\r\nconst PreTitle = styled.span `\r\n ${fonts.sourceSansPro.regular};\r\n color: ${cssVar('accentColor')};\r\n text-transform: uppercase;\r\n font-size: 16px;\r\n line-height: 32px;\r\n letter-spacing: 0.02em;\r\n`;\r\nconst Title = styled.h1 `\r\n ${HeadingStyles.H4Styles};\r\n`;\r\nconst Author = styled.p `\r\n ${fonts.sourceSansPro.regular};\r\n font-size: 22px;\r\n line-height: 34px;\r\n`;\r\nconst Content = styled.div `\r\n ${RichTextStyles.contentStyles};\r\n\r\n [data-image='true'] & {\r\n max-width: 611px;\r\n }\r\n\r\n [data-image='false'] & {\r\n max-width: 804px;\r\n }\r\n`;\r\nconst ImageWrapper = styled.div `\r\n position: relative;\r\n align-self: flex-start;\r\n\r\n @media ${until(Device.Tablet)} {\r\n grid-column: 1 / span 12;\r\n }\r\n\r\n @media ${from(Device.Tablet)} {\r\n grid-column: 3 / span 8;\r\n }\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n grid-column: 6 / span 7;\r\n }\r\n\r\n ${ImageWithCreditStyles.Container} {\r\n height: auto;\r\n top: -32px;\r\n margin-bottom: -140px;\r\n padding-bottom: 60%;\r\n\r\n @media ${from(Device.Tablet)} {\r\n\r\n margin-bottom: -120px;\r\n }\r\n }\r\n\r\n ${ImageWithCreditStyles.Image} {\r\n border-radius: 0 0 24px 24px;\r\n }\r\n\r\n ${ImageWithCreditStyles.ImageCredit} {\r\n right: 24px;\r\n\r\n @media ${until(Device.TabletLarge)} {\r\n font-size: 14px;\r\n }\r\n }\r\n`;\r\nconst Image = styled(ImageWithCredit) ``;\r\nconst LogoIcon = styled.img `\r\n position: absolute;\r\n bottom: -50px;\r\n right: -50px;\r\n color: ${brand.white};\r\n opacity: 0.2;\r\n width: 291px;\r\n transform: rotate(-25deg);\r\n\r\n .theme-hh & {\r\n transform: rotate(0);\r\n bottom: 0;\r\n }\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n width: 400px;\r\n }\r\n\r\n @media ${from(Device.Desktop)} {\r\n width: 566px;\r\n right: 30px;\r\n }\r\n`;\r\nexport default {\r\n Author,\r\n BreadcrumbWrapper,\r\n Container,\r\n Content,\r\n ContentWrapper,\r\n Image,\r\n ImageWrapper,\r\n Inner,\r\n LogoIcon,\r\n PreTitle,\r\n Title,\r\n};\r\n","import Breadcrumb from '@stories/Components/Breadcrumb/Breadcrumb';\r\nimport React from 'react';\r\nimport S from './NewsArticleHero.styles';\r\nimport { Device, until } from '@helpers/media';\r\nimport { responsiveSizes } from '@helpers/responsive';\r\nconst NewsArticleHero = ({ author, breadcrumb, image, imageMode = 'cover', logoIcon, tag, title, }) => {\r\n const imageSettings = {\r\n width: 960,\r\n };\r\n return (React.createElement(S.Container, { \"data-image\": !!image, flush: \"top\" },\r\n React.createElement(S.Inner, null,\r\n breadcrumb?.length && (React.createElement(S.BreadcrumbWrapper, null,\r\n React.createElement(Breadcrumb, { items: breadcrumb }))),\r\n React.createElement(S.ContentWrapper, null,\r\n tag && React.createElement(S.PreTitle, null, tag),\r\n React.createElement(S.Title, null, title),\r\n author && React.createElement(S.Author, null, author)),\r\n image && (React.createElement(S.ImageWrapper, null,\r\n React.createElement(S.Image, { image: image, imageMode: imageMode, imageProps: imageSettings, sizes: [`${until(Device.Tablet)} 100vw`, `50vw`].join(', '), srcSet: responsiveSizes([{ value: 100, breakpoint: Device.Tablet }, { value: 50 }], image, { heightRatio: 566 / 943, mode: 'crop' }) })))),\r\n !image && (React.createElement(S.LogoIcon, { alt: logoIcon && logoIcon.title, loading: \"lazy\", src: logoIcon && logoIcon.icon }))));\r\n};\r\nexport default NewsArticleHero;\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","'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","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","import brand from '@helpers/brand';\r\nimport { rgba } from 'polished';\r\nimport styled, { css } from 'styled-components';\r\nimport { buttonTheme, sharedButtonStyles } from '../ButtonShared.styles';\r\nconst Button = styled.a `\r\n ${sharedButtonStyles};\r\n\r\n ${({ themeOption }) => themeOption === 'green' &&\r\n css `\r\n ${buttonTheme({\r\n bgColor: brand.htaRebrand.green,\r\n borderColor: brand.htaRebrand.green,\r\n fgColor: brand.white,\r\n })}\r\n\r\n .theme-hh & {\r\n ${buttonTheme({\r\n bgColor: brand.htaRebrand.greenAlt,\r\n borderColor: brand.htaRebrand.greenAlt,\r\n fgColor: brand.white,\r\n })}\r\n }\r\n\r\n &:focus,\r\n &:hover {\r\n ${buttonTheme({\r\n bgColor: brand.htaRebrand.greenLight,\r\n borderColor: brand.htaRebrand.greenLight,\r\n fgColor: brand.white,\r\n })}\r\n }\r\n\r\n &:active {\r\n ${buttonTheme({\r\n bgColor: brand.htaRebrand.greenDark,\r\n borderColor: brand.htaRebrand.greenDark,\r\n fgColor: brand.white,\r\n })}\r\n }\r\n `}\r\n\r\n ${({ themeOption }) => themeOption === 'greenOriginal' &&\r\n css `\r\n ${buttonTheme({\r\n bgColor: brand.hta.green,\r\n borderColor: brand.hta.green,\r\n fgColor: brand.black,\r\n })}\r\n\r\n &:focus,\r\n &:hover {\r\n ${buttonTheme({\r\n bgColor: brand.hta.greenLight,\r\n borderColor: brand.hta.greenLight,\r\n fgColor: brand.black,\r\n })}\r\n }\r\n\r\n &:active {\r\n ${buttonTheme({\r\n bgColor: brand.hta.greenDark,\r\n borderColor: brand.hta.greenDark,\r\n fgColor: brand.white,\r\n })}\r\n }\r\n `}\r\n\r\n ${({ themeOption }) => themeOption === 'greenOutline' &&\r\n css `\r\n ${buttonTheme({\r\n bgColor: rgba(brand.hta.green, 0),\r\n borderColor: brand.htaRebrand.green,\r\n fgColor: brand.black,\r\n })}\r\n\r\n &:focus,\r\n &:hover {\r\n ${buttonTheme({\r\n bgColor: brand.htaRebrand.greenLightAlt,\r\n borderColor: brand.htaRebrand.green,\r\n fgColor: brand.white,\r\n })}\r\n }\r\n\r\n &:active {\r\n ${buttonTheme({\r\n bgColor: brand.htaRebrand.greenDark,\r\n borderColor: brand.htaRebrand.greenAlt,\r\n fgColor: brand.white,\r\n })}\r\n }\r\n `}\r\n\r\n ${({ themeOption }) => themeOption === 'greenLightOutline' &&\r\n css `\r\n ${buttonTheme({\r\n bgColor: brand.white,\r\n borderColor: brand.htaRebrand.greenBright,\r\n fgColor: brand.black,\r\n })}\r\n\r\n &:focus,\r\n &:hover {\r\n ${buttonTheme({\r\n bgColor: brand.htaRebrand.greenLightAlt,\r\n borderColor: brand.htaRebrand.greenBright,\r\n fgColor: brand.white,\r\n })}\r\n }\r\n\r\n &:active {\r\n ${buttonTheme({\r\n bgColor: brand.htaRebrand.greenDark,\r\n borderColor: brand.htaRebrand.greenBright,\r\n fgColor: brand.white,\r\n })}\r\n }\r\n `}\r\n\r\n ${({ themeOption }) => themeOption === 'aplGreen' &&\r\n css `\r\n ${buttonTheme({\r\n bgColor: brand.apl.green,\r\n borderColor: brand.apl.green,\r\n fgColor: brand.black,\r\n })}\r\n\r\n &:focus,\r\n &:hover {\r\n ${buttonTheme({\r\n bgColor: brand.apl.greenLight,\r\n borderColor: brand.apl.greenLight,\r\n fgColor: brand.black,\r\n })}\r\n }\r\n `}\r\n\r\n ${({ themeOption }) => themeOption === 'aplGreenOutline' &&\r\n css `\r\n ${buttonTheme({\r\n bgColor: rgba(brand.apl.green, 0),\r\n borderColor: brand.apl.green,\r\n fgColor: brand.black,\r\n })}\r\n\r\n &:focus,\r\n &:hover {\r\n ${buttonTheme({\r\n bgColor: brand.apl.greenLight,\r\n borderColor: brand.apl.green,\r\n fgColor: brand.black,\r\n })}\r\n }\r\n `}\r\n\r\n ${({ themeOption }) => themeOption === 'white' &&\r\n css `\r\n ${buttonTheme({\r\n bgColor: brand.white,\r\n borderColor: brand.white,\r\n fgColor: brand.black,\r\n })}\r\n\r\n &:focus,\r\n &:hover {\r\n ${buttonTheme({\r\n bgColor: '#383838',\r\n borderColor: brand.white,\r\n fgColor: brand.white,\r\n })}\r\n }\r\n `}\r\n\r\n ${({ themeOption }) => themeOption === 'whiteOutline' &&\r\n css `\r\n ${buttonTheme({\r\n bgColor: rgba('#383838', 0),\r\n borderColor: brand.white,\r\n fgColor: brand.white,\r\n })}\r\n\r\n &:focus,\r\n &:hover {\r\n ${buttonTheme({\r\n bgColor: '#383838',\r\n borderColor: brand.white,\r\n fgColor: brand.white,\r\n })}\r\n }\r\n `}\r\n\r\n ${({ themeOption }) => themeOption === 'blackOutline' &&\r\n css `\r\n ${buttonTheme({\r\n bgColor: rgba('#383838', 0),\r\n borderColor: brand.black,\r\n fgColor: brand.black,\r\n })}\r\n\r\n &:focus,\r\n &:hover {\r\n ${buttonTheme({\r\n bgColor: '#383838',\r\n borderColor: brand.black,\r\n fgColor: brand.white,\r\n })}\r\n }\r\n `}\r\n`;\r\nexport default {\r\n Button,\r\n};\r\n","import { css } from 'styled-components';\r\nexport default {\r\n inView: {\r\n threshold: 0.25,\r\n rootMargin: '0px 0px -25% 0px',\r\n earlyRootMargin: '0px 0px -10% 0px',\r\n },\r\n globalThreshold: 0.25,\r\n easeInOutCubic: 'cubic-bezier(0.645, 0.045, 0.355, 1)',\r\n};\r\nexport const slideInUpInitial = css `\r\n > span {\r\n opacity: 0;\r\n transform: translateY(100%);\r\n }\r\n`;\r\nexport function slideInUp(animate, duration, delay, easingFunc) {\r\n return css `\r\n overflow: hidden;\r\n\r\n > span {\r\n display: inline-block;\r\n transition: transform ${duration}ms ${delay}ms ${easingFunc},\r\n opacity ${duration}ms ${delay}ms ${easingFunc};\r\n }\r\n\r\n ${animate\r\n ? css `\r\n > span {\r\n opacity: 1;\r\n transform: translateY(0px);\r\n }\r\n `\r\n : css `\r\n ${slideInUpInitial};\r\n `}\r\n `;\r\n}\r\nexport function fadeInUp(animate, amount, duration, delay, easingFunc) {\r\n return css `\r\n transition: transform ${duration}ms ${delay}ms ${easingFunc},\r\n opacity ${duration}ms ${delay}ms ${easingFunc};\r\n\r\n ${animate\r\n ? css `\r\n opacity: 1;\r\n transform: translateY(0px);\r\n `\r\n : css `\r\n opacity: 0;\r\n transform: translateY(${amount}px);\r\n `}\r\n `;\r\n}\r\nexport function fadeIn(animate, duration, delay, easingFunc) {\r\n return css `\r\n transition: opacity ${duration}ms ${delay}ms ${easingFunc};\r\n\r\n ${animate\r\n ? css `\r\n opacity: 1;\r\n `\r\n : css `\r\n opacity: 0;\r\n `}\r\n `;\r\n}\r\nexport const cubicEaseOut = `cubic-bezier(0.215, 0.61, 0.355, 1)`;\r\nexport const transition = (properties, duration = 0.35, timing = cubicEaseOut) => 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","import queryString from 'query-string';\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 imageUrl(image, imageParams) {\r\n if (!image || !image.src) {\r\n return '';\r\n }\r\n /**\r\n * Remove any query param string to ensure paramsString is applied correctly and\r\n * there are no double definitions (setting a param twice prevents any tranformations)\r\n */\r\n const imageSource = image.src.split('?')[0];\r\n const params = {\r\n bgcolor: imageParams.bgcolor,\r\n height: getImageHeight(imageParams),\r\n // Define default quality as 95 to ensure some reduction in size for all but the smallest images\r\n quality: imageParams.width && imageParams.width > 400 ? 95 : undefined,\r\n rmode: imageParams.rmode ?? 'crop',\r\n rxy: image.focalPoint ? `${image.focalPoint.left},${image.focalPoint.top}` : undefined,\r\n width: getImageWidth(imageParams),\r\n };\r\n const paramsString = queryString.stringify(params);\r\n return `${imageSource}${paramsString ? `?${queryString.stringify(params)}` : ''}`;\r\n}\r\nconst getImageWidth = (imageParams) => {\r\n if (imageParams.width) {\r\n return imageParams.width;\r\n }\r\n if (imageParams.widthratio && imageParams.height) {\r\n return imageParams.widthratio * imageParams.height;\r\n }\r\n return undefined;\r\n};\r\nconst getImageHeight = (imageParams) => {\r\n if (imageParams.height) {\r\n return imageParams.height;\r\n }\r\n if (imageParams.heightratio && imageParams.width) {\r\n return imageParams.heightratio * imageParams.width;\r\n }\r\n return undefined;\r\n};\r\n","import fonts from '@helpers/fonts';\r\nimport { Device, from } from '@helpers/media';\r\nimport styled, { css } from 'styled-components';\r\nexport function buttonTheme(theme) {\r\n const value = css `\r\n ${theme.bgColor &&\r\n css `\r\n --buttonBgColor: ${theme.bgColor};\r\n `}\r\n\r\n ${theme.borderColor &&\r\n css `\r\n --buttonBorderColor: ${theme.borderColor};\r\n `}\r\n\r\n ${theme.fgColor &&\r\n css `\r\n --buttonColor: ${theme.fgColor};\r\n `}\r\n `;\r\n return value;\r\n}\r\nexport const sharedButtonStyles = css `\r\n display: inline-flex;\r\n align-items: center;\r\n border: 0;\r\n background-color: var(--buttonBgColor);\r\n border: 1px solid var(--buttonBorderColor);\r\n border-radius: 8px;\r\n color: var(--buttonColor);\r\n height: 48px;\r\n justify-content: flex-start;\r\n margin: 0;\r\n outline: none;\r\n padding: 0 14px;\r\n place-content: center;\r\n place-items: center;\r\n text-decoration: none;\r\n transition: background-color 0.15s ease-out, background-size 0.15s ease-out,\r\n border-color 0.15s ease-out, color 0.15s ease-out, opacity 0.15s ease-out,\r\n transform 0.15s ease-out;\r\n user-select: none;\r\n width: auto;\r\n\r\n &:disabled {\r\n opacity: 0.5;\r\n }\r\n\r\n &:focus {\r\n outline: none;\r\n }\r\n\r\n ${() => Icon} {\r\n margin-left: 12px;\r\n }\r\n\r\n @media ${from(Device.MobileLarge)} {\r\n min-width: 150px;\r\n padding: 0 24px;\r\n }\r\n`;\r\nexport const Icon = styled.span `\r\n display: block;\r\n height: 20px;\r\n width: 20px;\r\n\r\n @media ${from(Device.Tablet)} {\r\n height: 24px;\r\n width: 24px;\r\n }\r\n`;\r\nexport const Text = styled.span `\r\n color: currentColor;\r\n ${fonts.sourceSansPro.semiBold};\r\n font-size: 18px;\r\n line-height: 25px;\r\n`;\r\n"],"sourceRoot":""}