{"version":3,"file":"328-dfa009ed4b7a81bb82bf.js","mappings":"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","sources":["webpack://james-fisher/./src/img/icons/article-cta-arrow.svg","webpack://james-fisher/./src/img/icons/carousel-next.svg","webpack://james-fisher/./src/img/icons/carousel-prev.svg","webpack://james-fisher/./src/hoc/withMotionMax.tsx","webpack://james-fisher/./src/hooks/useCarousel.ts","webpack://james-fisher/./src/hooks/useIntersectionObserver.ts","webpack://james-fisher/./src/hooks/useInView.ts","webpack://james-fisher/./src/stories/Components/Button/Button.tsx","webpack://james-fisher/./src/stories/Components/CardCarousel/CardCarousel.styles.ts","webpack://james-fisher/./src/stories/Components/CardCarousel/CardCarousel.tsx","webpack://james-fisher/./src/stories/Components/Carousel/CarouselProvider/CarouselProvider.tsx","webpack://james-fisher/./src/stories/Components/Carousel/Connected/Connected.tsx","webpack://james-fisher/./src/stories/Components/Carousel/LiveRegion/LiveRegion.styles.ts","webpack://james-fisher/./src/stories/Components/Carousel/LiveRegion/LiveRegion.tsx","webpack://james-fisher/./src/stories/Components/Carousel/MotionTrack/MotionTrack.styles.ts","webpack://james-fisher/./src/stories/Components/Carousel/MotionTrack/MotionTrack.tsx","webpack://james-fisher/./src/stories/Components/LinkButton/LinkButton.tsx","webpack://james-fisher/./src/stories/Components/SimpleImage/SimpleImage.styles.ts","webpack://james-fisher/./src/stories/Components/SimpleImage/SimpleImage.tsx"],"sourcesContent":["var _defs, _g;\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : 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\nconst SvgArticleCtaArrow = props => /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 17,\n height: 17\n}, props), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"article-cta-arrow_svg__a\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n fill: \"currentColor\",\n d: \"M0 0h17v17H0z\"\n})))), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n fill: \"none\",\n stroke: \"currentColor\",\n clipPath: \"url(#article-cta-arrow_svg__a)\"\n}, /*#__PURE__*/React.createElement(\"g\", {\n strokeLinecap: \"square\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 59\",\n d: \"M15.359 8.494 7.924 1.059\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 60\",\n d: \"m15.359 8.494-7.435 7.435\"\n})), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Line 19\",\n d: \"M2 8.69h13.306\"\n}))));\n\nexport default SvgArticleCtaArrow;","var _defs, _g;\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : 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\nconst SvgCarouselNext = props => /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 15,\n height: 15\n}, props), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"carousel-next_svg__a\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n fill: \"none\",\n stroke: \"currentColor\",\n d: \"M0 0h15v15H0z\"\n})))), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n fill: \"none\",\n stroke: \"currentColor\",\n clipPath: \"url(#carousel-next_svg__a)\"\n}, /*#__PURE__*/React.createElement(\"g\", {\n strokeLinecap: \"square\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 101\",\n d: \"M13.552 7.495 6.992.935\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 102\",\n d: \"m13.552 7.495-6.56 6.56\"\n})), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Line 39\",\n d: \"M1.765 7.668h11.741\"\n}))));\n\nexport default SvgCarouselNext;","var _defs, _g;\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : 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\nconst SvgCarouselPrev = props => /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 15,\n height: 15\n}, props), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"carousel-prev_svg__a\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n fill: \"none\",\n stroke: \"currentColor\",\n d: \"M0 0h15v15H0z\"\n})))), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n fill: \"none\",\n stroke: \"currentColor\",\n clipPath: \"url(#carousel-prev_svg__a)\"\n}, /*#__PURE__*/React.createElement(\"g\", {\n strokeLinecap: \"square\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 101\",\n d: \"m1.448 7.495 6.56-6.56\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 102\",\n d: \"m1.448 7.495 6.56 6.56\"\n})), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Line 39\",\n d: \"M13.235 7.668H1.494\"\n}))));\n\nexport default SvgCarouselPrev;","import { domMax, LazyMotion } from 'framer-motion';\r\nimport React from 'react';\r\nexport function withMotionMax(WrappedComponent) {\r\n const displayName = WrappedComponent.displayName || WrappedComponent.name || 'Component';\r\n const ComponentWithMotionMax = (props) => {\r\n return (React.createElement(LazyMotion, { features: domMax, strict: true },\r\n React.createElement(WrappedComponent, { ...props })));\r\n };\r\n ComponentWithMotionMax.displayName = `withMotionMax(${displayName})`;\r\n return ComponentWithMotionMax;\r\n}\r\n","import debounce from 'lodash/debounce';\r\nimport * as React from 'react';\r\nexport var CarouselAlignment;\r\n(function (CarouselAlignment) {\r\n CarouselAlignment[\"Left\"] = \"left\";\r\n CarouselAlignment[\"Center\"] = \"center\";\r\n})(CarouselAlignment || (CarouselAlignment = {}));\r\nexport var CarouselDirection;\r\n(function (CarouselDirection) {\r\n CarouselDirection[\"Horizontal\"] = \"horizontal\";\r\n CarouselDirection[\"Vertical\"] = \"vertical\";\r\n})(CarouselDirection || (CarouselDirection = {}));\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 alignment: params.alignment ?? CarouselAlignment.Left,\r\n direction: params.direction ?? CarouselDirection.Horizontal,\r\n maxIndex: 0,\r\n offsets: [],\r\n });\r\n const onResize = React.useCallback(debounce(initCarousel, 100), []);\r\n React.useEffect(() => {\r\n initCarousel();\r\n window.addEventListener('resize', onResize);\r\n return () => {\r\n window.removeEventListener('resize', onResize);\r\n };\r\n }, []);\r\n return {\r\n ...carouselState,\r\n goToIndex,\r\n goToNext,\r\n goToPrev,\r\n recalculate: initCarousel,\r\n offset: carouselState.offsets[carouselState.activeIndex],\r\n refContainer,\r\n refTrack,\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, alignment, direction) {\r\n if (!refContainer.current) {\r\n return 0;\r\n }\r\n if (!refTrack.current) {\r\n return 0;\r\n }\r\n const items = Array.from(refTrack.current.children);\r\n // Calculate width of container.\r\n const containerSize = getDimension(refContainer.current.getBoundingClientRect(), direction);\r\n // Calculate width of item.\r\n const itemSize = getDimension(items[index].getBoundingClientRect(), direction);\r\n // Get all items before the current item.\r\n const itemsUntilIndex = items.slice(0, index);\r\n // Calculate size of all items up to current.\r\n const itemSizes = itemsUntilIndex\r\n .map((el) => el.getBoundingClientRect())\r\n .map((rect) => getDimension(rect, direction));\r\n const itemSizeTotal = itemSizes.reduce((p, c) => p + c, 0);\r\n if (alignment === CarouselAlignment.Center) {\r\n return itemSizeTotal + itemSize / 2 - containerSize / 2;\r\n }\r\n else {\r\n return itemSizeTotal;\r\n }\r\n }\r\n function getDimension(rect, direction) {\r\n switch (direction) {\r\n case CarouselDirection.Horizontal:\r\n return rect.width;\r\n case CarouselDirection.Vertical:\r\n return rect.height;\r\n default:\r\n return 0;\r\n }\r\n }\r\n /**\r\n * Initialise the reducer state.\r\n */\r\n function initCarousel() {\r\n const offsets = [];\r\n const alignment = params.alignment ?? CarouselAlignment.Left;\r\n const direction = params.direction ?? CarouselDirection.Horizontal;\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, alignment, direction));\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;\r\n const trackWidth = offsets[offsets.length - 1];\r\n let maxIndex = 0;\r\n if (alignment === CarouselAlignment.Center) {\r\n maxIndex = offsets.length - 1;\r\n }\r\n else {\r\n for (let index = 0; index < offsets.length; index++) {\r\n const offset = offsets[index];\r\n const remainder = trackWidth - offset;\r\n if (remainder <= containerWidth) {\r\n maxIndex = index + 1;\r\n break;\r\n }\r\n }\r\n }\r\n // Initialise the carousel state.\r\n dispatch({ type: 'init', payload: { alignment, direction, offsets, maxIndex } });\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 function carouselReducer(state, action) {\r\n switch (action.type) {\r\n case 'init':\r\n return {\r\n activeIndex: 0,\r\n alignment: action.payload.alignment,\r\n direction: action.payload.direction,\r\n maxIndex: action.payload.maxIndex,\r\n offsets: action.payload.offsets,\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 Math.max(Math.min(value, state.maxIndex), 0);\r\n }\r\n }\r\n}\r\n","import { useEffect, useRef } from 'react';\r\n/**\r\n * Use the IntersectionObserver to track visibility of an element in the viewport.\r\n * @param {IntersectionObserverCallback} callback\r\n * @param {IntersectionObserverInit} options\r\n * @returns {UseIntersectionObserverReturn}\r\n */\r\nfunction useIntersectionObserver(callback, options = {}) {\r\n const observerRef = useRef(null);\r\n const rootRef = useRef(null);\r\n const elementRef = useRef(null);\r\n useEffect(() => {\r\n if (!elementRef.current) {\r\n return undefined;\r\n }\r\n observerRef.current = new IntersectionObserver(callback, {\r\n root: rootRef.current,\r\n ...options,\r\n });\r\n observerRef.current.observe(elementRef.current);\r\n return () => {\r\n if (observerRef.current === null) {\r\n return;\r\n }\r\n observerRef.current.disconnect();\r\n };\r\n }, [callback, options]);\r\n return { elementRef, observerRef, rootRef };\r\n}\r\nexport default useIntersectionObserver;\r\n","import { useState } from 'react';\r\nimport useIntersectionObserver from './useIntersectionObserver';\r\nexport function useInView(options, reverse = false, isEditMode = false) {\r\n const [inView, setInView] = useState(false);\r\n const { elementRef } = useIntersectionObserver((entries) => {\r\n if (entries[0].isIntersecting) {\r\n setInView(true);\r\n }\r\n else if (reverse === true) {\r\n setInView(false);\r\n }\r\n }, options);\r\n return [elementRef, isEditMode ? true : inView];\r\n}\r\n","import SvgArrow from '@img/icons/arrow-right.svg';\r\nimport * as React from 'react';\r\nimport S from './Button.styles';\r\nconst Button = ({ buttonType, children, fillDirection = 'right', icon, iconOnly, iconPosition = 'right', ...otherProps }) => {\r\n return (React.createElement(S.Container, { \"data-fill\": fillDirection, \"data-icon-only\": iconOnly, \"data-icon-position\": iconPosition, \"data-type\": buttonType, ...otherProps },\r\n React.createElement(S.Text, null, children),\r\n React.createElement(S.IconWrapper, null, icon ?? React.createElement(SvgArrow, null))));\r\n};\r\nexport default Button;\r\n","import { inViewFade, inViewFadeUp } from '@helpers/animate';\r\nimport brand from '@helpers/brand';\r\nimport { baseGrid } from '@helpers/grid';\r\nimport { Device, from, until } from '@helpers/media';\r\nimport { h3, subhead } from '@helpers/typography';\r\nimport styled from 'styled-components';\r\nimport SectionWrapper from '../SectionWrapper/SectionWrapper';\r\nconst Container = styled(SectionWrapper) `\r\n --itemGutter: 24px;\r\n\r\n background: var(--bgColor);\r\n color: var(--fgColor);\r\n overflow-x: hidden;\r\n padding-block: 64px;\r\n\r\n &[data-theme='light'] {\r\n --bgColor: ${brand.grey.grey1};\r\n --fgColor: ${brand.grey.grey6};\r\n }\r\n\r\n &[data-theme='mid'] {\r\n --bgColor: ${brand.grey.grey4};\r\n --fgColor: ${brand.white};\r\n }\r\n\r\n &[data-theme='dark'] {\r\n --bgColor: ${brand.grey.grey6};\r\n --fgColor: ${brand.white};\r\n }\r\n\r\n @media ${from(Device.DesktopSmall)} {\r\n --itemGutter: 40px;\r\n }\r\n`;\r\nconst Inner = styled.div `\r\n ${baseGrid};\r\n row-gap: 24px;\r\n width: 100%;\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n grid-template-rows: auto auto 1fr;\r\n }\r\n`;\r\nconst ContentWrapper = styled.div `\r\n position: relative;\r\n display: flex;\r\n flex-direction: column;\r\n z-index: 2;\r\n\r\n @media ${until(Device.TabletLarge)} {\r\n grid-column: 1 / span 12;\r\n grid-row: 1;\r\n }\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n grid-column: 1 / span 3;\r\n grid-row: 1;\r\n }\r\n`;\r\nconst Title = styled.h2 `\r\n ${h3};\r\n\r\n ${inViewFadeUp({ delay: 0, duration: 0.3 })};\r\n`;\r\nconst Content = styled.p `\r\n ${subhead};\r\n\r\n ${inViewFadeUp({ delay: 0.15, duration: 0.3 })};\r\n`;\r\nconst CtaWrapper = styled.div `\r\n @media ${until(Device.TabletLarge)} {\r\n grid-column: 1 / span 12;\r\n grid-row: 4;\r\n justify-self: flex-end;\r\n }\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n grid-column: 1 / span 3;\r\n grid-row: 3;\r\n margin-top: auto;\r\n }\r\n\r\n ${inViewFadeUp({ delay: 0.3, duration: 0.3 })};\r\n`;\r\nconst CarouselWrapper = styled.div `\r\n clip-path: polygon(0% 0%, 100vw 0%, 100vw 100%, 0% 100%);\r\n grid-column: 1 / span 12;\r\n grid-row: 2;\r\n margin-top: 3rem;\r\n padding-right: 3rem;\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n grid-column: 4 / span 9;\r\n grid-row: 1 / span 3;\r\n margin-top: 0;\r\n }\r\n\r\n ${inViewFade({ delay: 0, duration: 0.6 })};\r\n`;\r\nconst Item = styled.li `\r\n display: block;\r\n flex: 0 0 calc(100% / var(--visibleItems));\r\n max-width: 100%;\r\n padding-right: var(--itemGutter);\r\n`;\r\nconst ControlsWrapper = styled.div `\r\n display: flex;\r\n gap: 8px;\r\n user-select: none;\r\n\r\n @media ${until(Device.TabletLarge)} {\r\n gap: 8px;\r\n grid-column: 1 / span 12;\r\n grid-row: 3;\r\n justify-self: flex-end;\r\n }\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n gap: 32px;\r\n grid-column: 1 / span 3;\r\n grid-row: 2;\r\n }\r\n\r\n ${inViewFadeUp({ delay: 0.3, duration: 0.3 })};\r\n`;\r\nconst CardCarouselStyles = {\r\n CarouselWrapper,\r\n Container,\r\n Content,\r\n ContentWrapper,\r\n ControlsWrapper,\r\n CtaWrapper,\r\n Inner,\r\n Item,\r\n Title,\r\n};\r\nexport default CardCarouselStyles;\r\n","import { inViewMargin } from '@helpers/animate';\r\nimport { useInView } from '@hooks/useInView';\r\nimport SvgNext from '@img/icons/carousel-next.svg';\r\nimport SvgPrev from '@img/icons/carousel-prev.svg';\r\nimport { MotionConfig } from 'framer-motion';\r\nimport * as React from 'react';\r\nimport Button from '../Button/Button';\r\nimport CarouselProvider from '../Carousel/CarouselProvider/CarouselProvider';\r\nimport Connected from '../Carousel/Connected/Connected';\r\nimport LiveRegion from '../Carousel/LiveRegion/LiveRegion';\r\nimport MotionTrack from '../Carousel/MotionTrack/MotionTrack';\r\nimport LinkButton from '../LinkButton/LinkButton';\r\nimport S from './CardCarousel.styles';\r\nfunction CardCarousel(props) {\r\n const [refContainer, inView] = useInView({ rootMargin: inViewMargin });\r\n return (React.createElement(MotionConfig, { transition: { duration: 0.45, ease: 'easeOut' } },\r\n React.createElement(CarouselProvider, { count: props.items.length },\r\n React.createElement(S.Container, { ref: refContainer, id: props.id, className: props.className, \"data-inview\": inView, \"data-theme\": props.themeOption ?? 'dark' },\r\n React.createElement(S.Inner, null,\r\n React.createElement(S.ContentWrapper, null,\r\n React.createElement(S.Title, { id: props.title.replaceAll(/[\\W_]+/g, '-').toLowerCase() }, props.title),\r\n props.content && React.createElement(S.Content, null, props.content)),\r\n React.createElement(Connected, null, ({ activeIndex, goToNext, goToPrev, maxIndex }) => (React.createElement(S.ControlsWrapper, null,\r\n React.createElement(Button, { buttonType: props.themeOption === 'light' ? 'default' : 'inverted', disabled: activeIndex === 0, fillDirection: \"left\", icon: React.createElement(SvgPrev, null), iconOnly: true, onClick: (event) => {\r\n event.preventDefault();\r\n goToPrev();\r\n } }, \"Previous\"),\r\n React.createElement(Button, { buttonType: props.themeOption === 'light' ? 'default' : 'inverted', disabled: activeIndex === maxIndex, fillDirection: \"right\", icon: React.createElement(SvgNext, null), iconOnly: true, onClick: (event) => {\r\n event.preventDefault();\r\n goToNext();\r\n } }, \"Next\")))),\r\n props.cta && (React.createElement(S.CtaWrapper, null,\r\n React.createElement(LinkButton, { buttonType: props.themeOption === 'light' ? 'default' : 'inverted', href: props.cta.url, target: props.cta.target }, props.cta.text))),\r\n React.createElement(S.CarouselWrapper, null,\r\n React.createElement(LiveRegion, null),\r\n React.createElement(MotionTrack, null, props.items.map((item, index) => (React.createElement(S.Item, { key: item.id }, props.renderItem(item, index)))))))))));\r\n}\r\nexport default CardCarousel;\r\n","import { CarouselAlignment, CarouselDirection, 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 alignment: CarouselAlignment.Left,\r\n direction: CarouselDirection.Horizontal,\r\n goToIndex: noop,\r\n goToNext: noop,\r\n goToPrev: 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});\r\nexport const useCarouselContext = () => React.useContext(CarouselContext);\r\nconst CarouselProvider = ({ children, ...otherProps }) => {\r\n const carousel = useCarousel(otherProps);\r\n return React.createElement(CarouselContext.Provider, { value: carousel }, children);\r\n};\r\nexport default CarouselProvider;\r\n","import { useCarouselContext } from '../CarouselProvider/CarouselProvider';\r\nconst Connected = ({ children }) => {\r\n const carousel = useCarouselContext();\r\n return children(carousel);\r\n};\r\nexport default Connected;\r\n","import srOnly from '@helpers/srOnly';\r\nimport styled from 'styled-components';\r\nconst Container = styled.section `\r\n ${srOnly}\r\n`;\r\nconst LiveRegionStyles = {\r\n Container,\r\n};\r\nexport default LiveRegionStyles;\r\n","import * as React from 'react';\r\nimport { useCarouselContext } from '../CarouselProvider/CarouselProvider';\r\nimport S from './LiveRegion.styles';\r\nconst LiveRegion = React.forwardRef((props, ref) => {\r\n const carousel = useCarouselContext();\r\n return (React.createElement(S.Container, { ...props, ref: ref, \"aria-live\": \"polite\", \"aria-atomic\": \"true\" },\r\n carousel.activeIndex + 1,\r\n \" of \",\r\n carousel.maxIndex + 1));\r\n});\r\nLiveRegion.displayName = 'LiveRegion';\r\nexport default LiveRegion;\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 SimpleTrackStyles = {\r\n Container,\r\n Track,\r\n};\r\nexport default SimpleTrackStyles;\r\n","import { 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, ...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 // 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: \"x\", 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 }, 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 SvgArrow from '@img/icons/arrow-right.svg';\r\nimport * as React from 'react';\r\nimport S from '../Button/Button.styles';\r\nconst LinkButton = ({ buttonType, children, fillDirection = 'right', icon, iconOnly, iconPosition = 'right', ...otherProps }) => {\r\n return (React.createElement(S.Container, { as: \"a\", \"data-fill\": fillDirection, \"data-icon-only\": iconOnly, \"data-icon-position\": iconPosition, \"data-type\": buttonType, ...otherProps },\r\n React.createElement(S.Text, null, children),\r\n React.createElement(S.IconWrapper, null, icon ?? React.createElement(SvgArrow, null))));\r\n};\r\nexport default LinkButton;\r\n","import styled from 'styled-components';\r\nconst Img = styled.img ``;\r\nconst SimpleImageStyles = {\r\n Img,\r\n};\r\nexport default SimpleImageStyles;\r\n","import * as React from 'react';\r\nimport S from './SimpleImage.styles';\r\nconst SimpleImage = React.forwardRef(({ alt = '', loading = 'lazy', ...otherProps }, ref) => {\r\n return (React.createElement(React.Fragment, null,\r\n React.createElement(S.Img, { ...otherProps, ref: ref, alt: alt, loading: loading, role: alt === '' ? 'presentation' : undefined })));\r\n});\r\nSimpleImage.displayName = 'SimpleImage';\r\nexport default SimpleImage;\r\n"],"names":["_defs","_g","_extends","Object","assign","bind","target","i","arguments","length","source","key","prototype","hasOwnProperty","call","apply","this","props","xmlns","width","height","id","fill","d","stroke","clipPath","strokeLinecap","withMotionMax","WrappedComponent","displayName","name","ComponentWithMotionMax","React","LazyMotion","features","domMax","strict","CarouselAlignment","CarouselDirection","useCarousel","params","refContainer","refTrack","carouselState","dispatch","state","action","type","activeIndex","alignment","payload","direction","maxIndex","offsets","clamp","wrap","value","Math","max","min","Left","Horizontal","onResize","debounce","initCarousel","window","addEventListener","removeEventListener","goToIndex","index","goToNext","goToPrev","recalculate","offset","getDimension","rect","Vertical","Array","from","count","forEach","_","push","current","items","children","containerSize","getBoundingClientRect","itemSize","itemSizeTotal","slice","map","el","reduce","p","c","Center","calculateOffset","containerWidth","trackWidth","callback","options","observerRef","useRef","rootRef","elementRef","useEffect","IntersectionObserver","root","observe","disconnect","useInView","reverse","isEditMode","inView","setInView","useState","useIntersectionObserver","entries","isIntersecting","buttonType","fillDirection","icon","iconOnly","iconPosition","otherProps","S","SvgArrow","Container","styled","SectionWrapper","brand","Device","Inner","baseGrid","ContentWrapper","until","Title","h3","inViewFadeUp","delay","duration","Content","subhead","CtaWrapper","CarouselWrapper","inViewFade","Item","ControlsWrapper","rootMargin","inViewMargin","MotionConfig","transition","ease","CarouselProvider","ref","className","themeOption","title","replaceAll","toLowerCase","content","Connected","Button","disabled","SvgPrev","onClick","event","preventDefault","SvgNext","cta","LinkButton","href","url","text","LiveRegion","MotionTrack","item","renderItem","CarouselContext","noop","useCarouselContext","carousel","Provider","srOnly","Track","m","animation","useAnimation","dragging","xTransform","maxOffset","stop","start","x","animate","drag","dragConstraints","left","right","onClickCapture","stopPropagation","onDragStart","onDragEnd","info","absX","abs","targetIndex","findIndex","onUpdate","latest","parseFloat","as","Img","SimpleImage","alt","loading","role","undefined"],"sourceRoot":""}