{"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","Soho","plugins","delegate","document","_handleSubmit","newsletter","querySelector","dataset","autoPopup","cookie","indexOf","_scheduleAutoPopup","$","on","_openPopup","preventDefault","_this2","form","target","scope","attr","resolvedScope","window","location","pathname","ajax","url","method","data","serialize","success","_handleAjaxSuccess","payload","html","val","trigger","magnificPopup","instance","isOpen","_updatePopupContent","successful","_setCookie","_COOKIE_DAYS_SUBSCRIBE","_","_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":"AAAA,SAASA,QAAQC,GAAgC,OAAOD,QAAU,mBAAqBE,QAAU,iBAAmBA,OAAOC,SAAW,SAAUF,GAAK,cAAcA,CAAG,EAAI,SAAUA,GAAK,OAAOA,GAAK,mBAAqBC,QAAUD,EAAEG,cAAgBF,QAAUD,IAAMC,OAAOG,UAAY,gBAAkBJ,CAAG,EAAGD,QAAQC,EAAI,CAC7T,SAASK,kBAAkBC,EAAGC,GAAK,IAAK,IAAIC,EAAI,EAAGA,EAAID,EAAEE,OAAQD,IAAK,CAAE,IAAIR,EAAIO,EAAEC,GAAIR,EAAEU,WAAaV,EAAEU,aAAc,EAAIV,EAAEW,cAAe,EAAI,UAAWX,IAAMA,EAAEY,UAAW,GAAKC,OAAOC,eAAeR,EAAGS,eAAef,EAAEgB,KAAMhB,EAAI,CAAE,CACvO,SAASiB,aAAaX,EAAGC,EAAGC,GAAK,OAAOD,GAAKF,kBAAkBC,EAAEF,UAAWG,GAAIC,GAAKH,kBAAkBC,EAAGE,GAAIK,OAAOC,eAAeR,EAAG,YAAa,CAAEM,UAAU,IAAON,CAAG,CAC1K,SAASS,eAAeP,GAAK,IAAIU,EAAIC,aAAaX,EAAG,UAAW,MAAO,UAAYT,QAAQmB,GAAKA,EAAIA,EAAI,EAAI,CAC5G,SAASC,aAAaX,EAAGD,GAAK,GAAI,UAAYR,QAAQS,KAAOA,EAAG,OAAOA,EAAG,IAAIF,EAAIE,EAAEP,OAAOmB,aAAc,QAAS,IAAMd,EAAG,CAAE,IAAIY,EAAIZ,EAAEe,KAAKb,EAAGD,GAAK,WAAY,GAAI,UAAYR,QAAQmB,GAAI,OAAOA,EAAG,MAAM,IAAII,UAAU,+CAAiD,CAAE,OAAQ,WAAaf,EAAIgB,OAASC,QAAQhB,EAAI,CAC3T,SAASiB,gBAAgBC,EAAGC,GAAK,KAAMD,aAAaC,GAAI,MAAM,IAAIL,UAAU,oCAAsC,CAClH,SAASM,4BAA4BtB,EAAGoB,GAAKG,2BAA2BvB,EAAGoB,GAAIA,EAAEI,IAAIxB,EAAI,CACzF,SAASyB,2BAA2BzB,EAAGE,EAAGkB,GAAKG,2BAA2BvB,EAAGE,GAAIA,EAAEwB,IAAI1B,EAAGoB,EAAI,CAC9F,SAASG,2BAA2BvB,EAAGE,GAAK,GAAIA,EAAEyB,IAAI3B,GAAI,MAAM,IAAIgB,UAAU,iEAAmE,CACjJ,SAASY,sBAAsBC,EAAGT,GAAK,OAAOS,EAAEC,IAAIC,kBAAkBF,EAAGT,GAAK,CAC9E,SAASY,sBAAsBH,EAAGT,EAAGnB,GAAK,OAAO4B,EAAEH,IAAIK,kBAAkBF,EAAGT,GAAInB,GAAIA,CAAG,CACvF,SAAS8B,kBAAkB/B,EAAGE,EAAGmB,GAAK,GAAI,mBAAqBrB,EAAIA,IAAME,EAAIF,EAAE2B,IAAIzB,GAAI,OAAO+B,UAAU9B,OAAS,EAAID,EAAImB,EAAG,MAAM,IAAIL,UAAU,gDAAkD,CAClM,IAAIkB,mCAAkD,IAAIC,QACtDC,mBAAkC,IAAID,QACtCE,gBAA+B,IAAIF,QACnCG,uBAAsC,IAAIC,QAXxCC,gBAAe7B,aAkCjB,SAAA6B,IAAcrB,gBAAAsB,KAAAD,GAIdlB,4BAAAmB,KAAAH,wBAVAb,2BAAAgB,KAAAP,oCAAqC,GAErCT,2BAAAgB,KAAAL,mBAAqB,MAErBX,2BAAAgB,KAAAJ,gBAAkB,MAGdN,kBAAAO,uBAAAG,KAAKC,aAAW3B,KAAhB0B,KACJ,GAsQJ,SAAAC,cA9PkB,IAAAC,EAAAF,KACVG,KAAKC,QAAQC,SACTC,SACA,SACA,qGACA,SAAC/C,GAAC,OAAK+B,kBAAAO,uBAAAK,EAAKK,eAAajC,KAAlB4B,EAAmB3C,EAAC,GAG/B,IAAMiD,EAAaF,SAASG,cAAc,sBAEtCD,IACIA,EAAWE,QAAQC,WAAaL,SAASM,OAAOC,QAAQ,gBAAkB,GAC1EvB,kBAAAO,uBAAAG,KAAKc,oBAAkBxC,KAAvB0B,MAGJe,EAAE,sBAAsBC,GAAG,mBAAoB,WAC3C1B,kBAAAO,uBAAAK,EAAKe,YAAU3C,KAAf4B,EACJ,IAIJa,EAAE,gCAAgCC,GAAG,QAAS,SAACzD,GAC3CA,EAAE2D,iBACF5B,kBAAAO,uBAAAK,EAAKe,YAAU3C,KAAf4B,EACJ,EACJ,CAEA,SAAAK,cAOchD,GAAG,IAAA4D,EAAAnB,KACbzC,EAAE2D,iBACF,IAAME,EAAOL,EAAExD,EAAE8D,QAEjB9B,sBAAKE,mCAALO,MAA0C,GAC1C,IAAMsB,EAAQF,EAAKG,KAAK,0BAA4BH,EAAKG,KAAK,OAAS,UAGjEC,EAA2B,UAAVF,EAAqB,UAAYG,OAAOC,SAASC,SAAWL,EAEnFP,EAAEa,KAAK,CACHC,IAAK,cACLC,OAAQ,OACRC,KAAMX,EAAKY,YACXC,QAAS,SAACF,GAAI,OAAKzC,kBAAAO,uBAAAsB,EAAKe,oBAAkB5D,KAAvB6C,EAAwBY,EAAMX,EAAMI,EAAa,GAE5E,CAEA,SAAAU,mBASmBH,EAAMX,EAAME,GAC3B,GAAKS,SAAAA,EAAMI,QAAX,CAIA,IAAMC,EAAOL,EAAKI,QAAQC,KAC1BrB,EAAE,oBAAqBK,GAAMiB,IAAI,IACjCtB,EAAE,oBAAqBK,GAAMkB,QAAQ,UAEjCvB,EAAEwB,cAAcC,SAASC,QACzBnD,kBAAAO,uBAAAG,KAAK0C,qBAAmBpE,KAAxB0B,KAAyBoC,GAGzBL,EAAKI,QAAQQ,aACbrD,kBAAAO,uBAAAG,KAAK4C,YAAUtE,KAAf0B,KAAgB,cAAe,IAAqB6C,uBAAsBC,GAC1ExD,kBAAAO,uBAAAG,KAAK+C,uBAAqBzE,KAA1B0B,MACAG,KAAK6C,IAAIC,WAAW,kBAAmB,YAAa3B,IAEtC,UAAVA,GAAqBA,EAAM4B,WAAW,cACtC9B,EAAK+B,OACL/B,EAAKgC,QAAQ,eAAeC,KAAK,kCAAkCC,WAAW,UAAUC,QAjBhG,CAoBJ,CAEA,SAAAb,oBAOoBN,GAChBrB,EAAEwB,cAAcC,SAASgB,QAAQC,YAAYrB,GAE7C,IAAMsB,EAAapD,SAASG,cAAc,oBACtCiD,IACAA,EAAWC,QAAU5C,EAAEwB,cAAcqB,MAE7C,CAEA,SAAAC,2BAM2B,IAAAC,EACvB,OAAKC,eAAeC,QAAQ,oBAIxB1D,SAAS2D,KAAKC,aAAa,qBAIL,QAA1BJ,EAAIxD,SAAS6D,qBAAa,IAAAL,IAAtBA,EAAwBV,QAAQ,YAI3B9C,SAASG,cAA8B2D,uBAAsBtB,EAACuB,KAAK,OAChF,CAEA,SAAAvD,qBAMqB,IAAAwD,EAAAtE,KACjBT,sBAAKK,gBAALI,KAAuBuE,WAAW,WAC9BhF,sBAAKK,gBAAL0E,EAAuB,MACvBP,eAAeS,QAAQ,eAAgB,KAElClF,kBAAAO,uBAAAyE,EAAKT,0BAAwBvF,KAA7BgG,GAKL/E,sBAAKI,mBAAL2E,EAA0BG,YAAY,WAC7BnF,kBAAAO,uBAAAyE,EAAKT,0BAAwBvF,KAA7BgG,KACDI,cAAcvF,sBAAKQ,mBAAL2E,IACd/E,sBAAKI,mBAAL2E,EAA0B,MAC1BhF,kBAAAO,uBAAAyE,EAAKrD,YAAU3C,KAAfgG,GAER,EAAmBK,gBAAe7B,IAV9BxD,kBAAAO,uBAAAyE,EAAKrD,YAAU3C,KAAfgG,EAWR,EAAmBM,kBAAiB9B,GACxC,CAEA,SAAAC,wBAOQ5D,sBAAKS,gBAALI,QACA6E,aAAa1F,sBAAKS,gBAALI,OACbT,sBAAKK,gBAALI,KAAuB,OAGvBb,sBAAKQ,mBAALK,QACA0E,cAAcvF,sBAAKQ,mBAALK,OACdT,sBAAKI,mBAALK,KAA0B,MAElC,CAEA,SAAAiB,aAO8C,IAAA6D,EAAA9E,KAAnCwD,EAAOhE,UAAA9B,OAAA,QAAAqH,IAAAvF,UAAA,GAAAA,UAAA,GAAGuB,EAAE,sBACbiE,EAAM,IAAIC,IAChBlE,EAAEwB,cAAc2C,KAAK,CACjBC,MAAO,CACHC,IAAK5B,EACL6B,KAAM,UAEVC,YAAa,8EAAgFN,EAAIO,OAAO,SAAW,YACnHC,MAAO,oBACPC,UAAW,CACPP,KAAM,WACF5F,kBAAAO,uBAAAiF,EAAKY,cAAYpH,KAAjBwG,GAEAxE,SAASqF,gBAAgBjF,QAAQkF,qBAAsB,CAC3D,EACAhC,MAAO,WAAF,OAAQtE,kBAAAO,uBAAAiF,EAAKe,eAAavH,KAAlBwG,EAAI,EACjBgB,WAAY,WACRvB,WAAW,kBACAjE,SAASqF,gBAAgBjF,QAAQkF,mBAC5C,EAAG,IACP,GAEJG,UAAW,kBACXC,iBAAiB,IAGrB7F,KAAK6C,IAAIiD,gBAAgB9F,KAAK+F,+BAAgC,EAClE,CAEA,SAAAR,eAOIpG,kBAAAO,uBAAAG,KAAK+C,uBAAqBzE,KAA1B0B,MAEIG,KAAKgG,eACLhG,KAAKgG,cAAcC,uBAAuB,aAGlD,CAEA,SAAAP,gBAOS1G,sBAAKM,mCAALO,QACDV,kBAAAO,uBAAAG,KAAK4C,YAAUtE,KAAf0B,KAAgB,cAAe,IAAqBqG,qBAAoBvD,GACxE3C,KAAK6C,IAAIC,WAAW,kBAAmB,SAAU,UAGrD1D,sBAAKE,mCAALO,MAA0C,GAEtCG,KAAKgG,eACLhG,KAAKgG,cAAcG,yBAE3B,CAEA,SAAA1D,WASW2D,EAAMC,EAAOC,GACpB,IAAMC,EAAU,IAAIC,KACpBD,EAAQE,QAAQF,EAAQG,UAAoB,GAAPJ,EAAY,GAAK,GAAK,KAC3DnG,SAASM,OAAM,GAAAkG,OAAMP,EAAI,KAAAO,OAAIN,EAAK,aAAAM,OAAYJ,EAAQK,cAAa,UACvE,CArSA,IAAA3C,uBAAA,CAAAtB,EAGgC,CAC5B,uBACA,mBACA,wBACA,0BACA,gCACA,kBACA,cAGJ8B,kBAAA,CAAA9B,EAC2B,MAE3B6B,gBAAA,CAAA7B,EACyB,KAEzBD,uBAAA,CAAAC,EACgC,KAEhCuD,qBAAA,CAAAvD,EAC8B,IAAEkE,kCAAA,IAAAlH,QAsR9BmH,2BAA0B/I,aAC5B,SAAA+I,IAAcvI,gBAAAsB,KAAAiH,GAEdpI,4BAAAmB,KAAAgH,mCAFgB1H,kBAAA0H,kCAAAhH,KAAKkH,OAAK5I,KAAV0B,KAAc,GA2ElC,SAAAkH,QAnEY,IAAAC,EAAAnH,KACJG,KAAKC,QAAQC,SAASC,SAAU,SAAU,wEAAyE,SAAC/C,GAAC,OAAK+B,kBAAA0H,kCAAAG,EAAKC,WAAS9I,KAAd6I,EAAe5J,EAAC,EAC9I,CAEA,SAAA6J,UAOU7J,GAAG,IAAA8J,EAAArH,KACTzC,EAAE2D,iBACF,IAAMoG,EAAQvG,EAAExD,EAAE8D,QAElBN,EAAEa,KAAK,CACHC,IAAK,cACLC,OAAQ,OACRC,KAAMuF,EAAMtF,YACZC,QAAS,SAACF,GAAI,OAAKzC,kBAAA0H,kCAAAK,EAAKE,YAAUjJ,KAAf+I,EAAgBtF,EAAMuF,EAL/B,YAK2C,GAE7D,CAEA,SAAAC,WASWxF,EAAMuF,EAAOhG,GAMS,IAAAkG,EALxBzF,SAAAA,EAAMI,UAIXpB,EAAE,oBAAqBuG,GAAOjF,IAAI,IAAIC,QAAQ,UAC1CP,EAAKI,QAAQQ,aACE,QAAf6E,EAAI/F,OAAOtB,YAAI,IAAAqH,GAAK,QAALA,EAAXA,EAAaxE,WAAG,IAAAwE,GAAhBA,EAAkBvE,YAClB9C,KAAK6C,IAAIC,WAAW,kBAAmB,YAAa3B,GAExDhC,kBAAA0H,kCAAAhH,KAAKyH,iBAAenJ,KAApB0B,KAAqBsH,EAAOvF,EAAKI,QAAQuF,UAEjD,CAEA,SAAAD,gBAQgBH,EAAOI,GACnB,IAAMC,EAASL,EAAMlE,QAAQ,0BAC7B,GAAKuE,EAAOjK,OAAZ,CAIAiK,EAAOtE,KAAK,yDAAyDuE,SACrEN,EAAMM,SACN,IAAMC,EAAMH,GAAW,iDACvBC,EAAOG,OAAO,6HAA+HD,EAAM,aALnJ,CAMJ,CAIJ,IAAI9H,gBACJ,IAAIkH","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        '.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    /** Cookie duration when user dismisses popup (days) */\n    static #COOKIE_DAYS_DISMISS = 14;\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        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     * 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"}