@nationalarchives/frontend 0.41.1 → 0.42.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.
Files changed (162) hide show
  1. package/config/.htmlvalidate.json +2 -1
  2. package/nationalarchives/all+analytics.js +1 -1
  3. package/nationalarchives/all+analytics.js.map +1 -1
  4. package/nationalarchives/all+analytics.mjs +5 -3
  5. package/nationalarchives/all.css +1 -1
  6. package/nationalarchives/all.css.map +1 -1
  7. package/nationalarchives/all.js +1 -1
  8. package/nationalarchives/all.js.map +1 -1
  9. package/nationalarchives/all.mjs +44 -30
  10. package/nationalarchives/analytics.js +1 -1
  11. package/nationalarchives/analytics.js.map +1 -1
  12. package/nationalarchives/analytics.mjs +39 -21
  13. package/nationalarchives/components/accordion/accordion.css +1 -1
  14. package/nationalarchives/components/accordion/accordion.css.map +1 -1
  15. package/nationalarchives/components/accordion/accordion.js +1 -1
  16. package/nationalarchives/components/accordion/accordion.js.map +1 -1
  17. package/nationalarchives/components/accordion/accordion.mjs +1 -1
  18. package/nationalarchives/components/back-link/back-link.css.map +1 -1
  19. package/nationalarchives/components/breadcrumbs/breadcrumbs.css.map +1 -1
  20. package/nationalarchives/components/breadcrumbs/breadcrumbs.js.map +1 -1
  21. package/nationalarchives/components/breadcrumbs/breadcrumbs.mjs +2 -1
  22. package/nationalarchives/components/button/button.css +1 -1
  23. package/nationalarchives/components/button/button.css.map +1 -1
  24. package/nationalarchives/components/button/button.scss +2 -1
  25. package/nationalarchives/components/card/card.css +1 -1
  26. package/nationalarchives/components/card/card.css.map +1 -1
  27. package/nationalarchives/components/card/card.scss +4 -4
  28. package/nationalarchives/components/checkboxes/checkboxes.css +1 -1
  29. package/nationalarchives/components/checkboxes/checkboxes.css.map +1 -1
  30. package/nationalarchives/components/checkboxes/checkboxes.scss +2 -2
  31. package/nationalarchives/components/checkboxes/fixtures.json +27 -0
  32. package/nationalarchives/components/checkboxes/macro-options.json +6 -0
  33. package/nationalarchives/components/checkboxes/template.njk +2 -2
  34. package/nationalarchives/components/code-block/code-block.css +1 -1
  35. package/nationalarchives/components/code-block/code-block.css.map +1 -1
  36. package/nationalarchives/components/code-block/code-block.js +1 -1
  37. package/nationalarchives/components/code-block/code-block.js.map +1 -1
  38. package/nationalarchives/components/code-block/code-block.mjs +2 -2
  39. package/nationalarchives/components/code-block/code-block.scss +4 -4
  40. package/nationalarchives/components/code-block/fixtures.json +6 -6
  41. package/nationalarchives/components/code-block/macro-options.json +1 -1
  42. package/nationalarchives/components/code-block/template.njk +12 -12
  43. package/nationalarchives/components/compound-filters/compound-filters.css +1 -1
  44. package/nationalarchives/components/compound-filters/compound-filters.css.map +1 -1
  45. package/nationalarchives/components/compound-filters/compound-filters.scss +2 -2
  46. package/nationalarchives/components/cookie-banner/cookie-banner.css.map +1 -1
  47. package/nationalarchives/components/cookie-banner/cookie-banner.js +1 -1
  48. package/nationalarchives/components/cookie-banner/cookie-banner.js.map +1 -1
  49. package/nationalarchives/components/date-input/date-input.css.map +1 -1
  50. package/nationalarchives/components/date-input/date-input.js +1 -1
  51. package/nationalarchives/components/date-input/date-input.js.map +1 -1
  52. package/nationalarchives/components/date-input/date-input.mjs +5 -2
  53. package/nationalarchives/components/details/analytics.js +1 -1
  54. package/nationalarchives/components/details/details.css.map +1 -1
  55. package/nationalarchives/components/details/macro-options.json +1 -1
  56. package/nationalarchives/components/error-summary/error-summary.css.map +1 -1
  57. package/nationalarchives/components/error-summary/error-summary.js +1 -1
  58. package/nationalarchives/components/error-summary/error-summary.js.map +1 -1
  59. package/nationalarchives/components/error-summary/error-summary.mjs +19 -15
  60. package/nationalarchives/components/fieldset/fieldset.css.map +1 -1
  61. package/nationalarchives/components/file-input/analytics.js +3 -3
  62. package/nationalarchives/components/file-input/file-input.css.map +1 -1
  63. package/nationalarchives/components/file-input/file-input.js +1 -1
  64. package/nationalarchives/components/file-input/file-input.js.map +1 -1
  65. package/nationalarchives/components/file-input/file-input.mjs +33 -17
  66. package/nationalarchives/components/files-list/files-list.css +1 -1
  67. package/nationalarchives/components/files-list/files-list.css.map +1 -1
  68. package/nationalarchives/components/files-list/files-list.scss +8 -8
  69. package/nationalarchives/components/footer/fixtures.json +2 -2
  70. package/nationalarchives/components/footer/footer.css.map +1 -1
  71. package/nationalarchives/components/footer/footer.js +1 -1
  72. package/nationalarchives/components/footer/footer.js.map +1 -1
  73. package/nationalarchives/components/footer/footer.mjs +2 -2
  74. package/nationalarchives/components/footer/template.njk +3 -3
  75. package/nationalarchives/components/gallery/analytics.js +1 -0
  76. package/nationalarchives/components/gallery/gallery.css.map +1 -1
  77. package/nationalarchives/components/gallery/gallery.js +1 -1
  78. package/nationalarchives/components/gallery/gallery.js.map +1 -1
  79. package/nationalarchives/components/gallery/gallery.mjs +16 -4
  80. package/nationalarchives/components/global-header/global-header.css.map +1 -1
  81. package/nationalarchives/components/global-header/global-header.js +1 -1
  82. package/nationalarchives/components/global-header/global-header.js.map +1 -1
  83. package/nationalarchives/components/global-header/global-header.mjs +11 -11
  84. package/nationalarchives/components/global-header/global-header.scss +1 -0
  85. package/nationalarchives/components/header/header.css.map +1 -1
  86. package/nationalarchives/components/header/header.js +1 -1
  87. package/nationalarchives/components/header/header.js.map +1 -1
  88. package/nationalarchives/components/header/header.mjs +11 -11
  89. package/nationalarchives/components/hero/hero.css.map +1 -1
  90. package/nationalarchives/components/index-grid/index-grid.css +1 -1
  91. package/nationalarchives/components/index-grid/index-grid.css.map +1 -1
  92. package/nationalarchives/components/index-grid/index-grid.scss +3 -3
  93. package/nationalarchives/components/pagination/pagination.css.map +1 -1
  94. package/nationalarchives/components/panel/panel.css.map +1 -1
  95. package/nationalarchives/components/phase-banner/phase-banner.css.map +1 -1
  96. package/nationalarchives/components/picture/picture.css.map +1 -1
  97. package/nationalarchives/components/picture/picture.js +1 -1
  98. package/nationalarchives/components/picture/picture.js.map +1 -1
  99. package/nationalarchives/components/picture/picture.mjs +4 -2
  100. package/nationalarchives/components/quick-filters/quick-filters.css.map +1 -1
  101. package/nationalarchives/components/radios/fixtures.json +27 -0
  102. package/nationalarchives/components/radios/macro-options.json +7 -1
  103. package/nationalarchives/components/radios/radios.css +1 -1
  104. package/nationalarchives/components/radios/radios.css.map +1 -1
  105. package/nationalarchives/components/radios/radios.scss +2 -2
  106. package/nationalarchives/components/radios/template.njk +2 -2
  107. package/nationalarchives/components/search-field/analytics.js +0 -1
  108. package/nationalarchives/components/search-field/search-field.css +1 -1
  109. package/nationalarchives/components/search-field/search-field.css.map +1 -1
  110. package/nationalarchives/components/search-field/search-field.scss +2 -2
  111. package/nationalarchives/components/secondary-navigation/secondary-navigation.css +1 -1
  112. package/nationalarchives/components/secondary-navigation/secondary-navigation.css.map +1 -1
  113. package/nationalarchives/components/secondary-navigation/secondary-navigation.scss +4 -3
  114. package/nationalarchives/components/sidebar/fixtures.json +69 -0
  115. package/nationalarchives/components/sidebar/macro-options.json +7 -0
  116. package/nationalarchives/components/sidebar/sidebar.css +1 -1
  117. package/nationalarchives/components/sidebar/sidebar.css.map +1 -1
  118. package/nationalarchives/components/sidebar/sidebar.js +2 -0
  119. package/nationalarchives/components/sidebar/sidebar.js.map +1 -0
  120. package/nationalarchives/components/sidebar/sidebar.mjs +97 -0
  121. package/nationalarchives/components/sidebar/sidebar.scss +2 -2
  122. package/nationalarchives/components/sidebar/template.njk +1 -1
  123. package/nationalarchives/components/skip-link/skip-link.css +1 -1
  124. package/nationalarchives/components/skip-link/skip-link.css.map +1 -1
  125. package/nationalarchives/components/tabs/tabs.css.map +1 -1
  126. package/nationalarchives/components/tabs/tabs.js.map +1 -1
  127. package/nationalarchives/components/tabs/tabs.mjs +11 -3
  128. package/nationalarchives/components/text-input/analytics.js +1 -1
  129. package/nationalarchives/components/text-input/fixtures.json +14 -2
  130. package/nationalarchives/components/text-input/template.njk +1 -1
  131. package/nationalarchives/components/textarea/analytics.js +0 -1
  132. package/nationalarchives/components/textarea/textarea.css +1 -1
  133. package/nationalarchives/components/textarea/textarea.css.map +1 -1
  134. package/nationalarchives/components/textarea/textarea.js +1 -1
  135. package/nationalarchives/components/textarea/textarea.js.map +1 -1
  136. package/nationalarchives/components/textarea/textarea.mjs +19 -13
  137. package/nationalarchives/components/textarea/textarea.scss +2 -2
  138. package/nationalarchives/components/warning/warning.css +1 -1
  139. package/nationalarchives/components/warning/warning.css.map +1 -1
  140. package/nationalarchives/components/warning/warning.scss +2 -2
  141. package/nationalarchives/error-page.css +1 -1
  142. package/nationalarchives/error-page.css.map +1 -1
  143. package/nationalarchives/lib/analytics-helpers.mjs +21 -19
  144. package/nationalarchives/lib/cookie-events.mjs +70 -0
  145. package/nationalarchives/lib/cookies.mjs +54 -92
  146. package/nationalarchives/lib/helpers.mjs +7 -13
  147. package/nationalarchives/lib/uuid.mjs +5 -3
  148. package/nationalarchives/prototype-kit.css +1 -1
  149. package/nationalarchives/prototype-kit.css.map +1 -1
  150. package/nationalarchives/templates/fixtures.json +1 -1
  151. package/nationalarchives/templates/layouts/email.njk +2 -2
  152. package/nationalarchives/templates/prototype-kit/plain-with-sidebar.njk +74 -0
  153. package/nationalarchives/templates/prototype-kit/plain.njk +1 -1
  154. package/nationalarchives/tools/_grid.scss +3 -0
  155. package/nationalarchives/tools/_typography.scss +1 -1
  156. package/nationalarchives/utilities/reset/_index.scss +4 -0
  157. package/nationalarchives/utilities/tables/_index.scss +6 -5
  158. package/nationalarchives/utilities/typography/_index.scss +1 -0
  159. package/package.json +18 -22
  160. package/config/.eslintrc.js +0 -25
  161. package/config/stylelint.config.js +0 -244
  162. package/nationalarchives/templates/prototype-kit/index-grid.njk +0 -146
@@ -1 +1 @@
1
- {"version":3,"file":"all+analytics.js","mappings":"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","sources":["webpack://TNAFrontend/webpack/universalModuleDefinition","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/code-block/code-block.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/helpers.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 ","import { Accordion } from \"./components/accordion/accordion.mjs\";\nimport { Breadcrumbs } from \"./components/breadcrumbs/breadcrumbs.mjs\";\nimport { CodeBlock } from \"./components/code-block/code-block.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 { updateTimeElement, checkTableForScroll } 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 $codeBlocks = $scope.querySelectorAll('[data-module=\"tna-code-block\"]');\n $codeBlocks.forEach(($codeBlock) => {\n new CodeBlock($codeBlock);\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 CodeBlock,\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/helpers.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>&hellip;\";\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","export class CodeBlock {\n constructor($module) {\n this.$module = $module;\n this.$code = this.$module.querySelector(\"pre code\");\n this.$copyButton = this.$module.querySelector(\".tna-code-block__copy\");\n\n if (\n !this.$module ||\n !this.$code ||\n !this.$copyButton ||\n !navigator.clipboard\n ) {\n return;\n }\n\n this.$copyButton.removeAttribute(\"hidden\");\n this.$module.classList.add(\"tna-code-block__copyable\");\n\n this.$copyButton.addEventListener(\"click\", async () => {\n try {\n await navigator.clipboard.writeText(this.$code.innerText);\n this.$copyButton.innerText = \"Code copied\";\n } catch (err) {\n console.error(\"Failed to copy: \", err);\n }\n });\n\n this.$copyButton.addEventListener(\"blur\", () => {\n this.$copyButton.innerText = \"Copy code\";\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 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\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","initAll","options","$scope","scope","HTMLElement","document","$html","documentElement","classList","add","onFirstTouch","window","removeEventListener","addEventListener","e","key","remove","$tableWrappers","querySelectorAll","forEach","$tableWrapper","checkTableForScroll","contains","updateTimeElement","$accordion","Accordion","$breadcrumbs","querySelector","Breadcrumbs","$codeBlock","CodeBlock","$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","setAttribute","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","$el","replace","html","innerHTML","value","index","event","instance","checked","expanded","getAttribute","toString","closestHeading","xpath","target","breadcrumbs_analytics","areaName","rootEventName","rootData","data_component_name","events","eventName","targetElement","on","data","state","data_link_type","data_link","checkboxes_analytics","trim","group","_$scope$closest","closest","details_analytics","_$scope$querySelector","_$scope$querySelector2","hasAttribute","error_summary_analytics","getFileDetails","JSON","stringify","Array","from","files","map","file","name","size","type","file_input_analytics","_$scope$closest2","_$scope$closest3","footer_analytics","data_section","gallery_analytics","media_type","media_duration","media_provider","media_title","concat","media_progress","findIndex","$itemButton","media_action","_$scope$querySelector3","onCondition","includes","global_header_analytics","data_position","header_analytics","picture_analytics","image","imageSrc","imageAlt","radios_analytics","search_field_analytics","sidebar_analytics","text_input_analytics","textarea_analytics","componentAnalytics","_toConsumableArray","BreadcrumbAnalytics","CheckboxesAnalytics","DetailsAnalytics","FooterAnalytics","GalleryAnalytics","GlobalHeaderAnalytics","HeaderAnalytics","PictureAnalytics","RadiosAnalytics","SearchFieldAnalytics","SidebarAnalytics","TextInputAnalytics","TextareaAnalytics","EventTracker","_createClass","arguments","undefined","_classCallCheck","this","_defineProperty","Cookies","Date","_options$prefix","prefix","_options$documentScop","documentScope","_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","Error","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","t","r","Symbol","n","iterator","o","toStringTag","c","prototype","Generator","u","create","_regeneratorDefine2","f","p","y","G","v","a","d","bind","l","TypeError","done","GeneratorFunction","GeneratorFunctionPrototype","getPrototypeOf","setPrototypeOf","__proto__","displayName","_regenerator","w","m","defineProperty","_invoke","enumerable","configurable","writable","asyncGeneratorStep","Promise","resolve","then","_asyncToGenerator","_next","_throw","_defineProperties","_toPropertyKey","toPrimitive","String","_toPrimitive","$code","$copyButton","clipboard","_callee","_t","_context","writeText","console","error","$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","isNaN","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","textContent","$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","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","datetime","prettyDatetime","dateStr","isDateTime","test","isDate","date","dayString","toLocaleDateString","weekday","dateString","day","month","year","getHours","getMinutes","timeString","toLocaleTimeString","hour","minute","getSeconds","second","iso8601ToPrettyDatetime","isUninitialised","tableScrollInitialised","$caption","warn","scrollWidth","clientWidth","__WEBPACK_DEFAULT_EXPORT__","crypto","getRandomValues","Uint8Array","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","definition","obj","prop","hasOwnProperty"],"sourceRoot":""}
1
+ {"version":3,"file":"all+analytics.js","mappings":"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","sources":["webpack://TNAFrontend/webpack/universalModuleDefinition","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/code-block/code-block.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/sidebar/sidebar.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/cookie-events.mjs","webpack://TNAFrontend/./src/nationalarchives/lib/cookies.mjs","webpack://TNAFrontend/./src/nationalarchives/lib/helpers.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 ","/* eslint-disable no-new */\nimport { Accordion } from \"./components/accordion/accordion.mjs\";\nimport { Breadcrumbs } from \"./components/breadcrumbs/breadcrumbs.mjs\";\nimport { CodeBlock } from \"./components/code-block/code-block.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 { Sidebar } from \"./components/sidebar/sidebar.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, updateTimeElement } from \"./lib/helpers.mjs\";\n\nconst initAll = (options = {}) => {\n const { scope } = options;\n let $scope = document;\n if (scope) {\n if (scope instanceof HTMLElement) {\n $scope = scope;\n } else {\n throw new Error(\"Scope must be an HTMLElement\");\n }\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 = (event) => {\n if (event.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 // 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 $codeBlocks = $scope.querySelectorAll('[data-module=\"tna-code-block\"]');\n $codeBlocks.forEach(($codeBlock) => {\n new CodeBlock($codeBlock);\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 $sidebar = $scope.querySelector('[data-module=\"tna-sidebar-sections\"]');\n if ($sidebar) {\n const { scrollTopThreshold, disableHighlightSize } = $sidebar.dataset;\n new Sidebar($sidebar, { scrollTopThreshold, disableHighlightSize });\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 $textAreaItemisedRows = $scope.querySelectorAll(\n '[data-module=\"tna-textarea-itemised-rows\"]',\n );\n $textAreaItemisedRows.forEach(($textAreaWithItemisedRows) => {\n const { enhancedHint } = $textAreaWithItemisedRows.dataset;\n new TextAreaItemisedRows($textAreaWithItemisedRows, { enhancedHint });\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 window.matchMedia(\"print\").addEventListener(\"change\", (evt) => {\n if (evt.matches) {\n $scope\n .querySelectorAll(\".tna-details__details:not([open])\")\n .forEach(($element) => {\n $element.setAttribute(\"open\", \"\");\n $element.dataset.wasClosed = \"\";\n });\n $scope\n .querySelectorAll(\n \".tna-accordion__content[hidden], .tna-picture__transcript[hidden]\",\n )\n .forEach(($element) => {\n $element.removeAttribute(\"hidden\");\n $element.dataset.wasClosed = \"\";\n });\n } else {\n $scope\n .querySelectorAll(\".tna-details__details[data-was-closed]\")\n .forEach(($element) => {\n $element.removeAttribute(\"open\");\n delete $element.dataset.wasClosed;\n });\n $scope\n .querySelectorAll(\n \".tna-accordion__content[data-was-closed], .tna-picture__transcript[data-was-closed]\",\n )\n .forEach(($element) => {\n $element.setAttribute(\"hidden\", \"\");\n $element.dataset.wasClosed = \"\";\n });\n }\n });\n};\n\nexport {\n initAll,\n Cookies,\n Accordion,\n Breadcrumbs,\n CodeBlock,\n CookieBanner,\n DateInputProgressive,\n ErrorSummary,\n FileInputDroppable,\n Footer,\n Gallery,\n GlobalHeader,\n Header,\n Picture,\n Sidebar,\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 /* eslint-disable-next-line no-magic-numbers */\n for (let index = 0; index < siblings.length; index += 1) {\n const sibling = siblings[index];\n if (sibling === $element) {\n return `${getXPathTo($element.parentNode)}/${$element.tagName}[${\n /* eslint-disable-next-line no-magic-numbers */\n ix + 1\n }]`;\n }\n /* eslint-disable-next-line no-magic-numbers */\n if (sibling.nodeType === 1 && sibling.tagName === $element.tagName) {\n /* eslint-disable-next-line no-magic-numbers */\n ix += 1;\n }\n }\n return `${getXPathTo($element.parentNode)}/${$element.tagName}`;\n }\n return $element.tagName;\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 /* eslint-disable-next-line no-loop-func */\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};\nconst getClosestHeading = ($element) =>\n getClosestElement($element, [\"h1\", \"h2\", \"h3\", \"h4\", \"h5\", \"h6\"]);\nconst valueGetters = {\n text: ($el) => $el.innerText.replace(/\\n/gu, \" \"),\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 /* eslint-disable-next-line no-ternary */\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 /* eslint-disable-next-line no-ternary */\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\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\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\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\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 /* eslint-disable-next-line no-magic-numbers */\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 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\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 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","/* eslint-disable max-classes-per-file, no-ternary, no-nested-ternary */\n\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\";\nimport {\n getClosestElement,\n getClosestHeading,\n getXPathTo,\n valueGetters,\n} from \"./lib/analytics-helpers.mjs\";\nimport Cookies from \"./lib/cookies.mjs\";\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 /* eslint-disable-next-line no-magic-numbers */\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 /** @protected */\n /* eslint-disable-next-line class-methods-use-this, no-empty-function */\n enableTracking() {}\n\n /** @protected */\n /* eslint-disable-next-line class-methods-use-this, no-empty-function */\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 /* eslint-disable-next-line no-magic-numbers */\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 /* eslint-disable-next-line no-magic-numbers */\n index + 1,\n /* eslint-disable-next-line no-magic-numbers */\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 /* eslint-disable-next-line no-magic-numbers */\n 1,\n /* eslint-disable-next-line no-magic-numbers */\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,\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:`, \"u\"), \"\"),\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 let prefersContrast = \"no-preference\";\n if (window.matchMedia?.(\"(prefers-contrast: more)\").matches) {\n prefersContrast = \"more\";\n } else if (window.matchMedia?.(\"(prefers-contrast: less)\").matches) {\n prefersContrast = \"less\";\n }\n userPreferences[`${this.prefix}.pref.prefers-contrast`] = prefersContrast;\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 /* eslint-disable-next-line no-constructor-return */\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 ||= [];\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 /** @protected */\n /* eslint-disable-next-line class-methods-use-this */\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(...args) {\n this.pushToDataLayer(args);\n }\n\n /** @protected */\n /* eslint-disable-next-line class-methods-use-this */\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\");\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 /* eslint-disable-next-line no-new */\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/helpers.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 /* eslint-disable-next-line no-magic-numbers */\n this.$breadcrumbs.length > 2 &&\n !this.$module.classList.contains(\"tna-breadcrumbs--no-collapse\")\n ) {\n const uniqueId = `tna-breadcrumbs-${uuidv4()}`;\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>&hellip;\";\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 /* eslint-disable-next-line no-magic-numbers */\n this.$breadcrumbs[this.$breadcrumbs.length - 2].nextSibling,\n );\n\n this.$module.classList.add(\"tna-breadcrumbs--collapsed\");\n }\n }\n }\n}\n","export class CodeBlock {\n constructor($module) {\n this.$module = $module;\n this.$code = this.$module.querySelector(\"pre code\");\n this.$copyButton = this.$module.querySelector(\".tna-code-block__copy\");\n\n if (\n !this.$module ||\n !this.$code ||\n !this.$copyButton ||\n !navigator.clipboard\n ) {\n return;\n }\n\n this.$copyButton.removeAttribute(\"hidden\");\n this.$module.classList.add(\"tna-code-block__copyable\");\n\n this.$copyButton.addEventListener(\"click\", async () => {\n try {\n await navigator.clipboard.writeText(this.$code.innerText);\n this.$copyButton.innerText = \"Code copied\";\n } catch {\n // Continue regardless of error\n }\n });\n\n this.$copyButton.addEventListener(\"blur\", () => {\n this.$copyButton.innerText = \"Copy code\";\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(), 10);\n /* eslint-disable-next-line no-magic-numbers */\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, 10);\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 /* eslint-disable-next-line no-magic-numbers */\n monthIntValue > 0 &&\n /* eslint-disable-next-line no-magic-numbers */\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 /* eslint-disable-next-line class-methods-use-this */\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 blur\n */\n function onBlur() {\n options.onBlur?.call($element);\n\n if (!isFocusable) {\n $element.removeAttribute(\"tabindex\");\n }\n }\n\n /**\n * Handle element focus\n */\n function onFocus() {\n $element.addEventListener(\"blur\", onBlur, { once: true });\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 /* eslint-disable-next-line class-methods-use-this */\n getFragmentFromUrl(url) {\n if (!url.includes(\"#\")) {\n return null;\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 /* eslint-disable-next-line class-methods-use-this */\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;\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 /* eslint-disable no-magic-numbers */\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\n let fileText = \"file\";\n if (this.acceptMutltipleFiles) {\n fileText += \"s\";\n }\n\n this.$pseudoSelectFileText.textContent = `No ${fileText} 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 ${fileText}`;\n $droppableButtons.appendChild($pseudoSelectFileButton);\n\n const $pseudoDropFileButton = document.createElement(\"span\");\n $pseudoDropFileButton.textContent = `or drop ${fileText}`;\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\", (event) =>\n this.showDropTarget(event),\n );\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 /* eslint-disable-next-line class-methods-use-this */\n isContainingFiles(dataTransfer) {\n const hasNoTypesInfo = !dataTransfer.types.length;\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 let classToAdd = \"tna-file-input__droppable--over\";\n if (event.dataTransfer.items.length) {\n classToAdd = \"tna-file-input__droppable--over-multiple\";\n }\n this.$droppableArea.classList.add(classToAdd);\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;\n if (this.acceptMutltipleFiles) {\n if (files.length) {\n let fileText = \"file\";\n /* eslint-disable-next-line no-magic-numbers */\n if (files.length > 1) {\n fileText += \"s\";\n }\n const textContent = `${files.length} ${fileText} selected`;\n this.$pseudoSelectFileText.textContent = textContent;\n } else {\n this.$pseudoSelectFileText.textContent = `No files selected`;\n }\n } else {\n this.$pseudoSelectFileText.textContent =\n /* eslint-disable-next-line no-magic-numbers */\n files[0]?.name || `No file selected`;\n }\n if (files.length) {\n this.$droppableArea.classList.remove(\"tna-file-input__droppable--empty\");\n } else {\n this.$droppableArea.classList.add(\"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\", (event) => {\n const $button = event.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 /* eslint-disable-next-line no-magic-numbers */\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 /* eslint-disable-next-line no-magic-numbers */\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\", (event) => {\n let preventDefaultKeyAction = false;\n switch (event.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 default:\n break;\n }\n if (preventDefaultKeyAction) {\n event.stopPropagation();\n event.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 /* eslint-disable-next-line no-magic-numbers */\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 /* eslint-disable-next-line no-magic-numbers */\n let nextIndexToShow = this.getCurrentItemIndex() - 1;\n /* eslint-disable-next-line no-magic-numbers */\n if (nextIndexToShow < 0) {\n /* eslint-disable-next-line no-magic-numbers */\n nextIndexToShow = this.$items.length - 1;\n }\n this.showItem(this.$items[nextIndexToShow].id);\n }\n\n showNextItem() {\n /* eslint-disable-next-line no-magic-numbers */\n let nextIndexToShow = this.getCurrentItemIndex() + 1;\n if (nextIndexToShow >= this.$items.length) {\n /* eslint-disable-next-line no-magic-numbers */\n nextIndexToShow = 0;\n }\n this.showItem(this.$items[nextIndexToShow].id);\n }\n\n showFirstItem() {\n /* eslint-disable-next-line no-magic-numbers */\n this.showItem(this.$items[0].id);\n }\n\n showLastItem() {\n /* eslint-disable-next-line no-magic-numbers */\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\", (event) => {\n if (event.code === \"Escape\" && this.mql.matches && this.menuOpened) {\n this.menuOpened = false;\n this.syncState();\n this.$toggleButton.focus();\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 /* eslint-disable-next-line no-magic-numbers */\n for (let index = 0; index < this.$links.length; index += 1) {\n this.$links[index].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 /* eslint-disable-next-line no-magic-numbers */\n for (let index = 0; index < this.$links.length; index += 1) {\n this.$links[index].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\", (event) => {\n if (event.code === \"Escape\" && this.menuOpened && this.mql.matches) {\n this.menuOpened = false;\n this.syncState();\n this.$toggleButton.focus();\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 /* eslint-disable-next-line no-magic-numbers */\n for (let index = 0; index < this.$links.length; index += 1) {\n this.$links[index].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 /* eslint-disable-next-line no-magic-numbers */\n for (let index = 0; index < this.$links.length; index += 1) {\n this.$links[index].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\", (event) => {\n switch (event.key) {\n case \"Escape\":\n this.toggleTranscript();\n this.$transcriptToggle.focus();\n break;\n default:\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 Sidebar {\n constructor($module, options = {}) {\n this.$module = $module;\n this.items =\n $module &&\n Array.from($module.querySelectorAll(\".tna-sidebar__item\"))\n .map(($item) => {\n const id = $item\n .querySelector(\".tna-sidebar__link[href^='#']\")\n .getAttribute(\"href\")\n /* eslint-disable-next-line no-magic-numbers */\n .substring(1);\n const target = document.getElementById(id);\n return {\n $item,\n id,\n target,\n };\n })\n .filter((item) => item.target);\n\n if (!this.$module || !this.items) {\n return;\n }\n\n this.breakpoints = {\n tiny:\n getComputedStyle(document.documentElement).getPropertyValue(\n \"--media-breakpoint-tiny\",\n ) || \"480px\",\n small:\n getComputedStyle(document.documentElement).getPropertyValue(\n \"--media-breakpoint-small\",\n ) || \"768px\",\n medium:\n getComputedStyle(document.documentElement).getPropertyValue(\n \"--media-breakpoint-medium\",\n ) || \"1024px\",\n };\n\n /* eslint-disable-next-line no-magic-numbers */\n const { scrollTopThreshold = 0, disableHighlightSize = \"small\" } = options;\n\n if (disableHighlightSize) {\n if (!Object.keys(this.breakpoints).includes(disableHighlightSize)) {\n throw new Error(\n `Invalid value for disableHighlightSize: ${disableHighlightSize}. Expected one of: ${Object.keys(this.breakpoints).join(\", \")}`,\n );\n }\n this.hideOnDevice = window.matchMedia(\n `(max-width: ${this.breakpoints[disableHighlightSize]})`,\n );\n } else {\n this.hideOnDevice = null;\n }\n\n this.scrollTopThreshold = scrollTopThreshold;\n\n this.init();\n }\n\n init() {\n this.currentItem = null;\n\n window.addEventListener(\"scroll\", () => this.highlightCurrentSection());\n window.addEventListener(\"resize\", () => this.highlightCurrentSection());\n this.highlightCurrentSection();\n }\n\n highlightCurrentSection() {\n if (this.hideOnDevice && this.hideOnDevice.matches) {\n this.items.forEach((item) => {\n item.$item.classList.remove(\"tna-sidebar__item--current\");\n });\n this.currentItem = null;\n return;\n }\n\n const $topItem = this.items.findLast(\n (item) =>\n Math.floor(item.target.getBoundingClientRect().top) <=\n this.scrollTopThreshold,\n );\n\n if ($topItem !== this.currentItem) {\n this.items.forEach((item) => {\n if ($topItem && item === $topItem) {\n this.currentItem = item;\n this.currentItem.$item.classList.add(\"tna-sidebar__item--current\");\n } else {\n item.$item.classList.remove(\"tna-sidebar__item--current\");\n }\n });\n }\n this.currentItem = $topItem || null;\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 (event) => this.handleItemLinkClick(event),\n true,\n );\n });\n this.switchTabByIndex(this.currentTabIndex);\n this.$module.addEventListener(\"keydown\", (event) =>\n this.handleItemLinkKeyDown(event),\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 /* eslint-disable-next-line no-magic-numbers */\n this.switchTabByIndex(0, true);\n preventDefaultKeyAction = true;\n break;\n case \"End\":\n /* eslint-disable-next-line no-magic-numbers */\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 /* eslint-disable-next-line no-magic-numbers */\n if (this.currentTabIndex < this.$tabListItemLinks.length - 1) {\n /* eslint-disable-next-line no-magic-numbers */\n this.switchTabByIndex(this.currentTabIndex + 1, true);\n } else {\n /* eslint-disable-next-line no-magic-numbers */\n this.switchTabByIndex(0, true);\n }\n }\n\n previousTab() {\n /* eslint-disable-next-line no-magic-numbers */\n if (this.currentTabIndex >= 1) {\n /* eslint-disable-next-line no-magic-numbers */\n this.switchTabByIndex(this.currentTabIndex - 1, true);\n } else {\n /* eslint-disable-next-line no-magic-numbers */\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\", (event) => {\n if (event.key === \"Enter\") {\n this.appendValue(event.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 /* eslint-disable-next-line class-methods-use-this */\n normaliseValue(value) {\n return value.replace(/\\s{2,}/u, \" \").trim();\n }\n\n isValueInList(value) {\n return this.values\n .map((eachValue) => this.normaliseValue(eachValue).toLowerCase())\n .includes(value.toLowerCase().trim());\n }\n\n appendValue(value) {\n const newValue = this.normaliseValue(value);\n if (newValue) {\n if (this.isValueInList(newValue)) {\n this.updateAriaText(`'${newValue}' already added`);\n } else {\n this.values.push(newValue);\n this.$formFieldInput.value = this.values.join(\"\\n\");\n this.updateList();\n this.updateAriaText(`'${newValue}' 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\n let innerTextItemValue = \"item\";\n /* eslint-disable-next-line no-magic-numbers */\n if (this.values.length !== 1) {\n innerTextItemValue += \"s\";\n }\n const innerTextValue = `${this.values.length} ${innerTextItemValue} added`;\n this.$formFieldCounter.innerText = innerTextValue;\n }\n}\n","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 /* eslint-disable-next-line no-constructor-return */\n return window.TNAFrontendCookieEvents;\n }\n window.TNAFrontendCookieEvents = this;\n }\n\n log(...args) {\n if (this.debug) {\n /* eslint-disable-next-line no-console */\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\n for (\n /* eslint-disable-next-line no-magic-numbers */\n let eventIndex = this.oneTimeEvents[event].length - 1;\n /* eslint-disable-next-line no-magic-numbers */\n eventIndex >= 0;\n /* eslint-disable-next-line no-magic-numbers */\n eventIndex -= 1\n ) {\n const eventToTrigger = this.oneTimeEvents[event][eventIndex];\n eventToTrigger.call(this, data);\n /* eslint-disable-next-line no-magic-numbers */\n this.oneTimeEvents[event].splice(eventIndex, 1);\n }\n }\n }\n}\n","/* eslint-disable max-lines */\n/* eslint-disable no-console */\n\nimport { CookieEventHandler } from \"./cookie-events.mjs\";\n\nwindow.TNAFrontendCookies ||= null;\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 /* eslint-disable-next-line no-constructor-return */\n return window.TNAFrontendCookies;\n }\n if (defaultDomain) {\n this.defaultDomain = defaultDomain;\n } else {\n this.defaultDomain =\n document.documentElement.dataset.tnaCookiesDomain ||\n window.location.hostname;\n }\n if (defaultPath) {\n this.defaultPath = defaultPath;\n } else {\n this.defaultPath = document.documentElement.dataset.tnaCookiesPath || \"/\";\n }\n if (secure) {\n this.secure = secure;\n } else {\n this.secure =\n document.documentElement.dataset.tnaCookiesInsecure !== \"true\";\n }\n if (policiesKey) {\n this.policiesKey = policiesKey;\n } else {\n this.policiesKey =\n document.documentElement.dataset.tnaCookiesPoliciesKey ||\n \"cookies_policy\";\n }\n if (defaultAge) {\n this.defaultAge = defaultAge;\n } else {\n /* eslint-disable-next-line no-magic-numbers */\n const secondsInAYear = 365 * 24 * 60 * 60;\n this.defaultAge =\n parseInt(document.documentElement.dataset.tnaCookiesDefaultAge, 10) ||\n secondsInAYear;\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) {\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 /* eslint-disable-next-line class-methods-use-this */\n get all() {\n const deserialised = {};\n document.cookie\n .split(\"; \")\n .filter((cookie) => cookie.trim() !== \"\")\n .forEach((cookie) => {\n const parts = cookie.trim().split(\"=\");\n const [key, value] = parts;\n if (key) {\n deserialised[key] = decodeURIComponent(value || \"\");\n }\n });\n return deserialised;\n }\n\n /** @protected */\n get policies() {\n try {\n return JSON.parse(this.get(this.policiesKey) || \"{}\");\n // eslint-disable-next-line no-unused-vars\n } catch (error) {\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|null}\n */\n get(key) {\n if (this.exists(key)) {\n return decodeURIComponent(this.all[key]);\n }\n return 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 let secureString = \"\";\n if (secure) {\n secureString = \"; secure\";\n }\n let sessionString = \"\";\n if (!session) {\n sessionString = `; max-age=${maxAge}`;\n }\n const cookie = `${encodeURIComponent(key)}=${encodeURIComponent(value)}; domain=${domain}; samesite=${sameSite}; path=${path}${sessionString}${secureString}`;\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 || this.defaultDomain };\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((key) => [key.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((key) => [key.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 if (Object.hasOwn(this.policies, policy)) {\n return this.policies[policy] === true;\n }\n return 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 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}))?$/u.test(\n datetime,\n );\n const isDate = /^\\d{4}(?:-\\d{2}){2}$/u.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 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 }\n return `${dayString} ${dateString}`;\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 // eslint-disable-next-line no-unused-vars\n } catch (error) {\n // Do nothing if the datetime is invalid or not provided\n }\n};\n\nexport const checkTableForScroll = ($tableWrapper) => {\n const $caption = $tableWrapper.querySelector(\"caption\");\n if (!($tableWrapper.dataset.tableScrollInitialised === \"true\")) {\n if ($caption && !$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","/* eslint-disable no-magic-numbers */\n/* eslint-disable no-bitwise */\nconst uuidv4 = () =>\n ([1e7] + -1e3 + -4e3 + -8e3 + -1e11).replace(/[018]/gu, (char) =>\n (\n char ^\n (crypto.getRandomValues(new Uint8Array(1))[0] & (15 >> (char / 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","initAll","scope","arguments","length","undefined","$scope","document","HTMLElement","Error","$html","documentElement","classList","add","onFirstTouch","window","removeEventListener","addEventListener","event","key","remove","$tableWrappers","querySelectorAll","forEach","$tableWrapper","checkTableForScroll","contains","updateTimeElement","$accordion","Accordion","$breadcrumbs","querySelector","Breadcrumbs","$codeBlock","CodeBlock","$cookieBanner","CookieBanner","$dateInput","DateInputProgressive","$errorSummary","ErrorSummary","init","$fileInput","FileInputDroppable","$footer","Footer","$gallery","Gallery","$globalHeader","GlobalHeader","$header","Header","$picture","Picture","$sidebar","_$sidebar$dataset","dataset","scrollTopThreshold","disableHighlightSize","Sidebar","$skipLink","SkipLink","$tabModule","Tabs","$textAreaWithItemisedRows","enhancedHint","TextAreaItemisedRows","$textInputPassword","TextInputPassword","matchMedia","evt","matches","$element","setAttribute","wasClosed","removeAttribute","getXPathTo","id","concat","body","tagName","ix","parentNode","siblings","childNodes","index","sibling","nodeType","getClosestElement","$startingElement","matchingElementSelectors","heading","$search","previousElementSibling","some","matchingElementSelector","innerText","parentElement","getClosestHeading","valueGetters","text","$el","replace","html","innerHTML","value","instance","checked","expanded","getAttribute","toString","closestHeading","xpath","target","analytics","areaName","rootEventName","rootData","data_component_name","events","eventName","targetElement","on","data","state","data_link_type","data_link","data_position","breadcrumbs_analytics","checkboxes_analytics","trim","group","_$scope$closest","closest","details_analytics","_$scope$querySelector","_$scope$querySelector2","hasAttribute","error_summary_analytics","getFileDetails","JSON","stringify","Array","from","files","map","file","name","size","type","file_input_analytics","_$scope$closest2","_$scope$closest3","footer_analytics","data_section","gallery_analytics","media_type","media_duration","media_provider","media_title","media_progress","findIndex","$itemButton","media_action","_$scope$querySelector3","onCondition","includes","global_header_analytics","header_analytics","picture_analytics","image","imageSrc","imageAlt","radios_analytics","search_field_analytics","sidebar_analytics","text_input_analytics","textarea_analytics","componentAnalytics","_toConsumableArray","AccordionAnalytics","BreadcrumbAnalytics","CheckboxesAnalytics","DetailsAnalytics","FooterAnalytics","GalleryAnalytics","GlobalHeaderAnalytics","HeaderAnalytics","PictureAnalytics","RadiosAnalytics","SearchFieldAnalytics","SidebarAnalytics","TextInputAnalytics","TextareaAnalytics","EventTracker","_createClass","options","_classCallCheck","this","_defineProperty","Cookies","Date","_options$prefix","prefix","_options$documentScop","documentScope","_this","navigator","doNotTrack","cookies","isPolicyAccepted","enableTracking","policies","Object","hasOwn","usage","disableTracking","_this2","componentConfig","addListeners","_this3","rootDefaultData","scopeArray","_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","prefersContrast","GA4","_EventTracker2","_window7","_this6","TNAFrontendAnalyticsGA4","_possibleConstructorReturn","_options$id","_options$prefix2","_options$initAll","_options$addTrackingC","addTrackingCode","_callSuper","dataLayer","gTagId","ga4Disable","set","start","_inherits","_this7","ga4Data","_ref3","_ref4","pushToDataLayer","_len","args","_key","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","isopen","closeAllItemsExcept","$wrapper","$excludeItem","filter","every","closeAllLabel","openAllLabel","$breadcrumbsList","uniqueId","uuidv4","$expandable","style","display","$expandButton","focus","once","nextSibling","e","t","r","Symbol","n","iterator","o","toStringTag","i","c","prototype","Generator","u","create","_regeneratorDefine2","f","p","y","G","v","a","d","bind","l","TypeError","done","GeneratorFunction","GeneratorFunctionPrototype","getPrototypeOf","setPrototypeOf","__proto__","displayName","_regenerator","w","m","defineProperty","_invoke","enumerable","configurable","writable","asyncGeneratorStep","Promise","resolve","then","_asyncToGenerator","_next","_throw","_defineProperties","_toPropertyKey","toPrimitive","String","_toPrimitive","$code","$copyButton","clipboard","_callee","_context","writeText","$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","isNaN","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","fileText","textContent","$droppableButtons","$pseudoSelectFileButton","$pseudoDropFileButton","$droppableAreaAriaLabel","showDropTarget","hideDropTarget","onChange","dataTransfer","hasNoTypesInfo","types","isDraggingFiles","updateAriaLabel","isContainingFiles","classToAdd","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","substring","item","breakpoints","tiny","getComputedStyle","getPropertyValue","small","medium","_options$scrollTopThr","_options$disableHighl","join","hideOnDevice","currentItem","highlightCurrentSection","$topItem","findLast","Math","floor","_$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","eachValue","normaliseValue","newValue","isValueInList","removeValue","existingValue","$itemLabel","$removeItemButton","innerTextItemValue","innerTextValue","TNAFrontendCookieEvents","CookieEventHandler","debug","log","_console","console","callback","oneTimeEvents","eventToTrigger","eventIndex","splice","TNAFrontendCookies","tnaCookiePolicies","tnaFrontendDebug","defaultDomain","defaultPath","secure","policiesKey","defaultAge","_options$newInstance","_options$noInit","noInit","tnaCookiesDomain","location","hostname","tnaCookiesPath","tnaCookiesInsecure","tnaCookiesPoliciesKey","tnaCookiesDefaultAge","policy","existingPolicies","filteredExistingPolicies","savePolicies","marketing","essential","deserialised","cookie","_parts","decodeURIComponent","parse","error","_options$maxAge","maxAge","_options$sameSite","sameSite","_options$domain","domain","_options$path","path","_options$secure","_options$session","session","secureString","sessionString","encodeURIComponent","trigger","setPolicy","accepted","allPolicies","datetime","prettyDatetime","dateStr","isDateTime","test","isDate","date","dayString","toLocaleDateString","weekday","dateString","day","month","year","getHours","getMinutes","timeString","toLocaleTimeString","hour","minute","getSeconds","second","iso8601ToPrettyDatetime","$caption","tableScrollInitialised","scrollWidth","clientWidth","__WEBPACK_DEFAULT_EXPORT__","char","crypto","getRandomValues","Uint8Array","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","definition","obj","prop","hasOwnProperty"],"sourceRoot":""}