{"version":3,"file":"8169-691b132a6b054eb595dc.js","mappings":"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","sources":["webpack://brc/./src/helpers/aspectRatio.ts","webpack://brc/./src/helpers/image.ts","webpack://brc/./src/helpers/utils.ts","webpack://brc/./src/hooks/useOutsideClick.ts","webpack://brc/./src/stories/Components/Misc/HeadingSummaryBlock/HeadingSummaryBlock.styles.ts","webpack://brc/./src/stories/Components/Misc/HeadingSummaryBlock/HeadingSummaryBlock.tsx","webpack://brc/./src/stories/Widgets/LogoList/LogoList.styles.ts","webpack://brc/./src/stories/Widgets/LogoList/LogoList.tsx","webpack://brc/./node_modules/decode-uri-component/index.js","webpack://brc/./node_modules/filter-obj/index.js","webpack://brc/./node_modules/query-string/index.js","webpack://brc/./node_modules/react-spinners/esm/helpers/unitConverter.js","webpack://brc/./node_modules/react-spinners/esm/helpers/animation.js","webpack://brc/./node_modules/react-spinners/esm/PuffLoader.js","webpack://brc/./node_modules/split-on-first/index.js","webpack://brc/./node_modules/strict-uri-encode/index.js"],"sourcesContent":["import { css } from 'styled-components';\r\n/**\r\n * Returns the aspect ratio of the given width and height as a percentage.\r\n */\r\nexport function aspectRatio(width, height) {\r\n return (height / width) * 100;\r\n}\r\n/**\r\n * Re-usable styles for image container where the\r\n * image needs to maintain it's aspect ratio\r\n *\r\n * @param width\r\n * @param height\r\n * @returns\r\n */\r\nexport function imageWrapperPreserveRatio(width, height) {\r\n if (!width && !height) {\r\n return null;\r\n }\r\n return css `\r\n position: relative;\r\n overflow: hidden;\r\n overflow: clip;\r\n width: 100%;\r\n aspect-ratio: ${width / height};\r\n `;\r\n}\r\n/**\r\n * Calculates the percentage bottom padding\r\n * required to maintain a certain ratio.\r\n *\r\n * To be used in cases where the image ratio\r\n * changes based on viewport.\r\n *\r\n * @param width\r\n * @param height\r\n * @returns padding-bottom: {ratioPercentage}%\r\n */\r\nexport function imageWrapperRatioPadding(width, height) {\r\n if (!width && !height) {\r\n return '';\r\n }\r\n const ratioPercentage = aspectRatio(width, height).toFixed(2);\r\n return `padding-bottom: ${ratioPercentage}%`;\r\n}\r\n/**\r\n * Re-usable styles for an image placed within\r\n * a container maintaining aspect ratio\r\n */\r\nexport const imageCoverContainer = (relative) => css `\r\n display: block;\r\n width: 100%;\r\n height: 100%;\r\n object-fit: cover;\r\n object-position: center;\r\n ${!relative && 'position: absolute; top: 0;left: 0;'}\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) {\r\n return '';\r\n }\r\n const params = {\r\n rxy: image.focalPoint ? `${image.focalPoint.top},${image.focalPoint.left}` : undefined,\r\n ...imageParams,\r\n };\r\n if (params.width && params.heightratio) {\r\n params.height = Math.round(params.width / params.heightratio);\r\n }\r\n if (params.height && params.widthratio) {\r\n params.width = Math.round(params.height / params.widthratio);\r\n }\r\n const paramsString = queryString.stringify(params);\r\n return `${image.src}${paramsString ? `?${queryString.stringify(params)}` : ''}`;\r\n}\r\nexport function getSrcs(image, upper, lower, steps, ratio, imageParams) {\r\n if (!image) {\r\n return undefined;\r\n }\r\n const sizes = getRange(upper, lower, steps);\r\n const sizesArr = sizes.map((size) => `${imageUrl(image, { ...imageParams, width: size, heightratio: ratio })} ${size}w`);\r\n return {\r\n src: sizesArr[0].split(' ')[0],\r\n srcSet: sizesArr.join(','),\r\n };\r\n}\r\nexport function getRetinaSrcs(image, width, ratio) {\r\n const dprs = [1, 1.5, 2, 2.5, 3];\r\n const dprsArr = dprs.map((dpr) => `${imageUrl(image, { width: width * dpr, heightratio: ratio })} ${dpr}x`);\r\n return {\r\n src: dprsArr[0].split(' ')[0],\r\n srcSet: dprsArr.join(','),\r\n };\r\n}\r\nfunction getRange(upper, lower, steps) {\r\n const difference = upper - lower;\r\n const increment = difference / (steps - 1);\r\n return [\r\n lower,\r\n ...Array(steps - 2)\r\n .fill('')\r\n .map((_, index) => Math.ceil(lower + increment * (index + 1))),\r\n upper,\r\n ];\r\n}\r\n","export function sleep(ms) {\r\n return new Promise((resolve) => setTimeout(resolve, ms));\r\n}\r\nexport function formatNumberValue(value, maximumDecimals, minimumDigits) {\r\n const formatter = new Intl.NumberFormat(undefined, {\r\n maximumFractionDigits: maximumDecimals ?? 0,\r\n minimumIntegerDigits: minimumDigits ?? 1,\r\n });\r\n return formatter.format(value);\r\n}\r\n/** Clamp index to be within the min/max index range. */\r\nexport function clamp(value, max) {\r\n return Math.max(Math.min(value, max), 0);\r\n}\r\n/**\r\n * Rule structure for react-hook-form\r\n */\r\nexport const EMAIL_RULE = {\r\n message: `Please enter a valid email address`,\r\n value: /^[\\w\\-.\\d*]+@[\\w\\-\\d.]+(\\.\\w*)$/,\r\n};\r\nexport const highlightTitleWords = (title) => title.replaceAll(/\\*(.*?)\\*/g, '$1');\r\n","import * as React from 'react';\r\nexport const useOutsideClick = (callback) => {\r\n const ref = React.useRef(null);\r\n React.useEffect(() => {\r\n const handleClick = (event) => {\r\n if (ref.current && !ref.current.contains(event.target)) {\r\n callback();\r\n }\r\n };\r\n document.addEventListener('click', handleClick, true);\r\n document.addEventListener('focus', handleClick, true);\r\n return () => {\r\n document.removeEventListener('click', handleClick, true);\r\n document.removeEventListener('focus', handleClick, true);\r\n };\r\n }, [ref]);\r\n return ref;\r\n};\r\n","import { transition } from '@helpers/animate';\r\nimport brand, { BrandColours } from '@helpers/brand';\r\nimport { fluid } from '@helpers/fluid';\r\nimport fonts from '@helpers/fonts';\r\nimport { Device, from } from '@helpers/media';\r\nimport { contentStyles, h2, subheading } from '@helpers/typography';\r\nimport styled from 'styled-components';\r\nconst ContentWrapper = styled.div `\r\n display: flex;\r\n flex-direction: column;\r\n justify-content: center;\r\n\r\n [data-layout='central'] &,\r\n [data-layout='split'] & {\r\n max-width: 546px;\r\n }\r\n\r\n [data-layout='central'] & {\r\n margin-left: auto;\r\n margin-right: auto;\r\n }\r\n`;\r\nconst Container = styled.section `\r\n --headingMargin: ${fluid(8, 14)};\r\n\r\n display: flex;\r\n flex-direction: column;\r\n\r\n &[data-layout='default'],\r\n &[data-layout='central'] {\r\n max-width: 695px;\r\n }\r\n\r\n &[data-layout='central'] {\r\n text-align: center;\r\n margin-left: auto;\r\n margin-right: auto;\r\n }\r\n\r\n &:not(:has(${ContentWrapper})) {\r\n --headingMargin: 0px;\r\n }\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n &[data-layout='central'] {\r\n align-items: center;\r\n text-align: center;\r\n margin-left: auto;\r\n margin-right: auto;\r\n }\r\n\r\n &[data-layout='split'] {\r\n --headingMargin: 0px;\r\n\r\n flex-direction: row;\r\n justify-content: space-between;\r\n column-gap: ${fluid(56, 120)};\r\n }\r\n }\r\n`;\r\nconst HeadIcon = styled.div `\r\n display: none;\r\n\r\n [data-layout='central'] & {\r\n display: block;\r\n\r\n svg {\r\n width: ${fluid(48, 65)};\r\n height: ${fluid(48, 65)};\r\n }\r\n }\r\n`;\r\nconst Subheading = styled.span `\r\n ${subheading};\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n ${Container}[data-layout='split'] & {\r\n grid-column: 1 / span 1;\r\n }\r\n }\r\n`;\r\nconst Heading = styled.h2 `\r\n ${h2};\r\n\r\n text-wrap: pretty;\r\n margin-bottom: var(--headingMargin);\r\n color: var(--headingColour, currentColor);\r\n\r\n ${Container}[data-layout='split'] & {\r\n max-width: 695px;\r\n }\r\n\r\n > span {\r\n ${transition('background-size, color', 0.5)};\r\n\r\n display: inline;\r\n background-image: linear-gradient(\r\n to right,\r\n var(--highlightColour, transparent),\r\n var(--highlightColour, transparent)\r\n );\r\n background-repeat: no-repeat;\r\n background-size: 100% 100%;\r\n transition-delay: 200ms;\r\n color: var(--highlightTextColour, currentColor);\r\n padding: 0 8px;\r\n margin-left: -8px;\r\n\r\n ${Container}[data-animate='false'] & {\r\n background-size: 0% 100%;\r\n color: currentColor;\r\n }\r\n }\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n ${Container}[data-layout='split'] & {\r\n grid-column: 1 / span 1;\r\n }\r\n }\r\n`;\r\nconst LogoImage = styled.img `\r\n display: block;\r\n`;\r\nconst Content = styled.div `\r\n ${contentStyles};\r\n\r\n [data-theme=${BrandColours.PurpleDark}] &,\r\n [data-theme=${BrandColours.PurpleLight}] & {\r\n ol,\r\n ul {\r\n li::before {\r\n color: ${brand.global.white};\r\n }\r\n }\r\n }\r\n`;\r\nconst ButtonWrapper = styled.div `\r\n display: flex;\r\n gap: var(--headerBlockButtonsGap, ${fluid(16, 38)});\r\n flex-wrap: wrap;\r\n margin-top: ${fluid(16, 38)};\r\n`;\r\nconst DetailContent = styled.div `\r\n ${transition('transform, opacity', 0.5)};\r\n ${fonts.lato.semiBold};\r\n\r\n font-size: ${fluid(15, 16)};\r\n line-height: ${fluid(23, 26)};\r\n display: inline-flex;\r\n flex-wrap: wrap;\r\n gap: 8px 32px;\r\n margin-top: ${fluid(10, 14)};\r\n\r\n &:not(:last-child) {\r\n margin-bottom: ${fluid(10, 14)};\r\n }\r\n\r\n @media print {\r\n opacity: 1 !important;\r\n transform: translateY(0px) !important;\r\n }\r\n\r\n [data-animate='false'] & {\r\n opacity: 0;\r\n transform: translateY(20px);\r\n\r\n @media print {\r\n opacity: 1 !important;\r\n transform: translateY(0px) !important;\r\n }\r\n }\r\n\r\n [data-secondary=${BrandColours.White}] & {\r\n color: ${brand.grey.dark};\r\n }\r\n\r\n ::before {\r\n content: '';\r\n display: block;\r\n width: 5px;\r\n height: 5px;\r\n border-radius: 50%;\r\n background-color: ${brand.global.white};\r\n position: absolute;\r\n top: 50%;\r\n right: calc((37px / 2) * -1);\r\n transform: translateY(-50%);\r\n\r\n [data-secondary=${BrandColours.White}] & {\r\n background-color: ${brand.grey.dark};\r\n }\r\n }\r\n\r\n :last-child::before {\r\n content: none;\r\n }\r\n`;\r\nconst Detail = styled.span `\r\n display: inline-flex;\r\n align-items: center;\r\n gap: ${fluid(4, 8)};\r\n position: relative;\r\n\r\n svg {\r\n width: 24px;\r\n height: 24px;\r\n\r\n [data-secondary=${BrandColours.White}] & {\r\n color: ${brand.primary.purple.light};\r\n }\r\n }\r\n`;\r\nconst HeadingSummaryBlockStyles = {\r\n Container,\r\n HeadIcon,\r\n Heading,\r\n Subheading,\r\n LogoImage,\r\n Content,\r\n ContentWrapper,\r\n ButtonWrapper,\r\n DetailContent,\r\n Detail,\r\n};\r\nexport default HeadingSummaryBlockStyles;\r\n","import { rootMargin } from '@helpers/animate';\r\nimport { getSvgIcon, InterfaceIcon } from '@helpers/icons';\r\nimport { highlightTitleWords } from '@helpers/utils';\r\nimport { useInView } from '@hooks/useInView';\r\nimport { LinkButton } from '@stories/Components/Buttons/Button/Button';\r\nimport * as React from 'react';\r\nimport S from './HeadingSummaryBlock.styles';\r\nconst HeadingSummaryBlock = (props) => {\r\n const [containerRef, inView] = useInView({ rootMargin }, false, props.pageContext?.isEditMode);\r\n if (!props.summary && !props.heading) {\r\n return null;\r\n }\r\n function hasContent() {\r\n return !!props.summary || (props.ctas && props.ctas.length > 0)\r\n || !!props.date || !!props.time\r\n || !!props.location || !!props.readTime;\r\n }\r\n return (React.createElement(S.Container, { ref: containerRef, \"data-layout\": props.layout ?? 'default', \"data-animate\": inView },\r\n React.createElement(\"div\", null,\r\n props.headIcon && React.createElement(S.HeadIcon, null, getSvgIcon(props.headIcon)),\r\n props.subheading && React.createElement(S.Subheading, null, props.subheading),\r\n props.heading && (React.createElement(S.Heading, { as: props.headingType, dangerouslySetInnerHTML: { __html: highlightTitleWords(props.heading) } })),\r\n props.logoImage && (React.createElement(S.LogoImage, { src: props.logoImage.src, alt: props.logoImage.altText, loading: \"lazy\" }))),\r\n hasContent() ? (React.createElement(S.ContentWrapper, null,\r\n props.summary && React.createElement(S.Content, { dangerouslySetInnerHTML: { __html: props.summary } }),\r\n props.date || props.time || props.location || props.readTime ? (React.createElement(S.DetailContent, null,\r\n props.date && (React.createElement(S.Detail, null,\r\n getSvgIcon(InterfaceIcon.CalendarBlank),\r\n props.date)),\r\n props.time && (React.createElement(S.Detail, null,\r\n getSvgIcon(InterfaceIcon.Clock),\r\n props.time)),\r\n props.location && (React.createElement(S.Detail, null,\r\n getSvgIcon(InterfaceIcon.Location),\r\n props.location)),\r\n props.readTime && (React.createElement(S.Detail, null,\r\n props.readTime,\r\n \" \",\r\n props.translations?.['global.readtime.label'] ?? '')))) : null,\r\n props.ctas && props.ctas.length > 0 ? (React.createElement(S.ButtonWrapper, { \"data-variant\": props.ctaWrapperVariant }, props.ctas.map((cta, i) => (React.createElement(LinkButton, { key: `${cta.text}-${props.heading}-${i}`, buttonType: cta.buttonType ? cta.buttonType : 'primary', href: cta.url, target: cta.target, icon: cta.icon }, cta.text))))) : null)) : null));\r\n};\r\nexport default HeadingSummaryBlock;\r\n","import { shouldAnimate, transition } from '@helpers/animate';\r\nimport { imageCoverContainer } from '@helpers/aspectRatio';\r\nimport brand from '@helpers/brand';\r\nimport { fluid } from '@helpers/fluid';\r\nimport fonts from '@helpers/fonts';\r\nimport { ButtonReset } from '@helpers/global';\r\nimport { Device, from, until } from '@helpers/media';\r\nimport srOnly from '@helpers/srOnly';\r\nimport HeadingSummaryBlockStyles from '@stories/Components/Misc/HeadingSummaryBlock/HeadingSummaryBlock.styles';\r\nimport SectionWrapper from '@stories/Components/Misc/SectionWrapper/SectionWrapper';\r\nimport SectionWrapperStyles from '@stories/Components/Misc/SectionWrapper/SectionWrapper.styles';\r\nimport { rgba } from 'polished';\r\nimport styled, { css } from 'styled-components';\r\nconst Container = styled(SectionWrapper) `\r\n --headingColour: ${brand.primary.purple.light};\r\n --highlightColour: ${brand.primary.purple.light};\r\n --highlightTextColour: ${brand.global.white};\r\n --sectionBackground: ${brand.global.white};\r\n\r\n overflow: hidden;\r\n\r\n ${SectionWrapperStyles.Inner} {\r\n display: grid;\r\n }\r\n\r\n ${HeadingSummaryBlockStyles.Container} {\r\n color: ${brand.primary.blue.dark};\r\n margin-bottom: ${fluid(40, 80)};\r\n }\r\n\r\n @media print {\r\n display: none;\r\n }\r\n`;\r\nconst TabWrapper = styled.div `\r\n --buttonHeight: ${fluid(56, 88)};\r\n\r\n position: relative;\r\n margin: calc(${fluid(20, 40)} * -1) 0 ${fluid(40, 80)};\r\n\r\n &[data-hidden='true'] {\r\n ${srOnly};\r\n }\r\n\r\n &:has(button:nth-of-type(3)) {\r\n height: var(--buttonHeight);\r\n }\r\n\r\n &::before {\r\n ${transition('max-width', 0.65)};\r\n\r\n content: '';\r\n position: absolute;\r\n top: 0;\r\n left: 50%;\r\n transform: translateX(-50%);\r\n width: 100dvw;\r\n height: 100%;\r\n background-color: var(--sectionBackground);\r\n z-index: 1;\r\n box-shadow: 0px 0px 20px 0px rgba(0, 0, 0, 0.1);\r\n max-width: 100dvw;\r\n\r\n ${Container}[data-animate='false'] & {\r\n max-width: 0px;\r\n }\r\n }\r\n`;\r\nconst TabButton = styled.button `\r\n ${ButtonReset};\r\n ${transition('color, opacity, order, max-height, transform')};\r\n ${fonts.lato.bold};\r\n\r\n display: inline-flex;\r\n align-items: center;\r\n justify-content: center;\r\n gap: ${fluid(6, 10)};\r\n z-index: 1;\r\n padding: 0 ${fluid(28, 72)};\r\n color: ${brand.grey.dark};\r\n height: var(--buttonHeight);\r\n max-height: var(--buttonHeight);\r\n text-align: center;\r\n font-size: ${fluid(16, 20)};\r\n line-height: ${fluid(24, 30)};\r\n\r\n &:focus-visible {\r\n outline: auto;\r\n outline-offset: 3px;\r\n outline-width: 2px;\r\n }\r\n\r\n &:hover,\r\n &[aria-selected='true'] {\r\n color: ${brand.primary.purple.light};\r\n }\r\n\r\n &::before {\r\n ${transition('max-width', 0.25)};\r\n\r\n content: '';\r\n position: absolute;\r\n top: 0;\r\n left: 50%;\r\n transform: translateX(-50%);\r\n width: 100%;\r\n height: 2px;\r\n background-color: ${brand.primary.purple.light};\r\n max-width: 100%;\r\n }\r\n\r\n &[aria-selected='false'],\r\n ${Container}[data-animate='false'] & {\r\n &::before {\r\n max-width: 0px;\r\n }\r\n }\r\n\r\n ${Container}[data-animate='false'] & {\r\n opacity: 0;\r\n }\r\n\r\n ${Container}[data-delays='true'] & {\r\n transition-delay: 250ms;\r\n\r\n &::before {\r\n transition-delay: 650ms;\r\n }\r\n }\r\n\r\n svg {\r\n ${transition('transform', 0.25)};\r\n\r\n display: none;\r\n width: ${fluid(20, 26)};\r\n }\r\n`;\r\nconst Divider = styled.div `\r\n ${transition('max-height')};\r\n\r\n width: 2px;\r\n height: var(--buttonHeight);\r\n max-height: var(--buttonHeight);\r\n background-color: ${brand.grey.lightest};\r\n z-index: 1;\r\n transition-delay: 400ms;\r\n\r\n ${Container}[data-animate='false'] & {\r\n max-height: 0px;\r\n }\r\n`;\r\nconst Tabs = styled.div `\r\n display: flex;\r\n justify-content: center;\r\n\r\n @media ${until(Device.MobileLarge)} {\r\n &:not(:has(button:nth-of-type(3))) {\r\n margin: 0 calc(var(--sitePadding) * -1);\r\n\r\n ${TabButton} {\r\n flex: 1;\r\n }\r\n }\r\n }\r\n\r\n /* Buttons display as dropdown list if more than 2 */\r\n &:has(button:nth-of-type(3)) {\r\n flex-direction: column;\r\n background: var(--sectionBackground);\r\n margin: 0 auto;\r\n width: min-content;\r\n\r\n ${TabButton} {\r\n white-space: nowrap;\r\n }\r\n\r\n ${TabButton}[aria-selected='true'] {\r\n order: 0;\r\n\r\n svg {\r\n display: block;\r\n\r\n ${TabWrapper}[data-open='true'] & {\r\n transform: rotate(180deg);\r\n }\r\n }\r\n }\r\n\r\n ${TabButton}:not([aria-selected='true']) {\r\n max-height: calc(var(--buttonHeight) * 0.66);\r\n background-color: var(--sectionBackground);\r\n opacity: 0;\r\n pointer-events: none;\r\n order: 1;\r\n box-shadow: 0px 2px 3px 0px rgba(0, 0, 0, 0.1);\r\n transform: translateY(-10px);\r\n\r\n ${TabWrapper}[data-open= 'true'] & {\r\n opacity: 1;\r\n pointer-events: auto;\r\n transform: none;\r\n }\r\n }\r\n }\r\n`;\r\nconst LogosWrapper = styled.div `\r\n ${transition('opacity, transform, visibility', 0.5)};\r\n\r\n position: relative;\r\n grid-column: 1;\r\n grid-row: 3;\r\n overflow: hidden;\r\n\r\n &::before,\r\n &::after {\r\n position: absolute;\r\n top: 0;\r\n content: '';\r\n display: block;\r\n height: 100%;\r\n background-image: linear-gradient(\r\n 90deg,\r\n ${brand.global.white} 10%,\r\n ${rgba(brand.global.white, 0.33)} 60%,\r\n transparent\r\n );\r\n width: ${fluid(32, 48)};\r\n z-index: 2;\r\n }\r\n\r\n &::before {\r\n left: 0;\r\n }\r\n\r\n &::after {\r\n right: 0;\r\n transform: scaleX(-1);\r\n }\r\n\r\n ${Container}[data-animate='false'] &,\r\n &[data-active='false'] {\r\n opacity: 0;\r\n pointer-events: none;\r\n visibility: hidden;\r\n }\r\n\r\n ${Container}[data-animate='false'] & {\r\n transform: translateY(20px);\r\n }\r\n\r\n ${Container}[data-delays='true'] & {\r\n transition-delay: 750ms;\r\n }\r\n\r\n @media ${until(Device.TabletLarge)} {\r\n margin: 0 calc(var(--sitePadding) * -1);\r\n }\r\n`;\r\nconst LogosTrack = styled.div `\r\n --speed: 7s;\r\n --count: 5;\r\n --cardGap: ${fluid(24, 64)};\r\n --cardWidth: ${fluid(108, 206)};\r\n\r\n display: flex;\r\n gap: var(--cardGap);\r\n\r\n ${shouldAnimate(css `\r\n animation: scrolling var(--speed) linear infinite;\r\n `)}\r\n\r\n ${Container}[data-animate='false'] &,\r\n ${LogosWrapper}[data-active='false'] &,\r\n &:hover {\r\n animation-play-state: paused;\r\n }\r\n\r\n @keyframes scrolling {\r\n 0% {\r\n transform: translateX(0);\r\n }\r\n\r\n 100% {\r\n transform: translateX(calc(var(--count) * (var(--cardGap) + var(--cardWidth)) * -1));\r\n }\r\n }\r\n`;\r\nconst Card = styled.div `\r\n ${fonts.lato.bold};\r\n\r\n display: flex;\r\n gap: ${fluid(16, 34)};\r\n flex-direction: column;\r\n flex: 0 0 var(--cardWidth);\r\n align-items: center;\r\n font-size: ${fluid(14, 16)};\r\n line-height: ${fluid(24, 26)};\r\n text-align: center;\r\n`;\r\nconst ImageWrapper = styled.div `\r\n position: relative;\r\n height: ${fluid(32, 64)};\r\n width: 100%;\r\n`;\r\nconst Image = styled.img `\r\n ${imageCoverContainer()};\r\n\r\n object-fit: contain;\r\n`;\r\nconst ButtonWrapper = styled.div `\r\n ${transition('opacity, transform')};\r\n\r\n display: flex;\r\n gap: 16px;\r\n flex-direction: column;\r\n align-items: center;\r\n margin: ${fluid(40, 80)} 0 0;\r\n grid-column: 1;\r\n grid-row: 4;\r\n padding-bottom: 1px;\r\n\r\n ${Container}[data-animate='false'] & {\r\n opacity: 0;\r\n transform: translateY(20px);\r\n }\r\n\r\n ${Container}[data-delays='true'] & {\r\n transition-delay: 900ms;\r\n }\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n flex-direction: row;\r\n justify-content: center;\r\n }\r\n`;\r\nconst LogoListStyles = {\r\n Container,\r\n Tabs,\r\n LogosWrapper,\r\n Card,\r\n Image,\r\n ImageWrapper,\r\n LogosTrack,\r\n TabButton,\r\n TabWrapper,\r\n Divider,\r\n ButtonWrapper,\r\n};\r\nexport default LogoListStyles;\r\n","import { rootMargin } from '@helpers/animate';\r\nimport { InterfaceIcon, getSvgIcon } from '@helpers/icons';\r\nimport { imageUrl } from '@helpers/image';\r\nimport { clamp } from '@helpers/utils';\r\nimport { useInView } from '@hooks/useInView';\r\nimport { useOutsideClick } from '@hooks/useOutsideClick';\r\nimport { LinkButton } from '@stories/Components/Buttons/Button/Button';\r\nimport HeadingSummaryBlock from '@stories/Components/Misc/HeadingSummaryBlock/HeadingSummaryBlock';\r\nimport * as React from 'react';\r\nimport S from './LogoList.styles';\r\nconst THRESHOLDS = [Infinity, 10, 6, 4, 3, 2, 1];\r\nconst LogoList = (props) => {\r\n const [containerRef, inView] = useInView({ rootMargin }, false, props.pageContext?.isEditMode);\r\n const tabsRef = useOutsideClick(() => setOpen(false));\r\n const [active, setActive] = React.useState(0);\r\n const [open, setOpen] = React.useState(false);\r\n const [delays, setDelays] = React.useState(true);\r\n const tabRef = React.useRef([]);\r\n React.useEffect(() => {\r\n if (inView) {\r\n setTimeout(() => setDelays(false), 1000);\r\n }\r\n }, [inView]);\r\n if (!props.groups || props.groups.length === 0) {\r\n return null;\r\n }\r\n return (React.createElement(S.Container, { id: props.anchorId, ref: containerRef, \"data-animate\": inView, translations: props.translations, \"data-delays\": delays },\r\n React.createElement(HeadingSummaryBlock, { ...props, summary: props.summary ? `

${props.summary}

` : undefined, layout: \"central\" }),\r\n React.createElement(S.TabWrapper, { \"data-open\": open, \"data-hidden\": props.groups.length === 1 },\r\n React.createElement(S.Tabs, { role: \"tablist\", ref: tabsRef }, props.groups.map((group, i) => (React.createElement(React.Fragment, { key: `${group.id}-button` },\r\n React.createElement(S.TabButton, { id: group.id, ref: (el) => (tabRef.current[i] = el), role: \"tab\", \"aria-selected\": active === i, onClick: () => {\r\n if (active !== i) {\r\n setActive(i);\r\n }\r\n else if (props.groups.length > 2) {\r\n setOpen(!open);\r\n }\r\n }, onFocus: () => setActive(i), tabIndex: props.groups.length === 1 || active !== i ? -1 : undefined, onKeyDown: (event) => {\r\n const nextIndex = i === props.groups.length - 1 ? 0 : clamp(i + 1, props.groups.length - 1);\r\n const prevIndex = i === 0 ? props.groups.length - 1 : clamp(i - 1, props.groups.length - 1);\r\n switch (event.key) {\r\n case 'ArrowRight':\r\n case 'ArrowDown':\r\n event.preventDefault();\r\n event.stopPropagation();\r\n tabRef.current[nextIndex]?.focus();\r\n break;\r\n case 'ArrowLeft':\r\n case 'ArrowUp':\r\n event.preventDefault();\r\n event.stopPropagation();\r\n tabRef.current[prevIndex]?.focus();\r\n break;\r\n case 'Home':\r\n tabRef.current[0]?.focus();\r\n break;\r\n case 'End':\r\n tabRef.current[props.groups.length - 1]?.focus();\r\n break;\r\n default:\r\n break;\r\n }\r\n } },\r\n group.title,\r\n getSvgIcon(InterfaceIcon.Chevron)),\r\n props.groups.length === 2 && i === 0 && React.createElement(S.Divider, { role: \"none\" })))))),\r\n props.groups.map((group, i) => (React.createElement(S.LogosWrapper, { key: `${group.id}-wrapper`, role: \"tabpanel\", \"aria-labelledby\": group.id, \"data-active\": active === i },\r\n React.createElement(S.LogosTrack, { style: {\r\n '--speed': `${group.items.length * 2}s`,\r\n '--count': group.items.length,\r\n } },\r\n group.items.map((item, j) => (React.createElement(S.Card, { key: `${group.id}-card-${j}` },\r\n React.createElement(S.ImageWrapper, { ...(item.link && item.link.url\r\n ? {\r\n as: 'a',\r\n href: item.link.url,\r\n 'aria-label': item.link.text ?? item.label,\r\n target: '_blank',\r\n rel: 'nofollow',\r\n }\r\n : {}) },\r\n React.createElement(S.Image, { src: imageUrl(item, { height: 128, width: 416, rmode: 'pad' }), alt: item.altText ?? item.label, loading: \"lazy\" })),\r\n item.label && React.createElement(\"span\", null, item.label)))),\r\n THRESHOLDS.map((threshold, j) => {\r\n if (group.items.length > threshold) {\r\n return null;\r\n }\r\n return (React.createElement(React.Fragment, { key: `${group.id}-card-${j + 1}` }, group.items.map((item, k) => (React.createElement(S.Card, { key: `${group.id}-card-${j}-${k}` },\r\n React.createElement(S.ImageWrapper, { ...(item.link && item.link.url\r\n ? {\r\n as: 'a',\r\n href: item.link.url,\r\n 'aria-label': item.link.text ?? item.label,\r\n target: '_blank',\r\n rel: 'nofollow',\r\n }\r\n : {}) },\r\n React.createElement(S.Image, { src: imageUrl(item, { height: 128, width: 416, rmode: 'pad' }), alt: item.altText ?? item.label, loading: \"lazy\" })),\r\n item.label && React.createElement(\"span\", null, item.label))))));\r\n })),\r\n group.ctas && group.ctas.length > 0 ? (React.createElement(S.ButtonWrapper, { \"data-active\": active === i }, group.ctas.map((cta, i) => (React.createElement(LinkButton, { key: `${group.id}-cta-${i}`, buttonType: cta.buttonType ? cta.buttonType : i === 0 ? 'secondary' : 'tertiary', href: cta.url, target: cta.target, icon: cta.icon }, cta.text))))) : null)))));\r\n};\r\nexport default LogoList;\r\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';\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","'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","var cssUnit = {\n cm: true,\n mm: true,\n in: true,\n px: true,\n pt: true,\n pc: true,\n em: true,\n ex: true,\n ch: true,\n rem: true,\n vw: true,\n vh: true,\n vmin: true,\n vmax: true,\n \"%\": true,\n};\n/**\n * If size is a number, append px to the value as default unit.\n * If size is a string, validate against list of valid units.\n * If unit is valid, return size as is.\n * If unit is invalid, console warn issue, replace with px as the unit.\n *\n * @param {(number | string)} size\n * @return {LengthObject} LengthObject\n */\nexport function parseLengthAndUnit(size) {\n if (typeof size === \"number\") {\n return {\n value: size,\n unit: \"px\",\n };\n }\n var value;\n var valueString = (size.match(/^[0-9.]*/) || \"\").toString();\n if (valueString.includes(\".\")) {\n value = parseFloat(valueString);\n }\n else {\n value = parseInt(valueString, 10);\n }\n var unit = (size.match(/[^0-9]*$/) || \"\").toString();\n if (cssUnit[unit]) {\n return {\n value: value,\n unit: unit,\n };\n }\n console.warn(\"React Spinners: \".concat(size, \" is not a valid css value. Defaulting to \").concat(value, \"px.\"));\n return {\n value: value,\n unit: \"px\",\n };\n}\n/**\n * Take value as an input and return valid css value\n *\n * @param {(number | string)} value\n * @return {string} valid css value\n */\nexport function cssValue(value) {\n var lengthWithunit = parseLengthAndUnit(value);\n return \"\".concat(lengthWithunit.value).concat(lengthWithunit.unit);\n}\n","export var createAnimation = function (loaderName, frames, suffix) {\n var animationName = \"react-spinners-\".concat(loaderName, \"-\").concat(suffix);\n if (typeof window == \"undefined\" || !window.document) {\n return animationName;\n }\n var styleEl = document.createElement(\"style\");\n document.head.appendChild(styleEl);\n var styleSheet = styleEl.sheet;\n var keyFrames = \"\\n @keyframes \".concat(animationName, \" {\\n \").concat(frames, \"\\n }\\n \");\n if (styleSheet) {\n styleSheet.insertRule(keyFrames, 0);\n }\n return animationName;\n};\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport * as React from \"react\";\nimport { cssValue } from \"./helpers/unitConverter\";\nimport { createAnimation } from \"./helpers/animation\";\nvar puff = [\n createAnimation(\"PuffLoader\", \"0% {transform: scale(0)} 100% {transform: scale(1.0)}\", \"puff-1\"),\n createAnimation(\"PuffLoader\", \"0% {opacity: 1} 100% {opacity: 0}\", \"puff-2\"),\n];\nfunction PuffLoader(_a) {\n var _b = _a.loading, loading = _b === void 0 ? true : _b, _c = _a.color, color = _c === void 0 ? \"#000000\" : _c, _d = _a.speedMultiplier, speedMultiplier = _d === void 0 ? 1 : _d, _e = _a.cssOverride, cssOverride = _e === void 0 ? {} : _e, _f = _a.size, size = _f === void 0 ? 60 : _f, additionalprops = __rest(_a, [\"loading\", \"color\", \"speedMultiplier\", \"cssOverride\", \"size\"]);\n var wrapper = __assign({ display: \"inherit\", position: \"relative\", width: cssValue(size), height: cssValue(size) }, cssOverride);\n var style = function (i) {\n return {\n position: \"absolute\",\n height: cssValue(size),\n width: cssValue(size),\n border: \"thick solid \".concat(color),\n borderRadius: \"50%\",\n opacity: \"1\",\n top: \"0\",\n left: \"0\",\n animationFillMode: \"both\",\n animation: \"\".concat(puff[0], \", \").concat(puff[1]),\n animationDuration: \"\".concat(2 / speedMultiplier, \"s\"),\n animationIterationCount: \"infinite\",\n animationTimingFunction: \"cubic-bezier(0.165, 0.84, 0.44, 1), cubic-bezier(0.3, 0.61, 0.355, 1)\",\n animationDelay: i === 1 ? \"-1s\" : \"0s\",\n };\n };\n if (!loading) {\n return null;\n }\n return (React.createElement(\"span\", __assign({ style: wrapper }, additionalprops),\n React.createElement(\"span\", { style: style(1) }),\n React.createElement(\"span\", { style: style(2) })));\n}\nexport default PuffLoader;\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 = str => encodeURIComponent(str).replace(/[!'()*]/g, x => `%${x.charCodeAt(0).toString(16).toUpperCase()}`);\n"],"names":["imageWrapperPreserveRatio","width","height","css","imageCoverContainer","relative","imageUrl","image","imageParams","params","rxy","focalPoint","top","left","undefined","heightratio","Math","round","widthratio","paramsString","queryString","src","getSrcs","upper","lower","steps","ratio","sizes","increment","Array","fill","map","_","index","ceil","getRange","sizesArr","size","split","srcSet","join","sleep","ms","Promise","resolve","setTimeout","clamp","value","max","min","highlightTitleWords","title","replaceAll","useOutsideClick","callback","ref","React","handleClick","event","current","contains","target","document","addEventListener","removeEventListener","ContentWrapper","styled","div","withConfig","displayName","componentId","Container","section","fluid","from","Device","TabletLarge","HeadIcon","Subheading","span","subheading","Heading","h2","transition","LogoImage","img","Content","contentStyles","BrandColours","PurpleDark","PurpleLight","brand","global","white","ButtonWrapper","DetailContent","fonts","lato","semiBold","White","grey","dark","Detail","primary","purple","light","props","_props$pageContext","_props$layout","_props$translations$g","_props$translations","containerRef","inView","useInView","rootMargin","pageContext","isEditMode","summary","heading","S","layout","headIcon","getSvgIcon","as","headingType","dangerouslySetInnerHTML","__html","logoImage","alt","altText","loading","ctas","length","date","time","location","readTime","InterfaceIcon","CalendarBlank","Clock","Location","translations","ctaWrapperVariant","cta","i","LinkButton","key","text","buttonType","href","url","icon","SectionWrapper","SectionWrapperStyles","Inner","HeadingSummaryBlockStyles","blue","TabWrapper","srOnly","TabButton","button","ButtonReset","bold","Divider","lightest","Tabs","until","MobileLarge","LogosWrapper","rgba","LogosTrack","shouldAnimate","Card","ImageWrapper","Image","THRESHOLDS","Infinity","tabsRef","setOpen","active","setActive","open","delays","setDelays","tabRef","groups","id","anchorId","HeadingSummaryBlock","role","group","el","onClick","onFocus","tabIndex","onKeyDown","_tabRef$current$nextI","_tabRef$current$prevI","_tabRef$current$","_tabRef$current","nextIndex","prevIndex","preventDefault","stopPropagation","focus","Chevron","style","items","item","j","_item$link$text","_item$altText","link","label","rel","rmode","threshold","k","_item$link$text2","_item$altText2","token","singleMatcher","RegExp","multiMatcher","decodeComponents","components","decodeURIComponent","err","slice","right","prototype","concat","call","decode","input","tokens","match","module","exports","encodedURI","TypeError","replace","replaceMap","exec","result","entries","Object","keys","customDecodeURIComponent","obj","predicate","ret","isArr","isArray","val","indexOf","strictUriEncode","decodeComponent","splitOnFirst","filterObject","encodeFragmentIdentifier","Symbol","validateArrayFormatSeparator","encode","options","strict","encodeURIComponent","keysSorter","sort","a","b","Number","removeHash","hashStart","extract","queryStart","parseValue","parseNumbers","isNaN","trim","parseBooleans","toLowerCase","parse","query","assign","arrayFormat","arrayFormatSeparator","formatter","accumulator","includes","isEncodedArray","newValue","test","arrayValue","parserForArrayFormat","create","param","reduce","Boolean","stringify","object","shouldFilter","skipNull","skipEmptyString","keyValueSep","encoderForArrayFormat","objectCopy","filter","x","parseUrl","url_","hash","parseFragmentIdentifier","fragmentIdentifier","stringifyUrl","queryFromUrl","parsedQueryFromUrl","getHash","pick","exclude","exclusionFilter","cssUnit","cm","mm","in","px","pt","pc","em","ex","ch","rem","vw","vh","vmin","vmax","cssValue","lengthWithunit","unit","valueString","toString","parseFloat","parseInt","console","warn","parseLengthAndUnit","createAnimation","loaderName","frames","suffix","animationName","window","styleEl","createElement","head","appendChild","styleSheet","sheet","keyFrames","insertRule","__assign","t","s","n","arguments","p","hasOwnProperty","apply","this","puff","_a","_b","_c","color","_d","speedMultiplier","_e","cssOverride","_f","additionalprops","e","getOwnPropertySymbols","propertyIsEnumerable","__rest","wrapper","display","position","border","borderRadius","opacity","animationFillMode","animation","animationDuration","animationIterationCount","animationTimingFunction","animationDelay","string","separator","separatorIndex","str","charCodeAt","toUpperCase"],"sourceRoot":""}