{"version":3,"sources":["newsletter.js"],"names":["_typeof","o","Symbol","iterator","constructor","prototype","_defineProperties","e","r","t","length","enumerable","configurable","writable","Object","defineProperty","_toPropertyKey","key","_createClass","i","_toPrimitive","toPrimitive","call","TypeError","String","Number","_classCallCheck","a","n","_classPrivateMethodInitSpec","_checkPrivateRedeclaration","add","_classPrivateFieldInitSpec","set","has","_classPrivateFieldGet","s","get","_assertClassBrand","_classPrivateFieldSet","arguments","_suppressNewsletterPopupCloseEvent","WeakMap","_autoPopupInterval","_autoPopupTimer","_NewsletterPopup_brand","WeakSet","NewsletterPopup","this","_bindEvents","_this","_suppressForSubscriberLink","Soho","plugins","delegate","document","_handleSubmit","newsletter","querySelector","dataset","autoPopup","cookie","indexOf","_scheduleAutoPopup","$","on","_openPopup","preventDefault","URLSearchParams","window","location","search","_SUBSCRIBER_QUERY_PARAM","_","_setCookie","_COOKIE_DAYS_SUBSCRIBE","_this2","form","target","scope","attr","resolvedScope","pathname","ajax","url","method","data","serialize","success","_handleAjaxSuccess","payload","html","val","trigger","magnificPopup","instance","isOpen","_updatePopupContent","successful","_clearAutoPopupTimers","GTM","trackEvent","startsWith","hide","closest","find","removeAttr","show","content","replaceWith","popupClose","onclick","close","_shouldSuppressAutoPopup","_document$activeEleme","sessionStorage","getItem","body","hasAttribute","activeElement","_SUPPRESSION_SELECTORS","join","_this3","setTimeout","setItem","setInterval","clearInterval","_RETRY_INTERVAL","_AUTO_POPUP_DELAY","clearTimeout","_this4","undefined","svg","Svg","open","items","src","type","closeMarkup","render","focus","callbacks","_onPopupOpen","documentElement","megaMenuIgnoreClick","_onPopupClose","afterClose","mainClass","fixedContentPos","trackExperiment","newsletterOptimizeExperimentId","ContentSquare","trackPopupOpenPageview","_COOKIE_DAYS_DISMISS","trackPopupClosePageview","name","value","days","expires","Date","setTime","getTime","concat","toUTCString","_CheckoutThankYouNewsletter_brand","CheckoutThankYouNewsletter","_bind","_this5","_onSubmit","_this6","$form","_onSuccess","_window$Soho","_transformPanel","message","$panel","remove","msg","append"],"mappings":"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","file":"../../javascript/newsletter.js","sourcesContent":["/**\n * Newsletter popup\n *  - Handles newsletter open popup and form submission, replaces content on success\n */\nclass NewsletterPopup {\n\n    /**\n     * Selectors that indicate the popup should be suppressed.\n     */\n    static #SUPPRESSION_SELECTORS = [\n        '#onetrust-banner-sdk',\n        '.overlay--active',\n        '.quick-basket--active',\n        '.sticky-popup--active-a',\n        '.product-sticky-cta--active-a',\n        '.search--active',\n        '.filters__selected--active',\n        '.mfp-wrap',\n    ];\n\n    /** Initial delay before first suppression check (ms) */\n    static #AUTO_POPUP_DELAY = 15000;\n\n    /** Interval between retry suppression checks (ms) */\n    static #RETRY_INTERVAL = 5000;\n\n    /** Cookie duration when user subscribes (days) */\n    static #COOKIE_DAYS_SUBSCRIBE = 365;\n\n    /** Query parameter applied only to links sent to known newsletter subscribers */\n    static #SUBSCRIBER_QUERY_PARAM = 'newsletter_subscribed';\n\n    /** Cookie duration when user dismisses popup (days) */\n    static #COOKIE_DAYS_DISMISS = 28;\n\n    /** @internal */\n    #suppressNewsletterPopupCloseEvent = false;\n    /** @internal */\n    #autoPopupInterval = null;\n    /** @internal */\n    #autoPopupTimer = null;\n\n    constructor() {\n        this.#bindEvents();\n    }\n\n    /**\n     * Bind page events\n     *\n     * @private\n     * @returns {void}\n     */\n    #bindEvents() {\n        this.#suppressForSubscriberLink();\n\n        Soho.plugins.delegate(\n            document,\n            'submit',\n            '.js-submit-newsletter, .checkout-thanks-panel__newsletter:not([data-newsletter-scope=\"thank-you\"])',\n            (e) => this.#handleSubmit(e)\n        );\n\n        const newsletter = document.querySelector('.popup--newsletter');\n\n        if (newsletter) {\n            if (newsletter.dataset.autoPopup && document.cookie.indexOf('soho_npopup=') < 0) {\n                this.#scheduleAutoPopup();\n            }\n\n            $('.popup--newsletter').on('newsletter.popup', () => {\n                this.#openPopup();\n            });\n        }\n\n        // Handle manual popup trigger\n        $('.js-newsletter-popup-trigger').on('click', (e) => {\n            e.preventDefault();\n            this.#openPopup();\n        });\n    }\n\n    /**\n     * Suppress automatic popups when a trusted subscriber link identifies the visitor.\n     *\n     * @private\n     * @returns {void}\n     */\n    #suppressForSubscriberLink() {\n        const query = new URLSearchParams(window.location.search);\n\n        if (query.has(NewsletterPopup.#SUBSCRIBER_QUERY_PARAM)) {\n            this.#setCookie('soho_npopup', '1', NewsletterPopup.#COOKIE_DAYS_SUBSCRIBE);\n        }\n    }\n\n    /**\n     * Handle newsletter form submission\n     *\n     * @private\n     * @param {*} e\n     * @returns {void}\n     */\n    #handleSubmit(e) {\n        e.preventDefault();\n        const form = $(e.target);\n\n        this.#suppressNewsletterPopupCloseEvent = true;\n        const scope = form.attr('data-newsletter-scope') || form.attr('id') || 'unknown';\n\n        // Add more specificity to the scope\n        const resolvedScope = (scope === 'block') ? 'block--' + window.location.pathname : scope;\n\n        $.ajax({\n            url: '/newsletter',\n            method: 'post',\n            data: form.serialize(),\n            success: (data) => this.#handleAjaxSuccess(data, form, resolvedScope)\n        });\n    }\n\n    /**\n     * Handle ajax success\n     *\n     * @private\n     * @param {*} data\n     * @param {*} form\n     * @param {*} scope\n     * @returns {void}\n     */\n    #handleAjaxSuccess(data, form, scope) {\n        if (!data?.payload) {\n            return;\n        }\n\n        const html = data.payload.html;\n        $('input[type=email]', form).val(\"\");\n        $('input[type=email]', form).trigger('change');\n\n        if ($.magnificPopup.instance.isOpen) {\n            this.#updatePopupContent(html);\n        }\n\n        if (data.payload.successful) {\n            this.#setCookie('soho_npopup', '1', NewsletterPopup.#COOKIE_DAYS_SUBSCRIBE);\n            this.#clearAutoPopupTimers();\n            Soho.GTM.trackEvent('Newsletter form', 'Subscribe', scope);\n\n            if (scope === 'block' || scope.startsWith('block--')) {\n                form.hide();\n                form.closest('.l-one-half').find('.js-newsletter-success-message').removeAttr('hidden').show();\n            }\n        }\n    }\n\n    /**\n     * Update the popup content\n     *\n     * @private\n     * @param {*} html\n     * @returns {void}\n     */\n    #updatePopupContent(html) {\n        $.magnificPopup.instance.content.replaceWith(html);\n\n        const popupClose = document.querySelector('.js-popup--close');\n        if (popupClose) {\n            popupClose.onclick = $.magnificPopup.close;\n        }\n    }\n\n    /**\n     * Whether the auto-popup should be suppressed right now\n     *\n     * @private\n     * @returns {boolean}\n     */\n    #shouldSuppressAutoPopup() {\n        if (!sessionStorage.getItem('soho_visited')) {\n            return true;\n        }\n\n        if (document.body.hasAttribute('header-active')) {\n            return true;\n        }\n\n        if (document.activeElement?.closest('form')) {\n            return true;\n        }\n\n        return !!document.querySelector(NewsletterPopup.#SUPPRESSION_SELECTORS.join(','));\n    }\n\n    /**\n     * Schedule the auto-popup with retry pattern\n     *\n     * @private\n     * @returns {void}\n     */\n    #scheduleAutoPopup() {\n        this.#autoPopupTimer = setTimeout(() => {\n            this.#autoPopupTimer = null;\n            sessionStorage.setItem('soho_visited', '1');\n\n            if (!this.#shouldSuppressAutoPopup()) {\n                this.#openPopup();\n                return;\n            }\n\n            this.#autoPopupInterval = setInterval(() => {\n                if (!this.#shouldSuppressAutoPopup()) {\n                    clearInterval(this.#autoPopupInterval);\n                    this.#autoPopupInterval = null;\n                    this.#openPopup();\n                }\n            }, NewsletterPopup.#RETRY_INTERVAL);\n        }, NewsletterPopup.#AUTO_POPUP_DELAY);\n    }\n\n    /**\n     * Clear any pending auto-popup timers and intervals\n     *\n     * @private\n     * @returns {void}\n     */\n    #clearAutoPopupTimers() {\n        if (this.#autoPopupTimer) {\n            clearTimeout(this.#autoPopupTimer);\n            this.#autoPopupTimer = null;\n        }\n\n        if (this.#autoPopupInterval) {\n            clearInterval(this.#autoPopupInterval);\n            this.#autoPopupInterval = null;\n        }\n    }\n\n    /**\n     * Open newsletter popup\n     *\n     * @private\n     * @param {*} content\n     * @returns {void}\n     */\n    #openPopup(content = $('.popup--newsletter')) {\n        const svg = new Svg();\n        $.magnificPopup.open({\n            items: {\n                src: content,\n                type: 'inline'\n            },\n            closeMarkup: '<button title=\"%title%\" type=\"button\" class=\"mfp-close\" aria-label=\"Close\">' + svg.render('close') + '</button>',\n            focus: '#newsletter_email',\n            callbacks: {\n                open: () => {\n                    this.#onPopupOpen()\n\n                    document.documentElement.dataset.megaMenuIgnoreClick = true;\n                },\n                close: () => this.#onPopupClose(),\n                afterClose: () => {\n                    setTimeout(() => {\n                        delete document.documentElement.dataset.megaMenuIgnoreClick;\n                    }, 100);\n                }\n            },\n            mainClass: \"mfp--newsletter\",\n            fixedContentPos: true\n        });\n\n        Soho.GTM.trackExperiment(Soho.newsletterOptimizeExperimentId, 0);\n    }\n\n    /**\n     * Handle popup open event\n     *\n     * @private\n     * @returns {void}\n     */\n    #onPopupOpen() {\n        this.#clearAutoPopupTimers();\n\n        if (Soho.ContentSquare) {\n            Soho.ContentSquare.trackPopupOpenPageview('newsletter');\n        }\n\n    }\n\n    /**\n     * Handle popup close event\n     *\n     * @private\n     * @returns {void}\n     */\n    #onPopupClose() {\n        if (!this.#suppressNewsletterPopupCloseEvent) {\n            this.#setCookie('soho_npopup', '1', NewsletterPopup.#COOKIE_DAYS_DISMISS);\n            Soho.GTM.trackEvent('Newsletter form', 'Closed', 'popup');\n        }\n\n        this.#suppressNewsletterPopupCloseEvent = false;\n\n        if (Soho.ContentSquare) {\n            Soho.ContentSquare.trackPopupClosePageview();\n        }\n    }\n\n    /**\n     * Set a cookie\n     *\n     * @private\n     * @param {*} name\n     * @param {*} value\n     * @param {*} days\n     * @returns {void}\n     */\n    #setCookie(name, value, days) {\n        const expires = new Date();\n        expires.setTime(expires.getTime() + (days * 24 * 60 * 60 * 1000));\n        document.cookie = `${name}=${value};expires=${expires.toUTCString()};path=/`;\n    }\n}\n\n/**\n * Checkout thank-you newsletter handler\n *  - Handles only the inline thank-you panel form (data-newsletter-scope=\"thank-you\")\n *  - Leaves generic popup logic untouched\n */\nclass CheckoutThankYouNewsletter {\n    constructor() { this.#bind(); }\n\n    /**\n     * Bind submit handler for the thank-you newsletter form\n     *\n     * @private\n     * @returns {void}\n     */\n    #bind() {\n        Soho.plugins.delegate(document, 'submit', '.checkout-thanks-panel__newsletter[data-newsletter-scope=\"thank-you\"]', (e) => this.#onSubmit(e));\n    }\n\n    /**\n     * Handle form submission\n     *\n     * @private\n     * @param {Event} e\n     * @returns {void}\n     */\n    #onSubmit(e) {\n        e.preventDefault();\n        const $form = $(e.target);\n        const scope = 'thank-you';\n        $.ajax({\n            url: '/newsletter',\n            method: 'post',\n            data: $form.serialize(),\n            success: (data) => this.#onSuccess(data, $form, scope)\n        });\n    }\n\n    /**\n     * Handle successful subscription response\n     *\n     * @private\n     * @param {object} data\n     * @param {jQuery} $form\n     * @param {string} scope\n     * @returns {void}\n     */\n    #onSuccess(data, $form, scope) {\n        if (!data?.payload) {\n            return;\n        }\n\n        $('input[type=email]', $form).val(\"\").trigger('change');\n        if (data.payload.successful) {\n            if (window.Soho?.GTM?.trackEvent) {\n                Soho.GTM.trackEvent('Newsletter form', 'Subscribe', scope);\n            }\n            this.#transformPanel($form, data.payload.message);\n        }\n    }\n\n    /**\n     * Replace form with success message\n     *\n     * @private\n     * @param {jQuery} $form\n     * @param {string} message\n     * @returns {void}\n     */\n    #transformPanel($form, message) {\n        const $panel = $form.closest('.checkout-thanks-panel');\n        if (!$panel.length) {\n            return;\n        }\n\n        $panel.find('.checkout-thanks-panel__body.richtext.richtext--flush').remove();\n        $form.remove();\n        const msg = message || \"Thank you. You've been signed up successfully.\";\n        $panel.append('<div class=\"checkout-thanks-panel__body richtext richtext--flush\"><p class=\"checkout-thanks-panel__message\" role=\"status\">' + msg + '</p></div>');\n    }\n}\n\n// Instantiate both handlers side-by-side\nnew NewsletterPopup();\nnew CheckoutThankYouNewsletter();\n"],"sourceRoot":"../../../../resources/javascript"}