{"version":3,"file":"7181-7ccadecd7e4c0c5ff2bd.js","mappings":"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","sources":["webpack://react-app/./components/Shared/tailwind.config.js","webpack://react-app/./components/Shared/src/utility/hooks/useDevicePixelRatio.ts","webpack://react-app/./components/Shared/src/components/atoms/Image/Image.tsx","webpack://react-app/./components/Shared/src/components/atoms/Text/Text.tsx","webpack://react-app/./components/Shared/src/components/molecules/HeroMedia/HeroMedia.tsx","webpack://react-app/./components/Shared/src/components/molecules/VideoButton/VideoButton.tsx","webpack://react-app/./components/Shared/src/models/IHero.ts","webpack://react-app/./components/Shared/src/models/enums/BreakpointEnum.ts","webpack://react-app/./components/Shared/src/models/enums/SiteEnum.ts","webpack://react-app/./components/Shared/src/models/enums/ThemeEnum.ts","webpack://react-app/./components/Shared/src/utility/config/backgroundColours.ts","webpack://react-app/./components/Shared/src/utility/format/parseNumberInString.ts","webpack://react-app/./components/Shared/src/utility/config/breakpoints.ts","webpack://react-app/./components/Shared/src/utility/hooks/useBreakpoint.ts"],"sourcesContent":["/* eslint-env node */\n/* eslint-disable @typescript-eslint/no-var-requires */\n\n/** @type {import('tailwindcss').Config} */\n\nconst screens = {\n sm: '375px',\n md: '752px',\n lg: '1024px',\n xl: '1408px',\n xxl: '1600px',\n};\n\nmodule.exports = {\n darkMode: 'selector',\n prefix: 'tw-',\n content: [\n './.storybook/**/*.{js,jsx,mdx,ts,tsx}',\n './src/components/**/*.{js,jsx,mdx,ts,tsx}',\n ],\n theme: {\n screens,\n listStyleType: {\n none: 'none',\n disc: 'disc',\n decimal: 'decimal',\n square: 'square',\n },\n container: {\n screens,\n center: true,\n padding: {\n DEFAULT: '16px',\n sm: '16px',\n md: '32px',\n lg: '48px',\n xl: '48px',\n '2xl': '48px',\n },\n },\n fontFamily: {\n sans: '\"Noto Sans\", ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\"',\n serif:\n '\"Playfair Display\",ui-serif, Georgia, Cambria, \"Times New Roman\", Times, serif',\n mono: '\"Noto Sans Mono\", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace',\n icon: 'icomoon',\n },\n fontSize: {\n xs: ['0.75rem', '1rem'],\n sm: ['0.875rem', '1.25rem'],\n base: ['1rem', '1.5rem'],\n lg: ['1.125rem', '1.625rem'],\n xl: ['1.3125rem', '1.75rem'],\n '2xl': ['1.5rem', '2rem'],\n '3xl': ['1.75rem', '2.25rem'],\n '4xl': ['2rem', '2.5rem'],\n '5xl': ['2.25rem', '2.75rem'],\n '6xl': ['2.5rem', '3rem'],\n '7xl': ['3rem', '3.5rem'],\n '8xl': ['3.5rem', '4rem'],\n },\n lineHeight: {\n xs: '1rem',\n sm: '1.25rem',\n base: '1.5rem',\n lg: '1.625rem',\n xl: '1.75rem',\n '2xl': '2rem',\n '3xl': '2.25rem',\n '4xl': '2.5rem',\n '5xl': '2.75rem',\n '6xl': '3rem',\n '7xl': '3.5rem',\n '8xl': '4rem',\n },\n fontWeight: {\n light: '300',\n normal: '400',\n semibold: '600',\n },\n colors: {\n blue: {\n DEFAULT: '#031E45',\n },\n yellow: {\n DEFAULT: '#F0AB00',\n hover: '#F1B32D',\n active: '#EDBE46',\n disabled: '#FBE6B3',\n },\n red: {\n DEFAULT: '#D52B1E',\n hover: '#E11E0F',\n active: '#EC0E00',\n disabled: '#F2BFBC',\n },\n green: {\n DEFAULT: '#329E36',\n },\n grey: {\n 100: '#202020',\n 90: '#333333',\n 80: '#4D4D4D',\n 70: '#666666',\n 60: '#808080',\n 50: '#999999',\n 40: '#B3B3B3',\n 30: '#CCCCCC',\n 20: '#E6E6E6',\n 10: '#F7F7F7',\n },\n white: {\n DEFAULT: '#FFFFFF',\n },\n black: {\n DEFAULT: '#202020',\n },\n transparent: 'transparent',\n background: {\n amber: '#AF8A76', // light\n amberDark: '#806A62', // dark\n beige: '#E9D8B8', // light\n beigeDark: '#A98259', // light\n brownGray: '#79736D', // dark\n brownGrey: '#79736D', // dark\n coral: '#DBC4B7', // light\n coralDark: '#985F56', // dark\n darkGrey: '#E6E6E6', // light\n gBSGreen: '#276D00', // dark\n gBSHarpGreen: '#E5EFEA', // light\n gBSLightGreen: '#478326', // dark\n gBSPalmGreen: '#012317', // dark\n gBSSummerGreen: '#C4D0B0', // light\n graphite: '#70666C', //dark\n jotunBlue: '#031E45', // dark\n jotunYellow: '#F0AB00', // light\n lightBlue: '#E6E9F0', // light\n lightGreen: '#E6F0EB', // light\n lightgrey: '#F7F7F7', // light\n lightGrey: '#F7F7F7', // light\n oceanDark: '#19262C', // dark\n olive: '#C9D0C5', // light\n oliveDark: '#646556', // dark\n pearl: '#F3F4ED', // light\n sand: '#E7DFCD', // light\n sandDark: '#CEC1B1', // light\n slate: '#A5BCC3', // light\n slateDark: '#4E616C', // dark\n white: '#FFFFFF', // light\n },\n },\n extend: {\n fill: {\n current: 'currentColor',\n },\n stroke: {\n current: 'currentColor',\n },\n transitionTimingFunction: {\n 'in-out-quart': 'cubic-bezier(0.76, 0, 0.24, 1)',\n },\n borderRadius: {\n DEFAULT: '4px',\n md: '10px',\n },\n borderWidth: {\n 1: '1px',\n },\n spacing: {\n '4xs': '0.125rem', // 2px\n '3xs': '0.25rem', // 4px\n xxs: '0.5rem', // 8px\n xs: '1rem', // 16px\n sm: '1.5rem', // 24px\n md: '2rem', // 32px\n lg: '2.5rem', // 40px\n xl: '3rem', // 48px\n '2xl': '4rem', // 64px\n '3xl': '5rem', // 80px\n '4xl': '6rem', // 96px\n '5xl': '7.5rem', // 120px\n buttonY: '0.875rem', // 14px\n },\n zIndex: {\n max: '999',\n 100: '100',\n 90: '90',\n 80: '80',\n 70: '70',\n 60: '60',\n },\n },\n },\n future: { hoverOnlyWhenSupported: true },\n plugins: [require('@tailwindcss/container-queries')],\n};\n","import { useEffect, useState } from 'react';\n\nconst useDevicePixelRatio = (): number | undefined => {\n const [devicePixelRatio, setDevicePixelRatio] = useState();\n\n const updateDevicePixelRatio = (): void => {\n setDevicePixelRatio(window.devicePixelRatio);\n };\n\n useEffect(() => {\n updateDevicePixelRatio();\n\n window.addEventListener('resize', updateDevicePixelRatio);\n\n return () => {\n window.removeEventListener('resize', updateDevicePixelRatio);\n };\n }, []);\n\n return devicePixelRatio;\n};\n\nexport default useDevicePixelRatio;\n","import { IImage } from '@models/IImage';\nimport BreakpointEnum from '@models/enums/BreakpointEnum';\nimport breakpoints from '@utility/config/breakpoints';\nimport useBreakpoint from '@utility/hooks/useBreakpoint';\nimport useDevicePixelRatio from '@utility/hooks/useDevicePixelRatio';\nimport classNames from 'classnames';\nimport {\n PropsWithChildren,\n RefObject,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n} from 'react';\n\ninterface Props {\n readonly aspectRatio?: number;\n readonly classes?: string;\n readonly containerRef?: RefObject;\n readonly image: IImage;\n readonly imageClasses?: string;\n readonly lazyLoad?: boolean;\n readonly quality?: number;\n readonly sizes?: string;\n readonly height?: number;\n readonly width?: number;\n readonly onLoad?: () => void;\n}\n\nconst Image = ({\n aspectRatio, // width / height e.g. 0.5, 2 etc.\n children,\n classes,\n containerRef,\n image,\n imageClasses,\n lazyLoad = true,\n quality = 70,\n sizes = '',\n height,\n width,\n onLoad,\n}: PropsWithChildren) => {\n const devicePixelRatio = useDevicePixelRatio() ?? 1;\n const breakpoint = useBreakpoint() ?? BreakpointEnum.XLarge;\n const imgRef = useRef(null);\n\n const { url, altText, originalHeight, originalWidth, imageFocalPoint } =\n image ?? {};\n const fileExtension = url?.substring(url?.lastIndexOf('.') + 1);\n const hasParams = url?.includes('&'); // For images not coming from Opti\n const containerWidth = containerRef?.current?.clientWidth;\n\n const breakpointWidths = [\n 375 * devicePixelRatio,\n 752 * devicePixelRatio,\n 1024 * devicePixelRatio,\n 1408 * devicePixelRatio,\n 1600 * devicePixelRatio,\n ];\n\n const calculatedAspectRatio = useMemo(() => {\n if (aspectRatio) return aspectRatio;\n\n if (originalWidth && originalHeight) return originalWidth / originalHeight;\n }, [aspectRatio, originalWidth, originalHeight]);\n\n const generateUrlWithExtensions = useCallback(\n (width?: number) => {\n const qParam = quality ? `&quality=${quality}` : '';\n const fpParam = imageFocalPoint\n ? `&rxy=${imageFocalPoint.replace('|', ',')}`\n : '';\n\n if (!width) {\n return `${url}?format=webp$${fpParam}${qParam}`;\n }\n\n const wParam = `&width=${width}`;\n const h = aspectRatio ? width / aspectRatio : height;\n const hParam = h ? `&height=${h}` : '';\n\n return `${url}?format=webp${wParam}${hParam}${fpParam}${qParam}`;\n },\n [url, quality, calculatedAspectRatio, imageFocalPoint]\n );\n\n const srcSet = useMemo(() => {\n return breakpointWidths\n .map(\n (bpWidth, i) =>\n `${generateUrlWithExtensions(\n i < breakpointWidths.length - 1 ? bpWidth : 1920\n )} ${bpWidth}w`\n )\n .join(', ');\n }, [breakpointWidths]);\n\n if (!url || devicePixelRatio == null) return null;\n\n if (fileExtension === 'svg' || isValidBase64ImageSource(url)) {\n return (\n \n );\n }\n\n useEffect(() => {\n // Fallback - sometimes onLoad does not trigger if the image is cached\n if (imgRef?.current?.complete && onLoad) onLoad();\n }, [imgRef]);\n\n return (\n <>\n \n {!width && !containerWidth && !hasParams && (\n \n )}\n \n {children}\n \n \n );\n};\n\nconst isValidBase64ImageSource = (imageSrc: string) => {\n const regex = /^data:image\\/(png|jpg|jpeg|gif);base64,[A-Za-z0-9+/]+={0,2}$/;\n return regex.test(imageSrc);\n};\n\nexport default Image;\n","import classNames from 'classnames';\n\nexport type TextVariant = keyof typeof variantClasses;\n\ninterface ExplicitProps {\n variant: TextVariant;\n className?: string;\n children?: string | string[] | TrustedHTML;\n}\n\n// This allows Text Component props to match the props of the element defined by 'as'\ntype PropsWithAs =\n Partial<\n ExplicitProps & {\n as: TElementType;\n }\n >;\n\ntype TextProps =\n PropsWithAs &\n Omit, keyof PropsWithAs>;\n\nconst __DEFAULT_ELEMENT__ = 'p';\n\nconst variantClasses = {\n 'hero-headline': 'tw-font-serif tw-text-4xl md:tw-text-7xl xl:tw-text-8xl',\n headline: 'tw-font-serif tw-text-3xl xl:tw-text-5xl',\n 'sub-headline': 'tw-font-sans tw-text-2xl', // alt name - heading-24\n // New Design System Variants\n 'ds-sub-headline': 'tw-font-serif tw-text-4xl md:tw-text-5xl xl:tw-text-7xl',\n 'ds-headline-2': 'tw-text-3xl md:tw-text-4xl xl:tw-text-5xl tw-font-serif',\n 'ds-headline-3': 'tw-text-xl lg:tw-text-2xl tw-font-sans tw-font-light',\n 'ds-headline-4': 'tw-font-sans tw-text-lg lg:tw-text-xl',\n 'ds-quote': 'tw-font-serif tw-text-2xl lg:tw-text-3xl',\n 'ds-paragraph': 'tw-font-sans tw-text-sm lg:tw-text-base',\n body: 'tw-font-sans tw-text-base', // alt name - body-16\n 'body-small': 'tw-font-sans tw-text-sm', // alt name - body-14\n // secondary / non-responsive variants\n 'heading-56': 'tw-font-serif tw-text-8xl',\n 'heading-48': 'tw-font-serif tw-text-7xl',\n 'heading-40': 'tw-font-serif tw-text-6xl',\n 'heading-36': 'tw-font-serif tw-text-5xl',\n 'heading-32': 'tw-font-serif tw-text-4xl',\n 'heading-28': 'tw-font-serif tw-text-3xl',\n 'heading-24-light': 'tw-font-sans tw-text-2xl tw-font-light',\n 'heading-21': 'tw-font-sans tw-text-xl',\n 'heading-21-light': 'tw-font-sans tw-text-xl tw-font-light',\n 'body-18': 'tw-font-sans tw-text-lg',\n 'body-18-semibold': 'tw-font-sans tw-text-lg tw-font-semibold',\n 'body-16-semibold': 'tw-font-sans tw-font-semibold',\n 'body-14-semibold': 'tw-font-sans tw-text-sm tw-font-semibold',\n 'mono-14': 'tw-font-mono tw-text-sm',\n 'mono-12': 'tw-font-mono tw-text-xs',\n 'mono-14-semibold': 'tw-font-mono tw-text-sm tw-font-semibold',\n 'mono-12-semibold': 'tw-font-mono tw-text-xs tw-font-semibold',\n 'label-12': 'tw-font-sans tw-text-xs',\n 'label-12-semibold': 'tw-font-sans tw-text-xs tw-font-semibold',\n};\n\nconst defaultTags: Record<\n string,\n 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6' | 'p' | 'code' | 'label'\n> = {\n 'hero-headline': 'h1',\n headline: 'h2',\n 'sub-headline': 'h3',\n body: 'p',\n 'heading-56': 'h1',\n 'heading-48': 'h2',\n 'heading-40': 'h3',\n 'heading-36': 'h4',\n 'heading-32': 'h5',\n 'heading-28': 'h6',\n 'heading-24-light': 'h6',\n 'heading-21': 'h4',\n 'body-small': 'p',\n 'body-18': 'p',\n 'body-18-semibold': 'p',\n 'body-16-semibold': 'p',\n 'body-14-semibold': 'p',\n 'mono-14': 'code',\n 'mono-12': 'code',\n 'mono-14-semibold': 'code',\n 'mono-12-semibold': 'code',\n 'label-12': 'label',\n 'label-12-semibold': 'label',\n};\n\nfunction Text<\n TElementType extends React.ElementType = typeof __DEFAULT_ELEMENT__\n>({\n as,\n className,\n variant = 'body',\n children,\n ...props\n}: TextProps) {\n const combinedClassName = classNames(variantClasses[variant], className);\n const Tag = as ?? defaultTags[variant] ?? 'span';\n\n return (\n \n {children}\n \n );\n}\n\nexport default Text;\n","import Image from '@atoms/Image/Image';\nimport { IImage } from '@models/IImage';\nimport { IVideo } from '@models/IVideo';\nimport { VideoButton } from '@molecules/VideoButton/VideoButton';\nimport classNames from 'classnames';\nimport { useRef, useState } from 'react';\n\ninterface IHeroMedia {\n className: string;\n image?: IImage;\n mobileImage?: IImage;\n video?: IVideo;\n hasPlayButton?: boolean;\n darkFont?: boolean;\n playButtonLabel: string;\n videoConfig?: string;\n isSplit: boolean;\n autoPlay?: boolean;\n muted?: boolean;\n}\n\nconst HeroImageComponent = ({\n src,\n className,\n width,\n height,\n isSplit,\n}: {\n src: IImage;\n className: string;\n width?: number;\n height?: number;\n isSplit: boolean;\n}) => {\n const [loaded, setLoaded] = useState(false);\n return (\n setLoaded(true)}\n sizes={isSplit ? '(max-width: 1408px) 100vw, 50vw' : '100vw'}\n />\n );\n};\n\nexport const HeroMedia = ({\n className,\n image,\n video,\n hasPlayButton,\n darkFont = false,\n playButtonLabel,\n videoConfig = '',\n mobileImage,\n isSplit,\n autoPlay = true,\n muted = true,\n}: IHeroMedia) => {\n const [videoError, setVideoError] = useState(false);\n const [playVideo, setPlayVideo] = useState(autoPlay);\n const videoRef = useRef(null);\n\n const heroImage = (\n <>\n {mobileImage ? (\n \n ) : null}\n {image ? (\n \n ) : null}\n \n );\n\n return (\n
\n {image && (!video || videoError || hasPlayButton) ? heroImage : null}\n {hasPlayButton && video ? (\n
\n \n
\n ) : null}\n {video && !hasPlayButton ? (\n
\n setVideoError(true)}\n >\n \n {/* Fallback image */}\n {image ? heroImage : null}\n \n {!playVideo && !autoPlay ? (\n
\n {\n videoRef.current?.play();\n setPlayVideo(!playVideo);\n }}\n />\n
\n ) : null}\n
\n ) : null}\n
\n );\n};\n","import Icon from '@atoms/Icon/Icon';\n\ninterface IVideoButton {\n readonly videoSource?: string;\n readonly videoConfig?: string;\n readonly playButtonLabel: string;\n readonly darkFont: boolean;\n readonly onClick?: () => void;\n}\n\nexport const VideoButton = ({\n videoSource,\n videoConfig,\n playButtonLabel,\n darkFont,\n onClick,\n}: IVideoButton) => {\n let qbrickAttrs = {};\n\n if (videoSource && videoConfig) {\n qbrickAttrs = {\n 'data-video': videoSource,\n 'data-qbrick-config': videoConfig,\n 'aria-controls': 'modal-video',\n };\n }\n return (\n \n {playButtonLabel}\n \n \n );\n};\n","import SiteEnum from './enums/SiteEnum';\nimport ThemeEnum from './enums/ThemeEnum';\nimport VariantTypeEnum from './enums/VariantTypeEnum';\nimport { IImage } from './IImage';\nimport { ILink } from './ILink';\nimport { IVideo } from './IVideo';\n\nexport interface IHeroBase {\n readonly backgroundColour?: string;\n readonly fontColour: ThemeEnum;\n readonly hasPlayButton: boolean;\n readonly image?: IImage;\n readonly mobileImage?: IImage;\n readonly playButtonLabel: string;\n readonly site: SiteEnum;\n readonly subText?: string;\n readonly title?: string;\n readonly trumpetText?: string;\n readonly variant: HeroVariantEnum;\n readonly video?: IVideo;\n readonly videoConfig: string;\n}\n\nexport interface IMediaHero extends IHeroBase {\n readonly trumpetImage?: IImage;\n readonly ctaOne?: ILink;\n readonly ctaStyle?: VariantTypeEnum;\n readonly ctaTwo?: ILink;\n}\n\nexport enum HeroVariantEnum {\n Full = 'fullWidth',\n Split = 'split',\n SplitReverse = 'splitReverse',\n Stacked = 'stacked',\n}\n","enum BreakpointEnum {\n Small = 'sm',\n Medium = 'md',\n Large = 'lg',\n XLarge = 'xl',\n Max = 'xxl',\n}\n\nexport default BreakpointEnum;\n","const enum SiteEnum {\n B2B = 'b2b',\n Deco = 'deco',\n}\n\nexport default SiteEnum;\n","const enum ThemeEnum {\n Light = 'light',\n Dark = 'dark',\n}\n\nexport default ThemeEnum;\n","// See Design system: https://www.figma.com/file/BkPALTSRIDsNtMbs55hWeN/%F0%9F%8E%A8-Jotun-Digital-Design-System-Version-1.0.4---DEPT?type=design&node-id=31-13&mode=design&t=2WhTFMSLrUjDcDmh-0\nimport resolveConfig from 'tailwindcss/resolveConfig';\nimport tailwindConfig from '../../../tailwind.config';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst fullConfig = resolveConfig(tailwindConfig as any);\nconst colourConfig = fullConfig.theme.colors;\n\nconst greyBackgrounds = {\n gray1: colourConfig.grey[10],\n gray2: colourConfig.grey[20],\n gray3: colourConfig.grey[70],\n gray4: colourConfig.grey[80],\n gray5: colourConfig.grey[90],\n gray6: colourConfig.grey[100],\n black: colourConfig.black.DEFAULT,\n};\n\nconst backgroundColours = {\n ...colourConfig.background,\n ...greyBackgrounds,\n};\n\nexport const darkBackgrounds = [\n 'amberDark',\n 'brownGray',\n 'brownGrey',\n 'coralDark',\n 'gBSGreen',\n 'gBSLightGreen',\n 'gBSPalmGreen',\n 'graphite',\n 'gray4',\n 'gray5',\n 'gray6',\n 'jotunBlue',\n 'oceanDark',\n 'oliveDark',\n 'slateDark',\n];\n\nexport default backgroundColours;\n","// Will parse a pixel string to a number e.g. '762px' => 762\n\nconst parseNumberInString = (pixelValue: string) => {\n const match = pixelValue.match(/\\d+/);\n\n if (match) {\n return parseInt(match[0], 10);\n }\n\n return 0;\n};\n\nexport default parseNumberInString;\n","import BreakpointEnum from '@models/enums/BreakpointEnum';\nimport Breakpoint from '@models/helpers/Breakpoint';\nimport parseNumberInString from '@utility/format/parseNumberInString';\nimport resolveConfig from 'tailwindcss/resolveConfig';\nimport tailwindConfig from '../../../tailwind.config';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst fullConfig = resolveConfig(tailwindConfig as any);\n\nconst { sm, md, lg, xl, xxl } = fullConfig.theme.screens;\n\nconst breakpoints = {\n sm: parseNumberInString(sm),\n md: parseNumberInString(md),\n lg: parseNumberInString(lg),\n xl: parseNumberInString(xl),\n xxl: parseNumberInString(xxl),\n};\n\nexport default breakpoints;\n\nconst breakpointArray: Breakpoint[] = Object.values(BreakpointEnum);\n\nexport const breakpointsBelow = (breakpoint: Breakpoint) => {\n const upperIndex = breakpointArray.indexOf(breakpoint);\n return breakpointArray.slice(0, upperIndex);\n};\n\nexport const breakpointsAbove = (breakpoint: Breakpoint) => {\n const lowerIndex = breakpointArray.indexOf(breakpoint) + 1;\n return breakpointArray.slice(lowerIndex);\n};\n","import BreakpointEnum from '@models/enums/BreakpointEnum';\nimport Breakpoint from '@models/helpers/Breakpoint';\nimport breakpoints from '@utility/config/breakpoints';\nimport { useCallback, useEffect, useState } from 'react';\n\nconst getCurrentBreakpoint = (): Breakpoint => {\n const width = window.innerWidth;\n let device;\n\n if (width < breakpoints.md) {\n device = BreakpointEnum.Small;\n } else if (width < breakpoints.lg) {\n device = BreakpointEnum.Medium;\n } else if (width < breakpoints.xl) {\n device = BreakpointEnum.Large;\n } else if (width < breakpoints.xxl) {\n device = BreakpointEnum.XLarge;\n } else device = BreakpointEnum.Max;\n\n return device;\n};\n\nconst useBreakpoint = (): Breakpoint | undefined => {\n const [screen, setScreen] = useState();\n\n const resizeHandler = useCallback(() => {\n setScreen(getCurrentBreakpoint());\n }, []);\n\n useEffect(() => {\n window.addEventListener('resize', resizeHandler);\n setScreen(getCurrentBreakpoint());\n\n return () => {\n window.removeEventListener('resize', resizeHandler);\n };\n }, [resizeHandler]);\n\n return screen;\n};\n\nexport default useBreakpoint;\n"],"names":["screens","sm","md","lg","xl","xxl","module","exports","darkMode","prefix","content","theme","listStyleType","none","disc","decimal","square","container","center","padding","DEFAULT","fontFamily","sans","serif","mono","icon","fontSize","xs","base","lineHeight","fontWeight","light","normal","semibold","colors","blue","yellow","hover","active","disabled","red","green","grey","white","black","transparent","background","amber","amberDark","beige","beigeDark","brownGray","brownGrey","coral","coralDark","darkGrey","gBSGreen","gBSHarpGreen","gBSLightGreen","gBSPalmGreen","gBSSummerGreen","graphite","jotunBlue","jotunYellow","lightBlue","lightGreen","lightgrey","lightGrey","oceanDark","olive","oliveDark","pearl","sand","sandDark","slate","slateDark","extend","fill","current","stroke","transitionTimingFunction","borderRadius","borderWidth","spacing","xxs","buttonY","zIndex","max","future","hoverOnlyWhenSupported","plugins","useDevicePixelRatio","devicePixelRatio","setDevicePixelRatio","useState","updateDevicePixelRatio","window","useEffect","addEventListener","removeEventListener","isValidBase64ImageSource","imageSrc","test","_ref","aspectRatio","children","classes","containerRef","image","imageClasses","lazyLoad","quality","sizes","height","width","onLoad","breakpoint","useBreakpoint","BreakpointEnum","XLarge","imgRef","useRef","url","altText","originalHeight","originalWidth","imageFocalPoint","fileExtension","substring","lastIndexOf","hasParams","includes","containerWidth","clientWidth","breakpointWidths","calculatedAspectRatio","useMemo","generateUrlWithExtensions","useCallback","qParam","fpParam","replace","h","srcSet","map","bpWidth","i","length","join","React","createElement","src","alt","className","draggable","complete","Fragment","classNames","type","ref","style","loading","breakpoints","variantClasses","headline","body","defaultTags","as","variant","props","combinedClassName","Tag","_extends","HeroImageComponent","isSplit","loaded","setLoaded","Image","HeroMedia","_ref2","video","hasPlayButton","darkFont","playButtonLabel","videoConfig","mobileImage","autoPlay","muted","videoError","setVideoError","playVideo","setPlayVideo","videoRef","heroImage","VideoButton","videoSource","preload","loop","controls","playsInline","onError","onClick","play","qbrickAttrs","Icon","name","size","colorClassName","HeroVariantEnum","SiteEnum","ThemeEnum","colourConfig","resolveConfig","tailwindConfig","greyBackgrounds","gray1","gray2","gray3","gray4","gray5","gray6","backgroundColours","darkBackgrounds","pixelValue","match","parseInt","fullConfig","parseNumberInString","breakpointArray","Object","values","breakpointsBelow","upperIndex","indexOf","slice","breakpointsAbove","lowerIndex","getCurrentBreakpoint","innerWidth","device","Small","Medium","Large","Max","screen","setScreen","resizeHandler"],"sourceRoot":""}