@nationalarchives/frontend 0.26.2 → 0.27.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 (121) hide show
  1. package/nationalarchives/all+analytics.js +1 -1
  2. package/nationalarchives/all+analytics.js.map +1 -1
  3. package/nationalarchives/all.css +5 -8
  4. package/nationalarchives/all.css.map +1 -1
  5. package/nationalarchives/all.js +1 -1
  6. package/nationalarchives/all.js.map +1 -1
  7. package/nationalarchives/all.scss +4 -7
  8. package/nationalarchives/analytics.js +1 -1
  9. package/nationalarchives/analytics.js.map +1 -1
  10. package/nationalarchives/components/accordion/accordion.css +1 -1
  11. package/nationalarchives/components/accordion/accordion.css.map +1 -1
  12. package/nationalarchives/components/accordion/accordion.scss +1 -8
  13. package/nationalarchives/components/breadcrumbs/breadcrumbs.css +1 -1
  14. package/nationalarchives/components/breadcrumbs/breadcrumbs.css.map +1 -1
  15. package/nationalarchives/components/breadcrumbs/breadcrumbs.scss +0 -5
  16. package/nationalarchives/components/button/button.css +1 -1
  17. package/nationalarchives/components/button/button.css.map +1 -1
  18. package/nationalarchives/components/button/button.scss +21 -22
  19. package/nationalarchives/components/button/fixtures.json +11 -0
  20. package/nationalarchives/components/button/template.njk +2 -4
  21. package/nationalarchives/components/card/card.css +1 -1
  22. package/nationalarchives/components/card/card.css.map +1 -1
  23. package/nationalarchives/components/card/card.scss +58 -36
  24. package/nationalarchives/components/checkboxes/checkboxes.css +1 -1
  25. package/nationalarchives/components/checkboxes/checkboxes.css.map +1 -1
  26. package/nationalarchives/components/checkboxes/checkboxes.scss +0 -2
  27. package/nationalarchives/components/checkboxes/fixtures.json +14 -0
  28. package/nationalarchives/components/checkboxes/macro-options.json +2 -2
  29. package/nationalarchives/components/compound-filters/compound-filters.css +1 -1
  30. package/nationalarchives/components/compound-filters/compound-filters.css.map +1 -1
  31. package/nationalarchives/components/compound-filters/compound-filters.scss +1 -2
  32. package/nationalarchives/components/cookie-banner/cookie-banner.css.map +1 -1
  33. package/nationalarchives/components/cookie-banner/cookie-banner.scss +0 -4
  34. package/nationalarchives/components/date-input/date-input.css +1 -1
  35. package/nationalarchives/components/date-input/date-input.css.map +1 -1
  36. package/nationalarchives/components/date-input/date-input.scss +0 -1
  37. package/nationalarchives/components/date-search/date-search.css +1 -1
  38. package/nationalarchives/components/date-search/date-search.css.map +1 -1
  39. package/nationalarchives/components/date-search/date-search.scss +0 -1
  40. package/nationalarchives/components/details/details.css +1 -1
  41. package/nationalarchives/components/details/details.css.map +1 -1
  42. package/nationalarchives/components/details/details.scss +1 -2
  43. package/nationalarchives/components/error-summary/error-summary.css +1 -1
  44. package/nationalarchives/components/error-summary/error-summary.css.map +1 -1
  45. package/nationalarchives/components/error-summary/error-summary.scss +0 -2
  46. package/nationalarchives/components/fieldset/fieldset.css.map +1 -1
  47. package/nationalarchives/components/file-input/file-input.css +1 -1
  48. package/nationalarchives/components/file-input/file-input.css.map +1 -1
  49. package/nationalarchives/components/file-input/file-input.scss +0 -4
  50. package/nationalarchives/components/files-list/files-list.css +1 -1
  51. package/nationalarchives/components/files-list/files-list.css.map +1 -1
  52. package/nationalarchives/components/files-list/files-list.scss +3 -4
  53. package/nationalarchives/components/footer/footer.css +1 -1
  54. package/nationalarchives/components/footer/footer.css.map +1 -1
  55. package/nationalarchives/components/footer/footer.scss +2 -4
  56. package/nationalarchives/components/gallery/analytics.js +0 -21
  57. package/nationalarchives/components/gallery/fixtures.json +3 -3
  58. package/nationalarchives/components/gallery/gallery.css +1 -1
  59. package/nationalarchives/components/gallery/gallery.css.map +1 -1
  60. package/nationalarchives/components/gallery/gallery.js +1 -1
  61. package/nationalarchives/components/gallery/gallery.js.map +1 -1
  62. package/nationalarchives/components/gallery/gallery.mjs +3 -74
  63. package/nationalarchives/components/gallery/gallery.scss +15 -136
  64. package/nationalarchives/components/gallery/macro-options.json +0 -6
  65. package/nationalarchives/components/gallery/template.njk +3 -33
  66. package/nationalarchives/components/global-header/global-header.css +1 -1
  67. package/nationalarchives/components/global-header/global-header.css.map +1 -1
  68. package/nationalarchives/components/global-header/global-header.scss +5 -8
  69. package/nationalarchives/components/header/header.css +1 -1
  70. package/nationalarchives/components/header/header.css.map +1 -1
  71. package/nationalarchives/components/header/header.scss +10 -15
  72. package/nationalarchives/components/hero/hero.css +1 -1
  73. package/nationalarchives/components/hero/hero.css.map +1 -1
  74. package/nationalarchives/components/hero/hero.scss +2 -4
  75. package/nationalarchives/components/index-grid/index-grid.css +1 -1
  76. package/nationalarchives/components/index-grid/index-grid.css.map +1 -1
  77. package/nationalarchives/components/index-grid/index-grid.scss +1 -2
  78. package/nationalarchives/components/panel/panel.css.map +1 -1
  79. package/nationalarchives/components/phase-banner/phase-banner.css.map +1 -1
  80. package/nationalarchives/components/picture/picture.css.map +1 -1
  81. package/nationalarchives/components/quick-filters/quick-filters.css.map +1 -1
  82. package/nationalarchives/components/radios/radios.css +1 -1
  83. package/nationalarchives/components/radios/radios.css.map +1 -1
  84. package/nationalarchives/components/radios/radios.scss +0 -2
  85. package/nationalarchives/components/search-field/search-field.css +1 -1
  86. package/nationalarchives/components/search-field/search-field.css.map +1 -1
  87. package/nationalarchives/components/search-field/search-field.scss +0 -36
  88. package/nationalarchives/components/secondary-navigation/secondary-navigation.css +1 -1
  89. package/nationalarchives/components/secondary-navigation/secondary-navigation.css.map +1 -1
  90. package/nationalarchives/components/secondary-navigation/secondary-navigation.scss +2 -4
  91. package/nationalarchives/components/select/select.css +1 -1
  92. package/nationalarchives/components/select/select.css.map +1 -1
  93. package/nationalarchives/components/select/select.scss +0 -1
  94. package/nationalarchives/components/sidebar/sidebar.css.map +1 -1
  95. package/nationalarchives/components/sidebar/sidebar.scss +0 -4
  96. package/nationalarchives/components/skip-link/skip-link.css.map +1 -1
  97. package/nationalarchives/components/tabs/tabs.css +1 -1
  98. package/nationalarchives/components/tabs/tabs.css.map +1 -1
  99. package/nationalarchives/components/tabs/tabs.scss +1 -8
  100. package/nationalarchives/components/text-input/text-input.css +1 -1
  101. package/nationalarchives/components/text-input/text-input.css.map +1 -1
  102. package/nationalarchives/components/text-input/text-input.scss +0 -1
  103. package/nationalarchives/components/textarea/textarea.css +1 -1
  104. package/nationalarchives/components/textarea/textarea.css.map +1 -1
  105. package/nationalarchives/components/textarea/textarea.scss +0 -1
  106. package/nationalarchives/components/warning/warning.css +1 -1
  107. package/nationalarchives/components/warning/warning.css.map +1 -1
  108. package/nationalarchives/error-page.css +1 -1
  109. package/nationalarchives/error-page.css.map +1 -1
  110. package/nationalarchives/print.css.map +1 -1
  111. package/nationalarchives/prototype-kit.css +5 -8
  112. package/nationalarchives/prototype-kit.css.map +1 -1
  113. package/nationalarchives/tools/_a11y.scss +46 -18
  114. package/nationalarchives/tools/_colour.scss +7 -5
  115. package/nationalarchives/utilities/_a11y.scss +2 -6
  116. package/nationalarchives/utilities/forms/_index.scss +4 -0
  117. package/nationalarchives/utilities/forms/form-item.njk +2 -0
  118. package/nationalarchives/utilities/lists/_index.scss +1 -6
  119. package/nationalarchives/utilities/typography/_index.scss +2 -5
  120. package/nationalarchives/variables/_colour.scss +2 -1
  121. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"all+analytics.js","mappings":"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","sources":["webpack://TNAFrontend/webpack/universalModuleDefinition","webpack://TNAFrontend/./src/nationalarchives/components/cookie-banner/cookie-banner.mjs","webpack://TNAFrontend/./src/nationalarchives/components/tabs/tabs.mjs","webpack://TNAFrontend/./src/nationalarchives/components/file-input/file-input.mjs","webpack://TNAFrontend/./src/nationalarchives/lib/cookies.mjs","webpack://TNAFrontend/./src/nationalarchives/all.mjs","webpack://TNAFrontend/./src/nationalarchives/lib/uuid.mjs","webpack://TNAFrontend/./src/nationalarchives/components/skip-link/skip-link.mjs","webpack://TNAFrontend/./src/nationalarchives/components/gallery/gallery.mjs","webpack://TNAFrontend/./src/nationalarchives/components/picture/picture.mjs","webpack://TNAFrontend/./src/nationalarchives/components/header/header.mjs","webpack://TNAFrontend/./src/nationalarchives/components/error-summary/error-summary.mjs","webpack://TNAFrontend/./src/nationalarchives/components/global-header/global-header.mjs","webpack://TNAFrontend/./src/nationalarchives/components/breadcrumbs/breadcrumbs.mjs","webpack://TNAFrontend/./src/nationalarchives/components/date-input/date-input.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/text-input/text-input.mjs","webpack://TNAFrontend/./src/nationalarchives/components/footer/footer.mjs","webpack://TNAFrontend/./src/nationalarchives/components/accordion/accordion.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 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.$acceptedMessage.removeAttribute(\"hidden\");\n this.$acceptedMessage.focus();\n this.$acceptedMessage.setAttribute(\"tabindex\", \"-1\");\n this.cookies.acceptAllPolicies();\n }\n\n reject() {\n this.$prompt.setAttribute(\"hidden\", \"\");\n this.complete();\n this.$rejectedMessage.removeAttribute(\"hidden\");\n this.$rejectedMessage.focus();\n this.$rejectedMessage.setAttribute(\"tabindex\", \"-1\");\n this.cookies.rejectAllPolicies();\n }\n\n complete() {\n this.cookies.set(this.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","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 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(\"tna-file-input__droppable\");\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\" : \"\"} chosen`;\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-xs\",\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 chosen`;\n } else {\n this.$pseudoSelectFileText.textContent = `${files.length} file${files.length > 1 ? \"s\" : \"\"} chosen`;\n }\n } else {\n this.$pseudoSelectFileText.textContent =\n files[0]?.name || `No file chosen`;\n }\n this.hideDropTarget(false);\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 { Accordion } from \"./components/accordion/accordion.mjs\";\nimport { Breadcrumbs } from \"./components/breadcrumbs/breadcrumbs.mjs\";\nimport { CookieBanner } from \"./components/cookie-banner/cookie-banner.mjs\";\nimport { DateInputProgressive } from \"./components/date-input/date-input.mjs\";\nimport { ErrorSummary } from \"./components/error-summary/error-summary.mjs\";\nimport { FileInputDroppable } from \"./components/file-input/file-input.mjs\";\nimport { Footer } from \"./components/footer/footer.mjs\";\nimport { Gallery } from \"./components/gallery/gallery.mjs\";\nimport { GlobalHeader } from \"./components/global-header/global-header.mjs\";\nimport { Header } from \"./components/header/header.mjs\";\nimport { Picture } from \"./components/picture/picture.mjs\";\nimport { SkipLink } from \"./components/skip-link/skip-link.mjs\";\nimport { Tabs } from \"./components/tabs/tabs.mjs\";\nimport { TextInput } from \"./components/text-input/text-input.mjs\";\nimport Cookies from \"./lib/cookies.mjs\";\n\nconst initAll = (options) => {\n options = typeof options !== \"undefined\" ? options : {};\n const $scope =\n options.scope instanceof HTMLElement ? options.scope : document;\n\n const $body = document.documentElement;\n $body.classList.add(\"tna-template--js-enabled\");\n\n const onFirstTouch = () => {\n window.removeEventListener(\"touchstart\", onFirstTouch);\n $body.classList.add(\"tna-template--touched\");\n };\n\n const onKeyDown = (e) => {\n if (e.key === \"Tab\") {\n $body.classList.add(\"tna-template--tabbed\");\n $body.classList.remove(\"tna-template--clicked\");\n }\n };\n\n const onMouseDown = () => {\n $body.classList.add(\"tna-template--clicked\");\n $body.classList.remove(\"tna-template--tabbed\");\n };\n\n window.addEventListener(\"touchstart\", onFirstTouch);\n window.addEventListener(\"keydown\", onKeyDown);\n window.addEventListener(\"mousedown\", onMouseDown);\n\n const $accordions = $scope.querySelectorAll('[data-module=\"tna-accordion\"]');\n $accordions.forEach(($accordion) => {\n new Accordion($accordion);\n });\n\n const $breadcrumbs = $scope.querySelector('[data-module=\"tna-breadcrumbs\"]');\n if ($breadcrumbs) {\n new Breadcrumbs($breadcrumbs);\n }\n\n const $cookieBanner = $scope.querySelector(\n '[data-module=\"tna-cookie-banner\"]',\n );\n if ($cookieBanner) {\n new CookieBanner($cookieBanner);\n }\n\n const $progressiveDateInputs = $scope.querySelectorAll(\n '[data-module=\"tna-date-input-progressive\"]',\n );\n $progressiveDateInputs.forEach(($dateInput) => {\n new DateInputProgressive($dateInput);\n });\n\n const $errorSummary = $scope.querySelector(\n '[data-module=\"tna-error-summary\"]',\n );\n if ($errorSummary) {\n new ErrorSummary($errorSummary).init();\n }\n\n const $fileInputs = $scope.querySelectorAll('[data-module=\"tna-file-input\"]');\n $fileInputs.forEach(($fileInput) => {\n new FileInputDroppable($fileInput);\n });\n\n const $footer = $scope.querySelector('[data-module=\"tna-footer\"]');\n if ($footer) {\n new Footer($footer);\n }\n\n const $galleries = $scope.querySelectorAll('[data-module=\"tna-gallery\"]');\n $galleries.forEach(($gallery) => {\n new Gallery($gallery);\n });\n\n const $globalHeader = $scope.querySelector(\n '[data-module=\"tna-global-header\"]',\n );\n if ($globalHeader) {\n new GlobalHeader($globalHeader);\n }\n\n const $header = $scope.querySelector('[data-module=\"tna-header\"]');\n if ($header) {\n new Header($header);\n }\n\n const $pictures = $scope.querySelectorAll('[data-module=\"tna-picture\"]');\n $pictures.forEach(($picture) => {\n new Picture($picture);\n });\n\n const $skipLinks = $scope.querySelectorAll('[data-module=\"tna-skip-link\"]');\n $skipLinks.forEach(($skipLink) => {\n new SkipLink($skipLink);\n });\n\n const $tabs = $scope.querySelectorAll('[data-module=\"tna-tabs\"]');\n $tabs.forEach(($tabModule) => {\n new Tabs($tabModule);\n });\n\n const $textInputs = $scope.querySelectorAll('[data-module=\"tna-text-input\"]');\n $textInputs.forEach(($textInput) => {\n new TextInput($textInput);\n });\n\n const checkTableForScroll = ($tableWrapper) => {\n const scrollable = $tableWrapper.scrollWidth > $tableWrapper.clientWidth;\n const $tableCaption = $tableWrapper.querySelector(\".tna-table__caption\");\n if (scrollable) {\n $tableWrapper.setAttribute(\"tabindex\", \"0\");\n $tableCaption?.classList.add(\"tna-table__caption--scroll\");\n } else {\n $tableWrapper.removeAttribute(\"tabindex\");\n $tableCaption?.classList.remove(\"tna-table__caption--scroll\");\n }\n };\n\n const $tableWrappers = document.querySelectorAll(\n \".tna-table-wrapper:has(.tna-table__caption)\",\n );\n $tableWrappers.forEach(($tableWrapper) => checkTableForScroll($tableWrapper));\n window.addEventListener(\"resize\", () => {\n $tableWrappers.forEach(($tableWrapper) =>\n checkTableForScroll($tableWrapper),\n );\n });\n\n window.matchMedia(\"print\").addEventListener(\"change\", (evt) => {\n if (evt.matches) {\n document\n .querySelectorAll(\".tna-details__details:not([open])\")\n .forEach((e) => {\n e.setAttribute(\"open\", \"\");\n e.dataset.wasClosed = \"\";\n });\n document\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 document\n .querySelectorAll(\".tna-details__details[data-was-closed]\")\n .forEach((e) => {\n e.removeAttribute(\"open\");\n delete e.dataset.wasClosed;\n });\n document\n .querySelectorAll(\n \".tna-accordion__content[data-was-closed], .tna-picture__transcript[data-was-closed]\",\n )\n .forEach((e) => {\n e.setAttribute(\"hidden\", \"\");\n e.dataset.wasClosed = \"\";\n });\n }\n });\n};\n\nexport {\n initAll,\n Cookies,\n Accordion,\n Breadcrumbs,\n CookieBanner,\n DateInputProgressive,\n ErrorSummary,\n FileInputDroppable,\n Footer,\n Gallery,\n GlobalHeader,\n Header,\n Picture,\n SkipLink,\n Tabs,\n TextInput,\n};\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","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 return;\n }\n this.$module.addEventListener(\"click\", () => this.focusLinkedElement());\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 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.$options = $module && $module.querySelector(\".tna-gallery__options\");\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.$options ||\n !this.$navigationButtons\n ) {\n return;\n }\n\n this.$module.classList.add(\"tna-gallery--interactive\");\n\n this.$showIndex = this.$options.querySelector('button[value=\"show-index\"]');\n this.$enterFullscreen = this.$options.querySelector(\n 'button[value=\"enter-fullscreen\"]',\n );\n this.$exitFullscreen = this.$options.querySelector(\n 'button[value=\"exit-fullscreen\"]',\n );\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.$module.addEventListener(\"fullscreenchange\", () =>\n this.syncFullScreen(),\n );\n\n this.setup();\n this.allowGridIndex = this.$module.dataset[\"showgrid\"] || false;\n if (this.allowGridIndex) {\n this.showIndex();\n } else {\n this.currentId = this.$items[0].id;\n this.showItem(this.currentId);\n }\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 this.$options.removeAttribute(\"hidden\");\n if (\n document.fullscreenEnabled &&\n this.$enterFullscreen &&\n this.$exitFullscreen\n ) {\n this.$enterFullscreen?.addEventListener(\"click\", () =>\n this.enterFullScreen(),\n );\n this.$exitFullscreen?.addEventListener(\"click\", () =>\n this.exitFullScreen(),\n );\n this.$enterFullscreen?.removeAttribute(\"hidden\");\n }\n this.$showIndex?.addEventListener(\"click\", () => this.showIndex());\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 showIndex() {\n this.showItem(\"\");\n this.$itemsContainer.classList.add(\"tna-gallery__items--hide-items\");\n this.$showIndex?.setAttribute(\"hidden\", \"\");\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 if (this.isFullScreen()) {\n $item.scrollIntoView({ block: \"nearest\" });\n }\n } else {\n $item.setAttribute(\"aria-current\", \"false\");\n }\n } else {\n $item.setAttribute(\"aria-current\", \"false\");\n }\n });\n if (this.allowGridIndex) {\n this.$showIndex?.removeAttribute(\"hidden\");\n }\n this.$itemsContainer.classList.remove(\"tna-gallery__items--hide-items\");\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 isFullScreen() {\n return document.fullscreenElement;\n }\n\n enterFullScreen() {\n this.$module.requestFullscreen();\n this.syncFullScreen();\n this.$module.focus();\n }\n\n exitFullScreen() {\n document.exitFullscreen();\n this.syncFullScreen();\n }\n\n syncFullScreen() {\n if (this.isFullScreen()) {\n this.$enterFullscreen.setAttribute(\"hidden\", \"\");\n this.$exitFullscreen.removeAttribute(\"hidden\");\n } else {\n this.$exitFullscreen.setAttribute(\"hidden\", \"\");\n this.$enterFullscreen.removeAttribute(\"hidden\");\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 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","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 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","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 return;\n }\n\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\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.setAttribute(\"tabindex\", \"-1\");\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","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","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 eventName: \"enter-fullscreen\",\n targetElement: '.tna-gallery__options button[value=\"enter-fullscreen\"]',\n on: \"click\",\n rootData: {\n data_link: \"enter_full_screen_button\",\n },\n },\n {\n eventName: \"exit-fullscreen\",\n targetElement: '.tna-gallery__options button[value=\"exit-fullscreen\"]',\n on: \"click\",\n rootData: {\n data_link: \"exit_full_screen_button\",\n },\n },\n {\n eventName: \"index\",\n targetElement: '.tna-gallery__options button[value=\"show-index\"]',\n on: \"click\",\n },\n ],\n },\n];\n","import { valueGetters } from \"../../lib/analytics-helpers.mjs\";\n\nexport default [\n {\n scope: \".tna-global-header\",\n areaName: \"header\",\n rootEventName: \"global_navigation\",\n 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","export class TextInput {\n constructor($module) {\n this.$module = $module;\n this.$input = $module && $module.querySelector(\".tna-text-input\");\n\n if (!this.$module || !this.$input) {\n return;\n }\n\n if (this.$input.getAttribute(\"type\") === \"password\") {\n this.$textInputWrapper = document.createElement(\"div\");\n this.$textInputWrapper.classList.add(\"tna-text-input-wrapper\");\n\n this.$textInputPasswordToggle = document.createElement(\"button\");\n this.$textInputPasswordToggle.setAttribute(\"type\", \"button\");\n this.$textInputPasswordToggle.classList.add(\n \"tna-button\",\n \"tna-button--small\",\n \"tna-button--icon-only\",\n );\n this.$textInputPasswordToggle.setAttribute(\n \"aria-controls\",\n this.$input.id,\n );\n this.updateTogglePasswordButtonText();\n\n this.$textInputWrapper.appendChild(this.$input);\n this.$textInputWrapper.appendChild(this.$textInputPasswordToggle);\n this.$module.appendChild(this.$textInputWrapper);\n\n this.$textInputPasswordToggle.addEventListener(\"click\", () => {\n this.togglePasswordType();\n this.$input.focus();\n });\n }\n }\n\n togglePasswordType() {\n if (this.$input.getAttribute(\"type\") === \"password\") {\n this.$input.setAttribute(\"type\", \"text\");\n } else {\n this.$input.setAttribute(\"type\", \"password\");\n }\n this.updateTogglePasswordButtonText();\n }\n\n updateTogglePasswordButtonText() {\n if (this.$input.getAttribute(\"type\") === \"password\") {\n this.$textInputPasswordToggle.innerHTML = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 640 640\" height=\"24\" aria-hidden=\"true\" focusable=\"false\"><!--!Font Awesome Free v7.0.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--><path d=\"M320 96C239.2 96 174.5 132.8 127.4 176.6C80.6 220.1 49.3 272 34.4 307.7C31.1 315.6 31.1 324.4 34.4 332.3C49.3 368 80.6 420 127.4 463.4C174.5 507.1 239.2 544 320 544C400.8 544 465.5 507.2 512.6 463.4C559.4 419.9 590.7 368 605.6 332.3C608.9 324.4 608.9 315.6 605.6 307.7C590.7 272 559.4 220 512.6 176.6C465.5 132.9 400.8 96 320 96zM176 320C176 240.5 240.5 176 320 176C399.5 176 464 240.5 464 320C464 399.5 399.5 464 320 464C240.5 464 176 399.5 176 320zM320 256C320 291.3 291.3 320 256 320C244.5 320 233.7 317 224.3 311.6C223.3 322.5 224.2 333.7 227.2 344.8C240.9 396 293.6 426.4 344.8 412.7C396 399 426.4 346.3 412.7 295.1C400.5 249.4 357.2 220.3 311.6 224.3C316.9 233.6 320 244.4 320 256z\"/></svg>Show password`;\n this.$textInputPasswordToggle.setAttribute(\"title\", \"Show password\");\n this.$textInputPasswordToggle.setAttribute(\"aria-label\", \"Show password\");\n } else {\n this.$textInputPasswordToggle.innerHTML = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 640 640\" height=\"24\" aria-hidden=\"true\" focusable=\"false\"><!--!Font Awesome Free v7.0.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--><path d=\"M73 39.1C63.6 29.7 48.4 29.7 39.1 39.1C29.8 48.5 29.7 63.7 39 73.1L567 601.1C576.4 610.5 591.6 610.5 600.9 601.1C610.2 591.7 610.3 576.5 600.9 567.2L504.5 470.8C507.2 468.4 509.9 466 512.5 463.6C559.3 420.1 590.6 368.2 605.5 332.5C608.8 324.6 608.8 315.8 605.5 307.9C590.6 272.2 559.3 220.2 512.5 176.8C465.4 133.1 400.7 96.2 319.9 96.2C263.1 96.2 214.3 114.4 173.9 140.4L73 39.1zM236.5 202.7C260 185.9 288.9 176 320 176C399.5 176 464 240.5 464 320C464 351.1 454.1 379.9 437.3 403.5L402.6 368.8C415.3 347.4 419.6 321.1 412.7 295.1C399 243.9 346.3 213.5 295.1 227.2C286.5 229.5 278.4 232.9 271.1 237.2L236.4 202.5zM357.3 459.1C345.4 462.3 332.9 464 320 464C240.5 464 176 399.5 176 320C176 307.1 177.7 294.6 180.9 282.7L101.4 203.2C68.8 240 46.4 279 34.5 307.7C31.2 315.6 31.2 324.4 34.5 332.3C49.4 368 80.7 420 127.5 463.4C174.6 507.1 239.3 544 320.1 544C357.4 544 391.3 536.1 421.6 523.4L357.4 459.2z\"/></svg>Hide password`;\n this.$textInputPasswordToggle.setAttribute(\"title\", \"Hide password\");\n this.$textInputPasswordToggle.setAttribute(\"aria-label\", \"Hide password\");\n }\n }\n}\n","import Cookies from \"../../lib/cookies.mjs\";\n\nexport class Footer {\n constructor($module) {\n this.$module = $module;\n this.$themeSelector =\n $module && $module.querySelector(\".tna-footer__theme-selector\");\n this.$tnaTemplate = document.querySelector(\".tna-template\");\n\n if (!this.$module || !this.$themeSelector || !this.$tnaTemplate) {\n return;\n }\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.cookies = new Cookies();\n if (this.cookies.isPolicyAccepted(\"settings\")) {\n this.showThemeSelector();\n }\n this.cookies.on(\"changePolicy\", (data) => {\n if (Object.hasOwn(data, \"settings\")) {\n if (data.settings === true) {\n this.showThemeSelector();\n } else {\n this.cookies.delete(\"theme\");\n this.hideThemeSelector();\n }\n }\n });\n }\n\n showThemeSelector() {\n this.$themeSelector.removeAttribute(\"hidden\");\n if (this.cookies.exists(\"theme\")) {\n const $currentThemeButton = Array.from(this.$themeSelectorButtons).find(\n ($button) => $button.value === this.cookies.get(\"theme\"),\n );\n if ($currentThemeButton) {\n this.selectThemeSelectorButton($currentThemeButton);\n }\n }\n }\n\n hideThemeSelector() {\n this.$themeSelector.setAttribute(\"hidden\", \"\");\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.cookies.set(\"theme\", theme);\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 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\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","// 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","CookieBanner","$module","_this","_classCallCheck","this","$acceptButton","querySelector","$rejectButton","$prompt","$acceptedMessage","$rejectedMessage","$closeButtons","querySelectorAll","cookies","Cookies","newInstance","cookiePreferencesSetKey","dataset","preferencesKey","policiesCorrectOnInit","exists","hasValue","removeAttribute","addEventListener","accept","reject","key","value","setAttribute","complete","focus","acceptAllPolicies","rejectAllPolicies","_this2","set","forEach","$closeButton","close","Tabs","$tabList","$tabListItemLinks","$tabItems","length","currentTabIndex","init","classList","add","$tabListItemLink","tabPanelID","getAttribute","$tabPanel","document","getElementById","id","e","handleItemLinkClick","switchTabByIndex","handleItemLinkKeyDown","itemLinkClickEvent","preventDefault","targetItem","currentTarget","switchTabByID","itemLinkKeyDownEvent","preventDefaultKeyAction","previousTab","nextTab","stopPropagation","newIndex","switchFocus","arguments","undefined","index","$tabItem","targetId","Array","from","findIndex","FileInputDroppable","$body","$input","acceptMutltipleFiles","hasAttribute","$droppableArea","createElement","insertBefore","appendChild","$pseudoSelectFileText","textContent","concat","$droppableButtons","$pseudoSelectFileButton","$pseudoDropFileButton","$droppableAreaAriaLabel","showDropTarget","hideDropTarget","onChange","dataTransfer","hasNoTypesInfo","types","isDraggingFiles","some","type","event","updateAriaLabel","isContainingFiles","items","remove","_files$","files","name","window","TNAFrontendCookies","TNAFrontendCookieEvents","CookieEventHandler","_createClass","debug","_defineProperty","log","_console","_len","args","_key","console","apply","callback","Object","hasOwn","events","_toConsumableArray","oneTimeEvents","data","eventToTrigger","call","i","splice","tnaCookiePolicies","options","documentElement","tnaFrontendDebug","defaultDomain","defaultPath","secure","policiesKey","defaultAge","_options$newInstance","_options$noInit","noInit","tnaCookiesDomain","location","hostname","tnaCookiesPath","tnaCookiesInsecure","tnaCookiesPoliciesKey","parseInt","tnaCookiesDefaultAge","keys","policies","every","policy","includes","existingPolicies","filteredExistingPolicies","fromEntries","filter","map","savePolicies","_objectSpread","usage","settings","marketing","essential","_console2","_len2","_key2","all","get","deserialised","cookie","split","x","parts","trim","JSON","parse","decodeURIComponent","_options$maxAge","maxAge","_options$sameSite","sameSite","_options$domain","domain","_options$path","path","_options$secure","_options$session","session","encodeURIComponent","trigger","_this3","setPolicy","accepted","allPolicies","k","toLowerCase","stringify","on","once","initAll","$scope","scope","HTMLElement","onFirstTouch","removeEventListener","$accordion","Accordion","$breadcrumbs","Breadcrumbs","$cookieBanner","$dateInput","DateInputProgressive","$errorSummary","ErrorSummary","$fileInput","$footer","Footer","$gallery","Gallery","$globalHeader","GlobalHeader","$header","Header","$picture","Picture","$skipLink","SkipLink","$tabModule","$textInput","TextInput","checkTableForScroll","$tableWrapper","scrollable","scrollWidth","clientWidth","$tableCaption","$tableWrappers","matchMedia","evt","matches","wasClosed","replace","c","crypto","getRandomValues","Uint8Array","toString","linkedElementId","pop","$linkedElement","focusLinkedElement","linkedElementListener","removeFocusProperties","$itemsContainer","$items","$navigation","$navigationItems","$options","$navigationButtons","$showIndex","$enterFullscreen","$exitFullscreen","$navigationButtonPrev","$navigationButtonNext","syncFullScreen","setup","allowGridIndex","showIndex","currentId","showItem","_this$$showIndex","_this$$navigationButt","_this$$navigationButt2","_this$$navigationButt3","_this$$enterFullscree","_this$$exitFullscreen","_this$$enterFullscree2","$item","_$item$querySelector","showPreviousItem","showNextItem","showFirstItem","showLastItem","fullscreenEnabled","enterFullScreen","exitFullScreen","$liveRegion","prepend","_this$$showIndex2","_this$$showIndex3","isFullScreen","scrollIntoView","block","getCurrentItemIndex","_this4","nextIndexToShow","fullscreenElement","requestFullscreen","exitFullscreen","$imageWrapper","$transcriptToggle","$transcript","transcriptOpened","openLabel","informationLabelOpen","closeLabel","informationLabelClose","uniqueId","uuidv4","innerText","toggleTranscript","$toggleButton","$links","menuOpened","mql","syncState","handleToggleNavigation","addListener","code","show","hide","hidden","disableAutofocus","setFocus","handleClick","$element","_options$onBeforeFocu","isFocusable","onBlur","_options$onBlur","onBeforeFocus","$target","target","focusTarget","url","HTMLAnchorElement","inputId","getFragmentFromUrl","href","$legendOrLabel","getAssociatedLegendOrLabel","preventScroll","_document$querySelect","$fieldset","closest","$legends","getElementsByTagName","$candidateLegend","HTMLInputElement","legendTop","getBoundingClientRect","top","inputRect","height","innerHeight","$topNavigation","$breadcrumbsList","contains","$expandable","style","display","$expandButton","innerHTML","nextSibling","$yearWrapper","$yearInput","$monthWrapper","$monthInput","$dayWrapper","$dayInput","update","isValidYear","showMonth","isValidMonth","showDay","hideDay","hideMonth","yearValue","isNaN","monthRawValue","monthIntValue","getXPathTo","body","tagName","ix","parentNode","siblings","childNodes","sibling","nodeType","getClosestElement","$startingElement","matchingElementSelectors","heading","$search","previousElementSibling","matchingElementSelector","parentElement","getClosestHeading","valueGetters","text","$el","html","instance","checked","expanded","closestHeading","xpath","areaName","rootEventName","rootData","data_component_name","eventName","targetElement","state","data_link_type","data_link","group","_$scope$closest","_$scope$querySelector","_$scope$querySelector2","getFileDetails","file","size","_$scope$closest2","_$scope$closest3","data_section","media_type","media_duration","media_provider","media_title","media_progress","$itemButton","media_action","_$scope$querySelector3","onCondition","data_position","image","imageSrc","imageAlt","componentAnalytics","BreadcrumbAnalytics","CheckboxesAnalytics","DetailsAnalytics","FooterAnalytics","GalleryAnalytics","GlobalHeaderAnalytics","HeaderAnalytics","PictureAnalytics","RadiosAnalytics","SearchFieldAnalytics","SidebarAnalytics","TextInputAnalytics","TextareaAnalytics","EventTracker","Date","_options$prefix","prefix","_options$documentScop","documentScope","navigator","doNotTrack","isPolicyAccepted","enableTracking","disableTracking","componentConfig","addListeners","scopeArray","rootDefaultData","_typeof","scopeIndex","eventConfig","attachListener","_eventConfig$rootData","_eventConfig$onCondit","computedValueParameters","computedValue","recordEvent","generateEventName","xPath","timeSincePageLoad","startTime","entries","_ref","_ref2","_slicedToArray","valueOrFunction","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","dataLayer","gTagId","ga4Disable","start","_inherits","_this7","ga4Data","_ref3","_ref4","pushToDataLayer","trackingEnabled","trackingCodeAdded","Error","getTnaMetaTags","getUserPreferences","getTime","firstScript","script","async","src","_this8","startsWith","ga4Id","ga4","helpers","$textInputWrapper","$textInputPasswordToggle","updateTogglePasswordButtonText","togglePasswordType","$themeSelector","$tnaTemplate","$themeSelectorButtons","$themeSelectorButton","$button","setTheme","selectThemeSelectorButton","showThemeSelector","hideThemeSelector","$currentThemeButton","find","theme","$selectedButton","allowMultipleItemsOpen","singleOpenItem","initItem","initState","$toggleAllButton","syncToggleAllButton","isAllOpen","closeItem","openItem","$heading","$content","$headingButton","closeAllItemsExcept","$excludeItem","closeAllLabel","openAllLabel","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","d","definition","o","defineProperty","enumerable","obj","prop","prototype","hasOwnProperty","r","Symbol","toStringTag"],"sourceRoot":""}
1
+ {"version":3,"file":"all+analytics.js","mappings":"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","sources":["webpack://TNAFrontend/webpack/universalModuleDefinition","webpack://TNAFrontend/./src/nationalarchives/components/cookie-banner/cookie-banner.mjs","webpack://TNAFrontend/./src/nationalarchives/components/tabs/tabs.mjs","webpack://TNAFrontend/./src/nationalarchives/components/file-input/file-input.mjs","webpack://TNAFrontend/./src/nationalarchives/lib/cookies.mjs","webpack://TNAFrontend/./src/nationalarchives/all.mjs","webpack://TNAFrontend/./src/nationalarchives/lib/uuid.mjs","webpack://TNAFrontend/./src/nationalarchives/components/skip-link/skip-link.mjs","webpack://TNAFrontend/./src/nationalarchives/components/gallery/gallery.mjs","webpack://TNAFrontend/./src/nationalarchives/components/picture/picture.mjs","webpack://TNAFrontend/./src/nationalarchives/components/header/header.mjs","webpack://TNAFrontend/./src/nationalarchives/components/error-summary/error-summary.mjs","webpack://TNAFrontend/./src/nationalarchives/components/global-header/global-header.mjs","webpack://TNAFrontend/./src/nationalarchives/components/breadcrumbs/breadcrumbs.mjs","webpack://TNAFrontend/./src/nationalarchives/components/date-input/date-input.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/text-input/text-input.mjs","webpack://TNAFrontend/./src/nationalarchives/components/footer/footer.mjs","webpack://TNAFrontend/./src/nationalarchives/components/accordion/accordion.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 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.$acceptedMessage.removeAttribute(\"hidden\");\n this.$acceptedMessage.focus();\n this.$acceptedMessage.setAttribute(\"tabindex\", \"-1\");\n this.cookies.acceptAllPolicies();\n }\n\n reject() {\n this.$prompt.setAttribute(\"hidden\", \"\");\n this.complete();\n this.$rejectedMessage.removeAttribute(\"hidden\");\n this.$rejectedMessage.focus();\n this.$rejectedMessage.setAttribute(\"tabindex\", \"-1\");\n this.cookies.rejectAllPolicies();\n }\n\n complete() {\n this.cookies.set(this.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","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 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(\"tna-file-input__droppable\");\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\" : \"\"} chosen`;\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-xs\",\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 chosen`;\n } else {\n this.$pseudoSelectFileText.textContent = `${files.length} file${files.length > 1 ? \"s\" : \"\"} chosen`;\n }\n } else {\n this.$pseudoSelectFileText.textContent =\n files[0]?.name || `No file chosen`;\n }\n this.hideDropTarget(false);\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 { Accordion } from \"./components/accordion/accordion.mjs\";\nimport { Breadcrumbs } from \"./components/breadcrumbs/breadcrumbs.mjs\";\nimport { CookieBanner } from \"./components/cookie-banner/cookie-banner.mjs\";\nimport { DateInputProgressive } from \"./components/date-input/date-input.mjs\";\nimport { ErrorSummary } from \"./components/error-summary/error-summary.mjs\";\nimport { FileInputDroppable } from \"./components/file-input/file-input.mjs\";\nimport { Footer } from \"./components/footer/footer.mjs\";\nimport { Gallery } from \"./components/gallery/gallery.mjs\";\nimport { GlobalHeader } from \"./components/global-header/global-header.mjs\";\nimport { Header } from \"./components/header/header.mjs\";\nimport { Picture } from \"./components/picture/picture.mjs\";\nimport { SkipLink } from \"./components/skip-link/skip-link.mjs\";\nimport { Tabs } from \"./components/tabs/tabs.mjs\";\nimport { TextInput } from \"./components/text-input/text-input.mjs\";\nimport Cookies from \"./lib/cookies.mjs\";\n\nconst initAll = (options) => {\n options = typeof options !== \"undefined\" ? options : {};\n const $scope =\n options.scope instanceof HTMLElement ? options.scope : document;\n\n const $body = document.documentElement;\n $body.classList.add(\"tna-template--js-enabled\");\n\n const onFirstTouch = () => {\n window.removeEventListener(\"touchstart\", onFirstTouch);\n $body.classList.add(\"tna-template--touched\");\n };\n\n const onKeyDown = (e) => {\n if (e.key === \"Tab\") {\n $body.classList.add(\"tna-template--tabbed\");\n $body.classList.remove(\"tna-template--clicked\");\n }\n };\n\n const onMouseDown = () => {\n $body.classList.add(\"tna-template--clicked\");\n $body.classList.remove(\"tna-template--tabbed\");\n };\n\n window.addEventListener(\"touchstart\", onFirstTouch);\n window.addEventListener(\"keydown\", onKeyDown);\n window.addEventListener(\"mousedown\", onMouseDown);\n\n const $accordions = $scope.querySelectorAll('[data-module=\"tna-accordion\"]');\n $accordions.forEach(($accordion) => {\n new Accordion($accordion);\n });\n\n const $breadcrumbs = $scope.querySelector('[data-module=\"tna-breadcrumbs\"]');\n if ($breadcrumbs) {\n new Breadcrumbs($breadcrumbs);\n }\n\n const $cookieBanner = $scope.querySelector(\n '[data-module=\"tna-cookie-banner\"]',\n );\n if ($cookieBanner) {\n new CookieBanner($cookieBanner);\n }\n\n const $progressiveDateInputs = $scope.querySelectorAll(\n '[data-module=\"tna-date-input-progressive\"]',\n );\n $progressiveDateInputs.forEach(($dateInput) => {\n new DateInputProgressive($dateInput);\n });\n\n const $errorSummary = $scope.querySelector(\n '[data-module=\"tna-error-summary\"]',\n );\n if ($errorSummary) {\n new ErrorSummary($errorSummary).init();\n }\n\n const $fileInputs = $scope.querySelectorAll('[data-module=\"tna-file-input\"]');\n $fileInputs.forEach(($fileInput) => {\n new FileInputDroppable($fileInput);\n });\n\n const $footer = $scope.querySelector('[data-module=\"tna-footer\"]');\n if ($footer) {\n new Footer($footer);\n }\n\n const $galleries = $scope.querySelectorAll('[data-module=\"tna-gallery\"]');\n $galleries.forEach(($gallery) => {\n new Gallery($gallery);\n });\n\n const $globalHeader = $scope.querySelector(\n '[data-module=\"tna-global-header\"]',\n );\n if ($globalHeader) {\n new GlobalHeader($globalHeader);\n }\n\n const $header = $scope.querySelector('[data-module=\"tna-header\"]');\n if ($header) {\n new Header($header);\n }\n\n const $pictures = $scope.querySelectorAll('[data-module=\"tna-picture\"]');\n $pictures.forEach(($picture) => {\n new Picture($picture);\n });\n\n const $skipLinks = $scope.querySelectorAll('[data-module=\"tna-skip-link\"]');\n $skipLinks.forEach(($skipLink) => {\n new SkipLink($skipLink);\n });\n\n const $tabs = $scope.querySelectorAll('[data-module=\"tna-tabs\"]');\n $tabs.forEach(($tabModule) => {\n new Tabs($tabModule);\n });\n\n const $textInputs = $scope.querySelectorAll('[data-module=\"tna-text-input\"]');\n $textInputs.forEach(($textInput) => {\n new TextInput($textInput);\n });\n\n const checkTableForScroll = ($tableWrapper) => {\n const scrollable = $tableWrapper.scrollWidth > $tableWrapper.clientWidth;\n const $tableCaption = $tableWrapper.querySelector(\".tna-table__caption\");\n if (scrollable) {\n $tableWrapper.setAttribute(\"tabindex\", \"0\");\n $tableCaption?.classList.add(\"tna-table__caption--scroll\");\n } else {\n $tableWrapper.removeAttribute(\"tabindex\");\n $tableCaption?.classList.remove(\"tna-table__caption--scroll\");\n }\n };\n\n const $tableWrappers = document.querySelectorAll(\n \".tna-table-wrapper:has(.tna-table__caption)\",\n );\n $tableWrappers.forEach(($tableWrapper) => checkTableForScroll($tableWrapper));\n window.addEventListener(\"resize\", () => {\n $tableWrappers.forEach(($tableWrapper) =>\n checkTableForScroll($tableWrapper),\n );\n });\n\n window.matchMedia(\"print\").addEventListener(\"change\", (evt) => {\n if (evt.matches) {\n document\n .querySelectorAll(\".tna-details__details:not([open])\")\n .forEach((e) => {\n e.setAttribute(\"open\", \"\");\n e.dataset.wasClosed = \"\";\n });\n document\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 document\n .querySelectorAll(\".tna-details__details[data-was-closed]\")\n .forEach((e) => {\n e.removeAttribute(\"open\");\n delete e.dataset.wasClosed;\n });\n document\n .querySelectorAll(\n \".tna-accordion__content[data-was-closed], .tna-picture__transcript[data-was-closed]\",\n )\n .forEach((e) => {\n e.setAttribute(\"hidden\", \"\");\n e.dataset.wasClosed = \"\";\n });\n }\n });\n};\n\nexport {\n initAll,\n Cookies,\n Accordion,\n Breadcrumbs,\n CookieBanner,\n DateInputProgressive,\n ErrorSummary,\n FileInputDroppable,\n Footer,\n Gallery,\n GlobalHeader,\n Header,\n Picture,\n SkipLink,\n Tabs,\n TextInput,\n};\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","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 return;\n }\n this.$module.addEventListener(\"click\", () => this.focusLinkedElement());\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 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","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 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","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 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","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 return;\n }\n\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\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.setAttribute(\"tabindex\", \"-1\");\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","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","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","export class TextInput {\n constructor($module) {\n this.$module = $module;\n this.$input = $module && $module.querySelector(\".tna-text-input\");\n\n if (!this.$module || !this.$input) {\n return;\n }\n\n if (this.$input.getAttribute(\"type\") === \"password\") {\n this.$textInputWrapper = document.createElement(\"div\");\n this.$textInputWrapper.classList.add(\"tna-text-input-wrapper\");\n\n this.$textInputPasswordToggle = document.createElement(\"button\");\n this.$textInputPasswordToggle.setAttribute(\"type\", \"button\");\n this.$textInputPasswordToggle.classList.add(\n \"tna-button\",\n \"tna-button--small\",\n \"tna-button--icon-only\",\n );\n this.$textInputPasswordToggle.setAttribute(\n \"aria-controls\",\n this.$input.id,\n );\n this.updateTogglePasswordButtonText();\n\n this.$textInputWrapper.appendChild(this.$input);\n this.$textInputWrapper.appendChild(this.$textInputPasswordToggle);\n this.$module.appendChild(this.$textInputWrapper);\n\n this.$textInputPasswordToggle.addEventListener(\"click\", () => {\n this.togglePasswordType();\n this.$input.focus();\n });\n }\n }\n\n togglePasswordType() {\n if (this.$input.getAttribute(\"type\") === \"password\") {\n this.$input.setAttribute(\"type\", \"text\");\n } else {\n this.$input.setAttribute(\"type\", \"password\");\n }\n this.updateTogglePasswordButtonText();\n }\n\n updateTogglePasswordButtonText() {\n if (this.$input.getAttribute(\"type\") === \"password\") {\n this.$textInputPasswordToggle.innerHTML = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 640 640\" height=\"24\" aria-hidden=\"true\" focusable=\"false\"><!--!Font Awesome Free v7.0.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--><path d=\"M320 96C239.2 96 174.5 132.8 127.4 176.6C80.6 220.1 49.3 272 34.4 307.7C31.1 315.6 31.1 324.4 34.4 332.3C49.3 368 80.6 420 127.4 463.4C174.5 507.1 239.2 544 320 544C400.8 544 465.5 507.2 512.6 463.4C559.4 419.9 590.7 368 605.6 332.3C608.9 324.4 608.9 315.6 605.6 307.7C590.7 272 559.4 220 512.6 176.6C465.5 132.9 400.8 96 320 96zM176 320C176 240.5 240.5 176 320 176C399.5 176 464 240.5 464 320C464 399.5 399.5 464 320 464C240.5 464 176 399.5 176 320zM320 256C320 291.3 291.3 320 256 320C244.5 320 233.7 317 224.3 311.6C223.3 322.5 224.2 333.7 227.2 344.8C240.9 396 293.6 426.4 344.8 412.7C396 399 426.4 346.3 412.7 295.1C400.5 249.4 357.2 220.3 311.6 224.3C316.9 233.6 320 244.4 320 256z\"/></svg>Show password`;\n this.$textInputPasswordToggle.setAttribute(\"title\", \"Show password\");\n this.$textInputPasswordToggle.setAttribute(\"aria-label\", \"Show password\");\n } else {\n this.$textInputPasswordToggle.innerHTML = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 640 640\" height=\"24\" aria-hidden=\"true\" focusable=\"false\"><!--!Font Awesome Free v7.0.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--><path d=\"M73 39.1C63.6 29.7 48.4 29.7 39.1 39.1C29.8 48.5 29.7 63.7 39 73.1L567 601.1C576.4 610.5 591.6 610.5 600.9 601.1C610.2 591.7 610.3 576.5 600.9 567.2L504.5 470.8C507.2 468.4 509.9 466 512.5 463.6C559.3 420.1 590.6 368.2 605.5 332.5C608.8 324.6 608.8 315.8 605.5 307.9C590.6 272.2 559.3 220.2 512.5 176.8C465.4 133.1 400.7 96.2 319.9 96.2C263.1 96.2 214.3 114.4 173.9 140.4L73 39.1zM236.5 202.7C260 185.9 288.9 176 320 176C399.5 176 464 240.5 464 320C464 351.1 454.1 379.9 437.3 403.5L402.6 368.8C415.3 347.4 419.6 321.1 412.7 295.1C399 243.9 346.3 213.5 295.1 227.2C286.5 229.5 278.4 232.9 271.1 237.2L236.4 202.5zM357.3 459.1C345.4 462.3 332.9 464 320 464C240.5 464 176 399.5 176 320C176 307.1 177.7 294.6 180.9 282.7L101.4 203.2C68.8 240 46.4 279 34.5 307.7C31.2 315.6 31.2 324.4 34.5 332.3C49.4 368 80.7 420 127.5 463.4C174.6 507.1 239.3 544 320.1 544C357.4 544 391.3 536.1 421.6 523.4L357.4 459.2z\"/></svg>Hide password`;\n this.$textInputPasswordToggle.setAttribute(\"title\", \"Hide password\");\n this.$textInputPasswordToggle.setAttribute(\"aria-label\", \"Hide password\");\n }\n }\n}\n","import Cookies from \"../../lib/cookies.mjs\";\n\nexport class Footer {\n constructor($module) {\n this.$module = $module;\n this.$themeSelector =\n $module && $module.querySelector(\".tna-footer__theme-selector\");\n this.$tnaTemplate = document.querySelector(\".tna-template\");\n\n if (!this.$module || !this.$themeSelector || !this.$tnaTemplate) {\n return;\n }\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.cookies = new Cookies();\n if (this.cookies.isPolicyAccepted(\"settings\")) {\n this.showThemeSelector();\n }\n this.cookies.on(\"changePolicy\", (data) => {\n if (Object.hasOwn(data, \"settings\")) {\n if (data.settings === true) {\n this.showThemeSelector();\n } else {\n this.cookies.delete(\"theme\");\n this.hideThemeSelector();\n }\n }\n });\n }\n\n showThemeSelector() {\n this.$themeSelector.removeAttribute(\"hidden\");\n if (this.cookies.exists(\"theme\")) {\n const $currentThemeButton = Array.from(this.$themeSelectorButtons).find(\n ($button) => $button.value === this.cookies.get(\"theme\"),\n );\n if ($currentThemeButton) {\n this.selectThemeSelectorButton($currentThemeButton);\n }\n }\n }\n\n hideThemeSelector() {\n this.$themeSelector.setAttribute(\"hidden\", \"\");\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.cookies.set(\"theme\", theme);\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 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\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","// 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","CookieBanner","$module","_this","_classCallCheck","this","$acceptButton","querySelector","$rejectButton","$prompt","$acceptedMessage","$rejectedMessage","$closeButtons","querySelectorAll","cookies","Cookies","newInstance","cookiePreferencesSetKey","dataset","preferencesKey","policiesCorrectOnInit","exists","hasValue","removeAttribute","addEventListener","accept","reject","key","value","setAttribute","complete","focus","acceptAllPolicies","rejectAllPolicies","_this2","set","forEach","$closeButton","close","Tabs","$tabList","$tabListItemLinks","$tabItems","length","currentTabIndex","init","classList","add","$tabListItemLink","tabPanelID","getAttribute","$tabPanel","document","getElementById","id","e","handleItemLinkClick","switchTabByIndex","handleItemLinkKeyDown","itemLinkClickEvent","preventDefault","targetItem","currentTarget","switchTabByID","itemLinkKeyDownEvent","preventDefaultKeyAction","previousTab","nextTab","stopPropagation","newIndex","switchFocus","arguments","undefined","index","$tabItem","targetId","Array","from","findIndex","FileInputDroppable","$body","$input","acceptMutltipleFiles","hasAttribute","$droppableArea","createElement","insertBefore","appendChild","$pseudoSelectFileText","textContent","concat","$droppableButtons","$pseudoSelectFileButton","$pseudoDropFileButton","$droppableAreaAriaLabel","showDropTarget","hideDropTarget","onChange","dataTransfer","hasNoTypesInfo","types","isDraggingFiles","some","type","event","updateAriaLabel","isContainingFiles","items","remove","_files$","files","name","window","TNAFrontendCookies","TNAFrontendCookieEvents","CookieEventHandler","_createClass","debug","_defineProperty","log","_console","_len","args","_key","console","apply","callback","Object","hasOwn","events","_toConsumableArray","oneTimeEvents","data","eventToTrigger","call","i","splice","tnaCookiePolicies","options","documentElement","tnaFrontendDebug","defaultDomain","defaultPath","secure","policiesKey","defaultAge","_options$newInstance","_options$noInit","noInit","tnaCookiesDomain","location","hostname","tnaCookiesPath","tnaCookiesInsecure","tnaCookiesPoliciesKey","parseInt","tnaCookiesDefaultAge","keys","policies","every","policy","includes","existingPolicies","filteredExistingPolicies","fromEntries","filter","map","savePolicies","_objectSpread","usage","settings","marketing","essential","_console2","_len2","_key2","all","get","deserialised","cookie","split","x","parts","trim","JSON","parse","decodeURIComponent","_options$maxAge","maxAge","_options$sameSite","sameSite","_options$domain","domain","_options$path","path","_options$secure","_options$session","session","encodeURIComponent","trigger","_this3","setPolicy","accepted","allPolicies","k","toLowerCase","stringify","on","once","initAll","$scope","scope","HTMLElement","onFirstTouch","removeEventListener","$accordion","Accordion","$breadcrumbs","Breadcrumbs","$cookieBanner","$dateInput","DateInputProgressive","$errorSummary","ErrorSummary","$fileInput","$footer","Footer","$gallery","Gallery","$globalHeader","GlobalHeader","$header","Header","$picture","Picture","$skipLink","SkipLink","$tabModule","$textInput","TextInput","checkTableForScroll","$tableWrapper","scrollable","scrollWidth","clientWidth","$tableCaption","$tableWrappers","matchMedia","evt","matches","wasClosed","replace","c","crypto","getRandomValues","Uint8Array","toString","linkedElementId","pop","$linkedElement","focusLinkedElement","linkedElementListener","removeFocusProperties","$itemsContainer","$items","$navigation","$navigationItems","$navigationButtons","$navigationButtonPrev","$navigationButtonNext","setup","currentId","showItem","_this$$navigationButt","_this$$navigationButt2","_this$$navigationButt3","$item","_$item$querySelector","showPreviousItem","showNextItem","showFirstItem","showLastItem","$liveRegion","prepend","getCurrentItemIndex","nextIndexToShow","$imageWrapper","$transcriptToggle","$transcript","transcriptOpened","openLabel","informationLabelOpen","closeLabel","informationLabelClose","uniqueId","uuidv4","innerText","toggleTranscript","$toggleButton","$links","menuOpened","mql","syncState","handleToggleNavigation","addListener","code","show","hide","hidden","disableAutofocus","setFocus","handleClick","$element","_options$onBeforeFocu","isFocusable","onBlur","_options$onBlur","onBeforeFocus","$target","target","focusTarget","url","HTMLAnchorElement","inputId","getFragmentFromUrl","href","$legendOrLabel","getAssociatedLegendOrLabel","scrollIntoView","preventScroll","_document$querySelect","$fieldset","closest","$legends","getElementsByTagName","$candidateLegend","HTMLInputElement","legendTop","getBoundingClientRect","top","inputRect","height","innerHeight","$topNavigation","$breadcrumbsList","contains","$expandable","style","display","$expandButton","innerHTML","nextSibling","$yearWrapper","$yearInput","$monthWrapper","$monthInput","$dayWrapper","$dayInput","update","isValidYear","showMonth","isValidMonth","showDay","hideDay","hideMonth","yearValue","isNaN","monthRawValue","monthIntValue","getXPathTo","body","tagName","ix","parentNode","siblings","childNodes","sibling","nodeType","getClosestElement","$startingElement","matchingElementSelectors","heading","$search","previousElementSibling","matchingElementSelector","parentElement","getClosestHeading","valueGetters","text","$el","html","instance","checked","expanded","closestHeading","xpath","areaName","rootEventName","rootData","data_component_name","eventName","targetElement","state","data_link_type","data_link","group","_$scope$closest","_$scope$querySelector","_$scope$querySelector2","getFileDetails","file","size","_$scope$closest2","_$scope$closest3","data_section","media_type","media_duration","media_provider","media_title","media_progress","$itemButton","media_action","_$scope$querySelector3","onCondition","data_position","image","imageSrc","imageAlt","componentAnalytics","BreadcrumbAnalytics","CheckboxesAnalytics","DetailsAnalytics","FooterAnalytics","GalleryAnalytics","GlobalHeaderAnalytics","HeaderAnalytics","PictureAnalytics","RadiosAnalytics","SearchFieldAnalytics","SidebarAnalytics","TextInputAnalytics","TextareaAnalytics","EventTracker","Date","_options$prefix","prefix","_options$documentScop","documentScope","navigator","doNotTrack","isPolicyAccepted","enableTracking","disableTracking","componentConfig","addListeners","scopeArray","rootDefaultData","_typeof","scopeIndex","eventConfig","attachListener","_this4","_eventConfig$rootData","_eventConfig$onCondit","computedValueParameters","computedValue","recordEvent","generateEventName","xPath","timeSincePageLoad","startTime","entries","_ref","_ref2","_slicedToArray","valueOrFunction","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","dataLayer","gTagId","ga4Disable","start","_inherits","_this7","ga4Data","_ref3","_ref4","pushToDataLayer","trackingEnabled","trackingCodeAdded","Error","getTnaMetaTags","getUserPreferences","getTime","firstScript","script","async","src","_this8","startsWith","ga4Id","ga4","helpers","$textInputWrapper","$textInputPasswordToggle","updateTogglePasswordButtonText","togglePasswordType","$themeSelector","$tnaTemplate","$themeSelectorButtons","$themeSelectorButton","$button","setTheme","selectThemeSelectorButton","showThemeSelector","hideThemeSelector","$currentThemeButton","find","theme","$selectedButton","allowMultipleItemsOpen","singleOpenItem","initItem","initState","$toggleAllButton","syncToggleAllButton","isAllOpen","closeItem","openItem","$heading","$content","$headingButton","closeAllItemsExcept","$excludeItem","closeAllLabel","openAllLabel","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","d","definition","o","defineProperty","enumerable","obj","prop","prototype","hasOwnProperty","r","Symbol","toStringTag"],"sourceRoot":""}