{
  "version": 3,
  "sources": ["/cdn/shop/t/473/assets/timesact.js"],
  "sourcesContent": ["/* Using a self-executing anonymous function - (function(){})(); - so that all variables and functions defined within\r\naren\u2019t available to the outside world. */\r\n\r\n(function () {\r\n    const loadScript = function (url, callback) {\r\n        const script = document.createElement(\"script\")\r\n\r\n        script.type = \"text/javascript\"\r\n\r\n        // If the browser is Internet Explorer.\r\n        if (script.readyState) {\r\n            script.onreadystatechange = function () {\r\n                if (script.readyState === \"loaded\" || script.readyState === \"complete\") {\r\n                    script.onreadystatechange = null\r\n                    callback()\r\n                }\r\n            };\r\n            // For any other browser.\r\n        } else {\r\n            script.onload = function () {\r\n                callback()\r\n            }\r\n        }\r\n        script.src = url\r\n        document.getElementsByTagName(\"head\")[0].appendChild(script)\r\n    }\r\n\r\n    /* This is Timesact main function. */\r\n    timesactScriptNew = async function ($) {\r\n        const style = document.createElement(\"style\")\r\n        style.id = \"TimesactCSS\"\r\n        style.innerHTML = `.timesact-badge-ribbon span::before {\r\n                            content: \"\";\r\n                            position: absolute; left: 0px; top: 100%;\r\n                            z-index: -1;\r\n                            border-left: 3px solid #888888;\r\n                            border-right: 3px solid transparent;\r\n                            border-bottom: 3px solid transparent;\r\n                            border-top: 3px solid #888888;\r\n                        }\r\n                        .timesact-badge-ribbon span::after {\r\n                            content: \"\";\r\n                            position: absolute; right: 0px; top: 100%;\r\n                            z-index: -1;\r\n                            border-left: 3px solid transparent;\r\n                            border-right: 3px solid #888888;\r\n                            border-bottom: 3px solid transparent;\r\n                            border-top: 3px solid #888888;\r\n                        }\r\n                        .md-modal {\r\n                            position: fixed;\r\n                            top: 50%;\r\n                            left: 50%;\r\n                            width: 40%;\r\n                            height: auto;\r\n                            z-index: 999999999999;\r\n                            visibility: hidden;\r\n                            transform: translateX(-50%) translateY(-50%);\r\n                        }\r\n                        .md-content {\r\n                            background: #fff;\r\n                            position: relative;\r\n                            border-radius: 10px;\r\n                            margin: 0 auto;\r\n                        }\r\n                        .md-show {\r\n                            visibility: visible;\r\n                        }\r\n                        .md-show ~ .md-overlay {\r\n                            opacity: 1;\r\n                            visibility: visible;\r\n                            display: block;\r\n                        }\r\n                        .popup-container {\r\n                            min-height: 100%;\r\n                            display: none;\r\n                        }\r\n                        .md-overlay {\r\n                            position: fixed;\r\n                            width: 100%;\r\n                            height: 100%;\r\n                            visibility: hidden;\r\n                            top: 0;\r\n                            left: 0;\r\n                            z-index: 1000;\r\n                            opacity: 0;\r\n                            background: #c9c9c9c2;\r\n                            -webkit-transition: all 0.3s;\r\n                            -moz-transition: all 0.3s;\r\n                            transition: all 0.3s;\r\n                        }\r\n                        .md-body {\r\n                            text-align: center;\r\n                            padding-top: 10%;\r\n                            padding-bottom: 10%;\r\n                            font-family: \"Roboto\";\r\n                        }\r\n                        p.message {\r\n                              padding: 20px;\r\n                        }\r\n                        .md-close {\r\n                            background: #f70427;\r\n                            border: none;\r\n                            color: white;\r\n                            padding: 10px;\r\n                            border-radius: 4px;\r\n                            cursor: pointer;\r\n                        }\r\n                        @media screen and (max-width: 32em) {\r\n                            .md-modal { width: 80%; }\r\n                        }\r\n                        .timesact_bis_popup_overlay {\r\n                            position: fixed;\r\n                            top: 0;\r\n                            left: 0;\r\n                            z-index: 1040;\r\n                            visibility: hidden;\r\n                            width: 100vw;\r\n                            height: 100vh;\r\n                            background-color: #000;\r\n                            opacity: .5;\r\n                            display: block !important;\r\n                        }\r\n\r\n                        .timesact_bis_dialog {\r\n                            display: inline-table;\r\n                            position: fixed;\r\n                            top: 0;\r\n                            left: 0;\r\n                            z-index: 1050;\r\n                            visibility: hidden;\r\n                            width: 100%;\r\n                            height: 100%;\r\n                            overflow-x: hidden;\r\n                            overflow-y: auto;\r\n                            outline: 0;\r\n                        }\r\n                        \r\n                        .timesact_bis_popup_overlay_show,\r\n                        .timesact_bis_dialog_show {\r\n                            visibility: visible;\r\n                        }\r\n                        \r\n                        .timesact_bis_popup {\r\n                            z-index: 1000000;\r\n                            background: #fff;\r\n                            color: #000;\r\n                            margin: auto;\r\n                            pointer-events: none;\r\n                            max-width: 460px;\r\n                            width: 96%;\r\n                            top: 50%;\r\n                            left: 50%;\r\n                            transform: translate(-50%, -50%);\r\n                            position: fixed;\r\n                            border-radius: 10px;\r\n                            font-size: 14px;\r\n                            /*add dynamic value*/\r\n                        }\r\n\r\n                        .timesact_bis_popup_content {\r\n                            pointer-events: auto;\r\n                            position: relative\r\n                        }\r\n\r\n                        .timesact_bis_popup_body {\r\n                            padding: 20px;\r\n                            position: relative;\r\n                            display: flex;\r\n                            flex-direction: column;\r\n                            width: 100%;\r\n                            border-radius: .3rem\r\n                        }\r\n\r\n                        .timesact_bis_close_button {\r\n                            padding: 5px;\r\n                            background: 0 0;\r\n                            font-size: 1.4rem;\r\n                            font-weight: 700;\r\n                            line-height: 1;\r\n                            opacity: 1;\r\n                            cursor: pointer;\r\n                            outline: 0;\r\n                            border-radius: 0;\r\n                            position: absolute;\r\n                            top: 0;\r\n                            right: 0;\r\n                            border: 0\r\n                        }\r\n\r\n                        .timesact_bis_close_span {\r\n                            display: inline-block;\r\n                            height: 20px;\r\n                            width: 20px;\r\n                            color: #000;\r\n                            margin-top: 0;\r\n                        }\r\n\r\n                        .timesact_bis_heading {\r\n                            margin-bottom: 0;\r\n                            color: #000;\r\n                            /*dynamic value*/\r\n                            margin-top: 0;\r\n                            font-size: calc(2 * 1em);\r\n                            /*dynamic value*/\r\n                            font-weight: 700\r\n                        }\r\n\r\n                        .timesact_bis_desc {\r\n                            margin-bottom: 0;\r\n                            color: #000;\r\n                            /*dynamic value*/\r\n                            font-size: 14px;\r\n                            /*dynamic value*/\r\n                        }\r\n\r\n                        .timesact_bis_line {\r\n                            margin: 10px 0\r\n                        }\r\n\r\n                        .timesact_bis_form_field {\r\n                            margin-top: 10px\r\n                        }\r\n\r\n                        .timesact_bis_input {\r\n                            padding: 8px 15px;\r\n                            border: 1px solid #949494;\r\n                            background-color: #fff;\r\n                            color: #000;\r\n                            max-width: 100%;\r\n                            line-height: 1.2;\r\n                            width: 100%;\r\n                            outline: 0;\r\n                            border-radius: 10px;\r\n                            /*dynamic value*/\r\n                        }\r\n\r\n                        .timesact_bis_submit_button {\r\n                            width: 100%;\r\n                            outline: 0;\r\n                            border: 0;\r\n                            padding: 10px;\r\n                            display: flex;\r\n                            align-items: center;\r\n                            justify-content: center;\r\n                            background: #000;\r\n                            /*dynamic value*/\r\n                            color: #fff;\r\n                            /*dynamic value*/\r\n                            border-radius: 10px;\r\n                            /*dynamic value*/\r\n                            font-size: 14px;\r\n                            cursor: pointer;\r\n                        }\r\n\r\n                        .timesact_bis_submit_button--disabled {\r\n                            background: #ddd\r\n                        }\r\n\r\n                        .timesact_bis_loading_icon {\r\n                            width: 15px !important;\r\n                            height: 15px !important;\r\n                            margin-right: 5px !important;\r\n                        }\r\n\r\n                        .timesact_bis_loading_icon:after {\r\n                            content: \" \";\r\n                            display: block;\r\n                            width: 15px !important;\r\n                            height: 15px !important;\r\n                            border-radius: 50%;\r\n                            border: 2px solid #fff;\r\n                            border-color: #fff transparent #fff transparent;\r\n                            animation: timesact-bis-loading 1.2s linear infinite\r\n                        }\r\n\r\n                        @keyframes timesact-bis-loading {\r\n                            0% {\r\n                                transform: rotate(0)\r\n                            }\r\n\r\n                            100% {\r\n                                transform: rotate(360deg)\r\n                            }\r\n                        }\r\n\r\n                        .timesact_bis_note {\r\n                            color: black;\r\n                            font-size: 80%;\r\n                            margin-bottom: 0\r\n                        }\r\n                        \r\n                        .timesact_bis_response {\r\n                            margin-bottom: 0;\r\n                        }\r\n\r\n                        .timesact_bis_message_success {\r\n                            width: 100%;\r\n\t\t\t\t\t\t\ttext-align: center;\r\n\t\t\t\t\t\t\tfont-weight: 600;\r\n                            display: none;\r\n                            color: #28a745;\r\n                        }\r\n\r\n                        .timesact_bis_message_error {\r\n                            width: 100%;\r\n\t\t\t\t\t\t\ttext-align: center;\r\n\t\t\t\t\t\t\tfont-weight: 600;\r\n                            display: none;\r\n                            color: red;\r\n                        }\r\n\r\n                        .timesact_powered_by {\r\n                            margin-top: 15px;\r\n                            left: 0;\r\n                            right: 0;\r\n                            text-align: center;\r\n                        }\r\n\r\n                        .timesact_powered_by a {\r\n                          text-decoration: none;\r\n                          color: #000 !important;\r\n                          font-weight: 700;\r\n                        }\r\n                        \r\n                        .timesact_bis_field_empty {\r\n                          border: 1px solid red;\r\n                        }\r\n                        \r\n                        .timesact_bis_message_show {\r\n                            display: block !important;\r\n                        }\r\n                        \r\n                        .timesact-button:after {\r\n                            content: none\r\n                        }\r\n\r\n                        .timesact-button:before {\r\n                            content: none\r\n                        }\r\n                        .timesact_bis_subscribe {\r\n                          font-size: 80%;\r\n                        }\r\n\r\n                        .timesact_sub #newsletter {\r\n                            height: 14px !important;\r\n                            width: 14px !important;\r\n                        }\r\n                        .timesact_sub {\r\n                            display: none;\r\n                        }\r\n\r\n                        #timesact_widget{\r\n                            width: 100%;\r\n                            text-align: left;\r\n                            margin-top: 17px;\r\n                            clear: both;\r\n                            max-width: 400px;\r\n                            \r\n                        }\r\n                        #timesact_widget .timesact_widget_wrapper {\r\n                            border: 1.5px solid #cccccc;\r\n                            // box-shadow: 0 0 0 1px #c4cdd5;\r\n                            border-radius: 5px;\r\n                            margin-bottom: 5px;\r\n                            margin-top: 10px;\r\n                        }\r\n                        \r\n                        #timesact_widget .timesact_option {\r\n                            display: flex;\r\n                            position: relative;\r\n                            padding: 16px 16px;\r\n                            flex-direction: column;\r\n                        }\r\n                        \r\n                        #timesact_widget .timesact_option:first-child {\r\n                            border-bottom: inherit;\r\n                        }\r\n                        #timesact_widget .timesact_option:first-child:last-child {\r\n                            border-bottom: none;\r\n                        }\r\n\r\n                        #timesact_widget .timesact_radio_label {\r\n                            display: flex !important;\r\n                            align-items: center;\r\n                            margin: 0;\r\n                            padding: 0;\r\n                            background: none;\r\n                        }\r\n                        \r\n                        .timesact_circle {\r\n                            position: relative;\r\n                        }\r\n                        \r\n                        .timesact_option input[type=radio]:focus + label .timesact_circle:before {\r\n                            height: 24px;\r\n                            width: 24px;\r\n                            border: 2px solid #3a3a3a;\r\n                            border-radius: 50%;\r\n                            flex-shrink: 0;\r\n                            content: '';\r\n                            position: absolute;\r\n                            left: 50%;\r\n                            top: 50%;\r\n                            transform: translate(-50%, -50%);\r\n                        }\r\n                        \r\n                        [name=\"selling_plan\"] {\r\n                          position: absolute;\r\n                          opacity: 0;\r\n                        }\r\n\r\n                        #timesact_widget .timesact_circle {\r\n                            display: flex;\r\n                            height: 18px;\r\n                            width: 18px;\r\n                            border: 2px solid #3a3a3a;\r\n                            border-radius: 50%;\r\n                            margin-right: 10px;\r\n                            justify-content: center;\r\n                            align-items: center;\r\n                            flex-shrink: 0;\r\n                            \r\n                          }\r\n                      \r\n                        #timesact_widget .timesact_option input[type=radio]:checked + label .timesact_circle .timesact_dot {\r\n                            height: 10px;\r\n                            width: 10px;\r\n                            background-color: #3a3a3a;\r\n                            border-radius: 50%;\r\n                            flex-shrink: 0;\r\n                            \r\n                          }\r\n                          `\r\n        document.getElementsByTagName(\"head\")[0].appendChild(style)\r\n\r\n        const mixedCartModal = '<div class=\"md-modal\" id=\"mixed-modal\"><div class=\"md-content\"><div class=\"md-body\"></div></div></div><div class=\"popup-container\"><div class=\"column\"><button class=\"md-trigger md-setperspective\" data-modal=\"mixed-modal\"></button></div></div><div class=\"md-overlay\"></div>';\r\n        document.getElementsByTagName(\"body\")[0].insertAdjacentHTML('afterbegin', mixedCartModal)\r\n\r\n        const timesactBIS = `<div class=\"timesact_bis_popup_overlay\"></div>\r\n        <div aria-modal=\"true\" aria-hidden=\"true\" tabindex=\"-1\" role=\"dialog\" class=\"timesact_bis_dialog\">\r\n            <div class=\"timesact_bis_popup\">\r\n                <div class=\"timesact_bis_popup_content\">\r\n                    <div class=\"timesact_bis_popup_body\">\r\n                        <button type=\"button\" data-dismiss=\"modal\" aria-label=\"Close\"\r\n                            class=\"timesact_bis_close_button\">\r\n                            <span aria-hidden=\"true\" class=\"timesact_bis_close_span\">x</span>\r\n                        </button>\r\n                        <h3 class=\"timesact_bis_heading\"></h3>\r\n                        <p class=\"timesact_bis_desc\"></p>\r\n                        <p class=\"timesact_bis_response\">\r\n                            <span class=\"timesact_bis_message_success\"></span>\r\n                            <span class=\"timesact_bis_message_error\"></span>\r\n                             \r\n                        </p>\r\n                        <hr class=\"timesact_bis_line\">\r\n                        <div id=\"subscriptionForm\">\r\n                            <div class=\"timesact_bis_form_field\">\r\n                                <input id=\"timesact_bis_email\" class=\"timesact_bis_input \" type=\"email\"\r\n                                placeholder=\"eg. username@example.com\" name=\"email\" value=\"\">\r\n                            </div>\r\n                            <div class=\"timesact_bis_form_field\">\r\n                                <button type=\"button\" class=\"timesact_bis_submit_button \">\r\n                                    <span class=\"timesact_bis_loading_icon\"></span>\r\n                                </button>\r\n                            </div>\r\n                            <div class=\"timesact_bis_form_field\">\r\n                                <p class=\"timesact_bis_note\"></p>\r\n                            </div>\r\n                            <div class=\"timesact_bis_form_field timesact_sub\">\r\n                                <input type=\"checkbox\" id=\"newsletter\" name=\"newsletter\" checked />\r\n                                <label class=\"timesact_bis_subscribe\" for=\"newsletter\"></label>\r\n                            </div>\r\n                        </div>\r\n                        <div class=\"timesact_powered_by\">\r\n                            <a href=\"https://timesact.com\" target=\"_blank\" rel=\"noreferrer\">\r\n                                <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\"><path d=\"M8 24l2.674-9h-9.674l16-15-2.674 9h8.674l-15 15zm-1.586-11h6.912l-1.326 4 5.739-6h-6.065l1.304-4-6.564 6z\"></path></svg>\r\n                                <span>by Timesact</span>\r\n                            </a>\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n            </div>\r\n        </div>`\r\n\r\n        const timesactPartialPayment = `<div class=\"timesact_widget\" id=\"timesact_widget\">\r\n            <div class=\"timesact_widget_wrapper\">\r\n                <div class=\"timesact_option\">\r\n                    <div class=\"timesact_radio_wrapper\">\r\n                        <input checked type=\"radio\" id=\"timesact_selling_plan_label\" name=\"selling_plan\" value=\"\" tabindex=\"2\">\r\n                        <label for=\"timesact_selling_plan_label\" class=\"timesact_radio_label\">\r\n                            <span class=\"timesact_circle\"><span class=\"timesact_dot\"></span></span>\r\n                            <span class=\"timesact_text\"></span>\r\n                        </label>\r\n                    </div>\r\n                </div>\r\n            </div>\r\n        </div>\r\n        `\r\n\r\n        document.getElementsByTagName(\"body\")[0].insertAdjacentHTML('afterbegin', timesactBIS)\r\n\r\n        const emailInputFieldSelector = document.querySelector('#timesact_bis_email')\r\n        const newsletterCheckboxFieldSelector = document.querySelector('#newsletter')\r\n\r\n        // Cart alert modal global variables.\r\n        const cartModal = {\r\n            isOpen: false,\r\n            queue: JSON.parse(window.sessionStorage.getItem(\"modal-queue\") || null) || []\r\n        }\r\n\r\n        /* Models */\r\n        class Badge {\r\n            add(selector, badgeType, value, settingType) {\r\n                if (badgeType === \"RIBBON\") {\r\n                    $(selector).remove(`.timesact-badge-common-${settingType}`);\r\n                    $(selector).remove(`.timesact-badge-ribbon-${settingType}`);\r\n                    $(selector).append(`<div class='timesact-badge-ribbon timesact-badge-ribbon-${settingType}'><span class='timesact-badge-ribbon-span-${settingType}'><p>` + value + \"</p></span></div>\")\r\n                    return;\r\n                }\r\n\r\n                if (badgeType === \"ROUNDED\") {\r\n                    $(selector).remove(`.timesact-badge-common-${settingType}`);\r\n                    $(selector).remove(`.timesact-badge-ribbon-${settingType}`);\r\n                    $(selector).append(`<div class='timesact-badge-common-${settingType}'><span class='timesact-badge-rounded-span-${settingType}'>` + value + \"</span></div>\");\r\n                }\r\n\r\n                if (badgeType === \"RECTANGLE\") {\r\n                    $(selector).remove(`.timesact-badge-common-${settingType}`);\r\n                    $(selector).remove(`.timesact-badge-ribbon-${settingType}`);\r\n                    $(selector).append(`<div class='timesact-badge-common-${settingType}'><span class='timesact-badge-rectangle-span-${settingType}'>` + value + \"</span></div>\");\r\n                }\r\n\r\n                if (badgeType === \"SQUARE\") {\r\n                    $(selector).remove(`.timesact-badge-common-${settingType}`);\r\n                    $(selector).remove(`.timesact-badge-ribbon-${settingType}`);\r\n                    $(selector).append(`<div class='timesact-badge-common-${settingType}'><span class='timesact-badge-square-span-${settingType}'>` + value + \"</span></div>\");\r\n                }\r\n\r\n                if (badgeType === \"CIRCLE\") {\r\n                    $(selector).remove(`.timesact-badge-common-${settingType}`);\r\n                    $(selector).remove(`.timesact-badge-ribbon-${settingType}`);\r\n                    $(selector).append(`<div class='timesact-badge-common-${settingType}'><span class='timesact-badge-circle-span-${settingType}'>` + value + \"</span></div>\");\r\n                }\r\n            }\r\n\r\n            getPositions(isTop, isRight, x, y) {\r\n                return {\r\n                    \"top\": isTop && y,\r\n                    \"bottom\": !isTop && y,\r\n                    \"left\": !isRight && x,\r\n                    \"right\": isRight && x,\r\n                }\r\n            }\r\n\r\n            getPositionsRibbon(isTop, isRight) {\r\n                const top = isTop ? \"19px\" : \"35px\"\r\n                const right = !isRight ? \"-5px\" : \"-20px\"\r\n                return { top, right }\r\n            }\r\n\r\n            getTransformRibbon(isTop, isRight) {\r\n                // top right\r\n                let degree = 45\r\n                if (isTop && !isRight) {\r\n                    // left top\r\n                    degree -= 90\r\n                } else if (!isTop && !isRight) {\r\n                    // left bottom\r\n                    degree -= 180\r\n                } else if (!isTop && isRight) {\r\n                    // bottom right\r\n                    degree -= 270\r\n                }\r\n\r\n                return {\r\n                    \"transform\": `rotate(${degree}deg)`,\r\n                    \"-webkit-transform\": `rotate(${degree}deg)`,\r\n                }\r\n            }\r\n\r\n            getTransformRibbonText(isTop) {\r\n                return isTop ? {} : {\r\n                    \"transform\": `rotate(180deg)`,\r\n                    \"-webkit-transform\": `rotate(180deg)`,\r\n                }\r\n            }\r\n\r\n            applyStyles(style, settingType) {\r\n                const isTop = style.top || style.top === undefined\r\n                const isRight = style.right || style.right === undefined\r\n\r\n                $('.timesact-badge').css({\r\n                    \"position\": \"relative\"\r\n                });\r\n                $(`.timesact-badge-ribbon-${settingType}`).css({\r\n                    \"position\": \"absolute\",\r\n                    ...this.getPositions(isTop, isRight, \"-5px\", \"-5px\"),\r\n                    \"width\": \"75px\",\r\n                    \"height\": \"75px\",\r\n                    \"text-align\": \"right\",\r\n                    \"z-index\": \"1\",\r\n                    \"overflow\": \"hidden\",\r\n                });\r\n                $(`.timesact-badge-ribbon-${settingType} span`).css({\r\n                    \"position\": \"absolute\",\r\n                    ...this.getPositionsRibbon(isTop, isRight),\r\n                    \"display\": \"block\",\r\n                    \"width\": \"100px\",\r\n                    \"font-size\": `${style.fontSize}px`,\r\n                    \"font-weight\": \"bold\",\r\n                    \"color\": style.fontColor,\r\n                    \"text-transform\": \"uppercase\",\r\n                    \"text-align\": \"center\",\r\n                    \"line-height\": \"20px\",\r\n                    \"white-space\": \"nowrap\",\r\n                    ...this.getTransformRibbon(isTop, isRight),\r\n                });\r\n                $(`.timesact-badge-ribbon-${settingType} span p`).css({\r\n                    \"margin\": 0,\r\n                    ...this.getTransformRibbonText(isTop),\r\n                    \"font-size\": `${style.fontSize}px`,\r\n                    \"color\": style.fontColor,\r\n                });\r\n                $(`.timesact-badge-ribbon-span-${settingType}`).css({\r\n                    \"background-color\": style.backgroundColor,\r\n                    \"box-shadow\": \"0 3px 10px -5px rgba(0, 0, 0, 1)\"\r\n                });\r\n                $(`.timesact-badge-rounded-span-${settingType}`).css({\r\n                    \"border\": \"1px solid transparent\",\r\n                    \"border-radius\": \"4rem\",\r\n                    \"display\": \"inline-block\",\r\n                    \"letter-spacing\": \".1rem\",\r\n                    \"line-height\": \"1\",\r\n                    \"padding\": \"0.6rem 1.3rem\",\r\n                    \"text-align\": \"center\",\r\n                    \"background-color\": style.backgroundColor,\r\n                    \"border-color\": style.backgroundColor,\r\n                    \"font-size\": `${style.fontSize}px`,\r\n                    \"color\": style.fontColor,\r\n                    \"font-weight\": \"bold\",\r\n                    \"word-break\": \"break-word\",\r\n                })\r\n                $(`.timesact-badge-rectangle-span-${settingType}`).css({\r\n                    \"display\": \"inline-block\",\r\n                    \"min-width\": \"60px\",\r\n                    \"padding\": \"0.6rem 1.3rem\",\r\n                    \"letter-spacing\": \".1rem\",\r\n                    \"line-height\": \"1\",\r\n                    \"text-align\": \"center\",\r\n                    \"font-size\": `${style.fontSize}px`,\r\n                    \"color\": style.fontColor,\r\n                    \"font-weight\": \"bold\",\r\n                    \"word-break\": \"break-word\",\r\n                    \"background-color\": style.backgroundColor,\r\n                    \"border-color\": style.backgroundColor,\r\n                    \"border\": \"1px solid transparent\",\r\n                })\r\n                $(`.timesact-badge-square-span-${settingType}`).css({\r\n                    \"display\": \"flex\",\r\n                    \"align-items\": \"center\",\r\n                    \"justify-content\": \"center\",\r\n                    \"min-height\": \"60px\",\r\n                    \"min-width\": \"60px\",\r\n                    \"width\": `${style.width}px`,\r\n                    \"height\": `${style.width}px`,\r\n                    \"letter-spacing\": \".1rem\",\r\n                    \"line-height\": \"1\",\r\n                    \"text-align\": \"center\",\r\n                    \"font-size\": `${style.fontSize}px`,\r\n                    \"color\": style.fontColor,\r\n                    \"font-weight\": \"bold\",\r\n                    \"word-break\": \"break-word\",\r\n                    \"background-color\": style.backgroundColor,\r\n                    \"border-color\": style.backgroundColor,\r\n                    \"border\": \"1px solid transparent\",\r\n                    \"overflow\": \"hidden\"\r\n                })\r\n                $(`.timesact-badge-circle-span-${settingType}`).css({\r\n                    \"display\": \"flex\",\r\n                    \"align-items\": \"center\",\r\n                    \"justify-content\": \"center\",\r\n                    \"min-height\": \"60px\",\r\n                    \"min-width\": \"60px\",\r\n                    \"width\": `${style.width + 28}px`,\r\n                    \"height\": `${style.width + 28}px`,\r\n                    \"padding\": \"14px\",\r\n                    \"letter-spacing\": \".1rem\",\r\n                    \"line-height\": \"1\",\r\n                    \"text-align\": \"center\",\r\n                    \"font-size\": `${style.fontSize}px`,\r\n                    \"color\": style.fontColor,\r\n                    \"font-weight\": \"bold\",\r\n                    \"word-break\": \"break-word\",\r\n                    \"background-color\": style.backgroundColor,\r\n                    \"border-color\": style.backgroundColor,\r\n                    \"border\": \"1px solid transparent\",\r\n                    \"border-radius\": \"50%\",\r\n                    \"overflow\": \"hidden\"\r\n                });\r\n                $(`.timesact-badge-common-${settingType}`).css({\r\n                    \"position\": \"absolute\",\r\n                    ...this.getPositions(isTop, isRight, \"10px\", \"10px\"),\r\n                    \"display\": \"flex\",\r\n                    \"flex-wrap\": \"wrap\",\r\n                    \"z-index\": \"1\"\r\n                });\r\n\r\n                if ($('gp-product-images-v2').length > 0) {\r\n                    $(`.timesact-badge-ribbon-${settingType}`).css({\r\n                        \"width\": \"100%\"\r\n                    })\r\n                }\r\n            }\r\n        }\r\n\r\n        class Modal {\r\n            static updateStorage() {\r\n                window.sessionStorage.setItem(\"modal-queue\", JSON.stringify(cartModal.queue))\r\n            }\r\n\r\n            static pushQueue(settings, closeCb) {\r\n                // if exist\r\n                if (cartModal.queue.find(it => it.settings.id === settings.id)) return\r\n\r\n                cartModal.queue.push({ settings, closeCb })\r\n                this.updateStorage()\r\n            }\r\n\r\n            static popQueue() {\r\n                if (cartModal.queue.length <= 0) return\r\n                const item = cartModal.queue.pop()\r\n                this.updateStorage()\r\n                return item\r\n            }\r\n\r\n            static clearQueue() {\r\n                cartModal.queue = []\r\n                this.updateStorage()\r\n            }\r\n\r\n            static showFirst() {\r\n                if (cartModal.isOpen) return\r\n                const item = this.popQueue()\r\n                item && new Modal().display(item.settings, item.closeCb)\r\n            }\r\n\r\n            display(settings, closeCb) {\r\n                if (cartModal.isOpen) {\r\n                    return Modal.pushQueue(settings, closeCb)\r\n                }\r\n\r\n                cartModal.isOpen = true\r\n                $(\".md-body\").append('<h3>' + settings.header + '</h3><p class=\"message\">' + settings.body + '</p><button class=\"md-close\">' + settings.button + '</button><p><input type=\"checkbox\" id=\"md-stop\" name=\"md-stop\"><label for=\"md-stop\">' + settings.stop + '</label></p>');\r\n                $(\"#mixed-modal\").addClass('md-show');\r\n                $(\".md-close, .md-overlay\").click(function (event) {\r\n                    event.stopPropagation()\r\n                    if (closeCb instanceof Function) closeCb()\r\n\r\n                    cartModal.isOpen = false\r\n                    $(\"#mixed-modal\").removeClass('md-show');\r\n                    $(\".md-body\").empty()\r\n                    Modal.showFirst()\r\n                });\r\n                $('.md-close').attr('style', `\r\n\t\t\t\tbackground: ${settings.buttonBackgroundColor}!important;\r\n\t\t\t\tcolor: ${settings.buttonFontColor}!important;`)\r\n            }\r\n        }\r\n\r\n        class Product {\r\n            constructor(id, variants, title, sellingPlanGroups) {\r\n                this.id = id\r\n                this.variants = variants\r\n                this.title = title\r\n                this.sellingPlans = sellingPlanGroups ? sellingPlanGroups.filter(sellingPlanGroup => sellingPlanGroup.app_id == 'timesact').reduce((accumulator, sellingPlanGroup) => accumulator.concat(sellingPlanGroup.selling_plans), []) : []\r\n            }\r\n\r\n            setActiveVariant(variantId) {\r\n                this.variantId = variantId\r\n            }\r\n\r\n            setTimesactVariants(productConfig) {\r\n                if (!productConfig || !productConfig.variants) {\r\n                    console.log('[ERROR 2002]: Product config is undefined.')\r\n\r\n                    return\r\n                }\r\n                this.timesactVariants = productConfig.variants\r\n            }\r\n\r\n            isPOEnabledForVariant() {\r\n                if (!this.timesactVariants[this.variantId] || !this.timesactVariants[this.variantId].config) {\r\n                    return false\r\n                }\r\n\r\n                // New flow.\r\n                if ('isPOEnabled' in this.timesactVariants[this.variantId]) {\r\n                    return this.timesactVariants[this.variantId].isPOEnabled\r\n                }\r\n\r\n                // Old flow.\r\n                return this.timesactVariants[this.variantId].config.status === \"ACTIVE\" || this.timesactVariants[this.variantId].config.status === \"NO_STOCK\"\r\n            }\r\n\r\n            isISEnabledForVariant() {\r\n                if (!this.timesactVariants[this.variantId]) {\r\n                    return false\r\n                }\r\n\r\n                if ('isISEnabled' in this.timesactVariants[this.variantId]) {\r\n                    return this.timesactVariants[this.variantId].isISEnabled\r\n                }\r\n\r\n                return false\r\n            }\r\n\r\n            isBISEnabledForVariant() {\r\n                if (!this.timesactVariants[this.variantId]) {\r\n                    return false\r\n                }\r\n\r\n                window.ta.currentTimesactProductData.variantId = this.variantId\r\n                window.ta.currentTimesactProductData.productName = this.timesactVariants[this.variantId].displayName\r\n\r\n                return this.timesactVariants[this.variantId].isBISEnabled\r\n            }\r\n            isCSEnabledForVariant() {\r\n                if (!this.timesactVariants[this.variantId]) {\r\n                    return false\r\n                }\r\n\r\n                return this.timesactVariants[this.variantId].isCSEnabled\r\n            }\r\n\r\n            getVariantSettings(settings, defaultSettingId, type) {\r\n                if (!this.timesactVariants[this.variantId].config.settingsTemplate) {\r\n                    // Old flow, if the variant does not have a template assigned.\r\n                    const defaultSettings = settings[defaultSettingId]\r\n                    if (!this.hasCustomSettings()) {\r\n                        return defaultSettings\r\n                    }\r\n\r\n                    const customSettings = this.timesactVariants[this.variantId].settings\r\n\r\n                    return {\r\n                        button: {\r\n                            ...defaultSettings.button,\r\n                            name: customSettings.buttonName || defaultSettings.button.name\r\n                        },\r\n                        message: {\r\n                            ...defaultSettings.message,\r\n                            type: customSettings.messageType || defaultSettings.message.type,\r\n                            value: customSettings.messageValue || defaultSettings.message.value,\r\n                        },\r\n                        cart: {\r\n                            ...defaultSettings.cart,\r\n                            labelText: {\r\n                                key: customSettings.cartLabelTextKey || defaultSettings.cart.labelText.key,\r\n                                value: customSettings.cartLabelTextValue || defaultSettings.cart.labelText.value,\r\n                            }\r\n                        },\r\n                        badge: defaultSettings.badge\r\n                    }\r\n                }\r\n\r\n                if (type === \"PO\") {\r\n                    return this.timesactVariants[this.variantId].config.settingsTemplate in settings\r\n                        ? settings[this.timesactVariants[this.variantId].config.settingsTemplate]\r\n                        : settings[defaultSettingId]\r\n                }\r\n\r\n                if (type === \"BIS\") {\r\n                    return this.timesactVariants[this.variantId].configBIS.settingsTemplate in settings\r\n                        ? settings[this.timesactVariants[this.variantId].configBIS.settingsTemplate]\r\n                        : settings[defaultSettingId]\r\n                }\r\n\r\n                if (type === \"CS\") {\r\n                    return this.timesactVariants[this.variantId].configCS.settingsTemplate in settings\r\n                        ? settings[this.timesactVariants[this.variantId].configCS.settingsTemplate]\r\n                        : settings[defaultSettingId]\r\n                }\r\n\r\n                if (type === \"IS\") {\r\n                    return this.timesactVariants[this.variantId].configIS.settingsTemplate in settings\r\n                        ? settings[this.timesactVariants[this.variantId].configIS.settingsTemplate]\r\n                        : settings[defaultSettingId]\r\n                }\r\n\r\n                return settings[defaultSettingId]\r\n            }\r\n\r\n            hasCustomSettings() {\r\n                if (!this.timesactVariants[this.variantId].settings) {\r\n                    return false;\r\n                }\r\n                return this.timesactVariants[this.variantId].settings.type === \"CUSTOM\";\r\n            }\r\n\r\n            isVariantOutOfStock() {\r\n                if (!this.timesactVariants[this.variantId]) {\r\n                    return false;\r\n                }\r\n\r\n                const variant = this.timesactVariants[this.variantId]\r\n                if (variant.quantity > 0) { return false; }\r\n\r\n                if (variant.inventoryPolicy === \"DENY\") { return true; }\r\n                return false;\r\n            }\r\n        }\r\n\r\n        class ShopUtil {\r\n            constructor() { }\r\n\r\n            initTimesact() {\r\n                if (\"undefined\" != typeof window.ta) {\r\n                    return;\r\n                }\r\n\r\n                const products = localStorage.getItem('products') ? JSON.parse(localStorage.getItem('products')) : {}\r\n                const settings = localStorage.getItem('settings') ? JSON.parse(localStorage.getItem('settings')) : undefined\r\n\r\n                const lastProductUpdate = this.computeLastProductUpdate(products)\r\n                const lastSettingsUpdate = localStorage.getItem('lastSettingsUpdate') ? JSON.parse(localStorage.getItem('lastSettingsUpdate')) : 0\r\n\r\n                window.ta = {\r\n                    products,\r\n                    settings,\r\n                    lastProductUpdate,\r\n                    lastSettingsUpdate,\r\n                    cart: {\r\n                        showMixedCartAlert: sessionStorage.getItem('showCartMixedAlert') ? JSON.parse(sessionStorage.getItem('showCartMixedAlert')) : true\r\n                    },\r\n                    quickView: {\r\n                        selectors: {\r\n                            button: \".quick-add__submit, .productitem--action-qs, .boost-pfs-quickview-btn, .cc-quick-buy-btn, .button--quick-shop, .sca-qv-button, .quick-view-btn, .bc-quickview-btn-wrapper, .sca-qv-cartbtn, .js-quick-shop-link, .searchit-quick-view-button, .quick-view, .js-quickbuy-button, .quick-product__btn, .product-card-interaction-quickshop, .product-modal, .productitem--action button, a.quickview, .overlay, a.quickview, .has-quick-view .btn .v-b, .shop-now-button, .quick-buy, .quick_shop, a[data-action='show-product'], .trigger-quick-view, .quickview-button, .quick_view, .qview-button, button.btn-addToCart:last, .quick-shop, .fancybox.ajax, .quick-add-button-variants, .product-thumbnail__quickshop-button, .js-quickView-button\",\r\n                            form: `.product__form:visible,\r\n\t\t\t\t\t\t\t#sca-qv-add-item-form:visible,\r\n\t\t\t\t\t\t\t.shopify-product-form:visible,\r\n\t\t\t\t\t\t\t.bc-modal-wrapper:visible\r\n\t\t\t\t\t\t\t#bc-quickview-cart-form:visible,\r\n\t\t\t\t\t\t\t.product_form:visible,\r\n\t\t\t\t\t\t\t.searchit-quick-view-form-wrapper\r\n\t\t\t\t\t\t\tform:visible, .product-form:visible,\r\n\t\t\t\t\t\t\t.quick-buy__product-form:visible,\r\n\t\t\t\t\t\t\t.product-single__form:visible,\r\n\t\t\t\t\t\t\tform[action='/cart/add']:visible,\r\n\t\t\t\t\t\t\t#AddToCartForm:visible,\r\n\t\t\t\t\t\t\tform.module:visible,\r\n\t\t\t\t\t\t\t#add-to-cart-quickview-form:visible`,\r\n                            addToCartButton: \"[type=submit]:visible:first span:first, .sca-qv-cartbtn:visible, #addToCart:visible, #bc-quickview-cart-btn:visible, .add_to_cart:visible, #searchit-quick-view-add-to-cart:visible, .product-form__cart-submit:visible, .quickbuy__submit:visible, .add-to-cart:visible, .product-submit:visible, .add:visible, .product-form--atc-button:visible, input.action-button.submit:visible, .addto.cart.sliding-cart:visible, #AddToCart:visible, .product-add:visible, .add-to-cart:visible, .product__submit__add:visible, .product-add-to-cart:visible, #add-to-cart:visible, .product-submit.action-button.product-submit, .product-form__add-button:visible, .add-to-cart-btn:visible, .qview-btn-addtocart:visible, button.btn-addToCart:last, .button--add-to-cart:visible\",\r\n                            variant: \"#sca-qv-variant-options select.single-option-selector, .bc-quickview-single-option-selector, .searchit-option-selector-wrapper select, .qview-variants select, select:visible, .radio-wrapper fieldset, input[type='radio']\",\r\n                            quantity: \"[name='quantity']\",\r\n                            quickviewModalContainer: \".quick-add-modal, .theme-modal--quickbuy, .quickview-product .product-quickview:visible, .sca-fancybox-wrap:visible, .mfp-container:visible, .bc-modal-wrapper:visible, .quick-shop:visible, .searchit-modal:visible, #colorbox:visible, .modal--quick-shop:visible, .quickshop:visible, .fancybox-wrap:visible, .fancybox-container:visible, .modal-content:visible, .product-quick-view, section.quick-view, #ShopNowContainer, #ProductScreens, .product.preview, .modal__inner__wrapper:visible, .halo-modal-content:visible, #quickView:visible, .quickshop-content:visible, .modal__inner:visible, .quick-view .content:visible, .qview-product:visible\"\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n\r\n            computeLastProductUpdate(products) {\r\n                let timestamp = parseInt(new Date().getTime() / 1000);\r\n                for (let product of Object.values(products)) {\r\n                    if (product.lastUpdate && product.lastUpdate < timestamp) {\r\n                        timestamp = product.lastUpdate;\r\n                        continue;\r\n                    }\r\n                    if (!product.lastUpdate) {\r\n                        timestamp = 1;\r\n                    }\r\n                }\r\n                return timestamp;\r\n            }\r\n\r\n            isProductPage() {\r\n                return -1 < window.location.href.indexOf(\"/products/\") || -1 < window.location.href.indexOf(\"/products_preview?\");\r\n            }\r\n\r\n            isCollectionPage() {\r\n                return -1 < window.location.href.indexOf(\"/collections/\");\r\n            }\r\n\r\n            isSearchPage() {\r\n                return -1 < window.location.href.indexOf(\"/search?\");\r\n            }\r\n\r\n            isPagesPage() {\r\n                return -1 < window.location.href.indexOf(\"/pages/\");\r\n            }\r\n\r\n            isHomePage() {\r\n                return document.location.pathname === \"/\";\r\n            }\r\n\r\n            isCartPage() {\r\n                return -1 < window.location.pathname.indexOf(\"/cart\");\r\n            }\r\n\r\n            initQuickView(shop) {\r\n                this.shopData = shop;\r\n                this.createQuickViewButtonListener();\r\n            }\r\n\r\n            createQuickViewButtonListener() {\r\n                var thisShop = this;\r\n                $(window.ta.quickView.selectors.button).click(function (target) {\r\n                    const handle = thisShop.getProductHandle(target.currentTarget);\r\n                    if (!handle) { return; }\r\n                    const url = thisShop.getProductPageJsURL(handle);\r\n                    var product;\r\n                    thisShop.sleep(400).then(function () {\r\n                        $.getJSON(url.concat('.js'), function (data) {\r\n                            console.log(data);\r\n                            product = new Product(data.id, data.variants, data.title, data.selling_plan_groups)\r\n                        }).done(function () {\r\n                            // thisShop.cleanupModal();\r\n                            new ScriptRunner(thisShop.shopData, product).run(/*isQuickView=*/true);\r\n                        }).fail(function () {\r\n                            console.log(\"[Error 1001]: Product could not be fetched.\");\r\n                        });\r\n                    });\r\n                });\r\n            }\r\n\r\n            getProductHandle(target) {\r\n                if (!target) return '';\r\n\r\n                const dataUrl = $(target).data(\"product-url\");\r\n                if (dataUrl) {\r\n                    return dataUrl.split('/').pop();\r\n                }\r\n\r\n                let el = target;\r\n                let href = '';\r\n\r\n                for (let i = 0; i < 5 && el; i++) {\r\n                    const link = $(el).find('a[href]').attr('href');\r\n                    if (link) {\r\n                        href = link;\r\n                        break;\r\n                    }\r\n                    el = el.parentNode;\r\n                }\r\n\r\n                if (!href) return '';\r\n\r\n                let handle = href.split('?')[0].split('/').pop() || '';\r\n                handle = handle.replace(/\\/+$/, '').replace(/\\.(js|json)$/i, '');\r\n\r\n                return handle;\r\n            }\r\n\r\n            getProductPageJsURL(handle) {\r\n                return \"https://\" + window.location.hostname + \"/products/\" + handle;\r\n            }\r\n\r\n            sleep(e) {\r\n                return new Promise(function (t) {\r\n                    setTimeout(t, e);\r\n                });\r\n            }\r\n\r\n            cleanupModal() {\r\n                $(window.ta.quickView.selectors.quickviewModalContainer).find(\"#preorder-label\").remove();\r\n                $(window.ta.quickView.selectors.quickviewModalContainer).find(\".timesact-preorder-description\").remove();\r\n            }\r\n        }\r\n\r\n        /* Util classes */\r\n        class ProductUtil {\r\n            extractVariantId(variants, formSelector) {\r\n                var productParams = window.location.search.match(/variant=([0-9]+)/);\r\n                if (productParams != null) return productParams[1];\r\n                const variantIdFromForm =\r\n                    \"radio\" === $(formSelector).find(\"select[name='id'], input[name='id'], select[name='id[]'], input[name='id[]']\").attr(\"type\")\r\n                        ? $(formSelector).find(\"input[name='id']:checked, input[name='id[]']:checked\").val()\r\n                        : $(formSelector).find(\"select[name='id'], input[name='id'], select[name='id[]'], input[name='id[]']\").val();\r\n\r\n                if (variants.some(variant => variant.id.toString() === variantIdFromForm)) {\r\n                    return variantIdFromForm;\r\n                }\r\n                // console.log(\"Variants are different: \" + variantIdFromForm + ' ' + variants[0].id);\r\n                return variants[0].id;\r\n            }\r\n        }\r\n\r\n        class TimesactBisModal {\r\n            static createListeners() {\r\n                $('.timesact_bis_input').focusout(function () {\r\n                    const timesactBisInput = $('.timesact_bis_input')\r\n\r\n                    if (timesactBisInput.val() && timesactBisInput.hasClass('timesact_bis_field_empty')) {\r\n                        timesactBisInput.removeClass('timesact_bis_field_empty')\r\n                        $('.timesact_bis_message_success').removeClass('timesact_bis_message_show')\r\n                        $('.timesact_bis_message_error').removeClass('timesact_bis_message_show')\r\n                    }\r\n                })\r\n                $('.timesact_bis_close_button').click(TimesactBisModal.hidenBisModal)\r\n                $('.timesact_bis_submit_button').click(TimesactBisModal.createSubscription)\r\n            }\r\n\r\n            static displayBisModal() {\r\n                const { defaultSettings, productId, productVariants, variantId } = window.ta.currentTimesactProductData\r\n                const product = new Product(productId, productVariants)\r\n\r\n                product.setActiveVariant(variantId)\r\n                product.setTimesactVariants({ variants: productVariants })\r\n\r\n                const { form } = product.getVariantSettings(window.ta.settings, defaultSettings.templates['BIS'], 'BIS');\r\n\r\n                // Set styles.\r\n                $('h3.timesact_bis_heading').attr('style', `color: ${form.headingFontColor} !important;`)\r\n\r\n                $('#subscriptionForm .timesact_bis_submit_button').attr('style', `\r\n\t\t\t\tbackground: ${form.buttonBackgroundColor} !important;\r\n\t\t\t\tcolor: ${form.buttonFontColor} !important;\r\n\t\t\t\tborder-radius: ${form.fieldsBorderRadius}px !important;\r\n\t\t\t\tfont-size: ${form.fontSize}px !important;`)\r\n\r\n                $('#subscriptionForm .timesact_bis_input').attr('style', `\r\n\t\t\t\tborder-radius: ${form.fieldsBorderRadius}px !important;\r\n\t\t\t\tfont-size: ${form.fontSize}px !important;`)\r\n\r\n                $('.timesact_bis_popup').attr('style', `border-radius: ${form.popupBorderRadius}px !important;`)\r\n                $('.timesact_bis_desc, .timesact_bis_note, .timesact_bis_subscribe').attr('style', `color: ${form.textFontColor} !important;`)\r\n                $('.timesact_bis_email').attr('style', `border-radius: ${form.fieldsBorderRadius}px !important;`)\r\n\r\n                // Set texts.\r\n                $('.timesact_bis_heading').text(form.heading)\r\n                $('.timesact_bis_desc').text(form.description)\r\n                $('.timesact_bis_submit_button').text(form.buttonName)\r\n                $('.timesact_bis_form_field .timesact_bis_note').text(form.note)\r\n                $('.timesact_bis_form_field .timesact_bis_subscribe').text(form.messageNewsletter)\r\n                $('.timesact_bis_message_success').text(form.messageSuccess)\r\n                $('.timesact_bis_message_error').text(form.messageError)\r\n\r\n                form.isNewsletterEnabled && $('.timesact_sub').attr(\"style\", \"display: inline-flex !important;\")\r\n\r\n                $(\".timesact_bis_popup_overlay\").addClass(\"timesact_bis_popup_overlay_show\")\r\n                $(\".timesact_bis_dialog\").addClass(\"timesact_bis_dialog_show\")\r\n                if (!form.isBrandEnabled) {\r\n                    $(\".timesact_powered_by\").hide()\r\n                }\r\n            }\r\n\r\n            static hidenBisModal() {\r\n                $('.timesact_bis_popup_overlay').removeClass('timesact_bis_popup_overlay_show')\r\n                $('.timesact_bis_dialog').removeClass(\"timesact_bis_dialog_show\")\r\n                $('.timesact_bis_message_success').removeClass(\"timesact_bis_message_show\").html('')\r\n                $('.timesact_bis_message_error').removeClass(\"timesact_bis_message_show\").html('')\r\n\r\n                emailInputFieldSelector.value = ''\r\n            }\r\n\r\n            static async createSubscription() {\r\n                const timesactBisMessageSuccess = $('.timesact_bis_message_success')\r\n                const timesactBisMessageError = $('.timesact_bis_message_error')\r\n                const timesactBisInput = $('.timesact_bis_input')\r\n\r\n                if (!emailInputFieldSelector.value) {\r\n                    timesactBisInput.addClass('timesact_bis_field_empty')\r\n                    return\r\n                }\r\n\r\n                const data = {\r\n                    type: 'EMAIL',\r\n                    status: 'PENDING',\r\n                    value: emailInputFieldSelector.value,\r\n                    productId: window.ta.currentTimesactProductData.productId,\r\n                    variantId: window.ta.currentTimesactProductData.variantId,\r\n                    productName: window.ta.currentTimesactProductData.productName,\r\n                    isSubNewsletter: $('#newsletter').is(\":checked\")\r\n                }\r\n\r\n                // console.log(data);\r\n                // return;\r\n\r\n                const created = await Api.createSubscription(data)\r\n\r\n                created && timesactBisMessageError.removeClass('timesact_bis_message_show') && timesactBisMessageSuccess.addClass('timesact_bis_message_show') && $('#timesact_bis_email').val('')\r\n\r\n                !created && timesactBisMessageSuccess.removeClass('timesact_bis_message_show') && timesactBisMessageError.addClass('timesact_bis_message_show')\r\n            }\r\n        }\r\n\r\n        class TimesactButton {\r\n            constructor(buttonSelector, className) {\r\n                this.addToCartButtonSelector = buttonSelector\r\n                this.hasInsideSpan = $(this.addToCartButtonSelector).first().prop('tagName')?.toLowerCase() === \"span\"\r\n\r\n                if (className === \"timesact-button-po\" || className === \"timesact-button-is\") {\r\n                    // Pre-order and In stock features use the existing \"Add to cart\" button.\r\n                    this.button = buttonSelector\r\n                } else {\r\n                    // BIS and CS features use our own button.\r\n                    this.button = $(`<button type=\"button\" class=\"${className}\" />`).attr('style', `display: none !important;`)\r\n\r\n                    if (this.hasInsideSpan) {\r\n                        $(this.addToCartButtonSelector).first().parent().after(this.button)\r\n                    } else {\r\n                        $(this.addToCartButtonSelector).first().after(this.button)\r\n                    }\r\n                }\r\n            }\r\n\r\n            showPO(settings) {\r\n                if (this.hasInsideSpan) {\r\n                    $(this.button).parent().show()\r\n                } else {\r\n                    $(this.button).show()\r\n                }\r\n                $(this.button).val(settings.button.name)\r\n                $(this.button).text(settings.button.name)\r\n                $(this.button).prop(\"disabled\", false)\r\n                if (settings.button.type === \"DEFAULT\") {\r\n                    return\r\n                }\r\n\r\n                // Custom button\r\n                if (this.hasInsideSpan) {\r\n                    $(this.button).first().parent().addClass(\"timesact-button\")\r\n                } else {\r\n                    $(this.button).first().addClass(\"timesact-button\")\r\n                }\r\n\r\n                this.applyStyles(settings.button.style, \"timesact-button\")\r\n            }\r\n\r\n            showBIS(settings) {\r\n                $(this.button).text(settings.button.name)\r\n                this.applyStyles(settings.button.style, \"timesact-button-bis\")\r\n                $(this.button).click(TimesactBisModal.displayBisModal)\r\n                $(this.button).show()\r\n\r\n                if (this.hasInsideSpan) {\r\n                    $(this.addToCartButtonSelector).first().parent().attr('style', `display: none !important;`)\r\n                } else {\r\n                    $(this.addToCartButtonSelector).first().attr('style', `display: none !important;`)\r\n                }\r\n            }\r\n\r\n            showCS(settings) {\r\n                $(this.button).text(settings.button.name)\r\n                this.button.prop(\"disabled\", true);\r\n                this.applyStyles(settings.button.style, \"timesact-button-cs\")\r\n                $(this.button).show()\r\n\r\n                if (this.hasInsideSpan) {\r\n                    $(this.addToCartButtonSelector).first().parent().attr('style', `display: none !important;`)\r\n                } else {\r\n                    $(this.addToCartButtonSelector).first().attr('style', `display: none !important;`)\r\n                }\r\n            }\r\n\r\n            showAddToCart() {\r\n                if (this.hasInsideSpan) {\r\n                    $(this.addToCartButtonSelector).first().parent().show()\r\n                    $(this.addToCartButtonSelector).first().parent().removeClass(\"timesact-button\")\r\n                    $(this.addToCartButtonSelector).first().parent().removeAttr(\"style\")\r\n                } else {\r\n                    $(this.addToCartButtonSelector).first().show()\r\n                    $(this.addToCartButtonSelector).first().removeClass(\"timesact-button\")\r\n                    $(this.addToCartButtonSelector).first().removeAttr(\"style\")\r\n                }\r\n\r\n                $(this.addToCartButtonSelector).val(this.addToCartText)\r\n                $(this.addToCartButtonSelector).text(this.addToCartText)\r\n                $(this.addToCartButtonSelector).prop(\"disabled\", false)\r\n            }\r\n\r\n            showOutOfStock() {\r\n                if (this.hasInsideSpan) {\r\n                    $(this.addToCartButtonSelector).first().parent().show()\r\n                    $(this.addToCartButtonSelector).first().parent().removeClass(\"timesact-button\")\r\n                    $(this.addToCartButtonSelector).first().parent().removeAttr(\"style\")\r\n                } else {\r\n                    $(this.addToCartButtonSelector).first().show()\r\n                    $(this.addToCartButtonSelector).first().removeClass(\"timesact-button\")\r\n                    $(this.addToCartButtonSelector).first().removeAttr(\"style\")\r\n                }\r\n\r\n                $(this.addToCartButtonSelector).val(this.soldOutText)\r\n                $(this.addToCartButtonSelector).text(this.soldOutText)\r\n                $(this.addToCartButtonSelector).prop(\"disabled\", true)\r\n            }\r\n\r\n            setAddToCartText(text) {\r\n                this.addToCartText = text || $(this.addToCartButtonSelector).text()\r\n            }\r\n\r\n            setSoldOutText(text) {\r\n                this.soldOutText = text\r\n            }\r\n\r\n            hide() {\r\n                $(this.button).hide()\r\n            }\r\n\r\n            disable() {\r\n                if (this.hasInsideSpan) {\r\n                    $(this.button).parent().prop(\"disabled\", true)\r\n                } else {\r\n                    $(this.button).prop(\"disabled\", true)\r\n                }\r\n                $(this.addToCartButtonSelector).prop(\"disabled\", true)\r\n            }\r\n\r\n            confirmButtonExists() {\r\n                return $(this.button).closest(\"body\").length > 0;\r\n            }\r\n\r\n            identifyButton(selectors) {\r\n                this.button = selectors.formSelector.find(selectors.ids.addToCartButton);\r\n            }\r\n\r\n            applyStyles(style, className) {\r\n                $(`.${className}`).attr('style', `\r\n                width: ${style.width}${style.widthType === \"PERCENT\" ? \"%\" : \"px\"} !important;\r\n                height: ${style.height}${style.heightType === \"PERCENT\" ? \"%\" : \"px\"} !important;\r\n                background-color: ${style.backgroundColor} !important;\r\n                border: ${style.borderWidth}px solid ${style.borderColor} !important;\r\n                border-color: ${style.borderColor} !important;\r\n                border-radius: ${style.borderRadius}px !important;\r\n                border-width: ${style.borderWidth}px !important;\r\n                color: ${style.fontColor} !important;\r\n                font-size: ${style.fontSize}px !important;\r\n                font-style: ${style.fontStyle} !important;\r\n                font-weight: ${style.fontWeight} !important;\r\n                margin-bottom: 10px !important;\r\n                margin-top: 10px !important;\r\n                cursor: pointer;`);\r\n\r\n                // set px height to make dependency in %\r\n                if (style.heightType === \"PERCENT\") {\r\n                    const parentHeight = $(`.${className}`).parent().height()\r\n                    $(`.${className}`).height(`${parentHeight * style.height / 100}px`)\r\n                }\r\n            }\r\n\r\n            // PO cart alert functions\r\n            removeCartAlertListener() {\r\n                $(this.button).parent().off(\"click\", this.cartAlertModalClickHandler)\r\n            }\r\n\r\n            closeCartAlertModal(settings, tmps = {}) {\r\n                window.sessionStorage.setItem(\"showCartAlert\", JSON.stringify({\r\n                    ...tmps,\r\n                    [settings.id]: { dismiss: $('#md-stop').is(\":checked\") },\r\n                }));\r\n\r\n                // if not dismissed\r\n                if (!($('#md-stop').is(\":checked\"))) return\r\n\r\n                this.removeCartAlertListener()\r\n            }\r\n\r\n            addCartAlertListener(settings, product) {\r\n                const tmps = JSON.parse(window.sessionStorage.getItem(\"showCartAlert\") || null) || {}\r\n                const closedTmpsIds = JSON.parse(window.sessionStorage.getItem(\"closedModals\") || null) || []\r\n                const tmpId = `${settings.type}-${product.id}-${product.variantId}`\r\n\r\n                // if not enabled or closed already with this template\r\n                if (!settings.cart.alert) {\r\n                    return\r\n                }\r\n\r\n                if (\r\n                    !settings.cart.alert.isEnabled || settings.cart.alert.onButtonClick !== true ||\r\n                    tmps[tmpId]?.dismiss || closedTmpsIds.includes(tmpId)\r\n                ) {\r\n                    return\r\n                }\r\n\r\n                // save temporary to reset event handling\r\n                this.cartAlertModalClickHandler = () => {\r\n                    const s = { ...settings.cart.alert, id: tmpId }\r\n                    return new Modal().display(s, () => this.closeCartAlertModal(s, tmps));\r\n                }\r\n\r\n                $(this.button).parent().on(\"click\", this.cartAlertModalClickHandler)\r\n            }\r\n        }\r\n\r\n        class TimesactCountdownTimer {\r\n            constructor(timerSelector, className) {\r\n                this.timerSelector = timerSelector\r\n\r\n                // for inner operations\r\n                this.utils = {\r\n                    delims: [60, 60, 24, 365]\r\n                }\r\n\r\n                // component\r\n                this.components = {\r\n                    timer: null,\r\n                    timerElements: [null, null, null, null]\r\n                }\r\n                this.componentsClasses = {\r\n                    timer: `timer-container-${className}`,\r\n                    title: \"timer-title\",\r\n                    subheading: \"timer-subheading\",\r\n                    timerValueContainer: \"timer-value-container\",\r\n                    timerLabels: \"timer-value-labels\",\r\n                    timerValues: \"timer-values\"\r\n                }\r\n            }\r\n\r\n            setTimerInfo({ content, isEnabled, placement, style, productConfig }) {\r\n                this.title = content.title;\r\n                this.subheading = content.subheading;\r\n                this.labels = content.labels;\r\n                this.dates = content?.dates;\r\n                this.placement = placement;\r\n                this.isEnabled = isEnabled || false;\r\n                this.style = style || null;\r\n\r\n                this.onceItEnds = content.onceItEnds\r\n\r\n                this.productConfig = productConfig\r\n            }\r\n\r\n            show() {\r\n                if (!this.isEnable()) return false\r\n\r\n                this.createTimer()\r\n\r\n                this.placement === \"BELOW\"\r\n                    ? $(this.timerSelector).after(this.components.timer)\r\n                    : $(this.timerSelector).before(this.components.timer)\r\n\r\n                this.applyStyles()\r\n\r\n                this.countdown()\r\n            }\r\n\r\n            hide() {\r\n                // stop & remove old timer\r\n                this.stop()\r\n                $(`.${this.componentsClasses.timer}`).remove();\r\n            }\r\n\r\n            createTitle() {\r\n                return $(`<h2 class=\"${this.componentsClasses.title}\">${this.title}</h2>`)\r\n            }\r\n\r\n            createSubheading() {\r\n                return $(`<p class=\"${this.componentsClasses.subheading}\">${this.subheading}</p>`)\r\n            }\r\n\r\n            createTimerLabels() {\r\n                const els = []\r\n                const labelOrder = [\"days\", \"hours\", \"mins\", \"secs\"]\r\n                for (const propName of labelOrder) {\r\n                    els.push($(`<div class=\"${this.componentsClasses.timerLabels}\">${this.labels[propName]}</div>`))\r\n                }\r\n                return els\r\n            }\r\n\r\n            createTimerValues() {\r\n                const els = []\r\n                const vals = [\"00\", \":\", \"00\", \":\", \"00\", \":\", \"00\"]\r\n                vals.forEach(v => els.push($(`<div translate=\"no\" class=\"${this.componentsClasses.timerValues}\">${v}</div>`)))\r\n\r\n                // add to handle\r\n                this.components.timerElements = els.filter((_, i) => i % 2 === 0)\r\n\r\n                return els\r\n            }\r\n\r\n            createTimerValueContainer() {\r\n                const el = $(`<div class=\"${this.componentsClasses.timerValueContainer}\"></div>`)\r\n                el.append(...this.createTimerValues(), ...this.createTimerLabels())\r\n                return el\r\n            }\r\n\r\n            createTimer() {\r\n                const el = $(`<div class=\"${this.componentsClasses.timer}\"></div>`)\r\n\r\n                // add title & subheading & timer\r\n                el.append(this.createTitle(), this.createSubheading(), this.createTimerValueContainer())\r\n\r\n                this.components.timer = el\r\n\r\n                return el\r\n            }\r\n\r\n            getEndDateFromPeriod(type, value) {\r\n                const now = parseInt(Date.now() / 1000)\r\n                const dayInSeconds = parseInt(value) * 60 * 60 * 24\r\n\r\n                switch (type) {\r\n                    case \"MONTH\":\r\n                        return now + (dayInSeconds * 30)\r\n                    case \"WEEK\":\r\n                        return now + (dayInSeconds * 7)\r\n                    // DAY\r\n                    default:\r\n                        return now + dayInSeconds\r\n                }\r\n            }\r\n\r\n            getActualEndDate() {\r\n                switch (this.dates.endAt) {\r\n                    case \"END_DATE\":\r\n                        return (this.productConfig.hasEndDate && this.productConfig.endDate) || parseInt(Date.now() / 1000)\r\n\r\n                    case \"SHIPPING_DATE\": {\r\n                        switch (this.productConfig.shippingDate.type) {\r\n                            case \"PERIOD\":\r\n                                return this.getEndDateFromPeriod(this.productConfig.shippingDate.periodType, this.productConfig.shippingDate.periodValue)\r\n\r\n                            case \"INTERVAL\":\r\n                                return this.getEndDateFromPeriod(this.productConfig.shippingDate.periodEnd.type, this.productConfig.shippingDate.periodEnd.value)\r\n\r\n                            default:\r\n                                return this.productConfig.shippingDate.date || parseInt(Date.now() / 1000)\r\n                        }\r\n                    }\r\n\r\n                    // DATE\r\n                    default: {\r\n                        switch (this.dates.type) {\r\n                            case \"FIXED\":\r\n                                return parseInt(Date.now() / 1000) + (parseInt(this.dates.minutes) * 60)\r\n\r\n                            default:\r\n                                return this.dates.endDate._seconds\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n\r\n            isEnable() {\r\n                // is expired?\r\n                if (this.getActualEndDate() < Date.now() / 1000) return false\r\n\r\n                // is started?\r\n                if (this.dates?.startDate) {\r\n                    return this.isEnabled && this.dates.startDate._seconds < Date.now() / 1000\r\n                }\r\n\r\n                // is enabled at all?\r\n                return this.isEnabled\r\n            }\r\n\r\n            make2Digit(number) {\r\n                return `${number < 10 ? '0' : ''}${number}`\r\n            }\r\n\r\n            handleOnEnd() {\r\n                const { value, customTitle } = this.onceItEnds\r\n\r\n                switch (value) {\r\n                    case \"unpublish-timer\":\r\n                        return this.hide()\r\n\r\n                    case \"repeat-the-countdown\":\r\n                        // cant repeat not fixed timer\r\n                        // cant repeat not specific date timer\r\n                        if (this.dates.type !== \"FIXED\" || (!!this.dates.endAt && this.dates.endAt !== \"DATE\")) {\r\n                            return\r\n                        }\r\n\r\n                        // set new end date\r\n                        this.dates.endDate._seconds = this.getActualEndDate()\r\n\r\n                        // restart countdown with delay\r\n                        return setTimeout(() => {\r\n                            return this.countdown()\r\n                        }, 500);\r\n\r\n                    case \"show-custom-title\":\r\n                        return this.components.timer.html(customTitle)\r\n\r\n                    default: break\r\n                }\r\n            }\r\n\r\n            // [dd, hh, mm, ss]\r\n            calculateRelativeDatetime(fromSeconds, toSeconds) {\r\n                if (typeof fromSeconds !== \"number\" || typeof toSeconds !== \"number\") return [\"00\", \"00\", \"00\", \"00\"]\r\n                if (fromSeconds - toSeconds <= 0) return [\"00\", \"00\", \"00\", \"00\"]\r\n\r\n                const remains = [0, 0, 0, 0]\r\n\r\n                let diff = Math.abs(fromSeconds - toSeconds)\r\n\r\n                // calculate difference\r\n                for (let i = 0; i < this.utils.delims.length; i++) {\r\n                    const delimeter = this.utils.delims[i];\r\n                    remains[i] = Math.floor(diff % delimeter);\r\n\r\n                    if (diff >= delimeter) {\r\n                        diff /= delimeter;\r\n                        continue;\r\n                    }\r\n                    break\r\n                }\r\n\r\n                return remains.map(v => this.make2Digit(v)).reverse()\r\n            };\r\n\r\n            countdown() {\r\n                let prevVals = []\r\n                let timerDateSeconds = parseInt(Date.now() / 1000)\r\n                const endDateSeconds = this.getActualEndDate()\r\n                const timerInterval = 1000\r\n\r\n                this.timerId = setInterval(() => {\r\n                    if (endDateSeconds < timerDateSeconds) {\r\n                        this.handleOnEnd()\r\n                        return this.stop()\r\n                    }\r\n\r\n                    // get difference between end and now\r\n                    const timerVals = this.calculateRelativeDatetime(endDateSeconds, timerDateSeconds)\r\n\r\n                    // update content\r\n                    this.components.timerElements.forEach((el, i) => {\r\n                        if (prevVals[i] !== timerVals[i]) el.text(timerVals[i])\r\n                    })\r\n\r\n                    // update prev vals\r\n                    prevVals = timerVals\r\n\r\n                    // update current time\r\n                    timerDateSeconds += timerInterval / 1000\r\n                }, timerInterval);\r\n            }\r\n\r\n            stop() {\r\n                clearInterval(this.timerId)\r\n            }\r\n\r\n            applyStyles() {\r\n                $(`.${this.componentsClasses.timer} *`).css({\r\n                    \"margin\": 0,\r\n                    \"padding\": 0,\r\n                    \"box-sizing\": \"border-box\",\r\n                });\r\n\r\n                $(`.${this.componentsClasses.timer}`).css({\r\n                    \"max-width\": \"420px\",\r\n                    \"min-width\": \"260px\",\r\n                    \"display\": \"flex\",\r\n                    \"flex-flow\": \"column\",\r\n                    \"text-align\": \"center\",\r\n                    \"-webkit-box-align\": \"center\",\r\n                    \"align-items\": \"center\",\r\n                    \"overflow\": \"hidden\",\r\n\r\n                    // customer\r\n                    \"margin-bottom\": `${this.style.container?.marginBottom}px`,\r\n                    \"margin-top\": `${this.style.container?.marginTop}px`,\r\n                    \"padding-bottom\": `${this.style.container?.paddingBottom}px`,\r\n                    \"padding-top\": `${this.style.container?.paddingTop}px`,\r\n                    \"background-color\": this.style.container?.background,\r\n                    \"border-color\": this.style.container?.borderColor,\r\n                    \"border-radius\": `${this.style.container?.borderRadius}px`,\r\n                    \"border-width\": `${this.style.container?.borderSize}px`,\r\n                    \"border-style\": 'solid'\r\n                });\r\n\r\n                $(`.${this.componentsClasses.title}`).css({\r\n                    \"font-weight\": \"bold\",\r\n\r\n                    // customer\r\n                    \"color\": this.style.title?.color,\r\n                    \"font-size\": `${this.style.title?.fontSize}px`\r\n                });\r\n\r\n                $(`.${this.componentsClasses.subheading}`).css({\r\n                    \"padding-top\": \"2px\",\r\n                    \"line-height\": \"1.5\",\r\n\r\n                    // customer\r\n                    \"color\": this.style.subheading?.color,\r\n                    \"font-size\": `${this.style.subheading?.fontSize}px`\r\n                });\r\n\r\n                $(`.${this.componentsClasses.timerValueContainer}`).css({\r\n                    \"display\": \"grid\",\r\n                    \"grid-template-columns\": \"1fr 10px 1fr 10px 1fr 10px 1fr\",\r\n                    \"gap\": \"6px 2px\",\r\n                    \"place-items\": \"center\",\r\n                    \"align-items\": \"flex-start\",\r\n                });\r\n\r\n                $(`.${this.componentsClasses.timerValues}`).css({\r\n                    \"font-weight\": \"bold\",\r\n                    \"font-feature-settings\": \"tnum\",\r\n                    \"font-variant-numeric\": \"tabular-nums\",\r\n                    \"letter-spacing\": \"-2px\",\r\n                    \"line-height\": \"1\",\r\n\r\n                    // customer\r\n                    \"color\": this.style.timer?.color,\r\n                    \"font-size\": `${this.style.timer?.fontSize}px`,\r\n                });\r\n\r\n                $(`.${this.componentsClasses.timerLabels}`).css({\r\n                    \"max-width\": \"100px\",\r\n                    \"white-space\": \"pre-line\",\r\n                    \"grid-column\": \"span 2 / auto\",\r\n                    \"text-align\": \"center\",\r\n                    \"padding-right\": \"10px\",\r\n                    \"line-height\": \"1\",\r\n\r\n                    // customer\r\n                    \"color\": this.style.labels?.color,\r\n                    \"font-size\": `${this.style.labels?.fontSize}px`\r\n                });\r\n\r\n                $(`.${this.componentsClasses.timerLabels}:last-of-type`).css({\r\n                    \"grid-column\": \"span 1 / auto\",\r\n                    \"padding-right\": 0,\r\n                });\r\n            }\r\n        }\r\n\r\n        class Message {\r\n            constructor(locale) {\r\n                this.locale = locale;\r\n            }\r\n\r\n            addStylePreorderMessage(style, type) {\r\n                $(`.timesact-${type}-description`).css({\r\n                    \"font-size\": `${style.fontSize}px`,\r\n                    \"color\": style.fontColor,\r\n                    \"text-align\": style.textAlign,\r\n                    \"font-weight\": style.fontWeight,\r\n                    \"font-style\": style.fontStyle,\r\n                    \"margin-bottom\": \"10px\",\r\n                    \"margin-top\": \"10px\"\r\n                });\r\n            }\r\n\r\n            populateDynamicValues(variant, value, isCartLabel, configType) {\r\n                value = value.replace(\"{{preorderQuantity}}\", this.getQuantity(variant, isCartLabel, configType));\r\n                value = value.replace(\"{{shippingDate}}\", this.getShippingDate(variant[configType].shippingDate, isCartLabel));\r\n                value = value.replace(\"{{daysLeftUntilShippingDate}}\", this.getDaysLeftUntilShippingDate(variant[configType].shippingDate, isCartLabel));\r\n                value = value.replace(\"{{daysLeftUntilPreorderEndDate}}\", this.getDaysLeftUntilEndDate(variant[configType], isCartLabel));\r\n                return value;\r\n            }\r\n\r\n            getQuantity(variant, isCartLabel, configType) {\r\n                if (variant[configType].stock.option == \"STOCK3\") {\r\n                    // Stock3 uses Shopify stock inventory.\r\n                    return variant.quantity;\r\n                }\r\n                if (variant[configType].stock.hasUnlimitedQuantity) {\r\n                    return isCartLabel ? 'VARIABLE_NOT_SET' : '<span style=\"color:red;\">VARIABLE_NOT_SET</span>';\r\n                }\r\n\r\n                return variant[configType].stock.quantity;\r\n            }\r\n\r\n            getShippingDate(shippingDate, isCartLabel) {\r\n                if (!shippingDate || shippingDate.type === \"NO_SET\") {\r\n                    return isCartLabel ? 'VARIABLE_NOT_SET' : '<span style=\"color:red;\">VARIABLE_NOT_SET</span>';\r\n                }\r\n\r\n                if (shippingDate.type === \"DATE\") {\r\n                    const date = new Date(shippingDate.date * 1000);\r\n                    return date.toLocaleDateString(this.locale, { day: \"numeric\", month: \"long\", year: \"numeric\" });\r\n                }\r\n\r\n                if (shippingDate.type === \"PERIOD\") {\r\n                    var days = 1;\r\n                    switch (shippingDate.periodType) {\r\n                        case \"DAY\": days = shippingDate.periodValue; break;\r\n                        case \"WEEK\": days = shippingDate.periodValue * 7; break;\r\n                        case \"MONTH\": days = shippingDate.periodValue * 30; break;\r\n                    }\r\n\r\n                    var date = new Date();\r\n                    date.setDate(date.getDate() + days);\r\n                    return date.toLocaleDateString(this.locale, { day: \"numeric\", month: \"long\", year: \"numeric\" });\r\n                }\r\n\r\n                if (shippingDate.type === \"INTERVAL\") {\r\n                    var periodStartDays = 1\r\n                    var periodEndDays = 1\r\n                    switch (shippingDate.periodStart.type) {\r\n                        case \"DAY\": periodStartDays = shippingDate.periodStart.value; break;\r\n                        case \"WEEK\": periodStartDays = shippingDate.periodStart.value * 7; break;\r\n                        case \"MONTH\": periodStartDays = shippingDate.periodStart.value * 30; break;\r\n                    }\r\n                    switch (shippingDate.periodEnd.type) {\r\n                        case \"DAY\": periodEndDays = shippingDate.periodEnd.value; break;\r\n                        case \"WEEK\": periodEndDays = shippingDate.periodEnd.value * 7; break;\r\n                        case \"MONTH\": periodEndDays = shippingDate.periodEnd.value * 30; break;\r\n                    }\r\n\r\n                    var dateStart = new Date();\r\n                    dateStart.setDate(dateStart.getDate() + periodStartDays);\r\n\r\n                    var dateEnd = new Date();\r\n                    dateEnd.setDate(dateEnd.getDate() + periodEndDays);\r\n                    return dateStart.toLocaleDateString(this.locale, { day: \"numeric\", month: \"long\", year: \"numeric\" }) + ' - ' + dateEnd.toLocaleDateString(this.locale, { day: \"numeric\", month: \"long\", year: \"numeric\" });\r\n                }\r\n            }\r\n\r\n            getDaysLeftUntilShippingDate(shippingDate, isCartLabel) {\r\n                if (!shippingDate || shippingDate.type === \"NO_SET\") {\r\n                    return isCartLabel ? 'VARIABLE_NOT_SET' : '<span style=\"color:red;\">VARIABLE_NOT_SET</span>';\r\n                }\r\n\r\n                const today = new Date();\r\n                if (shippingDate.type === \"DATE\") {\r\n                    const date = new Date(shippingDate.date * 1000);\r\n                    return Math.ceil((date.getTime() - today.getTime()) / (1000 * 3600 * 24));\r\n                }\r\n\r\n                if (shippingDate.type === \"PERIOD\") {\r\n                    switch (shippingDate.periodType) {\r\n                        case \"DAY\": return shippingDate.periodValue;\r\n                        case \"WEEK\": return shippingDate.periodValue * 7;\r\n                        case \"MONTH\": return shippingDate.periodValue * 30;\r\n                        default: return 1;\r\n                    }\r\n                }\r\n\r\n                if (shippingDate.type === \"INTERVAL\") {\r\n                    var periodStartDays = 1\r\n                    var periodEndDays = 1\r\n                    switch (shippingDate.periodStart.type) {\r\n                        case \"DAY\": periodStartDays = shippingDate.periodStart.value; break;\r\n                        case \"WEEK\": periodStartDays = shippingDate.periodStart.value * 7; break;\r\n                        case \"MONTH\": periodStartDays = shippingDate.periodStart.value * 30; break;\r\n                    }\r\n                    switch (shippingDate.periodEnd.type) {\r\n                        case \"DAY\": periodEndDays = shippingDate.periodEnd.value; break;\r\n                        case \"WEEK\": periodEndDays = shippingDate.periodEnd.value * 7; break;\r\n                        case \"MONTH\": periodEndDays = shippingDate.periodEnd.value * 30; break;\r\n                    }\r\n                    return periodStartDays + ' - ' + periodEndDays\r\n                }\r\n            }\r\n\r\n            getDaysLeftUntilEndDate(config, isCartLabel) {\r\n                if (!config.hasEndDate) { return isCartLabel ? 'VARIABLE_NOT_SET' : '<span style=\"color:red;\">VARIABLE_NOT_SET</span>'; }\r\n                const today = new Date();\r\n                const date = new Date(config.endDate * 1000);\r\n                return Math.ceil((date.getTime() - today.getTime()) / (1000 * 3600 * 24));\r\n            }\r\n        }\r\n\r\n        class Timesact {\r\n            constructor(selectors, product, defaultSettingIds, shop) {\r\n                this.selectors = selectors\r\n                this.product = product\r\n                this.settings = window.ta.settings\r\n                this.defaultSettingIds = defaultSettingIds\r\n                this.buttonPO = new TimesactButton(this.selectors.buttonSelector, \"timesact-button-po\")\r\n                this.buttonIS = new TimesactButton(this.selectors.buttonSelector, \"timesact-button-is\")\r\n                this.buttonBIS = new TimesactButton(this.selectors.buttonSelector, \"timesact-button-bis\")\r\n                this.buttonCS = new TimesactButton(this.selectors.buttonSelector, \"timesact-button-cs\")\r\n                this.timerPO = new TimesactCountdownTimer(this.selectors.timerSelector, \"timesact-timer-po\")\r\n                this.timerIS = new TimesactCountdownTimer(this.selectors.timerSelector, \"timesact-timer-is\")\r\n                this.timerBIS = new TimesactCountdownTimer(this.selectors.timerSelector, \"timesact-timer-bis\")\r\n                this.timerCS = new TimesactCountdownTimer(this.selectors.timerSelector, \"timesact-timer-cs\")\r\n                this.uuid = Math.floor(100000000 + Math.random() * 900000000)\r\n                $(this.selectors.variantSelector).addClass(\"timesact-variant-picker-\" + this.uuid)\r\n                this.shop = shop\r\n            }\r\n\r\n            init() {\r\n                this.createWidget();\r\n                new TimesactEventListener().initVariantEventListener(this);\r\n            }\r\n\r\n            createWidget() {\r\n                const variant = this.product.timesactVariants[this.product.variantId]\r\n\r\n                if (this.product.isBISEnabledForVariant()) {\r\n                    const settings = this.product.getVariantSettings(this.settings, this.defaultSettingIds.BIS, \"BIS\")\r\n\r\n                    this.buttonBIS.setAddToCartText(settings.button.addToCartText)\r\n                    this.buttonBIS.setSoldOutText(settings.button.soldOutText)\r\n\r\n                    if (variant.configBIS.status === \"ACTIVE\") {\r\n                        this.buttonBIS.showBIS(settings)\r\n                        this.addCommonElements(settings, variant)\r\n                    }\r\n                }\r\n\r\n                if (this.product.isISEnabledForVariant()) {\r\n                    const settings = this.product.getVariantSettings(this.settings, this.defaultSettingIds.IS, \"IS\")\r\n\r\n                    this.buttonIS.setAddToCartText(settings.button.addToCartText)\r\n                    this.buttonIS.setSoldOutText(settings.button.soldOutText)\r\n\r\n                    if (variant.configIS.status === \"NO_STOCK\") {\r\n                        this.buttonIS.showOutOfStock()\r\n                        $(this.selectors.formSelector).find(\".shopify-payment-button\").hide()\r\n                    }\r\n\r\n                    if (variant.configIS.status === \"ACTIVE\") {\r\n                        if (!this.buttonIS.confirmButtonExists()) {\r\n                            this.buttonIS.identifyButton(this.selectors)\r\n                            this.selectors.buttonSelector = $(this.selectors.formSelector).find(this.selectors.ids.addToCartButton)\r\n                        }\r\n\r\n                        this.buttonIS.showPO(settings)\r\n                        this.buttonIS.addCartAlertListener(settings, this.product)\r\n\r\n                        // Shop has been disabled but the product was not marked accordingly.\r\n                        if (this.shop.isDisabledIS) {\r\n                            this.buttonIS.disable()\r\n                        }\r\n\r\n                        this.addCommonElements(settings, variant)\r\n\r\n                        // Set-up cart label.\r\n                        const message = new Message(settings.message.locale || \"en-US\")\r\n                        const cartLabelTextKey = message.populateDynamicValues(variant, settings.cart.labelText.key, /*isCartLabel=*/true, /*configType=*/'configIS')\r\n                        const cartLabelTextValue = message.populateDynamicValues(variant, settings.cart.labelText.value,  /*isCartLabel=*/true, /*configType=*/'configIS')\r\n\r\n                        if (typeof settings.cart.labelText.isEnabled === \"undefined\" || settings.cart.labelText.isEnabled) {\r\n                            this.showPreorderLineItemProperty(cartLabelTextKey, cartLabelTextValue)\r\n                        }\r\n                    }\r\n\r\n                }\r\n\r\n                if (this.product.isPOEnabledForVariant()) {\r\n                    const settings = this.product.getVariantSettings(this.settings, this.defaultSettingIds.PO, \"PO\")\r\n\r\n                    this.buttonPO.setAddToCartText(settings.button.addToCartText)\r\n                    this.buttonPO.setSoldOutText(settings.button.soldOutText)\r\n\r\n                    if (variant.config.status === \"NO_STOCK\") {\r\n                        this.buttonPO.showOutOfStock()\r\n                        $(this.selectors.formSelector).find(\".shopify-payment-button\").hide()\r\n                    }\r\n\r\n                    if (variant.config.status === \"ACTIVE\") {\r\n                        if (!this.buttonPO.confirmButtonExists()) {\r\n                            this.buttonPO.identifyButton(this.selectors)\r\n                            this.selectors.buttonSelector = $(this.selectors.formSelector).find(this.selectors.ids.addToCartButton)\r\n                        }\r\n\r\n                        if (this.shop.hasSellingPlanEnabled && this.product.sellingPlans.length > 0 && !this.shop.isSellingPlanUIDisabled) {\r\n                            this.addSellingPlan(this.product.sellingPlans, settings, variant)\r\n                        }\r\n\r\n                        this.buttonPO.showPO(settings)\r\n                        this.buttonPO.addCartAlertListener(settings, this.product)\r\n\r\n                        // Shop has been disabled but the product was not marked accordingly.\r\n                        if (this.shop.isDisabled) {\r\n                            this.buttonPO.disable()\r\n                        }\r\n\r\n                        this.addCommonElements(settings, variant)\r\n\r\n                        // Set-up cart label.\r\n                        const message = new Message(settings.message.locale || \"en-US\")\r\n                        const cartLabelTextKey = message.populateDynamicValues(variant, settings.cart.labelText.key, /*isCartLabel=*/true, /*configType=*/'config')\r\n                        const cartLabelTextValue = message.populateDynamicValues(variant, settings.cart.labelText.value,  /*isCartLabel=*/true, /*configType=*/'config')\r\n\r\n                        if (typeof settings.cart.labelText.isEnabled === \"undefined\" || settings.cart.labelText.isEnabled) {\r\n                            this.showPreorderLineItemProperty(cartLabelTextKey, cartLabelTextValue)\r\n                        }\r\n\r\n                        if (!variant.config.stock.hasUnlimitedQuantity) {\r\n                            // If pre-order quantity has been set, we should add quantity limitation.\r\n                            this.addQuantityListener(variant.config.stock.quantity)\r\n                        }\r\n                    }\r\n                }\r\n\r\n                if (this.product.isCSEnabledForVariant()) {\r\n                    const settings = this.product.getVariantSettings(this.settings, this.defaultSettingIds.CS, \"CS\")\r\n\r\n                    this.buttonCS.setAddToCartText(settings.button.addToCartText)\r\n                    this.buttonCS.setSoldOutText(settings.button.soldOutText)\r\n                    if (variant.configCS.status === \"ACTIVE\") {\r\n                        this.buttonCS.showCS(settings)\r\n                        this.addCommonElements(settings, variant)\r\n                    }\r\n                }\r\n\r\n                $('.atc-button-hide').removeClass('atc-button-hide');\r\n            }\r\n\r\n            resetDefault() {\r\n                this.buttonBIS.hide()\r\n                this.buttonCS.hide()\r\n\r\n                // timer\r\n                this.timerPO.hide()\r\n                this.timerIS.hide()\r\n                this.timerBIS.hide()\r\n                this.timerCS.hide()\r\n\r\n                // listeners\r\n                this.buttonPO.removeCartAlertListener()\r\n                this.buttonIS.removeCartAlertListener()\r\n\r\n                if (!this.buttonPO.confirmButtonExists() || !this.buttonIS.confirmButtonExists()) {\r\n                    this.buttonPO.identifyButton(this.selectors);\r\n                    this.buttonIS.identifyButton(this.selectors);\r\n                    this.selectors.buttonSelector = $(this.selectors.formSelector).find(this.selectors.ids.addToCartButton);\r\n                }\r\n\r\n                if (this.product.isVariantOutOfStock()) {\r\n                    this.buttonPO.showOutOfStock();\r\n                    $(this.selectors.formSelector).find(\".shopify-payment-button\").hide();\r\n                } else {\r\n                    this.buttonPO.showAddToCart();\r\n                    $(this.selectors.formSelector).find(\".shopify-payment-button\").show();\r\n                }\r\n                this.removePreorderLineItemProperty();\r\n                this.removePreorderMessage();\r\n                this.removePreorderBadge();\r\n                this.removePreorderQuantity();\r\n                this.removeSellingPlanWidget();\r\n\r\n                if (this.selectors.hideProductElements) {\r\n                    this.addHiddenElements();\r\n                }\r\n            }\r\n\r\n            addSellingPlan(sellingPlans, settings, variant) {\r\n                if (!variant.config.sellingPlan) {\r\n                    console.log('Variant has no SellingPlan set.')\r\n                    return\r\n                }\r\n\r\n                const sellingPlan = sellingPlans.find(sellingPlan => String(sellingPlan.id) === variant.config.sellingPlan)\r\n\r\n                if (!sellingPlan) {\r\n                    console.log('SellingPlan was not found.')\r\n                    return\r\n                }\r\n\r\n                if (sellingPlan.options[0].name === \"FULL_PAYMENT\") {\r\n                    this.addHiddenSellingPlan(sellingPlan.id);\r\n\r\n                } else {\r\n                    // Partial Payment widget.\r\n                    if ($(this.selectors.formSelector).find('#timesact-widget').length == 0) {\r\n                        $(this.selectors.sellingPlanSelector).before(timesactPartialPayment)\r\n                        $('#timesact_widget .timesact_text').text(sellingPlan.options[0].value)\r\n                        $('#timesact_widget #timesact_selling_plan_label').val(sellingPlan.id)\r\n                    }\r\n                }\r\n\r\n                // Selling plan description as a pre-order message.\r\n                const message = new Message(settings.locale || \"en-US\");\r\n                this.showPreorderMessage(settings.message.type, sellingPlan.description, /*type=*/\"selling-plan\")\r\n                message.addStylePreorderMessage(settings.message, /*type=*/\"selling-plan\");\r\n            }\r\n\r\n            static displayBisModal() {\r\n                const { defaultSettings, productId, productVariants, variantId } = window.ta.currentTimesactProductData\r\n                const product = new Product(productId, productVariants)\r\n\r\n                product.setActiveVariant(variantId)\r\n                product.setTimesactVariants({ variants: productVariants })\r\n\r\n                const { form } = product.getVariantSettings(window.ta.settings, defaultSettings.templates['BIS'], 'BIS');\r\n\r\n                // Set styles.\r\n                $('h3.timesact_bis_heading').attr('style', `color: ${form.headingFontColor} !important;`)\r\n\r\n                $('#subscriptionForm .timesact_bis_submit_button').attr('style', `\r\n\t\t\t\tbackground: ${form.buttonBackgroundColor} !important;\r\n\t\t\t\tcolor: ${form.buttonFontColor} !important;\r\n\t\t\t\tborder-radius: ${form.fieldsBorderRadius}px !important;\r\n\t\t\t\tfont-size: ${form.fontSize}px !important;`)\r\n\r\n                $('#subscriptionForm .timesact_bis_input').attr('style', `\r\n\t\t\t\tborder-radius: ${form.fieldsBorderRadius}px !important;\r\n\t\t\t\tfont-size: ${form.fontSize}px !important;`)\r\n\r\n                $('.timesact_bis_popup').attr('style', `border-radius: ${form.popupBorderRadius}px !important;`)\r\n                $('.timesact_bis_desc, .timesact_bis_note, .timesact_bis_subscribe').attr('style', `color: ${form.textFontColor} !important;`)\r\n                $('.timesact_bis_email').attr('style', `border-radius: ${form.fieldsBorderRadius}px !important;`)\r\n\r\n                // Set texts.\r\n                $('.timesact_bis_heading').text(form.heading)\r\n                $('.timesact_bis_desc').text(form.description)\r\n                $('.timesact_bis_submit_button').text(form.buttonName)\r\n                $('.timesact_bis_form_field .timesact_bis_note').text(form.note)\r\n                $('.timesact_bis_form_field .timesact_bis_subscribe').text(form.messageNewsletter)\r\n                $('.timesact_bis_message_success').text(form.messageSuccess)\r\n                $('.timesact_bis_message_error').text(form.messageError)\r\n\r\n\r\n                !form.isNewsletterEnabled && $('.timesact_sub').attr(\"style\", \"display: none;\")\r\n\r\n                $(\".timesact_bis_popup_overlay\").addClass(\"timesact_bis_popup_overlay_show\")\r\n                $(\".timesact_bis_dialog\").addClass(\"timesact_bis_dialog_show\")\r\n                if (!form.isBrandEnabled) {\r\n                    $(\".timesact_powered_by\").hide()\r\n                }\r\n            }\r\n\r\n            addHiddenSellingPlan(sellingPlanId) {\r\n                $(this.selectors.formSelector).append(`<input type=\"hidden\" checked=\"checked\" data-timesact-selling-plan name=\"selling_plan\" value=\"${sellingPlanId}\" id=\"selling_plan_${sellingPlanId}\">`)\r\n            }\r\n\r\n            addCommonElements(settings, variant) {\r\n                const type = settings.type === \"BIS\" ? \"bis\" : settings.type === \"CS\" ? \"cs\" : settings.type === \"IS\" ? \"is\" : \"preorder\"\r\n\r\n                if (type !== \"is\") {\r\n                    $(this.selectors.formSelector).find(\".shopify-payment-button\").hide();\r\n                }\r\n\r\n                this.addPreorderMessage(settings.message, variant, type)\r\n\r\n                settings.badge.product && this.addBadge(this.selectors.badgeSelector, settings.badge, type)\r\n\r\n                this.selectors.hideProductElements && $(this.selectors.hideProductElements).hide();\r\n\r\n                // set timer & activate\r\n                const timer = settings.message.timer\r\n                if (!!timer) {\r\n                    const configType = settings.type !== \"PO\" ? settings.type : \"\"\r\n                    this[`timer${settings.type}`].setTimerInfo({ ...timer, productConfig: variant[`config${configType}`] })\r\n                    this[`timer${settings.type}`].show()\r\n                }\r\n            }\r\n\r\n            showPreorderLineItemProperty(key, value) {\r\n                0 === $(this.selectors.formSelector).find(\"#preorder-label\").length\r\n                    ? $(this.selectors.formSelector).append('<input type=\"hidden\" id=\"preorder-label\" name=\"properties[' + key + ']\" value=\"' + value + '\" />')\r\n                    : $(this.selectors.formSelector).find(\"#preorder-label\").val(value);\r\n            }\r\n\r\n            removePreorderLineItemProperty() {\r\n                $(this.selectors.formSelector).find(\"#preorder-label\").remove();\r\n            }\r\n\r\n            removePreorderBadge() {\r\n                $(this.selectors.badgeSelector).find(\".timesact-badge-ribbon-preorder, .timesact-badge-ribbon-bis, .timesact-badge-ribbon-cs, .timesact-badge-ribbon-is\").remove();\r\n                $(this.selectors.badgeSelector).find(\".timesact-badge-common-preorder, .timesact-badge-common-bis, .timesact-badge-common-cs, .timesact-badge-common-is\").remove();\r\n            }\r\n\r\n            removeSellingPlanWidget() {\r\n                $('#timesact_widget').remove();\r\n                $('.timesact-selling-plan-description').remove();\r\n                $('[data-timesact-selling-plan]').remove();\r\n            }\r\n\r\n            addBadge(selector, settings, settingType) {\r\n                const badge = new Badge();\r\n                badge.add(selector, settings.type, settings.value, settingType);\r\n                badge.applyStyles(settings, settingType);\r\n            }\r\n\r\n            addPreorderMessage(settings, variant, type) {\r\n                const message = new Message(settings.locale || \"en-US\");\r\n\r\n                // Set-up preorder message.\r\n                if (settings.value != \"\") {\r\n                    const configType = type === \"bis\" ? 'configBIS' : type === \"cs\" ? \"configCS\" : type === 'is' ? 'configIS' : 'config'\r\n                    const messageValue = message.populateDynamicValues(variant, settings.value, /*isCartLabel=*/false, /*configType=*/ configType)\r\n                    this.showPreorderMessage(settings.type, messageValue, type);\r\n                    message.addStylePreorderMessage(settings, type);\r\n                }\r\n            }\r\n\r\n            showPreorderMessage(placementType, value, type) {\r\n                if (this.selectors.messageSelector) {\r\n                    0 === $(this.selectors.formSelector).find(`.timesact-${type}-description`).length\r\n                        ? placementType === \"BELOW\"\r\n                            ? $(this.selectors.messageSelector).after(`<div class='timesact-${type}-description'>` + value + \"</div>\")\r\n                            : $(this.selectors.messageSelector).before(`<div class='timesact-${type}-description'>` + value + \"</div>\")\r\n                        : $(this.selectors.formSelector).find(`.timesact-${type}-description`).val(value);\r\n                    return\r\n                }\r\n                0 === $(this.selectors.formSelector).find(`.timesact-${type}-description`).length\r\n                    ? placementType === \"BELOW\"\r\n                        ? $(this.selectors.buttonSelector).after(`<div class='timesact-${type}-description'>` + value + \"</div>\")\r\n                        : $(this.selectors.buttonSelector).before(`<div class='timesact-${type}-description'>` + value + \"</div>\")\r\n                    : $(this.selectors.formSelector).find(`.timesact-${type}-description`).val(value);\r\n            }\r\n\r\n            removePreorderMessage() {\r\n                $(this.selectors.formSelector).find(\".timesact-preorder-description, .timesact-bis-description, .timesact-cs-description, .timesact-is-description\").remove();\r\n            }\r\n\r\n            removePreorderQuantity() {\r\n                $(\".timesact-quantity-message\").remove();\r\n                $(this.selectors.quantitySelector).off('change.quantityChange');\r\n                $(this.selectors.buttonSelector).off('click.quantityButtonClick');\r\n            }\r\n\r\n            addHiddenElements() {\r\n                $(this.selectors.hideProductElements).show();\r\n            }\r\n\r\n            addQuantityListener(preorderQty) {\r\n                const selectors = this.selectors;\r\n                $(this.selectors.quantitySelector).on('change.quantityChange', function () {\r\n                    if (preorderQty < parseInt($(this).val())) {\r\n                        if (!$(\".timesact-quantity-message\").length) {\r\n                            if (selectors.messageSelector) {\r\n                                $(selectors.messageSelector).before(\"<div class='timesact-quantity-message' style='color:red'>\" + `You can only pre-order ${preorderQty} items!` + \"</div>\");\r\n                            } else {\r\n                                $(selectors.buttonSelector).before(\"<div class='timesact-quantity-message' style='color:red'>\" + `You can only pre-order ${preorderQty} items!` + \"</div>\");\r\n                            }\r\n                        }\r\n                        $(selectors.buttonSelector).prop(\"disabled\", true);\r\n                    } else {\r\n                        $(\".timesact-quantity-message\").remove();\r\n                        $(selectors.buttonSelector).prop(\"disabled\", false);\r\n                    }\r\n                });\r\n\r\n                $(this.selectors.buttonSelector).on('click.quantityButtonClick', function (event) {\r\n                    const qty = $(selectors.quantitySelector).val();\r\n                    if (preorderQty < parseInt(qty)) {\r\n                        event.preventDefault();\r\n                        if (!$(\".timesact-quantity-message\").length) {\r\n                            if (selectors.messageSelector) {\r\n                                $(selectors.messageSelector).before(\"<div class='timesact-quantity-message' style='color:red'>\" + `You can only pre-order ${preorderQty} items!` + \"</div>\");\r\n                            } else {\r\n                                $(selectors.buttonSelector).before(\"<div class='timesact-quantity-message' style='color:red'>\" + `You can only pre-order ${preorderQty} items!` + \"</div>\");\r\n                            }\r\n                        }\r\n                    } else {\r\n                        $(\".timesact-quantity-message\").remove();\r\n                    }\r\n                });\r\n            }\r\n        }\r\n\r\n        class TimesactEventListener {\r\n            initVariantEventListener(preorder) {\r\n                var event = this;\r\n                ($(document).on(\"change\", \".timesact-variant-picker-\" + preorder.uuid, function (e) {\r\n                    event.variantChangeHandler(preorder);\r\n                }),\r\n                    event.setup(function () {\r\n                        event.variantChangeHandler(preorder);\r\n                    }));\r\n                // if variant switching in quick view is not working\r\n                // const qvContainerSel = window.ta.quickView.selectors.quickviewModalContainer;\r\n                // console.log(qvContainerSel);\r\n                // $(document).on('change', `${qvContainerSel} select[name='id'], ${qvContainerSel} select[name='id[]'], ${qvContainerSel} input[type='radio'][name='id'], ${qvContainerSel} input[type='radio'][name='id[]']`, function () {\r\n                //     event.variantChangeHandler(preorder);\r\n                // }); \r\n            }\r\n\r\n\r\n\r\n            initChangeURLEventListener(callback) {\r\n                const event = this;\r\n\r\n                event.setup(function () {\r\n                    setTimeout(callback, 1500);\r\n                })\r\n            }\r\n\r\n            sleep(e) {\r\n                return new Promise(function (t) {\r\n                    setTimeout(t, e);\r\n                });\r\n            }\r\n\r\n            variantChangeHandler(preorder) {\r\n                const preorderEntry = preorder;\r\n\r\n                this.sleep(preorder.selectors.variantChangingTime).then(function () {\r\n                    let selectedVariantId = '';\r\n                    try {\r\n                        const params = new URL(window.location.href).searchParams;\r\n                        const v = params.get('variant');\r\n                        if (v && /^\\d+$/.test(v)) {\r\n                            selectedVariantId = v;\r\n                        }\r\n                    } catch (e) {\r\n\r\n                    }\r\n\r\n                    if (!selectedVariantId) {\r\n                        selectedVariantId =\r\n                            \"radio\" === $(preorderEntry.selectors.formSelector)\r\n                                .find(\"select[name='id'], input[name='id'], select[name='id[]'], input[name='id[]']\").attr(\"type\")\r\n                                ? $(preorderEntry.selectors.formSelector).find(\"input[name='id']:checked, input[name='id[]']:checked\").val()\r\n                                : $(preorderEntry.selectors.formSelector).find(\"select[name='id'], input[name='id'], select[name='id[]'], input[name='id[]']\").val();\r\n                    }\r\n\r\n                    preorderEntry.product.setActiveVariant(selectedVariantId);\r\n                    preorderEntry.resetDefault();\r\n                    preorderEntry.createWidget();\r\n                });\r\n            }\r\n\r\n\r\n            track(fn, handler, before) {\r\n                return function r() {\r\n                    if (before) return handler.apply(this, arguments), fn.apply(this, arguments);\r\n                    var result = fn.apply(this, arguments);\r\n                    return handler.apply(this, arguments), result;\r\n                };\r\n            }\r\n\r\n            setup(handler) {\r\n                history.pushState = this.track(history.pushState, handler);\r\n                history.replaceState = this.track(history.replaceState, handler);\r\n                window.addEventListener(\"popstate\", handler);\r\n            };\r\n        }\r\n\r\n        class Api {\r\n            static async createSubscription(data) {\r\n                try {\r\n                    await $.ajax({\r\n                        url: `/apps/timesact/notifications/bis`,\r\n                        type: 'POST',\r\n                        contentType: \"application/json; charset=utf-8\",\r\n                        dataType: \"json\",\r\n                        data: JSON.stringify(data)\r\n                    })\r\n\r\n                    return true\r\n                } catch (err) {\r\n                    console.log(\"Subscription no create\", err)\r\n\r\n                    return false\r\n                }\r\n            }\r\n\r\n            static async getProductPreOrderConfig(productId) {\r\n                try {\r\n                    return await $.ajax({\r\n                        url: `/apps/timesact/config?productId=${productId}`,\r\n                        type: 'GET',\r\n                        contentType: \"application/json; charset=utf-8\",\r\n                        dataType: \"json\"\r\n                    })\r\n                } catch (err) {\r\n                    console.log(\"Product is not active on pre-order.\")\r\n                    return null\r\n                }\r\n            }\r\n\r\n            async getProducts(productIds = []) {\r\n                try {\r\n                    return await $.ajax({\r\n                        url: `/apps/timesact/products?productIds=${productIds}`,\r\n                        type: 'GET',\r\n                        contentType: \"application/json; charset=utf-8\",\r\n                        dataType: \"json\"\r\n                    });\r\n                } catch (err) {\r\n                    console.log(\"Products config couldn't be fetched.\");\r\n                    return null;\r\n                }\r\n            }\r\n\r\n            async getShop() {\r\n                try {\r\n                    return await $.ajax({\r\n                        url: `/apps/timesact/shop`,\r\n                        type: 'GET',\r\n                        contentType: \"application/json; charset=utf-8\",\r\n                        dataType: \"json\"\r\n                    })\r\n                } catch (err) {\r\n                    console.log(\"Shop data couldn't be fetched.\")\r\n                    return null\r\n                }\r\n            }\r\n\r\n            async getSettings() {\r\n                try {\r\n                    return await $.ajax({\r\n                        url: `/apps/timesact/shop/settings`,\r\n                        type: 'GET',\r\n                        contentType: \"application/json; charset=utf-8\",\r\n                        dataType: \"json\"\r\n                    })\r\n                } catch (err) {\r\n                    console.log(\"Settings data couldn't be fetched.\")\r\n                    return null\r\n                }\r\n            }\r\n        }\r\n\r\n        class Selectors {\r\n            constructor(selectors) {\r\n                this.ids = selectors;\r\n            }\r\n\r\n            setNormalSelectors() {\r\n                this.formSelector = $(this.ids.form)\r\n                this.buttonSelector = this.formSelector.find(this.ids.addToCartButton)\r\n                if (this.buttonSelector.length === 0) {\r\n                    // In case the Add To Cart button was not identified, we try some generic selectors.\r\n                    this.buttonSelector = this.formSelector.find('[type=\"submit\"]:visible:first, [name=\"add\"], .product-submit, .addtocart-button-active, .product-form--add-to-cart, .button--addToCart, .product-form__submit, .add-to-cart, .btn-addtocart, .single_add_to_cart_button, .product-form__cart-submit, .product-form--atc-button, .ProductForm__AddToCart, [type=\"button\"]:visible:first').first()\r\n                }\r\n                this.variantSelector = this.formSelector.find(this.ids.variant)\r\n\r\n                if (this.ids.quantity) {\r\n                    this.quantitySelector = this.formSelector.find(this.ids.quantity)\r\n                } else {\r\n                    this.quantitySelector = this.formSelector.find('[name=\"quantity\"]')\r\n                    if (this.quantitySelector.length === 0) {\r\n                        this.quantitySelector = $('[name=\"quantity\"]')\r\n                    }\r\n                }\r\n\r\n                if (this.ids.badge) {\r\n                    this.badgeSelector = $(this.ids.badge)\r\n                } else {\r\n                    this.badgeSelector = $('.timesact-badge')\r\n                }\r\n\r\n                if (this.ids.message) {\r\n                    this.messageSelector = this.formSelector.find(this.ids.message)\r\n                }\r\n\r\n                this.sellingPlanSelector = this.formSelector.find('[type=\"submit\"]:visible:first')\r\n                if (this.ids.sellingPlan) {\r\n                    this.sellingPlanSelector = this.formSelector.find(this.ids.sellingPlan)\r\n                }\r\n\r\n                // timer\r\n                this.timerSelector = this.formSelector.find('[type=\"submit\"]:visible:first')\r\n                if (this.ids.timer) {\r\n                    this.timerSelector = this.formSelector.find(this.ids.timer)\r\n                }\r\n\r\n                if (this.ids.hide && this.ids.hide.product) {\r\n                    this.hideProductElements = this.ids.hide.product\r\n                }\r\n                this.variantChangingTime = this.ids.variantChangingTime || 250\r\n\r\n                // PageFly Integration.\r\n                if (this.formSelector.find('[data-pf-type=\"ProductATC\"], [data-pf-type=\"ProductATC2\"]').length > 0) {\r\n                    this.buttonSelector = this.formSelector.find('[data-pf-type=\"ProductATC\"] span:first, [data-pf-type=\"ProductATC2\"] span:first')\r\n                    this.messageSelector = this.formSelector.find(this.ids.message || '[data-pf-type=\"ProductATC\"]')\r\n                    this.badgeSelector = $('[data-pf-type=\"MainMedia\"]')\r\n\r\n                }\r\n\r\n                if (this.formSelector.find('gp-product-images-v2').length > 0) {\r\n                    this.badgeSelector = this.formSelector.find('gp-product-images-v2')\r\n                }\r\n            }\r\n\r\n            setQuickViewSelectors() {\r\n                this.formSelector = $(window.ta.quickView.selectors.quickviewModalContainer).find(window.ta.quickView.selectors.form);\r\n                this.buttonSelector = $(window.ta.quickView.selectors.quickviewModalContainer).find(window.ta.quickView.selectors.addToCartButton);\r\n                this.variantSelector = $(window.ta.quickView.selectors.quickviewModalContainer).find(window.ta.quickView.selectors.variant);\r\n                this.quantitySelector = $(window.ta.quickView.selectors.quickviewModalContainer).find(window.ta.quickView.selectors.quantity);\r\n                if (this.ids.message) {\r\n                    this.messageSelector = this.formSelector.find(this.ids.message);\r\n                }\r\n                this.variantChangingTime = this.ids.variantChangingTime || 250;\r\n\r\n                if (this.ids.badge) {\r\n                    this.badgeSelector = $(this.ids.badge);\r\n                } else {\r\n                    this.badgeSelector = $('.timesact-badge');\r\n                }\r\n\r\n                this.sellingPlanSelector = this.formSelector.find('[type=\"submit\"]:visible:first')\r\n                if (this.ids.sellingPlan) {\r\n                    this.sellingPlanSelector = this.formSelector.find(this.ids.sellingPlan)\r\n                }\r\n            }\r\n        }\r\n\r\n        /* Main entry point. */\r\n        class ScriptRunner {\r\n            constructor(shop, product) {\r\n                this.shop = shop\r\n                this.product = product\r\n                this.productListObserver = null\r\n            }\r\n\r\n            async run(isQuickView) {\r\n                const timesactProduct = await Api.getProductPreOrderConfig(this.product.id)\r\n\r\n                if (this.productListObserver) {\r\n                    this.productListObserver.disconnect()\r\n                    this.productListObserver = null\r\n                }\r\n\r\n                if (!timesactProduct) {\r\n                    // Product is not set in the app. Store it in the cache.\r\n                    window.ta.products[this.product.id] = {\r\n                        isPreorder: false,\r\n                        isBIS: false,\r\n                        isCS: false,\r\n                        isIS: false,\r\n                        lastUpdate: parseInt(new Date().getTime() / 1000)\r\n                    };\r\n                    localStorage.setItem(\"products\", JSON.stringify(window.ta.products))\r\n\r\n                    $('.atc-button-hide').removeClass('atc-button-hide');\r\n                    return\r\n                }\r\n\r\n                window.ta.currentTimesactProductData = {\r\n                    defaultSettings: this.shop.settings,\r\n                    productId: this.product.id,\r\n                    productName: this.product.title,\r\n                    productVariants: timesactProduct.product.variants,\r\n                    variantId: null\r\n                }\r\n\r\n                this.selectors = new Selectors(this.shop.selectors)\r\n\r\n                if (!isQuickView) {\r\n                    this.selectors.setNormalSelectors()\r\n                } else {\r\n                    this.selectors.setQuickViewSelectors()\r\n                }\r\n\r\n\r\n                this.product.setActiveVariant(new ProductUtil().extractVariantId(this.product.variants, this.selectors.formSelector))\r\n                this.product.setTimesactVariants(timesactProduct.product)\r\n\r\n                const timesact = new Timesact(this.selectors, this.product, this.shop.settings.templates, this.shop)\r\n\r\n                timesact.init()\r\n\r\n                window.ta.products[this.product.id] = {\r\n                    isPreorder: this.isActiveOnPreorder(timesactProduct.product.variants),\r\n                    isBIS: this.isActiveOnBIS(timesactProduct.product.variants),\r\n                    isCS: this.isActiveOnCS(timesactProduct.product.variants),\r\n                    isIS: this.isActiveOnIS(timesactProduct.product.variants),\r\n                    variants: timesactProduct.product.variants,\r\n                    lastUpdate: parseInt(new Date().getTime() / 1000)\r\n                }\r\n                localStorage.setItem(\"products\", JSON.stringify(window.ta.products))\r\n            }\r\n\r\n            hasCustomSettings(product, variantId) {\r\n                if (!product.variants[variantId].settings) {\r\n                    return false;\r\n                }\r\n                return product.variants[variantId].settings.type === \"CUSTOM\";\r\n            }\r\n\r\n            async getVariantSettings(settings, defaultSettings, product, variantId, type) {\r\n                if (!product.variants[variantId].config.settingsTemplate) {\r\n                    // Old flow, if the variant does not have a template assigned.\r\n                    if (!this.hasCustomSettings(product, variantId)) {\r\n                        return defaultSettings\r\n                    }\r\n\r\n                    const customSettings = product.variants[variantId].settings\r\n\r\n                    return {\r\n                        button: {\r\n                            ...defaultSettings.button,\r\n                            name: customSettings.buttonName || defaultSettings.button.name\r\n                        },\r\n                        message: {\r\n                            ...defaultSettings.message,\r\n                            type: customSettings.messageType || defaultSettings.message.type,\r\n                            value: customSettings.messageValue || defaultSettings.message.value,\r\n                        },\r\n                        cart: {\r\n                            ...defaultSettings.cart,\r\n                            labelText: {\r\n                                key: customSettings.cartLabelTextKey || defaultSettings.cart.labelText.key,\r\n                                value: customSettings.cartLabelTextValue || defaultSettings.cart.labelText.value,\r\n                            }\r\n                        },\r\n                        badge: defaultSettings.badge\r\n                    }\r\n                }\r\n                if (type === \"PO\") {\r\n                    return product.variants[variantId].config.settingsTemplate in settings\r\n                        ? settings[product.variants[variantId].config.settingsTemplate]\r\n                        : defaultSettings\r\n                }\r\n\r\n                if (type === \"BIS\") {\r\n                    return product.variants[variantId].configBIS.settingsTemplate in settings\r\n                        ? settings[product.variants[variantId].configBIS.settingsTemplate]\r\n                        : defaultSettings\r\n                }\r\n\r\n                if (type === \"CS\") {\r\n                    return product.variants[variantId].configCS.settingsTemplate in settings\r\n                        ? settings[product.variants[variantId].configCS.settingsTemplate]\r\n                        : defaultSettings\r\n                }\r\n\r\n                return defaultSettings\r\n            }\r\n\r\n            addSellingPlan(sellingPlans, settings, variant, productForm) {\r\n                if (!variant.config.sellingPlan) {\r\n                    console.log('Variant has no SellingPlan set.')\r\n                    return\r\n                }\r\n\r\n                const sellingPlan = sellingPlans.find(sellingPlan => String(sellingPlan.id) === variant.config.sellingPlan)\r\n\r\n                if (!sellingPlan) {\r\n                    console.log('SellingPlan was not found.')\r\n                    return\r\n                }\r\n\r\n                if (sellingPlan.options[0].name === \"FULL_PAYMENT\") {\r\n                    $(productForm).append(`<input type=\"hidden\" checked=\"checked\" data-timesact-selling-plan name=\"selling_plan\" value=\"${sellingPlan.id}\" id=\"selling_plan_${sellingPlan.id}\">`)\r\n                } else {\r\n                    // Partial Payment widget.\r\n                    $(productForm).find(this.selectors.sellingPlanSelector).before(timesactPartialPayment)\r\n                    $('#timesact_widget .timesact_text').text(sellingPlan.options[0].value)\r\n                    $('#timesact_widget #timesact_selling_plan_label').val(sellingPlan.id)\r\n                }\r\n\r\n                const message = new Message(settings.locale || \"en-US\");\r\n\r\n                0 === $(productForm).find(\".timesact-selling-plan-description\").length\r\n                    ? $(productForm).find(this.selectors.messageSelector).after(\"<div class='timesact-selling-plan-description'>\" + sellingPlan.description + \"</div>\")\r\n                    : $(productForm).find(\".timesact-selling-plan-description\").val(sellingPlan.description);\r\n                message.addStylePreorderMessage(settings.message, /*type=*/\"selling-plan\");\r\n            }\r\n\r\n            async runHomepage() {\r\n                const thisEvent = this;\r\n                this.selectors = new Selectors(this.shop.selectors);\r\n                this.selectors.setNormalSelectors();\r\n\r\n                var productIds = new Set()\r\n                const productForms = $(this.selectors.formSelector);\r\n                for (var form = 0; form < productForms.length; form++) {\r\n                    const productId = $(productForms[form]).data('productid')\r\n                    if (productId) {\r\n                        productIds.add(productId)\r\n                    }\r\n                }\r\n\r\n                const timesact = await new Api().getProducts(Array.from(productIds))\r\n                if (!timesact) {\r\n                    console.log('[Error] Timesact API getProducts.')\r\n                    return\r\n                }\r\n\r\n                const defaultSetting = window.ta.settings[this.shop.settings.templates['PO']];\r\n\r\n                for (var form = 0; form < productForms.length; form++) {\r\n                    const productId = $(productForms[form]).data('productid')\r\n                    if (!(productId in timesact.products)) {\r\n                        continue;\r\n                    }\r\n\r\n                    const product = timesact.products[productId];\r\n\r\n                    if (this.shop.hasSellingPlanEnabled) {\r\n                        var shopifyProduct;\r\n                        await $.getJSON(window.Shopify.routes.root + `products/${product.handle}.js`, function (data) {\r\n                            shopifyProduct = new Product(data.id, data.variants, data.title, data.selling_plan_groups)\r\n                        });\r\n                    }\r\n\r\n                    const variantId = $(productForms[form]).find(\"[name='id']\").val()\r\n                    const variantSetting = await this.getVariantSettings(window.ta.settings, defaultSetting, product, variantId, \"PO\")\r\n\r\n                    const buttonSelector = $(productForms[form]).find(this.selectors.buttonSelector)\r\n                    if (!variantId || product.variants[variantId].config.status === \"NO_STOCK\") {\r\n                        $(buttonSelector).val(variantSetting.button.soldOutText);\r\n                        $(buttonSelector).text(variantSetting.button.soldOutText);\r\n                        $(buttonSelector).prop(\"disabled\", true);\r\n                        $(productForms[form]).find(\".timesact-preorder-description\").remove();\r\n                        $(productForms[form]).find(\"#preorder-label\").remove();\r\n                        $(productForms[form]).parent().parent().parent().parent().parent().find('.timesact-badge-common').remove();\r\n\r\n                        continue;\r\n                    }\r\n                    if (product.variants[variantId].config.status === \"ACTIVE\") {\r\n                        $(buttonSelector).val(variantSetting.button.name);\r\n                        $(buttonSelector).text(variantSetting.button.name);\r\n                        $(buttonSelector).prop(\"disabled\", false);\r\n                        $(productForms[form]).find(\".shopify-payment-button\").hide();\r\n                        const message = new Message(defaultSetting.message.locale || \"en-US\");\r\n\r\n\r\n                        if (typeof variantSetting.cart.labelText.isEnabled === \"undefined\" || variantSetting.cart.labelText.isEnabled) {\r\n                            const key = message.populateDynamicValues(product.variants[variantId], variantSetting.cart.labelText.key, /*isCartLabel=*/false, /*configType=*/'config')\r\n                            const value = message.populateDynamicValues(product.variants[variantId], variantSetting.cart.labelText.value, /*isCartLabel=*/false, /*configType=*/'config')\r\n\r\n                            0 === $(productForms[form]).find(\"#preorder-label\").length\r\n                                ? $(productForms[form]).append('<input type=\"hidden\" id=\"preorder-label\" name=\"properties[' + key + ']\" value=\"' + value + '\" />')\r\n                                : $(productForms[form]).find(\"#preorder-label\").val(value);\r\n                        }\r\n\r\n                        if (this.shop.hasSellingPlanEnabled) {\r\n                            this.addSellingPlan(shopifyProduct.sellingPlans, variantSetting, product.variants[variantId], productForms[form]);\r\n                        }\r\n\r\n                        const messageValue = message.populateDynamicValues(product.variants[variantId], variantSetting.message.value, /*isCartLabel=*/false, /*configType=*/'config')\r\n                        0 === $(productForms[form]).find(\".timesact-preorder-description\").length\r\n                            ? $(productForms[form]).find(this.selectors.messageSelector).after(\"<div class='timesact-preorder-description'>\" + messageValue + \"</div>\")\r\n                            : $(productForms[form]).find(\".timesact-preorder-description\").val(messageValue);\r\n                        message.addStylePreorderMessage(variantSetting.message, 'preorder');\r\n\r\n                        const badge = new Badge();\r\n                        badge.add($(productForms[form]).parent().parent().parent().parent().parent().find('.image--container:first'), variantSetting.badge.type, variantSetting.badge.value);\r\n                        badge.applyStyles(variantSetting.badge);\r\n                    }\r\n\r\n                    if (product.variants[variantId].config.status === \"NO_SET\" || product.variants[variantId].config.status === \"PENDING\") {\r\n                        $(buttonSelector).val(variantSetting.button.addToCartText);\r\n                        $(buttonSelector).text(variantSetting.button.addToCartText);\r\n                        $(productForms[form]).find(\".timesact-preorder-description\").remove();\r\n                        $(productForms[form]).find(\"#preorder-label\").remove();\r\n                        $(productForms[form]).parent().parent().parent().parent().parent().find('.timesact-badge-common').remove();\r\n                    }\r\n\r\n                    $(productForms[form]).parent().parent().parent().find(\"[type='radio']\").on('click.variant', function () {\r\n                        thisEvent.runHomepage();\r\n                    })\r\n                }\r\n            }\r\n\r\n            runProductListObserver() {\r\n                const productGrid = document.querySelector(\"#product-grid\")\r\n\r\n                if (!productGrid) {\r\n                    return\r\n                }\r\n\r\n                const callback = (mutationList) => {\r\n                    for (const mutation of mutationList) {\r\n                        if (mutation.type === \"childList\") {\r\n                            if (!mutation.addedNodes.length) {\r\n                                return\r\n                            }\r\n\r\n                            const liNodes = [...mutation.addedNodes].filter(({ nodeName }) => nodeName === \"LI\")\r\n\r\n                            if (!liNodes.length) {\r\n                                return\r\n                            }\r\n\r\n                            const products = this.findProductsInList(liNodes)\r\n\r\n                            this.enableBadgeOnCollection(products)\r\n                        }\r\n                    }\r\n                }\r\n\r\n                if (this.productListObserver) {\r\n                    this.productListObserver.disconnect()\r\n                    this.productListObserver = null\r\n                }\r\n\r\n                this.productListObserver = new MutationObserver(callback)\r\n\r\n                const config = { childList: true }\r\n\r\n                this.productListObserver.observe(productGrid, config)\r\n            }\r\n\r\n            findProductsOnPage() {\r\n                let possibleClasses = ['.timesact-badge', '.product-item', '.card--standard', '.card--card', '.ProductItem', '[data-pf-type=\"ProductBox\"], gp-product'];\r\n\r\n                if (this.shop.selectors.collection && this.shop.selectors.collection.badge) {\r\n                    possibleClasses = [this.shop.selectors.collection.badge];\r\n                }\r\n\r\n                let products = [];\r\n\r\n                for (let i = 0; i < possibleClasses.length; i++) {\r\n                    if ($(possibleClasses[i]).length > 0) {\r\n                        products = $(possibleClasses[i])\r\n                        break;\r\n                    }\r\n                }\r\n\r\n                return products\r\n            }\r\n\r\n            findProductsInList(list) {\r\n                let possibleClasses = ['.timesact-badge', '.product-item', '.card--standard', '.card--card', '.ProductItem', '[data-pf-type=\"ProductBox\"], gp-product'];\r\n\r\n                if (this.shop.selectors.collection && this.shop.selectors.collection.badge) {\r\n                    possibleClasses = [this.shop.selectors.collection.badge];\r\n                }\r\n\r\n                let products = [];\r\n\r\n                for (let i = 0; i < list.length; i++) {\r\n                    for (let y = 0; y < possibleClasses.length; y++) {\r\n                        const product = list[i].querySelector(possibleClasses[y])\r\n\r\n                        if (product) {\r\n                            products.push(product)\r\n                            break;\r\n                        }\r\n                    }\r\n                }\r\n\r\n                return products\r\n            }\r\n\r\n\r\n            async runCollection() {\r\n                if (window.ta.settings[this.shop.settings.templates.PO].badge.collection ||\r\n                    window.ta.settings[this.shop.settings.templates.BIS].badge.collection ||\r\n                    window.ta.settings[this.shop.settings.templates.CS].badge.collection ||\r\n                    window.ta.settings[this.shop.settings.templates.IS].badge.collection) {\r\n                    if (this.shop.lastProductUpdate && window.ta.lastProductUpdate < this.shop.lastProductUpdate) {\r\n                        // Invalidate the product cache if there was a change on server-side.\r\n                        window.ta.products = {};\r\n                    }\r\n\r\n                    const products = this.findProductsOnPage()\r\n\r\n                    this.enableBadgeOnCollection(products)\r\n\r\n                    this.runProductListObserver()\r\n\r\n                    new TimesactEventListener().initChangeURLEventListener(() => {\r\n                        this.runProductListObserver.apply(this)\r\n                        const products = this.findProductsOnPage.apply(this)\r\n                        this.enableBadgeOnCollection(products)\r\n                    })\r\n                }\r\n            }\r\n\r\n            async runMixedCartAlert(data) {\r\n                if (!window.ta.cart.showMixedCartAlert) {\r\n                    return;\r\n                }\r\n\r\n                if (!data.items.length) {\r\n                    return;\r\n                }\r\n\r\n                const isCartPage = window.location.pathname.includes(\"cart\")\r\n                const defaultSettingsPO = window.ta.settings[this.shop.settings.templates.PO]\r\n                if (\r\n                    !defaultSettingsPO.cart.mixed.isEnabled ||\r\n                    (isCartPage && defaultSettingsPO.cart.mixed.onCartPage === false) || // on /cart check page enabled\r\n                    (!isCartPage && defaultSettingsPO.cart.mixed.onButtonClick !== true) // on other check button click\r\n                ) {\r\n                    return;\r\n                }\r\n\r\n                let hasPreorderProduct = false;\r\n                let hasNormalProduct = false;\r\n                let products = {};\r\n\r\n                for (const item of data.items) {\r\n                    if (window.ta.products[item.product_id]) {\r\n                        if (window.ta.products[item.product_id].variants && window.ta.products[item.product_id].variants[item.variant_id]) {\r\n                            if (window.ta.products[item.product_id].variants[item.variant_id].config.status === \"ACTIVE\") {\r\n                                hasPreorderProduct = true;\r\n                                continue;\r\n                            }\r\n                        }\r\n                        hasNormalProduct = true;\r\n                        continue;\r\n                    }\r\n                    // products is not in the cache.\r\n                    products[item.product_id] = products[item.product_id] || [];\r\n                    products[item.product_id].push(item.variant_id);\r\n                }\r\n\r\n                const modal = new Modal();\r\n                const modalSettings = { ...defaultSettingsPO.cart.mixed, id: defaultSettingsPO.id || defaultSettingsPO.name }\r\n\r\n                const closeModal = () => {\r\n                    window.sessionStorage.setItem(\"showCartMixedAlert\", !($('#md-stop').is(\":checked\")));\r\n                    window.ta.cart.showMixedCartAlert = !($('#md-stop').is(\":checked\"))\r\n                }\r\n\r\n                if (hasPreorderProduct && hasNormalProduct) {\r\n                    return modal.display(modalSettings, closeModal);\r\n                }\r\n\r\n                if (!Object.keys(products).length) {\r\n                    return;\r\n                }\r\n\r\n                const timesact = await new Api().getProducts(Object.keys(products))\r\n                if (!timesact) {\r\n                    console.log('[Error] Timesact API getProducts.')\r\n                    return\r\n                }\r\n\r\n                for (const productId of Object.keys(products)) {\r\n                    if (!(productId in timesact.products)) {\r\n                        hasNormalProduct = true\r\n                        // Product is not set in the app. Store it in the cache.\r\n                        window.ta.products[productId] = {\r\n                            isPreorder: false,\r\n                            isBIS: false,\r\n                            isCS: false,\r\n                            lastUpdate: parseInt(new Date().getTime() / 1000)\r\n                        }\r\n                        continue\r\n                    }\r\n\r\n                    for (const variantId of products[productId]) {\r\n                        if (timesact.products[productId].variants[variantId] && timesact.products[productId].variants[variantId].config.status === \"ACTIVE\") {\r\n                            hasPreorderProduct = true\r\n                            continue\r\n                        }\r\n                        hasNormalProduct = true\r\n                    }\r\n\r\n                    window.ta.products[productId] = {\r\n                        isPreorder: this.isActiveOnPreorder(timesact.products[productId].variants),\r\n                        isBIS: this.isActiveOnBIS(timesact.products[productId].variants),\r\n                        isCS: this.isActiveOnCS(timesact.products[productId].variants),\r\n                        isIS: this.isActiveOnIS(timesact.products[productId].variants),\r\n                        variants: timesact.products[productId].variants,\r\n                        lastUpdate: parseInt(new Date().getTime() / 1000)\r\n                    };\r\n\r\n                    if (hasNormalProduct && hasPreorderProduct) {\r\n                        modal.display(modalSettings, closeModal);\r\n                        break;\r\n                    }\r\n                }\r\n                localStorage.setItem(\"products\", JSON.stringify(window.ta.products));\r\n            }\r\n\r\n            async runCartAlert(data) {\r\n                if (!data.items.length) {\r\n                    return;\r\n                }\r\n\r\n                // collect products here\r\n                const products = {};\r\n\r\n                // from cache\r\n                for (var item of data.items) {\r\n                    const product = window.ta.products[item.product_id]\r\n                    // not in cache\r\n                    if (!product) continue\r\n\r\n                    const variant = product?.variants?.[item.variant_id]\r\n                    const configName = product.isIS ? \"configIS\" : \"config\"\r\n                    if (variant?.[configName]?.status !== \"ACTIVE\") continue\r\n\r\n                    products[item.product_id] = {\r\n                        ...(products[item.product_id] || {}),\r\n                        [item.variant_id]: variant,\r\n                    }\r\n                }\r\n\r\n                // empty products\r\n                if (!Object.keys(products).length) return;\r\n\r\n                // get products & variants & set templates\r\n                const storageTmps = JSON.parse(window.sessionStorage.getItem(\"showCartAlert\") || null) || {}\r\n                const tmps = {}\r\n                for (const [productId, product] of Object.entries(products)) {\r\n                    for (const [variantId, variant] of Object.entries(product)) {\r\n                        const configName = variant.isISEnabled ? \"configIS\" : \"config\"\r\n                        const tmpSettings = window.ta.settings[variant[configName]?.settingsTemplate]\r\n                        const id = `${tmpSettings.type}-${productId}-${variantId}`\r\n                        tmps[id] = {\r\n                            dismiss: !!storageTmps[id]?.dismiss,\r\n                            settings: {\r\n                                id,\r\n                                ...tmpSettings.cart?.alert\r\n                            }\r\n                        }\r\n                    }\r\n                }\r\n\r\n                const closeModal = (settings) => {\r\n                    return () => {\r\n                        const actualStorageTmps = JSON.parse(window.sessionStorage.getItem(\"showCartAlert\") || null) || {}\r\n                        return new TimesactButton(\"\", \"\").closeCartAlertModal(settings, actualStorageTmps)\r\n                    }\r\n                }\r\n\r\n                // check enabled & push to queue\r\n                for (const tmp of Object.values(tmps)) {\r\n                    if (!tmp.settings.isEnabled || tmp.settings.onCartPage === false || tmp.dismiss) {\r\n                        continue\r\n                    }\r\n                    Modal.pushQueue(tmp.settings, closeModal(tmp.settings))\r\n                }\r\n                Modal.showFirst()\r\n            }\r\n\r\n            /** Checks if all the variants are active on pre-order. */\r\n            isActiveOnPreorder(variants) {\r\n                return Object.values(variants).every((variant) => variant.config.status === \"ACTIVE\" || variant.config.status === \"NO_STOCK\")\r\n            }\r\n\r\n            /** Checks if all the variants are active on back in stock. */\r\n            isActiveOnBIS(variants) {\r\n                return Object.values(variants).every((variant) => variant.configBIS && variant.configBIS.status === \"ACTIVE\")\r\n            }\r\n\r\n            /** Checks if all the variants are active on coming soon. */\r\n            isActiveOnCS(variants) {\r\n                return Object.values(variants).every((variant) => variant.configCS && variant.configCS.status === \"ACTIVE\")\r\n            }\r\n\r\n            /** Checks if all the variants are active on in stock. */\r\n            isActiveOnIS(variants) {\r\n                return Object.values(variants).some((variant) => variant.configIS && variant.configIS.status === \"ACTIVE\")\r\n            }\r\n\r\n            async enableBadgeOnCollection(items) {\r\n                if (items.length === 0) {\r\n                    console.log('No items detected.')\r\n                    return\r\n                }\r\n\r\n                const products = {}\r\n                const defaultSettingsPO = window.ta.settings[this.shop.settings.templates.PO]\r\n                const defaultSettingsBIS = window.ta.settings[this.shop.settings.templates.BIS]\r\n                const defaultSettingsCS = window.ta.settings[this.shop.settings.templates.CS]\r\n                const defaultSettingsIS = window.ta.settings[this.shop.settings.templates.IS]\r\n\r\n                await Promise.all(Array.from(items).map(async (item) => {\r\n                    let productId\r\n\r\n                    if ($(item).attr('gp-context')) {\r\n                        var gpContextObject = JSON.parse($(item).attr('gp-context'))\r\n                        if (gpContextObject.productId) {\r\n                            productId = gpContextObject.productId\r\n                        } else {\r\n                            var gpContextImage = JSON.parse($(item).find('gp-product-images-v2').attr('gp-data'))\r\n                            productId = gpContextImage.product.id;\r\n                        }\r\n                    } else {\r\n                        if ($(item).data('product-id')) {\r\n                            // PageFly Integration.\r\n                            productId = $(item).data('product-id')\r\n                        } else {\r\n                            let href = $(item).find('a').attr('href')\r\n                            if (!href) {\r\n                                return\r\n                            }\r\n                            let handle = href.split(\"/\").pop().split('?')[0]\r\n                            if (!handle) {\r\n                                return\r\n                            }\r\n\r\n                            console.log(\"Product handle: \", handle)\r\n                            const data = await $.getJSON(window.location.origin + href)\r\n\r\n                            if (!data || !data.product || !data.product.id) {\r\n                                return;\r\n                            }\r\n\r\n                            productId = String(data.product.id)\r\n                        }\r\n                    }\r\n\r\n                    if (window.ta.products[productId]) {\r\n                        let shouldHide = false\r\n\r\n                        if (window.ta.products[productId].isPreorder && defaultSettingsPO.badge.collection) {\r\n                            const sPO = (() => {\r\n                                const vs = window.ta.products[productId].variants || {};\r\n                                for (const vid in vs) {\r\n                                    const tid = vs[vid]?.configPO?.settingsTemplate;\r\n                                    if (tid && window.ta.settings[tid]) return window.ta.settings[tid];\r\n                                }\r\n                                return defaultSettingsPO;\r\n                            })();\r\n\r\n                            this.addBadge(item, sPO.badge, 'preorder');\r\n                            shouldHide = true;\r\n                            defaultSettingsPO.button.collection && defaultSettingsPO.button.collection.isEnabled && this.enableButtonOnCollection(item, this.shop, window.ta.products[productId], defaultSettingsPO, productId)\r\n                        }\r\n\r\n                        if (window.ta.products[productId].isBIS && defaultSettingsBIS.badge.collection) {\r\n                            const sBIS = (() => {\r\n                                const vs = window.ta.products[productId].variants || {};\r\n                                for (const vid in vs) {\r\n                                    const tid = vs[vid]?.configBIS?.settingsTemplate;\r\n                                    if (tid && window.ta.settings[tid]) return window.ta.settings[tid];\r\n                                }\r\n                                return defaultSettingsBIS;\r\n                            })();\r\n                            this.addBadge(item, sBIS.badge, 'bis')\r\n                            shouldHide = true\r\n                            this.enableButtonOnCollection(item, this.shop, window.ta.products[productId], defaultSettingsBIS, productId)\r\n                        }\r\n\r\n                        if (window.ta.products[productId].isCS && defaultSettingsCS.badge.collection) {\r\n                            const sCS = (() => {\r\n                                const vs = window.ta.products[productId].variants || {};\r\n                                for (const vid in vs) {\r\n                                    const tid = vs[vid]?.configCS?.settingsTemplate;\r\n                                    if (tid && window.ta.settings[tid]) return window.ta.settings[tid];\r\n                                }\r\n                                return defaultSettingsCS;\r\n                            })();\r\n                            this.addBadge(item, sCS.badge, 'cs')\r\n                            shouldHide = true\r\n                            this.enableButtonOnCollection(item, this.shop, window.ta.products[productId], defaultSettingsCS, productId)\r\n                        }\r\n\r\n                        if (window.ta.products[productId].isIS && defaultSettingsIS.badge.collection) {\r\n                            const sIS = (() => {\r\n                                const vs = window.ta.products[productId].variants || {};\r\n                                for (const vid in vs) {\r\n                                    const tid = vs[vid]?.configIS?.settingsTemplate;\r\n                                    if (tid && window.ta.settings[tid]) return window.ta.settings[tid];\r\n                                }\r\n                                return defaultSettingsIS;\r\n                            })();\r\n                            this.addBadge(item, sIS.badge, 'is')\r\n                            shouldHide = true\r\n                            // (No IS button handling here by design)\r\n                        }\r\n\r\n                        // Hide elements from the collection page.\r\n                        shouldHide && this.shop.selectors.hide && this.shop.selectors.hide.collection &&\r\n                            $(item).find(this.shop.selectors.hide.collection).hide()\r\n\r\n                        return\r\n                    }\r\n\r\n                    products[productId] = item\r\n                }))\r\n\r\n                const timesact = await new Api().getProducts(Object.keys(products))\r\n\r\n                if (!timesact) {\r\n                    console.log('[Error] Timesact API getProducts.')\r\n                    return\r\n                }\r\n\r\n                for (const [productId, item] of Object.entries(products)) {\r\n                    if (!(productId in timesact.products)) {\r\n                        // Product is not set in the app. Store it in the cache.\r\n                        window.ta.products[productId] = {\r\n                            isPreorder: false,\r\n                            isBIS: false,\r\n                            isCS: false,\r\n                            isIS: false,\r\n                            lastUpdate: parseInt(new Date().getTime() / 1000)\r\n                        }\r\n                        continue\r\n                    }\r\n\r\n                    const isPreorder = this.isActiveOnPreorder(timesact.products[productId].variants)\r\n                    const isBIS = this.isActiveOnBIS(timesact.products[productId].variants)\r\n                    const isCS = this.isActiveOnCS(timesact.products[productId].variants)\r\n                    const isIS = this.isActiveOnIS(timesact.products[productId].variants)\r\n\r\n                    let shouldHide = false\r\n                    if (isPreorder && defaultSettingsPO.badge.collection) {\r\n                        const sPO = (() => {\r\n                            const vs = timesact.products[productId].variants || {};\r\n                            for (const vid in vs) {\r\n                                const tid = vs[vid]?.config?.settingsTemplate;\r\n                                if (tid && window.ta.settings[tid]) return window.ta.settings[tid];\r\n                            }\r\n                            return defaultSettingsPO;\r\n                        })();\r\n                        this.addBadge(item, sPO.badge, 'preorder')\r\n                        shouldHide = true\r\n                        defaultSettingsPO.button.collection && defaultSettingsPO.button.collection.isEnabled && this.enableButtonOnCollection(item, this.shop, timesact.products[productId], defaultSettingsPO, productId)\r\n                    }\r\n\r\n                    if (isBIS && defaultSettingsBIS.badge.collection) {\r\n                        const sBIS = (() => {\r\n                            const vs = timesact.products[productId].variants || {};\r\n                            for (const vid in vs) {\r\n                                const tid = vs[vid]?.configBIS?.settingsTemplate;\r\n                                if (tid && window.ta.settings[tid]) return window.ta.settings[tid];\r\n                            }\r\n                            return defaultSettingsBIS;\r\n                        })();\r\n                        this.addBadge(item, sBIS.badge, 'bis')\r\n                        shouldHide = true\r\n                        this.enableButtonOnCollection(item, this.shop, timesact.products[productId], defaultSettingsBIS, productId)\r\n                    }\r\n\r\n                    if (isCS && defaultSettingsCS.badge.collection) {\r\n                        const sCS = (() => {\r\n                            const vs = timesact.products[productId].variants || {};\r\n                            for (const vid in vs) {\r\n                                const tid = vs[vid]?.configCS?.settingsTemplate;\r\n                                if (tid && window.ta.settings[tid]) return window.ta.settings[tid];\r\n                            }\r\n                            return defaultSettingsCS;\r\n                        })();\r\n                        this.addBadge(item, sCS.badge, 'cs')\r\n                        shouldHide = true\r\n                        this.enableButtonOnCollection(item, this.shop, timesact.products[productId], defaultSettingsCS, productId)\r\n                    }\r\n\r\n                    if (isIS && defaultSettingsIS.badge.collection) {\r\n                        const sIS = (() => {\r\n                            const vs = timesact.products[productId].variants || {};\r\n                            for (const vid in vs) {\r\n                                const tid = vs[vid]?.configIS?.settingsTemplate;\r\n                                if (tid && window.ta.settings[tid]) return window.ta.settings[tid];\r\n                            }\r\n                            return defaultSettingsIS;\r\n                        })();\r\n                        this.addBadge(item, sIS.badge, 'is')\r\n                        shouldHide = true\r\n                    }\r\n\r\n                    // Hide elements from the collection page.\r\n                    shouldHide && this.shop.selectors.hide && this.shop.selectors.hide.collection && $(item).find(this.shop.selectors.hide.collection).hide()\r\n\r\n                    window.ta.products[productId] = {\r\n                        isPreorder,\r\n                        isBIS,\r\n                        isCS,\r\n                        isIS,\r\n                        variants: timesact.products[productId].variants,\r\n                        lastUpdate: parseInt(new Date().getTime() / 1000)\r\n                    };\r\n                }\r\n\r\n                localStorage.setItem(\"products\", JSON.stringify(window.ta.products));\r\n            }\r\n\r\n            getActiveConfigType(product) {\r\n                if (product.isBISEnabled) return \"configBIS\"\r\n                if (product.isCSEnabled) return \"configCS\"\r\n                if (product.isISEnabled) return \"configIS\"\r\n                return \"config\"\r\n            }\r\n\r\n            enableButtonOnCollection(item, shop, product, defaultSettings, productId) {\r\n                if (!product?.variants) {\r\n                    return\r\n                }\r\n\r\n                let formCollectionSelector = 'form[action=\"/cart/add\"]'\r\n                if (shop.selectors.collection && shop.selectors.collection.form) {\r\n                    formCollectionSelector = shop.selectors.collection.form\r\n                }\r\n\r\n                let addToCartButtonCollectionSelector = '[type=submit]:visible:first, [data-pf-type=\"ProductATC\"] span:first, [data-pf-type=\"ProductATC2\"] span:first, .gp-button-atc'\r\n                if (shop.selectors.collection && shop.selectors.collection.addToCartButton) {\r\n                    addToCartButtonCollectionSelector = shop.selectors.collection.addToCartButton\r\n                }\r\n\r\n                const productForm = $(item).find(formCollectionSelector);\r\n                for (let variantId in product.variants) {\r\n                    const variant = product.variants[variantId]\r\n                    const configType = this.getActiveConfigType(variant)\r\n                    const config = variant[configType]\r\n\r\n                    // not active -> skip\r\n                    if (!config || config?.status !== \"ACTIVE\") continue\r\n\r\n                    let buttonSelector = $(item).find(addToCartButtonCollectionSelector);\r\n                    const buttonName = window.ta.settings[config.settingsTemplate]?.button.name || defaultSettings.button.name\r\n                    $(buttonSelector).val(buttonName);\r\n                    $(buttonSelector).text(buttonName);\r\n                    $(buttonSelector).prop(\"disabled\", false);\r\n                    $(item).find(\".shopify-payment-button\").hide();\r\n\r\n                    if (configType === \"configBIS\") {\r\n                        $(buttonSelector).click(function (event) {\r\n                            window.ta.currentTimesactProductData = {\r\n                                defaultSettings: shop.settings,\r\n                                productId: productId,\r\n                                productName: product.variants[variantId].displayName,\r\n                                productVariants: product.variants,\r\n                                variantId\r\n                            }\r\n                            event.preventDefault();\r\n                            TimesactBisModal.displayBisModal();\r\n                        })\r\n                        $(buttonSelector).prop(\"disabled\", false);\r\n                        // $(buttonSelector).attr('style', \"cursor: pointer !important; pointer-events: auto !important\")\r\n                    }\r\n\r\n                    if (configType === \"configCS\") {\r\n                        window.ta.currentTimesactProductData = {\r\n                            defaultSettings: shop.settings,\r\n                            productId: product?.id,\r\n                            productName: product?.title,\r\n                            productVariants: product.variants,\r\n                            variantId\r\n                        }\r\n                    }\r\n\r\n                    if (configType === \"config\") {\r\n                        const message = new Message(defaultSettings.message.locale || \"en-US\")\r\n                        const settingTemplate = window.ta.settings[product.variants[variantId].config.settingsTemplate]\r\n                        let cartValue = settingTemplate ? settingTemplate.cart.labelText.value : defaultSettings.cart.labelText.value\r\n                        let cartKey = settingTemplate ? settingTemplate.cart.labelText.key : defaultSettings.cart.labelText.key\r\n                        const isCartEnabled = settingTemplate ? settingTemplate.cart.labelText.isEnabled : defaultSettings.cart.labelText.isEnabled\r\n\r\n                        if (shop.hasSellingPlanEnabled && product.variants[variantId].config.sellingPlan) {\r\n                            $(productForm).append(`<input type=\"hidden\" checked=\"checked\" data-timesact-selling-plan name=\"selling_plan\" value=\"${product.variants[variantId].config.sellingPlan}\" id=\"selling_plan_${product.variants[variantId].config.sellingPlan}\">`)\r\n                        }\r\n                        if (typeof isCartEnabled === \"undefined\" || isCartEnabled) {\r\n                            cartKey = message.populateDynamicValues(product.variants[variantId], cartKey, /*isCartLabel=*/true, /*configType=*/'config')\r\n                            cartValue = message.populateDynamicValues(product.variants[variantId], cartValue,  /*isCartLabel=*/true, /*configType=*/'config')\r\n\r\n                            0 === $(productForm).find(\"#preorder-label\").length\r\n                                ? $(productForm).append('<input type=\"hidden\" id=\"preorder-label\" name=\"properties[' + cartKey + ']\" value=\"' + cartValue + '\" />')\r\n                                : $(productForm).find(\"#preorder-label\").val(cartValue);\r\n                        }\r\n                    }\r\n                    // if (window.ta.settings[config.settingsTemplate]?.cart) {\r\n                    //     let cartValue = window.ta.settings[config.settingsTemplate]?.cart.labelText.value || defaultSettings.cart?.labelText.value;\r\n                    //     let cartKey = window.ta.settings[config.settingsTemplate]?.cart.labelText.key || defaultSettings.cart?.labelText.key;\r\n\r\n                    //     cartKey = message.populateDynamicValues(variant, cartKey, /*isCartLabel=*/true, /*configType=*/configType)\r\n                    //     cartValue = message.populateDynamicValues(variant, cartValue,  /*isCartLabel=*/true, /*configType=*/configType)\r\n\r\n                    //     0 === $(productForm).find(\"#preorder-label\").length\r\n                    //         ? $(productForm).append('<input type=\"hidden\" id=\"preorder-label\" name=\"properties[' + cartKey + ']\" value=\"' + cartValue + '\" />')\r\n                    //         : $(productForm).find(\"#preorder-label\").val(cartValue);\r\n                    // }\r\n                }\r\n            }\r\n\r\n            addBadge(selector, settings, settingType) {\r\n                // PageFly Integration.\r\n                if ($(selector).find('[data-pf-type=\"ProductMedia\"], [data-pf-type=\"ProductMedia2\"]').length > 0) {\r\n                    selector = $(selector).find('[data-pf-type=\"ProductMedia\"], [data-pf-type=\"ProductMedia2\"]')\r\n                }\r\n\r\n                const isGemPage = $(selector).attr('gp-context')\r\n                if (isGemPage) {\r\n                    selector = $(selector).find('gp-product-images-v2')\r\n                }\r\n\r\n                // add position relative to product item if not absolute\r\n                if ($(selector).css(\"position\") !== \"absolute\") {\r\n                    $(selector).css({\r\n                        \"position\": \"relative\"\r\n                    });\r\n                }\r\n\r\n                const badge = new Badge();\r\n                badge.add(selector, settings.type, settings.value, settingType);\r\n                badge.applyStyles(settings, settingType);\r\n            }\r\n        }\r\n\r\n        $(document).ready(async function () {\r\n            const api = new Api()\r\n            const utils = new ShopUtil()\r\n\r\n            TimesactBisModal.createListeners()\r\n\r\n            // Initialize app.\r\n            utils.initTimesact()\r\n\r\n            if (!utils.isProductPage() && !utils.isCollectionPage() && !utils.isSearchPage()\r\n                && !utils.isPagesPage() && !utils.isHomePage() && !utils.isCartPage()) {\r\n                return\r\n            }\r\n\r\n            const shop = await api.getShop()\r\n\r\n            // Get the new settings if they have been updated on the backend side.\r\n            if (!window.ta.settings || (shop.lastSettingsUpdate && window.ta.lastSettingsUpdate < shop.lastSettingsUpdate)) {\r\n                const { settings } = await api.getSettings()\r\n\r\n                window.ta.settings = settings\r\n                window.ta.lastSettingsUpdate = shop.lastSettingsUpdate || parseInt(new Date().getTime() / 1000);\r\n                localStorage.setItem(\"settings\", JSON.stringify(window.ta.settings))\r\n                localStorage.setItem(\"lastSettingsUpdate\", JSON.stringify(window.ta.lastSettingsUpdate))\r\n            }\r\n\r\n            if (utils.isProductPage()) {\r\n                let product = {}\r\n\r\n                $.getJSON(window.location.href.split('?')[0].concat('.js'), function (data) {\r\n                    product = new Product(data.id, data.variants, data.title, data.selling_plan_groups)\r\n                }).done(function () {\r\n                    new ScriptRunner(shop, product).run(/*isQuickView=*/false)\r\n                }).fail(function () {\r\n                    console.log(\"[Error 1001]: Product could not be fetched.\")\r\n                });\r\n            }\r\n\r\n            if (utils.isCollectionPage() || utils.isHomePage() || utils.isSearchPage() || utils.isPagesPage()) {\r\n                utils.initQuickView(shop);\r\n                new ScriptRunner(shop).runCollection();\r\n                // new ScriptRunner(shop).runHomepage();\r\n            }\r\n\r\n            // mixing alert popup \r\n            // cart alert popup\r\n            function callRunningMixedCartAlert(timeout = 0, isNeedCartAlert = false) {\r\n                const closedTmpsIds = JSON.parse(window.sessionStorage.getItem(\"closedModals\") || null) || []\r\n                const t = shop.settings.templates.PO\r\n                if (closedTmpsIds.includes(t)) return\r\n\r\n                setTimeout(() => {\r\n                    $.getJSON(window.location.origin + \"/cart\", function (data) {\r\n                        isNeedCartAlert && new ScriptRunner(shop).runCartAlert(data);\r\n                        new ScriptRunner(shop).runMixedCartAlert(data);\r\n                    }).fail(function () {\r\n                        console.log(\"[Error 1001]: Product could not be fetched.\");\r\n                    });\r\n                }, timeout);\r\n            }\r\n\r\n            // add click handlers and /cart page handler\r\n            let submitBtn = $(shop.selectors.form).find(shop.selectors.addToCartButton)\r\n            if (submitBtn.prop(\"tagName\") !== \"button\") submitBtn = submitBtn.parent()\r\n            submitBtn.click(() => callRunningMixedCartAlert(2000))\r\n            $('a[href=\"/cart\"]').click(() => callRunningMixedCartAlert(500))\r\n            if (utils.isCartPage()) {\r\n                callRunningMixedCartAlert(0, true)\r\n            }\r\n        });\r\n    };\r\n\r\n    /* If jQuery has not yet been loaded or if it has but it's too old for our needs,\r\n    we will load jQuery from the Google CDN, and when it's fully loaded, we will run\r\n    our app's JavaScript. */\r\n    if ((typeof jQuery === 'undefined') || (parseFloat(jQuery.fn.jquery) < 100.0)) {\r\n        loadScript('https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js', function () {\r\n            jQuery191 = jQuery.noConflict(true);\r\n            timesactScriptNew(jQuery191);\r\n        });\r\n    } else {\r\n        timesactScriptNew(jQuery);\r\n    }\r\n\r\n})()"],
  "mappings": "CAGC,UAAY,CACT,MAAM,WAAa,SAAU,IAAK,SAAU,CACxC,MAAM,OAAS,SAAS,cAAc,QAAQ,EAE9C,OAAO,KAAO,kBAGV,OAAO,WACP,OAAO,mBAAqB,UAAY,EAChC,OAAO,aAAe,UAAY,OAAO,aAAe,cACxD,OAAO,mBAAqB,KAC5B,SAAS,EAEjB,EAGA,OAAO,OAAS,UAAY,CACxB,SAAS,CACb,EAEJ,OAAO,IAAM,IACb,SAAS,qBAAqB,MAAM,EAAE,CAAC,EAAE,YAAY,MAAM,CAC/D,EAGA,kBAAoB,eAAgB,EAAG,CACnC,MAAM,MAAQ,SAAS,cAAc,OAAO,EAC5C,MAAM,GAAK,cACX,MAAM,UAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,4BAmZlB,SAAS,qB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",
  "names": ["style", "sellingPlan", "products"]
}
