From 521abd94cde18ea4fe7c412b6105deb95baf4072 Mon Sep 17 00:00:00 2001 From: Arvid Norlin Date: Tue, 16 Apr 2024 14:27:40 +0200 Subject: [PATCH] fix: adjust vwo script to listen to consent changes --- public/_static/dist/js/vwo.js | 486 ++++++++++++++-------------------- 1 file changed, 195 insertions(+), 291 deletions(-) diff --git a/public/_static/dist/js/vwo.js b/public/_static/dist/js/vwo.js index 910507143..d41781200 100644 --- a/public/_static/dist/js/vwo.js +++ b/public/_static/dist/js/vwo.js @@ -1,302 +1,206 @@ //DO NOT make any changes to smart code except for entering your account id window._vwo_code || -(function () { - var account_id = 373511, - version = 2.0, - settings_tolerance = 2000, - hide_element = "body", - hide_element_style = - "opacity:0 !important;filter:alpha(opacity=0) !important;background:none !important", - /* DO NOT EDIT BELOW THIS LINE */ - f = false, - w = window, - d = document, - v = d.querySelector("#vwoCode"), - cK = "_vwo_" + account_id + "_settings", - cc = {}; - try { - var c = JSON.parse( - localStorage.getItem("_vwo_" + account_id + "_config") - ); - cc = c && typeof c === "object" ? c : {}; - } catch (e) {} - var stT = cc.stT === "session" ? w.sessionStorage : w.localStorage; - code = { - use_existing_jquery: function () { - return typeof use_existing_jquery !== "undefined" - ? use_existing_jquery - : undefined; - }, - library_tolerance: function () { - return typeof library_tolerance !== "undefined" - ? library_tolerance - : undefined; - }, - settings_tolerance: function () { - return cc.sT || settings_tolerance; - }, - hide_element_style: function () { - return "{" + (cc.hES || hide_element_style) + "}"; - }, - hide_element: function () { - return typeof cc.hE === "string" ? cc.hE : hide_element; - }, - getVersion: function () { - return version; - }, - finish: function () { - if (!f) { - f = true; - var a = d.getElementById("_vis_opt_path_hides"); - if (a) a.parentNode.removeChild(a); - } - }, - finished: function () { - return f; - }, - load: function (a) { - var s = this.getSettings(), - b = d.createElement("script"), - t = this; - if (s) { - b.textContent = s; - d.getElementsByTagName("head")[0].appendChild(b); - if (!w.VWO || VWO.caE) { - stT.removeItem(cK); - t.load(a); - } - } else { - b.fetchPriority = "high"; - b.src = a; - b.type = "text/javascript"; - b.onerror = function () { - window._vwo_code.finish(); - }; - d.getElementsByTagName("head")[0].appendChild(b); - } - }, - getSettings: function () { - try { - var i = stT.getItem(cK); - if (!i) { - return; - } - i = JSON.parse(i); - if (Date.now() > i.e) { - stT.removeItem(cK); - return; - } - return i.s; - } catch (e) { - return; - } - }, - - init: function () { - if (d.URL.indexOf("__vwo_disable__") > -1) return; - var sT = this.settings_tolerance(); - w._vwo_settings_timer = setTimeout(function () { - window._vwo_code.finish(); - stT.removeItem(cK); - window._vwo_code.removeLoaderAndOverlay(); - }, sT); - var filterConfig = this.filterConfig; - if (!filterConfig || filterConfig.filterTime === "balanced") { - var cS = d.currentScript, - a = d.createElement("style"), - hE = this.hide_element(), - b = - cS && !cS.async && hE - ? hE + "{" + this.hide_element_style() + "}" - : "", - h = d.getElementsByTagName("head")[0]; - a.setAttribute("id", "_vis_opt_path_hides"); - v && a.setAttribute("nonce", v.nonce); - a.setAttribute("type", "text/css"); - if (a.styleSheet) a.styleSheet.cssText = b; - else a.appendChild(d.createTextNode(b)); - h.appendChild(a); - } - if (filterConfig && filterConfig.filterTime === "early") { - this.removeLoaderAndOverlay(); - } - this.load( - "https://dev.visualwebsiteoptimizer.com/j.php?a=" + - account_id + - "&u=" + - encodeURIComponent(d.URL) + - "&vn=" + - version + (function () { + var account_id = 373511, + version = 2.0, + settings_tolerance = 2000, + hide_element = "body", + hide_element_style = + "opacity:0 !important;filter:alpha(opacity=0) !important;background:none !important", + /* DO NOT EDIT BELOW THIS LINE */ + f = false, + w = window, + d = document, + v = d.querySelector("#vwoCode"), + cK = "_vwo_" + account_id + "_settings", + cc = {}; + try { + var c = JSON.parse( + localStorage.getItem("_vwo_" + account_id + "_config") ); - }, - setFilterConfigAndApplyFilter: function (config) { - if (!config) { - // No config will lead to early return and no addition of smart code - return; - } - var state = this.isNonLiveMode(account_id) || config.isConsentGiven(); - if (state === "1") { - // if cookie consent was already given and the cookies were already accepted, execute out normal flow - hide_element = "body"; - w._vwo_settings_timer = window._vwo_code.init(); - return; - } else if (state === "2") { - return; - } - - if (!config.filterTolerance) { - // Execute removal logic immediately when filterTolerance is 0 or empty - return; - } - - function clearIntervals(timerIds) { - for (var i = 0; i < timerIds.length; i++) { - clearInterval(timerIds[i]); + cc = c && typeof c === "object" ? c : {}; + } catch (e) {} + var stT = cc.stT === "session" ? w.sessionStorage : w.localStorage; + code = { + use_existing_jquery: function () { + return typeof use_existing_jquery !== "undefined" + ? use_existing_jquery + : undefined; + }, + library_tolerance: function () { + return typeof library_tolerance !== "undefined" + ? library_tolerance + : undefined; + }, + settings_tolerance: function () { + return cc.sT || settings_tolerance; + }, + hide_element_style: function () { + return "{" + (cc.hES || hide_element_style) + "}"; + }, + hide_element: function () { + return typeof cc.hE === "string" ? cc.hE : hide_element; + }, + getVersion: function () { + return version; + }, + finish: function () { + if (!f) { + f = true; + var a = d.getElementById("_vis_opt_path_hides"); + if (a) a.parentNode.removeChild(a); } - } - this.filterConfig = config; - var popupTimer = setInterval(function () { - if (window._vwo_code.applyFilters(config)) { - clearInterval(popupTimer); - } - }, 100); - var timer = setInterval(function () { - var state = config.isConsentGiven(); - var shouldClearAllIntervals; - if (state === "1") { - window._vwo_code.showLoader(); - w._vwo_settings_timer = window._vwo_code.init(); - shouldClearAllIntervals = true; - } else if (state === "2") { - window._vwo_code.filterConfig = undefined; - window._vwo_code.removeLoaderAndOverlay(); - shouldClearAllIntervals = true; - } - if (shouldClearAllIntervals) { - clearIntervals([timer, popupTimer]); - clearInterval(filterToleranceTimer); - } - }, 100); - var filterToleranceTimer; - - // RECOMMENDED: When using Best Approach - filterToleranceTimer = setTimeout(function () { - window._vwo_code.removeLoaderAndOverlay(); - clearIntervals([timer, popupTimer]); - }, config.filterTolerance); - }, - showLoader: function () { - var vwoOverlay = d.getElementsByClassName("vwo-overlay")[0]; - if (!vwoOverlay) return; - var vwoContentLoader = d.createElement("div"); - vwoContentLoader.classList.add("vwo-content-loader"); - vwoOverlay.parentNode.insertBefore( - vwoContentLoader, - vwoOverlay.nextSibling - ); - }, - applyFilters: function (config) { - var popup = d.querySelector(config.popupSelector); - var popupZIndex; - if (!popup && d.getElementById("_vis_opt_overlay")) { - return; - } - var maxZIndex = 2147483647; - if (popup) { - var popupStyle = w.getComputedStyle(popup); - popupZIndex = popupStyle.getPropertyValue("z-index"); - if (!popupZIndex || popupZIndex === "auto") { - popupZIndex = maxZIndex; - } - popup.style.zIndex = popupZIndex; - } - popupZIndex = popupZIndex || maxZIndex; - // You can change the styling to suit your requirements - // This is the default CSS filters VWO provides - // NOTE: do not change any class names IMPORTANT ... - var vwoFilter = - "position: fixed; top: 0; left: 0; right: 0; bottom: 0; height: 100%; width: 100%; -webkit-filter: blur(5px); filter: blur(5px); backdrop-filter: saturate(180%) blur(3px); -webkit-backdrop-filter: saturate(180%) blur(3px); z-index:" + - (popupZIndex - 1) + - ";", - vwoLoaderCss = - " .vwo-content-loader{ border: 16px solid #f3f3f3; border-top: 16px solid #3498db; border-radius: 50%; width: 90px; height: 90px; position: fixed; top: 50%; left: 50%; -webkit-transform: translate(-50%, -50%); -ms-transform: translate(-50%, -50%); transform: translate(-50%, -50%); animation: vwo-spin 2s linear infinite; z-index:" + - (popupZIndex - 1) + - "; }" + - "@keyframes vwo-spin { 0% { -webkit-transform: translate(-50%, -50%) rotate(0deg); transform: translate(-50%, -50%) rotate(0deg); } 100% { -webkit-transform: translate(-50%, -50%) rotate(360deg); transform: translate(-50%, -50%) rotate(360deg); } }"; - /** - * This below written code should not be tweaked - * */ - var overlayStyleTag = d.getElementById("_vis_opt_overlay"), - overlayCSS = ".vwo-overlay{" + vwoFilter + "}" + vwoLoaderCss; - if (overlayStyleTag) { - if (overlayStyleTag.styleSheet) { - overlayStyleTag.styleSheet.cssText = overlayCSS; + }, + finished: function () { + return f; + }, + load: function (a) { + var s = this.getSettings(), + b = d.createElement("script"), + t = this; + if (s) { + b.textContent = s; + d.getElementsByTagName("head")[0].appendChild(b); + if (!w.VWO || VWO.caE) { + stT.removeItem(cK); + t.load(a); + } } else { - var _vwo_textNode = d.createTextNode(overlayCSS); - overlayStyleTag.appendChild(_vwo_textNode); - overlayStyleTag.removeChild(overlayStyleTag.childNodes[0]); + b.fetchPriority = "high"; + b.src = a; + b.type = "text/javascript"; + b.onerror = function () { + window._vwo_code.finish(); + }; + d.getElementsByTagName("head")[0].appendChild(b); } - } else { - var a = d.createElement("style"), - h = d.getElementsByTagName("head")[0], - body = d.getElementsByTagName("body")[0]; - var vwoOverlay = d.createElement("div"); - vwoOverlay.classList.add("vwo-overlay"); - body.prepend(vwoOverlay); - // CAUTION Do not remove this id from your style tag. It is required by VWO - a.setAttribute("id", "_vis_opt_overlay"); - a.setAttribute("type", "text/css"); - if (a.styleSheet) a.styleSheet.cssText = overlayCSS; - else a.appendChild(d.createTextNode(overlayCSS)); - h.appendChild(a); - } - return !!popup; - }, - removeLoaderAndOverlay: function () { - var overlay = d.getElementsByClassName("vwo-overlay"); - var loader = d.getElementsByClassName("vwo-content-loader"); - var overlayStyleTag = d.getElementById("_vis_opt_overlay"); - overlay && - (overlay = overlay[0]) && - overlay.parentElement.removeChild(overlay); - loader && - (loader = loader[0]) && - loader.parentElement.removeChild(loader); - overlayStyleTag && - overlayStyleTag.parentElement.removeChild(overlayStyleTag); - }, - isNonLiveMode: function (accountId) { - var wName = w.name; - if (!wName) { - return; - } - return ( - (wName.indexOf("_vis_editor") > -1 || - wName.indexOf("_vis_preview_" + accountId) > -1 || - wName.indexOf("_vis_heatmap_" + accountId) > -1) && - "1" - ); - }, - }; - w._vwo_code = code; -})(); + }, + getSettings: function () { + try { + var i = stT.getItem(cK); + if (!i) { + return; + } + i = JSON.parse(i); + if (Date.now() > i.e) { + stT.removeItem(cK); + return; + } + return i.s; + } catch (e) { + return; + } + }, + + init: function () { + if (d.URL.indexOf("__vwo_disable__") > -1) return; + var sT = this.settings_tolerance(); + w._vwo_settings_timer = setTimeout(function () { + window._vwo_code.finish(); + stT.removeItem(cK); + }, sT); + var filterConfig = this.filterConfig; + if (!filterConfig || filterConfig.filterTime === "balanced") { + var cS = d.currentScript, + a = d.createElement("style"), + hE = this.hide_element(), + b = + cS && !cS.async && hE + ? hE + "{" + this.hide_element_style() + "}" + : "", + h = d.getElementsByTagName("head")[0]; + a.setAttribute("id", "_vis_opt_path_hides"); + v && a.setAttribute("nonce", v.nonce); + a.setAttribute("type", "text/css"); + if (a.styleSheet) a.styleSheet.cssText = b; + else a.appendChild(d.createTextNode(b)); + h.appendChild(a); + } + this.load( + "https://dev.visualwebsiteoptimizer.com/j.php?a=" + + account_id + + "&u=" + + encodeURIComponent(d.URL) + + "&vn=" + + version + ); + }, + setFilterConfigAndApplyFilter: function (config) { + if (!config) { + // No config will lead to early return and no addition of smart code + return; + } + var state = this.isNonLiveMode(account_id) || config.isConsentGiven(); + if (state === "1") { + // if cookie consent was already given and the cookies were already accepted, execute out normal flow + hide_element = "body"; + w._vwo_settings_timer = window._vwo_code.init(); + return; + } else if (state === "2") { + return; + } + + this.filterConfig = config; + + var timer = setInterval(function () { + var state = config.isConsentGiven(); + var shouldClearInterval; + if (state === "1") { + w._vwo_settings_timer = window._vwo_code.init(); + shouldClearInterval = true; + } else if (state === "2") { + window._vwo_code.filterConfig = undefined; + shouldClearInterval = true; + } + if (shouldClearInterval) { + clearInterval(timer); + } + }, 100); + }, + isNonLiveMode: function (accountId) { + var wName = w.name; + if (!wName) { + return; + } + return ( + (wName.indexOf("_vis_editor") > -1 || + wName.indexOf("_vis_preview_" + accountId) > -1 || + wName.indexOf("_vis_heatmap_" + accountId) > -1) && + "1" + ); + }, + }; + w._vwo_code = code; + })(); window._vwo_code.setFilterConfigAndApplyFilter({ -popupSelector: "#CybotCookiebotDialog", -filterTime: "balanced", -isConsentGiven: function () { - /** your custom Code */ - if (document.cookie.indexOf("CookieConsent") != -1) { - var ccValue = decodeURIComponent(document.cookie.replace(new RegExp("(?:(?:^|.*;)\\s*" + encodeURIComponent("CookieConsent").replace(/[\-\.\+\*]/g, "\\$&") + "\\s*\\=\\s*([^;]*).*$)|^.*$"), "$1")) || null; - let consentValue = "2"; - if (ccValue) { - ccValue = ccValue.substring(ccValue.indexOf(",statistics")+12); + popupSelector: "#CybotCookiebotDialog", + filterTime: "balanced", + isConsentGiven: function () { + /** your custom Code */ + if (document.cookie.indexOf("CookieConsent") != -1) { + var ccValue = + decodeURIComponent( + document.cookie.replace( + new RegExp( + "(?:(?:^|.*;)\\s*" + + encodeURIComponent("CookieConsent").replace( + /[\-\.\+\*]/g, + "\\$&" + ) + + "\\s*\\=\\s*([^;]*).*$)|^.*$" + ), + "$1" + ) + ) || null; + let consentValue = "2"; + if (ccValue) { + ccValue = ccValue.substring(ccValue.indexOf(",statistics") + 12); ccValue = ccValue.substring(0, ccValue.indexOf(",")); consentValue = ccValue === "true" ? "1" : "2"; + } + return consentValue; + } else { + return "3"; } - return consentValue; -} else { - return "3"; -} -}, -filterTolerance: 0, + }, });