{"version":3,"file":"8405-ee19b3cc761849df4d28.js","mappings":"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","sources":["webpack://lcci/./src/img/icons/chevron-left.svg","webpack://lcci/./src/helpers/global.ts","webpack://lcci/./src/helpers/grid.ts","webpack://lcci/./src/helpers/image.ts","webpack://lcci/./src/helpers/srOnly.ts","webpack://lcci/./src/helpers/typography.ts","webpack://lcci/./src/helpers/utils.ts","webpack://lcci/./src/hoc/withMotionMax.tsx","webpack://lcci/./src/hooks/useIntersectionObserver.ts","webpack://lcci/./src/hooks/useInView.ts","webpack://lcci/./src/stories/Components/Buttons/Button/Button.styles.ts","webpack://lcci/./src/stories/Components/Buttons/LinkButton/LinkButton.tsx","webpack://lcci/./src/stories/Components/Misc/Image/Image.tsx","webpack://lcci/./src/stories/Components/Misc/SectionWrapper/SectionWrapper.styles.ts","webpack://lcci/./src/stories/Components/Misc/SectionWrapper/SectionWrapper.tsx","webpack://lcci/./node_modules/react-swipeable/es/index.js","webpack://lcci/./src/stories/Widgets/HomepageHeroBanner/BannerItem/BannerItem.styles.ts","webpack://lcci/./src/stories/Widgets/HomepageHeroBanner/BannerItem/BannerItem.tsx","webpack://lcci/./src/stories/Widgets/HomepageHeroBanner/HomepageHeroBanner.styles.ts","webpack://lcci/./src/img/icons/pause.svg","webpack://lcci/./src/img/icons/play.svg","webpack://lcci/./src/stories/Widgets/HomepageHeroBanner/Pagination/Pagination.styles.ts","webpack://lcci/./src/stories/Widgets/HomepageHeroBanner/Pagination/Pagination.tsx","webpack://lcci/./src/stories/Widgets/HomepageHeroBanner/HomepageHeroBanner.tsx","webpack://lcci/./src/hooks/useAutoplay.ts","webpack://lcci/./node_modules/react-spinners/PuffLoader.js","webpack://lcci/./node_modules/react-spinners/helpers/animation.js","webpack://lcci/./node_modules/react-spinners/helpers/unitConverter.js"],"sourcesContent":["var _path;\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport * as React from \"react\";\n\nfunction SvgChevronLeft(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 6.16 10.02\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M.002 5.04a.416.416 0 00.14.274l5.041 4.55a.621.621 0 00.389.152.646.646 0 00.406-.116.429.429 0 00.186-.318.409.409 0 00-.145-.33l-4.7-4.244L6.018.764a.409.409 0 00.146-.33.429.429 0 00-.186-.317A.646.646 0 005.571 0a.621.621 0 00-.388.152L.142 4.7a.4.4 0 00-.14.34z\",\n fill: \"currentColor\"\n })));\n}\n\nexport default SvgChevronLeft;","import { css } from 'styled-components';\r\nexport default {\r\n navHeight: 107,\r\n navHeightTablet: 80,\r\n navHeightMobile: 59,\r\n};\r\nexport const ButtonReset = css `\r\n border: none;\r\n outline: none;\r\n padding: 0px;\r\n background: none;\r\n border-radius: 0px;\r\n`;\r\n","import { css } from 'styled-components';\r\nexport const SitePaddingMin = 18;\r\nexport const SitePaddingMax = 64;\r\nexport const SiteWidth = 1760;\r\nexport const SiteWidthBreakpoint = SiteWidth + SitePaddingMax * 2;\r\nexport const SiteWidthNarrow = 940;\r\nexport const siteWide = css `\r\n margin: 0 auto;\r\n max-width: var(--siteWidth);\r\n padding: 0 var(--sitePadding);\r\n width: 100%;\r\n`;\r\nexport const baseGrid = css `\r\n display: grid;\r\n column-gap: var(--gutterWidth);\r\n grid-template-columns: repeat(24, 1fr);\r\n`;\r\n","import { Cloudinary } from '@cloudinary/url-gen';\r\nimport { dpr, format, quality } from '@cloudinary/url-gen/actions/delivery';\r\nimport { crop, fill, limitFill, pad, thumbnail } from '@cloudinary/url-gen/actions/resize';\r\nimport { face } from '@cloudinary/url-gen/qualifiers/focusOn';\r\nimport { auto as autoFormat } from '@cloudinary/url-gen/qualifiers/format';\r\nimport { autoGravity, focusOn } from '@cloudinary/url-gen/qualifiers/gravity';\r\nimport { auto as autoQuality } from '@cloudinary/url-gen/qualifiers/quality';\r\nimport { css } from 'styled-components';\r\nconst cl = new Cloudinary({\r\n cloud: {\r\n cloudName: 'lcci',\r\n },\r\n url: {\r\n secure: true,\r\n },\r\n});\r\n/**\r\n * Create an image URL for ImageProcessor\r\n * @param image The image model\r\n * @param imageParams The image parameters\r\n * @returns The image URL\r\n */\r\nexport function imageUrl(image, imageParams) {\r\n if (!image?.src) {\r\n return '';\r\n }\r\n if (image.src.startsWith('http')) {\r\n return image.src;\r\n }\r\n let clImage = cl.image(image.src);\r\n const resizeAction = getResizeAction(image, imageParams);\r\n if (resizeAction) {\r\n clImage = clImage.resize(resizeAction);\r\n }\r\n clImage = clImage.delivery(getFormatAction(imageParams)).delivery(quality(autoQuality()));\r\n if (imageParams.dpr) {\r\n clImage = clImage.delivery(dpr(imageParams.dpr));\r\n }\r\n // Set version to enable mass invalidation.\r\n // clImage.setVersion(process.env.CLOUDINARY_VERSION ?? '1');\r\n return clImage.toURL();\r\n}\r\nfunction getResizeAction(image, imageParams) {\r\n if (!imageParams.width && !imageParams.height) {\r\n return undefined;\r\n }\r\n let resizeAction;\r\n switch (imageParams.crop) {\r\n case 'crop':\r\n resizeAction = crop();\r\n break;\r\n case 'fill':\r\n resizeAction = fill();\r\n break;\r\n case 'lfill':\r\n resizeAction = limitFill();\r\n break;\r\n case 'pad':\r\n resizeAction = pad();\r\n break;\r\n case 'thumb':\r\n resizeAction = thumbnail();\r\n break;\r\n default:\r\n resizeAction = fill();\r\n break;\r\n }\r\n if (imageParams.width) {\r\n resizeAction = resizeAction.width(imageParams.width);\r\n }\r\n else if (imageParams.widthratio && imageParams.crop !== 'pad') {\r\n resizeAction = resizeAction.aspectRatio(imageParams.widthratio);\r\n }\r\n if (imageParams.height) {\r\n resizeAction = resizeAction.height(imageParams.height);\r\n }\r\n else if (imageParams.heightratio && imageParams.crop !== 'pad') {\r\n resizeAction = resizeAction.aspectRatio(imageParams.heightratio);\r\n }\r\n if (imageParams.gravity === 'face') {\r\n resizeAction = resizeAction.gravity(focusOn(face()));\r\n }\r\n else if (imageParams.crop !== 'pad') {\r\n resizeAction = resizeAction.gravity(autoGravity());\r\n }\r\n // Zoom can only be applied when using crop or thumb mode.\r\n if ((imageParams.crop === 'crop' || imageParams.crop === 'thumb') && imageParams.zoom) {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n resizeAction = resizeAction.zoom(imageParams.zoom);\r\n }\r\n return resizeAction;\r\n}\r\nfunction getFormatAction(imageParams) {\r\n let formatAction;\r\n if (imageParams.format) {\r\n formatAction = format(imageParams.format);\r\n }\r\n else {\r\n formatAction = format(autoFormat());\r\n }\r\n return formatAction;\r\n}\r\nexport function getSrcs(image, upper, lower, steps, ratio, otherParams = {}) {\r\n const sizes = getRange(upper, lower, steps);\r\n return sizes.map((size) => `${imageUrl(image, { width: size, heightratio: ratio, ...otherParams })} ${size}w`);\r\n}\r\nexport function getRetinaSrcs(image, width, ratio, otherParams = {}) {\r\n const dprs = [1, 1.5, 2, 2.5, 3];\r\n return dprs.map((dpr) => `${imageUrl(image, { width: width, heightratio: ratio, dpr, ...otherParams })} ${dpr}x`);\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/**\r\n * Create an pdf URL\r\n * @param url The pdf url\r\n * @returns The pdf URL\r\n */\r\nexport function pdfUrl(url) {\r\n if (!url) {\r\n return '';\r\n }\r\n const clImage = cl.image(url);\r\n return clImage.toURL();\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 = ((height / width) * 100).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 { css } from 'styled-components';\r\n/**\r\n * Show only for screen readers.\r\n * @description Sourced from https://gist.github.com/ffoodd/000b59f431e3e64e4ce1a24d5bb36034\r\n */\r\nconst srOnly = css `\r\n border: 0 !important;\r\n clip: rect(1px, 1px, 1px, 1px) !important;\r\n -webkit-clip-path: inset(50%) !important;\r\n clip-path: inset(50%) !important;\r\n height: 1px !important;\r\n margin: -1px !important;\r\n overflow: hidden !important;\r\n padding: 0 !important;\r\n position: absolute !important;\r\n width: 1px !important;\r\n white-space: nowrap !important;\r\n`;\r\nexport default srOnly;\r\n","import SvgQuoteMarks from '@img/icons/quote-marks.svg?url';\r\nimport { css } from 'styled-components';\r\nimport { transition } from './animate';\r\nimport brand from './brand';\r\nimport { fluid } from './fluid';\r\nimport fonts from './fonts';\r\nimport { Device, from } from './media';\r\nexport const headingStyles = css `\r\n ${fonts.apparat.semiBold};\r\n\r\n color: currentColor;\r\n margin: 0 0 ${fluid(16, 24)};\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n ${fonts.apparat.medium};\r\n }\r\n`;\r\nexport const h1 = css `\r\n ${headingStyles};\r\n font-size: ${fluid(30, 70)};\r\n line-height: ${fluid(40, 80)};\r\n`;\r\nexport const h2 = css `\r\n ${headingStyles};\r\n font-size: ${fluid(25, 60)};\r\n line-height: ${fluid(35, 70)};\r\n`;\r\nexport const h3 = css `\r\n ${headingStyles};\r\n font-size: ${fluid(22, 50)};\r\n line-height: ${fluid(32, 60)};\r\n`;\r\nexport const h4 = css `\r\n ${headingStyles};\r\n font-size: ${fluid(20, 40)};\r\n line-height: ${fluid(30, 50)};\r\n`;\r\nexport const h5 = css `\r\n ${headingStyles};\r\n font-size: ${fluid(18, 30)};\r\n line-height: ${fluid(24, 38)};\r\n`;\r\nexport const h6 = css `\r\n ${headingStyles};\r\n font-size: ${fluid(17, 29)};\r\n line-height: ${fluid(23, 37)};\r\n`;\r\nexport const paragraphStyles = css `\r\n color: currentColor;\r\n ${fonts.apparat.light};\r\n margin: 0 0 ${fluid(16, 24)};\r\n`;\r\nexport const paragraphLarge = css `\r\n ${paragraphStyles};\r\n font-size: ${fluid(20, 26)};\r\n line-height: ${fluid(30, 36)};\r\n`;\r\nexport const paragraphMedium = css `\r\n ${paragraphStyles};\r\n font-size: ${fluid(18, 22)};\r\n line-height: ${fluid(28, 32)};\r\n`;\r\nexport const paragraphSmall = css `\r\n ${paragraphStyles};\r\n font-size: ${fluid(16, 18)};\r\n line-height: ${fluid(26, 28)};\r\n`;\r\nexport const paragraphMicro = css `\r\n ${paragraphStyles};\r\n font-size: ${fluid(12, 14)};\r\n line-height: ${fluid(22, 24)};\r\n`;\r\nexport const meta = css `\r\n display: block;\r\n ${fonts.apparat.regular};\r\n font-size: ${fluid(12, 18)};\r\n line-height: ${fluid(16, 24)};\r\n letter-spacing: 0.01em;\r\n text-transform: uppercase;\r\n\r\n sup {\r\n font-size: 60%;\r\n }\r\n`;\r\nexport const link = css `\r\n display: inline-block;\r\n color: currentColor;\r\n background: linear-gradient(\r\n to right,\r\n var(--accentColor, ${brand.primary.orange}),\r\n var(--accentColor, ${brand.primary.orange})\r\n );\r\n background-repeat: no-repeat;\r\n background-size: 0% 100%;\r\n margin: 0 -4px 0;\r\n padding: 0 4px 0;\r\n text-decoration: underline;\r\n text-underline-position: under;\r\n ${transition('background-size, color')};\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 color: ${brand.base.blue};\r\n }\r\n`;\r\nexport const table = css `\r\n background: ${brand.white};\r\n border-collapse: collapse;\r\n color: ${brand.base.blue};\r\n margin-bottom: 1em;\r\n width: 100%;\r\n\r\n thead {\r\n tr {\r\n background: ${brand.primary.blue};\r\n\r\n td,\r\n th {\r\n border: 2px solid ${brand.white};\r\n color: ${brand.white};\r\n ${fonts.apparat.regular};\r\n font-size: 18px;\r\n letter-spacing: -0.01em;\r\n line-height: 22px;\r\n padding: 12px 16px;\r\n text-align: left;\r\n }\r\n }\r\n }\r\n\r\n tbody {\r\n tr {\r\n &:nth-child(odd) {\r\n background: ${brand.lightBlue};\r\n }\r\n\r\n &:nth-child(even) {\r\n background: ${brand.white};\r\n }\r\n\r\n th {\r\n border: 2px solid ${brand.white};\r\n color: ${brand.white};\r\n ${fonts.apparat.medium};\r\n font-size: 18px;\r\n letter-spacing: -0.01em;\r\n line-height: 22px;\r\n padding: 12px 16px;\r\n text-align: left;\r\n text-transform: uppercase;\r\n }\r\n\r\n td {\r\n border: 2px solid ${brand.white};\r\n ${fonts.apparat.regular};\r\n font-size: 16px;\r\n letter-spacing: -0.01em;\r\n line-height: 20px;\r\n padding: 12px 16px;\r\n text-align: left;\r\n }\r\n }\r\n }\r\n`;\r\nexport const blockquote = css `\r\n ${paragraphMedium}\r\n ${fonts.apparat.regularItalic}\r\n\r\n position: relative;\r\n text-align: left;\r\n margin-bottom: 38px;\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n ${paragraphLarge}\r\n ${fonts.apparat.regularItalic}\r\n padding: 28px 0 0 76px;\r\n }\r\n\r\n &::before {\r\n content: '';\r\n display: block;\r\n width: ${fluid(40, 56)};\r\n height: ${fluid(38, 52)};\r\n margin-bottom: 20px;\r\n background: url(${SvgQuoteMarks}) center no-repeat;\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n position: absolute;\r\n top: 0;\r\n left: 0;\r\n margin-bottom: unset;\r\n }\r\n }\r\n\r\n + P {\r\n ${paragraphMedium}\r\n margin-bottom: ${fluid(5, 10)};\r\n }\r\n\r\n + p,\r\n + p + p {\r\n @media ${from(Device.TabletLarge)} {\r\n padding: 0 0 0 76px;\r\n }\r\n }\r\n`;\r\nexport const contentStyles = css `\r\n h1,\r\n .h1-styles {\r\n ${h2}\r\n }\r\n\r\n h2,\r\n .h2-styles {\r\n ${h4}\r\n }\r\n\r\n h3,\r\n .h3-styles {\r\n ${headingStyles};\r\n\r\n font-size: ${fluid(19, 35)};\r\n line-height: ${fluid(28, 45)};\r\n }\r\n\r\n h4,\r\n .h4-styles {\r\n ${h5}\r\n }\r\n\r\n h5,\r\n .h5-styles {\r\n ${h6}\r\n }\r\n\r\n p.large {\r\n ${paragraphLarge}\r\n }\r\n\r\n p {\r\n ${paragraphMedium}\r\n }\r\n\r\n p.small {\r\n ${paragraphSmall}\r\n }\r\n\r\n p.meta {\r\n ${meta}\r\n }\r\n\r\n a {\r\n ${link}\r\n }\r\n\r\n ol,\r\n ul {\r\n ${paragraphMedium};\r\n\r\n li {\r\n &::marker {\r\n color: ${brand.primary.orange};\r\n }\r\n }\r\n }\r\n\r\n ol {\r\n list-style: decimal;\r\n padding-left: 1.2em;\r\n }\r\n\r\n ul {\r\n list-style: disc;\r\n padding-left: 1.2em;\r\n\r\n li {\r\n margin-bottom: 16px;\r\n\r\n &:last-child {\r\n margin-bottom: 0;\r\n }\r\n }\r\n\r\n p {\r\n &:last-child {\r\n margin-bottom: 0;\r\n }\r\n }\r\n }\r\n\r\n hr {\r\n display: block;\r\n background: currentColor;\r\n border: 0;\r\n height: 4px;\r\n margin: ${fluid(40, 80)} 0;\r\n padding: 0;\r\n width: 100%;\r\n }\r\n\r\n table {\r\n ${table};\r\n }\r\n\r\n blockquote {\r\n ${blockquote};\r\n }\r\n\r\n .responsive-table {\r\n position: relative;\r\n overflow-x: auto;\r\n }\r\n\r\n > *:first-child {\r\n margin-top: 0;\r\n }\r\n\r\n > *:last-child {\r\n margin-bottom: 0;\r\n }\r\n`;\r\n","export function sleep(ms) {\r\n return new Promise((resolve) => setTimeout(resolve, ms));\r\n}\r\nexport const highlightTitleWords = (title) => title.replaceAll(/\\*([\\w\\W]+)\\*/g, '$1');\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\n/**\r\n * Rule structure for react-hook-form\r\n */\r\nexport const PHONE_NUMBER_RULE = {\r\n message: `Please enter a valid phone number`,\r\n value: /^[\\d+()\\-x ]+$/,\r\n};\r\n/**\r\n * Rule structure for react-hook-form\r\n */\r\nexport const NAME_RULE = {\r\n message: `Please enter a valid name`,\r\n value: /^[A-Za-z\\u00C0-\\u1EFF'\\-,.]{2,}$/,\r\n};\r\n/**\r\n * (?=.*[a-z]) = Check for lowercase letter\r\n * (?=.*[A-Z]) = Check for uppercase letter\r\n * (?=.*[^\\da-zA-Z]) = Check for non-digit and non-letter (^ negates the [] section)\r\n * .{8,} = Make sure it is at least 8 characters, no maximum\r\n */\r\nexport const PASSWORD_RULE_REGEX = /^(?=.*[A-Z])(?=.*[\\W])(?=.*[a-z])(?=.*[^\\da-zA-Z]).{8,}$/;\r\n/**\r\n * Rule structure for react-hook-form\r\n */\r\nexport const PASSWORD_RULE = {\r\n message: `Please enter a valid password`,\r\n value: PASSWORD_RULE_REGEX,\r\n};\r\n/**\r\n * Set of rules to keep the wording consistant throughout the site.\r\n */\r\nexport const PASSWORD_RULES = [\r\n 'At least 8 characters long',\r\n 'At least one Uppercase letter A-Z',\r\n 'At least one Lowercase letter a-z',\r\n 'At least one special character (~!@#$%^&*_-+=`|(){}[]:;”’<>,.?/)',\r\n];\r\n/**\r\n * Rule structure for react-hook-form\r\n * Pattern based on https://andrewwburns.com/2018/04/10/uk-postcode-validation-regex/, but allows both lower and uppercase\r\n */\r\nexport const POSTCODE_RULE = {\r\n message: `Please enter a valid postcode`,\r\n value: /^(([A-Za-z][0-9]{1,2})|(([A-Za-z][A-HJ-Ya-hj-y][0-9]{1,2})|(([A-Za-z][0-9][A-Za-z])|([A-Za-z][A-HJ-Ya-hj-y][0-9]?[A-Za-z])))) [0-9][A-Za-z]{2}$/,\r\n};\r\n/**\r\n * Rule structure for react-hook-form\r\n * Pattern based on https://regexr.com/39nr7\r\n */\r\nexport const URL_RULE = {\r\n message: `Please enter a valid URL`,\r\n value: /[(http(s)?)://(www.)?a-zA-Z0-9@:%._+~#=]{2,256}\\.[a-z]{2,6}\\b([-a-zA-Z0-9@:%_+.~#?&//=]*)$/,\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/** Ensure input value isn't just whitespace */\r\nexport const validateNotWhitespaceOnly = (value) => typeof value === 'string'\r\n ? value.trim().length > 0 || 'Inputted value cannot just be spaces'\r\n : true;\r\nexport function youTubeIdParser(url) {\r\n const regExp = /^.*((youtu.be\\/)|(v\\/)|(\\/u\\/\\w\\/)|(embed\\/)|(watch\\?))\\??v?=?([^#&?]*).*/;\r\n const match = url.match(regExp);\r\n return match && match[7].length == 11 ? match[7] : '';\r\n}\r\nexport async function checkYoutubeImageExists(imageSrc) {\r\n const res = await fetch(imageSrc);\r\n if (!res.ok) {\r\n console.log('failed');\r\n }\r\n else {\r\n console.log('success');\r\n }\r\n return Promise.resolve();\r\n}\r\nexport function linkAria(linkText, linkTarget, string) {\r\n if (linkTarget !== '_blank') {\r\n return linkText;\r\n }\r\n return `(${string ?? 'Opens in a new tab'}) ${linkText}`;\r\n}\r\n","import { domMax, LazyMotion } from 'framer-motion';\r\nimport React from 'react';\r\nexport function withMotionMax(WrappedComponent) {\r\n const displayName = WrappedComponent.displayName || WrappedComponent.name || 'Component';\r\n const ComponentWithMotionMax = (props) => {\r\n return (React.createElement(LazyMotion, { features: domMax, strict: true },\r\n React.createElement(WrappedComponent, { ...props })));\r\n };\r\n ComponentWithMotionMax.displayName = `withMotionMax(${displayName})`;\r\n return ComponentWithMotionMax;\r\n}\r\n","import { useEffect, useRef } from 'react';\r\n/**\r\n * Use the IntersectionObserver to track visibility of an element in the viewport.\r\n * @param {IntersectionObserverCallback} callback\r\n * @param {IntersectionObserverInit} options\r\n * @returns {UseIntersectionObserverReturn}\r\n */\r\nfunction useIntersectionObserver(callback, options = {}) {\r\n const observerRef = useRef(null);\r\n const rootRef = useRef(null);\r\n const elementRef = useRef(null);\r\n useEffect(() => {\r\n if (!elementRef.current) {\r\n return undefined;\r\n }\r\n observerRef.current = new IntersectionObserver(callback, {\r\n root: rootRef.current,\r\n ...options,\r\n });\r\n observerRef.current.observe(elementRef.current);\r\n return () => {\r\n if (observerRef.current === null) {\r\n return;\r\n }\r\n observerRef.current.disconnect();\r\n };\r\n }, [callback, options]);\r\n return { elementRef, observerRef, rootRef };\r\n}\r\nexport default useIntersectionObserver;\r\n","import { useState } from 'react';\r\nimport useIntersectionObserver from './useIntersectionObserver';\r\nexport function useInView(options, reverse = false, isEditMode = false) {\r\n const [inView, setInView] = useState(false);\r\n const { elementRef } = useIntersectionObserver((entries) => {\r\n if (entries[0].isIntersecting) {\r\n setInView(true);\r\n }\r\n else if (reverse === true) {\r\n setInView(false);\r\n }\r\n }, options);\r\n return [elementRef, isEditMode ? true : inView];\r\n}\r\n","import { transition } from '@helpers/animate';\r\nimport brand from '@helpers/brand';\r\nimport { fluid } from '@helpers/fluid';\r\nimport fonts from '@helpers/fonts';\r\nimport { Device, until } from '@helpers/media';\r\nimport srOnly from '@helpers/srOnly';\r\nimport Image from '@stories/Components/Misc/Image/Image';\r\nimport { rgba } from 'polished';\r\nimport styled, { css } from 'styled-components';\r\nexport const defaultButtonStyles = css `\r\n display: inline-flex;\r\n align-items: center;\r\n border: var(--borderWidth, 0) solid var(--colorBorder, var(--colorBg));\r\n border-radius: ${fluid(24, 50)};\r\n background: var(--colorBg);\r\n background-image: linear-gradient(to right, var(--colorBgActive), var(--colorBgActive));\r\n background-repeat: no-repeat;\r\n background-size: var(--bgSize);\r\n background-position: left center;\r\n color: var(--colorFg);\r\n height: ${fluid(40, 50)};\r\n padding: 0px ${fluid(20, 32)};\r\n text-decoration: none;\r\n ${transition('background-size, border-color, opacity')};\r\n user-select: none;\r\n width: auto;\r\n position: relative;\r\n padding-top: 2px; // required to vertically center properly :(\r\n\r\n /* Mobile click styles - button should mimic press */\r\n @media ${until(Device.TabletLarge)} {\r\n ${transition('color, background-color, border-color, transform')};\r\n\r\n span& {\r\n button:active &,\r\n a:active & {\r\n transform: translateY(1.5px);\r\n }\r\n }\r\n\r\n &:not(span) {\r\n &:active {\r\n transform: translateY(1.5px);\r\n }\r\n }\r\n }\r\n\r\n span& {\r\n button:focus-visible &,\r\n a:focus-visible & {\r\n outline: auto;\r\n outline-offset: 3px;\r\n }\r\n\r\n button:hover &,\r\n a:hover & {\r\n border-color: var(--colorBorderActive, var(--colorBgActive));\r\n color: var(--colorFgActive);\r\n background-size: var(--bgSizeActive);\r\n\r\n img {\r\n filter: invert(1);\r\n }\r\n }\r\n\r\n button:active &,\r\n a:active & {\r\n outline: none;\r\n background: var(--colorBgComplete);\r\n }\r\n }\r\n\r\n &:not(span) {\r\n cursor: pointer;\r\n\r\n &:focus-visible {\r\n outline: none;\r\n }\r\n\r\n &.focus-ring {\r\n outline: auto;\r\n outline-offset: 3px;\r\n outline-width: 2px;\r\n outline-style: solid;\r\n outline-color: var(--colorBgActive);\r\n }\r\n\r\n &:hover {\r\n border-color: var(--colorBorderActive, var(--colorBgActive));\r\n color: var(--colorFgActive);\r\n background-size: var(--bgSizeActive);\r\n }\r\n\r\n &:active {\r\n outline: none;\r\n color: var(--colorFgComplete);\r\n background: var(--colorBgComplete);\r\n }\r\n }\r\n`;\r\nexport const orangeSolidVars = css `\r\n --borderWidth: 2px;\r\n\r\n --bgSize: 100% 100%;\r\n --colorFg: ${brand.white};\r\n --colorBg: ${brand.white};\r\n --colorBorder: ${brand.primary.orange};\r\n\r\n --bgSizeActive: 0% 100%;\r\n --colorFgActive: ${brand.primary.orange};\r\n --colorBgActive: ${brand.primary.orange};\r\n --colorBorderActive: ${brand.primary.orange};\r\n\r\n --colorFgComplete: ${brand.primary.orange};\r\n --colorBgComplete: ${brand.primary.blueGrey};\r\n`;\r\nexport const blueSolidVars = css `\r\n --borderWidth: 2px;\r\n\r\n --bgSize: 100% 100%;\r\n --colorFg: ${brand.white};\r\n --colorBg: ${brand.white};\r\n --colorBorder: ${brand.primary.blue};\r\n\r\n --bgSizeActive: 0% 100%;\r\n --colorFgActive: ${brand.primary.blue};\r\n --colorBgActive: ${brand.primary.blue};\r\n --colorBorderActive: ${brand.primary.blue};\r\n\r\n --colorFgComplete: ${brand.primary.blue};\r\n --colorBgComplete: ${brand.primary.blueGrey};\r\n`;\r\nexport const whiteSolidVars = css `\r\n --borderWidth: 2px;\r\n\r\n --bgSize: 100% 100%;\r\n --colorFg: ${brand.primary.blue};\r\n --colorBg: transparent;\r\n --colorBorder: ${brand.white};\r\n\r\n --bgSizeActive: 0% 100%;\r\n --colorFgActive: ${brand.white};\r\n --colorBgActive: ${brand.white};\r\n --colorBorderActive: ${brand.white};\r\n\r\n --colorFgComplete: ${brand.white};\r\n --colorBgComplete: ${rgba(brand.white, 0.1)};\r\n`;\r\nexport const orangeOutlineVars = css `\r\n --borderWidth: 2px;\r\n\r\n --bgSize: 0% 100%;\r\n --colorFg: ${brand.primary.orange};\r\n --colorBg: transparent;\r\n --colorBorder: ${brand.primary.orange};\r\n\r\n --bgSizeActive: 100% 100%;\r\n --colorFgActive: ${brand.white};\r\n --colorBgActive: ${brand.primary.orange};\r\n --colorBorderActive: ${brand.primary.orange};\r\n\r\n --colorFgComplete: ${brand.primary.blue};\r\n --colorBgComplete: ${brand.primary.orange};\r\n`;\r\nexport const blueOutlineVars = css `\r\n --borderWidth: 2px;\r\n\r\n --bgSize: 0% 100%;\r\n --colorFg: ${brand.primary.blue};\r\n --colorBg: transparent;\r\n --colorBorder: ${brand.primary.blue};\r\n\r\n --bgSizeActive: 100% 100%;\r\n --colorFgActive: ${brand.white};\r\n --colorBgActive: ${brand.primary.blue};\r\n --colorBorderActive: ${brand.primary.blue};\r\n\r\n --colorFgComplete: ${brand.white};\r\n --colorBgComplete: ${brand.base.blue};\r\n`;\r\nexport const whiteOutlineVars = css `\r\n --borderWidth: 2px;\r\n\r\n --bgSize: 0% 100%;\r\n --colorFg: ${brand.white};\r\n --colorBg: transparent;\r\n --colorBorder: ${brand.white};\r\n\r\n --bgSizeActive: 100% 100%;\r\n --colorFgActive: ${brand.primary.blue};\r\n --colorBgActive: ${brand.white};\r\n --colorBorderActive: ${brand.white};\r\n\r\n --colorFgComplete: ${brand.primary.blue};\r\n --colorBgComplete: ${brand.primary.blueGrey};\r\n`;\r\nconst Container = styled.button `\r\n ${defaultButtonStyles}\r\n\r\n &[data-fill='right'] {\r\n background-position: left center;\r\n }\r\n\r\n &[data-fill='left'] {\r\n background-position: right center;\r\n }\r\n\r\n &[data-size='small'] {\r\n height: ${fluid(40, 40)};\r\n padding: 2px 14px 0;\r\n }\r\n\r\n &[data-type='orange-solid'] {\r\n ${orangeSolidVars}\r\n }\r\n\r\n &[data-type='blue-solid'] {\r\n ${blueSolidVars}\r\n }\r\n\r\n &[data-type='white-solid'] {\r\n ${whiteSolidVars}\r\n }\r\n\r\n &[data-type='orange-outline'] {\r\n ${orangeOutlineVars}\r\n }\r\n\r\n &[data-type='blue-outline'] {\r\n ${blueOutlineVars}\r\n }\r\n\r\n &[data-type='white-outline'] {\r\n ${whiteOutlineVars}\r\n }\r\n\r\n &[data-icon-only='true'] {\r\n height: ${fluid(40, 50)};\r\n width: ${fluid(40, 50)};\r\n justify-content: center;\r\n padding: 0;\r\n }\r\n\r\n /* Increase specificity to override :not(span) style */\r\n &:disabled:disabled:disabled {\r\n background-size: 100% 100%;\r\n opacity: 0.5;\r\n pointer-events: none;\r\n }\r\n\r\n @media print {\r\n display: none !important;\r\n }\r\n`;\r\nconst Text = styled.span `\r\n ${transition('color')};\r\n\r\n color: currentColor;\r\n ${fonts.apparat.semiBold};\r\n font-size: ${fluid(16, 18)};\r\n line-height: 1em;\r\n text-decoration: none;\r\n text-transform: uppercase;\r\n\r\n [data-icon-only='true'] & {\r\n ${srOnly};\r\n }\r\n`;\r\nconst IconWrapper = styled.div `\r\n ${transition('color')};\r\n\r\n --size: ${fluid(14, 20)};\r\n --spacing: 8px;\r\n\r\n display: flex;\r\n color: currentColor;\r\n height: var(--size);\r\n margin: -2px 0 0;\r\n padding: 0;\r\n flex-shrink: 0;\r\n\r\n [data-icon-position='left'] & {\r\n margin-right: auto;\r\n order: -1;\r\n padding-right: var(--spacing);\r\n }\r\n\r\n [data-icon-position='right'] & {\r\n margin-left: auto;\r\n order: 1;\r\n padding-left: var(--spacing);\r\n }\r\n\r\n [data-icon-only='true'] & {\r\n color: currentColor;\r\n height: var(--size);\r\n margin: 0;\r\n padding: 0;\r\n width: var(--size);\r\n }\r\n\r\n img,\r\n svg {\r\n display: block;\r\n width: var(--size);\r\n height: var(--size);\r\n transform: translateY(-10%);\r\n }\r\n`;\r\nconst ButtonImage = styled(Image) ``;\r\nconst ButtonStyles = {\r\n Container,\r\n IconWrapper,\r\n Text,\r\n ButtonImage,\r\n};\r\nexport default ButtonStyles;\r\n","import { getButtonIcon, isButtonIcon } from '@helpers/getButtonIcon';\r\nimport { imageUrl } from '@helpers/image';\r\nimport * as React from 'react';\r\nimport { FocusRing } from 'react-aria';\r\nimport S from '../Button/Button.styles';\r\nconst LinkButton = ({ buttonSize = 'default', buttonType = 'orange-solid', children, fillDirection = 'right', icon, iconOnly, iconPosition = 'left', ...otherProps }) => {\r\n return (React.createElement(FocusRing, { focusRingClass: \"focus-ring\" },\r\n React.createElement(S.Container, { as: \"a\", \"data-fill\": fillDirection, \"data-icon-only\": iconOnly, \"data-icon-position\": iconPosition, \"data-size\": buttonSize, \"data-type\": buttonType, ...otherProps },\r\n React.createElement(S.Text, null, children),\r\n icon && (React.createElement(S.IconWrapper, null, isButtonIcon(icon) ? (getButtonIcon(icon)) : (React.createElement(S.ButtonImage, { src: imageUrl(icon, {}), alt: icon.altText, loading: \"lazy\" })))))));\r\n};\r\nexport default LinkButton;\r\n","import * as React from 'react';\r\nconst Image = React.forwardRef(({ alt = '', ...props }, ref) => {\r\n return React.createElement(\"img\", { ref: ref, alt: alt, role: alt ? undefined : 'presentation', ...props });\r\n});\r\nImage.displayName = 'Image';\r\nexport default Image;\r\n","import { fluid } from '@helpers/fluid';\r\nimport { siteWide } from '@helpers/grid';\r\nimport styled from 'styled-components';\r\nconst Container = styled.section `\r\n --scrollOffset: var(--headerHeight, 0px);\r\n --sectionSpacing: ${fluid(40, 66)};\r\n\r\n &[data-spacing='margin'],\r\n &[data-spacing='padding'] {\r\n scroll-margin: calc(var(--scrollOffset) + var(--sectionSpacing)) 0 0;\r\n }\r\n\r\n &[data-spacing='margin'] {\r\n margin: var(--sectionSpacing) 0;\r\n }\r\n\r\n &[data-spacing='padding'] {\r\n padding: var(--sectionSpacing) 0;\r\n }\r\n\r\n &[data-spacing='none'] {\r\n scroll-margin: var(--scrollOffset) 0 0;\r\n }\r\n\r\n position: relative;\r\n z-index: 5;\r\n\r\n &[data-hide-overflow='true'] {\r\n overflow: hidden;\r\n }\r\n`;\r\nconst Inner = styled.div `\r\n ${siteWide}\r\n`;\r\nconst SectionWrapperStyles = {\r\n Container,\r\n Inner,\r\n};\r\nexport default SectionWrapperStyles;\r\n","import * as React from 'react';\r\nimport S from './SectionWrapper.styles';\r\nconst SectionWrapper = React.forwardRef(({ children, layout = 'default', spacing = 'margin', hideOverflow, id, ...otherProps }, ref) => {\r\n switch (layout) {\r\n case 'fullWidth':\r\n return (React.createElement(S.Container, { id: id ? id : undefined, ref: ref, \"data-spacing\": spacing, \"data-hide-overflow\": hideOverflow, ...otherProps }, children));\r\n case 'default':\r\n default:\r\n return (React.createElement(S.Container, { id: id ? id : undefined, ref: ref, \"data-spacing\": spacing, \"data-hide-overflow\": hideOverflow, ...otherProps },\r\n React.createElement(S.Inner, null, children)));\r\n }\r\n});\r\nSectionWrapper.displayName = 'SectionWrapper';\r\nexport default SectionWrapper;\r\n","import * as React from 'react';\n\nconst LEFT = \"Left\";\nconst RIGHT = \"Right\";\nconst UP = \"Up\";\nconst DOWN = \"Down\";\n\n/* global document */\nconst defaultProps = {\n delta: 10,\n preventScrollOnSwipe: false,\n rotationAngle: 0,\n trackMouse: false,\n trackTouch: true,\n swipeDuration: Infinity,\n touchEventOptions: { passive: true },\n};\nconst initialState = {\n first: true,\n initial: [0, 0],\n start: 0,\n swiping: false,\n xy: [0, 0],\n};\nconst mouseMove = \"mousemove\";\nconst mouseUp = \"mouseup\";\nconst touchEnd = \"touchend\";\nconst touchMove = \"touchmove\";\nconst touchStart = \"touchstart\";\nfunction getDirection(absX, absY, deltaX, deltaY) {\n if (absX > absY) {\n if (deltaX > 0) {\n return RIGHT;\n }\n return LEFT;\n }\n else if (deltaY > 0) {\n return DOWN;\n }\n return UP;\n}\nfunction rotateXYByAngle(pos, angle) {\n if (angle === 0)\n return pos;\n const angleInRadians = (Math.PI / 180) * angle;\n const x = pos[0] * Math.cos(angleInRadians) + pos[1] * Math.sin(angleInRadians);\n const y = pos[1] * Math.cos(angleInRadians) - pos[0] * Math.sin(angleInRadians);\n return [x, y];\n}\nfunction getHandlers(set, handlerProps) {\n const onStart = (event) => {\n const isTouch = \"touches\" in event;\n // if more than a single touch don't track, for now...\n if (isTouch && event.touches.length > 1)\n return;\n set((state, props) => {\n // setup mouse listeners on document to track swipe since swipe can leave container\n if (props.trackMouse && !isTouch) {\n document.addEventListener(mouseMove, onMove);\n document.addEventListener(mouseUp, onUp);\n }\n const { clientX, clientY } = isTouch ? event.touches[0] : event;\n const xy = rotateXYByAngle([clientX, clientY], props.rotationAngle);\n props.onTouchStartOrOnMouseDown &&\n props.onTouchStartOrOnMouseDown({ event });\n return Object.assign(Object.assign(Object.assign({}, state), initialState), { initial: xy.slice(), xy, start: event.timeStamp || 0 });\n });\n };\n const onMove = (event) => {\n set((state, props) => {\n const isTouch = \"touches\" in event;\n // Discount a swipe if additional touches are present after\n // a swipe has started.\n if (isTouch && event.touches.length > 1) {\n return state;\n }\n // if swipe has exceeded duration stop tracking\n if (event.timeStamp - state.start > props.swipeDuration) {\n return state.swiping ? Object.assign(Object.assign({}, state), { swiping: false }) : state;\n }\n const { clientX, clientY } = isTouch ? event.touches[0] : event;\n const [x, y] = rotateXYByAngle([clientX, clientY], props.rotationAngle);\n const deltaX = x - state.xy[0];\n const deltaY = y - state.xy[1];\n const absX = Math.abs(deltaX);\n const absY = Math.abs(deltaY);\n const time = (event.timeStamp || 0) - state.start;\n const velocity = Math.sqrt(absX * absX + absY * absY) / (time || 1);\n const vxvy = [deltaX / (time || 1), deltaY / (time || 1)];\n const dir = getDirection(absX, absY, deltaX, deltaY);\n // if swipe is under delta and we have not started to track a swipe: skip update\n const delta = typeof props.delta === \"number\"\n ? props.delta\n : props.delta[dir.toLowerCase()] ||\n defaultProps.delta;\n if (absX < delta && absY < delta && !state.swiping)\n return state;\n const eventData = {\n absX,\n absY,\n deltaX,\n deltaY,\n dir,\n event,\n first: state.first,\n initial: state.initial,\n velocity,\n vxvy,\n };\n // call onSwipeStart if present and is first swipe event\n eventData.first && props.onSwipeStart && props.onSwipeStart(eventData);\n // call onSwiping if present\n props.onSwiping && props.onSwiping(eventData);\n // track if a swipe is cancelable (handler for swiping or swiped(dir) exists)\n // so we can call preventDefault if needed\n let cancelablePageSwipe = false;\n if (props.onSwiping ||\n props.onSwiped ||\n props[`onSwiped${dir}`]) {\n cancelablePageSwipe = true;\n }\n if (cancelablePageSwipe &&\n props.preventScrollOnSwipe &&\n props.trackTouch &&\n event.cancelable) {\n event.preventDefault();\n }\n return Object.assign(Object.assign({}, state), { \n // first is now always false\n first: false, eventData, swiping: true });\n });\n };\n const onEnd = (event) => {\n set((state, props) => {\n let eventData;\n if (state.swiping && state.eventData) {\n // if swipe is less than duration fire swiped callbacks\n if (event.timeStamp - state.start < props.swipeDuration) {\n eventData = Object.assign(Object.assign({}, state.eventData), { event });\n props.onSwiped && props.onSwiped(eventData);\n const onSwipedDir = props[`onSwiped${eventData.dir}`];\n onSwipedDir && onSwipedDir(eventData);\n }\n }\n else {\n props.onTap && props.onTap({ event });\n }\n props.onTouchEndOrOnMouseUp && props.onTouchEndOrOnMouseUp({ event });\n return Object.assign(Object.assign(Object.assign({}, state), initialState), { eventData });\n });\n };\n const cleanUpMouse = () => {\n // safe to just call removeEventListener\n document.removeEventListener(mouseMove, onMove);\n document.removeEventListener(mouseUp, onUp);\n };\n const onUp = (e) => {\n cleanUpMouse();\n onEnd(e);\n };\n /**\n * The value of passive on touchMove depends on `preventScrollOnSwipe`:\n * - true => { passive: false }\n * - false => { passive: true } // Default\n *\n * NOTE: When preventScrollOnSwipe is true, we attempt to call preventDefault to prevent scroll.\n *\n * props.touchEventOptions can also be set for all touch event listeners,\n * but for `touchmove` specifically when `preventScrollOnSwipe` it will\n * supersede and force passive to false.\n *\n */\n const attachTouch = (el, props) => {\n let cleanup = () => { };\n if (el && el.addEventListener) {\n const baseOptions = Object.assign(Object.assign({}, defaultProps.touchEventOptions), props.touchEventOptions);\n // attach touch event listeners and handlers\n const tls = [\n [touchStart, onStart, baseOptions],\n // preventScrollOnSwipe option supersedes touchEventOptions.passive\n [\n touchMove,\n onMove,\n Object.assign(Object.assign({}, baseOptions), (props.preventScrollOnSwipe ? { passive: false } : {})),\n ],\n [touchEnd, onEnd, baseOptions],\n ];\n tls.forEach(([e, h, o]) => el.addEventListener(e, h, o));\n // return properly scoped cleanup method for removing listeners, options not required\n cleanup = () => tls.forEach(([e, h]) => el.removeEventListener(e, h));\n }\n return cleanup;\n };\n const onRef = (el) => {\n // \"inline\" ref functions are called twice on render, once with null then again with DOM element\n // ignore null here\n if (el === null)\n return;\n set((state, props) => {\n // if the same DOM el as previous just return state\n if (state.el === el)\n return state;\n const addState = {};\n // if new DOM el clean up old DOM and reset cleanUpTouch\n if (state.el && state.el !== el && state.cleanUpTouch) {\n state.cleanUpTouch();\n addState.cleanUpTouch = void 0;\n }\n // only attach if we want to track touch\n if (props.trackTouch && el) {\n addState.cleanUpTouch = attachTouch(el, props);\n }\n // store event attached DOM el for comparison, clean up, and re-attachment\n return Object.assign(Object.assign(Object.assign({}, state), { el }), addState);\n });\n };\n // set ref callback to attach touch event listeners\n const output = {\n ref: onRef,\n };\n // if track mouse attach mouse down listener\n if (handlerProps.trackMouse) {\n output.onMouseDown = onStart;\n }\n return [output, attachTouch];\n}\nfunction updateTransientState(state, props, previousProps, attachTouch) {\n // if trackTouch is off or there is no el, then remove handlers if necessary and exit\n if (!props.trackTouch || !state.el) {\n if (state.cleanUpTouch) {\n state.cleanUpTouch();\n }\n return Object.assign(Object.assign({}, state), { cleanUpTouch: undefined });\n }\n // trackTouch is on, so if there are no handlers attached, attach them and exit\n if (!state.cleanUpTouch) {\n return Object.assign(Object.assign({}, state), { cleanUpTouch: attachTouch(state.el, props) });\n }\n // trackTouch is on and handlers are already attached, so if preventScrollOnSwipe changes value,\n // remove and reattach handlers (this is required to update the passive option when attaching\n // the handlers)\n if (props.preventScrollOnSwipe !== previousProps.preventScrollOnSwipe ||\n props.touchEventOptions.passive !== previousProps.touchEventOptions.passive) {\n state.cleanUpTouch();\n return Object.assign(Object.assign({}, state), { cleanUpTouch: attachTouch(state.el, props) });\n }\n return state;\n}\nfunction useSwipeable(options) {\n const { trackMouse } = options;\n const transientState = React.useRef(Object.assign({}, initialState));\n const transientProps = React.useRef(Object.assign({}, defaultProps));\n // track previous rendered props\n const previousProps = React.useRef(Object.assign({}, transientProps.current));\n previousProps.current = Object.assign({}, transientProps.current);\n // update current render props & defaults\n transientProps.current = Object.assign(Object.assign({}, defaultProps), options);\n // Force defaults for config properties\n let defaultKey;\n for (defaultKey in defaultProps) {\n if (transientProps.current[defaultKey] === void 0) {\n transientProps.current[defaultKey] = defaultProps[defaultKey];\n }\n }\n const [handlers, attachTouch] = React.useMemo(() => getHandlers((stateSetter) => (transientState.current = stateSetter(transientState.current, transientProps.current)), { trackMouse }), [trackMouse]);\n transientState.current = updateTransientState(transientState.current, transientProps.current, previousProps.current, attachTouch);\n return handlers;\n}\n\nexport { DOWN, LEFT, RIGHT, UP, useSwipeable };\n//# sourceMappingURL=index.js.map\n","import brand from '@helpers/brand';\r\nimport { fluid } from '@helpers/fluid';\r\nimport fonts from '@helpers/fonts';\r\nimport { siteWide } from '@helpers/grid';\r\nimport { imageCoverContainer, imageWrapperRatioPadding } from '@helpers/image';\r\nimport { Device, from, until } from '@helpers/media';\r\nimport { paragraphMedium } from '@helpers/typography';\r\nimport { m } from 'framer-motion';\r\nimport styled from 'styled-components';\r\nconst Container = styled(m.article) `\r\n position: relative;\r\n min-height: ${fluid(280, 600)};\r\n grid-area: 1 / 1 / auto / auto;\r\n`;\r\nconst Inner = styled.div `\r\n ${siteWide};\r\n`;\r\nconst MediaWrapper = styled(m.div) `\r\n --clipPathOuter: polygon(0 0, 100% 64px, 100% 100%, 0% 100%);\r\n\r\n clip-path: var(--clipPathOuter);\r\n background: ${brand.white};\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n --clipPathOuter: polygon(130px 0%, 100% 0%, 100% 100%, 0% 100%);\r\n\r\n position: absolute;\r\n top: 0;\r\n right: 0;\r\n height: 100%;\r\n width: calc(100vw / 2);\r\n }\r\n\r\n @media ${until(Device.TabletLarge)} {\r\n position: relative;\r\n min-height: 280px;\r\n ${imageWrapperRatioPadding(768, 432)}\r\n }\r\n\r\n img {\r\n ${imageCoverContainer()}\r\n }\r\n`;\r\nconst MediaInner = styled.div `\r\n --clipPathInner: polygon(0 8px, 100% 72px, 100% 100%, 0% 100%);\r\n\r\n position: absolute;\r\n top: 0;\r\n right: 0;\r\n width: 100%;\r\n height: 100%;\r\n clip-path: var(--clipPathInner);\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n --clipPathInner: polygon(138px 0%, 100% 0%, 100% 100%, 8px 100%);\r\n\r\n width: calc(100vw / 2);\r\n }\r\n`;\r\nconst ContentWrapper = styled(m.div) `\r\n padding: ${fluid(32, 80)} 0;\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n padding-bottom: 110px;\r\n max-width: 50%;\r\n }\r\n`;\r\nconst Title = styled(m.h2) `\r\n ${fonts.apparat.medium}\r\n font-size: ${fluid(30, 50)};\r\n line-height: ${fluid(40, 60)};\r\n margin-bottom: ${fluid(24, 32)};\r\n max-width: 700px;\r\n`;\r\nconst Content = styled(m.p) `\r\n ${paragraphMedium};\r\n margin-bottom: ${fluid(32, 40)};\r\n max-width: 798px;\r\n`;\r\nconst CtaWrapper = styled(m.div) `\r\n display: flex;\r\n gap: 0 ${fluid(12, 16)};\r\n`;\r\nconst BannerItemStyles = {\r\n Container,\r\n Content,\r\n ContentWrapper,\r\n CtaWrapper,\r\n MediaWrapper,\r\n MediaInner,\r\n Inner,\r\n Title,\r\n};\r\nexport default BannerItemStyles;\r\n","import { getSrcs, imageUrl } from '@helpers/image';\r\nimport { Device, until } from '@helpers/media';\r\nimport LinkButton from '@stories/Components/Buttons/LinkButton/LinkButton';\r\nimport Image from '@stories/Components/Misc/Image/Image';\r\nimport { m, useReducedMotion } from 'framer-motion';\r\nimport * as React from 'react';\r\nimport S from './BannerItem.styles';\r\nimport { linkAria } from '@helpers/utils';\r\nconst BannerItem = ({ active, content, cta, cta2, image, index, title, translations, }) => {\r\n const reduceMotion = useReducedMotion();\r\n return (React.createElement(S.Container, { \"aria-current\": active, initial: index === 0 ? 'initial' : 'inactive', animate: active ? 'active' : 'inactive', variants: {\r\n inactive: {\r\n transition: {\r\n when: 'afterChildren',\r\n },\r\n transitionEnd: {\r\n display: 'none',\r\n },\r\n },\r\n active: {\r\n display: 'grid',\r\n },\r\n } },\r\n React.createElement(S.Inner, null,\r\n React.createElement(S.ContentWrapper, { variants: {\r\n inactive: {},\r\n active: {\r\n transition: {\r\n delayChildren: reduceMotion ? 0 : 0.5,\r\n staggerChildren: reduceMotion ? 0 : 0.15,\r\n },\r\n },\r\n } },\r\n React.createElement(S.Title, { as: index === 0 ? m.h1 : m.h2, variants: {\r\n initial: {\r\n opacity: 0,\r\n x: reduceMotion ? 0 : -20,\r\n },\r\n inactive: {\r\n opacity: 0,\r\n x: reduceMotion ? 0 : -20,\r\n },\r\n active: {\r\n opacity: 1,\r\n x: 0,\r\n },\r\n }, transition: {\r\n duration: 0.5,\r\n ease: 'easeOut',\r\n } }, title),\r\n content && (React.createElement(S.Content, { variants: {\r\n initial: {\r\n opacity: 0,\r\n x: reduceMotion ? 0 : -20,\r\n },\r\n inactive: {\r\n opacity: 0,\r\n x: reduceMotion ? 0 : -20,\r\n },\r\n active: {\r\n opacity: 1,\r\n x: 0,\r\n },\r\n }, transition: {\r\n duration: 0.5,\r\n ease: 'easeOut',\r\n } }, content)),\r\n (cta || cta2) && (React.createElement(S.CtaWrapper, { variants: {\r\n initial: {\r\n opacity: 0,\r\n x: reduceMotion ? 0 : -20,\r\n },\r\n inactive: {\r\n opacity: 0,\r\n x: reduceMotion ? 0 : -20,\r\n },\r\n active: {\r\n opacity: 1,\r\n x: 0,\r\n },\r\n }, transition: {\r\n duration: 0.5,\r\n ease: 'easeOut',\r\n } },\r\n cta.text && (React.createElement(LinkButton, { \"aria-label\": linkAria(cta.text ?? '', cta.target, translations && translations['lcci.link.newtab']), href: cta.url, target: cta.target }, cta.text)),\r\n cta2?.text && (React.createElement(LinkButton, { \"aria-label\": linkAria(cta2.text ?? '', cta2.target, translations && translations['lcci.link.newtab']), href: cta2.url, target: cta2.target, buttonType: \"white-outline\" }, cta2.text)))))),\r\n React.createElement(S.MediaWrapper, { variants: {\r\n inactive: {\r\n opacity: 1,\r\n zIndex: 0,\r\n transitionEnd: {\r\n opacity: 0,\r\n },\r\n },\r\n active: {\r\n opacity: 1,\r\n zIndex: 1,\r\n },\r\n }, transition: {\r\n duration: 0.5,\r\n ease: 'easeOut',\r\n } },\r\n React.createElement(S.MediaInner, null, image && (React.createElement(Image, { alt: image.altText ?? '', draggable: \"false\", loading: index === 0 ? 'eager' : 'lazy', role: !image.altText ? 'presentation' : undefined, sizes: `${until(Device.TabletLarge)} 100vw, 1026px`, src: imageUrl(image, { width: 1026 }), srcSet: getSrcs(image, 1026, 400, 5).join(',') }))))));\r\n};\r\nexport default BannerItem;\r\n","import brand from '@helpers/brand';\r\nimport { baseGrid, siteWide } from '@helpers/grid';\r\nimport SectionWrapper from '@stories/Components/Misc/SectionWrapper/SectionWrapper';\r\nimport styled from 'styled-components';\r\nconst Container = styled(SectionWrapper) `\r\n --accentColor: ${brand.primary.orange};\r\n --bgColor: ${brand.primary.blue};\r\n --fgColor: ${brand.white};\r\n\r\n position: relative;\r\n background: var(--bgColor);\r\n color: var(--fgColor);\r\n margin: 0;\r\n margin-bottom: var(--sectionSpacing);\r\n overflow: hidden;\r\n\r\n`;\r\nconst Inner = styled.div `\r\n ${siteWide}\r\n ${baseGrid}\r\n`;\r\nconst BannerItemList = styled.div `\r\n display: grid;\r\n grid-area: 1 / 1 / auto / auto;\r\n`;\r\nconst HomepageHeroBannerStyles = {\r\n BannerItemList,\r\n Container,\r\n Inner,\r\n};\r\nexport default HomepageHeroBannerStyles;\r\n","var _g;\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport * as React from \"react\";\n\nfunction SvgPause(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 7.5 11.5\"\n }, props), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n \"data-name\": \"Group 15329\",\n fill: \"none\",\n stroke: \"currentColor\",\n strokeLinecap: \"round\",\n strokeWidth: 1.5\n }, /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Line 71\",\n d: \"M.75.75v10\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Line 72\",\n d: \"M6.75.75v10\"\n }))));\n}\n\nexport default SvgPause;","var _path;\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport * as React from \"react\";\n\nfunction SvgPlay(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 100 100\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M31.9 84.1c-1 0-2-.3-3-.8-1.9-1.1-3-3.1-3-5.2V21.9c0-2.2 1.2-4.2 3-5.2 1.9-1.1 4.2-1 6 .1l46.8 28.1c1.8 1.1 2.9 3 2.9 5.1 0 2.1-1.1 4-2.9 5.1L35 83.2c-.9.6-2 .9-3.1.9z\",\n fill: \"currentColor\"\n })));\n}\n\nexport default SvgPlay;","import { transition } from '@helpers/animate';\r\nimport { ButtonReset } from '@helpers/global';\r\nimport { siteWide } from '@helpers/grid';\r\nimport { Device, until } from '@helpers/media';\r\nimport srOnly from '@helpers/srOnly';\r\nimport { m } from 'framer-motion';\r\nimport styled, { css } from 'styled-components';\r\nconst baseButtonStyle = css `\r\n --size: 30px;\r\n\r\n ${ButtonReset}\r\n display: inline-flex;\r\n align-items: center;\r\n justify-content: center;\r\n color: var(--fgColor);\r\n width: var(--size);\r\n height: var(--size);\r\n border: 1px solid currentColor;\r\n border-radius: 50%;\r\n margin-left: 4px;\r\n ${transition('color')}\r\n cursor: pointer;\r\n\r\n &:focus-visible {\r\n outline: 2px solid var(--accentColor);\r\n outline-offset: 2px;\r\n }\r\n\r\n &:hover,\r\n &:focus {\r\n color: var(--accentColor);\r\n }\r\n\r\n span {\r\n ${srOnly}\r\n }\r\n\r\n svg {\r\n width: 8px;\r\n }\r\n`;\r\nconst Pagination = styled.div `\r\n ${siteWide}\r\n position: absolute;\r\n left: 0;\r\n right: 0;\r\n bottom: 40px;\r\n display: flex;\r\n align-items: center;\r\n gap: 16px;\r\n\r\n @media ${until(Device.TabletLarge)} {\r\n &[data-hidden-mobile] {\r\n display: none;\r\n }\r\n }\r\n`;\r\nconst AutoplayButton = styled.button `\r\n ${baseButtonStyle}\r\n\r\n &[aria-current=\"true\"] {\r\n svg {\r\n width: 16px;\r\n }\r\n }\r\n`;\r\nconst SlideProgressIndicator = styled.div `\r\n position: relative;\r\n width: 16px;\r\n height: 6px;\r\n width: 100%;\r\n max-width: 264px;\r\n background-color: var(--fgColor);\r\n border-radius: 4px;\r\n margin-right: 8px;\r\n overflow: hidden;\r\n\r\n @media ${until(Device.DesktopSmall)} {\r\n max-width: 150px;\r\n }\r\n`;\r\nconst ProgressFill = styled(m.div) `\r\n position: absolute;\r\n top: 0;\r\n left: 0;\r\n width: 100%;\r\n height: 100%;\r\n background-color: var(--accentColor);\r\n transform: scaleX(0);\r\n transform-origin: left;\r\n\r\n transition: transform 0.1s ease-out;\r\n`;\r\nconst PaginationControls = styled.div `\r\n display: inline-flex;\r\n align-items: center;\r\n`;\r\nconst DotPagination = styled.div `\r\n display: inline-flex;\r\n align-items: center;\r\n gap: 16px;\r\n margin-right: 24px;\r\n`;\r\nconst DotButton = styled.button `\r\n ${ButtonReset}\r\n background-color: var(--fgColor);\r\n width: 18px;\r\n height: 3px;\r\n border-radius: 2px;\r\n\r\n &:focus-visible {\r\n outline: 2px solid var(--accentColor);\r\n outline-offset: 2px;\r\n }\r\n\r\n &:hover,\r\n &:focus,\r\n &[aria-current='true'] {\r\n background-color: var(--accentColor);\r\n }\r\n\r\n span {\r\n ${srOnly}\r\n }\r\n`;\r\nconst PaginationButton = styled.button `\r\n ${baseButtonStyle}\r\n`;\r\nconst PaginationStyles = {\r\n Pagination,\r\n AutoplayButton,\r\n SlideProgressIndicator,\r\n ProgressFill,\r\n PaginationControls,\r\n DotPagination,\r\n DotButton,\r\n PaginationButton,\r\n};\r\nexport default PaginationStyles;\r\n","import SvgChevronLeft from '@img/icons/chevron-left.svg';\r\nimport SvgChevronRight from '@img/icons/chevron-right.svg';\r\nimport SvgPause from '@img/icons/pause.svg';\r\nimport SvgPlay from '@img/icons/play.svg';\r\nimport * as React from 'react';\r\nimport S from './Pagination.styles';\r\nconst Pagination = ({ autoplay, activeIndex, count, hiddenMobile = true, loop = true, paused, setActiveIndex, setPaused, oldIndex, }) => {\r\n const isActiveAnimating = autoplay > 0 && !paused;\r\n return (React.createElement(S.Pagination, { \"data-hidden-mobile\": hiddenMobile },\r\n React.createElement(S.AutoplayButton, { \"aria-current\": paused, onClick: (event) => {\r\n event.preventDefault();\r\n setPaused(!paused);\r\n if (paused) {\r\n if (loop && activeIndex + 1 === count) {\r\n setActiveIndex(0);\r\n return;\r\n }\r\n setActiveIndex(Math.min(activeIndex + 1, count - 1));\r\n }\r\n } }, paused ? React.createElement(SvgPlay, null) : React.createElement(SvgPause, null)),\r\n React.createElement(S.SlideProgressIndicator, { \"aria-hidden\": true }, oldIndex !== activeIndex && (React.createElement(S.ProgressFill, { initial: { scaleX: 0 }, animate: { scaleX: isActiveAnimating ? 1 : 0 }, transition: { duration: isActiveAnimating ? autoplay / 1000 : 0, ease: 'linear' } }))),\r\n React.createElement(S.PaginationControls, null,\r\n React.createElement(S.DotPagination, { \"aria-label\": \"Slider Pagination\" }, Array.from(Array(count)).map((_, index) => (React.createElement(S.DotButton, { key: `DotPaginationItem_${index}`, \"aria-current\": index === activeIndex, \"aria-label\": `Go to ${index + 1}`, onClick: (event) => {\r\n event.preventDefault();\r\n setPaused(true);\r\n setActiveIndex(index);\r\n } },\r\n React.createElement(\"span\", null, index + 1))))),\r\n React.createElement(S.PaginationButton, { onClick: (event) => {\r\n event.preventDefault();\r\n setPaused(true);\r\n if (loop && activeIndex === 0) {\r\n setActiveIndex(count - 1);\r\n return;\r\n }\r\n setActiveIndex(Math.max(activeIndex - 1, 0));\r\n } },\r\n React.createElement(\"span\", null, \"Previous\"),\r\n React.createElement(SvgChevronLeft, null)),\r\n React.createElement(S.PaginationButton, { onClick: (event) => {\r\n event.preventDefault();\r\n setPaused(true);\r\n if (loop && activeIndex + 1 === count) {\r\n setActiveIndex(0);\r\n return;\r\n }\r\n setActiveIndex(Math.min(activeIndex + 1, count - 1));\r\n } },\r\n React.createElement(\"span\", null, \"Next\"),\r\n React.createElement(SvgChevronRight, null)))));\r\n};\r\nexport default Pagination;\r\n","import { withMotionMax } from '@hoc/withMotionMax';\r\nimport { useAutoplay } from '@hooks/useAutoplay';\r\nimport { useInView } from '@hooks/useInView';\r\nimport * as React from 'react';\r\nimport { useSwipeable } from 'react-swipeable';\r\nimport BannerItem from './BannerItem/BannerItem';\r\nimport S from './HomepageHeroBanner.styles';\r\nimport Pagination from './Pagination/Pagination';\r\nconst HomepageHeroBanner = ({ anchorId, autoplay = 0, id, items, translations, }) => {\r\n const [refContainer, inView] = useInView({}, true);\r\n const { activeIndex, paused, setActiveIndex, setPaused, oldIndex } = useAutoplay({\r\n enabled: autoplay > 0,\r\n duration: autoplay,\r\n items,\r\n });\r\n React.useEffect(() => {\r\n setPaused(!inView);\r\n }, [inView]);\r\n const swipeHandlers = useSwipeable({\r\n onSwipedLeft: () => {\r\n setActiveIndex(Math.min(activeIndex + 1, items.length - 1));\r\n },\r\n onSwipedRight: () => {\r\n setActiveIndex(Math.max(activeIndex - 1, 0));\r\n },\r\n });\r\n return (React.createElement(S.Container, { ...swipeHandlers, ref: (r) => {\r\n refContainer.current = r;\r\n swipeHandlers.ref(r);\r\n }, id: id ?? anchorId, layout: \"fullWidth\", spacing: \"none\" },\r\n React.createElement(S.BannerItemList, null, items.length > 0 &&\r\n items.map((item, index) => (React.createElement(BannerItem, { key: item.id, ...item, active: index === activeIndex, index: index, translations: translations })))),\r\n React.createElement(Pagination, { autoplay: autoplay, activeIndex: activeIndex, count: items.length, setActiveIndex: setActiveIndex, paused: paused, setPaused: setPaused, oldIndex: oldIndex })));\r\n};\r\nexport default withMotionMax(HomepageHeroBanner);\r\n","import * as React from 'react';\r\nexport function useAutoplay(params) {\r\n const refInterval = React.useRef();\r\n const [oldIndex, setOldIndex] = React.useState(-1);\r\n const [activeIndex, setActiveIndex] = React.useState(0);\r\n const [paused, setPaused] = React.useState(params.duration === 0);\r\n const activeItem = params.items.length > 0 ? params.items[activeIndex] : null;\r\n const activeItemDuration = activeItem?.duration ?? params.duration;\r\n React.useEffect(() => {\r\n if (params.enabled && !paused) {\r\n refInterval.current = window.setTimeout(update, activeItemDuration);\r\n }\r\n return cleanup;\r\n function update() {\r\n setOldIndex(activeIndex);\r\n if (paused) {\r\n return;\r\n }\r\n let newIndex = activeIndex + 1;\r\n if (newIndex === params.items.length) {\r\n newIndex = 0;\r\n }\r\n setActiveIndex(newIndex);\r\n }\r\n function cleanup() {\r\n if (refInterval.current) {\r\n window.clearInterval(refInterval.current);\r\n }\r\n }\r\n }, [activeIndex, activeItemDuration, paused, params.enabled]);\r\n return {\r\n activeIndex,\r\n duration: activeItemDuration,\r\n setActiveIndex,\r\n paused,\r\n setPaused,\r\n oldIndex,\r\n };\r\n}\r\n","\"use strict\";\nvar __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 __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\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};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar React = __importStar(require(\"react\"));\nvar unitConverter_1 = require(\"./helpers/unitConverter\");\nvar animation_1 = require(\"./helpers/animation\");\nvar puff = [\n (0, animation_1.createAnimation)(\"PuffLoader\", \"0% {transform: scale(0)} 100% {transform: scale(1.0)}\", \"puff-1\"),\n (0, animation_1.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: (0, unitConverter_1.cssValue)(size), height: (0, unitConverter_1.cssValue)(size) }, cssOverride);\n var style = function (i) {\n return {\n position: \"absolute\",\n height: (0, unitConverter_1.cssValue)(size),\n width: (0, unitConverter_1.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}\nexports.default = PuffLoader;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createAnimation = void 0;\nvar 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};\nexports.createAnimation = createAnimation;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.cssValue = exports.parseLengthAndUnit = void 0;\nvar 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 */\nfunction 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}\nexports.parseLengthAndUnit = parseLengthAndUnit;\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 */\nfunction cssValue(value) {\n var lengthWithunit = parseLengthAndUnit(value);\n return \"\".concat(lengthWithunit.value).concat(lengthWithunit.unit);\n}\nexports.cssValue = cssValue;\n"],"names":["_path","_extends","Object","assign","target","i","arguments","length","source","key","prototype","hasOwnProperty","call","apply","this","props","xmlns","viewBox","d","fill","ButtonReset","css","SiteWidth","SiteWidthBreakpoint","SitePaddingMax","SiteWidthNarrow","siteWide","baseGrid","cl","Cloudinary","cloud","cloudName","url","secure","imageUrl","image","imageParams","src","startsWith","clImage","resizeAction","width","height","crop","limitFill","pad","thumbnail","widthratio","aspectRatio","heightratio","gravity","focusOn","face","autoGravity","zoom","getResizeAction","resize","delivery","formatAction","format","autoFormat","getFormatAction","quality","autoQuality","dpr","toURL","getSrcs","upper","lower","steps","ratio","otherParams","sizes","getRange","map","size","getRetinaSrcs","dprs","increment","Array","_","index","Math","ceil","pdfUrl","imageWrapperPreserveRatio","imageWrapperRatioPadding","toFixed","imageCoverContainer","relative","headingStyles","fonts","fluid","from","Device","h2","h3","h4","h5","h6","paragraphStyles","paragraphLarge","paragraphMedium","paragraphSmall","paragraphMicro","meta","link","brand","transition","table","blockquote","SvgQuoteMarks","contentStyles","sleep","ms","Promise","resolve","setTimeout","highlightTitleWords","title","replaceAll","EMAIL_RULE","message","value","PHONE_NUMBER_RULE","NAME_RULE","PASSWORD_RULE","PASSWORD_RULES","POSTCODE_RULE","URL_RULE","clamp","max","min","validateNotWhitespaceOnly","trim","youTubeIdParser","match","linkAria","linkText","linkTarget","string","withMotionMax","WrappedComponent","displayName","name","ComponentWithMotionMax","React","LazyMotion","features","domMax","strict","callback","options","observerRef","useRef","rootRef","elementRef","useEffect","current","IntersectionObserver","root","observe","disconnect","useInView","reverse","isEditMode","inView","setInView","useState","useIntersectionObserver","entries","isIntersecting","defaultButtonStyles","until","orangeSolidVars","blueSolidVars","whiteSolidVars","rgba","orangeOutlineVars","blueOutlineVars","whiteOutlineVars","Container","styled","Text","srOnly","IconWrapper","ButtonImage","Image","buttonSize","buttonType","children","fillDirection","icon","iconOnly","iconPosition","otherProps","FocusRing","focusRingClass","S","as","isButtonIcon","getButtonIcon","alt","altText","loading","ref","role","undefined","Inner","SectionWrapper","layout","spacing","hideOverflow","id","defaultProps","delta","preventScrollOnSwipe","rotationAngle","trackMouse","trackTouch","swipeDuration","Infinity","touchEventOptions","passive","initialState","first","initial","start","swiping","xy","mouseMove","mouseUp","rotateXYByAngle","pos","angle","angleInRadians","PI","cos","sin","useSwipeable","transientState","transientProps","previousProps","defaultKey","handlers","attachTouch","set","handlerProps","onStart","event","isTouch","touches","state","document","addEventListener","onMove","onUp","clientX","clientY","onTouchStartOrOnMouseDown","slice","timeStamp","x","y","deltaX","deltaY","absX","abs","absY","time","velocity","sqrt","vxvy","dir","getDirection","toLowerCase","eventData","onSwipeStart","onSwiping","cancelablePageSwipe","onSwiped","cancelable","preventDefault","onEnd","onSwipedDir","onTap","onTouchEndOrOnMouseUp","e","removeEventListener","el","cleanup","baseOptions","tls","forEach","h","o","output","addState","cleanUpTouch","onMouseDown","getHandlers","stateSetter","updateTransientState","m","MediaWrapper","MediaInner","ContentWrapper","Title","Content","CtaWrapper","active","content","cta","cta2","translations","reduceMotion","useReducedMotion","animate","variants","inactive","when","transitionEnd","display","delayChildren","staggerChildren","opacity","duration","ease","text","LinkButton","href","zIndex","draggable","srcSet","join","BannerItemList","_g","stroke","strokeLinecap","strokeWidth","baseButtonStyle","Pagination","AutoplayButton","SlideProgressIndicator","ProgressFill","PaginationControls","DotPagination","DotButton","PaginationButton","autoplay","activeIndex","count","hiddenMobile","loop","paused","setActiveIndex","setPaused","oldIndex","isActiveAnimating","onClick","SvgPlay","SvgPause","scaleX","SvgChevronLeft","SvgChevronRight","anchorId","items","refContainer","params","refInterval","setOldIndex","activeItem","activeItemDuration","enabled","window","newIndex","clearInterval","useAutoplay","swipeHandlers","onSwipedLeft","onSwipedRight","r","item","BannerItem","__assign","t","s","n","p","__createBinding","create","k","k2","desc","getOwnPropertyDescriptor","__esModule","writable","configurable","enumerable","get","defineProperty","__setModuleDefault","v","__importStar","mod","result","__rest","indexOf","getOwnPropertySymbols","propertyIsEnumerable","exports","unitConverter_1","animation_1","puff","createAnimation","_a","_b","_c","color","_d","speedMultiplier","_e","cssOverride","_f","additionalprops","wrapper","position","cssValue","style","border","concat","borderRadius","top","left","animationFillMode","animation","animationDuration","animationIterationCount","animationTimingFunction","animationDelay","createElement","loaderName","frames","suffix","animationName","styleEl","head","appendChild","styleSheet","sheet","keyFrames","insertRule","parseLengthAndUnit","cssUnit","cm","mm","in","px","pt","pc","em","ex","ch","rem","vw","vh","vmin","vmax","unit","valueString","toString","includes","parseFloat","parseInt","console","warn","lengthWithunit"],"sourceRoot":""}