{"version":3,"sources":["webpack:///./src/hooks/useIntersectionObserver.ts","webpack:///./src/hooks/useInView.ts","webpack:///./src/stories/Components/SectionWrapper/SectionWrapper.tsx","webpack:///./node_modules/query-string/index.js","webpack:///./node_modules/framer-motion/dist/es/value/use-on-change.js","webpack:///./src/hoc/withMotion.tsx","webpack:///./src/img/logos/footer-rem-logo.svg","webpack:///./src/img/logos/logo-theshard.svg","webpack:///./src/img/icons/circle-arrow-up.svg","webpack:///./src/stories/Components/Footer/BackToTop/BackToTop.styles.ts","webpack:///./src/stories/Components/Footer/BackToTop/BackToTop.tsx","webpack:///./src/stories/Components/Footer/Shared/FooterShared.styles.ts","webpack:///./src/stories/Components/Footer/ContactDetails/ContactDetails.styles.ts","webpack:///./src/stories/Components/Footer/ContactDetails/ContactDetails.tsx","webpack:///./src/stories/Components/Footer/FooterLinks/FooterLinks.styles.ts","webpack:///./src/stories/Components/Footer/FooterLinks/FooterLinks.tsx","webpack:///./src/stories/Components/Footer/LegalLinks/LegalLinks.styles.ts","webpack:///./src/stories/Components/Footer/LegalLinks/LegalLinks.tsx","webpack:///./src/stories/Components/Footer/SocialLinks/SocialLinks.styles.ts","webpack:///./src/stories/Components/Footer/SocialLinks/SocialLinks.tsx","webpack:///./src/stories/Widgets/Footer/Footer.styles.ts","webpack:///./src/stories/Widgets/Footer/Footer.tsx","webpack:///./src/helpers/aspectRatio.ts","webpack:///./node_modules/strict-uri-encode/index.js","webpack:///./node_modules/decode-uri-component/index.js","webpack:///./node_modules/split-on-first/index.js","webpack:///./node_modules/filter-obj/index.js","webpack:///./node_modules/framer-motion/dist/es/utils/use-reduced-motion.js","webpack:///./src/stories/Components/SectionWrapper/SectionWrapper.styles.ts","webpack:///./src/img/icons/chevron-down.svg","webpack:///./src/helpers/image.ts"],"names":["useIntersectionObserver","callback","options","observerRef","useRef","rootRef","elementRef","useEffect","current","IntersectionObserver","root","observe","disconnect","JSON","stringify","useInView","reverse","isEditMode","inView","setInView","useState","entries","isIntersecting","SectionWrapper","React","children","className","flush","fullWidth","id","innerWidth","theme","otherProps","ref","S","Container","themeOption","SiteWide","width","displayName","strictUriEncode","decodeComponent","splitOnFirst","filterObject","encodeFragmentIdentifier","Symbol","validateArrayFormatSeparator","value","length","TypeError","encode","strict","encodeURIComponent","decode","removeHash","input","hashStart","indexOf","slice","extract","queryStart","parseValue","parseNumbers","Number","isNaN","trim","parseBooleans","toLowerCase","parse","query","Object","assign","sort","arrayFormat","arrayFormatSeparator","formatter","result","key","accumulator","exec","replace","undefined","concat","isArray","includes","isEncodedArray","newValue","split","map","item","test","arrayValue","parserForArrayFormat","ret","create","param","keys","k","reduce","Boolean","Array","keysSorter","a","b","exports","object","shouldFilter","skipNull","skipEmptyString","index","join","keyValueSep","encoderForArrayFormat","objectCopy","filter","x","parseUrl","url","url_","hash","parseFragmentIdentifier","fragmentIdentifier","stringifyUrl","queryFromUrl","parsedQueryFromUrl","queryString","getHash","pick","exclude","exclusionFilter","useOnChange","onChange","useMultiOnChange","values","handler","subscriptions","forEach","unsubscribe","withMotion","WrappedComponent","name","ComponentWithMotion","props","createElement","LazyMotion","features","domAnimation","_g","_extends","target","i","arguments","source","prototype","hasOwnProperty","call","apply","this","SvgFooterRemLogo","xmlns","height","fill","d","_path","SvgLogoTheshard","viewBox","SvgCircleArrowUp","transform","stroke","cx","cy","r","styled","div","Button","button","fonts","brown","regular","from","Device","MobileLarge","cssVar","Text","span","multicolouredTextBright","transition","Icon","BackToTop","shouldReduceMotion","useReducedMotion","type","onClick","event","preventDefault","window","scrollTo","behavior","left","top","as","Title","h3","light","multicolouredBackgroundBright","Tablet","TabletLarge","TitleIcon","TitleIconWrapper","m","section","FooterSharedStyles","ContentWrapper","ButtonStyles","TextWrapper","Content","content","cta","title","isOpened","setIsOpened","initial","animate","FS","variants","closed","rotate","opened","SvgChevronDown","dangerouslySetInnerHTML","__html","text","LinkButton","buttonType","href","List","ul","Item","li","Link","items","LegalLinks","StyledLink","img","Copyright","p","SocialLinks","copyright","alt","loading","src","icon","isActive","css","Image","TopSection","fadeIn","animation","easeInOutCubic","BottomSection","SiteWideStyles","ImageWrapper","DesktopSmall","aspectRatio","rgba","brand","black","fluid","BackToTopStyles","ContactDetailsStyles","FooterLinksStyles","SocialLinksStyles","LogoWrapper","LogoLink","Logo","LegalStatementWrapper","LegalLogo","LegalStatement","bold","contactDetails","footerLinks","image","legalLinks","legalLogoLinkUrl","legalStatement","socialLinks","refContainer","isInView","rootMargin","earlyRootMargin","media","sizes","srcSet","imageUrl","rmode","heightratio","draggable","role","SvgLogo","ContactDetails","footerLinkList","FooterLinks","rel","SvgRemLogo","imageWrapperPreserveRatio","imageCoverContainer","relative","module","str","charCodeAt","toString","toUpperCase","singleMatcher","RegExp","multiMatcher","decodeComponents","components","decodeURIComponent","err","right","tokens","match","encodedURI","replaceMap","customDecodeURIComponent","string","separator","separatorIndex","obj","predicate","isArr","val","prefersReducedMotion","matchMedia","motionMediaQuery_1","setReducedMotionPreferences","set","matches","addListener","initPrefersReducedMotion","_a","get","setShouldReduceMotion","setCssVar","DesktopLarge","themes","StyledSiteWide","strokeWidth","imageParams","imageSource","params","rxy","focalPoint","quality","getSrcs","upper","lower","steps","ratio","increment","_","Math","ceil","getRange","size"],"mappings":"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","file":"81-7ad4bfb2c9ae1d7457a8.js","sourcesContent":["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 }, [JSON.stringify(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 * as React from 'react';\r\nimport S from './SectionWrapper.styles';\r\nconst SectionWrapper = React.forwardRef(({ children, className, flush, fullWidth = false, id, innerWidth = 'default', theme = 'light', ...otherProps }, ref) => {\r\n return (React.createElement(S.Container, { ref: ref, id: id, className: className, flush: flush, themeOption: theme, \"data-theme\": theme, ...otherProps }, fullWidth ? children : React.createElement(S.SiteWide, { width: innerWidth }, children)));\r\n});\r\nSectionWrapper.displayName = 'SectionWrapper';\r\nexport default SectionWrapper;\r\n","'use strict';\nconst strictUriEncode = require('strict-uri-encode');\nconst decodeComponent = require('decode-uri-component');\nconst splitOnFirst = require('split-on-first');\nconst filterObject = require('filter-obj');\n\nconst isNullOrUndefined = value => value === null || value === undefined;\n\nconst encodeFragmentIdentifier = Symbol('encodeFragmentIdentifier');\n\nfunction encoderForArrayFormat(options) {\n\tswitch (options.arrayFormat) {\n\t\tcase 'index':\n\t\t\treturn key => (result, value) => {\n\t\t\t\tconst index = result.length;\n\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [...result, [encode(key, options), '[', index, ']'].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [\n\t\t\t\t\t...result,\n\t\t\t\t\t[encode(key, options), '[', encode(index, options), ']=', encode(value, options)].join('')\n\t\t\t\t];\n\t\t\t};\n\n\t\tcase 'bracket':\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [...result, [encode(key, options), '[]'].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [...result, [encode(key, options), '[]=', encode(value, options)].join('')];\n\t\t\t};\n\n\t\tcase 'comma':\n\t\tcase 'separator':\n\t\tcase 'bracket-separator': {\n\t\t\tconst keyValueSep = options.arrayFormat === 'bracket-separator' ?\n\t\t\t\t'[]=' :\n\t\t\t\t'=';\n\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\t// Translate null to an empty string so that it doesn't serialize as 'null'\n\t\t\t\tvalue = value === null ? '' : value;\n\n\t\t\t\tif (result.length === 0) {\n\t\t\t\t\treturn [[encode(key, options), keyValueSep, encode(value, options)].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [[result, encode(value, options)].join(options.arrayFormatSeparator)];\n\t\t\t};\n\t\t}\n\n\t\tdefault:\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [...result, encode(key, options)];\n\t\t\t\t}\n\n\t\t\t\treturn [...result, [encode(key, options), '=', encode(value, options)].join('')];\n\t\t\t};\n\t}\n}\n\nfunction parserForArrayFormat(options) {\n\tlet result;\n\n\tswitch (options.arrayFormat) {\n\t\tcase 'index':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /\\[(\\d*)\\]$/.exec(key);\n\n\t\t\t\tkey = key.replace(/\\[\\d*\\]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = {};\n\t\t\t\t}\n\n\t\t\t\taccumulator[key][result[1]] = value;\n\t\t\t};\n\n\t\tcase 'bracket':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /(\\[\\])$/.exec(key);\n\t\t\t\tkey = key.replace(/\\[\\]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = [value];\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], value);\n\t\t\t};\n\n\t\tcase 'comma':\n\t\tcase 'separator':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tconst isArray = typeof value === 'string' && value.includes(options.arrayFormatSeparator);\n\t\t\t\tconst isEncodedArray = (typeof value === 'string' && !isArray && decode(value, options).includes(options.arrayFormatSeparator));\n\t\t\t\tvalue = isEncodedArray ? decode(value, options) : value;\n\t\t\t\tconst newValue = isArray || isEncodedArray ? value.split(options.arrayFormatSeparator).map(item => decode(item, options)) : value === null ? value : decode(value, options);\n\t\t\t\taccumulator[key] = newValue;\n\t\t\t};\n\n\t\tcase 'bracket-separator':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tconst isArray = /(\\[\\])$/.test(key);\n\t\t\t\tkey = key.replace(/\\[\\]$/, '');\n\n\t\t\t\tif (!isArray) {\n\t\t\t\t\taccumulator[key] = value ? decode(value, options) : value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst arrayValue = value === null ?\n\t\t\t\t\t[] :\n\t\t\t\t\tvalue.split(options.arrayFormatSeparator).map(item => decode(item, options));\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = arrayValue;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], arrayValue);\n\t\t\t};\n\n\t\tdefault:\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], value);\n\t\t\t};\n\t}\n}\n\nfunction validateArrayFormatSeparator(value) {\n\tif (typeof value !== 'string' || value.length !== 1) {\n\t\tthrow new TypeError('arrayFormatSeparator must be single character string');\n\t}\n}\n\nfunction encode(value, options) {\n\tif (options.encode) {\n\t\treturn options.strict ? strictUriEncode(value) : encodeURIComponent(value);\n\t}\n\n\treturn value;\n}\n\nfunction decode(value, options) {\n\tif (options.decode) {\n\t\treturn decodeComponent(value);\n\t}\n\n\treturn value;\n}\n\nfunction keysSorter(input) {\n\tif (Array.isArray(input)) {\n\t\treturn input.sort();\n\t}\n\n\tif (typeof input === 'object') {\n\t\treturn keysSorter(Object.keys(input))\n\t\t\t.sort((a, b) => Number(a) - Number(b))\n\t\t\t.map(key => input[key]);\n\t}\n\n\treturn input;\n}\n\nfunction removeHash(input) {\n\tconst hashStart = input.indexOf('#');\n\tif (hashStart !== -1) {\n\t\tinput = input.slice(0, hashStart);\n\t}\n\n\treturn input;\n}\n\nfunction getHash(url) {\n\tlet hash = '';\n\tconst hashStart = url.indexOf('#');\n\tif (hashStart !== -1) {\n\t\thash = url.slice(hashStart);\n\t}\n\n\treturn hash;\n}\n\nfunction extract(input) {\n\tinput = removeHash(input);\n\tconst queryStart = input.indexOf('?');\n\tif (queryStart === -1) {\n\t\treturn '';\n\t}\n\n\treturn input.slice(queryStart + 1);\n}\n\nfunction parseValue(value, options) {\n\tif (options.parseNumbers && !Number.isNaN(Number(value)) && (typeof value === 'string' && value.trim() !== '')) {\n\t\tvalue = Number(value);\n\t} else if (options.parseBooleans && value !== null && (value.toLowerCase() === 'true' || value.toLowerCase() === 'false')) {\n\t\tvalue = value.toLowerCase() === 'true';\n\t}\n\n\treturn value;\n}\n\nfunction parse(query, options) {\n\toptions = Object.assign({\n\t\tdecode: true,\n\t\tsort: true,\n\t\tarrayFormat: 'none',\n\t\tarrayFormatSeparator: ',',\n\t\tparseNumbers: false,\n\t\tparseBooleans: false\n\t}, options);\n\n\tvalidateArrayFormatSeparator(options.arrayFormatSeparator);\n\n\tconst formatter = parserForArrayFormat(options);\n\n\t// Create an object with no prototype\n\tconst ret = Object.create(null);\n\n\tif (typeof query !== 'string') {\n\t\treturn ret;\n\t}\n\n\tquery = query.trim().replace(/^[?#&]/, '');\n\n\tif (!query) {\n\t\treturn ret;\n\t}\n\n\tfor (const param of query.split('&')) {\n\t\tif (param === '') {\n\t\t\tcontinue;\n\t\t}\n\n\t\tlet [key, value] = splitOnFirst(options.decode ? param.replace(/\\+/g, ' ') : param, '=');\n\n\t\t// Missing `=` should be `null`:\n\t\t// http://w3.org/TR/2012/WD-url-20120524/#collect-url-parameters\n\t\tvalue = value === undefined ? null : ['comma', 'separator', 'bracket-separator'].includes(options.arrayFormat) ? value : decode(value, options);\n\t\tformatter(decode(key, options), value, ret);\n\t}\n\n\tfor (const key of Object.keys(ret)) {\n\t\tconst value = ret[key];\n\t\tif (typeof value === 'object' && value !== null) {\n\t\t\tfor (const k of Object.keys(value)) {\n\t\t\t\tvalue[k] = parseValue(value[k], options);\n\t\t\t}\n\t\t} else {\n\t\t\tret[key] = parseValue(value, options);\n\t\t}\n\t}\n\n\tif (options.sort === false) {\n\t\treturn ret;\n\t}\n\n\treturn (options.sort === true ? Object.keys(ret).sort() : Object.keys(ret).sort(options.sort)).reduce((result, key) => {\n\t\tconst value = ret[key];\n\t\tif (Boolean(value) && typeof value === 'object' && !Array.isArray(value)) {\n\t\t\t// Sort object keys, not values\n\t\t\tresult[key] = keysSorter(value);\n\t\t} else {\n\t\t\tresult[key] = value;\n\t\t}\n\n\t\treturn result;\n\t}, Object.create(null));\n}\n\nexports.extract = extract;\nexports.parse = parse;\n\nexports.stringify = (object, options) => {\n\tif (!object) {\n\t\treturn '';\n\t}\n\n\toptions = Object.assign({\n\t\tencode: true,\n\t\tstrict: true,\n\t\tarrayFormat: 'none',\n\t\tarrayFormatSeparator: ','\n\t}, options);\n\n\tvalidateArrayFormatSeparator(options.arrayFormatSeparator);\n\n\tconst shouldFilter = key => (\n\t\t(options.skipNull && isNullOrUndefined(object[key])) ||\n\t\t(options.skipEmptyString && object[key] === '')\n\t);\n\n\tconst formatter = encoderForArrayFormat(options);\n\n\tconst objectCopy = {};\n\n\tfor (const key of Object.keys(object)) {\n\t\tif (!shouldFilter(key)) {\n\t\t\tobjectCopy[key] = object[key];\n\t\t}\n\t}\n\n\tconst keys = Object.keys(objectCopy);\n\n\tif (options.sort !== false) {\n\t\tkeys.sort(options.sort);\n\t}\n\n\treturn keys.map(key => {\n\t\tconst value = object[key];\n\n\t\tif (value === undefined) {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (value === null) {\n\t\t\treturn encode(key, options);\n\t\t}\n\n\t\tif (Array.isArray(value)) {\n\t\t\tif (value.length === 0 && options.arrayFormat === 'bracket-separator') {\n\t\t\t\treturn encode(key, options) + '[]';\n\t\t\t}\n\n\t\t\treturn value\n\t\t\t\t.reduce(formatter(key), [])\n\t\t\t\t.join('&');\n\t\t}\n\n\t\treturn encode(key, options) + '=' + encode(value, options);\n\t}).filter(x => x.length > 0).join('&');\n};\n\nexports.parseUrl = (url, options) => {\n\toptions = Object.assign({\n\t\tdecode: true\n\t}, options);\n\n\tconst [url_, hash] = splitOnFirst(url, '#');\n\n\treturn Object.assign(\n\t\t{\n\t\t\turl: url_.split('?')[0] || '',\n\t\t\tquery: parse(extract(url), options)\n\t\t},\n\t\toptions && options.parseFragmentIdentifier && hash ? {fragmentIdentifier: decode(hash, options)} : {}\n\t);\n};\n\nexports.stringifyUrl = (object, options) => {\n\toptions = Object.assign({\n\t\tencode: true,\n\t\tstrict: true,\n\t\t[encodeFragmentIdentifier]: true\n\t}, options);\n\n\tconst url = removeHash(object.url).split('?')[0] || '';\n\tconst queryFromUrl = exports.extract(object.url);\n\tconst parsedQueryFromUrl = exports.parse(queryFromUrl, {sort: false});\n\n\tconst query = Object.assign(parsedQueryFromUrl, object.query);\n\tlet queryString = exports.stringify(query, options);\n\tif (queryString) {\n\t\tqueryString = `?${queryString}`;\n\t}\n\n\tlet hash = getHash(object.url);\n\tif (object.fragmentIdentifier) {\n\t\thash = `#${options[encodeFragmentIdentifier] ? encode(object.fragmentIdentifier, options) : object.fragmentIdentifier}`;\n\t}\n\n\treturn `${url}${queryString}${hash}`;\n};\n\nexports.pick = (input, filter, options) => {\n\toptions = Object.assign({\n\t\tparseFragmentIdentifier: true,\n\t\t[encodeFragmentIdentifier]: false\n\t}, options);\n\n\tconst {url, query, fragmentIdentifier} = exports.parseUrl(input, options);\n\treturn exports.stringifyUrl({\n\t\turl,\n\t\tquery: filterObject(query, filter),\n\t\tfragmentIdentifier\n\t}, options);\n};\n\nexports.exclude = (input, filter, options) => {\n\tconst exclusionFilter = Array.isArray(filter) ? key => !filter.includes(key) : (key, value) => !filter(key, value);\n\n\treturn exports.pick(input, exclusionFilter, options);\n};\n","import { useEffect } from 'react';\nimport { isMotionValue } from './utils/is-motion-value.js';\n\nfunction useOnChange(value, callback) {\n useEffect(function () {\n if (isMotionValue(value))\n return value.onChange(callback);\n }, [callback]);\n}\nfunction useMultiOnChange(values, handler) {\n useEffect(function () {\n var subscriptions = values.map(function (value) { return value.onChange(handler); });\n return function () { return subscriptions.forEach(function (unsubscribe) { return unsubscribe(); }); };\n });\n}\n\nexport { useMultiOnChange, useOnChange };\n","import { domAnimation, LazyMotion } from 'framer-motion';\r\nimport React from 'react';\r\nexport function withMotion(WrappedComponent) {\r\n const displayName = WrappedComponent.displayName || WrappedComponent.name || 'Component';\r\n const ComponentWithMotion = (props) => {\r\n return (React.createElement(LazyMotion, { features: domAnimation, strict: true },\r\n React.createElement(WrappedComponent, { ...props })));\r\n };\r\n ComponentWithMotion.displayName = `withMotion(${displayName})`;\r\n return ComponentWithMotion;\r\n}\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 SvgFooterRemLogo(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 108.001,\n height: 29.465\n }, props), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n \"data-name\": \"Group 34102\",\n fill: \"#fff\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 1\",\n d: \"M35.377 4.7c0-3.06-.68-3.147-4.3-3.888V.068H43.11c5.188 0 9.482 1.267 9.482 7.558 0 4.978-3.614 6.594-7.355 7.119l8.588 14.72h-4.158l-8.462-14.459h-2.128v14.459h-3.7zm3.7 8.6h1.148c3.019 0 8.207 0 8.207-6.116 0-4.15-3.018-5.417-6.336-5.417-2.849 0-3.019.351-3.019 2.929z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 2\",\n d: \"M57.616 4.654c0-2.49-.594-3.32-4.293-3.845V.066h20.068l.214 5.33h-1.319c-.426-2.272-.383-3.625-3.912-3.625h-4.465c-2.424 0-2.594.525-2.594 2.884v8.6h5.4c3.528 0 3.826-1.572 4.167-3.625h.976v9.042h-.976c-.427-2.534-.555-3.714-4.167-3.714h-5.4v10.265c0 2.533.383 2.533 3.485 2.533h4.594c2.891 0 3.1-.917 3.7-4.236h1.317l-.3 5.94h-16.5z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 3\",\n d: \"M80.873 5.221c0-3.495-.511-3.626-4.251-4.412V.066h9.31l8.421 25.116h.084L102.854.066H108v29.4h-3.7V2.382h-.085l-8.889 27.082h-3.315L83.165 2.382h-.084v27.082h-2.21z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 4\",\n d: \"M28.587 4.524A4.478 4.478 0 0024.187 0H0v24.843a4.478 4.478 0 004.4 4.524h24.183zM7.898 27.801a3.549 3.549 0 01-3.49-3.585V4.532h19.167a3.551 3.551 0 013.491 3.585v19.688H7.898z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 5\",\n d: \"M21.027 14.501h-6.906v7.1a1.283 1.283 0 001.259 1.293h6.909v-7.1a1.278 1.278 0 00-1.257-1.292\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 6\",\n d: \"M23.056 7.758H7.631v15.849a2.857 2.857 0 002.809 2.884h15.425V10.643a2.858 2.858 0 00-2.809-2.885M12.931 24.22a2 2 0 01-1.959-2.014V11.162h10.755a1.993 1.993 0 011.958 2.014V24.22H12.931z\"\n }))));\n}\n\nexport default __webpack_public_path__ + \"footer-rem-logo-ff132d4d7206be3f0af90942fa610b58.svg\";\nexport { SvgFooterRemLogo as ReactComponent };","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 SvgLogoTheshard(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 223.58 41.818\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"currentColor\",\n d: \"M208.275 40.122c3.818 0 6.641-.769 8.884-2.421a12.767 12.767 0 000-20.293c-2.245-1.653-5.067-2.422-8.885-2.422h-6.283v25.136zm-7.689 1.308V13.678h7.767c4.154 0 7.117.807 9.605 2.618a14.082 14.082 0 010 22.514c-2.491 1.812-5.453 2.62-9.606 2.62zM183.385 26.834a6.1 6.1 0 004.2-1.247 5.947 5.947 0 001.81-4.153v-.907a6 6 0 00-1.817-4.3 6.1 6.1 0 00-4.2-1.243h-7.9v11.85zm9.161 14.593l-11.345-13.285h-5.711v13.292h-1.4V13.677h9.378a7.5 7.5 0 014.945 1.465 7.157 7.157 0 012.391 5.387v.921a7.081 7.081 0 01-2.391 5.231 7.5 7.5 0 01-4.944 1.464h-.512l11.345 13.285zM135.615 41.434V28.145h-19.4v13.289h-1.4V13.678h1.4v13.156h19.4V13.678h1.4v27.756zM98.314 41.817a10.128 10.128 0 01-8.969-4.784l-.17-.242 1.133-.839.179.278a8.868 8.868 0 007.866 4.279c4.359 0 6.639-3.045 6.639-6.054 0-2.595-1.326-4.375-4.3-5.774-.807-.365-1.7-.7-2.563-1.028-3.729-1.409-7.584-2.865-7.584-7.351 0-5.109 4.716-7.013 7.689-7.013a9.481 9.481 0 016.892 2.8l.211.208-.936 1-.226-.234a7.973 7.973 0 00-5.941-2.465 5.881 5.881 0 00-6.286 5.705c0 3.636 3.226 4.839 6.641 6.113.853.318 1.735.647 2.56 1.016 2.25.97 5.246 2.755 5.246 7.025s-3.4 7.362-8.082 7.362M57.317 41.434V13.678h14.751v1.308H58.72v11.848h10.6v1.308h-10.6v11.976h13.741v1.316zM47.7 41.434V28.145H28.3v13.289h-1.4V13.678h1.4v13.156h19.4V13.678h1.4v27.756zM8.637 41.433V14.986H0v-1.308h18.676v1.308h-8.637v26.447zM165.622 41.43l-3.424-13.283h-12.88l-3.426 13.283h-1.447L155.137 0h1.442l-6.9 26.766h12.169l-5.1-19.808h1.447l8.879 34.471z\"\n })));\n}\n\nexport default __webpack_public_path__ + \"logo-theshard-c509e0fc5b7c4b709491bd6e4ce06b97.svg\";\nexport { SvgLogoTheshard as ReactComponent };","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 SvgCircleArrowUp(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 22,\n height: 22\n }, props), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n \"data-name\": \"Group 32518\"\n }, /*#__PURE__*/React.createElement(\"g\", {\n \"data-name\": \"Ellipse 38\",\n transform: \"rotate(-90 11 11)\",\n fill: \"none\",\n stroke: \"#fff\"\n }, /*#__PURE__*/React.createElement(\"circle\", {\n cx: 11,\n cy: 11,\n r: 11,\n stroke: \"none\"\n }), /*#__PURE__*/React.createElement(\"circle\", {\n cx: 11,\n cy: 11,\n r: 10.5\n })), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Polygon 17\",\n d: \"M11 6l4 7H7z\",\n fill: \"#fff\"\n }))));\n}\n\nexport default __webpack_public_path__ + \"circle-arrow-up-2a1ff185cf2dacb8b9ac329ec8e39b5c.svg\";\nexport { SvgCircleArrowUp as ReactComponent };","import { multicolouredTextBright, transition } from '@helpers/animation';\r\nimport { cssVar } from '@helpers/cssVar';\r\nimport fonts from '@helpers/fonts';\r\nimport { Device, from } from '@helpers/media';\r\nimport styled from 'styled-components';\r\nconst Container = styled.div ``;\r\nconst Button = styled.button `\r\n display: inline-flex;\r\n align-items: center;\r\n background: none;\r\n border: 0;\r\n color: currentColor;\r\n ${fonts.brown.regular};\r\n font-size: 12px;\r\n line-height: 18px;\r\n text-transform: uppercase;\r\n transition: color 0.15s ease-out;\r\n\r\n @media ${from(Device.MobileLarge)} {\r\n font-size: 16px;\r\n line-height: 22px;\r\n }\r\n\r\n &:focus,\r\n &:hover {\r\n color: ${cssVar('accentColor')};\r\n }\r\n\r\n [data-footer-theme='shard-lights'] & {\r\n &:focus,\r\n &:hover {\r\n transition-delay: 0.1s;\r\n color: transparent;\r\n\r\n > span::before {\r\n opacity: 1;\r\n }\r\n }\r\n }\r\n`;\r\nconst Text = styled.span `\r\n [data-footer-theme='shard-lights'] & {\r\n position: relative;\r\n\r\n &::before {\r\n ${multicolouredTextBright};\r\n ${transition('opacity')};\r\n\r\n content: 'Back to the Top';\r\n opacity: 0;\r\n position: absolute;\r\n top: 0;\r\n left: 0;\r\n }\r\n }\r\n`;\r\nconst Icon = styled.span `\r\n margin: 0 0 0 16px;\r\n`;\r\nexport default {\r\n Button,\r\n Container,\r\n Icon,\r\n Text,\r\n};\r\n","import { ReactComponent as SvgCircleArrowUp } from '@img/icons/circle-arrow-up.svg';\r\nimport { useReducedMotion } from 'framer-motion';\r\nimport React from 'react';\r\nimport S from './BackToTop.styles';\r\nconst BackToTop = () => {\r\n const shouldReduceMotion = useReducedMotion();\r\n return (React.createElement(S.Container, null,\r\n React.createElement(S.Button, { type: \"button\", onClick: (event) => {\r\n event.preventDefault();\r\n window.scrollTo({\r\n behavior: shouldReduceMotion ? 'auto' : 'smooth',\r\n left: 0,\r\n top: 0,\r\n });\r\n } },\r\n React.createElement(S.Text, null, \"Back to the Top\"),\r\n React.createElement(S.Icon, { as: SvgCircleArrowUp, \"aria-hidden\": true }))));\r\n};\r\nexport default BackToTop;\r\n","import { multicolouredBackgroundBright } from '@helpers/animation';\r\nimport { cssVar } from '@helpers/cssVar';\r\nimport fonts from '@helpers/fonts';\r\nimport { Device, from } from '@helpers/media';\r\nimport { m } from 'framer-motion';\r\nimport styled from 'styled-components';\r\nconst Title = styled.h3 `\r\n position: relative;\r\n display: flex;\r\n align-items: center;\r\n flex-direction: row;\r\n ${fonts.brown.light};\r\n font-size: 18px;\r\n justify-content: center;\r\n line-height: 28px;\r\n margin: 0 0 24px;\r\n padding: 0 0 12px;\r\n text-align: center;\r\n text-transform: uppercase;\r\n width: 100%;\r\n\r\n &::after {\r\n content: '';\r\n position: absolute;\r\n bottom: 0;\r\n left: 50%;\r\n background: ${cssVar('accentColor')};\r\n height: 2px;\r\n margin: 0;\r\n transform: translateX(-50%);\r\n width: 120px;\r\n\r\n [data-footer-theme='shard-lights'] & {\r\n ${multicolouredBackgroundBright};\r\n }\r\n }\r\n\r\n @media ${from(Device.Tablet)} {\r\n align-items: flex-start;\r\n justify-content: flex-start;\r\n text-align: left;\r\n\r\n &::after {\r\n left: 0;\r\n transform: none;\r\n width: 110px;\r\n }\r\n }\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n font-size: 24px;\r\n line-height: 32px;\r\n }\r\n`;\r\nconst TitleIcon = styled.span `\r\n display: block;\r\n height: 9px;\r\n width: 14px;\r\n`;\r\nconst TitleIconWrapper = styled(m.span) `\r\n display: inline-block;\r\n margin: 0 0 0 10px;\r\n transform-origin: center center;\r\n\r\n @media ${from(Device.Tablet)} {\r\n display: none;\r\n }\r\n`;\r\nexport default {\r\n Title,\r\n TitleIcon,\r\n TitleIconWrapper,\r\n};\r\n","import { multicolouredBackgroundBright } from '@helpers/animation';\r\nimport fonts from '@helpers/fonts';\r\nimport { Device, from } from '@helpers/media';\r\nimport { ButtonStyles } from '@stories/Components/Buttons/GeneralButton/Button.styles';\r\nimport { m } from 'framer-motion';\r\nimport styled from 'styled-components';\r\nimport FooterSharedStyles from '../Shared/FooterShared.styles';\r\nconst Container = styled(m.section) ``;\r\nconst Title = styled(FooterSharedStyles.Title) ``;\r\nconst TitleIcon = styled(FooterSharedStyles.TitleIcon) ``;\r\nconst ContentWrapper = styled(m.div) `\r\n overflow: hidden;\r\n\r\n @media ${from(Device.Tablet)} {\r\n height: auto !important;\r\n }\r\n\r\n [data-footer-theme='shard-lights'] & {\r\n ${ButtonStyles.TextWrapper} {\r\n ${multicolouredBackgroundBright};\r\n }\r\n }\r\n`;\r\nconst Content = styled.div `\r\n display: block;\r\n margin: 0 0 24px;\r\n ${fonts.brown.light};\r\n font-size: 20px;\r\n line-height: 30px;\r\n text-align: center;\r\n\r\n @media ${from(Device.Tablet)} {\r\n height: auto !important;\r\n text-align: left;\r\n }\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n font-size: 16px;\r\n line-height: 28px;\r\n }\r\n`;\r\nexport default {\r\n Container,\r\n Content,\r\n ContentWrapper,\r\n Title,\r\n TitleIcon,\r\n};\r\n","import { withMotion } from '@hoc/withMotion';\r\nimport { ReactComponent as SvgChevronDown } from '@img/icons/chevron-down.svg';\r\nimport { LinkButton } from '@stories/Components/Buttons/GeneralButton/Button';\r\nimport * as React from 'react';\r\nimport FS from '../Shared/FooterShared.styles';\r\nimport S from './ContactDetails.styles';\r\nconst ContactDetails = ({ content, cta, title }) => {\r\n const [isOpened, setIsOpened] = React.useState(true);\r\n return (React.createElement(S.Container, { initial: \"closed\", animate: isOpened ? 'opened' : 'closed' },\r\n title && (React.createElement(FS.Title, { onClick: () => {\r\n setIsOpened(!isOpened);\r\n } },\r\n title,\r\n React.createElement(FS.TitleIconWrapper, { variants: {\r\n closed: { rotate: 0 },\r\n opened: { rotate: 180 },\r\n } },\r\n React.createElement(FS.TitleIcon, { as: SvgChevronDown })))),\r\n React.createElement(S.ContentWrapper, { variants: {\r\n closed: { height: 0 },\r\n opened: { height: 'auto' },\r\n } },\r\n content && React.createElement(S.Content, { dangerouslySetInnerHTML: { __html: content } }),\r\n cta?.text && (React.createElement(LinkButton, { buttonType: \"orange\", href: cta.url, target: cta.target, title: cta.text })))));\r\n};\r\nexport default withMotion(ContactDetails);\r\n","import fonts from '@helpers/fonts';\r\nimport { Device, from } from '@helpers/media';\r\nimport Link from '@stories/Components/Link/Link';\r\nimport { m } from 'framer-motion';\r\nimport styled from 'styled-components';\r\nconst Container = styled(m.section) ``;\r\nconst List = styled(m.ul) `\r\n margin: 0 0 24px;\r\n overflow: hidden;\r\n\r\n @media ${from(Device.Tablet)} {\r\n height: auto !important;\r\n }\r\n`;\r\nconst Item = styled.li `\r\n display: block;\r\n margin: 0;\r\n`;\r\nconst StyledLink = styled(Link) `\r\n display: block;\r\n color: currentColor;\r\n ${fonts.brown.light};\r\n font-size: 20px;\r\n line-height: 30px;\r\n text-align: center;\r\n text-decoration: none;\r\n text-underline-position: under;\r\n transform: translateX(0px);\r\n transition: transform 0.15s ease-out;\r\n\r\n &:focus,\r\n &:hover {\r\n outline: none;\r\n text-decoration: underline;\r\n }\r\n\r\n @media ${from(Device.Tablet)} {\r\n text-align: left;\r\n\r\n &:focus,\r\n &:hover {\r\n transform: translateX(4px);\r\n }\r\n }\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n font-size: 16px;\r\n line-height: 28px;\r\n }\r\n`;\r\nexport default {\r\n Container,\r\n Item,\r\n Link: StyledLink,\r\n List,\r\n};\r\n","import { withMotion } from '@hoc/withMotion';\r\nimport { ReactComponent as SvgChevronDown } from '@img/icons/chevron-down.svg';\r\nimport { LinkButton } from '@stories/Components/Buttons/GeneralButton/Button';\r\nimport * as React from 'react';\r\nimport FS from '../Shared/FooterShared.styles';\r\nimport S from './FooterLinks.styles';\r\nconst FooterLinks = ({ cta, items, title }) => {\r\n const [isOpened, setIsOpened] = React.useState(false);\r\n return (React.createElement(S.Container, { initial: \"closed\", animate: isOpened ? 'opened' : 'closed' },\r\n title && (React.createElement(FS.Title, { onClick: () => {\r\n setIsOpened(!isOpened);\r\n } },\r\n title,\r\n React.createElement(FS.TitleIconWrapper, { variants: {\r\n closed: { rotate: 0 },\r\n opened: { rotate: 180 },\r\n } },\r\n React.createElement(FS.TitleIcon, { as: SvgChevronDown })))),\r\n React.createElement(S.List, { variants: {\r\n closed: { height: 0 },\r\n opened: { height: 'auto' },\r\n } }, items.map((item) => (React.createElement(S.Item, { key: item.id },\r\n React.createElement(S.Link, { href: item.url, target: item.target }, item.text))))),\r\n cta?.text && (React.createElement(LinkButton, { buttonType: \"orange\", href: cta.url, target: cta.target, title: cta.text }))));\r\n};\r\nexport default withMotion(FooterLinks);\r\n","import fonts from '@helpers/fonts';\r\nimport Link from '@stories/Components/Link/Link';\r\nimport styled from 'styled-components';\r\nconst Container = styled.section ``;\r\nconst List = styled.ul `\r\n display: flex;\r\n flex-wrap: wrap;\r\n margin: -5px 0;\r\n`;\r\nconst Item = styled.li `\r\n display: block;\r\n margin: 5px 32px 5px 0;\r\n\r\n &:last-child {\r\n margin-right: 0;\r\n }\r\n`;\r\nconst StyledLink = styled(Link) `\r\n display: block;\r\n color: currentColor;\r\n ${fonts.brown.regular};\r\n font-size: 14px;\r\n line-height: 22px;\r\n text-decoration: none;\r\n text-underline-position: under;\r\n\r\n &:focus,\r\n &:hover {\r\n outline: none;\r\n text-decoration: underline;\r\n }\r\n`;\r\nexport default {\r\n Container,\r\n Item,\r\n Link: StyledLink,\r\n List,\r\n};\r\n","import React from 'react';\r\nimport S from './LegalLinks.styles';\r\nconst LegalLinks = ({ items }) => {\r\n return (React.createElement(S.Container, null,\r\n React.createElement(S.List, null, items.map((item) => (React.createElement(S.Item, { key: item.id },\r\n React.createElement(S.Link, { href: item.url, target: item.target }, item.text)))))));\r\n};\r\nexport default LegalLinks;\r\n","import { cssVar } from '@helpers/cssVar';\r\nimport fonts from '@helpers/fonts';\r\nimport { Device, from } from '@helpers/media';\r\nimport Link from '@stories/Components/Link/Link';\r\nimport styled from 'styled-components';\r\nimport FooterSharedStyles from '../Shared/FooterShared.styles';\r\nconst Container = styled.section ``;\r\nconst Title = styled(FooterSharedStyles.Title) ``;\r\nconst List = styled.ul `\r\n display: flex;\r\n justify-content: center;\r\n margin: 0 0 24px;\r\n\r\n @media ${from(Device.Tablet)} {\r\n justify-content: flex-start;\r\n }\r\n`;\r\nconst Item = styled.li `\r\n display: block;\r\n margin: 0;\r\n\r\n & + & {\r\n margin-left: 8px;\r\n }\r\n`;\r\nconst StyledLink = styled(Link) `\r\n display: flex;\r\n background: ${cssVar('fgColor')};\r\n border-radius: 50%;\r\n color: ${cssVar('bgColor')};\r\n height: 44px;\r\n ${fonts.brown.light};\r\n font-size: 20px;\r\n line-height: 30px;\r\n place-content: center;\r\n place-items: center;\r\n text-align: center;\r\n text-decoration: none;\r\n transform: scale(1);\r\n transition: transform 0.15s ease-out;\r\n width: 44px;\r\n\r\n &:focus,\r\n &:hover {\r\n outline: none;\r\n text-decoration: none;\r\n transform: scale(1.2);\r\n }\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n font-size: 16px;\r\n line-height: 28px;\r\n text-align: left;\r\n }\r\n`;\r\nconst Icon = styled.img `\r\n display: block;\r\n height: 100%;\r\n max-height: 24px;\r\n max-width: 24px;\r\n object-fit: contain;\r\n object-position: center center;\r\n width: 100%;\r\n`;\r\nconst Copyright = styled.p `\r\n ${fonts.brown.light};\r\n font-size: 14px;\r\n line-height: 22px;\r\n`;\r\nexport default {\r\n Container,\r\n Copyright,\r\n Icon,\r\n Item,\r\n Link: StyledLink,\r\n List,\r\n Title,\r\n};\r\n","import { LinkButton } from '@stories/Components/Buttons/GeneralButton/Button';\r\nimport React from 'react';\r\nimport S from './SocialLinks.styles';\r\nconst SocialLinks = ({ copyright, cta, items, title }) => {\r\n return (React.createElement(S.Container, null,\r\n title && React.createElement(S.Title, null, title),\r\n React.createElement(S.List, null, items.map((item) => (React.createElement(S.Item, { key: item.id },\r\n React.createElement(S.Link, { href: item.url, target: item.target },\r\n React.createElement(S.Icon, { alt: item.text, loading: \"lazy\", src: item.icon })))))),\r\n cta?.text && (React.createElement(LinkButton, { buttonType: \"orange\", href: cta.url, target: cta.target, title: cta.text })),\r\n copyright && React.createElement(S.Copyright, { dangerouslySetInnerHTML: { __html: copyright } })));\r\n};\r\nexport default SocialLinks;\r\n","import animation, { fadeIn } from '@helpers/animation';\r\nimport { aspectRatio } from '@helpers/aspectRatio';\r\nimport brand from '@helpers/brand';\r\nimport { cssVar } from '@helpers/cssVar';\r\nimport { fluid } from '@helpers/fluid';\r\nimport fonts from '@helpers/fonts';\r\nimport { Device, from } from '@helpers/media';\r\nimport BackToTopStyles from '@stories/Components/Footer/BackToTop/BackToTop.styles';\r\nimport ContactDetailsStyles from '@stories/Components/Footer/ContactDetails/ContactDetails.styles';\r\nimport FooterLinksStyles from '@stories/Components/Footer/FooterLinks/FooterLinks.styles';\r\nimport SocialLinksStyles from '@stories/Components/Footer/SocialLinks/SocialLinks.styles';\r\nimport SiteWideStyles from '@stories/Components/Global/SiteWide/SiteWide.styles';\r\nimport Link from '@stories/Components/Link/Link';\r\nimport SectionWrapper from '@stories/Components/SectionWrapper/SectionWrapper';\r\nimport { rgba } from 'polished';\r\nimport styled, { css } from 'styled-components';\r\nconst Container = styled(SectionWrapper) `\r\n background: ${cssVar('bgColor')};\r\n color: ${cssVar('fgColor')};\r\n overflow: hidden;\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n ${({ isActive }) => isActive &&\r\n css `\r\n ${Image} {\r\n transform: scale(1);\r\n }\r\n\r\n ${TopSection} {\r\n ${fadeIn(isActive, 375, 200, animation.easeInOutCubic)};\r\n }\r\n\r\n ${BottomSection} {\r\n transform: scaleY(1);\r\n transition: transform 375ms ${animation.easeInOutCubic} 600ms;\r\n\r\n ${SiteWideStyles.Container} {\r\n ${fadeIn(isActive, 375, 700, animation.easeInOutCubic)};\r\n }\r\n }\r\n `}\r\n }\r\n`;\r\nconst ImageWrapper = styled.div `\r\n position: relative;\r\n display: block;\r\n width: 100%;\r\n height: 0;\r\n padding-bottom: 70vh;\r\n overflow: hidden;\r\n\r\n @media ${from(Device.DesktopSmall)} {\r\n padding-bottom: ${aspectRatio(1920, 788)}%;\r\n }\r\n\r\n &::after {\r\n content: '';\r\n position: absolute;\r\n bottom: 0;\r\n left: 0;\r\n display: block;\r\n background: linear-gradient(\r\n to bottom,\r\n ${rgba(brand.black, 0)} 0%,\r\n ${rgba(brand.black, 1)} 100%\r\n );\r\n height: 20%;\r\n width: 100%;\r\n z-index: 2;\r\n }\r\n`;\r\nconst Image = styled.img `\r\n position: absolute;\r\n top: 0;\r\n left: 0;\r\n display: block;\r\n width: 100%;\r\n height: 100%;\r\n object-fit: cover;\r\n object-position: center center;\r\n z-index: 1;\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n transform: scale(1.04);\r\n transform-origin: bottom center;\r\n transition: transform 500ms ease;\r\n }\r\n`;\r\nconst TopSection = styled.div `\r\n padding: ${fluid(32, 138)} 0 24px;\r\n text-align: center;\r\n\r\n @media ${from(Device.Tablet)} {\r\n text-align: left;\r\n }\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n opacity: 0;\r\n }\r\n\r\n ${SiteWideStyles.Container} {\r\n display: grid;\r\n align-items: flex-start;\r\n gap: 0 ${fluid(20, 30)};\r\n grid-template-columns: repeat(6, 1fr);\r\n height: 100%;\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n grid-template-columns: repeat(12, 1fr);\r\n }\r\n }\r\n\r\n ${BackToTopStyles.Container} {\r\n grid-column: span 3;\r\n justify-self: flex-end;\r\n margin: 10px 0 0;\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n grid-column: 7 / span 6;\r\n }\r\n }\r\n\r\n ${ContactDetailsStyles.Container},\r\n ${FooterLinksStyles.Container},\r\n ${SocialLinksStyles.Container} {\r\n grid-column: 1 / span 6;\r\n\r\n @media ${from(Device.Tablet)} {\r\n grid-column: span 3;\r\n }\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n grid-column: span 3;\r\n }\r\n }\r\n`;\r\nconst LogoWrapper = styled.div `\r\n grid-column: span 3;\r\n margin: 0 0 ${fluid(32, 64)};\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n grid-column: 1 / span 6;\r\n }\r\n`;\r\nconst LogoLink = styled(Link) `\r\n display: block;\r\n color: currentColor;\r\n`;\r\nconst Logo = styled.span `\r\n display: block;\r\n max-width: 320px;\r\n width: 100%;\r\n`;\r\nconst BottomSection = styled.div `\r\n background: ${cssVar('bgColorAlt')};\r\n padding: 32px 0;\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n transform: scaleY(0);\r\n transform-origin: bottom;\r\n\r\n ${SiteWideStyles.Container} {\r\n opacity: 0;\r\n }\r\n }\r\n\r\n ${SiteWideStyles.Container} {\r\n display: flex;\r\n align-items: center;\r\n flex-direction: column;\r\n height: 100%;\r\n\r\n @media ${from(Device.Tablet)} {\r\n flex-direction: row;\r\n }\r\n }\r\n`;\r\nconst LegalStatementWrapper = styled.div `\r\n display: flex;\r\n align-items: center;\r\n flex-direction: column;\r\n margin: 30px 0 0;\r\n text-align: center;\r\n\r\n @media ${from(Device.Tablet)} {\r\n flex-direction: row;\r\n text-align: left;\r\n }\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n grid-column: span 3;\r\n margin: 0;\r\n margin-left: auto;\r\n padding-left: 32px;\r\n }\r\n`;\r\nconst LegalLogo = styled.span `\r\n display: inline-block;\r\n margin-right: 30px;\r\n`;\r\nconst LegalStatement = styled.div `\r\n ${fonts.brown.regular};\r\n font-size: ${fluid(12, 14)};\r\n line-height: ${fluid(18, 22)};\r\n margin: 30px 0 0;\r\n text-align: center;\r\n\r\n strong {\r\n ${fonts.brown.bold};\r\n }\r\n\r\n a {\r\n color: currentColor;\r\n }\r\n\r\n @media ${from(Device.Tablet)} {\r\n margin: 0;\r\n text-align: left;\r\n }\r\n`;\r\nexport default {\r\n BottomSection,\r\n Container,\r\n Image,\r\n ImageWrapper,\r\n LegalLogo,\r\n LegalStatement,\r\n LegalStatementWrapper,\r\n Logo,\r\n LogoLink,\r\n LogoWrapper,\r\n TopSection,\r\n};\r\n","import animation from '@helpers/animation';\r\nimport { imageUrl } from '@helpers/image';\r\nimport { withMotion } from '@hoc/withMotion';\r\nimport { useInView } from '@hooks/useInView';\r\nimport { ReactComponent as SvgRemLogo } from '@img/logos/footer-rem-logo.svg';\r\nimport { ReactComponent as SvgLogo } from '@img/logos/logo-theshard.svg';\r\nimport BackToTop from '@stories/Components/Footer/BackToTop/BackToTop';\r\nimport ContactDetails from '@stories/Components/Footer/ContactDetails/ContactDetails';\r\nimport FooterLinks from '@stories/Components/Footer/FooterLinks/FooterLinks';\r\nimport LegalLinks from '@stories/Components/Footer/LegalLinks/LegalLinks';\r\nimport SocialLinks from '@stories/Components/Footer/SocialLinks/SocialLinks';\r\nimport SiteWide from '@stories/Components/Global/SiteWide/SiteWide';\r\nimport React from 'react';\r\nimport S from './Footer.styles';\r\nconst Footer = ({ id, contactDetails, footerLinks, image, legalLinks, legalLogoLinkUrl, legalStatement, socialLinks, theme = 'dark', }) => {\r\n const [refContainer, isInView] = useInView({\r\n rootMargin: animation.inView.earlyRootMargin,\r\n });\r\n return (React.createElement(S.Container, { ref: refContainer, id: id, flush: \"both\", fullWidth: true, theme: \"dark\", isActive: isInView },\r\n React.createElement(S.ImageWrapper, null,\r\n React.createElement(\"picture\", null,\r\n React.createElement(\"source\", { media: \"(orientation: portrait)\", sizes: \"100vw\", srcSet: [\r\n `${imageUrl(image, { rmode: 'crop', width: 480, heightratio: 551 / 376 })} 480w`,\r\n `${imageUrl(image, { rmode: 'crop', width: 960, heightratio: 551 / 376 })} 960w`,\r\n `${imageUrl(image, { rmode: 'crop', width: 1440, heightratio: 551 / 376 })} 1440w`,\r\n `${imageUrl(image, { rmode: 'crop', width: 1920, heightratio: 551 / 376 })} 1920w`,\r\n ].join(',') }),\r\n React.createElement(S.Image, { alt: \"\", draggable: false, loading: \"lazy\", role: \"presentation\", sizes: \"100vw\", src: imageUrl(image, {\r\n rmode: 'crop',\r\n width: 1920,\r\n heightratio: 788 / 1920,\r\n }), srcSet: [\r\n `${imageUrl(image, { rmode: 'crop', width: 480, heightratio: 788 / 480 })} 480w`,\r\n `${imageUrl(image, { rmode: 'crop', width: 960, heightratio: 788 / 960 })} 960w`,\r\n `${imageUrl(image, { rmode: 'crop', width: 1440, heightratio: 788 / 1440 })} 1440w`,\r\n `${imageUrl(image, { rmode: 'crop', width: 1920, heightratio: 788 / 1920 })} 1920w`,\r\n ].join(',') }))),\r\n React.createElement(S.TopSection, { \"data-footer-theme\": theme },\r\n React.createElement(SiteWide, null,\r\n React.createElement(S.LogoWrapper, null,\r\n React.createElement(S.LogoLink, { href: \"/\", \"aria-label\": \"The Shard\" },\r\n React.createElement(S.Logo, { as: SvgLogo }))),\r\n React.createElement(BackToTop, null),\r\n contactDetails && React.createElement(ContactDetails, { ...contactDetails }),\r\n footerLinks.map((footerLinkList) => (React.createElement(FooterLinks, { key: footerLinkList.id, ...footerLinkList }))),\r\n socialLinks && React.createElement(SocialLinks, { ...socialLinks }))),\r\n React.createElement(S.BottomSection, null,\r\n React.createElement(SiteWide, null,\r\n legalLinks && React.createElement(LegalLinks, { ...legalLinks }),\r\n legalStatement && (React.createElement(S.LegalStatementWrapper, null,\r\n React.createElement(\"a\", { href: legalLogoLinkUrl, target: \"_blank\", rel: \"noreferrer\" },\r\n React.createElement(S.LegalLogo, { as: SvgRemLogo })),\r\n React.createElement(S.LegalStatement, { dangerouslySetInnerHTML: { __html: legalStatement } })))))));\r\n};\r\nexport default withMotion(Footer);\r\n","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","'use strict';\nmodule.exports = str => encodeURIComponent(str).replace(/[!'()*]/g, x => `%${x.charCodeAt(0).toString(16).toUpperCase()}`);\n","'use strict';\nvar token = '%[a-f0-9]{2}';\nvar singleMatcher = new RegExp(token, 'gi');\nvar multiMatcher = new RegExp('(' + token + ')+', 'gi');\n\nfunction decodeComponents(components, split) {\n\ttry {\n\t\t// Try to decode the entire string first\n\t\treturn decodeURIComponent(components.join(''));\n\t} catch (err) {\n\t\t// Do nothing\n\t}\n\n\tif (components.length === 1) {\n\t\treturn components;\n\t}\n\n\tsplit = split || 1;\n\n\t// Split the array in 2 parts\n\tvar left = components.slice(0, split);\n\tvar right = components.slice(split);\n\n\treturn Array.prototype.concat.call([], decodeComponents(left), decodeComponents(right));\n}\n\nfunction decode(input) {\n\ttry {\n\t\treturn decodeURIComponent(input);\n\t} catch (err) {\n\t\tvar tokens = input.match(singleMatcher);\n\n\t\tfor (var i = 1; i < tokens.length; i++) {\n\t\t\tinput = decodeComponents(tokens, i).join('');\n\n\t\t\ttokens = input.match(singleMatcher);\n\t\t}\n\n\t\treturn input;\n\t}\n}\n\nfunction customDecodeURIComponent(input) {\n\t// Keep track of all the replacements and prefill the map with the `BOM`\n\tvar replaceMap = {\n\t\t'%FE%FF': '\\uFFFD\\uFFFD',\n\t\t'%FF%FE': '\\uFFFD\\uFFFD'\n\t};\n\n\tvar match = multiMatcher.exec(input);\n\twhile (match) {\n\t\ttry {\n\t\t\t// Decode as big chunks as possible\n\t\t\treplaceMap[match[0]] = decodeURIComponent(match[0]);\n\t\t} catch (err) {\n\t\t\tvar result = decode(match[0]);\n\n\t\t\tif (result !== match[0]) {\n\t\t\t\treplaceMap[match[0]] = result;\n\t\t\t}\n\t\t}\n\n\t\tmatch = multiMatcher.exec(input);\n\t}\n\n\t// Add `%C2` at the end of the map to make sure it does not replace the combinator before everything else\n\treplaceMap['%C2'] = '\\uFFFD';\n\n\tvar entries = Object.keys(replaceMap);\n\n\tfor (var i = 0; i < entries.length; i++) {\n\t\t// Replace all decoded components\n\t\tvar key = entries[i];\n\t\tinput = input.replace(new RegExp(key, 'g'), replaceMap[key]);\n\t}\n\n\treturn input;\n}\n\nmodule.exports = function (encodedURI) {\n\tif (typeof encodedURI !== 'string') {\n\t\tthrow new TypeError('Expected `encodedURI` to be of type `string`, got `' + typeof encodedURI + '`');\n\t}\n\n\ttry {\n\t\tencodedURI = encodedURI.replace(/\\+/g, ' ');\n\n\t\t// Try the built in decoder first\n\t\treturn decodeURIComponent(encodedURI);\n\t} catch (err) {\n\t\t// Fallback to a more advanced decoder\n\t\treturn customDecodeURIComponent(encodedURI);\n\t}\n};\n","'use strict';\n\nmodule.exports = (string, separator) => {\n\tif (!(typeof string === 'string' && typeof separator === 'string')) {\n\t\tthrow new TypeError('Expected the arguments to be of type `string`');\n\t}\n\n\tif (separator === '') {\n\t\treturn [string];\n\t}\n\n\tconst separatorIndex = string.indexOf(separator);\n\n\tif (separatorIndex === -1) {\n\t\treturn [string];\n\t}\n\n\treturn [\n\t\tstring.slice(0, separatorIndex),\n\t\tstring.slice(separatorIndex + separator.length)\n\t];\n};\n","'use strict';\nmodule.exports = function (obj, predicate) {\n\tvar ret = {};\n\tvar keys = Object.keys(obj);\n\tvar isArr = Array.isArray(predicate);\n\n\tfor (var i = 0; i < keys.length; i++) {\n\t\tvar key = keys[i];\n\t\tvar val = obj[key];\n\n\t\tif (isArr ? predicate.indexOf(key) !== -1 : predicate(key, val, obj)) {\n\t\t\tret[key] = val;\n\t\t}\n\t}\n\n\treturn ret;\n};\n","import { __read } from 'tslib';\nimport { useState } from 'react';\nimport { motionValue } from '../value/index.js';\nimport { useOnChange } from '../value/use-on-change.js';\n\n// Does this device prefer reduced motion? Returns `null` server-side.\nvar prefersReducedMotion;\nfunction initPrefersReducedMotion() {\n prefersReducedMotion = motionValue(null);\n if (typeof window === \"undefined\")\n return;\n if (window.matchMedia) {\n var motionMediaQuery_1 = window.matchMedia(\"(prefers-reduced-motion)\");\n var setReducedMotionPreferences = function () {\n return prefersReducedMotion.set(motionMediaQuery_1.matches);\n };\n motionMediaQuery_1.addListener(setReducedMotionPreferences);\n setReducedMotionPreferences();\n }\n else {\n prefersReducedMotion.set(false);\n }\n}\n/**\n * A hook that returns `true` if we should be using reduced motion based on the current device's Reduced Motion setting.\n *\n * This can be used to implement changes to your UI based on Reduced Motion. For instance, replacing motion-sickness inducing\n * `x`/`y` animations with `opacity`, disabling the autoplay of background videos, or turning off parallax motion.\n *\n * It will actively respond to changes and re-render your components with the latest setting.\n *\n * ```jsx\n * export function Sidebar({ isOpen }) {\n * const shouldReduceMotion = useReducedMotion()\n * const closedX = shouldReduceMotion ? 0 : \"-100%\"\n *\n * return (\n * \n * )\n * }\n * ```\n *\n * @return boolean\n *\n * @public\n */\nfunction useReducedMotion() {\n /**\n * Lazy initialisation of prefersReducedMotion\n */\n !prefersReducedMotion && initPrefersReducedMotion();\n var _a = __read(useState(prefersReducedMotion.get()), 2), shouldReduceMotion = _a[0], setShouldReduceMotion = _a[1];\n useOnChange(prefersReducedMotion, setShouldReduceMotion);\n return shouldReduceMotion;\n}\n\nexport { useReducedMotion };\n","import { themes } from '@helpers/brand';\r\nimport { setCssVar } from '@helpers/cssVar';\r\nimport { fluid } from '@helpers/fluid';\r\nimport { Device, from } from '@helpers/media';\r\nimport styled, { css } from 'styled-components';\r\nimport SiteWide from '../Global/SiteWide/SiteWide';\r\nconst Container = styled.section `\r\n --sectionMargin: ${fluid(64, 102)};\r\n ${setCssVar('sitePadding', '18px')};\r\n ${setCssVar('siteWidth', '100%')};\r\n\r\n @media ${from(Device.DesktopLarge)} {\r\n ${setCssVar('sitePadding', '18px')};\r\n ${setCssVar('siteWidth', '1312px')};\r\n }\r\n\r\n ${({ flush, themeOption }) => themeOption === 'light' &&\r\n css `\r\n margin-top: ${flush === 'both' || flush === 'top' ? 0 : `calc(var(--sectionMargin) / 2)`};\r\n margin-bottom: ${flush === 'both' || flush === 'bottom' ? 0 : `calc(var(--sectionMargin) / 2)`};\r\n `}\r\n\r\n ${({ flush, themeOption }) => themeOption !== 'light' &&\r\n css `\r\n padding-top: ${flush === 'both' || flush === 'top' ? 0 : `calc(var(--sectionMargin) / 2)`};\r\n padding-bottom: ${flush === 'both' || flush === 'bottom' ? 0 : `calc(var(--sectionMargin) / 2)`};\r\n `}\r\n\r\n ${({ themeOption }) => themeOption &&\r\n css `\r\n ${themes[themeOption]}\r\n `}\r\n`;\r\nconst StyledSiteWide = styled(SiteWide) ``;\r\nexport default {\r\n Container,\r\n SiteWide: StyledSiteWide,\r\n};\r\n","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 SvgChevronDown(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 14 8.645\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M1 1.645L7 7l6-5.355\",\n fill: \"none\",\n stroke: \"currentColor\",\n strokeWidth: 2\n })));\n}\n\nexport default __webpack_public_path__ + \"chevron-down-e4e3060b9c3f390a0e95d31e18b67fb3.svg\";\nexport { SvgChevronDown as ReactComponent };","import queryString from 'query-string';\r\n/**\r\n * Create an image URL for ImageSharp\r\n * @param image The image model\r\n * @param imageParams The image parameters\r\n * @returns The image URL\r\n */\r\nexport function imageUrl(image, imageParams) {\r\n if (!image || !image.src) {\r\n return '';\r\n }\r\n /**\r\n * Remove any query param string to ensure paramsString is applied correctly and\r\n * there are no double definitions (setting a param twice prevents any tranformations)\r\n */\r\n const imageSource = image.src.split('?')[0];\r\n const params = {\r\n rxy: image.focalPoint ? `${image.focalPoint.left},${image.focalPoint.top}` : undefined,\r\n rmode: 'crop',\r\n // Define default quality as 95 to ensure some reduction in size for all but the smallest images\r\n quality: imageParams.width && imageParams.width > 400 ? 95 : undefined,\r\n ...imageParams,\r\n };\r\n // Imagesharp doesn't support heightratio parameter. Convert to height parameter for compatibility.\r\n if (imageParams.heightratio !== undefined && imageParams.width !== undefined) {\r\n params.height = imageParams.width * imageParams.heightratio;\r\n }\r\n const paramsString = queryString.stringify(params);\r\n return `${imageSource}${paramsString ? `?${queryString.stringify(params)}` : ''}`;\r\n}\r\nexport function getSrcs(image, upper, lower, steps, ratio) {\r\n const sizes = getRange(upper, lower, steps);\r\n return sizes.map((size) => `${imageUrl(image, { width: size, heightratio: ratio })} ${size}w`);\r\n}\r\nexport function getRetinaSrcs(image, width, ratio) {\r\n const dprs = [1, 1.5, 2, 2.5, 3];\r\n return dprs.map((dpr) => `${imageUrl(image, { width: width * dpr, heightratio: ratio })} ${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"],"sourceRoot":""}