{"version":3,"file":"992-13830ec66a6bc8e17060.js","mappings":"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","sources":["webpack://brc/./src/helpers/aspectRatio.ts","webpack://brc/./src/helpers/image.ts","webpack://brc/./src/helpers/ssr.ts","webpack://brc/./src/helpers/utils.ts","webpack://brc/./src/hooks/useResize.ts","webpack://brc/./src/stories/Components/Misc/Carousels/Carousel/CarouselProvider/CarouselProvider.tsx","webpack://brc/./src/hooks/useCarousel.ts","webpack://brc/./src/stories/Components/Misc/Carousels/Carousel/Controls/Controls.styles.ts","webpack://brc/./src/stories/Components/Misc/Carousels/Carousel/Dots/Dots.styles.ts","webpack://brc/./src/stories/Components/Misc/Carousels/Carousel/MotionTrack/MotionTrack.styles.ts","webpack://brc/./src/stories/Components/Misc/Carousels/Carousel/MotionTrack/MotionTrack.tsx","webpack://brc/./src/stories/Components/Misc/Carousels/Carousel/Pagination/Pagination.styles.ts","webpack://brc/./src/stories/Components/Misc/HeadingSummaryBlock/HeadingSummaryBlock.styles.ts","webpack://brc/./src/stories/Components/Misc/HeadingSummaryBlock/HeadingSummaryBlock.tsx"],"sourcesContent":["import { css } from 'styled-components';\r\n/**\r\n * Returns the aspect ratio of the given width and height as a percentage.\r\n */\r\nexport function aspectRatio(width, height) {\r\n return (height / width) * 100;\r\n}\r\n/**\r\n * Re-usable styles for image container where the\r\n * image needs to maintain it's aspect ratio\r\n *\r\n * @param width\r\n * @param height\r\n * @returns\r\n */\r\nexport function imageWrapperPreserveRatio(width, height) {\r\n if (!width && !height) {\r\n return null;\r\n }\r\n return css `\r\n position: relative;\r\n overflow: hidden;\r\n overflow: clip;\r\n width: 100%;\r\n aspect-ratio: ${width / height};\r\n `;\r\n}\r\n/**\r\n * Calculates the percentage bottom padding\r\n * required to maintain a certain ratio.\r\n *\r\n * To be used in cases where the image ratio\r\n * changes based on viewport.\r\n *\r\n * @param width\r\n * @param height\r\n * @returns padding-bottom: {ratioPercentage}%\r\n */\r\nexport function imageWrapperRatioPadding(width, height) {\r\n if (!width && !height) {\r\n return '';\r\n }\r\n const ratioPercentage = aspectRatio(width, height).toFixed(2);\r\n return `padding-bottom: ${ratioPercentage}%`;\r\n}\r\n/**\r\n * Re-usable styles for an image placed within\r\n * a container maintaining aspect ratio\r\n */\r\nexport const imageCoverContainer = (relative) => css `\r\n display: block;\r\n width: 100%;\r\n height: 100%;\r\n object-fit: cover;\r\n object-position: center;\r\n ${!relative && 'position: absolute; top: 0;left: 0;'}\r\n`;\r\n","import queryString from 'query-string';\r\n/**\r\n * Create an image URL for ImageProcessor\r\n * @param image The image model\r\n * @param imageParams The image parameters\r\n * @returns The image URL\r\n */\r\nexport function imageUrl(image, imageParams) {\r\n if (!image) {\r\n return '';\r\n }\r\n const params = {\r\n rxy: image.focalPoint ? `${image.focalPoint.top},${image.focalPoint.left}` : undefined,\r\n ...imageParams,\r\n };\r\n if (params.width && params.heightratio) {\r\n params.height = Math.round(params.width / params.heightratio);\r\n }\r\n if (params.height && params.widthratio) {\r\n params.width = Math.round(params.height / params.widthratio);\r\n }\r\n const paramsString = queryString.stringify(params);\r\n return `${image.src}${paramsString ? `?${queryString.stringify(params)}` : ''}`;\r\n}\r\nexport function getSrcs(image, upper, lower, steps, ratio, imageParams) {\r\n if (!image) {\r\n return undefined;\r\n }\r\n const sizes = getRange(upper, lower, steps);\r\n const sizesArr = sizes.map((size) => `${imageUrl(image, { ...imageParams, width: size, heightratio: ratio })} ${size}w`);\r\n return {\r\n src: sizesArr[0].split(' ')[0],\r\n srcSet: sizesArr.join(','),\r\n };\r\n}\r\nexport function getRetinaSrcs(image, width, ratio) {\r\n const dprs = [1, 1.5, 2, 2.5, 3];\r\n const dprsArr = dprs.map((dpr) => `${imageUrl(image, { width: width * dpr, heightratio: ratio })} ${dpr}x`);\r\n return {\r\n src: dprsArr[0].split(' ')[0],\r\n srcSet: dprsArr.join(','),\r\n };\r\n}\r\nfunction getRange(upper, lower, steps) {\r\n const difference = upper - lower;\r\n const increment = difference / (steps - 1);\r\n return [\r\n lower,\r\n ...Array(steps - 2)\r\n .fill('')\r\n .map((_, index) => Math.ceil(lower + increment * (index + 1))),\r\n upper,\r\n ];\r\n}\r\n","export const isSSR = () => {\r\n const returnValue = !(typeof window != 'undefined' && window.document);\r\n return returnValue;\r\n};\r\n","export function sleep(ms) {\r\n return new Promise((resolve) => setTimeout(resolve, ms));\r\n}\r\nexport function formatNumberValue(value, maximumDecimals, minimumDigits) {\r\n const formatter = new Intl.NumberFormat(undefined, {\r\n maximumFractionDigits: maximumDecimals ?? 0,\r\n minimumIntegerDigits: minimumDigits ?? 1,\r\n });\r\n return formatter.format(value);\r\n}\r\n/** Clamp index to be within the min/max index range. */\r\nexport function clamp(value, max) {\r\n return Math.max(Math.min(value, max), 0);\r\n}\r\n/**\r\n * Rule structure for react-hook-form\r\n */\r\nexport const EMAIL_RULE = {\r\n message: `Please enter a valid email address`,\r\n value: /^[\\w\\-.\\d*]+@[\\w\\-\\d.]+(\\.\\w*)$/,\r\n};\r\nexport const highlightTitleWords = (title) => title.replaceAll(/\\*(.*?)\\*/g, '$1');\r\n","import debounce from 'lodash/debounce';\r\nimport * as React from 'react';\r\nexport function useResize(params) {\r\n const refWindowHeight = React.useRef();\r\n const refWindowWidth = React.useRef();\r\n const onResize = React.useCallback(debounce(() => {\r\n const prevHeight = refWindowHeight.current;\r\n const prevWidth = refWindowWidth.current;\r\n const newHeight = window.innerHeight;\r\n const newWidth = window.innerWidth;\r\n const shouldTrigger = params.on === 'both' ||\r\n (params.on === 'y' && prevHeight !== newHeight) ||\r\n (params.on === 'x' && prevWidth !== newWidth);\r\n if (shouldTrigger) {\r\n params.callback();\r\n }\r\n refWindowHeight.current = newHeight;\r\n refWindowWidth.current = newWidth;\r\n }, params.debounce), [params.debounce, params.on]);\r\n React.useEffect(() => {\r\n if (!params.callback) {\r\n return;\r\n }\r\n if (params.immediate) {\r\n onResize();\r\n }\r\n window.addEventListener('resize', onResize);\r\n return () => {\r\n window.removeEventListener('resize', onResize);\r\n };\r\n }, [params.on]);\r\n}\r\n","import { useCarousel } from '@hooks/useCarousel';\r\nimport noop from 'lodash/noop';\r\nimport * as React from 'react';\r\nconst CarouselContext = React.createContext({\r\n activeIndex: 0,\r\n goToIndex: noop,\r\n goToNext: noop,\r\n goToPrev: noop,\r\n reinitialise: noop,\r\n maxIndex: 0,\r\n offset: 0,\r\n offsets: [],\r\n recalculate: noop,\r\n refContainer: null,\r\n refTrack: null,\r\n count: 0,\r\n paddingOffset: 0,\r\n});\r\nexport const useCarouselContext = () => React.useContext(CarouselContext);\r\nconst CarouselProvider = ({ children, ...otherProps }) => {\r\n const carousel = useCarousel(otherProps);\r\n React.useEffect(() => {\r\n if (carousel.paddingOffset !== otherProps.paddingOffset) {\r\n carousel.reinitialise(carousel.count, otherProps.paddingOffset);\r\n }\r\n }, [otherProps.paddingOffset]);\r\n return React.createElement(CarouselContext.Provider, { value: carousel }, children);\r\n};\r\nexport default CarouselProvider;\r\n","import { clamp as doClamp } from '@helpers/utils';\r\nimport * as React from 'react';\r\nimport { useResize } from './useResize';\r\nexport function useCarousel(params) {\r\n const refContainer = React.useRef(null);\r\n const refTrack = React.useRef(null);\r\n const [carouselState, dispatch] = React.useReducer(carouselReducer, {\r\n activeIndex: 0,\r\n maxIndex: 0,\r\n offsets: [],\r\n count: 0,\r\n paddingOffset: 0,\r\n });\r\n useResize({\r\n callback: initCarousel,\r\n debounce: 100,\r\n immediate: true,\r\n on: 'x',\r\n });\r\n React.useEffect(() => {\r\n initCarousel();\r\n }, [carouselState.count, carouselState.paddingOffset]);\r\n return {\r\n ...carouselState,\r\n goToIndex,\r\n goToNext,\r\n goToPrev,\r\n reinitialise,\r\n recalculate: initCarousel,\r\n offset: carouselState.offsets[carouselState.activeIndex],\r\n refContainer,\r\n refTrack,\r\n count: carouselState.count,\r\n paddingOffset: carouselState.paddingOffset,\r\n };\r\n /**\r\n * Calculate the px offset for the track for the target item index.\r\n * @param index\r\n * @returns\r\n */\r\n function calculateOffset(index) {\r\n if (!refTrack.current) {\r\n return 0;\r\n }\r\n const items = Array.from(refTrack.current.children);\r\n const itemsUntilIndex = items.slice(0, index);\r\n const sum = itemsUntilIndex\r\n .map(el => el.getBoundingClientRect().width)\r\n .reduce((p, c) => p + c, 0);\r\n return sum;\r\n }\r\n /**\r\n * Initialise the reducer state.\r\n */\r\n function initCarousel() {\r\n const offsets = [];\r\n // Pre-calculate the px offset for each item in the carousel.\r\n Array.from(Array(params.count)).forEach((_, index) => {\r\n offsets.push(calculateOffset(index));\r\n });\r\n // Determine what the max index value needs to be in order for the last item to be within view.\r\n const containerWidth = (refContainer.current?.getBoundingClientRect().width ?? 0) - (params.paddingOffset ?? 0);\r\n const trackWidth = offsets[offsets.length - 1];\r\n let maxIndex = 0;\r\n for (let index = 0; index < offsets.length; index++) {\r\n const offset = offsets[index];\r\n const remainder = trackWidth - offset;\r\n /**\r\n * If the remainder is less than the container width, then the last item is within view.\r\n * Floor the values to avoid any partial pixels causing issues\r\n */\r\n if (Math.ceil(remainder) < Math.floor(containerWidth)) {\r\n maxIndex = index;\r\n break;\r\n }\r\n }\r\n // Remove peeking amount from end of carousel\r\n offsets[maxIndex] = offsets[maxIndex] - (params.paddingOffset ?? 0);\r\n // Initialise the carousel state.\r\n dispatch({\r\n type: 'init',\r\n payload: { offsets, maxIndex, count: params.count, paddingOffset: params.paddingOffset },\r\n });\r\n }\r\n /**\r\n * Go to the next item.\r\n */\r\n function goToNext(wrap) {\r\n dispatch({ type: 'next', payload: { wrap: wrap ?? false } });\r\n }\r\n /**\r\n * Go to the previous item.\r\n */\r\n function goToPrev(wrap) {\r\n dispatch({ type: 'prev', payload: { wrap: wrap ?? false } });\r\n }\r\n /**\r\n * Go to the target index.\r\n */\r\n function goToIndex(index) {\r\n dispatch({ type: 'goto', payload: index });\r\n }\r\n /**\r\n * Go to the target index.\r\n */\r\n function reinitialise(count, paddingOffset) {\r\n dispatch({ type: 'reinitialise', payload: { count, paddingOffset } });\r\n }\r\n function carouselReducer(state, action) {\r\n switch (action.type) {\r\n case 'init':\r\n return {\r\n activeIndex: 0,\r\n maxIndex: action.payload.maxIndex,\r\n offsets: action.payload.offsets,\r\n count: action.payload.count,\r\n paddingOffset: action.payload.paddingOffset,\r\n };\r\n case 'reinitialise':\r\n return {\r\n ...state,\r\n count: action.payload.count,\r\n paddingOffset: action.payload.paddingOffset,\r\n };\r\n case 'goto':\r\n return { ...state, activeIndex: clamp(action.payload) };\r\n case 'next':\r\n if (action.payload.wrap && state.activeIndex === state.maxIndex) {\r\n return { ...state, activeIndex: 0 };\r\n }\r\n return { ...state, activeIndex: clamp(state.activeIndex + 1) };\r\n case 'prev':\r\n if (action.payload.wrap && state.activeIndex === 0) {\r\n return { ...state, activeIndex: state.maxIndex };\r\n }\r\n return { ...state, activeIndex: clamp(state.activeIndex - 1) };\r\n }\r\n /** Clamp index to be within the min/max index range. */\r\n function clamp(value) {\r\n return doClamp(value, state.maxIndex);\r\n }\r\n }\r\n}\r\n","import { transition } from '@helpers/animate';\r\nimport brand from '@helpers/brand';\r\nimport { fluid } from '@helpers/fluid';\r\nimport { ButtonReset } from '@helpers/global';\r\nimport { Device, until } from '@helpers/media';\r\nimport styled from 'styled-components';\r\nconst Container = styled.nav `\r\n --buttonBgColour: ${brand.global.white};\r\n --buttonFgColour: ${brand.global.black};\r\n --buttonShadowColour: #bebebe;\r\n --buttonSize: ${fluid(40, 56)};\r\n --iconSize: 28px;\r\n\r\n display: flex;\r\n align-items: center;\r\n column-gap: ${fluid(8, 12)};\r\n`;\r\nconst Button = styled.button `\r\n ${ButtonReset};\r\n ${transition('opacity')};\r\n\r\n z-index: 1;\r\n display: flex;\r\n width: var(--buttonSize);\r\n height: var(--buttonSize);\r\n background-color: var(--buttonBgColour);\r\n border-radius: 100%;\r\n color: var(--buttonFgColour);\r\n box-shadow: 0px 1px 12px 0px var(--buttonShadowColour);\r\n overflow: hidden;\r\n\r\n &.focus-ring {\r\n outline: auto;\r\n outline-offset: 3px;\r\n outline-width: 2px;\r\n outline-color: var(--buttonFgColour);\r\n }\r\n\r\n /* Mobile click styles - button should mimic press */\r\n @media ${until(Device.TabletLarge)} {\r\n ${transition('transform', 0.15)};\r\n\r\n &:active {\r\n transform: translateY(1.5px);\r\n }\r\n }\r\n\r\n &.focus-ring,\r\n &:hover,\r\n &:active {\r\n svg:nth-child(1) {\r\n transform: translateX(var(--buttonSize));\r\n }\r\n\r\n svg:nth-child(2) {\r\n transform: translateX(0);\r\n }\r\n }\r\n\r\n &:disabled {\r\n opacity: 0.48;\r\n pointer-events: none;\r\n }\r\n`;\r\nconst Icon = styled.span `\r\n display: grid;\r\n place-content: center;\r\n height: 100%;\r\n width: 100%;\r\n\r\n ${Button}[data-prev] & {\r\n transform: scale(-1);\r\n }\r\n\r\n svg {\r\n ${transition('transform')};\r\n\r\n grid-area: 1 / 1 / 1 / 1;\r\n display: block;\r\n width: var(--iconSize);\r\n\r\n &:nth-child(2) {\r\n transform: translateX(calc(var(--buttonSize) * -1));\r\n }\r\n }\r\n`;\r\nconst ControlsStyles = {\r\n Container,\r\n Button,\r\n Icon,\r\n};\r\nexport default ControlsStyles;\r\n","import { transition } from '@helpers/animate';\r\nimport brand from '@helpers/brand';\r\nimport { Device, from } from '@helpers/media';\r\nimport styled from 'styled-components';\r\nconst Dots = styled.div `\r\n --activeColour: ${brand.primary.blue.light};\r\n --borderRadius: 8px;\r\n --inactiveColour: ${brand.primary.grey};\r\n\r\n display: flex;\r\n align-items: center;\r\n gap: var(--dotSize);\r\n border-radius: var(--borderRadius);\r\n background-color: var(--inactiveColour);\r\n height: 4px;\r\n width: 100%;\r\n\r\n @media ${from(Device.DesktopSmall)} {\r\n width: 64px;\r\n }\r\n`;\r\nconst Dot = styled.span `\r\n ${transition('max-width')};\r\n\r\n display: block;\r\n max-width: var(--progress, 0px);\r\n width: 100%;\r\n height: 100%;\r\n border-radius: var(--borderRadius);\r\n background-color: var(--activeColour);\r\n\r\n &[data-active='true'] {\r\n max-width: var(--dotActiveWidth);\r\n }\r\n`;\r\nexport const DotsStyles = {\r\n Dot,\r\n Dots,\r\n};\r\n","import { m } from 'framer-motion';\r\nimport styled from 'styled-components';\r\nconst Container = styled.div ``;\r\nconst Track = styled(m.ul) `\r\n display: flex;\r\n`;\r\nconst MotionTrackStyles = {\r\n Container,\r\n Track,\r\n};\r\nexport default MotionTrackStyles;\r\n","import { isSSR } from '@helpers/ssr';\r\nimport { useAnimation } from 'framer-motion';\r\nimport * as React from 'react';\r\nimport { useCarouselContext } from '../CarouselProvider/CarouselProvider';\r\nimport S from './MotionTrack.styles';\r\nconst MotionTrack = ({ children, enableCarousel = true, trackMutations = false, ...otherProps }) => {\r\n const animation = useAnimation();\r\n const carousel = useCarouselContext();\r\n const dragging = React.useRef(false);\r\n const xTransform = React.useRef(0);\r\n const maxOffset = carousel.offsets[carousel.maxIndex];\r\n const observer = !isSSR()\r\n ? new MutationObserver(() => {\r\n carousel.reinitialise(carousel.refTrack?.current?.childElementCount ?? 0, carousel.paddingOffset);\r\n })\r\n : null;\r\n React.useEffect(() => {\r\n if (!trackMutations || !observer || !carousel.refTrack?.current)\r\n return;\r\n observer.observe(carousel.refTrack?.current, { childList: true, subtree: true });\r\n return () => {\r\n if (observer) {\r\n observer.disconnect();\r\n }\r\n };\r\n }, [observer, trackMutations]);\r\n // Stop the drag momentum animation, and start a new animation to the correct offset.\r\n React.useEffect(() => {\r\n if (typeof carousel.offset !== 'undefined') {\r\n animation.stop();\r\n animation.start({ x: -carousel.offset });\r\n }\r\n }, [carousel.activeIndex]);\r\n return (React.createElement(S.Container, { ...otherProps, ref: carousel.refContainer },\r\n React.createElement(S.Track, { ref: carousel.refTrack, animate: animation, drag: enableCarousel ? 'x' : false, dragConstraints: { left: -maxOffset, right: 0 }, onClickCapture: (event) => {\r\n // Ignore click events after dragging, this prevents links being clicked when drag ends.\r\n if (dragging.current) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n dragging.current = false;\r\n }\r\n }, onDragStart: () => {\r\n dragging.current = true;\r\n }, onDragEnd: (_, info) => {\r\n // Get the absolute x value, avoiding overflow when dragging left.\r\n const absX = Math.abs(Math.min(xTransform.current, 0));\r\n // Determine the next target index.\r\n let targetIndex = carousel.offsets.findIndex((offset) => offset > absX) ?? 0;\r\n // If it is -1 then we scrolled past the max offset value.\r\n if (targetIndex === -1) {\r\n targetIndex = carousel.maxIndex;\r\n }\r\n // Ensure we take into account the drag direction.\r\n if (info.offset.x > 0) {\r\n targetIndex = Math.max(0, targetIndex - 1);\r\n }\r\n // Update the carousel state.\r\n carousel.goToIndex(targetIndex);\r\n // Update to false, so that it doesn't take multiple clicks on a carouselCard to register.\r\n setTimeout(function () {\r\n dragging.current = false;\r\n }, 10);\r\n }, onUpdate: (latest) => {\r\n // Store the current x position as the carousel is dragged.\r\n xTransform.current = typeof latest.x === 'number' ? latest.x : parseFloat(latest.x);\r\n } }, children)));\r\n};\r\nexport default MotionTrack;\r\n","import { fluid } from '@helpers/fluid';\r\nimport styled from 'styled-components';\r\nimport { DotsStyles } from '../Dots/Dots.styles';\r\nconst Container = styled.div `\r\n display: flex;\r\n align-items: center;\r\n gap: ${fluid(16, 24)};\r\n\r\n ${DotsStyles.Dots} {\r\n flex: 1;\r\n }\r\n`;\r\nconst PaginationStyles = {\r\n Container,\r\n};\r\nexport default PaginationStyles;\r\n","import { transition } from '@helpers/animate';\r\nimport brand, { BrandColours } from '@helpers/brand';\r\nimport { fluid } from '@helpers/fluid';\r\nimport fonts from '@helpers/fonts';\r\nimport { Device, from } from '@helpers/media';\r\nimport { contentStyles, h2, subheading } from '@helpers/typography';\r\nimport styled from 'styled-components';\r\nconst ContentWrapper = styled.div `\r\n display: flex;\r\n flex-direction: column;\r\n justify-content: center;\r\n\r\n [data-layout='central'] &,\r\n [data-layout='split'] & {\r\n max-width: 546px;\r\n }\r\n\r\n [data-layout='central'] & {\r\n margin-left: auto;\r\n margin-right: auto;\r\n }\r\n`;\r\nconst Container = styled.section `\r\n --headingMargin: ${fluid(8, 14)};\r\n\r\n display: flex;\r\n flex-direction: column;\r\n\r\n &[data-layout='default'],\r\n &[data-layout='central'] {\r\n max-width: 695px;\r\n }\r\n\r\n &[data-layout='central'] {\r\n text-align: center;\r\n margin-left: auto;\r\n margin-right: auto;\r\n }\r\n\r\n &:not(:has(${ContentWrapper})) {\r\n --headingMargin: 0px;\r\n }\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n &[data-layout='central'] {\r\n align-items: center;\r\n text-align: center;\r\n margin-left: auto;\r\n margin-right: auto;\r\n }\r\n\r\n &[data-layout='split'] {\r\n --headingMargin: 0px;\r\n\r\n flex-direction: row;\r\n justify-content: space-between;\r\n column-gap: ${fluid(56, 120)};\r\n }\r\n }\r\n`;\r\nconst HeadIcon = styled.div `\r\n display: none;\r\n\r\n [data-layout='central'] & {\r\n display: block;\r\n\r\n svg {\r\n width: ${fluid(48, 65)};\r\n height: ${fluid(48, 65)};\r\n }\r\n }\r\n`;\r\nconst Subheading = styled.span `\r\n ${subheading};\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n ${Container}[data-layout='split'] & {\r\n grid-column: 1 / span 1;\r\n }\r\n }\r\n`;\r\nconst Heading = styled.h2 `\r\n ${h2};\r\n\r\n text-wrap: pretty;\r\n margin-bottom: var(--headingMargin);\r\n color: var(--headingColour, currentColor);\r\n\r\n ${Container}[data-layout='split'] & {\r\n max-width: 695px;\r\n }\r\n\r\n > span {\r\n ${transition('background-size, color', 0.5)};\r\n\r\n display: inline;\r\n background-image: linear-gradient(\r\n to right,\r\n var(--highlightColour, transparent),\r\n var(--highlightColour, transparent)\r\n );\r\n background-repeat: no-repeat;\r\n background-size: 100% 100%;\r\n transition-delay: 200ms;\r\n color: var(--highlightTextColour, currentColor);\r\n padding: 0 8px;\r\n margin-left: -8px;\r\n\r\n ${Container}[data-animate='false'] & {\r\n background-size: 0% 100%;\r\n color: currentColor;\r\n }\r\n }\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n ${Container}[data-layout='split'] & {\r\n grid-column: 1 / span 1;\r\n }\r\n }\r\n`;\r\nconst LogoImage = styled.img `\r\n display: block;\r\n`;\r\nconst Content = styled.div `\r\n ${contentStyles};\r\n\r\n [data-theme=${BrandColours.PurpleDark}] &,\r\n [data-theme=${BrandColours.PurpleLight}] & {\r\n ol,\r\n ul {\r\n li::before {\r\n color: ${brand.global.white};\r\n }\r\n }\r\n }\r\n`;\r\nconst ButtonWrapper = styled.div `\r\n display: flex;\r\n gap: var(--headerBlockButtonsGap, ${fluid(16, 38)});\r\n flex-wrap: wrap;\r\n margin-top: ${fluid(16, 38)};\r\n`;\r\nconst DetailContent = styled.div `\r\n ${transition('transform, opacity', 0.5)};\r\n ${fonts.lato.semiBold};\r\n\r\n font-size: ${fluid(15, 16)};\r\n line-height: ${fluid(23, 26)};\r\n display: inline-flex;\r\n flex-wrap: wrap;\r\n gap: 8px 32px;\r\n margin-top: ${fluid(10, 14)};\r\n\r\n &:not(:last-child) {\r\n margin-bottom: ${fluid(10, 14)};\r\n }\r\n\r\n @media print {\r\n opacity: 1 !important;\r\n transform: translateY(0px) !important;\r\n }\r\n\r\n [data-animate='false'] & {\r\n opacity: 0;\r\n transform: translateY(20px);\r\n\r\n @media print {\r\n opacity: 1 !important;\r\n transform: translateY(0px) !important;\r\n }\r\n }\r\n\r\n [data-secondary=${BrandColours.White}] & {\r\n color: ${brand.grey.dark};\r\n }\r\n\r\n ::before {\r\n content: '';\r\n display: block;\r\n width: 5px;\r\n height: 5px;\r\n border-radius: 50%;\r\n background-color: ${brand.global.white};\r\n position: absolute;\r\n top: 50%;\r\n right: calc((37px / 2) * -1);\r\n transform: translateY(-50%);\r\n\r\n [data-secondary=${BrandColours.White}] & {\r\n background-color: ${brand.grey.dark};\r\n }\r\n }\r\n\r\n :last-child::before {\r\n content: none;\r\n }\r\n`;\r\nconst Detail = styled.span `\r\n display: inline-flex;\r\n align-items: center;\r\n gap: ${fluid(4, 8)};\r\n position: relative;\r\n\r\n svg {\r\n width: 24px;\r\n height: 24px;\r\n\r\n [data-secondary=${BrandColours.White}] & {\r\n color: ${brand.primary.purple.light};\r\n }\r\n }\r\n`;\r\nconst HeadingSummaryBlockStyles = {\r\n Container,\r\n HeadIcon,\r\n Heading,\r\n Subheading,\r\n LogoImage,\r\n Content,\r\n ContentWrapper,\r\n ButtonWrapper,\r\n DetailContent,\r\n Detail,\r\n};\r\nexport default HeadingSummaryBlockStyles;\r\n","import { rootMargin } from '@helpers/animate';\r\nimport { getSvgIcon, InterfaceIcon } from '@helpers/icons';\r\nimport { highlightTitleWords } from '@helpers/utils';\r\nimport { useInView } from '@hooks/useInView';\r\nimport { LinkButton } from '@stories/Components/Buttons/Button/Button';\r\nimport * as React from 'react';\r\nimport S from './HeadingSummaryBlock.styles';\r\nconst HeadingSummaryBlock = (props) => {\r\n const [containerRef, inView] = useInView({ rootMargin }, false, props.pageContext?.isEditMode);\r\n if (!props.summary && !props.heading) {\r\n return null;\r\n }\r\n function hasContent() {\r\n return !!props.summary || (props.ctas && props.ctas.length > 0)\r\n || !!props.date || !!props.time\r\n || !!props.location || !!props.readTime;\r\n }\r\n return (React.createElement(S.Container, { ref: containerRef, \"data-layout\": props.layout ?? 'default', \"data-animate\": inView },\r\n React.createElement(\"div\", null,\r\n props.headIcon && React.createElement(S.HeadIcon, null, getSvgIcon(props.headIcon)),\r\n props.subheading && React.createElement(S.Subheading, null, props.subheading),\r\n props.heading && (React.createElement(S.Heading, { as: props.headingType, dangerouslySetInnerHTML: { __html: highlightTitleWords(props.heading) } })),\r\n props.logoImage && (React.createElement(S.LogoImage, { src: props.logoImage.src, alt: props.logoImage.altText, loading: \"lazy\" }))),\r\n hasContent() ? (React.createElement(S.ContentWrapper, null,\r\n props.summary && React.createElement(S.Content, { dangerouslySetInnerHTML: { __html: props.summary } }),\r\n props.date || props.time || props.location || props.readTime ? (React.createElement(S.DetailContent, null,\r\n props.date && (React.createElement(S.Detail, null,\r\n getSvgIcon(InterfaceIcon.CalendarBlank),\r\n props.date)),\r\n props.time && (React.createElement(S.Detail, null,\r\n getSvgIcon(InterfaceIcon.Clock),\r\n props.time)),\r\n props.location && (React.createElement(S.Detail, null,\r\n getSvgIcon(InterfaceIcon.Location),\r\n props.location)),\r\n props.readTime && (React.createElement(S.Detail, null,\r\n props.readTime,\r\n \" \",\r\n props.translations?.['global.readtime.label'] ?? '')))) : null,\r\n props.ctas && props.ctas.length > 0 ? (React.createElement(S.ButtonWrapper, { \"data-variant\": props.ctaWrapperVariant }, props.ctas.map((cta, i) => (React.createElement(LinkButton, { key: `${cta.text}-${props.heading}-${i}`, buttonType: cta.buttonType ? cta.buttonType : 'primary', href: cta.url, target: cta.target, icon: cta.icon }, cta.text))))) : null)) : null));\r\n};\r\nexport default HeadingSummaryBlock;\r\n"],"names":["imageWrapperPreserveRatio","width","height","css","imageCoverContainer","relative","imageUrl","image","imageParams","params","rxy","focalPoint","top","left","undefined","heightratio","Math","round","widthratio","paramsString","queryString","src","getSrcs","upper","lower","steps","ratio","sizes","increment","Array","fill","map","_","index","ceil","getRange","sizesArr","size","split","srcSet","join","isSSR","window","document","sleep","ms","Promise","resolve","setTimeout","clamp","value","max","min","highlightTitleWords","title","replaceAll","useResize","refWindowHeight","React","refWindowWidth","onResize","debounce","prevHeight","current","prevWidth","newHeight","innerHeight","newWidth","innerWidth","on","callback","immediate","addEventListener","removeEventListener","CarouselContext","activeIndex","goToIndex","noop","goToNext","goToPrev","reinitialise","maxIndex","offset","offsets","recalculate","refContainer","refTrack","count","paddingOffset","useCarouselContext","_ref","children","otherProps","carousel","carouselState","dispatch","state","action","type","payload","wrap","doClamp","initCarousel","_refContainer$current","_refContainer$current2","_params$paddingOffset","_params$paddingOffset2","from","forEach","push","slice","el","getBoundingClientRect","reduce","p","c","calculateOffset","containerWidth","trackWidth","length","remainder","floor","useCarousel","Provider","Container","styled","nav","withConfig","displayName","componentId","brand","global","white","black","fluid","Button","button","ButtonReset","transition","until","Device","TabletLarge","Icon","span","Dots","div","primary","blue","light","grey","DesktopSmall","DotsStyles","Dot","Track","m","ul","enableCarousel","trackMutations","animation","useAnimation","dragging","xTransform","maxOffset","observer","MutationObserver","_carousel$refTrack$cu","_carousel$refTrack","_carousel$refTrack$cu2","childElementCount","_carousel$refTrack2","_carousel$refTrack3","observe","childList","subtree","disconnect","stop","start","x","S","ref","animate","drag","dragConstraints","right","onClickCapture","event","preventDefault","stopPropagation","onDragStart","onDragEnd","info","_carousel$offsets$fin","absX","abs","targetIndex","findIndex","onUpdate","latest","parseFloat","ContentWrapper","section","HeadIcon","Subheading","subheading","Heading","h2","LogoImage","img","Content","contentStyles","BrandColours","PurpleDark","PurpleLight","ButtonWrapper","DetailContent","fonts","lato","semiBold","White","dark","Detail","purple","props","_props$pageContext","_props$layout","_props$translations$g","_props$translations","containerRef","inView","useInView","rootMargin","pageContext","isEditMode","summary","heading","layout","headIcon","getSvgIcon","as","headingType","dangerouslySetInnerHTML","__html","logoImage","alt","altText","loading","ctas","date","time","location","readTime","InterfaceIcon","CalendarBlank","Clock","Location","translations","ctaWrapperVariant","cta","i","LinkButton","key","text","buttonType","href","url","target","icon"],"sourceRoot":""}