@nationalarchives/frontend 0.43.0 → 0.44.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (60) hide show
  1. package/nationalarchives/all+analytics.js +1 -2
  2. package/nationalarchives/all+analytics.js.map +1 -1
  3. package/nationalarchives/all.css +1 -1
  4. package/nationalarchives/all.css.map +1 -1
  5. package/nationalarchives/all.js +1 -2
  6. package/nationalarchives/all.js.map +1 -1
  7. package/nationalarchives/analytics.js +1 -1
  8. package/nationalarchives/analytics.js.map +1 -1
  9. package/nationalarchives/components/accordion/accordion.js +1 -1
  10. package/nationalarchives/components/accordion/accordion.js.map +1 -1
  11. package/nationalarchives/components/breadcrumbs/breadcrumbs.js +1 -1
  12. package/nationalarchives/components/breadcrumbs/breadcrumbs.js.map +1 -1
  13. package/nationalarchives/components/breadcrumbs/breadcrumbs.mjs +49 -43
  14. package/nationalarchives/components/code-block/code-block.js +1 -2
  15. package/nationalarchives/components/code-block/code-block.js.map +1 -1
  16. package/nationalarchives/components/cookie-banner/cookie-banner.js +1 -1
  17. package/nationalarchives/components/cookie-banner/cookie-banner.js.map +1 -1
  18. package/nationalarchives/components/date-input/date-input.js +1 -1
  19. package/nationalarchives/components/date-input/date-input.js.map +1 -1
  20. package/nationalarchives/components/error-summary/error-summary.js +1 -1
  21. package/nationalarchives/components/error-summary/error-summary.js.map +1 -1
  22. package/nationalarchives/components/file-input/file-input.js +1 -1
  23. package/nationalarchives/components/file-input/file-input.js.map +1 -1
  24. package/nationalarchives/components/file-input/file-input.mjs +4 -0
  25. package/nationalarchives/components/footer/footer.js +1 -1
  26. package/nationalarchives/components/footer/footer.js.map +1 -1
  27. package/nationalarchives/components/footer/footer.mjs +6 -2
  28. package/nationalarchives/components/gallery/gallery.js +1 -1
  29. package/nationalarchives/components/gallery/gallery.js.map +1 -1
  30. package/nationalarchives/components/global-header/global-header.js +1 -1
  31. package/nationalarchives/components/global-header/global-header.js.map +1 -1
  32. package/nationalarchives/components/header/header.js +1 -1
  33. package/nationalarchives/components/header/header.js.map +1 -1
  34. package/nationalarchives/components/hero/fixtures.json +42 -0
  35. package/nationalarchives/components/hero/hero.css +1 -1
  36. package/nationalarchives/components/hero/hero.css.map +1 -1
  37. package/nationalarchives/components/hero/hero.scss +10 -4
  38. package/nationalarchives/components/picture/picture.js +1 -1
  39. package/nationalarchives/components/picture/picture.js.map +1 -1
  40. package/nationalarchives/components/sidebar/sidebar.css +1 -1
  41. package/nationalarchives/components/sidebar/sidebar.css.map +1 -1
  42. package/nationalarchives/components/sidebar/sidebar.js +1 -1
  43. package/nationalarchives/components/sidebar/sidebar.js.map +1 -1
  44. package/nationalarchives/components/sidebar/sidebar.mjs +13 -13
  45. package/nationalarchives/components/sidebar/sidebar.scss +18 -18
  46. package/nationalarchives/components/skip-link/skip-link.js +1 -1
  47. package/nationalarchives/components/skip-link/skip-link.js.map +1 -1
  48. package/nationalarchives/components/tabs/tabs.js +1 -1
  49. package/nationalarchives/components/tabs/tabs.js.map +1 -1
  50. package/nationalarchives/components/text-input/text-input.js +1 -1
  51. package/nationalarchives/components/text-input/text-input.js.map +1 -1
  52. package/nationalarchives/components/textarea/textarea.js +1 -1
  53. package/nationalarchives/components/textarea/textarea.js.map +1 -1
  54. package/nationalarchives/components/textarea/textarea.mjs +6 -2
  55. package/nationalarchives/prototype-kit.css +1 -1
  56. package/nationalarchives/prototype-kit.css.map +1 -1
  57. package/package.json +3 -3
  58. package/nationalarchives/all+analytics.js.LICENSE.txt +0 -1
  59. package/nationalarchives/all.js.LICENSE.txt +0 -1
  60. package/nationalarchives/components/code-block/code-block.js.LICENSE.txt +0 -1
@@ -1,2 +1,2 @@
1
- !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.TNAFrontendAnalytics=t():e.TNAFrontendAnalytics=t()}(self,()=>(()=>{"use strict";var e={533(e,t,n){function a(e){return a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},a(e)}var o;function r(e){return function(e){if(Array.isArray(e))return i(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(e){if("string"==typeof e)return i(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?i(e,t):void 0}}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function i(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=Array(t);n<t;n++)a[n]=e[n];return a}function l(e,t){for(var n=0;n<t.length;n++){var a=t[n];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,u(a.key),a)}}function c(e,t,n){return(t=u(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function u(e){var t=function(e){if("object"!=a(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=a(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==a(t)?t:t+""}n.d(t,{A:()=>k}),(o=window).TNAFrontendCookieEvents||(o.TNAFrontendCookieEvents=null);var s,d=function(){return e=function e(){var t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];if(function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),c(this,"events",{}),c(this,"oneTimeEvents",{}),c(this,"debug",!1),this.debug=t,window.TNAFrontendCookieEvents)return this.log("Using existing TNAFrontendCookieEvents instance"),window.TNAFrontendCookieEvents;window.TNAFrontendCookieEvents=this},t=[{key:"log",value:function(){if(this.debug){for(var e,t=arguments.length,n=new Array(t),a=0;a<t;a++)n[a]=arguments[a];(e=console).log.apply(e,["[TNA Frontend Cookie Events]"].concat(n))}}},{key:"on",value:function(e,t){Object.hasOwn(this.events,e)||(this.events[e]=[]),this.events[e]=[].concat(r(this.events[e]),[t])}},{key:"once",value:function(e,t){Object.hasOwn(this.oneTimeEvents,e)||(this.oneTimeEvents[e]=[]),this.oneTimeEvents[e]=[].concat(r(this.oneTimeEvents[e]),[t])}},{key:"trigger",value:function(e){var t=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(Object.hasOwn(this.events,e)&&(this.log("Triggering event: ".concat(e),n),this.events[e].forEach(function(e){return e.call(t,n)})),Object.hasOwn(this.oneTimeEvents,e)){this.log("Triggering one-time event: ".concat(e),n);for(var a=this.oneTimeEvents[e].length-1;a>=0;a-=1)this.oneTimeEvents[e][a].call(this,n),this.oneTimeEvents[e].splice(a,1)}}}],t&&l(e.prototype,t),Object.defineProperty(e,"prototype",{writable:!1}),e;var e,t}();function f(e){return f="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},f(e)}function m(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=Array(t);n<t;n++)a[n]=e[n];return a}function v(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,a)}return n}function g(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?v(Object(n),!0).forEach(function(t){h(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):v(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}function p(e,t){for(var n=0;n<t.length;n++){var a=t[n];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,y(a.key),a)}}function h(e,t,n){return(t=y(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function y(e){var t=function(e){if("object"!=f(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=f(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==f(t)?t:t+""}(s=window).TNAFrontendCookies||(s.TNAFrontendCookies=null);var b=["usage","settings","marketing","essential"],k=function(){return e=function e(){var t=this,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),h(this,"defaultDomain",""),h(this,"defaultPath",""),h(this,"secure",!0),h(this,"policiesKey",""),h(this,"events",null),h(this,"defaultAge",null),h(this,"policiesCorrectOnInit",!1),h(this,"debug","true"===document.documentElement.dataset.tnaFrontendDebug);var a=n.defaultDomain,o=n.defaultPath,r=n.secure,i=n.policiesKey,l=n.defaultAge,c=n.newInstance,u=void 0!==c&&c,s=n.noInit,f=void 0!==s&&s;if(!u&&window.TNAFrontendCookies)return window.TNAFrontendCookies;this.defaultDomain=a||document.documentElement.dataset.tnaCookiesDomain||window.location.hostname,this.defaultPath=o||document.documentElement.dataset.tnaCookiesPath||"/",this.secure=r||"true"!==document.documentElement.dataset.tnaCookiesInsecure,this.policiesKey=i||document.documentElement.dataset.tnaCookiesPoliciesKey||"cookies_policy",this.defaultAge=l||parseInt(document.documentElement.dataset.tnaCookiesDefaultAge,10)||31536e3,this.events=new d(this.debug),this.policiesCorrectOnInit=Object.keys(this.policies).length===b.length&&b.every(function(e){return Object.keys(t.policies).includes(e)&&"boolean"==typeof t.policies[e]}),this.policiesCorrectOnInit||f||this.init(),this.log({defaultDomain:this.defaultDomain,defaultPath:this.defaultPath,secure:this.secure,policiesKey:this.policiesKey,defaultAge:this.defaultAge,policiesCorrectOnInit:this.policiesCorrectOnInit}),u||window.TNAFrontendCookies||(window.TNAFrontendCookies=this)},t=[{key:"init",value:function(){var e=this.policies;this.log("Existing policies on init:",e);var t=Object.fromEntries(Object.keys(e).filter(function(e){return b.includes(e)}).map(function(t){return[t,e[t]]}));Object.keys(t).length&&this.log("Filtered existing policies:",t),this.savePolicies(g(g({usage:!1,settings:!1,marketing:!1},t),{},{essential:!0}))}},{key:"log",value:function(){if(this.debug){for(var e,t=arguments.length,n=new Array(t),a=0;a<t;a++)n[a]=arguments[a];(e=console).log.apply(e,["[TNA Frontend Cookies]"].concat(n,[this.all]))}}},{key:"destroyInstance",value:function(){this.log("Destroying TNAFrontendCookies instance"),window.TNAFrontendCookies=null}},{key:"all",get:function(){var e={};return document.cookie.split("; ").filter(function(e){return""!==e.trim()}).forEach(function(t){var n=function(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var a,o,r,i,l=[],c=!0,u=!1;try{if(r=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(a=r.call(n)).done)&&(l.push(a.value),l.length!==t);c=!0);}catch(e){u=!0,o=e}finally{try{if(!c&&null!=n.return&&(i=n.return(),Object(i)!==i))return}finally{if(u)throw o}}return l}}(e,t)||function(e,t){if(e){if("string"==typeof e)return m(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?m(e,t):void 0}}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}(t.trim().split("="),2),a=n[0],o=n[1];a&&(e[a]=decodeURIComponent(o||""))}),e}},{key:"policies",get:function(){try{return JSON.parse(this.get(this.policiesKey)||"{}")}catch(e){return{}}}},{key:"exists",value:function(e){return Object.hasOwn(this.all,e)}},{key:"hasValue",value:function(e,t){return this.get(e)===t}},{key:"get",value:function(e){return this.exists(e)?decodeURIComponent(this.all[e]):null}},{key:"set",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},a=n.maxAge,o=void 0===a?this.defaultAge:a,r=n.sameSite,i=void 0===r?"Lax":r,l=n.domain,c=void 0===l?this.defaultDomain:l,u=n.path,s=void 0===u?this.defaultPath:u,d=n.secure,f=void 0===d?this.secure:d,m=n.session,v=void 0!==m&&m;if(e){var g="";f&&(g="; secure");var p="";v||(p="; max-age=".concat(o));var h="".concat(encodeURIComponent(e),"=").concat(encodeURIComponent(t),"; domain=").concat(c,"; samesite=").concat(i,"; path=").concat(s).concat(p).concat(g);document.cookie=h,this.log("Set cookie:",{key:e,value:t,maxAge:o,path:s,sameSite:i,domain:c,secure:f,session:v,cookie:h}),this.events.trigger("setCookie",{key:e,value:t,maxAge:o,path:s,sameSite:i,domain:c,secure:f,session:v,cookie:h})}}},{key:"delete",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"/",n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:this.defaultDomain,a={maxAge:-1,path:t,domain:n||this.defaultDomain};this.set(e,"",a),this.log("Deleted cookie:",g({key:e,path:t,domain:n},a)),this.events.trigger("deleteCookie",g({key:e},a))}},{key:"deleteAll",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"/",n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.defaultDomain;Object.keys(this.all).forEach(function(a){e.delete(a,t,n)}),this.log("Deleted all cookies",{path:t,domain:n}),this.events.trigger("deleteAllCookies",{path:t,domain:n})}},{key:"acceptPolicy",value:function(e){this.log("Accepting policy:",e),this.setPolicy(e,!0),this.events.trigger("acceptPolicy",e),this.events.trigger("changePolicy",h({},e,!0))}},{key:"rejectPolicy",value:function(e){this.log("Rejecting policy:",e),this.setPolicy(e,!1),this.events.trigger("rejectPolicy",e),this.events.trigger("changePolicy",h({},e,!1))}},{key:"setPolicy",value:function(e,t){"essential"!==e?(this.log("Setting policy ".concat(e," to ").concat(t)),this.savePolicies(g(g({},this.policies),{},h(h({},e,t),"essential",!0))),this.events.trigger("changePolicy",h({},e,t))):this.log("Cannot change essential policy, it is always accepted.")}},{key:"acceptAllPolicies",value:function(){this.log("Accepting all policies");var e=Object.fromEntries(Object.keys(this.policies).map(function(e){return[e.toLowerCase(),!0]}));this.savePolicies(e),this.events.trigger("acceptAllPolicies"),this.events.trigger("changePolicy",e)}},{key:"rejectAllPolicies",value:function(){this.log("Rejecting all policies");var e=g(g({},Object.fromEntries(Object.keys(this.policies).map(function(e){return[e.toLowerCase(),!1]}))),{},{essential:!0});this.savePolicies(e),this.events.trigger("rejectAllPolicies"),this.events.trigger("changePolicy",e)}},{key:"savePolicies",value:function(e){this.log("Saving policies:",e),this.set(this.policiesKey,JSON.stringify(e))}},{key:"isPolicyAccepted",value:function(e){return Object.hasOwn(this.policies,e)?!0===this.policies[e]:null}},{key:"on",value:function(e,t){this.log("Adding event listener for: ".concat(e)),this.events.on(e,t)}},{key:"once",value:function(e,t){this.log("Adding one-time event listener for: ".concat(e)),this.events.once(e,t)}}],t&&p(e.prototype,t),Object.defineProperty(e,"prototype",{writable:!1}),e;var e,t}()}},t={};function n(a){var o=t[a];if(void 0!==o)return o.exports;var r=t[a]={exports:{}};return e[a](r,r.exports,n),r.exports}n.d=(e,t)=>{for(var a in t)n.o(t,a)&&!n.o(e,a)&&Object.defineProperty(e,a,{enumerable:!0,get:t[a]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var a={};n.r(a),n.d(a,{EventTracker:()=>V,GA4:()=>B,helpers:()=>J});var o=function(e){if(""!==e.id)return'id("'.concat(e.id,'")');if(e===document.body)return e.tagName;var t=0;if(e.parentNode){for(var n=e.parentNode.childNodes,a=0;a<n.length;a+=1){var r=n[a];if(r===e)return"".concat(o(e.parentNode),"/").concat(e.tagName,"[").concat(t+1,"]");1===r.nodeType&&r.tagName===e.tagName&&(t+=1)}return"".concat(o(e.parentNode),"/").concat(e.tagName)}return e.tagName},r=function(e,t){var n="",a=e;do{for(;a.previousElementSibling;)if(a=a.previousElementSibling,t.some(function(e){return a.matches(e)})){n=a.innerText;break}a=a.parentElement}while(a.parentElement&&!n);return n},i=function(e){return r(e,["h1","h2","h3","h4","h5","h6"])},l={text:function(e){return e.innerText.replace(/\n/g," ")},html:function(e){return e.innerHTML},value:function(e){return e.value},index:function(e,t,n,a){return a},instance:function(e,t,n,a,o){return o},checked:function(e){return e.checked?"checked":"unchecked"},expanded:function(e){var t=e.getAttribute("aria-expanded");return null===t?null:"true"===t.toString()?"opened":"closed"},closestHeading:function(e){return i(e)},xpath:function(e){return o(e.target)}};const c=[{scope:".tna-accordion",areaName:"accordion",rootEventName:"select_feature",rootData:{data_component_name:"accordion"},events:[{eventName:"click",targetElement:".tna-accordion__summary",on:"click",data:{state:l.expanded,value:l.text},rootData:{data_link_type:l.expanded,data_link:l.text,data_position:l.index}}]}],u=[{scope:".tna-breadcrumbs",areaName:"breadcrumbs",rootEventName:"select_navigation",rootData:{data_component_name:"breadcrumbs"},events:[{eventName:"click",targetElement:"a.tna-breadcrumbs__link",on:"click",data:{state:"expand",value:l.html},rootData:{data_link_type:"breadcrumb_link",data_link:l.text}},{eventName:"click",targetElement:".tna-breadcrumbs__item--expandable button.tna-breadcrumbs__link",on:"click",data:{state:"expand",value:l.html},rootData:{data_link_type:"breadcrumb_expand",data_link:l.text}}]}],s=[{scope:".tna-checkboxes",areaName:"checkboxes",events:[{eventName:"toggle",targetElement:".tna-checkboxes__item input",on:"change",data:{state:l.checked,value:function(e,t,n){return e.parentNode.innerText.trim()},group:function(e,t,n){var a;return null===(a=t.closest(".tna-form-item"))||void 0===a||null===(a=a.querySelector(".tna-form-item__heading"))||void 0===a||null===(a=a.innerText)||void 0===a?void 0:a.trim()}}}]}],d=[{scope:".tna-details",areaName:"details",events:[{eventName:"click",targetElement:".tna-details__summary",on:"click",data:{state:function(e,t,n){var a,o;return null!==(a=null===(o=t.querySelector(".tna-details__details"))||void 0===o?void 0:o.hasAttribute("open"))&&void 0!==a&&a?"closed":"opened"},value:l.text}}]}],f=[{scope:".tna-error-summary",areaName:"error-summary",events:[{eventName:"jump",targetElement:"a.tna-error-summary__link",on:"click",data:{value:l.text}}]}];var m=function(e){return JSON.stringify(Array.from(e.files).map(function(e){return{name:e.name,size:e.size,type:e.type}}))};const v=[{scope:".tna-file-input",areaName:"file-input",events:[{eventName:"blurred",on:"blur",data:{value:m,state:function(e){return e.files.length},group:function(e,t){var n;return null===(n=t.closest(".tna-form-item"))||void 0===n||null===(n=n.querySelector(".tna-form-item__heading"))||void 0===n||null===(n=n.innerText)||void 0===n?void 0:n.trim()}}},{eventName:"cancelled",on:"cancel",data:{value:m,state:function(e){return e.files.length},group:function(e,t){var n;return null===(n=t.closest(".tna-form-item"))||void 0===n||null===(n=n.querySelector(".tna-form-item__heading"))||void 0===n||null===(n=n.innerText)||void 0===n?void 0:n.trim()}}},{eventName:"changed",on:"change",data:{value:m,state:function(e){return e.files.length},group:function(e,t){var n;return null===(n=t.closest(".tna-form-item"))||void 0===n||null===(n=n.querySelector(".tna-form-item__heading"))||void 0===n||null===(n=n.innerText)||void 0===n?void 0:n.trim()}}}]}],g=[{scope:".tna-footer",areaName:"footer",rootEventName:"global_navigation",rootData:{data_component_name:"footer"},events:[{eventName:"link.click",targetElement:".tna-footer__navigation-block-item-link",on:"click",data:{value:l.text},rootData:{data_link_type:"link",data_section:l.closestHeading,data_link:l.text}},{eventName:"social_link.click",targetElement:".tna-footer__social-item-link",on:"click",data:{value:l.text},rootData:{data_link_type:"icon",data_section:"Social media",data_link:function(e){return e.dataset.name}}},{eventName:"legal_link.click",targetElement:".tna-footer__legal-item-link",on:"click",data:{value:l.text},rootData:{data_link_type:"link",data_section:"Legal information",data_link:l.text}},{eventName:"mailing_list.click",targetElement:".tna-footer__mailing-list a.tna-button",on:"click",data:{value:l.text},rootData:{data_link_type:"button",data_section:"Mailing list",data_link:l.text}},{eventName:"ogl.click",targetElement:".tna-footer__licence p a.tna-footer__link",on:"click",data:{value:l.text},rootData:{data_link_type:"link",data_section:"OGL",data_link:l.text}},{eventName:"govuk.click",targetElement:".tna-footer__govuk-link",on:"click",data:{value:l.text},rootData:{data_link_type:"Logo",data_section:"GOV.UK",data_link:l.text}},{eventName:"theme.change",targetElement:".tna-footer__theme-selector-button",on:"click",data:{value:l.value}}]}],p=[{scope:".tna-gallery",areaName:"gallery",rootEventName:"select_media",rootData:{media_type:"gallery",media_duration:function(e,t){return t.querySelectorAll(".tna-gallery__navigation-item").length},media_provider:"tna",media_title:function(e,t,n,a,o){var r;return(null===(r=t.querySelector(".tna-gallery__header-inner"))||void 0===r||null===(r=r.innerText)||void 0===r?void 0:r.trim())||"gallery_".concat(o)},media_progress:function(e,t){return(Array.from(t.querySelectorAll(".tna-gallery__navigation-item")).findIndex(function(e){return"true"===e.getAttribute("aria-current")})||-1)+1}},events:[{eventName:"click",targetElement:".tna-gallery__navigation-item",on:"click",data:{value:l.text},rootData:{data_link:"image",media_action:"progress",media_progress:l.index}},{eventName:"click",targetElement:".tna-gallery__navigation-prev",on:"click",data:{value:function(e,t){var n;return null===(n=t.querySelector(".tna-gallery__item:not([hidden]) .tna-gallery__item-header"))||void 0===n||null===(n=n.innerText)||void 0===n?void 0:n.trim()}},rootData:{data_link:"previous",media_action:"progress"}},{eventName:"click",targetElement:".tna-gallery__navigation-next",on:"click",data:{value:function(e,t){var n;return null===(n=t.querySelector(".tna-gallery__item:not([hidden]) .tna-gallery__item-header"))||void 0===n||null===(n=n.innerText)||void 0===n?void 0:n.trim()}},rootData:{data_link:"next",media_action:"progress"}},{eventName:"keypress",on:"keydown",onCondition:function(e,t,n){return["ArrowLeft","ArrowRight","ArrowUp","ArrowDown","End","Home"].includes(n.key)},data:{value:function(e,t,n){return n.key}},rootData:{data_link:"keypress",media_action:"progress"}}]}],h=[{scope:".tna-global-header",areaName:"header",rootEventName:"global_navigation",rootData:{data_component_name:"header"},events:[{eventName:"toggle",targetElement:".tna-global-header__navigation-button",on:"click",data:{state:l.expanded},rootData:{data_link_type:"mobile_menu",data_link:function(e){var t=e.getAttribute("aria-expanded");return null===t?null:"true"===t.toString()?"Open menu":"Close menu"},data_section:"Burger menu"}},{eventName:"logo.click",targetElement:".tna-global-header__logo",on:"click",rootData:{data_link_type:"logo",data_link:"The National Archives",data_section:"Top navigation and logo"}},{eventName:"primary_link.click",targetElement:".tna-global-header__navigation-item-link",on:"click",data:{value:l.text},rootData:{data_link_type:"menu",data_section:l.text,data_position:1,data_link:l.text}},{eventName:"secondary_link.click",targetElement:".tna-global-header__top-navigation-link",on:"click",data:{value:l.text},rootData:{data_link_type:"icon",data_link:l.text,data_section:"Top navigation and logo"}}]}],y=[{scope:".tna-header",areaName:"header",events:[{eventName:"toggle",targetElement:".tna-header__navigation-button",on:"click",data:{state:l.expanded}}]}],b=[{scope:".tna-picture",areaName:"picture",events:[{eventName:"toggle_transcript",targetElement:".tna-picture__toggle-transcript",on:"click",data:{state:l.expanded,value:function(e,t,n){var a=i(t),o=t.querySelector(".tna-picture__image"),r=o.getAttribute("src"),l=o.getAttribute("alt"),c="".concat(l," (").concat(r,")");return a?"".concat(a," > ").concat(c):c}}}]}],k=[{scope:".tna-radios",areaName:"radios",events:[{eventName:"toggle",targetElement:".tna-radios__item input",on:"change",data:{state:l.checked,value:function(e,t,n){return e.parentNode.innerText},group:function(e,t,n){var a;return null===(a=t.closest(".tna-form-item"))||void 0===a||null===(a=a.querySelector(".tna-form-item__heading"))||void 0===a||null===(a=a.innerText)||void 0===a?void 0:a.trim()}}}]}],_=[{scope:".tna-search-field",areaName:"search-field",events:[{eventName:"blurred",targetElement:".tna-search-field__input",on:"blur",data:{value:l.value,group:function(e,t,n){var a;return null===(a=t.querySelector(".tna-form-item__heading"))||void 0===a||null===(a=a.innerText)||void 0===a?void 0:a.trim()}}}]}],w=[{scope:".tna-sidebar",areaName:"sidebar",rootEventName:"select_navigation",rootData:{data_component_name:"sidebar",data_section:function(e,t){var n;return null===(n=t.querySelector(".tna-sidebar__heading"))||void 0===n||null===(n=n.innerText)||void 0===n?void 0:n.trim()}},events:[{eventName:"click",targetElement:"a.tna-sidebar__link",on:"click",rootData:{data_link_type:"sidebar_link",data_link:l.text,data_position:l.index}}]}],A=[{scope:".tna-text-input",areaName:"text-input",events:[{eventName:"blurred",on:"blur",data:{value:l.value,group:function(e,t){var n;return null===(n=t.closest(".tna-form-item"))||void 0===n||null===(n=n.querySelector(".tna-form-item__heading"))||void 0===n||null===(n=n.innerText)||void 0===n?void 0:n.trim()}}}]}],E=[{scope:".tna-textarea",areaName:"textarea",events:[{eventName:"blurred",on:"blur",data:{value:l.value,group:function(e,t,n){var a;return null===(a=t.closest(".tna-form-item"))||void 0===a||null===(a=a.querySelector(".tna-form-item__heading"))||void 0===a||null===(a=a.innerText)||void 0===a?void 0:a.trim()}}}]}];var x=n(533);function O(e,t){if(t&&("object"==C(t)||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e)}function N(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(e){}return(N=function(){return!!e})()}function T(e){return T=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},T(e)}function j(e,t){return j=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},j(e,t)}function S(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var a,o,r,i,l=[],c=!0,u=!1;try{if(r=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(a=r.call(n)).done)&&(l.push(a.value),l.length!==t);c=!0);}catch(e){u=!0,o=e}finally{try{if(!c&&null!=n.return&&(i=n.return(),Object(i)!==i))return}finally{if(u)throw o}}return l}}(e,t)||R(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function P(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,a)}return n}function D(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?P(Object(n),!0).forEach(function(t){q(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):P(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}function C(e){return C="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},C(e)}function I(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function F(e,t){for(var n=0;n<t.length;n++){var a=t[n];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,M(a.key),a)}}function L(e,t,n){return t&&F(e.prototype,t),n&&F(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e}function q(e,t,n){return(t=M(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function M(e){var t=function(e){if("object"!=C(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=C(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==C(t)?t:t+""}function U(e){return function(e){if(Array.isArray(e))return K(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||R(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function R(e,t){if(e){if("string"==typeof e)return K(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?K(e,t):void 0}}function K(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=Array(t);n<t;n++)a[n]=e[n];return a}var G=[].concat(U(c),U(u),U(s),U(d),U(f),U(v),U(g),U(p),U(h),U(y),U([{scope:".tna-hero",areaName:"hero",events:[{eventName:"toggle_caption",targetElement:".tna-hero__details-summary",on:"click",data:{state:function(e,t,n){var a,o;return null!==(a=null===(o=t.querySelector(".tna-hero__details"))||void 0===o?void 0:o.hasAttribute("open"))&&void 0!==a&&a?"closed":"opened"},value:function(e,t,n){var a;return null===(a=t.querySelector("img[alt]"))||void 0===a?void 0:a.getAttribute("alt")}}}]}]),U(b),U(k),U(_),U(w),U(A),U(E)),V=function(){return L(function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};I(this,e),q(this,"cookies",new x.A),q(this,"events",[]),q(this,"startTime",new Date),q(this,"prefix","tna"),q(this,"document",document);var n=t.prefix,a=void 0===n?null:n,o=t.documentScope,r=void 0===o?document:o;a&&(this.prefix=a),r&&(this.document=r)},[{key:"start",value:function(e){var t=this;navigator.doNotTrack&&1===navigator.doNotTrack||(this.cookies.isPolicyAccepted("usage")&&this.enableTracking(),this.cookies.on("changePolicy",function(e){Object.hasOwn(e,"usage")&&(e.usage?t.enableTracking():t.disableTracking())}),e&&this.initAll())}},{key:"enableTracking",value:function(){}},{key:"disableTracking",value:function(){}},{key:"initAll",value:function(){var e=this;G.forEach(function(t){e.addListeners(t.scope,t.areaName,t.events,t.rootEventName||"",t.rootData||{})})}},{key:"addListeners",value:function(e,t,n){var a=this,o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"",r=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{},i=[];"string"==typeof e?i=Array.from(this.document.querySelectorAll(e)):"object"===C(e)&&(i=[e]),0!==i.length&&i.forEach(function(i,l){n.forEach(function(n){n.on&&(n.targetElement?Array.from(i.querySelectorAll(n.targetElement)).forEach(function(c,u){return a.attachListener(c,i,o,r,n,e,t,u+1,l+1)}):a.attachListener(i,i,o,r,n,e,t,1,l+1))})})}},{key:"generateEventName",value:function(e,t){return"".concat(this.prefix,".").concat(e,".").concat(t.eventName||t.on)}},{key:"attachListener",value:function(e,t,n,a,r,i,l,c,u){var s=this,d=r.on,f=r.data,m=r.targetElement,v=r.rootData,g=void 0===v?{}:v,p=r.onCondition,h=void 0===p?null:p;e.addEventListener(d,function(d){var v=[e,t,d,c,u];(null===h||s.computedValue.apply(s,[h].concat(v)))&&s.recordEvent(r.rootEventName?"".concat(s.prefix,".").concat(r.rootEventName):n?"".concat(s.prefix,".").concat(n):s.generateEventName(l,r),D(D({},f),{},{name:s.generateEventName(l,r),value:null!=f&&f.value?s.computedValue.apply(s,[f.value].concat(v)):null,state:null!=f&&f.state?s.computedValue.apply(s,[f.state].concat(v)):null,group:null!=f&&f.group?s.computedValue.apply(s,[f.group].concat(v)):null,xPath:o(e),targetElement:m,timeSincePageLoad:new Date-s.startTime,index:c,instance:u,scope:i,areaName:l}),Object.fromEntries(Object.entries(D(D({},a),g)).map(function(e){var t=S(e,2),n=t[0],a=t[1];return[n,s.computedValue.apply(s,[a].concat(v))]})))})}},{key:"computedValue",value:function(e,t,n,a,o,r){return"function"==typeof e?e.call(this,t,n,a,o,r):null!=e?e:null}},{key:"recordEvent",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};this.events.push(D(D({event:e},t),n))}},{key:"getTnaMetaTags",value:function(){var e=this;return Object.fromEntries([].concat(U(Array.from(document.head.querySelectorAll('meta[name^="'.concat(this.prefix,'_root:"][content]'))).map(function(t){return[t.getAttribute("name").replace(new RegExp("^".concat(e.prefix,"_root:"),"u"),""),t.getAttribute("content")]})),U(Array.from(document.head.querySelectorAll('meta[name^="'.concat(this.prefix,'."][content]'))).map(function(e){return[e.getAttribute("name"),e.getAttribute("content")]}))))}},{key:"getUserPreferences",value:function(){var e,t,n,a,o,r,i,l,c,u,s,d,f={};f["".concat(this.prefix,".pref.prefers-color-scheme")]=null!==(e=(t=window).matchMedia)&&void 0!==e&&e.call(t,"(prefers-color-scheme: dark)").matches?"dark":"light",f["".concat(this.prefix,".pref.forced-colors")]=null===(n=(a=window).matchMedia)||void 0===n?void 0:n.call(a,"(forced-colors: active)").matches;var m="no-preference";return null!==(o=(r=window).matchMedia)&&void 0!==o&&o.call(r,"(prefers-contrast: more)").matches?m="more":null!==(i=(l=window).matchMedia)&&void 0!==i&&i.call(l,"(prefers-contrast: less)").matches&&(m="less"),f["".concat(this.prefix,".pref.prefers-contrast")]=m,f["".concat(this.prefix,".pref.prefers-reduced-motion")]=null===(c=(u=window).matchMedia)||void 0===c?void 0:c.call(u,"(prefers-reduced-motion: reduce)").matches,f["".concat(this.prefix,".pref.prefers-reduced-transparency")]=null===(s=(d=window).matchMedia)||void 0===s?void 0:s.call(d,"(prefers-reduced-transparency: reduce)").matches,f}}])}(),B=function(e){function t(){var e,n,a=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(I(this,t),window.TNAFrontendAnalyticsGA4)return O(n,window.TNAFrontendAnalyticsGA4);var o,r,i,l=a.id,c=void 0===l?"":l,u=a.prefix,s=void 0===u?null:u,d=a.initAll,f=void 0===d||d,m=a.addTrackingCode,v=void 0===m||m;return o=this,i=[{prefix:s}],r=T(r=t),q(n=O(o,N()?Reflect.construct(r,i||[],T(o).constructor):r.apply(o,i)),"addTrackingCode",!0),q(n,"trackingCodeAdded",!1),q(n,"trackingEnabled",!1),q(n,"gTagId",void 0),window.TNAFrontendAnalyticsGA4=n,n.addTrackingCode=v,(e=window).dataLayer||(e.dataLayer=[]),c&&(n.gTagId=c,n.ga4Disable="ga-disable-".concat(n.gTagId),n.cookies.isPolicyAccepted("usage")||(window[n.ga4Disable]=!0,n.cookies.set(n.ga4Disable,"true"))),n.start(f),n}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&j(e,t)}(t,e),L(t,[{key:"destroy",value:function(){window.TNAFrontendAnalyticsGA4=null}},{key:"recordEvent",value:function(e,t){var n=this,a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},o=D(D({event:e},Object.fromEntries(Object.entries(t).map(function(e){var t=S(e,2),a=t[0],o=t[1];return["".concat(n.prefix,".event.").concat(a),o]}))),a);this.pushToDataLayer(o)}},{key:"gtag",value:function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];this.pushToDataLayer(t)}},{key:"pushToDataLayer",value:function(e){window.dataLayer.push(e)}},{key:"enableTracking",value:function(){if(!this.trackingEnabled){if(window[this.ga4Disable]=!1,this.cookies.set(this.ga4Disable,"false"),!this.trackingCodeAdded&&this.addTrackingCode){if(!this.gTagId)throw Error("ID was not specified");this.pushToDataLayer(D(D(D({},this.getTnaMetaTags()),this.getUserPreferences()),{},{"gtm.start":(new Date).getTime(),event:"gtm.js"}));var e=S(document.getElementsByTagName("script"),1)[0],t=document.createElement("script");t.async=!0,t.src="https://www.googletagmanager.com/gtm.js?id=".concat(this.gTagId,"&l=dataLayer"),e?e.parentNode.insertBefore(t,e):document.head.appendChild(t),this.trackingCodeAdded=!0}this.trackingEnabled=!0}}},{key:"disableTracking",value:function(){var e=this;this.trackingEnabled&&(window[this.ga4Disable]=!0,this.cookies.set(this.ga4Disable,"true"),Object.keys(this.cookies.all).forEach(function(t){t.startsWith("_ga")&&e.cookies.delete(t)}),this.trackingEnabled=!1)}}])}(V),H=document.documentElement.dataset.ga4;H&&new B({id:H});var J={getXPathTo:o,getClosestHeading:i,getClosestElement:r,valueGetters:l};return a})());
1
+ !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.TNAFrontendAnalytics=t():e.TNAFrontendAnalytics=t()}(self,()=>(()=>{"use strict";var e={533(e,t,a){a.d(t,{A:()=>o}),window.TNAFrontendCookieEvents||=null;class n{events={};oneTimeEvents={};debug=!1;constructor(e=!1){if(this.debug=e,window.TNAFrontendCookieEvents)return this.log("Using existing TNAFrontendCookieEvents instance"),window.TNAFrontendCookieEvents;window.TNAFrontendCookieEvents=this}log(...e){this.debug&&console.log("[TNA Frontend Cookie Events]",...e)}on(e,t){Object.hasOwn(this.events,e)||(this.events[e]=[]),this.events[e]=[...this.events[e],t]}once(e,t){Object.hasOwn(this.oneTimeEvents,e)||(this.oneTimeEvents[e]=[]),this.oneTimeEvents[e]=[...this.oneTimeEvents[e],t]}trigger(e,t={}){if(Object.hasOwn(this.events,e)&&(this.log(`Triggering event: ${e}`,t),this.events[e].forEach(e=>e.call(this,t))),Object.hasOwn(this.oneTimeEvents,e)){this.log(`Triggering one-time event: ${e}`,t);for(let a=this.oneTimeEvents[e].length-1;a>=0;a-=1)this.oneTimeEvents[e][a].call(this,t),this.oneTimeEvents[e].splice(a,1)}}}window.TNAFrontendCookies||=null;const i=["usage","settings","marketing","essential"];class o{defaultDomain="";defaultPath="";secure=!0;policiesKey="";events=null;defaultAge=null;policiesCorrectOnInit=!1;debug="true"===document.documentElement.dataset.tnaFrontendDebug;constructor(e={}){const{defaultDomain:t,defaultPath:a,secure:o,policiesKey:r,defaultAge:s,newInstance:l=!1,noInit:c=!1}=e;if(!l&&window.TNAFrontendCookies)return window.TNAFrontendCookies;if(this.defaultDomain=t||document.documentElement.dataset.tnaCookiesDomain||window.location.hostname,this.defaultPath=a||document.documentElement.dataset.tnaCookiesPath||"/",this.secure=o||"true"!==document.documentElement.dataset.tnaCookiesInsecure,this.policiesKey=r||document.documentElement.dataset.tnaCookiesPoliciesKey||"cookies_policy",s)this.defaultAge=s;else{const e=31536e3;this.defaultAge=parseInt(document.documentElement.dataset.tnaCookiesDefaultAge,10)||e}this.events=new n(this.debug),this.policiesCorrectOnInit=Object.keys(this.policies).length===i.length&&i.every(e=>Object.keys(this.policies).includes(e)&&"boolean"==typeof this.policies[e]),this.policiesCorrectOnInit||c||this.init(),this.log({defaultDomain:this.defaultDomain,defaultPath:this.defaultPath,secure:this.secure,policiesKey:this.policiesKey,defaultAge:this.defaultAge,policiesCorrectOnInit:this.policiesCorrectOnInit}),l||window.TNAFrontendCookies||(window.TNAFrontendCookies=this)}init(){const e=this.policies;this.log("Existing policies on init:",e);const t=Object.fromEntries(Object.keys(e).filter(e=>i.includes(e)).map(t=>[t,e[t]]));Object.keys(t).length&&this.log("Filtered existing policies:",t),this.savePolicies({usage:!1,settings:!1,marketing:!1,...t,essential:!0})}log(...e){this.debug&&console.log("[TNA Frontend Cookies]",...e,this.all)}destroyInstance(){this.log("Destroying TNAFrontendCookies instance"),window.TNAFrontendCookies=null}get all(){const e={};return document.cookie.split("; ").filter(e=>""!==e.trim()).forEach(t=>{const a=t.trim().split("="),[n,i]=a;n&&(e[n]=decodeURIComponent(i||""))}),e}get policies(){try{return JSON.parse(this.get(this.policiesKey)||"{}")}catch(e){return{}}}exists(e){return Object.hasOwn(this.all,e)}hasValue(e,t){return this.get(e)===t}get(e){return this.exists(e)?decodeURIComponent(this.all[e]):null}set(e,t,a={}){const{maxAge:n=this.defaultAge,sameSite:i="Lax",domain:o=this.defaultDomain,path:r=this.defaultPath,secure:s=this.secure,session:l=!1}=a;if(!e)return;let c="";s&&(c="; secure");let d="";l||(d=`; max-age=${n}`);const m=`${encodeURIComponent(e)}=${encodeURIComponent(t)}; domain=${o}; samesite=${i}; path=${r}${d}${c}`;document.cookie=m,this.log("Set cookie:",{key:e,value:t,maxAge:n,path:r,sameSite:i,domain:o,secure:s,session:l,cookie:m}),this.events.trigger("setCookie",{key:e,value:t,maxAge:n,path:r,sameSite:i,domain:o,secure:s,session:l,cookie:m})}delete(e,t="/",a=this.defaultDomain){const n={maxAge:-1,path:t,domain:a||this.defaultDomain};this.set(e,"",n),this.log("Deleted cookie:",{key:e,path:t,domain:a,...n}),this.events.trigger("deleteCookie",{key:e,...n})}deleteAll(e="/",t=this.defaultDomain){Object.keys(this.all).forEach(a=>{this.delete(a,e,t)}),this.log("Deleted all cookies",{path:e,domain:t}),this.events.trigger("deleteAllCookies",{path:e,domain:t})}acceptPolicy(e){this.log("Accepting policy:",e),this.setPolicy(e,!0),this.events.trigger("acceptPolicy",e),this.events.trigger("changePolicy",{[e]:!0})}rejectPolicy(e){this.log("Rejecting policy:",e),this.setPolicy(e,!1),this.events.trigger("rejectPolicy",e),this.events.trigger("changePolicy",{[e]:!1})}setPolicy(e,t){"essential"!==e?(this.log(`Setting policy ${e} to ${t}`),this.savePolicies({...this.policies,[e]:t,essential:!0}),this.events.trigger("changePolicy",{[e]:t})):this.log("Cannot change essential policy, it is always accepted.")}acceptAllPolicies(){this.log("Accepting all policies");const e=Object.fromEntries(Object.keys(this.policies).map(e=>[e.toLowerCase(),!0]));this.savePolicies(e),this.events.trigger("acceptAllPolicies"),this.events.trigger("changePolicy",e)}rejectAllPolicies(){this.log("Rejecting all policies");const e={...Object.fromEntries(Object.keys(this.policies).map(e=>[e.toLowerCase(),!1])),essential:!0};this.savePolicies(e),this.events.trigger("rejectAllPolicies"),this.events.trigger("changePolicy",e)}savePolicies(e){this.log("Saving policies:",e),this.set(this.policiesKey,JSON.stringify(e))}isPolicyAccepted(e){return Object.hasOwn(this.policies,e)?!0===this.policies[e]:null}on(e,t){this.log(`Adding event listener for: ${e}`),this.events.on(e,t)}once(e,t){this.log(`Adding one-time event listener for: ${e}`),this.events.once(e,t)}}}},t={};function a(n){var i=t[n];if(void 0!==i)return i.exports;var o=t[n]={exports:{}};return e[n](o,o.exports,a),o.exports}a.d=(e,t)=>{for(var n in t)a.o(t,n)&&!a.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},a.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),a.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var n={};a.r(n),a.d(n,{EventTracker:()=>w,GA4:()=>D,helpers:()=>O});const i=e=>{if(""!==e.id)return`id("${e.id}")`;if(e===document.body)return e.tagName;let t=0;if(e.parentNode){const a=e.parentNode.childNodes;for(let n=0;n<a.length;n+=1){const o=a[n];if(o===e)return`${i(e.parentNode)}/${e.tagName}[${t+1}]`;1===o.nodeType&&o.tagName===e.tagName&&(t+=1)}return`${i(e.parentNode)}/${e.tagName}`}return e.tagName},o=(e,t)=>{let a="",n=e;do{for(;n.previousElementSibling;)if(n=n.previousElementSibling,t.some(e=>n.matches(e))){a=n.innerText;break}n=n.parentElement}while(n.parentElement&&!a);return a},r=e=>o(e,["h1","h2","h3","h4","h5","h6"]),s={text:e=>e.innerText.replace(/\n/gu," "),html:e=>e.innerHTML,value:e=>e.value,index:(e,t,a,n)=>n,instance:(e,t,a,n,i)=>i,checked:e=>e.checked?"checked":"unchecked",expanded:e=>{const t=e.getAttribute("aria-expanded");return null===t?null:"true"===t.toString()?"opened":"closed"},closestHeading:e=>r(e),xpath:e=>i(e.target)},l=[{scope:".tna-accordion",areaName:"accordion",rootEventName:"select_feature",rootData:{data_component_name:"accordion"},events:[{eventName:"click",targetElement:".tna-accordion__summary",on:"click",data:{state:s.expanded,value:s.text},rootData:{data_link_type:s.expanded,data_link:s.text,data_position:s.index}}]}],c=[{scope:".tna-breadcrumbs",areaName:"breadcrumbs",rootEventName:"select_navigation",rootData:{data_component_name:"breadcrumbs"},events:[{eventName:"click",targetElement:"a.tna-breadcrumbs__link",on:"click",data:{state:"expand",value:s.html},rootData:{data_link_type:"breadcrumb_link",data_link:s.text}},{eventName:"click",targetElement:".tna-breadcrumbs__item--expandable button.tna-breadcrumbs__link",on:"click",data:{state:"expand",value:s.html},rootData:{data_link_type:"breadcrumb_expand",data_link:s.text}}]}],d=[{scope:".tna-checkboxes",areaName:"checkboxes",events:[{eventName:"toggle",targetElement:".tna-checkboxes__item input",on:"change",data:{state:s.checked,value:(e,t,a)=>e.parentNode.innerText.trim(),group:(e,t,a)=>t.closest(".tna-form-item")?.querySelector(".tna-form-item__heading")?.innerText?.trim()}}]}],m=[{scope:".tna-details",areaName:"details",events:[{eventName:"click",targetElement:".tna-details__summary",on:"click",data:{state:(e,t,a)=>t.querySelector(".tna-details__details")?.hasAttribute("open")?"closed":"opened",value:s.text}}]}],g=[{scope:".tna-error-summary",areaName:"error-summary",events:[{eventName:"jump",targetElement:"a.tna-error-summary__link",on:"click",data:{value:s.text}}]}],h=e=>JSON.stringify(Array.from(e.files).map(e=>({name:e.name,size:e.size,type:e.type}))),u=[{scope:".tna-file-input",areaName:"file-input",events:[{eventName:"blurred",on:"blur",data:{value:h,state:e=>e.files.length,group:(e,t)=>t.closest(".tna-form-item")?.querySelector(".tna-form-item__heading")?.innerText?.trim()}},{eventName:"cancelled",on:"cancel",data:{value:h,state:e=>e.files.length,group:(e,t)=>t.closest(".tna-form-item")?.querySelector(".tna-form-item__heading")?.innerText?.trim()}},{eventName:"changed",on:"change",data:{value:h,state:e=>e.files.length,group:(e,t)=>t.closest(".tna-form-item")?.querySelector(".tna-form-item__heading")?.innerText?.trim()}}]}],p=[{scope:".tna-footer",areaName:"footer",rootEventName:"global_navigation",rootData:{data_component_name:"footer"},events:[{eventName:"link.click",targetElement:".tna-footer__navigation-block-item-link",on:"click",data:{value:s.text},rootData:{data_link_type:"link",data_section:s.closestHeading,data_link:s.text}},{eventName:"social_link.click",targetElement:".tna-footer__social-item-link",on:"click",data:{value:s.text},rootData:{data_link_type:"icon",data_section:"Social media",data_link:e=>e.dataset.name}},{eventName:"legal_link.click",targetElement:".tna-footer__legal-item-link",on:"click",data:{value:s.text},rootData:{data_link_type:"link",data_section:"Legal information",data_link:s.text}},{eventName:"mailing_list.click",targetElement:".tna-footer__mailing-list a.tna-button",on:"click",data:{value:s.text},rootData:{data_link_type:"button",data_section:"Mailing list",data_link:s.text}},{eventName:"ogl.click",targetElement:".tna-footer__licence p a.tna-footer__link",on:"click",data:{value:s.text},rootData:{data_link_type:"link",data_section:"OGL",data_link:s.text}},{eventName:"govuk.click",targetElement:".tna-footer__govuk-link",on:"click",data:{value:s.text},rootData:{data_link_type:"Logo",data_section:"GOV.UK",data_link:s.text}},{eventName:"theme.change",targetElement:".tna-footer__theme-selector-button",on:"click",data:{value:s.value}}]}],v=[{scope:".tna-gallery",areaName:"gallery",rootEventName:"select_media",rootData:{media_type:"gallery",media_duration:(e,t)=>t.querySelectorAll(".tna-gallery__navigation-item").length,media_provider:"tna",media_title:(e,t,a,n,i)=>t.querySelector(".tna-gallery__header-inner")?.innerText?.trim()||`gallery_${i}`,media_progress:(e,t)=>(Array.from(t.querySelectorAll(".tna-gallery__navigation-item")).findIndex(e=>"true"===e.getAttribute("aria-current"))||-1)+1},events:[{eventName:"click",targetElement:".tna-gallery__navigation-item",on:"click",data:{value:s.text},rootData:{data_link:"image",media_action:"progress",media_progress:s.index}},{eventName:"click",targetElement:".tna-gallery__navigation-prev",on:"click",data:{value:(e,t)=>t.querySelector(".tna-gallery__item:not([hidden]) .tna-gallery__item-header")?.innerText?.trim()},rootData:{data_link:"previous",media_action:"progress"}},{eventName:"click",targetElement:".tna-gallery__navigation-next",on:"click",data:{value:(e,t)=>t.querySelector(".tna-gallery__item:not([hidden]) .tna-gallery__item-header")?.innerText?.trim()},rootData:{data_link:"next",media_action:"progress"}},{eventName:"keypress",on:"keydown",onCondition:(e,t,a)=>["ArrowLeft","ArrowRight","ArrowUp","ArrowDown","End","Home"].includes(a.key),data:{value:(e,t,a)=>a.key},rootData:{data_link:"keypress",media_action:"progress"}}]}],_=[{scope:".tna-global-header",areaName:"header",rootEventName:"global_navigation",rootData:{data_component_name:"header"},events:[{eventName:"toggle",targetElement:".tna-global-header__navigation-button",on:"click",data:{state:s.expanded},rootData:{data_link_type:"mobile_menu",data_link:e=>{const t=e.getAttribute("aria-expanded");return null===t?null:"true"===t.toString()?"Open menu":"Close menu"},data_section:"Burger menu"}},{eventName:"logo.click",targetElement:".tna-global-header__logo",on:"click",rootData:{data_link_type:"logo",data_link:"The National Archives",data_section:"Top navigation and logo"}},{eventName:"primary_link.click",targetElement:".tna-global-header__navigation-item-link",on:"click",data:{value:s.text},rootData:{data_link_type:"menu",data_section:s.text,data_position:1,data_link:s.text}},{eventName:"secondary_link.click",targetElement:".tna-global-header__top-navigation-link",on:"click",data:{value:s.text},rootData:{data_link_type:"icon",data_link:s.text,data_section:"Top navigation and logo"}}]}],k=[{scope:".tna-header",areaName:"header",events:[{eventName:"toggle",targetElement:".tna-header__navigation-button",on:"click",data:{state:s.expanded}}]}],f=[{scope:".tna-picture",areaName:"picture",events:[{eventName:"toggle_transcript",targetElement:".tna-picture__toggle-transcript",on:"click",data:{state:s.expanded,value:(e,t,a)=>{const n=r(t),i=t.querySelector(".tna-picture__image"),o=i.getAttribute("src"),s=`${i.getAttribute("alt")} (${o})`;return n?`${n} > ${s}`:s}}}]}],y=[{scope:".tna-radios",areaName:"radios",events:[{eventName:"toggle",targetElement:".tna-radios__item input",on:"change",data:{state:s.checked,value:(e,t,a)=>e.parentNode.innerText,group:(e,t,a)=>t.closest(".tna-form-item")?.querySelector(".tna-form-item__heading")?.innerText?.trim()}}]}],b=[{scope:".tna-search-field",areaName:"search-field",events:[{eventName:"blurred",targetElement:".tna-search-field__input",on:"blur",data:{value:s.value,group:(e,t,a)=>t.querySelector(".tna-form-item__heading")?.innerText?.trim()}}]}],x=[{scope:".tna-sidebar",areaName:"sidebar",rootEventName:"select_navigation",rootData:{data_component_name:"sidebar",data_section:(e,t)=>t.querySelector(".tna-sidebar__heading")?.innerText?.trim()},events:[{eventName:"click",targetElement:"a.tna-sidebar__link",on:"click",rootData:{data_link_type:"sidebar_link",data_link:s.text,data_position:s.index}}]}],N=[{scope:".tna-text-input",areaName:"text-input",events:[{eventName:"blurred",on:"blur",data:{value:s.value,group:(e,t)=>t.closest(".tna-form-item")?.querySelector(".tna-form-item__heading")?.innerText?.trim()}}]}],E=[{scope:".tna-textarea",areaName:"textarea",events:[{eventName:"blurred",on:"blur",data:{value:s.value,group:(e,t,a)=>t.closest(".tna-form-item")?.querySelector(".tna-form-item__heading")?.innerText?.trim()}}]}];var A=a(533);const T=[...l,...c,...d,...m,...g,...u,...p,...v,..._,...k,{scope:".tna-hero",areaName:"hero",events:[{eventName:"toggle_caption",targetElement:".tna-hero__details-summary",on:"click",data:{state:(e,t,a)=>t.querySelector(".tna-hero__details")?.hasAttribute("open")?"closed":"opened",value:(e,t,a)=>t.querySelector("img[alt]")?.getAttribute("alt")}}]},...f,...y,...b,...x,...N,...E];class w{cookies=new A.A;events=[];startTime=new Date;prefix="tna";document=document;constructor(e={}){const{prefix:t=null,documentScope:a=document}=e;t&&(this.prefix=t),a&&(this.document=a)}start(e){navigator.doNotTrack&&1===navigator.doNotTrack||(this.cookies.isPolicyAccepted("usage")&&this.enableTracking(),this.cookies.on("changePolicy",e=>{Object.hasOwn(e,"usage")&&(e.usage?this.enableTracking():this.disableTracking())}),e&&this.initAll())}enableTracking(){}disableTracking(){}initAll(){T.forEach(e=>{this.addListeners(e.scope,e.areaName,e.events,e.rootEventName||"",e.rootData||{})})}addListeners(e,t,a,n="",i={}){let o=[];"string"==typeof e?o=Array.from(this.document.querySelectorAll(e)):"object"==typeof e&&(o=[e]),0!==o.length&&o.forEach((o,r)=>{a.forEach(a=>{a.on&&(a.targetElement?Array.from(o.querySelectorAll(a.targetElement)).forEach((s,l)=>this.attachListener(s,o,n,i,a,e,t,l+1,r+1)):this.attachListener(o,o,n,i,a,e,t,1,r+1))})})}generateEventName(e,t){return`${this.prefix}.${e}.${t.eventName||t.on}`}attachListener(e,t,a,n,o,r,s,l,c){const{on:d,data:m,targetElement:g,rootData:h={},onCondition:u=null}=o;e.addEventListener(d,d=>{const p=[e,t,d,l,c];(null===u||this.computedValue(u,...p))&&this.recordEvent(o.rootEventName?`${this.prefix}.${o.rootEventName}`:a?`${this.prefix}.${a}`:this.generateEventName(s,o),{...m,name:this.generateEventName(s,o),value:m?.value?this.computedValue(m.value,...p):null,state:m?.state?this.computedValue(m.state,...p):null,group:m?.group?this.computedValue(m.group,...p):null,xPath:i(e),targetElement:g,timeSincePageLoad:new Date-this.startTime,index:l,instance:c,scope:r,areaName:s},Object.fromEntries(Object.entries({...n,...h}).map(([e,t])=>[e,this.computedValue(t,...p)])))})}computedValue(e,t,a,n,i,o){return"function"==typeof e?e.call(this,t,a,n,i,o):e??null}recordEvent(e,t,a={}){this.events.push({event:e,...t,...a})}getTnaMetaTags(){return Object.fromEntries([...Array.from(document.head.querySelectorAll(`meta[name^="${this.prefix}_root:"][content]`)).map(e=>[e.getAttribute("name").replace(new RegExp(`^${this.prefix}_root:`,"u"),""),e.getAttribute("content")]),...Array.from(document.head.querySelectorAll(`meta[name^="${this.prefix}."][content]`)).map(e=>[e.getAttribute("name"),e.getAttribute("content")])])}getUserPreferences(){const e={};e[`${this.prefix}.pref.prefers-color-scheme`]=window.matchMedia?.("(prefers-color-scheme: dark)").matches?"dark":"light",e[`${this.prefix}.pref.forced-colors`]=window.matchMedia?.("(forced-colors: active)").matches;let t="no-preference";return window.matchMedia?.("(prefers-contrast: more)").matches?t="more":window.matchMedia?.("(prefers-contrast: less)").matches&&(t="less"),e[`${this.prefix}.pref.prefers-contrast`]=t,e[`${this.prefix}.pref.prefers-reduced-motion`]=window.matchMedia?.("(prefers-reduced-motion: reduce)").matches,e[`${this.prefix}.pref.prefers-reduced-transparency`]=window.matchMedia?.("(prefers-reduced-transparency: reduce)").matches,e}}class D extends w{addTrackingCode=!0;trackingCodeAdded=!1;trackingEnabled=!1;gTagId;constructor(e={}){if(window.TNAFrontendAnalyticsGA4)return window.TNAFrontendAnalyticsGA4;const{id:t="",prefix:a=null,initAll:n=!0,addTrackingCode:i=!0}=e;super({prefix:a}),window.TNAFrontendAnalyticsGA4=this,this.addTrackingCode=i,window.dataLayer||=[],t&&(this.gTagId=t,this.ga4Disable=`ga-disable-${this.gTagId}`,this.cookies.isPolicyAccepted("usage")||(window[this.ga4Disable]=!0,this.cookies.set(this.ga4Disable,"true"))),this.start(n)}destroy(){window.TNAFrontendAnalyticsGA4=null}recordEvent(e,t,a={}){const n={event:e,...Object.fromEntries(Object.entries(t).map(([e,t])=>[`${this.prefix}.event.${e}`,t])),...a};this.pushToDataLayer(n)}gtag(...e){this.pushToDataLayer(e)}pushToDataLayer(e){window.dataLayer.push(e)}enableTracking(){if(!this.trackingEnabled){if(window[this.ga4Disable]=!1,this.cookies.set(this.ga4Disable,"false"),!this.trackingCodeAdded&&this.addTrackingCode){if(!this.gTagId)throw Error("ID was not specified");this.pushToDataLayer({...this.getTnaMetaTags(),...this.getUserPreferences(),"gtm.start":(new Date).getTime(),event:"gtm.js"});const[e]=document.getElementsByTagName("script"),t=document.createElement("script");t.async=!0,t.src=`https://www.googletagmanager.com/gtm.js?id=${this.gTagId}&l=dataLayer`,e?e.parentNode.insertBefore(t,e):document.head.appendChild(t),this.trackingCodeAdded=!0}this.trackingEnabled=!0}}disableTracking(){this.trackingEnabled&&(window[this.ga4Disable]=!0,this.cookies.set(this.ga4Disable,"true"),Object.keys(this.cookies.all).forEach(e=>{e.startsWith("_ga")&&this.cookies.delete(e)}),this.trackingEnabled=!1)}}const C=document.documentElement.dataset.ga4;C&&new D({id:C});const O={getXPathTo:i,getClosestHeading:r,getClosestElement:o,valueGetters:s};return n})());
2
2
  //# sourceMappingURL=analytics.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"analytics.js","mappings":"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","sources":["webpack://TNAFrontend/webpack/universalModuleDefinition","webpack://TNAFrontend/./src/nationalarchives/lib/cookie-events.mjs","webpack://TNAFrontend/./src/nationalarchives/lib/cookies.mjs","webpack://TNAFrontend/webpack/bootstrap","webpack://TNAFrontend/webpack/runtime/define property getters","webpack://TNAFrontend/webpack/runtime/hasOwnProperty shorthand","webpack://TNAFrontend/webpack/runtime/make namespace object","webpack://TNAFrontend/./src/nationalarchives/lib/analytics-helpers.mjs","webpack://TNAFrontend/./src/nationalarchives/components/accordion/analytics.js","webpack://TNAFrontend/./src/nationalarchives/components/breadcrumbs/analytics.js","webpack://TNAFrontend/./src/nationalarchives/components/checkboxes/analytics.js","webpack://TNAFrontend/./src/nationalarchives/components/details/analytics.js","webpack://TNAFrontend/./src/nationalarchives/components/error-summary/analytics.js","webpack://TNAFrontend/./src/nationalarchives/components/file-input/analytics.js","webpack://TNAFrontend/./src/nationalarchives/components/footer/analytics.js","webpack://TNAFrontend/./src/nationalarchives/components/gallery/analytics.js","webpack://TNAFrontend/./src/nationalarchives/components/global-header/analytics.js","webpack://TNAFrontend/./src/nationalarchives/components/header/analytics.js","webpack://TNAFrontend/./src/nationalarchives/components/picture/analytics.js","webpack://TNAFrontend/./src/nationalarchives/components/radios/analytics.js","webpack://TNAFrontend/./src/nationalarchives/components/search-field/analytics.js","webpack://TNAFrontend/./src/nationalarchives/components/sidebar/analytics.js","webpack://TNAFrontend/./src/nationalarchives/components/text-input/analytics.js","webpack://TNAFrontend/./src/nationalarchives/components/textarea/analytics.js","webpack://TNAFrontend/./src/nationalarchives/analytics.mjs","webpack://TNAFrontend/./src/nationalarchives/components/hero/analytics.js"],"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[\"TNAFrontendAnalytics\"] = factory();\n\telse\n\t\troot[\"TNAFrontendAnalytics\"] = factory();\n})(self, () => {\nreturn ","window.TNAFrontendCookieEvents ||= null;\n\nexport class CookieEventHandler {\n events = {};\n oneTimeEvents = {};\n debug = false;\n\n constructor(debug = false) {\n this.debug = debug;\n if (window.TNAFrontendCookieEvents) {\n this.log(\"Using existing TNAFrontendCookieEvents instance\");\n /* eslint-disable-next-line no-constructor-return */\n return window.TNAFrontendCookieEvents;\n }\n window.TNAFrontendCookieEvents = this;\n }\n\n log(...args) {\n if (this.debug) {\n /* eslint-disable-next-line no-console */\n console.log(\"[TNA Frontend Cookie Events]\", ...args);\n }\n }\n\n /**\n * Add an event listener.\n * @param {String} event - The event to add a listener for.\n * @param {Function} callback - The callback function to call when the event is triggered.\n */\n on(event, callback) {\n if (!Object.hasOwn(this.events, event)) {\n this.events[event] = [];\n }\n this.events[event] = [...this.events[event], callback];\n }\n\n once(event, callback) {\n if (!Object.hasOwn(this.oneTimeEvents, event)) {\n this.oneTimeEvents[event] = [];\n }\n this.oneTimeEvents[event] = [...this.oneTimeEvents[event], callback];\n }\n\n /** @protected */\n trigger(event, data = {}) {\n if (Object.hasOwn(this.events, event)) {\n this.log(`Triggering event: ${event}`, data);\n this.events[event].forEach((eventToTrigger) =>\n eventToTrigger.call(this, data),\n );\n }\n if (Object.hasOwn(this.oneTimeEvents, event)) {\n this.log(`Triggering one-time event: ${event}`, data);\n\n for (\n /* eslint-disable-next-line no-magic-numbers */\n let eventIndex = this.oneTimeEvents[event].length - 1;\n /* eslint-disable-next-line no-magic-numbers */\n eventIndex >= 0;\n /* eslint-disable-next-line no-magic-numbers */\n eventIndex -= 1\n ) {\n const eventToTrigger = this.oneTimeEvents[event][eventIndex];\n eventToTrigger.call(this, data);\n /* eslint-disable-next-line no-magic-numbers */\n this.oneTimeEvents[event].splice(eventIndex, 1);\n }\n }\n }\n}\n","/* eslint-disable max-lines */\n/* eslint-disable no-console */\n\nimport { CookieEventHandler } from \"./cookie-events.mjs\";\n\nwindow.TNAFrontendCookies ||= null;\n\nconst tnaCookiePolicies = [\"usage\", \"settings\", \"marketing\", \"essential\"];\n\n/**\n * Class to handle cookies.\n * @class Cookies\n * @constructor\n * @public\n */\nexport default class Cookies {\n /** @protected */\n defaultDomain = \"\";\n /** @protected */\n defaultPath = \"\";\n /** @protected */\n secure = true;\n /** @protected */\n policiesKey = \"\";\n /** @protected */\n events = null;\n /** @protected */\n defaultAge = null;\n /** @protected */\n policiesCorrectOnInit = false;\n /** @protected */\n debug = document.documentElement.dataset.tnaFrontendDebug === \"true\";\n\n /**\n * Create a cookie handler.\n * @param {String} [options.defaultDomain] - The domain to register the cookie with.\n * @param {String} [options.path] - The domain to register the cookie with.\n * @param {Boolean} [options.secure] - Only set cookie in HTTPS environments.\n * @param {String} [options.policiesKey] - The name of the cookie.\n * @param {Number} [options.defaultAge] - The default age of non-session cookies.\n * @param {String} [options.newInstance=false] - Create a fresh instance of the cookie class.\n * @param {Boolean} [options.noInit=false] - Don't initialise a blank cookie policy.\n */\n constructor(options = {}) {\n const {\n defaultDomain,\n defaultPath,\n secure,\n policiesKey,\n defaultAge,\n newInstance = false,\n noInit = false,\n } = options;\n if (!newInstance && window.TNAFrontendCookies) {\n /* eslint-disable-next-line no-constructor-return */\n return window.TNAFrontendCookies;\n }\n if (defaultDomain) {\n this.defaultDomain = defaultDomain;\n } else {\n this.defaultDomain =\n document.documentElement.dataset.tnaCookiesDomain ||\n window.location.hostname;\n }\n if (defaultPath) {\n this.defaultPath = defaultPath;\n } else {\n this.defaultPath = document.documentElement.dataset.tnaCookiesPath || \"/\";\n }\n if (secure) {\n this.secure = secure;\n } else {\n this.secure =\n document.documentElement.dataset.tnaCookiesInsecure !== \"true\";\n }\n if (policiesKey) {\n this.policiesKey = policiesKey;\n } else {\n this.policiesKey =\n document.documentElement.dataset.tnaCookiesPoliciesKey ||\n \"cookies_policy\";\n }\n if (defaultAge) {\n this.defaultAge = defaultAge;\n } else {\n /* eslint-disable-next-line no-magic-numbers */\n const secondsInAYear = 365 * 24 * 60 * 60;\n this.defaultAge =\n parseInt(document.documentElement.dataset.tnaCookiesDefaultAge, 10) ||\n secondsInAYear;\n }\n this.events = new CookieEventHandler(this.debug);\n this.policiesCorrectOnInit =\n Object.keys(this.policies).length === tnaCookiePolicies.length &&\n tnaCookiePolicies.every(\n (policy) =>\n Object.keys(this.policies).includes(policy) &&\n typeof this.policies[policy] === \"boolean\",\n );\n if (!this.policiesCorrectOnInit && !noInit) {\n this.init();\n }\n this.log({\n defaultDomain: this.defaultDomain,\n defaultPath: this.defaultPath,\n secure: this.secure,\n policiesKey: this.policiesKey,\n defaultAge: this.defaultAge,\n policiesCorrectOnInit: this.policiesCorrectOnInit,\n });\n if (!newInstance && !window.TNAFrontendCookies) {\n window.TNAFrontendCookies = this;\n }\n }\n\n /** @protected */\n init() {\n const existingPolicies = this.policies;\n this.log(\"Existing policies on init:\", existingPolicies);\n const filteredExistingPolicies = Object.fromEntries(\n Object.keys(existingPolicies)\n .filter((policy) => tnaCookiePolicies.includes(policy))\n .map((policy) => [policy, existingPolicies[policy]]),\n );\n if (Object.keys(filteredExistingPolicies).length) {\n this.log(\"Filtered existing policies:\", filteredExistingPolicies);\n }\n this.savePolicies({\n usage: false,\n settings: false,\n marketing: false,\n ...filteredExistingPolicies,\n essential: true,\n });\n }\n\n log(...args) {\n if (this.debug) {\n console.log(\"[TNA Frontend Cookies]\", ...args, this.all);\n }\n }\n\n destroyInstance() {\n this.log(\"Destroying TNAFrontendCookies instance\");\n window.TNAFrontendCookies = null;\n }\n\n /** @protected */\n /* eslint-disable-next-line class-methods-use-this */\n get all() {\n const deserialised = {};\n document.cookie\n .split(\"; \")\n .filter((cookie) => cookie.trim() !== \"\")\n .forEach((cookie) => {\n const parts = cookie.trim().split(\"=\");\n const [key, value] = parts;\n if (key) {\n deserialised[key] = decodeURIComponent(value || \"\");\n }\n });\n return deserialised;\n }\n\n /** @protected */\n get policies() {\n try {\n return JSON.parse(this.get(this.policiesKey) || \"{}\");\n // eslint-disable-next-line no-unused-vars\n } catch (error) {\n return {};\n }\n }\n\n /**\n * Check to see whether a cookie exists or not.\n * @param {String} key - The cookie name.\n * @returns {Boolean}\n */\n exists(key) {\n return Object.hasOwn(this.all, key);\n }\n\n /**\n * Check to see whether a cookie has a particular value.\n * @param {String} key - The cookie name.\n * @param {String|Number|Boolean} value - The value to check against.\n * @returns\n */\n hasValue(key, value) {\n return this.get(key) === value;\n }\n\n /**\n * Get a cookie.\n * @param {String} key - The cookie name.\n * @returns {String|Number|Boolean|null}\n */\n get(key) {\n if (this.exists(key)) {\n return decodeURIComponent(this.all[key]);\n }\n return null;\n }\n\n /**\n * Set a cookie.\n * @param {String} key - The cookie name.\n * @param {String|Number|Boolean} value - The cookie value.\n * @param {Object} options\n * @param {Number} [options.maxAge=this.defaultAge] - The maximum age of the cookie in seconds.\n * @param {String} [options.path=/] - The path to register the cookie for.\n * @param {String} [options.sameSite=Lax] - The sameSite attribute.\n * @param {String} [options.domain=this.defaultDomain] - The domain to register the cookie with.\n * @param {String} [options.path=this.defaultPath] - The path to register the cookie with.\n * @param {String} [options.secure=this.secure] - Only set cookie in HTTPS environments.\n * @param {String} [options.session=false] - Set a session cookie.\n */\n set(key, value, options = {}) {\n const {\n maxAge = this.defaultAge,\n sameSite = \"Lax\",\n domain = this.defaultDomain,\n path = this.defaultPath,\n secure = this.secure,\n session = false,\n } = options;\n if (!key) {\n return;\n }\n let secureString = \"\";\n if (secure) {\n secureString = \"; secure\";\n }\n let sessionString = \"\";\n if (!session) {\n sessionString = `; max-age=${maxAge}`;\n }\n const cookie = `${encodeURIComponent(key)}=${encodeURIComponent(value)}; domain=${domain}; samesite=${sameSite}; path=${path}${sessionString}${secureString}`;\n document.cookie = cookie;\n this.log(\"Set cookie:\", {\n key,\n value,\n maxAge,\n path,\n sameSite,\n domain,\n secure,\n session,\n cookie,\n });\n this.events.trigger(\"setCookie\", {\n key,\n value,\n maxAge,\n path,\n sameSite,\n domain,\n secure,\n session,\n cookie,\n });\n }\n\n /**\n * Delete a cookie.\n * @param {String} key - The cookie name.\n * @param {String} [path=/] - The path to the cookie is registered on.\n */\n delete(key, path = \"/\", domain = this.defaultDomain) {\n const options = { maxAge: -1, path, domain: domain || this.defaultDomain };\n this.set(key, \"\", options);\n this.log(\"Deleted cookie:\", { key, path, domain, ...options });\n this.events.trigger(\"deleteCookie\", { key, ...options });\n }\n\n /**\n * Delete all cookies.\n */\n deleteAll(path = \"/\", domain = this.defaultDomain) {\n Object.keys(this.all).forEach((cookie) => {\n this.delete(cookie, path, domain);\n });\n this.log(\"Deleted all cookies\", { path, domain });\n this.events.trigger(\"deleteAllCookies\", { path, domain });\n }\n\n /**\n * Accept a policy.\n * @param {String} policy - The name of the policy.\n */\n acceptPolicy(policy) {\n this.log(\"Accepting policy:\", policy);\n this.setPolicy(policy, true);\n this.events.trigger(\"acceptPolicy\", policy);\n this.events.trigger(\"changePolicy\", { [policy]: true });\n }\n\n /**\n * Reject a policy.\n * @param {String} policy - The name of the policy.\n */\n rejectPolicy(policy) {\n this.log(\"Rejecting policy:\", policy);\n this.setPolicy(policy, false);\n this.events.trigger(\"rejectPolicy\", policy);\n this.events.trigger(\"changePolicy\", { [policy]: false });\n }\n\n /**\n * Set a policy.\n * @param {String} policy - The name of the policy.\n * @param {Boolean} accepted - Whether the policy is accepted or not.\n */\n setPolicy(policy, accepted) {\n if (policy === \"essential\") {\n this.log(\"Cannot change essential policy, it is always accepted.\");\n return;\n }\n this.log(`Setting policy ${policy} to ${accepted}`);\n this.savePolicies({\n ...this.policies,\n [policy]: accepted,\n essential: true,\n });\n this.events.trigger(\"changePolicy\", { [policy]: accepted });\n }\n\n /**\n * Accept all the cookie policies.\n */\n acceptAllPolicies() {\n this.log(\"Accepting all policies\");\n const allPolicies = Object.fromEntries(\n Object.keys(this.policies).map((key) => [key.toLowerCase(), true]),\n );\n this.savePolicies(allPolicies);\n this.events.trigger(\"acceptAllPolicies\");\n this.events.trigger(\"changePolicy\", allPolicies);\n }\n\n /**\n * Reject all the cookie policies.\n */\n rejectAllPolicies() {\n this.log(\"Rejecting all policies\");\n const allPolicies = {\n ...Object.fromEntries(\n Object.keys(this.policies).map((key) => [key.toLowerCase(), false]),\n ),\n essential: true,\n };\n this.savePolicies(allPolicies);\n this.events.trigger(\"rejectAllPolicies\");\n this.events.trigger(\"changePolicy\", allPolicies);\n }\n\n /**\n * Commit policy preferences to the browser.\n * @param {object} policies - The policies to commit.\n */\n savePolicies(policies) {\n this.log(\"Saving policies:\", policies);\n this.set(this.policiesKey, JSON.stringify(policies));\n }\n\n /**\n * Get the acceptance status of a policy.\n * @param {String} policy - The name of the policy.\n * @returns {Boolean}\n */\n isPolicyAccepted(policy) {\n if (Object.hasOwn(this.policies, policy)) {\n return this.policies[policy] === true;\n }\n return null;\n }\n\n /**\n * Add an event listener.\n * @param {String} event - The event to add a listener for.\n * @param {Function} callback - The callback function to call when the event is triggered.\n */\n on(event, callback) {\n this.log(`Adding event listener for: ${event}`);\n this.events.on(event, callback);\n }\n\n /**\n * Add a one-time event listener.\n * @param {String} event - The event to add a listener for.\n * @param {Function} callback - The callback function to call when the event is triggered.\n */\n once(event, callback) {\n this.log(`Adding one-time event listener for: ${event}`);\n this.events.once(event, callback);\n }\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","const getXPathTo = ($element) => {\n if ($element.id !== \"\") {\n return `id(\"${$element.id}\")`;\n }\n if ($element === document.body) {\n return $element.tagName;\n }\n let ix = 0;\n if ($element.parentNode) {\n const siblings = $element.parentNode.childNodes;\n /* eslint-disable-next-line no-magic-numbers */\n for (let index = 0; index < siblings.length; index += 1) {\n const sibling = siblings[index];\n if (sibling === $element) {\n return `${getXPathTo($element.parentNode)}/${$element.tagName}[${\n /* eslint-disable-next-line no-magic-numbers */\n ix + 1\n }]`;\n }\n /* eslint-disable-next-line no-magic-numbers */\n if (sibling.nodeType === 1 && sibling.tagName === $element.tagName) {\n /* eslint-disable-next-line no-magic-numbers */\n ix += 1;\n }\n }\n return `${getXPathTo($element.parentNode)}/${$element.tagName}`;\n }\n return $element.tagName;\n};\nconst getClosestElement = ($startingElement, matchingElementSelectors) => {\n let heading = \"\";\n let $search = $startingElement;\n do {\n while ($search.previousElementSibling) {\n $search = $search.previousElementSibling;\n if (\n /* eslint-disable-next-line no-loop-func */\n matchingElementSelectors.some((matchingElementSelector) =>\n $search.matches(matchingElementSelector),\n )\n ) {\n heading = $search.innerText;\n break;\n }\n }\n $search = $search.parentElement;\n } while ($search.parentElement && !heading);\n return heading;\n};\nconst getClosestHeading = ($element) =>\n getClosestElement($element, [\"h1\", \"h2\", \"h3\", \"h4\", \"h5\", \"h6\"]);\nconst valueGetters = {\n text: ($el) => $el.innerText.replace(/\\n/gu, \" \"),\n html: ($el) => $el.innerHTML,\n value: ($el) => $el.value,\n index: ($el, $scope, event, index) => index,\n instance: ($el, $scope, event, index, instance) => instance,\n /* eslint-disable-next-line no-ternary */\n checked: ($el) => ($el.checked ? \"checked\" : \"unchecked\"),\n expanded: ($el) => {\n const expanded = $el.getAttribute(\"aria-expanded\");\n if (expanded === null) {\n return null;\n }\n /* eslint-disable-next-line no-ternary */\n return expanded.toString() === \"true\" ? \"opened\" : \"closed\";\n },\n closestHeading: ($el) => getClosestHeading($el),\n xpath: ($el) => getXPathTo($el.target),\n};\n\nexport { getXPathTo, getClosestElement, getClosestHeading, valueGetters };\n","import { valueGetters } from \"../../lib/analytics-helpers.mjs\";\n\nexport default [\n {\n scope: \".tna-accordion\",\n areaName: \"accordion\",\n rootEventName: \"select_feature\",\n rootData: {\n data_component_name: \"accordion\",\n },\n events: [\n {\n eventName: \"click\",\n targetElement: \".tna-accordion__summary\",\n on: \"click\",\n data: { state: valueGetters.expanded, value: valueGetters.text },\n rootData: {\n data_link_type: valueGetters.expanded,\n data_link: valueGetters.text,\n data_position: valueGetters.index,\n },\n },\n ],\n },\n];\n","import { valueGetters } from \"../../lib/analytics-helpers.mjs\";\n\nexport default [\n {\n scope: \".tna-breadcrumbs\",\n areaName: \"breadcrumbs\",\n rootEventName: \"select_navigation\",\n rootData: {\n data_component_name: \"breadcrumbs\",\n },\n events: [\n {\n eventName: \"click\",\n targetElement: \"a.tna-breadcrumbs__link\",\n on: \"click\",\n data: { state: \"expand\", value: valueGetters.html },\n rootData: {\n data_link_type: \"breadcrumb_link\",\n data_link: valueGetters.text,\n },\n },\n {\n eventName: \"click\",\n targetElement:\n \".tna-breadcrumbs__item--expandable button.tna-breadcrumbs__link\",\n on: \"click\",\n data: { state: \"expand\", value: valueGetters.html },\n rootData: {\n data_link_type: \"breadcrumb_expand\",\n data_link: valueGetters.text,\n },\n },\n ],\n },\n];\n","import { valueGetters } from \"../../lib/analytics-helpers.mjs\";\n\nexport default [\n {\n scope: \".tna-checkboxes\",\n areaName: \"checkboxes\",\n events: [\n {\n eventName: \"toggle\",\n targetElement: \".tna-checkboxes__item input\",\n on: \"change\",\n data: {\n state: valueGetters.checked,\n // eslint-disable-next-line no-unused-vars\n value: ($el, $scope, event) => $el.parentNode.innerText.trim(),\n // eslint-disable-next-line no-unused-vars\n group: ($el, $scope, event) =>\n $scope\n .closest(\".tna-form-item\")\n ?.querySelector(\".tna-form-item__heading\")\n ?.innerText?.trim(),\n },\n },\n ],\n },\n];\n","import { valueGetters } from \"../../lib/analytics-helpers.mjs\";\n\nexport default [\n {\n scope: \".tna-details\",\n areaName: \"details\",\n events: [\n {\n eventName: \"click\",\n targetElement: \".tna-details__summary\",\n on: \"click\",\n data: {\n // eslint-disable-next-line no-unused-vars\n state: ($el, $scope, event) => {\n const wasExpanded =\n $scope\n .querySelector(\".tna-details__details\")\n ?.hasAttribute(\"open\") ?? false;\n return wasExpanded ? \"closed\" : \"opened\";\n },\n\n value: valueGetters.text,\n },\n },\n ],\n },\n];\n","import { valueGetters } from \"../../lib/analytics-helpers.mjs\";\n\nexport default [\n {\n scope: \".tna-error-summary\",\n areaName: \"error-summary\",\n events: [\n {\n eventName: \"jump\",\n targetElement: \"a.tna-error-summary__link\",\n on: \"click\",\n data: { value: valueGetters.text },\n },\n ],\n },\n];\n","const getFileDetails = ($el) =>\n JSON.stringify(\n Array.from($el.files).map((file) => ({\n name: file.name,\n size: file.size,\n type: file.type,\n })),\n );\n\nexport default [\n {\n scope: \".tna-file-input\",\n areaName: \"file-input\",\n events: [\n {\n eventName: \"blurred\",\n on: \"blur\",\n data: {\n value: getFileDetails,\n state: ($el) => $el.files.length,\n\n group: ($el, $scope) =>\n $scope\n .closest(\".tna-form-item\")\n ?.querySelector(\".tna-form-item__heading\")\n ?.innerText?.trim(),\n },\n },\n {\n eventName: \"cancelled\",\n on: \"cancel\",\n data: {\n value: getFileDetails,\n state: ($el) => $el.files.length,\n\n group: ($el, $scope) =>\n $scope\n .closest(\".tna-form-item\")\n ?.querySelector(\".tna-form-item__heading\")\n ?.innerText?.trim(),\n },\n },\n {\n eventName: \"changed\",\n on: \"change\",\n data: {\n value: getFileDetails,\n state: ($el) => $el.files.length,\n\n group: ($el, $scope) =>\n $scope\n .closest(\".tna-form-item\")\n ?.querySelector(\".tna-form-item__heading\")\n ?.innerText?.trim(),\n },\n },\n ],\n },\n];\n","import { valueGetters } from \"../../lib/analytics-helpers.mjs\";\n\nexport default [\n {\n scope: \".tna-footer\",\n areaName: \"footer\",\n rootEventName: \"global_navigation\",\n rootData: {\n data_component_name: \"footer\",\n },\n events: [\n {\n eventName: \"link.click\",\n targetElement: \".tna-footer__navigation-block-item-link\",\n on: \"click\",\n data: {\n value: valueGetters.text,\n },\n rootData: {\n data_link_type: \"link\",\n data_section: valueGetters.closestHeading,\n data_link: valueGetters.text,\n },\n },\n {\n eventName: \"social_link.click\",\n targetElement: \".tna-footer__social-item-link\",\n on: \"click\",\n data: {\n value: valueGetters.text,\n },\n rootData: {\n data_link_type: \"icon\",\n data_section: \"Social media\",\n data_link: ($el) => $el.dataset.name,\n },\n },\n {\n eventName: \"legal_link.click\",\n targetElement: \".tna-footer__legal-item-link\",\n on: \"click\",\n data: {\n value: valueGetters.text,\n },\n rootData: {\n data_link_type: \"link\",\n data_section: \"Legal information\",\n data_link: valueGetters.text,\n },\n },\n {\n eventName: \"mailing_list.click\",\n targetElement: \".tna-footer__mailing-list a.tna-button\",\n on: \"click\",\n data: {\n value: valueGetters.text,\n },\n rootData: {\n data_link_type: \"button\",\n data_section: \"Mailing list\",\n data_link: valueGetters.text,\n },\n },\n {\n eventName: \"ogl.click\",\n targetElement: \".tna-footer__licence p a.tna-footer__link\",\n on: \"click\",\n data: {\n value: valueGetters.text,\n },\n rootData: {\n data_link_type: \"link\",\n data_section: \"OGL\",\n data_link: valueGetters.text,\n },\n },\n {\n eventName: \"govuk.click\",\n targetElement: \".tna-footer__govuk-link\",\n on: \"click\",\n data: {\n value: valueGetters.text,\n },\n rootData: {\n data_link_type: \"Logo\",\n data_section: \"GOV.UK\",\n data_link: valueGetters.text,\n },\n },\n {\n eventName: \"theme.change\",\n targetElement: \".tna-footer__theme-selector-button\",\n on: \"click\",\n data: {\n value: valueGetters.value,\n },\n },\n ],\n },\n];\n","import { valueGetters } from \"../../lib/analytics-helpers.mjs\";\n\nexport default [\n {\n scope: \".tna-gallery\",\n areaName: \"gallery\",\n rootEventName: \"select_media\",\n rootData: {\n media_type: \"gallery\",\n media_duration: ($el, $scope) =>\n $scope.querySelectorAll(\".tna-gallery__navigation-item\").length,\n media_provider: \"tna\",\n media_title: ($el, $scope, event, index, instance) =>\n $scope.querySelector(\".tna-gallery__header-inner\")?.innerText?.trim() ||\n `gallery_${instance}`,\n media_progress: ($el, $scope) =>\n (Array.from(\n $scope.querySelectorAll(\".tna-gallery__navigation-item\"),\n ).findIndex(\n ($itemButton) => $itemButton.getAttribute(\"aria-current\") === \"true\",\n /* eslint-disable-next-line no-magic-numbers */\n ) || -1) + 1,\n },\n events: [\n {\n eventName: \"click\",\n targetElement: \".tna-gallery__navigation-item\",\n on: \"click\",\n data: {\n value: valueGetters.text,\n },\n rootData: {\n data_link: \"image\",\n media_action: \"progress\",\n media_progress: valueGetters.index,\n },\n },\n {\n eventName: \"click\",\n targetElement: \".tna-gallery__navigation-prev\",\n on: \"click\",\n data: {\n value: ($el, $scope) =>\n $scope\n .querySelector(\n \".tna-gallery__item:not([hidden]) .tna-gallery__item-header\",\n )\n ?.innerText?.trim(),\n },\n rootData: {\n data_link: \"previous\",\n media_action: \"progress\",\n },\n },\n {\n eventName: \"click\",\n targetElement: \".tna-gallery__navigation-next\",\n on: \"click\",\n data: {\n value: ($el, $scope) =>\n $scope\n .querySelector(\n \".tna-gallery__item:not([hidden]) .tna-gallery__item-header\",\n )\n ?.innerText?.trim(),\n },\n rootData: {\n data_link: \"next\",\n media_action: \"progress\",\n },\n },\n {\n eventName: \"keypress\",\n on: \"keydown\",\n onCondition: ($el, $scope, event) =>\n [\n \"ArrowLeft\",\n \"ArrowRight\",\n \"ArrowUp\",\n \"ArrowDown\",\n \"End\",\n \"Home\",\n // \"Escape\",\n ].includes(event.key),\n data: {\n value: ($el, $scope, event) => event.key,\n },\n rootData: {\n data_link: \"keypress\",\n media_action: \"progress\",\n },\n },\n ],\n },\n];\n","import { valueGetters } from \"../../lib/analytics-helpers.mjs\";\n\nexport default [\n {\n scope: \".tna-global-header\",\n areaName: \"header\",\n rootEventName: \"global_navigation\",\n rootData: {\n data_component_name: \"header\",\n },\n events: [\n {\n eventName: \"toggle\",\n targetElement: \".tna-global-header__navigation-button\",\n on: \"click\",\n data: {\n state: valueGetters.expanded,\n },\n rootData: {\n data_link_type: \"mobile_menu\",\n data_link: ($el) => {\n const expanded = $el.getAttribute(\"aria-expanded\");\n if (expanded === null) {\n return null;\n }\n return expanded.toString() === \"true\" ? \"Open menu\" : \"Close menu\";\n },\n data_section: \"Burger menu\",\n },\n },\n {\n eventName: \"logo.click\",\n targetElement: \".tna-global-header__logo\",\n on: \"click\",\n rootData: {\n data_link_type: \"logo\",\n data_link: \"The National Archives\",\n data_section: \"Top navigation and logo\",\n },\n },\n {\n eventName: \"primary_link.click\",\n targetElement: \".tna-global-header__navigation-item-link\",\n on: \"click\",\n data: {\n value: valueGetters.text,\n },\n rootData: {\n data_link_type: \"menu\",\n data_section: valueGetters.text,\n data_position: 1,\n data_link: valueGetters.text,\n },\n },\n {\n eventName: \"secondary_link.click\",\n targetElement: \".tna-global-header__top-navigation-link\",\n on: \"click\",\n data: {\n value: valueGetters.text,\n },\n rootData: {\n data_link_type: \"icon\",\n data_link: valueGetters.text,\n data_section: \"Top navigation and logo\",\n },\n },\n ],\n },\n];\n","import { valueGetters } from \"../../lib/analytics-helpers.mjs\";\n\nexport default [\n {\n scope: \".tna-header\",\n areaName: \"header\",\n events: [\n {\n eventName: \"toggle\",\n targetElement: \".tna-header__navigation-button\",\n on: \"click\",\n data: {\n state: valueGetters.expanded,\n },\n },\n ],\n },\n];\n","import {\n getClosestHeading,\n valueGetters,\n} from \"../../lib/analytics-helpers.mjs\";\n\nexport default [\n {\n scope: \".tna-picture\",\n areaName: \"picture\",\n events: [\n {\n eventName: \"toggle_transcript\",\n targetElement: \".tna-picture__toggle-transcript\",\n on: \"click\",\n data: {\n state: valueGetters.expanded,\n // eslint-disable-next-line no-unused-vars\n value: ($el, $scope, event) => {\n const heading = getClosestHeading($scope);\n const image = $scope.querySelector(\".tna-picture__image\");\n const imageSrc = image.getAttribute(\"src\");\n const imageAlt = image.getAttribute(\"alt\");\n const value = `${imageAlt} (${imageSrc})`;\n return heading ? `${heading} > ${value}` : value;\n },\n },\n },\n ],\n },\n];\n","import { valueGetters } from \"../../lib/analytics-helpers.mjs\";\n\nexport default [\n {\n scope: \".tna-radios\",\n areaName: \"radios\",\n events: [\n {\n eventName: \"toggle\",\n targetElement: \".tna-radios__item input\",\n on: \"change\",\n data: {\n state: valueGetters.checked,\n // eslint-disable-next-line no-unused-vars\n value: ($el, $scope, event) => $el.parentNode.innerText,\n // eslint-disable-next-line no-unused-vars\n group: ($el, $scope, event) =>\n $scope\n .closest(\".tna-form-item\")\n ?.querySelector(\".tna-form-item__heading\")\n ?.innerText?.trim(),\n },\n },\n ],\n },\n];\n","import { valueGetters } from \"../../lib/analytics-helpers.mjs\";\n\nexport default [\n {\n scope: \".tna-search-field\",\n areaName: \"search-field\",\n events: [\n {\n eventName: \"blurred\",\n targetElement: \".tna-search-field__input\",\n on: \"blur\",\n data: {\n value: valueGetters.value,\n // eslint-disable-next-line no-unused-vars\n group: ($el, $scope, event) =>\n $scope.querySelector(\".tna-form-item__heading\")?.innerText?.trim(),\n },\n },\n ],\n },\n];\n","import { valueGetters } from \"../../lib/analytics-helpers.mjs\";\n\nexport default [\n {\n scope: \".tna-sidebar\",\n areaName: \"sidebar\",\n rootEventName: \"select_navigation\",\n rootData: {\n data_component_name: \"sidebar\",\n data_section: ($el, $scope) =>\n $scope.querySelector(\".tna-sidebar__heading\")?.innerText?.trim(),\n },\n events: [\n {\n eventName: \"click\",\n targetElement: \"a.tna-sidebar__link\",\n on: \"click\",\n rootData: {\n data_link_type: \"sidebar_link\",\n data_link: valueGetters.text,\n data_position: valueGetters.index,\n },\n },\n ],\n },\n];\n","import { valueGetters } from \"../../lib/analytics-helpers.mjs\";\n\nexport default [\n {\n scope: \".tna-text-input\",\n areaName: \"text-input\",\n events: [\n {\n eventName: \"blurred\",\n on: \"blur\",\n data: {\n value: valueGetters.value,\n\n group: ($el, $scope) =>\n $scope\n .closest(\".tna-form-item\")\n ?.querySelector(\".tna-form-item__heading\")\n ?.innerText?.trim(),\n },\n },\n ],\n },\n];\n","import { valueGetters } from \"../../lib/analytics-helpers.mjs\";\n\nexport default [\n {\n scope: \".tna-textarea\",\n areaName: \"textarea\",\n events: [\n {\n eventName: \"blurred\",\n on: \"blur\",\n data: {\n value: valueGetters.value,\n // eslint-disable-next-line no-unused-vars\n group: ($el, $scope, event) =>\n $scope\n .closest(\".tna-form-item\")\n ?.querySelector(\".tna-form-item__heading\")\n ?.innerText?.trim(),\n },\n },\n ],\n },\n];\n","/* eslint-disable max-classes-per-file, no-ternary, no-nested-ternary */\n\nimport AccordionAnalytics from \"./components/accordion/analytics.js\";\nimport BreadcrumbAnalytics from \"./components/breadcrumbs/analytics.js\";\nimport CheckboxesAnalytics from \"./components/checkboxes/analytics.js\";\nimport DetailsAnalytics from \"./components/details/analytics.js\";\nimport ErrorSummary from \"./components/error-summary/analytics.js\";\nimport FileInputDroppable from \"./components/file-input/analytics.js\";\nimport FooterAnalytics from \"./components/footer/analytics.js\";\nimport GalleryAnalytics from \"./components/gallery/analytics.js\";\nimport GlobalHeaderAnalytics from \"./components/global-header/analytics.js\";\nimport HeaderAnalytics from \"./components/header/analytics.js\";\nimport HeroAnalytics from \"./components/hero/analytics.js\";\nimport PictureAnalytics from \"./components/picture/analytics.js\";\nimport RadiosAnalytics from \"./components/radios/analytics.js\";\nimport SearchFieldAnalytics from \"./components/search-field/analytics.js\";\nimport SidebarAnalytics from \"./components/sidebar/analytics.js\";\nimport TextInputAnalytics from \"./components/text-input/analytics.js\";\nimport TextareaAnalytics from \"./components/textarea/analytics.js\";\nimport {\n getClosestElement,\n getClosestHeading,\n getXPathTo,\n valueGetters,\n} from \"./lib/analytics-helpers.mjs\";\nimport Cookies from \"./lib/cookies.mjs\";\n\nconst componentAnalytics = [\n ...AccordionAnalytics,\n ...BreadcrumbAnalytics,\n ...CheckboxesAnalytics,\n ...DetailsAnalytics,\n ...ErrorSummary,\n ...FileInputDroppable,\n ...FooterAnalytics,\n ...GalleryAnalytics,\n ...GlobalHeaderAnalytics,\n ...HeaderAnalytics,\n ...HeroAnalytics,\n ...PictureAnalytics,\n ...RadiosAnalytics,\n ...SearchFieldAnalytics,\n ...SidebarAnalytics,\n ...TextInputAnalytics,\n ...TextareaAnalytics,\n];\n\nclass EventTracker {\n /** @protected */\n cookies = new Cookies();\n\n /** @protected */\n events = [];\n\n /** @protected */\n startTime = new Date();\n\n /** @protected */\n prefix = \"tna\";\n\n /** @protected */\n document = document;\n\n constructor(options = {}) {\n const { prefix = null, documentScope = document } = options;\n if (prefix) {\n this.prefix = prefix;\n }\n if (documentScope) {\n this.document = documentScope;\n }\n }\n\n start(initAll) {\n /* eslint-disable-next-line no-magic-numbers */\n if (!navigator.doNotTrack || navigator.doNotTrack !== 1) {\n if (this.cookies.isPolicyAccepted(\"usage\")) {\n this.enableTracking();\n }\n this.cookies.on(\"changePolicy\", (policies) => {\n if (Object.hasOwn(policies, \"usage\")) {\n if (policies.usage) {\n this.enableTracking();\n } else {\n this.disableTracking();\n }\n }\n });\n if (initAll) {\n this.initAll();\n }\n }\n }\n\n /** @protected */\n /* eslint-disable-next-line class-methods-use-this, no-empty-function */\n enableTracking() {}\n\n /** @protected */\n /* eslint-disable-next-line class-methods-use-this, no-empty-function */\n disableTracking() {}\n\n /**\n * Initialise all TNA Frontend component analytics.\n */\n initAll() {\n componentAnalytics.forEach((componentConfig) => {\n this.addListeners(\n componentConfig.scope,\n componentConfig.areaName,\n componentConfig.events,\n componentConfig.rootEventName || \"\",\n componentConfig.rootData || {},\n );\n });\n }\n\n /**\n * Add an event listener.\n * @param {String|HTMLElement} scope - The element to which the listener is scoped.\n * @param {String} areaName - The name of the component to pass on to the tracker.\n * @param {{eventName: String, targetElement: String|undefined, on: String, data: {value: Function|String|undefined, state: Function|String|undefined, group: Function|String|undefined, [String]: String|Integer}, rootData:{[String]: Function|String}}[]} events - The configuration of events to track along with their optional value and state which can be computed.\n * @param {String} rootEventName - The event name to use if specified (prefix).\n * @param {{[String]:String}} rootDefaultData - The default root data to use if specified.\n */\n addListeners(\n scope,\n areaName,\n events,\n rootEventName = \"\",\n rootDefaultData = {},\n ) {\n let scopeArray = [];\n if (typeof scope === \"string\") {\n scopeArray = Array.from(this.document.querySelectorAll(scope));\n } else if (typeof scope === \"object\") {\n scopeArray = [scope];\n }\n /* eslint-disable-next-line no-magic-numbers */\n if (scopeArray.length === 0) {\n return;\n }\n scopeArray.forEach(($scope, scopeIndex) => {\n events.forEach((eventConfig) => {\n if (eventConfig.on) {\n if (eventConfig.targetElement) {\n Array.from(\n $scope.querySelectorAll(eventConfig.targetElement),\n ).forEach(($el, index) =>\n this.attachListener(\n $el,\n $scope,\n rootEventName,\n rootDefaultData,\n eventConfig,\n scope,\n areaName,\n /* eslint-disable-next-line no-magic-numbers */\n index + 1,\n /* eslint-disable-next-line no-magic-numbers */\n scopeIndex + 1,\n ),\n );\n } else {\n this.attachListener(\n $scope,\n $scope,\n rootEventName,\n rootDefaultData,\n eventConfig,\n scope,\n areaName,\n /* eslint-disable-next-line no-magic-numbers */\n 1,\n /* eslint-disable-next-line no-magic-numbers */\n scopeIndex + 1,\n );\n }\n }\n });\n });\n }\n\n /** @protected */\n generateEventName(areaName, eventConfig) {\n return `${this.prefix}.${areaName}.${eventConfig.eventName || eventConfig.on}`;\n }\n\n /** @protected */\n attachListener(\n $el,\n $scope,\n rootEventName,\n rootDefaultData,\n eventConfig,\n scope,\n areaName,\n index,\n instance,\n ) {\n const {\n on,\n data,\n targetElement,\n rootData = {},\n onCondition = null,\n } = eventConfig;\n $el.addEventListener(on, (event) => {\n const computedValueParameters = [$el, $scope, event, index, instance];\n if (\n onCondition === null ||\n this.computedValue(onCondition, ...computedValueParameters)\n ) {\n this.recordEvent(\n eventConfig.rootEventName\n ? `${this.prefix}.${eventConfig.rootEventName}`\n : rootEventName\n ? `${this.prefix}.${rootEventName}`\n : this.generateEventName(areaName, eventConfig),\n {\n ...data,\n name: this.generateEventName(areaName, eventConfig),\n value: data?.value\n ? this.computedValue(data.value, ...computedValueParameters)\n : null,\n state: data?.state\n ? this.computedValue(data.state, ...computedValueParameters)\n : null,\n group: data?.group\n ? this.computedValue(data.group, ...computedValueParameters)\n : null,\n xPath: getXPathTo($el),\n targetElement,\n timeSincePageLoad: new Date() - this.startTime,\n index,\n instance,\n scope,\n areaName,\n },\n Object.fromEntries(\n Object.entries({ ...rootDefaultData, ...rootData }).map(\n ([key, value]) => [\n key,\n this.computedValue(value, ...computedValueParameters),\n ],\n ),\n ),\n );\n }\n });\n }\n\n /** @protected */\n computedValue(valueOrFunction, $el, $scope, event, index, instance) {\n return typeof valueOrFunction === \"function\"\n ? valueOrFunction.call(this, $el, $scope, event, index, instance)\n : (valueOrFunction ?? null);\n }\n\n /** @protected */\n recordEvent(eventName, data, rootData = {}) {\n this.events.push({\n event: eventName,\n ...data,\n ...rootData,\n });\n }\n\n /** @protected */\n getTnaMetaTags() {\n return Object.fromEntries([\n ...Array.from(\n document.head.querySelectorAll(\n `meta[name^=\"${this.prefix}_root:\"][content]`,\n ),\n ).map(($metaEl) => [\n $metaEl\n .getAttribute(\"name\")\n .replace(new RegExp(`^${this.prefix}_root:`, \"u\"), \"\"),\n $metaEl.getAttribute(\"content\"),\n ]),\n ...Array.from(\n document.head.querySelectorAll(\n `meta[name^=\"${this.prefix}.\"][content]`,\n ),\n ).map(($metaEl) => [\n $metaEl.getAttribute(\"name\"),\n $metaEl.getAttribute(\"content\"),\n ]),\n ]);\n }\n\n /** @protected */\n getUserPreferences() {\n const userPreferences = {};\n userPreferences[`${this.prefix}.pref.prefers-color-scheme`] =\n window.matchMedia?.(\"(prefers-color-scheme: dark)\").matches\n ? \"dark\"\n : \"light\";\n userPreferences[`${this.prefix}.pref.forced-colors`] = window.matchMedia?.(\n \"(forced-colors: active)\",\n ).matches;\n let prefersContrast = \"no-preference\";\n if (window.matchMedia?.(\"(prefers-contrast: more)\").matches) {\n prefersContrast = \"more\";\n } else if (window.matchMedia?.(\"(prefers-contrast: less)\").matches) {\n prefersContrast = \"less\";\n }\n userPreferences[`${this.prefix}.pref.prefers-contrast`] = prefersContrast;\n userPreferences[`${this.prefix}.pref.prefers-reduced-motion`] =\n window.matchMedia?.(\"(prefers-reduced-motion: reduce)\").matches;\n userPreferences[`${this.prefix}.pref.prefers-reduced-transparency`] =\n window.matchMedia?.(\"(prefers-reduced-transparency: reduce)\").matches;\n return userPreferences;\n }\n}\n\n/**\n * Class to handle Google Analytics 4 reporting.\n * @class GA4\n * @extends EventTracker\n * @constructor\n * @public\n */\nclass GA4 extends EventTracker {\n /** @protected */\n addTrackingCode = true;\n\n /** @protected */\n trackingCodeAdded = false;\n\n /** @protected */\n trackingEnabled = false;\n\n /** @protected */\n gTagId;\n\n constructor(options = {}) {\n if (window.TNAFrontendAnalyticsGA4) {\n /* eslint-disable-next-line no-constructor-return */\n return window.TNAFrontendAnalyticsGA4;\n }\n const {\n id = \"\",\n prefix = null,\n initAll = true,\n addTrackingCode = true,\n } = options;\n super({ prefix });\n window.TNAFrontendAnalyticsGA4 = this;\n this.addTrackingCode = addTrackingCode;\n window.dataLayer ||= [];\n if (id) {\n this.gTagId = id;\n this.ga4Disable = `ga-disable-${this.gTagId}`;\n if (!this.cookies.isPolicyAccepted(\"usage\")) {\n window[this.ga4Disable] = true;\n this.cookies.set(this.ga4Disable, \"true\");\n }\n }\n this.start(initAll);\n }\n\n /** @protected */\n /* eslint-disable-next-line class-methods-use-this */\n destroy() {\n window.TNAFrontendAnalyticsGA4 = null;\n }\n\n /** @protected */\n recordEvent(eventName, data, rootData = {}) {\n const ga4Data = {\n event: eventName,\n ...Object.fromEntries(\n Object.entries(data).map(([key, value]) => [\n `${this.prefix}.event.${key}`,\n value,\n ]),\n ),\n ...rootData,\n };\n this.pushToDataLayer(ga4Data);\n }\n\n /** @protected */\n gtag(...args) {\n this.pushToDataLayer(args);\n }\n\n /** @protected */\n /* eslint-disable-next-line class-methods-use-this */\n pushToDataLayer(data) {\n window.dataLayer.push(data);\n }\n\n /** @protected */\n enableTracking() {\n if (!this.trackingEnabled) {\n window[this.ga4Disable] = false;\n this.cookies.set(this.ga4Disable, \"false\");\n if (!this.trackingCodeAdded && this.addTrackingCode) {\n if (!this.gTagId) {\n throw Error(\"ID was not specified\");\n }\n this.pushToDataLayer({\n ...this.getTnaMetaTags(),\n ...this.getUserPreferences(),\n \"gtm.start\": new Date().getTime(),\n event: \"gtm.js\",\n });\n const [firstScript] = document.getElementsByTagName(\"script\");\n const script = document.createElement(\"script\");\n script.async = true;\n script.src = `https://www.googletagmanager.com/gtm.js?id=${this.gTagId}&l=dataLayer`;\n if (firstScript) {\n firstScript.parentNode.insertBefore(script, firstScript);\n } else {\n document.head.appendChild(script);\n }\n this.trackingCodeAdded = true;\n }\n this.trackingEnabled = true;\n }\n }\n\n /** @protected */\n disableTracking() {\n if (this.trackingEnabled) {\n window[this.ga4Disable] = true;\n this.cookies.set(this.ga4Disable, \"true\");\n Object.keys(this.cookies.all).forEach((key) => {\n if (key.startsWith(\"_ga\")) {\n this.cookies.delete(key);\n }\n });\n this.trackingEnabled = false;\n }\n }\n}\n\nconst ga4Id = document.documentElement.dataset.ga4;\nif (ga4Id) {\n /* eslint-disable-next-line no-new */\n new GA4({ id: ga4Id });\n}\n\nconst helpers = {\n getXPathTo,\n getClosestHeading,\n getClosestElement,\n valueGetters,\n};\n\nexport { EventTracker, GA4, helpers };\n","export default [\n {\n scope: \".tna-hero\",\n areaName: \"hero\",\n events: [\n {\n eventName: \"toggle_caption\",\n targetElement: \".tna-hero__details-summary\",\n on: \"click\",\n data: {\n // eslint-disable-next-line no-unused-vars\n state: ($el, $scope, event) => {\n const wasExpanded =\n $scope\n .querySelector(\".tna-hero__details\")\n ?.hasAttribute(\"open\") ?? false;\n return wasExpanded ? \"closed\" : \"opened\";\n },\n // eslint-disable-next-line no-unused-vars\n value: ($el, $scope, event) =>\n $scope.querySelector(\"img[alt]\")?.getAttribute(\"alt\"),\n },\n },\n ],\n },\n];\n"],"names":["root","factory","exports","module","define","amd","self","_window","window","TNAFrontendCookieEvents","CookieEventHandler","debug","arguments","length","undefined","_classCallCheck","this","_defineProperty","log","key","value","_console","_len","args","Array","_key","console","apply","concat","event","callback","Object","hasOwn","events","_toConsumableArray","oneTimeEvents","_this","data","forEach","eventToTrigger","call","eventIndex","splice","TNAFrontendCookies","tnaCookiePolicies","Cookies","options","document","documentElement","dataset","tnaFrontendDebug","defaultDomain","defaultPath","secure","policiesKey","defaultAge","_options$newInstance","newInstance","_options$noInit","noInit","tnaCookiesDomain","location","hostname","tnaCookiesPath","tnaCookiesInsecure","tnaCookiesPoliciesKey","parseInt","tnaCookiesDefaultAge","policiesCorrectOnInit","keys","policies","every","policy","includes","init","existingPolicies","filteredExistingPolicies","fromEntries","filter","map","savePolicies","_objectSpread","usage","settings","marketing","essential","all","get","deserialised","cookie","split","trim","_parts","_slicedToArray","decodeURIComponent","JSON","parse","error","exists","_options$maxAge","maxAge","_options$sameSite","sameSite","_options$domain","domain","_options$path","path","_options$secure","_options$session","session","secureString","sessionString","encodeURIComponent","trigger","set","_this2","setPolicy","accepted","allPolicies","toLowerCase","stringify","on","once","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","d","definition","o","defineProperty","enumerable","obj","prop","prototype","hasOwnProperty","r","Symbol","toStringTag","getXPathTo","$element","id","body","tagName","ix","parentNode","siblings","childNodes","index","sibling","nodeType","getClosestElement","$startingElement","matchingElementSelectors","heading","$search","previousElementSibling","some","matchingElementSelector","matches","innerText","parentElement","getClosestHeading","valueGetters","text","$el","replace","html","innerHTML","$scope","instance","checked","expanded","getAttribute","toString","closestHeading","xpath","target","analytics","scope","areaName","rootEventName","rootData","data_component_name","eventName","targetElement","state","data_link_type","data_link","data_position","breadcrumbs_analytics","checkboxes_analytics","group","_$scope$closest","closest","querySelector","details_analytics","_$scope$querySelector","_$scope$querySelector2","hasAttribute","error_summary_analytics","getFileDetails","from","files","file","name","size","type","file_input_analytics","_$scope$closest2","_$scope$closest3","footer_analytics","data_section","gallery_analytics","media_type","media_duration","querySelectorAll","media_provider","media_title","media_progress","findIndex","$itemButton","media_action","_$scope$querySelector3","onCondition","global_header_analytics","header_analytics","picture_analytics","image","imageSrc","imageAlt","radios_analytics","search_field_analytics","sidebar_analytics","text_input_analytics","textarea_analytics","componentAnalytics","AccordionAnalytics","BreadcrumbAnalytics","CheckboxesAnalytics","DetailsAnalytics","ErrorSummary","FileInputDroppable","FooterAnalytics","GalleryAnalytics","GlobalHeaderAnalytics","HeaderAnalytics","PictureAnalytics","RadiosAnalytics","SearchFieldAnalytics","SidebarAnalytics","TextInputAnalytics","TextareaAnalytics","EventTracker","_createClass","Date","_options$prefix","prefix","_options$documentScop","documentScope","initAll","navigator","doNotTrack","cookies","isPolicyAccepted","enableTracking","disableTracking","componentConfig","addListeners","_this3","rootDefaultData","scopeArray","_typeof","scopeIndex","eventConfig","attachListener","_this4","_eventConfig$rootData","_eventConfig$onCondit","addEventListener","computedValueParameters","computedValue","recordEvent","generateEventName","xPath","timeSincePageLoad","startTime","entries","_ref","_ref2","valueOrFunction","push","_this5","head","$metaEl","RegExp","_window$matchMedia","_window$matchMedia2","_window2","_window$matchMedia3","_window3","_window$matchMedia4","_window4","_window$matchMedia5","_window5","_window$matchMedia6","_window6","userPreferences","matchMedia","prefersContrast","GA4","_EventTracker2","_window7","_this6","TNAFrontendAnalyticsGA4","_possibleConstructorReturn","_options$id","_options$prefix2","_options$initAll","_options$addTrackingC","addTrackingCode","dataLayer","gTagId","ga4Disable","start","_inherits","_this7","ga4Data","_ref3","_ref4","pushToDataLayer","trackingEnabled","trackingCodeAdded","Error","getTnaMetaTags","getUserPreferences","getTime","firstScript","getElementsByTagName","script","createElement","async","src","insertBefore","appendChild","_this8","startsWith","ga4Id","ga4","helpers"],"sourceRoot":""}
1
+ {"version":3,"file":"analytics.js","mappings":"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","sources":["webpack://TNAFrontend/webpack/universalModuleDefinition","webpack://TNAFrontend/./src/nationalarchives/lib/cookie-events.mjs","webpack://TNAFrontend/./src/nationalarchives/lib/cookies.mjs","webpack://TNAFrontend/webpack/bootstrap","webpack://TNAFrontend/webpack/runtime/define property getters","webpack://TNAFrontend/webpack/runtime/hasOwnProperty shorthand","webpack://TNAFrontend/webpack/runtime/make namespace object","webpack://TNAFrontend/./src/nationalarchives/lib/analytics-helpers.mjs","webpack://TNAFrontend/./src/nationalarchives/components/accordion/analytics.js","webpack://TNAFrontend/./src/nationalarchives/components/breadcrumbs/analytics.js","webpack://TNAFrontend/./src/nationalarchives/components/checkboxes/analytics.js","webpack://TNAFrontend/./src/nationalarchives/components/details/analytics.js","webpack://TNAFrontend/./src/nationalarchives/components/error-summary/analytics.js","webpack://TNAFrontend/./src/nationalarchives/components/file-input/analytics.js","webpack://TNAFrontend/./src/nationalarchives/components/footer/analytics.js","webpack://TNAFrontend/./src/nationalarchives/components/gallery/analytics.js","webpack://TNAFrontend/./src/nationalarchives/components/global-header/analytics.js","webpack://TNAFrontend/./src/nationalarchives/components/header/analytics.js","webpack://TNAFrontend/./src/nationalarchives/components/picture/analytics.js","webpack://TNAFrontend/./src/nationalarchives/components/radios/analytics.js","webpack://TNAFrontend/./src/nationalarchives/components/search-field/analytics.js","webpack://TNAFrontend/./src/nationalarchives/components/sidebar/analytics.js","webpack://TNAFrontend/./src/nationalarchives/components/text-input/analytics.js","webpack://TNAFrontend/./src/nationalarchives/components/textarea/analytics.js","webpack://TNAFrontend/./src/nationalarchives/analytics.mjs","webpack://TNAFrontend/./src/nationalarchives/components/hero/analytics.js"],"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[\"TNAFrontendAnalytics\"] = factory();\n\telse\n\t\troot[\"TNAFrontendAnalytics\"] = factory();\n})(self, () => {\nreturn ","window.TNAFrontendCookieEvents ||= null;\n\nexport class CookieEventHandler {\n events = {};\n oneTimeEvents = {};\n debug = false;\n\n constructor(debug = false) {\n this.debug = debug;\n if (window.TNAFrontendCookieEvents) {\n this.log(\"Using existing TNAFrontendCookieEvents instance\");\n /* eslint-disable-next-line no-constructor-return */\n return window.TNAFrontendCookieEvents;\n }\n window.TNAFrontendCookieEvents = this;\n }\n\n log(...args) {\n if (this.debug) {\n /* eslint-disable-next-line no-console */\n console.log(\"[TNA Frontend Cookie Events]\", ...args);\n }\n }\n\n /**\n * Add an event listener.\n * @param {String} event - The event to add a listener for.\n * @param {Function} callback - The callback function to call when the event is triggered.\n */\n on(event, callback) {\n if (!Object.hasOwn(this.events, event)) {\n this.events[event] = [];\n }\n this.events[event] = [...this.events[event], callback];\n }\n\n once(event, callback) {\n if (!Object.hasOwn(this.oneTimeEvents, event)) {\n this.oneTimeEvents[event] = [];\n }\n this.oneTimeEvents[event] = [...this.oneTimeEvents[event], callback];\n }\n\n /** @protected */\n trigger(event, data = {}) {\n if (Object.hasOwn(this.events, event)) {\n this.log(`Triggering event: ${event}`, data);\n this.events[event].forEach((eventToTrigger) =>\n eventToTrigger.call(this, data),\n );\n }\n if (Object.hasOwn(this.oneTimeEvents, event)) {\n this.log(`Triggering one-time event: ${event}`, data);\n\n for (\n /* eslint-disable-next-line no-magic-numbers */\n let eventIndex = this.oneTimeEvents[event].length - 1;\n /* eslint-disable-next-line no-magic-numbers */\n eventIndex >= 0;\n /* eslint-disable-next-line no-magic-numbers */\n eventIndex -= 1\n ) {\n const eventToTrigger = this.oneTimeEvents[event][eventIndex];\n eventToTrigger.call(this, data);\n /* eslint-disable-next-line no-magic-numbers */\n this.oneTimeEvents[event].splice(eventIndex, 1);\n }\n }\n }\n}\n","/* eslint-disable max-lines */\n/* eslint-disable no-console */\n\nimport { CookieEventHandler } from \"./cookie-events.mjs\";\n\nwindow.TNAFrontendCookies ||= null;\n\nconst tnaCookiePolicies = [\"usage\", \"settings\", \"marketing\", \"essential\"];\n\n/**\n * Class to handle cookies.\n * @class Cookies\n * @constructor\n * @public\n */\nexport default class Cookies {\n /** @protected */\n defaultDomain = \"\";\n /** @protected */\n defaultPath = \"\";\n /** @protected */\n secure = true;\n /** @protected */\n policiesKey = \"\";\n /** @protected */\n events = null;\n /** @protected */\n defaultAge = null;\n /** @protected */\n policiesCorrectOnInit = false;\n /** @protected */\n debug = document.documentElement.dataset.tnaFrontendDebug === \"true\";\n\n /**\n * Create a cookie handler.\n * @param {String} [options.defaultDomain] - The domain to register the cookie with.\n * @param {String} [options.path] - The domain to register the cookie with.\n * @param {Boolean} [options.secure] - Only set cookie in HTTPS environments.\n * @param {String} [options.policiesKey] - The name of the cookie.\n * @param {Number} [options.defaultAge] - The default age of non-session cookies.\n * @param {String} [options.newInstance=false] - Create a fresh instance of the cookie class.\n * @param {Boolean} [options.noInit=false] - Don't initialise a blank cookie policy.\n */\n constructor(options = {}) {\n const {\n defaultDomain,\n defaultPath,\n secure,\n policiesKey,\n defaultAge,\n newInstance = false,\n noInit = false,\n } = options;\n if (!newInstance && window.TNAFrontendCookies) {\n /* eslint-disable-next-line no-constructor-return */\n return window.TNAFrontendCookies;\n }\n if (defaultDomain) {\n this.defaultDomain = defaultDomain;\n } else {\n this.defaultDomain =\n document.documentElement.dataset.tnaCookiesDomain ||\n window.location.hostname;\n }\n if (defaultPath) {\n this.defaultPath = defaultPath;\n } else {\n this.defaultPath = document.documentElement.dataset.tnaCookiesPath || \"/\";\n }\n if (secure) {\n this.secure = secure;\n } else {\n this.secure =\n document.documentElement.dataset.tnaCookiesInsecure !== \"true\";\n }\n if (policiesKey) {\n this.policiesKey = policiesKey;\n } else {\n this.policiesKey =\n document.documentElement.dataset.tnaCookiesPoliciesKey ||\n \"cookies_policy\";\n }\n if (defaultAge) {\n this.defaultAge = defaultAge;\n } else {\n /* eslint-disable-next-line no-magic-numbers */\n const secondsInAYear = 365 * 24 * 60 * 60;\n this.defaultAge =\n parseInt(document.documentElement.dataset.tnaCookiesDefaultAge, 10) ||\n secondsInAYear;\n }\n this.events = new CookieEventHandler(this.debug);\n this.policiesCorrectOnInit =\n Object.keys(this.policies).length === tnaCookiePolicies.length &&\n tnaCookiePolicies.every(\n (policy) =>\n Object.keys(this.policies).includes(policy) &&\n typeof this.policies[policy] === \"boolean\",\n );\n if (!this.policiesCorrectOnInit && !noInit) {\n this.init();\n }\n this.log({\n defaultDomain: this.defaultDomain,\n defaultPath: this.defaultPath,\n secure: this.secure,\n policiesKey: this.policiesKey,\n defaultAge: this.defaultAge,\n policiesCorrectOnInit: this.policiesCorrectOnInit,\n });\n if (!newInstance && !window.TNAFrontendCookies) {\n window.TNAFrontendCookies = this;\n }\n }\n\n /** @protected */\n init() {\n const existingPolicies = this.policies;\n this.log(\"Existing policies on init:\", existingPolicies);\n const filteredExistingPolicies = Object.fromEntries(\n Object.keys(existingPolicies)\n .filter((policy) => tnaCookiePolicies.includes(policy))\n .map((policy) => [policy, existingPolicies[policy]]),\n );\n if (Object.keys(filteredExistingPolicies).length) {\n this.log(\"Filtered existing policies:\", filteredExistingPolicies);\n }\n this.savePolicies({\n usage: false,\n settings: false,\n marketing: false,\n ...filteredExistingPolicies,\n essential: true,\n });\n }\n\n log(...args) {\n if (this.debug) {\n console.log(\"[TNA Frontend Cookies]\", ...args, this.all);\n }\n }\n\n destroyInstance() {\n this.log(\"Destroying TNAFrontendCookies instance\");\n window.TNAFrontendCookies = null;\n }\n\n /** @protected */\n /* eslint-disable-next-line class-methods-use-this */\n get all() {\n const deserialised = {};\n document.cookie\n .split(\"; \")\n .filter((cookie) => cookie.trim() !== \"\")\n .forEach((cookie) => {\n const parts = cookie.trim().split(\"=\");\n const [key, value] = parts;\n if (key) {\n deserialised[key] = decodeURIComponent(value || \"\");\n }\n });\n return deserialised;\n }\n\n /** @protected */\n get policies() {\n try {\n return JSON.parse(this.get(this.policiesKey) || \"{}\");\n // eslint-disable-next-line no-unused-vars\n } catch (error) {\n return {};\n }\n }\n\n /**\n * Check to see whether a cookie exists or not.\n * @param {String} key - The cookie name.\n * @returns {Boolean}\n */\n exists(key) {\n return Object.hasOwn(this.all, key);\n }\n\n /**\n * Check to see whether a cookie has a particular value.\n * @param {String} key - The cookie name.\n * @param {String|Number|Boolean} value - The value to check against.\n * @returns\n */\n hasValue(key, value) {\n return this.get(key) === value;\n }\n\n /**\n * Get a cookie.\n * @param {String} key - The cookie name.\n * @returns {String|Number|Boolean|null}\n */\n get(key) {\n if (this.exists(key)) {\n return decodeURIComponent(this.all[key]);\n }\n return null;\n }\n\n /**\n * Set a cookie.\n * @param {String} key - The cookie name.\n * @param {String|Number|Boolean} value - The cookie value.\n * @param {Object} options\n * @param {Number} [options.maxAge=this.defaultAge] - The maximum age of the cookie in seconds.\n * @param {String} [options.path=/] - The path to register the cookie for.\n * @param {String} [options.sameSite=Lax] - The sameSite attribute.\n * @param {String} [options.domain=this.defaultDomain] - The domain to register the cookie with.\n * @param {String} [options.path=this.defaultPath] - The path to register the cookie with.\n * @param {String} [options.secure=this.secure] - Only set cookie in HTTPS environments.\n * @param {String} [options.session=false] - Set a session cookie.\n */\n set(key, value, options = {}) {\n const {\n maxAge = this.defaultAge,\n sameSite = \"Lax\",\n domain = this.defaultDomain,\n path = this.defaultPath,\n secure = this.secure,\n session = false,\n } = options;\n if (!key) {\n return;\n }\n let secureString = \"\";\n if (secure) {\n secureString = \"; secure\";\n }\n let sessionString = \"\";\n if (!session) {\n sessionString = `; max-age=${maxAge}`;\n }\n const cookie = `${encodeURIComponent(key)}=${encodeURIComponent(value)}; domain=${domain}; samesite=${sameSite}; path=${path}${sessionString}${secureString}`;\n document.cookie = cookie;\n this.log(\"Set cookie:\", {\n key,\n value,\n maxAge,\n path,\n sameSite,\n domain,\n secure,\n session,\n cookie,\n });\n this.events.trigger(\"setCookie\", {\n key,\n value,\n maxAge,\n path,\n sameSite,\n domain,\n secure,\n session,\n cookie,\n });\n }\n\n /**\n * Delete a cookie.\n * @param {String} key - The cookie name.\n * @param {String} [path=/] - The path to the cookie is registered on.\n */\n delete(key, path = \"/\", domain = this.defaultDomain) {\n const options = { maxAge: -1, path, domain: domain || this.defaultDomain };\n this.set(key, \"\", options);\n this.log(\"Deleted cookie:\", { key, path, domain, ...options });\n this.events.trigger(\"deleteCookie\", { key, ...options });\n }\n\n /**\n * Delete all cookies.\n */\n deleteAll(path = \"/\", domain = this.defaultDomain) {\n Object.keys(this.all).forEach((cookie) => {\n this.delete(cookie, path, domain);\n });\n this.log(\"Deleted all cookies\", { path, domain });\n this.events.trigger(\"deleteAllCookies\", { path, domain });\n }\n\n /**\n * Accept a policy.\n * @param {String} policy - The name of the policy.\n */\n acceptPolicy(policy) {\n this.log(\"Accepting policy:\", policy);\n this.setPolicy(policy, true);\n this.events.trigger(\"acceptPolicy\", policy);\n this.events.trigger(\"changePolicy\", { [policy]: true });\n }\n\n /**\n * Reject a policy.\n * @param {String} policy - The name of the policy.\n */\n rejectPolicy(policy) {\n this.log(\"Rejecting policy:\", policy);\n this.setPolicy(policy, false);\n this.events.trigger(\"rejectPolicy\", policy);\n this.events.trigger(\"changePolicy\", { [policy]: false });\n }\n\n /**\n * Set a policy.\n * @param {String} policy - The name of the policy.\n * @param {Boolean} accepted - Whether the policy is accepted or not.\n */\n setPolicy(policy, accepted) {\n if (policy === \"essential\") {\n this.log(\"Cannot change essential policy, it is always accepted.\");\n return;\n }\n this.log(`Setting policy ${policy} to ${accepted}`);\n this.savePolicies({\n ...this.policies,\n [policy]: accepted,\n essential: true,\n });\n this.events.trigger(\"changePolicy\", { [policy]: accepted });\n }\n\n /**\n * Accept all the cookie policies.\n */\n acceptAllPolicies() {\n this.log(\"Accepting all policies\");\n const allPolicies = Object.fromEntries(\n Object.keys(this.policies).map((key) => [key.toLowerCase(), true]),\n );\n this.savePolicies(allPolicies);\n this.events.trigger(\"acceptAllPolicies\");\n this.events.trigger(\"changePolicy\", allPolicies);\n }\n\n /**\n * Reject all the cookie policies.\n */\n rejectAllPolicies() {\n this.log(\"Rejecting all policies\");\n const allPolicies = {\n ...Object.fromEntries(\n Object.keys(this.policies).map((key) => [key.toLowerCase(), false]),\n ),\n essential: true,\n };\n this.savePolicies(allPolicies);\n this.events.trigger(\"rejectAllPolicies\");\n this.events.trigger(\"changePolicy\", allPolicies);\n }\n\n /**\n * Commit policy preferences to the browser.\n * @param {object} policies - The policies to commit.\n */\n savePolicies(policies) {\n this.log(\"Saving policies:\", policies);\n this.set(this.policiesKey, JSON.stringify(policies));\n }\n\n /**\n * Get the acceptance status of a policy.\n * @param {String} policy - The name of the policy.\n * @returns {Boolean}\n */\n isPolicyAccepted(policy) {\n if (Object.hasOwn(this.policies, policy)) {\n return this.policies[policy] === true;\n }\n return null;\n }\n\n /**\n * Add an event listener.\n * @param {String} event - The event to add a listener for.\n * @param {Function} callback - The callback function to call when the event is triggered.\n */\n on(event, callback) {\n this.log(`Adding event listener for: ${event}`);\n this.events.on(event, callback);\n }\n\n /**\n * Add a one-time event listener.\n * @param {String} event - The event to add a listener for.\n * @param {Function} callback - The callback function to call when the event is triggered.\n */\n once(event, callback) {\n this.log(`Adding one-time event listener for: ${event}`);\n this.events.once(event, callback);\n }\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","const getXPathTo = ($element) => {\n if ($element.id !== \"\") {\n return `id(\"${$element.id}\")`;\n }\n if ($element === document.body) {\n return $element.tagName;\n }\n let ix = 0;\n if ($element.parentNode) {\n const siblings = $element.parentNode.childNodes;\n /* eslint-disable-next-line no-magic-numbers */\n for (let index = 0; index < siblings.length; index += 1) {\n const sibling = siblings[index];\n if (sibling === $element) {\n return `${getXPathTo($element.parentNode)}/${$element.tagName}[${\n /* eslint-disable-next-line no-magic-numbers */\n ix + 1\n }]`;\n }\n /* eslint-disable-next-line no-magic-numbers */\n if (sibling.nodeType === 1 && sibling.tagName === $element.tagName) {\n /* eslint-disable-next-line no-magic-numbers */\n ix += 1;\n }\n }\n return `${getXPathTo($element.parentNode)}/${$element.tagName}`;\n }\n return $element.tagName;\n};\nconst getClosestElement = ($startingElement, matchingElementSelectors) => {\n let heading = \"\";\n let $search = $startingElement;\n do {\n while ($search.previousElementSibling) {\n $search = $search.previousElementSibling;\n if (\n /* eslint-disable-next-line no-loop-func */\n matchingElementSelectors.some((matchingElementSelector) =>\n $search.matches(matchingElementSelector),\n )\n ) {\n heading = $search.innerText;\n break;\n }\n }\n $search = $search.parentElement;\n } while ($search.parentElement && !heading);\n return heading;\n};\nconst getClosestHeading = ($element) =>\n getClosestElement($element, [\"h1\", \"h2\", \"h3\", \"h4\", \"h5\", \"h6\"]);\nconst valueGetters = {\n text: ($el) => $el.innerText.replace(/\\n/gu, \" \"),\n html: ($el) => $el.innerHTML,\n value: ($el) => $el.value,\n index: ($el, $scope, event, index) => index,\n instance: ($el, $scope, event, index, instance) => instance,\n /* eslint-disable-next-line no-ternary */\n checked: ($el) => ($el.checked ? \"checked\" : \"unchecked\"),\n expanded: ($el) => {\n const expanded = $el.getAttribute(\"aria-expanded\");\n if (expanded === null) {\n return null;\n }\n /* eslint-disable-next-line no-ternary */\n return expanded.toString() === \"true\" ? \"opened\" : \"closed\";\n },\n closestHeading: ($el) => getClosestHeading($el),\n xpath: ($el) => getXPathTo($el.target),\n};\n\nexport { getXPathTo, getClosestElement, getClosestHeading, valueGetters };\n","import { valueGetters } from \"../../lib/analytics-helpers.mjs\";\n\nexport default [\n {\n scope: \".tna-accordion\",\n areaName: \"accordion\",\n rootEventName: \"select_feature\",\n rootData: {\n data_component_name: \"accordion\",\n },\n events: [\n {\n eventName: \"click\",\n targetElement: \".tna-accordion__summary\",\n on: \"click\",\n data: { state: valueGetters.expanded, value: valueGetters.text },\n rootData: {\n data_link_type: valueGetters.expanded,\n data_link: valueGetters.text,\n data_position: valueGetters.index,\n },\n },\n ],\n },\n];\n","import { valueGetters } from \"../../lib/analytics-helpers.mjs\";\n\nexport default [\n {\n scope: \".tna-breadcrumbs\",\n areaName: \"breadcrumbs\",\n rootEventName: \"select_navigation\",\n rootData: {\n data_component_name: \"breadcrumbs\",\n },\n events: [\n {\n eventName: \"click\",\n targetElement: \"a.tna-breadcrumbs__link\",\n on: \"click\",\n data: { state: \"expand\", value: valueGetters.html },\n rootData: {\n data_link_type: \"breadcrumb_link\",\n data_link: valueGetters.text,\n },\n },\n {\n eventName: \"click\",\n targetElement:\n \".tna-breadcrumbs__item--expandable button.tna-breadcrumbs__link\",\n on: \"click\",\n data: { state: \"expand\", value: valueGetters.html },\n rootData: {\n data_link_type: \"breadcrumb_expand\",\n data_link: valueGetters.text,\n },\n },\n ],\n },\n];\n","import { valueGetters } from \"../../lib/analytics-helpers.mjs\";\n\nexport default [\n {\n scope: \".tna-checkboxes\",\n areaName: \"checkboxes\",\n events: [\n {\n eventName: \"toggle\",\n targetElement: \".tna-checkboxes__item input\",\n on: \"change\",\n data: {\n state: valueGetters.checked,\n // eslint-disable-next-line no-unused-vars\n value: ($el, $scope, event) => $el.parentNode.innerText.trim(),\n // eslint-disable-next-line no-unused-vars\n group: ($el, $scope, event) =>\n $scope\n .closest(\".tna-form-item\")\n ?.querySelector(\".tna-form-item__heading\")\n ?.innerText?.trim(),\n },\n },\n ],\n },\n];\n","import { valueGetters } from \"../../lib/analytics-helpers.mjs\";\n\nexport default [\n {\n scope: \".tna-details\",\n areaName: \"details\",\n events: [\n {\n eventName: \"click\",\n targetElement: \".tna-details__summary\",\n on: \"click\",\n data: {\n // eslint-disable-next-line no-unused-vars\n state: ($el, $scope, event) => {\n const wasExpanded =\n $scope\n .querySelector(\".tna-details__details\")\n ?.hasAttribute(\"open\") ?? false;\n return wasExpanded ? \"closed\" : \"opened\";\n },\n\n value: valueGetters.text,\n },\n },\n ],\n },\n];\n","import { valueGetters } from \"../../lib/analytics-helpers.mjs\";\n\nexport default [\n {\n scope: \".tna-error-summary\",\n areaName: \"error-summary\",\n events: [\n {\n eventName: \"jump\",\n targetElement: \"a.tna-error-summary__link\",\n on: \"click\",\n data: { value: valueGetters.text },\n },\n ],\n },\n];\n","const getFileDetails = ($el) =>\n JSON.stringify(\n Array.from($el.files).map((file) => ({\n name: file.name,\n size: file.size,\n type: file.type,\n })),\n );\n\nexport default [\n {\n scope: \".tna-file-input\",\n areaName: \"file-input\",\n events: [\n {\n eventName: \"blurred\",\n on: \"blur\",\n data: {\n value: getFileDetails,\n state: ($el) => $el.files.length,\n\n group: ($el, $scope) =>\n $scope\n .closest(\".tna-form-item\")\n ?.querySelector(\".tna-form-item__heading\")\n ?.innerText?.trim(),\n },\n },\n {\n eventName: \"cancelled\",\n on: \"cancel\",\n data: {\n value: getFileDetails,\n state: ($el) => $el.files.length,\n\n group: ($el, $scope) =>\n $scope\n .closest(\".tna-form-item\")\n ?.querySelector(\".tna-form-item__heading\")\n ?.innerText?.trim(),\n },\n },\n {\n eventName: \"changed\",\n on: \"change\",\n data: {\n value: getFileDetails,\n state: ($el) => $el.files.length,\n\n group: ($el, $scope) =>\n $scope\n .closest(\".tna-form-item\")\n ?.querySelector(\".tna-form-item__heading\")\n ?.innerText?.trim(),\n },\n },\n ],\n },\n];\n","import { valueGetters } from \"../../lib/analytics-helpers.mjs\";\n\nexport default [\n {\n scope: \".tna-footer\",\n areaName: \"footer\",\n rootEventName: \"global_navigation\",\n rootData: {\n data_component_name: \"footer\",\n },\n events: [\n {\n eventName: \"link.click\",\n targetElement: \".tna-footer__navigation-block-item-link\",\n on: \"click\",\n data: {\n value: valueGetters.text,\n },\n rootData: {\n data_link_type: \"link\",\n data_section: valueGetters.closestHeading,\n data_link: valueGetters.text,\n },\n },\n {\n eventName: \"social_link.click\",\n targetElement: \".tna-footer__social-item-link\",\n on: \"click\",\n data: {\n value: valueGetters.text,\n },\n rootData: {\n data_link_type: \"icon\",\n data_section: \"Social media\",\n data_link: ($el) => $el.dataset.name,\n },\n },\n {\n eventName: \"legal_link.click\",\n targetElement: \".tna-footer__legal-item-link\",\n on: \"click\",\n data: {\n value: valueGetters.text,\n },\n rootData: {\n data_link_type: \"link\",\n data_section: \"Legal information\",\n data_link: valueGetters.text,\n },\n },\n {\n eventName: \"mailing_list.click\",\n targetElement: \".tna-footer__mailing-list a.tna-button\",\n on: \"click\",\n data: {\n value: valueGetters.text,\n },\n rootData: {\n data_link_type: \"button\",\n data_section: \"Mailing list\",\n data_link: valueGetters.text,\n },\n },\n {\n eventName: \"ogl.click\",\n targetElement: \".tna-footer__licence p a.tna-footer__link\",\n on: \"click\",\n data: {\n value: valueGetters.text,\n },\n rootData: {\n data_link_type: \"link\",\n data_section: \"OGL\",\n data_link: valueGetters.text,\n },\n },\n {\n eventName: \"govuk.click\",\n targetElement: \".tna-footer__govuk-link\",\n on: \"click\",\n data: {\n value: valueGetters.text,\n },\n rootData: {\n data_link_type: \"Logo\",\n data_section: \"GOV.UK\",\n data_link: valueGetters.text,\n },\n },\n {\n eventName: \"theme.change\",\n targetElement: \".tna-footer__theme-selector-button\",\n on: \"click\",\n data: {\n value: valueGetters.value,\n },\n },\n ],\n },\n];\n","import { valueGetters } from \"../../lib/analytics-helpers.mjs\";\n\nexport default [\n {\n scope: \".tna-gallery\",\n areaName: \"gallery\",\n rootEventName: \"select_media\",\n rootData: {\n media_type: \"gallery\",\n media_duration: ($el, $scope) =>\n $scope.querySelectorAll(\".tna-gallery__navigation-item\").length,\n media_provider: \"tna\",\n media_title: ($el, $scope, event, index, instance) =>\n $scope.querySelector(\".tna-gallery__header-inner\")?.innerText?.trim() ||\n `gallery_${instance}`,\n media_progress: ($el, $scope) =>\n (Array.from(\n $scope.querySelectorAll(\".tna-gallery__navigation-item\"),\n ).findIndex(\n ($itemButton) => $itemButton.getAttribute(\"aria-current\") === \"true\",\n /* eslint-disable-next-line no-magic-numbers */\n ) || -1) + 1,\n },\n events: [\n {\n eventName: \"click\",\n targetElement: \".tna-gallery__navigation-item\",\n on: \"click\",\n data: {\n value: valueGetters.text,\n },\n rootData: {\n data_link: \"image\",\n media_action: \"progress\",\n media_progress: valueGetters.index,\n },\n },\n {\n eventName: \"click\",\n targetElement: \".tna-gallery__navigation-prev\",\n on: \"click\",\n data: {\n value: ($el, $scope) =>\n $scope\n .querySelector(\n \".tna-gallery__item:not([hidden]) .tna-gallery__item-header\",\n )\n ?.innerText?.trim(),\n },\n rootData: {\n data_link: \"previous\",\n media_action: \"progress\",\n },\n },\n {\n eventName: \"click\",\n targetElement: \".tna-gallery__navigation-next\",\n on: \"click\",\n data: {\n value: ($el, $scope) =>\n $scope\n .querySelector(\n \".tna-gallery__item:not([hidden]) .tna-gallery__item-header\",\n )\n ?.innerText?.trim(),\n },\n rootData: {\n data_link: \"next\",\n media_action: \"progress\",\n },\n },\n {\n eventName: \"keypress\",\n on: \"keydown\",\n onCondition: ($el, $scope, event) =>\n [\n \"ArrowLeft\",\n \"ArrowRight\",\n \"ArrowUp\",\n \"ArrowDown\",\n \"End\",\n \"Home\",\n // \"Escape\",\n ].includes(event.key),\n data: {\n value: ($el, $scope, event) => event.key,\n },\n rootData: {\n data_link: \"keypress\",\n media_action: \"progress\",\n },\n },\n ],\n },\n];\n","import { valueGetters } from \"../../lib/analytics-helpers.mjs\";\n\nexport default [\n {\n scope: \".tna-global-header\",\n areaName: \"header\",\n rootEventName: \"global_navigation\",\n rootData: {\n data_component_name: \"header\",\n },\n events: [\n {\n eventName: \"toggle\",\n targetElement: \".tna-global-header__navigation-button\",\n on: \"click\",\n data: {\n state: valueGetters.expanded,\n },\n rootData: {\n data_link_type: \"mobile_menu\",\n data_link: ($el) => {\n const expanded = $el.getAttribute(\"aria-expanded\");\n if (expanded === null) {\n return null;\n }\n return expanded.toString() === \"true\" ? \"Open menu\" : \"Close menu\";\n },\n data_section: \"Burger menu\",\n },\n },\n {\n eventName: \"logo.click\",\n targetElement: \".tna-global-header__logo\",\n on: \"click\",\n rootData: {\n data_link_type: \"logo\",\n data_link: \"The National Archives\",\n data_section: \"Top navigation and logo\",\n },\n },\n {\n eventName: \"primary_link.click\",\n targetElement: \".tna-global-header__navigation-item-link\",\n on: \"click\",\n data: {\n value: valueGetters.text,\n },\n rootData: {\n data_link_type: \"menu\",\n data_section: valueGetters.text,\n data_position: 1,\n data_link: valueGetters.text,\n },\n },\n {\n eventName: \"secondary_link.click\",\n targetElement: \".tna-global-header__top-navigation-link\",\n on: \"click\",\n data: {\n value: valueGetters.text,\n },\n rootData: {\n data_link_type: \"icon\",\n data_link: valueGetters.text,\n data_section: \"Top navigation and logo\",\n },\n },\n ],\n },\n];\n","import { valueGetters } from \"../../lib/analytics-helpers.mjs\";\n\nexport default [\n {\n scope: \".tna-header\",\n areaName: \"header\",\n events: [\n {\n eventName: \"toggle\",\n targetElement: \".tna-header__navigation-button\",\n on: \"click\",\n data: {\n state: valueGetters.expanded,\n },\n },\n ],\n },\n];\n","import {\n getClosestHeading,\n valueGetters,\n} from \"../../lib/analytics-helpers.mjs\";\n\nexport default [\n {\n scope: \".tna-picture\",\n areaName: \"picture\",\n events: [\n {\n eventName: \"toggle_transcript\",\n targetElement: \".tna-picture__toggle-transcript\",\n on: \"click\",\n data: {\n state: valueGetters.expanded,\n // eslint-disable-next-line no-unused-vars\n value: ($el, $scope, event) => {\n const heading = getClosestHeading($scope);\n const image = $scope.querySelector(\".tna-picture__image\");\n const imageSrc = image.getAttribute(\"src\");\n const imageAlt = image.getAttribute(\"alt\");\n const value = `${imageAlt} (${imageSrc})`;\n return heading ? `${heading} > ${value}` : value;\n },\n },\n },\n ],\n },\n];\n","import { valueGetters } from \"../../lib/analytics-helpers.mjs\";\n\nexport default [\n {\n scope: \".tna-radios\",\n areaName: \"radios\",\n events: [\n {\n eventName: \"toggle\",\n targetElement: \".tna-radios__item input\",\n on: \"change\",\n data: {\n state: valueGetters.checked,\n // eslint-disable-next-line no-unused-vars\n value: ($el, $scope, event) => $el.parentNode.innerText,\n // eslint-disable-next-line no-unused-vars\n group: ($el, $scope, event) =>\n $scope\n .closest(\".tna-form-item\")\n ?.querySelector(\".tna-form-item__heading\")\n ?.innerText?.trim(),\n },\n },\n ],\n },\n];\n","import { valueGetters } from \"../../lib/analytics-helpers.mjs\";\n\nexport default [\n {\n scope: \".tna-search-field\",\n areaName: \"search-field\",\n events: [\n {\n eventName: \"blurred\",\n targetElement: \".tna-search-field__input\",\n on: \"blur\",\n data: {\n value: valueGetters.value,\n // eslint-disable-next-line no-unused-vars\n group: ($el, $scope, event) =>\n $scope.querySelector(\".tna-form-item__heading\")?.innerText?.trim(),\n },\n },\n ],\n },\n];\n","import { valueGetters } from \"../../lib/analytics-helpers.mjs\";\n\nexport default [\n {\n scope: \".tna-sidebar\",\n areaName: \"sidebar\",\n rootEventName: \"select_navigation\",\n rootData: {\n data_component_name: \"sidebar\",\n data_section: ($el, $scope) =>\n $scope.querySelector(\".tna-sidebar__heading\")?.innerText?.trim(),\n },\n events: [\n {\n eventName: \"click\",\n targetElement: \"a.tna-sidebar__link\",\n on: \"click\",\n rootData: {\n data_link_type: \"sidebar_link\",\n data_link: valueGetters.text,\n data_position: valueGetters.index,\n },\n },\n ],\n },\n];\n","import { valueGetters } from \"../../lib/analytics-helpers.mjs\";\n\nexport default [\n {\n scope: \".tna-text-input\",\n areaName: \"text-input\",\n events: [\n {\n eventName: \"blurred\",\n on: \"blur\",\n data: {\n value: valueGetters.value,\n\n group: ($el, $scope) =>\n $scope\n .closest(\".tna-form-item\")\n ?.querySelector(\".tna-form-item__heading\")\n ?.innerText?.trim(),\n },\n },\n ],\n },\n];\n","import { valueGetters } from \"../../lib/analytics-helpers.mjs\";\n\nexport default [\n {\n scope: \".tna-textarea\",\n areaName: \"textarea\",\n events: [\n {\n eventName: \"blurred\",\n on: \"blur\",\n data: {\n value: valueGetters.value,\n // eslint-disable-next-line no-unused-vars\n group: ($el, $scope, event) =>\n $scope\n .closest(\".tna-form-item\")\n ?.querySelector(\".tna-form-item__heading\")\n ?.innerText?.trim(),\n },\n },\n ],\n },\n];\n","/* eslint-disable max-classes-per-file, no-ternary, no-nested-ternary */\n\nimport AccordionAnalytics from \"./components/accordion/analytics.js\";\nimport BreadcrumbAnalytics from \"./components/breadcrumbs/analytics.js\";\nimport CheckboxesAnalytics from \"./components/checkboxes/analytics.js\";\nimport DetailsAnalytics from \"./components/details/analytics.js\";\nimport ErrorSummary from \"./components/error-summary/analytics.js\";\nimport FileInputDroppable from \"./components/file-input/analytics.js\";\nimport FooterAnalytics from \"./components/footer/analytics.js\";\nimport GalleryAnalytics from \"./components/gallery/analytics.js\";\nimport GlobalHeaderAnalytics from \"./components/global-header/analytics.js\";\nimport HeaderAnalytics from \"./components/header/analytics.js\";\nimport HeroAnalytics from \"./components/hero/analytics.js\";\nimport PictureAnalytics from \"./components/picture/analytics.js\";\nimport RadiosAnalytics from \"./components/radios/analytics.js\";\nimport SearchFieldAnalytics from \"./components/search-field/analytics.js\";\nimport SidebarAnalytics from \"./components/sidebar/analytics.js\";\nimport TextInputAnalytics from \"./components/text-input/analytics.js\";\nimport TextareaAnalytics from \"./components/textarea/analytics.js\";\nimport {\n getClosestElement,\n getClosestHeading,\n getXPathTo,\n valueGetters,\n} from \"./lib/analytics-helpers.mjs\";\nimport Cookies from \"./lib/cookies.mjs\";\n\nconst componentAnalytics = [\n ...AccordionAnalytics,\n ...BreadcrumbAnalytics,\n ...CheckboxesAnalytics,\n ...DetailsAnalytics,\n ...ErrorSummary,\n ...FileInputDroppable,\n ...FooterAnalytics,\n ...GalleryAnalytics,\n ...GlobalHeaderAnalytics,\n ...HeaderAnalytics,\n ...HeroAnalytics,\n ...PictureAnalytics,\n ...RadiosAnalytics,\n ...SearchFieldAnalytics,\n ...SidebarAnalytics,\n ...TextInputAnalytics,\n ...TextareaAnalytics,\n];\n\nclass EventTracker {\n /** @protected */\n cookies = new Cookies();\n\n /** @protected */\n events = [];\n\n /** @protected */\n startTime = new Date();\n\n /** @protected */\n prefix = \"tna\";\n\n /** @protected */\n document = document;\n\n constructor(options = {}) {\n const { prefix = null, documentScope = document } = options;\n if (prefix) {\n this.prefix = prefix;\n }\n if (documentScope) {\n this.document = documentScope;\n }\n }\n\n start(initAll) {\n /* eslint-disable-next-line no-magic-numbers */\n if (!navigator.doNotTrack || navigator.doNotTrack !== 1) {\n if (this.cookies.isPolicyAccepted(\"usage\")) {\n this.enableTracking();\n }\n this.cookies.on(\"changePolicy\", (policies) => {\n if (Object.hasOwn(policies, \"usage\")) {\n if (policies.usage) {\n this.enableTracking();\n } else {\n this.disableTracking();\n }\n }\n });\n if (initAll) {\n this.initAll();\n }\n }\n }\n\n /** @protected */\n /* eslint-disable-next-line class-methods-use-this, no-empty-function */\n enableTracking() {}\n\n /** @protected */\n /* eslint-disable-next-line class-methods-use-this, no-empty-function */\n disableTracking() {}\n\n /**\n * Initialise all TNA Frontend component analytics.\n */\n initAll() {\n componentAnalytics.forEach((componentConfig) => {\n this.addListeners(\n componentConfig.scope,\n componentConfig.areaName,\n componentConfig.events,\n componentConfig.rootEventName || \"\",\n componentConfig.rootData || {},\n );\n });\n }\n\n /**\n * Add an event listener.\n * @param {String|HTMLElement} scope - The element to which the listener is scoped.\n * @param {String} areaName - The name of the component to pass on to the tracker.\n * @param {{eventName: String, targetElement: String|undefined, on: String, data: {value: Function|String|undefined, state: Function|String|undefined, group: Function|String|undefined, [String]: String|Integer}, rootData:{[String]: Function|String}}[]} events - The configuration of events to track along with their optional value and state which can be computed.\n * @param {String} rootEventName - The event name to use if specified (prefix).\n * @param {{[String]:String}} rootDefaultData - The default root data to use if specified.\n */\n addListeners(\n scope,\n areaName,\n events,\n rootEventName = \"\",\n rootDefaultData = {},\n ) {\n let scopeArray = [];\n if (typeof scope === \"string\") {\n scopeArray = Array.from(this.document.querySelectorAll(scope));\n } else if (typeof scope === \"object\") {\n scopeArray = [scope];\n }\n /* eslint-disable-next-line no-magic-numbers */\n if (scopeArray.length === 0) {\n return;\n }\n scopeArray.forEach(($scope, scopeIndex) => {\n events.forEach((eventConfig) => {\n if (eventConfig.on) {\n if (eventConfig.targetElement) {\n Array.from(\n $scope.querySelectorAll(eventConfig.targetElement),\n ).forEach(($el, index) =>\n this.attachListener(\n $el,\n $scope,\n rootEventName,\n rootDefaultData,\n eventConfig,\n scope,\n areaName,\n /* eslint-disable-next-line no-magic-numbers */\n index + 1,\n /* eslint-disable-next-line no-magic-numbers */\n scopeIndex + 1,\n ),\n );\n } else {\n this.attachListener(\n $scope,\n $scope,\n rootEventName,\n rootDefaultData,\n eventConfig,\n scope,\n areaName,\n /* eslint-disable-next-line no-magic-numbers */\n 1,\n /* eslint-disable-next-line no-magic-numbers */\n scopeIndex + 1,\n );\n }\n }\n });\n });\n }\n\n /** @protected */\n generateEventName(areaName, eventConfig) {\n return `${this.prefix}.${areaName}.${eventConfig.eventName || eventConfig.on}`;\n }\n\n /** @protected */\n attachListener(\n $el,\n $scope,\n rootEventName,\n rootDefaultData,\n eventConfig,\n scope,\n areaName,\n index,\n instance,\n ) {\n const {\n on,\n data,\n targetElement,\n rootData = {},\n onCondition = null,\n } = eventConfig;\n $el.addEventListener(on, (event) => {\n const computedValueParameters = [$el, $scope, event, index, instance];\n if (\n onCondition === null ||\n this.computedValue(onCondition, ...computedValueParameters)\n ) {\n this.recordEvent(\n eventConfig.rootEventName\n ? `${this.prefix}.${eventConfig.rootEventName}`\n : rootEventName\n ? `${this.prefix}.${rootEventName}`\n : this.generateEventName(areaName, eventConfig),\n {\n ...data,\n name: this.generateEventName(areaName, eventConfig),\n value: data?.value\n ? this.computedValue(data.value, ...computedValueParameters)\n : null,\n state: data?.state\n ? this.computedValue(data.state, ...computedValueParameters)\n : null,\n group: data?.group\n ? this.computedValue(data.group, ...computedValueParameters)\n : null,\n xPath: getXPathTo($el),\n targetElement,\n timeSincePageLoad: new Date() - this.startTime,\n index,\n instance,\n scope,\n areaName,\n },\n Object.fromEntries(\n Object.entries({ ...rootDefaultData, ...rootData }).map(\n ([key, value]) => [\n key,\n this.computedValue(value, ...computedValueParameters),\n ],\n ),\n ),\n );\n }\n });\n }\n\n /** @protected */\n computedValue(valueOrFunction, $el, $scope, event, index, instance) {\n return typeof valueOrFunction === \"function\"\n ? valueOrFunction.call(this, $el, $scope, event, index, instance)\n : (valueOrFunction ?? null);\n }\n\n /** @protected */\n recordEvent(eventName, data, rootData = {}) {\n this.events.push({\n event: eventName,\n ...data,\n ...rootData,\n });\n }\n\n /** @protected */\n getTnaMetaTags() {\n return Object.fromEntries([\n ...Array.from(\n document.head.querySelectorAll(\n `meta[name^=\"${this.prefix}_root:\"][content]`,\n ),\n ).map(($metaEl) => [\n $metaEl\n .getAttribute(\"name\")\n .replace(new RegExp(`^${this.prefix}_root:`, \"u\"), \"\"),\n $metaEl.getAttribute(\"content\"),\n ]),\n ...Array.from(\n document.head.querySelectorAll(\n `meta[name^=\"${this.prefix}.\"][content]`,\n ),\n ).map(($metaEl) => [\n $metaEl.getAttribute(\"name\"),\n $metaEl.getAttribute(\"content\"),\n ]),\n ]);\n }\n\n /** @protected */\n getUserPreferences() {\n const userPreferences = {};\n userPreferences[`${this.prefix}.pref.prefers-color-scheme`] =\n window.matchMedia?.(\"(prefers-color-scheme: dark)\").matches\n ? \"dark\"\n : \"light\";\n userPreferences[`${this.prefix}.pref.forced-colors`] = window.matchMedia?.(\n \"(forced-colors: active)\",\n ).matches;\n let prefersContrast = \"no-preference\";\n if (window.matchMedia?.(\"(prefers-contrast: more)\").matches) {\n prefersContrast = \"more\";\n } else if (window.matchMedia?.(\"(prefers-contrast: less)\").matches) {\n prefersContrast = \"less\";\n }\n userPreferences[`${this.prefix}.pref.prefers-contrast`] = prefersContrast;\n userPreferences[`${this.prefix}.pref.prefers-reduced-motion`] =\n window.matchMedia?.(\"(prefers-reduced-motion: reduce)\").matches;\n userPreferences[`${this.prefix}.pref.prefers-reduced-transparency`] =\n window.matchMedia?.(\"(prefers-reduced-transparency: reduce)\").matches;\n return userPreferences;\n }\n}\n\n/**\n * Class to handle Google Analytics 4 reporting.\n * @class GA4\n * @extends EventTracker\n * @constructor\n * @public\n */\nclass GA4 extends EventTracker {\n /** @protected */\n addTrackingCode = true;\n\n /** @protected */\n trackingCodeAdded = false;\n\n /** @protected */\n trackingEnabled = false;\n\n /** @protected */\n gTagId;\n\n constructor(options = {}) {\n if (window.TNAFrontendAnalyticsGA4) {\n /* eslint-disable-next-line no-constructor-return */\n return window.TNAFrontendAnalyticsGA4;\n }\n const {\n id = \"\",\n prefix = null,\n initAll = true,\n addTrackingCode = true,\n } = options;\n super({ prefix });\n window.TNAFrontendAnalyticsGA4 = this;\n this.addTrackingCode = addTrackingCode;\n window.dataLayer ||= [];\n if (id) {\n this.gTagId = id;\n this.ga4Disable = `ga-disable-${this.gTagId}`;\n if (!this.cookies.isPolicyAccepted(\"usage\")) {\n window[this.ga4Disable] = true;\n this.cookies.set(this.ga4Disable, \"true\");\n }\n }\n this.start(initAll);\n }\n\n /** @protected */\n /* eslint-disable-next-line class-methods-use-this */\n destroy() {\n window.TNAFrontendAnalyticsGA4 = null;\n }\n\n /** @protected */\n recordEvent(eventName, data, rootData = {}) {\n const ga4Data = {\n event: eventName,\n ...Object.fromEntries(\n Object.entries(data).map(([key, value]) => [\n `${this.prefix}.event.${key}`,\n value,\n ]),\n ),\n ...rootData,\n };\n this.pushToDataLayer(ga4Data);\n }\n\n /** @protected */\n gtag(...args) {\n this.pushToDataLayer(args);\n }\n\n /** @protected */\n /* eslint-disable-next-line class-methods-use-this */\n pushToDataLayer(data) {\n window.dataLayer.push(data);\n }\n\n /** @protected */\n enableTracking() {\n if (!this.trackingEnabled) {\n window[this.ga4Disable] = false;\n this.cookies.set(this.ga4Disable, \"false\");\n if (!this.trackingCodeAdded && this.addTrackingCode) {\n if (!this.gTagId) {\n throw Error(\"ID was not specified\");\n }\n this.pushToDataLayer({\n ...this.getTnaMetaTags(),\n ...this.getUserPreferences(),\n \"gtm.start\": new Date().getTime(),\n event: \"gtm.js\",\n });\n const [firstScript] = document.getElementsByTagName(\"script\");\n const script = document.createElement(\"script\");\n script.async = true;\n script.src = `https://www.googletagmanager.com/gtm.js?id=${this.gTagId}&l=dataLayer`;\n if (firstScript) {\n firstScript.parentNode.insertBefore(script, firstScript);\n } else {\n document.head.appendChild(script);\n }\n this.trackingCodeAdded = true;\n }\n this.trackingEnabled = true;\n }\n }\n\n /** @protected */\n disableTracking() {\n if (this.trackingEnabled) {\n window[this.ga4Disable] = true;\n this.cookies.set(this.ga4Disable, \"true\");\n Object.keys(this.cookies.all).forEach((key) => {\n if (key.startsWith(\"_ga\")) {\n this.cookies.delete(key);\n }\n });\n this.trackingEnabled = false;\n }\n }\n}\n\nconst ga4Id = document.documentElement.dataset.ga4;\nif (ga4Id) {\n /* eslint-disable-next-line no-new */\n new GA4({ id: ga4Id });\n}\n\nconst helpers = {\n getXPathTo,\n getClosestHeading,\n getClosestElement,\n valueGetters,\n};\n\nexport { EventTracker, GA4, helpers };\n","export default [\n {\n scope: \".tna-hero\",\n areaName: \"hero\",\n events: [\n {\n eventName: \"toggle_caption\",\n targetElement: \".tna-hero__details-summary\",\n on: \"click\",\n data: {\n // eslint-disable-next-line no-unused-vars\n state: ($el, $scope, event) => {\n const wasExpanded =\n $scope\n .querySelector(\".tna-hero__details\")\n ?.hasAttribute(\"open\") ?? false;\n return wasExpanded ? \"closed\" : \"opened\";\n },\n // eslint-disable-next-line no-unused-vars\n value: ($el, $scope, event) =>\n $scope.querySelector(\"img[alt]\")?.getAttribute(\"alt\"),\n },\n },\n ],\n },\n];\n"],"names":["root","factory","exports","module","define","amd","self","window","TNAFrontendCookieEvents","CookieEventHandler","events","oneTimeEvents","debug","constructor","this","log","args","console","on","event","callback","Object","hasOwn","once","trigger","data","forEach","eventToTrigger","call","eventIndex","length","splice","TNAFrontendCookies","tnaCookiePolicies","Cookies","defaultDomain","defaultPath","secure","policiesKey","defaultAge","policiesCorrectOnInit","document","documentElement","dataset","tnaFrontendDebug","options","newInstance","noInit","tnaCookiesDomain","location","hostname","tnaCookiesPath","tnaCookiesInsecure","tnaCookiesPoliciesKey","secondsInAYear","parseInt","tnaCookiesDefaultAge","keys","policies","every","policy","includes","init","existingPolicies","filteredExistingPolicies","fromEntries","filter","map","savePolicies","usage","settings","marketing","essential","all","destroyInstance","deserialised","cookie","split","trim","parts","key","value","decodeURIComponent","JSON","parse","get","error","exists","hasValue","set","maxAge","sameSite","domain","path","session","secureString","sessionString","encodeURIComponent","deleteAll","delete","acceptPolicy","setPolicy","rejectPolicy","accepted","acceptAllPolicies","allPolicies","toLowerCase","rejectAllPolicies","stringify","isPolicyAccepted","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","__webpack_modules__","d","definition","o","defineProperty","enumerable","obj","prop","prototype","hasOwnProperty","r","Symbol","toStringTag","getXPathTo","$element","id","body","tagName","ix","parentNode","siblings","childNodes","index","sibling","nodeType","getClosestElement","$startingElement","matchingElementSelectors","heading","$search","previousElementSibling","some","matchingElementSelector","matches","innerText","parentElement","getClosestHeading","valueGetters","text","$el","replace","html","innerHTML","$scope","instance","checked","expanded","getAttribute","toString","closestHeading","xpath","target","analytics","scope","areaName","rootEventName","rootData","data_component_name","eventName","targetElement","state","data_link_type","data_link","data_position","breadcrumbs_analytics","checkboxes_analytics","group","closest","querySelector","details_analytics","hasAttribute","error_summary_analytics","getFileDetails","Array","from","files","file","name","size","type","file_input_analytics","footer_analytics","data_section","gallery_analytics","media_type","media_duration","querySelectorAll","media_provider","media_title","media_progress","findIndex","$itemButton","media_action","onCondition","global_header_analytics","header_analytics","picture_analytics","image","imageSrc","radios_analytics","search_field_analytics","sidebar_analytics","text_input_analytics","textarea_analytics","componentAnalytics","EventTracker","cookies","A","startTime","Date","prefix","documentScope","start","initAll","navigator","doNotTrack","enableTracking","disableTracking","componentConfig","addListeners","rootDefaultData","scopeArray","scopeIndex","eventConfig","attachListener","generateEventName","addEventListener","computedValueParameters","computedValue","recordEvent","xPath","timeSincePageLoad","entries","valueOrFunction","push","getTnaMetaTags","head","$metaEl","RegExp","getUserPreferences","userPreferences","matchMedia","prefersContrast","GA4","addTrackingCode","trackingCodeAdded","trackingEnabled","gTagId","TNAFrontendAnalyticsGA4","super","dataLayer","ga4Disable","destroy","ga4Data","pushToDataLayer","gtag","Error","getTime","firstScript","getElementsByTagName","script","createElement","async","src","insertBefore","appendChild","startsWith","ga4Id","ga4","helpers"],"sourceRoot":""}