{"version":3,"sources":["webpack:///./src/helpers/media.ts","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:///./src/stories/Components/Global/Typography/Heading.styles.ts","webpack:///./src/stories/Widgets/RichText/RichText.styles.ts","webpack:///./src/img/icons/pin.svg","webpack:///./src/stories/Components/Global/SiteWide/SiteWide.tsx","webpack:///./src/stories/Components/Global/SiteWide/SiteWide.styles.ts","webpack:///./src/stories/Components/Global/Typography/Paragraph.styles.ts","webpack:///./src/img/icons/time.svg","webpack:///./src/helpers/fluid.ts","webpack:///./src/helpers/animation.ts","webpack:///./src/stories/Widgets/EventDetail/EventDetail.styles.ts","webpack:///./src/stories/Widgets/EventDetail/EventDetail.tsx","webpack:///./src/helpers/brand.ts","webpack:///./src/helpers/grey.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:///./src/helpers/cssVar.ts","webpack:///./src/helpers/fonts.ts","webpack:///./src/stories/Components/SectionWrapper/SectionWrapper.styles.ts","webpack:///./src/helpers/image.ts"],"names":["Device","from","size","until","between","start","end","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","H1Styles","css","fonts","brown","thin","fluid","H2Styles","H3Styles","light","H4Styles","H5Styles","bold","H6Styles","Heading","styled","h1","visual","linkStyles","cssVar","regular","tableStyles","ParagraphStyles","RegularStyles","contentStyles","HeadingStyles","verticalMargin","setCssVar","TabletLarge","isActive","fadeIn","animation","easeInOutCubic","MobileLarge","Content","div","imageStyles","_path","_extends","target","i","arguments","source","prototype","hasOwnProperty","call","apply","this","SvgPin","props","xmlns","viewBox","d","fill","createElement","DesktopLarge","LargeStyles","SmallStyles","Paragraph","p","_g","SvgTime","DEFAULT_MIN_VALUE","Tablet","DEFAULT_MAX_VALUE","ActualDesktop","min","max","minWidth","maxWidth","minRem","maxRem","minWidthRem","slope","yAxisIntersection","round","fluidUnit","unit","num","Math","threshold","rootMargin","earlyRootMargin","globalThreshold","slideInUpInitial","slideInUp","animate","duration","delay","easingFunc","fadeInUp","amount","backgroundAnimation","textClip","multicolouredBackground","multicolouredAnimatedText","multicolouredBackgroundBright","multicolouredTextBright","choirInTheSpireBackground","choirInTheSpireText","transition","properties","timing","innerCss","Image","Title","Inner","ImageWrapper","img","Meta","span","MetaPart","MetaPartIcon","Summary","RichTextStyles","EventDetail","content","dateText","image","location","summary","time","title","refContainer","isInView","media","sizes","srcSet","imageUrl","heightratio","alt","draggable","loading","role","src","as","dangerouslySetInnerHTML","__html","brand","black","blue","blueGrey","blueTint","grey","previous","hsl","orange","white","validation","invalid","valid","lightTheme","grey90","grey96","darkTheme","grey10","themes","dark","module","str","charCodeAt","toString","toUpperCase","singleMatcher","RegExp","multiMatcher","decodeComponents","components","decodeURIComponent","err","left","right","tokens","match","encodedURI","replaceMap","customDecodeURIComponent","string","separator","separatorIndex","obj","predicate","isArr","val","name","thinItalic","lightItalic","regularItalic","boldItalic","section","StyledSiteWide","imageParams","imageSource","params","rxy","focalPoint","top","rmode","quality","height","getSrcs","upper","lower","steps","ratio","increment","_","ceil","getRange"],"mappings":"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","file":"52-3ca7a6b6e8ab14dd0bf2.js","sourcesContent":["export var Device;\r\n(function (Device) {\r\n Device[Device[\"MobileSmall\"] = 320] = \"MobileSmall\";\r\n Device[Device[\"Mobile\"] = 375] = \"Mobile\";\r\n Device[Device[\"MobileLarge\"] = 480] = \"MobileLarge\";\r\n Device[Device[\"TabletSmall\"] = 568] = \"TabletSmall\";\r\n Device[Device[\"Tablet\"] = 768] = \"Tablet\";\r\n Device[Device[\"TabletLarge\"] = 1024] = \"TabletLarge\";\r\n Device[Device[\"DesktopSmall\"] = 1280] = \"DesktopSmall\";\r\n Device[Device[\"Desktop\"] = 1366] = \"Desktop\";\r\n Device[Device[\"DesktopLarge\"] = 1600] = \"DesktopLarge\";\r\n Device[Device[\"ActualDesktop\"] = 1920] = \"ActualDesktop\";\r\n Device[Device[\"DesktopXL\"] = 2560] = \"DesktopXL\";\r\n})(Device || (Device = {}));\r\nexport function from(size) {\r\n return `(min-width: ${size}px)`;\r\n}\r\nexport function until(size) {\r\n return `(max-width: ${size - 1}px)`;\r\n}\r\nexport function between(start, end) {\r\n return `${from(start)} and ${until(end)}`;\r\n}\r\n","import { 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 { fluid } from '@helpers/fluid';\r\nimport fonts from '@helpers/fonts';\r\nimport styled, { css } from 'styled-components';\r\nconst H1Styles = css `\r\n ${fonts.brown.thin};\r\n font-size: ${fluid(32, 70)};\r\n line-height: ${fluid(32, 70)};\r\n letter-spacing: normal;\r\n margin: 0 0 16px;\r\n text-transform: uppercase;\r\n`;\r\nconst H2Styles = css `\r\n ${fonts.brown.thin};\r\n font-size: ${fluid(28, 60)};\r\n line-height: ${fluid(28, 64)};\r\n letter-spacing: normal;\r\n margin: 0 0 16px;\r\n text-transform: uppercase;\r\n`;\r\nconst H3Styles = css `\r\n ${fonts.brown.light};\r\n font-size: ${fluid(24, 50)};\r\n line-height: ${fluid(26, 54)};\r\n letter-spacing: normal;\r\n margin: 0 0 16px;\r\n text-transform: uppercase;\r\n`;\r\nconst H4Styles = css `\r\n ${fonts.brown.light};\r\n font-size: ${fluid(21, 24)};\r\n line-height: ${fluid(28, 32)};\r\n letter-spacing: normal;\r\n margin: 0 0 16px;\r\n text-transform: uppercase;\r\n`;\r\nconst H5Styles = css `\r\n ${fonts.brown.bold};\r\n font-size: ${fluid(16, 20)};\r\n line-height: ${fluid(18, 28)};\r\n letter-spacing: normal;\r\n margin: 0 0 16px;\r\n text-transform: uppercase;\r\n`;\r\nconst H6Styles = css `\r\n ${fonts.brown.bold};\r\n font-size: ${fluid(16, 20)};\r\n line-height: ${fluid(18, 28)};\r\n letter-spacing: normal;\r\n margin: 0 0 16px;\r\n text-transform: uppercase;\r\n`;\r\nconst Heading = styled.h1 `\r\n ${({ visual }) => {\r\n switch (visual) {\r\n case 'h1':\r\n return H1Styles;\r\n case 'h2':\r\n return H2Styles;\r\n case 'h3':\r\n return H3Styles;\r\n case 'h4':\r\n return H4Styles;\r\n case 'h5':\r\n return H5Styles;\r\n case 'h6':\r\n return H6Styles;\r\n default:\r\n break;\r\n }\r\n}}\r\n`;\r\nexport default {\r\n H1Styles,\r\n H2Styles,\r\n H3Styles,\r\n H4Styles,\r\n H5Styles,\r\n H6Styles,\r\n Heading,\r\n};\r\n","import animation, { fadeIn } from '@helpers/animation';\r\nimport { cssVar, setCssVar } from '@helpers/cssVar';\r\nimport fonts from '@helpers/fonts';\r\nimport { Device, from, until } from '@helpers/media';\r\nimport HeadingStyles from '@stories/Components/Global/Typography/Heading.styles';\r\nimport ParagraphStyles from '@stories/Components/Global/Typography/Paragraph.styles';\r\nimport SectionWrapper from '@stories/Components/SectionWrapper/SectionWrapper';\r\nimport styled, { css } from 'styled-components';\r\nconst linkStyles = css `\r\n background-color: transparent;\r\n background-image: linear-gradient(\r\n to right,\r\n ${cssVar('accentColor')} 0%,\r\n ${cssVar('accentColor')} 100%\r\n );\r\n background-repeat: no-repeat;\r\n background-size: 0% 100%;\r\n color: ${cssVar('fgColor')};\r\n ${fonts.brown.regular};\r\n margin: -3px;\r\n padding: 3px;\r\n text-decoration: underline;\r\n text-underline-position: under;\r\n transition: background-size 0.15s ease-out;\r\n\r\n &:focus {\r\n outline: none;\r\n }\r\n\r\n &:focus,\r\n &:hover {\r\n background-size: 100% 100%;\r\n }\r\n`;\r\nconst tableStyles = css `\r\n margin: 0 0 16px;\r\n\r\n th,\r\n td {\r\n border: 1px solid ${cssVar('fgColor')};\r\n color: ${cssVar('fgColor')};\r\n ${ParagraphStyles.RegularStyles};\r\n height: auto !important; // override inline height - no point this being content editable.\r\n margin: 0;\r\n padding: 8px 16px;\r\n }\r\n`;\r\nconst contentStyles = css `\r\n color: ${cssVar('fgColor')};\r\n ${fonts.brown.regular};\r\n\r\n h1 {\r\n ${HeadingStyles.H1Styles};\r\n }\r\n\r\n h2 {\r\n ${HeadingStyles.H2Styles};\r\n }\r\n\r\n h3 {\r\n ${HeadingStyles.H3Styles};\r\n }\r\n\r\n h4 {\r\n ${HeadingStyles.H4Styles};\r\n }\r\n\r\n h5 {\r\n ${HeadingStyles.H5Styles};\r\n }\r\n\r\n h6 {\r\n ${HeadingStyles.H6Styles};\r\n }\r\n\r\n p {\r\n ${ParagraphStyles.RegularStyles};\r\n }\r\n\r\n strong {\r\n ${fonts.brown.bold};\r\n }\r\n\r\n ol,\r\n ul {\r\n display: block;\r\n ${ParagraphStyles.RegularStyles};\r\n padding: 0 0 0 40px;\r\n }\r\n\r\n ol {\r\n list-style: decimal;\r\n\r\n li {\r\n display: list-item;\r\n }\r\n }\r\n\r\n ul {\r\n list-style: disc;\r\n\r\n /* Adjust padding if the browser supports custom markers, otherwise use default disc marker. */\r\n @supports (selector(ul li::marker)) {\r\n padding: 0 0 0 20px;\r\n\r\n li {\r\n display: list-item;\r\n padding: 0 0 0 20px;\r\n\r\n &::marker {\r\n content: '-';\r\n }\r\n }\r\n }\r\n }\r\n\r\n a {\r\n ${linkStyles};\r\n }\r\n\r\n > *:last-child {\r\n margin-bottom: 0;\r\n }\r\n\r\n table {\r\n ${tableStyles};\r\n }\r\n\r\n hr {\r\n margin: 16px 0;\r\n }\r\n\r\n sup {\r\n position: relative;\r\n top: -0.5em;\r\n font-size: 80%;\r\n }\r\n\r\n sub {\r\n position: relative;\r\n top: 0.5em;\r\n font-size: 80%;\r\n }\r\n`;\r\nconst Container = styled(SectionWrapper) `\r\n ${({ verticalMargin }) => verticalMargin &&\r\n css `\r\n ${setCssVar('sectionMargin', verticalMargin)};\r\n `}\r\n padding-top: 40px;\r\n @media ${from(Device.TabletLarge)} {\r\n scroll-margin-top: 128px;\r\n margin: ${cssVar('sectionMargin')} 0;\r\n opacity: 0;\r\n\r\n ${({ isActive }) => isActive &&\r\n css `\r\n ${fadeIn(isActive, 375, 0, animation.easeInOutCubic)};\r\n `}\r\n }\r\n\r\n @media ${until(Device.MobileLarge)} {\r\n scroll-margin-top: 60px;\r\n margin: calc(${cssVar('sectionMargin')} / 2) 0;\r\n }\r\n`;\r\nconst Content = styled.div `\r\n margin: 0 auto;\r\n width: 100%;\r\n\r\n ${contentStyles}\r\n`;\r\nconst imageStyles = css `\r\n img {\r\n object-fit: contain;\r\n height: fit-content;\r\n }\r\n`;\r\nexport default {\r\n Container,\r\n Content,\r\n contentStyles,\r\n linkStyles,\r\n imageStyles,\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 SvgPin(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 15.07 19.246\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M7.535 0A7.426 7.426 0 000 7.284a7.131 7.131 0 001.507 4.354L7.2 19.089a.45.45 0 00.586.084l.084-.084 5.693-7.451a7.131 7.131 0 001.507-4.354A7.426 7.426 0 007.535 0zm-.586 10.13a2.923 2.923 0 113.433-3.43 2.95 2.95 0 01-2.3 3.433 2.574 2.574 0 01-1.133-.003z\",\n fill: \"currentColor\"\n })));\n}\n\nexport default __webpack_public_path__ + \"pin-f876236bbfbdbbe443af9b963b5703d4.svg\";\nexport { SvgPin as ReactComponent };","import React from 'react';\r\nimport S from './SiteWide.styles';\r\nconst SiteWide = ({ children, className, width = 'default' }) => {\r\n return (React.createElement(S.Container, { className: className, width: width }, children));\r\n};\r\nexport default SiteWide;\r\n","import { cssVar, setCssVar } from '@helpers/cssVar';\r\nimport { Device, from } from '@helpers/media';\r\nimport styled, { css } from 'styled-components';\r\nconst Container = styled.div `\r\n ${setCssVar('sitePadding', '18px')};\r\n ${setCssVar('siteWidth', '100%')};\r\n\r\n --siteGutter: calc((1926px - (var(--siteWidth) + (var(--sitePadding) * 2))) / 2);\r\n\r\n margin-left: auto;\r\n margin-right: auto;\r\n max-width: calc(${cssVar('siteWidth')} + (${cssVar('sitePadding')} * 2));\r\n padding-left: ${cssVar('sitePadding')};\r\n padding-right: ${cssVar('sitePadding')};\r\n width: 100%;\r\n\r\n ${({ width }) => {\r\n switch (width) {\r\n case 'default':\r\n return css `\r\n @media ${from(Device.DesktopLarge)} {\r\n ${setCssVar('sitePadding', '18px')};\r\n ${setCssVar('siteWidth', '1312px')};\r\n }\r\n `;\r\n case 'narrow':\r\n return css `\r\n @media ${from(Device.TabletLarge)} {\r\n ${setCssVar('sitePadding', '18px')};\r\n ${setCssVar('siteWidth', '804px')};\r\n }\r\n `;\r\n case 'wide':\r\n return css `\r\n @media ${from(Device.TabletLarge)} {\r\n ${setCssVar('sitePadding', '18px')};\r\n ${setCssVar('siteWidth', '1640px')};\r\n }\r\n `;\r\n }\r\n}}\r\n`;\r\nexport default {\r\n Container,\r\n};\r\n","import { fluid } from '@helpers/fluid';\r\nimport fonts from '@helpers/fonts';\r\nimport styled, { css } from 'styled-components';\r\n/**\r\n * 20px / 28px\r\n */\r\nconst LargeStyles = css `\r\n ${fonts.brown.light};\r\n font-size: ${fluid(18, 24)};\r\n line-height: ${fluid(26, 36)};\r\n letter-spacing: normal;\r\n margin: 0 0 16px;\r\n`;\r\n/**\r\n * 18px / 28px\r\n */\r\nconst RegularStyles = css `\r\n ${fonts.brown.light};\r\n font-size: ${fluid(16, 20)};\r\n line-height: ${fluid(26, 32)};\r\n letter-spacing: normal;\r\n margin: 0 0 16px;\r\n`;\r\n/**\r\n * 16px / 26px\r\n */\r\nconst SmallStyles = css `\r\n ${fonts.brown.light};\r\n font-size: ${fluid(14, 16)};\r\n line-height: ${fluid(20, 22)};\r\n letter-spacing: normal;\r\n margin: 0 0 16px;\r\n`;\r\nconst Paragraph = styled.p `\r\n ${({ size }) => {\r\n switch (size) {\r\n case 'large':\r\n return LargeStyles;\r\n case 'regular':\r\n return RegularStyles;\r\n case 'small':\r\n return SmallStyles;\r\n default:\r\n break;\r\n }\r\n}}\r\n`;\r\nexport default {\r\n Paragraph,\r\n SmallStyles,\r\n RegularStyles,\r\n LargeStyles,\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 SvgTime(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 16 16\"\n }, props), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n fill: \"currentColor\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M8 16a8 8 0 10-8-8 8.007 8.007 0 008 8zM8 1.758A6.242 6.242 0 111.758 8 6.243 6.243 0 018 1.758z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M7.648 9.407h2.989a.879.879 0 100-1.758h-2.11V3.956a.879.879 0 10-1.758 0v4.571a.871.871 0 00.879.88z\"\n }))));\n}\n\nexport default __webpack_public_path__ + \"time-9967d1afc6efbae0dbbcabc704bbd2a6.svg\";\nexport { SvgTime as ReactComponent };","import { Device } from './media';\r\n/**\r\n * Base pixel value for the \"rem\" unit.\r\n */\r\nexport const PIXELS_PER_REM = 16;\r\n/**\r\n * Default pixel value for the min width.\r\n */\r\nexport const DEFAULT_MIN_VALUE = Device.Tablet;\r\n/**\r\n * Default pixel value for the max width.\r\n */\r\nexport const DEFAULT_MAX_VALUE = Device.ActualDesktop;\r\n/**\r\n * Define a fluid value between the min/max values at the min/max widths.\r\n */\r\nexport function fluid(min, max, minWidth = DEFAULT_MIN_VALUE, maxWidth = DEFAULT_MAX_VALUE) {\r\n const minRem = min / PIXELS_PER_REM;\r\n const maxRem = max / PIXELS_PER_REM;\r\n const minWidthRem = minWidth / PIXELS_PER_REM;\r\n const maxWidthRem = maxWidth / PIXELS_PER_REM;\r\n const slope = (maxRem - minRem) / (maxWidthRem - minWidthRem);\r\n const yAxisIntersection = -minWidthRem * slope + minRem;\r\n const clampMin = `${round(minRem)}rem`;\r\n const clampVal = `${round(yAxisIntersection)}rem + ${round(slope * 100)}vw`;\r\n const clampMax = `${round(maxRem)}rem`;\r\n return `clamp(${clampMin}, ${clampVal}, ${clampMax})`;\r\n}\r\n/**\r\n * Define a fluid value between the min/max values at the min/max widths.\r\n */\r\nexport function fluidUnit(min, max, unit = '', minWidth = DEFAULT_MIN_VALUE, maxWidth = DEFAULT_MAX_VALUE) {\r\n const slope = (max - min) / (maxWidth - minWidth);\r\n const yAxisIntersection = -minWidth * slope + min;\r\n const clampMin = `${round(min)}`;\r\n const clampVal = `${round(yAxisIntersection)}${unit} + ${round(slope * 100)}vw`;\r\n const clampMax = `${round(max)}`;\r\n return `clamp(${clampMin}${unit}, ${clampVal}, ${clampMax}${unit})`;\r\n}\r\n/**\r\n * Round to nearest hundredth.\r\n */\r\nfunction round(num) {\r\n return Math.round(num * 100) / 100;\r\n}\r\n","import { css } from 'styled-components';\r\nimport fonts from './fonts';\r\nexport default {\r\n inView: {\r\n threshold: 0.25,\r\n rootMargin: '0px 0px -25% 0px',\r\n earlyRootMargin: '0px 0px -10% 0px',\r\n },\r\n globalThreshold: 0.25,\r\n easeInOutCubic: 'cubic-bezier(0.645, 0.045, 0.355, 1)',\r\n};\r\nexport const slideInUpInitial = css `\r\n > span {\r\n opacity: 0;\r\n transform: translateY(100%);\r\n }\r\n`;\r\nexport function slideInUp(animate, duration, delay, easingFunc) {\r\n return css `\r\n overflow: hidden;\r\n\r\n > span {\r\n display: inline-block;\r\n transition: transform ${duration}ms ${delay}ms ${easingFunc},\r\n opacity ${duration}ms ${delay}ms ${easingFunc};\r\n }\r\n\r\n ${animate\r\n ? css `\r\n > span {\r\n opacity: 1;\r\n transform: translateY(0px);\r\n }\r\n `\r\n : css `\r\n ${slideInUpInitial};\r\n `}\r\n `;\r\n}\r\nexport function fadeInUp(animate, amount, duration, delay, easingFunc) {\r\n return css `\r\n transition: transform ${duration}ms ${delay}ms ${easingFunc},\r\n opacity ${duration}ms ${delay}ms ${easingFunc};\r\n\r\n ${animate\r\n ? css `\r\n opacity: 1;\r\n transform: translateY(0px);\r\n `\r\n : css `\r\n opacity: 0;\r\n transform: translateY(${amount}px);\r\n `}\r\n `;\r\n}\r\nexport function fadeIn(animate, duration, delay, easingFunc) {\r\n return css `\r\n transition: opacity ${duration}ms ${delay}ms ${easingFunc};\r\n\r\n ${animate\r\n ? css `\r\n opacity: 1;\r\n `\r\n : css `\r\n opacity: 0;\r\n `}\r\n `;\r\n}\r\nconst backgroundAnimation = css `\r\n background-size: 200% auto;\r\n animation: multicoloured 5s linear infinite;\r\n\r\n @keyframes multicoloured {\r\n to {\r\n background-position: 200% center;\r\n }\r\n }\r\n`;\r\nconst textClip = css `\r\n background-clip: text;\r\n -webkit-text-fill-color: transparent;\r\n width: fit-content;\r\n`;\r\nexport const multicolouredBackground = css `\r\n background: linear-gradient(\r\n 90deg,\r\n rgba(213, 149, 91, 1) 0%,\r\n rgba(213, 118, 86, 1) 20%,\r\n rgba(100, 202, 185, 1) 40%,\r\n rgba(150, 145, 204, 1) 60%,\r\n rgba(182, 103, 202, 1) 80%,\r\n rgba(174, 90, 188, 1) 100%\r\n );\r\n\r\n ${backgroundAnimation}\r\n`;\r\nexport const multicolouredAnimatedText = css `\r\n ${fonts.brown.light}\r\n ${multicolouredBackground};\r\n ${textClip};\r\n`;\r\nexport const multicolouredBackgroundBright = css `\r\n background: linear-gradient(\r\n 90deg,\r\n #ed4141,\r\n #ef523d,\r\n #f0623a,\r\n #f17138,\r\n #f07e37,\r\n #f08b39,\r\n #ef983c,\r\n #eda441,\r\n #d8a936,\r\n #c2ae30,\r\n #aab231,\r\n #90b439,\r\n #73b645,\r\n #50b754,\r\n #08b766,\r\n #50b754,\r\n #73b645,\r\n #90b439,\r\n #aab231,\r\n #c2ae30,\r\n #d8a936,\r\n #eda441,\r\n #ef983c,\r\n #f08b39,\r\n #f07e37,\r\n #f17138,\r\n #f0623a,\r\n #ef523d,\r\n #ed4141\r\n );\r\n\r\n ${backgroundAnimation}\r\n`;\r\nexport const multicolouredTextBright = css `\r\n ${fonts.brown.light}\r\n ${multicolouredBackgroundBright};\r\n ${textClip};\r\n`;\r\nexport const choirInTheSpireBackground = css `\r\n background: linear-gradient(\r\n 90deg,\r\n #f1563c 9%,\r\n #e65352 10%,\r\n #d34e79 11%,\r\n #c74c92 12%,\r\n #c34b9b 13%,\r\n #00b3c1 40%,\r\n #c34b9b 45%,\r\n #f1563c 50%,\r\n #f1563c 59%,\r\n #e65352 60%,\r\n #d34e79 61%,\r\n #d34e79 62%,\r\n #c74c92 63%,\r\n #00b3c1 90%,\r\n #c34b9b 95%,\r\n #f1563c 100%\r\n );\r\n\r\n ${backgroundAnimation}\r\n`;\r\nexport const choirInTheSpireText = css `\r\n ${choirInTheSpireBackground};\r\n ${textClip};\r\n`;\r\nexport const cubicEaseOut = `cubic-bezier(0.33, 1, 0.68, 1)`;\r\nexport const shouldAnimate = (innerCss) => {\r\n return css `\r\n @media (prefers-reduced-motion: no-preference) {\r\n ${innerCss}\r\n }\r\n `;\r\n};\r\nexport const transition = (properties, duration = 0.35, timing = cubicEaseOut) => {\r\n return shouldAnimate(css `\r\n transition-duration: ${typeof duration === 'string' ? duration : `${duration}s`};\r\n transition-property: ${properties};\r\n transition-timing-function: ${timing};\r\n will-change: ${properties};\r\n `);\r\n};\r\n","import animation, { fadeIn, slideInUp, slideInUpInitial } from '@helpers/animation';\r\nimport { cssVar } from '@helpers/cssVar';\r\nimport fonts from '@helpers/fonts';\r\nimport { Device, from, until } from '@helpers/media';\r\nimport HeadingStyles from '@stories/Components/Global/Typography/Heading.styles';\r\nimport ParagraphStyles from '@stories/Components/Global/Typography/Paragraph.styles';\r\nimport SectionWrapper from '@stories/Components/SectionWrapper/SectionWrapper';\r\nimport styled, { css } from 'styled-components';\r\nimport RichTextStyles from '../RichText/RichText.styles';\r\nconst Container = styled(SectionWrapper) `\r\n @media ${until(Device.TabletLarge)} {\r\n padding-top: ${cssVar('sectionMargin')};\r\n }\r\n &:last-child {\r\n margin-bottom: 0px;\r\n }\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 ${Title} {\r\n ${slideInUp(isActive, 375, 0, animation.easeInOutCubic)};\r\n\r\n &:after {\r\n transform: scaleX(1);\r\n }\r\n }\r\n\r\n ${Inner} {\r\n ${fadeIn(isActive, 375, 400, animation.easeInOutCubic)};\r\n }\r\n `}\r\n }\r\n`;\r\nconst ImageWrapper = styled.div `\r\n display: none;\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n position: relative;\r\n display: block;\r\n margin-bottom: 80px;\r\n min-height: 576px;\r\n width: 100%;\r\n overflow: hidden;\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 height: 100%;\r\n object-fit: cover;\r\n object-position: center center;\r\n width: 100%;\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n transform: scale(1.02);\r\n transform-origin: center center;\r\n transition: transform 500ms ease;\r\n }\r\n`;\r\nconst Title = styled.h1 `\r\n position: relative;\r\n ${HeadingStyles.H1Styles};\r\n margin: 0 0 24px;\r\n padding: 0 0 24px;\r\n\r\n &::after {\r\n content: '';\r\n position: absolute;\r\n bottom: 0;\r\n left: 0;\r\n height: 2px;\r\n background: ${cssVar('accentColor')};\r\n width: 70px;\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n transform: scaleX(0);\r\n transform-origin: left;\r\n transition: transform 375ms ${animation.easeInOutCubic} 400ms;\r\n }\r\n }\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n margin: 0 0 48px;\r\n padding: 0 0 48px;\r\n ${slideInUpInitial};\r\n\r\n &::after {\r\n width: 110px;\r\n }\r\n }\r\n`;\r\nconst Inner = styled.div `\r\n @media ${from(Device.TabletLarge)} {\r\n opacity: 0;\r\n }\r\n`;\r\nconst Meta = styled.span `\r\n display: block;\r\n margin: 0 0 16px;\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n margin: 0 0 48px;\r\n }\r\n`;\r\nconst MetaPart = styled.span `\r\n display: flex;\r\n align-items: center;\r\n ${fonts.brown.regular};\r\n font-size: 12px;\r\n line-height: 18px;\r\n text-transform: uppercase;\r\n\r\n & + & {\r\n margin-top: 16px;\r\n }\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n font-size: 16px;\r\n line-height: 22px;\r\n }\r\n`;\r\nconst MetaPartIcon = styled.span `\r\n display: inline-block;\r\n color: ${cssVar('accentColor')};\r\n height: 20px;\r\n margin: 0 8px 0 0;\r\n width: 20px;\r\n`;\r\nconst Summary = styled.p `\r\n ${ParagraphStyles.LargeStyles};\r\n margin: 0 0 32px;\r\n`;\r\nconst Content = styled.div `\r\n ${RichTextStyles.contentStyles};\r\n`;\r\nexport default {\r\n Container,\r\n Content,\r\n Image,\r\n ImageWrapper,\r\n Meta,\r\n MetaPart,\r\n MetaPartIcon,\r\n Summary,\r\n Title,\r\n Inner,\r\n};\r\n","import animation from '@helpers/animation';\r\nimport { imageUrl } from '@helpers/image';\r\nimport { Device, from } from '@helpers/media';\r\nimport { useInView } from '@hooks/useInView';\r\nimport { ReactComponent as SvgPin } from '@img/icons/pin.svg';\r\nimport { ReactComponent as SvgTime } from '@img/icons/time.svg';\r\nimport SiteWide from '@stories/Components/Global/SiteWide/SiteWide';\r\nimport React from 'react';\r\nimport S from './EventDetail.styles';\r\nconst EventDetail = ({ id, content, dateText, image, location, summary, time, title, }) => {\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: \"top\", fullWidth: true, isActive: isInView },\r\n React.createElement(S.ImageWrapper, null,\r\n React.createElement(\"picture\", null,\r\n React.createElement(\"source\", { media: from(Device.TabletLarge), sizes: \"100vw\", srcSet: [\r\n `${imageUrl(image, { width: 1024, heightratio: 750 / 1024 })} 1024w`,\r\n `${imageUrl(image, { width: 1472, heightratio: 750 / 1472 })} 1472w`,\r\n `${imageUrl(image, { width: 1920, heightratio: 750 / 1920 })} 1920w`,\r\n ].join(',') }),\r\n React.createElement(S.Image, { alt: \"\", draggable: false, loading: \"eager\", role: \"presentation\", src: \"data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==\" }))),\r\n React.createElement(SiteWide, { width: \"narrow\" },\r\n React.createElement(S.Title, null,\r\n React.createElement(\"span\", null, title)),\r\n React.createElement(S.Inner, null,\r\n React.createElement(S.Meta, null,\r\n dateText && React.createElement(S.MetaPart, null, dateText),\r\n time && (React.createElement(S.MetaPart, null,\r\n React.createElement(S.MetaPartIcon, { as: SvgTime }),\r\n time)),\r\n location && (React.createElement(S.MetaPart, null,\r\n React.createElement(S.MetaPartIcon, { as: SvgPin }),\r\n location))),\r\n React.createElement(S.Summary, null, summary),\r\n React.createElement(S.Content, { dangerouslySetInnerHTML: { __html: content } })))));\r\n};\r\nexport default EventDetail;\r\n","import { css } from 'styled-components';\r\nimport { setCssVar } from './cssVar';\r\nimport greyscale from './grey';\r\nconst brand = {\r\n black: '#000000',\r\n blue: '#b7cbeb',\r\n blueGrey: '#eff1f1',\r\n blueTint: '#eef1f8',\r\n grey: greyscale,\r\n orange: '#f96a1d',\r\n white: '#fff',\r\n validation: {\r\n invalid: '#da291c',\r\n valid: '#008c15',\r\n },\r\n};\r\nexport const lightTheme = css `\r\n ${setCssVar('fgColor', brand.black)};\r\n ${setCssVar('bgColor', brand.white)};\r\n ${setCssVar('bgColorAlt', brand.grey.grey90)};\r\n ${setCssVar('bgColorAlt2', brand.grey.grey96)};\r\n ${setCssVar('accentColor', brand.orange)};\r\n ${setCssVar('colorScheme', 'light')};\r\n`;\r\nexport const darkTheme = css `\r\n ${setCssVar('fgColor', brand.white)};\r\n ${setCssVar('bgColor', brand.black)};\r\n ${setCssVar('bgColorAlt', brand.grey.grey10)};\r\n ${setCssVar('bgColorAlt2', brand.black)};\r\n ${setCssVar('accentColor', brand.orange)};\r\n ${setCssVar('colorScheme', 'dark')};\r\n`;\r\nexport const themes = {\r\n dark: darkTheme,\r\n light: lightTheme,\r\n};\r\nexport default brand;\r\n","import { hsl } from 'polished';\r\nconst greyscaleValues = [10, 18, 46, 73, 90, 96];\r\nconst greyscale = greyscaleValues.reduce((previous, current) => ({\r\n ...previous,\r\n [`grey${current}`]: grey(current),\r\n}), {});\r\nfunction grey(value) {\r\n return hsl(0, 0, value / 100);\r\n}\r\nexport { greyscale as default, grey };\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","const variables = [\r\n 'fgColor',\r\n 'bgColor',\r\n 'bgColorAlt',\r\n 'bgColorAlt2',\r\n 'accentColor',\r\n 'siteWidth',\r\n 'sitePadding',\r\n 'sectionMargin',\r\n 'colorScheme',\r\n];\r\nfunction cssVar(name) {\r\n return `var(--${name})`;\r\n}\r\nfunction setCssVar(name, value) {\r\n return `--${name}: ${value}`;\r\n}\r\nexport { cssVar, setCssVar };\r\n","import { css } from 'styled-components';\r\nexport default {\r\n brown: {\r\n thin: css `\r\n font-family: 'Brown', sans-serif;\r\n font-style: normal;\r\n font-weight: 100;\r\n `,\r\n thinItalic: css `\r\n font-family: 'Brown', sans-serif;\r\n font-weight: 100;\r\n font-style: italic;\r\n `,\r\n light: css `\r\n font-family: 'Brown', sans-serif;\r\n font-style: normal;\r\n font-weight: 300;\r\n `,\r\n lightItalic: css `\r\n font-family: 'Brown', sans-serif;\r\n font-weight: 300;\r\n font-style: italic;\r\n `,\r\n regular: css `\r\n font-family: 'Brown', sans-serif;\r\n font-style: normal;\r\n font-weight: 400;\r\n `,\r\n regularItalic: css `\r\n font-family: 'Brown', sans-serif;\r\n font-weight: 400;\r\n font-style: italic;\r\n `,\r\n bold: css `\r\n font-family: 'Brown', sans-serif;\r\n font-style: normal;\r\n font-weight: 700;\r\n `,\r\n boldItalic: css `\r\n font-family: 'Brown', sans-serif;\r\n font-weight: 700;\r\n font-style: italic;\r\n `,\r\n },\r\n};\r\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","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":""}