@nationalarchives/frontend 0.2.4 → 0.2.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"analytics.js","mappings":"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","sources":["webpack://TNAFrontend/webpack/universalModuleDefinition","webpack://TNAFrontend/webpack/bootstrap","webpack://TNAFrontend/webpack/runtime/define property getters","webpack://TNAFrontend/webpack/runtime/hasOwnProperty shorthand","webpack://TNAFrontend/webpack/runtime/make namespace object","webpack://TNAFrontend/./src/nationalarchives/lib/cookies.mjs","webpack://TNAFrontend/./src/nationalarchives/lib/analytics-helpers.mjs","webpack://TNAFrontend/./src/nationalarchives/components/accordion/analytics.js","webpack://TNAFrontend/./src/nationalarchives/components/breadcrumbs/analytics.js","webpack://TNAFrontend/./src/nationalarchives/components/checkboxes/analytics.js","webpack://TNAFrontend/./src/nationalarchives/components/details/analytics.js","webpack://TNAFrontend/./src/nationalarchives/components/footer/analytics.js","webpack://TNAFrontend/./src/nationalarchives/components/gallery/analytics.js","webpack://TNAFrontend/./src/nationalarchives/components/global-header/analytics.js","webpack://TNAFrontend/./src/nationalarchives/components/header/analytics.js","webpack://TNAFrontend/./src/nationalarchives/components/picture/analytics.js","webpack://TNAFrontend/./src/nationalarchives/components/radios/analytics.js","webpack://TNAFrontend/./src/nationalarchives/components/search-field/analytics.js","webpack://TNAFrontend/./src/nationalarchives/components/text-input/analytics.js","webpack://TNAFrontend/./src/nationalarchives/components/textarea/analytics.js","webpack://TNAFrontend/./src/nationalarchives/analytics.mjs","webpack://TNAFrontend/./src/nationalarchives/components/hero/analytics.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"TNAFrontendAnalytics\"] = factory();\n\telse\n\t\troot[\"TNAFrontendAnalytics\"] = factory();\n})(self, () => {\nreturn ","// The require scope\nvar __webpack_require__ = {};\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","window.TNAFrontendCookies = window.TNAFrontendCookies || null;\nwindow.TNAFrontendCookieEvents = window.TNAFrontendCookieEvents || null;\n\nexport class CookieEventHandler {\n events = {};\n oneTimeEvents = {};\n\n constructor() {\n if (window.TNAFrontendCookieEvents) {\n return window.TNAFrontendCookieEvents;\n }\n window.TNAFrontendCookieEvents = this;\n }\n\n /**\n * Add an event listener.\n * @param {String} event - The event to add a listener for.\n * @param {Function} callback - The callback function to call when the event is triggered.\n */\n on(event, callback) {\n if (!Object.hasOwn(this.events, event)) {\n this.events[event] = [];\n }\n this.events[event] = [...this.events[event], callback];\n }\n\n once(event, callback) {\n if (!Object.hasOwn(this.oneTimeEvents, event)) {\n this.oneTimeEvents[event] = [];\n }\n this.oneTimeEvents[event] = [...this.oneTimeEvents[event], callback];\n }\n\n /** @protected */\n trigger(event, data = {}) {\n if (Object.hasOwn(this.events, event)) {\n this.events[event].forEach((eventToTrigger) =>\n eventToTrigger.call(this, data),\n );\n }\n if (Object.hasOwn(this.oneTimeEvents, event)) {\n for (let i = this.oneTimeEvents[event].length - 1; i >= 0; i--) {\n const eventToTrigger = this.oneTimeEvents[event][i];\n eventToTrigger.call(this, data);\n this.oneTimeEvents[event].splice(i, 1);\n }\n }\n }\n}\n\n/**\n * Class to handle cookies.\n * @class Cookies\n * @constructor\n * @public\n */\nexport default class Cookies {\n /** @protected */\n extraPolicies = [];\n /** @protected */\n domain = \"\";\n /** @protected */\n path = \"\";\n /** @protected */\n secure = true;\n /** @protected */\n policiesKey = \"\";\n /** @protected */\n events = null;\n\n /**\n * Create a cookie handler.\n * @param {String} [options.extraPolicies=[]] - The extra cookie policies to manage in addition to essential, settings and usage.\n * @param {String} [options.domain=\"\"] - The domain to register the cookie with.\n * @param {String} [options.path=\"\"] - The domain to register the cookie with.\n * @param {String} [options.secure=true] - Only set cookie in HTTPS environments.\n * @param {String} [options.policiesKey=\"cookies_policy\"] - The name of the cookie.\n * @param {String} [options.newInstance=false] - Create a fresh instance of the cookie class.\n */\n constructor(options = {}) {\n const {\n extraPolicies = [],\n domain = \"\",\n path = \"/\",\n secure = true,\n policiesKey = \"cookies_policy\",\n newInstance = false,\n } = options;\n if (newInstance) {\n this.destroyInstance();\n } else if (window.TNAFrontendCookies) {\n return window.TNAFrontendCookies;\n }\n this.extraPolicies = extraPolicies;\n this.domain = domain;\n this.path = path;\n this.secure = secure;\n this.policiesKey = policiesKey;\n this.events = new CookieEventHandler();\n this.init();\n window.TNAFrontendCookies = this;\n }\n\n /** @protected */\n init() {\n this.savePolicies({\n ...Object.fromEntries(\n this.extraPolicies.map((k) => [k.toLowerCase(), false]),\n ),\n usage: false,\n settings: false,\n ...this.policies,\n essential: true,\n });\n }\n\n destroyInstance() {\n window.TNAFrontendCookies = null;\n }\n\n /** @protected */\n get all() {\n const deserialised = {};\n document.cookie\n .split(\"; \")\n .filter((x) => x)\n .forEach((cookie) => {\n const parts = cookie.trim().split(\"=\");\n if (parts[0]) {\n deserialised[parts[0]] = parts[1];\n }\n });\n return deserialised;\n }\n\n /** @protected */\n get policies() {\n try {\n return JSON.parse(this.get(this.policiesKey) || \"{}\");\n } catch (e) {\n return {};\n }\n }\n\n /**\n * Check to see whether a cookie exists or not.\n * @param {String} key - The cookie name.\n * @returns {Boolean}\n */\n exists(key) {\n return Object.hasOwn(this.all, key);\n }\n\n /**\n * Check to see whether a cookie has a particular value.\n * @param {String} key - The cookie name.\n * @param {String|Number|Boolean} value - The value to check against.\n * @returns\n */\n hasValue(key, value) {\n return this.get(key) == value;\n }\n\n /**\n * Get a cookie.\n * @param {String} key - The cookie name.\n * @returns {String|Number|Boolean}\n */\n get(key) {\n return this.exists(key) ? decodeURIComponent(this.all[key]) : null;\n }\n\n /**\n * Set a cookie.\n * @param {String} key - The cookie name.\n * @param {String|Number|Boolean} value - The cookie value.\n * @param {Object} options\n * @param {Number|null} [options.maxAge=null] - The maximum age of the cookie in seconds.\n * @param {String} [options.path=/] - The path to register the cookie for.\n * @param {String} [options.sameSite=Lax] - The sameSite attribute.\n * @param {String} [options.domain=this.domain] - The domain to register the cookie with.\n * @param {String} [options.path=this.path] - The path to register the cookie with.\n * @param {String} [options.secure=this.secure] - Only set cookie in HTTPS environments.\n */\n set(key, value, options = {}) {\n const {\n maxAge = null,\n sameSite = \"Lax\",\n domain = this.domain,\n path = this.path,\n secure = this.secure,\n } = options;\n if (!key) {\n return;\n }\n const cookie = `${encodeURIComponent(key)}=${encodeURIComponent(value)};${\n domain ? ` domain=${domain}; ` : \"\"\n } samesite=${sameSite}; path=${path}${maxAge !== null ? `; max-age=${maxAge}` : \"\"}${\n secure ? \"; secure\" : \"\"\n }`;\n document.cookie = cookie;\n this.events.trigger(\"setCookie\", {\n key,\n value,\n maxAge,\n path,\n sameSite,\n domain,\n secure,\n cookie,\n });\n }\n\n /**\n * Delete a cookie.\n * @param {String} key - The cookie name.\n * @param {String} [path=/] - The path to the cookie is registered on.\n */\n delete(key, path = \"/\", domain = null) {\n const options = { maxAge: -1, path, domain: domain || undefined };\n this.set(key, \"\", options);\n this.events.trigger(\"deleteCookie\", { key, ...options });\n }\n\n /**\n * Delete all cookies.\n */\n deleteAll(path = \"/\", domain = null) {\n Object.keys(this.all).forEach((cookie) => {\n this.delete(cookie, path, domain);\n });\n this.events.trigger(\"deleteAllCookies\", { path, domain });\n }\n\n /**\n * Accept a policy.\n * @param {String} policy - The name of the policy.\n */\n acceptPolicy(policy) {\n this.setPolicy(policy, true);\n this.events.trigger(\"acceptPolicy\", policy);\n this.events.trigger(\"changePolicy\", { [policy]: true });\n }\n\n /**\n * Reject a policy.\n * @param {String} policy - The name of the policy.\n */\n rejectPolicy(policy) {\n this.setPolicy(policy, false);\n this.events.trigger(\"rejectPolicy\", policy);\n this.events.trigger(\"changePolicy\", { [policy]: false });\n }\n\n /**\n * Set a policy.\n * @param {String} policy - The name of the policy.\n * @param {Boolean} accepted - Whether the policy is accepted or not.\n */\n setPolicy(policy, accepted) {\n if (policy === \"essential\") {\n return;\n }\n this.savePolicies({\n ...this.policies,\n [policy]: accepted,\n essential: true,\n });\n this.events.trigger(\"changePolicy\", { [policy]: accepted });\n }\n\n /**\n * Accept all the cookie policies.\n */\n acceptAllPolicies() {\n const allPolicies = Object.fromEntries(\n Object.keys(this.policies).map((k) => [k.toLowerCase(), true]),\n );\n this.savePolicies(allPolicies);\n this.events.trigger(\"acceptAllPolicies\");\n this.events.trigger(\"changePolicy\", allPolicies);\n }\n\n /**\n * Reject all the cookie policies.\n */\n rejectAllPolicies() {\n const allPolicies = {\n ...Object.fromEntries(\n Object.keys(this.policies).map((k) => [k.toLowerCase(), false]),\n ),\n essential: true,\n };\n this.savePolicies(allPolicies);\n this.events.trigger(\"rejectAllPolicies\");\n this.events.trigger(\"changePolicy\", allPolicies);\n }\n\n /**\n * Commit policy preferences to the browser.\n * @param {object} policies - The policies to commit.\n */\n savePolicies(policies) {\n this.set(this.policiesKey, JSON.stringify(policies));\n }\n\n /**\n * Get the acceptance status of a policy.\n * @param {String} policy - The name of the policy.\n * @returns {Boolean}\n */\n isPolicyAccepted(policy) {\n return Object.hasOwn(this.policies, policy)\n ? this.policies[policy] === true\n : null;\n }\n\n /**\n * Add an event listener.\n * @param {String} event - The event to add a listener for.\n * @param {Function} callback - The callback function to call when the event is triggered.\n */\n on(event, callback) {\n this.events.on(event, callback);\n }\n\n /**\n * Add a one-time event listener.\n * @param {String} event - The event to add a listener for.\n * @param {Function} callback - The callback function to call when the event is triggered.\n */\n once(event, callback) {\n this.events.once(event, callback);\n }\n}\n","const getXPathTo = ($element) => {\n if ($element.id !== \"\") {\n return 'id(\"' + $element.id + '\")';\n }\n if ($element === document.body) {\n return $element.tagName;\n }\n let ix = 0;\n const siblings = $element.parentNode.childNodes;\n for (let i = 0; i < siblings.length; i++) {\n const sibling = siblings[i];\n if (sibling === $element)\n return (\n getXPathTo($element.parentNode) +\n \"/\" +\n $element.tagName +\n \"[\" +\n (ix + 1) +\n \"]\"\n );\n if (sibling.nodeType === 1 && sibling.tagName === $element.tagName) ix++;\n }\n};\n\nconst includesAny = (arr, values) => values.some((v) => arr.includes(v));\n\nconst getClosestHeading = ($element) => {\n let heading = \"\";\n let $search = $element;\n do {\n while ($search.previousElementSibling) {\n $search = $search.previousElementSibling;\n if (\n [\"h1\", \"h2\", \"h3\", \"h4\", \"h5\", \"h6\"].includes($search.tagName) ||\n ($search.classList.length &&\n includesAny(Array.from($search.classList), [\n \"tna-heading-xl\",\n \"tna-heading-l\",\n \"tna-heading-m\",\n \"tna-heading-s\",\n ]))\n ) {\n heading = $search.innerText;\n break;\n }\n }\n $search = $search.parentElement;\n } while ($search.parentElement && !heading);\n return heading;\n};\n\nconst valueGetters = {\n text: ($el) => $el.innerText,\n html: ($el) => $el.innerHTML,\n value: ($el) => $el.value,\n index: ($el, $scope, event, index) => index,\n checked: ($el) => ($el.checked ? \"checked\" : \"unchecked\"),\n expanded: ($el) => {\n const expanded = $el.getAttribute(\"aria-expanded\");\n if (expanded === null) {\n return null;\n }\n return expanded.toString() === \"true\" ? \"opened\" : \"closed\";\n },\n closestHeading: ($el) => getClosestHeading($el),\n};\n\nexport { getXPathTo, getClosestHeading, valueGetters };\n","import { valueGetters } from \"../../lib/analytics-helpers.mjs\";\n\nexport default [\n {\n scope: \".tna-accordion\",\n areaName: \"accordion\",\n events: [\n {\n eventName: \"click\",\n targetElement: \".tna-accordion__summary\",\n on: \"click\",\n data: { state: valueGetters.expanded, value: valueGetters.text },\n },\n ],\n },\n];\n","import { valueGetters } from \"../../lib/analytics-helpers.mjs\";\n\nexport default [\n {\n scope: \".tna-breadcrumbs\",\n areaName: \"breadcrumbs\",\n events: [\n {\n eventName: \"click\",\n targetElement:\n \".tna-breadcrumbs__item--expandable button.tna-breadcrumbs__link\",\n on: \"click\",\n data: { state: \"expand\", value: valueGetters.html },\n },\n ],\n },\n];\n","import { valueGetters } from \"../../lib/analytics-helpers.mjs\";\n\nexport default [\n {\n scope: \".tna-checkboxes\",\n areaName: \"checkboxes\",\n events: [\n {\n eventName: \"toggle\",\n targetElement: \".tna-checkboxes__item input\",\n on: \"change\",\n data: {\n state: valueGetters.checked,\n // eslint-disable-next-line no-unused-vars\n value: ($el, $scope, event) => $el.parentNode.innerText,\n // eslint-disable-next-line no-unused-vars\n group: ($el, $scope, event) =>\n $scope\n .closest(\".tna-form__group\")\n ?.querySelector(\".tna-form__heading\")?.innerText,\n },\n },\n ],\n },\n];\n","import { valueGetters } from \"../../lib/analytics-helpers.mjs\";\n\nexport default [\n {\n scope: \".tna-details\",\n areaName: \"details\",\n events: [\n {\n eventName: \"click\",\n targetElement: \".tna-details__summary\",\n on: \"click\",\n data: {\n // eslint-disable-next-line no-unused-vars\n state: ($el, $scope, event) => {\n const wasExpanded =\n $scope\n .querySelector(\".tna-details__details\")\n ?.hasAttribute(\"open\") ?? false;\n return wasExpanded ? \"closed\" : \"opened\";\n },\n // eslint-disable-next-line no-unused-vars\n value: valueGetters.text,\n },\n },\n ],\n },\n];\n","import { valueGetters } from \"../../lib/analytics-helpers.mjs\";\n\nexport default [\n {\n scope: \".tna-footer\",\n areaName: \"footer\",\n rootEventName: \"global_navigation\",\n events: [\n {\n eventName: \"link.click\",\n targetElement: \".tna-footer__navigation-block-item-link\",\n on: \"click\",\n data: {\n value: valueGetters.text,\n },\n rootData: {\n data_component_name: \"Footer\",\n data_link_type: \"Link\",\n data_section: valueGetters.closestHeading,\n data_link: valueGetters.text,\n },\n },\n {\n eventName: \"social_link.click\",\n targetElement: \".tna-footer__social-item-link\",\n on: \"click\",\n data: {\n value: valueGetters.text,\n },\n rootData: {\n data_component_name: \"Footer\",\n data_link_type: \"Icon\",\n data_section: \"Social media\",\n data_link: ($el) => $el.getAttribute(\"data-name\"),\n },\n },\n {\n eventName: \"legal_link.click\",\n targetElement: \".tna-footer__legal-item-link\",\n on: \"click\",\n data: {\n value: valueGetters.text,\n },\n rootData: {\n data_component_name: \"Footer\",\n data_link_type: \"Link\",\n data_section: \"Legal information\",\n data_link: valueGetters.text,\n },\n },\n {\n eventName: \"mailing_list.click\",\n targetElement: \".tna-footer__mailing-list a.tna-button\",\n on: \"click\",\n data: {\n value: valueGetters.text,\n },\n rootData: {\n data_component_name: \"Footer\",\n data_link_type: \"Button\",\n data_section: \"Mailing list\",\n data_link: valueGetters.text,\n },\n },\n {\n eventName: \"ogl.click\",\n targetElement: \".tna-footer__licence p a.tna-footer__link\",\n on: \"click\",\n data: {\n value: valueGetters.text,\n },\n rootData: {\n data_component_name: \"Footer\",\n data_link_type: \"Link\",\n data_section: \"OGL\",\n data_link: valueGetters.text,\n },\n },\n {\n eventName: \"govuk.click\",\n targetElement: \".tna-footer__govuk-link\",\n on: \"click\",\n data: {\n value: valueGetters.text,\n },\n rootData: {\n data_component_name: \"Footer\",\n data_link_type: \"Logo\",\n data_section: \"GOV.UK\",\n data_link: valueGetters.text,\n },\n },\n {\n eventName: \"theme.change\",\n targetElement: \".tna-footer__theme-selector-button\",\n on: \"click\",\n data: {\n value: valueGetters.value,\n },\n },\n ],\n },\n];\n","import { valueGetters } from \"../../lib/analytics-helpers.mjs\";\n\nexport default [\n {\n scope: \".tna-gallery\",\n areaName: \"gallery\",\n events: [\n {\n eventName: \"click\",\n targetElement: \".tna-gallery__navigation-item\",\n on: \"click\",\n data: {\n value: valueGetters.text,\n },\n },\n {\n eventName: \"click\",\n targetElement: \".tna-gallery__navigation-prev\",\n on: \"click\",\n data: {\n value: ($el, $scope) =>\n $scope.querySelector(\n \".tna-gallery__item:not([hidden]) .tna-gallery__item-header\",\n ).innerText,\n },\n },\n {\n eventName: \"click\",\n targetElement: \".tna-gallery__navigation-next\",\n on: \"click\",\n data: {\n value: ($el, $scope) =>\n $scope.querySelector(\n \".tna-gallery__item:not([hidden]) .tna-gallery__item-header\",\n ).innerText,\n },\n },\n {\n eventName: \"keypress\",\n on: \"keydown\",\n data: {\n value: ($el, $scope, event) => event.key,\n },\n },\n {\n eventName: \"enter-fullscreen\",\n targetElement: '.tna-gallery__options button[value=\"enter-fullscreen\"]',\n on: \"click\",\n },\n {\n eventName: \"exit-fullscreen\",\n targetElement: '.tna-gallery__options button[value=\"exit-fullscreen\"]',\n on: \"click\",\n },\n {\n eventName: \"index\",\n targetElement: '.tna-gallery__options button[value=\"show-index\"]',\n on: \"click\",\n },\n ],\n },\n];\n","import { valueGetters } from \"../../lib/analytics-helpers.mjs\";\n\nexport default [\n {\n scope: \".tna-global-header\",\n areaName: \"header\",\n rootEventName: \"global_navigation\",\n events: [\n {\n eventName: \"toggle\",\n targetElement: \".tna-global-header__navigation-button\",\n on: \"click\",\n data: {\n state: valueGetters.expanded,\n },\n rootData: {\n data_component_name: \"Header\",\n data_link_type: \"Mobile menu\",\n data_link: ($el) => {\n const expanded = $el.getAttribute(\"aria-expanded\");\n if (expanded === null) {\n return null;\n }\n return expanded.toString() === \"true\" ? \"Open menu\" : \"Close menu\";\n },\n data_section: \"Burger menu\",\n },\n },\n {\n eventName: \"logo.click\",\n targetElement: \".tna-global-header__logo\",\n on: \"click\",\n rootData: {\n data_component_name: \"Header\",\n data_link_type: \"Logo\",\n data_link: \"The National Archives\",\n data_section: \"Top navigation and logo\",\n },\n },\n {\n eventName: \"primary_link.click\",\n targetElement: \".tna-global-header__navigation-item-link\",\n on: \"click\",\n data: {\n value: valueGetters.text,\n },\n rootData: {\n data_component_name: \"Header\",\n data_link_type: \"Menu\",\n data_section: valueGetters.text,\n data_position: 1,\n data_link: valueGetters.text,\n },\n },\n {\n eventName: \"secondary_link.click\",\n targetElement: \".tna-global-header__top-navigation-link\",\n on: \"click\",\n data: {\n value: valueGetters.text,\n },\n rootData: {\n data_component_name: \"Header\",\n data_link_type: \"Icon\",\n data_link: valueGetters.text,\n data_section: \"Top navigation and logo\",\n },\n },\n ],\n },\n];\n","import { valueGetters } from \"../../lib/analytics-helpers.mjs\";\n\nexport default [\n {\n scope: \".tna-header\",\n areaName: \"header\",\n events: [\n {\n eventName: \"toggle\",\n targetElement: \".tna-header__navigation-toggle-button\",\n on: \"click\",\n data: {\n state: valueGetters.expanded,\n },\n },\n ],\n },\n];\n","import {\n getClosestHeading,\n valueGetters,\n} from \"../../lib/analytics-helpers.mjs\";\n\nexport default [\n {\n scope: \".tna-picture\",\n areaName: \"picture\",\n events: [\n {\n eventName: \"toggle_transcript\",\n targetElement: \".tna-picture__toggle-transcript\",\n on: \"click\",\n data: {\n state: valueGetters.expanded,\n // eslint-disable-next-line no-unused-vars\n value: ($el, $scope, event) => {\n const heading = getClosestHeading($scope);\n const image = $scope.querySelector(\".tna-picture__image\");\n const imageSrc = image.getAttribute(\"src\");\n const imageAlt = image.getAttribute(\"alt\");\n const value = `${imageAlt} (${imageSrc})`;\n return heading ? `${heading} > ${value}` : value;\n },\n },\n },\n ],\n },\n];\n","import { valueGetters } from \"../../lib/analytics-helpers.mjs\";\n\nexport default [\n {\n scope: \".tna-radios\",\n areaName: \"radios\",\n events: [\n {\n eventName: \"toggle\",\n targetElement: \".tna-radios__item input\",\n on: \"change\",\n data: {\n state: valueGetters.checked,\n // eslint-disable-next-line no-unused-vars\n value: ($el, $scope, event) => $el.parentNode.innerText,\n // eslint-disable-next-line no-unused-vars\n group: ($el, $scope, event) =>\n $scope\n .closest(\".tna-form__group\")\n ?.querySelector(\".tna-form__heading\")?.innerText,\n },\n },\n ],\n },\n];\n","import { valueGetters } from \"../../lib/analytics-helpers.mjs\";\n\nexport default [\n {\n scope: \".tna-search-field\",\n areaName: \"search-field\",\n events: [\n {\n eventName: \"blurred\",\n targetElement: \".tna-search-field__input\",\n on: \"blur\",\n data: {\n // eslint-disable-next-line no-unused-vars\n value: valueGetters.value,\n // eslint-disable-next-line no-unused-vars\n group: ($el, $scope, event) =>\n $scope.querySelector(\".tna-form__heading\")?.innerText,\n },\n },\n ],\n },\n];\n","import { valueGetters } from \"../../lib/analytics-helpers.mjs\";\n\nexport default [\n {\n scope: \".tna-text-input\",\n areaName: \"text-input\",\n events: [\n {\n eventName: \"blurred\",\n on: \"blur\",\n data: {\n // eslint-disable-next-line no-unused-vars\n value: valueGetters.value,\n // eslint-disable-next-line no-unused-vars\n group: ($el, $scope, event) =>\n $scope\n .closest(\".tna-form__group\")\n ?.querySelector(\".tna-form__heading\")?.innerText,\n },\n },\n ],\n },\n];\n","import { valueGetters } from \"../../lib/analytics-helpers.mjs\";\n\nexport default [\n {\n scope: \".tna-textarea\",\n areaName: \"textarea\",\n events: [\n {\n eventName: \"blurred\",\n on: \"blur\",\n data: {\n // eslint-disable-next-line no-unused-vars\n value: valueGetters.value,\n // eslint-disable-next-line no-unused-vars\n group: ($el, $scope, event) =>\n $scope\n .closest(\".tna-form__group\")\n ?.querySelector(\".tna-form__heading\")?.innerText,\n },\n },\n ],\n },\n];\n","import Cookies from \"./lib/cookies.mjs\";\nimport {\n getXPathTo,\n getClosestHeading,\n valueGetters,\n} from \"./lib/analytics-helpers.mjs\";\nimport AccordionAnalytics from \"./components/accordion/analytics.js\";\nimport BreadcrumbAnalytics from \"./components/breadcrumbs/analytics.js\";\nimport CheckboxesAnalytics from \"./components/checkboxes/analytics.js\";\nimport DetailsAnalytics from \"./components/details/analytics.js\";\nimport FooterAnalytics from \"./components/footer/analytics.js\";\nimport GalleryAnalytics from \"./components/gallery/analytics.js\";\nimport GlobalHeaderAnalytics from \"./components/global-header/analytics.js\";\nimport HeaderAnalytics from \"./components/header/analytics.js\";\nimport HeroAnalytics from \"./components/hero/analytics.js\";\nimport PictureAnalytics from \"./components/picture/analytics.js\";\nimport RadiosAnalytics from \"./components/radios/analytics.js\";\nimport SearchFieldAnalytics from \"./components/search-field/analytics.js\";\nimport TextInputAnalytics from \"./components/text-input/analytics.js\";\nimport TextareaAnalytics from \"./components/textarea/analytics.js\";\n\nconst componentAnalytics = [\n ...AccordionAnalytics,\n ...BreadcrumbAnalytics,\n ...CheckboxesAnalytics,\n ...DetailsAnalytics,\n ...FooterAnalytics,\n ...GalleryAnalytics,\n ...GlobalHeaderAnalytics,\n ...HeaderAnalytics,\n ...HeroAnalytics,\n ...PictureAnalytics,\n ...RadiosAnalytics,\n ...SearchFieldAnalytics,\n ...TextInputAnalytics,\n ...TextareaAnalytics,\n];\n\nclass EventTracker {\n /** @protected */\n cookies = new (window.TNAFrontend?.Cookies || Cookies)();\n\n /** @protected */\n events = [];\n\n /** @protected */\n startTime = new Date();\n\n /** @protected */\n prefix = \"tna\";\n\n /** @protected */\n addTrackingCode = true;\n\n constructor(options = {}) {\n const { prefix = null, addTrackingCode = true } = options;\n if (prefix) {\n this.prefix = prefix;\n }\n this.addTrackingCode = addTrackingCode;\n }\n\n start(initAll) {\n if (!navigator.doNotTrack || navigator.doNotTrack !== 1) {\n if (this.cookies.isPolicyAccepted(\"usage\")) {\n this.enableTracking();\n }\n this.cookies.on(\"changePolicy\", (policies) => {\n if (Object.hasOwn(policies, \"usage\")) {\n if (policies[\"usage\"]) {\n this.enableTracking();\n } else {\n this.disableTracking();\n }\n }\n });\n if (initAll) {\n this.initAll();\n }\n }\n }\n\n enableTracking() {}\n\n disableTracking() {}\n\n /**\n * Initialise all TNA Frontend component analytics.\n */\n initAll() {\n componentAnalytics.forEach((componentConfig) => {\n this.addListeners(\n componentConfig.scope,\n componentConfig.areaName,\n componentConfig.events,\n componentConfig.rootEventName || \"\",\n );\n });\n }\n\n /**\n * Add an event listener.\n * @param {String|HTMLElement} scope - The element to which the listener is scoped.\n * @param {String} areaName - The name of the component to pass on to the tracker.\n * @param {{eventName: String, targetElement: String|undefined, on: String, data: {value: Function|String|undefined, state: Function|String|undefined, group: Function|String|undefined, [String]: String|Integer}, rootData:{[String]: Function|String}}[]} events - The configuration of events to track along with their optional value and state which can be computed.\n * @param {String} rootEventName - The event name to use if specified (prefix).\n */\n addListeners(scope, areaName, events, rootEventName = \"\") {\n let scopeArray;\n if (typeof scope === \"string\") {\n scopeArray = Array.from(document.querySelectorAll(scope));\n } else if (typeof scope === \"object\") {\n scopeArray = [scope];\n }\n if (!scopeArray) {\n return;\n }\n scopeArray.forEach(($scope) => {\n events.forEach((eventConfig) => {\n if (!eventConfig.on) {\n return;\n }\n if (eventConfig.targetElement) {\n Array.from(\n $scope.querySelectorAll(eventConfig.targetElement),\n ).forEach(($el, index) =>\n this.attachListener(\n $el,\n $scope,\n rootEventName,\n eventConfig,\n scope,\n areaName,\n index + 1,\n ),\n );\n } else {\n this.attachListener(\n $scope,\n $scope,\n rootEventName,\n eventConfig,\n scope,\n areaName,\n 1,\n );\n }\n });\n });\n }\n\n /** @protected */\n generateEventName(areaName, eventConfig) {\n return `${this.prefix}.${areaName}.${eventConfig.eventName || eventConfig.on}`;\n }\n\n /** @protected */\n attachListener(\n $el,\n $scope,\n rootEventName,\n eventConfig,\n scope,\n areaName,\n index,\n ) {\n const { on, data, targetElement, rootData = {} } = eventConfig;\n $el.addEventListener(on, (event) =>\n this.recordEvent(\n rootEventName\n ? `${this.prefix}.${rootEventName}`\n : this.generateEventName(areaName, eventConfig),\n {\n ...data,\n name: this.generateEventName(areaName, eventConfig),\n value: data?.value\n ? this.computedValue(data.value, $el, $scope, event, index)\n : null,\n state: data?.state\n ? this.computedValue(data.state, $el, $scope, event, index)\n : null,\n group: data?.group\n ? this.computedValue(data.group, $el, $scope, event, index)\n : null,\n xPath: getXPathTo($el),\n targetElement: targetElement,\n timeSincePageLoad: new Date() - this.startTime,\n index,\n scope,\n areaName,\n },\n Object.fromEntries(\n Object.entries(rootData).map(([key, value]) => [\n key,\n this.computedValue(value, $el, $scope, event, index),\n ]),\n ),\n ),\n );\n }\n\n /** @protected */\n computedValue(value, $el, $scope, event, index) {\n return typeof value === \"function\"\n ? value.call(this, $el, $scope, event, index)\n : (value ?? null);\n }\n\n /** @protected */\n recordEvent(eventName, data, rootData = {}) {\n this.events.push({\n event: eventName,\n [`${this.prefix}.event`]: data,\n ...rootData,\n });\n }\n\n /** @protected */\n getTnaMetaTags() {\n return Object.fromEntries(\n Array.from(\n document.head.querySelectorAll(\n `meta[name^='${this.prefix}.'][content]`,\n ),\n ).map(($metaEl) => [\n $metaEl.getAttribute(\"name\"),\n $metaEl.getAttribute(\"content\"),\n ]),\n );\n }\n}\n\n/**\n * Class to handle Google Analytics 4 reporting.\n * @class GA4\n * @extends EventTracker\n * @constructor\n * @public\n */\nclass GA4 extends EventTracker {\n /** @protected */\n trackingCodeAdded = false;\n\n /** @protected */\n trackingEnabled = false;\n\n /** @protected */\n gTagId;\n\n constructor(options = {}) {\n if (window.TNAFrontendAnalytics) {\n return window.TNAFrontendAnalytics;\n }\n const {\n id = \"\",\n prefix = null,\n initAll = true,\n addTrackingCode = true,\n } = options;\n super({ prefix, addTrackingCode });\n window.TNAFrontendAnalytics = this;\n this.gTagId = id;\n this.ga4Disable = `ga-disable-${this.gTagId}`;\n window.dataLayer = window.dataLayer || [];\n if (!this.cookies.isPolicyAccepted(\"usage\")) {\n window[this.ga4Disable] = true;\n this.cookies.set(this.ga4Disable, \"true\", { maxAge: 31536000 });\n }\n this.start(initAll);\n }\n\n destroy() {\n window.TNAFrontendAnalytics = null;\n }\n\n /** @protected */\n recordEvent(eventName, data, rootData = {}) {\n const ga4Data = {\n event: eventName,\n ...Object.fromEntries(\n Object.entries(data).map(([key, value]) => [\n `${this.prefix}.event.${key}`,\n value,\n ]),\n ),\n ...rootData,\n };\n this.pushToDataLayer(ga4Data);\n }\n\n /** @protected */\n gtag() {\n this.pushToDataLayer(arguments);\n }\n\n /** @protected */\n pushToDataLayer(data) {\n window.dataLayer.push(data);\n }\n\n /** @protected */\n enableTracking() {\n if (!this.trackingEnabled) {\n window[this.ga4Disable] = false;\n this.cookies.set(this.ga4Disable, \"false\", { maxAge: 31536000 });\n if (!this.trackingCodeAdded && this.addTrackingCode) {\n if (!this.gTagId) {\n throw Error(\"ID was not specified\");\n }\n this.pushToDataLayer({\n \"gtm.start\": new Date().getTime(),\n event: \"gtm.js\",\n });\n const firstScript = document.getElementsByTagName(\"script\")[0];\n const script = document.createElement(\"script\");\n script.async = true;\n script.src = `https://www.googletagmanager.com/gtm.js?id=${this.gTagId}&l=dataLayer`;\n if (firstScript) {\n firstScript.parentNode.insertBefore(script, firstScript);\n } else {\n document.head.appendChild(script);\n }\n this.trackingCodeAdded = true;\n const tnaMetaTags = this.getTnaMetaTags();\n if (Object.keys(tnaMetaTags).length) {\n this.pushToDataLayer(tnaMetaTags);\n }\n }\n this.trackingEnabled = true;\n }\n }\n\n /** @protected */\n disableTracking() {\n if (this.trackingEnabled) {\n window[this.ga4Disable] = true;\n this.cookies.set(this.ga4Disable, \"true\", { maxAge: 31536000 });\n Object.keys(this.cookies.all).forEach((key) => {\n if (key.startsWith(\"_ga\")) {\n this.cookies.delete(key);\n }\n });\n this.trackingEnabled = false;\n // window.location.reload();\n }\n }\n}\n\nconst helpers = { getXPathTo, getClosestHeading, valueGetters };\n\nexport { EventTracker, GA4, helpers };\n","export default [\n {\n scope: \".tna-hero\",\n areaName: \"hero\",\n events: [\n {\n eventName: \"toggle_caption\",\n targetElement: \".tna-hero__details-summary\",\n on: \"click\",\n data: {\n // eslint-disable-next-line no-unused-vars\n state: ($el, $scope, event) => {\n const wasExpanded =\n $scope\n .querySelector(\".tna-hero__details\")\n ?.hasAttribute(\"open\") ?? false;\n return wasExpanded ? \"closed\" : \"opened\";\n },\n // eslint-disable-next-line no-unused-vars\n value: ($el, $scope, event) =>\n $scope.querySelector(\"img[alt]\")?.getAttribute(\"alt\"),\n },\n },\n ],\n },\n];\n"],"names":["root","factory","exports","module","define","amd","self","__webpack_require__","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","Symbol","toStringTag","value","window","TNAFrontendCookies","TNAFrontendCookieEvents","CookieEventHandler","_createClass","_classCallCheck","_defineProperty","this","event","callback","hasOwn","events","concat","_toConsumableArray","oneTimeEvents","_this","data","arguments","length","undefined","forEach","eventToTrigger","i","splice","Cookies","options","_options$extraPolicie","extraPolicies","_options$domain","domain","_options$path","path","_options$secure","secure","_options$policiesKey","policiesKey","_options$newInstance","newInstance","destroyInstance","init","savePolicies","_objectSpread","fromEntries","map","k","toLowerCase","usage","settings","policies","essential","deserialised","document","cookie","split","filter","x","parts","trim","JSON","parse","e","all","exists","decodeURIComponent","_options$maxAge","maxAge","_options$sameSite","sameSite","_options$domain2","_options$path2","_options$secure2","encodeURIComponent","trigger","set","_this2","keys","policy","setPolicy","accepted","allPolicies","stringify","on","once","getXPathTo","$element","id","body","tagName","ix","siblings","parentNode","childNodes","sibling","nodeType","includesAny","arr","values","some","v","includes","getClosestHeading","heading","$search","previousElementSibling","classList","Array","from","innerText","parentElement","valueGetters","text","$el","html","innerHTML","index","$scope","checked","expanded","getAttribute","toString","closestHeading","scope","areaName","eventName","targetElement","state","group","_$scope$closest","closest","querySelector","_$scope$querySelector","_$scope$querySelector2","hasAttribute","rootEventName","rootData","data_component_name","data_link_type","data_section","data_link","data_position","image","imageSrc","imageAlt","componentAnalytics","BreadcrumbAnalytics","CheckboxesAnalytics","DetailsAnalytics","FooterAnalytics","GalleryAnalytics","GlobalHeaderAnalytics","HeaderAnalytics","_$scope$querySelector3","PictureAnalytics","RadiosAnalytics","SearchFieldAnalytics","TextInputAnalytics","TextareaAnalytics","EventTracker","_window$TNAFrontend","TNAFrontend","Date","_options$prefix","prefix","_options$addTrackingC","addTrackingCode","initAll","navigator","doNotTrack","cookies","isPolicyAccepted","enableTracking","disableTracking","componentConfig","addListeners","scopeArray","_this3","querySelectorAll","_typeof","eventConfig","attachListener","_this4","_eventConfig$rootData","addEventListener","recordEvent","generateEventName","name","computedValue","xPath","timeSincePageLoad","startTime","entries","_ref","_ref2","_slicedToArray","push","head","$metaEl","GA4","_EventTracker2","_this5","TNAFrontendAnalytics","_possibleConstructorReturn","_options$id","_options$prefix2","_options$initAll","_options$addTrackingC2","_callSuper","gTagId","ga4Disable","dataLayer","start","_inherits","_this6","ga4Data","_ref3","_ref4","pushToDataLayer","trackingEnabled","trackingCodeAdded","Error","getTime","firstScript","getElementsByTagName","script","createElement","async","src","insertBefore","appendChild","tnaMetaTags","getTnaMetaTags","_this7","startsWith","helpers"],"sourceRoot":""}
1
+ {"version":3,"file":"analytics.js","mappings":"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","sources":["webpack://TNAFrontend/webpack/universalModuleDefinition","webpack://TNAFrontend/webpack/bootstrap","webpack://TNAFrontend/webpack/runtime/define property getters","webpack://TNAFrontend/webpack/runtime/hasOwnProperty shorthand","webpack://TNAFrontend/webpack/runtime/make namespace object","webpack://TNAFrontend/./src/nationalarchives/lib/cookies.mjs","webpack://TNAFrontend/./src/nationalarchives/lib/analytics-helpers.mjs","webpack://TNAFrontend/./src/nationalarchives/components/accordion/analytics.js","webpack://TNAFrontend/./src/nationalarchives/components/breadcrumbs/analytics.js","webpack://TNAFrontend/./src/nationalarchives/components/checkboxes/analytics.js","webpack://TNAFrontend/./src/nationalarchives/components/details/analytics.js","webpack://TNAFrontend/./src/nationalarchives/components/footer/analytics.js","webpack://TNAFrontend/./src/nationalarchives/components/gallery/analytics.js","webpack://TNAFrontend/./src/nationalarchives/components/global-header/analytics.js","webpack://TNAFrontend/./src/nationalarchives/components/header/analytics.js","webpack://TNAFrontend/./src/nationalarchives/components/picture/analytics.js","webpack://TNAFrontend/./src/nationalarchives/components/radios/analytics.js","webpack://TNAFrontend/./src/nationalarchives/components/search-field/analytics.js","webpack://TNAFrontend/./src/nationalarchives/components/text-input/analytics.js","webpack://TNAFrontend/./src/nationalarchives/components/textarea/analytics.js","webpack://TNAFrontend/./src/nationalarchives/analytics.mjs","webpack://TNAFrontend/./src/nationalarchives/components/hero/analytics.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"TNAFrontendAnalytics\"] = factory();\n\telse\n\t\troot[\"TNAFrontendAnalytics\"] = factory();\n})(self, () => {\nreturn ","// The require scope\nvar __webpack_require__ = {};\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","window.TNAFrontendCookies = window.TNAFrontendCookies || null;\nwindow.TNAFrontendCookieEvents = window.TNAFrontendCookieEvents || null;\n\nexport class CookieEventHandler {\n events = {};\n oneTimeEvents = {};\n\n constructor() {\n if (window.TNAFrontendCookieEvents) {\n return window.TNAFrontendCookieEvents;\n }\n window.TNAFrontendCookieEvents = this;\n }\n\n /**\n * Add an event listener.\n * @param {String} event - The event to add a listener for.\n * @param {Function} callback - The callback function to call when the event is triggered.\n */\n on(event, callback) {\n if (!Object.hasOwn(this.events, event)) {\n this.events[event] = [];\n }\n this.events[event] = [...this.events[event], callback];\n }\n\n once(event, callback) {\n if (!Object.hasOwn(this.oneTimeEvents, event)) {\n this.oneTimeEvents[event] = [];\n }\n this.oneTimeEvents[event] = [...this.oneTimeEvents[event], callback];\n }\n\n /** @protected */\n trigger(event, data = {}) {\n if (Object.hasOwn(this.events, event)) {\n this.events[event].forEach((eventToTrigger) =>\n eventToTrigger.call(this, data),\n );\n }\n if (Object.hasOwn(this.oneTimeEvents, event)) {\n for (let i = this.oneTimeEvents[event].length - 1; i >= 0; i--) {\n const eventToTrigger = this.oneTimeEvents[event][i];\n eventToTrigger.call(this, data);\n this.oneTimeEvents[event].splice(i, 1);\n }\n }\n }\n}\n\n/**\n * Class to handle cookies.\n * @class Cookies\n * @constructor\n * @public\n */\nexport default class Cookies {\n /** @protected */\n extraPolicies = [];\n /** @protected */\n domain = \"\";\n /** @protected */\n path = \"\";\n /** @protected */\n secure = true;\n /** @protected */\n policiesKey = \"\";\n /** @protected */\n events = null;\n /** @protected */\n defaultAge = null;\n\n /**\n * Create a cookie handler.\n * @param {String} [options.extraPolicies=[]] - The extra cookie policies to manage in addition to essential, settings and usage.\n * @param {String} [options.domain=\"\"] - The domain to register the cookie with.\n * @param {String} [options.path=\"\"] - The domain to register the cookie with.\n * @param {String} [options.secure=true] - Only set cookie in HTTPS environments.\n * @param {String} [options.policiesKey=\"cookies_policy\"] - The name of the cookie.\n * @param {String} [options.newInstance=false] - Create a fresh instance of the cookie class.\n * @param {String} [options.defaultAge=31536000] - The default age of non-session cookies.\n */\n constructor(options = {}) {\n const {\n extraPolicies = [],\n domain = \"\",\n path = \"/\",\n secure = true,\n policiesKey = \"cookies_policy\",\n newInstance = false,\n defaultAge = 31536000, // 365 days\n } = options;\n if (newInstance) {\n this.destroyInstance();\n } else if (window.TNAFrontendCookies) {\n return window.TNAFrontendCookies;\n }\n this.extraPolicies = extraPolicies;\n this.domain = domain;\n this.path = path;\n this.secure = secure;\n this.policiesKey = policiesKey;\n this.defaultAge = defaultAge;\n this.events = new CookieEventHandler();\n this.init();\n window.TNAFrontendCookies = this;\n }\n\n /** @protected */\n init() {\n this.savePolicies({\n ...Object.fromEntries(\n this.extraPolicies.map((k) => [k.toLowerCase(), false]),\n ),\n usage: false,\n settings: false,\n ...this.policies,\n essential: true,\n });\n }\n\n destroyInstance() {\n window.TNAFrontendCookies = null;\n }\n\n /** @protected */\n get all() {\n const deserialised = {};\n document.cookie\n .split(\"; \")\n .filter((x) => x)\n .forEach((cookie) => {\n const parts = cookie.trim().split(\"=\");\n if (parts[0]) {\n deserialised[parts[0]] = parts[1];\n }\n });\n return deserialised;\n }\n\n /** @protected */\n get policies() {\n try {\n return JSON.parse(this.get(this.policiesKey) || \"{}\");\n } catch (e) {\n return {};\n }\n }\n\n /**\n * Check to see whether a cookie exists or not.\n * @param {String} key - The cookie name.\n * @returns {Boolean}\n */\n exists(key) {\n return Object.hasOwn(this.all, key);\n }\n\n /**\n * Check to see whether a cookie has a particular value.\n * @param {String} key - The cookie name.\n * @param {String|Number|Boolean} value - The value to check against.\n * @returns\n */\n hasValue(key, value) {\n return this.get(key) == value;\n }\n\n /**\n * Get a cookie.\n * @param {String} key - The cookie name.\n * @returns {String|Number|Boolean}\n */\n get(key) {\n return this.exists(key) ? decodeURIComponent(this.all[key]) : null;\n }\n\n /**\n * Set a cookie.\n * @param {String} key - The cookie name.\n * @param {String|Number|Boolean} value - The cookie value.\n * @param {Object} options\n * @param {Number} [options.maxAge=this.defaultAge] - The maximum age of the cookie in seconds.\n * @param {String} [options.path=/] - The path to register the cookie for.\n * @param {String} [options.sameSite=Lax] - The sameSite attribute.\n * @param {String} [options.domain=this.domain] - The domain to register the cookie with.\n * @param {String} [options.path=this.path] - The path to register the cookie with.\n * @param {String} [options.secure=this.secure] - Only set cookie in HTTPS environments.\n * @param {String} [options.session=false] - Set a session cookie.\n */\n set(key, value, options = {}) {\n const {\n maxAge = this.defaultAge,\n sameSite = \"Lax\",\n domain = this.domain,\n path = this.path,\n secure = this.secure,\n session = false,\n } = options;\n if (!key) {\n return;\n }\n const cookie = `${encodeURIComponent(key)}=${encodeURIComponent(value)};${\n domain ? ` domain=${domain}; ` : \"\"\n } samesite=${sameSite}; path=${path}${!session ? `; max-age=${maxAge}` : \"\"}${\n secure ? \"; secure\" : \"\"\n }`;\n document.cookie = cookie;\n this.events.trigger(\"setCookie\", {\n key,\n value,\n maxAge,\n path,\n sameSite,\n domain,\n secure,\n session,\n cookie,\n });\n }\n\n /**\n * Delete a cookie.\n * @param {String} key - The cookie name.\n * @param {String} [path=/] - The path to the cookie is registered on.\n */\n delete(key, path = \"/\", domain = null) {\n const options = { maxAge: -1, path, domain: domain || undefined };\n this.set(key, \"\", options);\n this.events.trigger(\"deleteCookie\", { key, ...options });\n }\n\n /**\n * Delete all cookies.\n */\n deleteAll(path = \"/\", domain = null) {\n Object.keys(this.all).forEach((cookie) => {\n this.delete(cookie, path, domain);\n });\n this.events.trigger(\"deleteAllCookies\", { path, domain });\n }\n\n /**\n * Accept a policy.\n * @param {String} policy - The name of the policy.\n */\n acceptPolicy(policy) {\n this.setPolicy(policy, true);\n this.events.trigger(\"acceptPolicy\", policy);\n this.events.trigger(\"changePolicy\", { [policy]: true });\n }\n\n /**\n * Reject a policy.\n * @param {String} policy - The name of the policy.\n */\n rejectPolicy(policy) {\n this.setPolicy(policy, false);\n this.events.trigger(\"rejectPolicy\", policy);\n this.events.trigger(\"changePolicy\", { [policy]: false });\n }\n\n /**\n * Set a policy.\n * @param {String} policy - The name of the policy.\n * @param {Boolean} accepted - Whether the policy is accepted or not.\n */\n setPolicy(policy, accepted) {\n if (policy === \"essential\") {\n return;\n }\n this.savePolicies({\n ...this.policies,\n [policy]: accepted,\n essential: true,\n });\n this.events.trigger(\"changePolicy\", { [policy]: accepted });\n }\n\n /**\n * Accept all the cookie policies.\n */\n acceptAllPolicies() {\n const allPolicies = Object.fromEntries(\n Object.keys(this.policies).map((k) => [k.toLowerCase(), true]),\n );\n this.savePolicies(allPolicies);\n this.events.trigger(\"acceptAllPolicies\");\n this.events.trigger(\"changePolicy\", allPolicies);\n }\n\n /**\n * Reject all the cookie policies.\n */\n rejectAllPolicies() {\n const allPolicies = {\n ...Object.fromEntries(\n Object.keys(this.policies).map((k) => [k.toLowerCase(), false]),\n ),\n essential: true,\n };\n this.savePolicies(allPolicies);\n this.events.trigger(\"rejectAllPolicies\");\n this.events.trigger(\"changePolicy\", allPolicies);\n }\n\n /**\n * Commit policy preferences to the browser.\n * @param {object} policies - The policies to commit.\n */\n savePolicies(policies) {\n this.set(this.policiesKey, JSON.stringify(policies), {\n maxAge: 60 * 60 * 24 * 365,\n });\n }\n\n /**\n * Get the acceptance status of a policy.\n * @param {String} policy - The name of the policy.\n * @returns {Boolean}\n */\n isPolicyAccepted(policy) {\n return Object.hasOwn(this.policies, policy)\n ? this.policies[policy] === true\n : null;\n }\n\n /**\n * Add an event listener.\n * @param {String} event - The event to add a listener for.\n * @param {Function} callback - The callback function to call when the event is triggered.\n */\n on(event, callback) {\n this.events.on(event, callback);\n }\n\n /**\n * Add a one-time event listener.\n * @param {String} event - The event to add a listener for.\n * @param {Function} callback - The callback function to call when the event is triggered.\n */\n once(event, callback) {\n this.events.once(event, callback);\n }\n}\n","const getXPathTo = ($element) => {\n if ($element.id !== \"\") {\n return 'id(\"' + $element.id + '\")';\n }\n if ($element === document.body) {\n return $element.tagName;\n }\n let ix = 0;\n const siblings = $element.parentNode.childNodes;\n for (let i = 0; i < siblings.length; i++) {\n const sibling = siblings[i];\n if (sibling === $element)\n return (\n getXPathTo($element.parentNode) +\n \"/\" +\n $element.tagName +\n \"[\" +\n (ix + 1) +\n \"]\"\n );\n if (sibling.nodeType === 1 && sibling.tagName === $element.tagName) ix++;\n }\n};\n\nconst includesAny = (arr, values) => values.some((v) => arr.includes(v));\n\nconst getClosestHeading = ($element) => {\n let heading = \"\";\n let $search = $element;\n do {\n while ($search.previousElementSibling) {\n $search = $search.previousElementSibling;\n if (\n [\"h1\", \"h2\", \"h3\", \"h4\", \"h5\", \"h6\"].includes($search.tagName) ||\n ($search.classList.length &&\n includesAny(Array.from($search.classList), [\n \"tna-heading-xl\",\n \"tna-heading-l\",\n \"tna-heading-m\",\n \"tna-heading-s\",\n ]))\n ) {\n heading = $search.innerText;\n break;\n }\n }\n $search = $search.parentElement;\n } while ($search.parentElement && !heading);\n return heading;\n};\n\nconst valueGetters = {\n text: ($el) => $el.innerText,\n html: ($el) => $el.innerHTML,\n value: ($el) => $el.value,\n index: ($el, $scope, event, index) => index,\n checked: ($el) => ($el.checked ? \"checked\" : \"unchecked\"),\n expanded: ($el) => {\n const expanded = $el.getAttribute(\"aria-expanded\");\n if (expanded === null) {\n return null;\n }\n return expanded.toString() === \"true\" ? \"opened\" : \"closed\";\n },\n closestHeading: ($el) => getClosestHeading($el),\n};\n\nexport { getXPathTo, getClosestHeading, valueGetters };\n","import { valueGetters } from \"../../lib/analytics-helpers.mjs\";\n\nexport default [\n {\n scope: \".tna-accordion\",\n areaName: \"accordion\",\n events: [\n {\n eventName: \"click\",\n targetElement: \".tna-accordion__summary\",\n on: \"click\",\n data: { state: valueGetters.expanded, value: valueGetters.text },\n },\n ],\n },\n];\n","import { valueGetters } from \"../../lib/analytics-helpers.mjs\";\n\nexport default [\n {\n scope: \".tna-breadcrumbs\",\n areaName: \"breadcrumbs\",\n events: [\n {\n eventName: \"click\",\n targetElement:\n \".tna-breadcrumbs__item--expandable button.tna-breadcrumbs__link\",\n on: \"click\",\n data: { state: \"expand\", value: valueGetters.html },\n },\n ],\n },\n];\n","import { valueGetters } from \"../../lib/analytics-helpers.mjs\";\n\nexport default [\n {\n scope: \".tna-checkboxes\",\n areaName: \"checkboxes\",\n events: [\n {\n eventName: \"toggle\",\n targetElement: \".tna-checkboxes__item input\",\n on: \"change\",\n data: {\n state: valueGetters.checked,\n // eslint-disable-next-line no-unused-vars\n value: ($el, $scope, event) => $el.parentNode.innerText,\n // eslint-disable-next-line no-unused-vars\n group: ($el, $scope, event) =>\n $scope\n .closest(\".tna-form__group\")\n ?.querySelector(\".tna-form__heading\")?.innerText,\n },\n },\n ],\n },\n];\n","import { valueGetters } from \"../../lib/analytics-helpers.mjs\";\n\nexport default [\n {\n scope: \".tna-details\",\n areaName: \"details\",\n events: [\n {\n eventName: \"click\",\n targetElement: \".tna-details__summary\",\n on: \"click\",\n data: {\n // eslint-disable-next-line no-unused-vars\n state: ($el, $scope, event) => {\n const wasExpanded =\n $scope\n .querySelector(\".tna-details__details\")\n ?.hasAttribute(\"open\") ?? false;\n return wasExpanded ? \"closed\" : \"opened\";\n },\n // eslint-disable-next-line no-unused-vars\n value: valueGetters.text,\n },\n },\n ],\n },\n];\n","import { valueGetters } from \"../../lib/analytics-helpers.mjs\";\n\nexport default [\n {\n scope: \".tna-footer\",\n areaName: \"footer\",\n rootEventName: \"global_navigation\",\n events: [\n {\n eventName: \"link.click\",\n targetElement: \".tna-footer__navigation-block-item-link\",\n on: \"click\",\n data: {\n value: valueGetters.text,\n },\n rootData: {\n data_component_name: \"Footer\",\n data_link_type: \"Link\",\n data_section: valueGetters.closestHeading,\n data_link: valueGetters.text,\n },\n },\n {\n eventName: \"social_link.click\",\n targetElement: \".tna-footer__social-item-link\",\n on: \"click\",\n data: {\n value: valueGetters.text,\n },\n rootData: {\n data_component_name: \"Footer\",\n data_link_type: \"Icon\",\n data_section: \"Social media\",\n data_link: ($el) => $el.getAttribute(\"data-name\"),\n },\n },\n {\n eventName: \"legal_link.click\",\n targetElement: \".tna-footer__legal-item-link\",\n on: \"click\",\n data: {\n value: valueGetters.text,\n },\n rootData: {\n data_component_name: \"Footer\",\n data_link_type: \"Link\",\n data_section: \"Legal information\",\n data_link: valueGetters.text,\n },\n },\n {\n eventName: \"mailing_list.click\",\n targetElement: \".tna-footer__mailing-list a.tna-button\",\n on: \"click\",\n data: {\n value: valueGetters.text,\n },\n rootData: {\n data_component_name: \"Footer\",\n data_link_type: \"Button\",\n data_section: \"Mailing list\",\n data_link: valueGetters.text,\n },\n },\n {\n eventName: \"ogl.click\",\n targetElement: \".tna-footer__licence p a.tna-footer__link\",\n on: \"click\",\n data: {\n value: valueGetters.text,\n },\n rootData: {\n data_component_name: \"Footer\",\n data_link_type: \"Link\",\n data_section: \"OGL\",\n data_link: valueGetters.text,\n },\n },\n {\n eventName: \"govuk.click\",\n targetElement: \".tna-footer__govuk-link\",\n on: \"click\",\n data: {\n value: valueGetters.text,\n },\n rootData: {\n data_component_name: \"Footer\",\n data_link_type: \"Logo\",\n data_section: \"GOV.UK\",\n data_link: valueGetters.text,\n },\n },\n {\n eventName: \"theme.change\",\n targetElement: \".tna-footer__theme-selector-button\",\n on: \"click\",\n data: {\n value: valueGetters.value,\n },\n },\n ],\n },\n];\n","import { valueGetters } from \"../../lib/analytics-helpers.mjs\";\n\nexport default [\n {\n scope: \".tna-gallery\",\n areaName: \"gallery\",\n events: [\n {\n eventName: \"click\",\n targetElement: \".tna-gallery__navigation-item\",\n on: \"click\",\n data: {\n value: valueGetters.text,\n },\n },\n {\n eventName: \"click\",\n targetElement: \".tna-gallery__navigation-prev\",\n on: \"click\",\n data: {\n value: ($el, $scope) =>\n $scope.querySelector(\n \".tna-gallery__item:not([hidden]) .tna-gallery__item-header\",\n ).innerText,\n },\n },\n {\n eventName: \"click\",\n targetElement: \".tna-gallery__navigation-next\",\n on: \"click\",\n data: {\n value: ($el, $scope) =>\n $scope.querySelector(\n \".tna-gallery__item:not([hidden]) .tna-gallery__item-header\",\n ).innerText,\n },\n },\n {\n eventName: \"keypress\",\n on: \"keydown\",\n data: {\n value: ($el, $scope, event) => event.key,\n },\n },\n {\n eventName: \"enter-fullscreen\",\n targetElement: '.tna-gallery__options button[value=\"enter-fullscreen\"]',\n on: \"click\",\n },\n {\n eventName: \"exit-fullscreen\",\n targetElement: '.tna-gallery__options button[value=\"exit-fullscreen\"]',\n on: \"click\",\n },\n {\n eventName: \"index\",\n targetElement: '.tna-gallery__options button[value=\"show-index\"]',\n on: \"click\",\n },\n ],\n },\n];\n","import { valueGetters } from \"../../lib/analytics-helpers.mjs\";\n\nexport default [\n {\n scope: \".tna-global-header\",\n areaName: \"header\",\n rootEventName: \"global_navigation\",\n events: [\n {\n eventName: \"toggle\",\n targetElement: \".tna-global-header__navigation-button\",\n on: \"click\",\n data: {\n state: valueGetters.expanded,\n },\n rootData: {\n data_component_name: \"Header\",\n data_link_type: \"Mobile menu\",\n data_link: ($el) => {\n const expanded = $el.getAttribute(\"aria-expanded\");\n if (expanded === null) {\n return null;\n }\n return expanded.toString() === \"true\" ? \"Open menu\" : \"Close menu\";\n },\n data_section: \"Burger menu\",\n },\n },\n {\n eventName: \"logo.click\",\n targetElement: \".tna-global-header__logo\",\n on: \"click\",\n rootData: {\n data_component_name: \"Header\",\n data_link_type: \"Logo\",\n data_link: \"The National Archives\",\n data_section: \"Top navigation and logo\",\n },\n },\n {\n eventName: \"primary_link.click\",\n targetElement: \".tna-global-header__navigation-item-link\",\n on: \"click\",\n data: {\n value: valueGetters.text,\n },\n rootData: {\n data_component_name: \"Header\",\n data_link_type: \"Menu\",\n data_section: valueGetters.text,\n data_position: 1,\n data_link: valueGetters.text,\n },\n },\n {\n eventName: \"secondary_link.click\",\n targetElement: \".tna-global-header__top-navigation-link\",\n on: \"click\",\n data: {\n value: valueGetters.text,\n },\n rootData: {\n data_component_name: \"Header\",\n data_link_type: \"Icon\",\n data_link: valueGetters.text,\n data_section: \"Top navigation and logo\",\n },\n },\n ],\n },\n];\n","import { valueGetters } from \"../../lib/analytics-helpers.mjs\";\n\nexport default [\n {\n scope: \".tna-header\",\n areaName: \"header\",\n events: [\n {\n eventName: \"toggle\",\n targetElement: \".tna-header__navigation-toggle-button\",\n on: \"click\",\n data: {\n state: valueGetters.expanded,\n },\n },\n ],\n },\n];\n","import {\n getClosestHeading,\n valueGetters,\n} from \"../../lib/analytics-helpers.mjs\";\n\nexport default [\n {\n scope: \".tna-picture\",\n areaName: \"picture\",\n events: [\n {\n eventName: \"toggle_transcript\",\n targetElement: \".tna-picture__toggle-transcript\",\n on: \"click\",\n data: {\n state: valueGetters.expanded,\n // eslint-disable-next-line no-unused-vars\n value: ($el, $scope, event) => {\n const heading = getClosestHeading($scope);\n const image = $scope.querySelector(\".tna-picture__image\");\n const imageSrc = image.getAttribute(\"src\");\n const imageAlt = image.getAttribute(\"alt\");\n const value = `${imageAlt} (${imageSrc})`;\n return heading ? `${heading} > ${value}` : value;\n },\n },\n },\n ],\n },\n];\n","import { valueGetters } from \"../../lib/analytics-helpers.mjs\";\n\nexport default [\n {\n scope: \".tna-radios\",\n areaName: \"radios\",\n events: [\n {\n eventName: \"toggle\",\n targetElement: \".tna-radios__item input\",\n on: \"change\",\n data: {\n state: valueGetters.checked,\n // eslint-disable-next-line no-unused-vars\n value: ($el, $scope, event) => $el.parentNode.innerText,\n // eslint-disable-next-line no-unused-vars\n group: ($el, $scope, event) =>\n $scope\n .closest(\".tna-form__group\")\n ?.querySelector(\".tna-form__heading\")?.innerText,\n },\n },\n ],\n },\n];\n","import { valueGetters } from \"../../lib/analytics-helpers.mjs\";\n\nexport default [\n {\n scope: \".tna-search-field\",\n areaName: \"search-field\",\n events: [\n {\n eventName: \"blurred\",\n targetElement: \".tna-search-field__input\",\n on: \"blur\",\n data: {\n // eslint-disable-next-line no-unused-vars\n value: valueGetters.value,\n // eslint-disable-next-line no-unused-vars\n group: ($el, $scope, event) =>\n $scope.querySelector(\".tna-form__heading\")?.innerText,\n },\n },\n ],\n },\n];\n","import { valueGetters } from \"../../lib/analytics-helpers.mjs\";\n\nexport default [\n {\n scope: \".tna-text-input\",\n areaName: \"text-input\",\n events: [\n {\n eventName: \"blurred\",\n on: \"blur\",\n data: {\n // eslint-disable-next-line no-unused-vars\n value: valueGetters.value,\n // eslint-disable-next-line no-unused-vars\n group: ($el, $scope, event) =>\n $scope\n .closest(\".tna-form__group\")\n ?.querySelector(\".tna-form__heading\")?.innerText,\n },\n },\n ],\n },\n];\n","import { valueGetters } from \"../../lib/analytics-helpers.mjs\";\n\nexport default [\n {\n scope: \".tna-textarea\",\n areaName: \"textarea\",\n events: [\n {\n eventName: \"blurred\",\n on: \"blur\",\n data: {\n // eslint-disable-next-line no-unused-vars\n value: valueGetters.value,\n // eslint-disable-next-line no-unused-vars\n group: ($el, $scope, event) =>\n $scope\n .closest(\".tna-form__group\")\n ?.querySelector(\".tna-form__heading\")?.innerText,\n },\n },\n ],\n },\n];\n","import Cookies from \"./lib/cookies.mjs\";\nimport {\n getXPathTo,\n getClosestHeading,\n valueGetters,\n} from \"./lib/analytics-helpers.mjs\";\nimport AccordionAnalytics from \"./components/accordion/analytics.js\";\nimport BreadcrumbAnalytics from \"./components/breadcrumbs/analytics.js\";\nimport CheckboxesAnalytics from \"./components/checkboxes/analytics.js\";\nimport DetailsAnalytics from \"./components/details/analytics.js\";\nimport FooterAnalytics from \"./components/footer/analytics.js\";\nimport GalleryAnalytics from \"./components/gallery/analytics.js\";\nimport GlobalHeaderAnalytics from \"./components/global-header/analytics.js\";\nimport HeaderAnalytics from \"./components/header/analytics.js\";\nimport HeroAnalytics from \"./components/hero/analytics.js\";\nimport PictureAnalytics from \"./components/picture/analytics.js\";\nimport RadiosAnalytics from \"./components/radios/analytics.js\";\nimport SearchFieldAnalytics from \"./components/search-field/analytics.js\";\nimport TextInputAnalytics from \"./components/text-input/analytics.js\";\nimport TextareaAnalytics from \"./components/textarea/analytics.js\";\n\nconst componentAnalytics = [\n ...AccordionAnalytics,\n ...BreadcrumbAnalytics,\n ...CheckboxesAnalytics,\n ...DetailsAnalytics,\n ...FooterAnalytics,\n ...GalleryAnalytics,\n ...GlobalHeaderAnalytics,\n ...HeaderAnalytics,\n ...HeroAnalytics,\n ...PictureAnalytics,\n ...RadiosAnalytics,\n ...SearchFieldAnalytics,\n ...TextInputAnalytics,\n ...TextareaAnalytics,\n];\n\nclass EventTracker {\n /** @protected */\n cookies = new (window.TNAFrontend?.Cookies || Cookies)();\n\n /** @protected */\n events = [];\n\n /** @protected */\n startTime = new Date();\n\n /** @protected */\n prefix = \"tna\";\n\n /** @protected */\n addTrackingCode = true;\n\n constructor(options = {}) {\n const { prefix = null, addTrackingCode = true } = options;\n if (prefix) {\n this.prefix = prefix;\n }\n this.addTrackingCode = addTrackingCode;\n }\n\n start(initAll) {\n if (!navigator.doNotTrack || navigator.doNotTrack !== 1) {\n if (this.cookies.isPolicyAccepted(\"usage\")) {\n this.enableTracking();\n }\n this.cookies.on(\"changePolicy\", (policies) => {\n if (Object.hasOwn(policies, \"usage\")) {\n if (policies[\"usage\"]) {\n this.enableTracking();\n } else {\n this.disableTracking();\n }\n }\n });\n if (initAll) {\n this.initAll();\n }\n }\n }\n\n enableTracking() {}\n\n disableTracking() {}\n\n /**\n * Initialise all TNA Frontend component analytics.\n */\n initAll() {\n componentAnalytics.forEach((componentConfig) => {\n this.addListeners(\n componentConfig.scope,\n componentConfig.areaName,\n componentConfig.events,\n componentConfig.rootEventName || \"\",\n );\n });\n }\n\n /**\n * Add an event listener.\n * @param {String|HTMLElement} scope - The element to which the listener is scoped.\n * @param {String} areaName - The name of the component to pass on to the tracker.\n * @param {{eventName: String, targetElement: String|undefined, on: String, data: {value: Function|String|undefined, state: Function|String|undefined, group: Function|String|undefined, [String]: String|Integer}, rootData:{[String]: Function|String}}[]} events - The configuration of events to track along with their optional value and state which can be computed.\n * @param {String} rootEventName - The event name to use if specified (prefix).\n */\n addListeners(scope, areaName, events, rootEventName = \"\") {\n let scopeArray;\n if (typeof scope === \"string\") {\n scopeArray = Array.from(document.querySelectorAll(scope));\n } else if (typeof scope === \"object\") {\n scopeArray = [scope];\n }\n if (!scopeArray) {\n return;\n }\n scopeArray.forEach(($scope) => {\n events.forEach((eventConfig) => {\n if (!eventConfig.on) {\n return;\n }\n if (eventConfig.targetElement) {\n Array.from(\n $scope.querySelectorAll(eventConfig.targetElement),\n ).forEach(($el, index) =>\n this.attachListener(\n $el,\n $scope,\n rootEventName,\n eventConfig,\n scope,\n areaName,\n index + 1,\n ),\n );\n } else {\n this.attachListener(\n $scope,\n $scope,\n rootEventName,\n eventConfig,\n scope,\n areaName,\n 1,\n );\n }\n });\n });\n }\n\n /** @protected */\n generateEventName(areaName, eventConfig) {\n return `${this.prefix}.${areaName}.${eventConfig.eventName || eventConfig.on}`;\n }\n\n /** @protected */\n attachListener(\n $el,\n $scope,\n rootEventName,\n eventConfig,\n scope,\n areaName,\n index,\n ) {\n const { on, data, targetElement, rootData = {} } = eventConfig;\n $el.addEventListener(on, (event) =>\n this.recordEvent(\n rootEventName\n ? `${this.prefix}.${rootEventName}`\n : this.generateEventName(areaName, eventConfig),\n {\n ...data,\n name: this.generateEventName(areaName, eventConfig),\n value: data?.value\n ? this.computedValue(data.value, $el, $scope, event, index)\n : null,\n state: data?.state\n ? this.computedValue(data.state, $el, $scope, event, index)\n : null,\n group: data?.group\n ? this.computedValue(data.group, $el, $scope, event, index)\n : null,\n xPath: getXPathTo($el),\n targetElement: targetElement,\n timeSincePageLoad: new Date() - this.startTime,\n index,\n scope,\n areaName,\n },\n Object.fromEntries(\n Object.entries(rootData).map(([key, value]) => [\n key,\n this.computedValue(value, $el, $scope, event, index),\n ]),\n ),\n ),\n );\n }\n\n /** @protected */\n computedValue(value, $el, $scope, event, index) {\n return typeof value === \"function\"\n ? value.call(this, $el, $scope, event, index)\n : (value ?? null);\n }\n\n /** @protected */\n recordEvent(eventName, data, rootData = {}) {\n this.events.push({\n event: eventName,\n [`${this.prefix}.event`]: data,\n ...rootData,\n });\n }\n\n /** @protected */\n getTnaMetaTags() {\n return Object.fromEntries(\n Array.from(\n document.head.querySelectorAll(\n `meta[name^='${this.prefix}.'][content]`,\n ),\n ).map(($metaEl) => [\n $metaEl.getAttribute(\"name\"),\n $metaEl.getAttribute(\"content\"),\n ]),\n );\n }\n}\n\n/**\n * Class to handle Google Analytics 4 reporting.\n * @class GA4\n * @extends EventTracker\n * @constructor\n * @public\n */\nclass GA4 extends EventTracker {\n /** @protected */\n trackingCodeAdded = false;\n\n /** @protected */\n trackingEnabled = false;\n\n /** @protected */\n gTagId;\n\n constructor(options = {}) {\n if (window.TNAFrontendAnalytics) {\n return window.TNAFrontendAnalytics;\n }\n const {\n id = \"\",\n prefix = null,\n initAll = true,\n addTrackingCode = true,\n } = options;\n super({ prefix, addTrackingCode });\n window.TNAFrontendAnalytics = this;\n this.gTagId = id;\n this.ga4Disable = `ga-disable-${this.gTagId}`;\n window.dataLayer = window.dataLayer || [];\n if (!this.cookies.isPolicyAccepted(\"usage\")) {\n window[this.ga4Disable] = true;\n this.cookies.set(this.ga4Disable, \"true\");\n }\n this.start(initAll);\n }\n\n destroy() {\n window.TNAFrontendAnalytics = null;\n }\n\n /** @protected */\n recordEvent(eventName, data, rootData = {}) {\n const ga4Data = {\n event: eventName,\n ...Object.fromEntries(\n Object.entries(data).map(([key, value]) => [\n `${this.prefix}.event.${key}`,\n value,\n ]),\n ),\n ...rootData,\n };\n this.pushToDataLayer(ga4Data);\n }\n\n /** @protected */\n gtag() {\n this.pushToDataLayer(arguments);\n }\n\n /** @protected */\n pushToDataLayer(data) {\n window.dataLayer.push(data);\n }\n\n /** @protected */\n enableTracking() {\n if (!this.trackingEnabled) {\n window[this.ga4Disable] = false;\n this.cookies.set(this.ga4Disable, \"false\");\n if (!this.trackingCodeAdded && this.addTrackingCode) {\n if (!this.gTagId) {\n throw Error(\"ID was not specified\");\n }\n this.pushToDataLayer({\n \"gtm.start\": new Date().getTime(),\n event: \"gtm.js\",\n });\n const firstScript = document.getElementsByTagName(\"script\")[0];\n const script = document.createElement(\"script\");\n script.async = true;\n script.src = `https://www.googletagmanager.com/gtm.js?id=${this.gTagId}&l=dataLayer`;\n if (firstScript) {\n firstScript.parentNode.insertBefore(script, firstScript);\n } else {\n document.head.appendChild(script);\n }\n this.trackingCodeAdded = true;\n const tnaMetaTags = this.getTnaMetaTags();\n if (Object.keys(tnaMetaTags).length) {\n this.pushToDataLayer(tnaMetaTags);\n }\n }\n this.trackingEnabled = true;\n }\n }\n\n /** @protected */\n disableTracking() {\n if (this.trackingEnabled) {\n window[this.ga4Disable] = true;\n this.cookies.set(this.ga4Disable, \"true\");\n Object.keys(this.cookies.all).forEach((key) => {\n if (key.startsWith(\"_ga\")) {\n this.cookies.delete(key);\n }\n });\n this.trackingEnabled = false;\n // window.location.reload();\n }\n }\n}\n\nconst helpers = { getXPathTo, getClosestHeading, valueGetters };\n\nexport { EventTracker, GA4, helpers };\n","export default [\n {\n scope: \".tna-hero\",\n areaName: \"hero\",\n events: [\n {\n eventName: \"toggle_caption\",\n targetElement: \".tna-hero__details-summary\",\n on: \"click\",\n data: {\n // eslint-disable-next-line no-unused-vars\n state: ($el, $scope, event) => {\n const wasExpanded =\n $scope\n .querySelector(\".tna-hero__details\")\n ?.hasAttribute(\"open\") ?? false;\n return wasExpanded ? \"closed\" : \"opened\";\n },\n // eslint-disable-next-line no-unused-vars\n value: ($el, $scope, event) =>\n $scope.querySelector(\"img[alt]\")?.getAttribute(\"alt\"),\n },\n },\n ],\n },\n];\n"],"names":["root","factory","exports","module","define","amd","self","__webpack_require__","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","Symbol","toStringTag","value","window","TNAFrontendCookies","TNAFrontendCookieEvents","CookieEventHandler","_createClass","_classCallCheck","_defineProperty","this","event","callback","hasOwn","events","concat","_toConsumableArray","oneTimeEvents","_this","data","arguments","length","undefined","forEach","eventToTrigger","i","splice","Cookies","options","_options$extraPolicie","extraPolicies","_options$domain","domain","_options$path","path","_options$secure","secure","_options$policiesKey","policiesKey","_options$newInstance","newInstance","_options$defaultAge","defaultAge","destroyInstance","init","savePolicies","_objectSpread","fromEntries","map","k","toLowerCase","usage","settings","policies","essential","deserialised","document","cookie","split","filter","x","parts","trim","JSON","parse","e","all","exists","decodeURIComponent","_options$maxAge","maxAge","_options$sameSite","sameSite","_options$domain2","_options$path2","_options$secure2","_options$session","session","encodeURIComponent","trigger","set","_this2","keys","policy","setPolicy","accepted","allPolicies","stringify","on","once","getXPathTo","$element","id","body","tagName","ix","siblings","parentNode","childNodes","sibling","nodeType","includesAny","arr","values","some","v","includes","getClosestHeading","heading","$search","previousElementSibling","classList","Array","from","innerText","parentElement","valueGetters","text","$el","html","innerHTML","index","$scope","checked","expanded","getAttribute","toString","closestHeading","scope","areaName","eventName","targetElement","state","group","_$scope$closest","closest","querySelector","_$scope$querySelector","_$scope$querySelector2","hasAttribute","rootEventName","rootData","data_component_name","data_link_type","data_section","data_link","data_position","image","imageSrc","imageAlt","componentAnalytics","BreadcrumbAnalytics","CheckboxesAnalytics","DetailsAnalytics","FooterAnalytics","GalleryAnalytics","GlobalHeaderAnalytics","HeaderAnalytics","_$scope$querySelector3","PictureAnalytics","RadiosAnalytics","SearchFieldAnalytics","TextInputAnalytics","TextareaAnalytics","EventTracker","_window$TNAFrontend","TNAFrontend","Date","_options$prefix","prefix","_options$addTrackingC","addTrackingCode","initAll","navigator","doNotTrack","cookies","isPolicyAccepted","enableTracking","disableTracking","componentConfig","addListeners","scopeArray","_this3","querySelectorAll","_typeof","eventConfig","attachListener","_this4","_eventConfig$rootData","addEventListener","recordEvent","generateEventName","name","computedValue","xPath","timeSincePageLoad","startTime","entries","_ref","_ref2","_slicedToArray","push","head","$metaEl","GA4","_EventTracker2","_this5","TNAFrontendAnalytics","_possibleConstructorReturn","_options$id","_options$prefix2","_options$initAll","_options$addTrackingC2","_callSuper","gTagId","ga4Disable","dataLayer","start","_inherits","_this6","ga4Data","_ref3","_ref4","pushToDataLayer","trackingEnabled","trackingCodeAdded","Error","getTime","firstScript","getElementsByTagName","script","createElement","async","src","insertBefore","appendChild","tnaMetaTags","getTnaMetaTags","_this7","startsWith","helpers"],"sourceRoot":""}
@@ -264,7 +264,7 @@ class GA4 extends EventTracker {
264
264
  window.dataLayer = window.dataLayer || [];
265
265
  if (!this.cookies.isPolicyAccepted("usage")) {
266
266
  window[this.ga4Disable] = true;
267
- this.cookies.set(this.ga4Disable, "true", { maxAge: 31536000 });
267
+ this.cookies.set(this.ga4Disable, "true");
268
268
  }
269
269
  this.start(initAll);
270
270
  }
@@ -302,7 +302,7 @@ class GA4 extends EventTracker {
302
302
  enableTracking() {
303
303
  if (!this.trackingEnabled) {
304
304
  window[this.ga4Disable] = false;
305
- this.cookies.set(this.ga4Disable, "false", { maxAge: 31536000 });
305
+ this.cookies.set(this.ga4Disable, "false");
306
306
  if (!this.trackingCodeAdded && this.addTrackingCode) {
307
307
  if (!this.gTagId) {
308
308
  throw Error("ID was not specified");
@@ -334,7 +334,7 @@ class GA4 extends EventTracker {
334
334
  disableTracking() {
335
335
  if (this.trackingEnabled) {
336
336
  window[this.ga4Disable] = true;
337
- this.cookies.set(this.ga4Disable, "true", { maxAge: 31536000 });
337
+ this.cookies.set(this.ga4Disable, "true");
338
338
  Object.keys(this.cookies.all).forEach((key) => {
339
339
  if (key.startsWith("_ga")) {
340
340
  this.cookies.delete(key);
@@ -1,2 +1,2 @@
1
- !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define("TNAFrontend",[],t):"object"==typeof exports?exports.TNAFrontend=t():e.TNAFrontend=t()}(self,(()=>(()=>{"use strict";var e={169:(e,t,i)=>{function n(e){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},n(e)}function o(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),i.push.apply(i,n)}return i}function r(e){for(var t=1;t<arguments.length;t++){var i=null!=arguments[t]?arguments[t]:{};t%2?o(Object(i),!0).forEach((function(t){h(e,t,i[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(i)):o(Object(i)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(i,t))}))}return e}function s(e){return function(e){if(Array.isArray(e))return c(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(e){if("string"==typeof e)return c(e,t);var i={}.toString.call(e).slice(8,-1);return"Object"===i&&e.constructor&&(i=e.constructor.name),"Map"===i||"Set"===i?Array.from(e):"Arguments"===i||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i)?c(e,t):void 0}}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function c(e,t){(null==t||t>e.length)&&(t=e.length);for(var i=0,n=Array(t);i<t;i++)n[i]=e[i];return n}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function l(e,t){for(var i=0;i<t.length;i++){var n=t[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,f(n.key),n)}}function u(e,t,i){return t&&l(e.prototype,t),i&&l(e,i),Object.defineProperty(e,"prototype",{writable:!1}),e}function h(e,t,i){return(t=f(t))in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}function f(e){var t=function(e){if("object"!=n(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var i=t.call(e,"string");if("object"!=n(i))return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==n(t)?t:t+""}i.d(t,{A:()=>d}),window.TNAFrontendCookies=window.TNAFrontendCookies||null,window.TNAFrontendCookieEvents=window.TNAFrontendCookieEvents||null;var v=function(){return u((function e(){if(a(this,e),h(this,"events",{}),h(this,"oneTimeEvents",{}),window.TNAFrontendCookieEvents)return window.TNAFrontendCookieEvents;window.TNAFrontendCookieEvents=this}),[{key:"on",value:function(e,t){Object.hasOwn(this.events,e)||(this.events[e]=[]),this.events[e]=[].concat(s(this.events[e]),[t])}},{key:"once",value:function(e,t){Object.hasOwn(this.oneTimeEvents,e)||(this.oneTimeEvents[e]=[]),this.oneTimeEvents[e]=[].concat(s(this.oneTimeEvents[e]),[t])}},{key:"trigger",value:function(e){var t=this,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(Object.hasOwn(this.events,e)&&this.events[e].forEach((function(e){return e.call(t,i)})),Object.hasOwn(this.oneTimeEvents,e))for(var n=this.oneTimeEvents[e].length-1;n>=0;n--)this.oneTimeEvents[e][n].call(this,i),this.oneTimeEvents[e].splice(n,1)}}])}(),d=function(){return u((function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};a(this,e),h(this,"extraPolicies",[]),h(this,"domain",""),h(this,"path",""),h(this,"secure",!0),h(this,"policiesKey",""),h(this,"events",null);var i=t.extraPolicies,n=void 0===i?[]:i,o=t.domain,r=void 0===o?"":o,s=t.path,c=void 0===s?"/":s,l=t.secure,u=void 0===l||l,f=t.policiesKey,d=void 0===f?"cookies_policy":f,p=t.newInstance;if(void 0!==p&&p)this.destroyInstance();else if(window.TNAFrontendCookies)return window.TNAFrontendCookies;this.extraPolicies=n,this.domain=r,this.path=c,this.secure=u,this.policiesKey=d,this.events=new v,this.init(),window.TNAFrontendCookies=this}),[{key:"init",value:function(){this.savePolicies(r(r(r({},Object.fromEntries(this.extraPolicies.map((function(e){return[e.toLowerCase(),!1]})))),{},{usage:!1,settings:!1},this.policies),{},{essential:!0}))}},{key:"destroyInstance",value:function(){window.TNAFrontendCookies=null}},{key:"all",get:function(){var e={};return document.cookie.split("; ").filter((function(e){return e})).forEach((function(t){var i=t.trim().split("=");i[0]&&(e[i[0]]=i[1])})),e}},{key:"policies",get:function(){try{return JSON.parse(this.get(this.policiesKey)||"{}")}catch(e){return{}}}},{key:"exists",value:function(e){return Object.hasOwn(this.all,e)}},{key:"hasValue",value:function(e,t){return this.get(e)==t}},{key:"get",value:function(e){return this.exists(e)?decodeURIComponent(this.all[e]):null}},{key:"set",value:function(e,t){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},n=i.maxAge,o=void 0===n?null:n,r=i.sameSite,s=void 0===r?"Lax":r,c=i.domain,a=void 0===c?this.domain:c,l=i.path,u=void 0===l?this.path:l,h=i.secure,f=void 0===h?this.secure:h;if(e){var v="".concat(encodeURIComponent(e),"=").concat(encodeURIComponent(t),";").concat(a?" domain=".concat(a,"; "):""," samesite=").concat(s,"; path=").concat(u).concat(null!==o?"; max-age=".concat(o):"").concat(f?"; secure":"");document.cookie=v,this.events.trigger("setCookie",{key:e,value:t,maxAge:o,path:u,sameSite:s,domain:a,secure:f,cookie:v})}}},{key:"delete",value:function(e){var t={maxAge:-1,path:arguments.length>1&&void 0!==arguments[1]?arguments[1]:"/",domain:(arguments.length>2&&void 0!==arguments[2]?arguments[2]:null)||void 0};this.set(e,"",t),this.events.trigger("deleteCookie",r({key:e},t))}},{key:"deleteAll",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"/",i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;Object.keys(this.all).forEach((function(n){e.delete(n,t,i)})),this.events.trigger("deleteAllCookies",{path:t,domain:i})}},{key:"acceptPolicy",value:function(e){this.setPolicy(e,!0),this.events.trigger("acceptPolicy",e),this.events.trigger("changePolicy",h({},e,!0))}},{key:"rejectPolicy",value:function(e){this.setPolicy(e,!1),this.events.trigger("rejectPolicy",e),this.events.trigger("changePolicy",h({},e,!1))}},{key:"setPolicy",value:function(e,t){"essential"!==e&&(this.savePolicies(r(r({},this.policies),{},h(h({},e,t),"essential",!0))),this.events.trigger("changePolicy",h({},e,t)))}},{key:"acceptAllPolicies",value:function(){var e=Object.fromEntries(Object.keys(this.policies).map((function(e){return[e.toLowerCase(),!0]})));this.savePolicies(e),this.events.trigger("acceptAllPolicies"),this.events.trigger("changePolicy",e)}},{key:"rejectAllPolicies",value:function(){var e=r(r({},Object.fromEntries(Object.keys(this.policies).map((function(e){return[e.toLowerCase(),!1]})))),{},{essential:!0});this.savePolicies(e),this.events.trigger("rejectAllPolicies"),this.events.trigger("changePolicy",e)}},{key:"savePolicies",value:function(e){this.set(this.policiesKey,JSON.stringify(e))}},{key:"isPolicyAccepted",value:function(e){return Object.hasOwn(this.policies,e)?!0===this.policies[e]:null}},{key:"on",value:function(e,t){this.events.on(e,t)}},{key:"once",value:function(e,t){this.events.once(e,t)}}])}()}},t={};function i(n){var o=t[n];if(void 0!==o)return o.exports;var r=t[n]={exports:{}};return e[n](r,r.exports,i),r.exports}i.d=(e,t)=>{for(var n in t)i.o(t,n)&&!i.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},i.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),i.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var n={};i.r(n),i.d(n,{CookieBanner:()=>a,Cookies:()=>o.A});var o=i(169);function r(e){return r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},r(e)}function s(e,t){for(var i=0;i<t.length;i++){var n=t[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,c(n.key),n)}}function c(e){var t=function(e){if("object"!=r(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var i=t.call(e,"string");if("object"!=r(i))return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==r(t)?t:t+""}var a=function(){return e=function e(t){var i=this;if(function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.$module=t,this.$acceptButton=t&&t.querySelector('[value="accept"]'),this.$rejectButton=t&&t.querySelector('[value="reject"]'),this.$prompt=t&&t.querySelector(".tna-cookie-banner__message--prompt"),this.$acceptedMessage=t&&t.querySelector(".tna-cookie-banner__message--accepted"),this.$rejectedMessage=t&&t.querySelector(".tna-cookie-banner__message--rejected"),this.$closeButtons=t&&t.querySelectorAll('[value="close"]'),this.$module&&this.$acceptButton&&this.$rejectButton&&this.$prompt&&this.$acceptedMessage&&this.$rejectedMessage&&this.$closeButtons){var n=(this.$module.getAttribute("data-policies")||"").split(",").filter((function(e){return e})).map((function(e){return e.trim()})),r=this.$module.getAttribute("data-domain")||void 0,s=this.$module.getAttribute("data-path")||void 0,c=this.$module.getAttribute("data-secure")||void 0,a=this.$module.getAttribute("data-policieskey")||void 0;this.cookies=new o.A({extraPolicies:n,domain:r,path:s,secure:c,policiesKey:a,newInstance:!0}),this.cookiePreferencesSet=this.$module.getAttribute("data-preferenceskey")||"cookie_preferences_set",this.cookies.hasValue(this.cookiePreferencesSet,"true")||(this.$module.removeAttribute("hidden"),this.$acceptButton.addEventListener("click",(function(){return i.accept()})),this.$rejectButton.addEventListener("click",(function(){return i.reject()})))}},(t=[{key:"accept",value:function(){this.$prompt.setAttribute("hidden",!0),this.complete(),this.$acceptedMessage.removeAttribute("hidden"),this.$acceptedMessage.focus(),this.$acceptedMessage.setAttribute("tabindex","-1"),this.cookies.acceptAllPolicies()}},{key:"reject",value:function(){this.$prompt.setAttribute("hidden",!0),this.complete(),this.$rejectedMessage.removeAttribute("hidden"),this.$rejectedMessage.focus(),this.$rejectedMessage.setAttribute("tabindex","-1"),this.cookies.rejectAllPolicies()}},{key:"complete",value:function(){var e=this;this.cookies.set(this.cookiePreferencesSet,!0,{maxAge:31536e3}),this.$closeButtons.forEach((function(t){t.addEventListener("click",(function(){return e.close()}))}))}},{key:"close",value:function(){this.$module.setAttribute("hidden",!0)}}])&&s(e.prototype,t),Object.defineProperty(e,"prototype",{writable:!1}),e;var e,t}();return n})()));
1
+ !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define("TNAFrontend",[],t):"object"==typeof exports?exports.TNAFrontend=t():e.TNAFrontend=t()}(self,(()=>(()=>{"use strict";var e={169:(e,t,i)=>{function n(e){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},n(e)}function o(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),i.push.apply(i,n)}return i}function r(e){for(var t=1;t<arguments.length;t++){var i=null!=arguments[t]?arguments[t]:{};t%2?o(Object(i),!0).forEach((function(t){h(e,t,i[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(i)):o(Object(i)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(i,t))}))}return e}function s(e){return function(e){if(Array.isArray(e))return c(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(e){if("string"==typeof e)return c(e,t);var i={}.toString.call(e).slice(8,-1);return"Object"===i&&e.constructor&&(i=e.constructor.name),"Map"===i||"Set"===i?Array.from(e):"Arguments"===i||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i)?c(e,t):void 0}}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function c(e,t){(null==t||t>e.length)&&(t=e.length);for(var i=0,n=Array(t);i<t;i++)n[i]=e[i];return n}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function u(e,t){for(var i=0;i<t.length;i++){var n=t[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,f(n.key),n)}}function l(e,t,i){return t&&u(e.prototype,t),i&&u(e,i),Object.defineProperty(e,"prototype",{writable:!1}),e}function h(e,t,i){return(t=f(t))in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}function f(e){var t=function(e){if("object"!=n(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var i=t.call(e,"string");if("object"!=n(i))return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==n(t)?t:t+""}i.d(t,{A:()=>v}),window.TNAFrontendCookies=window.TNAFrontendCookies||null,window.TNAFrontendCookieEvents=window.TNAFrontendCookieEvents||null;var d=function(){return l((function e(){if(a(this,e),h(this,"events",{}),h(this,"oneTimeEvents",{}),window.TNAFrontendCookieEvents)return window.TNAFrontendCookieEvents;window.TNAFrontendCookieEvents=this}),[{key:"on",value:function(e,t){Object.hasOwn(this.events,e)||(this.events[e]=[]),this.events[e]=[].concat(s(this.events[e]),[t])}},{key:"once",value:function(e,t){Object.hasOwn(this.oneTimeEvents,e)||(this.oneTimeEvents[e]=[]),this.oneTimeEvents[e]=[].concat(s(this.oneTimeEvents[e]),[t])}},{key:"trigger",value:function(e){var t=this,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(Object.hasOwn(this.events,e)&&this.events[e].forEach((function(e){return e.call(t,i)})),Object.hasOwn(this.oneTimeEvents,e))for(var n=this.oneTimeEvents[e].length-1;n>=0;n--)this.oneTimeEvents[e][n].call(this,i),this.oneTimeEvents[e].splice(n,1)}}])}(),v=function(){return l((function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};a(this,e),h(this,"extraPolicies",[]),h(this,"domain",""),h(this,"path",""),h(this,"secure",!0),h(this,"policiesKey",""),h(this,"events",null),h(this,"defaultAge",null);var i=t.extraPolicies,n=void 0===i?[]:i,o=t.domain,r=void 0===o?"":o,s=t.path,c=void 0===s?"/":s,u=t.secure,l=void 0===u||u,f=t.policiesKey,v=void 0===f?"cookies_policy":f,p=t.newInstance,y=void 0!==p&&p,m=t.defaultAge,b=void 0===m?31536e3:m;if(y)this.destroyInstance();else if(window.TNAFrontendCookies)return window.TNAFrontendCookies;this.extraPolicies=n,this.domain=r,this.path=c,this.secure=l,this.policiesKey=v,this.defaultAge=b,this.events=new d,this.init(),window.TNAFrontendCookies=this}),[{key:"init",value:function(){this.savePolicies(r(r(r({},Object.fromEntries(this.extraPolicies.map((function(e){return[e.toLowerCase(),!1]})))),{},{usage:!1,settings:!1},this.policies),{},{essential:!0}))}},{key:"destroyInstance",value:function(){window.TNAFrontendCookies=null}},{key:"all",get:function(){var e={};return document.cookie.split("; ").filter((function(e){return e})).forEach((function(t){var i=t.trim().split("=");i[0]&&(e[i[0]]=i[1])})),e}},{key:"policies",get:function(){try{return JSON.parse(this.get(this.policiesKey)||"{}")}catch(e){return{}}}},{key:"exists",value:function(e){return Object.hasOwn(this.all,e)}},{key:"hasValue",value:function(e,t){return this.get(e)==t}},{key:"get",value:function(e){return this.exists(e)?decodeURIComponent(this.all[e]):null}},{key:"set",value:function(e,t){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},n=i.maxAge,o=void 0===n?this.defaultAge:n,r=i.sameSite,s=void 0===r?"Lax":r,c=i.domain,a=void 0===c?this.domain:c,u=i.path,l=void 0===u?this.path:u,h=i.secure,f=void 0===h?this.secure:h,d=i.session,v=void 0!==d&&d;if(e){var p="".concat(encodeURIComponent(e),"=").concat(encodeURIComponent(t),";").concat(a?" domain=".concat(a,"; "):""," samesite=").concat(s,"; path=").concat(l).concat(v?"":"; max-age=".concat(o)).concat(f?"; secure":"");document.cookie=p,this.events.trigger("setCookie",{key:e,value:t,maxAge:o,path:l,sameSite:s,domain:a,secure:f,session:v,cookie:p})}}},{key:"delete",value:function(e){var t={maxAge:-1,path:arguments.length>1&&void 0!==arguments[1]?arguments[1]:"/",domain:(arguments.length>2&&void 0!==arguments[2]?arguments[2]:null)||void 0};this.set(e,"",t),this.events.trigger("deleteCookie",r({key:e},t))}},{key:"deleteAll",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"/",i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;Object.keys(this.all).forEach((function(n){e.delete(n,t,i)})),this.events.trigger("deleteAllCookies",{path:t,domain:i})}},{key:"acceptPolicy",value:function(e){this.setPolicy(e,!0),this.events.trigger("acceptPolicy",e),this.events.trigger("changePolicy",h({},e,!0))}},{key:"rejectPolicy",value:function(e){this.setPolicy(e,!1),this.events.trigger("rejectPolicy",e),this.events.trigger("changePolicy",h({},e,!1))}},{key:"setPolicy",value:function(e,t){"essential"!==e&&(this.savePolicies(r(r({},this.policies),{},h(h({},e,t),"essential",!0))),this.events.trigger("changePolicy",h({},e,t)))}},{key:"acceptAllPolicies",value:function(){var e=Object.fromEntries(Object.keys(this.policies).map((function(e){return[e.toLowerCase(),!0]})));this.savePolicies(e),this.events.trigger("acceptAllPolicies"),this.events.trigger("changePolicy",e)}},{key:"rejectAllPolicies",value:function(){var e=r(r({},Object.fromEntries(Object.keys(this.policies).map((function(e){return[e.toLowerCase(),!1]})))),{},{essential:!0});this.savePolicies(e),this.events.trigger("rejectAllPolicies"),this.events.trigger("changePolicy",e)}},{key:"savePolicies",value:function(e){this.set(this.policiesKey,JSON.stringify(e),{maxAge:31536e3})}},{key:"isPolicyAccepted",value:function(e){return Object.hasOwn(this.policies,e)?!0===this.policies[e]:null}},{key:"on",value:function(e,t){this.events.on(e,t)}},{key:"once",value:function(e,t){this.events.once(e,t)}}])}()}},t={};function i(n){var o=t[n];if(void 0!==o)return o.exports;var r=t[n]={exports:{}};return e[n](r,r.exports,i),r.exports}i.d=(e,t)=>{for(var n in t)i.o(t,n)&&!i.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},i.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),i.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var n={};i.r(n),i.d(n,{CookieBanner:()=>a,Cookies:()=>o.A});var o=i(169);function r(e){return r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},r(e)}function s(e,t){for(var i=0;i<t.length;i++){var n=t[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,c(n.key),n)}}function c(e){var t=function(e){if("object"!=r(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var i=t.call(e,"string");if("object"!=r(i))return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==r(t)?t:t+""}var a=function(){return e=function e(t){var i=this;if(function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.$module=t,this.$acceptButton=t&&t.querySelector('[value="accept"]'),this.$rejectButton=t&&t.querySelector('[value="reject"]'),this.$prompt=t&&t.querySelector(".tna-cookie-banner__message--prompt"),this.$acceptedMessage=t&&t.querySelector(".tna-cookie-banner__message--accepted"),this.$rejectedMessage=t&&t.querySelector(".tna-cookie-banner__message--rejected"),this.$closeButtons=t&&t.querySelectorAll('[value="close"]'),this.$module&&this.$acceptButton&&this.$rejectButton&&this.$prompt&&this.$acceptedMessage&&this.$rejectedMessage&&this.$closeButtons){var n=(this.$module.getAttribute("data-policies")||"").split(",").filter((function(e){return e})).map((function(e){return e.trim()})),r=this.$module.getAttribute("data-domain")||void 0,s=this.$module.getAttribute("data-path")||void 0,c=this.$module.getAttribute("data-secure")||void 0,a=this.$module.getAttribute("data-policieskey")||void 0;this.cookies=new o.A({extraPolicies:n,domain:r,path:s,secure:c,policiesKey:a,newInstance:!0}),this.cookiePreferencesSet=this.$module.getAttribute("data-preferenceskey")||"cookie_preferences_set",this.cookies.hasValue(this.cookiePreferencesSet,"true")||(this.$module.removeAttribute("hidden"),this.$acceptButton.addEventListener("click",(function(){return i.accept()})),this.$rejectButton.addEventListener("click",(function(){return i.reject()})))}},(t=[{key:"accept",value:function(){this.$prompt.setAttribute("hidden",!0),this.complete(),this.$acceptedMessage.removeAttribute("hidden"),this.$acceptedMessage.focus(),this.$acceptedMessage.setAttribute("tabindex","-1"),this.cookies.acceptAllPolicies()}},{key:"reject",value:function(){this.$prompt.setAttribute("hidden",!0),this.complete(),this.$rejectedMessage.removeAttribute("hidden"),this.$rejectedMessage.focus(),this.$rejectedMessage.setAttribute("tabindex","-1"),this.cookies.rejectAllPolicies()}},{key:"complete",value:function(){var e=this;this.cookies.set(this.cookiePreferencesSet,!0),this.$closeButtons.forEach((function(t){t.addEventListener("click",(function(){return e.close()}))}))}},{key:"close",value:function(){this.$module.setAttribute("hidden",!0)}}])&&s(e.prototype,t),Object.defineProperty(e,"prototype",{writable:!1}),e;var e,t}();return n})()));
2
2
  //# sourceMappingURL=cookie-banner.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"components/cookie-banner/cookie-banner.js","mappings":"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","sources":["webpack://TNAFrontend/webpack/universalModuleDefinition","webpack://TNAFrontend/./src/nationalarchives/lib/cookies.mjs","webpack://TNAFrontend/webpack/bootstrap","webpack://TNAFrontend/webpack/runtime/define property getters","webpack://TNAFrontend/webpack/runtime/hasOwnProperty shorthand","webpack://TNAFrontend/webpack/runtime/make namespace object","webpack://TNAFrontend/./src/nationalarchives/components/cookie-banner/cookie-banner.mjs"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"TNAFrontend\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"TNAFrontend\"] = factory();\n\telse\n\t\troot[\"TNAFrontend\"] = factory();\n})(self, () => {\nreturn ","window.TNAFrontendCookies = window.TNAFrontendCookies || null;\nwindow.TNAFrontendCookieEvents = window.TNAFrontendCookieEvents || null;\n\nexport class CookieEventHandler {\n events = {};\n oneTimeEvents = {};\n\n constructor() {\n if (window.TNAFrontendCookieEvents) {\n return window.TNAFrontendCookieEvents;\n }\n window.TNAFrontendCookieEvents = this;\n }\n\n /**\n * Add an event listener.\n * @param {String} event - The event to add a listener for.\n * @param {Function} callback - The callback function to call when the event is triggered.\n */\n on(event, callback) {\n if (!Object.hasOwn(this.events, event)) {\n this.events[event] = [];\n }\n this.events[event] = [...this.events[event], callback];\n }\n\n once(event, callback) {\n if (!Object.hasOwn(this.oneTimeEvents, event)) {\n this.oneTimeEvents[event] = [];\n }\n this.oneTimeEvents[event] = [...this.oneTimeEvents[event], callback];\n }\n\n /** @protected */\n trigger(event, data = {}) {\n if (Object.hasOwn(this.events, event)) {\n this.events[event].forEach((eventToTrigger) =>\n eventToTrigger.call(this, data),\n );\n }\n if (Object.hasOwn(this.oneTimeEvents, event)) {\n for (let i = this.oneTimeEvents[event].length - 1; i >= 0; i--) {\n const eventToTrigger = this.oneTimeEvents[event][i];\n eventToTrigger.call(this, data);\n this.oneTimeEvents[event].splice(i, 1);\n }\n }\n }\n}\n\n/**\n * Class to handle cookies.\n * @class Cookies\n * @constructor\n * @public\n */\nexport default class Cookies {\n /** @protected */\n extraPolicies = [];\n /** @protected */\n domain = \"\";\n /** @protected */\n path = \"\";\n /** @protected */\n secure = true;\n /** @protected */\n policiesKey = \"\";\n /** @protected */\n events = null;\n\n /**\n * Create a cookie handler.\n * @param {String} [options.extraPolicies=[]] - The extra cookie policies to manage in addition to essential, settings and usage.\n * @param {String} [options.domain=\"\"] - The domain to register the cookie with.\n * @param {String} [options.path=\"\"] - The domain to register the cookie with.\n * @param {String} [options.secure=true] - Only set cookie in HTTPS environments.\n * @param {String} [options.policiesKey=\"cookies_policy\"] - The name of the cookie.\n * @param {String} [options.newInstance=false] - Create a fresh instance of the cookie class.\n */\n constructor(options = {}) {\n const {\n extraPolicies = [],\n domain = \"\",\n path = \"/\",\n secure = true,\n policiesKey = \"cookies_policy\",\n newInstance = false,\n } = options;\n if (newInstance) {\n this.destroyInstance();\n } else if (window.TNAFrontendCookies) {\n return window.TNAFrontendCookies;\n }\n this.extraPolicies = extraPolicies;\n this.domain = domain;\n this.path = path;\n this.secure = secure;\n this.policiesKey = policiesKey;\n this.events = new CookieEventHandler();\n this.init();\n window.TNAFrontendCookies = this;\n }\n\n /** @protected */\n init() {\n this.savePolicies({\n ...Object.fromEntries(\n this.extraPolicies.map((k) => [k.toLowerCase(), false]),\n ),\n usage: false,\n settings: false,\n ...this.policies,\n essential: true,\n });\n }\n\n destroyInstance() {\n window.TNAFrontendCookies = null;\n }\n\n /** @protected */\n get all() {\n const deserialised = {};\n document.cookie\n .split(\"; \")\n .filter((x) => x)\n .forEach((cookie) => {\n const parts = cookie.trim().split(\"=\");\n if (parts[0]) {\n deserialised[parts[0]] = parts[1];\n }\n });\n return deserialised;\n }\n\n /** @protected */\n get policies() {\n try {\n return JSON.parse(this.get(this.policiesKey) || \"{}\");\n } catch (e) {\n return {};\n }\n }\n\n /**\n * Check to see whether a cookie exists or not.\n * @param {String} key - The cookie name.\n * @returns {Boolean}\n */\n exists(key) {\n return Object.hasOwn(this.all, key);\n }\n\n /**\n * Check to see whether a cookie has a particular value.\n * @param {String} key - The cookie name.\n * @param {String|Number|Boolean} value - The value to check against.\n * @returns\n */\n hasValue(key, value) {\n return this.get(key) == value;\n }\n\n /**\n * Get a cookie.\n * @param {String} key - The cookie name.\n * @returns {String|Number|Boolean}\n */\n get(key) {\n return this.exists(key) ? decodeURIComponent(this.all[key]) : null;\n }\n\n /**\n * Set a cookie.\n * @param {String} key - The cookie name.\n * @param {String|Number|Boolean} value - The cookie value.\n * @param {Object} options\n * @param {Number|null} [options.maxAge=null] - The maximum age of the cookie in seconds.\n * @param {String} [options.path=/] - The path to register the cookie for.\n * @param {String} [options.sameSite=Lax] - The sameSite attribute.\n * @param {String} [options.domain=this.domain] - The domain to register the cookie with.\n * @param {String} [options.path=this.path] - The path to register the cookie with.\n * @param {String} [options.secure=this.secure] - Only set cookie in HTTPS environments.\n */\n set(key, value, options = {}) {\n const {\n maxAge = null,\n sameSite = \"Lax\",\n domain = this.domain,\n path = this.path,\n secure = this.secure,\n } = options;\n if (!key) {\n return;\n }\n const cookie = `${encodeURIComponent(key)}=${encodeURIComponent(value)};${\n domain ? ` domain=${domain}; ` : \"\"\n } samesite=${sameSite}; path=${path}${maxAge !== null ? `; max-age=${maxAge}` : \"\"}${\n secure ? \"; secure\" : \"\"\n }`;\n document.cookie = cookie;\n this.events.trigger(\"setCookie\", {\n key,\n value,\n maxAge,\n path,\n sameSite,\n domain,\n secure,\n cookie,\n });\n }\n\n /**\n * Delete a cookie.\n * @param {String} key - The cookie name.\n * @param {String} [path=/] - The path to the cookie is registered on.\n */\n delete(key, path = \"/\", domain = null) {\n const options = { maxAge: -1, path, domain: domain || undefined };\n this.set(key, \"\", options);\n this.events.trigger(\"deleteCookie\", { key, ...options });\n }\n\n /**\n * Delete all cookies.\n */\n deleteAll(path = \"/\", domain = null) {\n Object.keys(this.all).forEach((cookie) => {\n this.delete(cookie, path, domain);\n });\n this.events.trigger(\"deleteAllCookies\", { path, domain });\n }\n\n /**\n * Accept a policy.\n * @param {String} policy - The name of the policy.\n */\n acceptPolicy(policy) {\n this.setPolicy(policy, true);\n this.events.trigger(\"acceptPolicy\", policy);\n this.events.trigger(\"changePolicy\", { [policy]: true });\n }\n\n /**\n * Reject a policy.\n * @param {String} policy - The name of the policy.\n */\n rejectPolicy(policy) {\n this.setPolicy(policy, false);\n this.events.trigger(\"rejectPolicy\", policy);\n this.events.trigger(\"changePolicy\", { [policy]: false });\n }\n\n /**\n * Set a policy.\n * @param {String} policy - The name of the policy.\n * @param {Boolean} accepted - Whether the policy is accepted or not.\n */\n setPolicy(policy, accepted) {\n if (policy === \"essential\") {\n return;\n }\n this.savePolicies({\n ...this.policies,\n [policy]: accepted,\n essential: true,\n });\n this.events.trigger(\"changePolicy\", { [policy]: accepted });\n }\n\n /**\n * Accept all the cookie policies.\n */\n acceptAllPolicies() {\n const allPolicies = Object.fromEntries(\n Object.keys(this.policies).map((k) => [k.toLowerCase(), true]),\n );\n this.savePolicies(allPolicies);\n this.events.trigger(\"acceptAllPolicies\");\n this.events.trigger(\"changePolicy\", allPolicies);\n }\n\n /**\n * Reject all the cookie policies.\n */\n rejectAllPolicies() {\n const allPolicies = {\n ...Object.fromEntries(\n Object.keys(this.policies).map((k) => [k.toLowerCase(), false]),\n ),\n essential: true,\n };\n this.savePolicies(allPolicies);\n this.events.trigger(\"rejectAllPolicies\");\n this.events.trigger(\"changePolicy\", allPolicies);\n }\n\n /**\n * Commit policy preferences to the browser.\n * @param {object} policies - The policies to commit.\n */\n savePolicies(policies) {\n this.set(this.policiesKey, JSON.stringify(policies));\n }\n\n /**\n * Get the acceptance status of a policy.\n * @param {String} policy - The name of the policy.\n * @returns {Boolean}\n */\n isPolicyAccepted(policy) {\n return Object.hasOwn(this.policies, policy)\n ? this.policies[policy] === true\n : null;\n }\n\n /**\n * Add an event listener.\n * @param {String} event - The event to add a listener for.\n * @param {Function} callback - The callback function to call when the event is triggered.\n */\n on(event, callback) {\n this.events.on(event, callback);\n }\n\n /**\n * Add a one-time event listener.\n * @param {String} event - The event to add a listener for.\n * @param {Function} callback - The callback function to call when the event is triggered.\n */\n once(event, callback) {\n this.events.once(event, callback);\n }\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","import Cookies from \"../../lib/cookies.mjs\";\n\nexport { Cookies };\n\nexport class CookieBanner {\n constructor($module) {\n this.$module = $module;\n this.$acceptButton = $module && $module.querySelector('[value=\"accept\"]');\n this.$rejectButton = $module && $module.querySelector('[value=\"reject\"]');\n this.$prompt =\n $module && $module.querySelector(\".tna-cookie-banner__message--prompt\");\n this.$acceptedMessage =\n $module && $module.querySelector(\".tna-cookie-banner__message--accepted\");\n this.$rejectedMessage =\n $module && $module.querySelector(\".tna-cookie-banner__message--rejected\");\n this.$closeButtons = $module && $module.querySelectorAll('[value=\"close\"]');\n\n if (\n !this.$module ||\n !this.$acceptButton ||\n !this.$rejectButton ||\n !this.$prompt ||\n !this.$acceptedMessage ||\n !this.$rejectedMessage ||\n !this.$closeButtons\n ) {\n return;\n }\n\n const policies = this.$module.getAttribute(\"data-policies\") || \"\";\n const extraPolicies = policies\n .split(\",\")\n .filter((x) => x)\n .map((policy) => policy.trim());\n const domain = this.$module.getAttribute(\"data-domain\") || undefined;\n const path = this.$module.getAttribute(\"data-path\") || undefined;\n const secure = this.$module.getAttribute(\"data-secure\") || undefined;\n const policiesKey =\n this.$module.getAttribute(\"data-policieskey\") || undefined;\n\n this.cookies = new Cookies({\n extraPolicies,\n domain,\n path,\n secure,\n policiesKey,\n newInstance: true,\n });\n\n this.cookiePreferencesSet =\n this.$module.getAttribute(\"data-preferenceskey\") ||\n \"cookie_preferences_set\";\n const cookiePreferencesSet = this.cookies.hasValue(\n this.cookiePreferencesSet,\n \"true\",\n );\n\n if (!cookiePreferencesSet) {\n this.$module.removeAttribute(\"hidden\");\n\n this.$acceptButton.addEventListener(\"click\", () => this.accept());\n this.$rejectButton.addEventListener(\"click\", () => this.reject());\n }\n }\n\n accept() {\n this.$prompt.setAttribute(\"hidden\", true);\n this.complete();\n this.$acceptedMessage.removeAttribute(\"hidden\");\n this.$acceptedMessage.focus();\n this.$acceptedMessage.setAttribute(\"tabindex\", \"-1\");\n this.cookies.acceptAllPolicies();\n }\n\n reject() {\n this.$prompt.setAttribute(\"hidden\", true);\n this.complete();\n this.$rejectedMessage.removeAttribute(\"hidden\");\n this.$rejectedMessage.focus();\n this.$rejectedMessage.setAttribute(\"tabindex\", \"-1\");\n this.cookies.rejectAllPolicies();\n }\n\n complete() {\n this.cookies.set(this.cookiePreferencesSet, true, { maxAge: 31536000 });\n this.$closeButtons.forEach(($closeButton) => {\n $closeButton.addEventListener(\"click\", () => this.close());\n });\n }\n\n close() {\n this.$module.setAttribute(\"hidden\", true);\n }\n}\n"],"names":["root","factory","exports","module","define","amd","self","window","TNAFrontendCookies","TNAFrontendCookieEvents","CookieEventHandler","_createClass","_classCallCheck","_defineProperty","this","key","value","event","callback","Object","hasOwn","events","concat","_toConsumableArray","oneTimeEvents","_this","data","arguments","length","undefined","forEach","eventToTrigger","call","i","splice","Cookies","options","_options$extraPolicie","extraPolicies","_options$domain","domain","_options$path","path","_options$secure","secure","_options$policiesKey","policiesKey","_options$newInstance","newInstance","destroyInstance","init","savePolicies","_objectSpread","fromEntries","map","k","toLowerCase","usage","settings","policies","essential","get","deserialised","document","cookie","split","filter","x","parts","trim","JSON","parse","e","all","exists","decodeURIComponent","_options$maxAge","maxAge","_options$sameSite","sameSite","_options$domain2","_options$path2","_options$secure2","encodeURIComponent","trigger","set","_this2","keys","policy","setPolicy","accepted","allPolicies","stringify","on","once","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","d","definition","o","defineProperty","enumerable","obj","prop","prototype","hasOwnProperty","r","Symbol","toStringTag","CookieBanner","$module","$acceptButton","querySelector","$rejectButton","$prompt","$acceptedMessage","$rejectedMessage","$closeButtons","querySelectorAll","getAttribute","cookies","cookiePreferencesSet","hasValue","removeAttribute","addEventListener","accept","reject","setAttribute","complete","focus","acceptAllPolicies","rejectAllPolicies","$closeButton","close"],"sourceRoot":""}
1
+ {"version":3,"file":"components/cookie-banner/cookie-banner.js","mappings":"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","sources":["webpack://TNAFrontend/webpack/universalModuleDefinition","webpack://TNAFrontend/./src/nationalarchives/lib/cookies.mjs","webpack://TNAFrontend/webpack/bootstrap","webpack://TNAFrontend/webpack/runtime/define property getters","webpack://TNAFrontend/webpack/runtime/hasOwnProperty shorthand","webpack://TNAFrontend/webpack/runtime/make namespace object","webpack://TNAFrontend/./src/nationalarchives/components/cookie-banner/cookie-banner.mjs"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"TNAFrontend\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"TNAFrontend\"] = factory();\n\telse\n\t\troot[\"TNAFrontend\"] = factory();\n})(self, () => {\nreturn ","window.TNAFrontendCookies = window.TNAFrontendCookies || null;\nwindow.TNAFrontendCookieEvents = window.TNAFrontendCookieEvents || null;\n\nexport class CookieEventHandler {\n events = {};\n oneTimeEvents = {};\n\n constructor() {\n if (window.TNAFrontendCookieEvents) {\n return window.TNAFrontendCookieEvents;\n }\n window.TNAFrontendCookieEvents = this;\n }\n\n /**\n * Add an event listener.\n * @param {String} event - The event to add a listener for.\n * @param {Function} callback - The callback function to call when the event is triggered.\n */\n on(event, callback) {\n if (!Object.hasOwn(this.events, event)) {\n this.events[event] = [];\n }\n this.events[event] = [...this.events[event], callback];\n }\n\n once(event, callback) {\n if (!Object.hasOwn(this.oneTimeEvents, event)) {\n this.oneTimeEvents[event] = [];\n }\n this.oneTimeEvents[event] = [...this.oneTimeEvents[event], callback];\n }\n\n /** @protected */\n trigger(event, data = {}) {\n if (Object.hasOwn(this.events, event)) {\n this.events[event].forEach((eventToTrigger) =>\n eventToTrigger.call(this, data),\n );\n }\n if (Object.hasOwn(this.oneTimeEvents, event)) {\n for (let i = this.oneTimeEvents[event].length - 1; i >= 0; i--) {\n const eventToTrigger = this.oneTimeEvents[event][i];\n eventToTrigger.call(this, data);\n this.oneTimeEvents[event].splice(i, 1);\n }\n }\n }\n}\n\n/**\n * Class to handle cookies.\n * @class Cookies\n * @constructor\n * @public\n */\nexport default class Cookies {\n /** @protected */\n extraPolicies = [];\n /** @protected */\n domain = \"\";\n /** @protected */\n path = \"\";\n /** @protected */\n secure = true;\n /** @protected */\n policiesKey = \"\";\n /** @protected */\n events = null;\n /** @protected */\n defaultAge = null;\n\n /**\n * Create a cookie handler.\n * @param {String} [options.extraPolicies=[]] - The extra cookie policies to manage in addition to essential, settings and usage.\n * @param {String} [options.domain=\"\"] - The domain to register the cookie with.\n * @param {String} [options.path=\"\"] - The domain to register the cookie with.\n * @param {String} [options.secure=true] - Only set cookie in HTTPS environments.\n * @param {String} [options.policiesKey=\"cookies_policy\"] - The name of the cookie.\n * @param {String} [options.newInstance=false] - Create a fresh instance of the cookie class.\n * @param {String} [options.defaultAge=31536000] - The default age of non-session cookies.\n */\n constructor(options = {}) {\n const {\n extraPolicies = [],\n domain = \"\",\n path = \"/\",\n secure = true,\n policiesKey = \"cookies_policy\",\n newInstance = false,\n defaultAge = 31536000, // 365 days\n } = options;\n if (newInstance) {\n this.destroyInstance();\n } else if (window.TNAFrontendCookies) {\n return window.TNAFrontendCookies;\n }\n this.extraPolicies = extraPolicies;\n this.domain = domain;\n this.path = path;\n this.secure = secure;\n this.policiesKey = policiesKey;\n this.defaultAge = defaultAge;\n this.events = new CookieEventHandler();\n this.init();\n window.TNAFrontendCookies = this;\n }\n\n /** @protected */\n init() {\n this.savePolicies({\n ...Object.fromEntries(\n this.extraPolicies.map((k) => [k.toLowerCase(), false]),\n ),\n usage: false,\n settings: false,\n ...this.policies,\n essential: true,\n });\n }\n\n destroyInstance() {\n window.TNAFrontendCookies = null;\n }\n\n /** @protected */\n get all() {\n const deserialised = {};\n document.cookie\n .split(\"; \")\n .filter((x) => x)\n .forEach((cookie) => {\n const parts = cookie.trim().split(\"=\");\n if (parts[0]) {\n deserialised[parts[0]] = parts[1];\n }\n });\n return deserialised;\n }\n\n /** @protected */\n get policies() {\n try {\n return JSON.parse(this.get(this.policiesKey) || \"{}\");\n } catch (e) {\n return {};\n }\n }\n\n /**\n * Check to see whether a cookie exists or not.\n * @param {String} key - The cookie name.\n * @returns {Boolean}\n */\n exists(key) {\n return Object.hasOwn(this.all, key);\n }\n\n /**\n * Check to see whether a cookie has a particular value.\n * @param {String} key - The cookie name.\n * @param {String|Number|Boolean} value - The value to check against.\n * @returns\n */\n hasValue(key, value) {\n return this.get(key) == value;\n }\n\n /**\n * Get a cookie.\n * @param {String} key - The cookie name.\n * @returns {String|Number|Boolean}\n */\n get(key) {\n return this.exists(key) ? decodeURIComponent(this.all[key]) : null;\n }\n\n /**\n * Set a cookie.\n * @param {String} key - The cookie name.\n * @param {String|Number|Boolean} value - The cookie value.\n * @param {Object} options\n * @param {Number} [options.maxAge=this.defaultAge] - The maximum age of the cookie in seconds.\n * @param {String} [options.path=/] - The path to register the cookie for.\n * @param {String} [options.sameSite=Lax] - The sameSite attribute.\n * @param {String} [options.domain=this.domain] - The domain to register the cookie with.\n * @param {String} [options.path=this.path] - The path to register the cookie with.\n * @param {String} [options.secure=this.secure] - Only set cookie in HTTPS environments.\n * @param {String} [options.session=false] - Set a session cookie.\n */\n set(key, value, options = {}) {\n const {\n maxAge = this.defaultAge,\n sameSite = \"Lax\",\n domain = this.domain,\n path = this.path,\n secure = this.secure,\n session = false,\n } = options;\n if (!key) {\n return;\n }\n const cookie = `${encodeURIComponent(key)}=${encodeURIComponent(value)};${\n domain ? ` domain=${domain}; ` : \"\"\n } samesite=${sameSite}; path=${path}${!session ? `; max-age=${maxAge}` : \"\"}${\n secure ? \"; secure\" : \"\"\n }`;\n document.cookie = cookie;\n this.events.trigger(\"setCookie\", {\n key,\n value,\n maxAge,\n path,\n sameSite,\n domain,\n secure,\n session,\n cookie,\n });\n }\n\n /**\n * Delete a cookie.\n * @param {String} key - The cookie name.\n * @param {String} [path=/] - The path to the cookie is registered on.\n */\n delete(key, path = \"/\", domain = null) {\n const options = { maxAge: -1, path, domain: domain || undefined };\n this.set(key, \"\", options);\n this.events.trigger(\"deleteCookie\", { key, ...options });\n }\n\n /**\n * Delete all cookies.\n */\n deleteAll(path = \"/\", domain = null) {\n Object.keys(this.all).forEach((cookie) => {\n this.delete(cookie, path, domain);\n });\n this.events.trigger(\"deleteAllCookies\", { path, domain });\n }\n\n /**\n * Accept a policy.\n * @param {String} policy - The name of the policy.\n */\n acceptPolicy(policy) {\n this.setPolicy(policy, true);\n this.events.trigger(\"acceptPolicy\", policy);\n this.events.trigger(\"changePolicy\", { [policy]: true });\n }\n\n /**\n * Reject a policy.\n * @param {String} policy - The name of the policy.\n */\n rejectPolicy(policy) {\n this.setPolicy(policy, false);\n this.events.trigger(\"rejectPolicy\", policy);\n this.events.trigger(\"changePolicy\", { [policy]: false });\n }\n\n /**\n * Set a policy.\n * @param {String} policy - The name of the policy.\n * @param {Boolean} accepted - Whether the policy is accepted or not.\n */\n setPolicy(policy, accepted) {\n if (policy === \"essential\") {\n return;\n }\n this.savePolicies({\n ...this.policies,\n [policy]: accepted,\n essential: true,\n });\n this.events.trigger(\"changePolicy\", { [policy]: accepted });\n }\n\n /**\n * Accept all the cookie policies.\n */\n acceptAllPolicies() {\n const allPolicies = Object.fromEntries(\n Object.keys(this.policies).map((k) => [k.toLowerCase(), true]),\n );\n this.savePolicies(allPolicies);\n this.events.trigger(\"acceptAllPolicies\");\n this.events.trigger(\"changePolicy\", allPolicies);\n }\n\n /**\n * Reject all the cookie policies.\n */\n rejectAllPolicies() {\n const allPolicies = {\n ...Object.fromEntries(\n Object.keys(this.policies).map((k) => [k.toLowerCase(), false]),\n ),\n essential: true,\n };\n this.savePolicies(allPolicies);\n this.events.trigger(\"rejectAllPolicies\");\n this.events.trigger(\"changePolicy\", allPolicies);\n }\n\n /**\n * Commit policy preferences to the browser.\n * @param {object} policies - The policies to commit.\n */\n savePolicies(policies) {\n this.set(this.policiesKey, JSON.stringify(policies), {\n maxAge: 60 * 60 * 24 * 365,\n });\n }\n\n /**\n * Get the acceptance status of a policy.\n * @param {String} policy - The name of the policy.\n * @returns {Boolean}\n */\n isPolicyAccepted(policy) {\n return Object.hasOwn(this.policies, policy)\n ? this.policies[policy] === true\n : null;\n }\n\n /**\n * Add an event listener.\n * @param {String} event - The event to add a listener for.\n * @param {Function} callback - The callback function to call when the event is triggered.\n */\n on(event, callback) {\n this.events.on(event, callback);\n }\n\n /**\n * Add a one-time event listener.\n * @param {String} event - The event to add a listener for.\n * @param {Function} callback - The callback function to call when the event is triggered.\n */\n once(event, callback) {\n this.events.once(event, callback);\n }\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","import Cookies from \"../../lib/cookies.mjs\";\n\nexport { Cookies };\n\nexport class CookieBanner {\n constructor($module) {\n this.$module = $module;\n this.$acceptButton = $module && $module.querySelector('[value=\"accept\"]');\n this.$rejectButton = $module && $module.querySelector('[value=\"reject\"]');\n this.$prompt =\n $module && $module.querySelector(\".tna-cookie-banner__message--prompt\");\n this.$acceptedMessage =\n $module && $module.querySelector(\".tna-cookie-banner__message--accepted\");\n this.$rejectedMessage =\n $module && $module.querySelector(\".tna-cookie-banner__message--rejected\");\n this.$closeButtons = $module && $module.querySelectorAll('[value=\"close\"]');\n\n if (\n !this.$module ||\n !this.$acceptButton ||\n !this.$rejectButton ||\n !this.$prompt ||\n !this.$acceptedMessage ||\n !this.$rejectedMessage ||\n !this.$closeButtons\n ) {\n return;\n }\n\n const policies = this.$module.getAttribute(\"data-policies\") || \"\";\n const extraPolicies = policies\n .split(\",\")\n .filter((x) => x)\n .map((policy) => policy.trim());\n const domain = this.$module.getAttribute(\"data-domain\") || undefined;\n const path = this.$module.getAttribute(\"data-path\") || undefined;\n const secure = this.$module.getAttribute(\"data-secure\") || undefined;\n const policiesKey =\n this.$module.getAttribute(\"data-policieskey\") || undefined;\n\n this.cookies = new Cookies({\n extraPolicies,\n domain,\n path,\n secure,\n policiesKey,\n newInstance: true,\n });\n\n this.cookiePreferencesSet =\n this.$module.getAttribute(\"data-preferenceskey\") ||\n \"cookie_preferences_set\";\n const cookiePreferencesSet = this.cookies.hasValue(\n this.cookiePreferencesSet,\n \"true\",\n );\n\n if (!cookiePreferencesSet) {\n this.$module.removeAttribute(\"hidden\");\n\n this.$acceptButton.addEventListener(\"click\", () => this.accept());\n this.$rejectButton.addEventListener(\"click\", () => this.reject());\n }\n }\n\n accept() {\n this.$prompt.setAttribute(\"hidden\", true);\n this.complete();\n this.$acceptedMessage.removeAttribute(\"hidden\");\n this.$acceptedMessage.focus();\n this.$acceptedMessage.setAttribute(\"tabindex\", \"-1\");\n this.cookies.acceptAllPolicies();\n }\n\n reject() {\n this.$prompt.setAttribute(\"hidden\", true);\n this.complete();\n this.$rejectedMessage.removeAttribute(\"hidden\");\n this.$rejectedMessage.focus();\n this.$rejectedMessage.setAttribute(\"tabindex\", \"-1\");\n this.cookies.rejectAllPolicies();\n }\n\n complete() {\n this.cookies.set(this.cookiePreferencesSet, true);\n this.$closeButtons.forEach(($closeButton) => {\n $closeButton.addEventListener(\"click\", () => this.close());\n });\n }\n\n close() {\n this.$module.setAttribute(\"hidden\", true);\n }\n}\n"],"names":["root","factory","exports","module","define","amd","self","window","TNAFrontendCookies","TNAFrontendCookieEvents","CookieEventHandler","_createClass","_classCallCheck","_defineProperty","this","key","value","event","callback","Object","hasOwn","events","concat","_toConsumableArray","oneTimeEvents","_this","data","arguments","length","undefined","forEach","eventToTrigger","call","i","splice","Cookies","options","_options$extraPolicie","extraPolicies","_options$domain","domain","_options$path","path","_options$secure","secure","_options$policiesKey","policiesKey","_options$newInstance","newInstance","_options$defaultAge","defaultAge","destroyInstance","init","savePolicies","_objectSpread","fromEntries","map","k","toLowerCase","usage","settings","policies","essential","get","deserialised","document","cookie","split","filter","x","parts","trim","JSON","parse","e","all","exists","decodeURIComponent","_options$maxAge","maxAge","_options$sameSite","sameSite","_options$domain2","_options$path2","_options$secure2","_options$session","session","encodeURIComponent","trigger","set","_this2","keys","policy","setPolicy","accepted","allPolicies","stringify","on","once","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","d","definition","o","defineProperty","enumerable","obj","prop","prototype","hasOwnProperty","r","Symbol","toStringTag","CookieBanner","$module","$acceptButton","querySelector","$rejectButton","$prompt","$acceptedMessage","$rejectedMessage","$closeButtons","querySelectorAll","getAttribute","cookies","cookiePreferencesSet","hasValue","removeAttribute","addEventListener","accept","reject","setAttribute","complete","focus","acceptAllPolicies","rejectAllPolicies","$closeButton","close"],"sourceRoot":""}
@@ -82,7 +82,7 @@ export class CookieBanner {
82
82
  }
83
83
 
84
84
  complete() {
85
- this.cookies.set(this.cookiePreferencesSet, true, { maxAge: 31536000 });
85
+ this.cookies.set(this.cookiePreferencesSet, true);
86
86
  this.$closeButtons.forEach(($closeButton) => {
87
87
  $closeButton.addEventListener("click", () => this.close());
88
88
  });