@nationalarchives/frontend 0.38.0 → 0.40.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 (95) hide show
  1. package/nationalarchives/all+analytics.js +2 -1
  2. package/nationalarchives/all+analytics.js.LICENSE.txt +1 -0
  3. package/nationalarchives/all+analytics.js.map +1 -1
  4. package/nationalarchives/all.css +1 -1
  5. package/nationalarchives/all.css.map +1 -1
  6. package/nationalarchives/all.js +2 -1
  7. package/nationalarchives/all.js.LICENSE.txt +1 -0
  8. package/nationalarchives/all.js.map +1 -1
  9. package/nationalarchives/all.mjs +17 -2
  10. package/nationalarchives/assets/images/icon-1024x1024-dark.png +0 -0
  11. package/nationalarchives/assets/images/icon-1024x1024.png +0 -0
  12. package/nationalarchives/assets/images/icon-120x120-dark.png +0 -0
  13. package/nationalarchives/assets/images/icon-120x120.png +0 -0
  14. package/nationalarchives/assets/images/icon-144x144-dark.png +0 -0
  15. package/nationalarchives/assets/images/icon-144x144.png +0 -0
  16. package/nationalarchives/assets/images/icon-152x152-dark.png +0 -0
  17. package/nationalarchives/assets/images/icon-152x152.png +0 -0
  18. package/nationalarchives/assets/images/icon-167x167-dark.png +0 -0
  19. package/nationalarchives/assets/images/icon-167x167.png +0 -0
  20. package/nationalarchives/assets/images/icon-180x180-dark.png +0 -0
  21. package/nationalarchives/assets/images/icon-180x180.png +0 -0
  22. package/nationalarchives/assets/images/icon-192x192-dark.png +0 -0
  23. package/nationalarchives/assets/images/icon-192x192.png +0 -0
  24. package/nationalarchives/assets/images/icon-256x256-dark.png +0 -0
  25. package/nationalarchives/assets/images/icon-256x256.png +0 -0
  26. package/nationalarchives/assets/images/icon-48x48-dark.png +0 -0
  27. package/nationalarchives/assets/images/icon-48x48.png +0 -0
  28. package/nationalarchives/assets/images/icon-512x512-dark.png +0 -0
  29. package/nationalarchives/assets/images/icon-512x512.png +0 -0
  30. package/nationalarchives/assets/images/icon-72x72-dark.png +0 -0
  31. package/nationalarchives/assets/images/icon-72x72.png +0 -0
  32. package/nationalarchives/assets/images/icon-96x96-dark.png +0 -0
  33. package/nationalarchives/assets/images/icon-96x96.png +0 -0
  34. package/nationalarchives/assets/images/tna-square-logo-dark.svg +8 -0
  35. package/nationalarchives/assets/images/tna-square-logo-light.svg +8 -0
  36. package/nationalarchives/assets/images/tna-square-logo.svg +3 -3
  37. package/nationalarchives/code-block.css +1 -0
  38. package/nationalarchives/code-block.css.map +1 -0
  39. package/nationalarchives/code-block.scss +257 -0
  40. package/nationalarchives/components/accordion/accordion.css.map +1 -1
  41. package/nationalarchives/components/accordion/accordion.js +1 -1
  42. package/nationalarchives/components/accordion/accordion.js.map +1 -1
  43. package/nationalarchives/components/accordion/accordion.mjs +1 -1
  44. package/nationalarchives/components/back-link/back-link.css.map +1 -1
  45. package/nationalarchives/components/breadcrumbs/breadcrumbs.css.map +1 -1
  46. package/nationalarchives/components/button/button.css.map +1 -1
  47. package/nationalarchives/components/card/card.css.map +1 -1
  48. package/nationalarchives/components/checkboxes/checkboxes.css.map +1 -1
  49. package/nationalarchives/components/compound-filters/compound-filters.css +1 -1
  50. package/nationalarchives/components/compound-filters/compound-filters.css.map +1 -1
  51. package/nationalarchives/components/compound-filters/compound-filters.scss +3 -6
  52. package/nationalarchives/components/details/details.css.map +1 -1
  53. package/nationalarchives/components/error-summary/error-summary.css.map +1 -1
  54. package/nationalarchives/components/fieldset/fieldset.css.map +1 -1
  55. package/nationalarchives/components/file-input/file-input.css.map +1 -1
  56. package/nationalarchives/components/files-list/files-list.css.map +1 -1
  57. package/nationalarchives/components/footer/fixtures.json +8 -8
  58. package/nationalarchives/components/footer/footer.css.map +1 -1
  59. package/nationalarchives/components/footer/template.njk +4 -4
  60. package/nationalarchives/components/gallery/gallery.css.map +1 -1
  61. package/nationalarchives/components/global-header/fixtures.json +11 -11
  62. package/nationalarchives/components/global-header/global-header.css.map +1 -1
  63. package/nationalarchives/components/global-header/template.njk +1 -1
  64. package/nationalarchives/components/header/fixtures.json +4 -4
  65. package/nationalarchives/components/header/header.css.map +1 -1
  66. package/nationalarchives/components/index-grid/index-grid.css.map +1 -1
  67. package/nationalarchives/components/pagination/pagination.css.map +1 -1
  68. package/nationalarchives/components/phase-banner/phase-banner.css.map +1 -1
  69. package/nationalarchives/components/quick-filters/quick-filters.css.map +1 -1
  70. package/nationalarchives/components/radios/radios.css.map +1 -1
  71. package/nationalarchives/components/secondary-navigation/secondary-navigation.css.map +1 -1
  72. package/nationalarchives/components/sidebar/sidebar.css.map +1 -1
  73. package/nationalarchives/components/skip-link/skip-link.css.map +1 -1
  74. package/nationalarchives/components/tabs/tabs.css.map +1 -1
  75. package/nationalarchives/components/warning/warning.css.map +1 -1
  76. package/nationalarchives/email.css +1 -1
  77. package/nationalarchives/email.css.map +1 -1
  78. package/nationalarchives/error-page.css +1 -1
  79. package/nationalarchives/error-page.css.map +1 -1
  80. package/nationalarchives/ie.css.map +1 -1
  81. package/nationalarchives/lib/helpers.mjs +59 -0
  82. package/nationalarchives/prototype-kit.css +1 -1
  83. package/nationalarchives/prototype-kit.css.map +1 -1
  84. package/nationalarchives/templates/fixtures.json +10 -10
  85. package/nationalarchives/templates/layouts/email.njk +4 -2
  86. package/nationalarchives/templates/partials/logo/template.njk +1 -1
  87. package/nationalarchives/tools/_a11y.scss +10 -0
  88. package/nationalarchives/utilities/lists/_index.scss +17 -11
  89. package/nationalarchives/utilities/tables/_index.scss +2 -4
  90. package/nationalarchives/utilities/typography/_index.scss +34 -0
  91. package/nationalarchives/variables/_typography.scss +2 -0
  92. package/package.json +2 -1
  93. package/nationalarchives/components/cookie-banner/README.md +0 -87
  94. package/nationalarchives/components/global-header/README.md +0 -52
  95. package/nationalarchives/lib/tables.mjs +0 -27
@@ -1 +1 @@
1
- {"version":3,"file":"all.js","mappings":"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","sources":["webpack://TNAFrontend/webpack/universalModuleDefinition","webpack://TNAFrontend/./src/nationalarchives/components/accordion/accordion.mjs","webpack://TNAFrontend/./src/nationalarchives/components/breadcrumbs/breadcrumbs.mjs","webpack://TNAFrontend/./src/nationalarchives/components/cookie-banner/cookie-banner.mjs","webpack://TNAFrontend/./src/nationalarchives/components/date-input/date-input.mjs","webpack://TNAFrontend/./src/nationalarchives/components/error-summary/error-summary.mjs","webpack://TNAFrontend/./src/nationalarchives/components/file-input/file-input.mjs","webpack://TNAFrontend/./src/nationalarchives/components/footer/footer.mjs","webpack://TNAFrontend/./src/nationalarchives/components/gallery/gallery.mjs","webpack://TNAFrontend/./src/nationalarchives/components/global-header/global-header.mjs","webpack://TNAFrontend/./src/nationalarchives/components/header/header.mjs","webpack://TNAFrontend/./src/nationalarchives/components/picture/picture.mjs","webpack://TNAFrontend/./src/nationalarchives/components/skip-link/skip-link.mjs","webpack://TNAFrontend/./src/nationalarchives/components/tabs/tabs.mjs","webpack://TNAFrontend/./src/nationalarchives/components/text-input/text-input.mjs","webpack://TNAFrontend/./src/nationalarchives/components/textarea/textarea.mjs","webpack://TNAFrontend/./src/nationalarchives/lib/cookies.mjs","webpack://TNAFrontend/./src/nationalarchives/lib/tables.mjs","webpack://TNAFrontend/./src/nationalarchives/lib/uuid.mjs","webpack://TNAFrontend/webpack/bootstrap","webpack://TNAFrontend/webpack/runtime/define property getters","webpack://TNAFrontend/webpack/runtime/hasOwnProperty shorthand","webpack://TNAFrontend/webpack/runtime/make namespace object","webpack://TNAFrontend/./src/nationalarchives/lib/helpers.mjs","webpack://TNAFrontend/./src/nationalarchives/all.mjs"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"TNAFrontend\"] = factory();\n\telse\n\t\troot[\"TNAFrontend\"] = factory();\n})(self, () => {\nreturn ","import { checkTableForScroll } from \"../../lib/tables.mjs\";\n\nexport class Accordion {\n constructor($module) {\n this.$module = $module;\n this.$items = $module && $module.querySelectorAll(\".tna-accordion__item\");\n if (!this.$module || !this.$items) {\n return;\n }\n\n this.allowMultipleItemsOpen =\n this.$module.dataset.singleOpenItem !== \"true\";\n\n this.$items.forEach(($item) => this.initItem($item));\n this.initState();\n\n this.$toggleAllButton = this.$module.querySelector(\n \".tna-accordion__toggle-all\",\n );\n if (this.$toggleAllButton) {\n this.syncToggleAllButton();\n this.$toggleAllButton.removeAttribute(\"hidden\");\n this.$toggleAllButton.addEventListener(\"click\", () => {\n if (this.isAllOpen()) {\n this.$items.forEach(($item) => this.closeItem($item));\n } else {\n this.$items.forEach(($item) => this.openItem($item));\n }\n this.syncToggleAllButton();\n });\n }\n }\n\n initItem($item) {\n const $heading = $item.querySelector(\".tna-accordion__heading\");\n const $content = $item.querySelector(\".tna-accordion__body\");\n\n if (!$heading || !$content) {\n return;\n }\n\n $item.classList.add(\"tna-accordion__details\");\n $item.classList.remove(\"tna-accordion__item\");\n\n $heading.removeAttribute(\"class\");\n\n $content.classList.add(\"tna-accordion__content\");\n $content.classList.remove(\"tna-accordion__body\");\n $content.setAttribute(\"hidden\", \"\");\n\n const $headingButton = document.createElement(\"button\");\n $headingButton.classList.add(\"tna-accordion__summary\");\n $headingButton.setAttribute(\"type\", \"button\");\n $headingButton.setAttribute(\"aria-controls\", $content.id);\n $headingButton.innerText = $heading.innerText;\n $heading.innerText = \"\";\n $heading.appendChild($headingButton);\n\n $headingButton.addEventListener(\"click\", () => {\n const isOpen = $headingButton.getAttribute(\"aria-expanded\") === \"true\";\n if (isOpen) {\n this.closeItem($item);\n } else {\n this.openItem($item);\n }\n });\n }\n\n initState() {\n this.$items.forEach(($item) => {\n if ($item.dataset[\"isopen\"] === \"true\") {\n this.openItem($item);\n } else {\n this.closeItem($item);\n }\n $item.removeAttribute(\"data-isopen\");\n });\n }\n\n openItem($item) {\n if (!this.allowMultipleItemsOpen) {\n this.closeAllItemsExcept($item);\n }\n const $headingButton = $item.querySelector(\".tna-accordion__summary\");\n const $content = $item.querySelector(\".tna-accordion__content\");\n $headingButton.setAttribute(\"aria-expanded\", \"true\");\n $headingButton.setAttribute(\n \"aria-label\",\n `${$headingButton.innerText.trim()}, Hide this section`,\n );\n $content.removeAttribute(\"hidden\");\n // $content.setAttribute(\"tabindex\", \"0\");\n this.syncToggleAllButton();\n\n const $tableWrapper = $content.querySelectorAll(\".tna-table-wrapper\");\n if ($tableWrapper) {\n $tableWrapper.forEach(($wrapper) => {\n checkTableForScroll($wrapper);\n });\n }\n }\n\n closeItem($item) {\n const $headingButton = $item.querySelector(\".tna-accordion__summary\");\n const $content = $item.querySelector(\".tna-accordion__content\");\n $headingButton.setAttribute(\"aria-expanded\", \"false\");\n $headingButton.setAttribute(\n \"aria-label\",\n `${$headingButton.innerText.trim()}, Show this section`,\n );\n $content.setAttribute(\"hidden\", \"\");\n // $content.setAttribute(\"tabindex\", \"-1\");\n this.syncToggleAllButton();\n }\n\n closeAllItemsExcept($excludeItem) {\n Array.from(this.$items)\n .filter(\n ($item) =>\n $item.querySelector(\".tna-accordion__summary\") !== $excludeItem &&\n $item\n .querySelector(\".tna-accordion__summary\")\n .getAttribute(\"aria-expanded\") === \"true\",\n )\n .forEach(($item) => this.closeItem($item));\n }\n\n isAllOpen() {\n return Array.from(this.$items).every(\n ($item) =>\n $item\n .querySelector(\".tna-accordion__summary\")\n .getAttribute(\"aria-expanded\") === \"true\",\n );\n }\n\n syncToggleAllButton() {\n if (this.$toggleAllButton) {\n if (this.isAllOpen()) {\n this.$toggleAllButton.innerText =\n this.$toggleAllButton.dataset.closeAllLabel || \"Hide all sections\";\n } else {\n this.$toggleAllButton.innerText =\n this.$toggleAllButton.dataset.openAllLabel || \"Show all sections\";\n }\n }\n }\n}\n","import uuidv4 from \"../../lib/uuid.mjs\";\n\nexport class Breadcrumbs {\n constructor($module) {\n this.$module = $module;\n this.$breadcrumbsList =\n $module && $module.querySelector(\".tna-breadcrumbs__list\");\n this.$breadcrumbs =\n $module &&\n this.$breadcrumbsList &&\n $module.querySelectorAll(\".tna-breadcrumbs__item\");\n\n if (this.$module && this.$breadcrumbsList && this.$breadcrumbs) {\n if (\n this.$breadcrumbs.length > 2 &&\n !this.$module.classList.contains(\"tna-breadcrumbs--no-collapse\")\n ) {\n const uniqueId = `tna-breadcrumbs-${uuidv4()}`;\n\n const $expandable = document.createElement(\"li\");\n $expandable.classList.add(\n \"tna-breadcrumbs__item\",\n \"tna-breadcrumbs__item--expandable\",\n );\n $expandable.style.display = \"none\";\n\n const $expandButton = document.createElement(\"button\");\n $expandButton.classList.add(\"tna-breadcrumbs__link\");\n $expandButton.innerHTML =\n \"<span class='tna-!--visually-hidden'>Expand breadcrumbs</span>&hellip;\";\n $expandButton.setAttribute(\"type\", \"button\");\n $expandButton.setAttribute(\"aria-expanded\", \"false\");\n $expandButton.setAttribute(\"aria-controls\", uniqueId);\n $expandButton.addEventListener(\"click\", () => {\n this.$module.classList.remove(\"tna-breadcrumbs--collapsed\");\n $expandable.remove();\n this.$module.setAttribute(\"tabindex\", \"0\");\n this.$module.focus();\n this.$module.addEventListener(\n \"blur\",\n () => {\n this.$module.removeAttribute(\"tabindex\");\n },\n { once: true },\n );\n });\n $expandable.appendChild($expandButton);\n\n this.$breadcrumbsList.setAttribute(\"id\", uniqueId);\n this.$breadcrumbsList.insertBefore(\n $expandable,\n this.$breadcrumbs[this.$breadcrumbs.length - 2].nextSibling,\n );\n\n this.$module.classList.add(\"tna-breadcrumbs--collapsed\");\n }\n }\n }\n}\n","import Cookies from \"../../lib/cookies.mjs\";\n\nexport { Cookies };\n\nexport class CookieBanner {\n constructor($module) {\n this.$module = $module;\n this.$acceptButton = $module && $module.querySelector('[value=\"accept\"]');\n this.$rejectButton = $module && $module.querySelector('[value=\"reject\"]');\n this.$prompt =\n $module && $module.querySelector(\".tna-cookie-banner__message--prompt\");\n this.$acceptedMessage =\n $module && $module.querySelector(\".tna-cookie-banner__message--accepted\");\n this.$rejectedMessage =\n $module && $module.querySelector(\".tna-cookie-banner__message--rejected\");\n this.$closeButtons = $module && $module.querySelectorAll('[value=\"close\"]');\n\n if (\n !this.$module ||\n !this.$acceptButton ||\n !this.$rejectButton ||\n !this.$prompt ||\n !this.$acceptedMessage ||\n !this.$rejectedMessage ||\n !this.$closeButtons\n ) {\n return;\n }\n\n this.cookies = new Cookies({ newInstance: true });\n\n this.cookiePreferencesSetKey =\n this.$module.dataset.preferencesKey || \"cookie_preferences_set\";\n\n if (!this.cookies.policiesCorrectOnInit) {\n this.cookies.delete(this.cookiePreferencesSetKey);\n }\n\n if (\n !this.cookies.exists(this.cookiePreferencesSetKey) ||\n !this.cookies.hasValue(this.cookiePreferencesSetKey, \"true\")\n ) {\n this.$module.removeAttribute(\"hidden\");\n\n this.$acceptButton.addEventListener(\"click\", () => this.accept());\n this.$rejectButton.addEventListener(\"click\", () => this.reject());\n }\n }\n\n accept() {\n this.$prompt.setAttribute(\"hidden\", \"\");\n this.complete();\n this.cookies.acceptAllPolicies();\n this.$acceptedMessage.removeAttribute(\"hidden\");\n this.$acceptedMessage.setAttribute(\"tabindex\", \"0\");\n this.$acceptedMessage.focus();\n this.$acceptedMessage.addEventListener(\"blur\", () => {\n this.$acceptedMessage.removeAttribute(\"tabindex\");\n });\n }\n\n reject() {\n this.$prompt.setAttribute(\"hidden\", \"\");\n this.complete();\n this.cookies.rejectAllPolicies();\n this.$rejectedMessage.removeAttribute(\"hidden\");\n this.$rejectedMessage.setAttribute(\"tabindex\", \"0\");\n this.$rejectedMessage.focus();\n this.$rejectedMessage.addEventListener(\"blur\", () => {\n this.$rejectedMessage.removeAttribute(\"tabindex\");\n });\n }\n\n complete() {\n this.cookies.set(this.cookiePreferencesSetKey, true);\n this.$closeButtons.forEach(($closeButton) => {\n $closeButton.addEventListener(\"click\", () => this.close());\n });\n }\n\n close() {\n this.$module.setAttribute(\"hidden\", \"\");\n }\n}\n","import Cookies from \"../../lib/cookies.mjs\";\n\nexport { Cookies };\n\nexport class DateInputProgressive {\n constructor($module) {\n this.$module = $module;\n this.$yearWrapper =\n $module && $module.querySelector(\".tna-date-input__item--year\");\n this.$yearInput =\n this.$yearWrapper && this.$yearWrapper.querySelector(\"input\");\n this.$monthWrapper =\n $module && $module.querySelector(\".tna-date-input__item--month\");\n this.$monthInput =\n this.$monthWrapper && this.$monthWrapper.querySelector(\"input\");\n this.$dayWrapper =\n $module && $module.querySelector(\".tna-date-input__item--day\");\n this.$dayInput =\n this.$dayWrapper && this.$dayWrapper.querySelector(\"input\");\n\n if (!this.$module) {\n return;\n }\n\n this.update();\n window.addEventListener(\"pageshow\", () => this.update());\n\n if (this.$yearInput) {\n this.$yearInput.addEventListener(\"keyup\", () => this.update());\n this.$yearInput.addEventListener(\"change\", () => this.update());\n }\n if (this.$monthInput) {\n this.$monthInput.addEventListener(\"keyup\", () => this.update());\n this.$monthInput.addEventListener(\"change\", () => this.update());\n }\n if (this.$dayInput) {\n this.$dayInput.addEventListener(\"keyup\", () => this.update());\n this.$dayInput.addEventListener(\"change\", () => this.update());\n }\n }\n\n update() {\n if (this.isValidYear()) {\n this.showMonth();\n if (this.isValidMonth()) {\n this.showDay();\n } else {\n this.hideDay();\n }\n } else {\n this.hideMonth();\n this.hideDay();\n }\n }\n\n isValidYear() {\n if (!this.$yearInput) {\n return true;\n }\n const yearValue = parseInt(this.$yearInput.value.trim());\n return !isNaN(this.$yearInput.value) && !isNaN(yearValue) && yearValue > 0;\n }\n\n isValidMonth() {\n if (!this.$monthInput) {\n return true;\n }\n const monthRawValue = this.$monthInput.value.trim();\n const monthIntValue = parseInt(monthRawValue);\n const validMonthStrings = [\n \"january\",\n \"february\",\n \"march\",\n \"april\",\n \"may\",\n \"june\",\n \"july\",\n \"august\",\n \"september\",\n \"october\",\n \"november\",\n \"december\",\n \"jan\",\n \"feb\",\n \"mar\",\n \"apr\",\n \"jun\",\n \"jul\",\n \"aug\",\n \"sep\",\n \"oct\",\n \"nov\",\n \"dec\",\n ];\n return (\n (!isNaN(this.$monthInput.value) &&\n !isNaN(monthIntValue) &&\n monthIntValue > 0 &&\n monthIntValue <= 12) ||\n validMonthStrings.includes(monthRawValue.toLowerCase())\n );\n }\n\n showMonth() {\n if (this.$monthWrapper) {\n this.$monthWrapper.removeAttribute(\"hidden\");\n }\n }\n\n hideMonth() {\n if (this.$monthWrapper) {\n this.$monthWrapper.setAttribute(\"hidden\", \"\");\n }\n }\n\n showDay() {\n if (this.$dayWrapper) {\n this.$dayWrapper.removeAttribute(\"hidden\");\n }\n }\n\n hideDay() {\n if (this.$dayWrapper) {\n this.$dayWrapper.setAttribute(\"hidden\", \"\");\n }\n }\n}\n","export class ErrorSummary {\n constructor($module) {\n this.$module = $module;\n }\n\n init() {\n if (!this.$module) {\n return;\n }\n\n const disableAutoFocus =\n this.$module.dataset.disableAutofocus === \"true\" || false;\n\n if (!disableAutoFocus) {\n this.setFocus(this.$module);\n }\n\n this.$module.addEventListener(\"click\", (event) => this.handleClick(event));\n }\n\n setFocus($element, options = {}) {\n const isFocusable = $element.getAttribute(\"tabindex\");\n\n if (!isFocusable) {\n $element.setAttribute(\"tabindex\", \"-1\");\n }\n\n /**\n * Handle element focus\n */\n function onFocus() {\n $element.addEventListener(\"blur\", onBlur, { once: true });\n }\n\n /**\n * Handle element blur\n */\n function onBlur() {\n options.onBlur?.call($element);\n\n if (!isFocusable) {\n $element.removeAttribute(\"tabindex\");\n }\n }\n\n // Add listener to reset element on blur, after focus\n $element.addEventListener(\"focus\", onFocus, { once: true });\n\n // Focus element\n options.onBeforeFocus?.call($element);\n $element.focus();\n }\n\n handleClick(event) {\n const $target = event.target;\n if ($target && this.focusTarget($target)) {\n event.preventDefault();\n }\n }\n\n getFragmentFromUrl(url) {\n if (!url.includes(\"#\")) {\n return undefined;\n }\n\n return url.split(\"#\").pop();\n }\n\n focusTarget($target) {\n // If the element that was clicked was not a link, return early\n if (!($target instanceof HTMLAnchorElement)) {\n return false;\n }\n\n const inputId = this.getFragmentFromUrl($target.href);\n if (!inputId) {\n return false;\n }\n\n const $input = document.getElementById(inputId);\n if (!$input) {\n return false;\n }\n\n const $legendOrLabel = this.getAssociatedLegendOrLabel($input);\n if (!$legendOrLabel) {\n return false;\n }\n\n // Scroll the legend or label into view *before* calling focus on the input\n // to avoid extra scrolling in browsers that don't support `preventScroll`\n // (which at time of writing is most of them...)\n $legendOrLabel.scrollIntoView();\n $input.focus({ preventScroll: true });\n\n return true;\n }\n\n /**\n * Get associated legend or label\n *\n * Returns the first element that exists from this list:\n *\n * - The `<legend>` associated with the closest `<fieldset>` ancestor, as long\n * as the top of it is no more than half a viewport height away from the\n * bottom of the input\n * - The first `<label>` that is associated with the input using for=\"inputId\"\n * - The closest parent `<label>`\n *\n * @private\n * @param {Element} $input - The input\n * @returns {Element | null} Associated legend or label, or null if no\n * associated legend or label can be found\n */\n getAssociatedLegendOrLabel($input) {\n const $fieldset = $input.closest(\"fieldset\");\n\n if ($fieldset) {\n const $legends = $fieldset.getElementsByTagName(\"legend\");\n\n if ($legends.length) {\n const $candidateLegend = $legends[0];\n\n // If the input type is radio or checkbox, always use the legend if\n // there is one.\n if (\n $input instanceof HTMLInputElement &&\n ($input.type === \"checkbox\" || $input.type === \"radio\")\n ) {\n return $candidateLegend;\n }\n\n // For other input types, only scroll to the fieldset’s legend (instead\n // of the label associated with the input) if the input would end up in\n // the top half of the screen.\n //\n // This should avoid situations where the input either ends up off the\n // screen, or obscured by a software keyboard.\n const legendTop = $candidateLegend.getBoundingClientRect().top;\n const inputRect = $input.getBoundingClientRect();\n\n // If the browser doesn't support Element.getBoundingClientRect().height\n // or window.innerHeight (like IE8), bail and just link to the label.\n if (inputRect.height && window.innerHeight) {\n const inputBottom = inputRect.top + inputRect.height;\n\n if (inputBottom - legendTop < window.innerHeight / 2) {\n return $candidateLegend;\n }\n }\n }\n }\n\n return (\n document.querySelector(`label[for='${$input.getAttribute(\"id\")}']`) ??\n $input.closest(\"label\")\n );\n }\n}\n","export class FileInputDroppable {\n constructor($module) {\n this.$module = $module;\n this.$body = $module && $module.querySelector(\".tna-form-item__body\");\n this.$input = this.$body && this.$body.querySelector(\".tna-file-input\");\n\n if (!this.$module || !this.$body || !this.$input) {\n return;\n }\n\n this.acceptMutltipleFiles = this.$input.hasAttribute(\"multiple\");\n\n this.$droppableArea = document.createElement(\"div\");\n this.$droppableArea.classList.add(\n \"tna-file-input__droppable\",\n \"tna-file-input__droppable--empty\",\n );\n this.$body.insertBefore(this.$droppableArea, this.$input);\n this.$droppableArea.appendChild(this.$input);\n\n this.$pseudoSelectFileText = document.createElement(\"span\");\n this.$pseudoSelectFileText.setAttribute(\"aria-live\", \"polite\");\n this.$pseudoSelectFileText.classList.add(\n \"tna-file-input__droppable-status\",\n );\n this.$pseudoSelectFileText.textContent = `No file${this.acceptMutltipleFiles ? \"s\" : \"\"} selected`;\n this.$droppableArea.appendChild(this.$pseudoSelectFileText);\n\n const $droppableButtons = document.createElement(\"div\");\n $droppableButtons.classList.add(\n \"tna-button-group\",\n \"tna-button-group--small\",\n \"tna-!--margin-top-s\",\n \"tna-file-input__droppable-buttons\",\n );\n this.$droppableArea.appendChild($droppableButtons);\n\n const $pseudoSelectFileButton = document.createElement(\"span\");\n $pseudoSelectFileButton.classList.add(\"tna-button\");\n $pseudoSelectFileButton.textContent = `Choose file${this.acceptMutltipleFiles ? \"s\" : \"\"}`;\n $droppableButtons.appendChild($pseudoSelectFileButton);\n\n const $pseudoDropFileButton = document.createElement(\"span\");\n $pseudoDropFileButton.textContent = `or drop file${this.acceptMutltipleFiles ? \"s\" : \"\"}`;\n $droppableButtons.appendChild($pseudoDropFileButton);\n\n this.$droppableAreaAriaLabel = document.createElement(\"span\");\n this.$droppableAreaAriaLabel.classList.add(\"tna-visually-hidden\");\n this.$droppableAreaAriaLabel.setAttribute(\"aria-live\", \"assertive\");\n this.$droppableArea.appendChild(this.$droppableAreaAriaLabel);\n\n this.$input.addEventListener(\"dragenter\", (e) => this.showDropTarget(e));\n this.$input.addEventListener(\"dragleave\", () => this.hideDropTarget());\n this.$input.addEventListener(\"dragend\", () => this.hideDropTarget());\n this.$input.addEventListener(\"change\", () => this.onChange());\n this.$input.addEventListener(\"drop\", () => this.onChange());\n }\n\n isContainingFiles(dataTransfer) {\n const hasNoTypesInfo = dataTransfer.types.length === 0;\n const isDraggingFiles = dataTransfer.types.some((type) => type === \"Files\");\n return hasNoTypesInfo || isDraggingFiles;\n }\n\n showDropTarget(event, updateAriaLabel = true) {\n if (event.dataTransfer && this.isContainingFiles(event.dataTransfer)) {\n this.$droppableArea.classList.add(\n event.dataTransfer.items.length > 1\n ? \"tna-file-input__droppable--over-multiple\"\n : \"tna-file-input__droppable--over\",\n );\n\n if (updateAriaLabel) {\n this.$droppableAreaAriaLabel.textContent = \"Entered drop zone\";\n }\n }\n }\n\n hideDropTarget(updateAriaLabel = true) {\n this.$droppableArea.classList.remove(\n \"tna-file-input__droppable--over\",\n \"tna-file-input__droppable--over-multiple\",\n );\n if (updateAriaLabel) {\n this.$droppableAreaAriaLabel.textContent = \"Left drop zone\";\n }\n }\n\n onChange() {\n const files = this.$input.files;\n if (this.acceptMutltipleFiles) {\n if (files.length === 0) {\n this.$pseudoSelectFileText.textContent = `No files selected`;\n } else {\n this.$pseudoSelectFileText.textContent = `${files.length} file${files.length > 1 ? \"s\" : \"\"} selected`;\n }\n } else {\n this.$pseudoSelectFileText.textContent =\n files[0]?.name || `No file selected`;\n }\n if (files.length === 0) {\n this.$droppableArea.classList.add(\"tna-file-input__droppable--empty\");\n } else {\n this.$droppableArea.classList.remove(\"tna-file-input__droppable--empty\");\n }\n this.hideDropTarget(false);\n }\n}\n","import Cookies from \"../../lib/cookies.mjs\";\n\nexport class Footer {\n constructor($module, themeCookieName = \"theme\") {\n this.$module = $module;\n this.$themeSelector =\n $module && $module.querySelector(\".tna-footer__theme-selector\");\n this.$themeSelectorNotice =\n $module && $module.querySelector(\".tna-footer__theme-selector-notice\");\n this.$themeSelectorEnableSettingsCookiesButton =\n this.$themeSelectorNotice &&\n this.$themeSelectorNotice.querySelector(\n \".tna-footer__theme-selector-enable-settings-cookies\",\n );\n this.$tnaTemplate = document.querySelector(\".tna-template\");\n\n if (\n !this.$module ||\n !this.$themeSelector ||\n !this.$themeSelectorNotice ||\n !this.$themeSelectorEnableSettingsCookiesButton ||\n !this.$tnaTemplate\n ) {\n return;\n }\n\n this.currentTheme = this.$themeSelector.dataset.themeOnLoad;\n\n this.themeCookieName = themeCookieName;\n\n this.cookies = new Cookies();\n\n this.$themeSelectorButtons = this.$themeSelector.querySelectorAll(\n \"button.tna-footer__theme-selector-button[value]\",\n );\n\n Array.from(this.$themeSelectorButtons).forEach(($themeSelectorButton) => {\n $themeSelectorButton.addEventListener(\"click\", (e) => {\n const $button = e.target;\n this.setTheme($button.value);\n this.selectThemeSelectorButton($button);\n });\n });\n\n this.$themeSelectorEnableSettingsCookiesButton.addEventListener(\n \"click\",\n () => {\n this.cookies.acceptPolicy(\"settings\");\n },\n );\n\n this.showThemeSelector();\n this.cookies.on(\"changePolicy\", (data) => {\n if (Object.hasOwn(data, \"settings\")) {\n if (data.settings === true) {\n this.cookies.set(this.themeCookieName, this.currentTheme);\n this.$themeSelectorNotice.setAttribute(\"hidden\", \"\");\n } else {\n this.cookies.delete(this.themeCookieName);\n this.$themeSelectorNotice.removeAttribute(\"hidden\");\n }\n }\n });\n }\n\n showThemeSelector() {\n this.$themeSelector.removeAttribute(\"hidden\");\n if (this.cookies.exists(this.themeCookieName)) {\n const $currentThemeButton = Array.from(this.$themeSelectorButtons).find(\n ($button) => $button.value === this.cookies.get(this.themeCookieName),\n );\n if ($currentThemeButton) {\n this.selectThemeSelectorButton($currentThemeButton);\n }\n }\n if (!this.cookies.isPolicyAccepted(\"settings\")) {\n this.$themeSelectorNotice.removeAttribute(\"hidden\");\n }\n }\n\n setTheme(theme) {\n if (theme === \"light\") {\n this.$tnaTemplate.classList.remove(\n \"tna-template--system-theme\",\n \"tna-template--dark-theme\",\n );\n } else if (theme === \"dark\") {\n this.$tnaTemplate.classList.remove(\"tna-template--system-theme\");\n this.$tnaTemplate.classList.add(`tna-template--dark-theme`);\n } else if (theme === \"system\") {\n this.$tnaTemplate.classList.remove(\"tna-template--dark-theme\");\n this.$tnaTemplate.classList.add(`tna-template--system-theme`);\n } else {\n return;\n }\n this.currentTheme = theme;\n if (this.cookies.isPolicyAccepted(\"settings\")) {\n this.cookies.set(this.themeCookieName, this.currentTheme);\n } else {\n this.$themeSelectorNotice.removeAttribute(\"hidden\");\n }\n }\n\n selectThemeSelectorButton($selectedButton) {\n Array.from(this.$themeSelectorButtons).forEach(($button) => {\n if ($button.value === $selectedButton.value) {\n $button.classList.remove(\"tna-button--plain\");\n $button.setAttribute(\"aria-current\", true);\n } else {\n $button.classList.add(\"tna-button--plain\");\n $button.removeAttribute(\"aria-current\");\n }\n });\n }\n}\n","export class Gallery {\n constructor($module) {\n this.$module = $module;\n this.$itemsContainer =\n $module && $module.querySelector(\".tna-gallery__items\");\n this.$items =\n this.$itemsContainer &&\n this.$itemsContainer.querySelectorAll(\".tna-gallery__item\");\n this.$navigation =\n $module && $module.querySelector(\".tna-gallery__navigation\");\n this.$navigationItems =\n this.$navigation &&\n $module.querySelectorAll(\".tna-gallery__navigation-item\");\n this.$navigationButtons =\n $module && $module.querySelector(\".tna-gallery__navigation-buttons\");\n\n if (\n !this.$module ||\n !this.$itemsContainer ||\n !this.$items ||\n this.$items.length < 2 ||\n !this.$navigation ||\n !this.$navigationItems ||\n !this.$navigationButtons\n ) {\n return;\n }\n\n this.$module.classList.add(\"tna-gallery--interactive\");\n\n this.$navigationButtonPrev = this.$navigationButtons.querySelector(\n \".tna-gallery__navigation-prev\",\n );\n this.$navigationButtonNext = this.$navigationButtons.querySelector(\n \".tna-gallery__navigation-next\",\n );\n\n this.setup();\n this.currentId = this.$items[0].id;\n this.showItem(this.currentId);\n }\n\n setup() {\n this.$items.forEach(($item) => {\n $item.setAttribute(\"hidden\", \"\");\n $item.setAttribute(\"aria-hidden\", \"true\");\n $item\n .querySelector(\".tna-gallery__item-header\")\n ?.setAttribute(\"aria-hidden\", \"true\");\n });\n this.$navigation.removeAttribute(\"hidden\");\n this.$navigationItems.forEach(($item) => {\n $item.addEventListener(\"click\", () => {\n this.showItem($item.getAttribute(\"aria-controls\"));\n this.$itemsContainer.setAttribute(\"tabindex\", \"0\");\n this.$itemsContainer.focus();\n });\n });\n this.$module.addEventListener(\"keydown\", (e) => {\n let preventDefaultKeyAction = false;\n switch (e.key) {\n case \"ArrowLeft\":\n case \"ArrowUp\":\n this.showPreviousItem();\n preventDefaultKeyAction = true;\n break;\n case \"ArrowRight\":\n case \"ArrowDown\":\n this.showNextItem();\n preventDefaultKeyAction = true;\n break;\n case \"Home\":\n this.showFirstItem();\n preventDefaultKeyAction = true;\n break;\n case \"End\":\n this.showLastItem();\n preventDefaultKeyAction = true;\n break;\n }\n if (preventDefaultKeyAction) {\n e.stopPropagation();\n e.preventDefault();\n }\n });\n\n this.$navigationButtons?.removeAttribute(\"hidden\");\n this.$navigationButtonPrev?.addEventListener(\"click\", () => {\n this.showPreviousItem();\n });\n this.$navigationButtonNext?.addEventListener(\"click\", () => {\n this.showNextItem();\n });\n\n this.$liveRegion = document.createElement(\"div\");\n this.$liveRegion.setAttribute(\"aria-live\", \"polite\");\n this.$liveRegion.setAttribute(\"aria-atomic\", \"true\");\n this.$liveRegion.setAttribute(\"class\", \"tna-gallery__item-header\");\n this.$itemsContainer.prepend(this.$liveRegion);\n this.$itemsContainer.classList.add(\"tna-gallery__items--hide-item-titles\");\n this.$itemsContainer.addEventListener(\"blur\", () =>\n this.$itemsContainer.removeAttribute(\"tabindex\"),\n );\n }\n\n showItem(id) {\n this.$items.forEach(($item) => {\n if (id && $item.id === id) {\n $item.removeAttribute(\"hidden\");\n $item.removeAttribute(\"aria-hidden\");\n } else {\n $item.setAttribute(\"hidden\", \"\");\n $item.setAttribute(\"aria-hidden\", \"true\");\n }\n });\n this.$navigationItems.forEach(($item) => {\n if (id) {\n if ($item.getAttribute(\"aria-controls\") === id) {\n $item.setAttribute(\"aria-current\", \"true\");\n } else {\n $item.setAttribute(\"aria-current\", \"false\");\n }\n } else {\n $item.setAttribute(\"aria-current\", \"false\");\n }\n });\n this.currentId = id;\n this.$liveRegion.textContent = `Image ${this.getCurrentItemIndex() + 1} of ${this.$items.length}`;\n }\n\n getCurrentItemIndex() {\n return Array.from(this.$items).findIndex(\n ($item) => $item.id === this.currentId,\n );\n }\n\n showPreviousItem() {\n let nextIndexToShow = this.getCurrentItemIndex() - 1;\n if (nextIndexToShow < 0) {\n nextIndexToShow = this.$items.length - 1;\n }\n this.showItem(this.$items[nextIndexToShow].id);\n }\n\n showNextItem() {\n let nextIndexToShow = this.getCurrentItemIndex() + 1;\n if (nextIndexToShow >= this.$items.length) {\n nextIndexToShow = 0;\n }\n this.showItem(this.$items[nextIndexToShow].id);\n }\n\n showFirstItem() {\n this.showItem(this.$items[0].id);\n }\n\n showLastItem() {\n this.showItem(this.$items[this.$items.length - 1].id);\n }\n}\n","export class GlobalHeader {\n constructor($module) {\n this.$module = $module;\n this.$toggleButton =\n $module && $module.querySelector(\".tna-global-header__navigation-button\");\n this.$navigation =\n $module &&\n $module.querySelector(\".tna-global-header__navigation-wrapper\");\n this.$topNavigation =\n $module &&\n $module.querySelector(\".tna-global-header__top-navigation-wrapper\");\n this.$links =\n $module &&\n ((this.$navigation &&\n this.$navigation.querySelectorAll(\"[tabindex='0']\")) ||\n (this.$topNavigation &&\n this.$topNavigation.querySelectorAll(\"[tabindex='0']\")));\n this.menuOpened = false;\n this.mql = window.matchMedia(\"(max-width: 48em)\");\n\n if (\n !this.$module ||\n !this.$toggleButton ||\n (!this.$navigation && !this.$topNavigation)\n ) {\n return;\n }\n\n this.$toggleButton.removeAttribute(\"hidden\");\n this.syncState();\n this.$toggleButton.addEventListener(\"click\", () =>\n this.handleToggleNavigation(),\n );\n if (\"addEventListener\" in this.mql) {\n this.mql.addEventListener(\"change\", () => this.syncState());\n } else {\n this.mql.addListener(() => this.syncState());\n }\n\n this.$module.addEventListener(\"keyup\", (e) => {\n if (e.code === \"Escape\" && this.mql.matches) {\n if (this.menuOpened) {\n this.menuOpened = false;\n this.syncState();\n this.$toggleButton.focus();\n }\n }\n });\n }\n\n handleToggleNavigation() {\n this.menuOpened = !this.menuOpened;\n this.syncState();\n }\n\n syncState() {\n if (this.mql.matches) {\n if (this.menuOpened) {\n this.show();\n } else {\n this.hide();\n }\n } else {\n this.show();\n }\n }\n\n hide() {\n if (this.$navigation) {\n this.$navigation.hidden = true;\n this.$navigation.setAttribute(\"aria-hidden\", \"true\");\n }\n if (this.$topNavigation) {\n this.$topNavigation.hidden = true;\n this.$topNavigation.setAttribute(\"aria-hidden\", \"true\");\n }\n this.$toggleButton.setAttribute(\"aria-expanded\", \"false\");\n this.$toggleButton.setAttribute(\"title\", \"Open menu\");\n this.$toggleButton.classList.remove(\n \"tna-global-header__navigation-button--opened\",\n );\n for (let i = 0; i < this.$links.length; i++) {\n this.$links[i].setAttribute(\"tabindex\", \"-1\");\n }\n }\n\n show() {\n if (this.$navigation) {\n this.$navigation.hidden = false;\n this.$navigation.setAttribute(\"aria-hidden\", \"false\");\n }\n if (this.$topNavigation) {\n this.$topNavigation.hidden = false;\n this.$topNavigation.setAttribute(\"aria-hidden\", \"false\");\n }\n this.$toggleButton.setAttribute(\"aria-expanded\", \"true\");\n this.$toggleButton.setAttribute(\"title\", \"Close menu\");\n this.$toggleButton.classList.add(\n \"tna-global-header__navigation-button--opened\",\n );\n for (let i = 0; i < this.$links.length; i++) {\n this.$links[i].setAttribute(\"tabindex\", \"0\");\n }\n }\n}\n","export class Header {\n constructor($module) {\n this.$module = $module;\n this.$toggleButton =\n $module && $module.querySelector(\".tna-header__navigation-button\");\n this.$navigation =\n $module && $module.querySelector(\".tna-header__navigation\");\n this.$links =\n $module &&\n this.$navigation &&\n this.$navigation.querySelectorAll(\"[tabindex='0']\");\n this.menuOpened = false;\n this.mql = window.matchMedia(\"(max-width: 48em)\");\n\n if (!this.$module || !this.$toggleButton || !this.$navigation) {\n return;\n }\n\n this.$toggleButton.removeAttribute(\"hidden\");\n this.syncState();\n this.$toggleButton.addEventListener(\"click\", () =>\n this.handleToggleNavigation(),\n );\n if (\"addEventListener\" in this.mql) {\n this.mql.addEventListener(\"change\", () => this.syncState());\n } else {\n this.mql.addListener(() => this.syncState());\n }\n\n this.$module.addEventListener(\"keyup\", (e) => {\n if (e.code === \"Escape\") {\n if (this.menuOpened && this.mql.matches) {\n this.menuOpened = false;\n this.syncState();\n this.$toggleButton.focus();\n }\n }\n });\n }\n\n handleToggleNavigation() {\n this.menuOpened = !this.menuOpened;\n this.syncState();\n }\n\n syncState() {\n if (this.mql.matches) {\n if (this.menuOpened) {\n this.show();\n } else {\n this.hide();\n }\n } else {\n this.show();\n }\n }\n\n show() {\n this.$navigation.classList.add(\"tna-header__navigation--open\");\n this.$navigation.removeAttribute(\"hidden\");\n this.$navigation.setAttribute(\"aria-hidden\", \"false\");\n this.$toggleButton.setAttribute(\"aria-expanded\", \"true\");\n this.$toggleButton.setAttribute(\"title\", \"Close menu\");\n this.$toggleButton.classList.add(\"tna-header__navigation-button--opened\");\n\n for (let i = 0; i < this.$links.length; i++) {\n this.$links[i].setAttribute(\"tabindex\", \"0\");\n }\n }\n\n hide() {\n this.$navigation.classList.remove(\"tna-header__navigation--open\");\n this.$navigation.hidden = true;\n this.$navigation.setAttribute(\"aria-hidden\", \"true\");\n this.$toggleButton.setAttribute(\"aria-expanded\", \"false\");\n this.$toggleButton.setAttribute(\"title\", \"Open menu\");\n this.$toggleButton.classList.remove(\n \"tna-header__navigation-button--opened\",\n );\n\n for (let i = 0; i < this.$links.length; i++) {\n this.$links[i].setAttribute(\"tabindex\", \"-1\");\n }\n }\n}\n","import uuidv4 from \"../../lib/uuid.mjs\";\n\nexport class Picture {\n constructor($module) {\n this.$module = $module;\n this.$imageWrapper =\n $module && $module.querySelector(\".tna-picture__image-wrapper\");\n\n this.$transcriptToggle =\n this.$imageWrapper &&\n this.$imageWrapper.querySelector(\".tna-picture__toggle-transcript\");\n\n this.$transcript =\n $module && $module.querySelector(\".tna-picture__transcript\");\n this.transcriptOpened = false;\n\n if (\n !this.$module ||\n !this.$imageWrapper ||\n !this.$transcriptToggle ||\n !this.$transcript\n ) {\n return;\n }\n\n this.openLabel =\n this.$module.dataset.informationLabelOpen || \"Open transcript\";\n this.closeLabel =\n this.$module.dataset.informationLabelClose || \"Close transcript\";\n\n this.init();\n }\n\n init() {\n const uniqueId = `tna-picture-${uuidv4()}`;\n\n this.$transcriptToggle.removeAttribute(\"hidden\");\n this.$transcriptToggle.setAttribute(\"aria-controls\", uniqueId);\n this.$transcriptToggle.innerText = this.openLabel;\n this.$transcriptToggle.addEventListener(\"click\", () =>\n this.toggleTranscript(),\n );\n\n this.$transcript.setAttribute(\"id\", uniqueId);\n this.$transcript.setAttribute(\"hidden\", \"\");\n\n this.$transcript.addEventListener(\"keydown\", (e) => {\n switch (e.key) {\n case \"Escape\":\n this.toggleTranscript();\n this.$transcriptToggle.focus();\n break;\n }\n });\n }\n\n toggleTranscript() {\n this.transcriptOpened = !this.transcriptOpened;\n if (this.transcriptOpened) {\n this.$transcriptToggle.setAttribute(\"aria-expanded\", true);\n this.$transcriptToggle.innerText = this.closeLabel;\n this.$transcript.removeAttribute(\"hidden\");\n } else {\n this.$transcriptToggle.setAttribute(\"aria-expanded\", false);\n this.$transcriptToggle.innerText = this.openLabel;\n this.$transcript.setAttribute(\"hidden\", \"\");\n }\n }\n}\n","export class SkipLink {\n linkedElementListener = false;\n\n constructor($module) {\n this.$module = $module;\n this.linkedElementId = $module.getAttribute(\"href\")?.split(\"#\").pop();\n this.$linkedElement =\n $module &&\n this.linkedElementId &&\n document.getElementById(this.linkedElementId);\n\n if (this.$module && this.$linkedElement) {\n this.$module.addEventListener(\"click\", () => this.focusLinkedElement());\n }\n }\n\n focusLinkedElement() {\n if (!this.$linkedElement.getAttribute(\"tabindex\")) {\n this.$linkedElement.setAttribute(\"tabindex\", \"-1\");\n this.$linkedElement.classList.add(\"tna-!--no-focus-style\");\n\n if (!this.linkedElementListener) {\n this.$linkedElement.addEventListener(\"blur\", () =>\n this.removeFocusProperties(),\n );\n this.linkedElementListener = true;\n }\n }\n\n this.$linkedElement.focus();\n }\n\n removeFocusProperties() {\n this.$linkedElement.removeAttribute(\"tabindex\");\n this.$linkedElement.classList.remove(\"tna-!--no-focus-style\");\n }\n}\n","export class Tabs {\n constructor($module) {\n this.$module = $module;\n this.$tabList = $module && $module.querySelector(\".tna-tabs__list\");\n this.$tabListItemLinks =\n $module &&\n this.$tabList &&\n this.$tabList.querySelectorAll(\".tna-tabs__button\");\n this.$tabItems = $module && $module.querySelectorAll(\".tna-tabs__item\");\n\n if (\n !this.$module ||\n !this.$tabList ||\n !this.$tabListItemLinks ||\n !this.$tabItems ||\n this.$tabListItemLinks.length !== this.$tabItems.length\n ) {\n return;\n }\n\n this.currentTabIndex = 0;\n this.init();\n }\n\n init() {\n this.$module.classList.add(\"tna-tabs--interactive\");\n this.$tabList.removeAttribute(\"hidden\");\n this.$tabListItemLinks.forEach(($tabListItemLink) => {\n const tabPanelID = $tabListItemLink.getAttribute(\"aria-controls\");\n $tabListItemLink.setAttribute(\"aria-selected\", false);\n const $tabPanel = document.getElementById(tabPanelID);\n $tabPanel.setAttribute(\"aria-labelledby\", $tabListItemLink.id);\n $tabPanel.setAttribute(\"role\", \"tabpanel\");\n $tabListItemLink.addEventListener(\n \"click\",\n (e) => this.handleItemLinkClick(e),\n true,\n );\n });\n this.switchTabByIndex(this.currentTabIndex);\n this.$module.addEventListener(\"keydown\", (e) =>\n this.handleItemLinkKeyDown(e),\n );\n }\n\n handleItemLinkClick(itemLinkClickEvent) {\n itemLinkClickEvent.preventDefault();\n const targetItem =\n itemLinkClickEvent.currentTarget.getAttribute(\"aria-controls\");\n this.switchTabByID(targetItem);\n }\n\n handleItemLinkKeyDown(itemLinkKeyDownEvent) {\n let preventDefaultKeyAction = false;\n switch (itemLinkKeyDownEvent.key) {\n case \"ArrowLeft\":\n case \"ArrowUp\":\n this.previousTab();\n preventDefaultKeyAction = true;\n break;\n case \"ArrowRight\":\n case \"ArrowDown\":\n this.nextTab();\n preventDefaultKeyAction = true;\n break;\n case \"Home\":\n this.switchTabByIndex(0, true);\n preventDefaultKeyAction = true;\n break;\n case \"End\":\n this.switchTabByIndex(this.$tabListItemLinks.length - 1, true);\n preventDefaultKeyAction = true;\n break;\n default:\n break;\n }\n if (preventDefaultKeyAction) {\n itemLinkKeyDownEvent.stopPropagation();\n itemLinkKeyDownEvent.preventDefault();\n }\n }\n\n nextTab() {\n if (this.currentTabIndex < this.$tabListItemLinks.length - 1) {\n this.switchTabByIndex(this.currentTabIndex + 1, true);\n } else {\n this.switchTabByIndex(0, true);\n }\n }\n\n previousTab() {\n if (this.currentTabIndex >= 1) {\n this.switchTabByIndex(this.currentTabIndex - 1, true);\n } else {\n this.switchTabByIndex(this.$tabListItemLinks.length - 1, true);\n }\n }\n\n switchTabByIndex(newIndex, switchFocus = false) {\n this.currentTabIndex = newIndex;\n this.$tabListItemLinks.forEach(($tabListItemLink, index) => {\n if (index === this.currentTabIndex) {\n $tabListItemLink.setAttribute(\"aria-selected\", true);\n $tabListItemLink.setAttribute(\"tabindex\", \"0\");\n if (switchFocus) {\n $tabListItemLink.focus();\n }\n } else {\n $tabListItemLink.setAttribute(\"aria-selected\", false);\n $tabListItemLink.setAttribute(\"tabindex\", \"-1\");\n }\n });\n this.$tabItems.forEach(($tabItem, index) => {\n if (index === this.currentTabIndex) {\n $tabItem.removeAttribute(\"hidden\");\n $tabItem.setAttribute(\"tabindex\", \"0\");\n } else {\n $tabItem.setAttribute(\"hidden\", \"\");\n $tabItem.setAttribute(\"tabindex\", \"-1\");\n }\n });\n }\n\n switchTabByID(targetId) {\n const index = Array.from(this.$tabItems).findIndex(\n ($tabItem) => $tabItem.getAttribute(\"id\") === targetId,\n );\n this.switchTabByIndex(index);\n }\n}\n","export class TextInputPassword {\n constructor($module) {\n this.$module = $module;\n this.$input = $module && $module.querySelector(\".tna-text-input\");\n\n if (\n !this.$module ||\n !this.$input ||\n this.$input.getAttribute(\"type\") !== \"password\"\n ) {\n return;\n }\n\n this.$textInputWrapper = document.createElement(\"div\");\n this.$textInputWrapper.classList.add(\"tna-text-input-wrapper\");\n\n this.$textInputPasswordToggle = document.createElement(\"button\");\n this.$textInputPasswordToggle.setAttribute(\"type\", \"button\");\n this.$textInputPasswordToggle.classList.add(\n \"tna-button\",\n \"tna-button--small\",\n \"tna-button--icon-only\",\n );\n this.$textInputPasswordToggle.setAttribute(\"aria-controls\", this.$input.id);\n this.updateTogglePasswordButtonText();\n\n this.$textInputWrapper.appendChild(this.$input);\n this.$textInputWrapper.appendChild(this.$textInputPasswordToggle);\n this.$module.appendChild(this.$textInputWrapper);\n\n this.$textInputPasswordToggle.addEventListener(\"click\", () => {\n this.togglePasswordType();\n this.$input.focus();\n });\n }\n\n togglePasswordType() {\n if (this.$input.getAttribute(\"type\") === \"password\") {\n this.$input.setAttribute(\"type\", \"text\");\n } else {\n this.$input.setAttribute(\"type\", \"password\");\n }\n this.updateTogglePasswordButtonText();\n }\n\n updateTogglePasswordButtonText() {\n if (this.$input.getAttribute(\"type\") === \"password\") {\n this.$textInputPasswordToggle.innerHTML = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 640 640\" height=\"24\" aria-hidden=\"true\" focusable=\"false\"><!--!Font Awesome Free v7.0.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--><path d=\"M320 96C239.2 96 174.5 132.8 127.4 176.6C80.6 220.1 49.3 272 34.4 307.7C31.1 315.6 31.1 324.4 34.4 332.3C49.3 368 80.6 420 127.4 463.4C174.5 507.1 239.2 544 320 544C400.8 544 465.5 507.2 512.6 463.4C559.4 419.9 590.7 368 605.6 332.3C608.9 324.4 608.9 315.6 605.6 307.7C590.7 272 559.4 220 512.6 176.6C465.5 132.9 400.8 96 320 96zM176 320C176 240.5 240.5 176 320 176C399.5 176 464 240.5 464 320C464 399.5 399.5 464 320 464C240.5 464 176 399.5 176 320zM320 256C320 291.3 291.3 320 256 320C244.5 320 233.7 317 224.3 311.6C223.3 322.5 224.2 333.7 227.2 344.8C240.9 396 293.6 426.4 344.8 412.7C396 399 426.4 346.3 412.7 295.1C400.5 249.4 357.2 220.3 311.6 224.3C316.9 233.6 320 244.4 320 256z\" /></svg>Show password`;\n this.$textInputPasswordToggle.setAttribute(\"title\", \"Show password\");\n this.$textInputPasswordToggle.setAttribute(\"aria-label\", \"Show password\");\n } else {\n this.$textInputPasswordToggle.innerHTML = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 640 640\" height=\"24\" aria-hidden=\"true\" focusable=\"false\"><!--!Font Awesome Free v7.0.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--><path d=\"M73 39.1C63.6 29.7 48.4 29.7 39.1 39.1C29.8 48.5 29.7 63.7 39 73.1L567 601.1C576.4 610.5 591.6 610.5 600.9 601.1C610.2 591.7 610.3 576.5 600.9 567.2L504.5 470.8C507.2 468.4 509.9 466 512.5 463.6C559.3 420.1 590.6 368.2 605.5 332.5C608.8 324.6 608.8 315.8 605.5 307.9C590.6 272.2 559.3 220.2 512.5 176.8C465.4 133.1 400.7 96.2 319.9 96.2C263.1 96.2 214.3 114.4 173.9 140.4L73 39.1zM236.5 202.7C260 185.9 288.9 176 320 176C399.5 176 464 240.5 464 320C464 351.1 454.1 379.9 437.3 403.5L402.6 368.8C415.3 347.4 419.6 321.1 412.7 295.1C399 243.9 346.3 213.5 295.1 227.2C286.5 229.5 278.4 232.9 271.1 237.2L236.4 202.5zM357.3 459.1C345.4 462.3 332.9 464 320 464C240.5 464 176 399.5 176 320C176 307.1 177.7 294.6 180.9 282.7L101.4 203.2C68.8 240 46.4 279 34.5 307.7C31.2 315.6 31.2 324.4 34.5 332.3C49.4 368 80.7 420 127.5 463.4C174.6 507.1 239.3 544 320.1 544C357.4 544 391.3 536.1 421.6 523.4L357.4 459.2z\" /></svg>Hide password`;\n this.$textInputPasswordToggle.setAttribute(\"title\", \"Hide password\");\n this.$textInputPasswordToggle.setAttribute(\"aria-label\", \"Hide password\");\n }\n }\n}\n","export class TextAreaItemisedRows {\n constructor($module, options = {}) {\n this.$module = $module;\n this.$formFieldInput =\n this.$module && this.$module.querySelector(\".tna-textarea\");\n this.$formFieldInputHint =\n this.$module && this.$module.querySelector(\".tna-form-item__hint\");\n this.$formFieldBody =\n this.$module && this.$module.querySelector(\".tna-form-item__body\");\n\n if (\n !this.$module ||\n !this.$formFieldInput ||\n !this.$formFieldBody ||\n this.$formFieldInput.getAttribute(\"hidden\") !== null\n ) {\n return;\n }\n\n const { enhancedHint } = options;\n\n this.values = this.$formFieldInput.value\n .split(\"\\n\")\n .map((value) => value.trim())\n .filter((value) => value);\n\n this.id = this.$formFieldInput.id;\n\n this.$formFieldNewInput = document.createElement(\"input\");\n this.$formFieldNewInput.classList.add(\"tna-text-input\");\n [\"id\", \"aria-describedby\"].forEach((attribute) => {\n this.$formFieldNewInput.setAttribute(\n attribute,\n this.$formFieldInput.getAttribute(attribute),\n );\n this.$formFieldInput.removeAttribute(attribute);\n });\n this.$formFieldBody.appendChild(this.$formFieldNewInput);\n this.$formFieldInput.setAttribute(\"hidden\", \"\");\n this.$formFieldInput.addEventListener(\"keyup\", () => this.updateList());\n this.$formFieldNewInput.addEventListener(\"keypress\", (e) => {\n if (e.key === \"Enter\") {\n this.appendValue(e.target.value);\n }\n });\n\n this.$formFieldNewInputAddButton = document.createElement(\"button\");\n this.$formFieldNewInputAddButton.setAttribute(\"type\", \"button\");\n this.$formFieldNewInputAddButton.classList.add(\n \"tna-button\",\n \"tna-button--small\",\n );\n this.$formFieldNewInputAddButtonInner = document.createElement(\"span\");\n this.$formFieldNewInputAddButtonInner.innerText = \"Add\";\n this.$formFieldNewInputAddButtonInnerExtra = document.createElement(\"span\");\n this.$formFieldNewInputAddButtonInnerExtra.classList.add(\n \"tna-visually-hidden\",\n );\n this.$formFieldNewInputAddButtonInnerExtra.innerText = \" to list\";\n this.$formFieldNewInputAddButtonInner.appendChild(\n this.$formFieldNewInputAddButtonInnerExtra,\n );\n this.$formFieldNewInputAddButton.appendChild(\n this.$formFieldNewInputAddButtonInner,\n );\n this.$formFieldBody.appendChild(this.$formFieldNewInputAddButton);\n this.$formFieldNewInputAddButton.addEventListener(\"click\", () => {\n this.appendValue(this.$formFieldNewInput.value);\n });\n\n this.$formFieldLiveAria = document.createElement(\"div\");\n this.$formFieldLiveAria.setAttribute(\"aria-live\", \"assertive\");\n this.$formFieldLiveAria.classList.add(\"tna-visually-hidden\");\n this.$module.appendChild(this.$formFieldLiveAria);\n\n this.$formFieldCounter = document.createElement(\"p\");\n this.$formFieldCounter.id = `${this.id}-list-helper`;\n this.$formFieldCounter.classList.add(\"tna-!--margin-top-xs\");\n this.$module.appendChild(this.$formFieldCounter);\n\n this.$formFieldNewInput.setAttribute(\n \"aria-describedby\",\n `${this.$formFieldNewInput.getAttribute(\"aria-describedby\")} ${\n this.$formFieldCounter.id\n }`,\n );\n\n this.$valuesList = document.createElement(\"ul\");\n this.$valuesList.classList.add(\n \"tna-compound-filters\",\n \"tna-!--margin-top-xs\",\n );\n this.$valuesList.addEventListener(\"blur\", () => {\n this.$valuesList.removeAttribute(\"tabindex\");\n this.updateAriaText(\"\");\n });\n this.$module.appendChild(this.$valuesList);\n\n if (!this.$formFieldInputHint) {\n this.$formFieldInputHint = document.createElement(\"p\");\n this.$formFieldInputHint.classList.add(\"tna-form-item__hint\");\n this.$formFieldBody.parentNode.insertBefore(\n this.$formFieldInputHint,\n this.$formFieldBody,\n );\n }\n this.$formFieldInputHint.innerText =\n enhancedHint || \"Enter an item and press enter\";\n\n this.updateList();\n }\n\n updateAriaText(content) {\n this.$formFieldLiveAria.innerText = content;\n }\n\n normaliseValue(value) {\n return value.replace(/\\s{2,}/, \" \").trim();\n }\n\n isValueInList(value) {\n return (\n this.values\n .map((value) => this.normaliseValue(value).toLowerCase())\n .indexOf(value.toLowerCase().trim()) > -1\n );\n }\n\n appendValue(value) {\n const newValue = this.normaliseValue(value);\n if (newValue) {\n if (!this.isValueInList(newValue)) {\n this.values.push(newValue);\n this.$formFieldInput.value = this.values.join(\"\\n\");\n this.updateList();\n this.updateAriaText(`'${newValue}' added`);\n } else {\n this.updateAriaText(`'${newValue}' already added`);\n }\n } else {\n this.updateAriaText(\"Enter an item to add\");\n }\n this.$formFieldNewInput.value = \"\";\n this.$formFieldNewInput.focus();\n }\n\n removeValue(value) {\n const removeValue = this.normaliseValue(value);\n if (removeValue && this.isValueInList(removeValue)) {\n this.values = this.values.filter(\n (existingValue) => existingValue !== removeValue,\n );\n this.$formFieldInput.value = this.values.join(\"\\n\");\n this.updateList();\n this.updateAriaText(`'${removeValue}' removed`);\n }\n if (this.values.length) {\n this.$valuesList.setAttribute(\"tabindex\", \"0\");\n this.$valuesList.focus();\n } else {\n this.$formFieldNewInput.focus();\n }\n }\n\n updateList() {\n this.$valuesList.innerHTML = \"\";\n this.values\n .map((value) => {\n const $item = document.createElement(\"li\");\n $item.classList.add(\"tna-compound-filters__item\");\n const $itemLabel = document.createElement(\"span\");\n $itemLabel.innerText = value;\n $item.appendChild($itemLabel);\n\n const $removeItemButton = document.createElement(\"button\");\n $removeItemButton.innerText = `Remove '${value}'`;\n $removeItemButton.setAttribute(\"type\", \"button\");\n $removeItemButton.classList.add(\"tna-compound-filters__link\");\n $removeItemButton.addEventListener(\"click\", () => {\n this.removeValue(value);\n });\n $item.appendChild($removeItemButton);\n return $item;\n })\n .forEach(($item) => this.$valuesList.appendChild($item));\n this.$formFieldCounter.innerText = `${this.values.length} item${this.values.length !== 1 ? \"s\" : \"\"} added`;\n }\n}\n","window.TNAFrontendCookies = window.TNAFrontendCookies || null;\nwindow.TNAFrontendCookieEvents = window.TNAFrontendCookieEvents || null;\n\nexport class CookieEventHandler {\n events = {};\n oneTimeEvents = {};\n debug = false;\n\n constructor(debug = false) {\n this.debug = debug;\n if (window.TNAFrontendCookieEvents) {\n this.log(\"Using existing TNAFrontendCookieEvents instance\");\n return window.TNAFrontendCookieEvents;\n }\n window.TNAFrontendCookieEvents = this;\n }\n\n log(...args) {\n if (this.debug) {\n console.log(\"[TNA Frontend Cookie Events]\", ...args);\n }\n }\n\n /**\n * Add an event listener.\n * @param {String} event - The event to add a listener for.\n * @param {Function} callback - The callback function to call when the event is triggered.\n */\n on(event, callback) {\n if (!Object.hasOwn(this.events, event)) {\n this.events[event] = [];\n }\n this.events[event] = [...this.events[event], callback];\n }\n\n once(event, callback) {\n if (!Object.hasOwn(this.oneTimeEvents, event)) {\n this.oneTimeEvents[event] = [];\n }\n this.oneTimeEvents[event] = [...this.oneTimeEvents[event], callback];\n }\n\n /** @protected */\n trigger(event, data = {}) {\n if (Object.hasOwn(this.events, event)) {\n this.log(`Triggering event: ${event}`, data);\n this.events[event].forEach((eventToTrigger) =>\n eventToTrigger.call(this, data),\n );\n }\n if (Object.hasOwn(this.oneTimeEvents, event)) {\n this.log(`Triggering one-time event: ${event}`, data);\n for (let i = this.oneTimeEvents[event].length - 1; i >= 0; i--) {\n const eventToTrigger = this.oneTimeEvents[event][i];\n eventToTrigger.call(this, data);\n this.oneTimeEvents[event].splice(i, 1);\n }\n }\n }\n}\n\nconst tnaCookiePolicies = [\"usage\", \"settings\", \"marketing\", \"essential\"];\n\n/**\n * Class to handle cookies.\n * @class Cookies\n * @constructor\n * @public\n */\nexport default class Cookies {\n /** @protected */\n defaultDomain = \"\";\n /** @protected */\n defaultPath = \"\";\n /** @protected */\n secure = true;\n /** @protected */\n policiesKey = \"\";\n /** @protected */\n events = null;\n /** @protected */\n defaultAge = null;\n /** @protected */\n policiesCorrectOnInit = false;\n /** @protected */\n debug = document.documentElement.dataset.tnaFrontendDebug === \"true\";\n\n /**\n * Create a cookie handler.\n * @param {String} [options.defaultDomain] - The domain to register the cookie with.\n * @param {String} [options.path] - The domain to register the cookie with.\n * @param {Boolean} [options.secure] - Only set cookie in HTTPS environments.\n * @param {String} [options.policiesKey] - The name of the cookie.\n * @param {Number} [options.defaultAge] - The default age of non-session cookies.\n * @param {String} [options.newInstance=false] - Create a fresh instance of the cookie class.\n * @param {Boolean} [options.noInit=false] - Don't initialise a blank cookie policy.\n */\n constructor(options = {}) {\n const {\n defaultDomain,\n defaultPath,\n secure,\n policiesKey,\n defaultAge,\n newInstance = false,\n noInit = false,\n } = options;\n if (!newInstance && window.TNAFrontendCookies) {\n return window.TNAFrontendCookies;\n }\n if (defaultDomain === undefined) {\n this.defaultDomain =\n document.documentElement.dataset.tnaCookiesDomain ||\n window.location.hostname;\n } else {\n this.defaultDomain = defaultDomain;\n }\n if (defaultPath === undefined) {\n this.defaultPath = document.documentElement.dataset.tnaCookiesPath || \"/\";\n } else {\n this.defaultPath = defaultPath;\n }\n if (secure === undefined) {\n this.secure =\n document.documentElement.dataset.tnaCookiesInsecure !== \"true\";\n } else {\n this.secure = secure;\n }\n if (policiesKey === undefined) {\n this.policiesKey =\n document.documentElement.dataset.tnaCookiesPoliciesKey ||\n \"cookies_policy\";\n } else {\n this.policiesKey = policiesKey;\n }\n if (defaultAge === undefined) {\n this.defaultAge =\n parseInt(document.documentElement.dataset.tnaCookiesDefaultAge) ||\n 31536000; // 365 days;\n } else {\n this.defaultAge = defaultAge;\n }\n this.events = new CookieEventHandler(this.debug);\n this.policiesCorrectOnInit =\n Object.keys(this.policies).length === tnaCookiePolicies.length &&\n tnaCookiePolicies.every(\n (policy) =>\n Object.keys(this.policies).includes(policy) &&\n typeof this.policies[policy] === \"boolean\",\n );\n if (!this.policiesCorrectOnInit && !noInit) {\n this.init();\n }\n this.log({\n defaultDomain: this.defaultDomain,\n defaultPath: this.defaultPath,\n secure: this.secure,\n policiesKey: this.policiesKey,\n defaultAge: this.defaultAge,\n policiesCorrectOnInit: this.policiesCorrectOnInit,\n });\n if (!newInstance && !window.TNAFrontendCookies) {\n window.TNAFrontendCookies = this;\n }\n }\n\n /** @protected */\n init() {\n const existingPolicies = this.policies;\n this.log(\"Existing policies on init:\", existingPolicies);\n const filteredExistingPolicies = Object.fromEntries(\n Object.keys(existingPolicies)\n .filter((policy) => tnaCookiePolicies.includes(policy))\n .map((policy) => [policy, existingPolicies[policy]]),\n );\n if (Object.keys(filteredExistingPolicies).length > 0) {\n this.log(\"Filtered existing policies:\", filteredExistingPolicies);\n }\n this.savePolicies({\n usage: false,\n settings: false,\n marketing: false,\n ...filteredExistingPolicies,\n essential: true,\n });\n }\n\n log(...args) {\n if (this.debug) {\n console.log(\"[TNA Frontend Cookies]\", ...args, this.all);\n }\n }\n\n destroyInstance() {\n this.log(\"Destroying TNAFrontendCookies instance\");\n window.TNAFrontendCookies = null;\n }\n\n /** @protected */\n get all() {\n const deserialised = {};\n document.cookie\n .split(\"; \")\n .filter((x) => x)\n .forEach((cookie) => {\n const parts = cookie.trim().split(\"=\");\n if (parts[0]) {\n deserialised[parts[0]] = parts[1];\n }\n });\n return deserialised;\n }\n\n /** @protected */\n get policies() {\n try {\n return JSON.parse(this.get(this.policiesKey) || \"{}\");\n } catch (e) {\n return {};\n }\n }\n\n /**\n * Check to see whether a cookie exists or not.\n * @param {String} key - The cookie name.\n * @returns {Boolean}\n */\n exists(key) {\n return Object.hasOwn(this.all, key);\n }\n\n /**\n * Check to see whether a cookie has a particular value.\n * @param {String} key - The cookie name.\n * @param {String|Number|Boolean} value - The value to check against.\n * @returns\n */\n hasValue(key, value) {\n return this.get(key) == value;\n }\n\n /**\n * Get a cookie.\n * @param {String} key - The cookie name.\n * @returns {String|Number|Boolean}\n */\n get(key) {\n return this.exists(key) ? decodeURIComponent(this.all[key]) : null;\n }\n\n /**\n * Set a cookie.\n * @param {String} key - The cookie name.\n * @param {String|Number|Boolean} value - The cookie value.\n * @param {Object} options\n * @param {Number} [options.maxAge=this.defaultAge] - The maximum age of the cookie in seconds.\n * @param {String} [options.path=/] - The path to register the cookie for.\n * @param {String} [options.sameSite=Lax] - The sameSite attribute.\n * @param {String} [options.domain=this.defaultDomain] - The domain to register the cookie with.\n * @param {String} [options.path=this.defaultPath] - The path to register the cookie with.\n * @param {String} [options.secure=this.secure] - Only set cookie in HTTPS environments.\n * @param {String} [options.session=false] - Set a session cookie.\n */\n set(key, value, options = {}) {\n const {\n maxAge = this.defaultAge,\n sameSite = \"Lax\",\n domain = this.defaultDomain,\n path = this.defaultPath,\n secure = this.secure,\n session = false,\n } = options;\n if (!key) {\n return;\n }\n const cookie = `${encodeURIComponent(key)}=${encodeURIComponent(value)}; domain=${domain}; samesite=${sameSite}; path=${path}${!session ? `; max-age=${maxAge}` : \"\"}${\n secure ? \"; secure\" : \"\"\n }`;\n document.cookie = cookie;\n this.log(\"Set cookie:\", {\n key,\n value,\n maxAge,\n path,\n sameSite,\n domain,\n secure,\n session,\n cookie,\n });\n this.events.trigger(\"setCookie\", {\n key,\n value,\n maxAge,\n path,\n sameSite,\n domain,\n secure,\n session,\n cookie,\n });\n }\n\n /**\n * Delete a cookie.\n * @param {String} key - The cookie name.\n * @param {String} [path=/] - The path to the cookie is registered on.\n */\n delete(key, path = \"/\", domain = this.defaultDomain) {\n const options = { maxAge: -1, path, domain: domain || undefined };\n this.set(key, \"\", options);\n this.log(\"Deleted cookie:\", { key, path, domain, ...options });\n this.events.trigger(\"deleteCookie\", { key, ...options });\n }\n\n /**\n * Delete all cookies.\n */\n deleteAll(path = \"/\", domain = this.defaultDomain) {\n Object.keys(this.all).forEach((cookie) => {\n this.delete(cookie, path, domain);\n });\n this.log(\"Deleted all cookies\", { path, domain });\n this.events.trigger(\"deleteAllCookies\", { path, domain });\n }\n\n /**\n * Accept a policy.\n * @param {String} policy - The name of the policy.\n */\n acceptPolicy(policy) {\n this.log(\"Accepting policy:\", policy);\n this.setPolicy(policy, true);\n this.events.trigger(\"acceptPolicy\", policy);\n this.events.trigger(\"changePolicy\", { [policy]: true });\n }\n\n /**\n * Reject a policy.\n * @param {String} policy - The name of the policy.\n */\n rejectPolicy(policy) {\n this.log(\"Rejecting policy:\", policy);\n this.setPolicy(policy, false);\n this.events.trigger(\"rejectPolicy\", policy);\n this.events.trigger(\"changePolicy\", { [policy]: false });\n }\n\n /**\n * Set a policy.\n * @param {String} policy - The name of the policy.\n * @param {Boolean} accepted - Whether the policy is accepted or not.\n */\n setPolicy(policy, accepted) {\n if (policy === \"essential\") {\n this.log(\"Cannot change essential policy, it is always accepted.\");\n return;\n }\n this.log(`Setting policy ${policy} to ${accepted}`);\n this.savePolicies({\n ...this.policies,\n [policy]: accepted,\n essential: true,\n });\n this.events.trigger(\"changePolicy\", { [policy]: accepted });\n }\n\n /**\n * Accept all the cookie policies.\n */\n acceptAllPolicies() {\n this.log(\"Accepting all policies\");\n const allPolicies = Object.fromEntries(\n Object.keys(this.policies).map((k) => [k.toLowerCase(), true]),\n );\n this.savePolicies(allPolicies);\n this.events.trigger(\"acceptAllPolicies\");\n this.events.trigger(\"changePolicy\", allPolicies);\n }\n\n /**\n * Reject all the cookie policies.\n */\n rejectAllPolicies() {\n this.log(\"Rejecting all policies\");\n const allPolicies = {\n ...Object.fromEntries(\n Object.keys(this.policies).map((k) => [k.toLowerCase(), false]),\n ),\n essential: true,\n };\n this.savePolicies(allPolicies);\n this.events.trigger(\"rejectAllPolicies\");\n this.events.trigger(\"changePolicy\", allPolicies);\n }\n\n /**\n * Commit policy preferences to the browser.\n * @param {object} policies - The policies to commit.\n */\n savePolicies(policies) {\n this.log(\"Saving policies:\", policies);\n this.set(this.policiesKey, JSON.stringify(policies));\n }\n\n /**\n * Get the acceptance status of a policy.\n * @param {String} policy - The name of the policy.\n * @returns {Boolean}\n */\n isPolicyAccepted(policy) {\n return Object.hasOwn(this.policies, policy)\n ? this.policies[policy] === true\n : null;\n }\n\n /**\n * Add an event listener.\n * @param {String} event - The event to add a listener for.\n * @param {Function} callback - The callback function to call when the event is triggered.\n */\n on(event, callback) {\n this.log(`Adding event listener for: ${event}`);\n this.events.on(event, callback);\n }\n\n /**\n * Add a one-time event listener.\n * @param {String} event - The event to add a listener for.\n * @param {Function} callback - The callback function to call when the event is triggered.\n */\n once(event, callback) {\n this.log(`Adding one-time event listener for: ${event}`);\n this.events.once(event, callback);\n }\n}\n","import uuidv4 from \"./uuid.mjs\";\n\nexport const checkTableForScroll = ($tableWrapper) => {\n const isUninitialised = !(\n $tableWrapper.dataset.tableScrollInitialised === \"true\"\n );\n const $caption = $tableWrapper.querySelector(\"caption\");\n if (isUninitialised) {\n if (!$caption) {\n console.warn(\"Missing <caption> element on table\", $tableWrapper);\n } else if (!$caption.id) {\n $caption.id = `table-caption-${uuidv4()}`;\n }\n $tableWrapper.dataset.tableScrollInitialised = \"true\";\n }\n if ($tableWrapper.scrollWidth > $tableWrapper.clientWidth) {\n $tableWrapper.setAttribute(\"tabindex\", \"0\");\n $tableWrapper.setAttribute(\"role\", \"region\");\n $tableWrapper.setAttribute(\"aria-labelledby\", $caption?.id || \"\");\n $tableWrapper.classList.add(\"tna-table-wrapper--scroll\");\n } else {\n $tableWrapper.removeAttribute(\"tabindex\");\n $tableWrapper.removeAttribute(\"role\");\n $tableWrapper.removeAttribute(\"aria-labelledby\");\n $tableWrapper.classList.remove(\"tna-table-wrapper--scroll\");\n }\n};\n","const uuidv4 = () =>\n ([1e7] + -1e3 + -4e3 + -8e3 + -1e11).replace(/[018]/g, (c) =>\n (\n c ^\n (crypto.getRandomValues(new Uint8Array(1))[0] & (15 >> (c / 4)))\n ).toString(16),\n );\n\nexport default uuidv4;\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","export const iso8601ToPrettyDatetime = (dateStr) => {\n const datetime = dateStr;\n\n if (!datetime) {\n throw new Error(\"No datetime provided\");\n }\n const isDateTime =\n /^\\d{4}(-\\d{2}){2}(T| )\\d{2}(:\\d{2}){1,2}(\\.\\d+)?(Z|((\\+|-)\\d{2}:\\d{2}))?$/.test(\n datetime,\n );\n const isDate = /^\\d{4}(-\\d{2}){2}$/.test(datetime);\n if (!isDateTime && !isDate) {\n throw new Error(\"Invalid datetime provided\");\n }\n\n const date = new Date(datetime);\n if (!(date instanceof Date) || isNaN(date)) {\n throw new Error(\"Invalid datetime provided\");\n }\n\n const dayString = date.toLocaleDateString(\"en-GB\", {\n weekday: \"long\",\n });\n\n const dateString = date.toLocaleDateString(\"en-GB\", {\n day: \"numeric\",\n month: \"long\",\n year: \"numeric\",\n });\n\n if (isDateTime && (date.getHours() || date.getMinutes())) {\n let timeString = date.toLocaleTimeString(\"en-GB\", {\n hour: \"2-digit\",\n minute: \"2-digit\",\n });\n if (date.getSeconds()) {\n timeString = date.toLocaleTimeString(\"en-GB\", {\n hour: \"2-digit\",\n minute: \"2-digit\",\n second: \"2-digit\",\n });\n }\n return `${dayString} ${dateString}, ${timeString}`;\n } else {\n return `${dayString} ${dateString}`;\n }\n};\n\n/*\n * ==========================================\n * Transform any <time> element into a pretty\n * and human readable format that is based on\n * the valid ISO 8601 datetime attribute. The\n * replaced value will be localised according\n * to user's system settings, repurposing the\n * original text content as a title attribute\n * to allow users to see the value. A null or\n * invalid datetime format will result in the\n * element not being modified. If the updated\n * value is similar to the starting value for\n * the element text content, then the element\n * will not be updated to avoid redundancy.\n * ------------------------------------------\n * For example if the user's system has a UTC\n * timezone set then the element:\n *\n * <time\n * datetime=\"2026-03-05T13:48:00-05:00\"\n * >\n * 5 March 2026, 13:48 (UTC -5)\n * </time>\n *\n * would become:\n *\n * <time\n * datetime=\"2026-03-05T13:48:00-05:00\"\n * title=\"5 March 2026, 13:48 (UTC -5)\"\n * >\n * Thursday 5 March 2026, 09:48\n * </time>\n * ==========================================\n */\nexport const updateTimeElement = ($el) => {\n const datetime = $el.getAttribute(\"datetime\");\n\n try {\n const prettyDatetime = iso8601ToPrettyDatetime(datetime);\n if (!prettyDatetime.includes($el.textContent)) {\n $el.setAttribute(\"title\", $el.textContent);\n $el.textContent = prettyDatetime;\n }\n } catch (e) {\n // Do nothing if the datetime is invalid or not provided\n }\n};\n","import { Accordion } from \"./components/accordion/accordion.mjs\";\nimport { Breadcrumbs } from \"./components/breadcrumbs/breadcrumbs.mjs\";\nimport { CookieBanner } from \"./components/cookie-banner/cookie-banner.mjs\";\nimport { DateInputProgressive } from \"./components/date-input/date-input.mjs\";\nimport { ErrorSummary } from \"./components/error-summary/error-summary.mjs\";\nimport { FileInputDroppable } from \"./components/file-input/file-input.mjs\";\nimport { Footer } from \"./components/footer/footer.mjs\";\nimport { Gallery } from \"./components/gallery/gallery.mjs\";\nimport { GlobalHeader } from \"./components/global-header/global-header.mjs\";\nimport { Header } from \"./components/header/header.mjs\";\nimport { Picture } from \"./components/picture/picture.mjs\";\nimport { SkipLink } from \"./components/skip-link/skip-link.mjs\";\nimport { Tabs } from \"./components/tabs/tabs.mjs\";\nimport { TextInputPassword } from \"./components/text-input/text-input.mjs\";\nimport { TextAreaItemisedRows } from \"./components/textarea/textarea.mjs\";\nimport Cookies from \"./lib/cookies.mjs\";\nimport { checkTableForScroll } from \"./lib/tables.mjs\";\nimport { updateTimeElement } from \"./lib/helpers.mjs\";\n\nconst initAll = (options) => {\n options = typeof options !== \"undefined\" ? options : {};\n const $scope =\n options.scope instanceof HTMLElement ? options.scope : document;\n\n const $html = document.documentElement;\n $html.classList.add(\"tna-template--js-enabled\");\n\n const onFirstTouch = () => {\n window.removeEventListener(\"touchstart\", onFirstTouch);\n $html.classList.add(\"tna-template--touched\");\n };\n window.addEventListener(\"touchstart\", onFirstTouch);\n\n const onKeyDown = (e) => {\n if (e.key === \"Tab\") {\n $html.classList.add(\"tna-template--tabbed\");\n $html.classList.remove(\"tna-template--clicked\");\n }\n };\n window.addEventListener(\"keydown\", onKeyDown);\n\n const onMouseDown = () => {\n $html.classList.add(\"tna-template--clicked\");\n $html.classList.remove(\"tna-template--tabbed\");\n };\n window.addEventListener(\"mousedown\", onMouseDown);\n\n /*\n * ==========================================\n * Checks if widths of all tables on the page\n * are wider than their parent container, and\n * allowing horizontal scrolling if they are.\n * This is done both on load and on resize.\n * ==========================================\n */\n const $tableWrappers = $scope.querySelectorAll(\".tna-table-wrapper\");\n $tableWrappers.forEach(($tableWrapper) => checkTableForScroll($tableWrapper));\n window.addEventListener(\"resize\", () => {\n $tableWrappers.forEach(($tableWrapper) =>\n checkTableForScroll($tableWrapper),\n );\n });\n\n // TODO: Remove this opt-in class in a later release\n if ($html.classList.contains(\"tna-template--enhance-time-elements\")) {\n document.querySelectorAll(\"time[datetime]\").forEach(updateTimeElement);\n }\n\n const $accordions = $scope.querySelectorAll('[data-module=\"tna-accordion\"]');\n $accordions.forEach(($accordion) => {\n new Accordion($accordion);\n });\n\n const $breadcrumbs = $scope.querySelector('[data-module=\"tna-breadcrumbs\"]');\n if ($breadcrumbs) {\n new Breadcrumbs($breadcrumbs);\n }\n\n const $cookieBanner = $scope.querySelector(\n '[data-module=\"tna-cookie-banner\"]',\n );\n if ($cookieBanner) {\n new CookieBanner($cookieBanner);\n }\n\n const $progressiveDateInputs = $scope.querySelectorAll(\n '[data-module=\"tna-date-input-progressive\"]',\n );\n $progressiveDateInputs.forEach(($dateInput) => {\n new DateInputProgressive($dateInput);\n });\n\n const $errorSummary = $scope.querySelector(\n '[data-module=\"tna-error-summary\"]',\n );\n if ($errorSummary) {\n new ErrorSummary($errorSummary).init();\n }\n\n const $fileInputs = $scope.querySelectorAll('[data-module=\"tna-file-input\"]');\n $fileInputs.forEach(($fileInput) => {\n new FileInputDroppable($fileInput);\n });\n\n const $footer = $scope.querySelector('[data-module=\"tna-footer\"]');\n if ($footer) {\n new Footer($footer);\n }\n\n const $galleries = $scope.querySelectorAll('[data-module=\"tna-gallery\"]');\n $galleries.forEach(($gallery) => {\n new Gallery($gallery);\n });\n\n const $globalHeader = $scope.querySelector(\n '[data-module=\"tna-global-header\"]',\n );\n if ($globalHeader) {\n new GlobalHeader($globalHeader);\n }\n\n const $header = $scope.querySelector('[data-module=\"tna-header\"]');\n if ($header) {\n new Header($header);\n }\n\n const $pictures = $scope.querySelectorAll('[data-module=\"tna-picture\"]');\n $pictures.forEach(($picture) => {\n new Picture($picture);\n });\n\n const $skipLinks = $scope.querySelectorAll('[data-module=\"tna-skip-link\"]');\n $skipLinks.forEach(($skipLink) => {\n new SkipLink($skipLink);\n });\n\n const $tabs = $scope.querySelectorAll('[data-module=\"tna-tabs\"]');\n $tabs.forEach(($tabModule) => {\n new Tabs($tabModule);\n });\n\n const $textInputPasswords = $scope.querySelectorAll(\n '[data-module=\"tna-text-input-password\"]',\n );\n $textInputPasswords.forEach(($textInputPassword) => {\n new TextInputPassword($textInputPassword);\n });\n\n const $textAreaItemisedRows = $scope.querySelectorAll(\n '[data-module=\"tna-textarea-itemised-rows\"]',\n );\n $textAreaItemisedRows.forEach(($textAreaItemisedRows) => {\n const enhancedHint = $textAreaItemisedRows.dataset.enhancedHint;\n new TextAreaItemisedRows($textAreaItemisedRows, { enhancedHint });\n });\n\n window.matchMedia(\"print\").addEventListener(\"change\", (evt) => {\n if (evt.matches) {\n $scope\n .querySelectorAll(\".tna-details__details:not([open])\")\n .forEach((e) => {\n e.setAttribute(\"open\", \"\");\n e.dataset.wasClosed = \"\";\n });\n $scope\n .querySelectorAll(\n \".tna-accordion__content[hidden], .tna-picture__transcript[hidden]\",\n )\n .forEach((e) => {\n e.removeAttribute(\"hidden\");\n e.dataset.wasClosed = \"\";\n });\n } else {\n $scope\n .querySelectorAll(\".tna-details__details[data-was-closed]\")\n .forEach((e) => {\n e.removeAttribute(\"open\");\n delete e.dataset.wasClosed;\n });\n $scope\n .querySelectorAll(\n \".tna-accordion__content[data-was-closed], .tna-picture__transcript[data-was-closed]\",\n )\n .forEach((e) => {\n e.setAttribute(\"hidden\", \"\");\n e.dataset.wasClosed = \"\";\n });\n }\n });\n};\n\nexport {\n initAll,\n Cookies,\n Accordion,\n Breadcrumbs,\n CookieBanner,\n DateInputProgressive,\n ErrorSummary,\n FileInputDroppable,\n Footer,\n Gallery,\n GlobalHeader,\n Header,\n Picture,\n SkipLink,\n Tabs,\n TextInputPassword,\n TextAreaItemisedRows,\n checkTableForScroll,\n updateTimeElement,\n};\n"],"names":["root","factory","exports","module","define","amd","self","Accordion","$module","_this","_classCallCheck","this","$items","querySelectorAll","allowMultipleItemsOpen","dataset","singleOpenItem","forEach","$item","initItem","initState","$toggleAllButton","querySelector","syncToggleAllButton","removeAttribute","addEventListener","isAllOpen","closeItem","openItem","key","value","_this2","$heading","$content","classList","add","remove","setAttribute","$headingButton","document","createElement","id","innerText","appendChild","getAttribute","_this3","closeAllItemsExcept","concat","trim","$tableWrapper","$wrapper","checkTableForScroll","$excludeItem","_this4","Array","from","filter","every","closeAllLabel","openAllLabel","Breadcrumbs","_createClass","$breadcrumbsList","$breadcrumbs","length","contains","uniqueId","uuidv4","$expandable","style","display","$expandButton","innerHTML","focus","once","insertBefore","nextSibling","CookieBanner","$acceptButton","$rejectButton","$prompt","$acceptedMessage","$rejectedMessage","$closeButtons","cookies","Cookies","newInstance","cookiePreferencesSetKey","preferencesKey","policiesCorrectOnInit","exists","hasValue","accept","reject","complete","acceptAllPolicies","rejectAllPolicies","set","$closeButton","close","DateInputProgressive","$yearWrapper","$yearInput","$monthWrapper","$monthInput","$dayWrapper","$dayInput","update","window","isValidYear","showMonth","isValidMonth","showDay","hideDay","hideMonth","yearValue","parseInt","isNaN","monthRawValue","monthIntValue","includes","toLowerCase","ErrorSummary","disableAutofocus","setFocus","event","handleClick","$element","_options$onBeforeFocu","options","arguments","undefined","isFocusable","onBlur","_options$onBlur","call","onBeforeFocus","$target","target","focusTarget","preventDefault","url","split","pop","HTMLAnchorElement","inputId","getFragmentFromUrl","href","$input","getElementById","$legendOrLabel","getAssociatedLegendOrLabel","scrollIntoView","preventScroll","_document$querySelect","$fieldset","closest","$legends","getElementsByTagName","$candidateLegend","HTMLInputElement","type","legendTop","getBoundingClientRect","top","inputRect","height","innerHeight","FileInputDroppable","$body","acceptMutltipleFiles","hasAttribute","$droppableArea","$pseudoSelectFileText","textContent","$droppableButtons","$pseudoSelectFileButton","$pseudoDropFileButton","$droppableAreaAriaLabel","e","showDropTarget","hideDropTarget","onChange","dataTransfer","hasNoTypesInfo","types","isDraggingFiles","some","updateAriaLabel","isContainingFiles","items","_files$","files","name","Footer","themeCookieName","$themeSelector","$themeSelectorNotice","$themeSelectorEnableSettingsCookiesButton","$tnaTemplate","currentTheme","themeOnLoad","$themeSelectorButtons","$themeSelectorButton","$button","setTheme","selectThemeSelectorButton","acceptPolicy","showThemeSelector","on","data","Object","hasOwn","settings","$currentThemeButton","find","get","isPolicyAccepted","theme","$selectedButton","Gallery","$itemsContainer","$navigation","$navigationItems","$navigationButtons","$navigationButtonPrev","$navigationButtonNext","setup","currentId","showItem","_this$$navigationButt","_this$$navigationButt2","_this$$navigationButt3","_$item$querySelector","preventDefaultKeyAction","showPreviousItem","showNextItem","showFirstItem","showLastItem","stopPropagation","$liveRegion","prepend","getCurrentItemIndex","findIndex","nextIndexToShow","GlobalHeader","$toggleButton","$topNavigation","$links","menuOpened","mql","matchMedia","syncState","handleToggleNavigation","addListener","code","matches","show","hide","hidden","i","Header","Picture","$imageWrapper","$transcriptToggle","$transcript","transcriptOpened","openLabel","informationLabelOpen","closeLabel","informationLabelClose","init","toggleTranscript","SkipLink","_$module$getAttribute","linkedElementId","$linkedElement","focusLinkedElement","linkedElementListener","removeFocusProperties","Tabs","$tabList","$tabListItemLinks","$tabItems","currentTabIndex","$tabListItemLink","tabPanelID","$tabPanel","handleItemLinkClick","switchTabByIndex","handleItemLinkKeyDown","itemLinkClickEvent","targetItem","currentTarget","switchTabByID","itemLinkKeyDownEvent","previousTab","nextTab","newIndex","switchFocus","index","$tabItem","targetId","TextInputPassword","$textInputWrapper","$textInputPasswordToggle","updateTogglePasswordButtonText","togglePasswordType","TextAreaItemisedRows","$formFieldInput","$formFieldInputHint","$formFieldBody","enhancedHint","values","map","$formFieldNewInput","attribute","updateList","appendValue","$formFieldNewInputAddButton","$formFieldNewInputAddButtonInner","$formFieldNewInputAddButtonInnerExtra","$formFieldLiveAria","$formFieldCounter","$valuesList","updateAriaText","parentNode","content","replace","normaliseValue","indexOf","newValue","isValueInList","push","join","removeValue","existingValue","$itemLabel","$removeItemButton","TNAFrontendCookies","TNAFrontendCookieEvents","CookieEventHandler","debug","_defineProperty","log","_console","_len","args","_key","console","apply","callback","events","_toConsumableArray","oneTimeEvents","eventToTrigger","splice","tnaCookiePolicies","documentElement","tnaFrontendDebug","defaultDomain","defaultPath","secure","policiesKey","defaultAge","_options$newInstance","_options$noInit","noInit","tnaCookiesDomain","location","hostname","tnaCookiesPath","tnaCookiesInsecure","tnaCookiesPoliciesKey","tnaCookiesDefaultAge","keys","policies","policy","existingPolicies","filteredExistingPolicies","fromEntries","savePolicies","_objectSpread","usage","marketing","essential","_console2","_len2","_key2","all","deserialised","cookie","x","parts","JSON","parse","decodeURIComponent","_options$maxAge","maxAge","_options$sameSite","sameSite","_options$domain","domain","_options$path","path","_options$secure","_options$session","session","encodeURIComponent","trigger","setPolicy","accepted","allPolicies","k","stringify","isUninitialised","tableScrollInitialised","$caption","warn","scrollWidth","clientWidth","c","crypto","getRandomValues","Uint8Array","toString","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","d","definition","o","defineProperty","enumerable","obj","prop","prototype","hasOwnProperty","r","Symbol","toStringTag","updateTimeElement","$el","datetime","prettyDatetime","dateStr","Error","isDateTime","test","isDate","date","Date","dayString","toLocaleDateString","weekday","dateString","day","month","year","getHours","getMinutes","timeString","toLocaleTimeString","hour","minute","getSeconds","second","iso8601ToPrettyDatetime","initAll","$scope","scope","HTMLElement","$html","onFirstTouch","removeEventListener","$tableWrappers","$accordion","$cookieBanner","$dateInput","$errorSummary","$fileInput","$footer","$gallery","$globalHeader","$header","$picture","$skipLink","$tabModule","$textInputPassword","$textAreaItemisedRows","evt","wasClosed"],"sourceRoot":""}
1
+ {"version":3,"file":"all.js","mappings":"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","sources":["webpack://TNAFrontend/webpack/universalModuleDefinition","webpack://TNAFrontend/./src/nationalarchives/components/accordion/accordion.mjs","webpack://TNAFrontend/./src/nationalarchives/components/breadcrumbs/breadcrumbs.mjs","webpack://TNAFrontend/./src/nationalarchives/components/cookie-banner/cookie-banner.mjs","webpack://TNAFrontend/./src/nationalarchives/components/date-input/date-input.mjs","webpack://TNAFrontend/./src/nationalarchives/components/error-summary/error-summary.mjs","webpack://TNAFrontend/./src/nationalarchives/components/file-input/file-input.mjs","webpack://TNAFrontend/./src/nationalarchives/components/footer/footer.mjs","webpack://TNAFrontend/./src/nationalarchives/components/gallery/gallery.mjs","webpack://TNAFrontend/./src/nationalarchives/components/global-header/global-header.mjs","webpack://TNAFrontend/./src/nationalarchives/components/header/header.mjs","webpack://TNAFrontend/./src/nationalarchives/components/picture/picture.mjs","webpack://TNAFrontend/./src/nationalarchives/components/skip-link/skip-link.mjs","webpack://TNAFrontend/./src/nationalarchives/components/tabs/tabs.mjs","webpack://TNAFrontend/./src/nationalarchives/components/text-input/text-input.mjs","webpack://TNAFrontend/./src/nationalarchives/components/textarea/textarea.mjs","webpack://TNAFrontend/./src/nationalarchives/lib/cookies.mjs","webpack://TNAFrontend/./src/nationalarchives/lib/helpers.mjs","webpack://TNAFrontend/./src/nationalarchives/lib/uuid.mjs","webpack://TNAFrontend/webpack/bootstrap","webpack://TNAFrontend/webpack/runtime/define property getters","webpack://TNAFrontend/webpack/runtime/hasOwnProperty shorthand","webpack://TNAFrontend/webpack/runtime/make namespace object","webpack://TNAFrontend/./src/nationalarchives/all.mjs"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"TNAFrontend\"] = factory();\n\telse\n\t\troot[\"TNAFrontend\"] = factory();\n})(self, () => {\nreturn ","import { checkTableForScroll } from \"../../lib/helpers.mjs\";\n\nexport class Accordion {\n constructor($module) {\n this.$module = $module;\n this.$items = $module && $module.querySelectorAll(\".tna-accordion__item\");\n if (!this.$module || !this.$items) {\n return;\n }\n\n this.allowMultipleItemsOpen =\n this.$module.dataset.singleOpenItem !== \"true\";\n\n this.$items.forEach(($item) => this.initItem($item));\n this.initState();\n\n this.$toggleAllButton = this.$module.querySelector(\n \".tna-accordion__toggle-all\",\n );\n if (this.$toggleAllButton) {\n this.syncToggleAllButton();\n this.$toggleAllButton.removeAttribute(\"hidden\");\n this.$toggleAllButton.addEventListener(\"click\", () => {\n if (this.isAllOpen()) {\n this.$items.forEach(($item) => this.closeItem($item));\n } else {\n this.$items.forEach(($item) => this.openItem($item));\n }\n this.syncToggleAllButton();\n });\n }\n }\n\n initItem($item) {\n const $heading = $item.querySelector(\".tna-accordion__heading\");\n const $content = $item.querySelector(\".tna-accordion__body\");\n\n if (!$heading || !$content) {\n return;\n }\n\n $item.classList.add(\"tna-accordion__details\");\n $item.classList.remove(\"tna-accordion__item\");\n\n $heading.removeAttribute(\"class\");\n\n $content.classList.add(\"tna-accordion__content\");\n $content.classList.remove(\"tna-accordion__body\");\n $content.setAttribute(\"hidden\", \"\");\n\n const $headingButton = document.createElement(\"button\");\n $headingButton.classList.add(\"tna-accordion__summary\");\n $headingButton.setAttribute(\"type\", \"button\");\n $headingButton.setAttribute(\"aria-controls\", $content.id);\n $headingButton.innerText = $heading.innerText;\n $heading.innerText = \"\";\n $heading.appendChild($headingButton);\n\n $headingButton.addEventListener(\"click\", () => {\n const isOpen = $headingButton.getAttribute(\"aria-expanded\") === \"true\";\n if (isOpen) {\n this.closeItem($item);\n } else {\n this.openItem($item);\n }\n });\n }\n\n initState() {\n this.$items.forEach(($item) => {\n if ($item.dataset[\"isopen\"] === \"true\") {\n this.openItem($item);\n } else {\n this.closeItem($item);\n }\n $item.removeAttribute(\"data-isopen\");\n });\n }\n\n openItem($item) {\n if (!this.allowMultipleItemsOpen) {\n this.closeAllItemsExcept($item);\n }\n const $headingButton = $item.querySelector(\".tna-accordion__summary\");\n const $content = $item.querySelector(\".tna-accordion__content\");\n $headingButton.setAttribute(\"aria-expanded\", \"true\");\n $headingButton.setAttribute(\n \"aria-label\",\n `${$headingButton.innerText.trim()}, Hide this section`,\n );\n $content.removeAttribute(\"hidden\");\n // $content.setAttribute(\"tabindex\", \"0\");\n this.syncToggleAllButton();\n\n const $tableWrapper = $content.querySelectorAll(\".tna-table-wrapper\");\n if ($tableWrapper) {\n $tableWrapper.forEach(($wrapper) => {\n checkTableForScroll($wrapper);\n });\n }\n }\n\n closeItem($item) {\n const $headingButton = $item.querySelector(\".tna-accordion__summary\");\n const $content = $item.querySelector(\".tna-accordion__content\");\n $headingButton.setAttribute(\"aria-expanded\", \"false\");\n $headingButton.setAttribute(\n \"aria-label\",\n `${$headingButton.innerText.trim()}, Show this section`,\n );\n $content.setAttribute(\"hidden\", \"\");\n // $content.setAttribute(\"tabindex\", \"-1\");\n this.syncToggleAllButton();\n }\n\n closeAllItemsExcept($excludeItem) {\n Array.from(this.$items)\n .filter(\n ($item) =>\n $item.querySelector(\".tna-accordion__summary\") !== $excludeItem &&\n $item\n .querySelector(\".tna-accordion__summary\")\n .getAttribute(\"aria-expanded\") === \"true\",\n )\n .forEach(($item) => this.closeItem($item));\n }\n\n isAllOpen() {\n return Array.from(this.$items).every(\n ($item) =>\n $item\n .querySelector(\".tna-accordion__summary\")\n .getAttribute(\"aria-expanded\") === \"true\",\n );\n }\n\n syncToggleAllButton() {\n if (this.$toggleAllButton) {\n if (this.isAllOpen()) {\n this.$toggleAllButton.innerText =\n this.$toggleAllButton.dataset.closeAllLabel || \"Hide all sections\";\n } else {\n this.$toggleAllButton.innerText =\n this.$toggleAllButton.dataset.openAllLabel || \"Show all sections\";\n }\n }\n }\n}\n","import uuidv4 from \"../../lib/uuid.mjs\";\n\nexport class Breadcrumbs {\n constructor($module) {\n this.$module = $module;\n this.$breadcrumbsList =\n $module && $module.querySelector(\".tna-breadcrumbs__list\");\n this.$breadcrumbs =\n $module &&\n this.$breadcrumbsList &&\n $module.querySelectorAll(\".tna-breadcrumbs__item\");\n\n if (this.$module && this.$breadcrumbsList && this.$breadcrumbs) {\n if (\n this.$breadcrumbs.length > 2 &&\n !this.$module.classList.contains(\"tna-breadcrumbs--no-collapse\")\n ) {\n const uniqueId = `tna-breadcrumbs-${uuidv4()}`;\n\n const $expandable = document.createElement(\"li\");\n $expandable.classList.add(\n \"tna-breadcrumbs__item\",\n \"tna-breadcrumbs__item--expandable\",\n );\n $expandable.style.display = \"none\";\n\n const $expandButton = document.createElement(\"button\");\n $expandButton.classList.add(\"tna-breadcrumbs__link\");\n $expandButton.innerHTML =\n \"<span class='tna-!--visually-hidden'>Expand breadcrumbs</span>&hellip;\";\n $expandButton.setAttribute(\"type\", \"button\");\n $expandButton.setAttribute(\"aria-expanded\", \"false\");\n $expandButton.setAttribute(\"aria-controls\", uniqueId);\n $expandButton.addEventListener(\"click\", () => {\n this.$module.classList.remove(\"tna-breadcrumbs--collapsed\");\n $expandable.remove();\n this.$module.setAttribute(\"tabindex\", \"0\");\n this.$module.focus();\n this.$module.addEventListener(\n \"blur\",\n () => {\n this.$module.removeAttribute(\"tabindex\");\n },\n { once: true },\n );\n });\n $expandable.appendChild($expandButton);\n\n this.$breadcrumbsList.setAttribute(\"id\", uniqueId);\n this.$breadcrumbsList.insertBefore(\n $expandable,\n this.$breadcrumbs[this.$breadcrumbs.length - 2].nextSibling,\n );\n\n this.$module.classList.add(\"tna-breadcrumbs--collapsed\");\n }\n }\n }\n}\n","import Cookies from \"../../lib/cookies.mjs\";\n\nexport { Cookies };\n\nexport class CookieBanner {\n constructor($module) {\n this.$module = $module;\n this.$acceptButton = $module && $module.querySelector('[value=\"accept\"]');\n this.$rejectButton = $module && $module.querySelector('[value=\"reject\"]');\n this.$prompt =\n $module && $module.querySelector(\".tna-cookie-banner__message--prompt\");\n this.$acceptedMessage =\n $module && $module.querySelector(\".tna-cookie-banner__message--accepted\");\n this.$rejectedMessage =\n $module && $module.querySelector(\".tna-cookie-banner__message--rejected\");\n this.$closeButtons = $module && $module.querySelectorAll('[value=\"close\"]');\n\n if (\n !this.$module ||\n !this.$acceptButton ||\n !this.$rejectButton ||\n !this.$prompt ||\n !this.$acceptedMessage ||\n !this.$rejectedMessage ||\n !this.$closeButtons\n ) {\n return;\n }\n\n this.cookies = new Cookies({ newInstance: true });\n\n this.cookiePreferencesSetKey =\n this.$module.dataset.preferencesKey || \"cookie_preferences_set\";\n\n if (!this.cookies.policiesCorrectOnInit) {\n this.cookies.delete(this.cookiePreferencesSetKey);\n }\n\n if (\n !this.cookies.exists(this.cookiePreferencesSetKey) ||\n !this.cookies.hasValue(this.cookiePreferencesSetKey, \"true\")\n ) {\n this.$module.removeAttribute(\"hidden\");\n\n this.$acceptButton.addEventListener(\"click\", () => this.accept());\n this.$rejectButton.addEventListener(\"click\", () => this.reject());\n }\n }\n\n accept() {\n this.$prompt.setAttribute(\"hidden\", \"\");\n this.complete();\n this.cookies.acceptAllPolicies();\n this.$acceptedMessage.removeAttribute(\"hidden\");\n this.$acceptedMessage.setAttribute(\"tabindex\", \"0\");\n this.$acceptedMessage.focus();\n this.$acceptedMessage.addEventListener(\"blur\", () => {\n this.$acceptedMessage.removeAttribute(\"tabindex\");\n });\n }\n\n reject() {\n this.$prompt.setAttribute(\"hidden\", \"\");\n this.complete();\n this.cookies.rejectAllPolicies();\n this.$rejectedMessage.removeAttribute(\"hidden\");\n this.$rejectedMessage.setAttribute(\"tabindex\", \"0\");\n this.$rejectedMessage.focus();\n this.$rejectedMessage.addEventListener(\"blur\", () => {\n this.$rejectedMessage.removeAttribute(\"tabindex\");\n });\n }\n\n complete() {\n this.cookies.set(this.cookiePreferencesSetKey, true);\n this.$closeButtons.forEach(($closeButton) => {\n $closeButton.addEventListener(\"click\", () => this.close());\n });\n }\n\n close() {\n this.$module.setAttribute(\"hidden\", \"\");\n }\n}\n","import Cookies from \"../../lib/cookies.mjs\";\n\nexport { Cookies };\n\nexport class DateInputProgressive {\n constructor($module) {\n this.$module = $module;\n this.$yearWrapper =\n $module && $module.querySelector(\".tna-date-input__item--year\");\n this.$yearInput =\n this.$yearWrapper && this.$yearWrapper.querySelector(\"input\");\n this.$monthWrapper =\n $module && $module.querySelector(\".tna-date-input__item--month\");\n this.$monthInput =\n this.$monthWrapper && this.$monthWrapper.querySelector(\"input\");\n this.$dayWrapper =\n $module && $module.querySelector(\".tna-date-input__item--day\");\n this.$dayInput =\n this.$dayWrapper && this.$dayWrapper.querySelector(\"input\");\n\n if (!this.$module) {\n return;\n }\n\n this.update();\n window.addEventListener(\"pageshow\", () => this.update());\n\n if (this.$yearInput) {\n this.$yearInput.addEventListener(\"keyup\", () => this.update());\n this.$yearInput.addEventListener(\"change\", () => this.update());\n }\n if (this.$monthInput) {\n this.$monthInput.addEventListener(\"keyup\", () => this.update());\n this.$monthInput.addEventListener(\"change\", () => this.update());\n }\n if (this.$dayInput) {\n this.$dayInput.addEventListener(\"keyup\", () => this.update());\n this.$dayInput.addEventListener(\"change\", () => this.update());\n }\n }\n\n update() {\n if (this.isValidYear()) {\n this.showMonth();\n if (this.isValidMonth()) {\n this.showDay();\n } else {\n this.hideDay();\n }\n } else {\n this.hideMonth();\n this.hideDay();\n }\n }\n\n isValidYear() {\n if (!this.$yearInput) {\n return true;\n }\n const yearValue = parseInt(this.$yearInput.value.trim());\n return !isNaN(this.$yearInput.value) && !isNaN(yearValue) && yearValue > 0;\n }\n\n isValidMonth() {\n if (!this.$monthInput) {\n return true;\n }\n const monthRawValue = this.$monthInput.value.trim();\n const monthIntValue = parseInt(monthRawValue);\n const validMonthStrings = [\n \"january\",\n \"february\",\n \"march\",\n \"april\",\n \"may\",\n \"june\",\n \"july\",\n \"august\",\n \"september\",\n \"october\",\n \"november\",\n \"december\",\n \"jan\",\n \"feb\",\n \"mar\",\n \"apr\",\n \"jun\",\n \"jul\",\n \"aug\",\n \"sep\",\n \"oct\",\n \"nov\",\n \"dec\",\n ];\n return (\n (!isNaN(this.$monthInput.value) &&\n !isNaN(monthIntValue) &&\n monthIntValue > 0 &&\n monthIntValue <= 12) ||\n validMonthStrings.includes(monthRawValue.toLowerCase())\n );\n }\n\n showMonth() {\n if (this.$monthWrapper) {\n this.$monthWrapper.removeAttribute(\"hidden\");\n }\n }\n\n hideMonth() {\n if (this.$monthWrapper) {\n this.$monthWrapper.setAttribute(\"hidden\", \"\");\n }\n }\n\n showDay() {\n if (this.$dayWrapper) {\n this.$dayWrapper.removeAttribute(\"hidden\");\n }\n }\n\n hideDay() {\n if (this.$dayWrapper) {\n this.$dayWrapper.setAttribute(\"hidden\", \"\");\n }\n }\n}\n","export class ErrorSummary {\n constructor($module) {\n this.$module = $module;\n }\n\n init() {\n if (!this.$module) {\n return;\n }\n\n const disableAutoFocus =\n this.$module.dataset.disableAutofocus === \"true\" || false;\n\n if (!disableAutoFocus) {\n this.setFocus(this.$module);\n }\n\n this.$module.addEventListener(\"click\", (event) => this.handleClick(event));\n }\n\n setFocus($element, options = {}) {\n const isFocusable = $element.getAttribute(\"tabindex\");\n\n if (!isFocusable) {\n $element.setAttribute(\"tabindex\", \"-1\");\n }\n\n /**\n * Handle element focus\n */\n function onFocus() {\n $element.addEventListener(\"blur\", onBlur, { once: true });\n }\n\n /**\n * Handle element blur\n */\n function onBlur() {\n options.onBlur?.call($element);\n\n if (!isFocusable) {\n $element.removeAttribute(\"tabindex\");\n }\n }\n\n // Add listener to reset element on blur, after focus\n $element.addEventListener(\"focus\", onFocus, { once: true });\n\n // Focus element\n options.onBeforeFocus?.call($element);\n $element.focus();\n }\n\n handleClick(event) {\n const $target = event.target;\n if ($target && this.focusTarget($target)) {\n event.preventDefault();\n }\n }\n\n getFragmentFromUrl(url) {\n if (!url.includes(\"#\")) {\n return undefined;\n }\n\n return url.split(\"#\").pop();\n }\n\n focusTarget($target) {\n // If the element that was clicked was not a link, return early\n if (!($target instanceof HTMLAnchorElement)) {\n return false;\n }\n\n const inputId = this.getFragmentFromUrl($target.href);\n if (!inputId) {\n return false;\n }\n\n const $input = document.getElementById(inputId);\n if (!$input) {\n return false;\n }\n\n const $legendOrLabel = this.getAssociatedLegendOrLabel($input);\n if (!$legendOrLabel) {\n return false;\n }\n\n // Scroll the legend or label into view *before* calling focus on the input\n // to avoid extra scrolling in browsers that don't support `preventScroll`\n // (which at time of writing is most of them...)\n $legendOrLabel.scrollIntoView();\n $input.focus({ preventScroll: true });\n\n return true;\n }\n\n /**\n * Get associated legend or label\n *\n * Returns the first element that exists from this list:\n *\n * - The `<legend>` associated with the closest `<fieldset>` ancestor, as long\n * as the top of it is no more than half a viewport height away from the\n * bottom of the input\n * - The first `<label>` that is associated with the input using for=\"inputId\"\n * - The closest parent `<label>`\n *\n * @private\n * @param {Element} $input - The input\n * @returns {Element | null} Associated legend or label, or null if no\n * associated legend or label can be found\n */\n getAssociatedLegendOrLabel($input) {\n const $fieldset = $input.closest(\"fieldset\");\n\n if ($fieldset) {\n const $legends = $fieldset.getElementsByTagName(\"legend\");\n\n if ($legends.length) {\n const $candidateLegend = $legends[0];\n\n // If the input type is radio or checkbox, always use the legend if\n // there is one.\n if (\n $input instanceof HTMLInputElement &&\n ($input.type === \"checkbox\" || $input.type === \"radio\")\n ) {\n return $candidateLegend;\n }\n\n // For other input types, only scroll to the fieldset’s legend (instead\n // of the label associated with the input) if the input would end up in\n // the top half of the screen.\n //\n // This should avoid situations where the input either ends up off the\n // screen, or obscured by a software keyboard.\n const legendTop = $candidateLegend.getBoundingClientRect().top;\n const inputRect = $input.getBoundingClientRect();\n\n // If the browser doesn't support Element.getBoundingClientRect().height\n // or window.innerHeight (like IE8), bail and just link to the label.\n if (inputRect.height && window.innerHeight) {\n const inputBottom = inputRect.top + inputRect.height;\n\n if (inputBottom - legendTop < window.innerHeight / 2) {\n return $candidateLegend;\n }\n }\n }\n }\n\n return (\n document.querySelector(`label[for='${$input.getAttribute(\"id\")}']`) ??\n $input.closest(\"label\")\n );\n }\n}\n","export class FileInputDroppable {\n constructor($module) {\n this.$module = $module;\n this.$body = $module && $module.querySelector(\".tna-form-item__body\");\n this.$input = this.$body && this.$body.querySelector(\".tna-file-input\");\n\n if (!this.$module || !this.$body || !this.$input) {\n return;\n }\n\n this.acceptMutltipleFiles = this.$input.hasAttribute(\"multiple\");\n\n this.$droppableArea = document.createElement(\"div\");\n this.$droppableArea.classList.add(\n \"tna-file-input__droppable\",\n \"tna-file-input__droppable--empty\",\n );\n this.$body.insertBefore(this.$droppableArea, this.$input);\n this.$droppableArea.appendChild(this.$input);\n\n this.$pseudoSelectFileText = document.createElement(\"span\");\n this.$pseudoSelectFileText.setAttribute(\"aria-live\", \"polite\");\n this.$pseudoSelectFileText.classList.add(\n \"tna-file-input__droppable-status\",\n );\n this.$pseudoSelectFileText.textContent = `No file${this.acceptMutltipleFiles ? \"s\" : \"\"} selected`;\n this.$droppableArea.appendChild(this.$pseudoSelectFileText);\n\n const $droppableButtons = document.createElement(\"div\");\n $droppableButtons.classList.add(\n \"tna-button-group\",\n \"tna-button-group--small\",\n \"tna-!--margin-top-s\",\n \"tna-file-input__droppable-buttons\",\n );\n this.$droppableArea.appendChild($droppableButtons);\n\n const $pseudoSelectFileButton = document.createElement(\"span\");\n $pseudoSelectFileButton.classList.add(\"tna-button\");\n $pseudoSelectFileButton.textContent = `Choose file${this.acceptMutltipleFiles ? \"s\" : \"\"}`;\n $droppableButtons.appendChild($pseudoSelectFileButton);\n\n const $pseudoDropFileButton = document.createElement(\"span\");\n $pseudoDropFileButton.textContent = `or drop file${this.acceptMutltipleFiles ? \"s\" : \"\"}`;\n $droppableButtons.appendChild($pseudoDropFileButton);\n\n this.$droppableAreaAriaLabel = document.createElement(\"span\");\n this.$droppableAreaAriaLabel.classList.add(\"tna-visually-hidden\");\n this.$droppableAreaAriaLabel.setAttribute(\"aria-live\", \"assertive\");\n this.$droppableArea.appendChild(this.$droppableAreaAriaLabel);\n\n this.$input.addEventListener(\"dragenter\", (e) => this.showDropTarget(e));\n this.$input.addEventListener(\"dragleave\", () => this.hideDropTarget());\n this.$input.addEventListener(\"dragend\", () => this.hideDropTarget());\n this.$input.addEventListener(\"change\", () => this.onChange());\n this.$input.addEventListener(\"drop\", () => this.onChange());\n }\n\n isContainingFiles(dataTransfer) {\n const hasNoTypesInfo = dataTransfer.types.length === 0;\n const isDraggingFiles = dataTransfer.types.some((type) => type === \"Files\");\n return hasNoTypesInfo || isDraggingFiles;\n }\n\n showDropTarget(event, updateAriaLabel = true) {\n if (event.dataTransfer && this.isContainingFiles(event.dataTransfer)) {\n this.$droppableArea.classList.add(\n event.dataTransfer.items.length > 1\n ? \"tna-file-input__droppable--over-multiple\"\n : \"tna-file-input__droppable--over\",\n );\n\n if (updateAriaLabel) {\n this.$droppableAreaAriaLabel.textContent = \"Entered drop zone\";\n }\n }\n }\n\n hideDropTarget(updateAriaLabel = true) {\n this.$droppableArea.classList.remove(\n \"tna-file-input__droppable--over\",\n \"tna-file-input__droppable--over-multiple\",\n );\n if (updateAriaLabel) {\n this.$droppableAreaAriaLabel.textContent = \"Left drop zone\";\n }\n }\n\n onChange() {\n const files = this.$input.files;\n if (this.acceptMutltipleFiles) {\n if (files.length === 0) {\n this.$pseudoSelectFileText.textContent = `No files selected`;\n } else {\n this.$pseudoSelectFileText.textContent = `${files.length} file${files.length > 1 ? \"s\" : \"\"} selected`;\n }\n } else {\n this.$pseudoSelectFileText.textContent =\n files[0]?.name || `No file selected`;\n }\n if (files.length === 0) {\n this.$droppableArea.classList.add(\"tna-file-input__droppable--empty\");\n } else {\n this.$droppableArea.classList.remove(\"tna-file-input__droppable--empty\");\n }\n this.hideDropTarget(false);\n }\n}\n","import Cookies from \"../../lib/cookies.mjs\";\n\nexport class Footer {\n constructor($module, themeCookieName = \"theme\") {\n this.$module = $module;\n this.$themeSelector =\n $module && $module.querySelector(\".tna-footer__theme-selector\");\n this.$themeSelectorNotice =\n $module && $module.querySelector(\".tna-footer__theme-selector-notice\");\n this.$themeSelectorEnableSettingsCookiesButton =\n this.$themeSelectorNotice &&\n this.$themeSelectorNotice.querySelector(\n \".tna-footer__theme-selector-enable-settings-cookies\",\n );\n this.$tnaTemplate = document.querySelector(\".tna-template\");\n\n if (\n !this.$module ||\n !this.$themeSelector ||\n !this.$themeSelectorNotice ||\n !this.$themeSelectorEnableSettingsCookiesButton ||\n !this.$tnaTemplate\n ) {\n return;\n }\n\n this.currentTheme = this.$themeSelector.dataset.themeOnLoad;\n\n this.themeCookieName = themeCookieName;\n\n this.cookies = new Cookies();\n\n this.$themeSelectorButtons = this.$themeSelector.querySelectorAll(\n \"button.tna-footer__theme-selector-button[value]\",\n );\n\n Array.from(this.$themeSelectorButtons).forEach(($themeSelectorButton) => {\n $themeSelectorButton.addEventListener(\"click\", (e) => {\n const $button = e.target;\n this.setTheme($button.value);\n this.selectThemeSelectorButton($button);\n });\n });\n\n this.$themeSelectorEnableSettingsCookiesButton.addEventListener(\n \"click\",\n () => {\n this.cookies.acceptPolicy(\"settings\");\n },\n );\n\n this.showThemeSelector();\n this.cookies.on(\"changePolicy\", (data) => {\n if (Object.hasOwn(data, \"settings\")) {\n if (data.settings === true) {\n this.cookies.set(this.themeCookieName, this.currentTheme);\n this.$themeSelectorNotice.setAttribute(\"hidden\", \"\");\n } else {\n this.cookies.delete(this.themeCookieName);\n this.$themeSelectorNotice.removeAttribute(\"hidden\");\n }\n }\n });\n }\n\n showThemeSelector() {\n this.$themeSelector.removeAttribute(\"hidden\");\n if (this.cookies.exists(this.themeCookieName)) {\n const $currentThemeButton = Array.from(this.$themeSelectorButtons).find(\n ($button) => $button.value === this.cookies.get(this.themeCookieName),\n );\n if ($currentThemeButton) {\n this.selectThemeSelectorButton($currentThemeButton);\n }\n }\n if (!this.cookies.isPolicyAccepted(\"settings\")) {\n this.$themeSelectorNotice.removeAttribute(\"hidden\");\n }\n }\n\n setTheme(theme) {\n if (theme === \"light\") {\n this.$tnaTemplate.classList.remove(\n \"tna-template--system-theme\",\n \"tna-template--dark-theme\",\n );\n } else if (theme === \"dark\") {\n this.$tnaTemplate.classList.remove(\"tna-template--system-theme\");\n this.$tnaTemplate.classList.add(`tna-template--dark-theme`);\n } else if (theme === \"system\") {\n this.$tnaTemplate.classList.remove(\"tna-template--dark-theme\");\n this.$tnaTemplate.classList.add(`tna-template--system-theme`);\n } else {\n return;\n }\n this.currentTheme = theme;\n if (this.cookies.isPolicyAccepted(\"settings\")) {\n this.cookies.set(this.themeCookieName, this.currentTheme);\n } else {\n this.$themeSelectorNotice.removeAttribute(\"hidden\");\n }\n }\n\n selectThemeSelectorButton($selectedButton) {\n Array.from(this.$themeSelectorButtons).forEach(($button) => {\n if ($button.value === $selectedButton.value) {\n $button.classList.remove(\"tna-button--plain\");\n $button.setAttribute(\"aria-current\", true);\n } else {\n $button.classList.add(\"tna-button--plain\");\n $button.removeAttribute(\"aria-current\");\n }\n });\n }\n}\n","export class Gallery {\n constructor($module) {\n this.$module = $module;\n this.$itemsContainer =\n $module && $module.querySelector(\".tna-gallery__items\");\n this.$items =\n this.$itemsContainer &&\n this.$itemsContainer.querySelectorAll(\".tna-gallery__item\");\n this.$navigation =\n $module && $module.querySelector(\".tna-gallery__navigation\");\n this.$navigationItems =\n this.$navigation &&\n $module.querySelectorAll(\".tna-gallery__navigation-item\");\n this.$navigationButtons =\n $module && $module.querySelector(\".tna-gallery__navigation-buttons\");\n\n if (\n !this.$module ||\n !this.$itemsContainer ||\n !this.$items ||\n this.$items.length < 2 ||\n !this.$navigation ||\n !this.$navigationItems ||\n !this.$navigationButtons\n ) {\n return;\n }\n\n this.$module.classList.add(\"tna-gallery--interactive\");\n\n this.$navigationButtonPrev = this.$navigationButtons.querySelector(\n \".tna-gallery__navigation-prev\",\n );\n this.$navigationButtonNext = this.$navigationButtons.querySelector(\n \".tna-gallery__navigation-next\",\n );\n\n this.setup();\n this.currentId = this.$items[0].id;\n this.showItem(this.currentId);\n }\n\n setup() {\n this.$items.forEach(($item) => {\n $item.setAttribute(\"hidden\", \"\");\n $item.setAttribute(\"aria-hidden\", \"true\");\n $item\n .querySelector(\".tna-gallery__item-header\")\n ?.setAttribute(\"aria-hidden\", \"true\");\n });\n this.$navigation.removeAttribute(\"hidden\");\n this.$navigationItems.forEach(($item) => {\n $item.addEventListener(\"click\", () => {\n this.showItem($item.getAttribute(\"aria-controls\"));\n this.$itemsContainer.setAttribute(\"tabindex\", \"0\");\n this.$itemsContainer.focus();\n });\n });\n this.$module.addEventListener(\"keydown\", (e) => {\n let preventDefaultKeyAction = false;\n switch (e.key) {\n case \"ArrowLeft\":\n case \"ArrowUp\":\n this.showPreviousItem();\n preventDefaultKeyAction = true;\n break;\n case \"ArrowRight\":\n case \"ArrowDown\":\n this.showNextItem();\n preventDefaultKeyAction = true;\n break;\n case \"Home\":\n this.showFirstItem();\n preventDefaultKeyAction = true;\n break;\n case \"End\":\n this.showLastItem();\n preventDefaultKeyAction = true;\n break;\n }\n if (preventDefaultKeyAction) {\n e.stopPropagation();\n e.preventDefault();\n }\n });\n\n this.$navigationButtons?.removeAttribute(\"hidden\");\n this.$navigationButtonPrev?.addEventListener(\"click\", () => {\n this.showPreviousItem();\n });\n this.$navigationButtonNext?.addEventListener(\"click\", () => {\n this.showNextItem();\n });\n\n this.$liveRegion = document.createElement(\"div\");\n this.$liveRegion.setAttribute(\"aria-live\", \"polite\");\n this.$liveRegion.setAttribute(\"aria-atomic\", \"true\");\n this.$liveRegion.setAttribute(\"class\", \"tna-gallery__item-header\");\n this.$itemsContainer.prepend(this.$liveRegion);\n this.$itemsContainer.classList.add(\"tna-gallery__items--hide-item-titles\");\n this.$itemsContainer.addEventListener(\"blur\", () =>\n this.$itemsContainer.removeAttribute(\"tabindex\"),\n );\n }\n\n showItem(id) {\n this.$items.forEach(($item) => {\n if (id && $item.id === id) {\n $item.removeAttribute(\"hidden\");\n $item.removeAttribute(\"aria-hidden\");\n } else {\n $item.setAttribute(\"hidden\", \"\");\n $item.setAttribute(\"aria-hidden\", \"true\");\n }\n });\n this.$navigationItems.forEach(($item) => {\n if (id) {\n if ($item.getAttribute(\"aria-controls\") === id) {\n $item.setAttribute(\"aria-current\", \"true\");\n } else {\n $item.setAttribute(\"aria-current\", \"false\");\n }\n } else {\n $item.setAttribute(\"aria-current\", \"false\");\n }\n });\n this.currentId = id;\n this.$liveRegion.textContent = `Image ${this.getCurrentItemIndex() + 1} of ${this.$items.length}`;\n }\n\n getCurrentItemIndex() {\n return Array.from(this.$items).findIndex(\n ($item) => $item.id === this.currentId,\n );\n }\n\n showPreviousItem() {\n let nextIndexToShow = this.getCurrentItemIndex() - 1;\n if (nextIndexToShow < 0) {\n nextIndexToShow = this.$items.length - 1;\n }\n this.showItem(this.$items[nextIndexToShow].id);\n }\n\n showNextItem() {\n let nextIndexToShow = this.getCurrentItemIndex() + 1;\n if (nextIndexToShow >= this.$items.length) {\n nextIndexToShow = 0;\n }\n this.showItem(this.$items[nextIndexToShow].id);\n }\n\n showFirstItem() {\n this.showItem(this.$items[0].id);\n }\n\n showLastItem() {\n this.showItem(this.$items[this.$items.length - 1].id);\n }\n}\n","export class GlobalHeader {\n constructor($module) {\n this.$module = $module;\n this.$toggleButton =\n $module && $module.querySelector(\".tna-global-header__navigation-button\");\n this.$navigation =\n $module &&\n $module.querySelector(\".tna-global-header__navigation-wrapper\");\n this.$topNavigation =\n $module &&\n $module.querySelector(\".tna-global-header__top-navigation-wrapper\");\n this.$links =\n $module &&\n ((this.$navigation &&\n this.$navigation.querySelectorAll(\"[tabindex='0']\")) ||\n (this.$topNavigation &&\n this.$topNavigation.querySelectorAll(\"[tabindex='0']\")));\n this.menuOpened = false;\n this.mql = window.matchMedia(\"(max-width: 48em)\");\n\n if (\n !this.$module ||\n !this.$toggleButton ||\n (!this.$navigation && !this.$topNavigation)\n ) {\n return;\n }\n\n this.$toggleButton.removeAttribute(\"hidden\");\n this.syncState();\n this.$toggleButton.addEventListener(\"click\", () =>\n this.handleToggleNavigation(),\n );\n if (\"addEventListener\" in this.mql) {\n this.mql.addEventListener(\"change\", () => this.syncState());\n } else {\n this.mql.addListener(() => this.syncState());\n }\n\n this.$module.addEventListener(\"keyup\", (e) => {\n if (e.code === \"Escape\" && this.mql.matches) {\n if (this.menuOpened) {\n this.menuOpened = false;\n this.syncState();\n this.$toggleButton.focus();\n }\n }\n });\n }\n\n handleToggleNavigation() {\n this.menuOpened = !this.menuOpened;\n this.syncState();\n }\n\n syncState() {\n if (this.mql.matches) {\n if (this.menuOpened) {\n this.show();\n } else {\n this.hide();\n }\n } else {\n this.show();\n }\n }\n\n hide() {\n if (this.$navigation) {\n this.$navigation.hidden = true;\n this.$navigation.setAttribute(\"aria-hidden\", \"true\");\n }\n if (this.$topNavigation) {\n this.$topNavigation.hidden = true;\n this.$topNavigation.setAttribute(\"aria-hidden\", \"true\");\n }\n this.$toggleButton.setAttribute(\"aria-expanded\", \"false\");\n this.$toggleButton.setAttribute(\"title\", \"Open menu\");\n this.$toggleButton.classList.remove(\n \"tna-global-header__navigation-button--opened\",\n );\n for (let i = 0; i < this.$links.length; i++) {\n this.$links[i].setAttribute(\"tabindex\", \"-1\");\n }\n }\n\n show() {\n if (this.$navigation) {\n this.$navigation.hidden = false;\n this.$navigation.setAttribute(\"aria-hidden\", \"false\");\n }\n if (this.$topNavigation) {\n this.$topNavigation.hidden = false;\n this.$topNavigation.setAttribute(\"aria-hidden\", \"false\");\n }\n this.$toggleButton.setAttribute(\"aria-expanded\", \"true\");\n this.$toggleButton.setAttribute(\"title\", \"Close menu\");\n this.$toggleButton.classList.add(\n \"tna-global-header__navigation-button--opened\",\n );\n for (let i = 0; i < this.$links.length; i++) {\n this.$links[i].setAttribute(\"tabindex\", \"0\");\n }\n }\n}\n","export class Header {\n constructor($module) {\n this.$module = $module;\n this.$toggleButton =\n $module && $module.querySelector(\".tna-header__navigation-button\");\n this.$navigation =\n $module && $module.querySelector(\".tna-header__navigation\");\n this.$links =\n $module &&\n this.$navigation &&\n this.$navigation.querySelectorAll(\"[tabindex='0']\");\n this.menuOpened = false;\n this.mql = window.matchMedia(\"(max-width: 48em)\");\n\n if (!this.$module || !this.$toggleButton || !this.$navigation) {\n return;\n }\n\n this.$toggleButton.removeAttribute(\"hidden\");\n this.syncState();\n this.$toggleButton.addEventListener(\"click\", () =>\n this.handleToggleNavigation(),\n );\n if (\"addEventListener\" in this.mql) {\n this.mql.addEventListener(\"change\", () => this.syncState());\n } else {\n this.mql.addListener(() => this.syncState());\n }\n\n this.$module.addEventListener(\"keyup\", (e) => {\n if (e.code === \"Escape\") {\n if (this.menuOpened && this.mql.matches) {\n this.menuOpened = false;\n this.syncState();\n this.$toggleButton.focus();\n }\n }\n });\n }\n\n handleToggleNavigation() {\n this.menuOpened = !this.menuOpened;\n this.syncState();\n }\n\n syncState() {\n if (this.mql.matches) {\n if (this.menuOpened) {\n this.show();\n } else {\n this.hide();\n }\n } else {\n this.show();\n }\n }\n\n show() {\n this.$navigation.classList.add(\"tna-header__navigation--open\");\n this.$navigation.removeAttribute(\"hidden\");\n this.$navigation.setAttribute(\"aria-hidden\", \"false\");\n this.$toggleButton.setAttribute(\"aria-expanded\", \"true\");\n this.$toggleButton.setAttribute(\"title\", \"Close menu\");\n this.$toggleButton.classList.add(\"tna-header__navigation-button--opened\");\n\n for (let i = 0; i < this.$links.length; i++) {\n this.$links[i].setAttribute(\"tabindex\", \"0\");\n }\n }\n\n hide() {\n this.$navigation.classList.remove(\"tna-header__navigation--open\");\n this.$navigation.hidden = true;\n this.$navigation.setAttribute(\"aria-hidden\", \"true\");\n this.$toggleButton.setAttribute(\"aria-expanded\", \"false\");\n this.$toggleButton.setAttribute(\"title\", \"Open menu\");\n this.$toggleButton.classList.remove(\n \"tna-header__navigation-button--opened\",\n );\n\n for (let i = 0; i < this.$links.length; i++) {\n this.$links[i].setAttribute(\"tabindex\", \"-1\");\n }\n }\n}\n","import uuidv4 from \"../../lib/uuid.mjs\";\n\nexport class Picture {\n constructor($module) {\n this.$module = $module;\n this.$imageWrapper =\n $module && $module.querySelector(\".tna-picture__image-wrapper\");\n\n this.$transcriptToggle =\n this.$imageWrapper &&\n this.$imageWrapper.querySelector(\".tna-picture__toggle-transcript\");\n\n this.$transcript =\n $module && $module.querySelector(\".tna-picture__transcript\");\n this.transcriptOpened = false;\n\n if (\n !this.$module ||\n !this.$imageWrapper ||\n !this.$transcriptToggle ||\n !this.$transcript\n ) {\n return;\n }\n\n this.openLabel =\n this.$module.dataset.informationLabelOpen || \"Open transcript\";\n this.closeLabel =\n this.$module.dataset.informationLabelClose || \"Close transcript\";\n\n this.init();\n }\n\n init() {\n const uniqueId = `tna-picture-${uuidv4()}`;\n\n this.$transcriptToggle.removeAttribute(\"hidden\");\n this.$transcriptToggle.setAttribute(\"aria-controls\", uniqueId);\n this.$transcriptToggle.innerText = this.openLabel;\n this.$transcriptToggle.addEventListener(\"click\", () =>\n this.toggleTranscript(),\n );\n\n this.$transcript.setAttribute(\"id\", uniqueId);\n this.$transcript.setAttribute(\"hidden\", \"\");\n\n this.$transcript.addEventListener(\"keydown\", (e) => {\n switch (e.key) {\n case \"Escape\":\n this.toggleTranscript();\n this.$transcriptToggle.focus();\n break;\n }\n });\n }\n\n toggleTranscript() {\n this.transcriptOpened = !this.transcriptOpened;\n if (this.transcriptOpened) {\n this.$transcriptToggle.setAttribute(\"aria-expanded\", true);\n this.$transcriptToggle.innerText = this.closeLabel;\n this.$transcript.removeAttribute(\"hidden\");\n } else {\n this.$transcriptToggle.setAttribute(\"aria-expanded\", false);\n this.$transcriptToggle.innerText = this.openLabel;\n this.$transcript.setAttribute(\"hidden\", \"\");\n }\n }\n}\n","export class SkipLink {\n linkedElementListener = false;\n\n constructor($module) {\n this.$module = $module;\n this.linkedElementId = $module.getAttribute(\"href\")?.split(\"#\").pop();\n this.$linkedElement =\n $module &&\n this.linkedElementId &&\n document.getElementById(this.linkedElementId);\n\n if (this.$module && this.$linkedElement) {\n this.$module.addEventListener(\"click\", () => this.focusLinkedElement());\n }\n }\n\n focusLinkedElement() {\n if (!this.$linkedElement.getAttribute(\"tabindex\")) {\n this.$linkedElement.setAttribute(\"tabindex\", \"-1\");\n this.$linkedElement.classList.add(\"tna-!--no-focus-style\");\n\n if (!this.linkedElementListener) {\n this.$linkedElement.addEventListener(\"blur\", () =>\n this.removeFocusProperties(),\n );\n this.linkedElementListener = true;\n }\n }\n\n this.$linkedElement.focus();\n }\n\n removeFocusProperties() {\n this.$linkedElement.removeAttribute(\"tabindex\");\n this.$linkedElement.classList.remove(\"tna-!--no-focus-style\");\n }\n}\n","export class Tabs {\n constructor($module) {\n this.$module = $module;\n this.$tabList = $module && $module.querySelector(\".tna-tabs__list\");\n this.$tabListItemLinks =\n $module &&\n this.$tabList &&\n this.$tabList.querySelectorAll(\".tna-tabs__button\");\n this.$tabItems = $module && $module.querySelectorAll(\".tna-tabs__item\");\n\n if (\n !this.$module ||\n !this.$tabList ||\n !this.$tabListItemLinks ||\n !this.$tabItems ||\n this.$tabListItemLinks.length !== this.$tabItems.length\n ) {\n return;\n }\n\n this.currentTabIndex = 0;\n this.init();\n }\n\n init() {\n this.$module.classList.add(\"tna-tabs--interactive\");\n this.$tabList.removeAttribute(\"hidden\");\n this.$tabListItemLinks.forEach(($tabListItemLink) => {\n const tabPanelID = $tabListItemLink.getAttribute(\"aria-controls\");\n $tabListItemLink.setAttribute(\"aria-selected\", false);\n const $tabPanel = document.getElementById(tabPanelID);\n $tabPanel.setAttribute(\"aria-labelledby\", $tabListItemLink.id);\n $tabPanel.setAttribute(\"role\", \"tabpanel\");\n $tabListItemLink.addEventListener(\n \"click\",\n (e) => this.handleItemLinkClick(e),\n true,\n );\n });\n this.switchTabByIndex(this.currentTabIndex);\n this.$module.addEventListener(\"keydown\", (e) =>\n this.handleItemLinkKeyDown(e),\n );\n }\n\n handleItemLinkClick(itemLinkClickEvent) {\n itemLinkClickEvent.preventDefault();\n const targetItem =\n itemLinkClickEvent.currentTarget.getAttribute(\"aria-controls\");\n this.switchTabByID(targetItem);\n }\n\n handleItemLinkKeyDown(itemLinkKeyDownEvent) {\n let preventDefaultKeyAction = false;\n switch (itemLinkKeyDownEvent.key) {\n case \"ArrowLeft\":\n case \"ArrowUp\":\n this.previousTab();\n preventDefaultKeyAction = true;\n break;\n case \"ArrowRight\":\n case \"ArrowDown\":\n this.nextTab();\n preventDefaultKeyAction = true;\n break;\n case \"Home\":\n this.switchTabByIndex(0, true);\n preventDefaultKeyAction = true;\n break;\n case \"End\":\n this.switchTabByIndex(this.$tabListItemLinks.length - 1, true);\n preventDefaultKeyAction = true;\n break;\n default:\n break;\n }\n if (preventDefaultKeyAction) {\n itemLinkKeyDownEvent.stopPropagation();\n itemLinkKeyDownEvent.preventDefault();\n }\n }\n\n nextTab() {\n if (this.currentTabIndex < this.$tabListItemLinks.length - 1) {\n this.switchTabByIndex(this.currentTabIndex + 1, true);\n } else {\n this.switchTabByIndex(0, true);\n }\n }\n\n previousTab() {\n if (this.currentTabIndex >= 1) {\n this.switchTabByIndex(this.currentTabIndex - 1, true);\n } else {\n this.switchTabByIndex(this.$tabListItemLinks.length - 1, true);\n }\n }\n\n switchTabByIndex(newIndex, switchFocus = false) {\n this.currentTabIndex = newIndex;\n this.$tabListItemLinks.forEach(($tabListItemLink, index) => {\n if (index === this.currentTabIndex) {\n $tabListItemLink.setAttribute(\"aria-selected\", true);\n $tabListItemLink.setAttribute(\"tabindex\", \"0\");\n if (switchFocus) {\n $tabListItemLink.focus();\n }\n } else {\n $tabListItemLink.setAttribute(\"aria-selected\", false);\n $tabListItemLink.setAttribute(\"tabindex\", \"-1\");\n }\n });\n this.$tabItems.forEach(($tabItem, index) => {\n if (index === this.currentTabIndex) {\n $tabItem.removeAttribute(\"hidden\");\n $tabItem.setAttribute(\"tabindex\", \"0\");\n } else {\n $tabItem.setAttribute(\"hidden\", \"\");\n $tabItem.setAttribute(\"tabindex\", \"-1\");\n }\n });\n }\n\n switchTabByID(targetId) {\n const index = Array.from(this.$tabItems).findIndex(\n ($tabItem) => $tabItem.getAttribute(\"id\") === targetId,\n );\n this.switchTabByIndex(index);\n }\n}\n","export class TextInputPassword {\n constructor($module) {\n this.$module = $module;\n this.$input = $module && $module.querySelector(\".tna-text-input\");\n\n if (\n !this.$module ||\n !this.$input ||\n this.$input.getAttribute(\"type\") !== \"password\"\n ) {\n return;\n }\n\n this.$textInputWrapper = document.createElement(\"div\");\n this.$textInputWrapper.classList.add(\"tna-text-input-wrapper\");\n\n this.$textInputPasswordToggle = document.createElement(\"button\");\n this.$textInputPasswordToggle.setAttribute(\"type\", \"button\");\n this.$textInputPasswordToggle.classList.add(\n \"tna-button\",\n \"tna-button--small\",\n \"tna-button--icon-only\",\n );\n this.$textInputPasswordToggle.setAttribute(\"aria-controls\", this.$input.id);\n this.updateTogglePasswordButtonText();\n\n this.$textInputWrapper.appendChild(this.$input);\n this.$textInputWrapper.appendChild(this.$textInputPasswordToggle);\n this.$module.appendChild(this.$textInputWrapper);\n\n this.$textInputPasswordToggle.addEventListener(\"click\", () => {\n this.togglePasswordType();\n this.$input.focus();\n });\n }\n\n togglePasswordType() {\n if (this.$input.getAttribute(\"type\") === \"password\") {\n this.$input.setAttribute(\"type\", \"text\");\n } else {\n this.$input.setAttribute(\"type\", \"password\");\n }\n this.updateTogglePasswordButtonText();\n }\n\n updateTogglePasswordButtonText() {\n if (this.$input.getAttribute(\"type\") === \"password\") {\n this.$textInputPasswordToggle.innerHTML = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 640 640\" height=\"24\" aria-hidden=\"true\" focusable=\"false\"><!--!Font Awesome Free v7.0.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--><path d=\"M320 96C239.2 96 174.5 132.8 127.4 176.6C80.6 220.1 49.3 272 34.4 307.7C31.1 315.6 31.1 324.4 34.4 332.3C49.3 368 80.6 420 127.4 463.4C174.5 507.1 239.2 544 320 544C400.8 544 465.5 507.2 512.6 463.4C559.4 419.9 590.7 368 605.6 332.3C608.9 324.4 608.9 315.6 605.6 307.7C590.7 272 559.4 220 512.6 176.6C465.5 132.9 400.8 96 320 96zM176 320C176 240.5 240.5 176 320 176C399.5 176 464 240.5 464 320C464 399.5 399.5 464 320 464C240.5 464 176 399.5 176 320zM320 256C320 291.3 291.3 320 256 320C244.5 320 233.7 317 224.3 311.6C223.3 322.5 224.2 333.7 227.2 344.8C240.9 396 293.6 426.4 344.8 412.7C396 399 426.4 346.3 412.7 295.1C400.5 249.4 357.2 220.3 311.6 224.3C316.9 233.6 320 244.4 320 256z\" /></svg>Show password`;\n this.$textInputPasswordToggle.setAttribute(\"title\", \"Show password\");\n this.$textInputPasswordToggle.setAttribute(\"aria-label\", \"Show password\");\n } else {\n this.$textInputPasswordToggle.innerHTML = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 640 640\" height=\"24\" aria-hidden=\"true\" focusable=\"false\"><!--!Font Awesome Free v7.0.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--><path d=\"M73 39.1C63.6 29.7 48.4 29.7 39.1 39.1C29.8 48.5 29.7 63.7 39 73.1L567 601.1C576.4 610.5 591.6 610.5 600.9 601.1C610.2 591.7 610.3 576.5 600.9 567.2L504.5 470.8C507.2 468.4 509.9 466 512.5 463.6C559.3 420.1 590.6 368.2 605.5 332.5C608.8 324.6 608.8 315.8 605.5 307.9C590.6 272.2 559.3 220.2 512.5 176.8C465.4 133.1 400.7 96.2 319.9 96.2C263.1 96.2 214.3 114.4 173.9 140.4L73 39.1zM236.5 202.7C260 185.9 288.9 176 320 176C399.5 176 464 240.5 464 320C464 351.1 454.1 379.9 437.3 403.5L402.6 368.8C415.3 347.4 419.6 321.1 412.7 295.1C399 243.9 346.3 213.5 295.1 227.2C286.5 229.5 278.4 232.9 271.1 237.2L236.4 202.5zM357.3 459.1C345.4 462.3 332.9 464 320 464C240.5 464 176 399.5 176 320C176 307.1 177.7 294.6 180.9 282.7L101.4 203.2C68.8 240 46.4 279 34.5 307.7C31.2 315.6 31.2 324.4 34.5 332.3C49.4 368 80.7 420 127.5 463.4C174.6 507.1 239.3 544 320.1 544C357.4 544 391.3 536.1 421.6 523.4L357.4 459.2z\" /></svg>Hide password`;\n this.$textInputPasswordToggle.setAttribute(\"title\", \"Hide password\");\n this.$textInputPasswordToggle.setAttribute(\"aria-label\", \"Hide password\");\n }\n }\n}\n","export class TextAreaItemisedRows {\n constructor($module, options = {}) {\n this.$module = $module;\n this.$formFieldInput =\n this.$module && this.$module.querySelector(\".tna-textarea\");\n this.$formFieldInputHint =\n this.$module && this.$module.querySelector(\".tna-form-item__hint\");\n this.$formFieldBody =\n this.$module && this.$module.querySelector(\".tna-form-item__body\");\n\n if (\n !this.$module ||\n !this.$formFieldInput ||\n !this.$formFieldBody ||\n this.$formFieldInput.getAttribute(\"hidden\") !== null\n ) {\n return;\n }\n\n const { enhancedHint } = options;\n\n this.values = this.$formFieldInput.value\n .split(\"\\n\")\n .map((value) => value.trim())\n .filter((value) => value);\n\n this.id = this.$formFieldInput.id;\n\n this.$formFieldNewInput = document.createElement(\"input\");\n this.$formFieldNewInput.classList.add(\"tna-text-input\");\n [\"id\", \"aria-describedby\"].forEach((attribute) => {\n this.$formFieldNewInput.setAttribute(\n attribute,\n this.$formFieldInput.getAttribute(attribute),\n );\n this.$formFieldInput.removeAttribute(attribute);\n });\n this.$formFieldBody.appendChild(this.$formFieldNewInput);\n this.$formFieldInput.setAttribute(\"hidden\", \"\");\n this.$formFieldInput.addEventListener(\"keyup\", () => this.updateList());\n this.$formFieldNewInput.addEventListener(\"keypress\", (e) => {\n if (e.key === \"Enter\") {\n this.appendValue(e.target.value);\n }\n });\n\n this.$formFieldNewInputAddButton = document.createElement(\"button\");\n this.$formFieldNewInputAddButton.setAttribute(\"type\", \"button\");\n this.$formFieldNewInputAddButton.classList.add(\n \"tna-button\",\n \"tna-button--small\",\n );\n this.$formFieldNewInputAddButtonInner = document.createElement(\"span\");\n this.$formFieldNewInputAddButtonInner.innerText = \"Add\";\n this.$formFieldNewInputAddButtonInnerExtra = document.createElement(\"span\");\n this.$formFieldNewInputAddButtonInnerExtra.classList.add(\n \"tna-visually-hidden\",\n );\n this.$formFieldNewInputAddButtonInnerExtra.innerText = \" to list\";\n this.$formFieldNewInputAddButtonInner.appendChild(\n this.$formFieldNewInputAddButtonInnerExtra,\n );\n this.$formFieldNewInputAddButton.appendChild(\n this.$formFieldNewInputAddButtonInner,\n );\n this.$formFieldBody.appendChild(this.$formFieldNewInputAddButton);\n this.$formFieldNewInputAddButton.addEventListener(\"click\", () => {\n this.appendValue(this.$formFieldNewInput.value);\n });\n\n this.$formFieldLiveAria = document.createElement(\"div\");\n this.$formFieldLiveAria.setAttribute(\"aria-live\", \"assertive\");\n this.$formFieldLiveAria.classList.add(\"tna-visually-hidden\");\n this.$module.appendChild(this.$formFieldLiveAria);\n\n this.$formFieldCounter = document.createElement(\"p\");\n this.$formFieldCounter.id = `${this.id}-list-helper`;\n this.$formFieldCounter.classList.add(\"tna-!--margin-top-xs\");\n this.$module.appendChild(this.$formFieldCounter);\n\n this.$formFieldNewInput.setAttribute(\n \"aria-describedby\",\n `${this.$formFieldNewInput.getAttribute(\"aria-describedby\")} ${\n this.$formFieldCounter.id\n }`,\n );\n\n this.$valuesList = document.createElement(\"ul\");\n this.$valuesList.classList.add(\n \"tna-compound-filters\",\n \"tna-!--margin-top-xs\",\n );\n this.$valuesList.addEventListener(\"blur\", () => {\n this.$valuesList.removeAttribute(\"tabindex\");\n this.updateAriaText(\"\");\n });\n this.$module.appendChild(this.$valuesList);\n\n if (!this.$formFieldInputHint) {\n this.$formFieldInputHint = document.createElement(\"p\");\n this.$formFieldInputHint.classList.add(\"tna-form-item__hint\");\n this.$formFieldBody.parentNode.insertBefore(\n this.$formFieldInputHint,\n this.$formFieldBody,\n );\n }\n this.$formFieldInputHint.innerText =\n enhancedHint || \"Enter an item and press enter\";\n\n this.updateList();\n }\n\n updateAriaText(content) {\n this.$formFieldLiveAria.innerText = content;\n }\n\n normaliseValue(value) {\n return value.replace(/\\s{2,}/, \" \").trim();\n }\n\n isValueInList(value) {\n return (\n this.values\n .map((value) => this.normaliseValue(value).toLowerCase())\n .indexOf(value.toLowerCase().trim()) > -1\n );\n }\n\n appendValue(value) {\n const newValue = this.normaliseValue(value);\n if (newValue) {\n if (!this.isValueInList(newValue)) {\n this.values.push(newValue);\n this.$formFieldInput.value = this.values.join(\"\\n\");\n this.updateList();\n this.updateAriaText(`'${newValue}' added`);\n } else {\n this.updateAriaText(`'${newValue}' already added`);\n }\n } else {\n this.updateAriaText(\"Enter an item to add\");\n }\n this.$formFieldNewInput.value = \"\";\n this.$formFieldNewInput.focus();\n }\n\n removeValue(value) {\n const removeValue = this.normaliseValue(value);\n if (removeValue && this.isValueInList(removeValue)) {\n this.values = this.values.filter(\n (existingValue) => existingValue !== removeValue,\n );\n this.$formFieldInput.value = this.values.join(\"\\n\");\n this.updateList();\n this.updateAriaText(`'${removeValue}' removed`);\n }\n if (this.values.length) {\n this.$valuesList.setAttribute(\"tabindex\", \"0\");\n this.$valuesList.focus();\n } else {\n this.$formFieldNewInput.focus();\n }\n }\n\n updateList() {\n this.$valuesList.innerHTML = \"\";\n this.values\n .map((value) => {\n const $item = document.createElement(\"li\");\n $item.classList.add(\"tna-compound-filters__item\");\n const $itemLabel = document.createElement(\"span\");\n $itemLabel.innerText = value;\n $item.appendChild($itemLabel);\n\n const $removeItemButton = document.createElement(\"button\");\n $removeItemButton.innerText = `Remove '${value}'`;\n $removeItemButton.setAttribute(\"type\", \"button\");\n $removeItemButton.classList.add(\"tna-compound-filters__link\");\n $removeItemButton.addEventListener(\"click\", () => {\n this.removeValue(value);\n });\n $item.appendChild($removeItemButton);\n return $item;\n })\n .forEach(($item) => this.$valuesList.appendChild($item));\n this.$formFieldCounter.innerText = `${this.values.length} item${this.values.length !== 1 ? \"s\" : \"\"} added`;\n }\n}\n","window.TNAFrontendCookies = window.TNAFrontendCookies || null;\nwindow.TNAFrontendCookieEvents = window.TNAFrontendCookieEvents || null;\n\nexport class CookieEventHandler {\n events = {};\n oneTimeEvents = {};\n debug = false;\n\n constructor(debug = false) {\n this.debug = debug;\n if (window.TNAFrontendCookieEvents) {\n this.log(\"Using existing TNAFrontendCookieEvents instance\");\n return window.TNAFrontendCookieEvents;\n }\n window.TNAFrontendCookieEvents = this;\n }\n\n log(...args) {\n if (this.debug) {\n console.log(\"[TNA Frontend Cookie Events]\", ...args);\n }\n }\n\n /**\n * Add an event listener.\n * @param {String} event - The event to add a listener for.\n * @param {Function} callback - The callback function to call when the event is triggered.\n */\n on(event, callback) {\n if (!Object.hasOwn(this.events, event)) {\n this.events[event] = [];\n }\n this.events[event] = [...this.events[event], callback];\n }\n\n once(event, callback) {\n if (!Object.hasOwn(this.oneTimeEvents, event)) {\n this.oneTimeEvents[event] = [];\n }\n this.oneTimeEvents[event] = [...this.oneTimeEvents[event], callback];\n }\n\n /** @protected */\n trigger(event, data = {}) {\n if (Object.hasOwn(this.events, event)) {\n this.log(`Triggering event: ${event}`, data);\n this.events[event].forEach((eventToTrigger) =>\n eventToTrigger.call(this, data),\n );\n }\n if (Object.hasOwn(this.oneTimeEvents, event)) {\n this.log(`Triggering one-time event: ${event}`, data);\n for (let i = this.oneTimeEvents[event].length - 1; i >= 0; i--) {\n const eventToTrigger = this.oneTimeEvents[event][i];\n eventToTrigger.call(this, data);\n this.oneTimeEvents[event].splice(i, 1);\n }\n }\n }\n}\n\nconst tnaCookiePolicies = [\"usage\", \"settings\", \"marketing\", \"essential\"];\n\n/**\n * Class to handle cookies.\n * @class Cookies\n * @constructor\n * @public\n */\nexport default class Cookies {\n /** @protected */\n defaultDomain = \"\";\n /** @protected */\n defaultPath = \"\";\n /** @protected */\n secure = true;\n /** @protected */\n policiesKey = \"\";\n /** @protected */\n events = null;\n /** @protected */\n defaultAge = null;\n /** @protected */\n policiesCorrectOnInit = false;\n /** @protected */\n debug = document.documentElement.dataset.tnaFrontendDebug === \"true\";\n\n /**\n * Create a cookie handler.\n * @param {String} [options.defaultDomain] - The domain to register the cookie with.\n * @param {String} [options.path] - The domain to register the cookie with.\n * @param {Boolean} [options.secure] - Only set cookie in HTTPS environments.\n * @param {String} [options.policiesKey] - The name of the cookie.\n * @param {Number} [options.defaultAge] - The default age of non-session cookies.\n * @param {String} [options.newInstance=false] - Create a fresh instance of the cookie class.\n * @param {Boolean} [options.noInit=false] - Don't initialise a blank cookie policy.\n */\n constructor(options = {}) {\n const {\n defaultDomain,\n defaultPath,\n secure,\n policiesKey,\n defaultAge,\n newInstance = false,\n noInit = false,\n } = options;\n if (!newInstance && window.TNAFrontendCookies) {\n return window.TNAFrontendCookies;\n }\n if (defaultDomain === undefined) {\n this.defaultDomain =\n document.documentElement.dataset.tnaCookiesDomain ||\n window.location.hostname;\n } else {\n this.defaultDomain = defaultDomain;\n }\n if (defaultPath === undefined) {\n this.defaultPath = document.documentElement.dataset.tnaCookiesPath || \"/\";\n } else {\n this.defaultPath = defaultPath;\n }\n if (secure === undefined) {\n this.secure =\n document.documentElement.dataset.tnaCookiesInsecure !== \"true\";\n } else {\n this.secure = secure;\n }\n if (policiesKey === undefined) {\n this.policiesKey =\n document.documentElement.dataset.tnaCookiesPoliciesKey ||\n \"cookies_policy\";\n } else {\n this.policiesKey = policiesKey;\n }\n if (defaultAge === undefined) {\n this.defaultAge =\n parseInt(document.documentElement.dataset.tnaCookiesDefaultAge) ||\n 31536000; // 365 days;\n } else {\n this.defaultAge = defaultAge;\n }\n this.events = new CookieEventHandler(this.debug);\n this.policiesCorrectOnInit =\n Object.keys(this.policies).length === tnaCookiePolicies.length &&\n tnaCookiePolicies.every(\n (policy) =>\n Object.keys(this.policies).includes(policy) &&\n typeof this.policies[policy] === \"boolean\",\n );\n if (!this.policiesCorrectOnInit && !noInit) {\n this.init();\n }\n this.log({\n defaultDomain: this.defaultDomain,\n defaultPath: this.defaultPath,\n secure: this.secure,\n policiesKey: this.policiesKey,\n defaultAge: this.defaultAge,\n policiesCorrectOnInit: this.policiesCorrectOnInit,\n });\n if (!newInstance && !window.TNAFrontendCookies) {\n window.TNAFrontendCookies = this;\n }\n }\n\n /** @protected */\n init() {\n const existingPolicies = this.policies;\n this.log(\"Existing policies on init:\", existingPolicies);\n const filteredExistingPolicies = Object.fromEntries(\n Object.keys(existingPolicies)\n .filter((policy) => tnaCookiePolicies.includes(policy))\n .map((policy) => [policy, existingPolicies[policy]]),\n );\n if (Object.keys(filteredExistingPolicies).length > 0) {\n this.log(\"Filtered existing policies:\", filteredExistingPolicies);\n }\n this.savePolicies({\n usage: false,\n settings: false,\n marketing: false,\n ...filteredExistingPolicies,\n essential: true,\n });\n }\n\n log(...args) {\n if (this.debug) {\n console.log(\"[TNA Frontend Cookies]\", ...args, this.all);\n }\n }\n\n destroyInstance() {\n this.log(\"Destroying TNAFrontendCookies instance\");\n window.TNAFrontendCookies = null;\n }\n\n /** @protected */\n get all() {\n const deserialised = {};\n document.cookie\n .split(\"; \")\n .filter((x) => x)\n .forEach((cookie) => {\n const parts = cookie.trim().split(\"=\");\n if (parts[0]) {\n deserialised[parts[0]] = parts[1];\n }\n });\n return deserialised;\n }\n\n /** @protected */\n get policies() {\n try {\n return JSON.parse(this.get(this.policiesKey) || \"{}\");\n } catch (e) {\n return {};\n }\n }\n\n /**\n * Check to see whether a cookie exists or not.\n * @param {String} key - The cookie name.\n * @returns {Boolean}\n */\n exists(key) {\n return Object.hasOwn(this.all, key);\n }\n\n /**\n * Check to see whether a cookie has a particular value.\n * @param {String} key - The cookie name.\n * @param {String|Number|Boolean} value - The value to check against.\n * @returns\n */\n hasValue(key, value) {\n return this.get(key) == value;\n }\n\n /**\n * Get a cookie.\n * @param {String} key - The cookie name.\n * @returns {String|Number|Boolean}\n */\n get(key) {\n return this.exists(key) ? decodeURIComponent(this.all[key]) : null;\n }\n\n /**\n * Set a cookie.\n * @param {String} key - The cookie name.\n * @param {String|Number|Boolean} value - The cookie value.\n * @param {Object} options\n * @param {Number} [options.maxAge=this.defaultAge] - The maximum age of the cookie in seconds.\n * @param {String} [options.path=/] - The path to register the cookie for.\n * @param {String} [options.sameSite=Lax] - The sameSite attribute.\n * @param {String} [options.domain=this.defaultDomain] - The domain to register the cookie with.\n * @param {String} [options.path=this.defaultPath] - The path to register the cookie with.\n * @param {String} [options.secure=this.secure] - Only set cookie in HTTPS environments.\n * @param {String} [options.session=false] - Set a session cookie.\n */\n set(key, value, options = {}) {\n const {\n maxAge = this.defaultAge,\n sameSite = \"Lax\",\n domain = this.defaultDomain,\n path = this.defaultPath,\n secure = this.secure,\n session = false,\n } = options;\n if (!key) {\n return;\n }\n const cookie = `${encodeURIComponent(key)}=${encodeURIComponent(value)}; domain=${domain}; samesite=${sameSite}; path=${path}${!session ? `; max-age=${maxAge}` : \"\"}${\n secure ? \"; secure\" : \"\"\n }`;\n document.cookie = cookie;\n this.log(\"Set cookie:\", {\n key,\n value,\n maxAge,\n path,\n sameSite,\n domain,\n secure,\n session,\n cookie,\n });\n this.events.trigger(\"setCookie\", {\n key,\n value,\n maxAge,\n path,\n sameSite,\n domain,\n secure,\n session,\n cookie,\n });\n }\n\n /**\n * Delete a cookie.\n * @param {String} key - The cookie name.\n * @param {String} [path=/] - The path to the cookie is registered on.\n */\n delete(key, path = \"/\", domain = this.defaultDomain) {\n const options = { maxAge: -1, path, domain: domain || undefined };\n this.set(key, \"\", options);\n this.log(\"Deleted cookie:\", { key, path, domain, ...options });\n this.events.trigger(\"deleteCookie\", { key, ...options });\n }\n\n /**\n * Delete all cookies.\n */\n deleteAll(path = \"/\", domain = this.defaultDomain) {\n Object.keys(this.all).forEach((cookie) => {\n this.delete(cookie, path, domain);\n });\n this.log(\"Deleted all cookies\", { path, domain });\n this.events.trigger(\"deleteAllCookies\", { path, domain });\n }\n\n /**\n * Accept a policy.\n * @param {String} policy - The name of the policy.\n */\n acceptPolicy(policy) {\n this.log(\"Accepting policy:\", policy);\n this.setPolicy(policy, true);\n this.events.trigger(\"acceptPolicy\", policy);\n this.events.trigger(\"changePolicy\", { [policy]: true });\n }\n\n /**\n * Reject a policy.\n * @param {String} policy - The name of the policy.\n */\n rejectPolicy(policy) {\n this.log(\"Rejecting policy:\", policy);\n this.setPolicy(policy, false);\n this.events.trigger(\"rejectPolicy\", policy);\n this.events.trigger(\"changePolicy\", { [policy]: false });\n }\n\n /**\n * Set a policy.\n * @param {String} policy - The name of the policy.\n * @param {Boolean} accepted - Whether the policy is accepted or not.\n */\n setPolicy(policy, accepted) {\n if (policy === \"essential\") {\n this.log(\"Cannot change essential policy, it is always accepted.\");\n return;\n }\n this.log(`Setting policy ${policy} to ${accepted}`);\n this.savePolicies({\n ...this.policies,\n [policy]: accepted,\n essential: true,\n });\n this.events.trigger(\"changePolicy\", { [policy]: accepted });\n }\n\n /**\n * Accept all the cookie policies.\n */\n acceptAllPolicies() {\n this.log(\"Accepting all policies\");\n const allPolicies = Object.fromEntries(\n Object.keys(this.policies).map((k) => [k.toLowerCase(), true]),\n );\n this.savePolicies(allPolicies);\n this.events.trigger(\"acceptAllPolicies\");\n this.events.trigger(\"changePolicy\", allPolicies);\n }\n\n /**\n * Reject all the cookie policies.\n */\n rejectAllPolicies() {\n this.log(\"Rejecting all policies\");\n const allPolicies = {\n ...Object.fromEntries(\n Object.keys(this.policies).map((k) => [k.toLowerCase(), false]),\n ),\n essential: true,\n };\n this.savePolicies(allPolicies);\n this.events.trigger(\"rejectAllPolicies\");\n this.events.trigger(\"changePolicy\", allPolicies);\n }\n\n /**\n * Commit policy preferences to the browser.\n * @param {object} policies - The policies to commit.\n */\n savePolicies(policies) {\n this.log(\"Saving policies:\", policies);\n this.set(this.policiesKey, JSON.stringify(policies));\n }\n\n /**\n * Get the acceptance status of a policy.\n * @param {String} policy - The name of the policy.\n * @returns {Boolean}\n */\n isPolicyAccepted(policy) {\n return Object.hasOwn(this.policies, policy)\n ? this.policies[policy] === true\n : null;\n }\n\n /**\n * Add an event listener.\n * @param {String} event - The event to add a listener for.\n * @param {Function} callback - The callback function to call when the event is triggered.\n */\n on(event, callback) {\n this.log(`Adding event listener for: ${event}`);\n this.events.on(event, callback);\n }\n\n /**\n * Add a one-time event listener.\n * @param {String} event - The event to add a listener for.\n * @param {Function} callback - The callback function to call when the event is triggered.\n */\n once(event, callback) {\n this.log(`Adding one-time event listener for: ${event}`);\n this.events.once(event, callback);\n }\n}\n","import uuidv4 from \"./uuid.mjs\";\n\nexport const iso8601ToPrettyDatetime = (dateStr) => {\n const datetime = dateStr;\n\n if (!datetime) {\n throw new Error(\"No datetime provided\");\n }\n const isDateTime =\n /^\\d{4}(-\\d{2}){2}(T| )\\d{2}(:\\d{2}){1,2}(\\.\\d+)?(Z|((\\+|-)\\d{2}:\\d{2}))?$/.test(\n datetime,\n );\n const isDate = /^\\d{4}(-\\d{2}){2}$/.test(datetime);\n if (!isDateTime && !isDate) {\n throw new Error(\"Invalid datetime provided\");\n }\n\n const date = new Date(datetime);\n if (!(date instanceof Date) || isNaN(date)) {\n throw new Error(\"Invalid datetime provided\");\n }\n\n const dayString = date.toLocaleDateString(\"en-GB\", {\n weekday: \"long\",\n });\n\n const dateString = date.toLocaleDateString(\"en-GB\", {\n day: \"numeric\",\n month: \"long\",\n year: \"numeric\",\n });\n\n if (isDateTime && (date.getHours() || date.getMinutes())) {\n let timeString = date.toLocaleTimeString(\"en-GB\", {\n hour: \"2-digit\",\n minute: \"2-digit\",\n });\n if (date.getSeconds()) {\n timeString = date.toLocaleTimeString(\"en-GB\", {\n hour: \"2-digit\",\n minute: \"2-digit\",\n second: \"2-digit\",\n });\n }\n return `${dayString} ${dateString}, ${timeString}`;\n } else {\n return `${dayString} ${dateString}`;\n }\n};\n\n/*\n * ==========================================\n * Transform any <time> element into a pretty\n * and human readable format that is based on\n * the valid ISO 8601 datetime attribute. The\n * replaced value will be localised according\n * to user's system settings, repurposing the\n * original text content as a title attribute\n * to allow users to see the value. A null or\n * invalid datetime format will result in the\n * element not being modified. If the updated\n * value is similar to the starting value for\n * the element text content, then the element\n * will not be updated to avoid redundancy.\n * ------------------------------------------\n * For example if the user's system has a UTC\n * timezone set then the element:\n *\n * <time\n * datetime=\"2026-03-05T13:48:00-05:00\"\n * >\n * 5 March 2026, 13:48 (UTC -5)\n * </time>\n *\n * would become:\n *\n * <time\n * datetime=\"2026-03-05T13:48:00-05:00\"\n * title=\"5 March 2026, 13:48 (UTC -5)\"\n * >\n * Thursday 5 March 2026, 09:48\n * </time>\n * ==========================================\n */\nexport const updateTimeElement = ($el) => {\n const datetime = $el.getAttribute(\"datetime\");\n\n try {\n const prettyDatetime = iso8601ToPrettyDatetime(datetime);\n if (!prettyDatetime.includes($el.textContent)) {\n $el.setAttribute(\"title\", $el.textContent);\n $el.textContent = prettyDatetime;\n }\n } catch (e) {\n // Do nothing if the datetime is invalid or not provided\n }\n};\n\nexport const checkTableForScroll = ($tableWrapper) => {\n const isUninitialised = !(\n $tableWrapper.dataset.tableScrollInitialised === \"true\"\n );\n const $caption = $tableWrapper.querySelector(\"caption\");\n if (isUninitialised) {\n if (!$caption) {\n console.warn(\"Missing <caption> element on table\", $tableWrapper);\n } else if (!$caption.id) {\n $caption.id = `table-caption-${uuidv4()}`;\n }\n $tableWrapper.dataset.tableScrollInitialised = \"true\";\n }\n if ($tableWrapper.scrollWidth > $tableWrapper.clientWidth) {\n $tableWrapper.setAttribute(\"tabindex\", \"0\");\n $tableWrapper.setAttribute(\"role\", \"region\");\n $tableWrapper.setAttribute(\"aria-labelledby\", $caption?.id || \"\");\n $tableWrapper.classList.add(\"tna-table-wrapper--scroll\");\n } else {\n $tableWrapper.removeAttribute(\"tabindex\");\n $tableWrapper.removeAttribute(\"role\");\n $tableWrapper.removeAttribute(\"aria-labelledby\");\n $tableWrapper.classList.remove(\"tna-table-wrapper--scroll\");\n }\n};\n\nexport const initCodeBlock = ($codeBlock) => {\n if (\n navigator.clipboard &&\n $codeBlock.classList.contains(\"tna-code-block--copy\")\n ) {\n const copyButton = document.createElement(\"button\");\n copyButton.innerText = \"Copy code\";\n copyButton.classList.add(\n \"tna-code-block__copy\",\n \"tna-button\",\n \"tna-button--plain\",\n \"tna-button--small\",\n );\n copyButton.setAttribute(\"aria-live\", \"assertive\");\n $codeBlock.prepend(copyButton);\n copyButton.addEventListener(\"click\", async () => {\n try {\n await navigator.clipboard.writeText(\n $codeBlock.querySelector(\"pre code\").innerText,\n );\n } catch (err) {\n console.error(\"Failed to copy: \", err);\n }\n copyButton.innerText = \"Code copied\";\n });\n copyButton.addEventListener(\"blur\", () => {\n copyButton.innerText = \"Copy code\";\n });\n }\n};\n","const uuidv4 = () =>\n ([1e7] + -1e3 + -4e3 + -8e3 + -1e11).replace(/[018]/g, (c) =>\n (\n c ^\n (crypto.getRandomValues(new Uint8Array(1))[0] & (15 >> (c / 4)))\n ).toString(16),\n );\n\nexport default uuidv4;\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","import { Accordion } from \"./components/accordion/accordion.mjs\";\nimport { Breadcrumbs } from \"./components/breadcrumbs/breadcrumbs.mjs\";\nimport { CookieBanner } from \"./components/cookie-banner/cookie-banner.mjs\";\nimport { DateInputProgressive } from \"./components/date-input/date-input.mjs\";\nimport { ErrorSummary } from \"./components/error-summary/error-summary.mjs\";\nimport { FileInputDroppable } from \"./components/file-input/file-input.mjs\";\nimport { Footer } from \"./components/footer/footer.mjs\";\nimport { Gallery } from \"./components/gallery/gallery.mjs\";\nimport { GlobalHeader } from \"./components/global-header/global-header.mjs\";\nimport { Header } from \"./components/header/header.mjs\";\nimport { Picture } from \"./components/picture/picture.mjs\";\nimport { SkipLink } from \"./components/skip-link/skip-link.mjs\";\nimport { Tabs } from \"./components/tabs/tabs.mjs\";\nimport { TextInputPassword } from \"./components/text-input/text-input.mjs\";\nimport { TextAreaItemisedRows } from \"./components/textarea/textarea.mjs\";\nimport Cookies from \"./lib/cookies.mjs\";\nimport {\n updateTimeElement,\n initCodeBlock,\n checkTableForScroll,\n} from \"./lib/helpers.mjs\";\n\nconst initAll = (options) => {\n options = typeof options !== \"undefined\" ? options : {};\n const $scope =\n options.scope instanceof HTMLElement ? options.scope : document;\n\n const $html = document.documentElement;\n $html.classList.add(\"tna-template--js-enabled\");\n\n const onFirstTouch = () => {\n window.removeEventListener(\"touchstart\", onFirstTouch);\n $html.classList.add(\"tna-template--touched\");\n };\n window.addEventListener(\"touchstart\", onFirstTouch);\n\n const onKeyDown = (e) => {\n if (e.key === \"Tab\") {\n $html.classList.add(\"tna-template--tabbed\");\n $html.classList.remove(\"tna-template--clicked\");\n }\n };\n window.addEventListener(\"keydown\", onKeyDown);\n\n const onMouseDown = () => {\n $html.classList.add(\"tna-template--clicked\");\n $html.classList.remove(\"tna-template--tabbed\");\n };\n window.addEventListener(\"mousedown\", onMouseDown);\n\n /*\n * ==========================================\n * Checks if widths of all tables on the page\n * are wider than their parent container, and\n * allowing horizontal scrolling if they are.\n * This is done both on load and on resize.\n * ==========================================\n */\n const $tableWrappers = $scope.querySelectorAll(\".tna-table-wrapper\");\n $tableWrappers.forEach(($tableWrapper) => checkTableForScroll($tableWrapper));\n window.addEventListener(\"resize\", () => {\n $tableWrappers.forEach(($tableWrapper) =>\n checkTableForScroll($tableWrapper),\n );\n });\n\n /*\n * ==========================================\n * Add \"Copy code\" buttons to all code blocks\n * and enable copying the code to clipboard\n * ==========================================\n */\n document\n .querySelectorAll(\".tna-code-block:has(pre > code)\")\n .forEach(($codeBlock) => {\n initCodeBlock($codeBlock);\n });\n\n // TODO: Remove this opt-in class in a later release\n if ($html.classList.contains(\"tna-template--enhance-time-elements\")) {\n document.querySelectorAll(\"time[datetime]\").forEach(updateTimeElement);\n }\n\n const $accordions = $scope.querySelectorAll('[data-module=\"tna-accordion\"]');\n $accordions.forEach(($accordion) => {\n new Accordion($accordion);\n });\n\n const $breadcrumbs = $scope.querySelector('[data-module=\"tna-breadcrumbs\"]');\n if ($breadcrumbs) {\n new Breadcrumbs($breadcrumbs);\n }\n\n const $cookieBanner = $scope.querySelector(\n '[data-module=\"tna-cookie-banner\"]',\n );\n if ($cookieBanner) {\n new CookieBanner($cookieBanner);\n }\n\n const $progressiveDateInputs = $scope.querySelectorAll(\n '[data-module=\"tna-date-input-progressive\"]',\n );\n $progressiveDateInputs.forEach(($dateInput) => {\n new DateInputProgressive($dateInput);\n });\n\n const $errorSummary = $scope.querySelector(\n '[data-module=\"tna-error-summary\"]',\n );\n if ($errorSummary) {\n new ErrorSummary($errorSummary).init();\n }\n\n const $fileInputs = $scope.querySelectorAll('[data-module=\"tna-file-input\"]');\n $fileInputs.forEach(($fileInput) => {\n new FileInputDroppable($fileInput);\n });\n\n const $footer = $scope.querySelector('[data-module=\"tna-footer\"]');\n if ($footer) {\n new Footer($footer);\n }\n\n const $galleries = $scope.querySelectorAll('[data-module=\"tna-gallery\"]');\n $galleries.forEach(($gallery) => {\n new Gallery($gallery);\n });\n\n const $globalHeader = $scope.querySelector(\n '[data-module=\"tna-global-header\"]',\n );\n if ($globalHeader) {\n new GlobalHeader($globalHeader);\n }\n\n const $header = $scope.querySelector('[data-module=\"tna-header\"]');\n if ($header) {\n new Header($header);\n }\n\n const $pictures = $scope.querySelectorAll('[data-module=\"tna-picture\"]');\n $pictures.forEach(($picture) => {\n new Picture($picture);\n });\n\n const $skipLinks = $scope.querySelectorAll('[data-module=\"tna-skip-link\"]');\n $skipLinks.forEach(($skipLink) => {\n new SkipLink($skipLink);\n });\n\n const $tabs = $scope.querySelectorAll('[data-module=\"tna-tabs\"]');\n $tabs.forEach(($tabModule) => {\n new Tabs($tabModule);\n });\n\n const $textInputPasswords = $scope.querySelectorAll(\n '[data-module=\"tna-text-input-password\"]',\n );\n $textInputPasswords.forEach(($textInputPassword) => {\n new TextInputPassword($textInputPassword);\n });\n\n const $textAreaItemisedRows = $scope.querySelectorAll(\n '[data-module=\"tna-textarea-itemised-rows\"]',\n );\n $textAreaItemisedRows.forEach(($textAreaItemisedRows) => {\n const enhancedHint = $textAreaItemisedRows.dataset.enhancedHint;\n new TextAreaItemisedRows($textAreaItemisedRows, { enhancedHint });\n });\n\n window.matchMedia(\"print\").addEventListener(\"change\", (evt) => {\n if (evt.matches) {\n $scope\n .querySelectorAll(\".tna-details__details:not([open])\")\n .forEach((e) => {\n e.setAttribute(\"open\", \"\");\n e.dataset.wasClosed = \"\";\n });\n $scope\n .querySelectorAll(\n \".tna-accordion__content[hidden], .tna-picture__transcript[hidden]\",\n )\n .forEach((e) => {\n e.removeAttribute(\"hidden\");\n e.dataset.wasClosed = \"\";\n });\n } else {\n $scope\n .querySelectorAll(\".tna-details__details[data-was-closed]\")\n .forEach((e) => {\n e.removeAttribute(\"open\");\n delete e.dataset.wasClosed;\n });\n $scope\n .querySelectorAll(\n \".tna-accordion__content[data-was-closed], .tna-picture__transcript[data-was-closed]\",\n )\n .forEach((e) => {\n e.setAttribute(\"hidden\", \"\");\n e.dataset.wasClosed = \"\";\n });\n }\n });\n};\n\nexport {\n initAll,\n Cookies,\n Accordion,\n Breadcrumbs,\n CookieBanner,\n DateInputProgressive,\n ErrorSummary,\n FileInputDroppable,\n Footer,\n Gallery,\n GlobalHeader,\n Header,\n Picture,\n SkipLink,\n Tabs,\n TextInputPassword,\n TextAreaItemisedRows,\n checkTableForScroll,\n updateTimeElement,\n};\n"],"names":["root","factory","exports","module","define","amd","self","Accordion","$module","_this","_classCallCheck","this","$items","querySelectorAll","allowMultipleItemsOpen","dataset","singleOpenItem","forEach","$item","initItem","initState","$toggleAllButton","querySelector","syncToggleAllButton","removeAttribute","addEventListener","isAllOpen","closeItem","openItem","key","value","_this2","$heading","$content","classList","add","remove","setAttribute","$headingButton","document","createElement","id","innerText","appendChild","getAttribute","_this3","closeAllItemsExcept","concat","trim","$tableWrapper","$wrapper","checkTableForScroll","$excludeItem","_this4","Array","from","filter","every","closeAllLabel","openAllLabel","Breadcrumbs","_createClass","$breadcrumbsList","$breadcrumbs","length","contains","uniqueId","uuidv4","$expandable","style","display","$expandButton","innerHTML","focus","once","insertBefore","nextSibling","CookieBanner","$acceptButton","$rejectButton","$prompt","$acceptedMessage","$rejectedMessage","$closeButtons","cookies","Cookies","newInstance","cookiePreferencesSetKey","preferencesKey","policiesCorrectOnInit","exists","hasValue","accept","reject","complete","acceptAllPolicies","rejectAllPolicies","set","$closeButton","close","DateInputProgressive","$yearWrapper","$yearInput","$monthWrapper","$monthInput","$dayWrapper","$dayInput","update","window","isValidYear","showMonth","isValidMonth","showDay","hideDay","hideMonth","yearValue","parseInt","isNaN","monthRawValue","monthIntValue","includes","toLowerCase","ErrorSummary","disableAutofocus","setFocus","event","handleClick","$element","_options$onBeforeFocu","options","arguments","undefined","isFocusable","onBlur","_options$onBlur","call","onBeforeFocus","$target","target","focusTarget","preventDefault","url","split","pop","HTMLAnchorElement","inputId","getFragmentFromUrl","href","$input","getElementById","$legendOrLabel","getAssociatedLegendOrLabel","scrollIntoView","preventScroll","_document$querySelect","$fieldset","closest","$legends","getElementsByTagName","$candidateLegend","HTMLInputElement","type","legendTop","getBoundingClientRect","top","inputRect","height","innerHeight","FileInputDroppable","$body","acceptMutltipleFiles","hasAttribute","$droppableArea","$pseudoSelectFileText","textContent","$droppableButtons","$pseudoSelectFileButton","$pseudoDropFileButton","$droppableAreaAriaLabel","e","showDropTarget","hideDropTarget","onChange","dataTransfer","hasNoTypesInfo","types","isDraggingFiles","some","updateAriaLabel","isContainingFiles","items","_files$","files","name","Footer","themeCookieName","$themeSelector","$themeSelectorNotice","$themeSelectorEnableSettingsCookiesButton","$tnaTemplate","currentTheme","themeOnLoad","$themeSelectorButtons","$themeSelectorButton","$button","setTheme","selectThemeSelectorButton","acceptPolicy","showThemeSelector","on","data","Object","hasOwn","settings","$currentThemeButton","find","get","isPolicyAccepted","theme","$selectedButton","Gallery","$itemsContainer","$navigation","$navigationItems","$navigationButtons","$navigationButtonPrev","$navigationButtonNext","setup","currentId","showItem","_this$$navigationButt","_this$$navigationButt2","_this$$navigationButt3","_$item$querySelector","preventDefaultKeyAction","showPreviousItem","showNextItem","showFirstItem","showLastItem","stopPropagation","$liveRegion","prepend","getCurrentItemIndex","findIndex","nextIndexToShow","GlobalHeader","$toggleButton","$topNavigation","$links","menuOpened","mql","matchMedia","syncState","handleToggleNavigation","addListener","code","matches","show","hide","hidden","i","Header","Picture","$imageWrapper","$transcriptToggle","$transcript","transcriptOpened","openLabel","informationLabelOpen","closeLabel","informationLabelClose","init","toggleTranscript","SkipLink","_$module$getAttribute","linkedElementId","$linkedElement","focusLinkedElement","linkedElementListener","removeFocusProperties","Tabs","$tabList","$tabListItemLinks","$tabItems","currentTabIndex","$tabListItemLink","tabPanelID","$tabPanel","handleItemLinkClick","switchTabByIndex","handleItemLinkKeyDown","itemLinkClickEvent","targetItem","currentTarget","switchTabByID","itemLinkKeyDownEvent","previousTab","nextTab","newIndex","switchFocus","index","$tabItem","targetId","TextInputPassword","$textInputWrapper","$textInputPasswordToggle","updateTogglePasswordButtonText","togglePasswordType","TextAreaItemisedRows","$formFieldInput","$formFieldInputHint","$formFieldBody","enhancedHint","values","map","$formFieldNewInput","attribute","updateList","appendValue","$formFieldNewInputAddButton","$formFieldNewInputAddButtonInner","$formFieldNewInputAddButtonInnerExtra","$formFieldLiveAria","$formFieldCounter","$valuesList","updateAriaText","parentNode","content","replace","normaliseValue","indexOf","newValue","isValueInList","push","join","removeValue","existingValue","$itemLabel","$removeItemButton","TNAFrontendCookies","TNAFrontendCookieEvents","CookieEventHandler","debug","_defineProperty","log","_console","_len","args","_key","console","apply","callback","events","_toConsumableArray","oneTimeEvents","eventToTrigger","splice","tnaCookiePolicies","documentElement","tnaFrontendDebug","defaultDomain","defaultPath","secure","policiesKey","defaultAge","_options$newInstance","_options$noInit","noInit","tnaCookiesDomain","location","hostname","tnaCookiesPath","tnaCookiesInsecure","tnaCookiesPoliciesKey","tnaCookiesDefaultAge","keys","policies","policy","existingPolicies","filteredExistingPolicies","fromEntries","savePolicies","_objectSpread","usage","marketing","essential","_console2","_len2","_key2","all","deserialised","cookie","x","parts","JSON","parse","decodeURIComponent","_options$maxAge","maxAge","_options$sameSite","sameSite","_options$domain","domain","_options$path","path","_options$secure","_options$session","session","encodeURIComponent","trigger","setPolicy","accepted","allPolicies","k","stringify","t","r","Symbol","n","iterator","o","toStringTag","c","prototype","Generator","u","create","_regeneratorDefine2","f","p","y","G","v","a","d","bind","l","TypeError","done","GeneratorFunction","GeneratorFunctionPrototype","getPrototypeOf","setPrototypeOf","__proto__","displayName","_regenerator","w","m","defineProperty","_invoke","enumerable","configurable","writable","asyncGeneratorStep","Promise","resolve","then","_asyncToGenerator","_next","_throw","updateTimeElement","$el","datetime","prettyDatetime","dateStr","Error","isDateTime","test","isDate","date","Date","dayString","toLocaleDateString","weekday","dateString","day","month","year","getHours","getMinutes","timeString","toLocaleTimeString","hour","minute","getSeconds","second","iso8601ToPrettyDatetime","isUninitialised","tableScrollInitialised","$caption","warn","scrollWidth","clientWidth","initCodeBlock","$codeBlock","navigator","clipboard","copyButton","_callee","_t","_context","writeText","error","crypto","getRandomValues","Uint8Array","toString","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","definition","obj","prop","hasOwnProperty","initAll","$scope","scope","HTMLElement","$html","onFirstTouch","removeEventListener","$tableWrappers","$accordion","$cookieBanner","$dateInput","$errorSummary","$fileInput","$footer","$gallery","$globalHeader","$header","$picture","$skipLink","$tabModule","$textInputPassword","$textAreaItemisedRows","evt","wasClosed"],"sourceRoot":""}