@nationalarchives/frontend 0.37.0 → 0.38.0
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.
- package/nationalarchives/all+analytics.js +1 -1
- package/nationalarchives/all+analytics.js.map +1 -1
- package/nationalarchives/all+analytics.mjs +4 -2
- package/nationalarchives/all.css +1 -1
- package/nationalarchives/all.css.map +1 -1
- package/nationalarchives/all.js +1 -1
- package/nationalarchives/all.js.map +1 -1
- package/nationalarchives/all.mjs +17 -5
- package/nationalarchives/assets/images/tna-square-logo.svg +1 -1
- package/nationalarchives/components/accordion/accordion.css.map +1 -1
- package/nationalarchives/components/back-link/back-link.css.map +1 -1
- package/nationalarchives/components/breadcrumbs/breadcrumbs.css.map +1 -1
- package/nationalarchives/components/button/button.css.map +1 -1
- package/nationalarchives/components/card/_index.scss +1 -0
- package/nationalarchives/components/card/card.css +1 -1
- package/nationalarchives/components/card/card.css.map +1 -1
- package/nationalarchives/components/checkboxes/checkboxes.css +1 -1
- package/nationalarchives/components/checkboxes/checkboxes.css.map +1 -1
- package/nationalarchives/components/compound-filters/compound-filters.css +1 -1
- package/nationalarchives/components/compound-filters/compound-filters.css.map +1 -1
- package/nationalarchives/components/compound-filters/compound-filters.scss +20 -2
- package/nationalarchives/components/cookie-banner/_index.scss +1 -0
- package/nationalarchives/components/date-input/date-input.css.map +1 -1
- package/nationalarchives/components/date-search/date-search.css.map +1 -1
- package/nationalarchives/components/details/details.css.map +1 -1
- package/nationalarchives/components/error-summary/error-summary.css +1 -1
- package/nationalarchives/components/error-summary/error-summary.css.map +1 -1
- package/nationalarchives/components/fieldset/fieldset.css.map +1 -1
- package/nationalarchives/components/file-input/file-input.css +1 -1
- package/nationalarchives/components/file-input/file-input.css.map +1 -1
- package/nationalarchives/components/files-list/files-list.css +1 -1
- package/nationalarchives/components/files-list/files-list.css.map +1 -1
- package/nationalarchives/components/footer/_index.scss +1 -0
- package/nationalarchives/components/footer/footer.css.map +1 -1
- package/nationalarchives/components/gallery/_index.scss +1 -0
- package/nationalarchives/components/gallery/gallery.css.map +1 -1
- package/nationalarchives/components/global-header/_index.scss +1 -0
- package/nationalarchives/components/global-header/global-header.css.map +1 -1
- package/nationalarchives/components/header/_index.scss +1 -0
- package/nationalarchives/components/header/header.css.map +1 -1
- package/nationalarchives/components/hero/_index.scss +1 -0
- package/nationalarchives/components/hero/hero.css.map +1 -1
- package/nationalarchives/components/index-grid/index-grid.css.map +1 -1
- package/nationalarchives/components/pagination/_index.scss +1 -0
- package/nationalarchives/components/panel/panel.css.map +1 -1
- package/nationalarchives/components/phase-banner/phase-banner.css.map +1 -1
- package/nationalarchives/components/picture/_index.scss +2 -0
- package/nationalarchives/components/picture/fixtures.json +3 -3
- package/nationalarchives/components/picture/picture.css.map +1 -1
- package/nationalarchives/components/picture/template.njk +11 -1
- package/nationalarchives/components/quick-filters/quick-filters.css.map +1 -1
- package/nationalarchives/components/radios/radios.css +1 -1
- package/nationalarchives/components/radios/radios.css.map +1 -1
- package/nationalarchives/components/search-field/_index.scss +1 -0
- package/nationalarchives/components/search-field/search-field.css.map +1 -1
- package/nationalarchives/components/secondary-navigation/secondary-navigation.css.map +1 -1
- package/nationalarchives/components/select/select.css.map +1 -1
- package/nationalarchives/components/sidebar/sidebar.css.map +1 -1
- package/nationalarchives/components/skip-link/skip-link.css +1 -1
- package/nationalarchives/components/skip-link/skip-link.css.map +1 -1
- package/nationalarchives/components/skip-link/skip-link.scss +1 -1
- package/nationalarchives/components/tabs/tabs.css +1 -1
- package/nationalarchives/components/tabs/tabs.css.map +1 -1
- package/nationalarchives/components/text-input/fixtures.json +17 -17
- package/nationalarchives/components/text-input/template.njk +1 -1
- package/nationalarchives/components/text-input/text-input.css.map +1 -1
- package/nationalarchives/components/text-input/text-input.js +1 -1
- package/nationalarchives/components/text-input/text-input.js.map +1 -1
- package/nationalarchives/components/text-input/text-input.mjs +24 -25
- package/nationalarchives/components/textarea/_index.scss +3 -0
- package/nationalarchives/components/textarea/fixtures.json +11 -0
- package/nationalarchives/components/textarea/macro-options.json +7 -0
- package/nationalarchives/components/textarea/template.njk +1 -1
- package/nationalarchives/components/textarea/textarea.css +1 -1
- package/nationalarchives/components/textarea/textarea.css.map +1 -1
- package/nationalarchives/components/textarea/textarea.js +2 -0
- package/nationalarchives/components/textarea/textarea.js.map +1 -0
- package/nationalarchives/components/textarea/textarea.mjs +188 -0
- package/nationalarchives/components/textarea/textarea.scss +22 -4
- package/nationalarchives/components/warning/warning.css.map +1 -1
- package/nationalarchives/email.css +1 -1
- package/nationalarchives/email.css.map +1 -1
- package/nationalarchives/error-page.css +1 -1
- package/nationalarchives/error-page.css.map +1 -1
- package/nationalarchives/ie.css +1 -1
- package/nationalarchives/ie.css.map +1 -1
- package/nationalarchives/ie.scss +1 -1
- package/nationalarchives/print.css.map +1 -1
- package/nationalarchives/prototype-kit.css +1 -1
- package/nationalarchives/prototype-kit.css.map +1 -1
- package/nationalarchives/templates/fixtures.json +4 -4
- package/nationalarchives/templates/layouts/email.njk +1 -1
- package/nationalarchives/tools/_a11y.scss +11 -6
- package/nationalarchives/tools/_colour.scss +2 -2
- package/nationalarchives/utilities/lists/_index.scss +8 -3
- package/nationalarchives/utilities/logo/_index.scss +4 -0
- package/nationalarchives/utilities/reset/_index.scss +4 -0
- package/nationalarchives/utilities/typography/_index.scss +7 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"all+analytics.js","mappings":"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","sources":["webpack://TNAFrontend/webpack/universalModuleDefinition","webpack://TNAFrontend/./src/nationalarchives/lib/helpers.mjs","webpack://TNAFrontend/./src/nationalarchives/all.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/error-summary/analytics.js","webpack://TNAFrontend/./src/nationalarchives/components/file-input/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/sidebar/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","webpack://TNAFrontend/./src/nationalarchives/components/accordion/accordion.mjs","webpack://TNAFrontend/./src/nationalarchives/components/breadcrumbs/breadcrumbs.mjs","webpack://TNAFrontend/./src/nationalarchives/components/cookie-banner/cookie-banner.mjs","webpack://TNAFrontend/./src/nationalarchives/components/date-input/date-input.mjs","webpack://TNAFrontend/./src/nationalarchives/components/error-summary/error-summary.mjs","webpack://TNAFrontend/./src/nationalarchives/components/file-input/file-input.mjs","webpack://TNAFrontend/./src/nationalarchives/components/footer/footer.mjs","webpack://TNAFrontend/./src/nationalarchives/components/gallery/gallery.mjs","webpack://TNAFrontend/./src/nationalarchives/components/global-header/global-header.mjs","webpack://TNAFrontend/./src/nationalarchives/components/header/header.mjs","webpack://TNAFrontend/./src/nationalarchives/components/picture/picture.mjs","webpack://TNAFrontend/./src/nationalarchives/components/skip-link/skip-link.mjs","webpack://TNAFrontend/./src/nationalarchives/components/tabs/tabs.mjs","webpack://TNAFrontend/./src/nationalarchives/components/text-input/text-input.mjs","webpack://TNAFrontend/./src/nationalarchives/lib/cookies.mjs","webpack://TNAFrontend/./src/nationalarchives/lib/tables.mjs","webpack://TNAFrontend/./src/nationalarchives/lib/uuid.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"],"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[\"TNAFrontend\"] = factory();\n\telse\n\t\troot[\"TNAFrontend\"] = factory();\n})(self, () => {\nreturn ","export const iso8601ToPrettyDatetime = (dateStr) => {\n const datetime = dateStr;\n\n if (!datetime) {\n throw new Error(\"No datetime provided\");\n }\n const isDateTime =\n /^\\d{4}(-\\d{2}){2}(T| )\\d{2}(:\\d{2}){1,2}(\\.\\d+)?(Z|((\\+|-)\\d{2}:\\d{2}))?$/.test(\n datetime,\n );\n const isDate = /^\\d{4}(-\\d{2}){2}$/.test(datetime);\n if (!isDateTime && !isDate) {\n throw new Error(\"Invalid datetime provided\");\n }\n\n const date = new Date(datetime);\n if (!(date instanceof Date) || isNaN(date)) {\n throw new Error(\"Invalid datetime provided\");\n }\n\n const dayString = date.toLocaleDateString(\"en-GB\", {\n weekday: \"long\",\n });\n\n const dateString = date.toLocaleDateString(\"en-GB\", {\n day: \"numeric\",\n month: \"long\",\n year: \"numeric\",\n });\n\n if (isDateTime && (date.getHours() || date.getMinutes())) {\n let timeString = date.toLocaleTimeString(\"en-GB\", {\n hour: \"2-digit\",\n minute: \"2-digit\",\n });\n if (date.getSeconds()) {\n timeString = date.toLocaleTimeString(\"en-GB\", {\n hour: \"2-digit\",\n minute: \"2-digit\",\n second: \"2-digit\",\n });\n }\n return `${dayString} ${dateString}, ${timeString}`;\n } else {\n return `${dayString} ${dateString}`;\n }\n};\n\n/*\n * ==========================================\n * Transform any <time> element into a pretty\n * and human readable format that is based on\n * the valid ISO 8601 datetime attribute. The\n * replaced value will be localised according\n * to user's system settings, repurposing the\n * original text content as a title attribute\n * to allow users to see the value. A null or\n * invalid datetime format will result in the\n * element not being modified. If the updated\n * value is similar to the starting value for\n * the element text content, then the element\n * will not be updated to avoid redundancy.\n * ------------------------------------------\n * For example if the user's system has a UTC\n * timezone set then the element:\n *\n * <time\n * datetime=\"2026-03-05T13:48:00-05:00\"\n * >\n * 5 March 2026, 13:48 (UTC -5)\n * </time>\n *\n * would become:\n *\n * <time\n * datetime=\"2026-03-05T13:48:00-05:00\"\n * title=\"5 March 2026, 13:48 (UTC -5)\"\n * >\n * Thursday 5 March 2026, 09:48\n * </time>\n * ==========================================\n */\nexport const updateTimeElement = ($el) => {\n const datetime = $el.getAttribute(\"datetime\");\n\n try {\n const prettyDatetime = iso8601ToPrettyDatetime(datetime);\n if (!prettyDatetime.includes($el.textContent)) {\n $el.setAttribute(\"title\", $el.textContent);\n $el.textContent = prettyDatetime;\n }\n } catch (e) {\n // Do nothing if the datetime is invalid or not provided\n }\n};\n","import { Accordion } from \"./components/accordion/accordion.mjs\";\nimport { Breadcrumbs } from \"./components/breadcrumbs/breadcrumbs.mjs\";\nimport { CookieBanner } from \"./components/cookie-banner/cookie-banner.mjs\";\nimport { DateInputProgressive } from \"./components/date-input/date-input.mjs\";\nimport { ErrorSummary } from \"./components/error-summary/error-summary.mjs\";\nimport { FileInputDroppable } from \"./components/file-input/file-input.mjs\";\nimport { Footer } from \"./components/footer/footer.mjs\";\nimport { Gallery } from \"./components/gallery/gallery.mjs\";\nimport { GlobalHeader } from \"./components/global-header/global-header.mjs\";\nimport { Header } from \"./components/header/header.mjs\";\nimport { Picture } from \"./components/picture/picture.mjs\";\nimport { SkipLink } from \"./components/skip-link/skip-link.mjs\";\nimport { Tabs } from \"./components/tabs/tabs.mjs\";\nimport { TextInput } from \"./components/text-input/text-input.mjs\";\nimport Cookies from \"./lib/cookies.mjs\";\nimport { checkTableForScroll } from \"./lib/tables.mjs\";\nimport { updateTimeElement } from \"./lib/helpers.mjs\";\n\nconst initAll = (options) => {\n options = typeof options !== \"undefined\" ? options : {};\n const $scope =\n options.scope instanceof HTMLElement ? options.scope : document;\n\n const $html = document.documentElement;\n $html.classList.add(\"tna-template--js-enabled\");\n\n const onFirstTouch = () => {\n window.removeEventListener(\"touchstart\", onFirstTouch);\n $html.classList.add(\"tna-template--touched\");\n };\n window.addEventListener(\"touchstart\", onFirstTouch);\n\n const onKeyDown = (e) => {\n if (e.key === \"Tab\") {\n $html.classList.add(\"tna-template--tabbed\");\n $html.classList.remove(\"tna-template--clicked\");\n }\n };\n window.addEventListener(\"keydown\", onKeyDown);\n\n const onMouseDown = () => {\n $html.classList.add(\"tna-template--clicked\");\n $html.classList.remove(\"tna-template--tabbed\");\n };\n window.addEventListener(\"mousedown\", onMouseDown);\n\n /*\n * ==========================================\n * Checks if widths of all tables on the page\n * are wider than their parent container, and\n * allowing horizontal scrolling if they are.\n * This is done both on load and on resize.\n * ==========================================\n */\n const $tableWrappers = $scope.querySelectorAll(\".tna-table-wrapper\");\n $tableWrappers.forEach(($tableWrapper) => checkTableForScroll($tableWrapper));\n window.addEventListener(\"resize\", () => {\n $tableWrappers.forEach(($tableWrapper) =>\n checkTableForScroll($tableWrapper),\n );\n });\n\n // TODO: Remove this opt-in class in a later release\n if ($html.classList.contains(\"tna-template--enhance-time-elements\")) {\n document.querySelectorAll(\"time[datetime]\").forEach(updateTimeElement);\n }\n\n const $accordions = $scope.querySelectorAll('[data-module=\"tna-accordion\"]');\n $accordions.forEach(($accordion) => {\n new Accordion($accordion);\n });\n\n const $breadcrumbs = $scope.querySelector('[data-module=\"tna-breadcrumbs\"]');\n if ($breadcrumbs) {\n new Breadcrumbs($breadcrumbs);\n }\n\n const $cookieBanner = $scope.querySelector(\n '[data-module=\"tna-cookie-banner\"]',\n );\n if ($cookieBanner) {\n new CookieBanner($cookieBanner);\n }\n\n const $progressiveDateInputs = $scope.querySelectorAll(\n '[data-module=\"tna-date-input-progressive\"]',\n );\n $progressiveDateInputs.forEach(($dateInput) => {\n new DateInputProgressive($dateInput);\n });\n\n const $errorSummary = $scope.querySelector(\n '[data-module=\"tna-error-summary\"]',\n );\n if ($errorSummary) {\n new ErrorSummary($errorSummary).init();\n }\n\n const $fileInputs = $scope.querySelectorAll('[data-module=\"tna-file-input\"]');\n $fileInputs.forEach(($fileInput) => {\n new FileInputDroppable($fileInput);\n });\n\n const $footer = $scope.querySelector('[data-module=\"tna-footer\"]');\n if ($footer) {\n new Footer($footer);\n }\n\n const $galleries = $scope.querySelectorAll('[data-module=\"tna-gallery\"]');\n $galleries.forEach(($gallery) => {\n new Gallery($gallery);\n });\n\n const $globalHeader = $scope.querySelector(\n '[data-module=\"tna-global-header\"]',\n );\n if ($globalHeader) {\n new GlobalHeader($globalHeader);\n }\n\n const $header = $scope.querySelector('[data-module=\"tna-header\"]');\n if ($header) {\n new Header($header);\n }\n\n const $pictures = $scope.querySelectorAll('[data-module=\"tna-picture\"]');\n $pictures.forEach(($picture) => {\n new Picture($picture);\n });\n\n const $skipLinks = $scope.querySelectorAll('[data-module=\"tna-skip-link\"]');\n $skipLinks.forEach(($skipLink) => {\n new SkipLink($skipLink);\n });\n\n const $tabs = $scope.querySelectorAll('[data-module=\"tna-tabs\"]');\n $tabs.forEach(($tabModule) => {\n new Tabs($tabModule);\n });\n\n const $textInputs = $scope.querySelectorAll('[data-module=\"tna-text-input\"]');\n $textInputs.forEach(($textInput) => {\n new TextInput($textInput);\n });\n\n window.matchMedia(\"print\").addEventListener(\"change\", (evt) => {\n if (evt.matches) {\n $scope\n .querySelectorAll(\".tna-details__details:not([open])\")\n .forEach((e) => {\n e.setAttribute(\"open\", \"\");\n e.dataset.wasClosed = \"\";\n });\n $scope\n .querySelectorAll(\n \".tna-accordion__content[hidden], .tna-picture__transcript[hidden]\",\n )\n .forEach((e) => {\n e.removeAttribute(\"hidden\");\n e.dataset.wasClosed = \"\";\n });\n } else {\n $scope\n .querySelectorAll(\".tna-details__details[data-was-closed]\")\n .forEach((e) => {\n e.removeAttribute(\"open\");\n delete e.dataset.wasClosed;\n });\n $scope\n .querySelectorAll(\n \".tna-accordion__content[data-was-closed], .tna-picture__transcript[data-was-closed]\",\n )\n .forEach((e) => {\n e.setAttribute(\"hidden\", \"\");\n e.dataset.wasClosed = \"\";\n });\n }\n });\n};\n\nexport {\n initAll,\n Cookies,\n Accordion,\n Breadcrumbs,\n CookieBanner,\n DateInputProgressive,\n ErrorSummary,\n FileInputDroppable,\n Footer,\n Gallery,\n GlobalHeader,\n Header,\n Picture,\n SkipLink,\n Tabs,\n TextInput,\n checkTableForScroll,\n updateTimeElement,\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 if ($element.parentNode) {\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 } else {\n return $element.tagName;\n }\n};\n\nconst getClosestElement = ($startingElement, matchingElementSelectors) => {\n let heading = \"\";\n let $search = $startingElement;\n do {\n while ($search.previousElementSibling) {\n $search = $search.previousElementSibling;\n if (\n matchingElementSelectors.some((matchingElementSelector) =>\n $search.matches(matchingElementSelector),\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 getClosestHeading = ($element) =>\n getClosestElement($element, [\"h1\", \"h2\", \"h3\", \"h4\", \"h5\", \"h6\"]);\n\nconst valueGetters = {\n text: ($el) => $el.innerText.replace(/\\n/g, \" \"),\n html: ($el) => $el.innerHTML,\n value: ($el) => $el.value,\n index: ($el, $scope, event, index) => index,\n instance: ($el, $scope, event, index, instance) => instance,\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 xpath: ($el) => getXPathTo($el.target),\n};\n\nexport { getXPathTo, getClosestElement, getClosestHeading, valueGetters };\n","import { valueGetters } from \"../../lib/analytics-helpers.mjs\";\n\nexport default [\n {\n scope: \".tna-accordion\",\n areaName: \"accordion\",\n rootEventName: \"select_feature\",\n rootData: {\n data_component_name: \"accordion\",\n },\n events: [\n {\n eventName: \"click\",\n targetElement: \".tna-accordion__summary\",\n on: \"click\",\n data: { state: valueGetters.expanded, value: valueGetters.text },\n rootData: {\n data_link_type: valueGetters.expanded,\n data_link: valueGetters.text,\n data_position: valueGetters.index,\n },\n },\n ],\n },\n];\n","import { valueGetters } from \"../../lib/analytics-helpers.mjs\";\n\nexport default [\n {\n scope: \".tna-breadcrumbs\",\n areaName: \"breadcrumbs\",\n rootEventName: \"select_navigation\",\n rootData: {\n data_component_name: \"breadcrumbs\",\n },\n events: [\n {\n eventName: \"click\",\n targetElement: \"a.tna-breadcrumbs__link\",\n on: \"click\",\n data: { state: \"expand\", value: valueGetters.html },\n rootData: {\n data_link_type: \"breadcrumb_link\",\n data_link: valueGetters.text,\n },\n },\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 rootData: {\n data_link_type: \"breadcrumb_expand\",\n data_link: valueGetters.text,\n },\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.trim(),\n // eslint-disable-next-line no-unused-vars\n group: ($el, $scope, event) =>\n $scope\n .closest(\".tna-form-item\")\n ?.querySelector(\".tna-form-item__heading\")\n ?.innerText?.trim(),\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-error-summary\",\n areaName: \"error-summary\",\n events: [\n {\n eventName: \"jump\",\n targetElement: \"a.tna-error-summary__link\",\n on: \"click\",\n data: { value: valueGetters.text },\n },\n ],\n },\n];\n","const getFileDetails = ($el) =>\n JSON.stringify(\n Array.from($el.files).map((file) => ({\n name: file.name,\n size: file.size,\n type: file.type,\n })),\n );\n\nexport default [\n {\n scope: \".tna-file-input\",\n areaName: \"file-input\",\n events: [\n {\n eventName: \"blurred\",\n on: \"blur\",\n data: {\n value: getFileDetails,\n state: ($el) => $el.files.length,\n // eslint-disable-next-line no-unused-vars\n group: ($el, $scope) =>\n $scope\n .closest(\".tna-form-item\")\n ?.querySelector(\".tna-form-item__heading\")\n ?.innerText?.trim(),\n },\n },\n {\n eventName: \"cancelled\",\n on: \"cancel\",\n data: {\n value: getFileDetails,\n state: ($el) => $el.files.length,\n // eslint-disable-next-line no-unused-vars\n group: ($el, $scope) =>\n $scope\n .closest(\".tna-form-item\")\n ?.querySelector(\".tna-form-item__heading\")\n ?.innerText?.trim(),\n },\n },\n {\n eventName: \"changed\",\n on: \"change\",\n data: {\n value: getFileDetails,\n state: ($el) => $el.files.length,\n // eslint-disable-next-line no-unused-vars\n group: ($el, $scope) =>\n $scope\n .closest(\".tna-form-item\")\n ?.querySelector(\".tna-form-item__heading\")\n ?.innerText?.trim(),\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 rootData: {\n data_component_name: \"footer\",\n },\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_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_link_type: \"icon\",\n data_section: \"Social media\",\n data_link: ($el) => $el.dataset.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_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_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_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_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 rootEventName: \"select_media\",\n rootData: {\n media_type: \"gallery\",\n media_duration: ($el, $scope) =>\n $scope.querySelectorAll(\".tna-gallery__navigation-item\").length,\n media_provider: \"tna\",\n media_title: ($el, $scope, event, index, instance) =>\n $scope.querySelector(\".tna-gallery__header-inner\")?.innerText?.trim() ||\n `gallery_${instance}`,\n media_progress: ($el, $scope) =>\n (Array.from(\n $scope.querySelectorAll(\".tna-gallery__navigation-item\"),\n ).findIndex(\n ($itemButton) => $itemButton.getAttribute(\"aria-current\") === \"true\",\n ) || -1) + 1,\n },\n events: [\n {\n eventName: \"click\",\n targetElement: \".tna-gallery__navigation-item\",\n on: \"click\",\n data: {\n value: valueGetters.text,\n },\n rootData: {\n data_link: \"image\",\n media_action: \"progress\",\n media_progress: valueGetters.index,\n },\n },\n {\n eventName: \"click\",\n targetElement: \".tna-gallery__navigation-prev\",\n on: \"click\",\n data: {\n value: ($el, $scope) =>\n $scope\n .querySelector(\n \".tna-gallery__item:not([hidden]) .tna-gallery__item-header\",\n )\n ?.innerText?.trim(),\n },\n rootData: {\n data_link: \"previous\",\n media_action: \"progress\",\n },\n },\n {\n eventName: \"click\",\n targetElement: \".tna-gallery__navigation-next\",\n on: \"click\",\n data: {\n value: ($el, $scope) =>\n $scope\n .querySelector(\n \".tna-gallery__item:not([hidden]) .tna-gallery__item-header\",\n )\n ?.innerText?.trim(),\n },\n rootData: {\n data_link: \"next\",\n media_action: \"progress\",\n },\n },\n {\n eventName: \"keypress\",\n on: \"keydown\",\n onCondition: ($el, $scope, event) =>\n [\n \"ArrowLeft\",\n \"ArrowRight\",\n \"ArrowUp\",\n \"ArrowDown\",\n \"End\",\n \"Home\",\n // \"Escape\",\n ].includes(event.key),\n data: {\n value: ($el, $scope, event) => event.key,\n },\n rootData: {\n data_link: \"keypress\",\n media_action: \"progress\",\n },\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 rootData: {\n data_component_name: \"header\",\n },\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_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_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_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_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-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-item\")\n ?.querySelector(\".tna-form-item__heading\")\n ?.innerText?.trim(),\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-item__heading\")?.innerText?.trim(),\n },\n },\n ],\n },\n];\n","import { valueGetters } from \"../../lib/analytics-helpers.mjs\";\n\nexport default [\n {\n scope: \".tna-sidebar\",\n areaName: \"sidebar\",\n rootEventName: \"select_navigation\",\n rootData: {\n data_component_name: \"sidebar\",\n data_section: ($el, $scope) =>\n $scope.querySelector(\".tna-sidebar__heading\")?.innerText?.trim(),\n },\n events: [\n {\n eventName: \"click\",\n targetElement: \"a.tna-sidebar__link\",\n on: \"click\",\n rootData: {\n data_link_type: \"sidebar_link\",\n data_link: valueGetters.text,\n data_position: valueGetters.index,\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 value: valueGetters.value,\n // eslint-disable-next-line no-unused-vars\n group: ($el, $scope) =>\n $scope\n .closest(\".tna-form-item\")\n ?.querySelector(\".tna-form-item__heading\")\n ?.innerText?.trim(),\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-item\")\n ?.querySelector(\".tna-form-item__heading\")\n ?.innerText?.trim(),\n },\n },\n ],\n },\n];\n","import Cookies from \"./lib/cookies.mjs\";\nimport {\n getXPathTo,\n getClosestHeading,\n getClosestElement,\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 ErrorSummary from \"./components/error-summary/analytics.js\";\nimport FileInputDroppable from \"./components/file-input/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 SidebarAnalytics from \"./components/sidebar/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 ...ErrorSummary,\n ...FileInputDroppable,\n ...FooterAnalytics,\n ...GalleryAnalytics,\n ...GlobalHeaderAnalytics,\n ...HeaderAnalytics,\n ...HeroAnalytics,\n ...PictureAnalytics,\n ...RadiosAnalytics,\n ...SearchFieldAnalytics,\n ...SidebarAnalytics,\n ...TextInputAnalytics,\n ...TextareaAnalytics,\n];\n\nclass EventTracker {\n /** @protected */\n cookies = new Cookies();\n\n /** @protected */\n events = [];\n\n /** @protected */\n startTime = new Date();\n\n /** @protected */\n prefix = \"tna\";\n\n /** @protected */\n document = document;\n\n constructor(options = {}) {\n const { prefix = null, documentScope = document } = options;\n if (prefix) {\n this.prefix = prefix;\n }\n if (documentScope) {\n this.document = documentScope;\n }\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 componentConfig.rootData || {},\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 * @param {{[String]:String}} rootDefaultData - The default root data to use if specified.\n */\n addListeners(\n scope,\n areaName,\n events,\n rootEventName = \"\",\n rootDefaultData = {},\n ) {\n let scopeArray;\n if (typeof scope === \"string\") {\n scopeArray = Array.from(this.document.querySelectorAll(scope));\n } else if (typeof scope === \"object\") {\n scopeArray = [scope];\n }\n if (scopeArray.length === 0) {\n return;\n }\n scopeArray.forEach(($scope, scopeIndex) => {\n events.forEach((eventConfig) => {\n if (eventConfig.on) {\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 rootDefaultData,\n eventConfig,\n scope,\n areaName,\n index + 1,\n scopeIndex + 1,\n ),\n );\n } else {\n this.attachListener(\n $scope,\n $scope,\n rootEventName,\n rootDefaultData,\n eventConfig,\n scope,\n areaName,\n 1,\n scopeIndex + 1,\n );\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 rootDefaultData,\n eventConfig,\n scope,\n areaName,\n index,\n instance,\n ) {\n const {\n on,\n data,\n targetElement,\n rootData = {},\n onCondition = null,\n } = eventConfig;\n $el.addEventListener(on, (event) => {\n const computedValueParameters = [$el, $scope, event, index, instance];\n if (\n onCondition === null ||\n this.computedValue(onCondition, ...computedValueParameters)\n ) {\n this.recordEvent(\n eventConfig.rootEventName\n ? `${this.prefix}.${eventConfig.rootEventName}`\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, ...computedValueParameters)\n : null,\n state: data?.state\n ? this.computedValue(data.state, ...computedValueParameters)\n : null,\n group: data?.group\n ? this.computedValue(data.group, ...computedValueParameters)\n : null,\n xPath: getXPathTo($el),\n targetElement: targetElement,\n timeSincePageLoad: new Date() - this.startTime,\n index,\n instance,\n scope,\n areaName,\n },\n Object.fromEntries(\n Object.entries({ ...rootDefaultData, ...rootData }).map(\n ([key, value]) => [\n key,\n this.computedValue(value, ...computedValueParameters),\n ],\n ),\n ),\n );\n }\n });\n }\n\n /** @protected */\n computedValue(valueOrFunction, $el, $scope, event, index, instance) {\n return typeof valueOrFunction === \"function\"\n ? valueOrFunction.call(this, $el, $scope, event, index, instance)\n : (valueOrFunction ?? null);\n }\n\n /** @protected */\n recordEvent(eventName, data, rootData = {}) {\n this.events.push({\n event: eventName,\n ...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}_root:\"][content]`,\n ),\n ).map(($metaEl) => [\n $metaEl\n .getAttribute(\"name\")\n .replace(new RegExp(`^${this.prefix}_root:`), \"\"),\n $metaEl.getAttribute(\"content\"),\n ]),\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 /** @protected */\n getUserPreferences() {\n const userPreferences = {};\n userPreferences[`${this.prefix}.pref.prefers-color-scheme`] =\n window.matchMedia?.(\"(prefers-color-scheme: dark)\").matches\n ? \"dark\"\n : \"light\";\n userPreferences[`${this.prefix}.pref.forced-colors`] = window.matchMedia?.(\n \"(forced-colors: active)\",\n ).matches;\n userPreferences[`${this.prefix}.pref.prefers-contrast`] =\n window.matchMedia?.(\"(prefers-contrast: more)\").matches\n ? \"more\"\n : window.matchMedia?.(\"(prefers-contrast: less)\").matches\n ? \"less\"\n : \"normal\";\n userPreferences[`${this.prefix}.pref.prefers-reduced-motion`] =\n window.matchMedia?.(\"(prefers-reduced-motion: reduce)\").matches;\n userPreferences[`${this.prefix}.pref.prefers-reduced-transparency`] =\n window.matchMedia?.(\"(prefers-reduced-transparency: reduce)\").matches;\n return userPreferences;\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 addTrackingCode = true;\n\n /** @protected */\n trackingCodeAdded = false;\n\n /** @protected */\n trackingEnabled = false;\n\n /** @protected */\n gTagId;\n\n constructor(options = {}) {\n if (window.TNAFrontendAnalyticsGA4) {\n return window.TNAFrontendAnalyticsGA4;\n }\n const {\n id = \"\",\n prefix = null,\n initAll = true,\n addTrackingCode = true,\n } = options;\n super({ prefix });\n window.TNAFrontendAnalyticsGA4 = this;\n this.addTrackingCode = addTrackingCode;\n window.dataLayer = window.dataLayer || [];\n if (id) {\n this.gTagId = id;\n this.ga4Disable = `ga-disable-${this.gTagId}`;\n if (!this.cookies.isPolicyAccepted(\"usage\")) {\n window[this.ga4Disable] = true;\n this.cookies.set(this.ga4Disable, \"true\");\n }\n }\n this.start(initAll);\n }\n\n destroy() {\n window.TNAFrontendAnalyticsGA4 = 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 ...this.getTnaMetaTags(),\n ...this.getUserPreferences(),\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 }\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 }\n }\n}\n\nconst ga4Id = document.documentElement.dataset.ga4;\nif (ga4Id) {\n new GA4({ id: ga4Id });\n}\n\nconst helpers = {\n getXPathTo,\n getClosestHeading,\n getClosestElement,\n valueGetters,\n};\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","import { checkTableForScroll } from \"../../lib/tables.mjs\";\n\nexport class Accordion {\n constructor($module) {\n this.$module = $module;\n this.$items = $module && $module.querySelectorAll(\".tna-accordion__item\");\n if (!this.$module || !this.$items) {\n return;\n }\n\n this.allowMultipleItemsOpen =\n this.$module.dataset.singleOpenItem !== \"true\";\n\n this.$items.forEach(($item) => this.initItem($item));\n this.initState();\n\n this.$toggleAllButton = this.$module.querySelector(\n \".tna-accordion__toggle-all\",\n );\n if (this.$toggleAllButton) {\n this.syncToggleAllButton();\n this.$toggleAllButton.removeAttribute(\"hidden\");\n this.$toggleAllButton.addEventListener(\"click\", () => {\n if (this.isAllOpen()) {\n this.$items.forEach(($item) => this.closeItem($item));\n } else {\n this.$items.forEach(($item) => this.openItem($item));\n }\n this.syncToggleAllButton();\n });\n }\n }\n\n initItem($item) {\n const $heading = $item.querySelector(\".tna-accordion__heading\");\n const $content = $item.querySelector(\".tna-accordion__body\");\n\n if (!$heading || !$content) {\n return;\n }\n\n $item.classList.add(\"tna-accordion__details\");\n $item.classList.remove(\"tna-accordion__item\");\n\n $heading.removeAttribute(\"class\");\n\n $content.classList.add(\"tna-accordion__content\");\n $content.classList.remove(\"tna-accordion__body\");\n $content.setAttribute(\"hidden\", \"\");\n\n const $headingButton = document.createElement(\"button\");\n $headingButton.classList.add(\"tna-accordion__summary\");\n $headingButton.setAttribute(\"type\", \"button\");\n $headingButton.setAttribute(\"aria-controls\", $content.id);\n $headingButton.innerText = $heading.innerText;\n $heading.innerText = \"\";\n $heading.appendChild($headingButton);\n\n $headingButton.addEventListener(\"click\", () => {\n const isOpen = $headingButton.getAttribute(\"aria-expanded\") === \"true\";\n if (isOpen) {\n this.closeItem($item);\n } else {\n this.openItem($item);\n }\n });\n }\n\n initState() {\n this.$items.forEach(($item) => {\n if ($item.dataset[\"isopen\"] === \"true\") {\n this.openItem($item);\n } else {\n this.closeItem($item);\n }\n $item.removeAttribute(\"data-isopen\");\n });\n }\n\n openItem($item) {\n if (!this.allowMultipleItemsOpen) {\n this.closeAllItemsExcept($item);\n }\n const $headingButton = $item.querySelector(\".tna-accordion__summary\");\n const $content = $item.querySelector(\".tna-accordion__content\");\n $headingButton.setAttribute(\"aria-expanded\", \"true\");\n $headingButton.setAttribute(\n \"aria-label\",\n `${$headingButton.innerText.trim()}, Hide this section`,\n );\n $content.removeAttribute(\"hidden\");\n // $content.setAttribute(\"tabindex\", \"0\");\n this.syncToggleAllButton();\n\n const $tableWrapper = $content.querySelectorAll(\".tna-table-wrapper\");\n if ($tableWrapper) {\n $tableWrapper.forEach(($wrapper) => {\n checkTableForScroll($wrapper);\n });\n }\n }\n\n closeItem($item) {\n const $headingButton = $item.querySelector(\".tna-accordion__summary\");\n const $content = $item.querySelector(\".tna-accordion__content\");\n $headingButton.setAttribute(\"aria-expanded\", \"false\");\n $headingButton.setAttribute(\n \"aria-label\",\n `${$headingButton.innerText.trim()}, Show this section`,\n );\n $content.setAttribute(\"hidden\", \"\");\n // $content.setAttribute(\"tabindex\", \"-1\");\n this.syncToggleAllButton();\n }\n\n closeAllItemsExcept($excludeItem) {\n Array.from(this.$items)\n .filter(\n ($item) =>\n $item.querySelector(\".tna-accordion__summary\") !== $excludeItem &&\n $item\n .querySelector(\".tna-accordion__summary\")\n .getAttribute(\"aria-expanded\") === \"true\",\n )\n .forEach(($item) => this.closeItem($item));\n }\n\n isAllOpen() {\n return Array.from(this.$items).every(\n ($item) =>\n $item\n .querySelector(\".tna-accordion__summary\")\n .getAttribute(\"aria-expanded\") === \"true\",\n );\n }\n\n syncToggleAllButton() {\n if (this.$toggleAllButton) {\n if (this.isAllOpen()) {\n this.$toggleAllButton.innerText =\n this.$toggleAllButton.dataset.closeAllLabel || \"Hide all sections\";\n } else {\n this.$toggleAllButton.innerText =\n this.$toggleAllButton.dataset.openAllLabel || \"Show all sections\";\n }\n }\n }\n}\n","import uuidv4 from \"../../lib/uuid.mjs\";\n\nexport class Breadcrumbs {\n constructor($module) {\n this.$module = $module;\n this.$breadcrumbsList =\n $module && $module.querySelector(\".tna-breadcrumbs__list\");\n this.$breadcrumbs =\n $module &&\n this.$breadcrumbsList &&\n $module.querySelectorAll(\".tna-breadcrumbs__item\");\n\n if (this.$module && this.$breadcrumbsList && this.$breadcrumbs) {\n if (\n this.$breadcrumbs.length > 2 &&\n !this.$module.classList.contains(\"tna-breadcrumbs--no-collapse\")\n ) {\n const uniqueId = `tna-breadcrumbs-${uuidv4()}`;\n\n const $expandable = document.createElement(\"li\");\n $expandable.classList.add(\n \"tna-breadcrumbs__item\",\n \"tna-breadcrumbs__item--expandable\",\n );\n $expandable.style.display = \"none\";\n\n const $expandButton = document.createElement(\"button\");\n $expandButton.classList.add(\"tna-breadcrumbs__link\");\n $expandButton.innerHTML =\n \"<span class='tna-!--visually-hidden'>Expand breadcrumbs</span>…\";\n $expandButton.setAttribute(\"type\", \"button\");\n $expandButton.setAttribute(\"aria-expanded\", \"false\");\n $expandButton.setAttribute(\"aria-controls\", uniqueId);\n $expandButton.addEventListener(\"click\", () => {\n this.$module.classList.remove(\"tna-breadcrumbs--collapsed\");\n $expandable.remove();\n this.$module.setAttribute(\"tabindex\", \"0\");\n this.$module.focus();\n this.$module.addEventListener(\n \"blur\",\n () => {\n this.$module.removeAttribute(\"tabindex\");\n },\n { once: true },\n );\n });\n $expandable.appendChild($expandButton);\n\n this.$breadcrumbsList.setAttribute(\"id\", uniqueId);\n this.$breadcrumbsList.insertBefore(\n $expandable,\n this.$breadcrumbs[this.$breadcrumbs.length - 2].nextSibling,\n );\n\n this.$module.classList.add(\"tna-breadcrumbs--collapsed\");\n }\n }\n }\n}\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 this.cookies = new Cookies({ newInstance: true });\n\n this.cookiePreferencesSetKey =\n this.$module.dataset.preferencesKey || \"cookie_preferences_set\";\n\n if (!this.cookies.policiesCorrectOnInit) {\n this.cookies.delete(this.cookiePreferencesSetKey);\n }\n\n if (\n !this.cookies.exists(this.cookiePreferencesSetKey) ||\n !this.cookies.hasValue(this.cookiePreferencesSetKey, \"true\")\n ) {\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\", \"\");\n this.complete();\n this.cookies.acceptAllPolicies();\n this.$acceptedMessage.removeAttribute(\"hidden\");\n this.$acceptedMessage.setAttribute(\"tabindex\", \"0\");\n this.$acceptedMessage.focus();\n this.$acceptedMessage.addEventListener(\"blur\", () => {\n this.$acceptedMessage.removeAttribute(\"tabindex\");\n });\n }\n\n reject() {\n this.$prompt.setAttribute(\"hidden\", \"\");\n this.complete();\n this.cookies.rejectAllPolicies();\n this.$rejectedMessage.removeAttribute(\"hidden\");\n this.$rejectedMessage.setAttribute(\"tabindex\", \"0\");\n this.$rejectedMessage.focus();\n this.$rejectedMessage.addEventListener(\"blur\", () => {\n this.$rejectedMessage.removeAttribute(\"tabindex\");\n });\n }\n\n complete() {\n this.cookies.set(this.cookiePreferencesSetKey, true);\n this.$closeButtons.forEach(($closeButton) => {\n $closeButton.addEventListener(\"click\", () => this.close());\n });\n }\n\n close() {\n this.$module.setAttribute(\"hidden\", \"\");\n }\n}\n","import Cookies from \"../../lib/cookies.mjs\";\n\nexport { Cookies };\n\nexport class DateInputProgressive {\n constructor($module) {\n this.$module = $module;\n this.$yearWrapper =\n $module && $module.querySelector(\".tna-date-input__item--year\");\n this.$yearInput =\n this.$yearWrapper && this.$yearWrapper.querySelector(\"input\");\n this.$monthWrapper =\n $module && $module.querySelector(\".tna-date-input__item--month\");\n this.$monthInput =\n this.$monthWrapper && this.$monthWrapper.querySelector(\"input\");\n this.$dayWrapper =\n $module && $module.querySelector(\".tna-date-input__item--day\");\n this.$dayInput =\n this.$dayWrapper && this.$dayWrapper.querySelector(\"input\");\n\n if (!this.$module) {\n return;\n }\n\n this.update();\n window.addEventListener(\"pageshow\", () => this.update());\n\n if (this.$yearInput) {\n this.$yearInput.addEventListener(\"keyup\", () => this.update());\n this.$yearInput.addEventListener(\"change\", () => this.update());\n }\n if (this.$monthInput) {\n this.$monthInput.addEventListener(\"keyup\", () => this.update());\n this.$monthInput.addEventListener(\"change\", () => this.update());\n }\n if (this.$dayInput) {\n this.$dayInput.addEventListener(\"keyup\", () => this.update());\n this.$dayInput.addEventListener(\"change\", () => this.update());\n }\n }\n\n update() {\n if (this.isValidYear()) {\n this.showMonth();\n if (this.isValidMonth()) {\n this.showDay();\n } else {\n this.hideDay();\n }\n } else {\n this.hideMonth();\n this.hideDay();\n }\n }\n\n isValidYear() {\n if (!this.$yearInput) {\n return true;\n }\n const yearValue = parseInt(this.$yearInput.value.trim());\n return !isNaN(this.$yearInput.value) && !isNaN(yearValue) && yearValue > 0;\n }\n\n isValidMonth() {\n if (!this.$monthInput) {\n return true;\n }\n const monthRawValue = this.$monthInput.value.trim();\n const monthIntValue = parseInt(monthRawValue);\n const validMonthStrings = [\n \"january\",\n \"february\",\n \"march\",\n \"april\",\n \"may\",\n \"june\",\n \"july\",\n \"august\",\n \"september\",\n \"october\",\n \"november\",\n \"december\",\n \"jan\",\n \"feb\",\n \"mar\",\n \"apr\",\n \"jun\",\n \"jul\",\n \"aug\",\n \"sep\",\n \"oct\",\n \"nov\",\n \"dec\",\n ];\n return (\n (!isNaN(this.$monthInput.value) &&\n !isNaN(monthIntValue) &&\n monthIntValue > 0 &&\n monthIntValue <= 12) ||\n validMonthStrings.includes(monthRawValue.toLowerCase())\n );\n }\n\n showMonth() {\n if (this.$monthWrapper) {\n this.$monthWrapper.removeAttribute(\"hidden\");\n }\n }\n\n hideMonth() {\n if (this.$monthWrapper) {\n this.$monthWrapper.setAttribute(\"hidden\", \"\");\n }\n }\n\n showDay() {\n if (this.$dayWrapper) {\n this.$dayWrapper.removeAttribute(\"hidden\");\n }\n }\n\n hideDay() {\n if (this.$dayWrapper) {\n this.$dayWrapper.setAttribute(\"hidden\", \"\");\n }\n }\n}\n","export class ErrorSummary {\n constructor($module) {\n this.$module = $module;\n }\n\n init() {\n if (!this.$module) {\n return;\n }\n\n const disableAutoFocus =\n this.$module.dataset.disableAutofocus === \"true\" || false;\n\n if (!disableAutoFocus) {\n this.setFocus(this.$module);\n }\n\n this.$module.addEventListener(\"click\", (event) => this.handleClick(event));\n }\n\n setFocus($element, options = {}) {\n const isFocusable = $element.getAttribute(\"tabindex\");\n\n if (!isFocusable) {\n $element.setAttribute(\"tabindex\", \"-1\");\n }\n\n /**\n * Handle element focus\n */\n function onFocus() {\n $element.addEventListener(\"blur\", onBlur, { once: true });\n }\n\n /**\n * Handle element blur\n */\n function onBlur() {\n options.onBlur?.call($element);\n\n if (!isFocusable) {\n $element.removeAttribute(\"tabindex\");\n }\n }\n\n // Add listener to reset element on blur, after focus\n $element.addEventListener(\"focus\", onFocus, { once: true });\n\n // Focus element\n options.onBeforeFocus?.call($element);\n $element.focus();\n }\n\n handleClick(event) {\n const $target = event.target;\n if ($target && this.focusTarget($target)) {\n event.preventDefault();\n }\n }\n\n getFragmentFromUrl(url) {\n if (!url.includes(\"#\")) {\n return undefined;\n }\n\n return url.split(\"#\").pop();\n }\n\n focusTarget($target) {\n // If the element that was clicked was not a link, return early\n if (!($target instanceof HTMLAnchorElement)) {\n return false;\n }\n\n const inputId = this.getFragmentFromUrl($target.href);\n if (!inputId) {\n return false;\n }\n\n const $input = document.getElementById(inputId);\n if (!$input) {\n return false;\n }\n\n const $legendOrLabel = this.getAssociatedLegendOrLabel($input);\n if (!$legendOrLabel) {\n return false;\n }\n\n // Scroll the legend or label into view *before* calling focus on the input\n // to avoid extra scrolling in browsers that don't support `preventScroll`\n // (which at time of writing is most of them...)\n $legendOrLabel.scrollIntoView();\n $input.focus({ preventScroll: true });\n\n return true;\n }\n\n /**\n * Get associated legend or label\n *\n * Returns the first element that exists from this list:\n *\n * - The `<legend>` associated with the closest `<fieldset>` ancestor, as long\n * as the top of it is no more than half a viewport height away from the\n * bottom of the input\n * - The first `<label>` that is associated with the input using for=\"inputId\"\n * - The closest parent `<label>`\n *\n * @private\n * @param {Element} $input - The input\n * @returns {Element | null} Associated legend or label, or null if no\n * associated legend or label can be found\n */\n getAssociatedLegendOrLabel($input) {\n const $fieldset = $input.closest(\"fieldset\");\n\n if ($fieldset) {\n const $legends = $fieldset.getElementsByTagName(\"legend\");\n\n if ($legends.length) {\n const $candidateLegend = $legends[0];\n\n // If the input type is radio or checkbox, always use the legend if\n // there is one.\n if (\n $input instanceof HTMLInputElement &&\n ($input.type === \"checkbox\" || $input.type === \"radio\")\n ) {\n return $candidateLegend;\n }\n\n // For other input types, only scroll to the fieldset’s legend (instead\n // of the label associated with the input) if the input would end up in\n // the top half of the screen.\n //\n // This should avoid situations where the input either ends up off the\n // screen, or obscured by a software keyboard.\n const legendTop = $candidateLegend.getBoundingClientRect().top;\n const inputRect = $input.getBoundingClientRect();\n\n // If the browser doesn't support Element.getBoundingClientRect().height\n // or window.innerHeight (like IE8), bail and just link to the label.\n if (inputRect.height && window.innerHeight) {\n const inputBottom = inputRect.top + inputRect.height;\n\n if (inputBottom - legendTop < window.innerHeight / 2) {\n return $candidateLegend;\n }\n }\n }\n }\n\n return (\n document.querySelector(`label[for='${$input.getAttribute(\"id\")}']`) ??\n $input.closest(\"label\")\n );\n }\n}\n","export class FileInputDroppable {\n constructor($module) {\n this.$module = $module;\n this.$body = $module && $module.querySelector(\".tna-form-item__body\");\n this.$input = this.$body && this.$body.querySelector(\".tna-file-input\");\n\n if (!this.$module || !this.$body || !this.$input) {\n return;\n }\n\n this.acceptMutltipleFiles = this.$input.hasAttribute(\"multiple\");\n\n this.$droppableArea = document.createElement(\"div\");\n this.$droppableArea.classList.add(\n \"tna-file-input__droppable\",\n \"tna-file-input__droppable--empty\",\n );\n this.$body.insertBefore(this.$droppableArea, this.$input);\n this.$droppableArea.appendChild(this.$input);\n\n this.$pseudoSelectFileText = document.createElement(\"span\");\n this.$pseudoSelectFileText.setAttribute(\"aria-live\", \"polite\");\n this.$pseudoSelectFileText.classList.add(\n \"tna-file-input__droppable-status\",\n );\n this.$pseudoSelectFileText.textContent = `No file${this.acceptMutltipleFiles ? \"s\" : \"\"} selected`;\n this.$droppableArea.appendChild(this.$pseudoSelectFileText);\n\n const $droppableButtons = document.createElement(\"div\");\n $droppableButtons.classList.add(\n \"tna-button-group\",\n \"tna-button-group--small\",\n \"tna-!--margin-top-s\",\n \"tna-file-input__droppable-buttons\",\n );\n this.$droppableArea.appendChild($droppableButtons);\n\n const $pseudoSelectFileButton = document.createElement(\"span\");\n $pseudoSelectFileButton.classList.add(\"tna-button\");\n $pseudoSelectFileButton.textContent = `Choose file${this.acceptMutltipleFiles ? \"s\" : \"\"}`;\n $droppableButtons.appendChild($pseudoSelectFileButton);\n\n const $pseudoDropFileButton = document.createElement(\"span\");\n $pseudoDropFileButton.textContent = `or drop file${this.acceptMutltipleFiles ? \"s\" : \"\"}`;\n $droppableButtons.appendChild($pseudoDropFileButton);\n\n this.$droppableAreaAriaLabel = document.createElement(\"span\");\n this.$droppableAreaAriaLabel.classList.add(\"tna-visually-hidden\");\n this.$droppableAreaAriaLabel.setAttribute(\"aria-live\", \"assertive\");\n this.$droppableArea.appendChild(this.$droppableAreaAriaLabel);\n\n this.$input.addEventListener(\"dragenter\", (e) => this.showDropTarget(e));\n this.$input.addEventListener(\"dragleave\", () => this.hideDropTarget());\n this.$input.addEventListener(\"dragend\", () => this.hideDropTarget());\n this.$input.addEventListener(\"change\", () => this.onChange());\n this.$input.addEventListener(\"drop\", () => this.onChange());\n }\n\n isContainingFiles(dataTransfer) {\n const hasNoTypesInfo = dataTransfer.types.length === 0;\n const isDraggingFiles = dataTransfer.types.some((type) => type === \"Files\");\n return hasNoTypesInfo || isDraggingFiles;\n }\n\n showDropTarget(event, updateAriaLabel = true) {\n if (event.dataTransfer && this.isContainingFiles(event.dataTransfer)) {\n this.$droppableArea.classList.add(\n event.dataTransfer.items.length > 1\n ? \"tna-file-input__droppable--over-multiple\"\n : \"tna-file-input__droppable--over\",\n );\n\n if (updateAriaLabel) {\n this.$droppableAreaAriaLabel.textContent = \"Entered drop zone\";\n }\n }\n }\n\n hideDropTarget(updateAriaLabel = true) {\n this.$droppableArea.classList.remove(\n \"tna-file-input__droppable--over\",\n \"tna-file-input__droppable--over-multiple\",\n );\n if (updateAriaLabel) {\n this.$droppableAreaAriaLabel.textContent = \"Left drop zone\";\n }\n }\n\n onChange() {\n const files = this.$input.files;\n if (this.acceptMutltipleFiles) {\n if (files.length === 0) {\n this.$pseudoSelectFileText.textContent = `No files selected`;\n } else {\n this.$pseudoSelectFileText.textContent = `${files.length} file${files.length > 1 ? \"s\" : \"\"} selected`;\n }\n } else {\n this.$pseudoSelectFileText.textContent =\n files[0]?.name || `No file selected`;\n }\n if (files.length === 0) {\n this.$droppableArea.classList.add(\"tna-file-input__droppable--empty\");\n } else {\n this.$droppableArea.classList.remove(\"tna-file-input__droppable--empty\");\n }\n this.hideDropTarget(false);\n }\n}\n","import Cookies from \"../../lib/cookies.mjs\";\n\nexport class Footer {\n constructor($module, themeCookieName = \"theme\") {\n this.$module = $module;\n this.$themeSelector =\n $module && $module.querySelector(\".tna-footer__theme-selector\");\n this.$themeSelectorNotice =\n $module && $module.querySelector(\".tna-footer__theme-selector-notice\");\n this.$themeSelectorEnableSettingsCookiesButton =\n this.$themeSelectorNotice &&\n this.$themeSelectorNotice.querySelector(\n \".tna-footer__theme-selector-enable-settings-cookies\",\n );\n this.$tnaTemplate = document.querySelector(\".tna-template\");\n\n if (\n !this.$module ||\n !this.$themeSelector ||\n !this.$themeSelectorNotice ||\n !this.$themeSelectorEnableSettingsCookiesButton ||\n !this.$tnaTemplate\n ) {\n return;\n }\n\n this.currentTheme = this.$themeSelector.dataset.themeOnLoad;\n\n this.themeCookieName = themeCookieName;\n\n this.cookies = new Cookies();\n\n this.$themeSelectorButtons = this.$themeSelector.querySelectorAll(\n \"button.tna-footer__theme-selector-button[value]\",\n );\n\n Array.from(this.$themeSelectorButtons).forEach(($themeSelectorButton) => {\n $themeSelectorButton.addEventListener(\"click\", (e) => {\n const $button = e.target;\n this.setTheme($button.value);\n this.selectThemeSelectorButton($button);\n });\n });\n\n this.$themeSelectorEnableSettingsCookiesButton.addEventListener(\n \"click\",\n () => {\n this.cookies.acceptPolicy(\"settings\");\n },\n );\n\n this.showThemeSelector();\n this.cookies.on(\"changePolicy\", (data) => {\n if (Object.hasOwn(data, \"settings\")) {\n if (data.settings === true) {\n this.cookies.set(this.themeCookieName, this.currentTheme);\n this.$themeSelectorNotice.setAttribute(\"hidden\", \"\");\n } else {\n this.cookies.delete(this.themeCookieName);\n this.$themeSelectorNotice.removeAttribute(\"hidden\");\n }\n }\n });\n }\n\n showThemeSelector() {\n this.$themeSelector.removeAttribute(\"hidden\");\n if (this.cookies.exists(this.themeCookieName)) {\n const $currentThemeButton = Array.from(this.$themeSelectorButtons).find(\n ($button) => $button.value === this.cookies.get(this.themeCookieName),\n );\n if ($currentThemeButton) {\n this.selectThemeSelectorButton($currentThemeButton);\n }\n }\n if (!this.cookies.isPolicyAccepted(\"settings\")) {\n this.$themeSelectorNotice.removeAttribute(\"hidden\");\n }\n }\n\n setTheme(theme) {\n if (theme === \"light\") {\n this.$tnaTemplate.classList.remove(\n \"tna-template--system-theme\",\n \"tna-template--dark-theme\",\n );\n } else if (theme === \"dark\") {\n this.$tnaTemplate.classList.remove(\"tna-template--system-theme\");\n this.$tnaTemplate.classList.add(`tna-template--dark-theme`);\n } else if (theme === \"system\") {\n this.$tnaTemplate.classList.remove(\"tna-template--dark-theme\");\n this.$tnaTemplate.classList.add(`tna-template--system-theme`);\n } else {\n return;\n }\n this.currentTheme = theme;\n if (this.cookies.isPolicyAccepted(\"settings\")) {\n this.cookies.set(this.themeCookieName, this.currentTheme);\n } else {\n this.$themeSelectorNotice.removeAttribute(\"hidden\");\n }\n }\n\n selectThemeSelectorButton($selectedButton) {\n Array.from(this.$themeSelectorButtons).forEach(($button) => {\n if ($button.value === $selectedButton.value) {\n $button.classList.remove(\"tna-button--plain\");\n $button.setAttribute(\"aria-current\", true);\n } else {\n $button.classList.add(\"tna-button--plain\");\n $button.removeAttribute(\"aria-current\");\n }\n });\n }\n}\n","export class Gallery {\n constructor($module) {\n this.$module = $module;\n this.$itemsContainer =\n $module && $module.querySelector(\".tna-gallery__items\");\n this.$items =\n this.$itemsContainer &&\n this.$itemsContainer.querySelectorAll(\".tna-gallery__item\");\n this.$navigation =\n $module && $module.querySelector(\".tna-gallery__navigation\");\n this.$navigationItems =\n this.$navigation &&\n $module.querySelectorAll(\".tna-gallery__navigation-item\");\n this.$navigationButtons =\n $module && $module.querySelector(\".tna-gallery__navigation-buttons\");\n\n if (\n !this.$module ||\n !this.$itemsContainer ||\n !this.$items ||\n this.$items.length < 2 ||\n !this.$navigation ||\n !this.$navigationItems ||\n !this.$navigationButtons\n ) {\n return;\n }\n\n this.$module.classList.add(\"tna-gallery--interactive\");\n\n this.$navigationButtonPrev = this.$navigationButtons.querySelector(\n \".tna-gallery__navigation-prev\",\n );\n this.$navigationButtonNext = this.$navigationButtons.querySelector(\n \".tna-gallery__navigation-next\",\n );\n\n this.setup();\n this.currentId = this.$items[0].id;\n this.showItem(this.currentId);\n }\n\n setup() {\n this.$items.forEach(($item) => {\n $item.setAttribute(\"hidden\", \"\");\n $item.setAttribute(\"aria-hidden\", \"true\");\n $item\n .querySelector(\".tna-gallery__item-header\")\n ?.setAttribute(\"aria-hidden\", \"true\");\n });\n this.$navigation.removeAttribute(\"hidden\");\n this.$navigationItems.forEach(($item) => {\n $item.addEventListener(\"click\", () => {\n this.showItem($item.getAttribute(\"aria-controls\"));\n this.$itemsContainer.setAttribute(\"tabindex\", \"0\");\n this.$itemsContainer.focus();\n });\n });\n this.$module.addEventListener(\"keydown\", (e) => {\n let preventDefaultKeyAction = false;\n switch (e.key) {\n case \"ArrowLeft\":\n case \"ArrowUp\":\n this.showPreviousItem();\n preventDefaultKeyAction = true;\n break;\n case \"ArrowRight\":\n case \"ArrowDown\":\n this.showNextItem();\n preventDefaultKeyAction = true;\n break;\n case \"Home\":\n this.showFirstItem();\n preventDefaultKeyAction = true;\n break;\n case \"End\":\n this.showLastItem();\n preventDefaultKeyAction = true;\n break;\n }\n if (preventDefaultKeyAction) {\n e.stopPropagation();\n e.preventDefault();\n }\n });\n\n this.$navigationButtons?.removeAttribute(\"hidden\");\n this.$navigationButtonPrev?.addEventListener(\"click\", () => {\n this.showPreviousItem();\n });\n this.$navigationButtonNext?.addEventListener(\"click\", () => {\n this.showNextItem();\n });\n\n this.$liveRegion = document.createElement(\"div\");\n this.$liveRegion.setAttribute(\"aria-live\", \"polite\");\n this.$liveRegion.setAttribute(\"aria-atomic\", \"true\");\n this.$liveRegion.setAttribute(\"class\", \"tna-gallery__item-header\");\n this.$itemsContainer.prepend(this.$liveRegion);\n this.$itemsContainer.classList.add(\"tna-gallery__items--hide-item-titles\");\n this.$itemsContainer.addEventListener(\"blur\", () =>\n this.$itemsContainer.removeAttribute(\"tabindex\"),\n );\n }\n\n showItem(id) {\n this.$items.forEach(($item) => {\n if (id && $item.id === id) {\n $item.removeAttribute(\"hidden\");\n $item.removeAttribute(\"aria-hidden\");\n } else {\n $item.setAttribute(\"hidden\", \"\");\n $item.setAttribute(\"aria-hidden\", \"true\");\n }\n });\n this.$navigationItems.forEach(($item) => {\n if (id) {\n if ($item.getAttribute(\"aria-controls\") === id) {\n $item.setAttribute(\"aria-current\", \"true\");\n } else {\n $item.setAttribute(\"aria-current\", \"false\");\n }\n } else {\n $item.setAttribute(\"aria-current\", \"false\");\n }\n });\n this.currentId = id;\n this.$liveRegion.textContent = `Image ${this.getCurrentItemIndex() + 1} of ${this.$items.length}`;\n }\n\n getCurrentItemIndex() {\n return Array.from(this.$items).findIndex(\n ($item) => $item.id === this.currentId,\n );\n }\n\n showPreviousItem() {\n let nextIndexToShow = this.getCurrentItemIndex() - 1;\n if (nextIndexToShow < 0) {\n nextIndexToShow = this.$items.length - 1;\n }\n this.showItem(this.$items[nextIndexToShow].id);\n }\n\n showNextItem() {\n let nextIndexToShow = this.getCurrentItemIndex() + 1;\n if (nextIndexToShow >= this.$items.length) {\n nextIndexToShow = 0;\n }\n this.showItem(this.$items[nextIndexToShow].id);\n }\n\n showFirstItem() {\n this.showItem(this.$items[0].id);\n }\n\n showLastItem() {\n this.showItem(this.$items[this.$items.length - 1].id);\n }\n}\n","export class GlobalHeader {\n constructor($module) {\n this.$module = $module;\n this.$toggleButton =\n $module && $module.querySelector(\".tna-global-header__navigation-button\");\n this.$navigation =\n $module &&\n $module.querySelector(\".tna-global-header__navigation-wrapper\");\n this.$topNavigation =\n $module &&\n $module.querySelector(\".tna-global-header__top-navigation-wrapper\");\n this.$links =\n $module &&\n ((this.$navigation &&\n this.$navigation.querySelectorAll(\"[tabindex='0']\")) ||\n (this.$topNavigation &&\n this.$topNavigation.querySelectorAll(\"[tabindex='0']\")));\n this.menuOpened = false;\n this.mql = window.matchMedia(\"(max-width: 48em)\");\n\n if (\n !this.$module ||\n !this.$toggleButton ||\n (!this.$navigation && !this.$topNavigation)\n ) {\n return;\n }\n\n this.$toggleButton.removeAttribute(\"hidden\");\n this.syncState();\n this.$toggleButton.addEventListener(\"click\", () =>\n this.handleToggleNavigation(),\n );\n if (\"addEventListener\" in this.mql) {\n this.mql.addEventListener(\"change\", () => this.syncState());\n } else {\n this.mql.addListener(() => this.syncState());\n }\n\n this.$module.addEventListener(\"keyup\", (e) => {\n if (e.code === \"Escape\" && this.mql.matches) {\n if (this.menuOpened) {\n this.menuOpened = false;\n this.syncState();\n this.$toggleButton.focus();\n }\n }\n });\n }\n\n handleToggleNavigation() {\n this.menuOpened = !this.menuOpened;\n this.syncState();\n }\n\n syncState() {\n if (this.mql.matches) {\n if (this.menuOpened) {\n this.show();\n } else {\n this.hide();\n }\n } else {\n this.show();\n }\n }\n\n hide() {\n if (this.$navigation) {\n this.$navigation.hidden = true;\n this.$navigation.setAttribute(\"aria-hidden\", \"true\");\n }\n if (this.$topNavigation) {\n this.$topNavigation.hidden = true;\n this.$topNavigation.setAttribute(\"aria-hidden\", \"true\");\n }\n this.$toggleButton.setAttribute(\"aria-expanded\", \"false\");\n this.$toggleButton.setAttribute(\"title\", \"Open menu\");\n this.$toggleButton.classList.remove(\n \"tna-global-header__navigation-button--opened\",\n );\n for (let i = 0; i < this.$links.length; i++) {\n this.$links[i].setAttribute(\"tabindex\", \"-1\");\n }\n }\n\n show() {\n if (this.$navigation) {\n this.$navigation.hidden = false;\n this.$navigation.setAttribute(\"aria-hidden\", \"false\");\n }\n if (this.$topNavigation) {\n this.$topNavigation.hidden = false;\n this.$topNavigation.setAttribute(\"aria-hidden\", \"false\");\n }\n this.$toggleButton.setAttribute(\"aria-expanded\", \"true\");\n this.$toggleButton.setAttribute(\"title\", \"Close menu\");\n this.$toggleButton.classList.add(\n \"tna-global-header__navigation-button--opened\",\n );\n for (let i = 0; i < this.$links.length; i++) {\n this.$links[i].setAttribute(\"tabindex\", \"0\");\n }\n }\n}\n","export class Header {\n constructor($module) {\n this.$module = $module;\n this.$toggleButton =\n $module && $module.querySelector(\".tna-header__navigation-button\");\n this.$navigation =\n $module && $module.querySelector(\".tna-header__navigation\");\n this.$links =\n $module &&\n this.$navigation &&\n this.$navigation.querySelectorAll(\"[tabindex='0']\");\n this.menuOpened = false;\n this.mql = window.matchMedia(\"(max-width: 48em)\");\n\n if (!this.$module || !this.$toggleButton || !this.$navigation) {\n return;\n }\n\n this.$toggleButton.removeAttribute(\"hidden\");\n this.syncState();\n this.$toggleButton.addEventListener(\"click\", () =>\n this.handleToggleNavigation(),\n );\n if (\"addEventListener\" in this.mql) {\n this.mql.addEventListener(\"change\", () => this.syncState());\n } else {\n this.mql.addListener(() => this.syncState());\n }\n\n this.$module.addEventListener(\"keyup\", (e) => {\n if (e.code === \"Escape\") {\n if (this.menuOpened && this.mql.matches) {\n this.menuOpened = false;\n this.syncState();\n this.$toggleButton.focus();\n }\n }\n });\n }\n\n handleToggleNavigation() {\n this.menuOpened = !this.menuOpened;\n this.syncState();\n }\n\n syncState() {\n if (this.mql.matches) {\n if (this.menuOpened) {\n this.show();\n } else {\n this.hide();\n }\n } else {\n this.show();\n }\n }\n\n show() {\n this.$navigation.classList.add(\"tna-header__navigation--open\");\n this.$navigation.removeAttribute(\"hidden\");\n this.$navigation.setAttribute(\"aria-hidden\", \"false\");\n this.$toggleButton.setAttribute(\"aria-expanded\", \"true\");\n this.$toggleButton.setAttribute(\"title\", \"Close menu\");\n this.$toggleButton.classList.add(\"tna-header__navigation-button--opened\");\n\n for (let i = 0; i < this.$links.length; i++) {\n this.$links[i].setAttribute(\"tabindex\", \"0\");\n }\n }\n\n hide() {\n this.$navigation.classList.remove(\"tna-header__navigation--open\");\n this.$navigation.hidden = true;\n this.$navigation.setAttribute(\"aria-hidden\", \"true\");\n this.$toggleButton.setAttribute(\"aria-expanded\", \"false\");\n this.$toggleButton.setAttribute(\"title\", \"Open menu\");\n this.$toggleButton.classList.remove(\n \"tna-header__navigation-button--opened\",\n );\n\n for (let i = 0; i < this.$links.length; i++) {\n this.$links[i].setAttribute(\"tabindex\", \"-1\");\n }\n }\n}\n","import uuidv4 from \"../../lib/uuid.mjs\";\n\nexport class Picture {\n constructor($module) {\n this.$module = $module;\n this.$imageWrapper =\n $module && $module.querySelector(\".tna-picture__image-wrapper\");\n\n this.$transcriptToggle =\n this.$imageWrapper &&\n this.$imageWrapper.querySelector(\".tna-picture__toggle-transcript\");\n\n this.$transcript =\n $module && $module.querySelector(\".tna-picture__transcript\");\n this.transcriptOpened = false;\n\n if (\n !this.$module ||\n !this.$imageWrapper ||\n !this.$transcriptToggle ||\n !this.$transcript\n ) {\n return;\n }\n\n this.openLabel =\n this.$module.dataset.informationLabelOpen || \"Open transcript\";\n this.closeLabel =\n this.$module.dataset.informationLabelClose || \"Close transcript\";\n\n this.init();\n }\n\n init() {\n const uniqueId = `tna-picture-${uuidv4()}`;\n\n this.$transcriptToggle.removeAttribute(\"hidden\");\n this.$transcriptToggle.setAttribute(\"aria-controls\", uniqueId);\n this.$transcriptToggle.innerText = this.openLabel;\n this.$transcriptToggle.addEventListener(\"click\", () =>\n this.toggleTranscript(),\n );\n\n this.$transcript.setAttribute(\"id\", uniqueId);\n this.$transcript.setAttribute(\"hidden\", \"\");\n\n this.$transcript.addEventListener(\"keydown\", (e) => {\n switch (e.key) {\n case \"Escape\":\n this.toggleTranscript();\n this.$transcriptToggle.focus();\n break;\n }\n });\n }\n\n toggleTranscript() {\n this.transcriptOpened = !this.transcriptOpened;\n if (this.transcriptOpened) {\n this.$transcriptToggle.setAttribute(\"aria-expanded\", true);\n this.$transcriptToggle.innerText = this.closeLabel;\n this.$transcript.removeAttribute(\"hidden\");\n } else {\n this.$transcriptToggle.setAttribute(\"aria-expanded\", false);\n this.$transcriptToggle.innerText = this.openLabel;\n this.$transcript.setAttribute(\"hidden\", \"\");\n }\n }\n}\n","export class SkipLink {\n linkedElementListener = false;\n\n constructor($module) {\n this.$module = $module;\n this.linkedElementId = $module.getAttribute(\"href\")?.split(\"#\").pop();\n this.$linkedElement =\n $module &&\n this.linkedElementId &&\n document.getElementById(this.linkedElementId);\n\n if (this.$module && this.$linkedElement) {\n this.$module.addEventListener(\"click\", () => this.focusLinkedElement());\n }\n }\n\n focusLinkedElement() {\n if (!this.$linkedElement.getAttribute(\"tabindex\")) {\n this.$linkedElement.setAttribute(\"tabindex\", \"-1\");\n this.$linkedElement.classList.add(\"tna-!--no-focus-style\");\n\n if (!this.linkedElementListener) {\n this.$linkedElement.addEventListener(\"blur\", () =>\n this.removeFocusProperties(),\n );\n this.linkedElementListener = true;\n }\n }\n\n this.$linkedElement.focus();\n }\n\n removeFocusProperties() {\n this.$linkedElement.removeAttribute(\"tabindex\");\n this.$linkedElement.classList.remove(\"tna-!--no-focus-style\");\n }\n}\n","export class Tabs {\n constructor($module) {\n this.$module = $module;\n this.$tabList = $module && $module.querySelector(\".tna-tabs__list\");\n this.$tabListItemLinks =\n $module &&\n this.$tabList &&\n this.$tabList.querySelectorAll(\".tna-tabs__button\");\n this.$tabItems = $module && $module.querySelectorAll(\".tna-tabs__item\");\n\n if (\n !this.$module ||\n !this.$tabList ||\n !this.$tabListItemLinks ||\n !this.$tabItems ||\n this.$tabListItemLinks.length !== this.$tabItems.length\n ) {\n return;\n }\n\n this.currentTabIndex = 0;\n this.init();\n }\n\n init() {\n this.$module.classList.add(\"tna-tabs--interactive\");\n this.$tabList.removeAttribute(\"hidden\");\n this.$tabListItemLinks.forEach(($tabListItemLink) => {\n const tabPanelID = $tabListItemLink.getAttribute(\"aria-controls\");\n $tabListItemLink.setAttribute(\"aria-selected\", false);\n const $tabPanel = document.getElementById(tabPanelID);\n $tabPanel.setAttribute(\"aria-labelledby\", $tabListItemLink.id);\n $tabPanel.setAttribute(\"role\", \"tabpanel\");\n $tabListItemLink.addEventListener(\n \"click\",\n (e) => this.handleItemLinkClick(e),\n true,\n );\n });\n this.switchTabByIndex(this.currentTabIndex);\n this.$module.addEventListener(\"keydown\", (e) =>\n this.handleItemLinkKeyDown(e),\n );\n }\n\n handleItemLinkClick(itemLinkClickEvent) {\n itemLinkClickEvent.preventDefault();\n const targetItem =\n itemLinkClickEvent.currentTarget.getAttribute(\"aria-controls\");\n this.switchTabByID(targetItem);\n }\n\n handleItemLinkKeyDown(itemLinkKeyDownEvent) {\n let preventDefaultKeyAction = false;\n switch (itemLinkKeyDownEvent.key) {\n case \"ArrowLeft\":\n case \"ArrowUp\":\n this.previousTab();\n preventDefaultKeyAction = true;\n break;\n case \"ArrowRight\":\n case \"ArrowDown\":\n this.nextTab();\n preventDefaultKeyAction = true;\n break;\n case \"Home\":\n this.switchTabByIndex(0, true);\n preventDefaultKeyAction = true;\n break;\n case \"End\":\n this.switchTabByIndex(this.$tabListItemLinks.length - 1, true);\n preventDefaultKeyAction = true;\n break;\n default:\n break;\n }\n if (preventDefaultKeyAction) {\n itemLinkKeyDownEvent.stopPropagation();\n itemLinkKeyDownEvent.preventDefault();\n }\n }\n\n nextTab() {\n if (this.currentTabIndex < this.$tabListItemLinks.length - 1) {\n this.switchTabByIndex(this.currentTabIndex + 1, true);\n } else {\n this.switchTabByIndex(0, true);\n }\n }\n\n previousTab() {\n if (this.currentTabIndex >= 1) {\n this.switchTabByIndex(this.currentTabIndex - 1, true);\n } else {\n this.switchTabByIndex(this.$tabListItemLinks.length - 1, true);\n }\n }\n\n switchTabByIndex(newIndex, switchFocus = false) {\n this.currentTabIndex = newIndex;\n this.$tabListItemLinks.forEach(($tabListItemLink, index) => {\n if (index === this.currentTabIndex) {\n $tabListItemLink.setAttribute(\"aria-selected\", true);\n $tabListItemLink.setAttribute(\"tabindex\", \"0\");\n if (switchFocus) {\n $tabListItemLink.focus();\n }\n } else {\n $tabListItemLink.setAttribute(\"aria-selected\", false);\n $tabListItemLink.setAttribute(\"tabindex\", \"-1\");\n }\n });\n this.$tabItems.forEach(($tabItem, index) => {\n if (index === this.currentTabIndex) {\n $tabItem.removeAttribute(\"hidden\");\n $tabItem.setAttribute(\"tabindex\", \"0\");\n } else {\n $tabItem.setAttribute(\"hidden\", \"\");\n $tabItem.setAttribute(\"tabindex\", \"-1\");\n }\n });\n }\n\n switchTabByID(targetId) {\n const index = Array.from(this.$tabItems).findIndex(\n ($tabItem) => $tabItem.getAttribute(\"id\") === targetId,\n );\n this.switchTabByIndex(index);\n }\n}\n","export class TextInput {\n constructor($module) {\n this.$module = $module;\n this.$input = $module && $module.querySelector(\".tna-text-input\");\n\n if (!this.$module || !this.$input) {\n return;\n }\n\n if (this.$input.getAttribute(\"type\") === \"password\") {\n this.$textInputWrapper = document.createElement(\"div\");\n this.$textInputWrapper.classList.add(\"tna-text-input-wrapper\");\n\n this.$textInputPasswordToggle = document.createElement(\"button\");\n this.$textInputPasswordToggle.setAttribute(\"type\", \"button\");\n this.$textInputPasswordToggle.classList.add(\n \"tna-button\",\n \"tna-button--small\",\n \"tna-button--icon-only\",\n );\n this.$textInputPasswordToggle.setAttribute(\n \"aria-controls\",\n this.$input.id,\n );\n this.updateTogglePasswordButtonText();\n\n this.$textInputWrapper.appendChild(this.$input);\n this.$textInputWrapper.appendChild(this.$textInputPasswordToggle);\n this.$module.appendChild(this.$textInputWrapper);\n\n this.$textInputPasswordToggle.addEventListener(\"click\", () => {\n this.togglePasswordType();\n this.$input.focus();\n });\n }\n }\n\n togglePasswordType() {\n if (this.$input.getAttribute(\"type\") === \"password\") {\n this.$input.setAttribute(\"type\", \"text\");\n } else {\n this.$input.setAttribute(\"type\", \"password\");\n }\n this.updateTogglePasswordButtonText();\n }\n\n updateTogglePasswordButtonText() {\n if (this.$input.getAttribute(\"type\") === \"password\") {\n this.$textInputPasswordToggle.innerHTML = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 640 640\" height=\"24\" aria-hidden=\"true\" focusable=\"false\"><!--!Font Awesome Free v7.0.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--><path d=\"M320 96C239.2 96 174.5 132.8 127.4 176.6C80.6 220.1 49.3 272 34.4 307.7C31.1 315.6 31.1 324.4 34.4 332.3C49.3 368 80.6 420 127.4 463.4C174.5 507.1 239.2 544 320 544C400.8 544 465.5 507.2 512.6 463.4C559.4 419.9 590.7 368 605.6 332.3C608.9 324.4 608.9 315.6 605.6 307.7C590.7 272 559.4 220 512.6 176.6C465.5 132.9 400.8 96 320 96zM176 320C176 240.5 240.5 176 320 176C399.5 176 464 240.5 464 320C464 399.5 399.5 464 320 464C240.5 464 176 399.5 176 320zM320 256C320 291.3 291.3 320 256 320C244.5 320 233.7 317 224.3 311.6C223.3 322.5 224.2 333.7 227.2 344.8C240.9 396 293.6 426.4 344.8 412.7C396 399 426.4 346.3 412.7 295.1C400.5 249.4 357.2 220.3 311.6 224.3C316.9 233.6 320 244.4 320 256z\" /></svg>Show password`;\n this.$textInputPasswordToggle.setAttribute(\"title\", \"Show password\");\n this.$textInputPasswordToggle.setAttribute(\"aria-label\", \"Show password\");\n } else {\n this.$textInputPasswordToggle.innerHTML = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 640 640\" height=\"24\" aria-hidden=\"true\" focusable=\"false\"><!--!Font Awesome Free v7.0.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--><path d=\"M73 39.1C63.6 29.7 48.4 29.7 39.1 39.1C29.8 48.5 29.7 63.7 39 73.1L567 601.1C576.4 610.5 591.6 610.5 600.9 601.1C610.2 591.7 610.3 576.5 600.9 567.2L504.5 470.8C507.2 468.4 509.9 466 512.5 463.6C559.3 420.1 590.6 368.2 605.5 332.5C608.8 324.6 608.8 315.8 605.5 307.9C590.6 272.2 559.3 220.2 512.5 176.8C465.4 133.1 400.7 96.2 319.9 96.2C263.1 96.2 214.3 114.4 173.9 140.4L73 39.1zM236.5 202.7C260 185.9 288.9 176 320 176C399.5 176 464 240.5 464 320C464 351.1 454.1 379.9 437.3 403.5L402.6 368.8C415.3 347.4 419.6 321.1 412.7 295.1C399 243.9 346.3 213.5 295.1 227.2C286.5 229.5 278.4 232.9 271.1 237.2L236.4 202.5zM357.3 459.1C345.4 462.3 332.9 464 320 464C240.5 464 176 399.5 176 320C176 307.1 177.7 294.6 180.9 282.7L101.4 203.2C68.8 240 46.4 279 34.5 307.7C31.2 315.6 31.2 324.4 34.5 332.3C49.4 368 80.7 420 127.5 463.4C174.6 507.1 239.3 544 320.1 544C357.4 544 391.3 536.1 421.6 523.4L357.4 459.2z\" /></svg>Hide password`;\n this.$textInputPasswordToggle.setAttribute(\"title\", \"Hide password\");\n this.$textInputPasswordToggle.setAttribute(\"aria-label\", \"Hide password\");\n }\n }\n}\n","window.TNAFrontendCookies = window.TNAFrontendCookies || null;\nwindow.TNAFrontendCookieEvents = window.TNAFrontendCookieEvents || null;\n\nexport class CookieEventHandler {\n events = {};\n oneTimeEvents = {};\n debug = false;\n\n constructor(debug = false) {\n this.debug = debug;\n if (window.TNAFrontendCookieEvents) {\n this.log(\"Using existing TNAFrontendCookieEvents instance\");\n return window.TNAFrontendCookieEvents;\n }\n window.TNAFrontendCookieEvents = this;\n }\n\n log(...args) {\n if (this.debug) {\n console.log(\"[TNA Frontend Cookie Events]\", ...args);\n }\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.log(`Triggering event: ${event}`, data);\n this.events[event].forEach((eventToTrigger) =>\n eventToTrigger.call(this, data),\n );\n }\n if (Object.hasOwn(this.oneTimeEvents, event)) {\n this.log(`Triggering one-time event: ${event}`, data);\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\nconst tnaCookiePolicies = [\"usage\", \"settings\", \"marketing\", \"essential\"];\n\n/**\n * Class to handle cookies.\n * @class Cookies\n * @constructor\n * @public\n */\nexport default class Cookies {\n /** @protected */\n defaultDomain = \"\";\n /** @protected */\n defaultPath = \"\";\n /** @protected */\n secure = true;\n /** @protected */\n policiesKey = \"\";\n /** @protected */\n events = null;\n /** @protected */\n defaultAge = null;\n /** @protected */\n policiesCorrectOnInit = false;\n /** @protected */\n debug = document.documentElement.dataset.tnaFrontendDebug === \"true\";\n\n /**\n * Create a cookie handler.\n * @param {String} [options.defaultDomain] - The domain to register the cookie with.\n * @param {String} [options.path] - The domain to register the cookie with.\n * @param {Boolean} [options.secure] - Only set cookie in HTTPS environments.\n * @param {String} [options.policiesKey] - The name of the cookie.\n * @param {Number} [options.defaultAge] - The default age of non-session cookies.\n * @param {String} [options.newInstance=false] - Create a fresh instance of the cookie class.\n * @param {Boolean} [options.noInit=false] - Don't initialise a blank cookie policy.\n */\n constructor(options = {}) {\n const {\n defaultDomain,\n defaultPath,\n secure,\n policiesKey,\n defaultAge,\n newInstance = false,\n noInit = false,\n } = options;\n if (!newInstance && window.TNAFrontendCookies) {\n return window.TNAFrontendCookies;\n }\n if (defaultDomain === undefined) {\n this.defaultDomain =\n document.documentElement.dataset.tnaCookiesDomain ||\n window.location.hostname;\n } else {\n this.defaultDomain = defaultDomain;\n }\n if (defaultPath === undefined) {\n this.defaultPath = document.documentElement.dataset.tnaCookiesPath || \"/\";\n } else {\n this.defaultPath = defaultPath;\n }\n if (secure === undefined) {\n this.secure =\n document.documentElement.dataset.tnaCookiesInsecure !== \"true\";\n } else {\n this.secure = secure;\n }\n if (policiesKey === undefined) {\n this.policiesKey =\n document.documentElement.dataset.tnaCookiesPoliciesKey ||\n \"cookies_policy\";\n } else {\n this.policiesKey = policiesKey;\n }\n if (defaultAge === undefined) {\n this.defaultAge =\n parseInt(document.documentElement.dataset.tnaCookiesDefaultAge) ||\n 31536000; // 365 days;\n } else {\n this.defaultAge = defaultAge;\n }\n this.events = new CookieEventHandler(this.debug);\n this.policiesCorrectOnInit =\n Object.keys(this.policies).length === tnaCookiePolicies.length &&\n tnaCookiePolicies.every(\n (policy) =>\n Object.keys(this.policies).includes(policy) &&\n typeof this.policies[policy] === \"boolean\",\n );\n if (!this.policiesCorrectOnInit && !noInit) {\n this.init();\n }\n this.log({\n defaultDomain: this.defaultDomain,\n defaultPath: this.defaultPath,\n secure: this.secure,\n policiesKey: this.policiesKey,\n defaultAge: this.defaultAge,\n policiesCorrectOnInit: this.policiesCorrectOnInit,\n });\n if (!newInstance && !window.TNAFrontendCookies) {\n window.TNAFrontendCookies = this;\n }\n }\n\n /** @protected */\n init() {\n const existingPolicies = this.policies;\n this.log(\"Existing policies on init:\", existingPolicies);\n const filteredExistingPolicies = Object.fromEntries(\n Object.keys(existingPolicies)\n .filter((policy) => tnaCookiePolicies.includes(policy))\n .map((policy) => [policy, existingPolicies[policy]]),\n );\n if (Object.keys(filteredExistingPolicies).length > 0) {\n this.log(\"Filtered existing policies:\", filteredExistingPolicies);\n }\n this.savePolicies({\n usage: false,\n settings: false,\n marketing: false,\n ...filteredExistingPolicies,\n essential: true,\n });\n }\n\n log(...args) {\n if (this.debug) {\n console.log(\"[TNA Frontend Cookies]\", ...args, this.all);\n }\n }\n\n destroyInstance() {\n this.log(\"Destroying TNAFrontendCookies instance\");\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.defaultDomain] - The domain to register the cookie with.\n * @param {String} [options.path=this.defaultPath] - 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.defaultDomain,\n path = this.defaultPath,\n secure = this.secure,\n session = false,\n } = options;\n if (!key) {\n return;\n }\n const cookie = `${encodeURIComponent(key)}=${encodeURIComponent(value)}; domain=${domain}; samesite=${sameSite}; path=${path}${!session ? `; max-age=${maxAge}` : \"\"}${\n secure ? \"; secure\" : \"\"\n }`;\n document.cookie = cookie;\n this.log(\"Set cookie:\", {\n key,\n value,\n maxAge,\n path,\n sameSite,\n domain,\n secure,\n session,\n cookie,\n });\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 = this.defaultDomain) {\n const options = { maxAge: -1, path, domain: domain || undefined };\n this.set(key, \"\", options);\n this.log(\"Deleted cookie:\", { key, path, domain, ...options });\n this.events.trigger(\"deleteCookie\", { key, ...options });\n }\n\n /**\n * Delete all cookies.\n */\n deleteAll(path = \"/\", domain = this.defaultDomain) {\n Object.keys(this.all).forEach((cookie) => {\n this.delete(cookie, path, domain);\n });\n this.log(\"Deleted all cookies\", { path, domain });\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.log(\"Accepting policy:\", 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.log(\"Rejecting policy:\", 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 this.log(\"Cannot change essential policy, it is always accepted.\");\n return;\n }\n this.log(`Setting policy ${policy} to ${accepted}`);\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 this.log(\"Accepting all policies\");\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 this.log(\"Rejecting all policies\");\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.log(\"Saving policies:\", 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.log(`Adding event listener for: ${event}`);\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.log(`Adding one-time event listener for: ${event}`);\n this.events.once(event, callback);\n }\n}\n","import uuidv4 from \"./uuid.mjs\";\n\nexport const checkTableForScroll = ($tableWrapper) => {\n const isUninitialised = !(\n $tableWrapper.dataset.tableScrollInitialised === \"true\"\n );\n const $caption = $tableWrapper.querySelector(\"caption\");\n if (isUninitialised) {\n if (!$caption) {\n console.warn(\"Missing <caption> element on table\", $tableWrapper);\n } else if (!$caption.id) {\n $caption.id = `table-caption-${uuidv4()}`;\n }\n $tableWrapper.dataset.tableScrollInitialised = \"true\";\n }\n if ($tableWrapper.scrollWidth > $tableWrapper.clientWidth) {\n $tableWrapper.setAttribute(\"tabindex\", \"0\");\n $tableWrapper.setAttribute(\"role\", \"region\");\n $tableWrapper.setAttribute(\"aria-labelledby\", $caption?.id || \"\");\n $tableWrapper.classList.add(\"tna-table-wrapper--scroll\");\n } else {\n $tableWrapper.removeAttribute(\"tabindex\");\n $tableWrapper.removeAttribute(\"role\");\n $tableWrapper.removeAttribute(\"aria-labelledby\");\n $tableWrapper.classList.remove(\"tna-table-wrapper--scroll\");\n }\n};\n","const uuidv4 = () =>\n ([1e7] + -1e3 + -4e3 + -8e3 + -1e11).replace(/[018]/g, (c) =>\n (\n c ^\n (crypto.getRandomValues(new Uint8Array(1))[0] & (15 >> (c / 4)))\n ).toString(16),\n );\n\nexport default uuidv4;\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};"],"names":["root","factory","exports","module","define","amd","self","updateTimeElement","$el","datetime","getAttribute","prettyDatetime","dateStr","Error","isDateTime","test","isDate","date","Date","isNaN","dayString","toLocaleDateString","weekday","dateString","day","month","year","getHours","getMinutes","timeString","toLocaleTimeString","hour","minute","getSeconds","second","concat","iso8601ToPrettyDatetime","includes","textContent","setAttribute","e","initAll","options","$scope","scope","HTMLElement","document","$html","documentElement","classList","add","onFirstTouch","window","removeEventListener","addEventListener","key","remove","$tableWrappers","querySelectorAll","forEach","$tableWrapper","checkTableForScroll","contains","$accordion","Accordion","$breadcrumbs","querySelector","Breadcrumbs","$cookieBanner","CookieBanner","$dateInput","DateInputProgressive","$errorSummary","ErrorSummary","init","$fileInput","FileInputDroppable","$footer","Footer","$gallery","Gallery","$globalHeader","GlobalHeader","$header","Header","$picture","Picture","$skipLink","SkipLink","$tabModule","Tabs","$textInput","TextInput","matchMedia","evt","matches","dataset","wasClosed","removeAttribute","getXPathTo","$element","id","body","tagName","ix","parentNode","siblings","childNodes","i","length","sibling","nodeType","getClosestElement","$startingElement","matchingElementSelectors","heading","$search","previousElementSibling","some","matchingElementSelector","innerText","parentElement","getClosestHeading","valueGetters","text","replace","html","innerHTML","value","index","event","instance","checked","expanded","toString","closestHeading","xpath","target","areaName","rootEventName","rootData","data_component_name","events","eventName","targetElement","on","data","state","data_link_type","data_link","trim","group","_$scope$closest","closest","_$scope$querySelector","_$scope$querySelector2","hasAttribute","getFileDetails","JSON","stringify","Array","from","files","map","file","name","size","type","_$scope$closest2","_$scope$closest3","data_section","media_type","media_duration","media_provider","media_title","media_progress","findIndex","$itemButton","media_action","_$scope$querySelector3","onCondition","data_position","image","imageSrc","imageAlt","componentAnalytics","_toConsumableArray","BreadcrumbAnalytics","CheckboxesAnalytics","DetailsAnalytics","FooterAnalytics","GalleryAnalytics","GlobalHeaderAnalytics","HeaderAnalytics","PictureAnalytics","RadiosAnalytics","SearchFieldAnalytics","SidebarAnalytics","TextInputAnalytics","TextareaAnalytics","EventTracker","_createClass","arguments","undefined","_classCallCheck","_defineProperty","Cookies","_options$prefix","prefix","_options$documentScop","documentScope","this","_this","navigator","doNotTrack","cookies","isPolicyAccepted","enableTracking","policies","Object","hasOwn","disableTracking","_this2","componentConfig","addListeners","scopeArray","_this3","rootDefaultData","_typeof","scopeIndex","eventConfig","attachListener","_this4","_eventConfig$rootData","_eventConfig$onCondit","computedValueParameters","computedValue","apply","recordEvent","generateEventName","_objectSpread","xPath","timeSincePageLoad","startTime","fromEntries","entries","_ref","_ref2","_slicedToArray","valueOrFunction","call","push","_this5","head","$metaEl","RegExp","_window$matchMedia","_window","_window$matchMedia2","_window2","_window$matchMedia3","_window3","_window$matchMedia4","_window4","_window$matchMedia5","_window5","_window$matchMedia6","_window6","userPreferences","GA4","_EventTracker2","_this6","TNAFrontendAnalyticsGA4","_possibleConstructorReturn","_options$id","_options$prefix2","_options$initAll","_options$addTrackingC","addTrackingCode","_callSuper","dataLayer","gTagId","ga4Disable","set","start","_inherits","_this7","ga4Data","_ref3","_ref4","pushToDataLayer","trackingEnabled","trackingCodeAdded","getTnaMetaTags","getUserPreferences","getTime","firstScript","getElementsByTagName","script","createElement","async","src","insertBefore","appendChild","_this8","keys","all","startsWith","ga4Id","ga4","helpers","$module","$items","allowMultipleItemsOpen","singleOpenItem","$item","initItem","initState","$toggleAllButton","syncToggleAllButton","isAllOpen","closeItem","openItem","$heading","$content","$headingButton","closeAllItemsExcept","$wrapper","$excludeItem","filter","every","closeAllLabel","openAllLabel","$breadcrumbsList","uniqueId","uuidv4","$expandable","style","display","$expandButton","focus","once","nextSibling","$acceptButton","$rejectButton","$prompt","$acceptedMessage","$rejectedMessage","$closeButtons","newInstance","cookiePreferencesSetKey","preferencesKey","policiesCorrectOnInit","exists","hasValue","accept","reject","complete","acceptAllPolicies","rejectAllPolicies","$closeButton","close","$yearWrapper","$yearInput","$monthWrapper","$monthInput","$dayWrapper","$dayInput","update","isValidYear","showMonth","isValidMonth","showDay","hideDay","hideMonth","yearValue","parseInt","monthRawValue","monthIntValue","toLowerCase","disableAutofocus","setFocus","handleClick","_options$onBeforeFocu","isFocusable","onBlur","_options$onBlur","onBeforeFocus","$target","focusTarget","preventDefault","url","split","pop","HTMLAnchorElement","inputId","getFragmentFromUrl","href","$input","getElementById","$legendOrLabel","getAssociatedLegendOrLabel","scrollIntoView","preventScroll","_document$querySelect","$fieldset","$legends","$candidateLegend","HTMLInputElement","legendTop","getBoundingClientRect","top","inputRect","height","innerHeight","$body","acceptMutltipleFiles","$droppableArea","$pseudoSelectFileText","$droppableButtons","$pseudoSelectFileButton","$pseudoDropFileButton","$droppableAreaAriaLabel","showDropTarget","hideDropTarget","onChange","dataTransfer","hasNoTypesInfo","types","isDraggingFiles","updateAriaLabel","isContainingFiles","items","_files$","themeCookieName","$themeSelector","$themeSelectorNotice","$themeSelectorEnableSettingsCookiesButton","$tnaTemplate","currentTheme","themeOnLoad","$themeSelectorButtons","$themeSelectorButton","$button","setTheme","selectThemeSelectorButton","acceptPolicy","showThemeSelector","settings","$currentThemeButton","find","get","theme","$selectedButton","$itemsContainer","$navigation","$navigationItems","$navigationButtons","$navigationButtonPrev","$navigationButtonNext","setup","currentId","showItem","_this$$navigationButt","_this$$navigationButt2","_this$$navigationButt3","_$item$querySelector","preventDefaultKeyAction","showPreviousItem","showNextItem","showFirstItem","showLastItem","stopPropagation","$liveRegion","prepend","getCurrentItemIndex","nextIndexToShow","$toggleButton","$topNavigation","$links","menuOpened","mql","syncState","handleToggleNavigation","addListener","code","show","hide","hidden","$imageWrapper","$transcriptToggle","$transcript","transcriptOpened","openLabel","informationLabelOpen","closeLabel","informationLabelClose","toggleTranscript","_$module$getAttribute","linkedElementId","$linkedElement","focusLinkedElement","linkedElementListener","removeFocusProperties","$tabList","$tabListItemLinks","$tabItems","currentTabIndex","$tabListItemLink","tabPanelID","$tabPanel","handleItemLinkClick","switchTabByIndex","handleItemLinkKeyDown","itemLinkClickEvent","targetItem","currentTarget","switchTabByID","itemLinkKeyDownEvent","previousTab","nextTab","newIndex","switchFocus","$tabItem","targetId","$textInputWrapper","$textInputPasswordToggle","updateTogglePasswordButtonText","togglePasswordType","TNAFrontendCookies","TNAFrontendCookieEvents","CookieEventHandler","debug","log","_console","_len","args","_key","console","callback","oneTimeEvents","eventToTrigger","splice","tnaCookiePolicies","tnaFrontendDebug","defaultDomain","defaultPath","secure","policiesKey","defaultAge","_options$newInstance","_options$noInit","noInit","tnaCookiesDomain","location","hostname","tnaCookiesPath","tnaCookiesInsecure","tnaCookiesPoliciesKey","tnaCookiesDefaultAge","policy","existingPolicies","filteredExistingPolicies","savePolicies","usage","marketing","essential","_console2","_len2","_key2","deserialised","cookie","x","parts","parse","decodeURIComponent","_options$maxAge","maxAge","_options$sameSite","sameSite","_options$domain","domain","_options$path","path","_options$secure","_options$session","session","encodeURIComponent","trigger","setPolicy","accepted","allPolicies","k","isUninitialised","tableScrollInitialised","$caption","warn","scrollWidth","clientWidth","c","crypto","getRandomValues","Uint8Array","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","d","definition","o","defineProperty","enumerable","obj","prop","prototype","hasOwnProperty","r","Symbol","toStringTag"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"file":"all+analytics.js","mappings":"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","sources":["webpack://TNAFrontend/webpack/universalModuleDefinition","webpack://TNAFrontend/./src/nationalarchives/lib/helpers.mjs","webpack://TNAFrontend/./src/nationalarchives/all.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/error-summary/analytics.js","webpack://TNAFrontend/./src/nationalarchives/components/file-input/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/sidebar/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","webpack://TNAFrontend/./src/nationalarchives/components/accordion/accordion.mjs","webpack://TNAFrontend/./src/nationalarchives/components/breadcrumbs/breadcrumbs.mjs","webpack://TNAFrontend/./src/nationalarchives/components/cookie-banner/cookie-banner.mjs","webpack://TNAFrontend/./src/nationalarchives/components/date-input/date-input.mjs","webpack://TNAFrontend/./src/nationalarchives/components/error-summary/error-summary.mjs","webpack://TNAFrontend/./src/nationalarchives/components/file-input/file-input.mjs","webpack://TNAFrontend/./src/nationalarchives/components/footer/footer.mjs","webpack://TNAFrontend/./src/nationalarchives/components/gallery/gallery.mjs","webpack://TNAFrontend/./src/nationalarchives/components/global-header/global-header.mjs","webpack://TNAFrontend/./src/nationalarchives/components/header/header.mjs","webpack://TNAFrontend/./src/nationalarchives/components/picture/picture.mjs","webpack://TNAFrontend/./src/nationalarchives/components/skip-link/skip-link.mjs","webpack://TNAFrontend/./src/nationalarchives/components/tabs/tabs.mjs","webpack://TNAFrontend/./src/nationalarchives/components/text-input/text-input.mjs","webpack://TNAFrontend/./src/nationalarchives/components/textarea/textarea.mjs","webpack://TNAFrontend/./src/nationalarchives/lib/cookies.mjs","webpack://TNAFrontend/./src/nationalarchives/lib/tables.mjs","webpack://TNAFrontend/./src/nationalarchives/lib/uuid.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"],"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[\"TNAFrontend\"] = factory();\n\telse\n\t\troot[\"TNAFrontend\"] = factory();\n})(self, () => {\nreturn ","export const iso8601ToPrettyDatetime = (dateStr) => {\n const datetime = dateStr;\n\n if (!datetime) {\n throw new Error(\"No datetime provided\");\n }\n const isDateTime =\n /^\\d{4}(-\\d{2}){2}(T| )\\d{2}(:\\d{2}){1,2}(\\.\\d+)?(Z|((\\+|-)\\d{2}:\\d{2}))?$/.test(\n datetime,\n );\n const isDate = /^\\d{4}(-\\d{2}){2}$/.test(datetime);\n if (!isDateTime && !isDate) {\n throw new Error(\"Invalid datetime provided\");\n }\n\n const date = new Date(datetime);\n if (!(date instanceof Date) || isNaN(date)) {\n throw new Error(\"Invalid datetime provided\");\n }\n\n const dayString = date.toLocaleDateString(\"en-GB\", {\n weekday: \"long\",\n });\n\n const dateString = date.toLocaleDateString(\"en-GB\", {\n day: \"numeric\",\n month: \"long\",\n year: \"numeric\",\n });\n\n if (isDateTime && (date.getHours() || date.getMinutes())) {\n let timeString = date.toLocaleTimeString(\"en-GB\", {\n hour: \"2-digit\",\n minute: \"2-digit\",\n });\n if (date.getSeconds()) {\n timeString = date.toLocaleTimeString(\"en-GB\", {\n hour: \"2-digit\",\n minute: \"2-digit\",\n second: \"2-digit\",\n });\n }\n return `${dayString} ${dateString}, ${timeString}`;\n } else {\n return `${dayString} ${dateString}`;\n }\n};\n\n/*\n * ==========================================\n * Transform any <time> element into a pretty\n * and human readable format that is based on\n * the valid ISO 8601 datetime attribute. The\n * replaced value will be localised according\n * to user's system settings, repurposing the\n * original text content as a title attribute\n * to allow users to see the value. A null or\n * invalid datetime format will result in the\n * element not being modified. If the updated\n * value is similar to the starting value for\n * the element text content, then the element\n * will not be updated to avoid redundancy.\n * ------------------------------------------\n * For example if the user's system has a UTC\n * timezone set then the element:\n *\n * <time\n * datetime=\"2026-03-05T13:48:00-05:00\"\n * >\n * 5 March 2026, 13:48 (UTC -5)\n * </time>\n *\n * would become:\n *\n * <time\n * datetime=\"2026-03-05T13:48:00-05:00\"\n * title=\"5 March 2026, 13:48 (UTC -5)\"\n * >\n * Thursday 5 March 2026, 09:48\n * </time>\n * ==========================================\n */\nexport const updateTimeElement = ($el) => {\n const datetime = $el.getAttribute(\"datetime\");\n\n try {\n const prettyDatetime = iso8601ToPrettyDatetime(datetime);\n if (!prettyDatetime.includes($el.textContent)) {\n $el.setAttribute(\"title\", $el.textContent);\n $el.textContent = prettyDatetime;\n }\n } catch (e) {\n // Do nothing if the datetime is invalid or not provided\n }\n};\n","import { Accordion } from \"./components/accordion/accordion.mjs\";\nimport { Breadcrumbs } from \"./components/breadcrumbs/breadcrumbs.mjs\";\nimport { CookieBanner } from \"./components/cookie-banner/cookie-banner.mjs\";\nimport { DateInputProgressive } from \"./components/date-input/date-input.mjs\";\nimport { ErrorSummary } from \"./components/error-summary/error-summary.mjs\";\nimport { FileInputDroppable } from \"./components/file-input/file-input.mjs\";\nimport { Footer } from \"./components/footer/footer.mjs\";\nimport { Gallery } from \"./components/gallery/gallery.mjs\";\nimport { GlobalHeader } from \"./components/global-header/global-header.mjs\";\nimport { Header } from \"./components/header/header.mjs\";\nimport { Picture } from \"./components/picture/picture.mjs\";\nimport { SkipLink } from \"./components/skip-link/skip-link.mjs\";\nimport { Tabs } from \"./components/tabs/tabs.mjs\";\nimport { TextInputPassword } from \"./components/text-input/text-input.mjs\";\nimport { TextAreaItemisedRows } from \"./components/textarea/textarea.mjs\";\nimport Cookies from \"./lib/cookies.mjs\";\nimport { checkTableForScroll } from \"./lib/tables.mjs\";\nimport { updateTimeElement } from \"./lib/helpers.mjs\";\n\nconst initAll = (options) => {\n options = typeof options !== \"undefined\" ? options : {};\n const $scope =\n options.scope instanceof HTMLElement ? options.scope : document;\n\n const $html = document.documentElement;\n $html.classList.add(\"tna-template--js-enabled\");\n\n const onFirstTouch = () => {\n window.removeEventListener(\"touchstart\", onFirstTouch);\n $html.classList.add(\"tna-template--touched\");\n };\n window.addEventListener(\"touchstart\", onFirstTouch);\n\n const onKeyDown = (e) => {\n if (e.key === \"Tab\") {\n $html.classList.add(\"tna-template--tabbed\");\n $html.classList.remove(\"tna-template--clicked\");\n }\n };\n window.addEventListener(\"keydown\", onKeyDown);\n\n const onMouseDown = () => {\n $html.classList.add(\"tna-template--clicked\");\n $html.classList.remove(\"tna-template--tabbed\");\n };\n window.addEventListener(\"mousedown\", onMouseDown);\n\n /*\n * ==========================================\n * Checks if widths of all tables on the page\n * are wider than their parent container, and\n * allowing horizontal scrolling if they are.\n * This is done both on load and on resize.\n * ==========================================\n */\n const $tableWrappers = $scope.querySelectorAll(\".tna-table-wrapper\");\n $tableWrappers.forEach(($tableWrapper) => checkTableForScroll($tableWrapper));\n window.addEventListener(\"resize\", () => {\n $tableWrappers.forEach(($tableWrapper) =>\n checkTableForScroll($tableWrapper),\n );\n });\n\n // TODO: Remove this opt-in class in a later release\n if ($html.classList.contains(\"tna-template--enhance-time-elements\")) {\n document.querySelectorAll(\"time[datetime]\").forEach(updateTimeElement);\n }\n\n const $accordions = $scope.querySelectorAll('[data-module=\"tna-accordion\"]');\n $accordions.forEach(($accordion) => {\n new Accordion($accordion);\n });\n\n const $breadcrumbs = $scope.querySelector('[data-module=\"tna-breadcrumbs\"]');\n if ($breadcrumbs) {\n new Breadcrumbs($breadcrumbs);\n }\n\n const $cookieBanner = $scope.querySelector(\n '[data-module=\"tna-cookie-banner\"]',\n );\n if ($cookieBanner) {\n new CookieBanner($cookieBanner);\n }\n\n const $progressiveDateInputs = $scope.querySelectorAll(\n '[data-module=\"tna-date-input-progressive\"]',\n );\n $progressiveDateInputs.forEach(($dateInput) => {\n new DateInputProgressive($dateInput);\n });\n\n const $errorSummary = $scope.querySelector(\n '[data-module=\"tna-error-summary\"]',\n );\n if ($errorSummary) {\n new ErrorSummary($errorSummary).init();\n }\n\n const $fileInputs = $scope.querySelectorAll('[data-module=\"tna-file-input\"]');\n $fileInputs.forEach(($fileInput) => {\n new FileInputDroppable($fileInput);\n });\n\n const $footer = $scope.querySelector('[data-module=\"tna-footer\"]');\n if ($footer) {\n new Footer($footer);\n }\n\n const $galleries = $scope.querySelectorAll('[data-module=\"tna-gallery\"]');\n $galleries.forEach(($gallery) => {\n new Gallery($gallery);\n });\n\n const $globalHeader = $scope.querySelector(\n '[data-module=\"tna-global-header\"]',\n );\n if ($globalHeader) {\n new GlobalHeader($globalHeader);\n }\n\n const $header = $scope.querySelector('[data-module=\"tna-header\"]');\n if ($header) {\n new Header($header);\n }\n\n const $pictures = $scope.querySelectorAll('[data-module=\"tna-picture\"]');\n $pictures.forEach(($picture) => {\n new Picture($picture);\n });\n\n const $skipLinks = $scope.querySelectorAll('[data-module=\"tna-skip-link\"]');\n $skipLinks.forEach(($skipLink) => {\n new SkipLink($skipLink);\n });\n\n const $tabs = $scope.querySelectorAll('[data-module=\"tna-tabs\"]');\n $tabs.forEach(($tabModule) => {\n new Tabs($tabModule);\n });\n\n const $textInputPasswords = $scope.querySelectorAll(\n '[data-module=\"tna-text-input-password\"]',\n );\n $textInputPasswords.forEach(($textInputPassword) => {\n new TextInputPassword($textInputPassword);\n });\n\n const $textAreaItemisedRows = $scope.querySelectorAll(\n '[data-module=\"tna-textarea-itemised-rows\"]',\n );\n $textAreaItemisedRows.forEach(($textAreaItemisedRows) => {\n const enhancedHint = $textAreaItemisedRows.dataset.enhancedHint;\n new TextAreaItemisedRows($textAreaItemisedRows, { enhancedHint });\n });\n\n window.matchMedia(\"print\").addEventListener(\"change\", (evt) => {\n if (evt.matches) {\n $scope\n .querySelectorAll(\".tna-details__details:not([open])\")\n .forEach((e) => {\n e.setAttribute(\"open\", \"\");\n e.dataset.wasClosed = \"\";\n });\n $scope\n .querySelectorAll(\n \".tna-accordion__content[hidden], .tna-picture__transcript[hidden]\",\n )\n .forEach((e) => {\n e.removeAttribute(\"hidden\");\n e.dataset.wasClosed = \"\";\n });\n } else {\n $scope\n .querySelectorAll(\".tna-details__details[data-was-closed]\")\n .forEach((e) => {\n e.removeAttribute(\"open\");\n delete e.dataset.wasClosed;\n });\n $scope\n .querySelectorAll(\n \".tna-accordion__content[data-was-closed], .tna-picture__transcript[data-was-closed]\",\n )\n .forEach((e) => {\n e.setAttribute(\"hidden\", \"\");\n e.dataset.wasClosed = \"\";\n });\n }\n });\n};\n\nexport {\n initAll,\n Cookies,\n Accordion,\n Breadcrumbs,\n CookieBanner,\n DateInputProgressive,\n ErrorSummary,\n FileInputDroppable,\n Footer,\n Gallery,\n GlobalHeader,\n Header,\n Picture,\n SkipLink,\n Tabs,\n TextInputPassword,\n TextAreaItemisedRows,\n checkTableForScroll,\n updateTimeElement,\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 if ($element.parentNode) {\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 } else {\n return $element.tagName;\n }\n};\n\nconst getClosestElement = ($startingElement, matchingElementSelectors) => {\n let heading = \"\";\n let $search = $startingElement;\n do {\n while ($search.previousElementSibling) {\n $search = $search.previousElementSibling;\n if (\n matchingElementSelectors.some((matchingElementSelector) =>\n $search.matches(matchingElementSelector),\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 getClosestHeading = ($element) =>\n getClosestElement($element, [\"h1\", \"h2\", \"h3\", \"h4\", \"h5\", \"h6\"]);\n\nconst valueGetters = {\n text: ($el) => $el.innerText.replace(/\\n/g, \" \"),\n html: ($el) => $el.innerHTML,\n value: ($el) => $el.value,\n index: ($el, $scope, event, index) => index,\n instance: ($el, $scope, event, index, instance) => instance,\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 xpath: ($el) => getXPathTo($el.target),\n};\n\nexport { getXPathTo, getClosestElement, getClosestHeading, valueGetters };\n","import { valueGetters } from \"../../lib/analytics-helpers.mjs\";\n\nexport default [\n {\n scope: \".tna-accordion\",\n areaName: \"accordion\",\n rootEventName: \"select_feature\",\n rootData: {\n data_component_name: \"accordion\",\n },\n events: [\n {\n eventName: \"click\",\n targetElement: \".tna-accordion__summary\",\n on: \"click\",\n data: { state: valueGetters.expanded, value: valueGetters.text },\n rootData: {\n data_link_type: valueGetters.expanded,\n data_link: valueGetters.text,\n data_position: valueGetters.index,\n },\n },\n ],\n },\n];\n","import { valueGetters } from \"../../lib/analytics-helpers.mjs\";\n\nexport default [\n {\n scope: \".tna-breadcrumbs\",\n areaName: \"breadcrumbs\",\n rootEventName: \"select_navigation\",\n rootData: {\n data_component_name: \"breadcrumbs\",\n },\n events: [\n {\n eventName: \"click\",\n targetElement: \"a.tna-breadcrumbs__link\",\n on: \"click\",\n data: { state: \"expand\", value: valueGetters.html },\n rootData: {\n data_link_type: \"breadcrumb_link\",\n data_link: valueGetters.text,\n },\n },\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 rootData: {\n data_link_type: \"breadcrumb_expand\",\n data_link: valueGetters.text,\n },\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.trim(),\n // eslint-disable-next-line no-unused-vars\n group: ($el, $scope, event) =>\n $scope\n .closest(\".tna-form-item\")\n ?.querySelector(\".tna-form-item__heading\")\n ?.innerText?.trim(),\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-error-summary\",\n areaName: \"error-summary\",\n events: [\n {\n eventName: \"jump\",\n targetElement: \"a.tna-error-summary__link\",\n on: \"click\",\n data: { value: valueGetters.text },\n },\n ],\n },\n];\n","const getFileDetails = ($el) =>\n JSON.stringify(\n Array.from($el.files).map((file) => ({\n name: file.name,\n size: file.size,\n type: file.type,\n })),\n );\n\nexport default [\n {\n scope: \".tna-file-input\",\n areaName: \"file-input\",\n events: [\n {\n eventName: \"blurred\",\n on: \"blur\",\n data: {\n value: getFileDetails,\n state: ($el) => $el.files.length,\n // eslint-disable-next-line no-unused-vars\n group: ($el, $scope) =>\n $scope\n .closest(\".tna-form-item\")\n ?.querySelector(\".tna-form-item__heading\")\n ?.innerText?.trim(),\n },\n },\n {\n eventName: \"cancelled\",\n on: \"cancel\",\n data: {\n value: getFileDetails,\n state: ($el) => $el.files.length,\n // eslint-disable-next-line no-unused-vars\n group: ($el, $scope) =>\n $scope\n .closest(\".tna-form-item\")\n ?.querySelector(\".tna-form-item__heading\")\n ?.innerText?.trim(),\n },\n },\n {\n eventName: \"changed\",\n on: \"change\",\n data: {\n value: getFileDetails,\n state: ($el) => $el.files.length,\n // eslint-disable-next-line no-unused-vars\n group: ($el, $scope) =>\n $scope\n .closest(\".tna-form-item\")\n ?.querySelector(\".tna-form-item__heading\")\n ?.innerText?.trim(),\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 rootData: {\n data_component_name: \"footer\",\n },\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_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_link_type: \"icon\",\n data_section: \"Social media\",\n data_link: ($el) => $el.dataset.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_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_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_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_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 rootEventName: \"select_media\",\n rootData: {\n media_type: \"gallery\",\n media_duration: ($el, $scope) =>\n $scope.querySelectorAll(\".tna-gallery__navigation-item\").length,\n media_provider: \"tna\",\n media_title: ($el, $scope, event, index, instance) =>\n $scope.querySelector(\".tna-gallery__header-inner\")?.innerText?.trim() ||\n `gallery_${instance}`,\n media_progress: ($el, $scope) =>\n (Array.from(\n $scope.querySelectorAll(\".tna-gallery__navigation-item\"),\n ).findIndex(\n ($itemButton) => $itemButton.getAttribute(\"aria-current\") === \"true\",\n ) || -1) + 1,\n },\n events: [\n {\n eventName: \"click\",\n targetElement: \".tna-gallery__navigation-item\",\n on: \"click\",\n data: {\n value: valueGetters.text,\n },\n rootData: {\n data_link: \"image\",\n media_action: \"progress\",\n media_progress: valueGetters.index,\n },\n },\n {\n eventName: \"click\",\n targetElement: \".tna-gallery__navigation-prev\",\n on: \"click\",\n data: {\n value: ($el, $scope) =>\n $scope\n .querySelector(\n \".tna-gallery__item:not([hidden]) .tna-gallery__item-header\",\n )\n ?.innerText?.trim(),\n },\n rootData: {\n data_link: \"previous\",\n media_action: \"progress\",\n },\n },\n {\n eventName: \"click\",\n targetElement: \".tna-gallery__navigation-next\",\n on: \"click\",\n data: {\n value: ($el, $scope) =>\n $scope\n .querySelector(\n \".tna-gallery__item:not([hidden]) .tna-gallery__item-header\",\n )\n ?.innerText?.trim(),\n },\n rootData: {\n data_link: \"next\",\n media_action: \"progress\",\n },\n },\n {\n eventName: \"keypress\",\n on: \"keydown\",\n onCondition: ($el, $scope, event) =>\n [\n \"ArrowLeft\",\n \"ArrowRight\",\n \"ArrowUp\",\n \"ArrowDown\",\n \"End\",\n \"Home\",\n // \"Escape\",\n ].includes(event.key),\n data: {\n value: ($el, $scope, event) => event.key,\n },\n rootData: {\n data_link: \"keypress\",\n media_action: \"progress\",\n },\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 rootData: {\n data_component_name: \"header\",\n },\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_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_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_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_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-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-item\")\n ?.querySelector(\".tna-form-item__heading\")\n ?.innerText?.trim(),\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-item__heading\")?.innerText?.trim(),\n },\n },\n ],\n },\n];\n","import { valueGetters } from \"../../lib/analytics-helpers.mjs\";\n\nexport default [\n {\n scope: \".tna-sidebar\",\n areaName: \"sidebar\",\n rootEventName: \"select_navigation\",\n rootData: {\n data_component_name: \"sidebar\",\n data_section: ($el, $scope) =>\n $scope.querySelector(\".tna-sidebar__heading\")?.innerText?.trim(),\n },\n events: [\n {\n eventName: \"click\",\n targetElement: \"a.tna-sidebar__link\",\n on: \"click\",\n rootData: {\n data_link_type: \"sidebar_link\",\n data_link: valueGetters.text,\n data_position: valueGetters.index,\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 value: valueGetters.value,\n // eslint-disable-next-line no-unused-vars\n group: ($el, $scope) =>\n $scope\n .closest(\".tna-form-item\")\n ?.querySelector(\".tna-form-item__heading\")\n ?.innerText?.trim(),\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-item\")\n ?.querySelector(\".tna-form-item__heading\")\n ?.innerText?.trim(),\n },\n },\n ],\n },\n];\n","import Cookies from \"./lib/cookies.mjs\";\nimport {\n getXPathTo,\n getClosestHeading,\n getClosestElement,\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 ErrorSummary from \"./components/error-summary/analytics.js\";\nimport FileInputDroppable from \"./components/file-input/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 SidebarAnalytics from \"./components/sidebar/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 ...ErrorSummary,\n ...FileInputDroppable,\n ...FooterAnalytics,\n ...GalleryAnalytics,\n ...GlobalHeaderAnalytics,\n ...HeaderAnalytics,\n ...HeroAnalytics,\n ...PictureAnalytics,\n ...RadiosAnalytics,\n ...SearchFieldAnalytics,\n ...SidebarAnalytics,\n ...TextInputAnalytics,\n ...TextareaAnalytics,\n];\n\nclass EventTracker {\n /** @protected */\n cookies = new Cookies();\n\n /** @protected */\n events = [];\n\n /** @protected */\n startTime = new Date();\n\n /** @protected */\n prefix = \"tna\";\n\n /** @protected */\n document = document;\n\n constructor(options = {}) {\n const { prefix = null, documentScope = document } = options;\n if (prefix) {\n this.prefix = prefix;\n }\n if (documentScope) {\n this.document = documentScope;\n }\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 componentConfig.rootData || {},\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 * @param {{[String]:String}} rootDefaultData - The default root data to use if specified.\n */\n addListeners(\n scope,\n areaName,\n events,\n rootEventName = \"\",\n rootDefaultData = {},\n ) {\n let scopeArray;\n if (typeof scope === \"string\") {\n scopeArray = Array.from(this.document.querySelectorAll(scope));\n } else if (typeof scope === \"object\") {\n scopeArray = [scope];\n }\n if (scopeArray.length === 0) {\n return;\n }\n scopeArray.forEach(($scope, scopeIndex) => {\n events.forEach((eventConfig) => {\n if (eventConfig.on) {\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 rootDefaultData,\n eventConfig,\n scope,\n areaName,\n index + 1,\n scopeIndex + 1,\n ),\n );\n } else {\n this.attachListener(\n $scope,\n $scope,\n rootEventName,\n rootDefaultData,\n eventConfig,\n scope,\n areaName,\n 1,\n scopeIndex + 1,\n );\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 rootDefaultData,\n eventConfig,\n scope,\n areaName,\n index,\n instance,\n ) {\n const {\n on,\n data,\n targetElement,\n rootData = {},\n onCondition = null,\n } = eventConfig;\n $el.addEventListener(on, (event) => {\n const computedValueParameters = [$el, $scope, event, index, instance];\n if (\n onCondition === null ||\n this.computedValue(onCondition, ...computedValueParameters)\n ) {\n this.recordEvent(\n eventConfig.rootEventName\n ? `${this.prefix}.${eventConfig.rootEventName}`\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, ...computedValueParameters)\n : null,\n state: data?.state\n ? this.computedValue(data.state, ...computedValueParameters)\n : null,\n group: data?.group\n ? this.computedValue(data.group, ...computedValueParameters)\n : null,\n xPath: getXPathTo($el),\n targetElement: targetElement,\n timeSincePageLoad: new Date() - this.startTime,\n index,\n instance,\n scope,\n areaName,\n },\n Object.fromEntries(\n Object.entries({ ...rootDefaultData, ...rootData }).map(\n ([key, value]) => [\n key,\n this.computedValue(value, ...computedValueParameters),\n ],\n ),\n ),\n );\n }\n });\n }\n\n /** @protected */\n computedValue(valueOrFunction, $el, $scope, event, index, instance) {\n return typeof valueOrFunction === \"function\"\n ? valueOrFunction.call(this, $el, $scope, event, index, instance)\n : (valueOrFunction ?? null);\n }\n\n /** @protected */\n recordEvent(eventName, data, rootData = {}) {\n this.events.push({\n event: eventName,\n ...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}_root:\"][content]`,\n ),\n ).map(($metaEl) => [\n $metaEl\n .getAttribute(\"name\")\n .replace(new RegExp(`^${this.prefix}_root:`), \"\"),\n $metaEl.getAttribute(\"content\"),\n ]),\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 /** @protected */\n getUserPreferences() {\n const userPreferences = {};\n userPreferences[`${this.prefix}.pref.prefers-color-scheme`] =\n window.matchMedia?.(\"(prefers-color-scheme: dark)\").matches\n ? \"dark\"\n : \"light\";\n userPreferences[`${this.prefix}.pref.forced-colors`] = window.matchMedia?.(\n \"(forced-colors: active)\",\n ).matches;\n userPreferences[`${this.prefix}.pref.prefers-contrast`] =\n window.matchMedia?.(\"(prefers-contrast: more)\").matches\n ? \"more\"\n : window.matchMedia?.(\"(prefers-contrast: less)\").matches\n ? \"less\"\n : \"normal\";\n userPreferences[`${this.prefix}.pref.prefers-reduced-motion`] =\n window.matchMedia?.(\"(prefers-reduced-motion: reduce)\").matches;\n userPreferences[`${this.prefix}.pref.prefers-reduced-transparency`] =\n window.matchMedia?.(\"(prefers-reduced-transparency: reduce)\").matches;\n return userPreferences;\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 addTrackingCode = true;\n\n /** @protected */\n trackingCodeAdded = false;\n\n /** @protected */\n trackingEnabled = false;\n\n /** @protected */\n gTagId;\n\n constructor(options = {}) {\n if (window.TNAFrontendAnalyticsGA4) {\n return window.TNAFrontendAnalyticsGA4;\n }\n const {\n id = \"\",\n prefix = null,\n initAll = true,\n addTrackingCode = true,\n } = options;\n super({ prefix });\n window.TNAFrontendAnalyticsGA4 = this;\n this.addTrackingCode = addTrackingCode;\n window.dataLayer = window.dataLayer || [];\n if (id) {\n this.gTagId = id;\n this.ga4Disable = `ga-disable-${this.gTagId}`;\n if (!this.cookies.isPolicyAccepted(\"usage\")) {\n window[this.ga4Disable] = true;\n this.cookies.set(this.ga4Disable, \"true\");\n }\n }\n this.start(initAll);\n }\n\n destroy() {\n window.TNAFrontendAnalyticsGA4 = 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 ...this.getTnaMetaTags(),\n ...this.getUserPreferences(),\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 }\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 }\n }\n}\n\nconst ga4Id = document.documentElement.dataset.ga4;\nif (ga4Id) {\n new GA4({ id: ga4Id });\n}\n\nconst helpers = {\n getXPathTo,\n getClosestHeading,\n getClosestElement,\n valueGetters,\n};\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","import { checkTableForScroll } from \"../../lib/tables.mjs\";\n\nexport class Accordion {\n constructor($module) {\n this.$module = $module;\n this.$items = $module && $module.querySelectorAll(\".tna-accordion__item\");\n if (!this.$module || !this.$items) {\n return;\n }\n\n this.allowMultipleItemsOpen =\n this.$module.dataset.singleOpenItem !== \"true\";\n\n this.$items.forEach(($item) => this.initItem($item));\n this.initState();\n\n this.$toggleAllButton = this.$module.querySelector(\n \".tna-accordion__toggle-all\",\n );\n if (this.$toggleAllButton) {\n this.syncToggleAllButton();\n this.$toggleAllButton.removeAttribute(\"hidden\");\n this.$toggleAllButton.addEventListener(\"click\", () => {\n if (this.isAllOpen()) {\n this.$items.forEach(($item) => this.closeItem($item));\n } else {\n this.$items.forEach(($item) => this.openItem($item));\n }\n this.syncToggleAllButton();\n });\n }\n }\n\n initItem($item) {\n const $heading = $item.querySelector(\".tna-accordion__heading\");\n const $content = $item.querySelector(\".tna-accordion__body\");\n\n if (!$heading || !$content) {\n return;\n }\n\n $item.classList.add(\"tna-accordion__details\");\n $item.classList.remove(\"tna-accordion__item\");\n\n $heading.removeAttribute(\"class\");\n\n $content.classList.add(\"tna-accordion__content\");\n $content.classList.remove(\"tna-accordion__body\");\n $content.setAttribute(\"hidden\", \"\");\n\n const $headingButton = document.createElement(\"button\");\n $headingButton.classList.add(\"tna-accordion__summary\");\n $headingButton.setAttribute(\"type\", \"button\");\n $headingButton.setAttribute(\"aria-controls\", $content.id);\n $headingButton.innerText = $heading.innerText;\n $heading.innerText = \"\";\n $heading.appendChild($headingButton);\n\n $headingButton.addEventListener(\"click\", () => {\n const isOpen = $headingButton.getAttribute(\"aria-expanded\") === \"true\";\n if (isOpen) {\n this.closeItem($item);\n } else {\n this.openItem($item);\n }\n });\n }\n\n initState() {\n this.$items.forEach(($item) => {\n if ($item.dataset[\"isopen\"] === \"true\") {\n this.openItem($item);\n } else {\n this.closeItem($item);\n }\n $item.removeAttribute(\"data-isopen\");\n });\n }\n\n openItem($item) {\n if (!this.allowMultipleItemsOpen) {\n this.closeAllItemsExcept($item);\n }\n const $headingButton = $item.querySelector(\".tna-accordion__summary\");\n const $content = $item.querySelector(\".tna-accordion__content\");\n $headingButton.setAttribute(\"aria-expanded\", \"true\");\n $headingButton.setAttribute(\n \"aria-label\",\n `${$headingButton.innerText.trim()}, Hide this section`,\n );\n $content.removeAttribute(\"hidden\");\n // $content.setAttribute(\"tabindex\", \"0\");\n this.syncToggleAllButton();\n\n const $tableWrapper = $content.querySelectorAll(\".tna-table-wrapper\");\n if ($tableWrapper) {\n $tableWrapper.forEach(($wrapper) => {\n checkTableForScroll($wrapper);\n });\n }\n }\n\n closeItem($item) {\n const $headingButton = $item.querySelector(\".tna-accordion__summary\");\n const $content = $item.querySelector(\".tna-accordion__content\");\n $headingButton.setAttribute(\"aria-expanded\", \"false\");\n $headingButton.setAttribute(\n \"aria-label\",\n `${$headingButton.innerText.trim()}, Show this section`,\n );\n $content.setAttribute(\"hidden\", \"\");\n // $content.setAttribute(\"tabindex\", \"-1\");\n this.syncToggleAllButton();\n }\n\n closeAllItemsExcept($excludeItem) {\n Array.from(this.$items)\n .filter(\n ($item) =>\n $item.querySelector(\".tna-accordion__summary\") !== $excludeItem &&\n $item\n .querySelector(\".tna-accordion__summary\")\n .getAttribute(\"aria-expanded\") === \"true\",\n )\n .forEach(($item) => this.closeItem($item));\n }\n\n isAllOpen() {\n return Array.from(this.$items).every(\n ($item) =>\n $item\n .querySelector(\".tna-accordion__summary\")\n .getAttribute(\"aria-expanded\") === \"true\",\n );\n }\n\n syncToggleAllButton() {\n if (this.$toggleAllButton) {\n if (this.isAllOpen()) {\n this.$toggleAllButton.innerText =\n this.$toggleAllButton.dataset.closeAllLabel || \"Hide all sections\";\n } else {\n this.$toggleAllButton.innerText =\n this.$toggleAllButton.dataset.openAllLabel || \"Show all sections\";\n }\n }\n }\n}\n","import uuidv4 from \"../../lib/uuid.mjs\";\n\nexport class Breadcrumbs {\n constructor($module) {\n this.$module = $module;\n this.$breadcrumbsList =\n $module && $module.querySelector(\".tna-breadcrumbs__list\");\n this.$breadcrumbs =\n $module &&\n this.$breadcrumbsList &&\n $module.querySelectorAll(\".tna-breadcrumbs__item\");\n\n if (this.$module && this.$breadcrumbsList && this.$breadcrumbs) {\n if (\n this.$breadcrumbs.length > 2 &&\n !this.$module.classList.contains(\"tna-breadcrumbs--no-collapse\")\n ) {\n const uniqueId = `tna-breadcrumbs-${uuidv4()}`;\n\n const $expandable = document.createElement(\"li\");\n $expandable.classList.add(\n \"tna-breadcrumbs__item\",\n \"tna-breadcrumbs__item--expandable\",\n );\n $expandable.style.display = \"none\";\n\n const $expandButton = document.createElement(\"button\");\n $expandButton.classList.add(\"tna-breadcrumbs__link\");\n $expandButton.innerHTML =\n \"<span class='tna-!--visually-hidden'>Expand breadcrumbs</span>…\";\n $expandButton.setAttribute(\"type\", \"button\");\n $expandButton.setAttribute(\"aria-expanded\", \"false\");\n $expandButton.setAttribute(\"aria-controls\", uniqueId);\n $expandButton.addEventListener(\"click\", () => {\n this.$module.classList.remove(\"tna-breadcrumbs--collapsed\");\n $expandable.remove();\n this.$module.setAttribute(\"tabindex\", \"0\");\n this.$module.focus();\n this.$module.addEventListener(\n \"blur\",\n () => {\n this.$module.removeAttribute(\"tabindex\");\n },\n { once: true },\n );\n });\n $expandable.appendChild($expandButton);\n\n this.$breadcrumbsList.setAttribute(\"id\", uniqueId);\n this.$breadcrumbsList.insertBefore(\n $expandable,\n this.$breadcrumbs[this.$breadcrumbs.length - 2].nextSibling,\n );\n\n this.$module.classList.add(\"tna-breadcrumbs--collapsed\");\n }\n }\n }\n}\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 this.cookies = new Cookies({ newInstance: true });\n\n this.cookiePreferencesSetKey =\n this.$module.dataset.preferencesKey || \"cookie_preferences_set\";\n\n if (!this.cookies.policiesCorrectOnInit) {\n this.cookies.delete(this.cookiePreferencesSetKey);\n }\n\n if (\n !this.cookies.exists(this.cookiePreferencesSetKey) ||\n !this.cookies.hasValue(this.cookiePreferencesSetKey, \"true\")\n ) {\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\", \"\");\n this.complete();\n this.cookies.acceptAllPolicies();\n this.$acceptedMessage.removeAttribute(\"hidden\");\n this.$acceptedMessage.setAttribute(\"tabindex\", \"0\");\n this.$acceptedMessage.focus();\n this.$acceptedMessage.addEventListener(\"blur\", () => {\n this.$acceptedMessage.removeAttribute(\"tabindex\");\n });\n }\n\n reject() {\n this.$prompt.setAttribute(\"hidden\", \"\");\n this.complete();\n this.cookies.rejectAllPolicies();\n this.$rejectedMessage.removeAttribute(\"hidden\");\n this.$rejectedMessage.setAttribute(\"tabindex\", \"0\");\n this.$rejectedMessage.focus();\n this.$rejectedMessage.addEventListener(\"blur\", () => {\n this.$rejectedMessage.removeAttribute(\"tabindex\");\n });\n }\n\n complete() {\n this.cookies.set(this.cookiePreferencesSetKey, true);\n this.$closeButtons.forEach(($closeButton) => {\n $closeButton.addEventListener(\"click\", () => this.close());\n });\n }\n\n close() {\n this.$module.setAttribute(\"hidden\", \"\");\n }\n}\n","import Cookies from \"../../lib/cookies.mjs\";\n\nexport { Cookies };\n\nexport class DateInputProgressive {\n constructor($module) {\n this.$module = $module;\n this.$yearWrapper =\n $module && $module.querySelector(\".tna-date-input__item--year\");\n this.$yearInput =\n this.$yearWrapper && this.$yearWrapper.querySelector(\"input\");\n this.$monthWrapper =\n $module && $module.querySelector(\".tna-date-input__item--month\");\n this.$monthInput =\n this.$monthWrapper && this.$monthWrapper.querySelector(\"input\");\n this.$dayWrapper =\n $module && $module.querySelector(\".tna-date-input__item--day\");\n this.$dayInput =\n this.$dayWrapper && this.$dayWrapper.querySelector(\"input\");\n\n if (!this.$module) {\n return;\n }\n\n this.update();\n window.addEventListener(\"pageshow\", () => this.update());\n\n if (this.$yearInput) {\n this.$yearInput.addEventListener(\"keyup\", () => this.update());\n this.$yearInput.addEventListener(\"change\", () => this.update());\n }\n if (this.$monthInput) {\n this.$monthInput.addEventListener(\"keyup\", () => this.update());\n this.$monthInput.addEventListener(\"change\", () => this.update());\n }\n if (this.$dayInput) {\n this.$dayInput.addEventListener(\"keyup\", () => this.update());\n this.$dayInput.addEventListener(\"change\", () => this.update());\n }\n }\n\n update() {\n if (this.isValidYear()) {\n this.showMonth();\n if (this.isValidMonth()) {\n this.showDay();\n } else {\n this.hideDay();\n }\n } else {\n this.hideMonth();\n this.hideDay();\n }\n }\n\n isValidYear() {\n if (!this.$yearInput) {\n return true;\n }\n const yearValue = parseInt(this.$yearInput.value.trim());\n return !isNaN(this.$yearInput.value) && !isNaN(yearValue) && yearValue > 0;\n }\n\n isValidMonth() {\n if (!this.$monthInput) {\n return true;\n }\n const monthRawValue = this.$monthInput.value.trim();\n const monthIntValue = parseInt(monthRawValue);\n const validMonthStrings = [\n \"january\",\n \"february\",\n \"march\",\n \"april\",\n \"may\",\n \"june\",\n \"july\",\n \"august\",\n \"september\",\n \"october\",\n \"november\",\n \"december\",\n \"jan\",\n \"feb\",\n \"mar\",\n \"apr\",\n \"jun\",\n \"jul\",\n \"aug\",\n \"sep\",\n \"oct\",\n \"nov\",\n \"dec\",\n ];\n return (\n (!isNaN(this.$monthInput.value) &&\n !isNaN(monthIntValue) &&\n monthIntValue > 0 &&\n monthIntValue <= 12) ||\n validMonthStrings.includes(monthRawValue.toLowerCase())\n );\n }\n\n showMonth() {\n if (this.$monthWrapper) {\n this.$monthWrapper.removeAttribute(\"hidden\");\n }\n }\n\n hideMonth() {\n if (this.$monthWrapper) {\n this.$monthWrapper.setAttribute(\"hidden\", \"\");\n }\n }\n\n showDay() {\n if (this.$dayWrapper) {\n this.$dayWrapper.removeAttribute(\"hidden\");\n }\n }\n\n hideDay() {\n if (this.$dayWrapper) {\n this.$dayWrapper.setAttribute(\"hidden\", \"\");\n }\n }\n}\n","export class ErrorSummary {\n constructor($module) {\n this.$module = $module;\n }\n\n init() {\n if (!this.$module) {\n return;\n }\n\n const disableAutoFocus =\n this.$module.dataset.disableAutofocus === \"true\" || false;\n\n if (!disableAutoFocus) {\n this.setFocus(this.$module);\n }\n\n this.$module.addEventListener(\"click\", (event) => this.handleClick(event));\n }\n\n setFocus($element, options = {}) {\n const isFocusable = $element.getAttribute(\"tabindex\");\n\n if (!isFocusable) {\n $element.setAttribute(\"tabindex\", \"-1\");\n }\n\n /**\n * Handle element focus\n */\n function onFocus() {\n $element.addEventListener(\"blur\", onBlur, { once: true });\n }\n\n /**\n * Handle element blur\n */\n function onBlur() {\n options.onBlur?.call($element);\n\n if (!isFocusable) {\n $element.removeAttribute(\"tabindex\");\n }\n }\n\n // Add listener to reset element on blur, after focus\n $element.addEventListener(\"focus\", onFocus, { once: true });\n\n // Focus element\n options.onBeforeFocus?.call($element);\n $element.focus();\n }\n\n handleClick(event) {\n const $target = event.target;\n if ($target && this.focusTarget($target)) {\n event.preventDefault();\n }\n }\n\n getFragmentFromUrl(url) {\n if (!url.includes(\"#\")) {\n return undefined;\n }\n\n return url.split(\"#\").pop();\n }\n\n focusTarget($target) {\n // If the element that was clicked was not a link, return early\n if (!($target instanceof HTMLAnchorElement)) {\n return false;\n }\n\n const inputId = this.getFragmentFromUrl($target.href);\n if (!inputId) {\n return false;\n }\n\n const $input = document.getElementById(inputId);\n if (!$input) {\n return false;\n }\n\n const $legendOrLabel = this.getAssociatedLegendOrLabel($input);\n if (!$legendOrLabel) {\n return false;\n }\n\n // Scroll the legend or label into view *before* calling focus on the input\n // to avoid extra scrolling in browsers that don't support `preventScroll`\n // (which at time of writing is most of them...)\n $legendOrLabel.scrollIntoView();\n $input.focus({ preventScroll: true });\n\n return true;\n }\n\n /**\n * Get associated legend or label\n *\n * Returns the first element that exists from this list:\n *\n * - The `<legend>` associated with the closest `<fieldset>` ancestor, as long\n * as the top of it is no more than half a viewport height away from the\n * bottom of the input\n * - The first `<label>` that is associated with the input using for=\"inputId\"\n * - The closest parent `<label>`\n *\n * @private\n * @param {Element} $input - The input\n * @returns {Element | null} Associated legend or label, or null if no\n * associated legend or label can be found\n */\n getAssociatedLegendOrLabel($input) {\n const $fieldset = $input.closest(\"fieldset\");\n\n if ($fieldset) {\n const $legends = $fieldset.getElementsByTagName(\"legend\");\n\n if ($legends.length) {\n const $candidateLegend = $legends[0];\n\n // If the input type is radio or checkbox, always use the legend if\n // there is one.\n if (\n $input instanceof HTMLInputElement &&\n ($input.type === \"checkbox\" || $input.type === \"radio\")\n ) {\n return $candidateLegend;\n }\n\n // For other input types, only scroll to the fieldset’s legend (instead\n // of the label associated with the input) if the input would end up in\n // the top half of the screen.\n //\n // This should avoid situations where the input either ends up off the\n // screen, or obscured by a software keyboard.\n const legendTop = $candidateLegend.getBoundingClientRect().top;\n const inputRect = $input.getBoundingClientRect();\n\n // If the browser doesn't support Element.getBoundingClientRect().height\n // or window.innerHeight (like IE8), bail and just link to the label.\n if (inputRect.height && window.innerHeight) {\n const inputBottom = inputRect.top + inputRect.height;\n\n if (inputBottom - legendTop < window.innerHeight / 2) {\n return $candidateLegend;\n }\n }\n }\n }\n\n return (\n document.querySelector(`label[for='${$input.getAttribute(\"id\")}']`) ??\n $input.closest(\"label\")\n );\n }\n}\n","export class FileInputDroppable {\n constructor($module) {\n this.$module = $module;\n this.$body = $module && $module.querySelector(\".tna-form-item__body\");\n this.$input = this.$body && this.$body.querySelector(\".tna-file-input\");\n\n if (!this.$module || !this.$body || !this.$input) {\n return;\n }\n\n this.acceptMutltipleFiles = this.$input.hasAttribute(\"multiple\");\n\n this.$droppableArea = document.createElement(\"div\");\n this.$droppableArea.classList.add(\n \"tna-file-input__droppable\",\n \"tna-file-input__droppable--empty\",\n );\n this.$body.insertBefore(this.$droppableArea, this.$input);\n this.$droppableArea.appendChild(this.$input);\n\n this.$pseudoSelectFileText = document.createElement(\"span\");\n this.$pseudoSelectFileText.setAttribute(\"aria-live\", \"polite\");\n this.$pseudoSelectFileText.classList.add(\n \"tna-file-input__droppable-status\",\n );\n this.$pseudoSelectFileText.textContent = `No file${this.acceptMutltipleFiles ? \"s\" : \"\"} selected`;\n this.$droppableArea.appendChild(this.$pseudoSelectFileText);\n\n const $droppableButtons = document.createElement(\"div\");\n $droppableButtons.classList.add(\n \"tna-button-group\",\n \"tna-button-group--small\",\n \"tna-!--margin-top-s\",\n \"tna-file-input__droppable-buttons\",\n );\n this.$droppableArea.appendChild($droppableButtons);\n\n const $pseudoSelectFileButton = document.createElement(\"span\");\n $pseudoSelectFileButton.classList.add(\"tna-button\");\n $pseudoSelectFileButton.textContent = `Choose file${this.acceptMutltipleFiles ? \"s\" : \"\"}`;\n $droppableButtons.appendChild($pseudoSelectFileButton);\n\n const $pseudoDropFileButton = document.createElement(\"span\");\n $pseudoDropFileButton.textContent = `or drop file${this.acceptMutltipleFiles ? \"s\" : \"\"}`;\n $droppableButtons.appendChild($pseudoDropFileButton);\n\n this.$droppableAreaAriaLabel = document.createElement(\"span\");\n this.$droppableAreaAriaLabel.classList.add(\"tna-visually-hidden\");\n this.$droppableAreaAriaLabel.setAttribute(\"aria-live\", \"assertive\");\n this.$droppableArea.appendChild(this.$droppableAreaAriaLabel);\n\n this.$input.addEventListener(\"dragenter\", (e) => this.showDropTarget(e));\n this.$input.addEventListener(\"dragleave\", () => this.hideDropTarget());\n this.$input.addEventListener(\"dragend\", () => this.hideDropTarget());\n this.$input.addEventListener(\"change\", () => this.onChange());\n this.$input.addEventListener(\"drop\", () => this.onChange());\n }\n\n isContainingFiles(dataTransfer) {\n const hasNoTypesInfo = dataTransfer.types.length === 0;\n const isDraggingFiles = dataTransfer.types.some((type) => type === \"Files\");\n return hasNoTypesInfo || isDraggingFiles;\n }\n\n showDropTarget(event, updateAriaLabel = true) {\n if (event.dataTransfer && this.isContainingFiles(event.dataTransfer)) {\n this.$droppableArea.classList.add(\n event.dataTransfer.items.length > 1\n ? \"tna-file-input__droppable--over-multiple\"\n : \"tna-file-input__droppable--over\",\n );\n\n if (updateAriaLabel) {\n this.$droppableAreaAriaLabel.textContent = \"Entered drop zone\";\n }\n }\n }\n\n hideDropTarget(updateAriaLabel = true) {\n this.$droppableArea.classList.remove(\n \"tna-file-input__droppable--over\",\n \"tna-file-input__droppable--over-multiple\",\n );\n if (updateAriaLabel) {\n this.$droppableAreaAriaLabel.textContent = \"Left drop zone\";\n }\n }\n\n onChange() {\n const files = this.$input.files;\n if (this.acceptMutltipleFiles) {\n if (files.length === 0) {\n this.$pseudoSelectFileText.textContent = `No files selected`;\n } else {\n this.$pseudoSelectFileText.textContent = `${files.length} file${files.length > 1 ? \"s\" : \"\"} selected`;\n }\n } else {\n this.$pseudoSelectFileText.textContent =\n files[0]?.name || `No file selected`;\n }\n if (files.length === 0) {\n this.$droppableArea.classList.add(\"tna-file-input__droppable--empty\");\n } else {\n this.$droppableArea.classList.remove(\"tna-file-input__droppable--empty\");\n }\n this.hideDropTarget(false);\n }\n}\n","import Cookies from \"../../lib/cookies.mjs\";\n\nexport class Footer {\n constructor($module, themeCookieName = \"theme\") {\n this.$module = $module;\n this.$themeSelector =\n $module && $module.querySelector(\".tna-footer__theme-selector\");\n this.$themeSelectorNotice =\n $module && $module.querySelector(\".tna-footer__theme-selector-notice\");\n this.$themeSelectorEnableSettingsCookiesButton =\n this.$themeSelectorNotice &&\n this.$themeSelectorNotice.querySelector(\n \".tna-footer__theme-selector-enable-settings-cookies\",\n );\n this.$tnaTemplate = document.querySelector(\".tna-template\");\n\n if (\n !this.$module ||\n !this.$themeSelector ||\n !this.$themeSelectorNotice ||\n !this.$themeSelectorEnableSettingsCookiesButton ||\n !this.$tnaTemplate\n ) {\n return;\n }\n\n this.currentTheme = this.$themeSelector.dataset.themeOnLoad;\n\n this.themeCookieName = themeCookieName;\n\n this.cookies = new Cookies();\n\n this.$themeSelectorButtons = this.$themeSelector.querySelectorAll(\n \"button.tna-footer__theme-selector-button[value]\",\n );\n\n Array.from(this.$themeSelectorButtons).forEach(($themeSelectorButton) => {\n $themeSelectorButton.addEventListener(\"click\", (e) => {\n const $button = e.target;\n this.setTheme($button.value);\n this.selectThemeSelectorButton($button);\n });\n });\n\n this.$themeSelectorEnableSettingsCookiesButton.addEventListener(\n \"click\",\n () => {\n this.cookies.acceptPolicy(\"settings\");\n },\n );\n\n this.showThemeSelector();\n this.cookies.on(\"changePolicy\", (data) => {\n if (Object.hasOwn(data, \"settings\")) {\n if (data.settings === true) {\n this.cookies.set(this.themeCookieName, this.currentTheme);\n this.$themeSelectorNotice.setAttribute(\"hidden\", \"\");\n } else {\n this.cookies.delete(this.themeCookieName);\n this.$themeSelectorNotice.removeAttribute(\"hidden\");\n }\n }\n });\n }\n\n showThemeSelector() {\n this.$themeSelector.removeAttribute(\"hidden\");\n if (this.cookies.exists(this.themeCookieName)) {\n const $currentThemeButton = Array.from(this.$themeSelectorButtons).find(\n ($button) => $button.value === this.cookies.get(this.themeCookieName),\n );\n if ($currentThemeButton) {\n this.selectThemeSelectorButton($currentThemeButton);\n }\n }\n if (!this.cookies.isPolicyAccepted(\"settings\")) {\n this.$themeSelectorNotice.removeAttribute(\"hidden\");\n }\n }\n\n setTheme(theme) {\n if (theme === \"light\") {\n this.$tnaTemplate.classList.remove(\n \"tna-template--system-theme\",\n \"tna-template--dark-theme\",\n );\n } else if (theme === \"dark\") {\n this.$tnaTemplate.classList.remove(\"tna-template--system-theme\");\n this.$tnaTemplate.classList.add(`tna-template--dark-theme`);\n } else if (theme === \"system\") {\n this.$tnaTemplate.classList.remove(\"tna-template--dark-theme\");\n this.$tnaTemplate.classList.add(`tna-template--system-theme`);\n } else {\n return;\n }\n this.currentTheme = theme;\n if (this.cookies.isPolicyAccepted(\"settings\")) {\n this.cookies.set(this.themeCookieName, this.currentTheme);\n } else {\n this.$themeSelectorNotice.removeAttribute(\"hidden\");\n }\n }\n\n selectThemeSelectorButton($selectedButton) {\n Array.from(this.$themeSelectorButtons).forEach(($button) => {\n if ($button.value === $selectedButton.value) {\n $button.classList.remove(\"tna-button--plain\");\n $button.setAttribute(\"aria-current\", true);\n } else {\n $button.classList.add(\"tna-button--plain\");\n $button.removeAttribute(\"aria-current\");\n }\n });\n }\n}\n","export class Gallery {\n constructor($module) {\n this.$module = $module;\n this.$itemsContainer =\n $module && $module.querySelector(\".tna-gallery__items\");\n this.$items =\n this.$itemsContainer &&\n this.$itemsContainer.querySelectorAll(\".tna-gallery__item\");\n this.$navigation =\n $module && $module.querySelector(\".tna-gallery__navigation\");\n this.$navigationItems =\n this.$navigation &&\n $module.querySelectorAll(\".tna-gallery__navigation-item\");\n this.$navigationButtons =\n $module && $module.querySelector(\".tna-gallery__navigation-buttons\");\n\n if (\n !this.$module ||\n !this.$itemsContainer ||\n !this.$items ||\n this.$items.length < 2 ||\n !this.$navigation ||\n !this.$navigationItems ||\n !this.$navigationButtons\n ) {\n return;\n }\n\n this.$module.classList.add(\"tna-gallery--interactive\");\n\n this.$navigationButtonPrev = this.$navigationButtons.querySelector(\n \".tna-gallery__navigation-prev\",\n );\n this.$navigationButtonNext = this.$navigationButtons.querySelector(\n \".tna-gallery__navigation-next\",\n );\n\n this.setup();\n this.currentId = this.$items[0].id;\n this.showItem(this.currentId);\n }\n\n setup() {\n this.$items.forEach(($item) => {\n $item.setAttribute(\"hidden\", \"\");\n $item.setAttribute(\"aria-hidden\", \"true\");\n $item\n .querySelector(\".tna-gallery__item-header\")\n ?.setAttribute(\"aria-hidden\", \"true\");\n });\n this.$navigation.removeAttribute(\"hidden\");\n this.$navigationItems.forEach(($item) => {\n $item.addEventListener(\"click\", () => {\n this.showItem($item.getAttribute(\"aria-controls\"));\n this.$itemsContainer.setAttribute(\"tabindex\", \"0\");\n this.$itemsContainer.focus();\n });\n });\n this.$module.addEventListener(\"keydown\", (e) => {\n let preventDefaultKeyAction = false;\n switch (e.key) {\n case \"ArrowLeft\":\n case \"ArrowUp\":\n this.showPreviousItem();\n preventDefaultKeyAction = true;\n break;\n case \"ArrowRight\":\n case \"ArrowDown\":\n this.showNextItem();\n preventDefaultKeyAction = true;\n break;\n case \"Home\":\n this.showFirstItem();\n preventDefaultKeyAction = true;\n break;\n case \"End\":\n this.showLastItem();\n preventDefaultKeyAction = true;\n break;\n }\n if (preventDefaultKeyAction) {\n e.stopPropagation();\n e.preventDefault();\n }\n });\n\n this.$navigationButtons?.removeAttribute(\"hidden\");\n this.$navigationButtonPrev?.addEventListener(\"click\", () => {\n this.showPreviousItem();\n });\n this.$navigationButtonNext?.addEventListener(\"click\", () => {\n this.showNextItem();\n });\n\n this.$liveRegion = document.createElement(\"div\");\n this.$liveRegion.setAttribute(\"aria-live\", \"polite\");\n this.$liveRegion.setAttribute(\"aria-atomic\", \"true\");\n this.$liveRegion.setAttribute(\"class\", \"tna-gallery__item-header\");\n this.$itemsContainer.prepend(this.$liveRegion);\n this.$itemsContainer.classList.add(\"tna-gallery__items--hide-item-titles\");\n this.$itemsContainer.addEventListener(\"blur\", () =>\n this.$itemsContainer.removeAttribute(\"tabindex\"),\n );\n }\n\n showItem(id) {\n this.$items.forEach(($item) => {\n if (id && $item.id === id) {\n $item.removeAttribute(\"hidden\");\n $item.removeAttribute(\"aria-hidden\");\n } else {\n $item.setAttribute(\"hidden\", \"\");\n $item.setAttribute(\"aria-hidden\", \"true\");\n }\n });\n this.$navigationItems.forEach(($item) => {\n if (id) {\n if ($item.getAttribute(\"aria-controls\") === id) {\n $item.setAttribute(\"aria-current\", \"true\");\n } else {\n $item.setAttribute(\"aria-current\", \"false\");\n }\n } else {\n $item.setAttribute(\"aria-current\", \"false\");\n }\n });\n this.currentId = id;\n this.$liveRegion.textContent = `Image ${this.getCurrentItemIndex() + 1} of ${this.$items.length}`;\n }\n\n getCurrentItemIndex() {\n return Array.from(this.$items).findIndex(\n ($item) => $item.id === this.currentId,\n );\n }\n\n showPreviousItem() {\n let nextIndexToShow = this.getCurrentItemIndex() - 1;\n if (nextIndexToShow < 0) {\n nextIndexToShow = this.$items.length - 1;\n }\n this.showItem(this.$items[nextIndexToShow].id);\n }\n\n showNextItem() {\n let nextIndexToShow = this.getCurrentItemIndex() + 1;\n if (nextIndexToShow >= this.$items.length) {\n nextIndexToShow = 0;\n }\n this.showItem(this.$items[nextIndexToShow].id);\n }\n\n showFirstItem() {\n this.showItem(this.$items[0].id);\n }\n\n showLastItem() {\n this.showItem(this.$items[this.$items.length - 1].id);\n }\n}\n","export class GlobalHeader {\n constructor($module) {\n this.$module = $module;\n this.$toggleButton =\n $module && $module.querySelector(\".tna-global-header__navigation-button\");\n this.$navigation =\n $module &&\n $module.querySelector(\".tna-global-header__navigation-wrapper\");\n this.$topNavigation =\n $module &&\n $module.querySelector(\".tna-global-header__top-navigation-wrapper\");\n this.$links =\n $module &&\n ((this.$navigation &&\n this.$navigation.querySelectorAll(\"[tabindex='0']\")) ||\n (this.$topNavigation &&\n this.$topNavigation.querySelectorAll(\"[tabindex='0']\")));\n this.menuOpened = false;\n this.mql = window.matchMedia(\"(max-width: 48em)\");\n\n if (\n !this.$module ||\n !this.$toggleButton ||\n (!this.$navigation && !this.$topNavigation)\n ) {\n return;\n }\n\n this.$toggleButton.removeAttribute(\"hidden\");\n this.syncState();\n this.$toggleButton.addEventListener(\"click\", () =>\n this.handleToggleNavigation(),\n );\n if (\"addEventListener\" in this.mql) {\n this.mql.addEventListener(\"change\", () => this.syncState());\n } else {\n this.mql.addListener(() => this.syncState());\n }\n\n this.$module.addEventListener(\"keyup\", (e) => {\n if (e.code === \"Escape\" && this.mql.matches) {\n if (this.menuOpened) {\n this.menuOpened = false;\n this.syncState();\n this.$toggleButton.focus();\n }\n }\n });\n }\n\n handleToggleNavigation() {\n this.menuOpened = !this.menuOpened;\n this.syncState();\n }\n\n syncState() {\n if (this.mql.matches) {\n if (this.menuOpened) {\n this.show();\n } else {\n this.hide();\n }\n } else {\n this.show();\n }\n }\n\n hide() {\n if (this.$navigation) {\n this.$navigation.hidden = true;\n this.$navigation.setAttribute(\"aria-hidden\", \"true\");\n }\n if (this.$topNavigation) {\n this.$topNavigation.hidden = true;\n this.$topNavigation.setAttribute(\"aria-hidden\", \"true\");\n }\n this.$toggleButton.setAttribute(\"aria-expanded\", \"false\");\n this.$toggleButton.setAttribute(\"title\", \"Open menu\");\n this.$toggleButton.classList.remove(\n \"tna-global-header__navigation-button--opened\",\n );\n for (let i = 0; i < this.$links.length; i++) {\n this.$links[i].setAttribute(\"tabindex\", \"-1\");\n }\n }\n\n show() {\n if (this.$navigation) {\n this.$navigation.hidden = false;\n this.$navigation.setAttribute(\"aria-hidden\", \"false\");\n }\n if (this.$topNavigation) {\n this.$topNavigation.hidden = false;\n this.$topNavigation.setAttribute(\"aria-hidden\", \"false\");\n }\n this.$toggleButton.setAttribute(\"aria-expanded\", \"true\");\n this.$toggleButton.setAttribute(\"title\", \"Close menu\");\n this.$toggleButton.classList.add(\n \"tna-global-header__navigation-button--opened\",\n );\n for (let i = 0; i < this.$links.length; i++) {\n this.$links[i].setAttribute(\"tabindex\", \"0\");\n }\n }\n}\n","export class Header {\n constructor($module) {\n this.$module = $module;\n this.$toggleButton =\n $module && $module.querySelector(\".tna-header__navigation-button\");\n this.$navigation =\n $module && $module.querySelector(\".tna-header__navigation\");\n this.$links =\n $module &&\n this.$navigation &&\n this.$navigation.querySelectorAll(\"[tabindex='0']\");\n this.menuOpened = false;\n this.mql = window.matchMedia(\"(max-width: 48em)\");\n\n if (!this.$module || !this.$toggleButton || !this.$navigation) {\n return;\n }\n\n this.$toggleButton.removeAttribute(\"hidden\");\n this.syncState();\n this.$toggleButton.addEventListener(\"click\", () =>\n this.handleToggleNavigation(),\n );\n if (\"addEventListener\" in this.mql) {\n this.mql.addEventListener(\"change\", () => this.syncState());\n } else {\n this.mql.addListener(() => this.syncState());\n }\n\n this.$module.addEventListener(\"keyup\", (e) => {\n if (e.code === \"Escape\") {\n if (this.menuOpened && this.mql.matches) {\n this.menuOpened = false;\n this.syncState();\n this.$toggleButton.focus();\n }\n }\n });\n }\n\n handleToggleNavigation() {\n this.menuOpened = !this.menuOpened;\n this.syncState();\n }\n\n syncState() {\n if (this.mql.matches) {\n if (this.menuOpened) {\n this.show();\n } else {\n this.hide();\n }\n } else {\n this.show();\n }\n }\n\n show() {\n this.$navigation.classList.add(\"tna-header__navigation--open\");\n this.$navigation.removeAttribute(\"hidden\");\n this.$navigation.setAttribute(\"aria-hidden\", \"false\");\n this.$toggleButton.setAttribute(\"aria-expanded\", \"true\");\n this.$toggleButton.setAttribute(\"title\", \"Close menu\");\n this.$toggleButton.classList.add(\"tna-header__navigation-button--opened\");\n\n for (let i = 0; i < this.$links.length; i++) {\n this.$links[i].setAttribute(\"tabindex\", \"0\");\n }\n }\n\n hide() {\n this.$navigation.classList.remove(\"tna-header__navigation--open\");\n this.$navigation.hidden = true;\n this.$navigation.setAttribute(\"aria-hidden\", \"true\");\n this.$toggleButton.setAttribute(\"aria-expanded\", \"false\");\n this.$toggleButton.setAttribute(\"title\", \"Open menu\");\n this.$toggleButton.classList.remove(\n \"tna-header__navigation-button--opened\",\n );\n\n for (let i = 0; i < this.$links.length; i++) {\n this.$links[i].setAttribute(\"tabindex\", \"-1\");\n }\n }\n}\n","import uuidv4 from \"../../lib/uuid.mjs\";\n\nexport class Picture {\n constructor($module) {\n this.$module = $module;\n this.$imageWrapper =\n $module && $module.querySelector(\".tna-picture__image-wrapper\");\n\n this.$transcriptToggle =\n this.$imageWrapper &&\n this.$imageWrapper.querySelector(\".tna-picture__toggle-transcript\");\n\n this.$transcript =\n $module && $module.querySelector(\".tna-picture__transcript\");\n this.transcriptOpened = false;\n\n if (\n !this.$module ||\n !this.$imageWrapper ||\n !this.$transcriptToggle ||\n !this.$transcript\n ) {\n return;\n }\n\n this.openLabel =\n this.$module.dataset.informationLabelOpen || \"Open transcript\";\n this.closeLabel =\n this.$module.dataset.informationLabelClose || \"Close transcript\";\n\n this.init();\n }\n\n init() {\n const uniqueId = `tna-picture-${uuidv4()}`;\n\n this.$transcriptToggle.removeAttribute(\"hidden\");\n this.$transcriptToggle.setAttribute(\"aria-controls\", uniqueId);\n this.$transcriptToggle.innerText = this.openLabel;\n this.$transcriptToggle.addEventListener(\"click\", () =>\n this.toggleTranscript(),\n );\n\n this.$transcript.setAttribute(\"id\", uniqueId);\n this.$transcript.setAttribute(\"hidden\", \"\");\n\n this.$transcript.addEventListener(\"keydown\", (e) => {\n switch (e.key) {\n case \"Escape\":\n this.toggleTranscript();\n this.$transcriptToggle.focus();\n break;\n }\n });\n }\n\n toggleTranscript() {\n this.transcriptOpened = !this.transcriptOpened;\n if (this.transcriptOpened) {\n this.$transcriptToggle.setAttribute(\"aria-expanded\", true);\n this.$transcriptToggle.innerText = this.closeLabel;\n this.$transcript.removeAttribute(\"hidden\");\n } else {\n this.$transcriptToggle.setAttribute(\"aria-expanded\", false);\n this.$transcriptToggle.innerText = this.openLabel;\n this.$transcript.setAttribute(\"hidden\", \"\");\n }\n }\n}\n","export class SkipLink {\n linkedElementListener = false;\n\n constructor($module) {\n this.$module = $module;\n this.linkedElementId = $module.getAttribute(\"href\")?.split(\"#\").pop();\n this.$linkedElement =\n $module &&\n this.linkedElementId &&\n document.getElementById(this.linkedElementId);\n\n if (this.$module && this.$linkedElement) {\n this.$module.addEventListener(\"click\", () => this.focusLinkedElement());\n }\n }\n\n focusLinkedElement() {\n if (!this.$linkedElement.getAttribute(\"tabindex\")) {\n this.$linkedElement.setAttribute(\"tabindex\", \"-1\");\n this.$linkedElement.classList.add(\"tna-!--no-focus-style\");\n\n if (!this.linkedElementListener) {\n this.$linkedElement.addEventListener(\"blur\", () =>\n this.removeFocusProperties(),\n );\n this.linkedElementListener = true;\n }\n }\n\n this.$linkedElement.focus();\n }\n\n removeFocusProperties() {\n this.$linkedElement.removeAttribute(\"tabindex\");\n this.$linkedElement.classList.remove(\"tna-!--no-focus-style\");\n }\n}\n","export class Tabs {\n constructor($module) {\n this.$module = $module;\n this.$tabList = $module && $module.querySelector(\".tna-tabs__list\");\n this.$tabListItemLinks =\n $module &&\n this.$tabList &&\n this.$tabList.querySelectorAll(\".tna-tabs__button\");\n this.$tabItems = $module && $module.querySelectorAll(\".tna-tabs__item\");\n\n if (\n !this.$module ||\n !this.$tabList ||\n !this.$tabListItemLinks ||\n !this.$tabItems ||\n this.$tabListItemLinks.length !== this.$tabItems.length\n ) {\n return;\n }\n\n this.currentTabIndex = 0;\n this.init();\n }\n\n init() {\n this.$module.classList.add(\"tna-tabs--interactive\");\n this.$tabList.removeAttribute(\"hidden\");\n this.$tabListItemLinks.forEach(($tabListItemLink) => {\n const tabPanelID = $tabListItemLink.getAttribute(\"aria-controls\");\n $tabListItemLink.setAttribute(\"aria-selected\", false);\n const $tabPanel = document.getElementById(tabPanelID);\n $tabPanel.setAttribute(\"aria-labelledby\", $tabListItemLink.id);\n $tabPanel.setAttribute(\"role\", \"tabpanel\");\n $tabListItemLink.addEventListener(\n \"click\",\n (e) => this.handleItemLinkClick(e),\n true,\n );\n });\n this.switchTabByIndex(this.currentTabIndex);\n this.$module.addEventListener(\"keydown\", (e) =>\n this.handleItemLinkKeyDown(e),\n );\n }\n\n handleItemLinkClick(itemLinkClickEvent) {\n itemLinkClickEvent.preventDefault();\n const targetItem =\n itemLinkClickEvent.currentTarget.getAttribute(\"aria-controls\");\n this.switchTabByID(targetItem);\n }\n\n handleItemLinkKeyDown(itemLinkKeyDownEvent) {\n let preventDefaultKeyAction = false;\n switch (itemLinkKeyDownEvent.key) {\n case \"ArrowLeft\":\n case \"ArrowUp\":\n this.previousTab();\n preventDefaultKeyAction = true;\n break;\n case \"ArrowRight\":\n case \"ArrowDown\":\n this.nextTab();\n preventDefaultKeyAction = true;\n break;\n case \"Home\":\n this.switchTabByIndex(0, true);\n preventDefaultKeyAction = true;\n break;\n case \"End\":\n this.switchTabByIndex(this.$tabListItemLinks.length - 1, true);\n preventDefaultKeyAction = true;\n break;\n default:\n break;\n }\n if (preventDefaultKeyAction) {\n itemLinkKeyDownEvent.stopPropagation();\n itemLinkKeyDownEvent.preventDefault();\n }\n }\n\n nextTab() {\n if (this.currentTabIndex < this.$tabListItemLinks.length - 1) {\n this.switchTabByIndex(this.currentTabIndex + 1, true);\n } else {\n this.switchTabByIndex(0, true);\n }\n }\n\n previousTab() {\n if (this.currentTabIndex >= 1) {\n this.switchTabByIndex(this.currentTabIndex - 1, true);\n } else {\n this.switchTabByIndex(this.$tabListItemLinks.length - 1, true);\n }\n }\n\n switchTabByIndex(newIndex, switchFocus = false) {\n this.currentTabIndex = newIndex;\n this.$tabListItemLinks.forEach(($tabListItemLink, index) => {\n if (index === this.currentTabIndex) {\n $tabListItemLink.setAttribute(\"aria-selected\", true);\n $tabListItemLink.setAttribute(\"tabindex\", \"0\");\n if (switchFocus) {\n $tabListItemLink.focus();\n }\n } else {\n $tabListItemLink.setAttribute(\"aria-selected\", false);\n $tabListItemLink.setAttribute(\"tabindex\", \"-1\");\n }\n });\n this.$tabItems.forEach(($tabItem, index) => {\n if (index === this.currentTabIndex) {\n $tabItem.removeAttribute(\"hidden\");\n $tabItem.setAttribute(\"tabindex\", \"0\");\n } else {\n $tabItem.setAttribute(\"hidden\", \"\");\n $tabItem.setAttribute(\"tabindex\", \"-1\");\n }\n });\n }\n\n switchTabByID(targetId) {\n const index = Array.from(this.$tabItems).findIndex(\n ($tabItem) => $tabItem.getAttribute(\"id\") === targetId,\n );\n this.switchTabByIndex(index);\n }\n}\n","export class TextInputPassword {\n constructor($module) {\n this.$module = $module;\n this.$input = $module && $module.querySelector(\".tna-text-input\");\n\n if (\n !this.$module ||\n !this.$input ||\n this.$input.getAttribute(\"type\") !== \"password\"\n ) {\n return;\n }\n\n this.$textInputWrapper = document.createElement(\"div\");\n this.$textInputWrapper.classList.add(\"tna-text-input-wrapper\");\n\n this.$textInputPasswordToggle = document.createElement(\"button\");\n this.$textInputPasswordToggle.setAttribute(\"type\", \"button\");\n this.$textInputPasswordToggle.classList.add(\n \"tna-button\",\n \"tna-button--small\",\n \"tna-button--icon-only\",\n );\n this.$textInputPasswordToggle.setAttribute(\"aria-controls\", this.$input.id);\n this.updateTogglePasswordButtonText();\n\n this.$textInputWrapper.appendChild(this.$input);\n this.$textInputWrapper.appendChild(this.$textInputPasswordToggle);\n this.$module.appendChild(this.$textInputWrapper);\n\n this.$textInputPasswordToggle.addEventListener(\"click\", () => {\n this.togglePasswordType();\n this.$input.focus();\n });\n }\n\n togglePasswordType() {\n if (this.$input.getAttribute(\"type\") === \"password\") {\n this.$input.setAttribute(\"type\", \"text\");\n } else {\n this.$input.setAttribute(\"type\", \"password\");\n }\n this.updateTogglePasswordButtonText();\n }\n\n updateTogglePasswordButtonText() {\n if (this.$input.getAttribute(\"type\") === \"password\") {\n this.$textInputPasswordToggle.innerHTML = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 640 640\" height=\"24\" aria-hidden=\"true\" focusable=\"false\"><!--!Font Awesome Free v7.0.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--><path d=\"M320 96C239.2 96 174.5 132.8 127.4 176.6C80.6 220.1 49.3 272 34.4 307.7C31.1 315.6 31.1 324.4 34.4 332.3C49.3 368 80.6 420 127.4 463.4C174.5 507.1 239.2 544 320 544C400.8 544 465.5 507.2 512.6 463.4C559.4 419.9 590.7 368 605.6 332.3C608.9 324.4 608.9 315.6 605.6 307.7C590.7 272 559.4 220 512.6 176.6C465.5 132.9 400.8 96 320 96zM176 320C176 240.5 240.5 176 320 176C399.5 176 464 240.5 464 320C464 399.5 399.5 464 320 464C240.5 464 176 399.5 176 320zM320 256C320 291.3 291.3 320 256 320C244.5 320 233.7 317 224.3 311.6C223.3 322.5 224.2 333.7 227.2 344.8C240.9 396 293.6 426.4 344.8 412.7C396 399 426.4 346.3 412.7 295.1C400.5 249.4 357.2 220.3 311.6 224.3C316.9 233.6 320 244.4 320 256z\" /></svg>Show password`;\n this.$textInputPasswordToggle.setAttribute(\"title\", \"Show password\");\n this.$textInputPasswordToggle.setAttribute(\"aria-label\", \"Show password\");\n } else {\n this.$textInputPasswordToggle.innerHTML = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 640 640\" height=\"24\" aria-hidden=\"true\" focusable=\"false\"><!--!Font Awesome Free v7.0.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--><path d=\"M73 39.1C63.6 29.7 48.4 29.7 39.1 39.1C29.8 48.5 29.7 63.7 39 73.1L567 601.1C576.4 610.5 591.6 610.5 600.9 601.1C610.2 591.7 610.3 576.5 600.9 567.2L504.5 470.8C507.2 468.4 509.9 466 512.5 463.6C559.3 420.1 590.6 368.2 605.5 332.5C608.8 324.6 608.8 315.8 605.5 307.9C590.6 272.2 559.3 220.2 512.5 176.8C465.4 133.1 400.7 96.2 319.9 96.2C263.1 96.2 214.3 114.4 173.9 140.4L73 39.1zM236.5 202.7C260 185.9 288.9 176 320 176C399.5 176 464 240.5 464 320C464 351.1 454.1 379.9 437.3 403.5L402.6 368.8C415.3 347.4 419.6 321.1 412.7 295.1C399 243.9 346.3 213.5 295.1 227.2C286.5 229.5 278.4 232.9 271.1 237.2L236.4 202.5zM357.3 459.1C345.4 462.3 332.9 464 320 464C240.5 464 176 399.5 176 320C176 307.1 177.7 294.6 180.9 282.7L101.4 203.2C68.8 240 46.4 279 34.5 307.7C31.2 315.6 31.2 324.4 34.5 332.3C49.4 368 80.7 420 127.5 463.4C174.6 507.1 239.3 544 320.1 544C357.4 544 391.3 536.1 421.6 523.4L357.4 459.2z\" /></svg>Hide password`;\n this.$textInputPasswordToggle.setAttribute(\"title\", \"Hide password\");\n this.$textInputPasswordToggle.setAttribute(\"aria-label\", \"Hide password\");\n }\n }\n}\n","export class TextAreaItemisedRows {\n constructor($module, options = {}) {\n this.$module = $module;\n this.$formFieldInput =\n this.$module && this.$module.querySelector(\".tna-textarea\");\n this.$formFieldInputHint =\n this.$module && this.$module.querySelector(\".tna-form-item__hint\");\n this.$formFieldBody =\n this.$module && this.$module.querySelector(\".tna-form-item__body\");\n\n if (\n !this.$module ||\n !this.$formFieldInput ||\n !this.$formFieldBody ||\n this.$formFieldInput.getAttribute(\"hidden\") !== null\n ) {\n return;\n }\n\n const { enhancedHint } = options;\n\n this.values = this.$formFieldInput.value\n .split(\"\\n\")\n .map((value) => value.trim())\n .filter((value) => value);\n\n this.id = this.$formFieldInput.id;\n\n this.$formFieldNewInput = document.createElement(\"input\");\n this.$formFieldNewInput.classList.add(\"tna-text-input\");\n [\"id\", \"aria-describedby\"].forEach((attribute) => {\n this.$formFieldNewInput.setAttribute(\n attribute,\n this.$formFieldInput.getAttribute(attribute),\n );\n this.$formFieldInput.removeAttribute(attribute);\n });\n this.$formFieldBody.appendChild(this.$formFieldNewInput);\n this.$formFieldInput.setAttribute(\"hidden\", \"\");\n this.$formFieldInput.addEventListener(\"keyup\", () => this.updateList());\n this.$formFieldNewInput.addEventListener(\"keypress\", (e) => {\n if (e.key === \"Enter\") {\n this.appendValue(e.target.value);\n }\n });\n\n this.$formFieldNewInputAddButton = document.createElement(\"button\");\n this.$formFieldNewInputAddButton.setAttribute(\"type\", \"button\");\n this.$formFieldNewInputAddButton.classList.add(\n \"tna-button\",\n \"tna-button--small\",\n );\n this.$formFieldNewInputAddButtonInner = document.createElement(\"span\");\n this.$formFieldNewInputAddButtonInner.innerText = \"Add\";\n this.$formFieldNewInputAddButtonInnerExtra = document.createElement(\"span\");\n this.$formFieldNewInputAddButtonInnerExtra.classList.add(\n \"tna-visually-hidden\",\n );\n this.$formFieldNewInputAddButtonInnerExtra.innerText = \" to list\";\n this.$formFieldNewInputAddButtonInner.appendChild(\n this.$formFieldNewInputAddButtonInnerExtra,\n );\n this.$formFieldNewInputAddButton.appendChild(\n this.$formFieldNewInputAddButtonInner,\n );\n this.$formFieldBody.appendChild(this.$formFieldNewInputAddButton);\n this.$formFieldNewInputAddButton.addEventListener(\"click\", () => {\n this.appendValue(this.$formFieldNewInput.value);\n });\n\n this.$formFieldLiveAria = document.createElement(\"div\");\n this.$formFieldLiveAria.setAttribute(\"aria-live\", \"assertive\");\n this.$formFieldLiveAria.classList.add(\"tna-visually-hidden\");\n this.$module.appendChild(this.$formFieldLiveAria);\n\n this.$formFieldCounter = document.createElement(\"p\");\n this.$formFieldCounter.id = `${this.id}-list-helper`;\n this.$formFieldCounter.classList.add(\"tna-!--margin-top-xs\");\n this.$module.appendChild(this.$formFieldCounter);\n\n this.$formFieldNewInput.setAttribute(\n \"aria-describedby\",\n `${this.$formFieldNewInput.getAttribute(\"aria-describedby\")} ${\n this.$formFieldCounter.id\n }`,\n );\n\n this.$valuesList = document.createElement(\"ul\");\n this.$valuesList.classList.add(\n \"tna-compound-filters\",\n \"tna-!--margin-top-xs\",\n );\n this.$valuesList.addEventListener(\"blur\", () => {\n this.$valuesList.removeAttribute(\"tabindex\");\n this.updateAriaText(\"\");\n });\n this.$module.appendChild(this.$valuesList);\n\n if (!this.$formFieldInputHint) {\n this.$formFieldInputHint = document.createElement(\"p\");\n this.$formFieldInputHint.classList.add(\"tna-form-item__hint\");\n this.$formFieldBody.parentNode.insertBefore(\n this.$formFieldInputHint,\n this.$formFieldBody,\n );\n }\n this.$formFieldInputHint.innerText =\n enhancedHint || \"Enter an item and press enter\";\n\n this.updateList();\n }\n\n updateAriaText(content) {\n this.$formFieldLiveAria.innerText = content;\n }\n\n normaliseValue(value) {\n return value.replace(/\\s{2,}/, \" \").trim();\n }\n\n isValueInList(value) {\n return (\n this.values\n .map((value) => this.normaliseValue(value).toLowerCase())\n .indexOf(value.toLowerCase().trim()) > -1\n );\n }\n\n appendValue(value) {\n const newValue = this.normaliseValue(value);\n if (newValue) {\n if (!this.isValueInList(newValue)) {\n this.values.push(newValue);\n this.$formFieldInput.value = this.values.join(\"\\n\");\n this.updateList();\n this.updateAriaText(`'${newValue}' added`);\n } else {\n this.updateAriaText(`'${newValue}' already added`);\n }\n } else {\n this.updateAriaText(\"Enter an item to add\");\n }\n this.$formFieldNewInput.value = \"\";\n this.$formFieldNewInput.focus();\n }\n\n removeValue(value) {\n const removeValue = this.normaliseValue(value);\n if (removeValue && this.isValueInList(removeValue)) {\n this.values = this.values.filter(\n (existingValue) => existingValue !== removeValue,\n );\n this.$formFieldInput.value = this.values.join(\"\\n\");\n this.updateList();\n this.updateAriaText(`'${removeValue}' removed`);\n }\n if (this.values.length) {\n this.$valuesList.setAttribute(\"tabindex\", \"0\");\n this.$valuesList.focus();\n } else {\n this.$formFieldNewInput.focus();\n }\n }\n\n updateList() {\n this.$valuesList.innerHTML = \"\";\n this.values\n .map((value) => {\n const $item = document.createElement(\"li\");\n $item.classList.add(\"tna-compound-filters__item\");\n const $itemLabel = document.createElement(\"span\");\n $itemLabel.innerText = value;\n $item.appendChild($itemLabel);\n\n const $removeItemButton = document.createElement(\"button\");\n $removeItemButton.innerText = `Remove '${value}'`;\n $removeItemButton.setAttribute(\"type\", \"button\");\n $removeItemButton.classList.add(\"tna-compound-filters__link\");\n $removeItemButton.addEventListener(\"click\", () => {\n this.removeValue(value);\n });\n $item.appendChild($removeItemButton);\n return $item;\n })\n .forEach(($item) => this.$valuesList.appendChild($item));\n this.$formFieldCounter.innerText = `${this.values.length} item${this.values.length !== 1 ? \"s\" : \"\"} added`;\n }\n}\n","window.TNAFrontendCookies = window.TNAFrontendCookies || null;\nwindow.TNAFrontendCookieEvents = window.TNAFrontendCookieEvents || null;\n\nexport class CookieEventHandler {\n events = {};\n oneTimeEvents = {};\n debug = false;\n\n constructor(debug = false) {\n this.debug = debug;\n if (window.TNAFrontendCookieEvents) {\n this.log(\"Using existing TNAFrontendCookieEvents instance\");\n return window.TNAFrontendCookieEvents;\n }\n window.TNAFrontendCookieEvents = this;\n }\n\n log(...args) {\n if (this.debug) {\n console.log(\"[TNA Frontend Cookie Events]\", ...args);\n }\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.log(`Triggering event: ${event}`, data);\n this.events[event].forEach((eventToTrigger) =>\n eventToTrigger.call(this, data),\n );\n }\n if (Object.hasOwn(this.oneTimeEvents, event)) {\n this.log(`Triggering one-time event: ${event}`, data);\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\nconst tnaCookiePolicies = [\"usage\", \"settings\", \"marketing\", \"essential\"];\n\n/**\n * Class to handle cookies.\n * @class Cookies\n * @constructor\n * @public\n */\nexport default class Cookies {\n /** @protected */\n defaultDomain = \"\";\n /** @protected */\n defaultPath = \"\";\n /** @protected */\n secure = true;\n /** @protected */\n policiesKey = \"\";\n /** @protected */\n events = null;\n /** @protected */\n defaultAge = null;\n /** @protected */\n policiesCorrectOnInit = false;\n /** @protected */\n debug = document.documentElement.dataset.tnaFrontendDebug === \"true\";\n\n /**\n * Create a cookie handler.\n * @param {String} [options.defaultDomain] - The domain to register the cookie with.\n * @param {String} [options.path] - The domain to register the cookie with.\n * @param {Boolean} [options.secure] - Only set cookie in HTTPS environments.\n * @param {String} [options.policiesKey] - The name of the cookie.\n * @param {Number} [options.defaultAge] - The default age of non-session cookies.\n * @param {String} [options.newInstance=false] - Create a fresh instance of the cookie class.\n * @param {Boolean} [options.noInit=false] - Don't initialise a blank cookie policy.\n */\n constructor(options = {}) {\n const {\n defaultDomain,\n defaultPath,\n secure,\n policiesKey,\n defaultAge,\n newInstance = false,\n noInit = false,\n } = options;\n if (!newInstance && window.TNAFrontendCookies) {\n return window.TNAFrontendCookies;\n }\n if (defaultDomain === undefined) {\n this.defaultDomain =\n document.documentElement.dataset.tnaCookiesDomain ||\n window.location.hostname;\n } else {\n this.defaultDomain = defaultDomain;\n }\n if (defaultPath === undefined) {\n this.defaultPath = document.documentElement.dataset.tnaCookiesPath || \"/\";\n } else {\n this.defaultPath = defaultPath;\n }\n if (secure === undefined) {\n this.secure =\n document.documentElement.dataset.tnaCookiesInsecure !== \"true\";\n } else {\n this.secure = secure;\n }\n if (policiesKey === undefined) {\n this.policiesKey =\n document.documentElement.dataset.tnaCookiesPoliciesKey ||\n \"cookies_policy\";\n } else {\n this.policiesKey = policiesKey;\n }\n if (defaultAge === undefined) {\n this.defaultAge =\n parseInt(document.documentElement.dataset.tnaCookiesDefaultAge) ||\n 31536000; // 365 days;\n } else {\n this.defaultAge = defaultAge;\n }\n this.events = new CookieEventHandler(this.debug);\n this.policiesCorrectOnInit =\n Object.keys(this.policies).length === tnaCookiePolicies.length &&\n tnaCookiePolicies.every(\n (policy) =>\n Object.keys(this.policies).includes(policy) &&\n typeof this.policies[policy] === \"boolean\",\n );\n if (!this.policiesCorrectOnInit && !noInit) {\n this.init();\n }\n this.log({\n defaultDomain: this.defaultDomain,\n defaultPath: this.defaultPath,\n secure: this.secure,\n policiesKey: this.policiesKey,\n defaultAge: this.defaultAge,\n policiesCorrectOnInit: this.policiesCorrectOnInit,\n });\n if (!newInstance && !window.TNAFrontendCookies) {\n window.TNAFrontendCookies = this;\n }\n }\n\n /** @protected */\n init() {\n const existingPolicies = this.policies;\n this.log(\"Existing policies on init:\", existingPolicies);\n const filteredExistingPolicies = Object.fromEntries(\n Object.keys(existingPolicies)\n .filter((policy) => tnaCookiePolicies.includes(policy))\n .map((policy) => [policy, existingPolicies[policy]]),\n );\n if (Object.keys(filteredExistingPolicies).length > 0) {\n this.log(\"Filtered existing policies:\", filteredExistingPolicies);\n }\n this.savePolicies({\n usage: false,\n settings: false,\n marketing: false,\n ...filteredExistingPolicies,\n essential: true,\n });\n }\n\n log(...args) {\n if (this.debug) {\n console.log(\"[TNA Frontend Cookies]\", ...args, this.all);\n }\n }\n\n destroyInstance() {\n this.log(\"Destroying TNAFrontendCookies instance\");\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.defaultDomain] - The domain to register the cookie with.\n * @param {String} [options.path=this.defaultPath] - 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.defaultDomain,\n path = this.defaultPath,\n secure = this.secure,\n session = false,\n } = options;\n if (!key) {\n return;\n }\n const cookie = `${encodeURIComponent(key)}=${encodeURIComponent(value)}; domain=${domain}; samesite=${sameSite}; path=${path}${!session ? `; max-age=${maxAge}` : \"\"}${\n secure ? \"; secure\" : \"\"\n }`;\n document.cookie = cookie;\n this.log(\"Set cookie:\", {\n key,\n value,\n maxAge,\n path,\n sameSite,\n domain,\n secure,\n session,\n cookie,\n });\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 = this.defaultDomain) {\n const options = { maxAge: -1, path, domain: domain || undefined };\n this.set(key, \"\", options);\n this.log(\"Deleted cookie:\", { key, path, domain, ...options });\n this.events.trigger(\"deleteCookie\", { key, ...options });\n }\n\n /**\n * Delete all cookies.\n */\n deleteAll(path = \"/\", domain = this.defaultDomain) {\n Object.keys(this.all).forEach((cookie) => {\n this.delete(cookie, path, domain);\n });\n this.log(\"Deleted all cookies\", { path, domain });\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.log(\"Accepting policy:\", 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.log(\"Rejecting policy:\", 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 this.log(\"Cannot change essential policy, it is always accepted.\");\n return;\n }\n this.log(`Setting policy ${policy} to ${accepted}`);\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 this.log(\"Accepting all policies\");\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 this.log(\"Rejecting all policies\");\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.log(\"Saving policies:\", 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.log(`Adding event listener for: ${event}`);\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.log(`Adding one-time event listener for: ${event}`);\n this.events.once(event, callback);\n }\n}\n","import uuidv4 from \"./uuid.mjs\";\n\nexport const checkTableForScroll = ($tableWrapper) => {\n const isUninitialised = !(\n $tableWrapper.dataset.tableScrollInitialised === \"true\"\n );\n const $caption = $tableWrapper.querySelector(\"caption\");\n if (isUninitialised) {\n if (!$caption) {\n console.warn(\"Missing <caption> element on table\", $tableWrapper);\n } else if (!$caption.id) {\n $caption.id = `table-caption-${uuidv4()}`;\n }\n $tableWrapper.dataset.tableScrollInitialised = \"true\";\n }\n if ($tableWrapper.scrollWidth > $tableWrapper.clientWidth) {\n $tableWrapper.setAttribute(\"tabindex\", \"0\");\n $tableWrapper.setAttribute(\"role\", \"region\");\n $tableWrapper.setAttribute(\"aria-labelledby\", $caption?.id || \"\");\n $tableWrapper.classList.add(\"tna-table-wrapper--scroll\");\n } else {\n $tableWrapper.removeAttribute(\"tabindex\");\n $tableWrapper.removeAttribute(\"role\");\n $tableWrapper.removeAttribute(\"aria-labelledby\");\n $tableWrapper.classList.remove(\"tna-table-wrapper--scroll\");\n }\n};\n","const uuidv4 = () =>\n ([1e7] + -1e3 + -4e3 + -8e3 + -1e11).replace(/[018]/g, (c) =>\n (\n c ^\n (crypto.getRandomValues(new Uint8Array(1))[0] & (15 >> (c / 4)))\n ).toString(16),\n );\n\nexport default uuidv4;\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};"],"names":["root","factory","exports","module","define","amd","self","updateTimeElement","$el","datetime","getAttribute","prettyDatetime","dateStr","Error","isDateTime","test","isDate","date","Date","isNaN","dayString","toLocaleDateString","weekday","dateString","day","month","year","getHours","getMinutes","timeString","toLocaleTimeString","hour","minute","getSeconds","second","concat","iso8601ToPrettyDatetime","includes","textContent","setAttribute","e","initAll","options","$scope","scope","HTMLElement","document","$html","documentElement","classList","add","onFirstTouch","window","removeEventListener","addEventListener","key","remove","$tableWrappers","querySelectorAll","forEach","$tableWrapper","checkTableForScroll","contains","$accordion","Accordion","$breadcrumbs","querySelector","Breadcrumbs","$cookieBanner","CookieBanner","$dateInput","DateInputProgressive","$errorSummary","ErrorSummary","init","$fileInput","FileInputDroppable","$footer","Footer","$gallery","Gallery","$globalHeader","GlobalHeader","$header","Header","$picture","Picture","$skipLink","SkipLink","$tabModule","Tabs","$textInputPassword","TextInputPassword","$textAreaItemisedRows","enhancedHint","dataset","TextAreaItemisedRows","matchMedia","evt","matches","wasClosed","removeAttribute","getXPathTo","$element","id","body","tagName","ix","parentNode","siblings","childNodes","i","length","sibling","nodeType","getClosestElement","$startingElement","matchingElementSelectors","heading","$search","previousElementSibling","some","matchingElementSelector","innerText","parentElement","getClosestHeading","valueGetters","text","replace","html","innerHTML","value","index","event","instance","checked","expanded","toString","closestHeading","xpath","target","areaName","rootEventName","rootData","data_component_name","events","eventName","targetElement","on","data","state","data_link_type","data_link","trim","group","_$scope$closest","closest","_$scope$querySelector","_$scope$querySelector2","hasAttribute","getFileDetails","JSON","stringify","Array","from","files","map","file","name","size","type","_$scope$closest2","_$scope$closest3","data_section","media_type","media_duration","media_provider","media_title","media_progress","findIndex","$itemButton","media_action","_$scope$querySelector3","onCondition","data_position","image","imageSrc","imageAlt","componentAnalytics","_toConsumableArray","BreadcrumbAnalytics","CheckboxesAnalytics","DetailsAnalytics","FooterAnalytics","GalleryAnalytics","GlobalHeaderAnalytics","HeaderAnalytics","PictureAnalytics","RadiosAnalytics","SearchFieldAnalytics","SidebarAnalytics","TextInputAnalytics","TextareaAnalytics","EventTracker","_createClass","arguments","undefined","_classCallCheck","_defineProperty","Cookies","_options$prefix","prefix","_options$documentScop","documentScope","this","_this","navigator","doNotTrack","cookies","isPolicyAccepted","enableTracking","policies","Object","hasOwn","disableTracking","_this2","componentConfig","addListeners","scopeArray","_this3","rootDefaultData","_typeof","scopeIndex","eventConfig","attachListener","_this4","_eventConfig$rootData","_eventConfig$onCondit","computedValueParameters","computedValue","apply","recordEvent","generateEventName","_objectSpread","xPath","timeSincePageLoad","startTime","fromEntries","entries","_ref","_ref2","_slicedToArray","valueOrFunction","call","push","_this5","head","$metaEl","RegExp","_window$matchMedia","_window","_window$matchMedia2","_window2","_window$matchMedia3","_window3","_window$matchMedia4","_window4","_window$matchMedia5","_window5","_window$matchMedia6","_window6","userPreferences","GA4","_EventTracker2","_this6","TNAFrontendAnalyticsGA4","_possibleConstructorReturn","_options$id","_options$prefix2","_options$initAll","_options$addTrackingC","addTrackingCode","_callSuper","dataLayer","gTagId","ga4Disable","set","start","_inherits","_this7","ga4Data","_ref3","_ref4","pushToDataLayer","trackingEnabled","trackingCodeAdded","getTnaMetaTags","getUserPreferences","getTime","firstScript","getElementsByTagName","script","createElement","async","src","insertBefore","appendChild","_this8","keys","all","startsWith","ga4Id","ga4","helpers","$module","$items","allowMultipleItemsOpen","singleOpenItem","$item","initItem","initState","$toggleAllButton","syncToggleAllButton","isAllOpen","closeItem","openItem","$heading","$content","$headingButton","closeAllItemsExcept","$wrapper","$excludeItem","filter","every","closeAllLabel","openAllLabel","$breadcrumbsList","uniqueId","uuidv4","$expandable","style","display","$expandButton","focus","once","nextSibling","$acceptButton","$rejectButton","$prompt","$acceptedMessage","$rejectedMessage","$closeButtons","newInstance","cookiePreferencesSetKey","preferencesKey","policiesCorrectOnInit","exists","hasValue","accept","reject","complete","acceptAllPolicies","rejectAllPolicies","$closeButton","close","$yearWrapper","$yearInput","$monthWrapper","$monthInput","$dayWrapper","$dayInput","update","isValidYear","showMonth","isValidMonth","showDay","hideDay","hideMonth","yearValue","parseInt","monthRawValue","monthIntValue","toLowerCase","disableAutofocus","setFocus","handleClick","_options$onBeforeFocu","isFocusable","onBlur","_options$onBlur","onBeforeFocus","$target","focusTarget","preventDefault","url","split","pop","HTMLAnchorElement","inputId","getFragmentFromUrl","href","$input","getElementById","$legendOrLabel","getAssociatedLegendOrLabel","scrollIntoView","preventScroll","_document$querySelect","$fieldset","$legends","$candidateLegend","HTMLInputElement","legendTop","getBoundingClientRect","top","inputRect","height","innerHeight","$body","acceptMutltipleFiles","$droppableArea","$pseudoSelectFileText","$droppableButtons","$pseudoSelectFileButton","$pseudoDropFileButton","$droppableAreaAriaLabel","showDropTarget","hideDropTarget","onChange","dataTransfer","hasNoTypesInfo","types","isDraggingFiles","updateAriaLabel","isContainingFiles","items","_files$","themeCookieName","$themeSelector","$themeSelectorNotice","$themeSelectorEnableSettingsCookiesButton","$tnaTemplate","currentTheme","themeOnLoad","$themeSelectorButtons","$themeSelectorButton","$button","setTheme","selectThemeSelectorButton","acceptPolicy","showThemeSelector","settings","$currentThemeButton","find","get","theme","$selectedButton","$itemsContainer","$navigation","$navigationItems","$navigationButtons","$navigationButtonPrev","$navigationButtonNext","setup","currentId","showItem","_this$$navigationButt","_this$$navigationButt2","_this$$navigationButt3","_$item$querySelector","preventDefaultKeyAction","showPreviousItem","showNextItem","showFirstItem","showLastItem","stopPropagation","$liveRegion","prepend","getCurrentItemIndex","nextIndexToShow","$toggleButton","$topNavigation","$links","menuOpened","mql","syncState","handleToggleNavigation","addListener","code","show","hide","hidden","$imageWrapper","$transcriptToggle","$transcript","transcriptOpened","openLabel","informationLabelOpen","closeLabel","informationLabelClose","toggleTranscript","_$module$getAttribute","linkedElementId","$linkedElement","focusLinkedElement","linkedElementListener","removeFocusProperties","$tabList","$tabListItemLinks","$tabItems","currentTabIndex","$tabListItemLink","tabPanelID","$tabPanel","handleItemLinkClick","switchTabByIndex","handleItemLinkKeyDown","itemLinkClickEvent","targetItem","currentTarget","switchTabByID","itemLinkKeyDownEvent","previousTab","nextTab","newIndex","switchFocus","$tabItem","targetId","$textInputWrapper","$textInputPasswordToggle","updateTogglePasswordButtonText","togglePasswordType","$formFieldInput","$formFieldInputHint","$formFieldBody","values","$formFieldNewInput","attribute","updateList","appendValue","$formFieldNewInputAddButton","$formFieldNewInputAddButtonInner","$formFieldNewInputAddButtonInnerExtra","$formFieldLiveAria","$formFieldCounter","$valuesList","updateAriaText","content","normaliseValue","indexOf","newValue","isValueInList","join","removeValue","existingValue","$itemLabel","$removeItemButton","TNAFrontendCookies","TNAFrontendCookieEvents","CookieEventHandler","debug","log","_console","_len","args","_key","console","callback","oneTimeEvents","eventToTrigger","splice","tnaCookiePolicies","tnaFrontendDebug","defaultDomain","defaultPath","secure","policiesKey","defaultAge","_options$newInstance","_options$noInit","noInit","tnaCookiesDomain","location","hostname","tnaCookiesPath","tnaCookiesInsecure","tnaCookiesPoliciesKey","tnaCookiesDefaultAge","policy","existingPolicies","filteredExistingPolicies","savePolicies","usage","marketing","essential","_console2","_len2","_key2","deserialised","cookie","x","parts","parse","decodeURIComponent","_options$maxAge","maxAge","_options$sameSite","sameSite","_options$domain","domain","_options$path","path","_options$secure","_options$session","session","encodeURIComponent","trigger","setPolicy","accepted","allPolicies","k","isUninitialised","tableScrollInitialised","$caption","warn","scrollWidth","clientWidth","c","crypto","getRandomValues","Uint8Array","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","d","definition","o","defineProperty","enumerable","obj","prop","prototype","hasOwnProperty","r","Symbol","toStringTag"],"sourceRoot":""}
|