{"version":3,"file":"ParallaxHero-Chunk-ad4c71489737b0e6f33b.js","mappings":"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","sources":["webpack://nikon-client/./components/atoms/Button/Button.tsx","webpack://nikon-client/./components/atoms/Image/Image.tsx","webpack://nikon-client/./components/organisms/ParallaxHero/ParallaxHero.tsx","webpack://nikon-client/./models/enums/BreakpointEnum.ts","webpack://nikon-client/./utility/hooks/useBreakpoint.ts","webpack://nikon-client/./utility/hooks/useMediaQuery.ts","webpack://nikon-client/./assets/hue_hero.svg"],"sourcesContent":["import { ILink } from '@models/ILink';\nimport classNames from 'classnames';\nimport {\n ButtonHTMLAttributes,\n DetailedHTMLProps,\n PropsWithChildren,\n} from 'react';\n\ninterface Props {\n readonly className?: string;\n readonly dataTestId?: string;\n readonly disabled?: boolean;\n readonly editHint?: string;\n readonly link?: ILink;\n readonly linkCallback?: () => void;\n readonly secondary?: boolean;\n readonly secondaryBackgroundClassName?: string;\n readonly isLightMode?: boolean;\n readonly inverted?: boolean;\n}\n\ntype ButtonProps = Props &\n DetailedHTMLProps, HTMLButtonElement>;\n\nconst Button = ({\n children,\n className,\n dataTestId,\n disabled = false,\n editHint,\n link,\n linkCallback,\n secondary = false,\n secondaryBackgroundClassName = 'bg-transparent',\n isLightMode,\n inverted = false,\n ...buttonProps\n}: PropsWithChildren) => {\n const buttonClasses = classNames(\n {\n 'bg-yellow py-1 px-4 text-black-100 hover:bg-yellow-100 focus:bg-yellow-500 active:bg-yellow-500':\n !disabled && !secondary && !inverted,\n //\n [`${secondaryBackgroundClassName} border border-yellow py-[3px] px-[15px] text-black-100 hover:border-yellow-100 hover:bg-yellow-100 hover:text-black-100 focus:border-yellow-500 focus:bg-yellow-500 active:border-yellow-500 active:bg-yellow-500 ${\n isLightMode\n ? ''\n : 'dark:text-white dark:hover:text-black-100 dark:focus:text-black-100 dark:active:text-black-100'\n }`]: !disabled && secondary && !inverted,\n //\n 'bg-grey text-grey-500 py-1 px-4': disabled,\n //\n 'bg-black text-white py-1 px-4 active:bg-grey-600 hover:bg-grey-600 focus:bg-grey-600':\n !disabled && !secondary && inverted,\n },\n 'cta rounded-full inline-block min-h-min select-none',\n className\n );\n\n return link?.url && (link?.name || children) && !disabled ? (\n \n {children || link.name}\n \n ) : (\n \n {children}\n \n );\n};\n\nexport default Button;\n","import BreakpointEnum from '@models/enums/BreakpointEnum';\nimport { IImage } from '@models/IImage';\nimport useBreakpoint from '@utils/hooks/useBreakpoint';\nimport classNames from 'classnames';\nimport { PropsWithChildren, RefObject, useState } from 'react';\n\ninterface Props {\n readonly classes?: string;\n readonly dataTestId?: string;\n readonly epiEdit?: string;\n readonly image?: IImage;\n readonly imageClasses?: string;\n readonly imageRef?:\n | RefObject\n | ((node: HTMLElement | null) => void);\n readonly lazyLoad?: boolean;\n readonly progressiveLoad?: boolean;\n readonly sizes?: string;\n}\n\nconst Image = ({\n children,\n classes,\n dataTestId,\n epiEdit,\n image,\n imageClasses,\n imageRef,\n lazyLoad = true,\n progressiveLoad = true,\n sizes = '',\n}: PropsWithChildren) => {\n const mobileSource = image?.mobile;\n const tabletSource = image?.tablet;\n const desktopSource = image?.desktop;\n const largeDesktopSource = image?.largeDesktop;\n const breakpoint = useBreakpoint() as BreakpointEnum;\n const [isLoaded, setIsLoaded] = useState(false);\n\n if (!desktopSource?.url) return null;\n\n const currentSrc = {\n [BreakpointEnum.Small]: mobileSource,\n [BreakpointEnum.Medium]: tabletSource,\n [BreakpointEnum.Large]: desktopSource,\n [BreakpointEnum.XLarge]: largeDesktopSource,\n };\n\n return (\n \n \n setIsLoaded(true)}\n sizes={sizes}\n src={\n isLoaded && progressiveLoad\n ? currentSrc[breakpoint]?.url\n : mobileSource?.url\n }\n height={currentSrc[breakpoint]?.height}\n width={currentSrc[breakpoint]?.width}\n srcSet={`${mobileSource?.originalUrl} 376w, ${tabletSource?.originalUrl} 768w, ${desktopSource?.originalUrl} 1024w, ${largeDesktopSource?.originalUrl} 1440w`}\n {...(dataTestId && { 'data-testid': dataTestId })}\n />\n {isLoaded && children}\n \n );\n};\n\nexport default Image;\n","import Hue from '@assets/hue_hero.svg';\nimport Button from '@atoms/Button/Button';\nimport Image from '@atoms/Image/Image';\nimport { IImage } from '@models/IImage';\nimport { ILink } from '@models/ILink';\nimport useMediaQuery from '@utils/hooks/useMediaQuery';\nimport { motion, useScroll, useSpring, useTransform } from 'framer-motion';\nimport { useRef } from 'react';\n\ninterface Props {\n readonly anchorId?: string;\n readonly bottomImage: IImage;\n readonly link: ILink;\n readonly title: string;\n readonly topImage: IImage;\n}\n\nconst ParallaxHero = ({\n anchorId = '',\n bottomImage,\n link,\n title,\n topImage,\n}: Props) => {\n const ref = useRef(null);\n const { scrollYProgress } = useScroll({\n offset: ['start end', 'end start'],\n target: ref,\n });\n const { scrollYProgress: pageScrollYProgress } = useScroll();\n const isMobileView = useMediaQuery(767);\n\n const y1 = useTransform(\n scrollYProgress,\n [0, 1],\n isMobileView ? [-50, 50] : [-150, 150]\n );\n const y2 = useTransform(\n scrollYProgress,\n [0, 1],\n isMobileView ? [25, -75] : [100, -250]\n );\n const scale = useTransform(scrollYProgress, [0, 1], [1.1, 0.9]);\n\n const transform = useTransform(pageScrollYProgress, [0, 1], ['0%', '-100%']);\n const physics = {\n damping: 15,\n mass: 0.27,\n stiffness: 55,\n };\n const spring = useSpring(transform, physics);\n\n return (\n \n \n
\n \n {link?.url && link?.name && (\n \n )}\n
\n
\n \n \n \n \n \n \n \n \n \n
\n \n \n );\n};\n\nexport default ParallaxHero;\n","const enum BreakpointEnum {\n Small = 'sm',\n Medium = 'md',\n Large = 'lg',\n XLarge = 'xl',\n}\n\nexport default BreakpointEnum;\n","import BreakpointEnum from '@models/enums/BreakpointEnum';\nimport { useCallback, useEffect, useState } from 'react';\n\nconst getCurrentBreakpoint = () => {\n const breakpoints = { tablet: 768, desktop: 1024, lgDesktop: 1440 };\n const width = window.innerWidth;\n\n if (width < breakpoints.tablet) {\n return BreakpointEnum.Small;\n }\n if (width >= breakpoints.tablet && width < breakpoints.desktop) {\n return BreakpointEnum.Medium;\n }\n if (width >= breakpoints.desktop && width < breakpoints.lgDesktop) {\n return BreakpointEnum.Large;\n }\n return BreakpointEnum.XLarge;\n};\n\nconst useBreakpoint = () => {\n const [screen, setScreen] = useState();\n\n const resizeHandler = useCallback(\n () => setScreen(getCurrentBreakpoint()),\n []\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","import { useCallback, useEffect, useState } from 'react';\n\nconst useMediaQuery = (minWidth: number) => {\n // Set the default value to undefined in order to properly distinguish the falsey values\n // where undefined is the value before computing whether the screen size is smaller than the minWidth\n // i.e. a state where we don't really know whether we're below the threshold or not\n // and false is the value where the computation returns false\n const [isSmallerThan, setIsSmallerThan] = useState();\n\n const handler = useCallback(() => {\n const isDesiredWidth = window.innerWidth < minWidth;\n setIsSmallerThan(isDesiredWidth);\n }, [minWidth]);\n\n useEffect(() => {\n window.addEventListener('resize', handler);\n handler();\n\n return () => {\n window.removeEventListener('resize', handler);\n };\n }, [handler]);\n\n return isSmallerThan;\n};\n\nexport default useMediaQuery;\n","module.exports = \"data:image/svg+xml,%3csvg width='1151' height='1150' viewBox='0 0 1151 1150' fill='none' xmlns='http://www.w3.org/2000/svg'%3e %3cg opacity='0.35' filter='url(%23filter0_df_4014_178052)'%3e %3cpath d='M801 575C801 699.264 700.04 800 575.5 800C450.96 800 350 699.264 350 575C350 450.736 450.96 350 575.5 350C700.04 350 801 450.736 801 575Z' fill='%23FFDD00'/%3e %3c/g%3e %3cdefs%3e %3cfilter id='filter0_df_4014_178052' x='0' y='0' width='1151' height='1150' filterUnits='userSpaceOnUse' color-interpolation-filters='sRGB'%3e %3cfeFlood flood-opacity='0' result='BackgroundImageFix'/%3e %3cfeColorMatrix in='SourceAlpha' type='matrix' values='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0' result='hardAlpha'/%3e %3cfeOffset dy='1.66516'/%3e %3cfeGaussianBlur stdDeviation='0.832579'/%3e %3cfeComposite in2='hardAlpha' operator='out'/%3e %3cfeColorMatrix type='matrix' values='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.25 0'/%3e %3cfeBlend mode='normal' in2='BackgroundImageFix' result='effect1_dropShadow_4014_178052'/%3e %3cfeBlend mode='normal' in='SourceGraphic' in2='effect1_dropShadow_4014_178052' result='shape'/%3e %3cfeGaussianBlur stdDeviation='175' result='effect2_foregroundBlur_4014_178052'/%3e %3c/filter%3e %3c/defs%3e %3c/svg%3e\""],"names":["_ref","children","className","dataTestId","disabled","editHint","link","linkCallback","secondary","secondaryBackgroundClassName","isLightMode","inverted","buttonProps","buttonClasses","classNames","url","name","React","createElement","href","target","onClick","_extends","classes","epiEdit","image","imageClasses","imageRef","lazyLoad","progressiveLoad","sizes","mobileSource","mobile","tabletSource","tablet","desktopSource","desktop","largeDesktopSource","largeDesktop","breakpoint","useBreakpoint","isLoaded","setIsLoaded","useState","currentSrc","BreakpointEnum","Small","Medium","Large","XLarge","type","srcSet","ref","alt","altText","length","draggable","loading","onLoad","src","height","width","originalUrl","anchorId","bottomImage","title","topImage","useRef","scrollYProgress","useScroll","offset","pageScrollYProgress","isMobileView","useMediaQuery","y1","useTransform","y2","scale","transform","spring","useSpring","damping","mass","stiffness","id","motion","div","initial","opacity","y","style","viewport","once","whileInView","dangerouslySetInnerHTML","__html","Button","Hue","Image","getCurrentBreakpoint","breakpoints","window","innerWidth","screen","setScreen","resizeHandler","useCallback","useEffect","addEventListener","removeEventListener","minWidth","isSmallerThan","setIsSmallerThan","handler","isDesiredWidth","module","exports"],"sourceRoot":""}