{"version":3,"file":"common~account.widgets~cart.widgets~checkout.widgets.bundle.js","mappings":"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","sources":["webpack://sfra-boilerplate/./cartridges/app_storefront_widgets/cartridge/client/default/js/widgets/global/SessionExpiration.ts"],"sourcesContent":["import { submitFormJson } from 'widgets/toolbox/ajax';\nimport { timeout } from 'widgets/toolbox/util';\nimport token from '../toolbox/token';\n\n/**\n * @description Base SessionExpiration implementation\n * @param Modal Base widget for extending\n * @returns SessionExpiration class\n */\nexport default function (Modal: ReturnType<typeof import('widgets/global/Modal').default>) {\n    /**\n     * @category widgets\n     * @subcategory global\n     * @class SessionExpiration\n     * @augments Modal\n     * @classdesc Session expiration component. Used to notify customer via popup, that his/her session is about to expire.\n     * 1. At page loads starts a background timeout with configured time.\n     * 2. After timeout, popup with session expiration alert will be shown. Popup also contains countdown before session will be expired.\n     * 3. Any customer interaction with popup will lead to backend ping and CSRF token re-newal, which prolongs customer session.\n     * 4. If popup was not closed - redirect to session expiration page happens.\n     * @property {string} data-widget - Widget name `sessionExpiration`\n     * @property {string} data-disable-rendering - Can disable modal dynamic content rendering.\n     * Should be set to `true` in order countdown to work correctly!\n     * @property {string} data-session-timeout-url - URL to redirect customer once session timeout\n     * @property {string} data-session-continue-url - URL to get updated token and prolong customer's session\n     * @property {number} data-initial-timeout - Initial timeout in minutes prior to expiration popup\n     * @property {number} data-countdown-timeout - Countdown time in minutes up to session expires\n     * @example <caption>Example of Session Expiration DOM structure</caption>\n     * <div\n     *     data-widget=\"sessionExpiration\"\n     *     data-disable-rendering=\"true\"\n     *     data-session-timeout-url=\"${URLUtils.url('CSRF-Fail')}\"\n     *     data-session-continue-url=\"${URLUtils.url('CSRF-Generate')}\"\n     *     data-initial-timeout=\"24\"\n     *     data-countdown-timeout=\"5\"\n     * >\n     *     <div\n     *         class=\"b-dialog\"\n     *         aria-label=\"\"\n     *         data-ref=\"container\"\n     *         hidden\n     *     >\n     *         <div\n     *             class=\"b-dialog-window\"\n     *             role=\"dialog\"\n     *             data-ref=\"dialog\"\n     *             aria-modal=\"true\"\n     *         >\n     *             <div class=\"b-dialog-header\">\n     *                 <isinclude template=\"components/modal/closeButton\">\n     *             </div>\n     *             <div class=\"b-dialog-body b-user_content\">\n     *                 <isprint value=\"${Resource.msg('sessionExpiration.abouttoexpire', 'global', null)}\" />\n     *                 <div data-ref=\"countdown\"></div>\n     *                 <svg class=\"b-countdown-icon\" data-ref=\"countdownCircle\">\n     *                     <circle data-ref=\"countdownCircleBg\" class=\"b-countdown-circle_bg\" r=\"92\" cx=\"95\" cy=\"95\"></circle>\n     *                     <circle data-ref=\"countdownCircleAnimated\" class=\"b-countdown-circle_animated\" r=\"92\" cx=\"95\" cy=\"95\"></circle>\n     *                 </svg>\n     *                 <button\n     *                     type=\"button\"\n     *                     class=\"b-button\"\n     *                     data-event-click.prevent=\"continueSession\"\n     *                     data-dismiss=\"modal\"\n     *                     data-ref=\"lastFocusElement\"\n     *                 >\n     *                     <isprint value=\"${Resource.msg('sessionExpiration.continuesession', 'global', null)}\" />\n     *                 </button>\n     *             </div>\n     *         </div>\n     *     </div>\n     * </div>\n     */\n    class SessionExpiration extends Modal {\n        countdown?: import('widgets/toolbox/SimpleCountdown').default;\n\n        prefs() {\n            return {\n                initialTimeout: 24,\n                countdownTimeout: 5,\n                countdown: 'countdown',\n                countdownCircleAnimated: 'countdownCircleAnimated',\n                countdownIcon: 'countdownIcon',\n                countdownCircleBg: 'countdownCircleBg',\n                sessionTimeoutUrl: '',\n                sessionContinueUrl: '',\n                ...super.prefs()\n            };\n        }\n\n        /**\n         * @description Widget initialization logic\n         * @listens module:ajax#responseok\n         * @listens dom#focus\n         * @returns {void}\n         */\n        init() {\n            super.init();\n            this.onDestroy(() => this.clearDisposableResources());\n            this.eventBus().on('responseok', 'onOKResponse');\n            this.resetInitialTimeout();\n\n            // @ts-expect-error ts-migrate(2339) FIXME: Property 'started' does not exist on type 'Session... Remove this comment to see the full error message\n            this.started = Date.now();\n\n            // @ts-expect-error ts-migrate(2339) FIXME: Property 'focusListener' does not exist on type 'S... Remove this comment to see the full error message\n            this.focusListener = this.ev('visibilitychange', () => this.handleVisibilityChange(), window.document);\n            this.onDestroy(() => {\n                // @ts-expect-error ts-migrate(2339) FIXME: Property 'focusListener' does not exist on type 'S... Remove this comment to see the full error message\n                if (this.focusListener) {\n                    // @ts-expect-error ts-migrate(2339) FIXME: Property 'focusListener' does not exist on type 'S... Remove this comment to see the full error message\n                    this.focusListener.forEach((disposable) => disposable());\n\n                    // @ts-expect-error ts-migrate(2339) FIXME: Property 'focusListener' does not exist on type 'S... Remove this comment to see the full error message\n                    this.focusListener = undefined;\n                }\n            });\n        }\n\n        /**\n         * @description Evaluates actions needed after success AJAX response\n         * @returns {void}\n         */\n        onOKResponse() {\n            // TODO Do not reset session expiration timeout if response from service-worker cache\n\n            // @ts-expect-error ts-migrate(2339) FIXME: Property 'started' does not exist on type 'Session... Remove this comment to see the full error message\n            this.started = Date.now();\n            this.resetInitialTimeout();\n        }\n\n        /**\n         * @description Method needed to properly handle mobile/tablet devices either\n         * after application switch or after device turn on after sleep mode, because mobile/tablet\n         * platforms will suspend `setTimeout`/`setInterval` operations, when tab is in background or device is in sleep mode\n         * Method adjusts timings in comparison to last active time.\n         * @returns {void}\n         */\n        handleVisibilityChange() {\n            // @ts-expect-error ts-migrate(2339) FIXME: Property 'started' does not exist on type 'Session... Remove this comment to see the full error message\n            if (!this.started) {\n                return;\n            }\n\n            const initialTimeout = this.prefs().initialTimeout * 1000 * 60;\n            const countdownTimeout = this.prefs().countdownTimeout * 1000 * 60;\n\n            // @ts-expect-error ts-migrate(2339) FIXME: Property 'started' does not exist on type 'Session... Remove this comment to see the full error message\n            const timePassed = Date.now() - this.started;\n\n            const passedMoreThanInitialTimeout = timePassed > initialTimeout;\n            const passedMoreThanCountdown = timePassed > (initialTimeout + countdownTimeout);\n\n            if (passedMoreThanCountdown) {\n                this.sessionExpired();\n\n                return;\n            }\n\n            if (passedMoreThanInitialTimeout) {\n                const remainingTimeForCountdown = (initialTimeout + countdownTimeout - timePassed) / 1000;\n\n                // adjust countdown\n\n                // @ts-expect-error ts-migrate(2339) FIXME: Property 'countdownShown' does not exist on type '... Remove this comment to see the full error message\n                if (!this.countdownShown) {\n                    this.startCountdown().then(() => this.adjustCountdown(remainingTimeForCountdown));\n                } else {\n                    this.adjustCountdown(remainingTimeForCountdown);\n                }\n\n                return;\n            }\n\n            // adjust initial timeout\n\n            // @ts-expect-error ts-migrate(2345) FIXME: Argument of type 'number' is not assignable to par... Remove this comment to see the full error message\n            this.resetInitialTimeout(initialTimeout - timePassed);\n        }\n\n        /**\n         * @description Executes started countdown adjustment\n         * @param {number} time - time for countdown in seconds\n         * @returns {void}\n         */\n        adjustCountdown(time) {\n            this.clearDisposableResources();\n            this.initCountdown(time);\n        }\n\n        /**\n         * @description Resets initial timeout and starts new timeout. Usually is called once any ajax request finishes\n         * @param {number|undefined} actualTimeout - actual time for initial timeout in milliseconds\n         * @returns {void}\n         */\n        resetInitialTimeout(actualTimeout = undefined) {\n            this.clearDisposableResources();\n\n            // @ts-expect-error ts-migrate(2339) FIXME: Property 'initialTimeout' does not exist on type '... Remove this comment to see the full error message\n            this.initialTimeout = timeout(() => {\n                this.startCountdown();\n            }, actualTimeout || (this.prefs().initialTimeout * 60 * 1000));\n        }\n\n        /**\n         * @description Shows \"Session expires in...\" modal and starts countdown.\n         * Once countdown finishes, trigger session expiration logic\n         * @returns {Promise} result\n         */\n        startCountdown() {\n            this.showModal({});\n\n            // @ts-expect-error ts-migrate(2339) FIXME: Property 'countdownShown' does not exist on type '... Remove this comment to see the full error message\n            this.countdownShown = true;\n            this.ref('countdown').setText(`${this.prefs().countdownTimeout}:00`);\n            const countdownCircle = this.ref('countdownCircle').get();\n            const countdownCircleBg = this.ref('countdownCircleBg').get();\n            const countdownCircleAnimated = this.ref('countdownCircleAnimated').get();\n\n            if (countdownCircle && countdownCircleAnimated && countdownCircleBg) {\n                const TAU = Math.PI * 2;\n                const radius = 92;\n\n                // @ts-expect-error ts-migrate(2339) FIXME: Property 'circleLength' does not exist on type 'Se... Remove this comment to see the full error message\n                this.circleLength = TAU * radius;\n                countdownCircleBg.setAttributeNS(null, 'r', String(radius));\n                countdownCircleAnimated.setAttributeNS(null, 'r', String(radius));\n            }\n\n            return this.initCountdown();\n        }\n\n        /**\n         * @description Initiates countdown with predefined starting time\n         * @param {number|undefined} time - time to start countdown\n         * @returns {Promise} result\n         */\n        initCountdown(time = undefined) {\n            const countdownCircleAnimated = this.ref('countdownCircleAnimated').get();\n\n            // @ts-expect-error ts-migrate(2339) FIXME: Property 'circleLength' does not exist on type 'Se... Remove this comment to see the full error message\n            const circleLength = this.circleLength || 0;\n            const countdownTimeoutSeconds = this.prefs().countdownTimeout * 60;\n\n            return import(/* webpackChunkName: 'simplecountdown' */'widgets/toolbox/SimpleCountdown').then((SimpleCountdown) => {\n                // eslint-disable-next-line new-cap\n                this.countdown = new SimpleCountdown.default(progress => {\n                    this.ref('countdown').setText(`${progress.minutes}:${progress.seconds}`);\n\n                    const passedTimePercent = 1 - (progress.duration / countdownTimeoutSeconds);\n                    const visibleCircleLength = circleLength - Math.round(circleLength * passedTimePercent);\n\n                    if (countdownCircleAnimated) {\n                        countdownCircleAnimated.setAttributeNS(null, 'stroke-dasharray',\n                            (visibleCircleLength + ',' + circleLength));\n                    }\n                // @ts-expect-error ts-migrate(2345) FIXME: Argument of type '{ time: number; }' is not assign... Remove this comment to see the full error message\n                }, () => this.sessionExpired(), {\n                    time: time || this.prefs().countdownTimeout * 60\n                });\n            });\n        }\n\n        /**\n         * @description Session expired logic. Redirects customer to given URL.\n         * @returns {void}\n         */\n        sessionExpired() {\n            this.clearDisposableResources();\n            window.location.assign(this.prefs().sessionTimeoutUrl);\n        }\n\n        /**\n         * @description Continue session logic. Sends request to update csrf-token.\n         * @returns {Promise<object>} Promise object represents server response for session continuation\n         */\n        continueSession() {\n            return submitFormJson(this.prefs().sessionContinueUrl, {}).then((response) => {\n                // @ts-expect-error ts-migrate(2571) FIXME: Object is of type 'unknown'.\n                token.name = response.csrf.tokenName;\n\n                // @ts-expect-error ts-migrate(2571) FIXME: Object is of type 'unknown'.\n                token.value = response.csrf.token;\n                this.closeModal();\n\n                // @ts-expect-error ts-migrate(2339) FIXME: Property 'countdownShown' does not exist on type '... Remove this comment to see the full error message\n                this.countdownShown = false;\n\n                return response;\n            });\n        }\n\n        /**\n         * @description Method, which is called once customer closes modal\n         * (i.e. press close button or clicked outside modal)\n         * @returns {void}\n         */\n        cancel() {\n            this.continueSession().finally(() => {\n                super.cancel();\n            });\n        }\n\n        /**\n         * @description Clear disposable resources\n         * @returns {void}\n         */\n        clearDisposableResources() {\n            // @ts-expect-error ts-migrate(2339) FIXME: Property 'initialTimeout' does not exist on type '... Remove this comment to see the full error message\n            if (this.initialTimeout) {\n                // @ts-expect-error ts-migrate(2339) FIXME: Property 'initialTimeout' does not exist on type '... Remove this comment to see the full error message\n                this.initialTimeout();\n\n                // @ts-expect-error ts-migrate(2339) FIXME: Property 'initialTimeout' does not exist on type '... Remove this comment to see the full error message\n                this.initialTimeout = undefined;\n            }\n\n            if (this.countdown) {\n                this.countdown.destroy();\n                this.countdown = undefined;\n            }\n        }\n    }\n\n    return SessionExpiration;\n}\n"],"names":["submitFormJson","timeout","token","Modal","SessionExpiration","prefs","initialTimeout","countdownTimeout","countdown","countdownCircleAnimated","countdownIcon","countdownCircleBg","sessionTimeoutUrl","sessionContinueUrl","init","onDestroy","clearDisposableResources","eventBus","on","resetInitialTimeout","started","Date","now","focusListener","ev","handleVisibilityChange","window","document","forEach","disposable","undefined","onOKResponse","timePassed","passedMoreThanInitialTimeout","passedMoreThanCountdown","sessionExpired","remainingTimeForCountdown","countdownShown","startCountdown","then","adjustCountdown","time","initCountdown","actualTimeout","showModal","ref","setText","countdownCircle","get","TAU","Math","PI","radius","circleLength","setAttributeNS","String","countdownTimeoutSeconds","SimpleCountdown","default","progress","minutes","seconds","passedTimePercent","duration","visibleCircleLength","round","location","assign","continueSession","response","name","csrf","tokenName","value","closeModal","cancel","finally","destroy"],"sourceRoot":""}