{"version":3,"file":"js/component-account-menu-desktop.chunk.js","mappings":"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","sources":["webpack:///./assets/moncler/src/components/menu/AccountMenuDesktop.tsx"],"sourcesContent":["import { menu } from '@utils/constants';\nimport useBreakpoint from '@utils/useBreakpoint';\nimport classNames from 'classnames';\nimport FocusTrap from 'focus-trap-react';\nimport React, { useEffect, useRef, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport customEventBus from '@common/scripts/libs/eventBus';\nimport AccountMenuGuest from './AccountMenuGuest';\nimport AccountMenuLogged from './AccountMenuLogged';\nimport { Provider } from 'react-redux';\nimport { configureSearchStore } from '@common/state';\nlet previuslyScrolled = false;\nconst store = configureSearchStore();\nconst AccountMenuDesktop = (props) => {\n    const [loggedIn, setLoggedIn] = useState(window.loggedin);\n    const [wishlistCount, setWishlistCount] = useState(window.wishlistIds.length);\n    const [overlayVisible, setOverlayVisible] = useState(false);\n    const [animateWishlistIcon, setAnimateWishlistIcon] = useState(false);\n    const [forceReload, setForceReload] = useState(false);\n    const [profileName, setProfileName] = useState(props.profileName);\n    const { t } = useTranslation();\n    const breakpoint = useBreakpoint();\n    const wrapper = useRef(null);\n    const mouseOutTimeout = useRef();\n    const mouseInTimeout = useRef();\n    useEffect(() => {\n        const body = document.querySelector('body');\n        let footer = document.querySelector('.footer');\n        if (window.innerWidth >= window.mqObj.md && footer) {\n            body.style.setProperty('--footer-height', `${footer.clientHeight}px`);\n        }\n    });\n    const handlePreviouslyScrolled = () => {\n        var _a;\n        let header = document.querySelector('header');\n        if (header === null || header === void 0 ? void 0 : header.classList.contains('scrolled')) {\n            previuslyScrolled = true;\n        }\n        else {\n            previuslyScrolled = false;\n            (_a = document.querySelector('header')) === null || _a === void 0 ? void 0 : _a.classList.add('scrolled');\n        }\n    };\n    const firstRender = useRef(true);\n    useEffect(() => {\n        var _a;\n        const scrollBarWidth = window.innerWidth - document.documentElement.clientWidth;\n        if (!firstRender.current) {\n            window.sprChat && window.sprChat(overlayVisible ? 'disable' : 'enable');\n            if (overlayVisible) {\n                handlePreviouslyScrolled();\n            }\n            else if (!previuslyScrolled) {\n                (_a = document.querySelector('header')) === null || _a === void 0 ? void 0 : _a.classList.remove('scrolled');\n            }\n            document.body.classList[overlayVisible ? 'add' : 'remove']('overlay');\n            document.body.classList[overlayVisible ? 'add' : 'remove']('no-overflow');\n            document.body.style[overlayVisible ? 'setProperty' : 'removeProperty']('--scrollbar-width', scrollBarWidth + 'px');\n            if (!overlayVisible && forceReload) {\n                window.location.reload();\n            }\n        }\n        firstRender.current = false;\n    }, [overlayVisible]);\n    useEffect(() => {\n        let animateTimeout;\n        customEventBus.on('account:update', (data) => {\n            let adding = false;\n            if (data === null || data === void 0 ? void 0 : data.wishlistIds) {\n                if (data.wishlistIds.length > window.wishlistIds.length) {\n                    // adding to wishlist\n                    adding = true;\n                }\n                if (breakpoint >= window.mqObj.md) {\n                    window.wishlistIds = data.wishlistIds;\n                }\n                setWishlistCount(data.wishlistIds.length);\n            }\n            else {\n                // window.loggedin updated\n                setLoggedIn(window.loggedin);\n                if (data.firstName) {\n                    setProfileName(data.firstName);\n                }\n            }\n            // >=1 wishlist products\n            if (adding && breakpoint >= window.mqObj.md) {\n                clearTimeout(animateTimeout);\n                setAnimateWishlistIcon(true);\n                animateTimeout = setTimeout(() => {\n                    setAnimateWishlistIcon(false);\n                }, 1500);\n            }\n        });\n        //center menu\n        const selectedPage = document.querySelector('.section-menu-new-wrapper .section-menu-new li.selected');\n        setTimeout(() => {\n            selectedPage === null || selectedPage === void 0 ? void 0 : selectedPage.scrollIntoView({ behavior: 'smooth', block: 'nearest', inline: 'center' });\n        }, 1000);\n    }, []);\n    if (breakpoint < window.mqObj.md) {\n        return React.createElement(React.Fragment, null);\n    }\n    return (React.createElement(Provider, { store: store },\n        React.createElement(\"div\", { className: classNames('account-wrapper__item', { logged: loggedIn }) },\n            React.createElement(\"div\", { className: classNames('account-menu', { 'animate-wishlist-add': animateWishlistIcon }), onMouseEnter: () => {\n                    clearTimeout(mouseOutTimeout.current);\n                    mouseInTimeout.current = setTimeout(() => {\n                        setOverlayVisible(true);\n                    }, menu.overlay.timeout);\n                }, onMouseLeave: (e) => {\n                    let wrapperRects = wrapper.current.getBoundingClientRect();\n                    // safety padding, added a standard 20 as fallback\n                    let padding = parseInt(window.getComputedStyle(wrapper.current).getPropertyValue('padding-left')) || 20;\n                    if (e.clientX < wrapperRects.x + padding ||\n                        e.clientX > wrapperRects.right - padding ||\n                        e.clientY < wrapperRects.y + padding ||\n                        e.clientY > wrapperRects.bottom - padding) {\n                        clearTimeout(mouseInTimeout.current);\n                        mouseOutTimeout.current = setTimeout(() => {\n                            setOverlayVisible(false);\n                        }, menu.overlay.timeout);\n                    }\n                } },\n                React.createElement(\"button\", { type: \"button\", \"data-href\": loggedIn ? props.myaccountUrl : window.loginUrl, className: classNames('account-cta', { 'with-wishlisticon': wishlistCount > 0 }), \"aria-haspopup\": \"true\", id: \"accountButton\", \"data-analytics\": `{\"event\": \"menu\", \"eventCategory\": \"account menu\", \"eventAction\": ${loggedIn ? '\"my moncler\"' : '\"login\"'}}`, onClick: () => {\n                        if (document.body.classList.contains('keyboard-mode') || document.documentElement.getAttribute('data-whatintent') == 'touch') {\n                            setOverlayVisible(true);\n                        }\n                        else {\n                            window.location.href = loggedIn ? props.myaccountUrl : window.loginUrl;\n                        }\n                    } },\n                    React.createElement(\"span\", { className: loggedIn ? 'icon--account-logged' : 'icon--account' }),\n                    React.createElement(\"span\", { className: \"account-cta__label\" }, t(loggedIn ? 'label.mymoncler' : 'account.login'))),\n                React.createElement(FocusTrap, { focusTrapOptions: {\n                        onDeactivate: () => setOverlayVisible(false),\n                        fallbackFocus: () => wrapper.current,\n                        initialFocus: () => wrapper.current,\n                        clickOutsideDeactivates: true,\n                    }, active: overlayVisible },\n                    React.createElement(\"div\", { ref: wrapper, className: classNames(loggedIn ? 'account-dropdown account-dropdown-logged-new' : 'account-dropdown', { visible: overlayVisible }), \"aria-modal\": overlayVisible, role: \"dialog\", tabIndex: -1 }, loggedIn ? (React.createElement(AccountMenuLogged, { wishlistUrl: props.wishlistLoggedUrl, myaccountUrl: props.myaccountUrl, wishlistCount: wishlistCount, feedUrl: props.feedUrl, profileUrl: props.profileUrl, detailsUrl: props.detailsUrl, ordersUrl: props.ordersUrl, aftercareUrl: props.aftercareUrl, appointmentsUrl: props.appointmentsUrl, nftWalletUrl: props.nftWalletUrl, logoutUrl: props.logoutUrl, profileName: profileName, closeMenu: () => setOverlayVisible(false) })) : (React.createElement(AccountMenuGuest, { wishlistUrl: props.wishlistGuestUrl, closeMenu: () => setOverlayVisible(false), wishlistCount: wishlistCount, rememberme: props.rememberme, privacypolicy: props.privacypolicy, forgotpasswordform: props.forgotpasswordform, setForceReload: setForceReload, analyticsKey: \"menu\" }))))),\n            loggedIn && (React.createElement(\"a\", { href: props.logoutUrl, className: \"account-logout\", \"data-analytics\": '{\"event\": \"menu\", \"eventCategory\": \"account menu\", \"eventAction\": \"log out\"}' }, t('label.signout'))))));\n};\nexport default AccountMenuDesktop;\n"],"names":["previuslyScrolled","store","props","loggedIn","setLoggedIn","useState","window","loggedin","wishlistCount","setWishlistCount","wishlistIds","length","overlayVisible","setOverlayVisible","animateWishlistIcon","setAnimateWishlistIcon","forceReload","setForceReload","profileName","setProfileName","t","breakpoint","wrapper","useRef","mouseOutTimeout","mouseInTimeout","useEffect","body","document","querySelector","footer","innerWidth","mqObj","md","style","setProperty","clientHeight","firstRender","_a","scrollBarWidth","documentElement","clientWidth","current","sprChat","header","classList","contains","add","handlePreviouslyScrolled","remove","location","reload","animateTimeout","data","adding","firstName","clearTimeout","setTimeout","selectedPage","scrollIntoView","behavior","block","inline","className","logged","onMouseEnter","onMouseLeave","e","wrapperRects","getBoundingClientRect","padding","parseInt","getComputedStyle","getPropertyValue","clientX","x","right","clientY","y","bottom","type","myaccountUrl","loginUrl","id","onClick","getAttribute","href","focusTrapOptions","onDeactivate","fallbackFocus","initialFocus","clickOutsideDeactivates","active","ref","visible","role","tabIndex","wishlistUrl","wishlistLoggedUrl","feedUrl","profileUrl","detailsUrl","ordersUrl","aftercareUrl","appointmentsUrl","nftWalletUrl","logoutUrl","closeMenu","wishlistGuestUrl","rememberme","privacypolicy","forgotpasswordform","analyticsKey"],"sourceRoot":""}