{"version":3,"file":"SlidingPanel.js","names":["SlidingPanel","a","setters","Component","default","deepMerge","Event","on","off","animate","mix","Accessibility","AnalyticsMixin","LoaderMixin","ajax","execute","with","constructor","element","options","arguments","length","classNames","open","close","url","overlay","a11y","ariaLiveOpened","ariaLiveClosed","showOverlay","externalTriggerSelector","initCache","active","opened","selectors","trigger","document","querySelectorAll","querySelector","target","content","slidingAriaLive","initState","state","isActive","analyticsSent","afterInit","body","appendChild","bindEvents","onTriggerClick","bind","onKeyboardControl","onTargetClick","onBeforeOverlayClose","checkActive","onClose","emit","event","key","onTabKey","closePanel","focusTrap","togglePanel","analytics","onClick","sendAnalytics","hasAttribute","setTimeout","data","getAttribute","JSON","parse","hide","show","classList","add","then","loadContent","updateAria","initModalPattern","handleOnShowAnalyticsAndEvents","virtualPage","updateVirtualPage","panelOpen","isUnblockScrollForAll","destroyModalPattern","remove","addOverlayLoader","spinnerInContainer","onContentLoaded","catch","error","setContent","message","Promise","resolve","response","innerHTML","appendedScripts","forEach","script","srcScript","createElement","text","async","defer","type","head","push","destroy","removeListener","onOpen","removeChild"],"sources":["components/global/SlidingPanel.js"],"sourcesContent":["import Component from 'core/Component';\nimport { deepMerge } from 'toolbox/deepMerge';\nimport { Event } from 'services/EventEmitter';\nimport { on, off } from 'toolbox/event';\nimport { animate } from 'toolbox/animate';\nimport { mix } from 'core/mixwith';\nimport Accessibility from 'mixins/Accessibility';\nimport AnalyticsMixin from 'mixins/Analytics';\nimport LoaderMixin from 'mixins/Loader';\nimport { ajax } from 'toolbox/ajax';\n\n/**\n * This is a description of the SlidingPanel constructor function.\n * @class\n * @classdesc This is a description of the SlidingPanel class. (must be edited)\n * @extends Component\n */\nexport default class SlidingPanel extends mix(Component).with(Accessibility, LoaderMixin, AnalyticsMixin) {\n    /**\n     * Constructor of the class that mainly merge the options of the components\n     *\n     * @param {HTMLElement} element HTMLElement of the component\n     * @param {Object} options options that belongs to the component\n     *\n     */\n    constructor(element, options = {}) {\n        super(element, deepMerge({\n            // ClassNames\n            classNames: {\n                open: 'h-slide-up-in', // Added to sliding panel classes after it is opened\n                close: 'h-slide-up-out', // Added to sliding panel classes before it is closed\n            },\n            url: {}, // urls list\n            overlay: {}, // overlay options\n            a11y: {\n                ariaLiveOpened: '', // Text used for the voice message when sliding panel is opening\n                ariaLiveClosed: '', // Text used for the voice message when sliding panel is closing\n            },\n            showOverlay: true, // flag indicates if overlay should be shown\n            externalTriggerSelector: null, // selector to a trigger if located outside the component\n        }, options));\n    }\n\n    /**\n     * All selectors must be cached. Never cache elements that are out of the component scope\n     */\n    initCache() {\n        this.classNames = {\n            active: 'm-active',\n            opened: 'm-opened',\n        };\n        if (this.options.externalTriggerSelector) {\n            this.selectors.trigger = document.querySelectorAll(this.options.externalTriggerSelector);\n        } else {\n            this.selectors.trigger = this.element.querySelector('[data-js-sliding-trigger]');\n        }\n        this.selectors.target = this.element.querySelector('[data-js-sliding-container]');\n        this.selectors.content = this.element.querySelector('[data-js-sliding-content]');\n        this.selectors.slidingAriaLive = document.querySelector('[data-js-sliding-aria-live]');\n    }\n\n    /**\n     * Init the different state of the component\n     * It helps to avoid heavy DOM manipulation\n     */\n    initState() {\n        this.state.isActive = false;\n        this.state.analyticsSent = false;\n    }\n\n    /**\n     * After init\n     * Run any script after the component is fully initialized\n     */\n    afterInit() {\n        this.selectors.target = document.body.appendChild(this.selectors.target);\n    }\n\n    /**\n     * Should contain only event listeners and nothing else\n     * All the event handlers should be into a separated function. No usage of anonyous function\n     */\n    bindEvents() {\n        if (this.selectors.trigger) {\n            on('click', this.selectors.trigger, this.onTriggerClick.bind(this));\n        }\n        on('keydown', this.selectors.target, this.onKeyboardControl.bind(this));\n        on('click', this.selectors.target, this.onTargetClick.bind(this));\n        Event.on('overlay.close.before', this.onBeforeOverlayClose, this);\n        Event.on('slidingPanel.check.active', this.checkActive, this);\n        Event.on('slidingPanel.close', this.onClose, this);\n    }\n\n    /**\n     * Check if sliding panel is active when opening a modal\n     */\n    checkActive() {\n        if (this.state.isActive) {\n            Event.emit('modal.keep.overlay.open');\n        }\n    }\n\n    /**\n     * Keydown event handler\n     *\n     * @param {Object} event Event object\n     */\n    onKeyboardControl(event) {\n        switch (event.key) {\n        case 'Tab': // 'Tab' key\n            this.onTabKey(event);\n            break;\n        case 'Escape': // 'Escape' key\n            this.closePanel();\n            break;\n        default:\n            break;\n        }\n    }\n\n    /**\n     * Tab key event\n     *\n     * @param {Object} event Event object\n    */\n    onTabKey(event) {\n        super.focusTrap(this.selectors.target, event);\n    }\n\n    /**\n     * Trigger click event handler\n     */\n    onTriggerClick() {\n        this.togglePanel();\n\n        if (this.analytics.onClick && !this.state.analyticsSent) {\n            this.sendAnalytics(this.analytics.onClick);\n            this.state.analyticsSent = true;\n        }\n    }\n\n    /**\n     * Target container click event handler\n     * @param {Object} event Event object\n     */\n    onTargetClick(event) {\n        const { target } = event;\n\n        if (target.hasAttribute('data-js-sliding-close')) {\n            this.closePanel();\n        }\n        setTimeout(() => {\n            if (target.hasAttribute('data-analytics') && target.hasAttribute('data-send-analytics')) {\n                let data;\n                const analytics = target.getAttribute('data-analytics');\n                if (analytics) {\n                    data = JSON.parse(analytics);\n                }\n                this.sendAnalytics(data);\n            }\n        }, 0);\n    }\n\n    /**\n     * Close button click event handler\n     * @param {Object} event Event object\n     */\n    onClose() {\n        this.closePanel();\n    }\n\n    /**\n     * Close panel\n     * @param {Object} event Event object\n     */\n    closePanel() {\n        if (!this.state.isActive) {\n            return;\n        }\n        this.hide();\n\n        if (this.options.showOverlay) {\n            Event.emit('overlay.close');\n        }\n    }\n\n    /**\n     * Send analytics\n     * @param {data} data analytics object\n     */\n    sendAnalytics(data) {\n        if (data) {\n            Event.emit('analytics.event', data);\n        }\n    }\n\n    /**\n     * Show/hide panel based on current state\n     */\n    togglePanel() {\n        if (this.state.isActive) {\n            this.hide();\n\n            if (this.options.showOverlay) {\n                Event.emit('overlay.close');\n            }\n        } else {\n            this.show();\n        }\n    }\n\n    /**\n     * Show panel\n     * @param {Object} options options\n     */\n    show(options) {\n        const { active } = this.state;\n        this.state.isActive = true;\n\n        if (!active) {\n            this.selectors.target.classList.add(this.classNames.active);\n            animate(this.options.classNames.open, this.selectors.target).then(() => {\n                this.selectors.target.classList.add(this.classNames.opened);\n            });\n        }\n\n        this.loadContent(options && options.url)\n            .then(() => {\n                if (this.selectors.slidingAriaLive) {\n                    this.updateAria(this.selectors.slidingAriaLive, this.options.a11y.ariaLiveOpened);\n                }\n\n                // Put the focus into the Modal window after content is loaded and mask the main page from screen reader\n                this.initModalPattern(this.selectors.target);\n            });\n        setTimeout(() => {\n            this.handleOnShowAnalyticsAndEvents();\n        }, 0);\n    }\n\n    /**\n     * Handle on show analytics and events\n     */\n    handleOnShowAnalyticsAndEvents() {\n        if (this.analytics.virtualPage) {\n            this.updateVirtualPage(this.analytics.virtualPage);\n        }\n        this.sendAnalytics(this.analytics.panelOpen);\n\n        if (this.options.showOverlay) {\n            Event.emit('overlay.open', this.options.overlay);\n        }\n\n        Event.emit('page.scroll.disabled', true);\n        Event.emit('slidingPanel.open.after', this);\n    }\n\n    /**\n     * Hide panel\n     */\n    hide() {\n        Event.emit('page.scroll.enabled', { isUnblockScrollForAll: true });\n\n        this.state.isActive = false;\n        this.destroyModalPattern();\n\n        if (this.selectors.slidingAriaLive) {\n            this.updateAria(this.selectors.slidingAriaLive, this.options.a11y.ariaLiveClosed);\n        }\n\n        animate(this.options.classNames.close, this.selectors.target).then(() => {\n            this.selectors.target.classList.remove(this.classNames.opened);\n            this.selectors.target.classList.remove(this.classNames.active);\n            Event.emit('slidingPanel.close.after', this);\n        });\n    }\n\n    /**\n     * Before overlay close event handler\n     */\n    onBeforeOverlayClose() {\n        if (!this.state.isActive) {\n            return;\n        }\n\n        this.hide();\n    }\n\n    /**\n     * Dynamically load content\n     * @param {String} url content custom url\n     * @returns {Promise} object\n     */\n    loadContent(url) {\n        if ((!url && !this.options.url.content) || !this.selectors.content) {\n            return Promise.resolve();\n        }\n\n        this.addOverlayLoader(this.selectors.content, null, { spinnerInContainer: true });\n\n        return ajax(url || this.options.url.content)\n            .then(this.onContentLoaded.bind(this))\n            .catch((error) => {\n                this.setContent(error.message);\n            });\n    }\n\n    /**\n     * Put a content to content container\n     * @param {String} response - HTML which inserts to container\n     */\n    onContentLoaded(response) {\n        if (!this.selectors.content) {\n            return;\n        }\n\n        this.setContent(response);\n    }\n\n    /**\n     * Put a content to content container\n     * @param {String} content - content which inserts to container\n     */\n    setContent(content) {\n        if (!content) {\n            return;\n        }\n\n        this.selectors.content.innerHTML = content;\n        // evaluates inline javascripts in response content\n        this.appendedScripts = [];\n        this.selectors.content.querySelectorAll('script').forEach((script) => {\n            const srcScript = document.createElement('script');\n\n            srcScript.text = script.innerHTML;\n            srcScript.async = script.async;\n            srcScript.defer = script.defer;\n            srcScript.type = script.type;\n            document.head.appendChild(srcScript);\n            this.appendedScripts.push(srcScript);\n        });\n\n        Event.emit('registry.registerChildren', this.selectors.content);\n    }\n\n    /**\n     * Destroy is called automatically after the component is being removed from the DOM\n     * You must always destroy the listeners attached to an element to avoid any memory leaks\n     */\n    destroy() {\n        if (this.selectors.trigger) {\n            off('click', this.selectors.trigger);\n        }\n        off('click', this.selectors.target);\n        off('keydown', this.selectors.target);\n        Event.removeListener('overlay.close.before', this.onBeforeOverlayClose, this);\n        Event.removeListener('slidingPanel.check.active', this.checkActive, this);\n        Event.removeListener('slidingPanel.close', this.onClose, this);\n        Event.removeListener('slidingPanel.open', this.onOpen, this);\n        (this.appendedScripts || []).forEach((srcScript) => {\n            document.head.removeChild(srcScript);\n        });\n        this.selectors.target.remove();\n    }\n}\n"],"mappings":"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","ignoreList":[]}