@nationalarchives/frontend 1.4.0 → 1.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/nationalarchives/all+analytics.js +1 -1
- package/nationalarchives/all+analytics.js.map +1 -1
- package/nationalarchives/all.css +1 -1
- package/nationalarchives/all.css.map +1 -1
- package/nationalarchives/all.js +1 -1
- package/nationalarchives/all.js.map +1 -1
- package/nationalarchives/analytics.js +1 -1
- package/nationalarchives/analytics.js.map +1 -1
- package/nationalarchives/components/accordion/accordion.css +1 -1
- package/nationalarchives/components/accordion/accordion.css.map +1 -1
- package/nationalarchives/components/breadcrumbs/breadcrumbs.css.map +1 -1
- package/nationalarchives/components/breadcrumbs/breadcrumbs.js +1 -1
- package/nationalarchives/components/breadcrumbs/breadcrumbs.js.map +1 -1
- package/nationalarchives/components/breadcrumbs/breadcrumbs.mjs +1 -1
- package/nationalarchives/components/button/button.css +1 -1
- package/nationalarchives/components/button/button.css.map +1 -1
- package/nationalarchives/components/card/card.css +1 -1
- package/nationalarchives/components/card/card.css.map +1 -1
- package/nationalarchives/components/checkboxes/checkboxes.css.map +1 -1
- package/nationalarchives/components/checkboxes/fixtures.json +1 -1
- package/nationalarchives/components/code-block/code-block.css +1 -1
- package/nationalarchives/components/code-block/code-block.css.map +1 -1
- package/nationalarchives/components/compound-filters/compound-filters.css +1 -1
- package/nationalarchives/components/compound-filters/compound-filters.css.map +1 -1
- package/nationalarchives/components/cookie-banner/cookie-banner.js +1 -1
- package/nationalarchives/components/cookie-banner/cookie-banner.js.map +1 -1
- package/nationalarchives/components/date-input/fixtures.json +1 -1
- package/nationalarchives/components/date-search/fixtures.json +1 -1
- package/nationalarchives/components/error-summary/error-summary.css +1 -1
- package/nationalarchives/components/error-summary/error-summary.css.map +1 -1
- package/nationalarchives/components/fieldset/fieldset.css +1 -1
- package/nationalarchives/components/fieldset/fieldset.css.map +1 -1
- package/nationalarchives/components/fieldset/template.njk +1 -1
- package/nationalarchives/components/file-input/file-input.css.map +1 -1
- package/nationalarchives/components/file-input/fixtures.json +1 -1
- package/nationalarchives/components/files-list/files-list.css +1 -1
- package/nationalarchives/components/files-list/files-list.css.map +1 -1
- package/nationalarchives/components/footer/fixtures.json +3 -3
- package/nationalarchives/components/footer/footer.js +1 -1
- package/nationalarchives/components/footer/footer.js.map +1 -1
- package/nationalarchives/components/footer/template.njk +2 -2
- package/nationalarchives/components/gallery/gallery.css +1 -1
- package/nationalarchives/components/gallery/gallery.css.map +1 -1
- package/nationalarchives/components/index-grid/fixtures.json +1 -1
- package/nationalarchives/components/index-grid/index-grid.css +1 -1
- package/nationalarchives/components/index-grid/index-grid.css.map +1 -1
- package/nationalarchives/components/index-grid/template.njk +1 -1
- package/nationalarchives/components/pagination/pagination.css +1 -1
- package/nationalarchives/components/pagination/pagination.css.map +1 -1
- package/nationalarchives/components/picture/fixtures.json +1 -1
- package/nationalarchives/components/picture/picture.css +1 -1
- package/nationalarchives/components/picture/picture.css.map +1 -1
- package/nationalarchives/components/radios/fixtures.json +1 -1
- package/nationalarchives/components/radios/radios.css.map +1 -1
- package/nationalarchives/components/select/fixtures.json +1 -1
- package/nationalarchives/components/skip-link/skip-link.css +1 -1
- package/nationalarchives/components/skip-link/skip-link.css.map +1 -1
- package/nationalarchives/components/tabs/fixtures.json +133 -12
- package/nationalarchives/components/tabs/macro-options.json +13 -0
- package/nationalarchives/components/tabs/tabs.css +1 -1
- package/nationalarchives/components/tabs/tabs.css.map +1 -1
- package/nationalarchives/components/tabs/tabs.js +1 -1
- package/nationalarchives/components/tabs/tabs.js.map +1 -1
- package/nationalarchives/components/tabs/tabs.mjs +12 -11
- package/nationalarchives/components/tabs/tabs.scss +13 -2
- package/nationalarchives/components/tabs/template.njk +8 -5
- package/nationalarchives/components/tags/tags.css +1 -1
- package/nationalarchives/components/tags/tags.css.map +1 -1
- package/nationalarchives/components/text-input/fixtures.json +1 -1
- package/nationalarchives/components/textarea/fixtures.json +1 -1
- package/nationalarchives/components/warning/warning.css +1 -1
- package/nationalarchives/components/warning/warning.css.map +1 -1
- package/nationalarchives/error-page.css +1 -1
- package/nationalarchives/error-page.css.map +1 -1
- package/nationalarchives/ie.css.map +1 -1
- package/nationalarchives/prototype-kit.css +1 -1
- package/nationalarchives/prototype-kit.css.map +1 -1
- package/nationalarchives/tools/_a11y.scss +2 -0
- package/nationalarchives/tools/_spacing.scss +2 -1
- package/nationalarchives/utilities/a11y/_index.scss +1 -2
- package/nationalarchives/utilities/forms/form-item.njk +1 -1
- package/nationalarchives/utilities/typography/_index.scss +13 -5
- package/package.json +3 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"all+analytics.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/all.mjs","webpack://TNAFrontend/./src/nationalarchives/lib/analytics-helpers.mjs","webpack://TNAFrontend/./src/nationalarchives/components/file-input/analytics.js","webpack://TNAFrontend/./src/nationalarchives/analytics.mjs","webpack://TNAFrontend/./src/nationalarchives/components/accordion/analytics.js","webpack://TNAFrontend/./src/nationalarchives/components/breadcrumbs/analytics.js","webpack://TNAFrontend/./src/nationalarchives/components/checkboxes/analytics.js","webpack://TNAFrontend/./src/nationalarchives/components/details/analytics.js","webpack://TNAFrontend/./src/nationalarchives/components/error-summary/analytics.js","webpack://TNAFrontend/./src/nationalarchives/components/footer/analytics.js","webpack://TNAFrontend/./src/nationalarchives/components/gallery/analytics.js","webpack://TNAFrontend/./src/nationalarchives/components/global-header/analytics.js","webpack://TNAFrontend/./src/nationalarchives/components/header/analytics.js","webpack://TNAFrontend/./src/nationalarchives/components/hero/analytics.js","webpack://TNAFrontend/./src/nationalarchives/components/picture/analytics.js","webpack://TNAFrontend/./src/nationalarchives/components/radios/analytics.js","webpack://TNAFrontend/./src/nationalarchives/components/search-field/analytics.js","webpack://TNAFrontend/./src/nationalarchives/components/sidebar/analytics.js","webpack://TNAFrontend/./src/nationalarchives/components/text-input/analytics.js","webpack://TNAFrontend/./src/nationalarchives/components/textarea/analytics.js","webpack://TNAFrontend/./src/nationalarchives/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"],"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","/* 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","const getXPathTo = ($element) => {\n if ($element.id !== \"\") {\n return `id(\"${$element.id}\")`;\n }\n if ($element === document.body) {\n return $element.tagName;\n }\n let ix = 0;\n if ($element.parentNode) {\n const siblings = $element.parentNode.childNodes;\n /* eslint-disable-next-line no-magic-numbers */\n for (let index = 0; index < siblings.length; index += 1) {\n const sibling = siblings[index];\n if (sibling === $element) {\n return `${getXPathTo($element.parentNode)}/${$element.tagName}[${\n /* eslint-disable-next-line no-magic-numbers */\n ix + 1\n }]`;\n }\n /* eslint-disable-next-line no-magic-numbers */\n if (sibling.nodeType === 1 && sibling.tagName === $element.tagName) {\n /* eslint-disable-next-line no-magic-numbers */\n ix += 1;\n }\n }\n return `${getXPathTo($element.parentNode)}/${$element.tagName}`;\n }\n return $element.tagName;\n};\nconst getClosestElement = ($startingElement, matchingElementSelectors) => {\n let heading = \"\";\n let $search = $startingElement;\n do {\n while ($search.previousElementSibling) {\n $search = $search.previousElementSibling;\n if (\n /* eslint-disable-next-line no-loop-func */\n matchingElementSelectors.some((matchingElementSelector) =>\n $search.matches(matchingElementSelector),\n )\n ) {\n heading = $search.innerText;\n break;\n }\n }\n $search = $search.parentElement;\n } while ($search.parentElement && !heading);\n return heading;\n};\nconst getClosestHeading = ($element) =>\n getClosestElement($element, [\"h1\", \"h2\", \"h3\", \"h4\", \"h5\", \"h6\"]);\nconst valueGetters = {\n text: ($el) => $el.innerText.replace(/\\n/gu, \" \"),\n html: ($el) => $el.innerHTML,\n value: ($el) => $el.value,\n index: ($el, $scope, event, index) => index,\n instance: ($el, $scope, event, index, instance) => instance,\n /* eslint-disable-next-line no-ternary */\n checked: ($el) => ($el.checked ? \"checked\" : \"unchecked\"),\n expanded: ($el) => {\n const expanded = $el.getAttribute(\"aria-expanded\");\n if (expanded === null) {\n return null;\n }\n /* eslint-disable-next-line no-ternary */\n return expanded.toString() === \"true\" ? \"opened\" : \"closed\";\n },\n closestHeading: ($el) => getClosestHeading($el),\n xpath: ($el) => getXPathTo($el.target),\n};\n\nexport { getXPathTo, getClosestElement, getClosestHeading, valueGetters };\n","const getFileDetails = ($el) =>\n JSON.stringify(\n Array.from($el.files).map((file) => ({\n name: file.name,\n size: file.size,\n type: file.type,\n })),\n );\n\nexport default [\n {\n scope: \".tna-file-input\",\n areaName: \"file-input\",\n events: [\n {\n eventName: \"blurred\",\n on: \"blur\",\n data: {\n value: getFileDetails,\n state: ($el) => $el.files.length,\n\n group: ($el, $scope) =>\n $scope\n .closest(\".tna-form-item\")\n ?.querySelector(\".tna-form-item__heading\")\n ?.innerText?.trim(),\n },\n },\n {\n eventName: \"cancelled\",\n on: \"cancel\",\n data: {\n value: getFileDetails,\n state: ($el) => $el.files.length,\n\n group: ($el, $scope) =>\n $scope\n .closest(\".tna-form-item\")\n ?.querySelector(\".tna-form-item__heading\")\n ?.innerText?.trim(),\n },\n },\n {\n eventName: \"changed\",\n on: \"change\",\n data: {\n value: getFileDetails,\n state: ($el) => $el.files.length,\n\n group: ($el, $scope) =>\n $scope\n .closest(\".tna-form-item\")\n ?.querySelector(\".tna-form-item__heading\")\n ?.innerText?.trim(),\n },\n },\n ],\n },\n];\n","/* eslint-disable max-classes-per-file, no-ternary, no-nested-ternary */\n\nimport Cookies from \"@nationalarchives/cookies/src/index.js\";\n\nimport AccordionAnalytics from \"./components/accordion/analytics.js\";\nimport BreadcrumbAnalytics from \"./components/breadcrumbs/analytics.js\";\nimport CheckboxesAnalytics from \"./components/checkboxes/analytics.js\";\nimport DetailsAnalytics from \"./components/details/analytics.js\";\nimport ErrorSummary from \"./components/error-summary/analytics.js\";\nimport FileInputDroppable from \"./components/file-input/analytics.js\";\nimport FooterAnalytics from \"./components/footer/analytics.js\";\nimport GalleryAnalytics from \"./components/gallery/analytics.js\";\nimport GlobalHeaderAnalytics from \"./components/global-header/analytics.js\";\nimport HeaderAnalytics from \"./components/header/analytics.js\";\nimport HeroAnalytics from \"./components/hero/analytics.js\";\nimport PictureAnalytics from \"./components/picture/analytics.js\";\nimport RadiosAnalytics from \"./components/radios/analytics.js\";\nimport SearchFieldAnalytics from \"./components/search-field/analytics.js\";\nimport SidebarAnalytics from \"./components/sidebar/analytics.js\";\nimport TextInputAnalytics from \"./components/text-input/analytics.js\";\nimport TextareaAnalytics from \"./components/textarea/analytics.js\";\nimport {\n getClosestElement,\n getClosestHeading,\n getXPathTo,\n valueGetters,\n} from \"./lib/analytics-helpers.mjs\";\n\nconst componentAnalytics = [\n ...AccordionAnalytics,\n ...BreadcrumbAnalytics,\n ...CheckboxesAnalytics,\n ...DetailsAnalytics,\n ...ErrorSummary,\n ...FileInputDroppable,\n ...FooterAnalytics,\n ...GalleryAnalytics,\n ...GlobalHeaderAnalytics,\n ...HeaderAnalytics,\n ...HeroAnalytics,\n ...PictureAnalytics,\n ...RadiosAnalytics,\n ...SearchFieldAnalytics,\n ...SidebarAnalytics,\n ...TextInputAnalytics,\n ...TextareaAnalytics,\n];\n\nclass EventTracker {\n /** @protected */\n cookies = new Cookies();\n\n /** @protected */\n events = [];\n\n /** @protected */\n startTime = new Date();\n\n /** @protected */\n prefix = \"tna\";\n\n /** @protected */\n document = document;\n\n constructor(options = {}) {\n const { prefix = null, documentScope = document } = options;\n if (prefix) {\n this.prefix = prefix;\n }\n if (documentScope) {\n this.document = documentScope;\n }\n }\n\n start(initAll) {\n /* eslint-disable-next-line no-magic-numbers */\n if (!navigator.doNotTrack || navigator.doNotTrack !== 1) {\n if (this.cookies.preference(\"usage\")) {\n this.enableTracking();\n }\n this.cookies.on(\"changePreference\", (policies) => {\n if (Object.hasOwn(policies, \"usage\")) {\n if (policies.usage) {\n this.enableTracking();\n } else {\n this.disableTracking();\n }\n }\n });\n if (initAll) {\n this.initAll();\n }\n }\n }\n\n /** @protected */\n /* eslint-disable-next-line class-methods-use-this, no-empty-function */\n enableTracking() {}\n\n /** @protected */\n /* eslint-disable-next-line class-methods-use-this, no-empty-function */\n disableTracking() {}\n\n /**\n * Initialise all TNA Frontend component analytics.\n */\n initAll() {\n componentAnalytics.forEach((componentConfig) => {\n this.addListeners(\n componentConfig.scope,\n componentConfig.areaName,\n componentConfig.events,\n componentConfig.rootEventName || \"\",\n componentConfig.rootData || {},\n );\n });\n }\n\n /**\n * Add an event listener.\n * @param {String|HTMLElement} scope - The element to which the listener is scoped.\n * @param {String} areaName - The name of the component to pass on to the tracker.\n * @param {{eventName: String, targetElement: String|undefined, on: String, data: {value: Function|String|undefined, state: Function|String|undefined, group: Function|String|undefined, [String]: String|Integer}, rootData:{[String]: Function|String}}[]} events - The configuration of events to track along with their optional value and state which can be computed.\n * @param {String} rootEventName - The event name to use if specified (prefix).\n * @param {{[String]:String}} rootDefaultData - The default root data to use if specified.\n */\n addListeners(\n scope,\n areaName,\n events,\n rootEventName = \"\",\n rootDefaultData = {},\n ) {\n let scopeArray = [];\n if (typeof scope === \"string\") {\n scopeArray = Array.from(this.document.querySelectorAll(scope));\n } else if (typeof scope === \"object\") {\n scopeArray = [scope];\n }\n /* eslint-disable-next-line no-magic-numbers */\n if (scopeArray.length === 0) {\n return;\n }\n scopeArray.forEach(($scope, scopeIndex) => {\n events.forEach((eventConfig) => {\n if (eventConfig.on) {\n if (eventConfig.targetElement) {\n Array.from(\n $scope.querySelectorAll(eventConfig.targetElement),\n ).forEach(($el, index) =>\n this.attachListener(\n $el,\n $scope,\n rootEventName,\n rootDefaultData,\n eventConfig,\n scope,\n areaName,\n /* eslint-disable-next-line no-magic-numbers */\n index + 1,\n /* eslint-disable-next-line no-magic-numbers */\n scopeIndex + 1,\n ),\n );\n } else {\n this.attachListener(\n $scope,\n $scope,\n rootEventName,\n rootDefaultData,\n eventConfig,\n scope,\n areaName,\n /* eslint-disable-next-line no-magic-numbers */\n 1,\n /* eslint-disable-next-line no-magic-numbers */\n scopeIndex + 1,\n );\n }\n }\n });\n });\n }\n\n /** @protected */\n generateEventName(areaName, eventConfig) {\n return `${this.prefix}.${areaName}.${eventConfig.eventName || eventConfig.on}`;\n }\n\n /** @protected */\n attachListener(\n $el,\n $scope,\n rootEventName,\n rootDefaultData,\n eventConfig,\n scope,\n areaName,\n index,\n instance,\n ) {\n const {\n on,\n data,\n targetElement,\n rootData = {},\n onCondition = null,\n } = eventConfig;\n $el.addEventListener(on, (event) => {\n const computedValueParameters = [$el, $scope, event, index, instance];\n if (\n onCondition === null ||\n this.computedValue(onCondition, ...computedValueParameters)\n ) {\n this.recordEvent(\n eventConfig.rootEventName\n ? `${this.prefix}.${eventConfig.rootEventName}`\n : rootEventName\n ? `${this.prefix}.${rootEventName}`\n : this.generateEventName(areaName, eventConfig),\n {\n ...data,\n name: this.generateEventName(areaName, eventConfig),\n value: data?.value\n ? this.computedValue(data.value, ...computedValueParameters)\n : null,\n state: data?.state\n ? this.computedValue(data.state, ...computedValueParameters)\n : null,\n group: data?.group\n ? this.computedValue(data.group, ...computedValueParameters)\n : null,\n xPath: getXPathTo($el),\n targetElement,\n timeSincePageLoad: new Date() - this.startTime,\n index,\n instance,\n scope,\n areaName,\n },\n Object.fromEntries(\n Object.entries({ ...rootDefaultData, ...rootData }).map(\n ([key, value]) => [\n key,\n this.computedValue(value, ...computedValueParameters),\n ],\n ),\n ),\n );\n }\n });\n }\n\n /** @protected */\n computedValue(valueOrFunction, $el, $scope, event, index, instance) {\n return typeof valueOrFunction === \"function\"\n ? valueOrFunction.call(this, $el, $scope, event, index, instance)\n : (valueOrFunction ?? null);\n }\n\n /** @protected */\n recordEvent(eventName, data, rootData = {}) {\n this.events.push({\n event: eventName,\n ...data,\n ...rootData,\n });\n }\n\n /** @protected */\n getTnaMetaTags() {\n return Object.fromEntries([\n ...Array.from(\n document.head.querySelectorAll(\n `meta[name^=\"${this.prefix}_root:\"][content]`,\n ),\n ).map(($metaEl) => [\n $metaEl\n .getAttribute(\"name\")\n .replace(new RegExp(`^${this.prefix}_root:`, \"u\"), \"\"),\n $metaEl.getAttribute(\"content\"),\n ]),\n ...Array.from(\n document.head.querySelectorAll(\n `meta[name^=\"${this.prefix}.\"][content]`,\n ),\n ).map(($metaEl) => [\n $metaEl.getAttribute(\"name\"),\n $metaEl.getAttribute(\"content\"),\n ]),\n ]);\n }\n\n /** @protected */\n getUserPreferences() {\n const userPreferences = {};\n userPreferences[`${this.prefix}.pref.prefers-color-scheme`] =\n window.matchMedia?.(\"(prefers-color-scheme: dark)\").matches\n ? \"dark\"\n : \"light\";\n userPreferences[`${this.prefix}.pref.forced-colors`] = window.matchMedia?.(\n \"(forced-colors: active)\",\n ).matches;\n let prefersContrast = \"no-preference\";\n if (window.matchMedia?.(\"(prefers-contrast: more)\").matches) {\n prefersContrast = \"more\";\n } else if (window.matchMedia?.(\"(prefers-contrast: less)\").matches) {\n prefersContrast = \"less\";\n }\n userPreferences[`${this.prefix}.pref.prefers-contrast`] = prefersContrast;\n userPreferences[`${this.prefix}.pref.prefers-reduced-motion`] =\n window.matchMedia?.(\"(prefers-reduced-motion: reduce)\").matches;\n userPreferences[`${this.prefix}.pref.prefers-reduced-transparency`] =\n window.matchMedia?.(\"(prefers-reduced-transparency: reduce)\").matches;\n return userPreferences;\n }\n}\n\n/**\n * Class to handle Google Analytics 4 reporting.\n * @class GA4\n * @extends EventTracker\n * @constructor\n * @public\n */\nclass GA4 extends EventTracker {\n /** @protected */\n addTrackingCode = true;\n\n /** @protected */\n trackingCodeAdded = false;\n\n /** @protected */\n trackingEnabled = false;\n\n /** @protected */\n gTagId;\n\n constructor(options = {}) {\n if (window.TNAFrontendAnalyticsGA4) {\n /* eslint-disable-next-line no-constructor-return */\n return window.TNAFrontendAnalyticsGA4;\n }\n const {\n id = \"\",\n prefix = null,\n initAll = true,\n addTrackingCode = true,\n } = options;\n super({ prefix });\n window.TNAFrontendAnalyticsGA4 = this;\n this.addTrackingCode = addTrackingCode;\n window.dataLayer ||= [];\n if (id) {\n this.gTagId = id;\n this.ga4Disable = `ga-disable-${this.gTagId}`;\n if (!this.cookies.preference(\"usage\")) {\n window[this.ga4Disable] = true;\n this.cookies.set(this.ga4Disable, \"true\");\n }\n }\n this.start(initAll);\n }\n\n /** @protected */\n /* eslint-disable-next-line class-methods-use-this */\n destroy() {\n window.TNAFrontendAnalyticsGA4 = null;\n }\n\n /** @protected */\n recordEvent(eventName, data, rootData = {}) {\n const ga4Data = {\n event: eventName,\n ...Object.fromEntries(\n Object.entries(data).map(([key, value]) => [\n `${this.prefix}.event.${key}`,\n value,\n ]),\n ),\n ...rootData,\n };\n this.pushToDataLayer(ga4Data);\n }\n\n /** @protected */\n gtag(...args) {\n this.pushToDataLayer(args);\n }\n\n /** @protected */\n /* eslint-disable-next-line class-methods-use-this */\n pushToDataLayer(data) {\n window.dataLayer.push(data);\n }\n\n /** @protected */\n enableTracking() {\n if (!this.trackingEnabled) {\n window[this.ga4Disable] = false;\n this.cookies.set(this.ga4Disable, \"false\");\n if (!this.trackingCodeAdded && this.addTrackingCode) {\n if (!this.gTagId) {\n throw Error(\"ID was not specified\");\n }\n this.pushToDataLayer({\n ...this.getTnaMetaTags(),\n ...this.getUserPreferences(),\n \"gtm.start\": new Date().getTime(),\n event: \"gtm.js\",\n });\n const [firstScript] = document.getElementsByTagName(\"script\");\n const script = document.createElement(\"script\");\n script.async = true;\n script.src = `https://www.googletagmanager.com/gtm.js?id=${this.gTagId}&l=dataLayer`;\n if (firstScript) {\n firstScript.parentNode.insertBefore(script, firstScript);\n } else {\n document.head.appendChild(script);\n }\n this.trackingCodeAdded = true;\n }\n this.trackingEnabled = true;\n }\n }\n\n /** @protected */\n disableTracking() {\n if (this.trackingEnabled) {\n window[this.ga4Disable] = true;\n this.cookies.set(this.ga4Disable, \"true\");\n Object.keys(this.cookies.all).forEach((key) => {\n if (key.startsWith(\"_ga\")) {\n this.cookies.delete(key);\n }\n });\n this.trackingEnabled = false;\n }\n }\n}\n\nconst ga4Id = document.documentElement.dataset.ga4;\nif (ga4Id) {\n /* eslint-disable-next-line no-new */\n new GA4({ id: ga4Id });\n}\n\nconst helpers = {\n getXPathTo,\n getClosestHeading,\n getClosestElement,\n valueGetters,\n};\n\nexport { EventTracker, GA4, helpers };\n","import { valueGetters } from \"../../lib/analytics-helpers.mjs\";\n\nexport default [\n {\n scope: \".tna-accordion\",\n areaName: \"accordion\",\n rootEventName: \"select_feature\",\n rootData: {\n data_component_name: \"accordion\",\n },\n events: [\n {\n eventName: \"click\",\n targetElement: \".tna-accordion__summary\",\n on: \"click\",\n data: { state: valueGetters.expanded, value: valueGetters.text },\n rootData: {\n data_link_type: valueGetters.expanded,\n data_link: valueGetters.text,\n data_position: valueGetters.index,\n },\n },\n ],\n },\n];\n","import { valueGetters } from \"../../lib/analytics-helpers.mjs\";\n\nexport default [\n {\n scope: \".tna-breadcrumbs\",\n areaName: \"breadcrumbs\",\n rootEventName: \"select_navigation\",\n rootData: {\n data_component_name: \"breadcrumbs\",\n },\n events: [\n {\n eventName: \"click\",\n targetElement: \"a.tna-breadcrumbs__link\",\n on: \"click\",\n data: { state: \"expand\", value: valueGetters.html },\n rootData: {\n data_link_type: \"breadcrumb_link\",\n data_link: valueGetters.text,\n },\n },\n {\n eventName: \"click\",\n targetElement:\n \".tna-breadcrumbs__item--expandable button.tna-breadcrumbs__link\",\n on: \"click\",\n data: { state: \"expand\", value: valueGetters.html },\n rootData: {\n data_link_type: \"breadcrumb_expand\",\n data_link: valueGetters.text,\n },\n },\n ],\n },\n];\n","import { valueGetters } from \"../../lib/analytics-helpers.mjs\";\n\nexport default [\n {\n scope: \".tna-checkboxes\",\n areaName: \"checkboxes\",\n events: [\n {\n eventName: \"toggle\",\n targetElement: \".tna-checkboxes__item input\",\n on: \"change\",\n data: {\n state: valueGetters.checked,\n // eslint-disable-next-line no-unused-vars\n value: ($el, $scope, event) => $el.parentNode.innerText.trim(),\n // eslint-disable-next-line no-unused-vars\n group: ($el, $scope, event) =>\n $scope\n .closest(\".tna-form-item\")\n ?.querySelector(\".tna-form-item__heading\")\n ?.innerText?.trim(),\n },\n },\n ],\n },\n];\n","import { valueGetters } from \"../../lib/analytics-helpers.mjs\";\n\nexport default [\n {\n scope: \".tna-details\",\n areaName: \"details\",\n events: [\n {\n eventName: \"click\",\n targetElement: \".tna-details__summary\",\n on: \"click\",\n data: {\n // eslint-disable-next-line no-unused-vars\n state: ($el, $scope, event) => {\n const wasExpanded =\n $scope\n .querySelector(\".tna-details__details\")\n ?.hasAttribute(\"open\") ?? false;\n return wasExpanded ? \"closed\" : \"opened\";\n },\n\n value: valueGetters.text,\n },\n },\n ],\n },\n];\n","import { valueGetters } from \"../../lib/analytics-helpers.mjs\";\n\nexport default [\n {\n scope: \".tna-error-summary\",\n areaName: \"error-summary\",\n events: [\n {\n eventName: \"jump\",\n targetElement: \"a.tna-error-summary__link\",\n on: \"click\",\n data: { value: valueGetters.text },\n },\n ],\n },\n];\n","import { valueGetters } from \"../../lib/analytics-helpers.mjs\";\n\nexport default [\n {\n scope: \".tna-footer\",\n areaName: \"footer\",\n rootEventName: \"global_navigation\",\n rootData: {\n data_component_name: \"footer\",\n },\n events: [\n {\n eventName: \"link.click\",\n targetElement: \".tna-footer__navigation-block-item-link\",\n on: \"click\",\n data: {\n value: valueGetters.text,\n },\n rootData: {\n data_link_type: \"link\",\n data_section: valueGetters.closestHeading,\n data_link: valueGetters.text,\n },\n },\n {\n eventName: \"social_link.click\",\n targetElement: \".tna-footer__social-item-link\",\n on: \"click\",\n data: {\n value: valueGetters.text,\n },\n rootData: {\n data_link_type: \"icon\",\n data_section: \"Social media\",\n data_link: ($el) => $el.dataset.name,\n },\n },\n {\n eventName: \"legal_link.click\",\n targetElement: \".tna-footer__legal-item-link\",\n on: \"click\",\n data: {\n value: valueGetters.text,\n },\n rootData: {\n data_link_type: \"link\",\n data_section: \"Legal information\",\n data_link: valueGetters.text,\n },\n },\n {\n eventName: \"mailing_list.click\",\n targetElement: \".tna-footer__mailing-list a.tna-button\",\n on: \"click\",\n data: {\n value: valueGetters.text,\n },\n rootData: {\n data_link_type: \"button\",\n data_section: \"Mailing list\",\n data_link: valueGetters.text,\n },\n },\n {\n eventName: \"ogl.click\",\n targetElement: \".tna-footer__licence p a.tna-footer__link\",\n on: \"click\",\n data: {\n value: valueGetters.text,\n },\n rootData: {\n data_link_type: \"link\",\n data_section: \"OGL\",\n data_link: valueGetters.text,\n },\n },\n {\n eventName: \"govuk.click\",\n targetElement: \".tna-footer__govuk-link\",\n on: \"click\",\n data: {\n value: valueGetters.text,\n },\n rootData: {\n data_link_type: \"Logo\",\n data_section: \"GOV.UK\",\n data_link: valueGetters.text,\n },\n },\n {\n eventName: \"theme.change\",\n targetElement: \".tna-footer__theme-selector-button\",\n on: \"click\",\n data: {\n value: valueGetters.value,\n },\n },\n ],\n },\n];\n","import { valueGetters } from \"../../lib/analytics-helpers.mjs\";\n\nexport default [\n {\n scope: \".tna-gallery\",\n areaName: \"gallery\",\n rootEventName: \"select_media\",\n rootData: {\n media_type: \"gallery\",\n media_duration: ($el, $scope) =>\n $scope.querySelectorAll(\".tna-gallery__navigation-item\").length,\n media_provider: \"tna\",\n media_title: ($el, $scope, event, index, instance) =>\n $scope.querySelector(\".tna-gallery__header-inner\")?.innerText?.trim() ||\n `gallery_${instance}`,\n media_progress: ($el, $scope) =>\n (Array.from(\n $scope.querySelectorAll(\".tna-gallery__navigation-item\"),\n ).findIndex(\n ($itemButton) => $itemButton.getAttribute(\"aria-current\") === \"true\",\n /* eslint-disable-next-line no-magic-numbers */\n ) || -1) + 1,\n },\n events: [\n {\n eventName: \"click\",\n targetElement: \".tna-gallery__navigation-item\",\n on: \"click\",\n data: {\n value: valueGetters.text,\n },\n rootData: {\n data_link: \"image\",\n media_action: \"progress\",\n media_progress: valueGetters.index,\n },\n },\n {\n eventName: \"click\",\n targetElement: \".tna-gallery__navigation-prev\",\n on: \"click\",\n data: {\n value: ($el, $scope) =>\n $scope\n .querySelector(\n \".tna-gallery__item:not([hidden]) .tna-gallery__item-header\",\n )\n ?.innerText?.trim(),\n },\n rootData: {\n data_link: \"previous\",\n media_action: \"progress\",\n },\n },\n {\n eventName: \"click\",\n targetElement: \".tna-gallery__navigation-next\",\n on: \"click\",\n data: {\n value: ($el, $scope) =>\n $scope\n .querySelector(\n \".tna-gallery__item:not([hidden]) .tna-gallery__item-header\",\n )\n ?.innerText?.trim(),\n },\n rootData: {\n data_link: \"next\",\n media_action: \"progress\",\n },\n },\n {\n eventName: \"keypress\",\n on: \"keydown\",\n onCondition: ($el, $scope, event) =>\n [\n \"ArrowLeft\",\n \"ArrowRight\",\n \"ArrowUp\",\n \"ArrowDown\",\n \"End\",\n \"Home\",\n // \"Escape\",\n ].includes(event.key),\n data: {\n value: ($el, $scope, event) => event.key,\n },\n rootData: {\n data_link: \"keypress\",\n media_action: \"progress\",\n },\n },\n ],\n },\n];\n","import { valueGetters } from \"../../lib/analytics-helpers.mjs\";\n\nexport default [\n {\n scope: \".tna-global-header\",\n areaName: \"header\",\n rootEventName: \"global_navigation\",\n rootData: {\n data_component_name: \"header\",\n },\n events: [\n {\n eventName: \"toggle\",\n targetElement: \".tna-global-header__navigation-button\",\n on: \"click\",\n data: {\n state: valueGetters.expanded,\n },\n rootData: {\n data_link_type: \"mobile_menu\",\n data_link: ($el) => {\n const expanded = $el.getAttribute(\"aria-expanded\");\n if (expanded === null) {\n return null;\n }\n return expanded.toString() === \"true\" ? \"Open menu\" : \"Close menu\";\n },\n data_section: \"Burger menu\",\n },\n },\n {\n eventName: \"logo.click\",\n targetElement: \".tna-global-header__logo\",\n on: \"click\",\n rootData: {\n data_link_type: \"logo\",\n data_link: \"The National Archives\",\n data_section: \"Top navigation and logo\",\n },\n },\n {\n eventName: \"primary_link.click\",\n targetElement: \".tna-global-header__navigation-item-link\",\n on: \"click\",\n data: {\n value: valueGetters.text,\n },\n rootData: {\n data_link_type: \"menu\",\n data_section: valueGetters.text,\n data_position: 1,\n data_link: valueGetters.text,\n },\n },\n {\n eventName: \"secondary_link.click\",\n targetElement: \".tna-global-header__top-navigation-link\",\n on: \"click\",\n data: {\n value: valueGetters.text,\n },\n rootData: {\n data_link_type: \"icon\",\n data_link: valueGetters.text,\n data_section: \"Top navigation and logo\",\n },\n },\n ],\n },\n];\n","import { valueGetters } from \"../../lib/analytics-helpers.mjs\";\n\nexport default [\n {\n scope: \".tna-header\",\n areaName: \"header\",\n events: [\n {\n eventName: \"toggle\",\n targetElement: \".tna-header__navigation-button\",\n on: \"click\",\n data: {\n state: valueGetters.expanded,\n },\n },\n ],\n },\n];\n","export default [\n {\n scope: \".tna-hero\",\n areaName: \"hero\",\n events: [\n {\n eventName: \"toggle_caption\",\n targetElement: \".tna-hero__details-summary\",\n on: \"click\",\n data: {\n // eslint-disable-next-line no-unused-vars\n state: ($el, $scope, event) => {\n const wasExpanded =\n $scope\n .querySelector(\".tna-hero__details\")\n ?.hasAttribute(\"open\") ?? false;\n return wasExpanded ? \"closed\" : \"opened\";\n },\n // eslint-disable-next-line no-unused-vars\n value: ($el, $scope, event) =>\n $scope.querySelector(\"img[alt]\")?.getAttribute(\"alt\"),\n },\n },\n ],\n },\n];\n","import {\n getClosestHeading,\n valueGetters,\n} from \"../../lib/analytics-helpers.mjs\";\n\nexport default [\n {\n scope: \".tna-picture\",\n areaName: \"picture\",\n events: [\n {\n eventName: \"toggle_transcript\",\n targetElement: \".tna-picture__toggle-transcript\",\n on: \"click\",\n data: {\n state: valueGetters.expanded,\n // eslint-disable-next-line no-unused-vars\n value: ($el, $scope, event) => {\n const heading = getClosestHeading($scope);\n const image = $scope.querySelector(\".tna-picture__image\");\n const imageSrc = image.getAttribute(\"src\");\n const imageAlt = image.getAttribute(\"alt\");\n const value = `${imageAlt} (${imageSrc})`;\n return heading ? `${heading} > ${value}` : value;\n },\n },\n },\n ],\n },\n];\n","import { valueGetters } from \"../../lib/analytics-helpers.mjs\";\n\nexport default [\n {\n scope: \".tna-radios\",\n areaName: \"radios\",\n events: [\n {\n eventName: \"toggle\",\n targetElement: \".tna-radios__item input\",\n on: \"change\",\n data: {\n state: valueGetters.checked,\n // eslint-disable-next-line no-unused-vars\n value: ($el, $scope, event) => $el.parentNode.innerText,\n // eslint-disable-next-line no-unused-vars\n group: ($el, $scope, event) =>\n $scope\n .closest(\".tna-form-item\")\n ?.querySelector(\".tna-form-item__heading\")\n ?.innerText?.trim(),\n },\n },\n ],\n },\n];\n","import { valueGetters } from \"../../lib/analytics-helpers.mjs\";\n\nexport default [\n {\n scope: \".tna-search-field\",\n areaName: \"search-field\",\n events: [\n {\n eventName: \"blurred\",\n targetElement: \".tna-search-field__input\",\n on: \"blur\",\n data: {\n value: valueGetters.value,\n // eslint-disable-next-line no-unused-vars\n group: ($el, $scope, event) =>\n $scope.querySelector(\".tna-form-item__heading\")?.innerText?.trim(),\n },\n },\n ],\n },\n];\n","import { valueGetters } from \"../../lib/analytics-helpers.mjs\";\n\nexport default [\n {\n scope: \".tna-sidebar\",\n areaName: \"sidebar\",\n rootEventName: \"select_navigation\",\n rootData: {\n data_component_name: \"sidebar\",\n data_section: ($el, $scope) =>\n $scope.querySelector(\".tna-sidebar__heading\")?.innerText?.trim(),\n },\n events: [\n {\n eventName: \"click\",\n targetElement: \"a.tna-sidebar__link\",\n on: \"click\",\n rootData: {\n data_link_type: \"sidebar_link\",\n data_link: valueGetters.text,\n data_position: valueGetters.index,\n },\n },\n ],\n },\n];\n","import { valueGetters } from \"../../lib/analytics-helpers.mjs\";\n\nexport default [\n {\n scope: \".tna-text-input\",\n areaName: \"text-input\",\n events: [\n {\n eventName: \"blurred\",\n on: \"blur\",\n data: {\n value: valueGetters.value,\n\n group: ($el, $scope) =>\n $scope\n .closest(\".tna-form-item\")\n ?.querySelector(\".tna-form-item__heading\")\n ?.innerText?.trim(),\n },\n },\n ],\n },\n];\n","import { valueGetters } from \"../../lib/analytics-helpers.mjs\";\n\nexport default [\n {\n scope: \".tna-textarea\",\n areaName: \"textarea\",\n events: [\n {\n eventName: \"blurred\",\n on: \"blur\",\n data: {\n value: valueGetters.value,\n // eslint-disable-next-line no-unused-vars\n group: ($el, $scope, event) =>\n $scope\n .closest(\".tna-form-item\")\n ?.querySelector(\".tna-form-item__heading\")\n ?.innerText?.trim(),\n },\n },\n ],\n },\n];\n","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>…\";\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};"],"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","scope","$scope","HTMLElement","$html","classList","add","onFirstTouch","removeEventListener","addEventListener","remove","$tableWrappers","querySelectorAll","$tableWrapper","_lib_helpers_mjs__WEBPACK_IMPORTED_MODULE_17__","DJ","contains","FH","$accordion","_components_accordion_accordion_mjs__WEBPACK_IMPORTED_MODULE_0__","Accordion","$breadcrumbs","querySelector","_components_breadcrumbs_breadcrumbs_mjs__WEBPACK_IMPORTED_MODULE_1__","Breadcrumbs","$codeBlock","_components_code_block_code_block_mjs__WEBPACK_IMPORTED_MODULE_2__","CodeBlock","$cookieBanner","_components_cookie_banner_cookie_banner_mjs__WEBPACK_IMPORTED_MODULE_3__","CookieBanner","$dateInput","_components_date_input_date_input_mjs__WEBPACK_IMPORTED_MODULE_4__","DateInputProgressive","$errorSummary","_components_error_summary_error_summary_mjs__WEBPACK_IMPORTED_MODULE_5__","ErrorSummary","$fileInput","_components_file_input_file_input_mjs__WEBPACK_IMPORTED_MODULE_6__","FileInputDroppable","$footer","_components_footer_footer_mjs__WEBPACK_IMPORTED_MODULE_7__","Footer","$gallery","_components_gallery_gallery_mjs__WEBPACK_IMPORTED_MODULE_8__","Gallery","$globalHeader","_components_global_header_global_header_mjs__WEBPACK_IMPORTED_MODULE_9__","GlobalHeader","$header","_components_header_header_mjs__WEBPACK_IMPORTED_MODULE_10__","Header","$picture","_components_picture_picture_mjs__WEBPACK_IMPORTED_MODULE_11__","Picture","$sidebar","scrollTopThreshold","disableHighlightSize","_components_sidebar_sidebar_mjs__WEBPACK_IMPORTED_MODULE_12__","Sidebar","$skipLink","_components_skip_link_skip_link_mjs__WEBPACK_IMPORTED_MODULE_13__","SkipLink","$tabModule","_components_tabs_tabs_mjs__WEBPACK_IMPORTED_MODULE_14__","Tabs","$textAreaWithItemisedRows","enhancedHint","_components_textarea_textarea_mjs__WEBPACK_IMPORTED_MODULE_16__","TextAreaItemisedRows","$textInputPassword","_components_text_input_text_input_mjs__WEBPACK_IMPORTED_MODULE_15__","TextInputPassword","matchMedia","evt","matches","$element","setAttribute","wasClosed","removeAttribute","getXPathTo","id","body","tagName","ix","parentNode","siblings","childNodes","index","sibling","nodeType","getClosestElement","$startingElement","matchingElementSelectors","heading","$search","previousElementSibling","some","matchingElementSelector","innerText","parentElement","getClosestHeading","valueGetters","text","$el","replace","html","innerHTML","instance","checked","expanded","getAttribute","toString","closestHeading","xpath","target","getFileDetails","Array","from","files","file","name","size","type","componentAnalytics","areaName","rootEventName","rootData","data_component_name","eventName","targetElement","state","data_link_type","data_link","data_position","group","closest","hasAttribute","data_section","media_type","media_duration","media_provider","media_title","media_progress","findIndex","$itemButton","media_action","onCondition","image","imageSrc","EventTracker","cookies","src","A","startTime","Date","prefix","documentScope","start","initAll","navigator","doNotTrack","enableTracking","policies","disableTracking","componentConfig","addListeners","rootDefaultData","scopeArray","scopeIndex","eventConfig","attachListener","generateEventName","computedValueParameters","computedValue","recordEvent","xPath","timeSincePageLoad","entries","valueOrFunction","push","getTnaMetaTags","head","$metaEl","RegExp","getUserPreferences","userPreferences","prefersContrast","GA4","addTrackingCode","trackingCodeAdded","trackingEnabled","gTagId","TNAFrontendAnalyticsGA4","super","dataLayer","ga4Disable","destroy","ga4Data","pushToDataLayer","gtag","args","getTime","firstScript","getElementsByTagName","script","createElement","async","insertBefore","appendChild","startsWith","ga4Id","ga4","helpers","$module","$items","allowMultipleItemsOpen","singleOpenItem","$item","initItem","initState","$toggleAllButton","syncToggleAllButton","isAllOpen","closeItem","openItem","$heading","$content","$headingButton","isopen","closeAllItemsExcept","$wrapper","_lib_helpers_mjs__WEBPACK_IMPORTED_MODULE_0__","$excludeItem","closeAllLabel","openAllLabel","$breadcrumbsList","uniqueId","_lib_uuid_mjs__WEBPACK_IMPORTED_MODULE_0__","$expandable","style","display","$expandButton","focus","nextSibling","$code","$copyButton","clipboard","writeText","$acceptButton","$rejectButton","$prompt","$acceptedMessage","$rejectedMessage","$closeButtons","_nationalarchives_cookies_src_index_js__WEBPACK_IMPORTED_MODULE_0__","accept","reject","$closeButton","close","showPanel","$panel","$yearWrapper","$yearInput","$monthWrapper","$monthInput","$dayWrapper","$dayInput","update","isValidYear","showMonth","isValidMonth","showDay","hideDay","hideMonth","yearValue","isNaN","monthRawValue","monthIntValue","disableAutofocus","setFocus","handleClick","isFocusable","onBlur","onBeforeFocus","$target","focusTarget","preventDefault","getFragmentFromUrl","url","pop","HTMLAnchorElement","inputId","href","$input","getElementById","$legendOrLabel","getAssociatedLegendOrLabel","scrollIntoView","preventScroll","$fieldset","$legends","$candidateLegend","HTMLInputElement","legendTop","getBoundingClientRect","top","inputRect","height","innerHeight","$body","acceptMutltipleFiles","$droppableArea","$pseudoSelectFileText","fileText","textContent","$droppableButtons","$pseudoSelectFileButton","$pseudoDropFileButton","$droppableAreaAriaLabel","showDropTarget","hideDropTarget","onChange","isContainingFiles","dataTransfer","hasNoTypesInfo","types","isDraggingFiles","updateAriaLabel","classToAdd","items","themeCookieName","$themeSelector","$themeSelectorNotice","$themeSelectorEnableSettingsCookiesButton","$tnaTemplate","currentTheme","themeOnLoad","$themeSelectorButtons","$themeSelectorButton","$button","setTheme","selectThemeSelectorButton","showThemeSelector","$currentThemeButton","find","theme","$selectedButton","$itemsContainer","$navigation","$navigationItems","$navigationButtons","$navigationButtonPrev","$navigationButtonNext","setup","currentId","showItem","preventDefaultKeyAction","showPreviousItem","showNextItem","showFirstItem","showLastItem","stopPropagation","$liveRegion","prepend","getCurrentItemIndex","nextIndexToShow","$toggleButton","$topNavigation","$links","menuOpened","mql","syncState","handleToggleNavigation","addListener","code","show","hide","hidden","$imageWrapper","$transcriptToggle","$transcript","transcriptOpened","openLabel","informationLabelOpen","closeLabel","informationLabelClose","toggleTranscript","substring","item","breakpoints","tiny","getComputedStyle","getPropertyValue","small","medium","join","hideOnDevice","currentItem","highlightCurrentSection","$topItem","findLast","Math","floor","linkedElementListener","linkedElementId","$linkedElement","focusLinkedElement","removeFocusProperties","$tabList","$tabListItemLinks","$tabItems","currentTabIndex","activeTabOnLoad","previousTabIndex","allowClose","$tabListItemLink","tabPanelID","$tabPanel","handleItemLinkClick","switchTabByIndex","handleItemLinkKeyDown","itemLinkClickEvent","targetItem","currentTarget","switchTabByID","itemLinkKeyDownEvent","previousTab","nextTab","newIndex","switchFocus","disallowClose","$tabItem","targetId","$textInputWrapper","$textInputPasswordToggle","updateTogglePasswordButtonText","togglePasswordType","$formFieldInput","$formFieldInputHint","$formFieldBody","values","$formFieldNewInput","attribute","updateList","appendValue","$formFieldNewInputAddButton","$formFieldNewInputAddButtonInner","$formFieldNewInputAddButtonInnerExtra","$formFieldLiveAria","$formFieldCounter","$valuesList","updateAriaText","content","normaliseValue","isValueInList","eachValue","newValue","removeValue","existingValue","$itemLabel","$removeItemButton","innerTextItemValue","innerTextValue","$caption","tableScrollInitialised","_uuid_mjs__WEBPACK_IMPORTED_MODULE_0__","scrollWidth","clientWidth","datetime","prettyDatetime","dateStr","isDateTime","test","isDate","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"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"file":"all+analytics.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/all.mjs","webpack://TNAFrontend/./src/nationalarchives/lib/analytics-helpers.mjs","webpack://TNAFrontend/./src/nationalarchives/components/file-input/analytics.js","webpack://TNAFrontend/./src/nationalarchives/analytics.mjs","webpack://TNAFrontend/./src/nationalarchives/components/accordion/analytics.js","webpack://TNAFrontend/./src/nationalarchives/components/breadcrumbs/analytics.js","webpack://TNAFrontend/./src/nationalarchives/components/checkboxes/analytics.js","webpack://TNAFrontend/./src/nationalarchives/components/details/analytics.js","webpack://TNAFrontend/./src/nationalarchives/components/error-summary/analytics.js","webpack://TNAFrontend/./src/nationalarchives/components/footer/analytics.js","webpack://TNAFrontend/./src/nationalarchives/components/gallery/analytics.js","webpack://TNAFrontend/./src/nationalarchives/components/global-header/analytics.js","webpack://TNAFrontend/./src/nationalarchives/components/header/analytics.js","webpack://TNAFrontend/./src/nationalarchives/components/hero/analytics.js","webpack://TNAFrontend/./src/nationalarchives/components/picture/analytics.js","webpack://TNAFrontend/./src/nationalarchives/components/radios/analytics.js","webpack://TNAFrontend/./src/nationalarchives/components/search-field/analytics.js","webpack://TNAFrontend/./src/nationalarchives/components/sidebar/analytics.js","webpack://TNAFrontend/./src/nationalarchives/components/text-input/analytics.js","webpack://TNAFrontend/./src/nationalarchives/components/textarea/analytics.js","webpack://TNAFrontend/./src/nationalarchives/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"],"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 ","// 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","/* 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","const getXPathTo = ($element) => {\n if ($element.id !== \"\") {\n return `id(\"${$element.id}\")`;\n }\n if ($element === document.body) {\n return $element.tagName;\n }\n let ix = 0;\n if ($element.parentNode) {\n const siblings = $element.parentNode.childNodes;\n /* eslint-disable-next-line no-magic-numbers */\n for (let index = 0; index < siblings.length; index += 1) {\n const sibling = siblings[index];\n if (sibling === $element) {\n return `${getXPathTo($element.parentNode)}/${$element.tagName}[${\n /* eslint-disable-next-line no-magic-numbers */\n ix + 1\n }]`;\n }\n /* eslint-disable-next-line no-magic-numbers */\n if (sibling.nodeType === 1 && sibling.tagName === $element.tagName) {\n /* eslint-disable-next-line no-magic-numbers */\n ix += 1;\n }\n }\n return `${getXPathTo($element.parentNode)}/${$element.tagName}`;\n }\n return $element.tagName;\n};\nconst getClosestElement = ($startingElement, matchingElementSelectors) => {\n let heading = \"\";\n let $search = $startingElement;\n do {\n while ($search.previousElementSibling) {\n $search = $search.previousElementSibling;\n if (\n /* eslint-disable-next-line no-loop-func */\n matchingElementSelectors.some((matchingElementSelector) =>\n $search.matches(matchingElementSelector),\n )\n ) {\n heading = $search.innerText;\n break;\n }\n }\n $search = $search.parentElement;\n } while ($search.parentElement && !heading);\n return heading;\n};\nconst getClosestHeading = ($element) =>\n getClosestElement($element, [\"h1\", \"h2\", \"h3\", \"h4\", \"h5\", \"h6\"]);\nconst valueGetters = {\n text: ($el) => $el.innerText.replace(/\\n/gu, \" \"),\n html: ($el) => $el.innerHTML,\n value: ($el) => $el.value,\n index: ($el, $scope, event, index) => index,\n instance: ($el, $scope, event, index, instance) => instance,\n /* eslint-disable-next-line no-ternary */\n checked: ($el) => ($el.checked ? \"checked\" : \"unchecked\"),\n expanded: ($el) => {\n const expanded = $el.getAttribute(\"aria-expanded\");\n if (expanded === null) {\n return null;\n }\n /* eslint-disable-next-line no-ternary */\n return expanded.toString() === \"true\" ? \"opened\" : \"closed\";\n },\n closestHeading: ($el) => getClosestHeading($el),\n xpath: ($el) => getXPathTo($el.target),\n};\n\nexport { getXPathTo, getClosestElement, getClosestHeading, valueGetters };\n","const getFileDetails = ($el) =>\n JSON.stringify(\n Array.from($el.files).map((file) => ({\n name: file.name,\n size: file.size,\n type: file.type,\n })),\n );\n\nexport default [\n {\n scope: \".tna-file-input\",\n areaName: \"file-input\",\n events: [\n {\n eventName: \"blurred\",\n on: \"blur\",\n data: {\n value: getFileDetails,\n state: ($el) => $el.files.length,\n\n group: ($el, $scope) =>\n $scope\n .closest(\".tna-form-item\")\n ?.querySelector(\".tna-form-item__heading\")\n ?.innerText?.trim(),\n },\n },\n {\n eventName: \"cancelled\",\n on: \"cancel\",\n data: {\n value: getFileDetails,\n state: ($el) => $el.files.length,\n\n group: ($el, $scope) =>\n $scope\n .closest(\".tna-form-item\")\n ?.querySelector(\".tna-form-item__heading\")\n ?.innerText?.trim(),\n },\n },\n {\n eventName: \"changed\",\n on: \"change\",\n data: {\n value: getFileDetails,\n state: ($el) => $el.files.length,\n\n group: ($el, $scope) =>\n $scope\n .closest(\".tna-form-item\")\n ?.querySelector(\".tna-form-item__heading\")\n ?.innerText?.trim(),\n },\n },\n ],\n },\n];\n","/* eslint-disable max-classes-per-file, no-ternary, no-nested-ternary */\n\nimport Cookies from \"@nationalarchives/cookies/src/index.js\";\n\nimport AccordionAnalytics from \"./components/accordion/analytics.js\";\nimport BreadcrumbAnalytics from \"./components/breadcrumbs/analytics.js\";\nimport CheckboxesAnalytics from \"./components/checkboxes/analytics.js\";\nimport DetailsAnalytics from \"./components/details/analytics.js\";\nimport ErrorSummary from \"./components/error-summary/analytics.js\";\nimport FileInputDroppable from \"./components/file-input/analytics.js\";\nimport FooterAnalytics from \"./components/footer/analytics.js\";\nimport GalleryAnalytics from \"./components/gallery/analytics.js\";\nimport GlobalHeaderAnalytics from \"./components/global-header/analytics.js\";\nimport HeaderAnalytics from \"./components/header/analytics.js\";\nimport HeroAnalytics from \"./components/hero/analytics.js\";\nimport PictureAnalytics from \"./components/picture/analytics.js\";\nimport RadiosAnalytics from \"./components/radios/analytics.js\";\nimport SearchFieldAnalytics from \"./components/search-field/analytics.js\";\nimport SidebarAnalytics from \"./components/sidebar/analytics.js\";\nimport TextInputAnalytics from \"./components/text-input/analytics.js\";\nimport TextareaAnalytics from \"./components/textarea/analytics.js\";\nimport {\n getClosestElement,\n getClosestHeading,\n getXPathTo,\n valueGetters,\n} from \"./lib/analytics-helpers.mjs\";\n\nconst componentAnalytics = [\n ...AccordionAnalytics,\n ...BreadcrumbAnalytics,\n ...CheckboxesAnalytics,\n ...DetailsAnalytics,\n ...ErrorSummary,\n ...FileInputDroppable,\n ...FooterAnalytics,\n ...GalleryAnalytics,\n ...GlobalHeaderAnalytics,\n ...HeaderAnalytics,\n ...HeroAnalytics,\n ...PictureAnalytics,\n ...RadiosAnalytics,\n ...SearchFieldAnalytics,\n ...SidebarAnalytics,\n ...TextInputAnalytics,\n ...TextareaAnalytics,\n];\n\nclass EventTracker {\n /** @protected */\n cookies = new Cookies();\n\n /** @protected */\n events = [];\n\n /** @protected */\n startTime = new Date();\n\n /** @protected */\n prefix = \"tna\";\n\n /** @protected */\n document = document;\n\n constructor(options = {}) {\n const { prefix = null, documentScope = document } = options;\n if (prefix) {\n this.prefix = prefix;\n }\n if (documentScope) {\n this.document = documentScope;\n }\n }\n\n start(initAll) {\n /* eslint-disable-next-line no-magic-numbers */\n if (!navigator.doNotTrack || navigator.doNotTrack !== 1) {\n if (this.cookies.preference(\"usage\")) {\n this.enableTracking();\n }\n this.cookies.on(\"changePreference\", (policies) => {\n if (Object.hasOwn(policies, \"usage\")) {\n if (policies.usage) {\n this.enableTracking();\n } else {\n this.disableTracking();\n }\n }\n });\n if (initAll) {\n this.initAll();\n }\n }\n }\n\n /** @protected */\n /* eslint-disable-next-line class-methods-use-this, no-empty-function */\n enableTracking() {}\n\n /** @protected */\n /* eslint-disable-next-line class-methods-use-this, no-empty-function */\n disableTracking() {}\n\n /**\n * Initialise all TNA Frontend component analytics.\n */\n initAll() {\n componentAnalytics.forEach((componentConfig) => {\n this.addListeners(\n componentConfig.scope,\n componentConfig.areaName,\n componentConfig.events,\n componentConfig.rootEventName || \"\",\n componentConfig.rootData || {},\n );\n });\n }\n\n /**\n * Add an event listener.\n * @param {String|HTMLElement} scope - The element to which the listener is scoped.\n * @param {String} areaName - The name of the component to pass on to the tracker.\n * @param {{eventName: String, targetElement: String|undefined, on: String, data: {value: Function|String|undefined, state: Function|String|undefined, group: Function|String|undefined, [String]: String|Integer}, rootData:{[String]: Function|String}}[]} events - The configuration of events to track along with their optional value and state which can be computed.\n * @param {String} rootEventName - The event name to use if specified (prefix).\n * @param {{[String]:String}} rootDefaultData - The default root data to use if specified.\n */\n addListeners(\n scope,\n areaName,\n events,\n rootEventName = \"\",\n rootDefaultData = {},\n ) {\n let scopeArray = [];\n if (typeof scope === \"string\") {\n scopeArray = Array.from(this.document.querySelectorAll(scope));\n } else if (typeof scope === \"object\") {\n scopeArray = [scope];\n }\n /* eslint-disable-next-line no-magic-numbers */\n if (scopeArray.length === 0) {\n return;\n }\n scopeArray.forEach(($scope, scopeIndex) => {\n events.forEach((eventConfig) => {\n if (eventConfig.on) {\n if (eventConfig.targetElement) {\n Array.from(\n $scope.querySelectorAll(eventConfig.targetElement),\n ).forEach(($el, index) =>\n this.attachListener(\n $el,\n $scope,\n rootEventName,\n rootDefaultData,\n eventConfig,\n scope,\n areaName,\n /* eslint-disable-next-line no-magic-numbers */\n index + 1,\n /* eslint-disable-next-line no-magic-numbers */\n scopeIndex + 1,\n ),\n );\n } else {\n this.attachListener(\n $scope,\n $scope,\n rootEventName,\n rootDefaultData,\n eventConfig,\n scope,\n areaName,\n /* eslint-disable-next-line no-magic-numbers */\n 1,\n /* eslint-disable-next-line no-magic-numbers */\n scopeIndex + 1,\n );\n }\n }\n });\n });\n }\n\n /** @protected */\n generateEventName(areaName, eventConfig) {\n return `${this.prefix}.${areaName}.${eventConfig.eventName || eventConfig.on}`;\n }\n\n /** @protected */\n attachListener(\n $el,\n $scope,\n rootEventName,\n rootDefaultData,\n eventConfig,\n scope,\n areaName,\n index,\n instance,\n ) {\n const {\n on,\n data,\n targetElement,\n rootData = {},\n onCondition = null,\n } = eventConfig;\n $el.addEventListener(on, (event) => {\n const computedValueParameters = [$el, $scope, event, index, instance];\n if (\n onCondition === null ||\n this.computedValue(onCondition, ...computedValueParameters)\n ) {\n this.recordEvent(\n eventConfig.rootEventName\n ? `${this.prefix}.${eventConfig.rootEventName}`\n : rootEventName\n ? `${this.prefix}.${rootEventName}`\n : this.generateEventName(areaName, eventConfig),\n {\n ...data,\n name: this.generateEventName(areaName, eventConfig),\n value: data?.value\n ? this.computedValue(data.value, ...computedValueParameters)\n : null,\n state: data?.state\n ? this.computedValue(data.state, ...computedValueParameters)\n : null,\n group: data?.group\n ? this.computedValue(data.group, ...computedValueParameters)\n : null,\n xPath: getXPathTo($el),\n targetElement,\n timeSincePageLoad: new Date() - this.startTime,\n index,\n instance,\n scope,\n areaName,\n },\n Object.fromEntries(\n Object.entries({ ...rootDefaultData, ...rootData }).map(\n ([key, value]) => [\n key,\n this.computedValue(value, ...computedValueParameters),\n ],\n ),\n ),\n );\n }\n });\n }\n\n /** @protected */\n computedValue(valueOrFunction, $el, $scope, event, index, instance) {\n return typeof valueOrFunction === \"function\"\n ? valueOrFunction.call(this, $el, $scope, event, index, instance)\n : (valueOrFunction ?? null);\n }\n\n /** @protected */\n recordEvent(eventName, data, rootData = {}) {\n this.events.push({\n event: eventName,\n ...data,\n ...rootData,\n });\n }\n\n /** @protected */\n getTnaMetaTags() {\n return Object.fromEntries([\n ...Array.from(\n document.head.querySelectorAll(\n `meta[name^=\"${this.prefix}_root:\"][content]`,\n ),\n ).map(($metaEl) => [\n $metaEl\n .getAttribute(\"name\")\n .replace(new RegExp(`^${this.prefix}_root:`, \"u\"), \"\"),\n $metaEl.getAttribute(\"content\"),\n ]),\n ...Array.from(\n document.head.querySelectorAll(\n `meta[name^=\"${this.prefix}.\"][content]`,\n ),\n ).map(($metaEl) => [\n $metaEl.getAttribute(\"name\"),\n $metaEl.getAttribute(\"content\"),\n ]),\n ]);\n }\n\n /** @protected */\n getUserPreferences() {\n const userPreferences = {};\n userPreferences[`${this.prefix}.pref.prefers-color-scheme`] =\n window.matchMedia?.(\"(prefers-color-scheme: dark)\").matches\n ? \"dark\"\n : \"light\";\n userPreferences[`${this.prefix}.pref.forced-colors`] = window.matchMedia?.(\n \"(forced-colors: active)\",\n ).matches;\n let prefersContrast = \"no-preference\";\n if (window.matchMedia?.(\"(prefers-contrast: more)\").matches) {\n prefersContrast = \"more\";\n } else if (window.matchMedia?.(\"(prefers-contrast: less)\").matches) {\n prefersContrast = \"less\";\n }\n userPreferences[`${this.prefix}.pref.prefers-contrast`] = prefersContrast;\n userPreferences[`${this.prefix}.pref.prefers-reduced-motion`] =\n window.matchMedia?.(\"(prefers-reduced-motion: reduce)\").matches;\n userPreferences[`${this.prefix}.pref.prefers-reduced-transparency`] =\n window.matchMedia?.(\"(prefers-reduced-transparency: reduce)\").matches;\n return userPreferences;\n }\n}\n\n/**\n * Class to handle Google Analytics 4 reporting.\n * @class GA4\n * @extends EventTracker\n * @constructor\n * @public\n */\nclass GA4 extends EventTracker {\n /** @protected */\n addTrackingCode = true;\n\n /** @protected */\n trackingCodeAdded = false;\n\n /** @protected */\n trackingEnabled = false;\n\n /** @protected */\n gTagId;\n\n constructor(options = {}) {\n if (window.TNAFrontendAnalyticsGA4) {\n /* eslint-disable-next-line no-constructor-return */\n return window.TNAFrontendAnalyticsGA4;\n }\n const {\n id = \"\",\n prefix = null,\n initAll = true,\n addTrackingCode = true,\n } = options;\n super({ prefix });\n window.TNAFrontendAnalyticsGA4 = this;\n this.addTrackingCode = addTrackingCode;\n window.dataLayer ||= [];\n if (id) {\n this.gTagId = id;\n this.ga4Disable = `ga-disable-${this.gTagId}`;\n if (!this.cookies.preference(\"usage\")) {\n window[this.ga4Disable] = true;\n this.cookies.set(this.ga4Disable, \"true\");\n }\n }\n this.start(initAll);\n }\n\n /** @protected */\n /* eslint-disable-next-line class-methods-use-this */\n destroy() {\n window.TNAFrontendAnalyticsGA4 = null;\n }\n\n /** @protected */\n recordEvent(eventName, data, rootData = {}) {\n const ga4Data = {\n event: eventName,\n ...Object.fromEntries(\n Object.entries(data).map(([key, value]) => [\n `${this.prefix}.event.${key}`,\n value,\n ]),\n ),\n ...rootData,\n };\n this.pushToDataLayer(ga4Data);\n }\n\n /** @protected */\n gtag(...args) {\n this.pushToDataLayer(args);\n }\n\n /** @protected */\n /* eslint-disable-next-line class-methods-use-this */\n pushToDataLayer(data) {\n window.dataLayer.push(data);\n }\n\n /** @protected */\n enableTracking() {\n if (!this.trackingEnabled) {\n window[this.ga4Disable] = false;\n this.cookies.set(this.ga4Disable, \"false\");\n if (!this.trackingCodeAdded && this.addTrackingCode) {\n if (!this.gTagId) {\n throw Error(\"ID was not specified\");\n }\n this.pushToDataLayer({\n ...this.getTnaMetaTags(),\n ...this.getUserPreferences(),\n \"gtm.start\": new Date().getTime(),\n event: \"gtm.js\",\n });\n const [firstScript] = document.getElementsByTagName(\"script\");\n const script = document.createElement(\"script\");\n script.async = true;\n script.src = `https://www.googletagmanager.com/gtm.js?id=${this.gTagId}&l=dataLayer`;\n if (firstScript) {\n firstScript.parentNode.insertBefore(script, firstScript);\n } else {\n document.head.appendChild(script);\n }\n this.trackingCodeAdded = true;\n }\n this.trackingEnabled = true;\n }\n }\n\n /** @protected */\n disableTracking() {\n if (this.trackingEnabled) {\n window[this.ga4Disable] = true;\n this.cookies.set(this.ga4Disable, \"true\");\n Object.keys(this.cookies.all).forEach((key) => {\n if (key.startsWith(\"_ga\")) {\n this.cookies.delete(key);\n }\n });\n this.trackingEnabled = false;\n }\n }\n}\n\nconst ga4Id = document.documentElement.dataset.ga4;\nif (ga4Id) {\n /* eslint-disable-next-line no-new */\n new GA4({ id: ga4Id });\n}\n\nconst helpers = {\n getXPathTo,\n getClosestHeading,\n getClosestElement,\n valueGetters,\n};\n\nexport { EventTracker, GA4, helpers };\n","import { valueGetters } from \"../../lib/analytics-helpers.mjs\";\n\nexport default [\n {\n scope: \".tna-accordion\",\n areaName: \"accordion\",\n rootEventName: \"select_feature\",\n rootData: {\n data_component_name: \"accordion\",\n },\n events: [\n {\n eventName: \"click\",\n targetElement: \".tna-accordion__summary\",\n on: \"click\",\n data: { state: valueGetters.expanded, value: valueGetters.text },\n rootData: {\n data_link_type: valueGetters.expanded,\n data_link: valueGetters.text,\n data_position: valueGetters.index,\n },\n },\n ],\n },\n];\n","import { valueGetters } from \"../../lib/analytics-helpers.mjs\";\n\nexport default [\n {\n scope: \".tna-breadcrumbs\",\n areaName: \"breadcrumbs\",\n rootEventName: \"select_navigation\",\n rootData: {\n data_component_name: \"breadcrumbs\",\n },\n events: [\n {\n eventName: \"click\",\n targetElement: \"a.tna-breadcrumbs__link\",\n on: \"click\",\n data: { state: \"expand\", value: valueGetters.html },\n rootData: {\n data_link_type: \"breadcrumb_link\",\n data_link: valueGetters.text,\n },\n },\n {\n eventName: \"click\",\n targetElement:\n \".tna-breadcrumbs__item--expandable button.tna-breadcrumbs__link\",\n on: \"click\",\n data: { state: \"expand\", value: valueGetters.html },\n rootData: {\n data_link_type: \"breadcrumb_expand\",\n data_link: valueGetters.text,\n },\n },\n ],\n },\n];\n","import { valueGetters } from \"../../lib/analytics-helpers.mjs\";\n\nexport default [\n {\n scope: \".tna-checkboxes\",\n areaName: \"checkboxes\",\n events: [\n {\n eventName: \"toggle\",\n targetElement: \".tna-checkboxes__item input\",\n on: \"change\",\n data: {\n state: valueGetters.checked,\n // eslint-disable-next-line no-unused-vars\n value: ($el, $scope, event) => $el.parentNode.innerText.trim(),\n // eslint-disable-next-line no-unused-vars\n group: ($el, $scope, event) =>\n $scope\n .closest(\".tna-form-item\")\n ?.querySelector(\".tna-form-item__heading\")\n ?.innerText?.trim(),\n },\n },\n ],\n },\n];\n","import { valueGetters } from \"../../lib/analytics-helpers.mjs\";\n\nexport default [\n {\n scope: \".tna-details\",\n areaName: \"details\",\n events: [\n {\n eventName: \"click\",\n targetElement: \".tna-details__summary\",\n on: \"click\",\n data: {\n // eslint-disable-next-line no-unused-vars\n state: ($el, $scope, event) => {\n const wasExpanded =\n $scope\n .querySelector(\".tna-details__details\")\n ?.hasAttribute(\"open\") ?? false;\n return wasExpanded ? \"closed\" : \"opened\";\n },\n\n value: valueGetters.text,\n },\n },\n ],\n },\n];\n","import { valueGetters } from \"../../lib/analytics-helpers.mjs\";\n\nexport default [\n {\n scope: \".tna-error-summary\",\n areaName: \"error-summary\",\n events: [\n {\n eventName: \"jump\",\n targetElement: \"a.tna-error-summary__link\",\n on: \"click\",\n data: { value: valueGetters.text },\n },\n ],\n },\n];\n","import { valueGetters } from \"../../lib/analytics-helpers.mjs\";\n\nexport default [\n {\n scope: \".tna-footer\",\n areaName: \"footer\",\n rootEventName: \"global_navigation\",\n rootData: {\n data_component_name: \"footer\",\n },\n events: [\n {\n eventName: \"link.click\",\n targetElement: \".tna-footer__navigation-block-item-link\",\n on: \"click\",\n data: {\n value: valueGetters.text,\n },\n rootData: {\n data_link_type: \"link\",\n data_section: valueGetters.closestHeading,\n data_link: valueGetters.text,\n },\n },\n {\n eventName: \"social_link.click\",\n targetElement: \".tna-footer__social-item-link\",\n on: \"click\",\n data: {\n value: valueGetters.text,\n },\n rootData: {\n data_link_type: \"icon\",\n data_section: \"Social media\",\n data_link: ($el) => $el.dataset.name,\n },\n },\n {\n eventName: \"legal_link.click\",\n targetElement: \".tna-footer__legal-item-link\",\n on: \"click\",\n data: {\n value: valueGetters.text,\n },\n rootData: {\n data_link_type: \"link\",\n data_section: \"Legal information\",\n data_link: valueGetters.text,\n },\n },\n {\n eventName: \"mailing_list.click\",\n targetElement: \".tna-footer__mailing-list a.tna-button\",\n on: \"click\",\n data: {\n value: valueGetters.text,\n },\n rootData: {\n data_link_type: \"button\",\n data_section: \"Mailing list\",\n data_link: valueGetters.text,\n },\n },\n {\n eventName: \"ogl.click\",\n targetElement: \".tna-footer__licence p a.tna-footer__link\",\n on: \"click\",\n data: {\n value: valueGetters.text,\n },\n rootData: {\n data_link_type: \"link\",\n data_section: \"OGL\",\n data_link: valueGetters.text,\n },\n },\n {\n eventName: \"govuk.click\",\n targetElement: \".tna-footer__govuk-link\",\n on: \"click\",\n data: {\n value: valueGetters.text,\n },\n rootData: {\n data_link_type: \"Logo\",\n data_section: \"GOV.UK\",\n data_link: valueGetters.text,\n },\n },\n {\n eventName: \"theme.change\",\n targetElement: \".tna-footer__theme-selector-button\",\n on: \"click\",\n data: {\n value: valueGetters.value,\n },\n },\n ],\n },\n];\n","import { valueGetters } from \"../../lib/analytics-helpers.mjs\";\n\nexport default [\n {\n scope: \".tna-gallery\",\n areaName: \"gallery\",\n rootEventName: \"select_media\",\n rootData: {\n media_type: \"gallery\",\n media_duration: ($el, $scope) =>\n $scope.querySelectorAll(\".tna-gallery__navigation-item\").length,\n media_provider: \"tna\",\n media_title: ($el, $scope, event, index, instance) =>\n $scope.querySelector(\".tna-gallery__header-inner\")?.innerText?.trim() ||\n `gallery_${instance}`,\n media_progress: ($el, $scope) =>\n (Array.from(\n $scope.querySelectorAll(\".tna-gallery__navigation-item\"),\n ).findIndex(\n ($itemButton) => $itemButton.getAttribute(\"aria-current\") === \"true\",\n /* eslint-disable-next-line no-magic-numbers */\n ) || -1) + 1,\n },\n events: [\n {\n eventName: \"click\",\n targetElement: \".tna-gallery__navigation-item\",\n on: \"click\",\n data: {\n value: valueGetters.text,\n },\n rootData: {\n data_link: \"image\",\n media_action: \"progress\",\n media_progress: valueGetters.index,\n },\n },\n {\n eventName: \"click\",\n targetElement: \".tna-gallery__navigation-prev\",\n on: \"click\",\n data: {\n value: ($el, $scope) =>\n $scope\n .querySelector(\n \".tna-gallery__item:not([hidden]) .tna-gallery__item-header\",\n )\n ?.innerText?.trim(),\n },\n rootData: {\n data_link: \"previous\",\n media_action: \"progress\",\n },\n },\n {\n eventName: \"click\",\n targetElement: \".tna-gallery__navigation-next\",\n on: \"click\",\n data: {\n value: ($el, $scope) =>\n $scope\n .querySelector(\n \".tna-gallery__item:not([hidden]) .tna-gallery__item-header\",\n )\n ?.innerText?.trim(),\n },\n rootData: {\n data_link: \"next\",\n media_action: \"progress\",\n },\n },\n {\n eventName: \"keypress\",\n on: \"keydown\",\n onCondition: ($el, $scope, event) =>\n [\n \"ArrowLeft\",\n \"ArrowRight\",\n \"ArrowUp\",\n \"ArrowDown\",\n \"End\",\n \"Home\",\n // \"Escape\",\n ].includes(event.key),\n data: {\n value: ($el, $scope, event) => event.key,\n },\n rootData: {\n data_link: \"keypress\",\n media_action: \"progress\",\n },\n },\n ],\n },\n];\n","import { valueGetters } from \"../../lib/analytics-helpers.mjs\";\n\nexport default [\n {\n scope: \".tna-global-header\",\n areaName: \"header\",\n rootEventName: \"global_navigation\",\n rootData: {\n data_component_name: \"header\",\n },\n events: [\n {\n eventName: \"toggle\",\n targetElement: \".tna-global-header__navigation-button\",\n on: \"click\",\n data: {\n state: valueGetters.expanded,\n },\n rootData: {\n data_link_type: \"mobile_menu\",\n data_link: ($el) => {\n const expanded = $el.getAttribute(\"aria-expanded\");\n if (expanded === null) {\n return null;\n }\n return expanded.toString() === \"true\" ? \"Open menu\" : \"Close menu\";\n },\n data_section: \"Burger menu\",\n },\n },\n {\n eventName: \"logo.click\",\n targetElement: \".tna-global-header__logo\",\n on: \"click\",\n rootData: {\n data_link_type: \"logo\",\n data_link: \"The National Archives\",\n data_section: \"Top navigation and logo\",\n },\n },\n {\n eventName: \"primary_link.click\",\n targetElement: \".tna-global-header__navigation-item-link\",\n on: \"click\",\n data: {\n value: valueGetters.text,\n },\n rootData: {\n data_link_type: \"menu\",\n data_section: valueGetters.text,\n data_position: 1,\n data_link: valueGetters.text,\n },\n },\n {\n eventName: \"secondary_link.click\",\n targetElement: \".tna-global-header__top-navigation-link\",\n on: \"click\",\n data: {\n value: valueGetters.text,\n },\n rootData: {\n data_link_type: \"icon\",\n data_link: valueGetters.text,\n data_section: \"Top navigation and logo\",\n },\n },\n ],\n },\n];\n","import { valueGetters } from \"../../lib/analytics-helpers.mjs\";\n\nexport default [\n {\n scope: \".tna-header\",\n areaName: \"header\",\n events: [\n {\n eventName: \"toggle\",\n targetElement: \".tna-header__navigation-button\",\n on: \"click\",\n data: {\n state: valueGetters.expanded,\n },\n },\n ],\n },\n];\n","export default [\n {\n scope: \".tna-hero\",\n areaName: \"hero\",\n events: [\n {\n eventName: \"toggle_caption\",\n targetElement: \".tna-hero__details-summary\",\n on: \"click\",\n data: {\n // eslint-disable-next-line no-unused-vars\n state: ($el, $scope, event) => {\n const wasExpanded =\n $scope\n .querySelector(\".tna-hero__details\")\n ?.hasAttribute(\"open\") ?? false;\n return wasExpanded ? \"closed\" : \"opened\";\n },\n // eslint-disable-next-line no-unused-vars\n value: ($el, $scope, event) =>\n $scope.querySelector(\"img[alt]\")?.getAttribute(\"alt\"),\n },\n },\n ],\n },\n];\n","import {\n getClosestHeading,\n valueGetters,\n} from \"../../lib/analytics-helpers.mjs\";\n\nexport default [\n {\n scope: \".tna-picture\",\n areaName: \"picture\",\n events: [\n {\n eventName: \"toggle_transcript\",\n targetElement: \".tna-picture__toggle-transcript\",\n on: \"click\",\n data: {\n state: valueGetters.expanded,\n // eslint-disable-next-line no-unused-vars\n value: ($el, $scope, event) => {\n const heading = getClosestHeading($scope);\n const image = $scope.querySelector(\".tna-picture__image\");\n const imageSrc = image.getAttribute(\"src\");\n const imageAlt = image.getAttribute(\"alt\");\n const value = `${imageAlt} (${imageSrc})`;\n return heading ? `${heading} > ${value}` : value;\n },\n },\n },\n ],\n },\n];\n","import { valueGetters } from \"../../lib/analytics-helpers.mjs\";\n\nexport default [\n {\n scope: \".tna-radios\",\n areaName: \"radios\",\n events: [\n {\n eventName: \"toggle\",\n targetElement: \".tna-radios__item input\",\n on: \"change\",\n data: {\n state: valueGetters.checked,\n // eslint-disable-next-line no-unused-vars\n value: ($el, $scope, event) => $el.parentNode.innerText,\n // eslint-disable-next-line no-unused-vars\n group: ($el, $scope, event) =>\n $scope\n .closest(\".tna-form-item\")\n ?.querySelector(\".tna-form-item__heading\")\n ?.innerText?.trim(),\n },\n },\n ],\n },\n];\n","import { valueGetters } from \"../../lib/analytics-helpers.mjs\";\n\nexport default [\n {\n scope: \".tna-search-field\",\n areaName: \"search-field\",\n events: [\n {\n eventName: \"blurred\",\n targetElement: \".tna-search-field__input\",\n on: \"blur\",\n data: {\n value: valueGetters.value,\n // eslint-disable-next-line no-unused-vars\n group: ($el, $scope, event) =>\n $scope.querySelector(\".tna-form-item__heading\")?.innerText?.trim(),\n },\n },\n ],\n },\n];\n","import { valueGetters } from \"../../lib/analytics-helpers.mjs\";\n\nexport default [\n {\n scope: \".tna-sidebar\",\n areaName: \"sidebar\",\n rootEventName: \"select_navigation\",\n rootData: {\n data_component_name: \"sidebar\",\n data_section: ($el, $scope) =>\n $scope.querySelector(\".tna-sidebar__heading\")?.innerText?.trim(),\n },\n events: [\n {\n eventName: \"click\",\n targetElement: \"a.tna-sidebar__link\",\n on: \"click\",\n rootData: {\n data_link_type: \"sidebar_link\",\n data_link: valueGetters.text,\n data_position: valueGetters.index,\n },\n },\n ],\n },\n];\n","import { valueGetters } from \"../../lib/analytics-helpers.mjs\";\n\nexport default [\n {\n scope: \".tna-text-input\",\n areaName: \"text-input\",\n events: [\n {\n eventName: \"blurred\",\n on: \"blur\",\n data: {\n value: valueGetters.value,\n\n group: ($el, $scope) =>\n $scope\n .closest(\".tna-form-item\")\n ?.querySelector(\".tna-form-item__heading\")\n ?.innerText?.trim(),\n },\n },\n ],\n },\n];\n","import { valueGetters } from \"../../lib/analytics-helpers.mjs\";\n\nexport default [\n {\n scope: \".tna-textarea\",\n areaName: \"textarea\",\n events: [\n {\n eventName: \"blurred\",\n on: \"blur\",\n data: {\n value: valueGetters.value,\n // eslint-disable-next-line no-unused-vars\n group: ($el, $scope, event) =>\n $scope\n .closest(\".tna-form-item\")\n ?.querySelector(\".tna-form-item__heading\")\n ?.innerText?.trim(),\n },\n },\n ],\n },\n];\n","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>…\";\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.$tabListHeading =\n $module && $module.querySelector(\".tna-tabs__list-heading\");\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.$tabListHeading.remove();\n const clickEventHandler = (event) => this.handleItemLinkClick(event);\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(\"click\", clickEventHandler, {\n capture: true,\n });\n });\n this.$tabList.addEventListener(\n \"keydown\",\n (event) => this.handleItemLinkKeyDown(event),\n { capture: true },\n );\n this.switchTabByIndex(this.currentTabIndex);\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 this.previousTab();\n preventDefaultKeyAction = true;\n break;\n case \"ArrowRight\":\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};"],"names":["root","factory","exports","module","define","amd","self","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","scope","$scope","HTMLElement","$html","classList","add","onFirstTouch","removeEventListener","addEventListener","remove","$tableWrappers","querySelectorAll","$tableWrapper","_lib_helpers_mjs__WEBPACK_IMPORTED_MODULE_17__","DJ","contains","FH","$accordion","_components_accordion_accordion_mjs__WEBPACK_IMPORTED_MODULE_0__","Accordion","$breadcrumbs","querySelector","_components_breadcrumbs_breadcrumbs_mjs__WEBPACK_IMPORTED_MODULE_1__","Breadcrumbs","$codeBlock","_components_code_block_code_block_mjs__WEBPACK_IMPORTED_MODULE_2__","CodeBlock","$cookieBanner","_components_cookie_banner_cookie_banner_mjs__WEBPACK_IMPORTED_MODULE_3__","CookieBanner","$dateInput","_components_date_input_date_input_mjs__WEBPACK_IMPORTED_MODULE_4__","DateInputProgressive","$errorSummary","_components_error_summary_error_summary_mjs__WEBPACK_IMPORTED_MODULE_5__","ErrorSummary","$fileInput","_components_file_input_file_input_mjs__WEBPACK_IMPORTED_MODULE_6__","FileInputDroppable","$footer","_components_footer_footer_mjs__WEBPACK_IMPORTED_MODULE_7__","Footer","$gallery","_components_gallery_gallery_mjs__WEBPACK_IMPORTED_MODULE_8__","Gallery","$globalHeader","_components_global_header_global_header_mjs__WEBPACK_IMPORTED_MODULE_9__","GlobalHeader","$header","_components_header_header_mjs__WEBPACK_IMPORTED_MODULE_10__","Header","$picture","_components_picture_picture_mjs__WEBPACK_IMPORTED_MODULE_11__","Picture","$sidebar","scrollTopThreshold","disableHighlightSize","_components_sidebar_sidebar_mjs__WEBPACK_IMPORTED_MODULE_12__","Sidebar","$skipLink","_components_skip_link_skip_link_mjs__WEBPACK_IMPORTED_MODULE_13__","SkipLink","$tabModule","_components_tabs_tabs_mjs__WEBPACK_IMPORTED_MODULE_14__","Tabs","$textAreaWithItemisedRows","enhancedHint","_components_textarea_textarea_mjs__WEBPACK_IMPORTED_MODULE_16__","TextAreaItemisedRows","$textInputPassword","_components_text_input_text_input_mjs__WEBPACK_IMPORTED_MODULE_15__","TextInputPassword","matchMedia","evt","matches","$element","setAttribute","wasClosed","removeAttribute","getXPathTo","id","body","tagName","ix","parentNode","siblings","childNodes","index","sibling","nodeType","getClosestElement","$startingElement","matchingElementSelectors","heading","$search","previousElementSibling","some","matchingElementSelector","innerText","parentElement","getClosestHeading","valueGetters","text","$el","replace","html","innerHTML","instance","checked","expanded","getAttribute","toString","closestHeading","xpath","target","getFileDetails","Array","from","files","file","name","size","type","componentAnalytics","areaName","rootEventName","rootData","data_component_name","eventName","targetElement","state","data_link_type","data_link","data_position","group","closest","hasAttribute","data_section","media_type","media_duration","media_provider","media_title","media_progress","findIndex","$itemButton","media_action","onCondition","image","imageSrc","EventTracker","cookies","src","A","startTime","Date","prefix","documentScope","start","initAll","navigator","doNotTrack","enableTracking","policies","disableTracking","componentConfig","addListeners","rootDefaultData","scopeArray","scopeIndex","eventConfig","attachListener","generateEventName","computedValueParameters","computedValue","recordEvent","xPath","timeSincePageLoad","entries","valueOrFunction","push","getTnaMetaTags","head","$metaEl","RegExp","getUserPreferences","userPreferences","prefersContrast","GA4","addTrackingCode","trackingCodeAdded","trackingEnabled","gTagId","TNAFrontendAnalyticsGA4","super","dataLayer","ga4Disable","destroy","ga4Data","pushToDataLayer","gtag","args","getTime","firstScript","getElementsByTagName","script","createElement","async","insertBefore","appendChild","startsWith","ga4Id","ga4","helpers","$module","$items","allowMultipleItemsOpen","singleOpenItem","$item","initItem","initState","$toggleAllButton","syncToggleAllButton","isAllOpen","closeItem","openItem","$heading","$content","$headingButton","isopen","closeAllItemsExcept","$wrapper","_lib_helpers_mjs__WEBPACK_IMPORTED_MODULE_0__","$excludeItem","closeAllLabel","openAllLabel","$breadcrumbsList","uniqueId","_lib_uuid_mjs__WEBPACK_IMPORTED_MODULE_0__","$expandable","style","display","$expandButton","focus","nextSibling","$code","$copyButton","clipboard","writeText","$acceptButton","$rejectButton","$prompt","$acceptedMessage","$rejectedMessage","$closeButtons","_nationalarchives_cookies_src_index_js__WEBPACK_IMPORTED_MODULE_0__","accept","reject","$closeButton","close","showPanel","$panel","$yearWrapper","$yearInput","$monthWrapper","$monthInput","$dayWrapper","$dayInput","update","isValidYear","showMonth","isValidMonth","showDay","hideDay","hideMonth","yearValue","isNaN","monthRawValue","monthIntValue","disableAutofocus","setFocus","handleClick","isFocusable","onBlur","onBeforeFocus","$target","focusTarget","preventDefault","getFragmentFromUrl","url","pop","HTMLAnchorElement","inputId","href","$input","getElementById","$legendOrLabel","getAssociatedLegendOrLabel","scrollIntoView","preventScroll","$fieldset","$legends","$candidateLegend","HTMLInputElement","legendTop","getBoundingClientRect","top","inputRect","height","innerHeight","$body","acceptMutltipleFiles","$droppableArea","$pseudoSelectFileText","fileText","textContent","$droppableButtons","$pseudoSelectFileButton","$pseudoDropFileButton","$droppableAreaAriaLabel","showDropTarget","hideDropTarget","onChange","isContainingFiles","dataTransfer","hasNoTypesInfo","types","isDraggingFiles","updateAriaLabel","classToAdd","items","themeCookieName","$themeSelector","$themeSelectorNotice","$themeSelectorEnableSettingsCookiesButton","$tnaTemplate","currentTheme","themeOnLoad","$themeSelectorButtons","$themeSelectorButton","$button","setTheme","selectThemeSelectorButton","showThemeSelector","$currentThemeButton","find","theme","$selectedButton","$itemsContainer","$navigation","$navigationItems","$navigationButtons","$navigationButtonPrev","$navigationButtonNext","setup","currentId","showItem","preventDefaultKeyAction","showPreviousItem","showNextItem","showFirstItem","showLastItem","stopPropagation","$liveRegion","prepend","getCurrentItemIndex","nextIndexToShow","$toggleButton","$topNavigation","$links","menuOpened","mql","syncState","handleToggleNavigation","addListener","code","show","hide","hidden","$imageWrapper","$transcriptToggle","$transcript","transcriptOpened","openLabel","informationLabelOpen","closeLabel","informationLabelClose","toggleTranscript","substring","item","breakpoints","tiny","getComputedStyle","getPropertyValue","small","medium","join","hideOnDevice","currentItem","highlightCurrentSection","$topItem","findLast","Math","floor","linkedElementListener","linkedElementId","$linkedElement","focusLinkedElement","removeFocusProperties","$tabListHeading","$tabList","$tabListItemLinks","$tabItems","currentTabIndex","activeTabOnLoad","previousTabIndex","allowClose","clickEventHandler","handleItemLinkClick","$tabListItemLink","tabPanelID","$tabPanel","capture","handleItemLinkKeyDown","switchTabByIndex","itemLinkClickEvent","targetItem","currentTarget","switchTabByID","itemLinkKeyDownEvent","previousTab","nextTab","newIndex","switchFocus","disallowClose","$tabItem","targetId","$textInputWrapper","$textInputPasswordToggle","updateTogglePasswordButtonText","togglePasswordType","$formFieldInput","$formFieldInputHint","$formFieldBody","values","$formFieldNewInput","attribute","updateList","appendValue","$formFieldNewInputAddButton","$formFieldNewInputAddButtonInner","$formFieldNewInputAddButtonInnerExtra","$formFieldLiveAria","$formFieldCounter","$valuesList","updateAriaText","content","normaliseValue","isValueInList","eachValue","newValue","removeValue","existingValue","$itemLabel","$removeItemButton","innerTextItemValue","innerTextValue","$caption","tableScrollInitialised","_uuid_mjs__WEBPACK_IMPORTED_MODULE_0__","scrollWidth","clientWidth","datetime","prettyDatetime","dateStr","isDateTime","test","isDate","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","toStringTag"],"sourceRoot":""}
|