{"version":3,"file":"index-ebc3833d.js","sources":["../../../../node_modules/swiper/modules/thumbs/thumbs.js","../../../../src/scripts/react-components/product-masthead/image-gallery.tsx","../../../../src/scripts/react-components/product-masthead/index.tsx"],"sourcesContent":["import { getDocument } from 'ssr-window';\nimport { elementChildren, isObject } from '../../shared/utils.js';\nexport default function Thumb({\n swiper,\n extendParams,\n on\n}) {\n extendParams({\n thumbs: {\n swiper: null,\n multipleActiveThumbs: true,\n autoScrollOffset: 0,\n slideThumbActiveClass: 'swiper-slide-thumb-active',\n thumbsContainerClass: 'swiper-thumbs'\n }\n });\n let initialized = false;\n let swiperCreated = false;\n swiper.thumbs = {\n swiper: null\n };\n function onThumbClick() {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n const clickedIndex = thumbsSwiper.clickedIndex;\n const clickedSlide = thumbsSwiper.clickedSlide;\n if (clickedSlide && clickedSlide.classList.contains(swiper.params.thumbs.slideThumbActiveClass)) return;\n if (typeof clickedIndex === 'undefined' || clickedIndex === null) return;\n let slideToIndex;\n if (thumbsSwiper.params.loop) {\n slideToIndex = parseInt(thumbsSwiper.clickedSlide.getAttribute('data-swiper-slide-index'), 10);\n } else {\n slideToIndex = clickedIndex;\n }\n if (swiper.params.loop) {\n swiper.slideToLoop(slideToIndex);\n } else {\n swiper.slideTo(slideToIndex);\n }\n }\n function init() {\n const {\n thumbs: thumbsParams\n } = swiper.params;\n if (initialized) return false;\n initialized = true;\n const SwiperClass = swiper.constructor;\n if (thumbsParams.swiper instanceof SwiperClass) {\n swiper.thumbs.swiper = thumbsParams.swiper;\n Object.assign(swiper.thumbs.swiper.originalParams, {\n watchSlidesProgress: true,\n slideToClickedSlide: false\n });\n Object.assign(swiper.thumbs.swiper.params, {\n watchSlidesProgress: true,\n slideToClickedSlide: false\n });\n swiper.thumbs.swiper.update();\n } else if (isObject(thumbsParams.swiper)) {\n const thumbsSwiperParams = Object.assign({}, thumbsParams.swiper);\n Object.assign(thumbsSwiperParams, {\n watchSlidesProgress: true,\n slideToClickedSlide: false\n });\n swiper.thumbs.swiper = new SwiperClass(thumbsSwiperParams);\n swiperCreated = true;\n }\n swiper.thumbs.swiper.el.classList.add(swiper.params.thumbs.thumbsContainerClass);\n swiper.thumbs.swiper.on('tap', onThumbClick);\n return true;\n }\n function update(initial) {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n const slidesPerView = thumbsSwiper.params.slidesPerView === 'auto' ? thumbsSwiper.slidesPerViewDynamic() : thumbsSwiper.params.slidesPerView;\n\n // Activate thumbs\n let thumbsToActivate = 1;\n const thumbActiveClass = swiper.params.thumbs.slideThumbActiveClass;\n if (swiper.params.slidesPerView > 1 && !swiper.params.centeredSlides) {\n thumbsToActivate = swiper.params.slidesPerView;\n }\n if (!swiper.params.thumbs.multipleActiveThumbs) {\n thumbsToActivate = 1;\n }\n thumbsToActivate = Math.floor(thumbsToActivate);\n thumbsSwiper.slides.forEach(slideEl => slideEl.classList.remove(thumbActiveClass));\n if (thumbsSwiper.params.loop || thumbsSwiper.params.virtual && thumbsSwiper.params.virtual.enabled) {\n for (let i = 0; i < thumbsToActivate; i += 1) {\n elementChildren(thumbsSwiper.slidesEl, `[data-swiper-slide-index=\"${swiper.realIndex + i}\"]`).forEach(slideEl => {\n slideEl.classList.add(thumbActiveClass);\n });\n }\n } else {\n for (let i = 0; i < thumbsToActivate; i += 1) {\n if (thumbsSwiper.slides[swiper.realIndex + i]) {\n thumbsSwiper.slides[swiper.realIndex + i].classList.add(thumbActiveClass);\n }\n }\n }\n const autoScrollOffset = swiper.params.thumbs.autoScrollOffset;\n const useOffset = autoScrollOffset && !thumbsSwiper.params.loop;\n if (swiper.realIndex !== thumbsSwiper.realIndex || useOffset) {\n const currentThumbsIndex = thumbsSwiper.activeIndex;\n let newThumbsIndex;\n let direction;\n if (thumbsSwiper.params.loop) {\n const newThumbsSlide = thumbsSwiper.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') === `${swiper.realIndex}`)[0];\n newThumbsIndex = thumbsSwiper.slides.indexOf(newThumbsSlide);\n direction = swiper.activeIndex > swiper.previousIndex ? 'next' : 'prev';\n } else {\n newThumbsIndex = swiper.realIndex;\n direction = newThumbsIndex > swiper.previousIndex ? 'next' : 'prev';\n }\n if (useOffset) {\n newThumbsIndex += direction === 'next' ? autoScrollOffset : -1 * autoScrollOffset;\n }\n if (thumbsSwiper.visibleSlidesIndexes && thumbsSwiper.visibleSlidesIndexes.indexOf(newThumbsIndex) < 0) {\n if (thumbsSwiper.params.centeredSlides) {\n if (newThumbsIndex > currentThumbsIndex) {\n newThumbsIndex = newThumbsIndex - Math.floor(slidesPerView / 2) + 1;\n } else {\n newThumbsIndex = newThumbsIndex + Math.floor(slidesPerView / 2) - 1;\n }\n } else if (newThumbsIndex > currentThumbsIndex && thumbsSwiper.params.slidesPerGroup === 1) {\n // newThumbsIndex = newThumbsIndex - slidesPerView + 1;\n }\n thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined);\n }\n }\n }\n on('beforeInit', () => {\n const {\n thumbs\n } = swiper.params;\n if (!thumbs || !thumbs.swiper) return;\n if (typeof thumbs.swiper === 'string' || thumbs.swiper instanceof HTMLElement) {\n const document = getDocument();\n const getThumbsElementAndInit = () => {\n const thumbsElement = typeof thumbs.swiper === 'string' ? document.querySelector(thumbs.swiper) : thumbs.swiper;\n if (thumbsElement && thumbsElement.swiper) {\n thumbs.swiper = thumbsElement.swiper;\n init();\n update(true);\n } else if (thumbsElement) {\n const onThumbsSwiper = e => {\n thumbs.swiper = e.detail[0];\n thumbsElement.removeEventListener('init', onThumbsSwiper);\n init();\n update(true);\n thumbs.swiper.update();\n swiper.update();\n };\n thumbsElement.addEventListener('init', onThumbsSwiper);\n }\n return thumbsElement;\n };\n const watchForThumbsToAppear = () => {\n if (swiper.destroyed) return;\n const thumbsElement = getThumbsElementAndInit();\n if (!thumbsElement) {\n requestAnimationFrame(watchForThumbsToAppear);\n }\n };\n requestAnimationFrame(watchForThumbsToAppear);\n } else {\n init();\n update(true);\n }\n });\n on('slideChange update resize observerUpdate', () => {\n update();\n });\n on('setTransition', (_s, duration) => {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n thumbsSwiper.setTransition(duration);\n });\n on('beforeDestroy', () => {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n if (swiperCreated) {\n thumbsSwiper.destroy();\n }\n });\n Object.assign(swiper.thumbs, {\n init,\n update\n });\n}","import React, { useRef, useState } from 'react';\nimport { Swiper as SwiperModule, SwiperSlide } from 'swiper/react';\nimport Swiper, { FreeMode, Navigation, Thumbs } from 'swiper';\nimport 'swiper/css';\nimport 'swiper/css/navigation';\nimport 'swiper/css/free-mode';\nimport 'swiper/css/thumbs';\nimport { createDataLayerString } from '../../helpers/helpers';\nimport { BREAKPOINTS } from '../../helpers/breakpoints';\n\ntype ImageGalleryProps = {\n images: {\n media_type: string;\n media_url: string;\n alt_text: string;\n }[];\n nextLabel: string;\n prevLabel: string;\n productHeading: string;\n category: string;\n};\n\nexport const ImageGallery = ({\n images,\n nextLabel,\n prevLabel,\n productHeading,\n category\n}: ImageGalleryProps) => {\n const [thumbsSwiper, setThumbsSwiper] = useState(null);\n const [swiper, setSwiper] = useState(null);\n const nextButton = useRef(null);\n const backButton = useRef(null);\n\n const handleThumbsUpdate = () => {\n if (swiper?.realIndex) {\n thumbsSwiper?.slideTo(swiper.realIndex);\n }\n };\n\n return (\n <>\n
\n setSwiper(swiper)}\n onSlideChange={() => {\n handleThumbsUpdate();\n }}\n thumbs={{ swiper: thumbsSwiper }}\n modules={[FreeMode, Navigation, Thumbs]}\n >\n {images.map((image, index) => (\n \n \n \n \n \n \n \n ))}\n \n \n\n \n
\n
\n setThumbsSwiper(swiper)}\n initialSlide={0}\n slidesPerGroup={1}\n spaceBetween={20}\n slidesPerView={4}\n freeMode={true}\n watchSlidesProgress={true}\n modules={[FreeMode, Navigation, Thumbs]}\n className=\"product-masthead__thumbs\"\n >\n {images.map((image, index) => (\n \n swiper?.slideTo(index)}\n data-layer={createDataLayerString([\n {\n event: 'product_click',\n event_category: 'product',\n event_action: 'gallery',\n event_label: 'thumbnail',\n event_attributes: {\n product_name: productHeading,\n product_category: 'Shingle'\n }\n }\n ])}\n >\n \n \n \n \n \n \n \n \n ))}\n \n
\n \n );\n};\n\nexport default ImageGallery;\n","import React, { useEffect, useState } from 'react';\nimport IconItem from './icon-item';\nimport ImageGallery from './image-gallery';\nimport { BREAKPOINTS } from '../../helpers/breakpoints';\nimport { useDebounce } from '../../helpers/debounce';\nimport { createDataLayerString, makeSuperScript } from '../../helpers/helpers';\nimport {\n ExtendedWindowType,\n MediaType,\n ProductMastheadResponseType,\n VariantOptionType\n} from '../../helpers/global-types';\n\ntype ProductMastheadProps = {\n nextLabel: string;\n prevLabel: string;\n selectDefault: string;\n defaultImage: string;\n};\n\nconst ProductMasthead = ({\n nextLabel,\n prevLabel,\n selectDefault,\n defaultImage\n}: ProductMastheadProps) => {\n const [data, setData] = useState();\n const [error, setError] = useState(false);\n const [isTablet, setIsTablet] = useState(\n window.matchMedia(`(max-width: ${BREAKPOINTS.tablet - 2}px)`).matches\n );\n const [displayImages, setDisplayImages] = useState([]);\n const [selectedAttributes, setSelectedAttributes] = useState<\n VariantOptionType[]\n >([]);\n const [secondLevelOptions, setSecondLevelOptions] = useState<\n VariantOptionType[]\n >([]);\n const [manualUpdate, setManualUpdate] = useState(false);\n const [personalizeButtons, setPersonalizeButtons] = useState('');\n const selectOption = {\n id: 'default',\n label: selectDefault,\n products: []\n };\n\n const getVariantAvailable = (index: number, option: VariantOptionType) => {\n if (index === 1 && selectedAttributes[1]?.id === 'default') {\n return true;\n }\n\n const sameProducts = selectedAttributes[index]?.products.filter(value =>\n option.products.includes(value)\n );\n\n if (sameProducts?.length > 0) {\n return true;\n }\n return false;\n };\n\n const handleDefaultSelectedAttributes = () => {\n if (data?.defaultVariation !== '') {\n const selectedVariation = data?.pid_attribute_option_index.find(\n item => item.magento_product_id === data?.defaultVariation\n );\n if (selectedVariation) {\n const selectedOptions: VariantOptionType[] = [];\n data?.variants.forEach(variant => {\n const correspondingVariant =\n selectedVariation.attribute_option_items.find(\n attributeOption => attributeOption.attribute_id === variant.id\n );\n if (correspondingVariant) {\n const selectedOption = variant.options.find(\n opt => opt.id === correspondingVariant.option_id\n );\n if (selectedOption) {\n selectedOptions.push(selectedOption);\n }\n }\n });\n\n if (selectedOptions.length === 0) {\n data?.variants.forEach(variant => {\n selectedOptions.push(variant.options[0]);\n });\n }\n\n setSelectedAttributes(selectedOptions);\n }\n } else {\n const selectedOptions: VariantOptionType[] = [];\n data?.variants.forEach(variant => {\n selectedOptions.push(variant.options[0]);\n });\n\n setSelectedAttributes(selectedOptions);\n }\n };\n\n const handleChangeSelected = () => {\n if (data?.variants && data?.variants.length > 1) {\n getSecondLevelOptions(data?.variants[1].options as VariantOptionType[]);\n data?.variants[1].options.find(option => {\n if (secondLevelOptions.length > 6) {\n setSelectedAttributes(prev => {\n prev.pop();\n prev.push(selectOption);\n return [...prev];\n });\n } else if (getVariantAvailable(0, option)) {\n setSelectedAttributes(prev => {\n prev.pop();\n prev.push(option);\n return [...prev];\n });\n return true;\n }\n return false;\n });\n }\n };\n\n const handleAdditionalStates = (index: number, option: VariantOptionType) => {\n let classes = '';\n if (selectedAttributes[index]?.id === option.id) {\n classes = 'product-masthead__option--active';\n }\n\n if (index === 0 && data?.variants.length && data?.variants.length > 1) {\n if (!getVariantAvailable(1, option)) {\n classes = 'product-masthead__option--not-available';\n }\n }\n\n return classes;\n };\n\n const handleDisplayMedia = () => {\n const mapping = data?.pid_attribute_option_index;\n const id = mapping?.find(item => {\n return data?.variants.every((variant, index) => {\n const selProduct = item.attribute_option_items.find(\n option =>\n option.attribute_id === variant.id &&\n selectedAttributes[index].id === option.option_id\n );\n return selProduct;\n });\n });\n\n const mediaImage = data?.mediaVariants.find(mediaVariant => {\n if (mediaVariant.magento_product_id === id?.magento_product_id) {\n if (mediaVariant.media.length > 0) {\n return mediaVariant;\n }\n }\n return false;\n });\n if (!mediaImage && data?.productDescription?.defaultImages) {\n if (data?.productDescription?.defaultImages.length > 0) {\n setDisplayImages(data?.productDescription.defaultImages);\n } else {\n setDisplayImages(JSON.parse(defaultImage));\n }\n } else if (!mediaImage) {\n setDisplayImages(JSON.parse(defaultImage));\n } else {\n setDisplayImages(mediaImage.media);\n }\n\n if (data?.variants && data?.variants.length > 1)\n getSecondLevelOptions(data?.variants[1].options as VariantOptionType[]);\n };\n\n const getSecondLevelOptions = (options: VariantOptionType[]) => {\n const displaySecondLvlOptions: VariantOptionType[] = [];\n\n if (selectedAttributes[0]) {\n options.forEach(option => {\n if (getVariantAvailable(0, option)) {\n displaySecondLvlOptions.push(option);\n }\n });\n }\n if (displaySecondLvlOptions.length > 6) {\n displaySecondLvlOptions.unshift(selectOption);\n }\n setSecondLevelOptions(displaySecondLvlOptions);\n };\n\n useEffect(() => {\n if (\n !secondLevelOptions.find(\n option => option.id === selectedAttributes[1]?.id\n )\n ) {\n handleChangeSelected();\n }\n }, [secondLevelOptions]);\n\n const handleResize = useDebounce(() => {\n const tabletMatch = window.matchMedia(\n `(max-width: ${BREAKPOINTS.tablet - 2}px)`\n ).matches;\n if (isTablet !== tabletMatch) {\n setIsTablet(prev => !prev);\n }\n }, 100);\n\n useEffect(() => {\n window.addEventListener('resize', handleResize);\n\n let observer: MutationObserver;\n\n const targetNode = document.querySelector('.personalize-buttons');\n\n if (targetNode) {\n const targetInnerHtml = targetNode.innerHTML;\n\n setPersonalizeButtons(targetInnerHtml);\n\n const config = { attributes: true, childList: true, subtree: true };\n\n const callback = (mutationList: MutationRecord[]) => {\n for (const mutation of mutationList) {\n if (mutation.type === 'childList') {\n setPersonalizeButtons(targetNode.innerHTML);\n }\n }\n };\n\n observer = new MutationObserver(callback);\n observer.observe(targetNode, config);\n }\n\n const newData = (window as ExtendedWindowType).mastheadData;\n\n if (newData) {\n setData((window as ExtendedWindowType).mastheadData);\n } else {\n setError(true);\n }\n\n return () => {\n window.removeEventListener('resize', handleResize);\n\n if (observer) observer.disconnect();\n };\n }, []);\n\n useEffect(() => {\n if (data) {\n handleDefaultSelectedAttributes();\n }\n }, [data]);\n\n useEffect(() => {\n if (!manualUpdate) {\n handleDisplayMedia();\n } else {\n setManualUpdate(false);\n }\n }, [selectedAttributes]);\n\n const renderFirstLevelOptions = (\n options: VariantOptionType[],\n heading: string\n ) => {\n if (options.length > 6) {\n return (\n
\n {\n (window as ExtendedWindowType).dataLayer.push({\n event: 'product_click',\n event_category: 'product',\n event_action: 'variant selection',\n event_label: heading,\n event_attributes: {\n product_name: data?.productDescription?.heading,\n product_category: data?.productDescription?.icon?.label,\n average_rating: null\n }\n });\n const selOption = options.find(\n option => option.id === e.currentTarget.value\n );\n if (selOption) {\n setSelectedAttributes(prev => {\n prev.shift();\n prev.unshift(selOption);\n return [...prev];\n });\n }\n }}\n value={selectedAttributes[0]?.id}\n >\n {options.map(option => (\n \n {option.label}\n \n ))}\n \n
\n );\n } else {\n return (\n <>\n {options.map(option => (\n {\n (window as ExtendedWindowType).dataLayer.push({\n event: 'product_click',\n event_category: 'product',\n event_action: 'variant selection',\n event_label: heading,\n event_attributes: {\n product_name: data?.productDescription.heading,\n product_category: data?.productDescription?.icon?.label,\n average_rating: null\n }\n });\n setSelectedAttributes(prev => {\n prev.shift();\n prev.unshift(option);\n return [...prev];\n });\n }}\n key={option.id}\n >\n {option.label}\n \n ))}\n \n );\n }\n };\n const renderSecondLevelOptions = (heading: string) => {\n if (secondLevelOptions.length > 6) {\n return (\n
\n {\n (window as ExtendedWindowType).dataLayer.push({\n event: 'product_click',\n event_category: 'product',\n event_action: 'variant selection',\n event_label: heading,\n event_attributes: {\n product_name: data?.productDescription.heading,\n product_category: data?.productDescription?.icon?.label,\n average_rating: null\n }\n });\n const selOption = secondLevelOptions.find(\n option => option.id === e.currentTarget.value\n );\n if (selOption) {\n setSelectedAttributes(prev => {\n prev.pop();\n prev.push(selOption);\n return [...prev];\n });\n }\n }}\n value={selectedAttributes[1]?.id}\n >\n {secondLevelOptions.map(option => (\n \n {option.label}\n \n ))}\n \n
\n );\n } else {\n return secondLevelOptions.map(option => (\n {\n (window as ExtendedWindowType).dataLayer.push({\n event: 'product_click',\n event_category: 'product',\n event_action: 'variant selection',\n event_label: heading,\n event_attributes: {\n product_name: data?.productDescription?.heading,\n product_category: data?.productDescription?.icon?.label,\n average_rating: null\n }\n });\n setSelectedAttributes(prev => {\n prev.pop();\n prev.push(option);\n return [...prev];\n });\n }}\n key={option.id}\n >\n {option.label}\n \n ));\n }\n };\n\n if (error) {\n return

Error on loading

;\n }\n\n return (\n
\n {!isTablet && (\n
\n \n
\n )}\n
\n
\n {data?.productDescription?.icon && (\n \n )}\n
\n \n \n
\n {personalizeButtons && (\n
\n )}\n
\n {isTablet ? (\n
\n \n
\n ) : null}\n\n {data?.variants?.map((variant, index) => (\n
\n

{variant.label}

\n
\n {index === 0 &&\n renderFirstLevelOptions(variant.options, variant.label)}\n {index === 1 && <>{renderSecondLevelOptions(variant.label)}}\n
\n
\n ))}\n\n {data?.productDescription?.documentQuickLinks?.length &&\n data?.productDescription?.documentQuickLinks?.length > 0 ? (\n
\n

\n {data?.productDescription.documentQuickLinksLabel}\n

\n
\n {data?.productDescription.documentQuickLinks?.map(link => {\n if (link.type === 'link') {\n return (\n \n {link.label}\n \n );\n } else if (link.type === 'download') {\n return (\n \n {link.label}\n \n );\n } else if (link.type === 'external') {\n return (\n \n {link.label}\n \n );\n }\n return null;\n })}\n
\n
\n ) : null}\n
\n \n );\n};\nexport default ProductMasthead;\n"],"names":["Thumb","swiper","extendParams","on","initialized","swiperCreated","onThumbClick","thumbsSwiper","clickedIndex","clickedSlide","slideToIndex","init","thumbsParams","SwiperClass","isObject","thumbsSwiperParams","update","initial","slidesPerView","thumbsToActivate","thumbActiveClass","slideEl","i","elementChildren","autoScrollOffset","useOffset","currentThumbsIndex","newThumbsIndex","direction","newThumbsSlide","thumbs","document","getDocument","getThumbsElementAndInit","thumbsElement","onThumbsSwiper","e","watchForThumbsToAppear","_s","duration","ImageGallery","images","nextLabel","prevLabel","productHeading","category","setThumbsSwiper","useState","setSwiper","nextButton","useRef","backButton","handleThumbsUpdate","React","SwiperModule","FreeMode","Navigation","Thumbs","image","index","SwiperSlide","BREAKPOINTS","createDataLayerString","ProductMasthead","selectDefault","defaultImage","data","setData","error","setError","isTablet","setIsTablet","displayImages","setDisplayImages","selectedAttributes","setSelectedAttributes","secondLevelOptions","setSecondLevelOptions","manualUpdate","setManualUpdate","personalizeButtons","setPersonalizeButtons","selectOption","getVariantAvailable","option","_a","sameProducts","_b","value","handleDefaultSelectedAttributes","selectedVariation","item","selectedOptions","variant","correspondingVariant","attributeOption","selectedOption","opt","handleChangeSelected","getSecondLevelOptions","prev","handleAdditionalStates","classes","handleDisplayMedia","mapping","id","mediaImage","mediaVariant","options","displaySecondLvlOptions","useEffect","handleResize","useDebounce","tabletMatch","observer","targetNode","targetInnerHtml","config","callback","mutationList","mutation","renderFirstLevelOptions","heading","_c","selOption","renderSecondLevelOptions","_d","IconItem","_e","_g","_f","makeSuperScript","_h","_i","_k","_j","_l","_n","_m","_p","_o","_q","link"],"mappings":"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","x_google_ignoreList":[0]}