{"version":3,"file":"9929.b0a176f4814e1a705c57.bundle.js","mappings":"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","sources":["webpack://webstaurantstore/./Brands/ExpandedFeatureGroupCarousel/BrandCarousel.tsx","webpack://webstaurantstore/./common/MediaViewerV2/SharedComponents/VideoViewer/hooks/useGtmVideoTracking.tsx","webpack://webstaurantstore/./common/Pagination/Pagination.styles.ts","webpack://webstaurantstore/./common/Pagination/PaginationItem.tsx","webpack://webstaurantstore/./common/Pagination/index.tsx","webpack://webstaurantstore/./common/videoPlayer/ZestVideoPlayer.tsx"],"sourcesContent":["/* eslint-disable consistent-return */\nimport React, { useState, useRef, isValidElement, useEffect } from \"react\";\nimport ChildOrNull from \"~/common/ChildOrNull\";\n\ninterface Props {\n children?: React.ReactNode;\n slideRight: (props: {\n onClick: (event: React.MouseEvent) => void;\n }) => React.ReactNode;\n slideLeft: (props: {\n onClick: (event: React.MouseEvent) => void;\n }) => React.ReactNode;\n listWrapperProps?: React.DetailedHTMLProps<\n React.HTMLAttributes,\n HTMLUListElement\n >;\n centeredIndex?: number;\n}\n\ntype SliderProps = {\n onClick: (event: React.MouseEvent) => void;\n render: (props: {\n onClick: (event: React.MouseEvent) => void;\n }) => React.ReactNode;\n};\n\nconst SlideRight = ({ onClick, render }: SliderProps) => {\n return <>{render({ onClick })};\n};\n\nconst SlideLeft = ({ render, onClick }: SliderProps) => {\n return <>{render({ onClick })};\n};\n\nexport default function BrandCarousel({\n children,\n slideRight,\n slideLeft,\n listWrapperProps,\n centeredIndex,\n}: Props) {\n const sliderRef = useRef(null);\n const [canSlideRight, setCanSlideRight] = useState(false);\n const [canSlideLeft, setCanSlideLeft] = useState(false);\n const [isOverflowing, setIsOverflowing] = useState(false);\n\n const handleSlide = (direction: string) => {\n if (sliderRef.current) {\n const offset = Math.round(sliderRef.current.clientWidth * 0.8);\n sliderRef.current.scrollLeft -= direction === \"left\" ? offset : -offset;\n }\n };\n\n useEffect(function iniCarouselIntersectionObserver() {\n if (!sliderRef.current) {\n throw new Error(\n \"sliderRef has not been set to the carousel
    element\"\n );\n }\n const children = Array.from(sliderRef.current.children);\n const firstChild = children.shift();\n if (!firstChild) return;\n const lastChild = children.pop() ?? firstChild;\n const opts: IntersectionObserverInit = {\n root: sliderRef.current,\n threshold: [0, 0.1, 0.9, 1],\n };\n function onIntersection(entries: IntersectionObserverEntry[]) {\n entries.forEach((entry) => {\n const isInteresting = entry.intersectionRatio < 0.9;\n if (entry.target === firstChild) {\n setCanSlideRight(isInteresting);\n } else {\n setCanSlideLeft(isInteresting);\n }\n });\n }\n const observer = new IntersectionObserver(onIntersection, opts);\n\n observer.observe(firstChild);\n observer.observe(lastChild);\n\n return function cleanupCarouselIntersectionObserver() {\n observer.disconnect();\n };\n }, []);\n\n /** Allows us to remove the right border on the last carousel item when overflowing */\n useEffect(function initCarouselResizeObserver() {\n if (!sliderRef.current) {\n throw new Error(\n \"sliderRef has not been set to the carousel
      element\"\n );\n }\n function handleResize() {\n if (!sliderRef.current) {\n throw new Error(\n \"sliderRef has not been set to the carousel
        element\"\n );\n }\n setIsOverflowing(\n sliderRef.current.scrollWidth > sliderRef.current.clientWidth\n );\n }\n const observer = new ResizeObserver(handleResize);\n observer.observe(sliderRef.current);\n\n return function cleanupCarouselResizeObserver() {\n observer.disconnect();\n };\n }, []);\n\n /** Allows us to center the active thumbnail when selected */\n useEffect(() => {\n if (centeredIndex && sliderRef.current) {\n const childToFocus = sliderRef.current.children[centeredIndex];\n\n if (!childToFocus) {\n return;\n }\n\n const parent = sliderRef.current;\n const parentRect = parent.getBoundingClientRect();\n const childRect = childToFocus.getBoundingClientRect();\n\n const scrollPosition =\n childRect.left -\n parentRect.left +\n parent.scrollLeft -\n parentRect.width / 2 +\n childRect.width / 2;\n\n parent.scrollTo({\n left: scrollPosition,\n behavior: \"smooth\",\n });\n }\n }, [centeredIndex]);\n\n return (\n <>\n \n handleSlide(\"left\")} />\n \n \n {React.Children.map(children, (child) =>\n isValidElement(child)\n ? React.createElement(child.type, { ...child.props, isOverflowing })\n : child\n )}\n
      \n \n handleSlide(\"right\")} />\n \n \n );\n}\n","import { MutableRefObject, useCallback, useRef } from \"react\";\nimport { sendGtmEvent } from \"~/analytics/definitions\";\n\nconst getCurrentPercent = (currentTime = 0, duration = 1): number => {\n return Math.round((currentTime / duration) * 100);\n};\n\nconst useGtmVideoTracking = (\n videoRef: MutableRefObject,\n videoUrl: string,\n title: string,\n extendedEventLabel?: string\n) => {\n const percentBreakpointsRef = useRef<-1 | 0 | 25 | 50 | 75 | 100>(-1);\n\n const sendGtmVideoEvent = useCallback(\n (videoPercent: number, videoStatus: string, eventAction: string) => {\n sendGtmEvent({\n event: \"video_tracking\",\n eventAction,\n eventLabel: extendedEventLabel\n ? `${videoUrl} - ${extendedEventLabel}`\n : videoUrl,\n htmlVideoPercent: videoPercent,\n htmlVideoStatus: videoStatus,\n htmlVideoTitle: title,\n htmlVideoUrl: videoUrl,\n pageUrl: window.location.href,\n });\n },\n [videoUrl, title, extendedEventLabel]\n );\n\n const sendGtmPlayEvent = useCallback(() => {\n const currentPercent = getCurrentPercent(\n videoRef.current?.currentTime,\n videoRef.current?.duration\n );\n if (videoRef.current) {\n if (videoRef.current.currentTime === 0) {\n sendGtmVideoEvent(0, \"Initial Play\", \"Initial Play\");\n } else {\n sendGtmVideoEvent(currentPercent, \"Resume Play\", \"Resume Play\");\n }\n }\n }, [sendGtmVideoEvent, videoRef]);\n\n const sendGtmProgressEvent = useCallback(() => {\n const currentPercent = getCurrentPercent(\n videoRef.current?.currentTime,\n videoRef.current?.duration\n );\n\n if (videoRef?.current) {\n if (currentPercent === 100 && percentBreakpointsRef.current !== 100) {\n percentBreakpointsRef.current = 100;\n sendGtmVideoEvent(100, \"complete\", \"Reached the end\");\n } else if (currentPercent >= 75 && percentBreakpointsRef.current < 75) {\n percentBreakpointsRef.current = 75;\n sendGtmVideoEvent(75, \"progress\", \"Reached 75%\");\n } else if (currentPercent >= 50 && percentBreakpointsRef.current < 50) {\n percentBreakpointsRef.current = 50;\n sendGtmVideoEvent(50, \"progress\", \"Reached 50%\");\n } else if (currentPercent >= 25 && percentBreakpointsRef.current < 25) {\n percentBreakpointsRef.current = 25;\n sendGtmVideoEvent(25, \"progress\", \"Reached 25%\");\n }\n }\n }, [sendGtmVideoEvent, videoRef]);\n\n const sendGtmPauseEvent = useCallback(() => {\n const currentPercent = getCurrentPercent(\n videoRef.current?.currentTime,\n videoRef.current?.duration\n );\n // onPause technically fires at the video end, this prevents an unnecessary event from firing\n if (currentPercent < 100) {\n sendGtmVideoEvent(currentPercent, \"pause\", \"Paused\");\n }\n }, [sendGtmVideoEvent, videoRef]);\n\n return { sendGtmProgressEvent, sendGtmPauseEvent, sendGtmPlayEvent };\n};\n\nexport default useGtmVideoTracking;\n","import ct from \"class-types.macro\";\n\nexport const listClasses = ct(\n \"rounded-md\",\n \"inline-block\",\n \"font-semibold\",\n \"h-7-1/2\",\n \"list-none\",\n \"m-0\",\n \"w-auto\"\n);\n\nexport const listItemClasses = ct(\"inline-block\", \"leading-4\", \"align-top\");\n\nexport const currentLinkClasses = ct(\n \"text-white\",\n \"shadow-inner-green\",\n \"bg-green-gradient\"\n);\n\nexport const linkClasses = ct(\n \"border-gray-400\",\n \"hover:border-green-800\",\n \"border-solid\",\n \"border\",\n \"border-r-0\",\n \"box-border\",\n \"flex\",\n \"items-center\",\n \"justify-center\",\n \"font-semibold\",\n \"h-7-1/2\",\n \"text-sm\",\n \"leading-none\",\n \"p-0\",\n \"fill-current\",\n \"hover:text-white\",\n \"w-7-1/2\",\n \"hover:shadow-inner-green\",\n \"bg-gray-gradient\",\n \"hover:bg-green-gradient\"\n);\n","import React from \"react\";\nimport ct from \"class-types.macro\";\nimport Icon from \"~/common/Icons/Standard\";\n\nexport interface Props {\n name: string | number;\n listItemClasses: string;\n linkClasses: string;\n targetPage: number;\n totalPages: number;\n ariaLabel: string;\n icon?: string;\n createHREF?: (page: number) => string;\n onChange?: ((page: number, pageSize: number) => void) | undefined;\n}\n\nconst PaginationItem = ({\n name,\n listItemClasses,\n linkClasses,\n targetPage,\n totalPages,\n ariaLabel,\n icon,\n createHREF,\n onChange,\n}: Props) => {\n const onChangeFunc = (\n e: React.SyntheticEvent,\n page: number\n ) => {\n e.preventDefault();\n if (onChange) {\n onChange(page, totalPages);\n }\n };\n\n return (\n
    • \n onChangeFunc(e, targetPage) : undefined}\n className={`${linkClasses} pagerLink`}\n >\n {icon ? : name}\n \n
    • \n );\n};\n\nexport default PaginationItem;\n","import React, { useEffect, useState } from \"react\";\nimport ct from \"class-types.macro\";\nimport PaginationItem from \"./PaginationItem\";\nimport {\n linkClasses,\n currentLinkClasses,\n listClasses,\n listItemClasses,\n} from \"./Pagination.styles\";\n\nexport interface Props {\n currentPage: number;\n onChange?: ((page: number, pageSize: number) => void) | undefined;\n total: number;\n pageSize: number;\n createHREF?: (page: number) => string;\n}\n\nconst Pagination = ({\n currentPage,\n onChange,\n total,\n pageSize,\n createHREF,\n}: Props) => {\n const productlistingPageLimit = 100;\n\n const totalPages = Math.min(\n Math.ceil(total / pageSize),\n productlistingPageLimit\n );\n\n const [pagerList, setPagerList] = useState<\n {\n name: string | number;\n value: number;\n }[]\n >([]);\n\n useEffect(() => {\n const newPagerList = [];\n // display first five pagers if currentPage is within first 4 pagers\n if (totalPages > 7 && currentPage <= 4) {\n for (let page = 1; page < currentPage; page += 1) {\n newPagerList.push({ name: page, value: page });\n }\n newPagerList.push({ name: currentPage, value: currentPage });\n for (let page = currentPage + 1; page < 6; page += 1) {\n newPagerList.push({ name: page, value: page });\n }\n // \\u2026 is the unicode for a horizontal ellipsis\n newPagerList.push({ name: \"\\u2026\", value: 6 });\n newPagerList.push({ name: totalPages, value: totalPages });\n }\n // display last five pagers if currentPage is within last 4 pagers\n else if (totalPages > 7 && currentPage >= totalPages - 3) {\n newPagerList.push({ name: 1, value: 1 });\n newPagerList.push({ name: \"\\u2026\", value: totalPages - 5 });\n for (let page = totalPages - 4; page < currentPage; page += 1) {\n newPagerList.push({ name: page, value: page });\n }\n newPagerList.push({ name: currentPage, value: currentPage });\n for (let page = currentPage; page < totalPages; page += 1) {\n newPagerList.push({ name: page + 1, value: page + 1 });\n }\n }\n // display ellipses based on current page location\n else {\n if (totalPages > 7 && currentPage - 3 > 1) {\n newPagerList.push({ name: 1, value: 1 });\n newPagerList.push({ name: \"\\u2026\", value: currentPage - 3 });\n newPagerList.push({ name: currentPage - 2, value: currentPage - 2 });\n newPagerList.push({ name: currentPage - 1, value: currentPage - 1 });\n } else {\n for (let page = 1; page < currentPage; page += 1) {\n newPagerList.push({ name: page, value: page });\n }\n }\n\n newPagerList.push({ name: currentPage, value: currentPage });\n\n if (totalPages > 7 && currentPage + 3 < totalPages) {\n newPagerList.push({ name: currentPage + 1, value: currentPage + 1 });\n newPagerList.push({ name: currentPage + 2, value: currentPage + 2 });\n newPagerList.push({ name: \"\\u2026\", value: currentPage + 3 });\n newPagerList.push({ name: totalPages, value: totalPages });\n } else {\n for (let page = currentPage; page < totalPages; page += 1) {\n newPagerList.push({ name: page + 1, value: page + 1 });\n }\n }\n }\n setPagerList(newPagerList);\n }, [totalPages, currentPage]);\n\n return (\n
    \n ) : (\n

    No additional pages

    \n )}\n \n );\n};\n\nexport default Pagination;\n","/* eslint-disable @typescript-eslint/consistent-type-assertions */\nimport React, { useEffect, useRef } from \"react\";\nimport { VideoPlayer, VideoPlayerProps } from \"@clarkinc/zest-design-system/ui\";\nimport { cls } from \"@wss/cls\";\nimport { Video } from \"~/common/Store/models/Video\";\nimport useGtmVideoTracking from \"../MediaViewerV2/SharedComponents/VideoViewer/hooks/useGtmVideoTracking\";\n\ninterface Props {\n posterImage: string;\n sources: Partial;\n activePlayer?: boolean;\n currentIndex: number;\n selected: number;\n autoPlay?: boolean;\n videoClasses?: string;\n youtubeId?: string;\n useCdn?: boolean;\n playsInline?: boolean;\n closedCaptionsrc?: string;\n shouldLoopVideo?: boolean;\n isModal?: boolean;\n videoSection?: string;\n}\n\nconst ZestVideoPlayer = (props: Props & VideoPlayerProps) => {\n const {\n youtubeId,\n useCdn,\n selected,\n activePlayer,\n currentIndex,\n posterImage,\n videoClasses,\n closedCaptionsrc,\n playsInline,\n sources,\n shouldLoopVideo,\n isModal,\n videoSection,\n autoPlay,\n title,\n ...rest\n } = props;\n const videoRef = useRef(null);\n\n const baseUrl = useCdn\n ? \"https://cdn.webstaurantstore.com/videos/\"\n : \"/videos/\";\n\n const getCaptionUrl = () => {\n if (!closedCaptionsrc) {\n return undefined;\n }\n const captionBaseUrl = \"/videos/closed_captioning/\";\n\n return captionBaseUrl + closedCaptionsrc;\n };\n\n const pauseYoutubeVideo = () => {\n const iframe = document.getElementsByClassName(\n \"videoPlayer\"\n )[0] as HTMLIFrameElement;\n\n if (iframe) {\n // resetting the iframe src to pause Youtube video\n const videoSource = iframe.src;\n iframe.src = videoSource;\n }\n };\n\n useEffect(() => {\n if (currentIndex !== selected) {\n if (youtubeId) {\n pauseYoutubeVideo();\n } else {\n const video = document.querySelector(\n `.videoPlayer-${currentIndex}`\n ) as HTMLVideoElement;\n if (!video?.paused) {\n video.pause();\n }\n }\n }\n }, [activePlayer, currentIndex, selected, youtubeId]);\n\n const relativeSources = Object.fromEntries(\n Object.entries(sources ?? {})\n .filter(([, value]) => value !== undefined)\n .map(([key, value]) => [key, `${baseUrl}${value}`])\n );\n\n const highestSrc =\n sources?.high ||\n sources?.medium ||\n sources?.low ||\n sources?.product ||\n sources?.ipad ||\n \"\";\n\n const {\n sendGtmProgressEvent,\n sendGtmPauseEvent,\n sendGtmPlayEvent,\n } = useGtmVideoTracking(\n videoRef,\n `${baseUrl}${highestSrc}`,\n title ?? \"Unknown video title\",\n videoSection\n );\n\n // This is a workaround as onTimeUpdate is not working with the Zest Player and will be updated at a later time.\n useEffect(() => {\n const currentVideoRef = videoRef.current;\n if (currentVideoRef) {\n currentVideoRef.addEventListener(\"timeupdate\", sendGtmProgressEvent);\n }\n return () => {\n if (currentVideoRef) {\n currentVideoRef.removeEventListener(\"timeupdate\", sendGtmProgressEvent);\n }\n };\n }, [sendGtmProgressEvent]);\n\n return (\n (youtubeId && (\n \n )) || (\n \n )\n );\n};\nexport default ZestVideoPlayer;\n"],"names":["BrandCarousel","SlideRight","onClick","render","SlideLeft","children","slideRight","slideLeft","listWrapperProps","centeredIndex","sliderRef","useRef","useState","canSlideRight","setCanSlideRight","canSlideLeft","setCanSlideLeft","isOverflowing","setIsOverflowing","handleSlide","direction","current","offset","Math","round","clientWidth","scrollLeft","useEffect","Error","Array","from","firstChild","shift","lastChild","pop","opts","root","threshold","observer","IntersectionObserver","entries","forEach","entry","isInteresting","intersectionRatio","target","observe","disconnect","ResizeObserver","scrollWidth","childToFocus","parent","parentRect","getBoundingClientRect","childRect","scrollPosition","left","width","scrollTo","behavior","ChildOrNull","condition","ul","data-testid","className","ref","React","Children","map","child","isValidElement","createElement","type","props","getCurrentPercent","currentTime","duration","videoRef","videoUrl","title","extendedEventLabel","percentBreakpointsRef","sendGtmVideoEvent","useCallback","videoPercent","videoStatus","eventAction","sendGtmEvent","event","eventLabel","htmlVideoPercent","htmlVideoStatus","htmlVideoTitle","htmlVideoUrl","pageUrl","window","location","href","sendGtmPlayEvent","currentPercent","sendGtmProgressEvent","sendGtmPauseEvent","listClasses","listItemClasses","currentLinkClasses","linkClasses","ct","name","targetPage","totalPages","ariaLabel","icon","createHREF","onChange","li","a","aria-label","e","page","preventDefault","onChangeFunc","undefined","Icon","currentPage","total","pageSize","min","ceil","pagerList","setPagerList","newPagerList","push","value","nav","style","boxShadow","length","PaginationItem","p","youtubeId","useCdn","selected","activePlayer","currentIndex","posterImage","videoClasses","closedCaptionsrc","playsInline","sources","shouldLoopVideo","isModal","videoSection","autoPlay","rest","baseUrl","iframe","document","getElementsByClassName","videoSource","src","pauseYoutubeVideo","video","querySelector","paused","pause","relativeSources","Object","fromEntries","filter","key","highestSrc","high","medium","low","product","ipad","useGtmVideoTracking","currentVideoRef","addEventListener","removeEventListener","cls","allowFullScreen","allow","VideoPlayer","poster","crossOrigin","captionSrc","getCaptionUrl","loop","onPlay","onPause"],"sourceRoot":""}