{"version":3,"file":"js/3278.chunk.js","mappings":"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","sources":["webpack:///./assets/common/src/utils/brandDiffsUtils.ts","webpack:///./assets/moncler/src/components/routerTransitions/transitions.ts","webpack:///./assets/moncler/src/components/routerTransitions/AnimatedProvider.tsx","webpack:///./assets/moncler/src/components/routerTransitions/AnimatedRoute.tsx"],"sourcesContent":["import classNames from 'classnames';\nconst gridClassMultiplier = {\n MO: 1,\n ST: 2,\n};\nconst getGridColNumber = (colnumnber) => {\n return colnumnber * (gridClassMultiplier[getId()] || gridClassMultiplier.MO);\n};\nconst getId = () => {\n return window.brandId;\n};\nconst getName = () => {\n return window.brand;\n};\nconst is = (brandId) => {\n return getId() === brandId;\n};\nconst nameIs = (brand) => {\n return getName() === brand;\n};\nconst autoChooseClassnames = (classesObj, commonclasses) => {\n return classNames(classesObj[getId()], commonclasses);\n};\nconst gridClassname = (monclerColumn = 12, brackpoint, type, commonclasses) => {\n let result = [(type || 'col')];\n brackpoint && result.push(brackpoint);\n result.push(getGridColNumber(monclerColumn) + '');\n return result.join('-');\n};\nconst gridClassnames = (configs, commonclasses) => {\n return (configs\n .map((args) => {\n return gridClassname.apply(this, [...args]);\n })\n .join(' ') + (commonclasses ? ' ' + commonclasses : ''));\n};\nconst autoChooseComponent = (componentsObj) => {\n return componentsObj[getId()];\n};\nconst autoChooseProps = (props) => {\n return props[getId()];\n};\nexport { autoChooseClassnames, autoChooseComponent, autoChooseProps, getGridColNumber, getId, getName, gridClassname, gridClassnames, is, nameIs };\n","export const Durations = {\n short: 0.4,\n zoom: 1,\n push: 0.6,\n};\n// Easings\nexport const Easings = {\n quartIn: [0.5, 0, 0.75, 0],\n quartOut: [0.25, 1, 0.5, 1],\n quartInOut: [0.76, 0, 0.24, 1],\n};\n// Shorthands\nexport const shortTransition = {\n transition: {\n duration: Durations.short,\n ease: Easings.quartInOut,\n },\n};\nexport const pushTransition = {\n transition: {\n duration: Durations.push,\n ease: Easings.quartInOut,\n },\n};\nexport const zoomTransition = {\n transition: {\n duration: Durations.zoom,\n ease: Easings.quartInOut,\n },\n};\nexport const originXYZero = {\n originX: 0,\n originY: 0,\n};\nexport const instantTransition = {\n transition: {\n duration: 0,\n },\n};\n","import { useAnimation } from 'framer-motion';\nimport React, { createContext, useContext, useRef } from 'react';\nimport { useLocation } from 'react-router-dom';\nimport { originXYZero, pushTransition } from './transitions';\nimport { ScrollTrigger } from 'gsap/ScrollTrigger';\nexport const AnimatedContext = createContext({});\nconst AnimatedProvider = (props) => {\n // State\n const location = useLocation();\n const firstRender = useRef(true);\n const bodyHeight = useRef(null);\n const store = {\n enter: null,\n exit: null,\n };\n const intermediaryImg = { el: useRef(null), animation: useAnimation() };\n const intermediaryWrapper = useRef(null);\n const playbackHooks = useRef({\n done: [],\n setup: [],\n animate: [],\n appMounted: [],\n });\n // Methods\n const subscribe = (key, cb) => {\n playbackHooks.current[key].push(cb);\n };\n const unsubscribe = (key, cb) => {\n playbackHooks.current[key] = [...playbackHooks.current[key].filter((entry) => entry !== cb)];\n };\n const setIntermediarySrc = async (exitSrc) => {\n const img = intermediaryImg.el.current;\n img.src = exitSrc;\n await img.decode();\n };\n const resetIntermediary = async () => {\n intermediaryWrapper.current.querySelector('.fade-backdrop').classList.remove('transitioning');\n intermediaryImg.el.current.classList.remove('shown');\n intermediaryImg.el.current.src = '';\n intermediaryImg.el.current.style.removeProperty('top');\n intermediaryImg.el.current.style.removeProperty('left');\n intermediaryImg.el.current.style.removeProperty('max-width');\n intermediaryImg.el.current.style.removeProperty('transform-origin');\n intermediaryImg.el.current.style.removeProperty('transform');\n };\n const resetStore = () => {\n store.exit = null;\n store.enter = null;\n };\n const skipAnimation = async (params) => {\n var _a;\n const { animate, done } = playbackHooks.current;\n const { enter, exit, transition, viewport } = params;\n const scrollY = (viewport === null || viewport === void 0 ? void 0 : viewport.scrollY) || 0;\n const header = document.getElementsByTagName('header')[0];\n const catalogContainer = document.getElementById('catalog');\n if ((transition === null || transition === void 0 ? void 0 : transition.direction) === 'out') {\n header === null || header === void 0 ? void 0 : header.classList.add('no-transition');\n }\n await Promise.all(animate.map(async (cb) => await cb(params)));\n enter.animation.set(Object.assign({ opacity: 1, pointerEvents: 'all', y: 0, x: 0, scale: 1 }, originXYZero));\n await Promise.all(done.map(async (cb) => await cb(params)));\n if ((_a = enter === null || enter === void 0 ? void 0 : enter.el) === null || _a === void 0 ? void 0 : _a.current) {\n enter.el.current.style.position = 'static';\n }\n catalogContainer.style.removeProperty('overflow');\n catalogContainer.style.removeProperty('height');\n header === null || header === void 0 ? void 0 : header.classList.remove('transitioning');\n document.documentElement.scrollTop = scrollY;\n exit.done();\n enter.done();\n resetStore();\n if (transition.direction === 'out') {\n header === null || header === void 0 ? void 0 : header.classList.remove('header--pdp');\n header === null || header === void 0 ? void 0 : header.classList.remove('no-transition');\n }\n };\n // SECTION - No Transition --------------------------------------------------------------------\n const noTransition = async (params) => {\n const { setup } = playbackHooks.current;\n const { enter, exit, transition } = params;\n const catalogContainer = document.getElementById('catalog');\n if (transition.direction === 'in') {\n bodyHeight.current = `${catalogContainer.offsetHeight}`;\n }\n else {\n catalogContainer.style.height = `${bodyHeight.current}px`;\n }\n const header = document.getElementsByTagName('header')[0];\n if (transition.direction === 'in') {\n header === null || header === void 0 ? void 0 : header.classList.add('header--pdp');\n }\n else {\n header === null || header === void 0 ? void 0 : header.classList.add('no-transition');\n header === null || header === void 0 ? void 0 : header.classList.remove('header--pdp');\n }\n enter.el.current.style.zIndex = '0';\n exit.el.current.style.zIndex = '1';\n exit.el.current.style.position = 'relative';\n enter.el.current.style.position = 'absolute';\n // Setup\n await Promise.all(setup.map(async (cb) => await cb(params)));\n skipAnimation(params);\n };\n // !SECTION End No transition\n // SECTION - Push --------------------------------------------------------------------\n const push = async (params) => {\n var _a, _b;\n const { animate, done } = playbackHooks.current;\n const { enter, exit, transition, viewport } = params;\n const catalogContainer = document.getElementById('catalog');\n if (transition.direction === 'in') {\n bodyHeight.current = `${catalogContainer.offsetHeight}`;\n }\n const header = document.getElementsByTagName('header')[0];\n if (window.innerWidth < window.mqObj['md'] && transition.direction === 'in') {\n header === null || header === void 0 ? void 0 : header.classList.add('header--pdp');\n header === null || header === void 0 ? void 0 : header.classList.add('transitioning');\n }\n else if (window.innerWidth > window.mqObj['md']) {\n header === null || header === void 0 ? void 0 : header.classList.remove('header--pdp');\n }\n const scale = (transition === null || transition === void 0 ? void 0 : transition.direction) === 'in' ? 0.7 : 1 / 0.7;\n const scrollY = (viewport === null || viewport === void 0 ? void 0 : viewport.scrollY) || 0;\n const exitScrollTop = window.scrollY;\n const winHeight = document.documentElement.clientHeight;\n const exitOriginY = winHeight / 2 + exitScrollTop;\n exit.el.current.style.zIndex = '2'; // Needed for PLP to be over PDP's accordions\n exit.el.current.style.position = 'fixed';\n exit.el.current.style.overflow = `hidden`;\n exit.el.current.style.scale = `1`;\n exit.el.current.style.opacity = `1`;\n const pushTransitionEase = pushTransition.transition.ease.join(',');\n exit.el.current.style.transition = `scale .75s cubic-bezier(${pushTransitionEase}), opacity .33s cubic-bezier(${pushTransitionEase})`;\n enter.el.current.style.transition = `opacity .5s cubic-bezier(${pushTransitionEase})`;\n enter.el.current.style.position = 'static';\n enter.el.current.style.zIndex = '0';\n enter.el.current.style.opacity = '0';\n enter.el.current.style.scale = '1';\n // Setup\n // await Promise.all(setup.map(async (cb: Function) => await cb(params)));\n //check if page is not ready\n if (!((_a = exit === null || exit === void 0 ? void 0 : exit.el) === null || _a === void 0 ? void 0 : _a.current) || !((_b = enter === null || enter === void 0 ? void 0 : enter.el) === null || _b === void 0 ? void 0 : _b.current)) {\n console.warn('ANIMATION SKIPPED FOR AJAX PROBLEM');\n skipAnimation(params);\n return;\n }\n await Promise.all(animate.map(async (cb) => await cb(params)));\n document.documentElement.scrollTop = scrollY;\n exit.el.current.style.top = `-${exitScrollTop}px`;\n exit.el.current.style.transformOrigin = `center ${exitOriginY}px`;\n // exit.animation.start\n exit.el.current.style.scale = `${1 / scale}`;\n exit.el.current.style.opacity = `0`;\n await new Promise((resolve) => {\n setTimeout(() => {\n resolve(1);\n }, 750);\n });\n exit.done();\n enter.el.current.style.opacity = '1';\n // Clean up\n await Promise.all(done.map(async (cb) => await cb(params)));\n if (transition.direction === 'in' && window.isMobile()) {\n enter.el.current.querySelector('.product-hero-gallery').classList.add('fix-flicker-ios');\n }\n enter.el.current.style.pointerEvents = 'all';\n enter.el.current.style.scale = '';\n enter.done();\n resetStore();\n if (transition.direction === 'out') {\n header === null || header === void 0 ? void 0 : header.classList.remove('header--pdp');\n }\n header === null || header === void 0 ? void 0 : header.classList.remove('transitioning');\n if (transition.direction === 'in' && window.isMobile()) {\n setTimeout(() => {\n enter.el.current.querySelector('.product-hero-gallery').classList.remove('fix-flicker-ios');\n }, 150);\n }\n };\n // !SECTION End Push\n const getCustomTime = () => {\n const cookiename = 'devtranstime';\n let name = cookiename + '=';\n let decodedCookie = decodeURIComponent(document.cookie);\n let ca = decodedCookie.split(';');\n for (let i = 0; i < ca.length; i++) {\n let c = ca[i];\n while (c.charAt(0) == ' ') {\n c = c.substring(1);\n }\n if (c.indexOf(name) == 0) {\n return parseInt(c.substring(name.length, c.length));\n }\n }\n return null;\n };\n const CUSTOM_TIME = getCustomTime();\n const TOTAL_TIME = CUSTOM_TIME || 1.2;\n const handleTime = (time) => {\n return (time / 12) * TOTAL_TIME;\n };\n // !SECTION End Zoomout\n // SECTION Zoom in --------------------------------------------------------------------\n const handleZoomIn = async (params) => {\n var _a, _b;\n const { setup, animate, done } = playbackHooks.current;\n const { enter, exit, transition } = params;\n const { state } = location;\n const header = document.getElementsByTagName('header')[0];\n const tickerBar = document.querySelector('.ticker-bar');\n const catalogContainer = document.getElementById('catalog');\n // const stickyTray = document.querySelector('.sticky-tray') as HTMLElement;\n const exitTile = document.querySelector(`[data-productuuid=\"${state.transition.productUuid}\"]`);\n // Setup\n catalogContainer.style.overflow = 'hidden';\n if (transition.direction === 'in') {\n bodyHeight.current = `${catalogContainer.offsetHeight}`;\n }\n else {\n catalogContainer.style.height = `${bodyHeight.current}px`;\n }\n if (header) {\n header.classList.add('header--pdp');\n header.classList.add('transitioning');\n }\n await Promise.all(setup.map(async (cb) => await cb(params)));\n const availableEnterAnimatedImages = enter.animatedImages.filter((image) => image.productId);\n const enterImagesCount = availableEnterAnimatedImages.length;\n let enterImage;\n if (enterImagesCount === 1) {\n enterImage = availableEnterAnimatedImages[0];\n }\n else {\n enterImage = availableEnterAnimatedImages.find((i) => {\n return i.productId === state.transition.productId;\n });\n }\n const exitImage = exit.animatedImages.find((image) => {\n return image.productUuid === state.transition.productUuid;\n });\n //check if page is not ready\n if (!((_a = enterImage === null || enterImage === void 0 ? void 0 : enterImage.el) === null || _a === void 0 ? void 0 : _a.current) || !((_b = exitImage === null || exitImage === void 0 ? void 0 : exitImage.el) === null || _b === void 0 ? void 0 : _b.current)) {\n console.warn('ANIMATION SKIPPED FOR AJAX PROBLEM');\n skipAnimation(params);\n await resetIntermediary();\n return;\n }\n const exitingImageSrc = enterImage.el.current.dataset.qualityImg;\n try {\n await setIntermediarySrc(exitingImageSrc);\n }\n catch (error) {\n console.log('intermediaryImage Decoding error', error);\n skipAnimation(params);\n await resetIntermediary();\n return;\n }\n // ANCHOR zoomIN standard\n const exitRect = exitImage.el.current.getBoundingClientRect(); // Repaint\n const exitTileRect = exitTile.getBoundingClientRect(); // Repaint\n const enterRect = enterImage.el.current.getBoundingClientRect(); // Repaint\n const tickerHeight = tickerBar ? tickerBar.offsetHeight : 0;\n // First we need to calculate the final scale (i.e. how much bigger will be the tile once in PDP ) in order to set the goal scale and max-width for the intermediary image\n // To do so, we need to decide if base the finale scale on the PDP's image width or height\n // That's because the PDP image can be cropped/cut horizontally or vertically depending on the viewport ratio\n // First we calculate the original aspect ratio\n const imageAspectRatio = exitRect.height / exitRect.width; // it's kinda hardcoded to 1.5 (we have some 150% padding in the CSS) but we calculate it anyway\n // Actually we can't use the viewport ratio, but the available space, ie minus the ticker bar and sticky button\n const pdpStickyTray = enter.el.current.querySelector('.sticky-tray__button .button');\n const pdpStickyTrayHeight = pdpStickyTray ? parseInt(window.getComputedStyle(pdpStickyTray).height) : 0;\n // Also we use document.documentElement.clientHeight instead of window.innerHeight because safari's url bar is unpredictable\n const windowAspectRatio = (document.documentElement.clientHeight - tickerHeight - pdpStickyTrayHeight) / window.innerWidth;\n // We prepare some variables, we'll them'em later\n let finalScale;\n let scale;\n let finalLeft = 0;\n // If window aspect ratio is lesser than imageAspectRatio we can take the width in account ( it's a lot easier this way)\n if (windowAspectRatio <= imageAspectRatio) {\n // We calculate the exit tile's scale for the CSS transition+transfrom, based on ratio between exitTile and PDP image's heights\n scale = exitRect.width / enterRect.width;\n intermediaryImg.el.current.style.setProperty('max-width', '100%');\n }\n else {\n // Otherwise, the height is preserved but the width is cropped in PDP, so we must use the height for our calculations with some extra steps:\n // We need to find how much bigger than 100% is the PDP's image:\n // An image which would perfectly fit the viewport's width (scale 100%), would have this height:\n const standardHeight = window.innerWidth * imageAspectRatio;\n // So to find out the PDP's scale, we use this proportion:\n // ( enterHeight : standardHeight = finalScale : 100 )\n // Or that would be the case, but since we need to take in account safari's url bar going up and down and altering enterRect's height, we also have to take that in account\n const realEnterRectHeight = enterRect.height - (window.innerHeight - document.documentElement.clientHeight);\n finalScale = realEnterRectHeight / standardHeight;\n // And then in percentage... but we also don't want the maxWidth to ever go lower than 100% ( this happens on older/smaller screens in which the PDP image is not cut horizontally )\n const finalMaxWidth = finalScale * 100;\n intermediaryImg.el.current.style.setProperty('max-width', `${finalMaxWidth}%`);\n // Also we calculate the exit tile's scale for the CSS transition+transfrom, based on ratio between exitTile and PDP image's heights\n scale = exitRect.height / realEnterRectHeight;\n // We also need to adjust the left, because since the PDP image is scaled up, we need to center crop the image\n finalLeft = (enterRect.width * finalScale - window.innerWidth) / 2;\n }\n intermediaryImg.el.current.style.setProperty('top', `${tickerHeight}px`);\n // Calculate the transform origin needed to overlap the intermediary with og tile\n // The transform origin X should be the tile's left coordinate but since we use as a reference the PDP's scaled up image, we need to adjust the number accordingly\n const xAnchor = exitTileRect.left / (1 - scale) + 'px';\n // Same for transform origin Y, but we also take the tickerHeight in account\n const yAnchor = (exitTileRect.top - tickerHeight) / (1 - scale) + 'px';\n intermediaryImg.el.current.style.setProperty('transform-origin', `${xAnchor} ${yAnchor}`);\n intermediaryImg.el.current.style.setProperty('transform', `scale(${scale})`);\n intermediaryImg.el.current.classList.add('shown');\n await new Promise((resolve) => {\n setTimeout(() => {\n resolve(1);\n }, 100);\n });\n // animazioni di setup\n enter.animation.set({\n pointerEvents: 'all',\n y: 0,\n zIndex: 10,\n });\n await Promise.all(animate.map(async (cb) => await cb(params)));\n // Actual Transitions\n // ANCHOR * INTERMEDIARY 🌆 --------------------------------------------------------------------\n const fadeBackdrop = intermediaryWrapper.current.querySelector('.fade-backdrop');\n fadeBackdrop.classList.add('transitioning');\n // Then we let the GPU animation do it's work by scaling up to normal ( 1 )\n intermediaryImg.el.current.style.setProperty('transform', `scale(1)`);\n // NOTE: left is not handled by GPU, so some hiccups can be found there : I previously tried with translateX but that would case an uwanted \"curve\" in tile's movement, but since a lot is changed, you could try again\n intermediaryImg.el.current.style.setProperty('left', `-${finalLeft}px`);\n // Apparently sometimes transitionend would not fire correctly, so we added a fallbacktimeout:\n // the first to finish will end the await\n const animationEndPromise = new Promise((resolve) => {\n intermediaryImg.el.current.addEventListener('transitionend', () => {\n setTimeout(() => {\n resolve('animationEndPromise');\n }, 150);\n }, { once: true });\n });\n const fallbackTimeout = new Promise((resolve, reject) => {\n setTimeout(resolve, 1000, 'fallbackTimeout');\n });\n await Promise.race([animationEndPromise, fallbackTimeout]).then((value) => {\n console.log(value);\n });\n // Top:1 is to not trigger safari iphone's bar to appear\n // @ts-ignore scrollBehavior should accepts 'instant' indeed\n window.scroll({ top: 1, left: 0, behavior: 'instant' });\n // ANCHOR * EXIT ❌ --------------------------------------------------------------------\n exit.done();\n // ANCHOR * ENTER ✅ --------------------------------------------------------------------\n await enter.animation.start({\n opacity: 1,\n transition: {\n duration: handleTime(3),\n },\n });\n // ANCHOR * CLEAN UP ⭐️ -------------------------------------------------------------------\n resetIntermediary();\n enter.animation.set({\n position: 'static',\n });\n header === null || header === void 0 ? void 0 : header.classList.remove('transitioning');\n catalogContainer.style.removeProperty('overflow');\n catalogContainer.style.removeProperty('height');\n // We can now scroll to 0, a little scroll doesn't trigger safari iphone's bar to appear\n // @ts-ignore scrollBehavior should accepts 'instant' indeed\n window.scroll({ top: 0, left: 0, behavior: 'instant' });\n enter.done();\n await Promise.all(done.map(async (cb) => await cb(params)));\n resetStore();\n };\n // !SECTION\n const submitEnter = async (enter) => {\n if (firstRender.current) {\n const { appMounted } = playbackHooks.current;\n await Promise.all(appMounted.map(async (cb) => {\n await cb();\n }));\n firstRender.current = false;\n }\n else {\n store.enter = enter;\n ready();\n }\n };\n const submitExit = (exit) => {\n store.exit = exit;\n ready();\n };\n // ANCHOR - Ready --------------------------------------------------------------------\n const ready = async () => {\n const { state } = location;\n const { exit, enter } = store;\n if (!exit || !enter)\n return;\n // OE-14793 - PLP click on color swatch not works the zoom()\n const animationObject = {\n exit,\n enter,\n viewport: state === null || state === void 0 ? void 0 : state.viewport,\n transition: state === null || state === void 0 ? void 0 : state.transition,\n };\n if (window.tileToPlpTransition !== 'none') {\n if (window.tileToPlpTransition === 'push') {\n await push(animationObject);\n }\n else if (window.tileToPlpTransition === 'scale') {\n if (state.transition.direction === 'in' && window.innerWidth < window.mqObj['md']) {\n await handleZoomIn(animationObject);\n }\n else {\n await push(animationObject);\n }\n }\n }\n else {\n await noTransition(animationObject);\n }\n if (state.transition.direction === 'out') {\n ScrollTrigger.disable();\n }\n else {\n ScrollTrigger.refresh();\n }\n // update global variable in order to force chat refresh\n //@ts-ignore\n if (window.chatObject)\n window.chatObject.value = new Date().getTime();\n };\n const context = {\n submitExit,\n submitEnter,\n subscribe,\n unsubscribe,\n };\n // Render\n return (React.createElement(AnimatedContext.Provider, { value: context },\n React.createElement(\"div\", { ref: intermediaryWrapper, className: \"intermediary-wrapper\" },\n React.createElement(\"img\", { ref: intermediaryImg.el, src: \"\", alt: \"\", className: \"intermediary-image\" }),\n React.createElement(\"div\", { className: \"fade-backdrop\" })),\n props.children));\n};\nexport const useAnimatedContext = () => {\n return useContext(AnimatedContext);\n};\nexport default AnimatedProvider;\n","import { __rest } from \"tslib\";\nimport { motion, useAnimation } from 'framer-motion';\nimport React, { createContext, useContext, useEffect, useRef, useState } from 'react';\nimport { Route, useLocation } from 'react-router-dom';\nimport { Transition } from 'react-transition-group';\nimport { useAnimatedContext } from './AnimatedProvider';\nexport const AnimatedRouteContext = createContext({\n // Cannot remove default values!\n registerAnimatedImage: () => { },\n unregisterAnimatedImage: () => { },\n});\nexport const useAnimatedRouteContext = () => useContext(AnimatedRouteContext);\n// Component\nconst AnimatedRoute = (props) => {\n const { path, exact, children } = props, rest = __rest(props, [\"path\", \"exact\", \"children\"]);\n const el = useRef();\n const endListener = useRef(() => { });\n const [animatedImages, setanimatedImages] = useState([]);\n const { subscribe, unsubscribe, submitEnter, submitExit } = useAnimatedContext();\n const { pathname } = useLocation();\n const animation = useAnimation();\n useEffect(() => {\n const onAppMounted = () => {\n animation.set({\n opacity: 1,\n pointerEvents: 'all',\n position: 'static',\n });\n };\n subscribe('appMounted', onAppMounted);\n return () => {\n unsubscribe('appMounted', onAppMounted);\n };\n }, []);\n const done = () => {\n endListener.current();\n };\n const handleEntering = () => {\n // console.info('%c [transition] handleEntering', 'color: green;');\n submitEnter({\n el,\n done,\n animation,\n animatedImages,\n });\n };\n const handleExit = () => {\n // console.info('%c [transition] handleExit', 'color: red;');\n submitExit({\n el,\n done,\n animation,\n animatedImages,\n });\n };\n const methods = {\n registerAnimatedImage(image) {\n // console.info('%c registerAnimatedImage transition', 'background-color: green;', image);\n setanimatedImages((state) => {\n if (typeof state != 'object') {\n return state;\n }\n if (!state.find((el) => el.productUuid == image.productUuid)) {\n // console.info('%c [transition] registerAnimatedImage - add: ', 'background-color: blue;', image, '\\n current state: ', state);\n state.push(image);\n }\n else if (!state.find((el) => el.productId == image.productId)) {\n // console.info('%c [transition] registerAnimatedImage - add: ', 'background-color: blue;', image, '\\n current state: ', state);\n state.push(image);\n }\n return state;\n });\n },\n unregisterAnimatedImage(productId, productUuid) {\n // console.info('%c unregisterAnimatedImage transition', 'background-color: red;', productId);\n setanimatedImages((state) => {\n if (typeof state != 'object') {\n return state;\n }\n // console.info('%c [transition] unregisterAnimatedImage - remove: ', 'background-color: purple;', productId, '\\n current state: ', state);\n return state.filter((image) => {\n return image.productUuid !== productUuid;\n });\n });\n },\n };\n const initialStyle = {\n opacity: 0,\n pointerEvents: 'none',\n width: '100%',\n top: 0,\n left: 0,\n zIndex: 1,\n backgroundColor: '#fff',\n position: 'absolute',\n };\n return (React.createElement(AnimatedRouteContext.Provider, { value: methods },\n React.createElement(Route, Object.assign({ exact: exact, path: path }, rest), (location) => {\n var _a;\n return (React.createElement(Transition, { appear: true, unmountOnExit: true, onEntering: handleEntering, onExit: handleExit, in: pathname === ((_a = location.match) === null || _a === void 0 ? void 0 : _a.url), \n //@ts-ignore\n addEndListener: (node, done) => {\n endListener.current = done;\n } },\n React.createElement(motion.div, { ref: el, animate: animation, initial: initialStyle },\n React.createElement(React.Fragment, null, children))));\n })));\n};\nexport default AnimatedRoute;\n"],"names":["gridClassMultiplier","MO","ST","getId","window","brandId","is","autoChooseClassnames","classesObj","commonclasses","gridClassname","monclerColumn","brackpoint","type","result","push","join","gridClassnames","configs","map","args","apply","autoChooseComponent","componentsObj","autoChooseProps","props","Easings","quartIn","quartOut","quartInOut","pushTransition","transition","duration","ease","originXYZero","originX","originY","AnimatedContext","createContext","useAnimatedContext","useContext","location","firstRender","useRef","bodyHeight","store","enter","exit","intermediaryImg","el","animation","intermediaryWrapper","playbackHooks","done","setup","animate","appMounted","resetIntermediary","async","current","querySelector","classList","remove","src","style","removeProperty","resetStore","skipAnimation","params","_a","viewport","scrollY","header","document","getElementsByTagName","catalogContainer","getElementById","direction","add","Promise","all","cb","set","Object","assign","opacity","pointerEvents","y","x","scale","position","documentElement","scrollTop","_b","offsetHeight","innerWidth","mqObj","exitScrollTop","exitOriginY","clientHeight","zIndex","overflow","pushTransitionEase","console","warn","top","transformOrigin","resolve","setTimeout","isMobile","TOTAL_TIME","name","cookiename","ca","decodeURIComponent","cookie","split","i","length","c","charAt","substring","indexOf","parseInt","getCustomTime","handleZoomIn","state","tickerBar","exitTile","productUuid","height","availableEnterAnimatedImages","animatedImages","filter","image","productId","enterImage","find","exitImage","exitingImageSrc","dataset","qualityImg","exitSrc","img","decode","setIntermediarySrc","error","log","exitRect","getBoundingClientRect","exitTileRect","enterRect","tickerHeight","imageAspectRatio","width","pdpStickyTray","pdpStickyTrayHeight","getComputedStyle","finalScale","finalLeft","setProperty","standardHeight","realEnterRectHeight","innerHeight","finalMaxWidth","xAnchor","left","yAnchor","animationEndPromise","addEventListener","once","fallbackTimeout","reject","time","race","then","value","scroll","behavior","start","ready","animationObject","tileToPlpTransition","noTransition","ScrollTrigger","chatObject","Date","getTime","context","submitExit","submitEnter","subscribe","key","unsubscribe","entry","Provider","ref","className","alt","children","AnimatedRouteContext","registerAnimatedImage","unregisterAnimatedImage","useAnimatedRouteContext","path","exact","rest","__rest","endListener","setanimatedImages","useState","pathname","useEffect","onAppMounted","handleEntering","handleExit","methods","initialStyle","backgroundColor","appear","unmountOnExit","onEntering","onExit","in","match","url","addEndListener","node","initial"],"sourceRoot":""}