@nationalarchives/frontend 1.3.1 → 1.4.1

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 (62) hide show
  1. package/nationalarchives/all+analytics.js +1 -1
  2. package/nationalarchives/all+analytics.js.map +1 -1
  3. package/nationalarchives/all.css +1 -1
  4. package/nationalarchives/all.css.map +1 -1
  5. package/nationalarchives/all.js +1 -1
  6. package/nationalarchives/all.js.map +1 -1
  7. package/nationalarchives/analytics.js +1 -1
  8. package/nationalarchives/analytics.js.map +1 -1
  9. package/nationalarchives/analytics.mjs +1 -1
  10. package/nationalarchives/components/accordion/accordion.js.map +1 -1
  11. package/nationalarchives/components/breadcrumbs/breadcrumbs.css.map +1 -1
  12. package/nationalarchives/components/breadcrumbs/breadcrumbs.js.map +1 -1
  13. package/nationalarchives/components/button/button.css +1 -1
  14. package/nationalarchives/components/button/button.css.map +1 -1
  15. package/nationalarchives/components/button/button.scss +10 -1
  16. package/nationalarchives/components/card/card.css +1 -1
  17. package/nationalarchives/components/card/card.css.map +1 -1
  18. package/nationalarchives/components/checkboxes/checkboxes.css.map +1 -1
  19. package/nationalarchives/components/code-block/code-block.css.map +1 -1
  20. package/nationalarchives/components/code-block/code-block.js.map +1 -1
  21. package/nationalarchives/components/code-block/fixtures.json +1 -1
  22. package/nationalarchives/components/code-block/template.njk +1 -0
  23. package/nationalarchives/components/compound-filters/compound-filters.css.map +1 -1
  24. package/nationalarchives/components/cookie-banner/cookie-banner.js +1 -1
  25. package/nationalarchives/components/cookie-banner/cookie-banner.js.map +1 -1
  26. package/nationalarchives/components/date-input/date-input.js.map +1 -1
  27. package/nationalarchives/components/error-summary/error-summary.css.map +1 -1
  28. package/nationalarchives/components/error-summary/error-summary.js.map +1 -1
  29. package/nationalarchives/components/file-input/file-input.css.map +1 -1
  30. package/nationalarchives/components/file-input/file-input.js.map +1 -1
  31. package/nationalarchives/components/files-list/files-list.css +1 -1
  32. package/nationalarchives/components/files-list/files-list.css.map +1 -1
  33. package/nationalarchives/components/footer/footer.js +1 -1
  34. package/nationalarchives/components/footer/footer.js.map +1 -1
  35. package/nationalarchives/components/gallery/gallery.css.map +1 -1
  36. package/nationalarchives/components/gallery/gallery.js.map +1 -1
  37. package/nationalarchives/components/global-header/global-header.js.map +1 -1
  38. package/nationalarchives/components/header/header.js.map +1 -1
  39. package/nationalarchives/components/picture/picture.js.map +1 -1
  40. package/nationalarchives/components/radios/radios.css.map +1 -1
  41. package/nationalarchives/components/sidebar/sidebar.js.map +1 -1
  42. package/nationalarchives/components/skip-link/skip-link.css +1 -1
  43. package/nationalarchives/components/skip-link/skip-link.css.map +1 -1
  44. package/nationalarchives/components/skip-link/skip-link.js.map +1 -1
  45. package/nationalarchives/components/tabs/fixtures.json +149 -0
  46. package/nationalarchives/components/tabs/macro-options.json +18 -0
  47. package/nationalarchives/components/tabs/tabs.css +1 -1
  48. package/nationalarchives/components/tabs/tabs.css.map +1 -1
  49. package/nationalarchives/components/tabs/tabs.js +1 -1
  50. package/nationalarchives/components/tabs/tabs.js.map +1 -1
  51. package/nationalarchives/components/tabs/tabs.mjs +6 -4
  52. package/nationalarchives/components/tabs/tabs.scss +3 -1
  53. package/nationalarchives/components/tabs/template.njk +1 -1
  54. package/nationalarchives/components/text-input/text-input.js.map +1 -1
  55. package/nationalarchives/components/textarea/textarea.js.map +1 -1
  56. package/nationalarchives/error-page.css +1 -1
  57. package/nationalarchives/error-page.css.map +1 -1
  58. package/nationalarchives/ie.css.map +1 -1
  59. package/nationalarchives/prototype-kit.css +1 -1
  60. package/nationalarchives/prototype-kit.css.map +1 -1
  61. package/nationalarchives/tools/_a11y.scss +2 -0
  62. package/package.json +3 -2
@@ -1 +1 @@
1
- {"version":3,"file":"all.js","mappings":"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","sources":["webpack://TNAFrontend/webpack/universalModuleDefinition","webpack://TNAFrontend/./node_modules/@nationalarchives/cookies/src/events.js","webpack://TNAFrontend/./node_modules/@nationalarchives/cookies/src/index.js","webpack://TNAFrontend/./src/nationalarchives/components/accordion/accordion.mjs","webpack://TNAFrontend/./src/nationalarchives/components/breadcrumbs/breadcrumbs.mjs","webpack://TNAFrontend/./src/nationalarchives/components/code-block/code-block.mjs","webpack://TNAFrontend/./src/nationalarchives/components/cookie-banner/cookie-banner.mjs","webpack://TNAFrontend/./src/nationalarchives/components/date-input/date-input.mjs","webpack://TNAFrontend/./src/nationalarchives/components/error-summary/error-summary.mjs","webpack://TNAFrontend/./src/nationalarchives/components/file-input/file-input.mjs","webpack://TNAFrontend/./src/nationalarchives/components/footer/footer.mjs","webpack://TNAFrontend/./src/nationalarchives/components/gallery/gallery.mjs","webpack://TNAFrontend/./src/nationalarchives/components/global-header/global-header.mjs","webpack://TNAFrontend/./src/nationalarchives/components/header/header.mjs","webpack://TNAFrontend/./src/nationalarchives/components/picture/picture.mjs","webpack://TNAFrontend/./src/nationalarchives/components/sidebar/sidebar.mjs","webpack://TNAFrontend/./src/nationalarchives/components/skip-link/skip-link.mjs","webpack://TNAFrontend/./src/nationalarchives/components/tabs/tabs.mjs","webpack://TNAFrontend/./src/nationalarchives/components/text-input/text-input.mjs","webpack://TNAFrontend/./src/nationalarchives/components/textarea/textarea.mjs","webpack://TNAFrontend/./src/nationalarchives/lib/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 ","/**\n * Class to handle cookie events.\n * @class CookieEventHandler\n * @constructor\n * @public\n */\nexport default class CookieEventHandler {\n /** @protected */\n events = {};\n /** @protected */\n oneTimeEvents = {};\n\n constructor() {\n if (\n window.TNAFrontendCookieEvents &&\n window.TNAFrontendCookieEvents instanceof CookieEventHandler\n ) {\n /* eslint-disable-next-line no-constructor-return */\n return window.TNAFrontendCookieEvents;\n }\n window.TNAFrontendCookieEvents = this;\n }\n\n /**\n * Clear all event listeners.\n */\n clearAll() {\n this.events = {};\n this.oneTimeEvents = {};\n }\n\n /**\n * Add an event listener.\n * @param {String} event - The event to add a listener for.\n * @param {Function} callback - The callback function to call when the event is triggered.\n */\n on(event, callback) {\n this.events[event] = [...(this.events[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.oneTimeEvents[event] = [\n ...(this.oneTimeEvents[event] || []),\n callback,\n ];\n }\n\n /** @protected */\n trigger(event, data = {}) {\n if (Object.hasOwn(this.events, event)) {\n this.events[event].forEach((eventToTrigger) =>\n eventToTrigger.call(this, data),\n );\n }\n if (Object.hasOwn(this.oneTimeEvents, event)) {\n this.oneTimeEvents[event].forEach((eachEvent) =>\n eachEvent.call(this, data),\n );\n this.oneTimeEvents[event] = [];\n }\n }\n}\n","/* eslint-disable max-lines, no-ternary */\n\nimport CookieEventHandler from \"./events\";\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 preferencesKey = \"\";\n /** @protected */\n events = null;\n /** @protected */\n defaultAge = null;\n /** @protected */\n preferencesCorrectOnInit = false;\n\n /** @protected */\n tnaCookiePreferences = [\"usage\", \"settings\", \"marketing\", \"essential\"];\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.preferencesKey] - The name of the cookie that stores the user's preferences.\n * @param {String} [options.preferencesSetKey] - The name of the cookie that dictates whether the user's preferences have been set.\n * @param {Number} [options.defaultAge] - The default age of non-session cookies.\n * @param {Boolean} [options.noInit=false] - Don't initialise a blank cookie preference.\n */\n /* eslint-disable-next-line max-statements, */\n constructor(options = {}) {\n const {\n defaultDomain,\n defaultPath,\n secure,\n preferencesKey,\n preferencesSetKey,\n defaultAge,\n noInit = false,\n } = options;\n const docDataset = document.documentElement.dataset;\n this.defaultDomain = defaultDomain\n ? defaultDomain\n : docDataset.tnaCookiesDomain || window.location.hostname;\n this.defaultPath = defaultPath\n ? defaultPath\n : docDataset.tnaCookiesPath || \"/\";\n this.secure = secure ? secure : docDataset.tnaCookiesInsecure !== \"true\";\n this.preferencesKey = preferencesKey\n ? preferencesKey\n : docDataset.tnaCookiesPreferencesKey || \"cookie_preferences\";\n this.preferencesSetKey = preferencesSetKey\n ? preferencesSetKey\n : docDataset.tnaCookiesPreferencesSetKey || \"cookie_preferences_set\";\n this.defaultAge = defaultAge\n ? defaultAge\n : parseInt(docDataset.tnaCookiesDefaultAge, 10) ||\n /* eslint-disable-next-line no-magic-numbers */\n 365 * 24 * 60 * 60;\n this.events = new CookieEventHandler();\n this.preferencesCorrectOnInit = this.validatePreferences(this.preferences);\n if (!this.preferencesCorrectOnInit) {\n this.preferencesSet = false;\n if (!noInit) {\n this.init();\n }\n }\n }\n\n /** @protected */\n init() {\n const existingPreferences = this.preferences;\n const filteredExistingPreferences = Object.fromEntries(\n Object.keys(existingPreferences)\n .filter((preference) => this.tnaCookiePreferences.includes(preference))\n .map((preference) => [preference, existingPreferences[preference]]),\n );\n this.savePreferences({\n usage: false,\n settings: false,\n marketing: false,\n ...filteredExistingPreferences,\n essential: true,\n });\n }\n\n validatePreferences(preferences) {\n return (\n Object.keys(preferences).length === this.tnaCookiePreferences.length &&\n this.tnaCookiePreferences.every(\n (preference) =>\n Object.keys(preferences).includes(preference) &&\n typeof preferences[preference] === \"boolean\",\n )\n );\n }\n\n /** @protected */\n /* eslint-disable-next-line class-methods-use-this */\n get all() {\n const deserialised = {};\n document.cookie\n .split(\"; \")\n .filter((cookie) => cookie.trim() !== \"\")\n .filter((cookie) => cookie.includes(\"=\"))\n .forEach((cookie) => {\n const parts = cookie.trim().split(\"=\");\n const [key, value = \"\"] = parts;\n deserialised[key] = decodeURIComponent(value);\n });\n return deserialised;\n }\n\n /** @protected */\n get preferences() {\n try {\n return JSON.parse(this.get(this.preferencesKey) || \"{}\");\n // eslint-disable-next-line no-unused-vars\n } catch (error) {\n return {};\n }\n }\n\n /**\n * Check to see whether a cookie exists or not.\n * @param {String} key - The cookie name.\n * @returns {Boolean}\n */\n exists(key) {\n return Object.hasOwn(this.all, key);\n }\n\n /**\n * Check to see whether a cookie has a particular value.\n * @param {String} key - The cookie name.\n * @param {String|Number|Boolean} value - The value to check against.\n * @returns\n */\n hasValue(key, value) {\n return this.get(key) === value;\n }\n\n /**\n * Get a cookie.\n * @param {String} key - The cookie name.\n * @returns {String|Number|Boolean|null}\n */\n get(key) {\n if (this.exists(key)) {\n return decodeURIComponent(this.all[key]);\n }\n /* eslint-disable-next-line no-undefined */\n return undefined;\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 secureString = secure ? \"; secure\" : \"\";\n const sessionString = session ? \"\" : `; max-age=${maxAge}`;\n const cookie = `${encodeURIComponent(key)}=${encodeURIComponent(value)}; domain=${domain}; samesite=${sameSite}; path=${path}${sessionString}${secureString}`;\n document.cookie = cookie;\n const cookieDetails = {\n key,\n value,\n maxAge,\n path,\n sameSite,\n domain,\n secure,\n session,\n cookie,\n };\n this.events.trigger(\"setCookie\", cookieDetails);\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 };\n this.set(key, \"\", 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 const details = { path, domain };\n this.events.trigger(\"deleteAllCookies\", details);\n }\n\n /**\n * Accept a preference.\n * @param {String} preference - The name of the preference.\n */\n enablePreference(preference) {\n if (!Object.hasOwn(this.preferences, preference)) {\n throw new Error(`Preference '${preference}' does not exist`);\n }\n this.setPreference(preference, true);\n this.events.trigger(\"enablePreference\", preference);\n this.events.trigger(\"changePreference\", { [preference]: true });\n }\n\n /**\n * Reject a preference.\n * @param {String} preference - The name of the preference.\n */\n disablePreference(preference) {\n if (!Object.hasOwn(this.preferences, preference)) {\n throw new Error(`Preference '${preference}' does not exist`);\n }\n this.setPreference(preference, false);\n this.events.trigger(\"disablePreference\", preference);\n this.events.trigger(\"changePreference\", { [preference]: false });\n }\n\n /**\n * Set a preference.\n * @param {String} preference - The name of the preference.\n * @param {Boolean} accepted - Whether the preference is accepted or not.\n */\n setPreference(preference, accepted) {\n if (!Object.hasOwn(this.preferences, preference)) {\n throw new Error(`Preference '${preference}' does not exist`);\n }\n if (preference === \"essential\") {\n return;\n }\n this.savePreferences({\n ...this.preferences,\n [preference]: accepted,\n essential: true,\n });\n this.events.trigger(\"changePreference\", { [preference]: accepted });\n }\n\n /**\n * Accept all the cookie preferences.\n */\n enableAllPreferences() {\n const allPreferences = Object.fromEntries(\n Object.keys(this.preferences).map((key) => [key.toLowerCase(), true]),\n );\n this.savePreferences(allPreferences);\n this.preferencesSet = true;\n this.events.trigger(\"enableAllPreferences\");\n this.events.trigger(\"changePreference\", allPreferences);\n }\n\n /**\n * Reject all the cookie preferences.\n */\n disableAllPreferences() {\n const allPreferences = {\n ...Object.fromEntries(\n Object.keys(this.preferences).map((key) => [key.toLowerCase(), false]),\n ),\n essential: true,\n };\n this.savePreferences(allPreferences);\n this.preferencesSet = true;\n this.events.trigger(\"disableAllPreferences\");\n this.events.trigger(\"changePreference\", allPreferences);\n }\n\n /** @protected */\n savePreferences(preferences) {\n this.set(this.preferencesKey, JSON.stringify(preferences));\n }\n\n /**\n * Get the status of whether the preferences have been set.\n * @returns {Boolean}\n */\n get preferencesSet() {\n return this.hasValue(this.preferencesSetKey, \"true\");\n }\n\n /**\n * Set the status of whether the preferences have been set.\n * @param {Boolean} value\n */\n set preferencesSet(value) {\n if (\n value === true &&\n this.validatePreferences(JSON.parse(this.get(this.preferencesKey)))\n ) {\n this.set(this.preferencesSetKey, \"true\");\n } else {\n this.delete(this.preferencesSetKey);\n }\n this.events.trigger(\"preferencesSet\");\n }\n\n /**\n * Get the acceptance status of a preference.\n * @param {String} preference - The name of the preference.\n * @returns {Boolean}\n */\n preference(preference) {\n if (Object.hasOwn(this.preferences, preference)) {\n return this.preferences[preference] === true;\n }\n throw new Error(`Preference '${preference}' does not exist`);\n }\n\n /**\n * Add an event listener.\n * @param {String} event - The event to add a listener for.\n * @param {Function} callback - The callback function to call when the event is triggered.\n */\n on(event, callback) {\n this.events.on(event, callback);\n }\n\n /**\n * Add a one-time event listener.\n * @param {String} event - The event to add a listener for.\n * @param {Function} callback - The callback function to call when the event is triggered.\n */\n once(event, callback) {\n this.events.once(event, callback);\n }\n}\n","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 return;\n }\n\n if (\n /* eslint-disable-next-line no-magic-numbers */\n this.$breadcrumbs.length > 2 &&\n !this.$module.classList.contains(\"tna-breadcrumbs--no-collapse\")\n ) {\n this.init();\n }\n }\n\n init() {\n const uniqueId = `tna-breadcrumbs-${uuidv4()}`;\n const $expandable = document.createElement(\"li\");\n $expandable.classList.add(\n \"tna-breadcrumbs__item\",\n \"tna-breadcrumbs__item--expandable\",\n );\n $expandable.style.display = \"none\";\n\n const $expandButton = document.createElement(\"button\");\n $expandButton.classList.add(\"tna-breadcrumbs__link\");\n $expandButton.innerHTML =\n \"<span class='tna-!--visually-hidden'>Expand breadcrumbs</span>&hellip;\";\n $expandButton.setAttribute(\"type\", \"button\");\n $expandButton.setAttribute(\"aria-expanded\", \"false\");\n $expandButton.setAttribute(\"aria-controls\", uniqueId);\n $expandButton.addEventListener(\"click\", () => {\n this.$module.classList.remove(\"tna-breadcrumbs--collapsed\");\n $expandable.remove();\n this.$module.setAttribute(\"tabindex\", \"0\");\n this.$module.focus();\n this.$module.addEventListener(\n \"blur\",\n () => {\n this.$module.removeAttribute(\"tabindex\");\n },\n { once: true },\n );\n });\n $expandable.appendChild($expandButton);\n\n this.$breadcrumbsList.setAttribute(\"id\", uniqueId);\n this.$breadcrumbsList.insertBefore(\n $expandable,\n /* eslint-disable-next-line no-magic-numbers */\n this.$breadcrumbs[this.$breadcrumbs.length - 2].nextSibling,\n );\n\n this.$module.classList.add(\"tna-breadcrumbs--collapsed\");\n }\n}\n","export class CodeBlock {\n constructor($module) {\n this.$module = $module;\n this.$code = this.$module.querySelector(\"pre code\");\n this.$copyButton = this.$module.querySelector(\".tna-code-block__copy\");\n\n if (\n !this.$module ||\n !this.$code ||\n !this.$copyButton ||\n !navigator.clipboard\n ) {\n return;\n }\n\n this.$copyButton.removeAttribute(\"hidden\");\n this.$module.classList.add(\"tna-code-block__copyable\");\n\n this.$copyButton.addEventListener(\"click\", async () => {\n try {\n await navigator.clipboard.writeText(this.$code.innerText);\n this.$copyButton.innerText = \"Code copied\";\n } catch {\n // Continue regardless of error\n }\n });\n\n this.$copyButton.addEventListener(\"blur\", () => {\n this.$copyButton.innerText = \"Copy code\";\n });\n }\n}\n","import Cookies from \"@nationalarchives/cookies/src/index.js\";\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();\n\n if (!this.cookies.preferencesSet) {\n this.$module.removeAttribute(\"hidden\");\n\n this.$acceptButton.addEventListener(\"click\", () => this.accept());\n this.$rejectButton.addEventListener(\"click\", () => this.reject());\n\n this.$closeButtons.forEach(($closeButton) => {\n $closeButton.addEventListener(\"click\", () => this.close());\n });\n }\n }\n\n accept() {\n this.cookies.enableAllPreferences();\n this.showPanel(this.$acceptedMessage);\n }\n\n reject() {\n this.cookies.disableAllPreferences();\n this.showPanel(this.$rejectedMessage);\n }\n\n showPanel($panel) {\n this.$prompt.setAttribute(\"hidden\", \"\");\n $panel.removeAttribute(\"hidden\");\n $panel.setAttribute(\"tabindex\", \"0\");\n $panel.focus();\n $panel.addEventListener(\"blur\", () => {\n $panel.removeAttribute(\"tabindex\");\n });\n }\n\n close() {\n this.$module.setAttribute(\"hidden\", \"\");\n }\n}\n","export class DateInputProgressive {\n constructor($module) {\n this.$module = $module;\n this.$yearWrapper =\n $module && $module.querySelector(\".tna-date-input__item--year\");\n this.$yearInput =\n this.$yearWrapper && this.$yearWrapper.querySelector(\"input\");\n this.$monthWrapper =\n $module && $module.querySelector(\".tna-date-input__item--month\");\n this.$monthInput =\n this.$monthWrapper && this.$monthWrapper.querySelector(\"input\");\n this.$dayWrapper =\n $module && $module.querySelector(\".tna-date-input__item--day\");\n this.$dayInput =\n this.$dayWrapper && this.$dayWrapper.querySelector(\"input\");\n\n if (!this.$module) {\n return;\n }\n\n this.update();\n window.addEventListener(\"pageshow\", () => this.update());\n\n if (this.$yearInput) {\n this.$yearInput.addEventListener(\"keyup\", () => this.update());\n this.$yearInput.addEventListener(\"change\", () => this.update());\n }\n if (this.$monthInput) {\n this.$monthInput.addEventListener(\"keyup\", () => this.update());\n this.$monthInput.addEventListener(\"change\", () => this.update());\n }\n if (this.$dayInput) {\n this.$dayInput.addEventListener(\"keyup\", () => this.update());\n this.$dayInput.addEventListener(\"change\", () => this.update());\n }\n }\n\n update() {\n if (this.isValidYear()) {\n this.showMonth();\n if (this.isValidMonth()) {\n this.showDay();\n } else {\n this.hideDay();\n }\n } else {\n this.hideMonth();\n this.hideDay();\n }\n }\n\n isValidYear() {\n if (!this.$yearInput) {\n return true;\n }\n const yearValue = parseInt(this.$yearInput.value.trim(), 10);\n /* eslint-disable-next-line no-magic-numbers */\n return !isNaN(this.$yearInput.value) && !isNaN(yearValue) && yearValue > 0;\n }\n\n isValidMonth() {\n if (!this.$monthInput) {\n return true;\n }\n const monthRawValue = this.$monthInput.value.trim();\n const monthIntValue = parseInt(monthRawValue, 10);\n const validMonthStrings = [\n \"january\",\n \"february\",\n \"march\",\n \"april\",\n \"may\",\n \"june\",\n \"july\",\n \"august\",\n \"september\",\n \"october\",\n \"november\",\n \"december\",\n \"jan\",\n \"feb\",\n \"mar\",\n \"apr\",\n \"jun\",\n \"jul\",\n \"aug\",\n \"sep\",\n \"oct\",\n \"nov\",\n \"dec\",\n ];\n return (\n (!isNaN(this.$monthInput.value) &&\n !isNaN(monthIntValue) &&\n /* eslint-disable-next-line no-magic-numbers */\n monthIntValue > 0 &&\n /* eslint-disable-next-line no-magic-numbers */\n monthIntValue <= 12) ||\n validMonthStrings.includes(monthRawValue.toLowerCase())\n );\n }\n\n showMonth() {\n if (this.$monthWrapper) {\n this.$monthWrapper.removeAttribute(\"hidden\");\n }\n }\n\n hideMonth() {\n if (this.$monthWrapper) {\n this.$monthWrapper.setAttribute(\"hidden\", \"\");\n }\n }\n\n showDay() {\n if (this.$dayWrapper) {\n this.$dayWrapper.removeAttribute(\"hidden\");\n }\n }\n\n hideDay() {\n if (this.$dayWrapper) {\n this.$dayWrapper.setAttribute(\"hidden\", \"\");\n }\n }\n}\n","export class ErrorSummary {\n constructor($module) {\n this.$module = $module;\n }\n\n init() {\n if (!this.$module) {\n return;\n }\n\n const disableAutoFocus =\n this.$module.dataset.disableAutofocus === \"true\" || false;\n\n if (!disableAutoFocus) {\n this.setFocus(this.$module);\n }\n\n this.$module.addEventListener(\"click\", (event) => this.handleClick(event));\n }\n\n /* eslint-disable-next-line class-methods-use-this */\n setFocus($element, options = {}) {\n const isFocusable = $element.getAttribute(\"tabindex\");\n\n if (!isFocusable) {\n $element.setAttribute(\"tabindex\", \"-1\");\n }\n\n /**\n * Handle element blur\n */\n function onBlur() {\n options.onBlur?.call($element);\n\n if (!isFocusable) {\n $element.removeAttribute(\"tabindex\");\n }\n }\n\n /**\n * Handle element focus\n */\n function onFocus() {\n $element.addEventListener(\"blur\", onBlur, { once: true });\n }\n\n // Add listener to reset element on blur, after focus\n $element.addEventListener(\"focus\", onFocus, { once: true });\n\n // Focus element\n options.onBeforeFocus?.call($element);\n $element.focus();\n }\n\n handleClick(event) {\n const $target = event.target;\n if ($target && this.focusTarget($target)) {\n event.preventDefault();\n }\n }\n\n /* eslint-disable-next-line class-methods-use-this */\n getFragmentFromUrl(url) {\n if (!url.includes(\"#\")) {\n return null;\n }\n\n return url.split(\"#\").pop();\n }\n\n focusTarget($target) {\n // If the element that was clicked was not a link, return early\n if (!($target instanceof HTMLAnchorElement)) {\n return false;\n }\n\n const inputId = this.getFragmentFromUrl($target.href);\n if (!inputId) {\n return false;\n }\n\n const $input = document.getElementById(inputId);\n if (!$input) {\n return false;\n }\n\n const $legendOrLabel = this.getAssociatedLegendOrLabel($input);\n if (!$legendOrLabel) {\n return false;\n }\n\n // Scroll the legend or label into view *before* calling focus on the input\n // To avoid extra scrolling in browsers that don't support `preventScroll`\n // (which at time of writing is most of them...)\n $legendOrLabel.scrollIntoView();\n $input.focus({ preventScroll: true });\n\n return true;\n }\n\n /**\n * Get associated legend or label\n *\n * Returns the first element that exists from this list:\n *\n * - The `<legend>` associated with the closest `<fieldset>` ancestor, as long\n * as the top of it is no more than half a viewport height away from the\n * bottom of the input\n * - The first `<label>` that is associated with the input using for=\"inputId\"\n * - The closest parent `<label>`\n *\n * @private\n * @param {Element} $input - The input\n * @returns {Element | null} Associated legend or label, or null if no\n * associated legend or label can be found\n */\n /* eslint-disable-next-line class-methods-use-this */\n getAssociatedLegendOrLabel($input) {\n const $fieldset = $input.closest(\"fieldset\");\n\n if ($fieldset) {\n const $legends = $fieldset.getElementsByTagName(\"legend\");\n\n if ($legends.length) {\n const [$candidateLegend] = $legends;\n\n // If the input type is radio or checkbox, always use the legend if\n // There is one.\n if (\n $input instanceof HTMLInputElement &&\n ($input.type === \"checkbox\" || $input.type === \"radio\")\n ) {\n return $candidateLegend;\n }\n\n // For other input types, only scroll to the fieldset’s legend (instead\n // Of the label associated with the input) if the input would end up in\n // The top half of the screen.\n //\n // This should avoid situations where the input either ends up off the\n // Screen, or obscured by a software keyboard.\n const legendTop = $candidateLegend.getBoundingClientRect().top;\n const inputRect = $input.getBoundingClientRect();\n\n // If the browser doesn't support Element.getBoundingClientRect().height\n // Or window.innerHeight (like IE8), bail and just link to the label.\n if (inputRect.height && window.innerHeight) {\n const inputBottom = inputRect.top + inputRect.height;\n\n /* eslint-disable no-magic-numbers */\n if (inputBottom - legendTop < window.innerHeight / 2) {\n return $candidateLegend;\n }\n }\n }\n }\n\n return (\n document.querySelector(`label[for='${$input.getAttribute(\"id\")}']`) ??\n $input.closest(\"label\")\n );\n }\n}\n","export class FileInputDroppable {\n constructor($module) {\n this.$module = $module;\n this.$body = $module && $module.querySelector(\".tna-form-item__body\");\n this.$input = this.$body && this.$body.querySelector(\".tna-file-input\");\n\n if (!this.$module || !this.$body || !this.$input) {\n return;\n }\n\n this.acceptMutltipleFiles = this.$input.hasAttribute(\"multiple\");\n\n this.init();\n }\n\n init() {\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 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 const fileText = this.acceptMutltipleFiles ? \"files\" : \"file\";\n this.$pseudoSelectFileText.textContent = `No ${fileText} selected`;\n this.$droppableArea.appendChild(this.$pseudoSelectFileText);\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 const $pseudoSelectFileButton = document.createElement(\"span\");\n $pseudoSelectFileButton.classList.add(\"tna-button\");\n $pseudoSelectFileButton.textContent = `Choose ${fileText}`;\n $droppableButtons.appendChild($pseudoSelectFileButton);\n const $pseudoDropFileButton = document.createElement(\"span\");\n $pseudoDropFileButton.textContent = `or drop ${fileText}`;\n $droppableButtons.appendChild($pseudoDropFileButton);\n this.$droppableAreaAriaLabel = document.createElement(\"span\");\n this.$droppableAreaAriaLabel.classList.add(\"tna-visually-hidden\");\n this.$droppableAreaAriaLabel.setAttribute(\"aria-live\", \"assertive\");\n this.$droppableArea.appendChild(this.$droppableAreaAriaLabel);\n\n this.$input.addEventListener(\"dragenter\", (event) =>\n this.showDropTarget(event),\n );\n this.$input.addEventListener(\"dragleave\", () => this.hideDropTarget());\n this.$input.addEventListener(\"dragend\", () => this.hideDropTarget());\n this.$input.addEventListener(\"change\", () => this.onChange());\n this.$input.addEventListener(\"drop\", () => this.onChange());\n }\n\n /* eslint-disable-next-line class-methods-use-this */\n isContainingFiles(dataTransfer) {\n const hasNoTypesInfo = !dataTransfer.types.length;\n const isDraggingFiles = dataTransfer.types.some((type) => type === \"Files\");\n return hasNoTypesInfo || isDraggingFiles;\n }\n\n showDropTarget(event, updateAriaLabel = true) {\n if (event.dataTransfer && this.isContainingFiles(event.dataTransfer)) {\n let classToAdd = \"tna-file-input__droppable--over\";\n if (event.dataTransfer.items.length) {\n classToAdd = \"tna-file-input__droppable--over-multiple\";\n }\n this.$droppableArea.classList.add(classToAdd);\n\n if (updateAriaLabel) {\n this.$droppableAreaAriaLabel.textContent = \"Entered drop zone\";\n }\n }\n }\n\n hideDropTarget(updateAriaLabel = true) {\n this.$droppableArea.classList.remove(\n \"tna-file-input__droppable--over\",\n \"tna-file-input__droppable--over-multiple\",\n );\n if (updateAriaLabel) {\n this.$droppableAreaAriaLabel.textContent = \"Left drop zone\";\n }\n }\n\n onChange() {\n const { files } = this.$input;\n if (this.acceptMutltipleFiles) {\n if (files.length) {\n let fileText = \"file\";\n /* eslint-disable-next-line no-magic-numbers */\n if (files.length > 1) {\n fileText += \"s\";\n }\n const textContent = `${files.length} ${fileText} selected`;\n this.$pseudoSelectFileText.textContent = textContent;\n } else {\n this.$pseudoSelectFileText.textContent = `No files selected`;\n }\n } else {\n this.$pseudoSelectFileText.textContent =\n /* eslint-disable-next-line no-magic-numbers */\n files[0]?.name || `No file selected`;\n }\n if (files.length) {\n this.$droppableArea.classList.remove(\"tna-file-input__droppable--empty\");\n } else {\n this.$droppableArea.classList.add(\"tna-file-input__droppable--empty\");\n }\n this.hideDropTarget(false);\n }\n}\n","import Cookies from \"@nationalarchives/cookies/src/index.js\";\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.themeCookieName = themeCookieName;\n\n this.init();\n }\n\n init() {\n this.currentTheme = this.$themeSelector.dataset.themeOnLoad;\n\n this.cookies = new Cookies();\n\n this.$themeSelectorButtons = this.$themeSelector.querySelectorAll(\n \"button.tna-footer__theme-selector-button[value]\",\n );\n\n Array.from(this.$themeSelectorButtons).forEach(($themeSelectorButton) => {\n $themeSelectorButton.addEventListener(\"click\", (event) => {\n const $button = event.target;\n this.setTheme($button.value);\n this.selectThemeSelectorButton($button);\n });\n });\n\n this.$themeSelectorEnableSettingsCookiesButton.addEventListener(\n \"click\",\n () => {\n this.cookies.enablePreference(\"settings\");\n },\n );\n\n this.showThemeSelector();\n this.cookies.on(\"changePreference\", (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.preference(\"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.preference(\"settings\")) {\n this.cookies.set(this.themeCookieName, this.currentTheme);\n } else {\n this.$themeSelectorNotice.removeAttribute(\"hidden\");\n }\n }\n\n selectThemeSelectorButton($selectedButton) {\n Array.from(this.$themeSelectorButtons).forEach(($button) => {\n if ($button.value === $selectedButton.value) {\n $button.classList.remove(\"tna-button--plain\");\n $button.setAttribute(\"aria-current\", true);\n } else {\n $button.classList.add(\"tna-button--plain\");\n $button.removeAttribute(\"aria-current\");\n }\n });\n }\n}\n","export class Gallery {\n constructor($module) {\n this.$module = $module;\n this.$itemsContainer =\n $module && $module.querySelector(\".tna-gallery__items\");\n this.$items =\n this.$itemsContainer &&\n this.$itemsContainer.querySelectorAll(\".tna-gallery__item\");\n this.$navigation =\n $module && $module.querySelector(\".tna-gallery__navigation\");\n this.$navigationItems =\n this.$navigation &&\n $module.querySelectorAll(\".tna-gallery__navigation-item\");\n this.$navigationButtons =\n $module && $module.querySelector(\".tna-gallery__navigation-buttons\");\n\n if (\n !this.$module ||\n !this.$itemsContainer ||\n !this.$items ||\n /* eslint-disable-next-line no-magic-numbers */\n this.$items.length < 2 ||\n !this.$navigation ||\n !this.$navigationItems ||\n !this.$navigationButtons\n ) {\n return;\n }\n\n this.$module.classList.add(\"tna-gallery--interactive\");\n\n this.$navigationButtonPrev = this.$navigationButtons.querySelector(\n \".tna-gallery__navigation-prev\",\n );\n this.$navigationButtonNext = this.$navigationButtons.querySelector(\n \".tna-gallery__navigation-next\",\n );\n\n this.setup();\n /* eslint-disable-next-line no-magic-numbers */\n this.currentId = this.$items[0].id;\n this.showItem(this.currentId);\n }\n\n setup() {\n this.$items.forEach(($item) => {\n $item.setAttribute(\"hidden\", \"\");\n $item.setAttribute(\"aria-hidden\", \"true\");\n $item\n .querySelector(\".tna-gallery__item-header\")\n ?.setAttribute(\"aria-hidden\", \"true\");\n });\n this.$navigation.removeAttribute(\"hidden\");\n this.$navigationItems.forEach(($item) => {\n $item.addEventListener(\"click\", () => {\n this.showItem($item.getAttribute(\"aria-controls\"));\n this.$itemsContainer.setAttribute(\"tabindex\", \"0\");\n this.$itemsContainer.focus();\n });\n });\n this.$module.addEventListener(\"keydown\", (event) => {\n let preventDefaultKeyAction = false;\n switch (event.key) {\n case \"ArrowLeft\":\n case \"ArrowUp\":\n this.showPreviousItem();\n preventDefaultKeyAction = true;\n break;\n case \"ArrowRight\":\n case \"ArrowDown\":\n this.showNextItem();\n preventDefaultKeyAction = true;\n break;\n case \"Home\":\n this.showFirstItem();\n preventDefaultKeyAction = true;\n break;\n case \"End\":\n this.showLastItem();\n preventDefaultKeyAction = true;\n break;\n default:\n break;\n }\n if (preventDefaultKeyAction) {\n event.stopPropagation();\n event.preventDefault();\n }\n });\n\n this.$navigationButtons?.removeAttribute(\"hidden\");\n this.$navigationButtonPrev?.addEventListener(\"click\", () => {\n this.showPreviousItem();\n });\n this.$navigationButtonNext?.addEventListener(\"click\", () => {\n this.showNextItem();\n });\n\n this.$liveRegion = document.createElement(\"div\");\n this.$liveRegion.setAttribute(\"aria-live\", \"polite\");\n this.$liveRegion.setAttribute(\"aria-atomic\", \"true\");\n this.$liveRegion.setAttribute(\"class\", \"tna-gallery__item-header\");\n this.$itemsContainer.prepend(this.$liveRegion);\n this.$itemsContainer.classList.add(\"tna-gallery__items--hide-item-titles\");\n this.$itemsContainer.addEventListener(\"blur\", () =>\n this.$itemsContainer.removeAttribute(\"tabindex\"),\n );\n }\n\n showItem(id) {\n this.$items.forEach(($item) => {\n if (id && $item.id === id) {\n $item.removeAttribute(\"hidden\");\n $item.removeAttribute(\"aria-hidden\");\n } else {\n $item.setAttribute(\"hidden\", \"\");\n $item.setAttribute(\"aria-hidden\", \"true\");\n }\n });\n this.$navigationItems.forEach(($item) => {\n if (id) {\n if ($item.getAttribute(\"aria-controls\") === id) {\n $item.setAttribute(\"aria-current\", \"true\");\n } else {\n $item.setAttribute(\"aria-current\", \"false\");\n }\n } else {\n $item.setAttribute(\"aria-current\", \"false\");\n }\n });\n this.currentId = id;\n /* eslint-disable-next-line no-magic-numbers */\n this.$liveRegion.textContent = `Image ${this.getCurrentItemIndex() + 1} of ${this.$items.length}`;\n }\n\n getCurrentItemIndex() {\n return Array.from(this.$items).findIndex(\n ($item) => $item.id === this.currentId,\n );\n }\n\n showPreviousItem() {\n /* eslint-disable-next-line no-magic-numbers */\n let nextIndexToShow = this.getCurrentItemIndex() - 1;\n /* eslint-disable-next-line no-magic-numbers */\n if (nextIndexToShow < 0) {\n /* eslint-disable-next-line no-magic-numbers */\n nextIndexToShow = this.$items.length - 1;\n }\n this.showItem(this.$items[nextIndexToShow].id);\n }\n\n showNextItem() {\n /* eslint-disable-next-line no-magic-numbers */\n let nextIndexToShow = this.getCurrentItemIndex() + 1;\n if (nextIndexToShow >= this.$items.length) {\n /* eslint-disable-next-line no-magic-numbers */\n nextIndexToShow = 0;\n }\n this.showItem(this.$items[nextIndexToShow].id);\n }\n\n showFirstItem() {\n /* eslint-disable-next-line no-magic-numbers */\n this.showItem(this.$items[0].id);\n }\n\n showLastItem() {\n /* eslint-disable-next-line no-magic-numbers */\n this.showItem(this.$items[this.$items.length - 1].id);\n }\n}\n","export class GlobalHeader {\n constructor($module) {\n this.$module = $module;\n this.$toggleButton =\n $module && $module.querySelector(\".tna-global-header__navigation-button\");\n this.$navigation =\n $module &&\n $module.querySelector(\".tna-global-header__navigation-wrapper\");\n this.$topNavigation =\n $module &&\n $module.querySelector(\".tna-global-header__top-navigation-wrapper\");\n this.$links =\n $module &&\n ((this.$navigation &&\n this.$navigation.querySelectorAll(\"[tabindex='0']\")) ||\n (this.$topNavigation &&\n this.$topNavigation.querySelectorAll(\"[tabindex='0']\")));\n this.menuOpened = false;\n this.mql = window.matchMedia(\"(max-width: 48em)\");\n\n if (\n !this.$module ||\n !this.$toggleButton ||\n (!this.$navigation && !this.$topNavigation)\n ) {\n return;\n }\n\n this.$toggleButton.removeAttribute(\"hidden\");\n this.syncState();\n this.$toggleButton.addEventListener(\"click\", () =>\n this.handleToggleNavigation(),\n );\n if (\"addEventListener\" in this.mql) {\n this.mql.addEventListener(\"change\", () => this.syncState());\n } else {\n this.mql.addListener(() => this.syncState());\n }\n\n this.$module.addEventListener(\"keyup\", (event) => {\n if (event.code === \"Escape\" && this.mql.matches && this.menuOpened) {\n this.menuOpened = false;\n this.syncState();\n this.$toggleButton.focus();\n }\n });\n }\n\n handleToggleNavigation() {\n this.menuOpened = !this.menuOpened;\n this.syncState();\n }\n\n syncState() {\n if (this.mql.matches) {\n if (this.menuOpened) {\n this.show();\n } else {\n this.hide();\n }\n } else {\n this.show();\n }\n }\n\n hide() {\n if (this.$navigation) {\n this.$navigation.hidden = true;\n this.$navigation.setAttribute(\"aria-hidden\", \"true\");\n }\n if (this.$topNavigation) {\n this.$topNavigation.hidden = true;\n this.$topNavigation.setAttribute(\"aria-hidden\", \"true\");\n }\n this.$toggleButton.setAttribute(\"aria-expanded\", \"false\");\n this.$toggleButton.setAttribute(\"title\", \"Open menu\");\n this.$toggleButton.classList.remove(\n \"tna-global-header__navigation-button--opened\",\n );\n /* eslint-disable-next-line no-magic-numbers */\n for (let index = 0; index < this.$links.length; index += 1) {\n this.$links[index].setAttribute(\"tabindex\", \"-1\");\n }\n }\n\n show() {\n if (this.$navigation) {\n this.$navigation.hidden = false;\n this.$navigation.setAttribute(\"aria-hidden\", \"false\");\n }\n if (this.$topNavigation) {\n this.$topNavigation.hidden = false;\n this.$topNavigation.setAttribute(\"aria-hidden\", \"false\");\n }\n this.$toggleButton.setAttribute(\"aria-expanded\", \"true\");\n this.$toggleButton.setAttribute(\"title\", \"Close menu\");\n this.$toggleButton.classList.add(\n \"tna-global-header__navigation-button--opened\",\n );\n /* eslint-disable-next-line no-magic-numbers */\n for (let index = 0; index < this.$links.length; index += 1) {\n this.$links[index].setAttribute(\"tabindex\", \"0\");\n }\n }\n}\n","export class Header {\n constructor($module) {\n this.$module = $module;\n this.$toggleButton =\n $module && $module.querySelector(\".tna-header__navigation-button\");\n this.$navigation =\n $module && $module.querySelector(\".tna-header__navigation\");\n this.$links =\n $module &&\n this.$navigation &&\n this.$navigation.querySelectorAll(\"[tabindex='0']\");\n this.menuOpened = false;\n this.mql = window.matchMedia(\"(max-width: 48em)\");\n\n if (!this.$module || !this.$toggleButton || !this.$navigation) {\n return;\n }\n\n this.$toggleButton.removeAttribute(\"hidden\");\n this.syncState();\n this.$toggleButton.addEventListener(\"click\", () =>\n this.handleToggleNavigation(),\n );\n if (\"addEventListener\" in this.mql) {\n this.mql.addEventListener(\"change\", () => this.syncState());\n } else {\n this.mql.addListener(() => this.syncState());\n }\n\n this.$module.addEventListener(\"keyup\", (event) => {\n if (event.code === \"Escape\" && this.menuOpened && this.mql.matches) {\n this.menuOpened = false;\n this.syncState();\n this.$toggleButton.focus();\n }\n });\n }\n\n handleToggleNavigation() {\n this.menuOpened = !this.menuOpened;\n this.syncState();\n }\n\n syncState() {\n if (this.mql.matches) {\n if (this.menuOpened) {\n this.show();\n } else {\n this.hide();\n }\n } else {\n this.show();\n }\n }\n\n show() {\n this.$navigation.classList.add(\"tna-header__navigation--open\");\n this.$navigation.removeAttribute(\"hidden\");\n this.$navigation.setAttribute(\"aria-hidden\", \"false\");\n this.$toggleButton.setAttribute(\"aria-expanded\", \"true\");\n this.$toggleButton.setAttribute(\"title\", \"Close menu\");\n this.$toggleButton.classList.add(\"tna-header__navigation-button--opened\");\n\n /* eslint-disable-next-line no-magic-numbers */\n for (let index = 0; index < this.$links.length; index += 1) {\n this.$links[index].setAttribute(\"tabindex\", \"0\");\n }\n }\n\n hide() {\n this.$navigation.classList.remove(\"tna-header__navigation--open\");\n this.$navigation.hidden = true;\n this.$navigation.setAttribute(\"aria-hidden\", \"true\");\n this.$toggleButton.setAttribute(\"aria-expanded\", \"false\");\n this.$toggleButton.setAttribute(\"title\", \"Open menu\");\n this.$toggleButton.classList.remove(\n \"tna-header__navigation-button--opened\",\n );\n\n /* eslint-disable-next-line no-magic-numbers */\n for (let index = 0; index < this.$links.length; index += 1) {\n this.$links[index].setAttribute(\"tabindex\", \"-1\");\n }\n }\n}\n","import uuidv4 from \"../../lib/uuid.mjs\";\n\nexport class Picture {\n constructor($module) {\n this.$module = $module;\n this.$imageWrapper =\n $module && $module.querySelector(\".tna-picture__image-wrapper\");\n\n this.$transcriptToggle =\n this.$imageWrapper &&\n this.$imageWrapper.querySelector(\".tna-picture__toggle-transcript\");\n\n this.$transcript =\n $module && $module.querySelector(\".tna-picture__transcript\");\n this.transcriptOpened = false;\n\n if (\n !this.$module ||\n !this.$imageWrapper ||\n !this.$transcriptToggle ||\n !this.$transcript\n ) {\n return;\n }\n\n this.openLabel =\n this.$module.dataset.informationLabelOpen || \"Open transcript\";\n this.closeLabel =\n this.$module.dataset.informationLabelClose || \"Close transcript\";\n\n this.init();\n }\n\n init() {\n const uniqueId = `tna-picture-${uuidv4()}`;\n\n this.$transcriptToggle.removeAttribute(\"hidden\");\n this.$transcriptToggle.setAttribute(\"aria-controls\", uniqueId);\n this.$transcriptToggle.innerText = this.openLabel;\n this.$transcriptToggle.addEventListener(\"click\", () =>\n this.toggleTranscript(),\n );\n\n this.$transcript.setAttribute(\"id\", uniqueId);\n this.$transcript.setAttribute(\"hidden\", \"\");\n\n this.$transcript.addEventListener(\"keydown\", (event) => {\n switch (event.key) {\n case \"Escape\":\n this.toggleTranscript();\n this.$transcriptToggle.focus();\n break;\n default:\n break;\n }\n });\n }\n\n toggleTranscript() {\n this.transcriptOpened = !this.transcriptOpened;\n if (this.transcriptOpened) {\n this.$transcriptToggle.setAttribute(\"aria-expanded\", true);\n this.$transcriptToggle.innerText = this.closeLabel;\n this.$transcript.removeAttribute(\"hidden\");\n } else {\n this.$transcriptToggle.setAttribute(\"aria-expanded\", false);\n this.$transcriptToggle.innerText = this.openLabel;\n this.$transcript.setAttribute(\"hidden\", \"\");\n }\n }\n}\n","export class Sidebar {\n constructor($module, options = {}) {\n this.$module = $module;\n this.items =\n $module &&\n Array.from($module.querySelectorAll(\".tna-sidebar__item\"))\n .map(($item) => {\n const id = $item\n .querySelector(\".tna-sidebar__link[href^='#']\")\n .getAttribute(\"href\")\n /* eslint-disable-next-line no-magic-numbers */\n .substring(1);\n const target = document.getElementById(id);\n return {\n $item,\n id,\n target,\n };\n })\n .filter((item) => item.target);\n\n if (!this.$module || !this.items) {\n return;\n }\n\n /* eslint-disable-next-line no-magic-numbers */\n const { scrollTopThreshold = 0, disableHighlightSize = \"small\" } = options;\n this.scrollTopThreshold = scrollTopThreshold;\n this.disableHighlightSize = disableHighlightSize;\n\n this.init();\n }\n\n init() {\n this.breakpoints = {\n tiny:\n getComputedStyle(document.documentElement).getPropertyValue(\n \"--media-breakpoint-tiny\",\n ) || \"480px\",\n small:\n getComputedStyle(document.documentElement).getPropertyValue(\n \"--media-breakpoint-small\",\n ) || \"768px\",\n medium:\n getComputedStyle(document.documentElement).getPropertyValue(\n \"--media-breakpoint-medium\",\n ) || \"1024px\",\n };\n\n if (this.disableHighlightSize) {\n if (!Object.keys(this.breakpoints).includes(this.disableHighlightSize)) {\n throw new Error(\n `Invalid value for disableHighlightSize: ${this.disableHighlightSize}. Expected one of: ${Object.keys(this.breakpoints).join(\", \")}`,\n );\n }\n this.hideOnDevice = window.matchMedia(\n `(max-width: ${this.breakpoints[this.disableHighlightSize]})`,\n );\n } else {\n this.hideOnDevice = null;\n }\n\n this.currentItem = null;\n\n window.addEventListener(\"scroll\", () => this.highlightCurrentSection());\n window.addEventListener(\"resize\", () => this.highlightCurrentSection());\n this.highlightCurrentSection();\n }\n\n highlightCurrentSection() {\n if (this.hideOnDevice && this.hideOnDevice.matches) {\n this.items.forEach((item) => {\n item.$item.classList.remove(\"tna-sidebar__item--current\");\n });\n this.currentItem = null;\n return;\n }\n\n const $topItem = this.items.findLast(\n (item) =>\n Math.floor(item.target.getBoundingClientRect().top) <=\n this.scrollTopThreshold,\n );\n\n if ($topItem !== this.currentItem) {\n this.items.forEach((item) => {\n if ($topItem && item === $topItem) {\n this.currentItem = item;\n this.currentItem.$item.classList.add(\"tna-sidebar__item--current\");\n } else {\n item.$item.classList.remove(\"tna-sidebar__item--current\");\n }\n });\n }\n this.currentItem = $topItem || null;\n }\n}\n","export class SkipLink {\n linkedElementListener = false;\n\n constructor($module) {\n this.$module = $module;\n this.linkedElementId = $module.getAttribute(\"href\")?.split(\"#\").pop();\n this.$linkedElement =\n $module &&\n this.linkedElementId &&\n document.getElementById(this.linkedElementId);\n\n if (this.$module && this.$linkedElement) {\n this.$module.addEventListener(\"click\", () => this.focusLinkedElement());\n }\n }\n\n focusLinkedElement() {\n if (!this.$linkedElement.getAttribute(\"tabindex\")) {\n this.$linkedElement.setAttribute(\"tabindex\", \"-1\");\n this.$linkedElement.classList.add(\"tna-!--no-focus-style\");\n\n if (!this.linkedElementListener) {\n this.$linkedElement.addEventListener(\"blur\", () =>\n this.removeFocusProperties(),\n );\n this.linkedElementListener = true;\n }\n }\n\n this.$linkedElement.focus();\n }\n\n removeFocusProperties() {\n this.$linkedElement.removeAttribute(\"tabindex\");\n this.$linkedElement.classList.remove(\"tna-!--no-focus-style\");\n }\n}\n","export class Tabs {\n constructor($module) {\n this.$module = $module;\n this.$tabList = $module && $module.querySelector(\".tna-tabs__list\");\n this.$tabListItemLinks =\n $module &&\n this.$tabList &&\n this.$tabList.querySelectorAll(\".tna-tabs__button\");\n this.$tabItems = $module && $module.querySelectorAll(\".tna-tabs__item\");\n\n if (\n !this.$module ||\n !this.$tabList ||\n !this.$tabListItemLinks ||\n !this.$tabItems ||\n this.$tabListItemLinks.length !== this.$tabItems.length\n ) {\n return;\n }\n\n this.currentTabIndex = this.$module.dataset.activeTabOnLoad\n ? parseInt(this.$module.dataset.activeTabOnLoad, 10)\n : 0;\n this.allowClose = this.$module.dataset.allowClose === \"true\";\n this.init();\n }\n\n init() {\n this.$module.classList.add(\"tna-tabs--interactive\");\n this.$tabList.removeAttribute(\"hidden\");\n this.$tabListItemLinks.forEach(($tabListItemLink) => {\n const tabPanelID = $tabListItemLink.getAttribute(\"aria-controls\");\n $tabListItemLink.setAttribute(\"aria-selected\", false);\n const $tabPanel = document.getElementById(tabPanelID);\n $tabPanel.setAttribute(\"aria-labelledby\", $tabListItemLink.id);\n $tabPanel.setAttribute(\"role\", \"tabpanel\");\n $tabListItemLink.addEventListener(\n \"click\",\n (event) => this.handleItemLinkClick(event),\n true,\n );\n });\n this.switchTabByIndex(this.currentTabIndex);\n this.$module.addEventListener(\"keydown\", (event) =>\n this.handleItemLinkKeyDown(event),\n );\n }\n\n handleItemLinkClick(itemLinkClickEvent) {\n itemLinkClickEvent.preventDefault();\n const targetItem =\n itemLinkClickEvent.currentTarget.getAttribute(\"aria-controls\");\n this.switchTabByID(targetItem);\n }\n\n handleItemLinkKeyDown(itemLinkKeyDownEvent) {\n let preventDefaultKeyAction = false;\n switch (itemLinkKeyDownEvent.key) {\n case \"ArrowLeft\":\n case \"ArrowUp\":\n this.previousTab();\n preventDefaultKeyAction = true;\n break;\n case \"ArrowRight\":\n case \"ArrowDown\":\n this.nextTab();\n preventDefaultKeyAction = true;\n break;\n case \"Home\":\n /* eslint-disable-next-line no-magic-numbers */\n this.switchTabByIndex(0, true, true);\n preventDefaultKeyAction = true;\n break;\n case \"End\":\n /* eslint-disable-next-line no-magic-numbers */\n this.switchTabByIndex(this.$tabListItemLinks.length - 1, true, true);\n preventDefaultKeyAction = true;\n break;\n default:\n break;\n }\n if (preventDefaultKeyAction) {\n itemLinkKeyDownEvent.stopPropagation();\n itemLinkKeyDownEvent.preventDefault();\n }\n }\n\n nextTab() {\n /* eslint-disable-next-line no-magic-numbers */\n if (this.currentTabIndex < this.$tabListItemLinks.length - 1) {\n /* eslint-disable-next-line no-magic-numbers */\n this.switchTabByIndex(this.currentTabIndex + 1, true);\n } else {\n /* eslint-disable-next-line no-magic-numbers */\n this.switchTabByIndex(0, true);\n }\n }\n\n previousTab() {\n /* eslint-disable-next-line no-magic-numbers */\n if (this.currentTabIndex >= 1) {\n /* eslint-disable-next-line no-magic-numbers */\n this.switchTabByIndex(this.currentTabIndex - 1, true);\n } else {\n /* eslint-disable-next-line no-magic-numbers */\n this.switchTabByIndex(this.$tabListItemLinks.length - 1, true);\n }\n }\n\n switchTabByIndex(newIndex, switchFocus = false, disallowClose = false) {\n this.currentTabIndex = newIndex;\n const isTabAlreadySelected =\n this.$tabListItemLinks[this.currentTabIndex]\n ?.getAttribute(\"aria-selected\")\n .toString() === \"true\";\n if (isTabAlreadySelected && this.allowClose && !disallowClose) {\n this.currentTabIndex = -1;\n }\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(\n \"tabindex\",\n this.currentTabIndex === -1 ? \"0\" : \"-1\",\n );\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(\n \"tabindex\",\n this.currentTabIndex === -1 ? \"0\" : \"-1\",\n );\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 this.enhancedHint = enhancedHint || \"Enter an item and press enter\";\n\n this.init();\n }\n\n init() {\n this.values = this.$formFieldInput.value\n .split(\"\\n\")\n .map((value) => value.trim())\n .filter((value) => value);\n\n this.id = this.$formFieldInput.id;\n\n this.$formFieldNewInput = document.createElement(\"input\");\n this.$formFieldNewInput.classList.add(\"tna-text-input\");\n [\"id\", \"aria-describedby\"].forEach((attribute) => {\n this.$formFieldNewInput.setAttribute(\n attribute,\n this.$formFieldInput.getAttribute(attribute),\n );\n this.$formFieldInput.removeAttribute(attribute);\n });\n this.$formFieldBody.appendChild(this.$formFieldNewInput);\n this.$formFieldInput.setAttribute(\"hidden\", \"\");\n this.$formFieldInput.addEventListener(\"keyup\", () => this.updateList());\n this.$formFieldNewInput.addEventListener(\"keypress\", (event) => {\n if (event.key === \"Enter\") {\n this.appendValue(event.target.value);\n }\n });\n\n this.$formFieldNewInputAddButton = document.createElement(\"button\");\n this.$formFieldNewInputAddButton.setAttribute(\"type\", \"button\");\n this.$formFieldNewInputAddButton.classList.add(\n \"tna-button\",\n \"tna-button--small\",\n );\n this.$formFieldNewInputAddButtonInner = document.createElement(\"span\");\n this.$formFieldNewInputAddButtonInner.innerText = \"Add\";\n this.$formFieldNewInputAddButtonInnerExtra = document.createElement(\"span\");\n this.$formFieldNewInputAddButtonInnerExtra.classList.add(\n \"tna-visually-hidden\",\n );\n this.$formFieldNewInputAddButtonInnerExtra.innerText = \" to list\";\n this.$formFieldNewInputAddButtonInner.appendChild(\n this.$formFieldNewInputAddButtonInnerExtra,\n );\n this.$formFieldNewInputAddButton.appendChild(\n this.$formFieldNewInputAddButtonInner,\n );\n this.$formFieldBody.appendChild(this.$formFieldNewInputAddButton);\n this.$formFieldNewInputAddButton.addEventListener(\"click\", () => {\n this.appendValue(this.$formFieldNewInput.value);\n });\n\n this.$formFieldLiveAria = document.createElement(\"div\");\n this.$formFieldLiveAria.setAttribute(\"aria-live\", \"assertive\");\n this.$formFieldLiveAria.classList.add(\"tna-visually-hidden\");\n this.$module.appendChild(this.$formFieldLiveAria);\n\n this.$formFieldCounter = document.createElement(\"p\");\n this.$formFieldCounter.id = `${this.id}-list-helper`;\n this.$formFieldCounter.classList.add(\"tna-!--margin-top-xs\");\n this.$module.appendChild(this.$formFieldCounter);\n\n this.$formFieldNewInput.setAttribute(\n \"aria-describedby\",\n `${this.$formFieldNewInput.getAttribute(\"aria-describedby\")} ${\n this.$formFieldCounter.id\n }`,\n );\n\n this.$valuesList = document.createElement(\"ul\");\n this.$valuesList.classList.add(\n \"tna-compound-filters\",\n \"tna-!--margin-top-xs\",\n );\n this.$valuesList.addEventListener(\"blur\", () => {\n this.$valuesList.removeAttribute(\"tabindex\");\n this.updateAriaText(\"\");\n });\n this.$module.appendChild(this.$valuesList);\n\n if (!this.$formFieldInputHint) {\n this.$formFieldInputHint = document.createElement(\"p\");\n this.$formFieldInputHint.classList.add(\"tna-form-item__hint\");\n this.$formFieldBody.parentNode.insertBefore(\n this.$formFieldInputHint,\n this.$formFieldBody,\n );\n }\n this.$formFieldInputHint.innerText = this.enhancedHint;\n\n this.updateList();\n }\n\n updateAriaText(content) {\n this.$formFieldLiveAria.innerText = content;\n }\n\n /* eslint-disable-next-line class-methods-use-this */\n normaliseValue(value) {\n return value.replace(/\\s{2,}/u, \" \").trim();\n }\n\n isValueInList(value) {\n return this.values\n .map((eachValue) => this.normaliseValue(eachValue).toLowerCase())\n .includes(value.toLowerCase().trim());\n }\n\n appendValue(value) {\n const newValue = this.normaliseValue(value);\n if (newValue) {\n if (this.isValueInList(newValue)) {\n this.updateAriaText(`'${newValue}' already added`);\n } else {\n this.values.push(newValue);\n this.$formFieldInput.value = this.values.join(\"\\n\");\n this.updateList();\n this.updateAriaText(`'${newValue}' added`);\n }\n } else {\n this.updateAriaText(\"Enter an item to add\");\n }\n this.$formFieldNewInput.value = \"\";\n this.$formFieldNewInput.focus();\n }\n\n removeValue(value) {\n const removeValue = this.normaliseValue(value);\n if (removeValue && this.isValueInList(removeValue)) {\n this.values = this.values.filter(\n (existingValue) => existingValue !== removeValue,\n );\n this.$formFieldInput.value = this.values.join(\"\\n\");\n this.updateList();\n this.updateAriaText(`'${removeValue}' removed`);\n }\n if (this.values.length) {\n this.$valuesList.setAttribute(\"tabindex\", \"0\");\n this.$valuesList.focus();\n } else {\n this.$formFieldNewInput.focus();\n }\n }\n\n updateList() {\n this.$valuesList.innerHTML = \"\";\n this.values\n .map((value) => {\n const $item = document.createElement(\"li\");\n $item.classList.add(\"tna-compound-filters__item\");\n const $itemLabel = document.createElement(\"span\");\n $itemLabel.innerText = value;\n $item.appendChild($itemLabel);\n\n const $removeItemButton = document.createElement(\"button\");\n $removeItemButton.innerText = `Remove '${value}'`;\n $removeItemButton.setAttribute(\"type\", \"button\");\n $removeItemButton.classList.add(\"tna-compound-filters__link\");\n $removeItemButton.addEventListener(\"click\", () => {\n this.removeValue(value);\n });\n $item.appendChild($removeItemButton);\n return $item;\n })\n .forEach(($item) => this.$valuesList.appendChild($item));\n\n let innerTextItemValue = \"item\";\n /* eslint-disable-next-line no-magic-numbers */\n if (this.values.length !== 1) {\n innerTextItemValue += \"s\";\n }\n const innerTextValue = `${this.values.length} ${innerTextItemValue} added`;\n this.$formFieldCounter.innerText = innerTextValue;\n }\n}\n","import uuidv4 from \"./uuid.mjs\";\n\nexport const iso8601ToPrettyDatetime = (dateStr) => {\n const datetime = dateStr;\n\n if (!datetime) {\n throw new Error(\"No datetime provided\");\n }\n const isDateTime =\n /^\\d{4}(?:-\\d{2}){2}(?:T| )\\d{2}(?::\\d{2}){1,2}(?:\\.\\d+)?(?:Z|(?:[+-]\\d{2}:\\d{2}))?$/u.test(\n datetime,\n );\n const isDate = /^\\d{4}(?:-\\d{2}){2}$/u.test(datetime);\n if (!isDateTime && !isDate) {\n throw new Error(\"Invalid datetime provided\");\n }\n\n const date = new Date(datetime);\n if (!(date instanceof Date) || isNaN(date)) {\n throw new Error(\"Invalid datetime provided\");\n }\n\n const dayString = date.toLocaleDateString(\"en-GB\", {\n weekday: \"long\",\n });\n const dateString = date.toLocaleDateString(\"en-GB\", {\n day: \"numeric\",\n month: \"long\",\n year: \"numeric\",\n });\n\n if (isDateTime && (date.getHours() || date.getMinutes())) {\n let timeString = date.toLocaleTimeString(\"en-GB\", {\n hour: \"2-digit\",\n minute: \"2-digit\",\n });\n if (date.getSeconds()) {\n timeString = date.toLocaleTimeString(\"en-GB\", {\n hour: \"2-digit\",\n minute: \"2-digit\",\n second: \"2-digit\",\n });\n }\n return `${dayString} ${dateString}, ${timeString}`;\n }\n return `${dayString} ${dateString}`;\n};\n\n/*\n * ==========================================\n * Transform any <time> element into a pretty\n * and human readable format that is based on\n * the valid ISO 8601 datetime attribute. The\n * replaced value will be localised according\n * to user's system settings, repurposing the\n * original text content as a title attribute\n * to allow users to see the value. A null or\n * invalid datetime format will result in the\n * element not being modified. If the updated\n * value is similar to the starting value for\n * the element text content, then the element\n * will not be updated to avoid redundancy.\n * ------------------------------------------\n * For example if the user's system has a UTC\n * timezone set then the element:\n *\n * <time\n * datetime=\"2026-03-05T13:48:00-05:00\"\n * >\n * 5 March 2026, 13:48 (UTC -5)\n * </time>\n *\n * would become:\n *\n * <time\n * datetime=\"2026-03-05T13:48:00-05:00\"\n * title=\"5 March 2026, 13:48 (UTC -5)\"\n * >\n * Thursday 5 March 2026, 09:48\n * </time>\n * ==========================================\n */\nexport const updateTimeElement = ($el) => {\n const datetime = $el.getAttribute(\"datetime\");\n\n try {\n const prettyDatetime = iso8601ToPrettyDatetime(datetime);\n if (!prettyDatetime.includes($el.textContent)) {\n $el.setAttribute(\"title\", $el.textContent);\n $el.textContent = prettyDatetime;\n }\n // eslint-disable-next-line no-unused-vars\n } catch (error) {\n // Do nothing if the datetime is invalid or not provided\n }\n};\n\nexport const checkTableForScroll = ($tableWrapper) => {\n const $caption = $tableWrapper.querySelector(\"caption\");\n if (!($tableWrapper.dataset.tableScrollInitialised === \"true\")) {\n if ($caption && !$caption.id) {\n $caption.id = `table-caption-${uuidv4()}`;\n }\n $tableWrapper.dataset.tableScrollInitialised = \"true\";\n }\n if ($tableWrapper.scrollWidth > $tableWrapper.clientWidth) {\n $tableWrapper.setAttribute(\"tabindex\", \"0\");\n $tableWrapper.setAttribute(\"role\", \"region\");\n $tableWrapper.setAttribute(\"aria-labelledby\", $caption?.id || \"\");\n $tableWrapper.classList.add(\"tna-table-wrapper--scroll\");\n } else {\n $tableWrapper.removeAttribute(\"tabindex\");\n $tableWrapper.removeAttribute(\"role\");\n $tableWrapper.removeAttribute(\"aria-labelledby\");\n $tableWrapper.classList.remove(\"tna-table-wrapper--scroll\");\n }\n};\n","/* eslint-disable no-magic-numbers */\n/* eslint-disable no-bitwise */\nconst uuidv4 = () =>\n ([1e7] + -1e3 + -4e3 + -8e3 + -1e11).replace(/[018]/gu, (char) =>\n (\n char ^\n (crypto.getRandomValues(new Uint8Array(1))[0] & (15 >> (char / 4)))\n ).toString(16),\n );\n\nexport default uuidv4;\n","// The module cache\nconst __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tconst 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\tconst 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/value functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tif(Array.isArray(definition)) {\n\t\tvar i = 0;\n\t\twhile(i < definition.length) {\n\t\t\tvar key = definition[i++];\n\t\t\tvar binding = definition[i++];\n\t\t\tvar descriptor = binding === 0 ? { enumerable: true, value: definition[i++] } : { enumerable: true, get: binding };\n\t\t\tif(!__webpack_require__.o(exports, key)) Object.defineProperty(exports, key, descriptor);\n\t\t}\n\t} else {\n\t\tfor(var key in definition) {\n\t\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t\t}\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\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","/* eslint-disable no-new */\nimport { Accordion } from \"./components/accordion/accordion.mjs\";\nimport { Breadcrumbs } from \"./components/breadcrumbs/breadcrumbs.mjs\";\nimport { CodeBlock } from \"./components/code-block/code-block.mjs\";\nimport { CookieBanner } from \"./components/cookie-banner/cookie-banner.mjs\";\nimport { DateInputProgressive } from \"./components/date-input/date-input.mjs\";\nimport { ErrorSummary } from \"./components/error-summary/error-summary.mjs\";\nimport { FileInputDroppable } from \"./components/file-input/file-input.mjs\";\nimport { Footer } from \"./components/footer/footer.mjs\";\nimport { Gallery } from \"./components/gallery/gallery.mjs\";\nimport { GlobalHeader } from \"./components/global-header/global-header.mjs\";\nimport { Header } from \"./components/header/header.mjs\";\nimport { Picture } from \"./components/picture/picture.mjs\";\nimport { Sidebar } from \"./components/sidebar/sidebar.mjs\";\nimport { SkipLink } from \"./components/skip-link/skip-link.mjs\";\nimport { Tabs } from \"./components/tabs/tabs.mjs\";\nimport { TextInputPassword } from \"./components/text-input/text-input.mjs\";\nimport { TextAreaItemisedRows } from \"./components/textarea/textarea.mjs\";\nimport { checkTableForScroll, updateTimeElement } from \"./lib/helpers.mjs\";\n\nconst initAll = (options = {}) => {\n const { scope } = options;\n let $scope = document;\n if (scope) {\n if (scope instanceof HTMLElement) {\n $scope = scope;\n } else {\n throw new Error(\"Scope must be an HTMLElement\");\n }\n }\n const $html = document.documentElement;\n $html.classList.add(\"tna-template--js-enabled\");\n\n const onFirstTouch = () => {\n window.removeEventListener(\"touchstart\", onFirstTouch);\n $html.classList.add(\"tna-template--touched\");\n };\n window.addEventListener(\"touchstart\", onFirstTouch);\n\n const onKeyDown = (event) => {\n if (event.key === \"Tab\") {\n $html.classList.add(\"tna-template--tabbed\");\n $html.classList.remove(\"tna-template--clicked\");\n }\n };\n window.addEventListener(\"keydown\", onKeyDown);\n\n const onMouseDown = () => {\n $html.classList.add(\"tna-template--clicked\");\n $html.classList.remove(\"tna-template--tabbed\");\n };\n window.addEventListener(\"mousedown\", onMouseDown);\n\n /*\n * ==========================================\n * Checks if widths of all tables on the page\n * are wider than their parent container, and\n * allowing horizontal scrolling if they are.\n * This is done both on load and on resize.\n * ==========================================\n */\n const $tableWrappers = $scope.querySelectorAll(\".tna-table-wrapper\");\n $tableWrappers.forEach(($tableWrapper) => checkTableForScroll($tableWrapper));\n window.addEventListener(\"resize\", () => {\n $tableWrappers.forEach(($tableWrapper) =>\n checkTableForScroll($tableWrapper),\n );\n });\n\n // Remove this opt-in class in a later release\n if ($html.classList.contains(\"tna-template--enhance-time-elements\")) {\n document.querySelectorAll(\"time[datetime]\").forEach(updateTimeElement);\n }\n\n const $accordions = $scope.querySelectorAll('[data-module=\"tna-accordion\"]');\n $accordions.forEach(($accordion) => {\n new Accordion($accordion);\n });\n\n const $breadcrumbs = $scope.querySelector('[data-module=\"tna-breadcrumbs\"]');\n if ($breadcrumbs) {\n new Breadcrumbs($breadcrumbs);\n }\n\n const $codeBlocks = $scope.querySelectorAll('[data-module=\"tna-code-block\"]');\n $codeBlocks.forEach(($codeBlock) => {\n new CodeBlock($codeBlock);\n });\n\n const $cookieBanner = $scope.querySelector(\n '[data-module=\"tna-cookie-banner\"]',\n );\n if ($cookieBanner) {\n new CookieBanner($cookieBanner);\n }\n\n const $progressiveDateInputs = $scope.querySelectorAll(\n '[data-module=\"tna-date-input-progressive\"]',\n );\n $progressiveDateInputs.forEach(($dateInput) => {\n new DateInputProgressive($dateInput);\n });\n\n const $errorSummary = $scope.querySelector(\n '[data-module=\"tna-error-summary\"]',\n );\n if ($errorSummary) {\n new ErrorSummary($errorSummary).init();\n }\n\n const $fileInputs = $scope.querySelectorAll('[data-module=\"tna-file-input\"]');\n $fileInputs.forEach(($fileInput) => {\n new FileInputDroppable($fileInput);\n });\n\n const $footer = $scope.querySelector('[data-module=\"tna-footer\"]');\n if ($footer) {\n new Footer($footer);\n }\n\n const $galleries = $scope.querySelectorAll('[data-module=\"tna-gallery\"]');\n $galleries.forEach(($gallery) => {\n new Gallery($gallery);\n });\n\n const $globalHeader = $scope.querySelector(\n '[data-module=\"tna-global-header\"]',\n );\n if ($globalHeader) {\n new GlobalHeader($globalHeader);\n }\n\n const $header = $scope.querySelector('[data-module=\"tna-header\"]');\n if ($header) {\n new Header($header);\n }\n\n const $pictures = $scope.querySelectorAll('[data-module=\"tna-picture\"]');\n $pictures.forEach(($picture) => {\n new Picture($picture);\n });\n\n const $sidebar = $scope.querySelector('[data-module=\"tna-sidebar-sections\"]');\n if ($sidebar) {\n const { scrollTopThreshold, disableHighlightSize } = $sidebar.dataset;\n new Sidebar($sidebar, { scrollTopThreshold, disableHighlightSize });\n }\n\n const $skipLinks = $scope.querySelectorAll('[data-module=\"tna-skip-link\"]');\n $skipLinks.forEach(($skipLink) => {\n new SkipLink($skipLink);\n });\n\n const $tabs = $scope.querySelectorAll('[data-module=\"tna-tabs\"]');\n $tabs.forEach(($tabModule) => {\n new Tabs($tabModule);\n });\n\n const $textAreaItemisedRows = $scope.querySelectorAll(\n '[data-module=\"tna-textarea-itemised-rows\"]',\n );\n $textAreaItemisedRows.forEach(($textAreaWithItemisedRows) => {\n const { enhancedHint } = $textAreaWithItemisedRows.dataset;\n new TextAreaItemisedRows($textAreaWithItemisedRows, { enhancedHint });\n });\n\n const $textInputPasswords = $scope.querySelectorAll(\n '[data-module=\"tna-text-input-password\"]',\n );\n $textInputPasswords.forEach(($textInputPassword) => {\n new TextInputPassword($textInputPassword);\n });\n\n window.matchMedia(\"print\").addEventListener(\"change\", (evt) => {\n if (evt.matches) {\n $scope\n .querySelectorAll(\".tna-details__details:not([open])\")\n .forEach(($element) => {\n $element.setAttribute(\"open\", \"\");\n $element.dataset.wasClosed = \"\";\n });\n $scope\n .querySelectorAll(\n \".tna-accordion__content[hidden], .tna-picture__transcript[hidden]\",\n )\n .forEach(($element) => {\n $element.removeAttribute(\"hidden\");\n $element.dataset.wasClosed = \"\";\n });\n } else {\n $scope\n .querySelectorAll(\".tna-details__details[data-was-closed]\")\n .forEach(($element) => {\n $element.removeAttribute(\"open\");\n delete $element.dataset.wasClosed;\n });\n $scope\n .querySelectorAll(\n \".tna-accordion__content[data-was-closed], .tna-picture__transcript[data-was-closed]\",\n )\n .forEach(($element) => {\n $element.setAttribute(\"hidden\", \"\");\n $element.dataset.wasClosed = \"\";\n });\n }\n });\n};\n\nexport {\n initAll,\n Accordion,\n Breadcrumbs,\n CodeBlock,\n CookieBanner,\n DateInputProgressive,\n ErrorSummary,\n FileInputDroppable,\n Footer,\n Gallery,\n GlobalHeader,\n Header,\n Picture,\n Sidebar,\n SkipLink,\n Tabs,\n TextInputPassword,\n TextAreaItemisedRows,\n checkTableForScroll,\n updateTimeElement,\n};\n"],"names":["root","factory","exports","module","define","amd","self","CookieEventHandler","events","oneTimeEvents","constructor","window","TNAFrontendCookieEvents","this","clearAll","on","event","callback","once","trigger","data","Object","hasOwn","forEach","eventToTrigger","call","eachEvent","Cookies","defaultDomain","defaultPath","secure","preferencesKey","defaultAge","preferencesCorrectOnInit","tnaCookiePreferences","options","preferencesSetKey","noInit","docDataset","document","documentElement","dataset","tnaCookiesDomain","location","hostname","tnaCookiesPath","tnaCookiesInsecure","tnaCookiesPreferencesKey","tnaCookiesPreferencesSetKey","parseInt","tnaCookiesDefaultAge","validatePreferences","preferences","preferencesSet","init","existingPreferences","filteredExistingPreferences","fromEntries","keys","filter","preference","includes","map","savePreferences","usage","settings","marketing","essential","length","every","all","deserialised","cookie","split","trim","parts","key","value","decodeURIComponent","JSON","parse","get","error","exists","hasValue","set","maxAge","sameSite","domain","path","session","secureString","sessionString","encodeURIComponent","cookieDetails","deleteAll","delete","details","enablePreference","Error","setPreference","disablePreference","accepted","enableAllPreferences","allPreferences","toLowerCase","disableAllPreferences","stringify","Accordion","$module","$items","querySelectorAll","allowMultipleItemsOpen","singleOpenItem","$item","initItem","initState","$toggleAllButton","querySelector","syncToggleAllButton","removeAttribute","addEventListener","isAllOpen","closeItem","openItem","$heading","$content","classList","add","remove","setAttribute","$headingButton","createElement","id","innerText","appendChild","getAttribute","isopen","closeAllItemsExcept","$tableWrapper","$wrapper","_lib_helpers_mjs__WEBPACK_IMPORTED_MODULE_0__","DJ","$excludeItem","Array","from","closeAllLabel","openAllLabel","Breadcrumbs","$breadcrumbsList","$breadcrumbs","contains","uniqueId","_lib_uuid_mjs__WEBPACK_IMPORTED_MODULE_0__","A","$expandable","style","display","$expandButton","innerHTML","focus","insertBefore","nextSibling","CodeBlock","$code","$copyButton","navigator","clipboard","async","writeText","CookieBanner","$acceptButton","$rejectButton","$prompt","$acceptedMessage","$rejectedMessage","$closeButtons","cookies","_nationalarchives_cookies_src_index_js__WEBPACK_IMPORTED_MODULE_0__","accept","reject","$closeButton","close","showPanel","$panel","DateInputProgressive","$yearWrapper","$yearInput","$monthWrapper","$monthInput","$dayWrapper","$dayInput","update","isValidYear","showMonth","isValidMonth","showDay","hideDay","hideMonth","yearValue","isNaN","monthRawValue","monthIntValue","ErrorSummary","disableAutofocus","setFocus","handleClick","$element","isFocusable","onBlur","onBeforeFocus","$target","target","focusTarget","preventDefault","getFragmentFromUrl","url","pop","HTMLAnchorElement","inputId","href","$input","getElementById","$legendOrLabel","getAssociatedLegendOrLabel","scrollIntoView","preventScroll","$fieldset","closest","$legends","getElementsByTagName","$candidateLegend","HTMLInputElement","type","legendTop","getBoundingClientRect","top","inputRect","height","innerHeight","FileInputDroppable","$body","acceptMutltipleFiles","hasAttribute","$droppableArea","$pseudoSelectFileText","fileText","textContent","$droppableButtons","$pseudoSelectFileButton","$pseudoDropFileButton","$droppableAreaAriaLabel","showDropTarget","hideDropTarget","onChange","isContainingFiles","dataTransfer","hasNoTypesInfo","types","isDraggingFiles","some","updateAriaLabel","classToAdd","items","files","name","Footer","themeCookieName","$themeSelector","$themeSelectorNotice","$themeSelectorEnableSettingsCookiesButton","$tnaTemplate","currentTheme","themeOnLoad","$themeSelectorButtons","$themeSelectorButton","$button","setTheme","selectThemeSelectorButton","showThemeSelector","$currentThemeButton","find","theme","$selectedButton","Gallery","$itemsContainer","$navigation","$navigationItems","$navigationButtons","$navigationButtonPrev","$navigationButtonNext","setup","currentId","showItem","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","index","Header","Picture","$imageWrapper","$transcriptToggle","$transcript","transcriptOpened","openLabel","informationLabelOpen","closeLabel","informationLabelClose","toggleTranscript","Sidebar","substring","item","scrollTopThreshold","disableHighlightSize","breakpoints","tiny","getComputedStyle","getPropertyValue","small","medium","join","hideOnDevice","currentItem","highlightCurrentSection","$topItem","findLast","Math","floor","SkipLink","linkedElementListener","linkedElementId","$linkedElement","focusLinkedElement","removeFocusProperties","Tabs","$tabList","$tabListItemLinks","$tabItems","currentTabIndex","activeTabOnLoad","allowClose","$tabListItemLink","tabPanelID","$tabPanel","handleItemLinkClick","switchTabByIndex","handleItemLinkKeyDown","itemLinkClickEvent","targetItem","currentTarget","switchTabByID","itemLinkKeyDownEvent","previousTab","nextTab","newIndex","switchFocus","disallowClose","toString","$tabItem","targetId","TextInputPassword","$textInputWrapper","$textInputPasswordToggle","updateTogglePasswordButtonText","togglePasswordType","TextAreaItemisedRows","$formFieldInput","$formFieldInputHint","$formFieldBody","enhancedHint","values","$formFieldNewInput","attribute","updateList","appendValue","$formFieldNewInputAddButton","$formFieldNewInputAddButtonInner","$formFieldNewInputAddButtonInnerExtra","$formFieldLiveAria","$formFieldCounter","$valuesList","updateAriaText","parentNode","content","normaliseValue","replace","isValueInList","eachValue","newValue","push","removeValue","existingValue","$itemLabel","$removeItemButton","innerTextItemValue","innerTextValue","$caption","tableScrollInitialised","_uuid_mjs__WEBPACK_IMPORTED_MODULE_0__","scrollWidth","clientWidth","$el","datetime","prettyDatetime","dateStr","isDateTime","test","isDate","date","Date","dayString","toLocaleDateString","weekday","dateString","day","month","year","getHours","getMinutes","timeString","toLocaleTimeString","hour","minute","getSeconds","second","iso8601ToPrettyDatetime","char","crypto","getRandomValues","Uint8Array","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","__webpack_modules__","d","definition","isArray","i","binding","descriptor","enumerable","o","defineProperty","obj","prop","prototype","hasOwnProperty","r","Symbol","toStringTag","scope","$scope","HTMLElement","$html","onFirstTouch","removeEventListener","$tableWrappers","_lib_helpers_mjs__WEBPACK_IMPORTED_MODULE_17__","FH","$accordion","_components_accordion_accordion_mjs__WEBPACK_IMPORTED_MODULE_0__","_components_breadcrumbs_breadcrumbs_mjs__WEBPACK_IMPORTED_MODULE_1__","$codeBlock","_components_code_block_code_block_mjs__WEBPACK_IMPORTED_MODULE_2__","$cookieBanner","_components_cookie_banner_cookie_banner_mjs__WEBPACK_IMPORTED_MODULE_3__","$dateInput","_components_date_input_date_input_mjs__WEBPACK_IMPORTED_MODULE_4__","$errorSummary","_components_error_summary_error_summary_mjs__WEBPACK_IMPORTED_MODULE_5__","$fileInput","_components_file_input_file_input_mjs__WEBPACK_IMPORTED_MODULE_6__","$footer","_components_footer_footer_mjs__WEBPACK_IMPORTED_MODULE_7__","$gallery","_components_gallery_gallery_mjs__WEBPACK_IMPORTED_MODULE_8__","$globalHeader","_components_global_header_global_header_mjs__WEBPACK_IMPORTED_MODULE_9__","$header","_components_header_header_mjs__WEBPACK_IMPORTED_MODULE_10__","$picture","_components_picture_picture_mjs__WEBPACK_IMPORTED_MODULE_11__","$sidebar","_components_sidebar_sidebar_mjs__WEBPACK_IMPORTED_MODULE_12__","$skipLink","_components_skip_link_skip_link_mjs__WEBPACK_IMPORTED_MODULE_13__","$tabModule","_components_tabs_tabs_mjs__WEBPACK_IMPORTED_MODULE_14__","$textAreaWithItemisedRows","_components_textarea_textarea_mjs__WEBPACK_IMPORTED_MODULE_16__","$textInputPassword","_components_text_input_text_input_mjs__WEBPACK_IMPORTED_MODULE_15__","evt","wasClosed"],"sourceRoot":""}
1
+ {"version":3,"file":"all.js","mappings":"sEACA,MAAAA,EAAAC,OAAAC,IAAA,iCAQe,MAAAC,EAEfC,OAAA,GAEAC,cAAA,GAGAL,CAAAA,IAAA,EAMA,WAAAM,GACA,GAAAC,OAAAC,0BAAAR,GAEA,OAAAO,OAAAC,wBAEAD,OAAAC,wBAAAC,IACA,CAKA,QAAAC,GACAD,KAAAL,OAAA,GACAK,KAAAJ,cAAA,EACA,CAOA,EAAAM,CAAAC,EAAAC,GACAJ,KAAAL,OAAAQ,GAAA,IAAAH,KAAAL,OAAAQ,IAAA,GAAAC,EACA,CAOA,IAAAC,CAAAF,EAAAC,GACAJ,KAAAJ,cAAAO,GAAA,IACAH,KAAAJ,cAAAO,IAAA,GACAC,EAEA,CAGA,OAAAE,CAAAH,EAAAI,EAAA,IACAC,OAAAC,OAAAT,KAAAL,OAAAQ,IACAH,KAAAL,OAAAQ,GAAAO,QAAAC,GACAA,EAAAC,KAAAZ,KAAAO,IAGAC,OAAAC,OAAAT,KAAAJ,cAAAO,KACAH,KAAAJ,cAAAO,GAAAO,QAAAG,GACAA,EAAAD,KAAAZ,KAAAO,IAEAP,KAAAJ,cAAAO,GAAA,GAEA,EC9De,MAAAW,EAEfC,cAAA,GAEAC,YAAA,GAEAC,QAAA,EAEAC,eAAA,GAEAvB,OAAA,KAEAwB,WAAA,KAEAC,0BAAA,EAGAC,qBAAA,6CAaA,WAAAxB,CAAAyB,EAAA,IACA,MAAAP,cACAA,EAAAC,YACAA,EAAAC,OACAA,EAAAC,eACAA,EAAAK,kBACAA,EAAAJ,WACAA,EAAAK,OACAA,GAAA,GACMF,EACNG,EAAAC,SAAAC,gBAAAC,QACA5B,KAAAe,cAAAA,GAEAU,EAAAI,kBAAA/B,OAAAgC,SAAAC,SACA/B,KAAAgB,YAAAA,GAEAS,EAAAO,gBAAA,IACAhC,KAAAiB,OAAAA,GAAA,SAAAQ,EAAAQ,mBACAjC,KAAAkB,eAAAA,GAEAO,EAAAS,0BAAA,qBACAlC,KAAAuB,kBAAAA,GAEAE,EAAAU,6BAAA,yBACAnC,KAAAmB,WAAAA,GAEAiB,SAAAX,EAAAY,qBAAA,KAEA,QACArC,KAAAL,OAAA,IAAsBD,EACtBM,KAAAoB,yBAAApB,KAAAsC,oBAAAtC,KAAAuC,aACAvC,KAAAoB,2BACApB,KAAAwC,gBAAA,EACAhB,GACAxB,KAAAyC,OAGA,CAGA,IAAAA,GACA,MAAAC,EAAA1C,KAAAuC,YACAI,EAAAnC,OAAAoC,YACApC,OAAAqC,KAAAH,GACAI,OAAAC,GAAA/C,KAAAqB,qBAAA2B,SAAAD,IACAE,IAAAF,GAAA,CAAAA,EAAAL,EAAAK,MAEA/C,KAAAkD,gBAAA,CACAC,OAAA,EACAC,UAAA,EACAC,WAAA,KACAV,EACAW,WAAA,GAEA,CAEA,mBAAAhB,CAAAC,GACA,OACA/B,OAAAqC,KAAAN,GAAAgB,SAAAvD,KAAAqB,qBAAAkC,QACAvD,KAAAqB,qBAAAmC,MACAT,GACAvC,OAAAqC,KAAAN,GAAAS,SAAAD,IACA,kBAAAR,EAAAQ,GAGA,CAIA,OAAAU,GACA,MAAAC,EAAA,GAUA,OATAhC,SAAAiC,OACAC,MAAA,MACAd,OAAAa,GAAA,KAAAA,EAAAE,QACAf,OAAAa,GAAAA,EAAAX,SAAA,MACAtC,QAAAiD,IACA,MAAAG,EAAAH,EAAAE,OAAAD,MAAA,MACAG,EAAAC,EAAA,IAAAF,EACAJ,EAAAK,GAAAE,mBAAAD,KAEAN,CACA,CAGA,eAAAnB,GACA,IACA,OAAA2B,KAAAC,MAAAnE,KAAAoE,IAAApE,KAAAkB,iBAAA,KAEA,CAAM,MAAAmD,GACN,QACA,CACA,CAOA,MAAAC,CAAAP,GACA,OAAAvD,OAAAC,OAAAT,KAAAyD,IAAAM,EACA,CAQA,QAAAQ,CAAAR,EAAAC,GACA,OAAAhE,KAAAoE,IAAAL,KAAAC,CACA,CAOA,GAAAI,CAAAL,GACA,GAAA/D,KAAAsE,OAAAP,GACA,OAAAE,mBAAAjE,KAAAyD,IAAAM,GAIA,CAeA,GAAAS,CAAAT,EAAAC,EAAA1C,EAAA,IACA,MAAAmD,OACAA,EAAAzE,KAAAmB,WAAAuD,SACAA,EAAA,MAAAC,OACAA,EAAA3E,KAAAe,cAAA6D,KACAA,EAAA5E,KAAAgB,YAAAC,OACAA,EAAAjB,KAAAiB,OAAA4D,QACAA,GAAA,GACMvD,EACN,IAAAyC,EACA,OAEA,MAAAe,EAAA7D,EAAA,WAAqC,GACrC8D,EAAAF,EAAA,gBAAsDJ,IACtDd,EAAA,GAAsBqB,mBAAAjB,MAA2BiB,mBAAAhB,cAAqCW,eAAoBD,WAAkBE,IAAOG,IAAgBD,IACnJpD,SAAAiC,OAAAA,EACA,MAAAsB,EAAA,CACAlB,MACAC,QACAS,SACAG,OACAF,WACAC,SACA1D,SACA4D,UACAlB,UAEA3D,KAAAL,OAAAW,QAAA,YAAA2E,EACA,CAOA,OAAAlB,EAAAa,EAAA,IAAAD,EAAA3E,KAAAe,eACA,MAAAO,EAAA,CAAsBmD,QAAA,EAAAG,OAAAD,UACtB3E,KAAAwE,IAAAT,EAAA,GAAAzC,GACAtB,KAAAL,OAAAW,QAAA,gBAA0CyD,SAAAzC,GAC1C,CAKA,SAAA4D,CAAAN,EAAA,IAAAD,EAAA3E,KAAAe,eACAP,OAAAqC,KAAA7C,KAAAyD,KAAA/C,QAAAiD,IACA3D,KAAAmF,OAAAxB,EAAAiB,EAAAD,KAEA,MAAAS,EAAA,CAAsBR,OAAAD,UACtB3E,KAAAL,OAAAW,QAAA,mBAAA8E,EACA,CAMA,gBAAAC,CAAAtC,GACA,IAAAvC,OAAAC,OAAAT,KAAAuC,YAAAQ,GACA,UAAAuC,MAAA,eAAqCvC,qBAErC/C,KAAAuF,cAAAxC,GAAA,GACA/C,KAAAL,OAAAW,QAAA,mBAAAyC,GACA/C,KAAAL,OAAAW,QAAA,oBAA8CyC,CAAAA,IAAA,GAC9C,CAMA,iBAAAyC,CAAAzC,GACA,IAAAvC,OAAAC,OAAAT,KAAAuC,YAAAQ,GACA,UAAAuC,MAAA,eAAqCvC,qBAErC/C,KAAAuF,cAAAxC,GAAA,GACA/C,KAAAL,OAAAW,QAAA,oBAAAyC,GACA/C,KAAAL,OAAAW,QAAA,oBAA8CyC,CAAAA,IAAA,GAC9C,CAOA,aAAAwC,CAAAxC,EAAA0C,GACA,IAAAjF,OAAAC,OAAAT,KAAAuC,YAAAQ,GACA,UAAAuC,MAAA,eAAqCvC,qBAErC,cAAAA,IAGA/C,KAAAkD,gBAAA,IACAlD,KAAAuC,YACAQ,CAAAA,GAAA0C,EACAnC,WAAA,IAEAtD,KAAAL,OAAAW,QAAA,oBAA8CyC,CAAAA,GAAA0C,IAC9C,CAKA,oBAAAC,GACA,MAAAC,EAAAnF,OAAAoC,YACApC,OAAAqC,KAAA7C,KAAAuC,aAAAU,IAAAc,GAAA,CAAAA,EAAA6B,eAAA,KAEA5F,KAAAkD,gBAAAyC,GACA3F,KAAAwC,gBAAA,EACAxC,KAAAL,OAAAW,QAAA,wBACAN,KAAAL,OAAAW,QAAA,mBAAAqF,EACA,CAKA,qBAAAE,GACA,MAAAF,EAAA,IACAnF,OAAAoC,YACApC,OAAAqC,KAAA7C,KAAAuC,aAAAU,IAAAc,GAAA,CAAAA,EAAA6B,eAAA,KAEAtC,WAAA,GAEAtD,KAAAkD,gBAAAyC,GACA3F,KAAAwC,gBAAA,EACAxC,KAAAL,OAAAW,QAAA,yBACAN,KAAAL,OAAAW,QAAA,mBAAAqF,EACA,CAGA,eAAAzC,CAAAX,GACAvC,KAAAwE,IAAAxE,KAAAkB,eAAAgD,KAAA4B,UAAAvD,GACA,CAMA,kBAAAC,GACA,OAAAxC,KAAAuE,SAAAvE,KAAAuB,kBAAA,OACA,CAMA,kBAAAiB,CAAAwB,IAEA,IAAAA,GACAhE,KAAAsC,oBAAA4B,KAAAC,MAAAnE,KAAAoE,IAAApE,KAAAkB,kBAEAlB,KAAAwE,IAAAxE,KAAAuB,kBAAA,QAEAvB,KAAAmF,OAAAnF,KAAAuB,mBAEAvB,KAAAL,OAAAW,QAAA,iBACA,CAOA,UAAAyC,CAAAA,GACA,GAAAvC,OAAAC,OAAAT,KAAAuC,YAAAQ,GACA,WAAA/C,KAAAuC,YAAAQ,GAEA,UAAAuC,MAAA,eAAmCvC,oBACnC,CAOA,EAAA7C,CAAAC,EAAAC,GACAJ,KAAAL,OAAAO,GAAAC,EAAAC,EACA,CAOA,IAAAC,CAAAF,EAAAC,GACAJ,KAAAL,OAAAU,KAAAF,EAAAC,EACA,E,mDCxWO,MAAM2F,EACX,WAAAlG,CAAYmG,GACVhG,KAAKgG,QAAUA,EACfhG,KAAKiG,OAASD,GAAWA,EAAQE,iBAAiB,wBAC7ClG,KAAKgG,SAAYhG,KAAKiG,SAI3BjG,KAAKmG,uBACqC,SAAxCnG,KAAKgG,QAAQpE,QAAQwE,eAEvBpG,KAAKiG,OAAOvF,QAAS2F,GAAUrG,KAAKsG,SAASD,IAC7CrG,KAAKuG,YAELvG,KAAKwG,iBAAmBxG,KAAKgG,QAAQS,cACnC,8BAEEzG,KAAKwG,mBACPxG,KAAK0G,sBACL1G,KAAKwG,iBAAiBG,gBAAgB,UACtC3G,KAAKwG,iBAAiBI,iBAAiB,QAAS,KAC1C5G,KAAK6G,YACP7G,KAAKiG,OAAOvF,QAAS2F,GAAUrG,KAAK8G,UAAUT,IAE9CrG,KAAKiG,OAAOvF,QAAS2F,GAAUrG,KAAK+G,SAASV,IAE/CrG,KAAK0G,yBAGX,CAEA,QAAAJ,CAASD,GACP,MAAMW,EAAWX,EAAMI,cAAc,2BAC/BQ,EAAWZ,EAAMI,cAAc,wBAErC,IAAKO,IAAaC,EAChB,OAGFZ,EAAMa,UAAUC,IAAI,0BACpBd,EAAMa,UAAUE,OAAO,uBAEvBJ,EAASL,gBAAgB,SAEzBM,EAASC,UAAUC,IAAI,0BACvBF,EAASC,UAAUE,OAAO,uBAC1BH,EAASI,aAAa,SAAU,IAEhC,MAAMC,EAAiB5F,SAAS6F,cAAc,UAC9CD,EAAeJ,UAAUC,IAAI,0BAC7BG,EAAeD,aAAa,OAAQ,UACpCC,EAAeD,aAAa,gBAAiBJ,EAASO,IACtDF,EAAeG,UAAYT,EAASS,UACpCT,EAASS,UAAY,GACrBT,EAASU,YAAYJ,GAErBA,EAAeV,iBAAiB,QAAS,KACyB,SAAjDU,EAAeK,aAAa,iBAEzC3H,KAAK8G,UAAUT,GAEfrG,KAAK+G,SAASV,IAGpB,CAEA,SAAAE,GACEvG,KAAKiG,OAAOvF,QAAS2F,IACU,SAAzBA,EAAMzE,QAAQgG,OAChB5H,KAAK+G,SAASV,GAEdrG,KAAK8G,UAAUT,GAEjBA,EAAMM,gBAAgB,gBAE1B,CAEA,QAAAI,CAASV,GACFrG,KAAKmG,wBACRnG,KAAK6H,oBAAoBxB,GAE3B,MAAMiB,EAAiBjB,EAAMI,cAAc,2BACrCQ,EAAWZ,EAAMI,cAAc,2BACrCa,EAAeD,aAAa,gBAAiB,QAC7CC,EAAeD,aACb,aACA,GAAGC,EAAeG,UAAU5D,6BAE9BoD,EAASN,gBAAgB,UAEzB3G,KAAK0G,sBAEL,MAAMoB,EAAgBb,EAASf,iBAAiB,sBAC5C4B,GACFA,EAAcpH,QAASqH,KACrB,EAAAC,EAAAC,IAAoBF,IAG1B,CAEA,SAAAjB,CAAUT,GACR,MAAMiB,EAAiBjB,EAAMI,cAAc,2BACrCQ,EAAWZ,EAAMI,cAAc,2BACrCa,EAAeD,aAAa,gBAAiB,SAC7CC,EAAeD,aACb,aACA,GAAGC,EAAeG,UAAU5D,6BAE9BoD,EAASI,aAAa,SAAU,IAEhCrH,KAAK0G,qBACP,CAEA,mBAAAmB,CAAoBK,GAClBC,MAAMC,KAAKpI,KAAKiG,QACbnD,OACEuD,GACCA,EAAMI,cAAc,6BAA+ByB,GAGd,SAFrC7B,EACGI,cAAc,2BACdkB,aAAa,kBAEnBjH,QAAS2F,GAAUrG,KAAK8G,UAAUT,GACvC,CAEA,SAAAQ,GACE,OAAOsB,MAAMC,KAAKpI,KAAKiG,QAAQzC,MAC5B6C,GAGsC,SAFrCA,EACGI,cAAc,2BACdkB,aAAa,iBAEtB,CAEA,mBAAAjB,GACM1G,KAAKwG,mBACHxG,KAAK6G,YACP7G,KAAKwG,iBAAiBiB,UACpBzH,KAAKwG,iBAAiB5E,QAAQyG,eAAiB,oBAEjDrI,KAAKwG,iBAAiBiB,UACpBzH,KAAKwG,iBAAiB5E,QAAQ0G,cAAgB,oBAGtD,E,qDChJK,MAAMC,EACX,WAAA1I,CAAYmG,GACVhG,KAAKgG,QAAUA,EACfhG,KAAKwI,iBACHxC,GAAWA,EAAQS,cAAc,0BACnCzG,KAAKyI,aACHzC,GACAhG,KAAKwI,kBACLxC,EAAQE,iBAAiB,0BAEtBlG,KAAKgG,SAAYhG,KAAKwI,kBAAqBxI,KAAKyI,cAMnDzI,KAAKyI,aAAalF,OAAS,IAC1BvD,KAAKgG,QAAQkB,UAAUwB,SAAS,iCAEjC1I,KAAKyC,MAET,CAEA,IAAAA,GACE,MAAMkG,EAAW,oBAAmB,EAAAC,EAAAC,OAC9BC,EAAcpH,SAAS6F,cAAc,MAC3CuB,EAAY5B,UAAUC,IACpB,wBACA,qCAEF2B,EAAYC,MAAMC,QAAU,OAE5B,MAAMC,EAAgBvH,SAAS6F,cAAc,UAC7C0B,EAAc/B,UAAUC,IAAI,yBAC5B8B,EAAcC,UACZ,yEACFD,EAAc5B,aAAa,OAAQ,UACnC4B,EAAc5B,aAAa,gBAAiB,SAC5C4B,EAAc5B,aAAa,gBAAiBsB,GAC5CM,EAAcrC,iBAAiB,QAAS,KACtC5G,KAAKgG,QAAQkB,UAAUE,OAAO,8BAC9B0B,EAAY1B,SACZpH,KAAKgG,QAAQqB,aAAa,WAAY,KACtCrH,KAAKgG,QAAQmD,QACbnJ,KAAKgG,QAAQY,iBACX,OACA,KACE5G,KAAKgG,QAAQW,gBAAgB,aAE/B,CAAEtG,MAAM,MAGZyI,EAAYpB,YAAYuB,GAExBjJ,KAAKwI,iBAAiBnB,aAAa,KAAMsB,GACzC3I,KAAKwI,iBAAiBY,aACpBN,EAEA9I,KAAKyI,aAAazI,KAAKyI,aAAalF,OAAS,GAAG8F,aAGlDrJ,KAAKgG,QAAQkB,UAAUC,IAAI,6BAC7B,E,sCChEK,MAAMmC,EACX,WAAAzJ,CAAYmG,GACVhG,KAAKgG,QAAUA,EACfhG,KAAKuJ,MAAQvJ,KAAKgG,QAAQS,cAAc,YACxCzG,KAAKwJ,YAAcxJ,KAAKgG,QAAQS,cAAc,yBAG3CzG,KAAKgG,SACLhG,KAAKuJ,OACLvJ,KAAKwJ,aACLC,UAAUC,YAKb1J,KAAKwJ,YAAY7C,gBAAgB,UACjC3G,KAAKgG,QAAQkB,UAAUC,IAAI,4BAE3BnH,KAAKwJ,YAAY5C,iBAAiB,QAAS+C,UACzC,UACQF,UAAUC,UAAUE,UAAU5J,KAAKuJ,MAAM9B,WAC/CzH,KAAKwJ,YAAY/B,UAAY,aAC/B,CAAE,MACA,IAIJzH,KAAKwJ,YAAY5C,iBAAiB,OAAQ,KACxC5G,KAAKwJ,YAAY/B,UAAY,cAEjC,E,qDC1BK,MAAMoC,EACX,WAAAhK,CAAYmG,GACVhG,KAAKgG,QAAUA,EACfhG,KAAK8J,cAAgB9D,GAAWA,EAAQS,cAAc,oBACtDzG,KAAK+J,cAAgB/D,GAAWA,EAAQS,cAAc,oBACtDzG,KAAKgK,QACHhE,GAAWA,EAAQS,cAAc,uCACnCzG,KAAKiK,iBACHjE,GAAWA,EAAQS,cAAc,yCACnCzG,KAAKkK,iBACHlE,GAAWA,EAAQS,cAAc,yCACnCzG,KAAKmK,cAAgBnE,GAAWA,EAAQE,iBAAiB,mBAGtDlG,KAAKgG,SACLhG,KAAK8J,eACL9J,KAAK+J,eACL/J,KAAKgK,SACLhK,KAAKiK,kBACLjK,KAAKkK,kBACLlK,KAAKmK,gBAKRnK,KAAKoK,QAAU,IAAIC,EAAAxB,EAEd7I,KAAKoK,QAAQ5H,iBAChBxC,KAAKgG,QAAQW,gBAAgB,UAE7B3G,KAAK8J,cAAclD,iBAAiB,QAAS,IAAM5G,KAAKsK,UACxDtK,KAAK+J,cAAcnD,iBAAiB,QAAS,IAAM5G,KAAKuK,UAExDvK,KAAKmK,cAAczJ,QAAS8J,IAC1BA,EAAa5D,iBAAiB,QAAS,IAAM5G,KAAKyK,YAGxD,CAEA,MAAAH,GACEtK,KAAKoK,QAAQ1E,uBACb1F,KAAK0K,UAAU1K,KAAKiK,iBACtB,CAEA,MAAAM,GACEvK,KAAKoK,QAAQvE,wBACb7F,KAAK0K,UAAU1K,KAAKkK,iBACtB,CAEA,SAAAQ,CAAUC,GACR3K,KAAKgK,QAAQ3C,aAAa,SAAU,IACpCsD,EAAOhE,gBAAgB,UACvBgE,EAAOtD,aAAa,WAAY,KAChCsD,EAAOxB,QACPwB,EAAO/D,iBAAiB,OAAQ,KAC9B+D,EAAOhE,gBAAgB,aAE3B,CAEA,KAAA8D,GACEzK,KAAKgG,QAAQqB,aAAa,SAAU,GACtC,E,iDCjEK,MAAMuD,EACX,WAAA/K,CAAYmG,GACVhG,KAAKgG,QAAUA,EACfhG,KAAK6K,aACH7E,GAAWA,EAAQS,cAAc,+BACnCzG,KAAK8K,WACH9K,KAAK6K,cAAgB7K,KAAK6K,aAAapE,cAAc,SACvDzG,KAAK+K,cACH/E,GAAWA,EAAQS,cAAc,gCACnCzG,KAAKgL,YACHhL,KAAK+K,eAAiB/K,KAAK+K,cAActE,cAAc,SACzDzG,KAAKiL,YACHjF,GAAWA,EAAQS,cAAc,8BACnCzG,KAAKkL,UACHlL,KAAKiL,aAAejL,KAAKiL,YAAYxE,cAAc,SAEhDzG,KAAKgG,UAIVhG,KAAKmL,SACLrL,OAAO8G,iBAAiB,WAAY,IAAM5G,KAAKmL,UAE3CnL,KAAK8K,aACP9K,KAAK8K,WAAWlE,iBAAiB,QAAS,IAAM5G,KAAKmL,UACrDnL,KAAK8K,WAAWlE,iBAAiB,SAAU,IAAM5G,KAAKmL,WAEpDnL,KAAKgL,cACPhL,KAAKgL,YAAYpE,iBAAiB,QAAS,IAAM5G,KAAKmL,UACtDnL,KAAKgL,YAAYpE,iBAAiB,SAAU,IAAM5G,KAAKmL,WAErDnL,KAAKkL,YACPlL,KAAKkL,UAAUtE,iBAAiB,QAAS,IAAM5G,KAAKmL,UACpDnL,KAAKkL,UAAUtE,iBAAiB,SAAU,IAAM5G,KAAKmL,WAEzD,CAEA,MAAAA,GACMnL,KAAKoL,eACPpL,KAAKqL,YACDrL,KAAKsL,eACPtL,KAAKuL,UAELvL,KAAKwL,YAGPxL,KAAKyL,YACLzL,KAAKwL,UAET,CAEA,WAAAJ,GACE,IAAKpL,KAAK8K,WACR,OAAO,EAET,MAAMY,EAAYtJ,SAASpC,KAAK8K,WAAW9G,MAAMH,OAAQ,IAEzD,OAAQ8H,MAAM3L,KAAK8K,WAAW9G,SAAW2H,MAAMD,IAAcA,EAAY,CAC3E,CAEA,YAAAJ,GACE,IAAKtL,KAAKgL,YACR,OAAO,EAET,MAAMY,EAAgB5L,KAAKgL,YAAYhH,MAAMH,OACvCgI,EAAgBzJ,SAASwJ,EAAe,IA0B9C,OACID,MAAM3L,KAAKgL,YAAYhH,SACtB2H,MAAME,IAEPA,EAAgB,GAEhBA,GAAiB,IA/BK,CACxB,UACA,WACA,QACA,QACA,MACA,OACA,OACA,SACA,YACA,UACA,WACA,WACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,OASkB7I,SAAS4I,EAAchG,cAE7C,CAEA,SAAAyF,GACMrL,KAAK+K,eACP/K,KAAK+K,cAAcpE,gBAAgB,SAEvC,CAEA,SAAA8E,GACMzL,KAAK+K,eACP/K,KAAK+K,cAAc1D,aAAa,SAAU,GAE9C,CAEA,OAAAkE,GACMvL,KAAKiL,aACPjL,KAAKiL,YAAYtE,gBAAgB,SAErC,CAEA,OAAA6E,GACMxL,KAAKiL,aACPjL,KAAKiL,YAAY5D,aAAa,SAAU,GAE5C,E,yCC5HK,MAAMyE,EACX,WAAAjM,CAAYmG,GACVhG,KAAKgG,QAAUA,CACjB,CAEA,IAAAvD,GACOzC,KAAKgG,UAKkC,SAA1ChG,KAAKgG,QAAQpE,QAAQmK,kBAGrB/L,KAAKgM,SAAShM,KAAKgG,SAGrBhG,KAAKgG,QAAQY,iBAAiB,QAAUzG,GAAUH,KAAKiM,YAAY9L,IACrE,CAGA,QAAA6L,CAASE,EAAU5K,EAAU,CAAC,GAC5B,MAAM6K,EAAcD,EAASvE,aAAa,YAS1C,SAASyE,IACP9K,EAAQ8K,QAAQxL,KAAKsL,GAEhBC,GACHD,EAASvF,gBAAgB,WAE7B,CAbKwF,GACHD,EAAS7E,aAAa,WAAY,MAsBpC6E,EAAStF,iBAAiB,QAL1B,WACEsF,EAAStF,iBAAiB,OAAQwF,EAAQ,CAAE/L,MAAM,GACpD,EAG4C,CAAEA,MAAM,IAGpDiB,EAAQ+K,eAAezL,KAAKsL,GAC5BA,EAAS/C,OACX,CAEA,WAAA8C,CAAY9L,GACV,MAAMmM,EAAUnM,EAAMoM,OAClBD,GAAWtM,KAAKwM,YAAYF,IAC9BnM,EAAMsM,gBAEV,CAGA,kBAAAC,CAAmBC,GACjB,OAAKA,EAAI3J,SAAS,KAIX2J,EAAI/I,MAAM,KAAKgJ,MAHb,IAIX,CAEA,WAAAJ,CAAYF,GAEV,KAAMA,aAAmBO,mBACvB,OAAO,EAGT,MAAMC,EAAU9M,KAAK0M,mBAAmBJ,EAAQS,MAChD,IAAKD,EACH,OAAO,EAGT,MAAME,EAAStL,SAASuL,eAAeH,GACvC,IAAKE,EACH,OAAO,EAGT,MAAME,EAAiBlN,KAAKmN,2BAA2BH,GACvD,QAAKE,IAOLA,EAAeE,iBACfJ,EAAO7D,MAAM,CAAEkE,eAAe,KAEvB,EACT,CAmBA,0BAAAF,CAA2BH,GACzB,MAAMM,EAAYN,EAAOO,QAAQ,YAEjC,GAAID,EAAW,CACb,MAAME,EAAWF,EAAUG,qBAAqB,UAEhD,GAAID,EAASjK,OAAQ,CACnB,MAAOmK,GAAoBF,EAI3B,GACER,aAAkBW,mBACD,aAAhBX,EAAOY,MAAuC,UAAhBZ,EAAOY,MAEtC,OAAOF,EAST,MAAMG,EAAYH,EAAiBI,wBAAwBC,IACrDC,EAAYhB,EAAOc,wBAIzB,GAAIE,EAAUC,QAAUnO,OAAOoO,aACTF,EAAUD,IAAMC,EAAUC,OAG5BJ,EAAY/N,OAAOoO,YAAc,EACjD,OAAOR,CAGb,CACF,CAEA,OACEhM,SAAS+E,cAAc,cAAcuG,EAAOrF,aAAa,YACzDqF,EAAOO,QAAQ,QAEnB,E,8CCjKK,MAAMY,EACX,WAAAtO,CAAYmG,GACVhG,KAAKgG,QAAUA,EACfhG,KAAKoO,MAAQpI,GAAWA,EAAQS,cAAc,wBAC9CzG,KAAKgN,OAAShN,KAAKoO,OAASpO,KAAKoO,MAAM3H,cAAc,mBAEhDzG,KAAKgG,SAAYhG,KAAKoO,OAAUpO,KAAKgN,SAI1ChN,KAAKqO,qBAAuBrO,KAAKgN,OAAOsB,aAAa,YAErDtO,KAAKyC,OACP,CAEA,IAAAA,GACEzC,KAAKuO,eAAiB7M,SAAS6F,cAAc,OAC7CvH,KAAKuO,eAAerH,UAAUC,IAC5B,4BACA,oCAEFnH,KAAKoO,MAAMhF,aAAapJ,KAAKuO,eAAgBvO,KAAKgN,QAClDhN,KAAKuO,eAAe7G,YAAY1H,KAAKgN,QACrChN,KAAKwO,sBAAwB9M,SAAS6F,cAAc,QACpDvH,KAAKwO,sBAAsBnH,aAAa,YAAa,UACrDrH,KAAKwO,sBAAsBtH,UAAUC,IACnC,oCAEF,MAAMsH,EAAWzO,KAAKqO,qBAAuB,QAAU,OACvDrO,KAAKwO,sBAAsBE,YAAc,MAAMD,aAC/CzO,KAAKuO,eAAe7G,YAAY1H,KAAKwO,uBACrC,MAAMG,EAAoBjN,SAAS6F,cAAc,OACjDoH,EAAkBzH,UAAUC,IAC1B,mBACA,0BACA,sBACA,qCAEFnH,KAAKuO,eAAe7G,YAAYiH,GAChC,MAAMC,EAA0BlN,SAAS6F,cAAc,QACvDqH,EAAwB1H,UAAUC,IAAI,cACtCyH,EAAwBF,YAAc,UAAUD,IAChDE,EAAkBjH,YAAYkH,GAC9B,MAAMC,EAAwBnN,SAAS6F,cAAc,QACrDsH,EAAsBH,YAAc,WAAWD,IAC/CE,EAAkBjH,YAAYmH,GAC9B7O,KAAK8O,wBAA0BpN,SAAS6F,cAAc,QACtDvH,KAAK8O,wBAAwB5H,UAAUC,IAAI,uBAC3CnH,KAAK8O,wBAAwBzH,aAAa,YAAa,aACvDrH,KAAKuO,eAAe7G,YAAY1H,KAAK8O,yBAErC9O,KAAKgN,OAAOpG,iBAAiB,YAAczG,GACzCH,KAAK+O,eAAe5O,IAEtBH,KAAKgN,OAAOpG,iBAAiB,YAAa,IAAM5G,KAAKgP,kBACrDhP,KAAKgN,OAAOpG,iBAAiB,UAAW,IAAM5G,KAAKgP,kBACnDhP,KAAKgN,OAAOpG,iBAAiB,SAAU,IAAM5G,KAAKiP,YAClDjP,KAAKgN,OAAOpG,iBAAiB,OAAQ,IAAM5G,KAAKiP,WAClD,CAGA,iBAAAC,CAAkBC,GAChB,MAAMC,GAAkBD,EAAaE,MAAM9L,OACrC+L,EAAkBH,EAAaE,MAAME,KAAM3B,GAAkB,UAATA,GAC1D,OAAOwB,GAAkBE,CAC3B,CAEA,cAAAP,CAAe5O,EAAOqP,GAAkB,GACtC,GAAIrP,EAAMgP,cAAgBnP,KAAKkP,kBAAkB/O,EAAMgP,cAAe,CACpE,IAAIM,EAAa,kCACbtP,EAAMgP,aAAaO,MAAMnM,SAC3BkM,EAAa,4CAEfzP,KAAKuO,eAAerH,UAAUC,IAAIsI,GAE9BD,IACFxP,KAAK8O,wBAAwBJ,YAAc,oBAE/C,CACF,CAEA,cAAAM,CAAeQ,GAAkB,GAC/BxP,KAAKuO,eAAerH,UAAUE,OAC5B,kCACA,4CAEEoI,IACFxP,KAAK8O,wBAAwBJ,YAAc,iBAE/C,CAEA,QAAAO,GACE,MAAMU,MAAEA,GAAU3P,KAAKgN,OACvB,GAAIhN,KAAKqO,qBACP,GAAIsB,EAAMpM,OAAQ,CAChB,IAAIkL,EAAW,OAEXkB,EAAMpM,OAAS,IACjBkL,GAAY,KAEd,MAAMC,EAAc,GAAGiB,EAAMpM,UAAUkL,aACvCzO,KAAKwO,sBAAsBE,YAAcA,CAC3C,MACE1O,KAAKwO,sBAAsBE,YAAc,yBAG3C1O,KAAKwO,sBAAsBE,YAEzBiB,EAAM,IAAIC,MAAQ,mBAElBD,EAAMpM,OACRvD,KAAKuO,eAAerH,UAAUE,OAAO,oCAErCpH,KAAKuO,eAAerH,UAAUC,IAAI,oCAEpCnH,KAAKgP,gBAAe,EACtB,E,gDClHK,MAAMa,EACX,WAAAhQ,CAAYmG,EAAS8J,EAAkB,SACrC9P,KAAKgG,QAAUA,EACfhG,KAAK+P,eACH/J,GAAWA,EAAQS,cAAc,+BACnCzG,KAAKgQ,qBACHhK,GAAWA,EAAQS,cAAc,sCACnCzG,KAAKiQ,0CACHjQ,KAAKgQ,sBACLhQ,KAAKgQ,qBAAqBvJ,cACxB,uDAEJzG,KAAKkQ,aAAexO,SAAS+E,cAAc,iBAGxCzG,KAAKgG,SACLhG,KAAK+P,gBACL/P,KAAKgQ,sBACLhQ,KAAKiQ,2CACLjQ,KAAKkQ,eAKRlQ,KAAK8P,gBAAkBA,EAEvB9P,KAAKyC,OACP,CAEA,IAAAA,GACEzC,KAAKmQ,aAAenQ,KAAK+P,eAAenO,QAAQwO,YAEhDpQ,KAAKoK,QAAU,IAAIC,EAAAxB,EAEnB7I,KAAKqQ,sBAAwBrQ,KAAK+P,eAAe7J,iBAC/C,mDAGFiC,MAAMC,KAAKpI,KAAKqQ,uBAAuB3P,QAAS4P,IAC9CA,EAAqB1J,iBAAiB,QAAUzG,IAC9C,MAAMoQ,EAAUpQ,EAAMoM,OACtBvM,KAAKwQ,SAASD,EAAQvM,OACtBhE,KAAKyQ,0BAA0BF,OAInCvQ,KAAKiQ,0CAA0CrJ,iBAC7C,QACA,KACE5G,KAAKoK,QAAQ/E,iBAAiB,cAIlCrF,KAAK0Q,oBACL1Q,KAAKoK,QAAQlK,GAAG,mBAAqBK,IAC/BC,OAAOC,OAAOF,EAAM,eACA,IAAlBA,EAAK6C,UACPpD,KAAKoK,QAAQ5F,IAAIxE,KAAK8P,gBAAiB9P,KAAKmQ,cAC5CnQ,KAAKgQ,qBAAqB3I,aAAa,SAAU,MAEjDrH,KAAKoK,QAAQjF,OAAOnF,KAAK8P,iBACzB9P,KAAKgQ,qBAAqBrJ,gBAAgB,aAIlD,CAEA,iBAAA+J,GAEE,GADA1Q,KAAK+P,eAAepJ,gBAAgB,UAChC3G,KAAKoK,QAAQ9F,OAAOtE,KAAK8P,iBAAkB,CAC7C,MAAMa,EAAsBxI,MAAMC,KAAKpI,KAAKqQ,uBAAuBO,KAChEL,GAAYA,EAAQvM,QAAUhE,KAAKoK,QAAQhG,IAAIpE,KAAK8P,kBAEnDa,GACF3Q,KAAKyQ,0BAA0BE,EAEnC,CACK3Q,KAAKoK,QAAQrH,WAAW,aAC3B/C,KAAKgQ,qBAAqBrJ,gBAAgB,SAE9C,CAEA,QAAA6J,CAASK,GACP,GAAc,UAAVA,EACF7Q,KAAKkQ,aAAahJ,UAAUE,OAC1B,6BACA,iCAEG,GAAc,SAAVyJ,EACT7Q,KAAKkQ,aAAahJ,UAAUE,OAAO,8BACnCpH,KAAKkQ,aAAahJ,UAAUC,IAAI,gCAC3B,IAAc,WAAV0J,EAIT,OAHA7Q,KAAKkQ,aAAahJ,UAAUE,OAAO,4BACnCpH,KAAKkQ,aAAahJ,UAAUC,IAAI,6BAGlC,CACAnH,KAAKmQ,aAAeU,EAChB7Q,KAAKoK,QAAQrH,WAAW,YAC1B/C,KAAKoK,QAAQ5F,IAAIxE,KAAK8P,gBAAiB9P,KAAKmQ,cAE5CnQ,KAAKgQ,qBAAqBrJ,gBAAgB,SAE9C,CAEA,yBAAA8J,CAA0BK,GACxB3I,MAAMC,KAAKpI,KAAKqQ,uBAAuB3P,QAAS6P,IAC1CA,EAAQvM,QAAU8M,EAAgB9M,OACpCuM,EAAQrJ,UAAUE,OAAO,qBACzBmJ,EAAQlJ,aAAa,gBAAgB,KAErCkJ,EAAQrJ,UAAUC,IAAI,qBACtBoJ,EAAQ5J,gBAAgB,kBAG9B,E,oCCrHK,MAAMoK,EACX,WAAAlR,CAAYmG,GACVhG,KAAKgG,QAAUA,EACfhG,KAAKgR,gBACHhL,GAAWA,EAAQS,cAAc,uBACnCzG,KAAKiG,OACHjG,KAAKgR,iBACLhR,KAAKgR,gBAAgB9K,iBAAiB,sBACxClG,KAAKiR,YACHjL,GAAWA,EAAQS,cAAc,4BACnCzG,KAAKkR,iBACHlR,KAAKiR,aACLjL,EAAQE,iBAAiB,iCAC3BlG,KAAKmR,mBACHnL,GAAWA,EAAQS,cAAc,oCAGhCzG,KAAKgG,SACLhG,KAAKgR,iBACLhR,KAAKiG,UAENjG,KAAKiG,OAAO1C,OAAS,IACpBvD,KAAKiR,aACLjR,KAAKkR,kBACLlR,KAAKmR,qBAKRnR,KAAKgG,QAAQkB,UAAUC,IAAI,4BAE3BnH,KAAKoR,sBAAwBpR,KAAKmR,mBAAmB1K,cACnD,iCAEFzG,KAAKqR,sBAAwBrR,KAAKmR,mBAAmB1K,cACnD,iCAGFzG,KAAKsR,QAELtR,KAAKuR,UAAYvR,KAAKiG,OAAO,GAAGuB,GAChCxH,KAAKwR,SAASxR,KAAKuR,WACrB,CAEA,KAAAD,GACEtR,KAAKiG,OAAOvF,QAAS2F,IACnBA,EAAMgB,aAAa,SAAU,IAC7BhB,EAAMgB,aAAa,cAAe,QAClChB,EACGI,cAAc,8BACbY,aAAa,cAAe,UAElCrH,KAAKiR,YAAYtK,gBAAgB,UACjC3G,KAAKkR,iBAAiBxQ,QAAS2F,IAC7BA,EAAMO,iBAAiB,QAAS,KAC9B5G,KAAKwR,SAASnL,EAAMsB,aAAa,kBACjC3H,KAAKgR,gBAAgB3J,aAAa,WAAY,KAC9CrH,KAAKgR,gBAAgB7H,YAGzBnJ,KAAKgG,QAAQY,iBAAiB,UAAYzG,IACxC,IAAIsR,GAA0B,EAC9B,OAAQtR,EAAM4D,KACZ,IAAK,YACL,IAAK,UACH/D,KAAK0R,mBACLD,GAA0B,EAC1B,MACF,IAAK,aACL,IAAK,YACHzR,KAAK2R,eACLF,GAA0B,EAC1B,MACF,IAAK,OACHzR,KAAK4R,gBACLH,GAA0B,EAC1B,MACF,IAAK,MACHzR,KAAK6R,eACLJ,GAA0B,EAK1BA,IACFtR,EAAM2R,kBACN3R,EAAMsM,oBAIVzM,KAAKmR,oBAAoBxK,gBAAgB,UACzC3G,KAAKoR,uBAAuBxK,iBAAiB,QAAS,KACpD5G,KAAK0R,qBAEP1R,KAAKqR,uBAAuBzK,iBAAiB,QAAS,KACpD5G,KAAK2R,iBAGP3R,KAAK+R,YAAcrQ,SAAS6F,cAAc,OAC1CvH,KAAK+R,YAAY1K,aAAa,YAAa,UAC3CrH,KAAK+R,YAAY1K,aAAa,cAAe,QAC7CrH,KAAK+R,YAAY1K,aAAa,QAAS,4BACvCrH,KAAKgR,gBAAgBgB,QAAQhS,KAAK+R,aAClC/R,KAAKgR,gBAAgB9J,UAAUC,IAAI,wCACnCnH,KAAKgR,gBAAgBpK,iBAAiB,OAAQ,IAC5C5G,KAAKgR,gBAAgBrK,gBAAgB,YAEzC,CAEA,QAAA6K,CAAShK,GACPxH,KAAKiG,OAAOvF,QAAS2F,IACfmB,GAAMnB,EAAMmB,KAAOA,GACrBnB,EAAMM,gBAAgB,UACtBN,EAAMM,gBAAgB,iBAEtBN,EAAMgB,aAAa,SAAU,IAC7BhB,EAAMgB,aAAa,cAAe,WAGtCrH,KAAKkR,iBAAiBxQ,QAAS2F,IACzBmB,GACEnB,EAAMsB,aAAa,mBAAqBH,EAC1CnB,EAAMgB,aAAa,eAAgB,QAKrChB,EAAMgB,aAAa,eAAgB,WAGvCrH,KAAKuR,UAAY/J,EAEjBxH,KAAK+R,YAAYrD,YAAc,SAAS1O,KAAKiS,sBAAwB,QAAQjS,KAAKiG,OAAO1C,QAC3F,CAEA,mBAAA0O,GACE,OAAO9J,MAAMC,KAAKpI,KAAKiG,QAAQiM,UAC5B7L,GAAUA,EAAMmB,KAAOxH,KAAKuR,UAEjC,CAEA,gBAAAG,GAEE,IAAIS,EAAkBnS,KAAKiS,sBAAwB,EAE/CE,EAAkB,IAEpBA,EAAkBnS,KAAKiG,OAAO1C,OAAS,GAEzCvD,KAAKwR,SAASxR,KAAKiG,OAAOkM,GAAiB3K,GAC7C,CAEA,YAAAmK,GAEE,IAAIQ,EAAkBnS,KAAKiS,sBAAwB,EAC/CE,GAAmBnS,KAAKiG,OAAO1C,SAEjC4O,EAAkB,GAEpBnS,KAAKwR,SAASxR,KAAKiG,OAAOkM,GAAiB3K,GAC7C,CAEA,aAAAoK,GAEE5R,KAAKwR,SAASxR,KAAKiG,OAAO,GAAGuB,GAC/B,CAEA,YAAAqK,GAEE7R,KAAKwR,SAASxR,KAAKiG,OAAOjG,KAAKiG,OAAO1C,OAAS,GAAGiE,GACpD,E,yCC1KK,MAAM4K,EACX,WAAAvS,CAAYmG,GACVhG,KAAKgG,QAAUA,EACfhG,KAAKqS,cACHrM,GAAWA,EAAQS,cAAc,yCACnCzG,KAAKiR,YACHjL,GACAA,EAAQS,cAAc,0CACxBzG,KAAKsS,eACHtM,GACAA,EAAQS,cAAc,8CACxBzG,KAAKuS,OACHvM,IACEhG,KAAKiR,aACLjR,KAAKiR,YAAY/K,iBAAiB,mBACjClG,KAAKsS,gBACJtS,KAAKsS,eAAepM,iBAAiB,mBAC3ClG,KAAKwS,YAAa,EAClBxS,KAAKyS,IAAM3S,OAAO4S,WAAW,qBAG1B1S,KAAKgG,SACLhG,KAAKqS,gBACJrS,KAAKiR,aAAgBjR,KAAKsS,kBAK9BtS,KAAKqS,cAAc1L,gBAAgB,UACnC3G,KAAK2S,YACL3S,KAAKqS,cAAczL,iBAAiB,QAAS,IAC3C5G,KAAK4S,0BAEH,qBAAsB5S,KAAKyS,IAC7BzS,KAAKyS,IAAI7L,iBAAiB,SAAU,IAAM5G,KAAK2S,aAE/C3S,KAAKyS,IAAII,YAAY,IAAM7S,KAAK2S,aAGlC3S,KAAKgG,QAAQY,iBAAiB,QAAUzG,IACnB,WAAfA,EAAM2S,MAAqB9S,KAAKyS,IAAIM,SAAW/S,KAAKwS,aACtDxS,KAAKwS,YAAa,EAClBxS,KAAK2S,YACL3S,KAAKqS,cAAclJ,WAGzB,CAEA,sBAAAyJ,GACE5S,KAAKwS,YAAcxS,KAAKwS,WACxBxS,KAAK2S,WACP,CAEA,SAAAA,GACM3S,KAAKyS,IAAIM,QACP/S,KAAKwS,WACPxS,KAAKgT,OAELhT,KAAKiT,OAGPjT,KAAKgT,MAET,CAEA,IAAAC,GACMjT,KAAKiR,cACPjR,KAAKiR,YAAYiC,QAAS,EAC1BlT,KAAKiR,YAAY5J,aAAa,cAAe,SAE3CrH,KAAKsS,iBACPtS,KAAKsS,eAAeY,QAAS,EAC7BlT,KAAKsS,eAAejL,aAAa,cAAe,SAElDrH,KAAKqS,cAAchL,aAAa,gBAAiB,SACjDrH,KAAKqS,cAAchL,aAAa,QAAS,aACzCrH,KAAKqS,cAAcnL,UAAUE,OAC3B,gDAGF,IAAK,IAAI+L,EAAQ,EAAGA,EAAQnT,KAAKuS,OAAOhP,OAAQ4P,GAAS,EACvDnT,KAAKuS,OAAOY,GAAO9L,aAAa,WAAY,KAEhD,CAEA,IAAA2L,GACMhT,KAAKiR,cACPjR,KAAKiR,YAAYiC,QAAS,EAC1BlT,KAAKiR,YAAY5J,aAAa,cAAe,UAE3CrH,KAAKsS,iBACPtS,KAAKsS,eAAeY,QAAS,EAC7BlT,KAAKsS,eAAejL,aAAa,cAAe,UAElDrH,KAAKqS,cAAchL,aAAa,gBAAiB,QACjDrH,KAAKqS,cAAchL,aAAa,QAAS,cACzCrH,KAAKqS,cAAcnL,UAAUC,IAC3B,gDAGF,IAAK,IAAIgM,EAAQ,EAAGA,EAAQnT,KAAKuS,OAAOhP,OAAQ4P,GAAS,EACvDnT,KAAKuS,OAAOY,GAAO9L,aAAa,WAAY,IAEhD,E,mCCvGK,MAAM+L,EACX,WAAAvT,CAAYmG,GACVhG,KAAKgG,QAAUA,EACfhG,KAAKqS,cACHrM,GAAWA,EAAQS,cAAc,kCACnCzG,KAAKiR,YACHjL,GAAWA,EAAQS,cAAc,2BACnCzG,KAAKuS,OACHvM,GACAhG,KAAKiR,aACLjR,KAAKiR,YAAY/K,iBAAiB,kBACpClG,KAAKwS,YAAa,EAClBxS,KAAKyS,IAAM3S,OAAO4S,WAAW,qBAExB1S,KAAKgG,SAAYhG,KAAKqS,eAAkBrS,KAAKiR,cAIlDjR,KAAKqS,cAAc1L,gBAAgB,UACnC3G,KAAK2S,YACL3S,KAAKqS,cAAczL,iBAAiB,QAAS,IAC3C5G,KAAK4S,0BAEH,qBAAsB5S,KAAKyS,IAC7BzS,KAAKyS,IAAI7L,iBAAiB,SAAU,IAAM5G,KAAK2S,aAE/C3S,KAAKyS,IAAII,YAAY,IAAM7S,KAAK2S,aAGlC3S,KAAKgG,QAAQY,iBAAiB,QAAUzG,IACnB,WAAfA,EAAM2S,MAAqB9S,KAAKwS,YAAcxS,KAAKyS,IAAIM,UACzD/S,KAAKwS,YAAa,EAClBxS,KAAK2S,YACL3S,KAAKqS,cAAclJ,WAGzB,CAEA,sBAAAyJ,GACE5S,KAAKwS,YAAcxS,KAAKwS,WACxBxS,KAAK2S,WACP,CAEA,SAAAA,GACM3S,KAAKyS,IAAIM,QACP/S,KAAKwS,WACPxS,KAAKgT,OAELhT,KAAKiT,OAGPjT,KAAKgT,MAET,CAEA,IAAAA,GACEhT,KAAKiR,YAAY/J,UAAUC,IAAI,gCAC/BnH,KAAKiR,YAAYtK,gBAAgB,UACjC3G,KAAKiR,YAAY5J,aAAa,cAAe,SAC7CrH,KAAKqS,cAAchL,aAAa,gBAAiB,QACjDrH,KAAKqS,cAAchL,aAAa,QAAS,cACzCrH,KAAKqS,cAAcnL,UAAUC,IAAI,yCAGjC,IAAK,IAAIgM,EAAQ,EAAGA,EAAQnT,KAAKuS,OAAOhP,OAAQ4P,GAAS,EACvDnT,KAAKuS,OAAOY,GAAO9L,aAAa,WAAY,IAEhD,CAEA,IAAA4L,GACEjT,KAAKiR,YAAY/J,UAAUE,OAAO,gCAClCpH,KAAKiR,YAAYiC,QAAS,EAC1BlT,KAAKiR,YAAY5J,aAAa,cAAe,QAC7CrH,KAAKqS,cAAchL,aAAa,gBAAiB,SACjDrH,KAAKqS,cAAchL,aAAa,QAAS,aACzCrH,KAAKqS,cAAcnL,UAAUE,OAC3B,yCAIF,IAAK,IAAI+L,EAAQ,EAAGA,EAAQnT,KAAKuS,OAAOhP,OAAQ4P,GAAS,EACvDnT,KAAKuS,OAAOY,GAAO9L,aAAa,WAAY,KAEhD,E,iDCjFK,MAAMgM,EACX,WAAAxT,CAAYmG,GACVhG,KAAKgG,QAAUA,EACfhG,KAAKsT,cACHtN,GAAWA,EAAQS,cAAc,+BAEnCzG,KAAKuT,kBACHvT,KAAKsT,eACLtT,KAAKsT,cAAc7M,cAAc,mCAEnCzG,KAAKwT,YACHxN,GAAWA,EAAQS,cAAc,4BACnCzG,KAAKyT,kBAAmB,EAGrBzT,KAAKgG,SACLhG,KAAKsT,eACLtT,KAAKuT,mBACLvT,KAAKwT,cAKRxT,KAAK0T,UACH1T,KAAKgG,QAAQpE,QAAQ+R,sBAAwB,kBAC/C3T,KAAK4T,WACH5T,KAAKgG,QAAQpE,QAAQiS,uBAAyB,mBAEhD7T,KAAKyC,OACP,CAEA,IAAAA,GACE,MAAMkG,EAAW,gBAAe,EAAAC,EAAAC,OAEhC7I,KAAKuT,kBAAkB5M,gBAAgB,UACvC3G,KAAKuT,kBAAkBlM,aAAa,gBAAiBsB,GACrD3I,KAAKuT,kBAAkB9L,UAAYzH,KAAK0T,UACxC1T,KAAKuT,kBAAkB3M,iBAAiB,QAAS,IAC/C5G,KAAK8T,oBAGP9T,KAAKwT,YAAYnM,aAAa,KAAMsB,GACpC3I,KAAKwT,YAAYnM,aAAa,SAAU,IAExCrH,KAAKwT,YAAY5M,iBAAiB,UAAYzG,IAErC,WADCA,EAAM4D,MAEV/D,KAAK8T,mBACL9T,KAAKuT,kBAAkBpK,UAM/B,CAEA,gBAAA2K,GACE9T,KAAKyT,kBAAoBzT,KAAKyT,iBAC1BzT,KAAKyT,kBACPzT,KAAKuT,kBAAkBlM,aAAa,iBAAiB,GACrDrH,KAAKuT,kBAAkB9L,UAAYzH,KAAK4T,WACxC5T,KAAKwT,YAAY7M,gBAAgB,YAEjC3G,KAAKuT,kBAAkBlM,aAAa,iBAAiB,GACrDrH,KAAKuT,kBAAkB9L,UAAYzH,KAAK0T,UACxC1T,KAAKwT,YAAYnM,aAAa,SAAU,IAE5C,E,oCCrEK,MAAM0M,EACX,WAAAlU,CAAYmG,EAAS1E,EAAU,CAAC,GAoB9B,GAnBAtB,KAAKgG,QAAUA,EACfhG,KAAK0P,MACH1J,GACAmC,MAAMC,KAAKpC,EAAQE,iBAAiB,uBACjCjD,IAAKoD,IACJ,MAAMmB,EAAKnB,EACRI,cAAc,iCACdkB,aAAa,QAEbqM,UAAU,GAEb,MAAO,CACL3N,QACAmB,KACA+E,OAJa7K,SAASuL,eAAezF,MAOxC1E,OAAQmR,GAASA,EAAK1H,SAEtBvM,KAAKgG,UAAYhG,KAAK0P,MACzB,OAIF,MAAMwE,mBAAEA,EAAqB,EAACC,qBAAEA,EAAuB,SAAY7S,EACnEtB,KAAKkU,mBAAqBA,EAC1BlU,KAAKmU,qBAAuBA,EAE5BnU,KAAKyC,MACP,CAEA,IAAAA,GAgBE,GAfAzC,KAAKoU,YAAc,CACjBC,KACEC,iBAAiB5S,SAASC,iBAAiB4S,iBACzC,4BACG,QACPC,MACEF,iBAAiB5S,SAASC,iBAAiB4S,iBACzC,6BACG,QACPE,OACEH,iBAAiB5S,SAASC,iBAAiB4S,iBACzC,8BACG,UAGLvU,KAAKmU,qBAAsB,CAC7B,IAAK3T,OAAOqC,KAAK7C,KAAKoU,aAAapR,SAAShD,KAAKmU,sBAC/C,MAAM,IAAI7O,MACR,2CAA2CtF,KAAKmU,0CAA0C3T,OAAOqC,KAAK7C,KAAKoU,aAAaM,KAAK,SAGjI1U,KAAK2U,aAAe7U,OAAO4S,WACzB,eAAe1S,KAAKoU,YAAYpU,KAAKmU,yBAEzC,MACEnU,KAAK2U,aAAe,KAGtB3U,KAAK4U,YAAc,KAEnB9U,OAAO8G,iBAAiB,SAAU,IAAM5G,KAAK6U,2BAC7C/U,OAAO8G,iBAAiB,SAAU,IAAM5G,KAAK6U,2BAC7C7U,KAAK6U,yBACP,CAEA,uBAAAA,GACE,GAAI7U,KAAK2U,cAAgB3U,KAAK2U,aAAa5B,QAKzC,OAJA/S,KAAK0P,MAAMhP,QAASuT,IAClBA,EAAK5N,MAAMa,UAAUE,OAAO,qCAE9BpH,KAAK4U,YAAc,MAIrB,MAAME,EAAW9U,KAAK0P,MAAMqF,SACzBd,GACCe,KAAKC,MAAMhB,EAAK1H,OAAOuB,wBAAwBC,MAC/C/N,KAAKkU,oBAGLY,IAAa9U,KAAK4U,aACpB5U,KAAK0P,MAAMhP,QAASuT,IACda,GAAYb,IAASa,GACvB9U,KAAK4U,YAAcX,EACnBjU,KAAK4U,YAAYvO,MAAMa,UAAUC,IAAI,+BAErC8M,EAAK5N,MAAMa,UAAUE,OAAO,gCAIlCpH,KAAK4U,YAAcE,GAAY,IACjC,E,qCC/FK,MAAMI,EACXC,uBAAwB,EAExB,WAAAtV,CAAYmG,GACVhG,KAAKgG,QAAUA,EACfhG,KAAKoV,gBAAkBpP,EAAQ2B,aAAa,SAAS/D,MAAM,KAAKgJ,MAChE5M,KAAKqV,eACHrP,GACAhG,KAAKoV,iBACL1T,SAASuL,eAAejN,KAAKoV,iBAE3BpV,KAAKgG,SAAWhG,KAAKqV,gBACvBrV,KAAKgG,QAAQY,iBAAiB,QAAS,IAAM5G,KAAKsV,qBAEtD,CAEA,kBAAAA,GACOtV,KAAKqV,eAAe1N,aAAa,cACpC3H,KAAKqV,eAAehO,aAAa,WAAY,MAC7CrH,KAAKqV,eAAenO,UAAUC,IAAI,yBAE7BnH,KAAKmV,wBACRnV,KAAKqV,eAAezO,iBAAiB,OAAQ,IAC3C5G,KAAKuV,yBAEPvV,KAAKmV,uBAAwB,IAIjCnV,KAAKqV,eAAelM,OACtB,CAEA,qBAAAoM,GACEvV,KAAKqV,eAAe1O,gBAAgB,YACpC3G,KAAKqV,eAAenO,UAAUE,OAAO,wBACvC,E,gCCnCK,MAAMoO,EACX,WAAA3V,CAAYmG,GACVhG,KAAKgG,QAAUA,EACfhG,KAAKyV,SAAWzP,GAAWA,EAAQS,cAAc,mBACjDzG,KAAK0V,kBACH1P,GACAhG,KAAKyV,UACLzV,KAAKyV,SAASvP,iBAAiB,qBACjClG,KAAK2V,UAAY3P,GAAWA,EAAQE,iBAAiB,mBAGlDlG,KAAKgG,SACLhG,KAAKyV,UACLzV,KAAK0V,mBACL1V,KAAK2V,WACN3V,KAAK0V,kBAAkBnS,SAAWvD,KAAK2V,UAAUpS,SAKnDvD,KAAK4V,gBAAkB5V,KAAKgG,QAAQpE,QAAQiU,gBACxCzT,SAASpC,KAAKgG,QAAQpE,QAAQiU,gBAAiB,IAC/C,EACJ7V,KAAK8V,iBAAmB9V,KAAK4V,gBAC7B5V,KAAK+V,WAAiD,SAApC/V,KAAKgG,QAAQpE,QAAQmU,WACvC/V,KAAKyC,OACP,CAEA,IAAAA,GACEzC,KAAKgG,QAAQkB,UAAUC,IAAI,yBAC3BnH,KAAKyV,SAAS9O,gBAAgB,UAC9B3G,KAAK0V,kBAAkBhV,QAASsV,IAC9B,MAAMC,EAAaD,EAAiBrO,aAAa,iBACjDqO,EAAiB3O,aAAa,iBAAiB,GAC/C,MAAM6O,EAAYxU,SAASuL,eAAegJ,GAC1CC,EAAU7O,aAAa,kBAAmB2O,EAAiBxO,IAC3D0O,EAAU7O,aAAa,OAAQ,YAC/B2O,EAAiBpP,iBACf,QACCzG,GAAUH,KAAKmW,oBAAoBhW,IACpC,KAGJH,KAAKoW,iBAAiBpW,KAAK4V,iBAC3B5V,KAAKgG,QAAQY,iBAAiB,UAAYzG,GACxCH,KAAKqW,sBAAsBlW,GAE/B,CAEA,mBAAAgW,CAAoBG,GAClBA,EAAmB7J,iBACnB,MAAM8J,EACJD,EAAmBE,cAAc7O,aAAa,iBAChD3H,KAAKyW,cAAcF,EACrB,CAEA,qBAAAF,CAAsBK,GACpB,IAAIjF,GAA0B,EAC9B,OAAQiF,EAAqB3S,KAC3B,IAAK,YACL,IAAK,UACH/D,KAAK2W,cACLlF,GAA0B,EAC1B,MACF,IAAK,aACL,IAAK,YACHzR,KAAK4W,UACLnF,GAA0B,EAC1B,MACF,IAAK,OAEHzR,KAAKoW,iBAAiB,GAAG,GAAM,GAC/B3E,GAA0B,EAC1B,MACF,IAAK,MAEHzR,KAAKoW,iBAAiBpW,KAAK0V,kBAAkBnS,OAAS,GAAG,GAAM,GAC/DkO,GAA0B,EAK1BA,IACFiF,EAAqB5E,kBACrB4E,EAAqBjK,iBAEzB,CAEA,OAAAmK,GAEM5W,KAAK8V,iBAAmB9V,KAAK0V,kBAAkBnS,OAAS,EAE1DvD,KAAKoW,iBAAiBpW,KAAK8V,iBAAmB,GAAG,GAGjD9V,KAAKoW,iBAAiB,GAAG,EAE7B,CAEA,WAAAO,GAEM3W,KAAK8V,kBAAoB,EAE3B9V,KAAKoW,iBAAiBpW,KAAK8V,iBAAmB,GAAG,GAGjD9V,KAAKoW,iBAAiBpW,KAAK0V,kBAAkBnS,OAAS,GAAG,EAE7D,CAEA,gBAAA6S,CAAiBS,EAAUC,GAAc,EAAOC,GAAgB,GAC9D/W,KAAK4V,gBAAkBiB,EACvB7W,KAAK8V,iBAAmB9V,KAAK4V,gBAIT,SAFlB5V,KAAK0V,kBAAkB1V,KAAK4V,kBACxBjO,aAAa,iBACdqP,YACuBhX,KAAK+V,aAAegB,IAC9C/W,KAAK4V,iBAAmB,GAE1B5V,KAAK0V,kBAAkBhV,QAAQ,CAACsV,EAAkB7C,KAC5CA,IAAUnT,KAAK4V,iBACjBI,EAAiB3O,aAAa,iBAAiB,GAC/C2O,EAAiB3O,aAAa,WAAY,KACtCyP,GACFd,EAAiB7M,UAGnB6M,EAAiB3O,aAAa,iBAAiB,GAC/C2O,EAAiB3O,aACf,YAC0B,IAA1BrH,KAAK4V,gBAAyB,IAAM,SAI1C5V,KAAK2V,UAAUjV,QAAQ,CAACuW,EAAU9D,KAC5BA,IAAUnT,KAAK4V,iBACjBqB,EAAStQ,gBAAgB,UACzBsQ,EAAS5P,aAAa,WAAY,OAElC4P,EAAS5P,aAAa,SAAU,IAChC4P,EAAS5P,aACP,YAC0B,IAA1BrH,KAAK4V,gBAAyB,IAAM,QAI5C,CAEA,aAAAa,CAAcS,GACZ,MAAM/D,EAAQhL,MAAMC,KAAKpI,KAAK2V,WAAWzD,UACtC+E,GAAaA,EAAStP,aAAa,QAAUuP,GAEhDlX,KAAKoW,iBAAiBjD,EACxB,E,8CC1JK,MAAMgE,EACX,WAAAtX,CAAYmG,GACVhG,KAAKgG,QAAUA,EACfhG,KAAKgN,OAAShH,GAAWA,EAAQS,cAAc,mBAG5CzG,KAAKgG,SACLhG,KAAKgN,QAC+B,aAArChN,KAAKgN,OAAOrF,aAAa,UAK3B3H,KAAKoX,kBAAoB1V,SAAS6F,cAAc,OAChDvH,KAAKoX,kBAAkBlQ,UAAUC,IAAI,0BAErCnH,KAAKqX,yBAA2B3V,SAAS6F,cAAc,UACvDvH,KAAKqX,yBAAyBhQ,aAAa,OAAQ,UACnDrH,KAAKqX,yBAAyBnQ,UAAUC,IACtC,aACA,oBACA,yBAEFnH,KAAKqX,yBAAyBhQ,aAAa,gBAAiBrH,KAAKgN,OAAOxF,IACxExH,KAAKsX,iCAELtX,KAAKoX,kBAAkB1P,YAAY1H,KAAKgN,QACxChN,KAAKoX,kBAAkB1P,YAAY1H,KAAKqX,0BACxCrX,KAAKgG,QAAQ0B,YAAY1H,KAAKoX,mBAE9BpX,KAAKqX,yBAAyBzQ,iBAAiB,QAAS,KACtD5G,KAAKuX,qBACLvX,KAAKgN,OAAO7D,UAEhB,CAEA,kBAAAoO,GAC2C,aAArCvX,KAAKgN,OAAOrF,aAAa,QAC3B3H,KAAKgN,OAAO3F,aAAa,OAAQ,QAEjCrH,KAAKgN,OAAO3F,aAAa,OAAQ,YAEnCrH,KAAKsX,gCACP,CAEA,8BAAAA,GAC2C,aAArCtX,KAAKgN,OAAOrF,aAAa,SAC3B3H,KAAKqX,yBAAyBnO,UAAY,+9BAC1ClJ,KAAKqX,yBAAyBhQ,aAAa,QAAS,iBACpDrH,KAAKqX,yBAAyBhQ,aAAa,aAAc,mBAEzDrH,KAAKqX,yBAAyBnO,UAAY,orCAC1ClJ,KAAKqX,yBAAyBhQ,aAAa,QAAS,iBACpDrH,KAAKqX,yBAAyBhQ,aAAa,aAAc,iBAE7D,E,iDCvDK,MAAMmQ,EACX,WAAA3X,CAAYmG,EAAS1E,EAAU,CAAC,GAS9B,GARAtB,KAAKgG,QAAUA,EACfhG,KAAKyX,gBACHzX,KAAKgG,SAAWhG,KAAKgG,QAAQS,cAAc,iBAC7CzG,KAAK0X,oBACH1X,KAAKgG,SAAWhG,KAAKgG,QAAQS,cAAc,wBAC7CzG,KAAK2X,eACH3X,KAAKgG,SAAWhG,KAAKgG,QAAQS,cAAc,yBAG1CzG,KAAKgG,UACLhG,KAAKyX,kBACLzX,KAAK2X,gBAC0C,OAAhD3X,KAAKyX,gBAAgB9P,aAAa,UAElC,OAGF,MAAMiQ,aAAEA,GAAiBtW,EACzBtB,KAAK4X,aAAeA,GAAgB,gCAEpC5X,KAAKyC,MACP,CAEA,IAAAA,GACEzC,KAAK6X,OAAS7X,KAAKyX,gBAAgBzT,MAChCJ,MAAM,MACNX,IAAKe,GAAUA,EAAMH,QACrBf,OAAQkB,GAAUA,GAErBhE,KAAKwH,GAAKxH,KAAKyX,gBAAgBjQ,GAE/BxH,KAAK8X,mBAAqBpW,SAAS6F,cAAc,SACjDvH,KAAK8X,mBAAmB5Q,UAAUC,IAAI,kBACtC,CAAC,KAAM,oBAAoBzG,QAASqX,IAClC/X,KAAK8X,mBAAmBzQ,aACtB0Q,EACA/X,KAAKyX,gBAAgB9P,aAAaoQ,IAEpC/X,KAAKyX,gBAAgB9Q,gBAAgBoR,KAEvC/X,KAAK2X,eAAejQ,YAAY1H,KAAK8X,oBACrC9X,KAAKyX,gBAAgBpQ,aAAa,SAAU,IAC5CrH,KAAKyX,gBAAgB7Q,iBAAiB,QAAS,IAAM5G,KAAKgY,cAC1DhY,KAAK8X,mBAAmBlR,iBAAiB,WAAazG,IAClC,UAAdA,EAAM4D,KACR/D,KAAKiY,YAAY9X,EAAMoM,OAAOvI,SAIlChE,KAAKkY,4BAA8BxW,SAAS6F,cAAc,UAC1DvH,KAAKkY,4BAA4B7Q,aAAa,OAAQ,UACtDrH,KAAKkY,4BAA4BhR,UAAUC,IACzC,aACA,qBAEFnH,KAAKmY,iCAAmCzW,SAAS6F,cAAc,QAC/DvH,KAAKmY,iCAAiC1Q,UAAY,MAClDzH,KAAKoY,sCAAwC1W,SAAS6F,cAAc,QACpEvH,KAAKoY,sCAAsClR,UAAUC,IACnD,uBAEFnH,KAAKoY,sCAAsC3Q,UAAY,WACvDzH,KAAKmY,iCAAiCzQ,YACpC1H,KAAKoY,uCAEPpY,KAAKkY,4BAA4BxQ,YAC/B1H,KAAKmY,kCAEPnY,KAAK2X,eAAejQ,YAAY1H,KAAKkY,6BACrClY,KAAKkY,4BAA4BtR,iBAAiB,QAAS,KACzD5G,KAAKiY,YAAYjY,KAAK8X,mBAAmB9T,SAG3ChE,KAAKqY,mBAAqB3W,SAAS6F,cAAc,OACjDvH,KAAKqY,mBAAmBhR,aAAa,YAAa,aAClDrH,KAAKqY,mBAAmBnR,UAAUC,IAAI,uBACtCnH,KAAKgG,QAAQ0B,YAAY1H,KAAKqY,oBAE9BrY,KAAKsY,kBAAoB5W,SAAS6F,cAAc,KAChDvH,KAAKsY,kBAAkB9Q,GAAK,GAAGxH,KAAKwH,iBACpCxH,KAAKsY,kBAAkBpR,UAAUC,IAAI,wBACrCnH,KAAKgG,QAAQ0B,YAAY1H,KAAKsY,mBAE9BtY,KAAK8X,mBAAmBzQ,aACtB,mBACA,GAAGrH,KAAK8X,mBAAmBnQ,aAAa,uBACtC3H,KAAKsY,kBAAkB9Q,MAI3BxH,KAAKuY,YAAc7W,SAAS6F,cAAc,MAC1CvH,KAAKuY,YAAYrR,UAAUC,IACzB,uBACA,wBAEFnH,KAAKuY,YAAY3R,iBAAiB,OAAQ,KACxC5G,KAAKuY,YAAY5R,gBAAgB,YACjC3G,KAAKwY,eAAe,MAEtBxY,KAAKgG,QAAQ0B,YAAY1H,KAAKuY,aAEzBvY,KAAK0X,sBACR1X,KAAK0X,oBAAsBhW,SAAS6F,cAAc,KAClDvH,KAAK0X,oBAAoBxQ,UAAUC,IAAI,uBACvCnH,KAAK2X,eAAec,WAAWrP,aAC7BpJ,KAAK0X,oBACL1X,KAAK2X,iBAGT3X,KAAK0X,oBAAoBjQ,UAAYzH,KAAK4X,aAE1C5X,KAAKgY,YACP,CAEA,cAAAQ,CAAeE,GACb1Y,KAAKqY,mBAAmB5Q,UAAYiR,CACtC,CAGA,cAAAC,CAAe3U,GACb,OAAOA,EAAM4U,QAAQ,UAAW,KAAK/U,MACvC,CAEA,aAAAgV,CAAc7U,GACZ,OAAOhE,KAAK6X,OACT5U,IAAK6V,GAAc9Y,KAAK2Y,eAAeG,GAAWlT,eAClD5C,SAASgB,EAAM4B,cAAc/B,OAClC,CAEA,WAAAoU,CAAYjU,GACV,MAAM+U,EAAW/Y,KAAK2Y,eAAe3U,GACjC+U,EACE/Y,KAAK6Y,cAAcE,GACrB/Y,KAAKwY,eAAe,IAAIO,qBAExB/Y,KAAK6X,OAAOmB,KAAKD,GACjB/Y,KAAKyX,gBAAgBzT,MAAQhE,KAAK6X,OAAOnD,KAAK,MAC9C1U,KAAKgY,aACLhY,KAAKwY,eAAe,IAAIO,aAG1B/Y,KAAKwY,eAAe,wBAEtBxY,KAAK8X,mBAAmB9T,MAAQ,GAChChE,KAAK8X,mBAAmB3O,OAC1B,CAEA,WAAA8P,CAAYjV,GACV,MAAMiV,EAAcjZ,KAAK2Y,eAAe3U,GACpCiV,GAAejZ,KAAK6Y,cAAcI,KACpCjZ,KAAK6X,OAAS7X,KAAK6X,OAAO/U,OACvBoW,GAAkBA,IAAkBD,GAEvCjZ,KAAKyX,gBAAgBzT,MAAQhE,KAAK6X,OAAOnD,KAAK,MAC9C1U,KAAKgY,aACLhY,KAAKwY,eAAe,IAAIS,eAEtBjZ,KAAK6X,OAAOtU,QACdvD,KAAKuY,YAAYlR,aAAa,WAAY,KAC1CrH,KAAKuY,YAAYpP,SAEjBnJ,KAAK8X,mBAAmB3O,OAE5B,CAEA,UAAA6O,GACEhY,KAAKuY,YAAYrP,UAAY,GAC7BlJ,KAAK6X,OACF5U,IAAKe,IACJ,MAAMqC,EAAQ3E,SAAS6F,cAAc,MACrClB,EAAMa,UAAUC,IAAI,8BACpB,MAAMgS,EAAazX,SAAS6F,cAAc,QAC1C4R,EAAW1R,UAAYzD,EACvBqC,EAAMqB,YAAYyR,GAElB,MAAMC,EAAoB1X,SAAS6F,cAAc,UAQjD,OAPA6R,EAAkB3R,UAAY,WAAWzD,KACzCoV,EAAkB/R,aAAa,OAAQ,UACvC+R,EAAkBlS,UAAUC,IAAI,8BAChCiS,EAAkBxS,iBAAiB,QAAS,KAC1C5G,KAAKiZ,YAAYjV,KAEnBqC,EAAMqB,YAAY0R,GACX/S,IAER3F,QAAS2F,GAAUrG,KAAKuY,YAAY7Q,YAAYrB,IAEnD,IAAIgT,EAAqB,OAEE,IAAvBrZ,KAAK6X,OAAOtU,SACd8V,GAAsB,KAExB,MAAMC,EAAiB,GAAGtZ,KAAK6X,OAAOtU,UAAU8V,UAChDrZ,KAAKsY,kBAAkB7Q,UAAY6R,CACrC,E,wCCnGkCxR,IAClC,MAAMyR,EAAWzR,EAAcrB,cAAc,WACU,SAAjDqB,EAAclG,QAAQ4X,yBACtBD,IAAaA,EAAS/R,KACxB+R,EAAS/R,GAAK,kBAAiB,EAAAiS,EAAA5Q,QAEjCf,EAAclG,QAAQ4X,uBAAyB,QAE7C1R,EAAc4R,YAAc5R,EAAc6R,aAC5C7R,EAAcT,aAAa,WAAY,KACvCS,EAAcT,aAAa,OAAQ,UACnCS,EAAcT,aAAa,kBAAmBkS,GAAU/R,IAAM,IAC9DM,EAAcZ,UAAUC,IAAI,+BAE5BW,EAAcnB,gBAAgB,YAC9BmB,EAAcnB,gBAAgB,QAC9BmB,EAAcnB,gBAAgB,mBAC9BmB,EAAcZ,UAAUE,OAAO,+B,OAhCDwS,IAChC,MAAMC,EAAWD,EAAIjS,aAAa,YAElC,IACE,MAAMmS,EApF8BC,KACtC,MAAMF,EAAWE,EAEjB,IAAKF,EACH,MAAM,IAAIvU,MAAM,wBAElB,MAAM0U,EACJ,uFAAuFC,KACrFJ,GAEEK,EAAS,wBAAwBD,KAAKJ,GAC5C,IAAKG,IAAeE,EAClB,MAAM,IAAI5U,MAAM,6BAGlB,MAAM6U,EAAO,IAAIC,KAAKP,GACtB,KAAMM,aAAgBC,OAASzO,MAAMwO,GACnC,MAAM,IAAI7U,MAAM,6BAGlB,MAAM+U,EAAYF,EAAKG,mBAAmB,QAAS,CACjDC,QAAS,SAELC,EAAaL,EAAKG,mBAAmB,QAAS,CAClDG,IAAK,UACLC,MAAO,OACPC,KAAM,YAGR,GAAIX,IAAeG,EAAKS,YAAcT,EAAKU,cAAe,CACxD,IAAIC,EAAaX,EAAKY,mBAAmB,QAAS,CAChDC,KAAM,UACNC,OAAQ,YASV,OAPId,EAAKe,eACPJ,EAAaX,EAAKY,mBAAmB,QAAS,CAC5CC,KAAM,UACNC,OAAQ,UACRE,OAAQ,aAGL,GAAGd,KAAaG,MAAeM,GACxC,CACA,MAAO,GAAGT,KAAaG,KAyCEY,CAAwBvB,GAC1CC,EAAe9W,SAAS4W,EAAIlL,eAC/BkL,EAAIvS,aAAa,QAASuS,EAAIlL,aAC9BkL,EAAIlL,YAAcoL,EAGtB,CAAE,MAAOzV,GACP,I,0BC3FW,KACZ,CAAC,MAAQ,KAAO,KAAO,KAAO,MAAMuU,QAAQ,UAAYyC,IAErDA,EACCC,OAAOC,gBAAgB,IAAIC,WAAW,IAAI,GAAM,IAAOH,EAAO,GAC/DrE,SAAS,M,GCNf,MAAAyE,EAAA,GAGA,SAAAC,EAAAC,GAEA,MAAAC,EAAAH,EAAAE,GACA,QAAAE,IAAAD,EACA,OAAAA,EAAAE,QAGA,MAAAC,EAAAN,EAAAE,GAAA,CAGAG,QAAA,IAOA,OAHAE,EAAAL,GAAAI,EAAAA,EAAAD,QAAAJ,GAGAK,EAAAD,OACA,CCrBAJ,EAAAO,EAAA,CAAAH,EAAAI,KACA,GAAA/T,MAAAgU,QAAAD,GAEA,IADA,IAAAE,EAAA,EACAA,EAAAF,EAAA3Y,QAAA,CACA,IAAAQ,EAAAmY,EAAAE,KACAC,EAAAH,EAAAE,KACAE,EAAA,IAAAD,EAAA,CAAsCE,YAAA,EAAAvY,MAAAkY,EAAAE,MAA2C,CAAIG,YAAA,EAAAnY,IAAAiY,GACrFX,EAAAc,EAAAV,EAAA/X,IAAAvD,OAAAic,eAAAX,EAAA/X,EAAAuY,EACA,MAEA,QAAAvY,KAAAmY,EACAR,EAAAc,EAAAN,EAAAnY,KAAA2X,EAAAc,EAAAV,EAAA/X,IACAvD,OAAAic,eAAAX,EAAA/X,EAAA,CAA0CwY,YAAA,EAAAnY,IAAA8X,EAAAnY,MCb1C2X,EAAAc,EAAA,CAAAE,EAAAC,IAAAnc,OAAAoc,UAAAC,eAAAjc,KAAA8b,EAAAC,GCCAjB,EAAAoB,EAAAhB,IACAtb,OAAAic,eAAAX,EAAAtc,OAAAud,YAAA,CAAsD/Y,MAAA,WACtDxD,OAAAic,eAAAX,EAAA,cAAgD9X,OAAA,K,iwBCiBhC,CAAC1C,EAAU,CAAC,KAC1B,MAAM0b,MAAEA,GAAU1b,EAClB,IAAI2b,EAASvb,SACb,GAAIsb,EAAO,CACT,KAAIA,aAAiBE,aAGnB,MAAM,IAAI5X,MAAM,gCAFhB2X,EAASD,CAIb,CACA,MAAMG,EAAQzb,SAASC,gBACvBwb,EAAMjW,UAAUC,IAAI,4BAEpB,MAAMiW,EAAe,KACnBtd,OAAOud,oBAAoB,aAAcD,GACzCD,EAAMjW,UAAUC,IAAI,0BAEtBrH,OAAO8G,iBAAiB,aAAcwW,GAQtCtd,OAAO8G,iBAAiB,UANLzG,IACC,QAAdA,EAAM4D,MACRoZ,EAAMjW,UAAUC,IAAI,wBACpBgW,EAAMjW,UAAUE,OAAO,4BAS3BtH,OAAO8G,iBAAiB,YAJJ,KAClBuW,EAAMjW,UAAUC,IAAI,yBACpBgW,EAAMjW,UAAUE,OAAO,0BAYzB,MAAMkW,EAAiBL,EAAO/W,iBAAiB,sBAC/CoX,EAAe5c,QAASoH,IAAkB,EAAAyV,EAAAtV,IAAoBH,IAC9DhI,OAAO8G,iBAAiB,SAAU,KAChC0W,EAAe5c,QAASoH,IACtB,EAAAyV,EAAAtV,IAAoBH,MAKpBqV,EAAMjW,UAAUwB,SAAS,wCAC3BhH,SAASwE,iBAAiB,kBAAkBxF,QAAQ6c,EAAAC,IAGlCP,EAAO/W,iBAAiB,iCAChCxF,QAAS+c,IACnB,IAAIC,EAAA3X,UAAU0X,KAGhB,MAAMhV,EAAewU,EAAOxW,cAAc,mCACtCgC,GACF,IAAIkV,EAAApV,YAAYE,GAGEwU,EAAO/W,iBAAiB,kCAChCxF,QAASkd,IACnB,IAAIC,EAAAvU,UAAUsU,KAGhB,MAAME,EAAgBb,EAAOxW,cAC3B,qCAEEqX,GACF,IAAIC,EAAAlU,aAAaiU,GAGYb,EAAO/W,iBACpC,8CAEqBxF,QAASsd,IAC9B,IAAIC,EAAArT,qBAAqBoT,KAG3B,MAAME,EAAgBjB,EAAOxW,cAC3B,qCAEEyX,GACF,IAAIC,EAAArS,aAAaoS,GAAezb,OAGdwa,EAAO/W,iBAAiB,kCAChCxF,QAAS0d,IACnB,IAAIC,EAAAlQ,mBAAmBiQ,KAGzB,MAAME,EAAUrB,EAAOxW,cAAc,8BACjC6X,GACF,IAAIC,EAAA1O,OAAOyO,GAGMrB,EAAO/W,iBAAiB,+BAChCxF,QAAS8d,IAClB,IAAIC,EAAA1N,QAAQyN,KAGd,MAAME,EAAgBzB,EAAOxW,cAC3B,qCAEEiY,GACF,IAAIC,EAAAvM,aAAasM,GAGnB,MAAME,EAAU3B,EAAOxW,cAAc,8BACjCmY,GACF,IAAIC,EAAAzL,OAAOwL,GAGK3B,EAAO/W,iBAAiB,+BAChCxF,QAASoe,IACjB,IAAIC,EAAA1L,QAAQyL,KAGd,MAAME,EAAW/B,EAAOxW,cAAc,wCACtC,GAAIuY,EAAU,CACZ,MAAM9K,mBAAEA,EAAkBC,qBAAEA,GAAyB6K,EAASpd,QAC9D,IAAIqd,EAAAlL,QAAQiL,EAAU,CAAE9K,qBAAoBC,wBAC9C,CAEmB8I,EAAO/W,iBAAiB,iCAChCxF,QAASwe,IAClB,IAAIC,EAAAjK,SAASgK,KAGDjC,EAAO/W,iBAAiB,4BAChCxF,QAAS0e,IACb,IAAIC,EAAA7J,KAAK4J,KAGmBnC,EAAO/W,iBACnC,8CAEoBxF,QAAS4e,IAC7B,MAAM1H,aAAEA,GAAiB0H,EAA0B1d,QACnD,IAAI2d,EAAA/H,qBAAqB8H,EAA2B,CAAE1H,mBAG5BqF,EAAO/W,iBACjC,2CAEkBxF,QAAS8e,IAC3B,IAAIC,EAAAtI,kBAAkBqI,KAGxB1f,OAAO4S,WAAW,SAAS9L,iBAAiB,SAAW8Y,IACjDA,EAAI3M,SACNkK,EACG/W,iBAAiB,qCACjBxF,QAASwL,IACRA,EAAS7E,aAAa,OAAQ,IAC9B6E,EAAStK,QAAQ+d,UAAY,KAEjC1C,EACG/W,iBACC,qEAEDxF,QAASwL,IACRA,EAASvF,gBAAgB,UACzBuF,EAAStK,QAAQ+d,UAAY,OAGjC1C,EACG/W,iBAAiB,0CACjBxF,QAASwL,IACRA,EAASvF,gBAAgB,eAClBuF,EAAStK,QAAQ+d,YAE5B1C,EACG/W,iBACC,uFAEDxF,QAASwL,IACRA,EAAS7E,aAAa,SAAU,IAChC6E,EAAStK,QAAQ+d,UAAY,W","sources":["webpack://TNAFrontend/./node_modules/@nationalarchives/cookies/src/events.js","webpack://TNAFrontend/./node_modules/@nationalarchives/cookies/src/index.js","webpack://TNAFrontend/./src/nationalarchives/components/accordion/accordion.mjs","webpack://TNAFrontend/./src/nationalarchives/components/breadcrumbs/breadcrumbs.mjs","webpack://TNAFrontend/./src/nationalarchives/components/code-block/code-block.mjs","webpack://TNAFrontend/./src/nationalarchives/components/cookie-banner/cookie-banner.mjs","webpack://TNAFrontend/./src/nationalarchives/components/date-input/date-input.mjs","webpack://TNAFrontend/./src/nationalarchives/components/error-summary/error-summary.mjs","webpack://TNAFrontend/./src/nationalarchives/components/file-input/file-input.mjs","webpack://TNAFrontend/./src/nationalarchives/components/footer/footer.mjs","webpack://TNAFrontend/./src/nationalarchives/components/gallery/gallery.mjs","webpack://TNAFrontend/./src/nationalarchives/components/global-header/global-header.mjs","webpack://TNAFrontend/./src/nationalarchives/components/header/header.mjs","webpack://TNAFrontend/./src/nationalarchives/components/picture/picture.mjs","webpack://TNAFrontend/./src/nationalarchives/components/sidebar/sidebar.mjs","webpack://TNAFrontend/./src/nationalarchives/components/skip-link/skip-link.mjs","webpack://TNAFrontend/./src/nationalarchives/components/tabs/tabs.mjs","webpack://TNAFrontend/./src/nationalarchives/components/text-input/text-input.mjs","webpack://TNAFrontend/./src/nationalarchives/components/textarea/textarea.mjs","webpack://TNAFrontend/./src/nationalarchives/lib/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":["// Symbol.for uses a global registry shared across script contexts (e.g. separate bundles/iframes), unlike instanceof which relies on the class reference matching.\nconst BRAND = Symbol.for(\"TNAFrontendCookieEventHandler\");\n\n/**\n * Class to handle cookie events.\n * @class CookieEventHandler\n * @constructor\n * @public\n */\nexport default class CookieEventHandler {\n /** @protected */\n events = {};\n /** @protected */\n oneTimeEvents = {};\n\n /** @protected */\n [BRAND] = true;\n\n /**\n * If an instance already exists, return it instead of creating a new one.\n * @returns {CookieEventHandler} The existing or newly created instance.\n */\n constructor() {\n if (window.TNAFrontendCookieEvents?.[BRAND]) {\n /* eslint-disable-next-line no-constructor-return */\n return window.TNAFrontendCookieEvents;\n }\n window.TNAFrontendCookieEvents = this;\n }\n\n /**\n * Clear all event listeners.\n */\n clearAll() {\n this.events = {};\n this.oneTimeEvents = {};\n }\n\n /**\n * Add an event listener.\n * @param {String} event - The event to add a listener for.\n * @param {Function} callback - The callback function to call when the event is triggered.\n */\n on(event, callback) {\n this.events[event] = [...(this.events[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.oneTimeEvents[event] = [\n ...(this.oneTimeEvents[event] || []),\n callback,\n ];\n }\n\n /** @protected */\n trigger(event, data = {}) {\n if (Object.hasOwn(this.events, event)) {\n this.events[event].forEach((eventToTrigger) =>\n eventToTrigger.call(this, data),\n );\n }\n if (Object.hasOwn(this.oneTimeEvents, event)) {\n this.oneTimeEvents[event].forEach((eachEvent) =>\n eachEvent.call(this, data),\n );\n this.oneTimeEvents[event] = [];\n }\n }\n}\n","/* eslint-disable max-lines, no-ternary */\n\nimport CookieEventHandler from \"./events.js\";\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 preferencesKey = \"\";\n /** @protected */\n events = null;\n /** @protected */\n defaultAge = null;\n /** @protected */\n preferencesCorrectOnInit = false;\n\n /** @protected */\n tnaCookiePreferences = [\"usage\", \"settings\", \"marketing\", \"essential\"];\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.preferencesKey] - The name of the cookie that stores the user's preferences.\n * @param {String} [options.preferencesSetKey] - The name of the cookie that dictates whether the user's preferences have been set.\n * @param {Number} [options.defaultAge] - The default age of non-session cookies.\n * @param {Boolean} [options.noInit=false] - Don't initialise a blank cookie preference.\n */\n /* eslint-disable-next-line max-statements, */\n constructor(options = {}) {\n const {\n defaultDomain,\n defaultPath,\n secure,\n preferencesKey,\n preferencesSetKey,\n defaultAge,\n noInit = false,\n } = options;\n const docDataset = document.documentElement.dataset;\n this.defaultDomain = defaultDomain\n ? defaultDomain\n : docDataset.tnaCookiesDomain || window.location.hostname;\n this.defaultPath = defaultPath\n ? defaultPath\n : docDataset.tnaCookiesPath || \"/\";\n this.secure = secure ? secure : docDataset.tnaCookiesInsecure !== \"true\";\n this.preferencesKey = preferencesKey\n ? preferencesKey\n : docDataset.tnaCookiesPreferencesKey || \"cookie_preferences\";\n this.preferencesSetKey = preferencesSetKey\n ? preferencesSetKey\n : docDataset.tnaCookiesPreferencesSetKey || \"cookie_preferences_set\";\n this.defaultAge = defaultAge\n ? defaultAge\n : parseInt(docDataset.tnaCookiesDefaultAge, 10) ||\n /* eslint-disable-next-line no-magic-numbers */\n 365 * 24 * 60 * 60;\n this.events = new CookieEventHandler();\n this.preferencesCorrectOnInit = this.validatePreferences(this.preferences);\n if (!this.preferencesCorrectOnInit) {\n this.preferencesSet = false;\n if (!noInit) {\n this.init();\n }\n }\n }\n\n /** @protected */\n init() {\n const existingPreferences = this.preferences;\n const filteredExistingPreferences = Object.fromEntries(\n Object.keys(existingPreferences)\n .filter((preference) => this.tnaCookiePreferences.includes(preference))\n .map((preference) => [preference, existingPreferences[preference]]),\n );\n this.savePreferences({\n usage: false,\n settings: false,\n marketing: false,\n ...filteredExistingPreferences,\n essential: true,\n });\n }\n\n validatePreferences(preferences) {\n return (\n Object.keys(preferences).length === this.tnaCookiePreferences.length &&\n this.tnaCookiePreferences.every(\n (preference) =>\n Object.keys(preferences).includes(preference) &&\n typeof preferences[preference] === \"boolean\",\n )\n );\n }\n\n /** @protected */\n /* eslint-disable-next-line class-methods-use-this */\n get all() {\n const deserialised = {};\n document.cookie\n .split(\"; \")\n .filter((cookie) => cookie.trim() !== \"\")\n .filter((cookie) => cookie.includes(\"=\"))\n .forEach((cookie) => {\n const parts = cookie.trim().split(\"=\");\n const [key, value = \"\"] = parts;\n deserialised[key] = decodeURIComponent(value);\n });\n return deserialised;\n }\n\n /** @protected */\n get preferences() {\n try {\n return JSON.parse(this.get(this.preferencesKey) || \"{}\");\n // eslint-disable-next-line no-unused-vars\n } catch (error) {\n return {};\n }\n }\n\n /**\n * Check to see whether a cookie exists or not.\n * @param {String} key - The cookie name.\n * @returns {Boolean}\n */\n exists(key) {\n return Object.hasOwn(this.all, key);\n }\n\n /**\n * Check to see whether a cookie has a particular value.\n * @param {String} key - The cookie name.\n * @param {String|Number|Boolean} value - The value to check against.\n * @returns\n */\n hasValue(key, value) {\n return this.get(key) === value;\n }\n\n /**\n * Get a cookie.\n * @param {String} key - The cookie name.\n * @returns {String|Number|Boolean|null}\n */\n get(key) {\n if (this.exists(key)) {\n return decodeURIComponent(this.all[key]);\n }\n /* eslint-disable-next-line no-undefined */\n return undefined;\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 secureString = secure ? \"; secure\" : \"\";\n const sessionString = session ? \"\" : `; max-age=${maxAge}`;\n const cookie = `${encodeURIComponent(key)}=${encodeURIComponent(value)}; domain=${domain}; samesite=${sameSite}; path=${path}${sessionString}${secureString}`;\n document.cookie = cookie;\n const cookieDetails = {\n key,\n value,\n maxAge,\n path,\n sameSite,\n domain,\n secure,\n session,\n cookie,\n };\n this.events.trigger(\"setCookie\", cookieDetails);\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 };\n this.set(key, \"\", 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 const details = { path, domain };\n this.events.trigger(\"deleteAllCookies\", details);\n }\n\n /**\n * Accept a preference.\n * @param {String} preference - The name of the preference.\n */\n enablePreference(preference) {\n if (!Object.hasOwn(this.preferences, preference)) {\n throw new Error(`Preference '${preference}' does not exist`);\n }\n this.setPreference(preference, true);\n this.events.trigger(\"enablePreference\", preference);\n this.events.trigger(\"changePreference\", { [preference]: true });\n }\n\n /**\n * Reject a preference.\n * @param {String} preference - The name of the preference.\n */\n disablePreference(preference) {\n if (!Object.hasOwn(this.preferences, preference)) {\n throw new Error(`Preference '${preference}' does not exist`);\n }\n this.setPreference(preference, false);\n this.events.trigger(\"disablePreference\", preference);\n this.events.trigger(\"changePreference\", { [preference]: false });\n }\n\n /**\n * Set a preference.\n * @param {String} preference - The name of the preference.\n * @param {Boolean} accepted - Whether the preference is accepted or not.\n */\n setPreference(preference, accepted) {\n if (!Object.hasOwn(this.preferences, preference)) {\n throw new Error(`Preference '${preference}' does not exist`);\n }\n if (preference === \"essential\") {\n return;\n }\n this.savePreferences({\n ...this.preferences,\n [preference]: accepted,\n essential: true,\n });\n this.events.trigger(\"changePreference\", { [preference]: accepted });\n }\n\n /**\n * Accept all the cookie preferences.\n */\n enableAllPreferences() {\n const allPreferences = Object.fromEntries(\n Object.keys(this.preferences).map((key) => [key.toLowerCase(), true]),\n );\n this.savePreferences(allPreferences);\n this.preferencesSet = true;\n this.events.trigger(\"enableAllPreferences\");\n this.events.trigger(\"changePreference\", allPreferences);\n }\n\n /**\n * Reject all the cookie preferences.\n */\n disableAllPreferences() {\n const allPreferences = {\n ...Object.fromEntries(\n Object.keys(this.preferences).map((key) => [key.toLowerCase(), false]),\n ),\n essential: true,\n };\n this.savePreferences(allPreferences);\n this.preferencesSet = true;\n this.events.trigger(\"disableAllPreferences\");\n this.events.trigger(\"changePreference\", allPreferences);\n }\n\n /** @protected */\n savePreferences(preferences) {\n this.set(this.preferencesKey, JSON.stringify(preferences));\n }\n\n /**\n * Get the status of whether the preferences have been set.\n * @returns {Boolean}\n */\n get preferencesSet() {\n return this.hasValue(this.preferencesSetKey, \"true\");\n }\n\n /**\n * Set the status of whether the preferences have been set.\n * @param {Boolean} value\n */\n set preferencesSet(value) {\n if (\n value === true &&\n this.validatePreferences(JSON.parse(this.get(this.preferencesKey)))\n ) {\n this.set(this.preferencesSetKey, \"true\");\n } else {\n this.delete(this.preferencesSetKey);\n }\n this.events.trigger(\"preferencesSet\");\n }\n\n /**\n * Get the acceptance status of a preference.\n * @param {String} preference - The name of the preference.\n * @returns {Boolean}\n */\n preference(preference) {\n if (Object.hasOwn(this.preferences, preference)) {\n return this.preferences[preference] === true;\n }\n throw new Error(`Preference '${preference}' does not exist`);\n }\n\n /**\n * Add an event listener.\n * @param {String} event - The event to add a listener for.\n * @param {Function} callback - The callback function to call when the event is triggered.\n */\n on(event, callback) {\n this.events.on(event, callback);\n }\n\n /**\n * Add a one-time event listener.\n * @param {String} event - The event to add a listener for.\n * @param {Function} callback - The callback function to call when the event is triggered.\n */\n once(event, callback) {\n this.events.once(event, callback);\n }\n}\n","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 return;\n }\n\n if (\n /* eslint-disable-next-line no-magic-numbers */\n this.$breadcrumbs.length > 2 &&\n !this.$module.classList.contains(\"tna-breadcrumbs--no-collapse\")\n ) {\n this.init();\n }\n }\n\n init() {\n const uniqueId = `tna-breadcrumbs-${uuidv4()}`;\n const $expandable = document.createElement(\"li\");\n $expandable.classList.add(\n \"tna-breadcrumbs__item\",\n \"tna-breadcrumbs__item--expandable\",\n );\n $expandable.style.display = \"none\";\n\n const $expandButton = document.createElement(\"button\");\n $expandButton.classList.add(\"tna-breadcrumbs__link\");\n $expandButton.innerHTML =\n \"<span class='tna-!--visually-hidden'>Expand breadcrumbs</span>&hellip;\";\n $expandButton.setAttribute(\"type\", \"button\");\n $expandButton.setAttribute(\"aria-expanded\", \"false\");\n $expandButton.setAttribute(\"aria-controls\", uniqueId);\n $expandButton.addEventListener(\"click\", () => {\n this.$module.classList.remove(\"tna-breadcrumbs--collapsed\");\n $expandable.remove();\n this.$module.setAttribute(\"tabindex\", \"0\");\n this.$module.focus();\n this.$module.addEventListener(\n \"blur\",\n () => {\n this.$module.removeAttribute(\"tabindex\");\n },\n { once: true },\n );\n });\n $expandable.appendChild($expandButton);\n\n this.$breadcrumbsList.setAttribute(\"id\", uniqueId);\n this.$breadcrumbsList.insertBefore(\n $expandable,\n /* eslint-disable-next-line no-magic-numbers */\n this.$breadcrumbs[this.$breadcrumbs.length - 2].nextSibling,\n );\n\n this.$module.classList.add(\"tna-breadcrumbs--collapsed\");\n }\n}\n","export class CodeBlock {\n constructor($module) {\n this.$module = $module;\n this.$code = this.$module.querySelector(\"pre code\");\n this.$copyButton = this.$module.querySelector(\".tna-code-block__copy\");\n\n if (\n !this.$module ||\n !this.$code ||\n !this.$copyButton ||\n !navigator.clipboard\n ) {\n return;\n }\n\n this.$copyButton.removeAttribute(\"hidden\");\n this.$module.classList.add(\"tna-code-block__copyable\");\n\n this.$copyButton.addEventListener(\"click\", async () => {\n try {\n await navigator.clipboard.writeText(this.$code.innerText);\n this.$copyButton.innerText = \"Code copied\";\n } catch {\n // Continue regardless of error\n }\n });\n\n this.$copyButton.addEventListener(\"blur\", () => {\n this.$copyButton.innerText = \"Copy code\";\n });\n }\n}\n","import Cookies from \"@nationalarchives/cookies/src/index.js\";\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();\n\n if (!this.cookies.preferencesSet) {\n this.$module.removeAttribute(\"hidden\");\n\n this.$acceptButton.addEventListener(\"click\", () => this.accept());\n this.$rejectButton.addEventListener(\"click\", () => this.reject());\n\n this.$closeButtons.forEach(($closeButton) => {\n $closeButton.addEventListener(\"click\", () => this.close());\n });\n }\n }\n\n accept() {\n this.cookies.enableAllPreferences();\n this.showPanel(this.$acceptedMessage);\n }\n\n reject() {\n this.cookies.disableAllPreferences();\n this.showPanel(this.$rejectedMessage);\n }\n\n showPanel($panel) {\n this.$prompt.setAttribute(\"hidden\", \"\");\n $panel.removeAttribute(\"hidden\");\n $panel.setAttribute(\"tabindex\", \"0\");\n $panel.focus();\n $panel.addEventListener(\"blur\", () => {\n $panel.removeAttribute(\"tabindex\");\n });\n }\n\n close() {\n this.$module.setAttribute(\"hidden\", \"\");\n }\n}\n","export class DateInputProgressive {\n constructor($module) {\n this.$module = $module;\n this.$yearWrapper =\n $module && $module.querySelector(\".tna-date-input__item--year\");\n this.$yearInput =\n this.$yearWrapper && this.$yearWrapper.querySelector(\"input\");\n this.$monthWrapper =\n $module && $module.querySelector(\".tna-date-input__item--month\");\n this.$monthInput =\n this.$monthWrapper && this.$monthWrapper.querySelector(\"input\");\n this.$dayWrapper =\n $module && $module.querySelector(\".tna-date-input__item--day\");\n this.$dayInput =\n this.$dayWrapper && this.$dayWrapper.querySelector(\"input\");\n\n if (!this.$module) {\n return;\n }\n\n this.update();\n window.addEventListener(\"pageshow\", () => this.update());\n\n if (this.$yearInput) {\n this.$yearInput.addEventListener(\"keyup\", () => this.update());\n this.$yearInput.addEventListener(\"change\", () => this.update());\n }\n if (this.$monthInput) {\n this.$monthInput.addEventListener(\"keyup\", () => this.update());\n this.$monthInput.addEventListener(\"change\", () => this.update());\n }\n if (this.$dayInput) {\n this.$dayInput.addEventListener(\"keyup\", () => this.update());\n this.$dayInput.addEventListener(\"change\", () => this.update());\n }\n }\n\n update() {\n if (this.isValidYear()) {\n this.showMonth();\n if (this.isValidMonth()) {\n this.showDay();\n } else {\n this.hideDay();\n }\n } else {\n this.hideMonth();\n this.hideDay();\n }\n }\n\n isValidYear() {\n if (!this.$yearInput) {\n return true;\n }\n const yearValue = parseInt(this.$yearInput.value.trim(), 10);\n /* eslint-disable-next-line no-magic-numbers */\n return !isNaN(this.$yearInput.value) && !isNaN(yearValue) && yearValue > 0;\n }\n\n isValidMonth() {\n if (!this.$monthInput) {\n return true;\n }\n const monthRawValue = this.$monthInput.value.trim();\n const monthIntValue = parseInt(monthRawValue, 10);\n const validMonthStrings = [\n \"january\",\n \"february\",\n \"march\",\n \"april\",\n \"may\",\n \"june\",\n \"july\",\n \"august\",\n \"september\",\n \"october\",\n \"november\",\n \"december\",\n \"jan\",\n \"feb\",\n \"mar\",\n \"apr\",\n \"jun\",\n \"jul\",\n \"aug\",\n \"sep\",\n \"oct\",\n \"nov\",\n \"dec\",\n ];\n return (\n (!isNaN(this.$monthInput.value) &&\n !isNaN(monthIntValue) &&\n /* eslint-disable-next-line no-magic-numbers */\n monthIntValue > 0 &&\n /* eslint-disable-next-line no-magic-numbers */\n monthIntValue <= 12) ||\n validMonthStrings.includes(monthRawValue.toLowerCase())\n );\n }\n\n showMonth() {\n if (this.$monthWrapper) {\n this.$monthWrapper.removeAttribute(\"hidden\");\n }\n }\n\n hideMonth() {\n if (this.$monthWrapper) {\n this.$monthWrapper.setAttribute(\"hidden\", \"\");\n }\n }\n\n showDay() {\n if (this.$dayWrapper) {\n this.$dayWrapper.removeAttribute(\"hidden\");\n }\n }\n\n hideDay() {\n if (this.$dayWrapper) {\n this.$dayWrapper.setAttribute(\"hidden\", \"\");\n }\n }\n}\n","export class ErrorSummary {\n constructor($module) {\n this.$module = $module;\n }\n\n init() {\n if (!this.$module) {\n return;\n }\n\n const disableAutoFocus =\n this.$module.dataset.disableAutofocus === \"true\" || false;\n\n if (!disableAutoFocus) {\n this.setFocus(this.$module);\n }\n\n this.$module.addEventListener(\"click\", (event) => this.handleClick(event));\n }\n\n /* eslint-disable-next-line class-methods-use-this */\n setFocus($element, options = {}) {\n const isFocusable = $element.getAttribute(\"tabindex\");\n\n if (!isFocusable) {\n $element.setAttribute(\"tabindex\", \"-1\");\n }\n\n /**\n * Handle element blur\n */\n function onBlur() {\n options.onBlur?.call($element);\n\n if (!isFocusable) {\n $element.removeAttribute(\"tabindex\");\n }\n }\n\n /**\n * Handle element focus\n */\n function onFocus() {\n $element.addEventListener(\"blur\", onBlur, { once: true });\n }\n\n // Add listener to reset element on blur, after focus\n $element.addEventListener(\"focus\", onFocus, { once: true });\n\n // Focus element\n options.onBeforeFocus?.call($element);\n $element.focus();\n }\n\n handleClick(event) {\n const $target = event.target;\n if ($target && this.focusTarget($target)) {\n event.preventDefault();\n }\n }\n\n /* eslint-disable-next-line class-methods-use-this */\n getFragmentFromUrl(url) {\n if (!url.includes(\"#\")) {\n return null;\n }\n\n return url.split(\"#\").pop();\n }\n\n focusTarget($target) {\n // If the element that was clicked was not a link, return early\n if (!($target instanceof HTMLAnchorElement)) {\n return false;\n }\n\n const inputId = this.getFragmentFromUrl($target.href);\n if (!inputId) {\n return false;\n }\n\n const $input = document.getElementById(inputId);\n if (!$input) {\n return false;\n }\n\n const $legendOrLabel = this.getAssociatedLegendOrLabel($input);\n if (!$legendOrLabel) {\n return false;\n }\n\n // Scroll the legend or label into view *before* calling focus on the input\n // To avoid extra scrolling in browsers that don't support `preventScroll`\n // (which at time of writing is most of them...)\n $legendOrLabel.scrollIntoView();\n $input.focus({ preventScroll: true });\n\n return true;\n }\n\n /**\n * Get associated legend or label\n *\n * Returns the first element that exists from this list:\n *\n * - The `<legend>` associated with the closest `<fieldset>` ancestor, as long\n * as the top of it is no more than half a viewport height away from the\n * bottom of the input\n * - The first `<label>` that is associated with the input using for=\"inputId\"\n * - The closest parent `<label>`\n *\n * @private\n * @param {Element} $input - The input\n * @returns {Element | null} Associated legend or label, or null if no\n * associated legend or label can be found\n */\n /* eslint-disable-next-line class-methods-use-this */\n getAssociatedLegendOrLabel($input) {\n const $fieldset = $input.closest(\"fieldset\");\n\n if ($fieldset) {\n const $legends = $fieldset.getElementsByTagName(\"legend\");\n\n if ($legends.length) {\n const [$candidateLegend] = $legends;\n\n // If the input type is radio or checkbox, always use the legend if\n // There is one.\n if (\n $input instanceof HTMLInputElement &&\n ($input.type === \"checkbox\" || $input.type === \"radio\")\n ) {\n return $candidateLegend;\n }\n\n // For other input types, only scroll to the fieldset’s legend (instead\n // Of the label associated with the input) if the input would end up in\n // The top half of the screen.\n //\n // This should avoid situations where the input either ends up off the\n // Screen, or obscured by a software keyboard.\n const legendTop = $candidateLegend.getBoundingClientRect().top;\n const inputRect = $input.getBoundingClientRect();\n\n // If the browser doesn't support Element.getBoundingClientRect().height\n // Or window.innerHeight (like IE8), bail and just link to the label.\n if (inputRect.height && window.innerHeight) {\n const inputBottom = inputRect.top + inputRect.height;\n\n /* eslint-disable no-magic-numbers */\n if (inputBottom - legendTop < window.innerHeight / 2) {\n return $candidateLegend;\n }\n }\n }\n }\n\n return (\n document.querySelector(`label[for='${$input.getAttribute(\"id\")}']`) ??\n $input.closest(\"label\")\n );\n }\n}\n","export class FileInputDroppable {\n constructor($module) {\n this.$module = $module;\n this.$body = $module && $module.querySelector(\".tna-form-item__body\");\n this.$input = this.$body && this.$body.querySelector(\".tna-file-input\");\n\n if (!this.$module || !this.$body || !this.$input) {\n return;\n }\n\n this.acceptMutltipleFiles = this.$input.hasAttribute(\"multiple\");\n\n this.init();\n }\n\n init() {\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 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 const fileText = this.acceptMutltipleFiles ? \"files\" : \"file\";\n this.$pseudoSelectFileText.textContent = `No ${fileText} selected`;\n this.$droppableArea.appendChild(this.$pseudoSelectFileText);\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 const $pseudoSelectFileButton = document.createElement(\"span\");\n $pseudoSelectFileButton.classList.add(\"tna-button\");\n $pseudoSelectFileButton.textContent = `Choose ${fileText}`;\n $droppableButtons.appendChild($pseudoSelectFileButton);\n const $pseudoDropFileButton = document.createElement(\"span\");\n $pseudoDropFileButton.textContent = `or drop ${fileText}`;\n $droppableButtons.appendChild($pseudoDropFileButton);\n this.$droppableAreaAriaLabel = document.createElement(\"span\");\n this.$droppableAreaAriaLabel.classList.add(\"tna-visually-hidden\");\n this.$droppableAreaAriaLabel.setAttribute(\"aria-live\", \"assertive\");\n this.$droppableArea.appendChild(this.$droppableAreaAriaLabel);\n\n this.$input.addEventListener(\"dragenter\", (event) =>\n this.showDropTarget(event),\n );\n this.$input.addEventListener(\"dragleave\", () => this.hideDropTarget());\n this.$input.addEventListener(\"dragend\", () => this.hideDropTarget());\n this.$input.addEventListener(\"change\", () => this.onChange());\n this.$input.addEventListener(\"drop\", () => this.onChange());\n }\n\n /* eslint-disable-next-line class-methods-use-this */\n isContainingFiles(dataTransfer) {\n const hasNoTypesInfo = !dataTransfer.types.length;\n const isDraggingFiles = dataTransfer.types.some((type) => type === \"Files\");\n return hasNoTypesInfo || isDraggingFiles;\n }\n\n showDropTarget(event, updateAriaLabel = true) {\n if (event.dataTransfer && this.isContainingFiles(event.dataTransfer)) {\n let classToAdd = \"tna-file-input__droppable--over\";\n if (event.dataTransfer.items.length) {\n classToAdd = \"tna-file-input__droppable--over-multiple\";\n }\n this.$droppableArea.classList.add(classToAdd);\n\n if (updateAriaLabel) {\n this.$droppableAreaAriaLabel.textContent = \"Entered drop zone\";\n }\n }\n }\n\n hideDropTarget(updateAriaLabel = true) {\n this.$droppableArea.classList.remove(\n \"tna-file-input__droppable--over\",\n \"tna-file-input__droppable--over-multiple\",\n );\n if (updateAriaLabel) {\n this.$droppableAreaAriaLabel.textContent = \"Left drop zone\";\n }\n }\n\n onChange() {\n const { files } = this.$input;\n if (this.acceptMutltipleFiles) {\n if (files.length) {\n let fileText = \"file\";\n /* eslint-disable-next-line no-magic-numbers */\n if (files.length > 1) {\n fileText += \"s\";\n }\n const textContent = `${files.length} ${fileText} selected`;\n this.$pseudoSelectFileText.textContent = textContent;\n } else {\n this.$pseudoSelectFileText.textContent = `No files selected`;\n }\n } else {\n this.$pseudoSelectFileText.textContent =\n /* eslint-disable-next-line no-magic-numbers */\n files[0]?.name || `No file selected`;\n }\n if (files.length) {\n this.$droppableArea.classList.remove(\"tna-file-input__droppable--empty\");\n } else {\n this.$droppableArea.classList.add(\"tna-file-input__droppable--empty\");\n }\n this.hideDropTarget(false);\n }\n}\n","import Cookies from \"@nationalarchives/cookies/src/index.js\";\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.themeCookieName = themeCookieName;\n\n this.init();\n }\n\n init() {\n this.currentTheme = this.$themeSelector.dataset.themeOnLoad;\n\n this.cookies = new Cookies();\n\n this.$themeSelectorButtons = this.$themeSelector.querySelectorAll(\n \"button.tna-footer__theme-selector-button[value]\",\n );\n\n Array.from(this.$themeSelectorButtons).forEach(($themeSelectorButton) => {\n $themeSelectorButton.addEventListener(\"click\", (event) => {\n const $button = event.target;\n this.setTheme($button.value);\n this.selectThemeSelectorButton($button);\n });\n });\n\n this.$themeSelectorEnableSettingsCookiesButton.addEventListener(\n \"click\",\n () => {\n this.cookies.enablePreference(\"settings\");\n },\n );\n\n this.showThemeSelector();\n this.cookies.on(\"changePreference\", (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.preference(\"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.preference(\"settings\")) {\n this.cookies.set(this.themeCookieName, this.currentTheme);\n } else {\n this.$themeSelectorNotice.removeAttribute(\"hidden\");\n }\n }\n\n selectThemeSelectorButton($selectedButton) {\n Array.from(this.$themeSelectorButtons).forEach(($button) => {\n if ($button.value === $selectedButton.value) {\n $button.classList.remove(\"tna-button--plain\");\n $button.setAttribute(\"aria-current\", true);\n } else {\n $button.classList.add(\"tna-button--plain\");\n $button.removeAttribute(\"aria-current\");\n }\n });\n }\n}\n","export class Gallery {\n constructor($module) {\n this.$module = $module;\n this.$itemsContainer =\n $module && $module.querySelector(\".tna-gallery__items\");\n this.$items =\n this.$itemsContainer &&\n this.$itemsContainer.querySelectorAll(\".tna-gallery__item\");\n this.$navigation =\n $module && $module.querySelector(\".tna-gallery__navigation\");\n this.$navigationItems =\n this.$navigation &&\n $module.querySelectorAll(\".tna-gallery__navigation-item\");\n this.$navigationButtons =\n $module && $module.querySelector(\".tna-gallery__navigation-buttons\");\n\n if (\n !this.$module ||\n !this.$itemsContainer ||\n !this.$items ||\n /* eslint-disable-next-line no-magic-numbers */\n this.$items.length < 2 ||\n !this.$navigation ||\n !this.$navigationItems ||\n !this.$navigationButtons\n ) {\n return;\n }\n\n this.$module.classList.add(\"tna-gallery--interactive\");\n\n this.$navigationButtonPrev = this.$navigationButtons.querySelector(\n \".tna-gallery__navigation-prev\",\n );\n this.$navigationButtonNext = this.$navigationButtons.querySelector(\n \".tna-gallery__navigation-next\",\n );\n\n this.setup();\n /* eslint-disable-next-line no-magic-numbers */\n this.currentId = this.$items[0].id;\n this.showItem(this.currentId);\n }\n\n setup() {\n this.$items.forEach(($item) => {\n $item.setAttribute(\"hidden\", \"\");\n $item.setAttribute(\"aria-hidden\", \"true\");\n $item\n .querySelector(\".tna-gallery__item-header\")\n ?.setAttribute(\"aria-hidden\", \"true\");\n });\n this.$navigation.removeAttribute(\"hidden\");\n this.$navigationItems.forEach(($item) => {\n $item.addEventListener(\"click\", () => {\n this.showItem($item.getAttribute(\"aria-controls\"));\n this.$itemsContainer.setAttribute(\"tabindex\", \"0\");\n this.$itemsContainer.focus();\n });\n });\n this.$module.addEventListener(\"keydown\", (event) => {\n let preventDefaultKeyAction = false;\n switch (event.key) {\n case \"ArrowLeft\":\n case \"ArrowUp\":\n this.showPreviousItem();\n preventDefaultKeyAction = true;\n break;\n case \"ArrowRight\":\n case \"ArrowDown\":\n this.showNextItem();\n preventDefaultKeyAction = true;\n break;\n case \"Home\":\n this.showFirstItem();\n preventDefaultKeyAction = true;\n break;\n case \"End\":\n this.showLastItem();\n preventDefaultKeyAction = true;\n break;\n default:\n break;\n }\n if (preventDefaultKeyAction) {\n event.stopPropagation();\n event.preventDefault();\n }\n });\n\n this.$navigationButtons?.removeAttribute(\"hidden\");\n this.$navigationButtonPrev?.addEventListener(\"click\", () => {\n this.showPreviousItem();\n });\n this.$navigationButtonNext?.addEventListener(\"click\", () => {\n this.showNextItem();\n });\n\n this.$liveRegion = document.createElement(\"div\");\n this.$liveRegion.setAttribute(\"aria-live\", \"polite\");\n this.$liveRegion.setAttribute(\"aria-atomic\", \"true\");\n this.$liveRegion.setAttribute(\"class\", \"tna-gallery__item-header\");\n this.$itemsContainer.prepend(this.$liveRegion);\n this.$itemsContainer.classList.add(\"tna-gallery__items--hide-item-titles\");\n this.$itemsContainer.addEventListener(\"blur\", () =>\n this.$itemsContainer.removeAttribute(\"tabindex\"),\n );\n }\n\n showItem(id) {\n this.$items.forEach(($item) => {\n if (id && $item.id === id) {\n $item.removeAttribute(\"hidden\");\n $item.removeAttribute(\"aria-hidden\");\n } else {\n $item.setAttribute(\"hidden\", \"\");\n $item.setAttribute(\"aria-hidden\", \"true\");\n }\n });\n this.$navigationItems.forEach(($item) => {\n if (id) {\n if ($item.getAttribute(\"aria-controls\") === id) {\n $item.setAttribute(\"aria-current\", \"true\");\n } else {\n $item.setAttribute(\"aria-current\", \"false\");\n }\n } else {\n $item.setAttribute(\"aria-current\", \"false\");\n }\n });\n this.currentId = id;\n /* eslint-disable-next-line no-magic-numbers */\n this.$liveRegion.textContent = `Image ${this.getCurrentItemIndex() + 1} of ${this.$items.length}`;\n }\n\n getCurrentItemIndex() {\n return Array.from(this.$items).findIndex(\n ($item) => $item.id === this.currentId,\n );\n }\n\n showPreviousItem() {\n /* eslint-disable-next-line no-magic-numbers */\n let nextIndexToShow = this.getCurrentItemIndex() - 1;\n /* eslint-disable-next-line no-magic-numbers */\n if (nextIndexToShow < 0) {\n /* eslint-disable-next-line no-magic-numbers */\n nextIndexToShow = this.$items.length - 1;\n }\n this.showItem(this.$items[nextIndexToShow].id);\n }\n\n showNextItem() {\n /* eslint-disable-next-line no-magic-numbers */\n let nextIndexToShow = this.getCurrentItemIndex() + 1;\n if (nextIndexToShow >= this.$items.length) {\n /* eslint-disable-next-line no-magic-numbers */\n nextIndexToShow = 0;\n }\n this.showItem(this.$items[nextIndexToShow].id);\n }\n\n showFirstItem() {\n /* eslint-disable-next-line no-magic-numbers */\n this.showItem(this.$items[0].id);\n }\n\n showLastItem() {\n /* eslint-disable-next-line no-magic-numbers */\n this.showItem(this.$items[this.$items.length - 1].id);\n }\n}\n","export class GlobalHeader {\n constructor($module) {\n this.$module = $module;\n this.$toggleButton =\n $module && $module.querySelector(\".tna-global-header__navigation-button\");\n this.$navigation =\n $module &&\n $module.querySelector(\".tna-global-header__navigation-wrapper\");\n this.$topNavigation =\n $module &&\n $module.querySelector(\".tna-global-header__top-navigation-wrapper\");\n this.$links =\n $module &&\n ((this.$navigation &&\n this.$navigation.querySelectorAll(\"[tabindex='0']\")) ||\n (this.$topNavigation &&\n this.$topNavigation.querySelectorAll(\"[tabindex='0']\")));\n this.menuOpened = false;\n this.mql = window.matchMedia(\"(max-width: 48em)\");\n\n if (\n !this.$module ||\n !this.$toggleButton ||\n (!this.$navigation && !this.$topNavigation)\n ) {\n return;\n }\n\n this.$toggleButton.removeAttribute(\"hidden\");\n this.syncState();\n this.$toggleButton.addEventListener(\"click\", () =>\n this.handleToggleNavigation(),\n );\n if (\"addEventListener\" in this.mql) {\n this.mql.addEventListener(\"change\", () => this.syncState());\n } else {\n this.mql.addListener(() => this.syncState());\n }\n\n this.$module.addEventListener(\"keyup\", (event) => {\n if (event.code === \"Escape\" && this.mql.matches && this.menuOpened) {\n this.menuOpened = false;\n this.syncState();\n this.$toggleButton.focus();\n }\n });\n }\n\n handleToggleNavigation() {\n this.menuOpened = !this.menuOpened;\n this.syncState();\n }\n\n syncState() {\n if (this.mql.matches) {\n if (this.menuOpened) {\n this.show();\n } else {\n this.hide();\n }\n } else {\n this.show();\n }\n }\n\n hide() {\n if (this.$navigation) {\n this.$navigation.hidden = true;\n this.$navigation.setAttribute(\"aria-hidden\", \"true\");\n }\n if (this.$topNavigation) {\n this.$topNavigation.hidden = true;\n this.$topNavigation.setAttribute(\"aria-hidden\", \"true\");\n }\n this.$toggleButton.setAttribute(\"aria-expanded\", \"false\");\n this.$toggleButton.setAttribute(\"title\", \"Open menu\");\n this.$toggleButton.classList.remove(\n \"tna-global-header__navigation-button--opened\",\n );\n /* eslint-disable-next-line no-magic-numbers */\n for (let index = 0; index < this.$links.length; index += 1) {\n this.$links[index].setAttribute(\"tabindex\", \"-1\");\n }\n }\n\n show() {\n if (this.$navigation) {\n this.$navigation.hidden = false;\n this.$navigation.setAttribute(\"aria-hidden\", \"false\");\n }\n if (this.$topNavigation) {\n this.$topNavigation.hidden = false;\n this.$topNavigation.setAttribute(\"aria-hidden\", \"false\");\n }\n this.$toggleButton.setAttribute(\"aria-expanded\", \"true\");\n this.$toggleButton.setAttribute(\"title\", \"Close menu\");\n this.$toggleButton.classList.add(\n \"tna-global-header__navigation-button--opened\",\n );\n /* eslint-disable-next-line no-magic-numbers */\n for (let index = 0; index < this.$links.length; index += 1) {\n this.$links[index].setAttribute(\"tabindex\", \"0\");\n }\n }\n}\n","export class Header {\n constructor($module) {\n this.$module = $module;\n this.$toggleButton =\n $module && $module.querySelector(\".tna-header__navigation-button\");\n this.$navigation =\n $module && $module.querySelector(\".tna-header__navigation\");\n this.$links =\n $module &&\n this.$navigation &&\n this.$navigation.querySelectorAll(\"[tabindex='0']\");\n this.menuOpened = false;\n this.mql = window.matchMedia(\"(max-width: 48em)\");\n\n if (!this.$module || !this.$toggleButton || !this.$navigation) {\n return;\n }\n\n this.$toggleButton.removeAttribute(\"hidden\");\n this.syncState();\n this.$toggleButton.addEventListener(\"click\", () =>\n this.handleToggleNavigation(),\n );\n if (\"addEventListener\" in this.mql) {\n this.mql.addEventListener(\"change\", () => this.syncState());\n } else {\n this.mql.addListener(() => this.syncState());\n }\n\n this.$module.addEventListener(\"keyup\", (event) => {\n if (event.code === \"Escape\" && this.menuOpened && this.mql.matches) {\n this.menuOpened = false;\n this.syncState();\n this.$toggleButton.focus();\n }\n });\n }\n\n handleToggleNavigation() {\n this.menuOpened = !this.menuOpened;\n this.syncState();\n }\n\n syncState() {\n if (this.mql.matches) {\n if (this.menuOpened) {\n this.show();\n } else {\n this.hide();\n }\n } else {\n this.show();\n }\n }\n\n show() {\n this.$navigation.classList.add(\"tna-header__navigation--open\");\n this.$navigation.removeAttribute(\"hidden\");\n this.$navigation.setAttribute(\"aria-hidden\", \"false\");\n this.$toggleButton.setAttribute(\"aria-expanded\", \"true\");\n this.$toggleButton.setAttribute(\"title\", \"Close menu\");\n this.$toggleButton.classList.add(\"tna-header__navigation-button--opened\");\n\n /* eslint-disable-next-line no-magic-numbers */\n for (let index = 0; index < this.$links.length; index += 1) {\n this.$links[index].setAttribute(\"tabindex\", \"0\");\n }\n }\n\n hide() {\n this.$navigation.classList.remove(\"tna-header__navigation--open\");\n this.$navigation.hidden = true;\n this.$navigation.setAttribute(\"aria-hidden\", \"true\");\n this.$toggleButton.setAttribute(\"aria-expanded\", \"false\");\n this.$toggleButton.setAttribute(\"title\", \"Open menu\");\n this.$toggleButton.classList.remove(\n \"tna-header__navigation-button--opened\",\n );\n\n /* eslint-disable-next-line no-magic-numbers */\n for (let index = 0; index < this.$links.length; index += 1) {\n this.$links[index].setAttribute(\"tabindex\", \"-1\");\n }\n }\n}\n","import uuidv4 from \"../../lib/uuid.mjs\";\n\nexport class Picture {\n constructor($module) {\n this.$module = $module;\n this.$imageWrapper =\n $module && $module.querySelector(\".tna-picture__image-wrapper\");\n\n this.$transcriptToggle =\n this.$imageWrapper &&\n this.$imageWrapper.querySelector(\".tna-picture__toggle-transcript\");\n\n this.$transcript =\n $module && $module.querySelector(\".tna-picture__transcript\");\n this.transcriptOpened = false;\n\n if (\n !this.$module ||\n !this.$imageWrapper ||\n !this.$transcriptToggle ||\n !this.$transcript\n ) {\n return;\n }\n\n this.openLabel =\n this.$module.dataset.informationLabelOpen || \"Open transcript\";\n this.closeLabel =\n this.$module.dataset.informationLabelClose || \"Close transcript\";\n\n this.init();\n }\n\n init() {\n const uniqueId = `tna-picture-${uuidv4()}`;\n\n this.$transcriptToggle.removeAttribute(\"hidden\");\n this.$transcriptToggle.setAttribute(\"aria-controls\", uniqueId);\n this.$transcriptToggle.innerText = this.openLabel;\n this.$transcriptToggle.addEventListener(\"click\", () =>\n this.toggleTranscript(),\n );\n\n this.$transcript.setAttribute(\"id\", uniqueId);\n this.$transcript.setAttribute(\"hidden\", \"\");\n\n this.$transcript.addEventListener(\"keydown\", (event) => {\n switch (event.key) {\n case \"Escape\":\n this.toggleTranscript();\n this.$transcriptToggle.focus();\n break;\n default:\n break;\n }\n });\n }\n\n toggleTranscript() {\n this.transcriptOpened = !this.transcriptOpened;\n if (this.transcriptOpened) {\n this.$transcriptToggle.setAttribute(\"aria-expanded\", true);\n this.$transcriptToggle.innerText = this.closeLabel;\n this.$transcript.removeAttribute(\"hidden\");\n } else {\n this.$transcriptToggle.setAttribute(\"aria-expanded\", false);\n this.$transcriptToggle.innerText = this.openLabel;\n this.$transcript.setAttribute(\"hidden\", \"\");\n }\n }\n}\n","export class Sidebar {\n constructor($module, options = {}) {\n this.$module = $module;\n this.items =\n $module &&\n Array.from($module.querySelectorAll(\".tna-sidebar__item\"))\n .map(($item) => {\n const id = $item\n .querySelector(\".tna-sidebar__link[href^='#']\")\n .getAttribute(\"href\")\n /* eslint-disable-next-line no-magic-numbers */\n .substring(1);\n const target = document.getElementById(id);\n return {\n $item,\n id,\n target,\n };\n })\n .filter((item) => item.target);\n\n if (!this.$module || !this.items) {\n return;\n }\n\n /* eslint-disable-next-line no-magic-numbers */\n const { scrollTopThreshold = 0, disableHighlightSize = \"small\" } = options;\n this.scrollTopThreshold = scrollTopThreshold;\n this.disableHighlightSize = disableHighlightSize;\n\n this.init();\n }\n\n init() {\n this.breakpoints = {\n tiny:\n getComputedStyle(document.documentElement).getPropertyValue(\n \"--media-breakpoint-tiny\",\n ) || \"480px\",\n small:\n getComputedStyle(document.documentElement).getPropertyValue(\n \"--media-breakpoint-small\",\n ) || \"768px\",\n medium:\n getComputedStyle(document.documentElement).getPropertyValue(\n \"--media-breakpoint-medium\",\n ) || \"1024px\",\n };\n\n if (this.disableHighlightSize) {\n if (!Object.keys(this.breakpoints).includes(this.disableHighlightSize)) {\n throw new Error(\n `Invalid value for disableHighlightSize: ${this.disableHighlightSize}. Expected one of: ${Object.keys(this.breakpoints).join(\", \")}`,\n );\n }\n this.hideOnDevice = window.matchMedia(\n `(max-width: ${this.breakpoints[this.disableHighlightSize]})`,\n );\n } else {\n this.hideOnDevice = null;\n }\n\n this.currentItem = null;\n\n window.addEventListener(\"scroll\", () => this.highlightCurrentSection());\n window.addEventListener(\"resize\", () => this.highlightCurrentSection());\n this.highlightCurrentSection();\n }\n\n highlightCurrentSection() {\n if (this.hideOnDevice && this.hideOnDevice.matches) {\n this.items.forEach((item) => {\n item.$item.classList.remove(\"tna-sidebar__item--current\");\n });\n this.currentItem = null;\n return;\n }\n\n const $topItem = this.items.findLast(\n (item) =>\n Math.floor(item.target.getBoundingClientRect().top) <=\n this.scrollTopThreshold,\n );\n\n if ($topItem !== this.currentItem) {\n this.items.forEach((item) => {\n if ($topItem && item === $topItem) {\n this.currentItem = item;\n this.currentItem.$item.classList.add(\"tna-sidebar__item--current\");\n } else {\n item.$item.classList.remove(\"tna-sidebar__item--current\");\n }\n });\n }\n this.currentItem = $topItem || null;\n }\n}\n","export class SkipLink {\n linkedElementListener = false;\n\n constructor($module) {\n this.$module = $module;\n this.linkedElementId = $module.getAttribute(\"href\")?.split(\"#\").pop();\n this.$linkedElement =\n $module &&\n this.linkedElementId &&\n document.getElementById(this.linkedElementId);\n\n if (this.$module && this.$linkedElement) {\n this.$module.addEventListener(\"click\", () => this.focusLinkedElement());\n }\n }\n\n focusLinkedElement() {\n if (!this.$linkedElement.getAttribute(\"tabindex\")) {\n this.$linkedElement.setAttribute(\"tabindex\", \"-1\");\n this.$linkedElement.classList.add(\"tna-!--no-focus-style\");\n\n if (!this.linkedElementListener) {\n this.$linkedElement.addEventListener(\"blur\", () =>\n this.removeFocusProperties(),\n );\n this.linkedElementListener = true;\n }\n }\n\n this.$linkedElement.focus();\n }\n\n removeFocusProperties() {\n this.$linkedElement.removeAttribute(\"tabindex\");\n this.$linkedElement.classList.remove(\"tna-!--no-focus-style\");\n }\n}\n","export class Tabs {\n constructor($module) {\n this.$module = $module;\n this.$tabList = $module && $module.querySelector(\".tna-tabs__list\");\n this.$tabListItemLinks =\n $module &&\n this.$tabList &&\n this.$tabList.querySelectorAll(\".tna-tabs__button\");\n this.$tabItems = $module && $module.querySelectorAll(\".tna-tabs__item\");\n\n if (\n !this.$module ||\n !this.$tabList ||\n !this.$tabListItemLinks ||\n !this.$tabItems ||\n this.$tabListItemLinks.length !== this.$tabItems.length\n ) {\n return;\n }\n\n this.currentTabIndex = this.$module.dataset.activeTabOnLoad\n ? parseInt(this.$module.dataset.activeTabOnLoad, 10)\n : 0;\n this.previousTabIndex = this.currentTabIndex;\n this.allowClose = this.$module.dataset.allowClose === \"true\";\n this.init();\n }\n\n init() {\n this.$module.classList.add(\"tna-tabs--interactive\");\n this.$tabList.removeAttribute(\"hidden\");\n this.$tabListItemLinks.forEach(($tabListItemLink) => {\n const tabPanelID = $tabListItemLink.getAttribute(\"aria-controls\");\n $tabListItemLink.setAttribute(\"aria-selected\", false);\n const $tabPanel = document.getElementById(tabPanelID);\n $tabPanel.setAttribute(\"aria-labelledby\", $tabListItemLink.id);\n $tabPanel.setAttribute(\"role\", \"tabpanel\");\n $tabListItemLink.addEventListener(\n \"click\",\n (event) => this.handleItemLinkClick(event),\n true,\n );\n });\n this.switchTabByIndex(this.currentTabIndex);\n this.$module.addEventListener(\"keydown\", (event) =>\n this.handleItemLinkKeyDown(event),\n );\n }\n\n handleItemLinkClick(itemLinkClickEvent) {\n itemLinkClickEvent.preventDefault();\n const targetItem =\n itemLinkClickEvent.currentTarget.getAttribute(\"aria-controls\");\n this.switchTabByID(targetItem);\n }\n\n handleItemLinkKeyDown(itemLinkKeyDownEvent) {\n let preventDefaultKeyAction = false;\n switch (itemLinkKeyDownEvent.key) {\n case \"ArrowLeft\":\n case \"ArrowUp\":\n this.previousTab();\n preventDefaultKeyAction = true;\n break;\n case \"ArrowRight\":\n case \"ArrowDown\":\n this.nextTab();\n preventDefaultKeyAction = true;\n break;\n case \"Home\":\n /* eslint-disable-next-line no-magic-numbers */\n this.switchTabByIndex(0, true, true);\n preventDefaultKeyAction = true;\n break;\n case \"End\":\n /* eslint-disable-next-line no-magic-numbers */\n this.switchTabByIndex(this.$tabListItemLinks.length - 1, true, true);\n preventDefaultKeyAction = true;\n break;\n default:\n break;\n }\n if (preventDefaultKeyAction) {\n itemLinkKeyDownEvent.stopPropagation();\n itemLinkKeyDownEvent.preventDefault();\n }\n }\n\n nextTab() {\n /* eslint-disable-next-line no-magic-numbers */\n if (this.previousTabIndex < this.$tabListItemLinks.length - 1) {\n /* eslint-disable-next-line no-magic-numbers */\n this.switchTabByIndex(this.previousTabIndex + 1, true);\n } else {\n /* eslint-disable-next-line no-magic-numbers */\n this.switchTabByIndex(0, true);\n }\n }\n\n previousTab() {\n /* eslint-disable-next-line no-magic-numbers */\n if (this.previousTabIndex >= 1) {\n /* eslint-disable-next-line no-magic-numbers */\n this.switchTabByIndex(this.previousTabIndex - 1, true);\n } else {\n /* eslint-disable-next-line no-magic-numbers */\n this.switchTabByIndex(this.$tabListItemLinks.length - 1, true);\n }\n }\n\n switchTabByIndex(newIndex, switchFocus = false, disallowClose = false) {\n this.currentTabIndex = newIndex;\n this.previousTabIndex = this.currentTabIndex;\n const isTabAlreadySelected =\n this.$tabListItemLinks[this.currentTabIndex]\n ?.getAttribute(\"aria-selected\")\n .toString() === \"true\";\n if (isTabAlreadySelected && this.allowClose && !disallowClose) {\n this.currentTabIndex = -1;\n }\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(\n \"tabindex\",\n this.currentTabIndex === -1 ? \"0\" : \"-1\",\n );\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(\n \"tabindex\",\n this.currentTabIndex === -1 ? \"0\" : \"-1\",\n );\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 this.enhancedHint = enhancedHint || \"Enter an item and press enter\";\n\n this.init();\n }\n\n init() {\n this.values = this.$formFieldInput.value\n .split(\"\\n\")\n .map((value) => value.trim())\n .filter((value) => value);\n\n this.id = this.$formFieldInput.id;\n\n this.$formFieldNewInput = document.createElement(\"input\");\n this.$formFieldNewInput.classList.add(\"tna-text-input\");\n [\"id\", \"aria-describedby\"].forEach((attribute) => {\n this.$formFieldNewInput.setAttribute(\n attribute,\n this.$formFieldInput.getAttribute(attribute),\n );\n this.$formFieldInput.removeAttribute(attribute);\n });\n this.$formFieldBody.appendChild(this.$formFieldNewInput);\n this.$formFieldInput.setAttribute(\"hidden\", \"\");\n this.$formFieldInput.addEventListener(\"keyup\", () => this.updateList());\n this.$formFieldNewInput.addEventListener(\"keypress\", (event) => {\n if (event.key === \"Enter\") {\n this.appendValue(event.target.value);\n }\n });\n\n this.$formFieldNewInputAddButton = document.createElement(\"button\");\n this.$formFieldNewInputAddButton.setAttribute(\"type\", \"button\");\n this.$formFieldNewInputAddButton.classList.add(\n \"tna-button\",\n \"tna-button--small\",\n );\n this.$formFieldNewInputAddButtonInner = document.createElement(\"span\");\n this.$formFieldNewInputAddButtonInner.innerText = \"Add\";\n this.$formFieldNewInputAddButtonInnerExtra = document.createElement(\"span\");\n this.$formFieldNewInputAddButtonInnerExtra.classList.add(\n \"tna-visually-hidden\",\n );\n this.$formFieldNewInputAddButtonInnerExtra.innerText = \" to list\";\n this.$formFieldNewInputAddButtonInner.appendChild(\n this.$formFieldNewInputAddButtonInnerExtra,\n );\n this.$formFieldNewInputAddButton.appendChild(\n this.$formFieldNewInputAddButtonInner,\n );\n this.$formFieldBody.appendChild(this.$formFieldNewInputAddButton);\n this.$formFieldNewInputAddButton.addEventListener(\"click\", () => {\n this.appendValue(this.$formFieldNewInput.value);\n });\n\n this.$formFieldLiveAria = document.createElement(\"div\");\n this.$formFieldLiveAria.setAttribute(\"aria-live\", \"assertive\");\n this.$formFieldLiveAria.classList.add(\"tna-visually-hidden\");\n this.$module.appendChild(this.$formFieldLiveAria);\n\n this.$formFieldCounter = document.createElement(\"p\");\n this.$formFieldCounter.id = `${this.id}-list-helper`;\n this.$formFieldCounter.classList.add(\"tna-!--margin-top-xs\");\n this.$module.appendChild(this.$formFieldCounter);\n\n this.$formFieldNewInput.setAttribute(\n \"aria-describedby\",\n `${this.$formFieldNewInput.getAttribute(\"aria-describedby\")} ${\n this.$formFieldCounter.id\n }`,\n );\n\n this.$valuesList = document.createElement(\"ul\");\n this.$valuesList.classList.add(\n \"tna-compound-filters\",\n \"tna-!--margin-top-xs\",\n );\n this.$valuesList.addEventListener(\"blur\", () => {\n this.$valuesList.removeAttribute(\"tabindex\");\n this.updateAriaText(\"\");\n });\n this.$module.appendChild(this.$valuesList);\n\n if (!this.$formFieldInputHint) {\n this.$formFieldInputHint = document.createElement(\"p\");\n this.$formFieldInputHint.classList.add(\"tna-form-item__hint\");\n this.$formFieldBody.parentNode.insertBefore(\n this.$formFieldInputHint,\n this.$formFieldBody,\n );\n }\n this.$formFieldInputHint.innerText = this.enhancedHint;\n\n this.updateList();\n }\n\n updateAriaText(content) {\n this.$formFieldLiveAria.innerText = content;\n }\n\n /* eslint-disable-next-line class-methods-use-this */\n normaliseValue(value) {\n return value.replace(/\\s{2,}/u, \" \").trim();\n }\n\n isValueInList(value) {\n return this.values\n .map((eachValue) => this.normaliseValue(eachValue).toLowerCase())\n .includes(value.toLowerCase().trim());\n }\n\n appendValue(value) {\n const newValue = this.normaliseValue(value);\n if (newValue) {\n if (this.isValueInList(newValue)) {\n this.updateAriaText(`'${newValue}' already added`);\n } else {\n this.values.push(newValue);\n this.$formFieldInput.value = this.values.join(\"\\n\");\n this.updateList();\n this.updateAriaText(`'${newValue}' added`);\n }\n } else {\n this.updateAriaText(\"Enter an item to add\");\n }\n this.$formFieldNewInput.value = \"\";\n this.$formFieldNewInput.focus();\n }\n\n removeValue(value) {\n const removeValue = this.normaliseValue(value);\n if (removeValue && this.isValueInList(removeValue)) {\n this.values = this.values.filter(\n (existingValue) => existingValue !== removeValue,\n );\n this.$formFieldInput.value = this.values.join(\"\\n\");\n this.updateList();\n this.updateAriaText(`'${removeValue}' removed`);\n }\n if (this.values.length) {\n this.$valuesList.setAttribute(\"tabindex\", \"0\");\n this.$valuesList.focus();\n } else {\n this.$formFieldNewInput.focus();\n }\n }\n\n updateList() {\n this.$valuesList.innerHTML = \"\";\n this.values\n .map((value) => {\n const $item = document.createElement(\"li\");\n $item.classList.add(\"tna-compound-filters__item\");\n const $itemLabel = document.createElement(\"span\");\n $itemLabel.innerText = value;\n $item.appendChild($itemLabel);\n\n const $removeItemButton = document.createElement(\"button\");\n $removeItemButton.innerText = `Remove '${value}'`;\n $removeItemButton.setAttribute(\"type\", \"button\");\n $removeItemButton.classList.add(\"tna-compound-filters__link\");\n $removeItemButton.addEventListener(\"click\", () => {\n this.removeValue(value);\n });\n $item.appendChild($removeItemButton);\n return $item;\n })\n .forEach(($item) => this.$valuesList.appendChild($item));\n\n let innerTextItemValue = \"item\";\n /* eslint-disable-next-line no-magic-numbers */\n if (this.values.length !== 1) {\n innerTextItemValue += \"s\";\n }\n const innerTextValue = `${this.values.length} ${innerTextItemValue} added`;\n this.$formFieldCounter.innerText = innerTextValue;\n }\n}\n","import uuidv4 from \"./uuid.mjs\";\n\nexport const iso8601ToPrettyDatetime = (dateStr) => {\n const datetime = dateStr;\n\n if (!datetime) {\n throw new Error(\"No datetime provided\");\n }\n const isDateTime =\n /^\\d{4}(?:-\\d{2}){2}(?:T| )\\d{2}(?::\\d{2}){1,2}(?:\\.\\d+)?(?:Z|(?:[+-]\\d{2}:\\d{2}))?$/u.test(\n datetime,\n );\n const isDate = /^\\d{4}(?:-\\d{2}){2}$/u.test(datetime);\n if (!isDateTime && !isDate) {\n throw new Error(\"Invalid datetime provided\");\n }\n\n const date = new Date(datetime);\n if (!(date instanceof Date) || isNaN(date)) {\n throw new Error(\"Invalid datetime provided\");\n }\n\n const dayString = date.toLocaleDateString(\"en-GB\", {\n weekday: \"long\",\n });\n const dateString = date.toLocaleDateString(\"en-GB\", {\n day: \"numeric\",\n month: \"long\",\n year: \"numeric\",\n });\n\n if (isDateTime && (date.getHours() || date.getMinutes())) {\n let timeString = date.toLocaleTimeString(\"en-GB\", {\n hour: \"2-digit\",\n minute: \"2-digit\",\n });\n if (date.getSeconds()) {\n timeString = date.toLocaleTimeString(\"en-GB\", {\n hour: \"2-digit\",\n minute: \"2-digit\",\n second: \"2-digit\",\n });\n }\n return `${dayString} ${dateString}, ${timeString}`;\n }\n return `${dayString} ${dateString}`;\n};\n\n/*\n * ==========================================\n * Transform any <time> element into a pretty\n * and human readable format that is based on\n * the valid ISO 8601 datetime attribute. The\n * replaced value will be localised according\n * to user's system settings, repurposing the\n * original text content as a title attribute\n * to allow users to see the value. A null or\n * invalid datetime format will result in the\n * element not being modified. If the updated\n * value is similar to the starting value for\n * the element text content, then the element\n * will not be updated to avoid redundancy.\n * ------------------------------------------\n * For example if the user's system has a UTC\n * timezone set then the element:\n *\n * <time\n * datetime=\"2026-03-05T13:48:00-05:00\"\n * >\n * 5 March 2026, 13:48 (UTC -5)\n * </time>\n *\n * would become:\n *\n * <time\n * datetime=\"2026-03-05T13:48:00-05:00\"\n * title=\"5 March 2026, 13:48 (UTC -5)\"\n * >\n * Thursday 5 March 2026, 09:48\n * </time>\n * ==========================================\n */\nexport const updateTimeElement = ($el) => {\n const datetime = $el.getAttribute(\"datetime\");\n\n try {\n const prettyDatetime = iso8601ToPrettyDatetime(datetime);\n if (!prettyDatetime.includes($el.textContent)) {\n $el.setAttribute(\"title\", $el.textContent);\n $el.textContent = prettyDatetime;\n }\n // eslint-disable-next-line no-unused-vars\n } catch (error) {\n // Do nothing if the datetime is invalid or not provided\n }\n};\n\nexport const checkTableForScroll = ($tableWrapper) => {\n const $caption = $tableWrapper.querySelector(\"caption\");\n if (!($tableWrapper.dataset.tableScrollInitialised === \"true\")) {\n if ($caption && !$caption.id) {\n $caption.id = `table-caption-${uuidv4()}`;\n }\n $tableWrapper.dataset.tableScrollInitialised = \"true\";\n }\n if ($tableWrapper.scrollWidth > $tableWrapper.clientWidth) {\n $tableWrapper.setAttribute(\"tabindex\", \"0\");\n $tableWrapper.setAttribute(\"role\", \"region\");\n $tableWrapper.setAttribute(\"aria-labelledby\", $caption?.id || \"\");\n $tableWrapper.classList.add(\"tna-table-wrapper--scroll\");\n } else {\n $tableWrapper.removeAttribute(\"tabindex\");\n $tableWrapper.removeAttribute(\"role\");\n $tableWrapper.removeAttribute(\"aria-labelledby\");\n $tableWrapper.classList.remove(\"tna-table-wrapper--scroll\");\n }\n};\n","/* eslint-disable no-magic-numbers */\n/* eslint-disable no-bitwise */\nconst uuidv4 = () =>\n ([1e7] + -1e3 + -4e3 + -8e3 + -1e11).replace(/[018]/gu, (char) =>\n (\n char ^\n (crypto.getRandomValues(new Uint8Array(1))[0] & (15 >> (char / 4)))\n ).toString(16),\n );\n\nexport default uuidv4;\n","// The module cache\nconst __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tconst 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\tconst 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/value functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tif(Array.isArray(definition)) {\n\t\tvar i = 0;\n\t\twhile(i < definition.length) {\n\t\t\tvar key = definition[i++];\n\t\t\tvar binding = definition[i++];\n\t\t\tvar descriptor = binding === 0 ? { enumerable: true, value: definition[i++] } : { enumerable: true, get: binding };\n\t\t\tif(!__webpack_require__.o(exports, key)) Object.defineProperty(exports, key, descriptor);\n\t\t}\n\t} else {\n\t\tfor(var key in definition) {\n\t\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t\t}\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\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","/* eslint-disable no-new */\nimport { Accordion } from \"./components/accordion/accordion.mjs\";\nimport { Breadcrumbs } from \"./components/breadcrumbs/breadcrumbs.mjs\";\nimport { CodeBlock } from \"./components/code-block/code-block.mjs\";\nimport { CookieBanner } from \"./components/cookie-banner/cookie-banner.mjs\";\nimport { DateInputProgressive } from \"./components/date-input/date-input.mjs\";\nimport { ErrorSummary } from \"./components/error-summary/error-summary.mjs\";\nimport { FileInputDroppable } from \"./components/file-input/file-input.mjs\";\nimport { Footer } from \"./components/footer/footer.mjs\";\nimport { Gallery } from \"./components/gallery/gallery.mjs\";\nimport { GlobalHeader } from \"./components/global-header/global-header.mjs\";\nimport { Header } from \"./components/header/header.mjs\";\nimport { Picture } from \"./components/picture/picture.mjs\";\nimport { Sidebar } from \"./components/sidebar/sidebar.mjs\";\nimport { SkipLink } from \"./components/skip-link/skip-link.mjs\";\nimport { Tabs } from \"./components/tabs/tabs.mjs\";\nimport { TextInputPassword } from \"./components/text-input/text-input.mjs\";\nimport { TextAreaItemisedRows } from \"./components/textarea/textarea.mjs\";\nimport { checkTableForScroll, updateTimeElement } from \"./lib/helpers.mjs\";\n\nconst initAll = (options = {}) => {\n const { scope } = options;\n let $scope = document;\n if (scope) {\n if (scope instanceof HTMLElement) {\n $scope = scope;\n } else {\n throw new Error(\"Scope must be an HTMLElement\");\n }\n }\n const $html = document.documentElement;\n $html.classList.add(\"tna-template--js-enabled\");\n\n const onFirstTouch = () => {\n window.removeEventListener(\"touchstart\", onFirstTouch);\n $html.classList.add(\"tna-template--touched\");\n };\n window.addEventListener(\"touchstart\", onFirstTouch);\n\n const onKeyDown = (event) => {\n if (event.key === \"Tab\") {\n $html.classList.add(\"tna-template--tabbed\");\n $html.classList.remove(\"tna-template--clicked\");\n }\n };\n window.addEventListener(\"keydown\", onKeyDown);\n\n const onMouseDown = () => {\n $html.classList.add(\"tna-template--clicked\");\n $html.classList.remove(\"tna-template--tabbed\");\n };\n window.addEventListener(\"mousedown\", onMouseDown);\n\n /*\n * ==========================================\n * Checks if widths of all tables on the page\n * are wider than their parent container, and\n * allowing horizontal scrolling if they are.\n * This is done both on load and on resize.\n * ==========================================\n */\n const $tableWrappers = $scope.querySelectorAll(\".tna-table-wrapper\");\n $tableWrappers.forEach(($tableWrapper) => checkTableForScroll($tableWrapper));\n window.addEventListener(\"resize\", () => {\n $tableWrappers.forEach(($tableWrapper) =>\n checkTableForScroll($tableWrapper),\n );\n });\n\n // Remove this opt-in class in a later release\n if ($html.classList.contains(\"tna-template--enhance-time-elements\")) {\n document.querySelectorAll(\"time[datetime]\").forEach(updateTimeElement);\n }\n\n const $accordions = $scope.querySelectorAll('[data-module=\"tna-accordion\"]');\n $accordions.forEach(($accordion) => {\n new Accordion($accordion);\n });\n\n const $breadcrumbs = $scope.querySelector('[data-module=\"tna-breadcrumbs\"]');\n if ($breadcrumbs) {\n new Breadcrumbs($breadcrumbs);\n }\n\n const $codeBlocks = $scope.querySelectorAll('[data-module=\"tna-code-block\"]');\n $codeBlocks.forEach(($codeBlock) => {\n new CodeBlock($codeBlock);\n });\n\n const $cookieBanner = $scope.querySelector(\n '[data-module=\"tna-cookie-banner\"]',\n );\n if ($cookieBanner) {\n new CookieBanner($cookieBanner);\n }\n\n const $progressiveDateInputs = $scope.querySelectorAll(\n '[data-module=\"tna-date-input-progressive\"]',\n );\n $progressiveDateInputs.forEach(($dateInput) => {\n new DateInputProgressive($dateInput);\n });\n\n const $errorSummary = $scope.querySelector(\n '[data-module=\"tna-error-summary\"]',\n );\n if ($errorSummary) {\n new ErrorSummary($errorSummary).init();\n }\n\n const $fileInputs = $scope.querySelectorAll('[data-module=\"tna-file-input\"]');\n $fileInputs.forEach(($fileInput) => {\n new FileInputDroppable($fileInput);\n });\n\n const $footer = $scope.querySelector('[data-module=\"tna-footer\"]');\n if ($footer) {\n new Footer($footer);\n }\n\n const $galleries = $scope.querySelectorAll('[data-module=\"tna-gallery\"]');\n $galleries.forEach(($gallery) => {\n new Gallery($gallery);\n });\n\n const $globalHeader = $scope.querySelector(\n '[data-module=\"tna-global-header\"]',\n );\n if ($globalHeader) {\n new GlobalHeader($globalHeader);\n }\n\n const $header = $scope.querySelector('[data-module=\"tna-header\"]');\n if ($header) {\n new Header($header);\n }\n\n const $pictures = $scope.querySelectorAll('[data-module=\"tna-picture\"]');\n $pictures.forEach(($picture) => {\n new Picture($picture);\n });\n\n const $sidebar = $scope.querySelector('[data-module=\"tna-sidebar-sections\"]');\n if ($sidebar) {\n const { scrollTopThreshold, disableHighlightSize } = $sidebar.dataset;\n new Sidebar($sidebar, { scrollTopThreshold, disableHighlightSize });\n }\n\n const $skipLinks = $scope.querySelectorAll('[data-module=\"tna-skip-link\"]');\n $skipLinks.forEach(($skipLink) => {\n new SkipLink($skipLink);\n });\n\n const $tabs = $scope.querySelectorAll('[data-module=\"tna-tabs\"]');\n $tabs.forEach(($tabModule) => {\n new Tabs($tabModule);\n });\n\n const $textAreaItemisedRows = $scope.querySelectorAll(\n '[data-module=\"tna-textarea-itemised-rows\"]',\n );\n $textAreaItemisedRows.forEach(($textAreaWithItemisedRows) => {\n const { enhancedHint } = $textAreaWithItemisedRows.dataset;\n new TextAreaItemisedRows($textAreaWithItemisedRows, { enhancedHint });\n });\n\n const $textInputPasswords = $scope.querySelectorAll(\n '[data-module=\"tna-text-input-password\"]',\n );\n $textInputPasswords.forEach(($textInputPassword) => {\n new TextInputPassword($textInputPassword);\n });\n\n window.matchMedia(\"print\").addEventListener(\"change\", (evt) => {\n if (evt.matches) {\n $scope\n .querySelectorAll(\".tna-details__details:not([open])\")\n .forEach(($element) => {\n $element.setAttribute(\"open\", \"\");\n $element.dataset.wasClosed = \"\";\n });\n $scope\n .querySelectorAll(\n \".tna-accordion__content[hidden], .tna-picture__transcript[hidden]\",\n )\n .forEach(($element) => {\n $element.removeAttribute(\"hidden\");\n $element.dataset.wasClosed = \"\";\n });\n } else {\n $scope\n .querySelectorAll(\".tna-details__details[data-was-closed]\")\n .forEach(($element) => {\n $element.removeAttribute(\"open\");\n delete $element.dataset.wasClosed;\n });\n $scope\n .querySelectorAll(\n \".tna-accordion__content[data-was-closed], .tna-picture__transcript[data-was-closed]\",\n )\n .forEach(($element) => {\n $element.setAttribute(\"hidden\", \"\");\n $element.dataset.wasClosed = \"\";\n });\n }\n });\n};\n\nexport {\n initAll,\n Accordion,\n Breadcrumbs,\n CodeBlock,\n CookieBanner,\n DateInputProgressive,\n ErrorSummary,\n FileInputDroppable,\n Footer,\n Gallery,\n GlobalHeader,\n Header,\n Picture,\n Sidebar,\n SkipLink,\n Tabs,\n TextInputPassword,\n TextAreaItemisedRows,\n checkTableForScroll,\n updateTimeElement,\n};\n"],"names":["BRAND","Symbol","for","CookieEventHandler","events","oneTimeEvents","constructor","window","TNAFrontendCookieEvents","this","clearAll","on","event","callback","once","trigger","data","Object","hasOwn","forEach","eventToTrigger","call","eachEvent","Cookies","defaultDomain","defaultPath","secure","preferencesKey","defaultAge","preferencesCorrectOnInit","tnaCookiePreferences","options","preferencesSetKey","noInit","docDataset","document","documentElement","dataset","tnaCookiesDomain","location","hostname","tnaCookiesPath","tnaCookiesInsecure","tnaCookiesPreferencesKey","tnaCookiesPreferencesSetKey","parseInt","tnaCookiesDefaultAge","validatePreferences","preferences","preferencesSet","init","existingPreferences","filteredExistingPreferences","fromEntries","keys","filter","preference","includes","map","savePreferences","usage","settings","marketing","essential","length","every","all","deserialised","cookie","split","trim","parts","key","value","decodeURIComponent","JSON","parse","get","error","exists","hasValue","set","maxAge","sameSite","domain","path","session","secureString","sessionString","encodeURIComponent","cookieDetails","deleteAll","delete","details","enablePreference","Error","setPreference","disablePreference","accepted","enableAllPreferences","allPreferences","toLowerCase","disableAllPreferences","stringify","Accordion","$module","$items","querySelectorAll","allowMultipleItemsOpen","singleOpenItem","$item","initItem","initState","$toggleAllButton","querySelector","syncToggleAllButton","removeAttribute","addEventListener","isAllOpen","closeItem","openItem","$heading","$content","classList","add","remove","setAttribute","$headingButton","createElement","id","innerText","appendChild","getAttribute","isopen","closeAllItemsExcept","$tableWrapper","$wrapper","_lib_helpers_mjs__WEBPACK_IMPORTED_MODULE_0__","DJ","$excludeItem","Array","from","closeAllLabel","openAllLabel","Breadcrumbs","$breadcrumbsList","$breadcrumbs","contains","uniqueId","_lib_uuid_mjs__WEBPACK_IMPORTED_MODULE_0__","A","$expandable","style","display","$expandButton","innerHTML","focus","insertBefore","nextSibling","CodeBlock","$code","$copyButton","navigator","clipboard","async","writeText","CookieBanner","$acceptButton","$rejectButton","$prompt","$acceptedMessage","$rejectedMessage","$closeButtons","cookies","_nationalarchives_cookies_src_index_js__WEBPACK_IMPORTED_MODULE_0__","accept","reject","$closeButton","close","showPanel","$panel","DateInputProgressive","$yearWrapper","$yearInput","$monthWrapper","$monthInput","$dayWrapper","$dayInput","update","isValidYear","showMonth","isValidMonth","showDay","hideDay","hideMonth","yearValue","isNaN","monthRawValue","monthIntValue","ErrorSummary","disableAutofocus","setFocus","handleClick","$element","isFocusable","onBlur","onBeforeFocus","$target","target","focusTarget","preventDefault","getFragmentFromUrl","url","pop","HTMLAnchorElement","inputId","href","$input","getElementById","$legendOrLabel","getAssociatedLegendOrLabel","scrollIntoView","preventScroll","$fieldset","closest","$legends","getElementsByTagName","$candidateLegend","HTMLInputElement","type","legendTop","getBoundingClientRect","top","inputRect","height","innerHeight","FileInputDroppable","$body","acceptMutltipleFiles","hasAttribute","$droppableArea","$pseudoSelectFileText","fileText","textContent","$droppableButtons","$pseudoSelectFileButton","$pseudoDropFileButton","$droppableAreaAriaLabel","showDropTarget","hideDropTarget","onChange","isContainingFiles","dataTransfer","hasNoTypesInfo","types","isDraggingFiles","some","updateAriaLabel","classToAdd","items","files","name","Footer","themeCookieName","$themeSelector","$themeSelectorNotice","$themeSelectorEnableSettingsCookiesButton","$tnaTemplate","currentTheme","themeOnLoad","$themeSelectorButtons","$themeSelectorButton","$button","setTheme","selectThemeSelectorButton","showThemeSelector","$currentThemeButton","find","theme","$selectedButton","Gallery","$itemsContainer","$navigation","$navigationItems","$navigationButtons","$navigationButtonPrev","$navigationButtonNext","setup","currentId","showItem","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","index","Header","Picture","$imageWrapper","$transcriptToggle","$transcript","transcriptOpened","openLabel","informationLabelOpen","closeLabel","informationLabelClose","toggleTranscript","Sidebar","substring","item","scrollTopThreshold","disableHighlightSize","breakpoints","tiny","getComputedStyle","getPropertyValue","small","medium","join","hideOnDevice","currentItem","highlightCurrentSection","$topItem","findLast","Math","floor","SkipLink","linkedElementListener","linkedElementId","$linkedElement","focusLinkedElement","removeFocusProperties","Tabs","$tabList","$tabListItemLinks","$tabItems","currentTabIndex","activeTabOnLoad","previousTabIndex","allowClose","$tabListItemLink","tabPanelID","$tabPanel","handleItemLinkClick","switchTabByIndex","handleItemLinkKeyDown","itemLinkClickEvent","targetItem","currentTarget","switchTabByID","itemLinkKeyDownEvent","previousTab","nextTab","newIndex","switchFocus","disallowClose","toString","$tabItem","targetId","TextInputPassword","$textInputWrapper","$textInputPasswordToggle","updateTogglePasswordButtonText","togglePasswordType","TextAreaItemisedRows","$formFieldInput","$formFieldInputHint","$formFieldBody","enhancedHint","values","$formFieldNewInput","attribute","updateList","appendValue","$formFieldNewInputAddButton","$formFieldNewInputAddButtonInner","$formFieldNewInputAddButtonInnerExtra","$formFieldLiveAria","$formFieldCounter","$valuesList","updateAriaText","parentNode","content","normaliseValue","replace","isValueInList","eachValue","newValue","push","removeValue","existingValue","$itemLabel","$removeItemButton","innerTextItemValue","innerTextValue","$caption","tableScrollInitialised","_uuid_mjs__WEBPACK_IMPORTED_MODULE_0__","scrollWidth","clientWidth","$el","datetime","prettyDatetime","dateStr","isDateTime","test","isDate","date","Date","dayString","toLocaleDateString","weekday","dateString","day","month","year","getHours","getMinutes","timeString","toLocaleTimeString","hour","minute","getSeconds","second","iso8601ToPrettyDatetime","char","crypto","getRandomValues","Uint8Array","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","module","__webpack_modules__","d","definition","isArray","i","binding","descriptor","enumerable","o","defineProperty","obj","prop","prototype","hasOwnProperty","r","toStringTag","scope","$scope","HTMLElement","$html","onFirstTouch","removeEventListener","$tableWrappers","_lib_helpers_mjs__WEBPACK_IMPORTED_MODULE_17__","FH","$accordion","_components_accordion_accordion_mjs__WEBPACK_IMPORTED_MODULE_0__","_components_breadcrumbs_breadcrumbs_mjs__WEBPACK_IMPORTED_MODULE_1__","$codeBlock","_components_code_block_code_block_mjs__WEBPACK_IMPORTED_MODULE_2__","$cookieBanner","_components_cookie_banner_cookie_banner_mjs__WEBPACK_IMPORTED_MODULE_3__","$dateInput","_components_date_input_date_input_mjs__WEBPACK_IMPORTED_MODULE_4__","$errorSummary","_components_error_summary_error_summary_mjs__WEBPACK_IMPORTED_MODULE_5__","$fileInput","_components_file_input_file_input_mjs__WEBPACK_IMPORTED_MODULE_6__","$footer","_components_footer_footer_mjs__WEBPACK_IMPORTED_MODULE_7__","$gallery","_components_gallery_gallery_mjs__WEBPACK_IMPORTED_MODULE_8__","$globalHeader","_components_global_header_global_header_mjs__WEBPACK_IMPORTED_MODULE_9__","$header","_components_header_header_mjs__WEBPACK_IMPORTED_MODULE_10__","$picture","_components_picture_picture_mjs__WEBPACK_IMPORTED_MODULE_11__","$sidebar","_components_sidebar_sidebar_mjs__WEBPACK_IMPORTED_MODULE_12__","$skipLink","_components_skip_link_skip_link_mjs__WEBPACK_IMPORTED_MODULE_13__","$tabModule","_components_tabs_tabs_mjs__WEBPACK_IMPORTED_MODULE_14__","$textAreaWithItemisedRows","_components_textarea_textarea_mjs__WEBPACK_IMPORTED_MODULE_16__","$textInputPassword","_components_text_input_text_input_mjs__WEBPACK_IMPORTED_MODULE_15__","evt","wasClosed"],"sourceRoot":""}