{"version":3,"file":"cookieconsent.js","mappings":"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","sources":["webpack://eem/./node_modules/vanilla-cookieconsent/src/cookieconsent.js","webpack://eem/webpack/bootstrap","webpack://eem/webpack/runtime/compat get default export","webpack://eem/webpack/runtime/define property getters","webpack://eem/webpack/runtime/hasOwnProperty shorthand","webpack://eem/./src/script/furillo/cookieconsent.js"],"sourcesContent":["/*!\n * CookieConsent v2.9.2\n * https://www.github.com/orestbida/cookieconsent\n * Author Orest Bida\n * Released under the MIT License\n */\n(function(){\n 'use strict';\n /**\n * @param {HTMLElement} [root] - [optional] element where the cookieconsent will be appended\n * @returns {Object} cookieconsent object with API\n */\n var CookieConsent = function(root){\n\n /**\n * CHANGE THIS FLAG FALSE TO DISABLE console.log()\n */\n var ENABLE_LOGS = true;\n\n var _config = {\n 'mode': 'opt-in', // 'opt-in', 'opt-out'\n 'current_lang': 'en',\n 'auto_language': null,\n 'autorun': true, // run as soon as loaded\n 'page_scripts': true,\n 'hide_from_bots': true,\n 'cookie_name': 'cc_cookie',\n 'cookie_expiration': 182, // default: 6 months (in days)\n 'cookie_domain': location.hostname, // default: current domain\n 'cookie_path': '/',\n 'cookie_same_site': 'Lax',\n 'use_rfc_cookie': false,\n 'autoclear_cookies': true,\n 'revision': 0,\n 'script_selector': 'data-cookiecategory'\n };\n\n var\n /**\n * Object which holds the main methods/API (.show, .run, ...)\n */\n _cookieconsent = {},\n\n /**\n * Global user configuration object\n */\n user_config,\n\n /**\n * Internal state variables\n */\n saved_cookie_content = {},\n cookie_data = null,\n\n /**\n * @type {Date}\n */\n consent_date,\n\n /**\n * @type {Date}\n */\n last_consent_update,\n\n /**\n * @type {string}\n */\n consent_uuid,\n\n /**\n * @type {boolean}\n */\n invalid_consent = true,\n\n consent_modal_exists = false,\n consent_modal_visible = false,\n\n settings_modal_visible = false,\n\n /**\n * @type {HTMLElement[]}\n */\n focusable_edges,\n\n /**\n * @type {HTMLDivElement}\n */\n focused_modal,\n\n /**\n * @type {HTMLSpanElement}\n */\n cmFocusSpan,\n\n /**\n * @type {HTMLSpanElement}\n */\n smFocusSpan,\n\n all_table_headers,\n\n /**\n * @type {{}[]}\n */\n all_blocks,\n\n // Helper callback functions\n // (avoid calling \"user_config['onAccept']\" all the time)\n onAccept,\n onChange,\n onFirstAction,\n\n revision_enabled = false,\n valid_revision = true,\n revision_message = '',\n\n // State variables for the autoclearCookies function\n changed_settings = [],\n reload_page = false;\n\n /**\n * Accept type:\n * - \"all\"\n * - \"necessary\"\n * - \"custom\"\n * @type {string}\n */\n var accept_type;\n\n /**\n * Contains all accepted categories\n * @type {string[]}\n */\n var accepted_categories = [];\n\n /**\n * Contains all non-accepted (rejected) categories\n * @type {string[]}\n */\n var rejected_categories = [];\n\n /**\n * Contains all categories enabled by default\n * @type {string[]}\n */\n var default_enabled_categories = [];\n\n // Don't run plugin (to avoid indexing its text content) if bot detected\n var is_bot = false;\n\n /**\n * Save reference to the last focused element on the page\n * (used later to restore focus when both modals are closed)\n */\n var last_elem_before_modal;\n var last_consent_modal_btn_focus;\n\n /**\n * Both of the arrays below have the same structure:\n * [0] => holds reference to the FIRST focusable element inside modal\n * [1] => holds reference to the LAST focusable element inside modal\n */\n var consent_modal_focusable = [];\n var settings_modal_focusable = [];\n\n /**\n * Keep track of enabled/disabled categories\n * @type {boolean[]}\n */\n var toggle_states = [];\n\n /**\n * Stores all available categories\n * @type {string[]}\n */\n var all_categories = [];\n\n /**\n * Keep track of readonly toggles\n * @type {string[]}\n */\n var readonly_categories = [];\n\n /**\n * Pointers to main dom elements (to avoid retrieving them later using document.getElementById)\n */\n var\n /** @type {HTMLElement} */ html_dom = document.documentElement,\n /** @type {HTMLElement} */ main_container,\n /** @type {HTMLElement} */ all_modals_container,\n\n /** @type {HTMLElement} */ consent_modal,\n /** @type {HTMLElement} */ consent_modal_title,\n /** @type {HTMLElement} */ consent_modal_description,\n /** @type {HTMLElement} */ consent_primary_btn,\n /** @type {HTMLElement} */ consent_secondary_btn,\n /** @type {HTMLElement} */ consent_buttons,\n /** @type {HTMLElement} */ consent_modal_inner,\n\n /** @type {HTMLElement} */ settings_container,\n /** @type {HTMLElement} */ settings_inner,\n /** @type {HTMLElement} */ settings_title,\n /** @type {HTMLElement} */ settings_close_btn,\n /** @type {HTMLElement} */ settings_blocks,\n /** @type {HTMLElement} */ new_settings_blocks,\n /** @type {HTMLElement} */ settings_buttons,\n /** @type {HTMLElement} */ settings_save_btn,\n /** @type {HTMLElement} */ settings_accept_all_btn,\n /** @type {HTMLElement} */ settings_reject_all_btn;\n\n /**\n * Update config settings\n * @param {Object} user_config\n */\n var _setConfig = function(_user_config){\n\n /**\n * Make user configuration globally available\n */\n user_config = _user_config;\n\n _log(\"CookieConsent [CONFIG]: received_config_settings \", user_config);\n\n if(typeof user_config['cookie_expiration'] === \"number\")\n _config.cookie_expiration = user_config['cookie_expiration'];\n\n if(typeof user_config['cookie_necessary_only_expiration'] === \"number\")\n _config.cookie_necessary_only_expiration = user_config['cookie_necessary_only_expiration'];\n\n if(typeof user_config['autorun'] === \"boolean\")\n _config.autorun = user_config['autorun'];\n\n if(typeof user_config['cookie_domain'] === \"string\")\n _config.cookie_domain = user_config['cookie_domain'];\n\n if(typeof user_config['cookie_same_site'] === \"string\")\n _config.cookie_same_site = user_config['cookie_same_site'];\n\n if(typeof user_config['cookie_path'] === \"string\")\n _config.cookie_path = user_config['cookie_path'];\n\n if(typeof user_config['cookie_name'] === \"string\")\n _config.cookie_name = user_config['cookie_name'];\n\n if(typeof user_config['onAccept'] === \"function\")\n onAccept = user_config['onAccept'];\n\n if(typeof user_config['onFirstAction'] === \"function\")\n onFirstAction = user_config['onFirstAction'];\n\n if(typeof user_config['onChange'] === \"function\")\n onChange = user_config['onChange'];\n\n if(user_config['mode'] === 'opt-out')\n _config.mode = 'opt-out';\n\n if(typeof user_config['revision'] === \"number\"){\n user_config['revision'] > -1 && (_config.revision = user_config['revision']);\n revision_enabled = true;\n }\n\n if(typeof user_config['autoclear_cookies'] === \"boolean\")\n _config.autoclear_cookies = user_config['autoclear_cookies'];\n\n if(user_config['use_rfc_cookie'] === true)\n _config.use_rfc_cookie = true;\n\n if(typeof user_config['hide_from_bots'] === \"boolean\"){\n _config.hide_from_bots = user_config['hide_from_bots'];\n }\n\n if(_config.hide_from_bots){\n is_bot = navigator &&\n ((navigator.userAgent && /bot|crawl|spider|slurp|teoma/i.test(navigator.userAgent)) || navigator.webdriver);\n }\n\n _config.page_scripts = user_config['page_scripts'] === true;\n\n if (user_config['auto_language'] === 'browser' || user_config['auto_language'] === true) {\n _config.auto_language = 'browser';\n } else if (user_config['auto_language'] === 'document') {\n _config.auto_language = 'document';\n }\n\n _log(\"CookieConsent [LANG]: auto_language strategy is '\" + _config.auto_language + \"'\");\n\n _config.current_lang = _resolveCurrentLang(user_config.languages, user_config['current_lang']);\n }\n\n /**\n * Add an onClick listeners to all html elements with data-cc attribute\n */\n var _addDataButtonListeners = function(elem){\n\n var _a = 'accept-';\n\n var show_settings = _getElements('c-settings');\n var accept_all = _getElements(_a + 'all');\n var accept_necessary = _getElements(_a + 'necessary');\n var accept_custom_selection = _getElements(_a + 'custom');\n\n for(var i=0; i}\n */\n function _getElements(data_role){\n return (elem || document).querySelectorAll('[data-cc=\"' + data_role + '\"]');\n }\n\n /**\n * Helper function: accept and then hide modals\n * @param {PointerEvent} e source event\n * @param {string} [accept_type]\n */\n function _acceptAction(e, accept_type){\n e.preventDefault();\n _cookieconsent.accept(accept_type);\n _cookieconsent.hideSettings();\n _cookieconsent.hide();\n }\n }\n\n /**\n * Get a valid language (at least 1 must be defined)\n * @param {string} lang - desired language\n * @param {{}} all_languages - all defined languages\n * @returns {string} validated language\n */\n var _getValidatedLanguage = function(lang, all_languages){\n if(all_languages.hasOwnProperty(lang)){\n return lang;\n }else if(_getKeys(all_languages).length > 0){\n if(all_languages.hasOwnProperty(_config.current_lang)){\n return _config.current_lang ;\n }else{\n return _getKeys(all_languages)[0];\n }\n }\n }\n\n /**\n * Save reference to first and last focusable elements inside each modal\n * to prevent losing focus while navigating with TAB\n */\n var _getModalFocusableData = function(){\n\n /**\n * Note: any of the below focusable elements, which has the attribute tabindex=\"-1\" AND is either\n * the first or last element of the modal, won't receive focus during \"open/close\" modal\n */\n var allowed_focusable_types = ['[href]', 'button', 'input', 'details', '[tabindex=\"0\"]'];\n\n function _getAllFocusableElements(modal, _array){\n\n // ie might throw exception due to complex unsupported selector => a:not([tabindex=\"-1\"])\n try{\n var focusable_elems = modal.querySelectorAll(allowed_focusable_types.join(':not([tabindex=\"-1\"]), '));\n }catch(e){\n return modal.querySelectorAll(allowed_focusable_types.join(', '));\n }\n\n /**\n * Save first and last elements (used to lock/trap focus inside modal)\n */\n _array[0] = focusable_elems[0];\n _array[1] = focusable_elems[focusable_elems.length - 1];\n }\n\n /**\n * Get settings modal'S all focusable elements\n * Save first and last elements (used to lock/trap focus inside modal)\n */\n _getAllFocusableElements(settings_inner, settings_modal_focusable);\n\n /**\n * If consent modal exists, do the same\n */\n if(consent_modal_exists){\n _getAllFocusableElements(consent_modal, consent_modal_focusable);\n }\n }\n\n var _createConsentModal = function(lang){\n\n if(user_config['force_consent'] === true)\n _addClass(html_dom, 'force--consent');\n\n // Create modal if it doesn't exist\n if(!consent_modal){\n\n consent_modal = _createNode('div');\n var consent_modal_inner_inner = _createNode('div');\n var overlay = _createNode('div');\n\n consent_modal.id = 'cm';\n consent_modal_inner_inner.id = 'c-inr-i';\n overlay.id = 'cm-ov';\n\n consent_modal.tabIndex = -1;\n consent_modal.setAttribute('role', 'dialog');\n consent_modal.setAttribute('aria-modal', 'true');\n consent_modal.setAttribute('aria-hidden', 'false');\n consent_modal.setAttribute('aria-labelledby', 'c-ttl');\n consent_modal.setAttribute('aria-describedby', 'c-txt');\n\n // Append consent modal to main container\n all_modals_container.appendChild(consent_modal);\n all_modals_container.appendChild(overlay);\n\n /**\n * Make modal by default hidden to prevent weird page jumps/flashes (shown only once css is loaded)\n */\n consent_modal.style.visibility = overlay.style.visibility = \"hidden\";\n overlay.style.opacity = 0;\n }\n\n // Use insertAdjacentHTML instead of innerHTML\n var consent_modal_title_value = user_config.languages[lang]['consent_modal']['title'];\n\n // Add title (if valid)\n if(consent_modal_title_value){\n\n if(!consent_modal_title){\n consent_modal_title = _createNode('h2');\n consent_modal_title.id = 'c-ttl';\n consent_modal_inner_inner.appendChild(consent_modal_title);\n }\n\n consent_modal_title.innerHTML = consent_modal_title_value;\n }\n\n var description = user_config.languages[lang]['consent_modal']['description'];\n\n if(revision_enabled){\n if(!valid_revision){\n description = description.replace(\"{{revision_message}}\", revision_message || user_config.languages[lang]['consent_modal']['revision_message'] || \"\");\n }else{\n description = description.replace(\"{{revision_message}}\", \"\");\n }\n }\n\n if(!consent_modal_description){\n consent_modal_description = _createNode('div');\n consent_modal_description.id = 'c-txt';\n consent_modal_inner_inner.appendChild(consent_modal_description);\n }\n\n // Set description content\n consent_modal_description.innerHTML = description;\n\n var primary_btn_data = user_config.languages[lang]['consent_modal']['primary_btn'], // accept current selection\n secondary_btn_data = user_config.languages[lang]['consent_modal']['secondary_btn'];\n\n // Add primary button if not falsy\n if(primary_btn_data){\n\n if(!consent_primary_btn){\n consent_primary_btn = _createNode('button');\n consent_primary_btn.id = 'c-p-bn';\n consent_primary_btn.className = \"c-bn\";\n consent_primary_btn.appendChild(generateFocusSpan(1))\n\n var _accept_type;\n\n if(primary_btn_data['role'] === 'accept_all')\n _accept_type = 'all'\n\n _addEvent(consent_primary_btn, \"click\", function(){\n _cookieconsent.hide();\n _log(\"CookieConsent [ACCEPT]: cookie_consent was accepted!\");\n _cookieconsent.accept(_accept_type);\n });\n }\n\n consent_primary_btn.firstElementChild.innerHTML = user_config.languages[lang]['consent_modal']['primary_btn']['text'];\n }\n\n // Add secondary button if not falsy\n if(secondary_btn_data){\n\n if(!consent_secondary_btn){\n consent_secondary_btn = _createNode('button');\n consent_secondary_btn.id = 'c-s-bn';\n consent_secondary_btn.className = \"c-bn c_link\";\n consent_secondary_btn.appendChild(generateFocusSpan(1))\n\n if(secondary_btn_data['role'] === 'accept_necessary'){\n _addEvent(consent_secondary_btn, 'click', function(){\n _cookieconsent.hide();\n _cookieconsent.accept([]); // accept necessary only\n });\n }else{\n _addEvent(consent_secondary_btn, 'click', function(){\n _cookieconsent.showSettings(0);\n });\n }\n }\n\n consent_secondary_btn.firstElementChild.innerHTML = user_config.languages[lang]['consent_modal']['secondary_btn']['text'];\n }\n\n // Swap buttons\n var gui_options_data = user_config['gui_options'];\n\n if(!consent_modal_inner){\n consent_modal_inner = _createNode('div');\n consent_modal_inner.id = 'c-inr';\n\n consent_modal_inner.appendChild(consent_modal_inner_inner);\n }\n\n if(!consent_buttons){\n consent_buttons = _createNode('div');\n consent_buttons.id = \"c-bns\";\n\n if(gui_options_data && gui_options_data['consent_modal'] && gui_options_data['consent_modal']['swap_buttons'] === true){\n secondary_btn_data && consent_buttons.appendChild(consent_secondary_btn);\n primary_btn_data && consent_buttons.appendChild(consent_primary_btn);\n consent_buttons.className = 'swap';\n }else{\n primary_btn_data && consent_buttons.appendChild(consent_primary_btn);\n secondary_btn_data && consent_buttons.appendChild(consent_secondary_btn);\n }\n\n (primary_btn_data || secondary_btn_data ) && consent_modal_inner.appendChild(consent_buttons);\n consent_modal.appendChild(consent_modal_inner);\n }\n\n consent_modal_exists = true;\n\n _addDataButtonListeners(consent_modal_inner);\n }\n\n var _createSettingsModal = function(lang){\n\n /**\n * Create all consent_modal elements\n */\n if(!settings_container){\n settings_container = _createNode('div');\n settings_container.tabIndex = -1;\n var settings_container_valign = _createNode('div');\n var settings = _createNode('div');\n var settings_container_inner = _createNode('div');\n settings_inner = _createNode('div');\n settings_title = _createNode('h2');\n var settings_header = _createNode('div');\n settings_close_btn = _createNode('button');\n settings_close_btn.appendChild(generateFocusSpan(2));\n var settings_close_btn_container = _createNode('div');\n settings_blocks = _createNode('div');\n var overlay = _createNode('div');\n\n var clickedInsideModal = false;\n\n _addEvent(settings_container, 'mouseup', function(e){\n\n /**\n * Hide modal if mouse pointer is outside modal\n */\n if(\n settings_modal_visible\n && !clickedInsideModal\n && !settings_inner.contains(e.target)\n ){\n _cookieconsent.hideSettings();\n }\n\n });\n\n _addEvent(settings_container, 'mousedown', function(e){\n\n /**\n * Check if click started inside modal or not\n */\n if(settings_modal_visible){\n clickedInsideModal = settings_inner.contains(e.target);\n }\n\n });\n\n /**\n * Set ids\n */\n settings_container.id = 's-cnt';\n settings_container_valign.id = \"c-vln\";\n settings_container_inner.id = \"c-s-in\";\n settings.id = \"cs\";\n settings_title.id = 's-ttl';\n settings_inner.id = 's-inr';\n settings_header.id = \"s-hdr\";\n settings_blocks.id = 's-bl';\n settings_close_btn.id = 's-c-bn';\n overlay.id = 'cs-ov';\n settings_close_btn_container.id = 's-c-bnc';\n settings_close_btn.className = 'c-bn';\n\n settings_container.setAttribute('role', 'dialog');\n settings_container.setAttribute('aria-modal', 'true');\n settings_container.setAttribute('aria-hidden', 'true');\n settings_container.setAttribute('aria-labelledby', 's-ttl');\n settings_container.style.visibility = overlay.style.visibility = \"hidden\";\n overlay.style.opacity = 0;\n\n settings_close_btn_container.appendChild(settings_close_btn);\n\n // If 'esc' key is pressed inside settings_container div => hide settings\n _addEvent(document, 'keydown', function(evt){\n if (evt.keyCode === 27 && settings_modal_visible) {\n _cookieconsent.hideSettings();\n }\n }, true);\n\n _addEvent(settings_close_btn, 'click', function(){\n _cookieconsent.hideSettings();\n });\n }else{\n new_settings_blocks = _createNode('div');\n new_settings_blocks.id = 's-bl';\n }\n\n var settings_modal_config = user_config.languages[lang]['settings_modal'];\n\n // Add label to close button\n settings_close_btn.setAttribute('aria-label', settings_modal_config['close_btn_label'] || 'Close');\n\n all_blocks = settings_modal_config['blocks'];\n all_table_headers = settings_modal_config['cookie_table_headers'];\n var table_caption = settings_modal_config['cookie_table_caption'];\n\n var n_blocks = all_blocks.length;\n\n // Set settings modal title\n settings_title.innerHTML = settings_modal_config['title'];\n\n // Create settings modal content (blocks)\n for(var i=0; i retrieve category states from cookie\n * Otherwise use states defined in the user_config. object\n */\n if(!invalid_consent){\n if(_inArray(saved_cookie_content['categories'], cookie_category) > -1){\n block_switch.checked = true;\n !new_settings_blocks && toggle_states.push(true);\n }else{\n !new_settings_blocks && toggle_states.push(false);\n }\n }else if(toggle_data['enabled']){\n block_switch.checked = true;\n !new_settings_blocks && toggle_states.push(true);\n\n /**\n * Keep track of categories enabled by default (useful when mode=='opt-out')\n */\n if(toggle_data['enabled'])\n !new_settings_blocks && default_enabled_categories.push(cookie_category);\n\n }else{\n !new_settings_blocks && toggle_states.push(false);\n }\n\n !new_settings_blocks && all_categories.push(cookie_category);\n\n /**\n * Set toggle as readonly if true (disable checkbox)\n */\n if(toggle_data['readonly']){\n block_switch.disabled = true;\n _addClass(block_switch_span, 'c-ro');\n !new_settings_blocks && readonly_categories.push(cookie_category);\n }\n\n _addClass(block_table_container, 'b-acc');\n _addClass(block_title_container, 'b-bn');\n _addClass(block_section, 'b-ex');\n\n block_table_container.id = accordion_id;\n block_table_container.setAttribute('aria-hidden', 'true');\n\n block_switch_label.appendChild(block_switch);\n block_switch_label.appendChild(block_switch_span);\n block_switch_label.appendChild(label_text_span);\n block_title_container.appendChild(block_switch_label);\n\n /**\n * On button click handle the following :=> aria-expanded, aria-hidden and act class for current block\n */\n isExpandable && (function(accordion, block_section, btn){\n _addEvent(block_title_btn, 'click', function(){\n if(!_hasClass(block_section, 'act')){\n _addClass(block_section, 'act');\n btn.setAttribute('aria-expanded', 'true');\n accordion.setAttribute('aria-hidden', 'false');\n }else{\n _removeClass(block_section, 'act');\n btn.setAttribute('aria-expanded', 'false');\n accordion.setAttribute('aria-hidden', 'true');\n }\n }, false);\n })(block_table_container, block_section, block_title_btn);\n\n }else{\n /**\n * If block is not a button (no toggle defined),\n * create a simple div instead\n */\n if(title_data){\n var block_title = _createNode('div');\n block_title.className = 'b-tl';\n block_title.setAttribute('role', 'heading');\n block_title.setAttribute('aria-level', '3');\n block_title.insertAdjacentHTML('beforeend', title_data);\n block_title_container.appendChild(block_title);\n }\n }\n\n title_data && block_section.appendChild(block_title_container);\n description_data && block_table_container.appendChild(block_desc);\n\n // if cookie table found, generate table for this block\n if(!remove_cookie_tables && typeof cookie_table_data !== 'undefined'){\n var tr_tmp_fragment = document.createDocumentFragment();\n\n /**\n * Use custom table headers\n */\n for(var p=0; p ~faster value retrieval)\n var curr_block = all_blocks[i];\n\n // If current block has a toggle for opt in/out\n if(curr_block.hasOwnProperty('toggle')){\n\n // if current block has a cookie table, an off toggle,\n // and its preferences were just changed => delete cookies\n var category_just_disabled = _inArray(changed_settings, curr_block['toggle']['value']) > -1;\n if(\n !toggle_states[++count] &&\n curr_block.hasOwnProperty('cookie_table') &&\n (clearOnFirstAction || category_just_disabled)\n ){\n var curr_cookie_table = curr_block['cookie_table'];\n\n // Get first property name\n var ckey = _getKeys(all_table_headers[0])[0];\n\n // Get number of cookies defined in cookie_table\n var clen = curr_cookie_table.length;\n\n // set \"reload_page\" to true if reload=on_disable\n if(curr_block['toggle']['reload'] === 'on_disable')\n category_just_disabled && (reload_page = true);\n\n // for each row defined in the cookie table\n for(var j=0; j filter cookie array\n if(is_regex){\n for(var n=0; n -1) found_cookies.push(all_cookies_array[found_index]);\n }\n\n _log(\"CookieConsent [AUTOCLEAR]: search cookie: '\" + curr_cookie_name + \"', found:\", found_cookies);\n\n // If cookie exists -> delete it\n if(found_cookies.length > 0){\n _eraseCookies(found_cookies, curr_cookie_path, curr_domains);\n curr_block['toggle']['reload'] === 'on_clear' && (reload_page = true);\n }\n }\n }\n }\n }\n }\n\n /**\n * Set toggles/checkboxes based on accepted categories and save cookie\n * @param {string[]} accepted_categories - Array of categories to accept\n */\n var _saveCookiePreferences = function(accepted_categories){\n\n changed_settings = [];\n\n // Retrieve all toggle/checkbox values\n var category_toggles = settings_container.querySelectorAll('.c-tgl') || [];\n\n // If there are opt in/out toggles ...\n if(category_toggles.length > 0){\n\n for(var i=0; i 0)\n _autoclearCookies();\n\n if(!consent_date) consent_date = new Date();\n if(!consent_uuid) consent_uuid = _uuidv4();\n\n saved_cookie_content = {\n \"categories\": accepted_categories,\n \"level\": accepted_categories, // Copy of the `categories` property for compatibility purposes with version v2.8.0 and below.\n \"revision\": _config.revision,\n \"data\": cookie_data,\n \"rfc_cookie\": _config.use_rfc_cookie,\n \"consent_date\": consent_date.toISOString(),\n \"consent_uuid\": consent_uuid\n }\n\n // save cookie with preferences 'categories' (only if never accepted or settings were updated)\n if(invalid_consent || changed_settings.length > 0){\n valid_revision = true;\n\n /**\n * Update \"last_consent_update\" only if it is invalid (after t)\n */\n if(!last_consent_update)\n last_consent_update = consent_date;\n else\n last_consent_update = new Date();\n\n saved_cookie_content['last_consent_update'] = last_consent_update.toISOString();\n\n /**\n * Update accept type\n */\n accept_type = _getAcceptType(_getCurrentCategoriesState());\n\n _setCookie(_config.cookie_name, JSON.stringify(saved_cookie_content));\n _manageExistingScripts();\n }\n\n if(invalid_consent){\n\n /**\n * Delete unused/\"zombie\" cookies if consent is not valid (not yet expressed or cookie has expired)\n */\n if(_config.autoclear_cookies)\n _autoclearCookies(true);\n\n if(typeof onFirstAction === 'function')\n onFirstAction(_cookieconsent.getUserPreferences(), saved_cookie_content);\n\n if(typeof onAccept === 'function')\n onAccept(saved_cookie_content);\n\n /**\n * Set consent as valid\n */\n invalid_consent = false;\n\n if(_config.mode === 'opt-in') return;\n }\n\n // fire onChange only if settings were changed\n if(typeof onChange === \"function\" && changed_settings.length > 0)\n onChange(saved_cookie_content, changed_settings);\n\n /**\n * reload page if needed\n */\n if(reload_page)\n location.reload();\n }\n\n /**\n * Returns index of found element inside array, otherwise -1\n * @param {Array} arr\n * @param {Object} value\n * @returns {number}\n */\n var _inArray = function(arr, value){\n return arr.indexOf(value);\n }\n\n /**\n * Helper function which prints info (console.log())\n * @param {Object} print_msg\n * @param {Object} [optional_param]\n */\n var _log = function(print_msg, optional_param, error){\n ENABLE_LOGS && (!error ? console.log(print_msg, optional_param !== undefined ? optional_param : ' ') : console.error(print_msg, optional_param || \"\"));\n }\n\n /**\n * Helper function which creates an HTMLElement object based on 'type' and returns it.\n * @param {string} type\n * @returns {HTMLElement}\n */\n var _createNode = function(type){\n var el = document.createElement(type);\n if(type === 'button'){\n el.setAttribute('type', type);\n }\n return el;\n }\n\n /**\n * Generate RFC4122-compliant UUIDs.\n * https://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid?page=1&tab=votes#tab-top\n * @returns {string}\n */\n var _uuidv4 = function(){\n return ([1e7]+-1e3+-4e3+-8e3+-1e11).replace(/[018]/g, function(c){\n try{\n return (c ^ (window.crypto || window.msCrypto).getRandomValues(new Uint8Array(1))[0] & 15 >> c / 4).toString(16)\n }catch(e){\n return '';\n }\n });\n }\n\n /**\n * Resolve which language should be used.\n *\n * @param {Object} languages Object with language translations\n * @param {string} [requested_language] Language specified by given configuration parameters\n * @returns {string}\n */\n var _resolveCurrentLang = function (languages, requested_language) {\n\n if (_config.auto_language === 'browser') {\n return _getValidatedLanguage(_getBrowserLang(), languages);\n } else if (_config.auto_language === 'document') {\n return _getValidatedLanguage(document.documentElement.lang, languages);\n } else {\n if (typeof requested_language === 'string') {\n return _config.current_lang = _getValidatedLanguage(requested_language, languages);\n }\n }\n\n _log(\"CookieConsent [LANG]: setting current_lang = '\" + _config.current_lang + \"'\");\n return _config.current_lang; // otherwise return default\n }\n\n /**\n * Get current client's browser language\n * @returns {string}\n */\n var _getBrowserLang = function(){\n var browser_lang = navigator.language || navigator.browserLanguage;\n browser_lang.length > 2 && (browser_lang = browser_lang[0]+browser_lang[1]);\n _log(\"CookieConsent [LANG]: detected_browser_lang = '\"+ browser_lang + \"'\");\n return browser_lang.toLowerCase()\n }\n\n /**\n * Trap focus inside modal and focus the first\n * focusable element of current active modal\n */\n var _handleFocusTrap = function(){\n\n _addEvent(document, 'keydown', function(e){\n\n // If is tab key => ok\n if(e.key !== 'Tab')\n return;\n\n if(!consent_modal_visible && !settings_modal_visible)\n return;\n\n // If there is any modal to focus\n if(focusable_edges){\n\n var activeElement = getActiveElement();\n\n // If reached natural end of the tab sequence => restart\n // If modal is not focused => focus modal\n if(e.shiftKey){\n if (activeElement === focusable_edges[0] || !focused_modal.contains(activeElement)) {\n e.preventDefault();\n setFocus(focusable_edges[1])\n }\n }else{\n if (activeElement === focusable_edges[1] || !focused_modal.contains(activeElement)) {\n e.preventDefault();\n setFocus(focusable_edges[0]);\n }\n }\n }\n });\n\n }\n\n /**\n * Manage each modal's layout\n * @param {Object} gui_options\n */\n var _guiManager = function(gui_options, only_consent_modal){\n\n // If gui_options is not object => exit\n if(typeof gui_options !== 'object') return;\n\n var consent_modal_options = gui_options['consent_modal'];\n var settings_modal_options = gui_options['settings_modal'];\n\n /**\n * Helper function which adds layout and\n * position classes to given modal\n *\n * @param {HTMLElement} modal\n * @param {string[]} allowed_layouts\n * @param {string[]} allowed_positions\n * @param {string} layout\n * @param {string[]} position\n */\n function _setLayout(modal, allowed_layouts, allowed_positions, allowed_transitions, layout, position, transition){\n position = (position && position.split(\" \")) || [];\n\n // Check if specified layout is valid\n if(_inArray(allowed_layouts, layout) > -1){\n\n // Add layout classes\n _addClass(modal, layout);\n\n // Add position class (if specified)\n if(!(layout === 'bar' && position[0] === 'middle') && _inArray(allowed_positions, position[0]) > -1){\n for(var i=0; i -1) && _addClass(modal, transition);\n }\n\n if(consent_modal_exists && consent_modal_options){\n _setLayout(\n consent_modal,\n ['box', 'bar', 'cloud'],\n ['top', 'middle', 'bottom'],\n ['zoom', 'slide'],\n consent_modal_options['layout'],\n consent_modal_options['position'],\n consent_modal_options['transition']\n );\n }\n\n if(!only_consent_modal && settings_modal_options){\n _setLayout(\n settings_container,\n ['bar'],\n ['left', 'right'],\n ['zoom', 'slide'],\n settings_modal_options['layout'],\n settings_modal_options['position'],\n settings_modal_options['transition']\n );\n }\n }\n\n /**\n * Returns true if cookie category is accepted by the user\n * @param {string} cookie_category\n * @returns {boolean}\n */\n _cookieconsent.allowedCategory = function(cookie_category){\n\n if(!invalid_consent || _config.mode === 'opt-in')\n var allowed_categories = JSON.parse(_getCookie(_config.cookie_name, 'one', true) || '{}')['categories'] || []\n else // mode is 'opt-out'\n var allowed_categories = default_enabled_categories;\n\n return _inArray(allowed_categories, cookie_category) > -1;\n }\n\n /**\n * \"Init\" method. Will run once and only if modals do not exist\n */\n _cookieconsent.run = function(user_config){\n if(!document.getElementById('cc_div')){\n\n // configure all parameters\n _setConfig(user_config);\n\n // if is bot, don't run plugin\n if(is_bot) return;\n\n // Retrieve cookie value (if set)\n saved_cookie_content = JSON.parse(_getCookie(_config.cookie_name, 'one', true) || \"{}\");\n\n // Retrieve \"consent_uuid\"\n consent_uuid = saved_cookie_content['consent_uuid'];\n\n // If \"consent_uuid\" is present => assume that consent was previously given\n var cookie_consent_accepted = consent_uuid !== undefined;\n\n // Retrieve \"consent_date\"\n consent_date = saved_cookie_content['consent_date'];\n consent_date && (consent_date = new Date(consent_date));\n\n // Retrieve \"last_consent_update\"\n last_consent_update = saved_cookie_content['last_consent_update'];\n last_consent_update && (last_consent_update = new Date(last_consent_update));\n\n // Retrieve \"data\"\n cookie_data = saved_cookie_content['data'] !== undefined ? saved_cookie_content['data'] : null;\n\n // If revision is enabled and current value !== saved value inside the cookie => revision is not valid\n if(revision_enabled && saved_cookie_content['revision'] !== _config.revision){\n valid_revision = false;\n }\n\n // If consent is not valid => create consent modal\n consent_modal_exists = invalid_consent = (!cookie_consent_accepted || !valid_revision || !consent_date || !last_consent_update || !consent_uuid);\n\n // Generate cookie-settings dom (& consent modal)\n _createCookieConsentHTML();\n\n _getModalFocusableData();\n _guiManager(user_config['gui_options']);\n _addDataButtonListeners();\n\n if(_config.autorun && consent_modal_exists){\n _cookieconsent.show(user_config['delay'] || 0);\n }\n\n // Add class to enable animations/transitions\n setTimeout(function(){_addClass(main_container, 'c--anim');}, 30);\n\n // Accessibility :=> if tab pressed => trap focus inside modal\n setTimeout(function(){_handleFocusTrap();}, 100);\n\n // If consent is valid\n if(!invalid_consent){\n var rfc_prop_exists = typeof saved_cookie_content['rfc_cookie'] === \"boolean\";\n\n /*\n * Convert cookie to rfc format (if `use_rfc_cookie` is enabled)\n */\n if(!rfc_prop_exists || (rfc_prop_exists && saved_cookie_content['rfc_cookie'] !== _config.use_rfc_cookie)){\n saved_cookie_content['rfc_cookie'] = _config.use_rfc_cookie;\n _setCookie(_config.cookie_name, JSON.stringify(saved_cookie_content));\n }\n\n /**\n * Update accept type\n */\n accept_type = _getAcceptType(_getCurrentCategoriesState());\n\n _manageExistingScripts();\n\n if(typeof onAccept === 'function')\n onAccept(saved_cookie_content);\n\n _log(\"CookieConsent [NOTICE]: consent already given!\", saved_cookie_content);\n\n }else{\n if(_config.mode === 'opt-out'){\n _log(\"CookieConsent [CONFIG] mode='\" + _config.mode + \"', default enabled categories:\", default_enabled_categories);\n _manageExistingScripts();\n }\n _log(\"CookieConsent [NOTICE]: ask for consent!\");\n }\n }else{\n _log(\"CookieConsent [NOTICE]: cookie consent already attached to body!\");\n }\n }\n\n /**\n * Handles the activation logic of script elements\n * based on enabled categories\n */\n var _manageExistingScripts = function(){\n\n if(!_config.page_scripts) return;\n\n /**\n * @type {string[]}\n */\n var enabled_categories = saved_cookie_content['categories'] || [];\n\n if(invalid_consent && _config.mode === 'opt-out')\n enabled_categories = default_enabled_categories;\n\n // get all the scripts with \"cookie-category\" attribute\n var scripts = document.querySelectorAll('script[' + _config.script_selector + ']');\n\n /**\n * Load scripts (sequentially), using a recursive function\n * which loops through the scripts array\n * @param {Element[]} scripts scripts to load\n * @param {number} index current script to load\n */\n var _loadScripts = function(scripts, index){\n if(index < scripts.length){\n\n var curr_script = scripts[index];\n var curr_script_category = curr_script.getAttribute(_config.script_selector);\n\n /**\n * If current script's category is on the array of categories\n * accepted by the user => load script\n */\n if(_inArray(enabled_categories, curr_script_category) > -1){\n\n curr_script.type = curr_script.getAttribute('data-type') || 'text/javascript';\n curr_script.removeAttribute(_config.script_selector);\n\n // get current script data-src\n var src = curr_script.getAttribute('data-src');\n\n // some scripts (like ga) might throw warning if data-src is present\n src && curr_script.removeAttribute('data-src');\n\n // create fresh script (with the same code)\n var fresh_script = _createNode('script');\n fresh_script.textContent = curr_script.innerHTML;\n\n // Copy attributes over to the new \"revived\" script\n (function(destination, source){\n var attributes = source.attributes;\n var len = attributes.length;\n for(var i=0; i the next script will not be loaded\n // until the current's script onload event triggers\n if(fresh_script.readyState) { // only required for IE <9\n fresh_script.onreadystatechange = function() {\n if (fresh_script.readyState === \"loaded\" || fresh_script.readyState === \"complete\" ) {\n fresh_script.onreadystatechange = null;\n _loadScripts(scripts, ++index);\n }\n };\n }else{ // others\n fresh_script.onload = function(){\n fresh_script.onload = null;\n _loadScripts(scripts, ++index);\n };\n }\n }\n\n // Replace current \"sleeping\" script with the new \"revived\" one\n curr_script.parentNode.replaceChild(fresh_script, curr_script);\n\n /**\n * If we managed to get here and scr is still set, it means that\n * the script is loading/loaded sequentially so don't go any further\n */\n if(src) return;\n }\n\n // Go to next script right away\n _loadScripts(scripts, ++index);\n }\n }\n\n _loadScripts(scripts, 0);\n }\n\n /**\n * Save custom data inside cookie\n * @param {object|string} new_data\n * @param {string} [mode]\n * @returns {boolean}\n */\n var _setCookieData = function(new_data, mode){\n\n var set = false;\n /**\n * If mode is 'update':\n * add/update only the specified props.\n */\n if(mode === 'update'){\n cookie_data = _cookieconsent.get('data');\n var same_type = typeof cookie_data === typeof new_data;\n\n if(same_type && typeof cookie_data === \"object\"){\n !cookie_data && (cookie_data = {});\n\n for(var prop in new_data){\n if(cookie_data[prop] !== new_data[prop]){\n cookie_data[prop] = new_data[prop]\n set = true;\n }\n }\n }else if((same_type || !cookie_data) && cookie_data !== new_data){\n cookie_data = new_data;\n set = true;\n }\n }else{\n cookie_data = new_data;\n set = true;\n }\n\n if(set){\n saved_cookie_content['data'] = cookie_data;\n _setCookie(_config.cookie_name, JSON.stringify(saved_cookie_content));\n }\n\n return set;\n }\n\n /**\n * Helper method to set a variety of fields\n * @param {string} field\n * @param {object} data\n * @returns {boolean}\n */\n _cookieconsent.set = function(field, data){\n switch(field){\n case 'data': return _setCookieData(data['value'], data['mode']);\n default: return false;\n }\n }\n\n /**\n * Retrieve data from existing cookie\n * @param {string} field\n * @param {string} [cookie_name]\n * @returns {any}\n */\n _cookieconsent.get = function(field, cookie_name){\n var cookie = JSON.parse(_getCookie(cookie_name || _config.cookie_name, 'one', true) || \"{}\");\n\n return cookie[field];\n }\n\n /**\n * Read current configuration value\n * @returns {any}\n */\n _cookieconsent.getConfig = function(field){\n return _config[field] || user_config[field];\n }\n\n /**\n * Obtain accepted and rejected categories\n * @returns {{accepted: string[], rejected: string[]}}\n */\n var _getCurrentCategoriesState = function(){\n\n // get accepted categories\n accepted_categories = saved_cookie_content['categories'] || [];\n\n // calculate rejected categories (all_categories - accepted_categories)\n rejected_categories = all_categories.filter(function(category){\n return (_inArray(accepted_categories, category) === -1);\n });\n\n return {\n accepted: accepted_categories,\n rejected: rejected_categories\n }\n }\n\n /**\n * Calculate \"accept type\" given current categories state\n * @param {{accepted: string[], rejected: string[]}} currentCategoriesState\n * @returns {string}\n */\n var _getAcceptType = function(currentCategoriesState){\n\n var type = 'custom';\n\n // number of categories marked as necessary/readonly\n var necessary_categories_length = readonly_categories.length;\n\n // calculate accept type based on accepted/rejected categories\n if(currentCategoriesState.accepted.length === all_categories.length)\n type = 'all';\n else if(currentCategoriesState.accepted.length === necessary_categories_length)\n type = 'necessary'\n\n return type;\n }\n\n /**\n * @typedef {object} userPreferences\n * @property {string} accept_type\n * @property {string[]} accepted_categories\n * @property {string[]} rejected_categories\n */\n\n /**\n * Retrieve current user preferences (summary)\n * @returns {userPreferences}\n */\n _cookieconsent.getUserPreferences = function(){\n var currentCategoriesState = _getCurrentCategoriesState();\n var accept_type = _getAcceptType(currentCategoriesState);\n\n return {\n 'accept_type': accept_type,\n 'accepted_categories': currentCategoriesState.accepted,\n 'rejected_categories': currentCategoriesState.rejected\n }\n }\n\n /**\n * Function which will run after script load\n * @callback scriptLoaded\n */\n\n /**\n * Dynamically load script (append to head)\n * @param {string} src\n * @param {scriptLoaded} callback\n * @param {object[]} [attrs] Custom attributes\n */\n _cookieconsent.loadScript = function(src, callback, attrs){\n\n var function_defined = typeof callback === 'function';\n\n // Load script only if not already loaded\n if(!document.querySelector('script[src=\"' + src + '\"]')){\n\n var script = _createNode('script');\n\n // if an array is provided => add custom attributes\n if(attrs && attrs.length > 0){\n for(var i=0; i run callback onload\n if(function_defined){\n script.onload = callback;\n }\n\n script.src = src;\n\n /**\n * Append script to head\n */\n document.head.appendChild(script);\n }else{\n function_defined && callback();\n }\n }\n\n /**\n * Manage dynamically loaded scripts: https://github.com/orestbida/cookieconsent/issues/101\n * If plugin has already run, call this method to enable\n * the newly added scripts based on currently selected preferences\n */\n _cookieconsent.updateScripts = function(){\n _manageExistingScripts();\n }\n\n /**\n * Show cookie consent modal (with delay parameter)\n * @param {number} [delay]\n * @param {boolean} [create_modal] create modal if it doesn't exist\n */\n _cookieconsent.show = function(delay, create_modal){\n\n if(create_modal === true)\n _createConsentModal(_config.current_lang);\n\n if(!consent_modal_exists)\n return;\n\n last_elem_before_modal = getActiveElement();\n focusable_edges = consent_modal_focusable;\n focused_modal = consent_modal;\n\n consent_modal_visible = true;\n consent_modal.removeAttribute('aria-hidden');\n\n setTimeout(function() {\n _addClass(html_dom, \"show--consent\");\n _log(\"CookieConsent [MODAL]: show consent_modal\");\n }, delay > 0 ? delay : (create_modal ? 30 : 0));\n\n }\n\n /**\n * Hide consent modal\n */\n _cookieconsent.hide = function(){\n\n if(!consent_modal_exists)\n return;\n\n consent_modal_visible = false;\n\n setFocus(cmFocusSpan);\n\n consent_modal.setAttribute('aria-hidden', 'true');\n _removeClass(html_dom, \"show--consent\");\n\n setFocus(last_elem_before_modal);\n last_elem_before_modal = null;\n\n _log(\"CookieConsent [MODAL]: hide\");\n }\n\n /**\n * Show settings modal (with optional delay)\n * @param {number} delay\n */\n _cookieconsent.showSettings = function(delay){\n\n settings_modal_visible = true;\n settings_container.removeAttribute('aria-hidden');\n\n if(consent_modal_visible){\n last_consent_modal_btn_focus = getActiveElement();\n }else{\n last_elem_before_modal = getActiveElement();\n }\n\n focused_modal = settings_container;\n focusable_edges = settings_modal_focusable;\n\n setTimeout(function() {\n _addClass(html_dom, \"show--settings\");\n _log(\"CookieConsent [SETTINGS]: show settings_modal\");\n }, delay > 0 ? delay : 0);\n }\n\n /**\n * Hide settings modal\n */\n _cookieconsent.hideSettings = function(){\n\n settings_modal_visible = false;\n\n discardUnsavedToggles();\n\n setFocus(smFocusSpan);\n\n settings_container.setAttribute('aria-hidden', 'true');\n _removeClass(html_dom, \"show--settings\");\n\n if(consent_modal_visible){\n\n setFocus(last_consent_modal_btn_focus);\n last_consent_modal_btn_focus = null;\n\n focused_modal = consent_modal;\n focusable_edges = consent_modal_focusable;\n }else{\n setFocus(last_elem_before_modal);\n last_elem_before_modal = null;\n }\n\n _log(\"CookieConsent [SETTINGS]: hide settings_modal\");\n }\n\n /**\n * Accept cookieconsent function API\n * @param {string[]|string} _categories - Categories to accept\n * @param {string[]} [_exclusions] - Excluded categories [optional]\n */\n _cookieconsent.accept = function(_categories, _exclusions){\n var categories = _categories || undefined;\n var exclusions = _exclusions || [];\n var to_accept = [];\n\n /**\n * Get all accepted categories\n * @returns {string[]}\n */\n var _getCurrentPreferences = function(){\n var toggles = document.querySelectorAll('.c-tgl') || [];\n var states = [];\n\n for(var i=0; i= 1){\n for(i=0; i 0){\n for(var i=0; i<_cookies.length; i++){\n this.validCookie(_cookies[i]) && cookies.push(_cookies[i]);\n }\n }else{\n this.validCookie(_cookies) && cookies.push(_cookies);\n }\n\n _eraseCookies(cookies, _path, domains);\n }\n\n /**\n * Set cookie, by specifying name and value\n * @param {string} name\n * @param {string} value\n */\n var _setCookie = function(name, value) {\n\n var cookie_expiration = _config.cookie_expiration;\n\n if(typeof _config.cookie_necessary_only_expiration === 'number' && accept_type === 'necessary')\n cookie_expiration = _config.cookie_necessary_only_expiration;\n\n value = _config.use_rfc_cookie ? encodeURIComponent(value) : value;\n\n var date = new Date();\n date.setTime(date.getTime() + (1000 * (cookie_expiration * 24 * 60 * 60)));\n var expires = \"; expires=\" + date.toUTCString();\n\n var cookieStr = name + \"=\" + (value || \"\") + expires + \"; Path=\" + _config.cookie_path + \";\";\n cookieStr += \" SameSite=\" + _config.cookie_same_site + \";\";\n\n // assures cookie works with localhost (=> don't specify domain if on localhost)\n if(location.hostname.indexOf(\".\") > -1 && _config.cookie_domain){\n cookieStr += \" Domain=\" + _config.cookie_domain + \";\";\n }\n\n if(location.protocol === \"https:\") {\n cookieStr += \" Secure;\";\n }\n\n document.cookie = cookieStr;\n\n _log(\"CookieConsent [SET_COOKIE]: '\" + name + \"' expires after \" + cookie_expiration + \" day(s)\");\n }\n\n /**\n * Get cookie value by name,\n * returns the cookie value if found (or an array\n * of cookies if filter provided), otherwise empty string: \"\"\n * @param {string} name\n * @param {string} filter 'one' or 'all'\n * @param {boolean} [get_value] set to true to obtain its value\n * @returns {string|string[]}\n */\n var _getCookie = function(name, filter, get_value) {\n var found;\n\n if(filter === 'one'){\n found = document.cookie.match(\"(^|;)\\\\s*\" + name + \"\\\\s*=\\\\s*([^;]+)\");\n found = found ? (get_value ? found.pop() : name) : \"\";\n\n if(found && name === _config.cookie_name){\n try{\n found = JSON.parse(found)\n }catch(e){\n try {\n found = JSON.parse(decodeURIComponent(found))\n } catch (e) {\n // if I got here => cookie value is not a valid json string\n found = {};\n }\n }\n found = JSON.stringify(found);\n }\n }else if(filter === 'all'){\n // array of names of all existing cookies\n var cookies = document.cookie.split(/;\\s*/); found = [];\n for(var i=0; i}\n */\n var toggles = settings_inner.querySelectorAll('.c-tgl');\n\n for(var i=0; iom cookies.',\r\n // }\r\n // ]\r\n // }\r\n // },\r\n // en: {\r\n // consent_modal: {\r\n // title: 'I use cookies',\r\n // description: 'Hi, this website uses essential cookies to ensure its proper operation and tracking cookies to understand how you interact with it. The latter will be set only upon approval. Read more',\r\n // primary_btn: {\r\n // text: 'Accept',\r\n // role: 'accept_all' // 'accept_selected' or 'accept_all'\r\n // },\r\n // secondary_btn: {\r\n // text: 'Settings',\r\n // role: 'settings' // 'settings' or 'accept_necessary'\r\n // }\r\n // },\r\n // settings_modal: {\r\n // title: 'Cookie preferences',\r\n // save_settings_btn: 'Save settings',\r\n // accept_all_btn: 'Accept all',\r\n // reject_all_btn: 'Reject all', // optional, [v.2.5.0 +]\r\n // cookie_table_headers: [\r\n // { col1: 'Name' },\r\n // { col2: 'Domain' },\r\n // { col3: 'Expiration' },\r\n // { col4: 'Description' },\r\n // { col5: 'Type' }\r\n // ],\r\n // blocks: [\r\n // {\r\n // title: 'Cookie usage',\r\n // description: 'I use cookies to ensure the basic functionalities of the website and to enhance your online experience. You can choose for each category to opt-in/out whenever you want.'\r\n // }, {\r\n // title: 'Strictly necessary cookies',\r\n // description: 'These cookies are essential for the proper functioning of my website. Without these cookies, the website would not work properly.',\r\n // toggle: {\r\n // value: 'necessary',\r\n // enabled: true,\r\n // readonly: true\r\n // }\r\n // }, {\r\n // title: 'Analytics cookies',\r\n // description: 'These cookies collect information about how you use the website, which pages you visited and which links you clicked on. All of the data is anonymized and cannot be used to identify you.',\r\n // toggle: {\r\n // value: 'analytics',\r\n // enabled: false,\r\n // readonly: false\r\n // },\r\n // cookie_table: [\r\n // {\r\n // col1: '^_ga',\r\n // col2: 'google.com',\r\n // col3: '2 years',\r\n // col4: 'description ...',\r\n // col5: 'Permanent cookie',\r\n // is_regex: true\r\n // },\r\n // {\r\n // col1: '_gid',\r\n // col2: 'google.com',\r\n // col3: '1 day',\r\n // col4: 'description ...',\r\n // col5: 'Permanent cookie'\r\n // }\r\n // ]\r\n // }, {\r\n // title: 'More information',\r\n // description: 'For any queries in relation to my policy on cookies and your choices, please contact me.',\r\n // }\r\n // ]\r\n // }\r\n // }\r\n // }\r\n //});\r\n\r\n\r\n\r\n});"],"names":["init","window","root","user_config","consent_date","last_consent_update","consent_uuid","focusable_edges","focused_modal","cmFocusSpan","smFocusSpan","all_table_headers","all_blocks","onAccept","onChange","onFirstAction","accept_type","last_elem_before_modal","last_consent_modal_btn_focus","main_container","all_modals_container","consent_modal","consent_modal_title","consent_modal_description","consent_primary_btn","consent_secondary_btn","consent_buttons","consent_modal_inner","settings_container","settings_inner","settings_title","settings_close_btn","settings_blocks","new_settings_blocks","settings_buttons","settings_save_btn","settings_accept_all_btn","settings_reject_all_btn","_config","location","hostname","_cookieconsent","saved_cookie_content","cookie_data","invalid_consent","consent_modal_exists","consent_modal_visible","settings_modal_visible","revision_enabled","valid_revision","changed_settings","reload_page","accepted_categories","rejected_categories","default_enabled_categories","is_bot","consent_modal_focusable","settings_modal_focusable","toggle_states","all_categories","readonly_categories","html_dom","document","documentElement","_setConfig","_user_config","_log","cookie_expiration","cookie_necessary_only_expiration","autorun","cookie_domain","cookie_same_site","cookie_path","cookie_name","mode","revision","autoclear_cookies","use_rfc_cookie","hide_from_bots","navigator","userAgent","test","webdriver","page_scripts","auto_language","current_lang","_resolveCurrentLang","languages","_addDataButtonListeners","elem","_a","show_settings","_getElements","accept_all","accept_necessary","accept_custom_selection","i","length","setAttribute","_addEvent","event","preventDefault","showSettings","_acceptAction","data_role","querySelectorAll","e","accept","hideSettings","hide","_getValidatedLanguage","lang","all_languages","hasOwnProperty","_getKeys","_createConsentModal","_addClass","_createNode","consent_modal_inner_inner","overlay","id","tabIndex","appendChild","style","visibility","opacity","consent_modal_title_value","innerHTML","description","replace","_accept_type","primary_btn_data","secondary_btn_data","className","generateFocusSpan","firstElementChild","gui_options_data","_createSettingsModal","settings_container_valign","settings","settings_container_inner","settings_header","settings_close_btn_container","clickedInsideModal","contains","target","evt","keyCode","settings_modal_config","table_caption","n_blocks","title_data","description_data","toggle_data","cookie_table_data","remove_cookie_tables","isExpandable","block_section","block_table_container","block_desc","insertAdjacentHTML","block_title_container","accordion_id","block_title_btn","block_switch_label","block_switch","block_switch_span","label_text_span","block_switch_span_on_icon","block_switch_span_off_icon","type","cookie_category","value","textContent","checked","push","_inArray","disabled","accordion","btn","_hasClass","_removeClass","block_title","tr_tmp_fragment","createDocumentFragment","p","th1","obj","new_column_key","tr_tmp","thead","block_table","caption","tbody_fragment","n","tr","g","td_tmp","tbody","reject_all_btn_text","replaceChild","updateLanguage","force","new_validated_lang","_autoclearCookies","clearOnFirstAction","len","count","all_cookies_array","_getCookie","domains","slice","non_www_domain","substr","curr_block","category_just_disabled","curr_cookie_table","ckey","clen","j","curr_domains","curr_row","found_cookies","curr_cookie_name","is_regex","curr_cookie_domain","curr_cookie_path","match","found_index","_eraseCookies","arr","indexOf","print_msg","optional_param","error","console","log","undefined","el","createElement","requested_language","_getBrowserLang","browser_lang","language","browserLanguage","toLowerCase","allowedCategory","allowed_categories","JSON","parse","run","getElementById","cookie_consent_accepted","Date","position","children","body","_createCookieConsentHTML","allowed_focusable_types","_getAllFocusableElements","modal","_array","focusable_elems","join","_getModalFocusableData","gui_options","only_consent_modal","consent_modal_options","settings_modal_options","_setLayout","allowed_layouts","allowed_positions","allowed_transitions","layout","transition","split","_guiManager","show","setTimeout","key","activeElement","getActiveElement","shiftKey","setFocus","_manageExistingScripts","rfc_prop_exists","_setCookie","stringify","_getAcceptType","_getCurrentCategoriesState","enabled_categories","scripts","script_selector","_loadScripts","index","curr_script","curr_script_category","getAttribute","removeAttribute","src","fresh_script","destination","source","attributes","attr_name","nodeName","readyState","onreadystatechange","onload","parentNode","set","field","data","new_data","same_type","get","prop","_setCookieData","getConfig","filter","category","accepted","rejected","currentCategoriesState","necessary_categories_length","getUserPreferences","loadScript","callback","attrs","function_defined","querySelector","script","head","updateScripts","delay","create_modal","discardUnsavedToggles","_categories","_exclusions","categories","exclusions","to_accept","toggles","states","_getCurrentPreferences","item","includes","category_toggles","c","crypto","msCrypto","getRandomValues","Uint8Array","toString","toISOString","reload","_saveCookiePreferences","eraseCookies","_cookies","_path","_domain","cookies","this","validCookie","name","encodeURIComponent","date","setTime","getTime","cookieStr","toUTCString","protocol","cookie","get_value","found","pop","decodeURIComponent","custom_path","path","validConsent","fn","isPassive","addEventListener","passive","Object","keys","classname","classList","add","remove","modal_id","span","HTMLElement","focus","is_readonly","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","module","__webpack_modules__","getter","__esModule","d","a","definition","o","defineProperty","enumerable","prototype","call","cookieconsent","initCookieConsent","fetch","host","then","config","json","secure","swap_buttons","settings_modal","user_preferences","changed_preferences","catch","err","warn"],"sourceRoot":""}