{"version":3,"sources":["cookie-consent.min.js"],"sourcesContent":["(() => {\n // init namespaces\n window.AWE ??= {};\n AWE.component ??= {};\n\n const NATIVE_COOKIE_SYMBOL = Symbol(\"Cookie\");\n const ONE_YEAR_IN_MS = 1000 * 60 * 60 * 24 * 365;\n const ACTIVE_COOKIE_CONSENT_BODY_CLASSNAME = \"active-cookie-consent\";\n const ALWAYS_ENABLED_COOKIE_CATEGORY = \"essential\";\n\n const {\n categoryTitles,\n cookieCategories,\n cookieDomain,\n cookieName: consentCookieName,\n configUrl,\n isCookiePolicyPage,\n reportUrl,\n whitelistRegExp,\n } = window.config.cookieConsent;\n\n // the max cookie size in bytes for a name=value in this case for the consent cookie, 1 is removed for \"=\"\n const maxCookieSize = 4096 - consentCookieName.length - 1;\n\n // since there is no module import functionality available here yet: https://stackoverflow.com/a/2117523\n const uuidv4 = () =>\n ([1e7] + -1e3 + -4e3 + -8e3 + -1e11).replace(/[018]/g, (c) =>\n (\n c ^\n (crypto.getRandomValues(new Uint8Array(1))[0] & (15 >> (c / 4)))\n ).toString(16)\n );\n\n const getCookieValue = (cookieName) => {\n return document.cookie\n .split(\";\")\n .map((cookie) => {\n const [name, value] = cookie.split(\"=\");\n\n return { name: name.trim(), value };\n })\n .find(({ name }) => name === cookieName)?.value;\n };\n\n const getCookieNames = (cookies = document.cookie) => {\n return cookies.split(\";\").map((cookie) => {\n const [name] = cookie.split(\"=\");\n\n return name.trim();\n });\n };\n\n const getExpirationText = (seconds) => {\n if (seconds === null) {\n return \"Session\";\n }\n\n const minutes = Math.round(seconds / 60);\n const hours = Math.round(minutes / 60);\n const days = Math.round(hours / 24);\n const years = Math.round(days / 365);\n\n if (years > 0) {\n return years > 1 ? `${years} years` : `${years} year`;\n }\n if (days > 0) {\n return days > 1 ? `${days} days` : `${days} day`;\n }\n if (hours > 0) {\n return hours > 1 ? `${hours} hours` : `${hours} hour`;\n }\n if (minutes > 0) {\n return minutes > 1 ? `${minutes} minutes` : `${minutes} minute`;\n }\n\n if (seconds > 0) {\n return seconds > 1 ? `${seconds} seconds` : `${seconds} second`;\n }\n\n return \"\";\n };\n\n const postRequest = (data = {}) =>\n fetch(reportUrl, {\n body: JSON.stringify(data),\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n });\n\n const reportConsents = (\n { cookieApprovals, consentBanner, id, url },\n consentConfigurationId,\n approvedCategories\n ) =>\n postRequest({\n id,\n ip: \"127.0.0.1\",\n url,\n consentBanner,\n cookieApprovals,\n approvedCategories,\n consentConfigurationId,\n });\n\n /**\n * Functionality:\n *\n * - cookies are waiting to be filtered until config is loaded (if it fails to load they are not filtered)\n * - if there is a consent cookie set and config is different it will be saved/set again based on the new config\n * - overlay will be opened if there is no consent cookie set (or user manually opens them via cookie-policy page)\n * - cookie tied scripts will be running based on cookie after load or based on user selection from overlay\n */\n class CookieConsentService {\n constructor() {\n this.overrideCookiePrototype();\n this.fetchConsentConfig().then((config) => {\n if (config) {\n this.checkConfigAndConsentDiff();\n this.runScriptTags(this.getConsentedCategories());\n\n // fetch could finish before/after document is loaded\n if (document.readyState === \"complete\") {\n this.setupOverlays();\n } else {\n window.addEventListener(\"load\", () => this.setupOverlays());\n }\n }\n });\n }\n\n fetchConsentConfig() {\n if (this.consentFetch) {\n return this.consentFetch;\n }\n\n this.consentFetch = window\n .fetch(configUrl)\n .then((r) => r.json())\n .then((json) => {\n this.config = json;\n\n return this.config;\n })\n .catch(() => {\n // if cookie consent fails to load we will get notified, cookies will be let-through without a config\n window.Sentry?.captureException(\n \"Cookie consent config could not be loaded\"\n );\n });\n\n return this.consentFetch;\n }\n\n /**\n * Creates a proxy-like override on the native cookie get/set to enable filtering of cookies being set\n */\n overrideCookiePrototype() {\n const service = this;\n\n Object.defineProperty(\n Document.prototype,\n NATIVE_COOKIE_SYMBOL,\n Object.getOwnPropertyDescriptor(Document.prototype, \"cookie\")\n );\n\n Object.defineProperty(Document.prototype, \"cookie\", {\n enumerable: true,\n configurable: true,\n\n get() {\n return this[NATIVE_COOKIE_SYMBOL];\n },\n\n set(cookie) {\n const cookieName = getCookieNames(cookie)[0];\n\n service.isCookieAllowed(cookieName).then((isAllowed) => {\n if (isAllowed) {\n // Note: setting the cookie does not override the entire cookie string, it concatenates the value\n this[NATIVE_COOKIE_SYMBOL] = cookie;\n }\n });\n },\n });\n }\n\n async showOverlayIfNeeded() {\n await this.fetchConsentConfig();\n\n if (this.config && !this.getConsentValue() && !isCookiePolicyPage) {\n this.openConsentOverlay();\n }\n }\n\n setupOverlays() {\n this.setupSimpleConsentOverlay();\n this.setupManageConsentOverlay();\n }\n\n setupSimpleConsentOverlay() {\n const acceptAllButtons = document.querySelectorAll(\n \".cookie-consent button[data-type='accept-all']\"\n );\n const rejectAllButtons = document.querySelectorAll(\n \".cookie-consent button[data-type='reject-all']\"\n );\n const manageButton = document.querySelector(\n \".cookie-consent-manage-link\"\n );\n\n const acceptAllCookies = () => {\n this.saveConsent(cookieCategories);\n this.closeConsentOverlay();\n };\n\n const rejectAllCookies = () => {\n this.saveConsent([ALWAYS_ENABLED_COOKIE_CATEGORY]);\n this.closeConsentOverlay();\n };\n\n const onManageButtonClick = (event) => {\n event.preventDefault();\n this.openManageConsentOverlay();\n };\n\n // these handlers will be garbage collected on element removal\n acceptAllButtons.forEach((button) =>\n button.addEventListener(\"click\", acceptAllCookies)\n );\n rejectAllButtons.forEach((button) =>\n button.addEventListener(\"click\", rejectAllCookies)\n );\n\n if (manageButton) {\n manageButton.addEventListener(\"click\", onManageButtonClick);\n }\n\n this.showOverlayIfNeeded();\n }\n\n setManageConsentCheckboxes() {\n const { defaultCheckedCookieCategories } = this.config;\n const dataCookieCheckboxAttribute = \"data-cookie\";\n\n const checkboxElements = document.querySelectorAll(\n `[${dataCookieCheckboxAttribute}]`\n );\n\n const activeCategories = Array.from(\n new Set([\n ...defaultCheckedCookieCategories,\n ...this.getConsentedCategories(),\n ])\n );\n\n checkboxElements.forEach((element) => {\n const cookieCategory = element.getAttribute(\n dataCookieCheckboxAttribute\n );\n\n element.checked = activeCategories.includes(cookieCategory);\n });\n }\n\n setupManageConsentOverlay() {\n const form = document.querySelector(\".privacy-center-form\");\n\n const handleFormSubmit = (ev) => {\n ev.preventDefault();\n\n const nodeList = [].slice.call(\n ev.target.querySelectorAll(\"[data-cookie]\")\n );\n\n const consentedCategories = nodeList\n .map(function (input) {\n return input.checked && input.name;\n })\n .filter(function (input) {\n return !!input;\n })\n // add essential cookies (should be always set for user)\n .concat(ALWAYS_ENABLED_COOKIE_CATEGORY);\n\n this.saveConsent(consentedCategories);\n this.closeConsentOverlay();\n };\n\n form.addEventListener(\"submit\", handleFormSubmit);\n }\n\n getConsentOverlay() {\n return document.querySelector(\".cookie-consent\");\n }\n\n openConsentOverlay() {\n const overlay = this.getConsentOverlay();\n\n if (overlay) {\n this.setOpenOverlayState(overlay);\n }\n }\n\n openManageConsentOverlay() {\n const overlay = this.getConsentOverlay();\n\n if (overlay) {\n this.setManageConsentCheckboxes();\n\n overlay.setAttribute(\"data-step\", \"privacy-center\");\n this.setOpenOverlayState(overlay);\n }\n }\n\n setOpenOverlayState(overlay) {\n overlay.removeAttribute(\"disabled\");\n document.body.classList.add(ACTIVE_COOKIE_CONSENT_BODY_CLASSNAME);\n }\n\n closeConsentOverlay() {\n const overlay = this.getConsentOverlay();\n\n if (overlay) {\n overlay.setAttribute(\"disabled\", \"true\");\n }\n\n document.body.classList.remove(ACTIVE_COOKIE_CONSENT_BODY_CLASSNAME);\n }\n\n async isCookieAllowed(cookieName) {\n await this.fetchConsentConfig();\n\n // config is missing when there is an error either on json file part or processing the config\n if (!this.config || whitelistRegExp.test(cookieName)) {\n return true;\n }\n\n const consentValueInCookie = this.getConsentValue();\n const debugCookies = this.getDebugCookies();\n\n if (consentValueInCookie) {\n const isCookieAllowed =\n consentValueInCookie.cookieApprovals?.[cookieName] ||\n debugCookies.includes(cookieName);\n\n if (cookieName !== consentCookieName && !isCookieAllowed) {\n return false;\n }\n }\n\n return true;\n }\n\n /**\n * Returns the cookie category e.g. \"analytical\"\n *\n * @param {string} name\n * @return {string|undefined}\n */\n getCookieCategory(name) {\n return this.config.cookies.filter((cookie) => cookie.name === name)?.[0]\n ?.category;\n }\n\n getConsentValue() {\n const consentValueInCookie = getCookieValue(\"auth_consent_given\");\n\n if (!consentValueInCookie) {\n return null;\n }\n try {\n return JSON.parse(decodeURIComponent(consentValueInCookie));\n } catch (error) {\n console.error(error);\n return null;\n }\n }\n\n /**\n * Returns and stores (for later reuse) the feature flag and debug related cookies, e.g. [\"minionStatus\"]\n * @return {[]}\n */\n getDebugCookies() {\n if (this.config && !this._debugCookies) {\n this._debugCookies = [];\n\n this.config.cookies.forEach((cookieConfig) => {\n if (!cookieConfig.isVisible) {\n this._debugCookies.push(cookieConfig.name);\n }\n });\n }\n\n return this._debugCookies;\n }\n\n getKnownCookiesWithCategories() {\n return this.config.cookies.reduce((acc, cookie) => {\n // eslint-disable-next-line no-param-reassign\n if (cookie.category.length > 0) {\n acc[cookie.name] = cookie;\n }\n return acc;\n }, {});\n }\n\n /**\n * Returns the consented categories based on what the user already consented to\n * e.g.\n * if they consented to awe_session => [\"essential\"]\n * if they consented to both awe_session and _ga => [\"analytical\", \"essential\"]\n *\n * @return string[]\n */\n getConsentedCategories() {\n const consentValueInCookie = this.getConsentValue();\n let consentedCategories = [];\n\n if (consentValueInCookie) {\n const { cookieApprovals } = consentValueInCookie;\n\n Object.keys(cookieApprovals).forEach((cookie) => {\n const category = this.getCookieCategory(cookie);\n\n if (\n category &&\n !consentedCategories.includes(category) &&\n cookieApprovals[cookie]\n ) {\n consentedCategories.push(category);\n }\n });\n }\n\n return consentedCategories;\n }\n\n /**\n * Saves the consent and the related cookie if there is a difference in the cookie and the (json) config\n */\n checkConfigAndConsentDiff() {\n const consentValue = this.getConsentValue();\n const debugCookies = this.getDebugCookies();\n\n if (consentValue) {\n const cookieNamesFromConfig = Object.keys(\n this.getKnownCookiesWithCategories()\n );\n const cookieNamesFromValue = Object.keys(consentValue.cookieApprovals);\n\n const difference = cookieNamesFromConfig\n // if cookie name from config is not in consent and is not a debug cookie\n .filter(\n (x) =>\n !cookieNamesFromValue.includes(x) && !debugCookies.includes(x)\n )\n // if cookie name in consent value is not in config\n .concat(\n cookieNamesFromValue.filter(\n (x) => !cookieNamesFromConfig.includes(x)\n )\n );\n\n // new cookie(s) found\n if (difference.length > 0) {\n this.saveConsent(this.getConsentedCategories());\n }\n }\n }\n\n generateCookieConsentValue() {\n const consentValueId = uuidv4();\n const { consentBanner, cookies, defaultCheckedCookieCategories } =\n this.config;\n const createdAt = new Date().toISOString();\n const cookieApprovals = {};\n\n cookies.forEach(({ category, name, isVisible }) => {\n if (category && isVisible) {\n cookieApprovals[name] =\n defaultCheckedCookieCategories.includes(category);\n }\n });\n\n return {\n id: consentValueId,\n createdAt,\n consentBanner,\n cookieApprovals,\n url: window.location.origin,\n };\n }\n\n /**\n * Saves consent via report endpoint and to consent cookie (if it fits cookie size restriction)\n *\n * @param {string[]} consentedCategories e.g. [\"analytical\", \"essential\"]\n * @return {Promise}\n */\n async saveConsent(consentedCategories) {\n const cookieValue = this.generateCookieConsentValue();\n const approvedCategories = [];\n\n Object.keys(cookieValue.cookieApprovals).forEach((cookie) => {\n const category = this.getCookieCategory(cookie);\n const isApproved = consentedCategories.includes(category);\n\n cookieValue.cookieApprovals[cookie] = isApproved;\n\n if (isApproved && !approvedCategories.includes(category)) {\n approvedCategories.push(category);\n }\n });\n\n try {\n await reportConsents(cookieValue, this.config.id, approvedCategories);\n } catch (error) {\n // TODO: Q for report endpoint implementation should we try again here on 409?\n window.Sentry?.captureException(error, \"Consent saving failed\");\n }\n\n const stringValue = encodeURIComponent(JSON.stringify(cookieValue));\n const cookieExpirationDate = new Date(\n Date.now() + ONE_YEAR_IN_MS\n ).toGMTString();\n\n if (this.isCookieSizeAllowed(stringValue)) {\n document.cookie = `${consentCookieName}=${stringValue}; expires=${cookieExpirationDate}; domain=${cookieDomain}; path=/`;\n\n this.runScriptTags(approvedCategories);\n\n if (this.dataCallback) {\n const stateText = await this.getConsentStateText(approvedCategories);\n\n this.dataCallback(stateText, cookieValue);\n }\n }\n }\n\n /**\n * Returns whether the encoded cookie string fits in cookie size restrictions or not\n *\n * @param {string} cookieString\n * @return {boolean}\n */\n isCookieSizeAllowed(cookieString) {\n const encodedString = encodeURIComponent(String(cookieString)).replace(\n /%(23|24|26|2B|3A|3C|3E|3D|2F|3F|40|5B|5D|5E|60|7B|7D|7C)/g,\n decodeURIComponent\n );\n const sizeInBytes = new Blob([encodedString]).size;\n\n if (sizeInBytes >= maxCookieSize) {\n window.Sentry?.captureException(\n `Storable cookie size is too big, config id: ${this.config.id} storable size: ${sizeInBytes}`\n );\n\n return false;\n }\n\n return true;\n }\n\n runScriptTags(approvedCategories) {\n const dataCookieAttribute = \"data-cookie-category\";\n const scriptElements = document.querySelectorAll(\n `[${dataCookieAttribute}]`\n );\n\n const cloneScriptElement = (originalElement) => {\n const cloneElement = document.createElement(\"script\");\n cloneElement.type = \"text/javascript\";\n cloneElement.innerHTML = originalElement.innerHTML;\n return cloneElement;\n };\n\n const isConsentGivenForCategory = (element) => {\n const category = element.getAttribute(dataCookieAttribute);\n return approvedCategories.includes(category);\n };\n\n scriptElements.forEach((element) => {\n if (isConsentGivenForCategory(element)) {\n element.replaceWith(cloneScriptElement(element));\n }\n });\n }\n\n async getCookieDescriptions() {\n await this.fetchConsentConfig();\n\n if (!this.config) {\n return null;\n }\n\n return this.config.cookies.reduce(\n (acc, { category, name, purpose, provider, ttl }) => {\n if (!acc[category]) {\n acc[category] = [];\n }\n\n acc[category].push({\n details: purpose,\n expiration: getExpirationText(ttl),\n name,\n provider,\n });\n\n return acc;\n },\n {}\n );\n }\n\n async getConsentStateText(consentedCategories) {\n await this.fetchConsentConfig();\n\n if (!this.config) {\n return \"\";\n }\n\n consentedCategories ??= this.getConsentedCategories();\n\n return cookieCategories.length === consentedCategories.length\n ? \"Allow all\"\n : consentedCategories\n .map((category) => categoryTitles[category])\n .join(\", \");\n }\n\n async setDataCallback(callback) {\n this.dataCallback = callback;\n\n const stateText = await this.getConsentStateText();\n\n // provide initial data\n this.dataCallback(stateText, this.getConsentValue());\n }\n }\n\n AWE.component.CookieConsentService = new CookieConsentService();\n})();\n\r\n"],"names":["window","AWE","component","NATIVE_COOKIE_SYMBOL","Symbol","ONE_YEAR_IN_MS","ACTIVE_COOKIE_CONSENT_BODY_CLASSNAME","ALWAYS_ENABLED_COOKIE_CATEGORY","config","cookieConsent","categoryTitles","cookieCategories","cookieDomain","cookieName","consentCookieName","configUrl","isCookiePolicyPage","reportUrl","whitelistRegExp","maxCookieSize","length","uuidv4","replace","c","crypto","getRandomValues","Uint8Array","toString","getCookieValue","document","cookie","split","map","name","value","trim","find","getCookieNames","cookies","getExpirationText","seconds","minutes","Math","round","hours","days","years","postRequest","data","fetch","body","JSON","stringify","method","headers","reportConsents","consentConfigurationId","approvedCategories","cookieApprovals","consentBanner","id","url","ip","CookieConsentService","overrideCookiePrototype","fetchConsentConfig","then","checkConfigAndConsentDiff","runScriptTags","getConsentedCategories","readyState","setupOverlays","addEventListener","consentFetch","r","json","catch","Sentry","captureException","service","Object","defineProperty","Document","prototype","getOwnPropertyDescriptor","enumerable","configurable","get","set","isCookieAllowed","isAllowed","showOverlayIfNeeded","getConsentValue","openConsentOverlay","setupSimpleConsentOverlay","setupManageConsentOverlay","acceptAllButtons","querySelectorAll","rejectAllButtons","manageButton","querySelector","acceptAllCookies","saveConsent","closeConsentOverlay","rejectAllCookies","onManageButtonClick","event","preventDefault","openManageConsentOverlay","forEach","button","setManageConsentCheckboxes","defaultCheckedCookieCategories","dataCookieCheckboxAttribute","checkboxElements","activeCategories","Array","from","Set","element","cookieCategory","getAttribute","checked","includes","form","handleFormSubmit","ev","nodeList","slice","call","target","consentedCategories","input","filter","concat","getConsentOverlay","overlay","setOpenOverlayState","setAttribute","removeAttribute","classList","add","remove","consentValueInCookie","debugCookies","test","getDebugCookies","getCookieCategory","category","parse","decodeURIComponent","error","console","_debugCookies","cookieConfig","isVisible","push","getKnownCookiesWithCategories","reduce","acc","keys","consentValue","cookieNamesFromConfig","cookieNamesFromValue","difference","x","generateCookieConsentValue","consentValueId","createdAt","Date","toISOString","location","origin","cookieValue","stringValue","cookieExpirationDate","stateText","isApproved","encodeURIComponent","now","toGMTString","isCookieSizeAllowed","dataCallback","getConsentStateText","cookieString","encodedString","String","sizeInBytes","Blob","size","dataCookieAttribute","scriptElements","cloneScriptElement","originalElement","cloneElement","createElement","type","innerHTML","isConsentGivenForCategory","replaceWith","getCookieDescriptions","purpose","provider","ttl","details","expiration","join","setDataCallback","callback"],"mappings":"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"}