@nationalarchives/frontend 1.1.0 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/nationalarchives/all+analytics.js +1 -1
- package/nationalarchives/all+analytics.js.map +1 -1
- package/nationalarchives/all+analytics.mjs +0 -2
- package/nationalarchives/all.css +1 -1
- package/nationalarchives/all.css.map +1 -1
- package/nationalarchives/all.js +1 -1
- package/nationalarchives/all.js.map +1 -1
- package/nationalarchives/all.mjs +0 -2
- package/nationalarchives/analytics.js +1 -1
- package/nationalarchives/analytics.js.map +1 -1
- package/nationalarchives/analytics.mjs +4 -3
- package/nationalarchives/assets/fonts/fa-brands-400.woff2 +0 -0
- package/nationalarchives/assets/fonts/fa-solid-900.woff2 +0 -0
- package/nationalarchives/components/accordion/accordion.js +1 -1
- package/nationalarchives/components/accordion/accordion.js.map +1 -1
- package/nationalarchives/components/breadcrumbs/breadcrumbs.js +1 -1
- package/nationalarchives/components/breadcrumbs/breadcrumbs.js.map +1 -1
- package/nationalarchives/components/code-block/code-block.js +1 -1
- package/nationalarchives/components/code-block/code-block.js.map +1 -1
- package/nationalarchives/components/cookie-banner/cookie-banner.js +1 -1
- package/nationalarchives/components/cookie-banner/cookie-banner.js.map +1 -1
- package/nationalarchives/components/cookie-banner/cookie-banner.mjs +5 -5
- package/nationalarchives/components/date-input/date-input.js +1 -1
- package/nationalarchives/components/date-input/date-input.js.map +1 -1
- package/nationalarchives/components/date-input/date-input.mjs +0 -4
- package/nationalarchives/components/error-summary/error-summary.js +1 -1
- package/nationalarchives/components/error-summary/error-summary.js.map +1 -1
- package/nationalarchives/components/file-input/file-input.js +1 -1
- package/nationalarchives/components/file-input/file-input.js.map +1 -1
- package/nationalarchives/components/file-input/file-input.mjs +3 -13
- package/nationalarchives/components/files-list/macro-options.json +1 -1
- package/nationalarchives/components/footer/fixtures.json +2 -2
- package/nationalarchives/components/footer/footer.css +1 -1
- package/nationalarchives/components/footer/footer.css.map +1 -1
- package/nationalarchives/components/footer/footer.js +1 -1
- package/nationalarchives/components/footer/footer.js.map +1 -1
- package/nationalarchives/components/footer/footer.mjs +5 -5
- package/nationalarchives/components/footer/template.njk +1 -1
- package/nationalarchives/components/gallery/gallery.js +1 -1
- package/nationalarchives/components/gallery/gallery.js.map +1 -1
- package/nationalarchives/components/global-header/global-header.css +1 -1
- package/nationalarchives/components/global-header/global-header.css.map +1 -1
- package/nationalarchives/components/global-header/global-header.js +1 -1
- package/nationalarchives/components/global-header/global-header.js.map +1 -1
- package/nationalarchives/components/header/header.css +1 -1
- package/nationalarchives/components/header/header.css.map +1 -1
- package/nationalarchives/components/header/header.js +1 -1
- package/nationalarchives/components/header/header.js.map +1 -1
- package/nationalarchives/components/hero/hero.css +1 -1
- package/nationalarchives/components/hero/hero.css.map +1 -1
- package/nationalarchives/components/hero/hero.scss +1 -1
- package/nationalarchives/components/picture/picture.js +1 -1
- package/nationalarchives/components/picture/picture.js.map +1 -1
- package/nationalarchives/components/sidebar/fixtures.json +14 -6
- package/nationalarchives/components/sidebar/macro-options.json +56 -0
- package/nationalarchives/components/sidebar/sidebar.js +1 -1
- package/nationalarchives/components/sidebar/sidebar.js.map +1 -1
- package/nationalarchives/components/sidebar/template.njk +3 -3
- package/nationalarchives/components/skip-link/skip-link.js +1 -1
- package/nationalarchives/components/skip-link/skip-link.js.map +1 -1
- package/nationalarchives/components/tabs/tabs.js +1 -1
- package/nationalarchives/components/tabs/tabs.js.map +1 -1
- package/nationalarchives/components/text-input/text-input.js +1 -1
- package/nationalarchives/components/text-input/text-input.js.map +1 -1
- package/nationalarchives/components/textarea/textarea.js +1 -1
- package/nationalarchives/components/textarea/textarea.js.map +1 -1
- package/nationalarchives/error-page.css +1 -1
- package/nationalarchives/error-page.css.map +1 -1
- package/nationalarchives/font-awesome.css +5 -5
- package/nationalarchives/font-awesome.css.map +1 -1
- package/nationalarchives/ie.css +1 -1
- package/nationalarchives/ie.css.map +1 -1
- package/nationalarchives/print.css +1 -1
- package/nationalarchives/print.css.map +1 -1
- package/nationalarchives/print.scss +17 -1
- package/nationalarchives/prototype-kit.css +1 -1
- package/nationalarchives/prototype-kit.css.map +1 -1
- package/nationalarchives/utilities/overrides/_index.scss +0 -6
- package/package.json +17 -19
- package/nationalarchives/lib/cookie-events.mjs +0 -70
- package/nationalarchives/lib/cookies.mjs +0 -398
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"all.js","mappings":"CAAA,SAAAA,EAAAC,GACA,iBAAAC,SAAA,iBAAAC,OACAA,OAAAD,QAAAD,IACA,mBAAAG,QAAAA,OAAAC,IACAD,OAAA,GAAAH,GACA,iBAAAC,QACAA,QAAA,YAAAD,IAEAD,EAAA,YAAAC,GACC,CATD,CASCK,KAAA,+ECPM,MAAMC,EACX,WAAAC,CAAYC,GACVC,KAAKD,QAAUA,EACfC,KAAKC,OAASF,GAAWA,EAAQG,iBAAiB,wBAC7CF,KAAKD,SAAYC,KAAKC,SAI3BD,KAAKG,uBACqC,SAAxCH,KAAKD,QAAQK,QAAQC,eAEvBL,KAAKC,OAAOK,QAASC,GAAUP,KAAKQ,SAASD,IAC7CP,KAAKS,YAELT,KAAKU,iBAAmBV,KAAKD,QAAQY,cACnC,8BAEEX,KAAKU,mBACPV,KAAKY,sBACLZ,KAAKU,iBAAiBG,gBAAgB,UACtCb,KAAKU,iBAAiBI,iBAAiB,QAAS,KAC1Cd,KAAKe,YACPf,KAAKC,OAAOK,QAASC,GAAUP,KAAKgB,UAAUT,IAE9CP,KAAKC,OAAOK,QAASC,GAAUP,KAAKiB,SAASV,IAE/CP,KAAKY,yBAGX,CAEA,QAAAJ,CAASD,GACP,MAAMW,EAAWX,EAAMI,cAAc,2BAC/BQ,EAAWZ,EAAMI,cAAc,wBAErC,IAAKO,IAAaC,EAChB,OAGFZ,EAAMa,UAAUC,IAAI,0BACpBd,EAAMa,UAAUE,OAAO,uBAEvBJ,EAASL,gBAAgB,SAEzBM,EAASC,UAAUC,IAAI,0BACvBF,EAASC,UAAUE,OAAO,uBAC1BH,EAASI,aAAa,SAAU,IAEhC,MAAMC,EAAiBC,SAASC,cAAc,UAC9CF,EAAeJ,UAAUC,IAAI,0BAC7BG,EAAeD,aAAa,OAAQ,UACpCC,EAAeD,aAAa,gBAAiBJ,EAASQ,IACtDH,EAAeI,UAAYV,EAASU,UACpCV,EAASU,UAAY,GACrBV,EAASW,YAAYL,GAErBA,EAAeV,iBAAiB,QAAS,KACyB,SAAjDU,EAAeM,aAAa,iBAEzC9B,KAAKgB,UAAUT,GAEfP,KAAKiB,SAASV,IAGpB,CAEA,SAAAE,GACET,KAAKC,OAAOK,QAASC,IACU,SAAzBA,EAAMH,QAAQ2B,OAChB/B,KAAKiB,SAASV,GAEdP,KAAKgB,UAAUT,GAEjBA,EAAMM,gBAAgB,gBAE1B,CAEA,QAAAI,CAASV,GACFP,KAAKG,wBACRH,KAAKgC,oBAAoBzB,GAE3B,MAAMiB,EAAiBjB,EAAMI,cAAc,2BACrCQ,EAAWZ,EAAMI,cAAc,2BACrCa,EAAeD,aAAa,gBAAiB,QAC7CC,EAAeD,aACb,aACA,GAAGC,EAAeI,UAAUK,6BAE9Bd,EAASN,gBAAgB,UAEzBb,KAAKY,sBAEL,MAAMsB,EAAgBf,EAASjB,iBAAiB,sBAC5CgC,GACFA,EAAc5B,QAAS6B,KACrB,EAAAC,EAAAC,IAAoBF,IAG1B,CAEA,SAAAnB,CAAUT,GACR,MAAMiB,EAAiBjB,EAAMI,cAAc,2BACrCQ,EAAWZ,EAAMI,cAAc,2BACrCa,EAAeD,aAAa,gBAAiB,SAC7CC,EAAeD,aACb,aACA,GAAGC,EAAeI,UAAUK,6BAE9Bd,EAASI,aAAa,SAAU,IAEhCvB,KAAKY,qBACP,CAEA,mBAAAoB,CAAoBM,GAClBC,MAAMC,KAAKxC,KAAKC,QACbwC,OACElC,GACCA,EAAMI,cAAc,6BAA+B2B,GAGd,SAFrC/B,EACGI,cAAc,2BACdmB,aAAa,kBAEnBxB,QAASC,GAAUP,KAAKgB,UAAUT,GACvC,CAEA,SAAAQ,GACE,OAAOwB,MAAMC,KAAKxC,KAAKC,QAAQyC,MAC5BnC,GAGsC,SAFrCA,EACGI,cAAc,2BACdmB,aAAa,iBAEtB,CAEA,mBAAAlB,GACMZ,KAAKU,mBACHV,KAAKe,YACPf,KAAKU,iBAAiBkB,UACpB5B,KAAKU,iBAAiBN,QAAQuC,eAAiB,oBAEjD3C,KAAKU,iBAAiBkB,UACpB5B,KAAKU,iBAAiBN,QAAQwC,cAAgB,oBAGtD,uDChJK,MAAMC,EACX,WAAA/C,CAAYC,GACVC,KAAKD,QAAUA,EACfC,KAAK8C,iBACH/C,GAAWA,EAAQY,cAAc,0BACnCX,KAAK+C,aACHhD,GACAC,KAAK8C,kBACL/C,EAAQG,iBAAiB,0BAEtBF,KAAKD,SAAYC,KAAK8C,kBAAqB9C,KAAK+C,cAMnD/C,KAAK+C,aAAaC,OAAS,IAC1BhD,KAAKD,QAAQqB,UAAU6B,SAAS,iCAEjCjD,KAAKkD,MAET,CAEA,IAAAA,GACE,MAAMC,EAAW,oBAAmB,EAAAC,EAAAC,OAC9BC,EAAc7B,SAASC,cAAc,MAC3C4B,EAAYlC,UAAUC,IACpB,wBACA,qCAEFiC,EAAYC,MAAMC,QAAU,OAE5B,MAAMC,EAAgBhC,SAASC,cAAc,UAC7C+B,EAAcrC,UAAUC,IAAI,yBAC5BoC,EAAcC,UACZ,yEACFD,EAAclC,aAAa,OAAQ,UACnCkC,EAAclC,aAAa,gBAAiB,SAC5CkC,EAAclC,aAAa,gBAAiB4B,GAC5CM,EAAc3C,iBAAiB,QAAS,KACtCd,KAAKD,QAAQqB,UAAUE,OAAO,8BAC9BgC,EAAYhC,SACZtB,KAAKD,QAAQwB,aAAa,WAAY,KACtCvB,KAAKD,QAAQ4D,QACb3D,KAAKD,QAAQe,iBACX,OACA,KACEd,KAAKD,QAAQc,gBAAgB,aAE/B,CAAE+C,MAAM,MAGZN,EAAYzB,YAAY4B,GAExBzD,KAAK8C,iBAAiBvB,aAAa,KAAM4B,GACzCnD,KAAK8C,iBAAiBe,aACpBP,EAEAtD,KAAK+C,aAAa/C,KAAK+C,aAAaC,OAAS,GAAGc,aAGlD9D,KAAKD,QAAQqB,UAAUC,IAAI,6BAC7B,wCChEK,MAAM0C,EACX,WAAAjE,CAAYC,GACVC,KAAKD,QAAUA,EACfC,KAAKgE,MAAQhE,KAAKD,QAAQY,cAAc,YACxCX,KAAKiE,YAAcjE,KAAKD,QAAQY,cAAc,yBAG3CX,KAAKD,SACLC,KAAKgE,OACLhE,KAAKiE,aACLC,UAAUC,YAKbnE,KAAKiE,YAAYpD,gBAAgB,UACjCb,KAAKD,QAAQqB,UAAUC,IAAI,4BAE3BrB,KAAKiE,YAAYnD,iBAAiB,QAASsD,UACzC,UACQF,UAAUC,UAAUE,UAAUrE,KAAKgE,MAAMpC,WAC/C5B,KAAKiE,YAAYrC,UAAY,aAC/B,CAAE,MACA,IAIJ5B,KAAKiE,YAAYnD,iBAAiB,OAAQ,KACxCd,KAAKiE,YAAYrC,UAAY,cAEjC,uDC1BK,MAAM0C,EACX,WAAAxE,CAAYC,GACVC,KAAKD,QAAUA,EACfC,KAAKuE,cAAgBxE,GAAWA,EAAQY,cAAc,oBACtDX,KAAKwE,cAAgBzE,GAAWA,EAAQY,cAAc,oBACtDX,KAAKyE,QACH1E,GAAWA,EAAQY,cAAc,uCACnCX,KAAK0E,iBACH3E,GAAWA,EAAQY,cAAc,yCACnCX,KAAK2E,iBACH5E,GAAWA,EAAQY,cAAc,yCACnCX,KAAK4E,cAAgB7E,GAAWA,EAAQG,iBAAiB,mBAGtDF,KAAKD,SACLC,KAAKuE,eACLvE,KAAKwE,eACLxE,KAAKyE,SACLzE,KAAK0E,kBACL1E,KAAK2E,kBACL3E,KAAK4E,gBAKR5E,KAAK6E,QAAU,IAAIC,EAAAzB,EAAQ,CAAE0B,aAAa,IAE1C/E,KAAKgF,wBACHhF,KAAKD,QAAQK,QAAQ6E,gBAAkB,yBAEpCjF,KAAK6E,QAAQK,uBAChBlF,KAAK6E,QAAQM,OAAOnF,KAAKgF,yBAIxBhF,KAAK6E,QAAQO,OAAOpF,KAAKgF,0BACzBhF,KAAK6E,QAAQQ,SAASrF,KAAKgF,wBAAyB,UAErDhF,KAAKD,QAAQc,gBAAgB,UAE7Bb,KAAKuE,cAAczD,iBAAiB,QAAS,IAAMd,KAAKsF,UACxDtF,KAAKwE,cAAc1D,iBAAiB,QAAS,IAAMd,KAAKuF,WAE5D,CAEA,MAAAD,GACEtF,KAAKyE,QAAQlD,aAAa,SAAU,IACpCvB,KAAKwF,WACLxF,KAAK6E,QAAQY,oBACbzF,KAAK0E,iBAAiB7D,gBAAgB,UACtCb,KAAK0E,iBAAiBnD,aAAa,WAAY,KAC/CvB,KAAK0E,iBAAiBf,QACtB3D,KAAK0E,iBAAiB5D,iBAAiB,OAAQ,KAC7Cd,KAAK0E,iBAAiB7D,gBAAgB,aAE1C,CAEA,MAAA0E,GACEvF,KAAKyE,QAAQlD,aAAa,SAAU,IACpCvB,KAAKwF,WACLxF,KAAK6E,QAAQa,oBACb1F,KAAK2E,iBAAiB9D,gBAAgB,UACtCb,KAAK2E,iBAAiBpD,aAAa,WAAY,KAC/CvB,KAAK2E,iBAAiBhB,QACtB3D,KAAK2E,iBAAiB7D,iBAAiB,OAAQ,KAC7Cd,KAAK2E,iBAAiB9D,gBAAgB,aAE1C,CAEA,QAAA2E,GACExF,KAAK6E,QAAQc,IAAI3F,KAAKgF,yBAAyB,GAC/ChF,KAAK4E,cAActE,QAASsF,IAC1BA,EAAa9E,iBAAiB,QAAS,IAAMd,KAAK6F,UAEtD,CAEA,KAAAA,GACE7F,KAAKD,QAAQwB,aAAa,SAAU,GACtC,0DC9EK,MAAMuE,EACX,WAAAhG,CAAYC,GACVC,KAAKD,QAAUA,EACfC,KAAK+F,aACHhG,GAAWA,EAAQY,cAAc,+BACnCX,KAAKgG,WACHhG,KAAK+F,cAAgB/F,KAAK+F,aAAapF,cAAc,SACvDX,KAAKiG,cACHlG,GAAWA,EAAQY,cAAc,gCACnCX,KAAKkG,YACHlG,KAAKiG,eAAiBjG,KAAKiG,cAActF,cAAc,SACzDX,KAAKmG,YACHpG,GAAWA,EAAQY,cAAc,8BACnCX,KAAKoG,UACHpG,KAAKmG,aAAenG,KAAKmG,YAAYxF,cAAc,SAEhDX,KAAKD,UAIVC,KAAKqG,SACLC,OAAOxF,iBAAiB,WAAY,IAAMd,KAAKqG,UAE3CrG,KAAKgG,aACPhG,KAAKgG,WAAWlF,iBAAiB,QAAS,IAAMd,KAAKqG,UACrDrG,KAAKgG,WAAWlF,iBAAiB,SAAU,IAAMd,KAAKqG,WAEpDrG,KAAKkG,cACPlG,KAAKkG,YAAYpF,iBAAiB,QAAS,IAAMd,KAAKqG,UACtDrG,KAAKkG,YAAYpF,iBAAiB,SAAU,IAAMd,KAAKqG,WAErDrG,KAAKoG,YACPpG,KAAKoG,UAAUtF,iBAAiB,QAAS,IAAMd,KAAKqG,UACpDrG,KAAKoG,UAAUtF,iBAAiB,SAAU,IAAMd,KAAKqG,WAEzD,CAEA,MAAAA,GACMrG,KAAKuG,eACPvG,KAAKwG,YACDxG,KAAKyG,eACPzG,KAAK0G,UAEL1G,KAAK2G,YAGP3G,KAAK4G,YACL5G,KAAK2G,UAET,CAEA,WAAAJ,GACE,IAAKvG,KAAKgG,WACR,OAAO,EAET,MAAMa,EAAYC,SAAS9G,KAAKgG,WAAWe,MAAM9E,OAAQ,IAEzD,OAAQ+E,MAAMhH,KAAKgG,WAAWe,SAAWC,MAAMH,IAAcA,EAAY,CAC3E,CAEA,YAAAJ,GACE,IAAKzG,KAAKkG,YACR,OAAO,EAET,MAAMe,EAAgBjH,KAAKkG,YAAYa,MAAM9E,OACvCiF,EAAgBJ,SAASG,EAAe,IA0B9C,OACID,MAAMhH,KAAKkG,YAAYa,SACtBC,MAAME,IAEPA,EAAgB,GAEhBA,GAAiB,IA/BK,CACxB,UACA,WACA,QACA,QACA,MACA,OACA,OACA,SACA,YACA,UACA,WACA,WACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,OASkBC,SAASF,EAAcG,cAE7C,CAEA,SAAAZ,GACMxG,KAAKiG,eACPjG,KAAKiG,cAAcpF,gBAAgB,SAEvC,CAEA,SAAA+F,GACM5G,KAAKiG,eACPjG,KAAKiG,cAAc1E,aAAa,SAAU,GAE9C,CAEA,OAAAmF,GACM1G,KAAKmG,aACPnG,KAAKmG,YAAYtF,gBAAgB,SAErC,CAEA,OAAA8F,GACM3G,KAAKmG,aACPnG,KAAKmG,YAAY5E,aAAa,SAAU,GAE5C,2CChIK,MAAM8F,EACX,WAAAvH,CAAYC,GACVC,KAAKD,QAAUA,CACjB,CAEA,IAAAmD,GACOlD,KAAKD,UAKkC,SAA1CC,KAAKD,QAAQK,QAAQkH,kBAGrBtH,KAAKuH,SAASvH,KAAKD,SAGrBC,KAAKD,QAAQe,iBAAiB,QAAU0G,GAAUxH,KAAKyH,YAAYD,IACrE,CAGA,QAAAD,CAASG,EAAUC,EAAU,CAAC,GAC5B,MAAMC,EAAcF,EAAS5F,aAAa,YAS1C,SAAS+F,IACPF,EAAQE,QAAQC,KAAKJ,GAEhBE,GACHF,EAAS7G,gBAAgB,WAE7B,CAbK+G,GACHF,EAASnG,aAAa,WAAY,MAsBpCmG,EAAS5G,iBAAiB,QAL1B,WACE4G,EAAS5G,iBAAiB,OAAQ+G,EAAQ,CAAEjE,MAAM,GACpD,EAG4C,CAAEA,MAAM,IAGpD+D,EAAQI,eAAeD,KAAKJ,GAC5BA,EAAS/D,OACX,CAEA,WAAA8D,CAAYD,GACV,MAAMQ,EAAUR,EAAMS,OAClBD,GAAWhI,KAAKkI,YAAYF,IAC9BR,EAAMW,gBAEV,CAGA,kBAAAC,CAAmBC,GACjB,OAAKA,EAAIlB,SAAS,KAIXkB,EAAIC,MAAM,KAAKC,MAHb,IAIX,CAEA,WAAAL,CAAYF,GAEV,KAAMA,aAAmBQ,mBACvB,OAAO,EAGT,MAAMC,EAAUzI,KAAKoI,mBAAmBJ,EAAQU,MAChD,IAAKD,EACH,OAAO,EAGT,MAAME,EAASlH,SAASmH,eAAeH,GACvC,IAAKE,EACH,OAAO,EAGT,MAAME,EAAiB7I,KAAK8I,2BAA2BH,GACvD,QAAKE,IAOLA,EAAeE,iBACfJ,EAAOhF,MAAM,CAAEqF,eAAe,KAEvB,EACT,CAmBA,0BAAAF,CAA2BH,GACzB,MAAMM,EAAYN,EAAOO,QAAQ,YAEjC,GAAID,EAAW,CACb,MAAME,EAAWF,EAAUG,qBAAqB,UAEhD,GAAID,EAASnG,OAAQ,CACnB,MAAOqG,GAAoBF,EAI3B,GACER,aAAkBW,mBACD,aAAhBX,EAAOY,MAAuC,UAAhBZ,EAAOY,MAEtC,OAAOF,EAST,MAAMG,EAAYH,EAAiBI,wBAAwBC,IACrDC,EAAYhB,EAAOc,wBAIzB,GAAIE,EAAUC,QAAUtD,OAAOuD,aACTF,EAAUD,IAAMC,EAAUC,OAG5BJ,EAAYlD,OAAOuD,YAAc,EACjD,OAAOR,CAGb,CACF,CAEA,OACE5H,SAASd,cAAc,cAAcgI,EAAO7G,aAAa,YACzD6G,EAAOO,QAAQ,QAEnB,gDCjKK,MAAMY,EACX,WAAAhK,CAAYC,GACVC,KAAKD,QAAUA,EACfC,KAAK+J,MAAQhK,GAAWA,EAAQY,cAAc,wBAC9CX,KAAK2I,OAAS3I,KAAK+J,OAAS/J,KAAK+J,MAAMpJ,cAAc,mBAEhDX,KAAKD,SAAYC,KAAK+J,OAAU/J,KAAK2I,QAI1C3I,KAAKkD,MACP,CAEA,IAAAA,GACElD,KAAKgK,qBAAuBhK,KAAK2I,OAAOsB,aAAa,YAErDjK,KAAKkK,eAAiBzI,SAASC,cAAc,OAC7C1B,KAAKkK,eAAe9I,UAAUC,IAC5B,4BACA,oCAEFrB,KAAK+J,MAAMlG,aAAa7D,KAAKkK,eAAgBlK,KAAK2I,QAClD3I,KAAKkK,eAAerI,YAAY7B,KAAK2I,QAErC3I,KAAKmK,sBAAwB1I,SAASC,cAAc,QACpD1B,KAAKmK,sBAAsB5I,aAAa,YAAa,UACrDvB,KAAKmK,sBAAsB/I,UAAUC,IACnC,oCAGF,IAAI+I,EAAW,OACXpK,KAAKgK,uBACPI,GAAY,KAGdpK,KAAKmK,sBAAsBE,YAAc,MAAMD,aAC/CpK,KAAKkK,eAAerI,YAAY7B,KAAKmK,uBAErC,MAAMG,EAAoB7I,SAASC,cAAc,OACjD4I,EAAkBlJ,UAAUC,IAC1B,mBACA,0BACA,sBACA,qCAEFrB,KAAKkK,eAAerI,YAAYyI,GAEhC,MAAMC,EAA0B9I,SAASC,cAAc,QACvD6I,EAAwBnJ,UAAUC,IAAI,cACtCkJ,EAAwBF,YAAc,UAAUD,IAChDE,EAAkBzI,YAAY0I,GAE9B,MAAMC,EAAwB/I,SAASC,cAAc,QACrD8I,EAAsBH,YAAc,WAAWD,IAC/CE,EAAkBzI,YAAY2I,GAE9BxK,KAAKyK,wBAA0BhJ,SAASC,cAAc,QACtD1B,KAAKyK,wBAAwBrJ,UAAUC,IAAI,uBAC3CrB,KAAKyK,wBAAwBlJ,aAAa,YAAa,aACvDvB,KAAKkK,eAAerI,YAAY7B,KAAKyK,yBAErCzK,KAAK2I,OAAO7H,iBAAiB,YAAc0G,GACzCxH,KAAK0K,eAAelD,IAEtBxH,KAAK2I,OAAO7H,iBAAiB,YAAa,IAAMd,KAAK2K,kBACrD3K,KAAK2I,OAAO7H,iBAAiB,UAAW,IAAMd,KAAK2K,kBACnD3K,KAAK2I,OAAO7H,iBAAiB,SAAU,IAAMd,KAAK4K,YAClD5K,KAAK2I,OAAO7H,iBAAiB,OAAQ,IAAMd,KAAK4K,WAClD,CAGA,iBAAAC,CAAkBC,GAChB,MAAMC,GAAkBD,EAAaE,MAAMhI,OACrCiI,EAAkBH,EAAaE,MAAME,KAAM3B,GAAkB,UAATA,GAC1D,OAAOwB,GAAkBE,CAC3B,CAEA,cAAAP,CAAelD,EAAO2D,GAAkB,GACtC,GAAI3D,EAAMsD,cAAgB9K,KAAK6K,kBAAkBrD,EAAMsD,cAAe,CACpE,IAAIM,EAAa,kCACb5D,EAAMsD,aAAaO,MAAMrI,SAC3BoI,EAAa,4CAEfpL,KAAKkK,eAAe9I,UAAUC,IAAI+J,GAE9BD,IACFnL,KAAKyK,wBAAwBJ,YAAc,oBAE/C,CACF,CAEA,cAAAM,CAAeQ,GAAkB,GAC/BnL,KAAKkK,eAAe9I,UAAUE,OAC5B,kCACA,4CAEE6J,IACFnL,KAAKyK,wBAAwBJ,YAAc,iBAE/C,CAEA,QAAAO,GACE,MAAMU,MAAEA,GAAUtL,KAAK2I,OACvB,GAAI3I,KAAKgK,qBACP,GAAIsB,EAAMtI,OAAQ,CAChB,IAAIoH,EAAW,OAEXkB,EAAMtI,OAAS,IACjBoH,GAAY,KAEd,MAAMC,EAAc,GAAGiB,EAAMtI,UAAUoH,aACvCpK,KAAKmK,sBAAsBE,YAAcA,CAC3C,MACErK,KAAKmK,sBAAsBE,YAAc,yBAG3CrK,KAAKmK,sBAAsBE,YAEzBiB,EAAM,IAAIC,MAAQ,mBAElBD,EAAMtI,OACRhD,KAAKkK,eAAe9I,UAAUE,OAAO,oCAErCtB,KAAKkK,eAAe9I,UAAUC,IAAI,oCAEpCrB,KAAK2K,gBAAe,EACtB,kDC5HK,MAAMa,EACX,WAAA1L,CAAYC,EAAS0L,EAAkB,SACrCzL,KAAKD,QAAUA,EACfC,KAAK0L,eACH3L,GAAWA,EAAQY,cAAc,+BACnCX,KAAK2L,qBACH5L,GAAWA,EAAQY,cAAc,sCACnCX,KAAK4L,0CACH5L,KAAK2L,sBACL3L,KAAK2L,qBAAqBhL,cACxB,uDAEJX,KAAK6L,aAAepK,SAASd,cAAc,iBAGxCX,KAAKD,SACLC,KAAK0L,gBACL1L,KAAK2L,sBACL3L,KAAK4L,2CACL5L,KAAK6L,eAKR7L,KAAKyL,gBAAkBA,EAEvBzL,KAAKkD,OACP,CAEA,IAAAA,GACElD,KAAK8L,aAAe9L,KAAK0L,eAAetL,QAAQ2L,YAEhD/L,KAAK6E,QAAU,IAAIC,EAAAzB,EAEnBrD,KAAKgM,sBAAwBhM,KAAK0L,eAAexL,iBAC/C,mDAGFqC,MAAMC,KAAKxC,KAAKgM,uBAAuB1L,QAAS2L,IAC9CA,EAAqBnL,iBAAiB,QAAU0G,IAC9C,MAAM0E,EAAU1E,EAAMS,OACtBjI,KAAKmM,SAASD,EAAQnF,OACtB/G,KAAKoM,0BAA0BF,OAInClM,KAAK4L,0CAA0C9K,iBAC7C,QACA,KACEd,KAAK6E,QAAQwH,aAAa,cAI9BrM,KAAKsM,oBACLtM,KAAK6E,QAAQ0H,GAAG,eAAiBC,IAC3BC,OAAOC,OAAOF,EAAM,eACA,IAAlBA,EAAKG,UACP3M,KAAK6E,QAAQc,IAAI3F,KAAKyL,gBAAiBzL,KAAK8L,cAC5C9L,KAAK2L,qBAAqBpK,aAAa,SAAU,MAEjDvB,KAAK6E,QAAQM,OAAOnF,KAAKyL,iBACzBzL,KAAK2L,qBAAqB9K,gBAAgB,aAIlD,CAEA,iBAAAyL,GAEE,GADAtM,KAAK0L,eAAe7K,gBAAgB,UAChCb,KAAK6E,QAAQO,OAAOpF,KAAKyL,iBAAkB,CAC7C,MAAMmB,EAAsBrK,MAAMC,KAAKxC,KAAKgM,uBAAuBa,KAChEX,GAAYA,EAAQnF,QAAU/G,KAAK6E,QAAQiI,IAAI9M,KAAKyL,kBAEnDmB,GACF5M,KAAKoM,0BAA0BQ,EAEnC,CACK5M,KAAK6E,QAAQkI,iBAAiB,aACjC/M,KAAK2L,qBAAqB9K,gBAAgB,SAE9C,CAEA,QAAAsL,CAASa,GACP,GAAc,UAAVA,EACFhN,KAAK6L,aAAazK,UAAUE,OAC1B,6BACA,iCAEG,GAAc,SAAV0L,EACThN,KAAK6L,aAAazK,UAAUE,OAAO,8BACnCtB,KAAK6L,aAAazK,UAAUC,IAAI,gCAC3B,IAAc,WAAV2L,EAIT,OAHAhN,KAAK6L,aAAazK,UAAUE,OAAO,4BACnCtB,KAAK6L,aAAazK,UAAUC,IAAI,6BAGlC,CACArB,KAAK8L,aAAekB,EAChBhN,KAAK6E,QAAQkI,iBAAiB,YAChC/M,KAAK6E,QAAQc,IAAI3F,KAAKyL,gBAAiBzL,KAAK8L,cAE5C9L,KAAK2L,qBAAqB9K,gBAAgB,SAE9C,CAEA,yBAAAuL,CAA0Ba,GACxB1K,MAAMC,KAAKxC,KAAKgM,uBAAuB1L,QAAS4L,IAC1CA,EAAQnF,QAAUkG,EAAgBlG,OACpCmF,EAAQ9K,UAAUE,OAAO,qBACzB4K,EAAQ3K,aAAa,gBAAgB,KAErC2K,EAAQ9K,UAAUC,IAAI,qBACtB6K,EAAQrL,gBAAgB,kBAG9B,sCCrHK,MAAMqM,EACX,WAAApN,CAAYC,GACVC,KAAKD,QAAUA,EACfC,KAAKmN,gBACHpN,GAAWA,EAAQY,cAAc,uBACnCX,KAAKC,OACHD,KAAKmN,iBACLnN,KAAKmN,gBAAgBjN,iBAAiB,sBACxCF,KAAKoN,YACHrN,GAAWA,EAAQY,cAAc,4BACnCX,KAAKqN,iBACHrN,KAAKoN,aACLrN,EAAQG,iBAAiB,iCAC3BF,KAAKsN,mBACHvN,GAAWA,EAAQY,cAAc,oCAGhCX,KAAKD,SACLC,KAAKmN,iBACLnN,KAAKC,UAEND,KAAKC,OAAO+C,OAAS,IACpBhD,KAAKoN,aACLpN,KAAKqN,kBACLrN,KAAKsN,qBAKRtN,KAAKD,QAAQqB,UAAUC,IAAI,4BAE3BrB,KAAKuN,sBAAwBvN,KAAKsN,mBAAmB3M,cACnD,iCAEFX,KAAKwN,sBAAwBxN,KAAKsN,mBAAmB3M,cACnD,iCAGFX,KAAKyN,QAELzN,KAAK0N,UAAY1N,KAAKC,OAAO,GAAG0B,GAChC3B,KAAK2N,SAAS3N,KAAK0N,WACrB,CAEA,KAAAD,GACEzN,KAAKC,OAAOK,QAASC,IACnBA,EAAMgB,aAAa,SAAU,IAC7BhB,EAAMgB,aAAa,cAAe,QAClChB,EACGI,cAAc,8BACbY,aAAa,cAAe,UAElCvB,KAAKoN,YAAYvM,gBAAgB,UACjCb,KAAKqN,iBAAiB/M,QAASC,IAC7BA,EAAMO,iBAAiB,QAAS,KAC9Bd,KAAK2N,SAASpN,EAAMuB,aAAa,kBACjC9B,KAAKmN,gBAAgB5L,aAAa,WAAY,KAC9CvB,KAAKmN,gBAAgBxJ,YAGzB3D,KAAKD,QAAQe,iBAAiB,UAAY0G,IACxC,IAAIoG,GAA0B,EAC9B,OAAQpG,EAAMqG,KACZ,IAAK,YACL,IAAK,UACH7N,KAAK8N,mBACLF,GAA0B,EAC1B,MACF,IAAK,aACL,IAAK,YACH5N,KAAK+N,eACLH,GAA0B,EAC1B,MACF,IAAK,OACH5N,KAAKgO,gBACLJ,GAA0B,EAC1B,MACF,IAAK,MACH5N,KAAKiO,eACLL,GAA0B,EAK1BA,IACFpG,EAAM0G,kBACN1G,EAAMW,oBAIVnI,KAAKsN,oBAAoBzM,gBAAgB,UACzCb,KAAKuN,uBAAuBzM,iBAAiB,QAAS,KACpDd,KAAK8N,qBAEP9N,KAAKwN,uBAAuB1M,iBAAiB,QAAS,KACpDd,KAAK+N,iBAGP/N,KAAKmO,YAAc1M,SAASC,cAAc,OAC1C1B,KAAKmO,YAAY5M,aAAa,YAAa,UAC3CvB,KAAKmO,YAAY5M,aAAa,cAAe,QAC7CvB,KAAKmO,YAAY5M,aAAa,QAAS,4BACvCvB,KAAKmN,gBAAgBiB,QAAQpO,KAAKmO,aAClCnO,KAAKmN,gBAAgB/L,UAAUC,IAAI,wCACnCrB,KAAKmN,gBAAgBrM,iBAAiB,OAAQ,IAC5Cd,KAAKmN,gBAAgBtM,gBAAgB,YAEzC,CAEA,QAAA8M,CAAShM,GACP3B,KAAKC,OAAOK,QAASC,IACfoB,GAAMpB,EAAMoB,KAAOA,GACrBpB,EAAMM,gBAAgB,UACtBN,EAAMM,gBAAgB,iBAEtBN,EAAMgB,aAAa,SAAU,IAC7BhB,EAAMgB,aAAa,cAAe,WAGtCvB,KAAKqN,iBAAiB/M,QAASC,IACzBoB,GACEpB,EAAMuB,aAAa,mBAAqBH,EAC1CpB,EAAMgB,aAAa,eAAgB,QAKrChB,EAAMgB,aAAa,eAAgB,WAGvCvB,KAAK0N,UAAY/L,EAEjB3B,KAAKmO,YAAY9D,YAAc,SAASrK,KAAKqO,sBAAwB,QAAQrO,KAAKC,OAAO+C,QAC3F,CAEA,mBAAAqL,GACE,OAAO9L,MAAMC,KAAKxC,KAAKC,QAAQqO,UAC5B/N,GAAUA,EAAMoB,KAAO3B,KAAK0N,UAEjC,CAEA,gBAAAI,GAEE,IAAIS,EAAkBvO,KAAKqO,sBAAwB,EAE/CE,EAAkB,IAEpBA,EAAkBvO,KAAKC,OAAO+C,OAAS,GAEzChD,KAAK2N,SAAS3N,KAAKC,OAAOsO,GAAiB5M,GAC7C,CAEA,YAAAoM,GAEE,IAAIQ,EAAkBvO,KAAKqO,sBAAwB,EAC/CE,GAAmBvO,KAAKC,OAAO+C,SAEjCuL,EAAkB,GAEpBvO,KAAK2N,SAAS3N,KAAKC,OAAOsO,GAAiB5M,GAC7C,CAEA,aAAAqM,GAEEhO,KAAK2N,SAAS3N,KAAKC,OAAO,GAAG0B,GAC/B,CAEA,YAAAsM,GAEEjO,KAAK2N,SAAS3N,KAAKC,OAAOD,KAAKC,OAAO+C,OAAS,GAAGrB,GACpD,2CC1KK,MAAM6M,EACX,WAAA1O,CAAYC,GACVC,KAAKD,QAAUA,EACfC,KAAKyO,cACH1O,GAAWA,EAAQY,cAAc,yCACnCX,KAAKoN,YACHrN,GACAA,EAAQY,cAAc,0CACxBX,KAAK0O,eACH3O,GACAA,EAAQY,cAAc,8CACxBX,KAAK2O,OACH5O,IACEC,KAAKoN,aACLpN,KAAKoN,YAAYlN,iBAAiB,mBACjCF,KAAK0O,gBACJ1O,KAAK0O,eAAexO,iBAAiB,mBAC3CF,KAAK4O,YAAa,EAClB5O,KAAK6O,IAAMvI,OAAOwI,WAAW,qBAG1B9O,KAAKD,SACLC,KAAKyO,gBACJzO,KAAKoN,aAAgBpN,KAAK0O,kBAK9B1O,KAAKyO,cAAc5N,gBAAgB,UACnCb,KAAK+O,YACL/O,KAAKyO,cAAc3N,iBAAiB,QAAS,IAC3Cd,KAAKgP,0BAEH,qBAAsBhP,KAAK6O,IAC7B7O,KAAK6O,IAAI/N,iBAAiB,SAAU,IAAMd,KAAK+O,aAE/C/O,KAAK6O,IAAII,YAAY,IAAMjP,KAAK+O,aAGlC/O,KAAKD,QAAQe,iBAAiB,QAAU0G,IACnB,WAAfA,EAAM0H,MAAqBlP,KAAK6O,IAAIM,SAAWnP,KAAK4O,aACtD5O,KAAK4O,YAAa,EAClB5O,KAAK+O,YACL/O,KAAKyO,cAAc9K,WAGzB,CAEA,sBAAAqL,GACEhP,KAAK4O,YAAc5O,KAAK4O,WACxB5O,KAAK+O,WACP,CAEA,SAAAA,GACM/O,KAAK6O,IAAIM,QACPnP,KAAK4O,WACP5O,KAAKoP,OAELpP,KAAKqP,OAGPrP,KAAKoP,MAET,CAEA,IAAAC,GACMrP,KAAKoN,cACPpN,KAAKoN,YAAYkC,QAAS,EAC1BtP,KAAKoN,YAAY7L,aAAa,cAAe,SAE3CvB,KAAK0O,iBACP1O,KAAK0O,eAAeY,QAAS,EAC7BtP,KAAK0O,eAAenN,aAAa,cAAe,SAElDvB,KAAKyO,cAAclN,aAAa,gBAAiB,SACjDvB,KAAKyO,cAAclN,aAAa,QAAS,aACzCvB,KAAKyO,cAAcrN,UAAUE,OAC3B,gDAGF,IAAK,IAAIiO,EAAQ,EAAGA,EAAQvP,KAAK2O,OAAO3L,OAAQuM,GAAS,EACvDvP,KAAK2O,OAAOY,GAAOhO,aAAa,WAAY,KAEhD,CAEA,IAAA6N,GACMpP,KAAKoN,cACPpN,KAAKoN,YAAYkC,QAAS,EAC1BtP,KAAKoN,YAAY7L,aAAa,cAAe,UAE3CvB,KAAK0O,iBACP1O,KAAK0O,eAAeY,QAAS,EAC7BtP,KAAK0O,eAAenN,aAAa,cAAe,UAElDvB,KAAKyO,cAAclN,aAAa,gBAAiB,QACjDvB,KAAKyO,cAAclN,aAAa,QAAS,cACzCvB,KAAKyO,cAAcrN,UAAUC,IAC3B,gDAGF,IAAK,IAAIkO,EAAQ,EAAGA,EAAQvP,KAAK2O,OAAO3L,OAAQuM,GAAS,EACvDvP,KAAK2O,OAAOY,GAAOhO,aAAa,WAAY,IAEhD,qCCvGK,MAAMiO,EACX,WAAA1P,CAAYC,GACVC,KAAKD,QAAUA,EACfC,KAAKyO,cACH1O,GAAWA,EAAQY,cAAc,kCACnCX,KAAKoN,YACHrN,GAAWA,EAAQY,cAAc,2BACnCX,KAAK2O,OACH5O,GACAC,KAAKoN,aACLpN,KAAKoN,YAAYlN,iBAAiB,kBACpCF,KAAK4O,YAAa,EAClB5O,KAAK6O,IAAMvI,OAAOwI,WAAW,qBAExB9O,KAAKD,SAAYC,KAAKyO,eAAkBzO,KAAKoN,cAIlDpN,KAAKyO,cAAc5N,gBAAgB,UACnCb,KAAK+O,YACL/O,KAAKyO,cAAc3N,iBAAiB,QAAS,IAC3Cd,KAAKgP,0BAEH,qBAAsBhP,KAAK6O,IAC7B7O,KAAK6O,IAAI/N,iBAAiB,SAAU,IAAMd,KAAK+O,aAE/C/O,KAAK6O,IAAII,YAAY,IAAMjP,KAAK+O,aAGlC/O,KAAKD,QAAQe,iBAAiB,QAAU0G,IACnB,WAAfA,EAAM0H,MAAqBlP,KAAK4O,YAAc5O,KAAK6O,IAAIM,UACzDnP,KAAK4O,YAAa,EAClB5O,KAAK+O,YACL/O,KAAKyO,cAAc9K,WAGzB,CAEA,sBAAAqL,GACEhP,KAAK4O,YAAc5O,KAAK4O,WACxB5O,KAAK+O,WACP,CAEA,SAAAA,GACM/O,KAAK6O,IAAIM,QACPnP,KAAK4O,WACP5O,KAAKoP,OAELpP,KAAKqP,OAGPrP,KAAKoP,MAET,CAEA,IAAAA,GACEpP,KAAKoN,YAAYhM,UAAUC,IAAI,gCAC/BrB,KAAKoN,YAAYvM,gBAAgB,UACjCb,KAAKoN,YAAY7L,aAAa,cAAe,SAC7CvB,KAAKyO,cAAclN,aAAa,gBAAiB,QACjDvB,KAAKyO,cAAclN,aAAa,QAAS,cACzCvB,KAAKyO,cAAcrN,UAAUC,IAAI,yCAGjC,IAAK,IAAIkO,EAAQ,EAAGA,EAAQvP,KAAK2O,OAAO3L,OAAQuM,GAAS,EACvDvP,KAAK2O,OAAOY,GAAOhO,aAAa,WAAY,IAEhD,CAEA,IAAA8N,GACErP,KAAKoN,YAAYhM,UAAUE,OAAO,gCAClCtB,KAAKoN,YAAYkC,QAAS,EAC1BtP,KAAKoN,YAAY7L,aAAa,cAAe,QAC7CvB,KAAKyO,cAAclN,aAAa,gBAAiB,SACjDvB,KAAKyO,cAAclN,aAAa,QAAS,aACzCvB,KAAKyO,cAAcrN,UAAUE,OAC3B,yCAIF,IAAK,IAAIiO,EAAQ,EAAGA,EAAQvP,KAAK2O,OAAO3L,OAAQuM,GAAS,EACvDvP,KAAK2O,OAAOY,GAAOhO,aAAa,WAAY,KAEhD,mDCjFK,MAAMkO,EACX,WAAA3P,CAAYC,GACVC,KAAKD,QAAUA,EACfC,KAAK0P,cACH3P,GAAWA,EAAQY,cAAc,+BAEnCX,KAAK2P,kBACH3P,KAAK0P,eACL1P,KAAK0P,cAAc/O,cAAc,mCAEnCX,KAAK4P,YACH7P,GAAWA,EAAQY,cAAc,4BACnCX,KAAK6P,kBAAmB,EAGrB7P,KAAKD,SACLC,KAAK0P,eACL1P,KAAK2P,mBACL3P,KAAK4P,cAKR5P,KAAK8P,UACH9P,KAAKD,QAAQK,QAAQ2P,sBAAwB,kBAC/C/P,KAAKgQ,WACHhQ,KAAKD,QAAQK,QAAQ6P,uBAAyB,mBAEhDjQ,KAAKkD,OACP,CAEA,IAAAA,GACE,MAAMC,EAAW,gBAAe,EAAAC,EAAAC,OAEhCrD,KAAK2P,kBAAkB9O,gBAAgB,UACvCb,KAAK2P,kBAAkBpO,aAAa,gBAAiB4B,GACrDnD,KAAK2P,kBAAkB/N,UAAY5B,KAAK8P,UACxC9P,KAAK2P,kBAAkB7O,iBAAiB,QAAS,IAC/Cd,KAAKkQ,oBAGPlQ,KAAK4P,YAAYrO,aAAa,KAAM4B,GACpCnD,KAAK4P,YAAYrO,aAAa,SAAU,IAExCvB,KAAK4P,YAAY9O,iBAAiB,UAAY0G,IAErC,WADCA,EAAMqG,MAEV7N,KAAKkQ,mBACLlQ,KAAK2P,kBAAkBhM,UAM/B,CAEA,gBAAAuM,GACElQ,KAAK6P,kBAAoB7P,KAAK6P,iBAC1B7P,KAAK6P,kBACP7P,KAAK2P,kBAAkBpO,aAAa,iBAAiB,GACrDvB,KAAK2P,kBAAkB/N,UAAY5B,KAAKgQ,WACxChQ,KAAK4P,YAAY/O,gBAAgB,YAEjCb,KAAK2P,kBAAkBpO,aAAa,iBAAiB,GACrDvB,KAAK2P,kBAAkB/N,UAAY5B,KAAK8P,UACxC9P,KAAK4P,YAAYrO,aAAa,SAAU,IAE5C,sCCrEK,MAAM4O,EACX,WAAArQ,CAAYC,EAAS4H,EAAU,CAAC,GAoB9B,GAnBA3H,KAAKD,QAAUA,EACfC,KAAKqL,MACHtL,GACAwC,MAAMC,KAAKzC,EAAQG,iBAAiB,uBACjCkQ,IAAK7P,IACJ,MAAMoB,EAAKpB,EACRI,cAAc,iCACdmB,aAAa,QAEbuO,UAAU,GAEb,MAAO,CACL9P,QACAoB,KACAsG,OAJaxG,SAASmH,eAAejH,MAOxCc,OAAQ6N,GAASA,EAAKrI,SAEtBjI,KAAKD,UAAYC,KAAKqL,MACzB,OAIF,MAAMkF,mBAAEA,EAAqB,EAACC,qBAAEA,EAAuB,SAAY7I,EACnE3H,KAAKuQ,mBAAqBA,EAC1BvQ,KAAKwQ,qBAAuBA,EAE5BxQ,KAAKkD,MACP,CAEA,IAAAA,GAgBE,GAfAlD,KAAKyQ,YAAc,CACjBC,KACEC,iBAAiBlP,SAASmP,iBAAiBC,iBACzC,4BACG,QACPC,MACEH,iBAAiBlP,SAASmP,iBAAiBC,iBACzC,6BACG,QACPE,OACEJ,iBAAiBlP,SAASmP,iBAAiBC,iBACzC,8BACG,UAGL7Q,KAAKwQ,qBAAsB,CAC7B,IAAK/D,OAAOuE,KAAKhR,KAAKyQ,aAAatJ,SAASnH,KAAKwQ,sBAC/C,MAAM,IAAIS,MACR,2CAA2CjR,KAAKwQ,0CAA0C/D,OAAOuE,KAAKhR,KAAKyQ,aAAaS,KAAK,SAGjIlR,KAAKmR,aAAe7K,OAAOwI,WACzB,eAAe9O,KAAKyQ,YAAYzQ,KAAKwQ,yBAEzC,MACExQ,KAAKmR,aAAe,KAGtBnR,KAAKoR,YAAc,KAEnB9K,OAAOxF,iBAAiB,SAAU,IAAMd,KAAKqR,2BAC7C/K,OAAOxF,iBAAiB,SAAU,IAAMd,KAAKqR,2BAC7CrR,KAAKqR,yBACP,CAEA,uBAAAA,GACE,GAAIrR,KAAKmR,cAAgBnR,KAAKmR,aAAahC,QAKzC,OAJAnP,KAAKqL,MAAM/K,QAASgQ,IAClBA,EAAK/P,MAAMa,UAAUE,OAAO,qCAE9BtB,KAAKoR,YAAc,MAIrB,MAAME,EAAWtR,KAAKqL,MAAMkG,SACzBjB,GACCkB,KAAKC,MAAMnB,EAAKrI,OAAOwB,wBAAwBC,MAC/C1J,KAAKuQ,oBAGLe,IAAatR,KAAKoR,aACpBpR,KAAKqL,MAAM/K,QAASgQ,IACdgB,GAAYhB,IAASgB,GACvBtR,KAAKoR,YAAcd,EACnBtQ,KAAKoR,YAAY7Q,MAAMa,UAAUC,IAAI,+BAErCiP,EAAK/P,MAAMa,UAAUE,OAAO,gCAIlCtB,KAAKoR,YAAcE,GAAY,IACjC,uCC/FK,MAAMI,EACXC,uBAAwB,EAExB,WAAA7R,CAAYC,GACVC,KAAKD,QAAUA,EACfC,KAAK4R,gBAAkB7R,EAAQ+B,aAAa,SAASwG,MAAM,KAAKC,MAChEvI,KAAK6R,eACH9R,GACAC,KAAK4R,iBACLnQ,SAASmH,eAAe5I,KAAK4R,iBAE3B5R,KAAKD,SAAWC,KAAK6R,gBACvB7R,KAAKD,QAAQe,iBAAiB,QAAS,IAAMd,KAAK8R,qBAEtD,CAEA,kBAAAA,GACO9R,KAAK6R,eAAe/P,aAAa,cACpC9B,KAAK6R,eAAetQ,aAAa,WAAY,MAC7CvB,KAAK6R,eAAezQ,UAAUC,IAAI,yBAE7BrB,KAAK2R,wBACR3R,KAAK6R,eAAe/Q,iBAAiB,OAAQ,IAC3Cd,KAAK+R,yBAEP/R,KAAK2R,uBAAwB,IAIjC3R,KAAK6R,eAAelO,OACtB,CAEA,qBAAAoO,GACE/R,KAAK6R,eAAehR,gBAAgB,YACpCb,KAAK6R,eAAezQ,UAAUE,OAAO,wBACvC,kCCnCK,MAAM0Q,EACX,WAAAlS,CAAYC,GACVC,KAAKD,QAAUA,EACfC,KAAKiS,SAAWlS,GAAWA,EAAQY,cAAc,mBACjDX,KAAKkS,kBACHnS,GACAC,KAAKiS,UACLjS,KAAKiS,SAAS/R,iBAAiB,qBACjCF,KAAKmS,UAAYpS,GAAWA,EAAQG,iBAAiB,mBAGlDF,KAAKD,SACLC,KAAKiS,UACLjS,KAAKkS,mBACLlS,KAAKmS,WACNnS,KAAKkS,kBAAkBlP,SAAWhD,KAAKmS,UAAUnP,SAKnDhD,KAAKoS,gBAAkB,EACvBpS,KAAKkD,OACP,CAEA,IAAAA,GACElD,KAAKD,QAAQqB,UAAUC,IAAI,yBAC3BrB,KAAKiS,SAASpR,gBAAgB,UAC9Bb,KAAKkS,kBAAkB5R,QAAS+R,IAC9B,MAAMC,EAAaD,EAAiBvQ,aAAa,iBACjDuQ,EAAiB9Q,aAAa,iBAAiB,GAC/C,MAAMgR,EAAY9Q,SAASmH,eAAe0J,GAC1CC,EAAUhR,aAAa,kBAAmB8Q,EAAiB1Q,IAC3D4Q,EAAUhR,aAAa,OAAQ,YAC/B8Q,EAAiBvR,iBACf,QACC0G,GAAUxH,KAAKwS,oBAAoBhL,IACpC,KAGJxH,KAAKyS,iBAAiBzS,KAAKoS,iBAC3BpS,KAAKD,QAAQe,iBAAiB,UAAY0G,GACxCxH,KAAK0S,sBAAsBlL,GAE/B,CAEA,mBAAAgL,CAAoBG,GAClBA,EAAmBxK,iBACnB,MAAMyK,EACJD,EAAmBE,cAAc/Q,aAAa,iBAChD9B,KAAK8S,cAAcF,EACrB,CAEA,qBAAAF,CAAsBK,GACpB,IAAInF,GAA0B,EAC9B,OAAQmF,EAAqBlF,KAC3B,IAAK,YACL,IAAK,UACH7N,KAAKgT,cACLpF,GAA0B,EAC1B,MACF,IAAK,aACL,IAAK,YACH5N,KAAKiT,UACLrF,GAA0B,EAC1B,MACF,IAAK,OAEH5N,KAAKyS,iBAAiB,GAAG,GACzB7E,GAA0B,EAC1B,MACF,IAAK,MAEH5N,KAAKyS,iBAAiBzS,KAAKkS,kBAAkBlP,OAAS,GAAG,GACzD4K,GAA0B,EAK1BA,IACFmF,EAAqB7E,kBACrB6E,EAAqB5K,iBAEzB,CAEA,OAAA8K,GAEMjT,KAAKoS,gBAAkBpS,KAAKkS,kBAAkBlP,OAAS,EAEzDhD,KAAKyS,iBAAiBzS,KAAKoS,gBAAkB,GAAG,GAGhDpS,KAAKyS,iBAAiB,GAAG,EAE7B,CAEA,WAAAO,GAEMhT,KAAKoS,iBAAmB,EAE1BpS,KAAKyS,iBAAiBzS,KAAKoS,gBAAkB,GAAG,GAGhDpS,KAAKyS,iBAAiBzS,KAAKkS,kBAAkBlP,OAAS,GAAG,EAE7D,CAEA,gBAAAyP,CAAiBS,EAAUC,GAAc,GACvCnT,KAAKoS,gBAAkBc,EACvBlT,KAAKkS,kBAAkB5R,QAAQ,CAAC+R,EAAkB9C,KAC5CA,IAAUvP,KAAKoS,iBACjBC,EAAiB9Q,aAAa,iBAAiB,GAC/C8Q,EAAiB9Q,aAAa,WAAY,KACtC4R,GACFd,EAAiB1O,UAGnB0O,EAAiB9Q,aAAa,iBAAiB,GAC/C8Q,EAAiB9Q,aAAa,WAAY,SAG9CvB,KAAKmS,UAAU7R,QAAQ,CAAC8S,EAAU7D,KAC5BA,IAAUvP,KAAKoS,iBACjBgB,EAASvS,gBAAgB,UACzBuS,EAAS7R,aAAa,WAAY,OAElC6R,EAAS7R,aAAa,SAAU,IAChC6R,EAAS7R,aAAa,WAAY,QAGxC,CAEA,aAAAuR,CAAcO,GACZ,MAAM9D,EAAQhN,MAAMC,KAAKxC,KAAKmS,WAAW7D,UACtC8E,GAAaA,EAAStR,aAAa,QAAUuR,GAEhDrT,KAAKyS,iBAAiBlD,EACxB,gDCxIK,MAAM+D,EACX,WAAAxT,CAAYC,GACVC,KAAKD,QAAUA,EACfC,KAAK2I,OAAS5I,GAAWA,EAAQY,cAAc,mBAG5CX,KAAKD,SACLC,KAAK2I,QAC+B,aAArC3I,KAAK2I,OAAO7G,aAAa,UAK3B9B,KAAKuT,kBAAoB9R,SAASC,cAAc,OAChD1B,KAAKuT,kBAAkBnS,UAAUC,IAAI,0BAErCrB,KAAKwT,yBAA2B/R,SAASC,cAAc,UACvD1B,KAAKwT,yBAAyBjS,aAAa,OAAQ,UACnDvB,KAAKwT,yBAAyBpS,UAAUC,IACtC,aACA,oBACA,yBAEFrB,KAAKwT,yBAAyBjS,aAAa,gBAAiBvB,KAAK2I,OAAOhH,IACxE3B,KAAKyT,iCAELzT,KAAKuT,kBAAkB1R,YAAY7B,KAAK2I,QACxC3I,KAAKuT,kBAAkB1R,YAAY7B,KAAKwT,0BACxCxT,KAAKD,QAAQ8B,YAAY7B,KAAKuT,mBAE9BvT,KAAKwT,yBAAyB1S,iBAAiB,QAAS,KACtDd,KAAK0T,qBACL1T,KAAK2I,OAAOhF,UAEhB,CAEA,kBAAA+P,GAC2C,aAArC1T,KAAK2I,OAAO7G,aAAa,QAC3B9B,KAAK2I,OAAOpH,aAAa,OAAQ,QAEjCvB,KAAK2I,OAAOpH,aAAa,OAAQ,YAEnCvB,KAAKyT,gCACP,CAEA,8BAAAA,GAC2C,aAArCzT,KAAK2I,OAAO7G,aAAa,SAC3B9B,KAAKwT,yBAAyB9P,UAAY,+9BAC1C1D,KAAKwT,yBAAyBjS,aAAa,QAAS,iBACpDvB,KAAKwT,yBAAyBjS,aAAa,aAAc,mBAEzDvB,KAAKwT,yBAAyB9P,UAAY,orCAC1C1D,KAAKwT,yBAAyBjS,aAAa,QAAS,iBACpDvB,KAAKwT,yBAAyBjS,aAAa,aAAc,iBAE7D,mDCvDK,MAAMoS,EACX,WAAA7T,CAAYC,EAAS4H,EAAU,CAAC,GAS9B,GARA3H,KAAKD,QAAUA,EACfC,KAAK4T,gBACH5T,KAAKD,SAAWC,KAAKD,QAAQY,cAAc,iBAC7CX,KAAK6T,oBACH7T,KAAKD,SAAWC,KAAKD,QAAQY,cAAc,wBAC7CX,KAAK8T,eACH9T,KAAKD,SAAWC,KAAKD,QAAQY,cAAc,yBAG1CX,KAAKD,UACLC,KAAK4T,kBACL5T,KAAK8T,gBAC0C,OAAhD9T,KAAK4T,gBAAgB9R,aAAa,UAElC,OAGF,MAAMiS,aAAEA,GAAiBpM,EACzB3H,KAAK+T,aAAeA,GAAgB,gCAEpC/T,KAAKkD,MACP,CAEA,IAAAA,GACElD,KAAKgU,OAAShU,KAAK4T,gBAAgB7M,MAChCuB,MAAM,MACN8H,IAAKrJ,GAAUA,EAAM9E,QACrBQ,OAAQsE,GAAUA,GAErB/G,KAAK2B,GAAK3B,KAAK4T,gBAAgBjS,GAE/B3B,KAAKiU,mBAAqBxS,SAASC,cAAc,SACjD1B,KAAKiU,mBAAmB7S,UAAUC,IAAI,kBACtC,CAAC,KAAM,oBAAoBf,QAAS4T,IAClClU,KAAKiU,mBAAmB1S,aACtB2S,EACAlU,KAAK4T,gBAAgB9R,aAAaoS,IAEpClU,KAAK4T,gBAAgB/S,gBAAgBqT,KAEvClU,KAAK8T,eAAejS,YAAY7B,KAAKiU,oBACrCjU,KAAK4T,gBAAgBrS,aAAa,SAAU,IAC5CvB,KAAK4T,gBAAgB9S,iBAAiB,QAAS,IAAMd,KAAKmU,cAC1DnU,KAAKiU,mBAAmBnT,iBAAiB,WAAa0G,IAClC,UAAdA,EAAMqG,KACR7N,KAAKoU,YAAY5M,EAAMS,OAAOlB,SAIlC/G,KAAKqU,4BAA8B5S,SAASC,cAAc,UAC1D1B,KAAKqU,4BAA4B9S,aAAa,OAAQ,UACtDvB,KAAKqU,4BAA4BjT,UAAUC,IACzC,aACA,qBAEFrB,KAAKsU,iCAAmC7S,SAASC,cAAc,QAC/D1B,KAAKsU,iCAAiC1S,UAAY,MAClD5B,KAAKuU,sCAAwC9S,SAASC,cAAc,QACpE1B,KAAKuU,sCAAsCnT,UAAUC,IACnD,uBAEFrB,KAAKuU,sCAAsC3S,UAAY,WACvD5B,KAAKsU,iCAAiCzS,YACpC7B,KAAKuU,uCAEPvU,KAAKqU,4BAA4BxS,YAC/B7B,KAAKsU,kCAEPtU,KAAK8T,eAAejS,YAAY7B,KAAKqU,6BACrCrU,KAAKqU,4BAA4BvT,iBAAiB,QAAS,KACzDd,KAAKoU,YAAYpU,KAAKiU,mBAAmBlN,SAG3C/G,KAAKwU,mBAAqB/S,SAASC,cAAc,OACjD1B,KAAKwU,mBAAmBjT,aAAa,YAAa,aAClDvB,KAAKwU,mBAAmBpT,UAAUC,IAAI,uBACtCrB,KAAKD,QAAQ8B,YAAY7B,KAAKwU,oBAE9BxU,KAAKyU,kBAAoBhT,SAASC,cAAc,KAChD1B,KAAKyU,kBAAkB9S,GAAK,GAAG3B,KAAK2B,iBACpC3B,KAAKyU,kBAAkBrT,UAAUC,IAAI,wBACrCrB,KAAKD,QAAQ8B,YAAY7B,KAAKyU,mBAE9BzU,KAAKiU,mBAAmB1S,aACtB,mBACA,GAAGvB,KAAKiU,mBAAmBnS,aAAa,uBACtC9B,KAAKyU,kBAAkB9S,MAI3B3B,KAAK0U,YAAcjT,SAASC,cAAc,MAC1C1B,KAAK0U,YAAYtT,UAAUC,IACzB,uBACA,wBAEFrB,KAAK0U,YAAY5T,iBAAiB,OAAQ,KACxCd,KAAK0U,YAAY7T,gBAAgB,YACjCb,KAAK2U,eAAe,MAEtB3U,KAAKD,QAAQ8B,YAAY7B,KAAK0U,aAEzB1U,KAAK6T,sBACR7T,KAAK6T,oBAAsBpS,SAASC,cAAc,KAClD1B,KAAK6T,oBAAoBzS,UAAUC,IAAI,uBACvCrB,KAAK8T,eAAec,WAAW/Q,aAC7B7D,KAAK6T,oBACL7T,KAAK8T,iBAGT9T,KAAK6T,oBAAoBjS,UAAY5B,KAAK+T,aAE1C/T,KAAKmU,YACP,CAEA,cAAAQ,CAAeE,GACb7U,KAAKwU,mBAAmB5S,UAAYiT,CACtC,CAGA,cAAAC,CAAe/N,GACb,OAAOA,EAAMgO,QAAQ,UAAW,KAAK9S,MACvC,CAEA,aAAA+S,CAAcjO,GACZ,OAAO/G,KAAKgU,OACT5D,IAAK6E,GAAcjV,KAAK8U,eAAeG,GAAW7N,eAClDD,SAASJ,EAAMK,cAAcnF,OAClC,CAEA,WAAAmS,CAAYrN,GACV,MAAMmO,EAAWlV,KAAK8U,eAAe/N,GACjCmO,EACElV,KAAKgV,cAAcE,GACrBlV,KAAK2U,eAAe,IAAIO,qBAExBlV,KAAKgU,OAAOmB,KAAKD,GACjBlV,KAAK4T,gBAAgB7M,MAAQ/G,KAAKgU,OAAO9C,KAAK,MAC9ClR,KAAKmU,aACLnU,KAAK2U,eAAe,IAAIO,aAG1BlV,KAAK2U,eAAe,wBAEtB3U,KAAKiU,mBAAmBlN,MAAQ,GAChC/G,KAAKiU,mBAAmBtQ,OAC1B,CAEA,WAAAyR,CAAYrO,GACV,MAAMqO,EAAcpV,KAAK8U,eAAe/N,GACpCqO,GAAepV,KAAKgV,cAAcI,KACpCpV,KAAKgU,OAAShU,KAAKgU,OAAOvR,OACvB4S,GAAkBA,IAAkBD,GAEvCpV,KAAK4T,gBAAgB7M,MAAQ/G,KAAKgU,OAAO9C,KAAK,MAC9ClR,KAAKmU,aACLnU,KAAK2U,eAAe,IAAIS,eAEtBpV,KAAKgU,OAAOhR,QACdhD,KAAK0U,YAAYnT,aAAa,WAAY,KAC1CvB,KAAK0U,YAAY/Q,SAEjB3D,KAAKiU,mBAAmBtQ,OAE5B,CAEA,UAAAwQ,GACEnU,KAAK0U,YAAYhR,UAAY,GAC7B1D,KAAKgU,OACF5D,IAAKrJ,IACJ,MAAMxG,EAAQkB,SAASC,cAAc,MACrCnB,EAAMa,UAAUC,IAAI,8BACpB,MAAMiU,EAAa7T,SAASC,cAAc,QAC1C4T,EAAW1T,UAAYmF,EACvBxG,EAAMsB,YAAYyT,GAElB,MAAMC,EAAoB9T,SAASC,cAAc,UAQjD,OAPA6T,EAAkB3T,UAAY,WAAWmF,KACzCwO,EAAkBhU,aAAa,OAAQ,UACvCgU,EAAkBnU,UAAUC,IAAI,8BAChCkU,EAAkBzU,iBAAiB,QAAS,KAC1Cd,KAAKoV,YAAYrO,KAEnBxG,EAAMsB,YAAY0T,GACXhV,IAERD,QAASC,GAAUP,KAAK0U,YAAY7S,YAAYtB,IAEnD,IAAIiV,EAAqB,OAEE,IAAvBxV,KAAKgU,OAAOhR,SACdwS,GAAsB,KAExB,MAAMC,EAAiB,GAAGzV,KAAKgU,OAAOhR,UAAUwS,UAChDxV,KAAKyU,kBAAkB7S,UAAY6T,CACrC,gCCpMFnP,OAAOoP,0BAA4B,KAE5B,MAAMC,EACXC,OAAS,CAAC,EACVC,cAAgB,CAAC,EACjBC,OAAQ,EAER,WAAAhW,CAAYgW,GAAQ,GAElB,GADA9V,KAAK8V,MAAQA,EACTxP,OAAOoP,wBAGT,OAFA1V,KAAK+V,IAAI,mDAEFzP,OAAOoP,wBAEhBpP,OAAOoP,wBAA0B1V,IACnC,CAEA,GAAA+V,IAAOC,GACDhW,KAAK8V,OAEPG,QAAQF,IAAI,kCAAmCC,EAEnD,CAOA,EAAAzJ,CAAG/E,EAAO0O,GACHzJ,OAAOC,OAAO1M,KAAK4V,OAAQpO,KAC9BxH,KAAK4V,OAAOpO,GAAS,IAEvBxH,KAAK4V,OAAOpO,GAAS,IAAIxH,KAAK4V,OAAOpO,GAAQ0O,EAC/C,CAEA,IAAAtS,CAAK4D,EAAO0O,GACLzJ,OAAOC,OAAO1M,KAAK6V,cAAerO,KACrCxH,KAAK6V,cAAcrO,GAAS,IAE9BxH,KAAK6V,cAAcrO,GAAS,IAAIxH,KAAK6V,cAAcrO,GAAQ0O,EAC7D,CAGA,OAAAC,CAAQ3O,EAAOgF,EAAO,CAAC,GAOrB,GANIC,OAAOC,OAAO1M,KAAK4V,OAAQpO,KAC7BxH,KAAK+V,IAAI,qBAAqBvO,IAASgF,GACvCxM,KAAK4V,OAAOpO,GAAOlH,QAAS8V,GAC1BA,EAAetO,KAAK9H,KAAMwM,KAG1BC,OAAOC,OAAO1M,KAAK6V,cAAerO,GAAQ,CAC5CxH,KAAK+V,IAAI,8BAA8BvO,IAASgF,GAEhD,IAEE,IAAI6J,EAAarW,KAAK6V,cAAcrO,GAAOxE,OAAS,EAEpDqT,GAAc,EAEdA,GAAc,EAESrW,KAAK6V,cAAcrO,GAAO6O,GAClCvO,KAAK9H,KAAMwM,GAE1BxM,KAAK6V,cAAcrO,GAAO8O,OAAOD,EAAY,EAEjD,CACF,EC/DF/P,OAAOiQ,qBAAuB,KAE9B,MAAMC,EAAoB,CAAC,QAAS,WAAY,YAAa,aAQ9C,MAAMC,EAEnBC,cAAgB,GAEhBC,YAAc,GAEdC,QAAS,EAETC,YAAc,GAEdjB,OAAS,KAETkB,WAAa,KAEb5R,uBAAwB,EAExB4Q,MAA8D,SAAtDrU,SAASmP,gBAAgBxQ,QAAQ2W,iBAYzC,WAAAjX,CAAY6H,EAAU,CAAC,GACrB,MAAM+O,cACJA,EAAaC,YACbA,EAAWC,OACXA,EAAMC,YACNA,EAAWC,WACXA,EAAU/R,YACVA,GAAc,EAAKiS,OACnBA,GAAS,GACPrP,EACJ,IAAK5C,GAAeuB,OAAOiQ,mBAEzB,OAAOjQ,OAAOiQ,mBA2BhB,GAxBEvW,KAAK0W,cADHA,GAIAjV,SAASmP,gBAAgBxQ,QAAQ6W,kBACjC3Q,OAAO4Q,SAASC,SAGlBnX,KAAK2W,YADHA,GAGiBlV,SAASmP,gBAAgBxQ,QAAQgX,gBAAkB,IAGtEpX,KAAK4W,OADHA,GAIwD,SAAxDnV,SAASmP,gBAAgBxQ,QAAQiX,mBAGnCrX,KAAK6W,YADHA,GAIApV,SAASmP,gBAAgBxQ,QAAQkX,uBACjC,iBAEAR,EACF9W,KAAK8W,WAAaA,MACb,CAEL,MAAMS,EAAiB,QACvBvX,KAAK8W,WACHhQ,SAASrF,SAASmP,gBAAgBxQ,QAAQoX,qBAAsB,KAChED,CACJ,CACAvX,KAAK4V,OAAS,IAAID,EAAmB3V,KAAK8V,OAC1C9V,KAAKkF,sBACHuH,OAAOuE,KAAKhR,KAAKyX,UAAUzU,SAAWwT,EAAkBxT,QACxDwT,EAAkB9T,MACfgV,GACCjL,OAAOuE,KAAKhR,KAAKyX,UAAUtQ,SAASuQ,IACH,kBAA1B1X,KAAKyX,SAASC,IAEtB1X,KAAKkF,uBAA0B8R,GAClChX,KAAKkD,OAEPlD,KAAK+V,IAAI,CACPW,cAAe1W,KAAK0W,cACpBC,YAAa3W,KAAK2W,YAClBC,OAAQ5W,KAAK4W,OACbC,YAAa7W,KAAK6W,YAClBC,WAAY9W,KAAK8W,WACjB5R,sBAAuBlF,KAAKkF,wBAEzBH,GAAgBuB,OAAOiQ,qBAC1BjQ,OAAOiQ,mBAAqBvW,KAEhC,CAGA,IAAAkD,GACE,MAAMyU,EAAmB3X,KAAKyX,SAC9BzX,KAAK+V,IAAI,6BAA8B4B,GACvC,MAAMC,EAA2BnL,OAAOoL,YACtCpL,OAAOuE,KAAK2G,GACTlV,OAAQiV,GAAWlB,EAAkBrP,SAASuQ,IAC9CtH,IAAKsH,GAAW,CAACA,EAAQC,EAAiBD,MAE3CjL,OAAOuE,KAAK4G,GAA0B5U,QACxChD,KAAK+V,IAAI,8BAA+B6B,GAE1C5X,KAAK8X,aAAa,CAChBC,OAAO,EACPpL,UAAU,EACVqL,WAAW,KACRJ,EACHK,WAAW,GAEf,CAEA,GAAAlC,IAAOC,GACDhW,KAAK8V,OACPG,QAAQF,IAAI,4BAA6BC,EAAMhW,KAAKkY,IAExD,CAEA,eAAAC,GACEnY,KAAK+V,IAAI,0CACTzP,OAAOiQ,mBAAqB,IAC9B,CAIA,OAAI2B,GACF,MAAME,EAAe,CAAC,EAWtB,OAVA3W,SAAS4W,OACN/P,MAAM,MACN7F,OAAQ4V,GAA6B,KAAlBA,EAAOpW,QAC1B3B,QAAS+X,IACR,MAAMC,EAAQD,EAAOpW,OAAOqG,MAAM,MAC3BuF,EAAK9G,GAASuR,EACjBzK,IACFuK,EAAavK,GAAO0K,mBAAmBxR,GAAS,OAG/CqR,CACT,CAGA,YAAIX,GACF,IACE,OAAOe,KAAKC,MAAMzY,KAAK8M,IAAI9M,KAAK6W,cAAgB,KAElD,CAAE,MAAO6B,GACP,MAAO,CAAC,CACV,CACF,CAOA,MAAAtT,CAAOyI,GACL,OAAOpB,OAAOC,OAAO1M,KAAKkY,IAAKrK,EACjC,CAQA,QAAAxI,CAASwI,EAAK9G,GACZ,OAAO/G,KAAK8M,IAAIe,KAAS9G,CAC3B,CAOA,GAAA+F,CAAIe,GACF,OAAI7N,KAAKoF,OAAOyI,GACP0K,mBAAmBvY,KAAKkY,IAAIrK,IAE9B,IACT,CAeA,GAAAlI,CAAIkI,EAAK9G,EAAOY,EAAU,CAAC,GACzB,MAAMgR,OACJA,EAAS3Y,KAAK8W,WAAU8B,SACxBA,EAAW,MAAKC,OAChBA,EAAS7Y,KAAK0W,cAAaoC,KAC3BA,EAAO9Y,KAAK2W,YAAWC,OACvBA,EAAS5W,KAAK4W,OAAMmC,QACpBA,GAAU,GACRpR,EACJ,IAAKkG,EACH,OAEF,IAAImL,EAAe,GACfpC,IACFoC,EAAe,YAEjB,IAAIC,EAAgB,GACfF,IACHE,EAAgB,aAAaN,KAE/B,MAAMN,EAAS,GAAGa,mBAAmBrL,MAAQqL,mBAAmBnS,cAAkB8R,eAAoBD,WAAkBE,IAAOG,IAAgBD,IAC/IvX,SAAS4W,OAASA,EAClBrY,KAAK+V,IAAI,cAAe,CACtBlI,MACA9G,QACA4R,SACAG,OACAF,WACAC,SACAjC,SACAmC,UACAV,WAEFrY,KAAK4V,OAAOO,QAAQ,YAAa,CAC/BtI,MACA9G,QACA4R,SACAG,OACAF,WACAC,SACAjC,SACAmC,UACAV,UAEJ,CAOA,OAAOxK,EAAKiL,EAAO,IAAKD,EAAS7Y,KAAK0W,eACpC,MAAM/O,EAAU,CAAEgR,QAAS,EAAGG,OAAMD,OAAQA,GAAU7Y,KAAK0W,eAC3D1W,KAAK2F,IAAIkI,EAAK,GAAIlG,GAClB3H,KAAK+V,IAAI,kBAAmB,CAAElI,MAAKiL,OAAMD,YAAWlR,IACpD3H,KAAK4V,OAAOO,QAAQ,eAAgB,CAAEtI,SAAQlG,GAChD,CAKA,SAAAwR,CAAUL,EAAO,IAAKD,EAAS7Y,KAAK0W,eAClCjK,OAAOuE,KAAKhR,KAAKkY,KAAK5X,QAAS+X,IAC7BrY,KAAKmF,OAAOkT,EAAQS,EAAMD,KAE5B7Y,KAAK+V,IAAI,sBAAuB,CAAE+C,OAAMD,WACxC7Y,KAAK4V,OAAOO,QAAQ,mBAAoB,CAAE2C,OAAMD,UAClD,CAMA,YAAAxM,CAAaqL,GACX1X,KAAK+V,IAAI,oBAAqB2B,GAC9B1X,KAAKoZ,UAAU1B,GAAQ,GACvB1X,KAAK4V,OAAOO,QAAQ,eAAgBuB,GACpC1X,KAAK4V,OAAOO,QAAQ,eAAgB,CAAEuB,CAACA,IAAS,GAClD,CAMA,YAAA2B,CAAa3B,GACX1X,KAAK+V,IAAI,oBAAqB2B,GAC9B1X,KAAKoZ,UAAU1B,GAAQ,GACvB1X,KAAK4V,OAAOO,QAAQ,eAAgBuB,GACpC1X,KAAK4V,OAAOO,QAAQ,eAAgB,CAAEuB,CAACA,IAAS,GAClD,CAOA,SAAA0B,CAAU1B,EAAQ4B,GACD,cAAX5B,GAIJ1X,KAAK+V,IAAI,kBAAkB2B,QAAa4B,KACxCtZ,KAAK8X,aAAa,IACb9X,KAAKyX,SACRC,CAACA,GAAS4B,EACVrB,WAAW,IAEbjY,KAAK4V,OAAOO,QAAQ,eAAgB,CAAEuB,CAACA,GAAS4B,KAT9CtZ,KAAK+V,IAAI,yDAUb,CAKA,iBAAAtQ,GACEzF,KAAK+V,IAAI,0BACT,MAAMwD,EAAc9M,OAAOoL,YACzBpL,OAAOuE,KAAKhR,KAAKyX,UAAUrH,IAAKvC,GAAQ,CAACA,EAAIzG,eAAe,KAE9DpH,KAAK8X,aAAayB,GAClBvZ,KAAK4V,OAAOO,QAAQ,qBACpBnW,KAAK4V,OAAOO,QAAQ,eAAgBoD,EACtC,CAKA,iBAAA7T,GACE1F,KAAK+V,IAAI,0BACT,MAAMwD,EAAc,IACf9M,OAAOoL,YACRpL,OAAOuE,KAAKhR,KAAKyX,UAAUrH,IAAKvC,GAAQ,CAACA,EAAIzG,eAAe,KAE9D6Q,WAAW,GAEbjY,KAAK8X,aAAayB,GAClBvZ,KAAK4V,OAAOO,QAAQ,qBACpBnW,KAAK4V,OAAOO,QAAQ,eAAgBoD,EACtC,CAMA,YAAAzB,CAAaL,GACXzX,KAAK+V,IAAI,mBAAoB0B,GAC7BzX,KAAK2F,IAAI3F,KAAK6W,YAAa2B,KAAKgB,UAAU/B,GAC5C,CAOA,gBAAA1K,CAAiB2K,GACf,OAAIjL,OAAOC,OAAO1M,KAAKyX,SAAUC,IACE,IAA1B1X,KAAKyX,SAASC,GAEhB,IACT,CAOA,EAAAnL,CAAG/E,EAAO0O,GACRlW,KAAK+V,IAAI,8BAA8BvO,KACvCxH,KAAK4V,OAAOrJ,GAAG/E,EAAO0O,EACxB,CAOA,IAAAtS,CAAK4D,EAAO0O,GACVlW,KAAK+V,IAAI,uCAAuCvO,KAChDxH,KAAK4V,OAAOhS,KAAK4D,EAAO0O,EAC1B,uDC1YK,MAgFMuD,EAAqBC,IAChC,MAAMC,EAAWD,EAAI5X,aAAa,YAElC,IACE,MAAM8X,EApF8BC,KACtC,MAAMF,EAAWE,EAEjB,IAAKF,EACH,MAAM,IAAI1I,MAAM,wBAElB,MAAM6I,EACJ,uFAAuFC,KACrFJ,GAEEK,EAAS,wBAAwBD,KAAKJ,GAC5C,IAAKG,IAAeE,EAClB,MAAM,IAAI/I,MAAM,6BAGlB,MAAMgJ,EAAO,IAAIC,KAAKP,GACtB,KAAMM,aAAgBC,OAASlT,MAAMiT,GACnC,MAAM,IAAIhJ,MAAM,6BAGlB,MAAMkJ,EAAYF,EAAKG,mBAAmB,QAAS,CACjDC,QAAS,SAELC,EAAaL,EAAKG,mBAAmB,QAAS,CAClDG,IAAK,UACLC,MAAO,OACPC,KAAM,YAGR,GAAIX,IAAeG,EAAKS,YAAcT,EAAKU,cAAe,CACxD,IAAIC,EAAaX,EAAKY,mBAAmB,QAAS,CAChDC,KAAM,UACNC,OAAQ,YASV,OAPId,EAAKe,eACPJ,EAAaX,EAAKY,mBAAmB,QAAS,CAC5CC,KAAM,UACNC,OAAQ,UACRE,OAAQ,aAGL,GAAGd,KAAaG,MAAeM,GACxC,CACA,MAAO,GAAGT,KAAaG,KAyCEY,CAAwBvB,GAC1CC,EAAezS,SAASuS,EAAIrP,eAC/BqP,EAAInY,aAAa,QAASmY,EAAIrP,aAC9BqP,EAAIrP,YAAcuP,EAGtB,CAAE,MAAOlB,GACP,GAISyC,EAAuBjZ,IAClC,MAAMkZ,EAAWlZ,EAAcvB,cAAc,WACU,SAAjDuB,EAAc9B,QAAQib,yBACtBD,IAAaA,EAASzZ,KACxByZ,EAASzZ,GAAK,kBAAiB,EAAA2Z,EAAAjY,QAEjCnB,EAAc9B,QAAQib,uBAAyB,QAE7CnZ,EAAcqZ,YAAcrZ,EAAcsZ,aAC5CtZ,EAAcX,aAAa,WAAY,KACvCW,EAAcX,aAAa,OAAQ,UACnCW,EAAcX,aAAa,kBAAmB6Z,GAAUzZ,IAAM,IAC9DO,EAAcd,UAAUC,IAAI,+BAE5Ba,EAAcrB,gBAAgB,YAC9BqB,EAAcrB,gBAAgB,QAC9BqB,EAAcrB,gBAAgB,mBAC9BqB,EAAcd,UAAUE,OAAO,4DChHnC,MAQAma,EARe,KACZ,CAAC,MAAQ,KAAO,KAAO,KAAO,MAAM1G,QAAQ,UAAY2G,IAErDA,EACCC,OAAOC,gBAAgB,IAAIC,WAAW,IAAI,GAAM,IAAOH,EAAO,GAC/DI,SAAS,OCNfC,EAAA,GAGA,SAAAC,EAAAC,GAEA,IAAAC,EAAAH,EAAAE,GACA,QAAAE,IAAAD,EACA,OAAAA,EAAA1c,QAGA,IAAAC,EAAAsc,EAAAE,GAAA,CAGAzc,QAAA,IAOA,OAHA4c,EAAAH,GAAAxc,EAAAA,EAAAD,QAAAwc,GAGAvc,EAAAD,OACA,CCrBAwc,EAAAK,EAAA,CAAA7c,EAAA8c,KACA,QAAAzO,KAAAyO,EACAN,EAAAO,EAAAD,EAAAzO,KAAAmO,EAAAO,EAAA/c,EAAAqO,IACApB,OAAA+P,eAAAhd,EAAAqO,EAAA,CAAyC4O,YAAA,EAAA3P,IAAAwP,EAAAzO,MCJzCmO,EAAAO,EAAA,CAAAG,EAAAC,IAAAlQ,OAAAmQ,UAAAC,eAAA/U,KAAA4U,EAAAC,GCCAX,EAAAc,EAAAtd,IACA,oBAAAud,QAAAA,OAAAC,aACAvQ,OAAA+P,eAAAhd,EAAAud,OAAAC,YAAA,CAAuDjW,MAAA,WAEvD0F,OAAA+P,eAAAhd,EAAA,cAAgDuH,OAAA,0xBCgBhD,MAAMkW,EAAU,CAACtV,EAAU,CAAC,KAC1B,MAAMuV,MAAEA,GAAUvV,EAClB,IAAIwV,EAAS1b,SACb,GAAIyb,EAAO,CACT,KAAIA,aAAiBE,aAGnB,MAAM,IAAInM,MAAM,gCAFhBkM,EAASD,CAIb,CACA,MAAMG,EAAQ5b,SAASmP,gBACvByM,EAAMjc,UAAUC,IAAI,4BAEpB,MAAMic,EAAe,KACnBhX,OAAOiX,oBAAoB,aAAcD,GACzCD,EAAMjc,UAAUC,IAAI,0BAEtBiF,OAAOxF,iBAAiB,aAAcwc,GAQtChX,OAAOxF,iBAAiB,UANL0G,IACC,QAAdA,EAAMqG,MACRwP,EAAMjc,UAAUC,IAAI,wBACpBgc,EAAMjc,UAAUE,OAAO,4BAS3BgF,OAAOxF,iBAAiB,YAJJ,KAClBuc,EAAMjc,UAAUC,IAAI,yBACpBgc,EAAMjc,UAAUE,OAAO,0BAYzB,MAAMkc,EAAiBL,EAAOjd,iBAAiB,sBAC/Csd,EAAeld,QAAS4B,IAAkB,EAAAub,EAAApb,IAAoBH,IAC9DoE,OAAOxF,iBAAiB,SAAU,KAChC0c,EAAeld,QAAS4B,IACtB,EAAAub,EAAApb,IAAoBH,MAKpBmb,EAAMjc,UAAU6B,SAAS,wCAC3BxB,SAASvB,iBAAiB,kBAAkBI,QAAQmd,EAAAC,IAGlCP,EAAOjd,iBAAiB,iCAChCI,QAASqd,IACnB,IAAIC,EAAA/d,UAAU8d,KAGhB,MAAM5a,EAAeoa,EAAOxc,cAAc,mCACtCoC,GACF,IAAI8a,EAAAhb,YAAYE,GAGEoa,EAAOjd,iBAAiB,kCAChCI,QAASwd,IACnB,IAAIC,EAAAha,UAAU+Z,KAGhB,MAAME,EAAgBb,EAAOxc,cAC3B,qCAEEqd,GACF,IAAIC,EAAA3Z,aAAa0Z,GAGYb,EAAOjd,iBACpC,8CAEqBI,QAAS4d,IAC9B,IAAIC,EAAArY,qBAAqBoY,KAG3B,MAAME,EAAgBjB,EAAOxc,cAC3B,qCAEEyd,GACF,IAAIC,EAAAhX,aAAa+W,GAAelb,OAGdia,EAAOjd,iBAAiB,kCAChCI,QAASge,IACnB,IAAIC,EAAAzU,mBAAmBwU,KAGzB,MAAME,EAAUrB,EAAOxc,cAAc,8BACjC6d,GACF,IAAIC,EAAAjT,OAAOgT,GAGMrB,EAAOjd,iBAAiB,+BAChCI,QAASoe,IAClB,IAAIC,EAAAzR,QAAQwR,KAGd,MAAME,EAAgBzB,EAAOxc,cAC3B,qCAEEie,GACF,IAAIC,EAAArQ,aAAaoQ,GAGnB,MAAME,EAAU3B,EAAOxc,cAAc,8BACjCme,GACF,IAAIC,EAAAvP,OAAOsP,GAGK3B,EAAOjd,iBAAiB,+BAChCI,QAAS0e,IACjB,IAAIC,EAAAxP,QAAQuP,KAGd,MAAME,EAAW/B,EAAOxc,cAAc,wCACtC,GAAIue,EAAU,CACZ,MAAM3O,mBAAEA,EAAkBC,qBAAEA,GAAyB0O,EAAS9e,QAC9D,IAAI+e,EAAAhP,QAAQ+O,EAAU,CAAE3O,qBAAoBC,wBAC9C,CAEmB2M,EAAOjd,iBAAiB,iCAChCI,QAAS8e,IAClB,IAAIC,EAAA3N,SAAS0N,KAGDjC,EAAOjd,iBAAiB,4BAChCI,QAASgf,IACb,IAAIC,EAAAvN,KAAKsN,KAGmBnC,EAAOjd,iBACnC,8CAEoBI,QAASkf,IAC7B,MAAMzL,aAAEA,GAAiByL,EAA0Bpf,QACnD,IAAIqf,EAAA9L,qBAAqB6L,EAA2B,CAAEzL,mBAG5BoJ,EAAOjd,iBACjC,2CAEkBI,QAASof,IAC3B,IAAIC,EAAArM,kBAAkBoM,KAGxBpZ,OAAOwI,WAAW,SAAShO,iBAAiB,SAAW8e,IACjDA,EAAIzQ,SACNgO,EACGjd,iBAAiB,qCACjBI,QAASoH,IACRA,EAASnG,aAAa,OAAQ,IAC9BmG,EAAStH,QAAQyf,UAAY,KAEjC1C,EACGjd,iBACC,qEAEDI,QAASoH,IACRA,EAAS7G,gBAAgB,UACzB6G,EAAStH,QAAQyf,UAAY,OAGjC1C,EACGjd,iBAAiB,0CACjBI,QAASoH,IACRA,EAAS7G,gBAAgB,eAClB6G,EAAStH,QAAQyf,YAE5B1C,EACGjd,iBACC,uFAEDI,QAASoH,IACRA,EAASnG,aAAa,SAAU,IAChCmG,EAAStH,QAAQyf,UAAY","sources":["webpack://TNAFrontend/webpack/universalModuleDefinition","webpack://TNAFrontend/./src/nationalarchives/components/accordion/accordion.mjs","webpack://TNAFrontend/./src/nationalarchives/components/breadcrumbs/breadcrumbs.mjs","webpack://TNAFrontend/./src/nationalarchives/components/code-block/code-block.mjs","webpack://TNAFrontend/./src/nationalarchives/components/cookie-banner/cookie-banner.mjs","webpack://TNAFrontend/./src/nationalarchives/components/date-input/date-input.mjs","webpack://TNAFrontend/./src/nationalarchives/components/error-summary/error-summary.mjs","webpack://TNAFrontend/./src/nationalarchives/components/file-input/file-input.mjs","webpack://TNAFrontend/./src/nationalarchives/components/footer/footer.mjs","webpack://TNAFrontend/./src/nationalarchives/components/gallery/gallery.mjs","webpack://TNAFrontend/./src/nationalarchives/components/global-header/global-header.mjs","webpack://TNAFrontend/./src/nationalarchives/components/header/header.mjs","webpack://TNAFrontend/./src/nationalarchives/components/picture/picture.mjs","webpack://TNAFrontend/./src/nationalarchives/components/sidebar/sidebar.mjs","webpack://TNAFrontend/./src/nationalarchives/components/skip-link/skip-link.mjs","webpack://TNAFrontend/./src/nationalarchives/components/tabs/tabs.mjs","webpack://TNAFrontend/./src/nationalarchives/components/text-input/text-input.mjs","webpack://TNAFrontend/./src/nationalarchives/components/textarea/textarea.mjs","webpack://TNAFrontend/./src/nationalarchives/lib/cookie-events.mjs","webpack://TNAFrontend/./src/nationalarchives/lib/cookies.mjs","webpack://TNAFrontend/./src/nationalarchives/lib/helpers.mjs","webpack://TNAFrontend/./src/nationalarchives/lib/uuid.mjs","webpack://TNAFrontend/webpack/bootstrap","webpack://TNAFrontend/webpack/runtime/define property getters","webpack://TNAFrontend/webpack/runtime/hasOwnProperty shorthand","webpack://TNAFrontend/webpack/runtime/make namespace object","webpack://TNAFrontend/./src/nationalarchives/all.mjs"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"TNAFrontend\"] = factory();\n\telse\n\t\troot[\"TNAFrontend\"] = factory();\n})(self, () => {\nreturn ","import { checkTableForScroll } from \"../../lib/helpers.mjs\";\n\nexport class Accordion {\n constructor($module) {\n this.$module = $module;\n this.$items = $module && $module.querySelectorAll(\".tna-accordion__item\");\n if (!this.$module || !this.$items) {\n return;\n }\n\n this.allowMultipleItemsOpen =\n this.$module.dataset.singleOpenItem !== \"true\";\n\n this.$items.forEach(($item) => this.initItem($item));\n this.initState();\n\n this.$toggleAllButton = this.$module.querySelector(\n \".tna-accordion__toggle-all\",\n );\n if (this.$toggleAllButton) {\n this.syncToggleAllButton();\n this.$toggleAllButton.removeAttribute(\"hidden\");\n this.$toggleAllButton.addEventListener(\"click\", () => {\n if (this.isAllOpen()) {\n this.$items.forEach(($item) => this.closeItem($item));\n } else {\n this.$items.forEach(($item) => this.openItem($item));\n }\n this.syncToggleAllButton();\n });\n }\n }\n\n initItem($item) {\n const $heading = $item.querySelector(\".tna-accordion__heading\");\n const $content = $item.querySelector(\".tna-accordion__body\");\n\n if (!$heading || !$content) {\n return;\n }\n\n $item.classList.add(\"tna-accordion__details\");\n $item.classList.remove(\"tna-accordion__item\");\n\n $heading.removeAttribute(\"class\");\n\n $content.classList.add(\"tna-accordion__content\");\n $content.classList.remove(\"tna-accordion__body\");\n $content.setAttribute(\"hidden\", \"\");\n\n const $headingButton = document.createElement(\"button\");\n $headingButton.classList.add(\"tna-accordion__summary\");\n $headingButton.setAttribute(\"type\", \"button\");\n $headingButton.setAttribute(\"aria-controls\", $content.id);\n $headingButton.innerText = $heading.innerText;\n $heading.innerText = \"\";\n $heading.appendChild($headingButton);\n\n $headingButton.addEventListener(\"click\", () => {\n const isOpen = $headingButton.getAttribute(\"aria-expanded\") === \"true\";\n if (isOpen) {\n this.closeItem($item);\n } else {\n this.openItem($item);\n }\n });\n }\n\n initState() {\n this.$items.forEach(($item) => {\n if ($item.dataset.isopen === \"true\") {\n this.openItem($item);\n } else {\n this.closeItem($item);\n }\n $item.removeAttribute(\"data-isopen\");\n });\n }\n\n openItem($item) {\n if (!this.allowMultipleItemsOpen) {\n this.closeAllItemsExcept($item);\n }\n const $headingButton = $item.querySelector(\".tna-accordion__summary\");\n const $content = $item.querySelector(\".tna-accordion__content\");\n $headingButton.setAttribute(\"aria-expanded\", \"true\");\n $headingButton.setAttribute(\n \"aria-label\",\n `${$headingButton.innerText.trim()}, Hide this section`,\n );\n $content.removeAttribute(\"hidden\");\n // $content.setAttribute(\"tabindex\", \"0\");\n this.syncToggleAllButton();\n\n const $tableWrapper = $content.querySelectorAll(\".tna-table-wrapper\");\n if ($tableWrapper) {\n $tableWrapper.forEach(($wrapper) => {\n checkTableForScroll($wrapper);\n });\n }\n }\n\n closeItem($item) {\n const $headingButton = $item.querySelector(\".tna-accordion__summary\");\n const $content = $item.querySelector(\".tna-accordion__content\");\n $headingButton.setAttribute(\"aria-expanded\", \"false\");\n $headingButton.setAttribute(\n \"aria-label\",\n `${$headingButton.innerText.trim()}, Show this section`,\n );\n $content.setAttribute(\"hidden\", \"\");\n // $content.setAttribute(\"tabindex\", \"-1\");\n this.syncToggleAllButton();\n }\n\n closeAllItemsExcept($excludeItem) {\n Array.from(this.$items)\n .filter(\n ($item) =>\n $item.querySelector(\".tna-accordion__summary\") !== $excludeItem &&\n $item\n .querySelector(\".tna-accordion__summary\")\n .getAttribute(\"aria-expanded\") === \"true\",\n )\n .forEach(($item) => this.closeItem($item));\n }\n\n isAllOpen() {\n return Array.from(this.$items).every(\n ($item) =>\n $item\n .querySelector(\".tna-accordion__summary\")\n .getAttribute(\"aria-expanded\") === \"true\",\n );\n }\n\n syncToggleAllButton() {\n if (this.$toggleAllButton) {\n if (this.isAllOpen()) {\n this.$toggleAllButton.innerText =\n this.$toggleAllButton.dataset.closeAllLabel || \"Hide all sections\";\n } else {\n this.$toggleAllButton.innerText =\n this.$toggleAllButton.dataset.openAllLabel || \"Show all sections\";\n }\n }\n }\n}\n","import uuidv4 from \"../../lib/uuid.mjs\";\n\nexport class Breadcrumbs {\n constructor($module) {\n this.$module = $module;\n this.$breadcrumbsList =\n $module && $module.querySelector(\".tna-breadcrumbs__list\");\n this.$breadcrumbs =\n $module &&\n this.$breadcrumbsList &&\n $module.querySelectorAll(\".tna-breadcrumbs__item\");\n\n if (!this.$module || !this.$breadcrumbsList || !this.$breadcrumbs) {\n return;\n }\n\n if (\n /* eslint-disable-next-line no-magic-numbers */\n this.$breadcrumbs.length > 2 &&\n !this.$module.classList.contains(\"tna-breadcrumbs--no-collapse\")\n ) {\n this.init();\n }\n }\n\n init() {\n const uniqueId = `tna-breadcrumbs-${uuidv4()}`;\n const $expandable = document.createElement(\"li\");\n $expandable.classList.add(\n \"tna-breadcrumbs__item\",\n \"tna-breadcrumbs__item--expandable\",\n );\n $expandable.style.display = \"none\";\n\n const $expandButton = document.createElement(\"button\");\n $expandButton.classList.add(\"tna-breadcrumbs__link\");\n $expandButton.innerHTML =\n \"<span class='tna-!--visually-hidden'>Expand breadcrumbs</span>…\";\n $expandButton.setAttribute(\"type\", \"button\");\n $expandButton.setAttribute(\"aria-expanded\", \"false\");\n $expandButton.setAttribute(\"aria-controls\", uniqueId);\n $expandButton.addEventListener(\"click\", () => {\n this.$module.classList.remove(\"tna-breadcrumbs--collapsed\");\n $expandable.remove();\n this.$module.setAttribute(\"tabindex\", \"0\");\n this.$module.focus();\n this.$module.addEventListener(\n \"blur\",\n () => {\n this.$module.removeAttribute(\"tabindex\");\n },\n { once: true },\n );\n });\n $expandable.appendChild($expandButton);\n\n this.$breadcrumbsList.setAttribute(\"id\", uniqueId);\n this.$breadcrumbsList.insertBefore(\n $expandable,\n /* eslint-disable-next-line no-magic-numbers */\n this.$breadcrumbs[this.$breadcrumbs.length - 2].nextSibling,\n );\n\n this.$module.classList.add(\"tna-breadcrumbs--collapsed\");\n }\n}\n","export class CodeBlock {\n constructor($module) {\n this.$module = $module;\n this.$code = this.$module.querySelector(\"pre code\");\n this.$copyButton = this.$module.querySelector(\".tna-code-block__copy\");\n\n if (\n !this.$module ||\n !this.$code ||\n !this.$copyButton ||\n !navigator.clipboard\n ) {\n return;\n }\n\n this.$copyButton.removeAttribute(\"hidden\");\n this.$module.classList.add(\"tna-code-block__copyable\");\n\n this.$copyButton.addEventListener(\"click\", async () => {\n try {\n await navigator.clipboard.writeText(this.$code.innerText);\n this.$copyButton.innerText = \"Code copied\";\n } catch {\n // Continue regardless of error\n }\n });\n\n this.$copyButton.addEventListener(\"blur\", () => {\n this.$copyButton.innerText = \"Copy code\";\n });\n }\n}\n","import Cookies from \"../../lib/cookies.mjs\";\n\nexport { Cookies };\n\nexport class CookieBanner {\n constructor($module) {\n this.$module = $module;\n this.$acceptButton = $module && $module.querySelector('[value=\"accept\"]');\n this.$rejectButton = $module && $module.querySelector('[value=\"reject\"]');\n this.$prompt =\n $module && $module.querySelector(\".tna-cookie-banner__message--prompt\");\n this.$acceptedMessage =\n $module && $module.querySelector(\".tna-cookie-banner__message--accepted\");\n this.$rejectedMessage =\n $module && $module.querySelector(\".tna-cookie-banner__message--rejected\");\n this.$closeButtons = $module && $module.querySelectorAll('[value=\"close\"]');\n\n if (\n !this.$module ||\n !this.$acceptButton ||\n !this.$rejectButton ||\n !this.$prompt ||\n !this.$acceptedMessage ||\n !this.$rejectedMessage ||\n !this.$closeButtons\n ) {\n return;\n }\n\n this.cookies = new Cookies({ newInstance: true });\n\n this.cookiePreferencesSetKey =\n this.$module.dataset.preferencesKey || \"cookie_preferences_set\";\n\n if (!this.cookies.policiesCorrectOnInit) {\n this.cookies.delete(this.cookiePreferencesSetKey);\n }\n\n if (\n !this.cookies.exists(this.cookiePreferencesSetKey) ||\n !this.cookies.hasValue(this.cookiePreferencesSetKey, \"true\")\n ) {\n this.$module.removeAttribute(\"hidden\");\n\n this.$acceptButton.addEventListener(\"click\", () => this.accept());\n this.$rejectButton.addEventListener(\"click\", () => this.reject());\n }\n }\n\n accept() {\n this.$prompt.setAttribute(\"hidden\", \"\");\n this.complete();\n this.cookies.acceptAllPolicies();\n this.$acceptedMessage.removeAttribute(\"hidden\");\n this.$acceptedMessage.setAttribute(\"tabindex\", \"0\");\n this.$acceptedMessage.focus();\n this.$acceptedMessage.addEventListener(\"blur\", () => {\n this.$acceptedMessage.removeAttribute(\"tabindex\");\n });\n }\n\n reject() {\n this.$prompt.setAttribute(\"hidden\", \"\");\n this.complete();\n this.cookies.rejectAllPolicies();\n this.$rejectedMessage.removeAttribute(\"hidden\");\n this.$rejectedMessage.setAttribute(\"tabindex\", \"0\");\n this.$rejectedMessage.focus();\n this.$rejectedMessage.addEventListener(\"blur\", () => {\n this.$rejectedMessage.removeAttribute(\"tabindex\");\n });\n }\n\n complete() {\n this.cookies.set(this.cookiePreferencesSetKey, true);\n this.$closeButtons.forEach(($closeButton) => {\n $closeButton.addEventListener(\"click\", () => this.close());\n });\n }\n\n close() {\n this.$module.setAttribute(\"hidden\", \"\");\n }\n}\n","import Cookies from \"../../lib/cookies.mjs\";\n\nexport { Cookies };\n\nexport class DateInputProgressive {\n constructor($module) {\n this.$module = $module;\n this.$yearWrapper =\n $module && $module.querySelector(\".tna-date-input__item--year\");\n this.$yearInput =\n this.$yearWrapper && this.$yearWrapper.querySelector(\"input\");\n this.$monthWrapper =\n $module && $module.querySelector(\".tna-date-input__item--month\");\n this.$monthInput =\n this.$monthWrapper && this.$monthWrapper.querySelector(\"input\");\n this.$dayWrapper =\n $module && $module.querySelector(\".tna-date-input__item--day\");\n this.$dayInput =\n this.$dayWrapper && this.$dayWrapper.querySelector(\"input\");\n\n if (!this.$module) {\n return;\n }\n\n this.update();\n window.addEventListener(\"pageshow\", () => this.update());\n\n if (this.$yearInput) {\n this.$yearInput.addEventListener(\"keyup\", () => this.update());\n this.$yearInput.addEventListener(\"change\", () => this.update());\n }\n if (this.$monthInput) {\n this.$monthInput.addEventListener(\"keyup\", () => this.update());\n this.$monthInput.addEventListener(\"change\", () => this.update());\n }\n if (this.$dayInput) {\n this.$dayInput.addEventListener(\"keyup\", () => this.update());\n this.$dayInput.addEventListener(\"change\", () => this.update());\n }\n }\n\n update() {\n if (this.isValidYear()) {\n this.showMonth();\n if (this.isValidMonth()) {\n this.showDay();\n } else {\n this.hideDay();\n }\n } else {\n this.hideMonth();\n this.hideDay();\n }\n }\n\n isValidYear() {\n if (!this.$yearInput) {\n return true;\n }\n const yearValue = parseInt(this.$yearInput.value.trim(), 10);\n /* eslint-disable-next-line no-magic-numbers */\n return !isNaN(this.$yearInput.value) && !isNaN(yearValue) && yearValue > 0;\n }\n\n isValidMonth() {\n if (!this.$monthInput) {\n return true;\n }\n const monthRawValue = this.$monthInput.value.trim();\n const monthIntValue = parseInt(monthRawValue, 10);\n const validMonthStrings = [\n \"january\",\n \"february\",\n \"march\",\n \"april\",\n \"may\",\n \"june\",\n \"july\",\n \"august\",\n \"september\",\n \"october\",\n \"november\",\n \"december\",\n \"jan\",\n \"feb\",\n \"mar\",\n \"apr\",\n \"jun\",\n \"jul\",\n \"aug\",\n \"sep\",\n \"oct\",\n \"nov\",\n \"dec\",\n ];\n return (\n (!isNaN(this.$monthInput.value) &&\n !isNaN(monthIntValue) &&\n /* eslint-disable-next-line no-magic-numbers */\n monthIntValue > 0 &&\n /* eslint-disable-next-line no-magic-numbers */\n monthIntValue <= 12) ||\n validMonthStrings.includes(monthRawValue.toLowerCase())\n );\n }\n\n showMonth() {\n if (this.$monthWrapper) {\n this.$monthWrapper.removeAttribute(\"hidden\");\n }\n }\n\n hideMonth() {\n if (this.$monthWrapper) {\n this.$monthWrapper.setAttribute(\"hidden\", \"\");\n }\n }\n\n showDay() {\n if (this.$dayWrapper) {\n this.$dayWrapper.removeAttribute(\"hidden\");\n }\n }\n\n hideDay() {\n if (this.$dayWrapper) {\n this.$dayWrapper.setAttribute(\"hidden\", \"\");\n }\n }\n}\n","export class ErrorSummary {\n constructor($module) {\n this.$module = $module;\n }\n\n init() {\n if (!this.$module) {\n return;\n }\n\n const disableAutoFocus =\n this.$module.dataset.disableAutofocus === \"true\" || false;\n\n if (!disableAutoFocus) {\n this.setFocus(this.$module);\n }\n\n this.$module.addEventListener(\"click\", (event) => this.handleClick(event));\n }\n\n /* eslint-disable-next-line class-methods-use-this */\n setFocus($element, options = {}) {\n const isFocusable = $element.getAttribute(\"tabindex\");\n\n if (!isFocusable) {\n $element.setAttribute(\"tabindex\", \"-1\");\n }\n\n /**\n * Handle element blur\n */\n function onBlur() {\n options.onBlur?.call($element);\n\n if (!isFocusable) {\n $element.removeAttribute(\"tabindex\");\n }\n }\n\n /**\n * Handle element focus\n */\n function onFocus() {\n $element.addEventListener(\"blur\", onBlur, { once: true });\n }\n\n // Add listener to reset element on blur, after focus\n $element.addEventListener(\"focus\", onFocus, { once: true });\n\n // Focus element\n options.onBeforeFocus?.call($element);\n $element.focus();\n }\n\n handleClick(event) {\n const $target = event.target;\n if ($target && this.focusTarget($target)) {\n event.preventDefault();\n }\n }\n\n /* eslint-disable-next-line class-methods-use-this */\n getFragmentFromUrl(url) {\n if (!url.includes(\"#\")) {\n return null;\n }\n\n return url.split(\"#\").pop();\n }\n\n focusTarget($target) {\n // If the element that was clicked was not a link, return early\n if (!($target instanceof HTMLAnchorElement)) {\n return false;\n }\n\n const inputId = this.getFragmentFromUrl($target.href);\n if (!inputId) {\n return false;\n }\n\n const $input = document.getElementById(inputId);\n if (!$input) {\n return false;\n }\n\n const $legendOrLabel = this.getAssociatedLegendOrLabel($input);\n if (!$legendOrLabel) {\n return false;\n }\n\n // Scroll the legend or label into view *before* calling focus on the input\n // To avoid extra scrolling in browsers that don't support `preventScroll`\n // (which at time of writing is most of them...)\n $legendOrLabel.scrollIntoView();\n $input.focus({ preventScroll: true });\n\n return true;\n }\n\n /**\n * Get associated legend or label\n *\n * Returns the first element that exists from this list:\n *\n * - The `<legend>` associated with the closest `<fieldset>` ancestor, as long\n * as the top of it is no more than half a viewport height away from the\n * bottom of the input\n * - The first `<label>` that is associated with the input using for=\"inputId\"\n * - The closest parent `<label>`\n *\n * @private\n * @param {Element} $input - The input\n * @returns {Element | null} Associated legend or label, or null if no\n * associated legend or label can be found\n */\n /* eslint-disable-next-line class-methods-use-this */\n getAssociatedLegendOrLabel($input) {\n const $fieldset = $input.closest(\"fieldset\");\n\n if ($fieldset) {\n const $legends = $fieldset.getElementsByTagName(\"legend\");\n\n if ($legends.length) {\n const [$candidateLegend] = $legends;\n\n // If the input type is radio or checkbox, always use the legend if\n // There is one.\n if (\n $input instanceof HTMLInputElement &&\n ($input.type === \"checkbox\" || $input.type === \"radio\")\n ) {\n return $candidateLegend;\n }\n\n // For other input types, only scroll to the fieldset’s legend (instead\n // Of the label associated with the input) if the input would end up in\n // The top half of the screen.\n //\n // This should avoid situations where the input either ends up off the\n // Screen, or obscured by a software keyboard.\n const legendTop = $candidateLegend.getBoundingClientRect().top;\n const inputRect = $input.getBoundingClientRect();\n\n // If the browser doesn't support Element.getBoundingClientRect().height\n // Or window.innerHeight (like IE8), bail and just link to the label.\n if (inputRect.height && window.innerHeight) {\n const inputBottom = inputRect.top + inputRect.height;\n\n /* eslint-disable no-magic-numbers */\n if (inputBottom - legendTop < window.innerHeight / 2) {\n return $candidateLegend;\n }\n }\n }\n }\n\n return (\n document.querySelector(`label[for='${$input.getAttribute(\"id\")}']`) ??\n $input.closest(\"label\")\n );\n }\n}\n","export class FileInputDroppable {\n constructor($module) {\n this.$module = $module;\n this.$body = $module && $module.querySelector(\".tna-form-item__body\");\n this.$input = this.$body && this.$body.querySelector(\".tna-file-input\");\n\n if (!this.$module || !this.$body || !this.$input) {\n return;\n }\n\n this.init();\n }\n\n init() {\n this.acceptMutltipleFiles = this.$input.hasAttribute(\"multiple\");\n\n this.$droppableArea = document.createElement(\"div\");\n this.$droppableArea.classList.add(\n \"tna-file-input__droppable\",\n \"tna-file-input__droppable--empty\",\n );\n this.$body.insertBefore(this.$droppableArea, this.$input);\n this.$droppableArea.appendChild(this.$input);\n\n this.$pseudoSelectFileText = document.createElement(\"span\");\n this.$pseudoSelectFileText.setAttribute(\"aria-live\", \"polite\");\n this.$pseudoSelectFileText.classList.add(\n \"tna-file-input__droppable-status\",\n );\n\n let fileText = \"file\";\n if (this.acceptMutltipleFiles) {\n fileText += \"s\";\n }\n\n this.$pseudoSelectFileText.textContent = `No ${fileText} selected`;\n this.$droppableArea.appendChild(this.$pseudoSelectFileText);\n\n const $droppableButtons = document.createElement(\"div\");\n $droppableButtons.classList.add(\n \"tna-button-group\",\n \"tna-button-group--small\",\n \"tna-!--margin-top-s\",\n \"tna-file-input__droppable-buttons\",\n );\n this.$droppableArea.appendChild($droppableButtons);\n\n const $pseudoSelectFileButton = document.createElement(\"span\");\n $pseudoSelectFileButton.classList.add(\"tna-button\");\n $pseudoSelectFileButton.textContent = `Choose ${fileText}`;\n $droppableButtons.appendChild($pseudoSelectFileButton);\n\n const $pseudoDropFileButton = document.createElement(\"span\");\n $pseudoDropFileButton.textContent = `or drop ${fileText}`;\n $droppableButtons.appendChild($pseudoDropFileButton);\n\n this.$droppableAreaAriaLabel = document.createElement(\"span\");\n this.$droppableAreaAriaLabel.classList.add(\"tna-visually-hidden\");\n this.$droppableAreaAriaLabel.setAttribute(\"aria-live\", \"assertive\");\n this.$droppableArea.appendChild(this.$droppableAreaAriaLabel);\n\n this.$input.addEventListener(\"dragenter\", (event) =>\n this.showDropTarget(event),\n );\n this.$input.addEventListener(\"dragleave\", () => this.hideDropTarget());\n this.$input.addEventListener(\"dragend\", () => this.hideDropTarget());\n this.$input.addEventListener(\"change\", () => this.onChange());\n this.$input.addEventListener(\"drop\", () => this.onChange());\n }\n\n /* eslint-disable-next-line class-methods-use-this */\n isContainingFiles(dataTransfer) {\n const hasNoTypesInfo = !dataTransfer.types.length;\n const isDraggingFiles = dataTransfer.types.some((type) => type === \"Files\");\n return hasNoTypesInfo || isDraggingFiles;\n }\n\n showDropTarget(event, updateAriaLabel = true) {\n if (event.dataTransfer && this.isContainingFiles(event.dataTransfer)) {\n let classToAdd = \"tna-file-input__droppable--over\";\n if (event.dataTransfer.items.length) {\n classToAdd = \"tna-file-input__droppable--over-multiple\";\n }\n this.$droppableArea.classList.add(classToAdd);\n\n if (updateAriaLabel) {\n this.$droppableAreaAriaLabel.textContent = \"Entered drop zone\";\n }\n }\n }\n\n hideDropTarget(updateAriaLabel = true) {\n this.$droppableArea.classList.remove(\n \"tna-file-input__droppable--over\",\n \"tna-file-input__droppable--over-multiple\",\n );\n if (updateAriaLabel) {\n this.$droppableAreaAriaLabel.textContent = \"Left drop zone\";\n }\n }\n\n onChange() {\n const { files } = this.$input;\n if (this.acceptMutltipleFiles) {\n if (files.length) {\n let fileText = \"file\";\n /* eslint-disable-next-line no-magic-numbers */\n if (files.length > 1) {\n fileText += \"s\";\n }\n const textContent = `${files.length} ${fileText} selected`;\n this.$pseudoSelectFileText.textContent = textContent;\n } else {\n this.$pseudoSelectFileText.textContent = `No files selected`;\n }\n } else {\n this.$pseudoSelectFileText.textContent =\n /* eslint-disable-next-line no-magic-numbers */\n files[0]?.name || `No file selected`;\n }\n if (files.length) {\n this.$droppableArea.classList.remove(\"tna-file-input__droppable--empty\");\n } else {\n this.$droppableArea.classList.add(\"tna-file-input__droppable--empty\");\n }\n this.hideDropTarget(false);\n }\n}\n","import Cookies from \"../../lib/cookies.mjs\";\n\nexport class Footer {\n constructor($module, themeCookieName = \"theme\") {\n this.$module = $module;\n this.$themeSelector =\n $module && $module.querySelector(\".tna-footer__theme-selector\");\n this.$themeSelectorNotice =\n $module && $module.querySelector(\".tna-footer__theme-selector-notice\");\n this.$themeSelectorEnableSettingsCookiesButton =\n this.$themeSelectorNotice &&\n this.$themeSelectorNotice.querySelector(\n \".tna-footer__theme-selector-enable-settings-cookies\",\n );\n this.$tnaTemplate = document.querySelector(\".tna-template\");\n\n if (\n !this.$module ||\n !this.$themeSelector ||\n !this.$themeSelectorNotice ||\n !this.$themeSelectorEnableSettingsCookiesButton ||\n !this.$tnaTemplate\n ) {\n return;\n }\n\n this.themeCookieName = themeCookieName;\n\n this.init();\n }\n\n init() {\n this.currentTheme = this.$themeSelector.dataset.themeOnLoad;\n\n this.cookies = new Cookies();\n\n this.$themeSelectorButtons = this.$themeSelector.querySelectorAll(\n \"button.tna-footer__theme-selector-button[value]\",\n );\n\n Array.from(this.$themeSelectorButtons).forEach(($themeSelectorButton) => {\n $themeSelectorButton.addEventListener(\"click\", (event) => {\n const $button = event.target;\n this.setTheme($button.value);\n this.selectThemeSelectorButton($button);\n });\n });\n\n this.$themeSelectorEnableSettingsCookiesButton.addEventListener(\n \"click\",\n () => {\n this.cookies.acceptPolicy(\"settings\");\n },\n );\n\n this.showThemeSelector();\n this.cookies.on(\"changePolicy\", (data) => {\n if (Object.hasOwn(data, \"settings\")) {\n if (data.settings === true) {\n this.cookies.set(this.themeCookieName, this.currentTheme);\n this.$themeSelectorNotice.setAttribute(\"hidden\", \"\");\n } else {\n this.cookies.delete(this.themeCookieName);\n this.$themeSelectorNotice.removeAttribute(\"hidden\");\n }\n }\n });\n }\n\n showThemeSelector() {\n this.$themeSelector.removeAttribute(\"hidden\");\n if (this.cookies.exists(this.themeCookieName)) {\n const $currentThemeButton = Array.from(this.$themeSelectorButtons).find(\n ($button) => $button.value === this.cookies.get(this.themeCookieName),\n );\n if ($currentThemeButton) {\n this.selectThemeSelectorButton($currentThemeButton);\n }\n }\n if (!this.cookies.isPolicyAccepted(\"settings\")) {\n this.$themeSelectorNotice.removeAttribute(\"hidden\");\n }\n }\n\n setTheme(theme) {\n if (theme === \"light\") {\n this.$tnaTemplate.classList.remove(\n \"tna-template--system-theme\",\n \"tna-template--dark-theme\",\n );\n } else if (theme === \"dark\") {\n this.$tnaTemplate.classList.remove(\"tna-template--system-theme\");\n this.$tnaTemplate.classList.add(`tna-template--dark-theme`);\n } else if (theme === \"system\") {\n this.$tnaTemplate.classList.remove(\"tna-template--dark-theme\");\n this.$tnaTemplate.classList.add(`tna-template--system-theme`);\n } else {\n return;\n }\n this.currentTheme = theme;\n if (this.cookies.isPolicyAccepted(\"settings\")) {\n this.cookies.set(this.themeCookieName, this.currentTheme);\n } else {\n this.$themeSelectorNotice.removeAttribute(\"hidden\");\n }\n }\n\n selectThemeSelectorButton($selectedButton) {\n Array.from(this.$themeSelectorButtons).forEach(($button) => {\n if ($button.value === $selectedButton.value) {\n $button.classList.remove(\"tna-button--plain\");\n $button.setAttribute(\"aria-current\", true);\n } else {\n $button.classList.add(\"tna-button--plain\");\n $button.removeAttribute(\"aria-current\");\n }\n });\n }\n}\n","export class Gallery {\n constructor($module) {\n this.$module = $module;\n this.$itemsContainer =\n $module && $module.querySelector(\".tna-gallery__items\");\n this.$items =\n this.$itemsContainer &&\n this.$itemsContainer.querySelectorAll(\".tna-gallery__item\");\n this.$navigation =\n $module && $module.querySelector(\".tna-gallery__navigation\");\n this.$navigationItems =\n this.$navigation &&\n $module.querySelectorAll(\".tna-gallery__navigation-item\");\n this.$navigationButtons =\n $module && $module.querySelector(\".tna-gallery__navigation-buttons\");\n\n if (\n !this.$module ||\n !this.$itemsContainer ||\n !this.$items ||\n /* eslint-disable-next-line no-magic-numbers */\n this.$items.length < 2 ||\n !this.$navigation ||\n !this.$navigationItems ||\n !this.$navigationButtons\n ) {\n return;\n }\n\n this.$module.classList.add(\"tna-gallery--interactive\");\n\n this.$navigationButtonPrev = this.$navigationButtons.querySelector(\n \".tna-gallery__navigation-prev\",\n );\n this.$navigationButtonNext = this.$navigationButtons.querySelector(\n \".tna-gallery__navigation-next\",\n );\n\n this.setup();\n /* eslint-disable-next-line no-magic-numbers */\n this.currentId = this.$items[0].id;\n this.showItem(this.currentId);\n }\n\n setup() {\n this.$items.forEach(($item) => {\n $item.setAttribute(\"hidden\", \"\");\n $item.setAttribute(\"aria-hidden\", \"true\");\n $item\n .querySelector(\".tna-gallery__item-header\")\n ?.setAttribute(\"aria-hidden\", \"true\");\n });\n this.$navigation.removeAttribute(\"hidden\");\n this.$navigationItems.forEach(($item) => {\n $item.addEventListener(\"click\", () => {\n this.showItem($item.getAttribute(\"aria-controls\"));\n this.$itemsContainer.setAttribute(\"tabindex\", \"0\");\n this.$itemsContainer.focus();\n });\n });\n this.$module.addEventListener(\"keydown\", (event) => {\n let preventDefaultKeyAction = false;\n switch (event.key) {\n case \"ArrowLeft\":\n case \"ArrowUp\":\n this.showPreviousItem();\n preventDefaultKeyAction = true;\n break;\n case \"ArrowRight\":\n case \"ArrowDown\":\n this.showNextItem();\n preventDefaultKeyAction = true;\n break;\n case \"Home\":\n this.showFirstItem();\n preventDefaultKeyAction = true;\n break;\n case \"End\":\n this.showLastItem();\n preventDefaultKeyAction = true;\n break;\n default:\n break;\n }\n if (preventDefaultKeyAction) {\n event.stopPropagation();\n event.preventDefault();\n }\n });\n\n this.$navigationButtons?.removeAttribute(\"hidden\");\n this.$navigationButtonPrev?.addEventListener(\"click\", () => {\n this.showPreviousItem();\n });\n this.$navigationButtonNext?.addEventListener(\"click\", () => {\n this.showNextItem();\n });\n\n this.$liveRegion = document.createElement(\"div\");\n this.$liveRegion.setAttribute(\"aria-live\", \"polite\");\n this.$liveRegion.setAttribute(\"aria-atomic\", \"true\");\n this.$liveRegion.setAttribute(\"class\", \"tna-gallery__item-header\");\n this.$itemsContainer.prepend(this.$liveRegion);\n this.$itemsContainer.classList.add(\"tna-gallery__items--hide-item-titles\");\n this.$itemsContainer.addEventListener(\"blur\", () =>\n this.$itemsContainer.removeAttribute(\"tabindex\"),\n );\n }\n\n showItem(id) {\n this.$items.forEach(($item) => {\n if (id && $item.id === id) {\n $item.removeAttribute(\"hidden\");\n $item.removeAttribute(\"aria-hidden\");\n } else {\n $item.setAttribute(\"hidden\", \"\");\n $item.setAttribute(\"aria-hidden\", \"true\");\n }\n });\n this.$navigationItems.forEach(($item) => {\n if (id) {\n if ($item.getAttribute(\"aria-controls\") === id) {\n $item.setAttribute(\"aria-current\", \"true\");\n } else {\n $item.setAttribute(\"aria-current\", \"false\");\n }\n } else {\n $item.setAttribute(\"aria-current\", \"false\");\n }\n });\n this.currentId = id;\n /* eslint-disable-next-line no-magic-numbers */\n this.$liveRegion.textContent = `Image ${this.getCurrentItemIndex() + 1} of ${this.$items.length}`;\n }\n\n getCurrentItemIndex() {\n return Array.from(this.$items).findIndex(\n ($item) => $item.id === this.currentId,\n );\n }\n\n showPreviousItem() {\n /* eslint-disable-next-line no-magic-numbers */\n let nextIndexToShow = this.getCurrentItemIndex() - 1;\n /* eslint-disable-next-line no-magic-numbers */\n if (nextIndexToShow < 0) {\n /* eslint-disable-next-line no-magic-numbers */\n nextIndexToShow = this.$items.length - 1;\n }\n this.showItem(this.$items[nextIndexToShow].id);\n }\n\n showNextItem() {\n /* eslint-disable-next-line no-magic-numbers */\n let nextIndexToShow = this.getCurrentItemIndex() + 1;\n if (nextIndexToShow >= this.$items.length) {\n /* eslint-disable-next-line no-magic-numbers */\n nextIndexToShow = 0;\n }\n this.showItem(this.$items[nextIndexToShow].id);\n }\n\n showFirstItem() {\n /* eslint-disable-next-line no-magic-numbers */\n this.showItem(this.$items[0].id);\n }\n\n showLastItem() {\n /* eslint-disable-next-line no-magic-numbers */\n this.showItem(this.$items[this.$items.length - 1].id);\n }\n}\n","export class GlobalHeader {\n constructor($module) {\n this.$module = $module;\n this.$toggleButton =\n $module && $module.querySelector(\".tna-global-header__navigation-button\");\n this.$navigation =\n $module &&\n $module.querySelector(\".tna-global-header__navigation-wrapper\");\n this.$topNavigation =\n $module &&\n $module.querySelector(\".tna-global-header__top-navigation-wrapper\");\n this.$links =\n $module &&\n ((this.$navigation &&\n this.$navigation.querySelectorAll(\"[tabindex='0']\")) ||\n (this.$topNavigation &&\n this.$topNavigation.querySelectorAll(\"[tabindex='0']\")));\n this.menuOpened = false;\n this.mql = window.matchMedia(\"(max-width: 48em)\");\n\n if (\n !this.$module ||\n !this.$toggleButton ||\n (!this.$navigation && !this.$topNavigation)\n ) {\n return;\n }\n\n this.$toggleButton.removeAttribute(\"hidden\");\n this.syncState();\n this.$toggleButton.addEventListener(\"click\", () =>\n this.handleToggleNavigation(),\n );\n if (\"addEventListener\" in this.mql) {\n this.mql.addEventListener(\"change\", () => this.syncState());\n } else {\n this.mql.addListener(() => this.syncState());\n }\n\n this.$module.addEventListener(\"keyup\", (event) => {\n if (event.code === \"Escape\" && this.mql.matches && this.menuOpened) {\n this.menuOpened = false;\n this.syncState();\n this.$toggleButton.focus();\n }\n });\n }\n\n handleToggleNavigation() {\n this.menuOpened = !this.menuOpened;\n this.syncState();\n }\n\n syncState() {\n if (this.mql.matches) {\n if (this.menuOpened) {\n this.show();\n } else {\n this.hide();\n }\n } else {\n this.show();\n }\n }\n\n hide() {\n if (this.$navigation) {\n this.$navigation.hidden = true;\n this.$navigation.setAttribute(\"aria-hidden\", \"true\");\n }\n if (this.$topNavigation) {\n this.$topNavigation.hidden = true;\n this.$topNavigation.setAttribute(\"aria-hidden\", \"true\");\n }\n this.$toggleButton.setAttribute(\"aria-expanded\", \"false\");\n this.$toggleButton.setAttribute(\"title\", \"Open menu\");\n this.$toggleButton.classList.remove(\n \"tna-global-header__navigation-button--opened\",\n );\n /* eslint-disable-next-line no-magic-numbers */\n for (let index = 0; index < this.$links.length; index += 1) {\n this.$links[index].setAttribute(\"tabindex\", \"-1\");\n }\n }\n\n show() {\n if (this.$navigation) {\n this.$navigation.hidden = false;\n this.$navigation.setAttribute(\"aria-hidden\", \"false\");\n }\n if (this.$topNavigation) {\n this.$topNavigation.hidden = false;\n this.$topNavigation.setAttribute(\"aria-hidden\", \"false\");\n }\n this.$toggleButton.setAttribute(\"aria-expanded\", \"true\");\n this.$toggleButton.setAttribute(\"title\", \"Close menu\");\n this.$toggleButton.classList.add(\n \"tna-global-header__navigation-button--opened\",\n );\n /* eslint-disable-next-line no-magic-numbers */\n for (let index = 0; index < this.$links.length; index += 1) {\n this.$links[index].setAttribute(\"tabindex\", \"0\");\n }\n }\n}\n","export class Header {\n constructor($module) {\n this.$module = $module;\n this.$toggleButton =\n $module && $module.querySelector(\".tna-header__navigation-button\");\n this.$navigation =\n $module && $module.querySelector(\".tna-header__navigation\");\n this.$links =\n $module &&\n this.$navigation &&\n this.$navigation.querySelectorAll(\"[tabindex='0']\");\n this.menuOpened = false;\n this.mql = window.matchMedia(\"(max-width: 48em)\");\n\n if (!this.$module || !this.$toggleButton || !this.$navigation) {\n return;\n }\n\n this.$toggleButton.removeAttribute(\"hidden\");\n this.syncState();\n this.$toggleButton.addEventListener(\"click\", () =>\n this.handleToggleNavigation(),\n );\n if (\"addEventListener\" in this.mql) {\n this.mql.addEventListener(\"change\", () => this.syncState());\n } else {\n this.mql.addListener(() => this.syncState());\n }\n\n this.$module.addEventListener(\"keyup\", (event) => {\n if (event.code === \"Escape\" && this.menuOpened && this.mql.matches) {\n this.menuOpened = false;\n this.syncState();\n this.$toggleButton.focus();\n }\n });\n }\n\n handleToggleNavigation() {\n this.menuOpened = !this.menuOpened;\n this.syncState();\n }\n\n syncState() {\n if (this.mql.matches) {\n if (this.menuOpened) {\n this.show();\n } else {\n this.hide();\n }\n } else {\n this.show();\n }\n }\n\n show() {\n this.$navigation.classList.add(\"tna-header__navigation--open\");\n this.$navigation.removeAttribute(\"hidden\");\n this.$navigation.setAttribute(\"aria-hidden\", \"false\");\n this.$toggleButton.setAttribute(\"aria-expanded\", \"true\");\n this.$toggleButton.setAttribute(\"title\", \"Close menu\");\n this.$toggleButton.classList.add(\"tna-header__navigation-button--opened\");\n\n /* eslint-disable-next-line no-magic-numbers */\n for (let index = 0; index < this.$links.length; index += 1) {\n this.$links[index].setAttribute(\"tabindex\", \"0\");\n }\n }\n\n hide() {\n this.$navigation.classList.remove(\"tna-header__navigation--open\");\n this.$navigation.hidden = true;\n this.$navigation.setAttribute(\"aria-hidden\", \"true\");\n this.$toggleButton.setAttribute(\"aria-expanded\", \"false\");\n this.$toggleButton.setAttribute(\"title\", \"Open menu\");\n this.$toggleButton.classList.remove(\n \"tna-header__navigation-button--opened\",\n );\n\n /* eslint-disable-next-line no-magic-numbers */\n for (let index = 0; index < this.$links.length; index += 1) {\n this.$links[index].setAttribute(\"tabindex\", \"-1\");\n }\n }\n}\n","import uuidv4 from \"../../lib/uuid.mjs\";\n\nexport class Picture {\n constructor($module) {\n this.$module = $module;\n this.$imageWrapper =\n $module && $module.querySelector(\".tna-picture__image-wrapper\");\n\n this.$transcriptToggle =\n this.$imageWrapper &&\n this.$imageWrapper.querySelector(\".tna-picture__toggle-transcript\");\n\n this.$transcript =\n $module && $module.querySelector(\".tna-picture__transcript\");\n this.transcriptOpened = false;\n\n if (\n !this.$module ||\n !this.$imageWrapper ||\n !this.$transcriptToggle ||\n !this.$transcript\n ) {\n return;\n }\n\n this.openLabel =\n this.$module.dataset.informationLabelOpen || \"Open transcript\";\n this.closeLabel =\n this.$module.dataset.informationLabelClose || \"Close transcript\";\n\n this.init();\n }\n\n init() {\n const uniqueId = `tna-picture-${uuidv4()}`;\n\n this.$transcriptToggle.removeAttribute(\"hidden\");\n this.$transcriptToggle.setAttribute(\"aria-controls\", uniqueId);\n this.$transcriptToggle.innerText = this.openLabel;\n this.$transcriptToggle.addEventListener(\"click\", () =>\n this.toggleTranscript(),\n );\n\n this.$transcript.setAttribute(\"id\", uniqueId);\n this.$transcript.setAttribute(\"hidden\", \"\");\n\n this.$transcript.addEventListener(\"keydown\", (event) => {\n switch (event.key) {\n case \"Escape\":\n this.toggleTranscript();\n this.$transcriptToggle.focus();\n break;\n default:\n break;\n }\n });\n }\n\n toggleTranscript() {\n this.transcriptOpened = !this.transcriptOpened;\n if (this.transcriptOpened) {\n this.$transcriptToggle.setAttribute(\"aria-expanded\", true);\n this.$transcriptToggle.innerText = this.closeLabel;\n this.$transcript.removeAttribute(\"hidden\");\n } else {\n this.$transcriptToggle.setAttribute(\"aria-expanded\", false);\n this.$transcriptToggle.innerText = this.openLabel;\n this.$transcript.setAttribute(\"hidden\", \"\");\n }\n }\n}\n","export class Sidebar {\n constructor($module, options = {}) {\n this.$module = $module;\n this.items =\n $module &&\n Array.from($module.querySelectorAll(\".tna-sidebar__item\"))\n .map(($item) => {\n const id = $item\n .querySelector(\".tna-sidebar__link[href^='#']\")\n .getAttribute(\"href\")\n /* eslint-disable-next-line no-magic-numbers */\n .substring(1);\n const target = document.getElementById(id);\n return {\n $item,\n id,\n target,\n };\n })\n .filter((item) => item.target);\n\n if (!this.$module || !this.items) {\n return;\n }\n\n /* eslint-disable-next-line no-magic-numbers */\n const { scrollTopThreshold = 0, disableHighlightSize = \"small\" } = options;\n this.scrollTopThreshold = scrollTopThreshold;\n this.disableHighlightSize = disableHighlightSize;\n\n this.init();\n }\n\n init() {\n this.breakpoints = {\n tiny:\n getComputedStyle(document.documentElement).getPropertyValue(\n \"--media-breakpoint-tiny\",\n ) || \"480px\",\n small:\n getComputedStyle(document.documentElement).getPropertyValue(\n \"--media-breakpoint-small\",\n ) || \"768px\",\n medium:\n getComputedStyle(document.documentElement).getPropertyValue(\n \"--media-breakpoint-medium\",\n ) || \"1024px\",\n };\n\n if (this.disableHighlightSize) {\n if (!Object.keys(this.breakpoints).includes(this.disableHighlightSize)) {\n throw new Error(\n `Invalid value for disableHighlightSize: ${this.disableHighlightSize}. Expected one of: ${Object.keys(this.breakpoints).join(\", \")}`,\n );\n }\n this.hideOnDevice = window.matchMedia(\n `(max-width: ${this.breakpoints[this.disableHighlightSize]})`,\n );\n } else {\n this.hideOnDevice = null;\n }\n\n this.currentItem = null;\n\n window.addEventListener(\"scroll\", () => this.highlightCurrentSection());\n window.addEventListener(\"resize\", () => this.highlightCurrentSection());\n this.highlightCurrentSection();\n }\n\n highlightCurrentSection() {\n if (this.hideOnDevice && this.hideOnDevice.matches) {\n this.items.forEach((item) => {\n item.$item.classList.remove(\"tna-sidebar__item--current\");\n });\n this.currentItem = null;\n return;\n }\n\n const $topItem = this.items.findLast(\n (item) =>\n Math.floor(item.target.getBoundingClientRect().top) <=\n this.scrollTopThreshold,\n );\n\n if ($topItem !== this.currentItem) {\n this.items.forEach((item) => {\n if ($topItem && item === $topItem) {\n this.currentItem = item;\n this.currentItem.$item.classList.add(\"tna-sidebar__item--current\");\n } else {\n item.$item.classList.remove(\"tna-sidebar__item--current\");\n }\n });\n }\n this.currentItem = $topItem || null;\n }\n}\n","export class SkipLink {\n linkedElementListener = false;\n\n constructor($module) {\n this.$module = $module;\n this.linkedElementId = $module.getAttribute(\"href\")?.split(\"#\").pop();\n this.$linkedElement =\n $module &&\n this.linkedElementId &&\n document.getElementById(this.linkedElementId);\n\n if (this.$module && this.$linkedElement) {\n this.$module.addEventListener(\"click\", () => this.focusLinkedElement());\n }\n }\n\n focusLinkedElement() {\n if (!this.$linkedElement.getAttribute(\"tabindex\")) {\n this.$linkedElement.setAttribute(\"tabindex\", \"-1\");\n this.$linkedElement.classList.add(\"tna-!--no-focus-style\");\n\n if (!this.linkedElementListener) {\n this.$linkedElement.addEventListener(\"blur\", () =>\n this.removeFocusProperties(),\n );\n this.linkedElementListener = true;\n }\n }\n\n this.$linkedElement.focus();\n }\n\n removeFocusProperties() {\n this.$linkedElement.removeAttribute(\"tabindex\");\n this.$linkedElement.classList.remove(\"tna-!--no-focus-style\");\n }\n}\n","export class Tabs {\n constructor($module) {\n this.$module = $module;\n this.$tabList = $module && $module.querySelector(\".tna-tabs__list\");\n this.$tabListItemLinks =\n $module &&\n this.$tabList &&\n this.$tabList.querySelectorAll(\".tna-tabs__button\");\n this.$tabItems = $module && $module.querySelectorAll(\".tna-tabs__item\");\n\n if (\n !this.$module ||\n !this.$tabList ||\n !this.$tabListItemLinks ||\n !this.$tabItems ||\n this.$tabListItemLinks.length !== this.$tabItems.length\n ) {\n return;\n }\n\n this.currentTabIndex = 0;\n this.init();\n }\n\n init() {\n this.$module.classList.add(\"tna-tabs--interactive\");\n this.$tabList.removeAttribute(\"hidden\");\n this.$tabListItemLinks.forEach(($tabListItemLink) => {\n const tabPanelID = $tabListItemLink.getAttribute(\"aria-controls\");\n $tabListItemLink.setAttribute(\"aria-selected\", false);\n const $tabPanel = document.getElementById(tabPanelID);\n $tabPanel.setAttribute(\"aria-labelledby\", $tabListItemLink.id);\n $tabPanel.setAttribute(\"role\", \"tabpanel\");\n $tabListItemLink.addEventListener(\n \"click\",\n (event) => this.handleItemLinkClick(event),\n true,\n );\n });\n this.switchTabByIndex(this.currentTabIndex);\n this.$module.addEventListener(\"keydown\", (event) =>\n this.handleItemLinkKeyDown(event),\n );\n }\n\n handleItemLinkClick(itemLinkClickEvent) {\n itemLinkClickEvent.preventDefault();\n const targetItem =\n itemLinkClickEvent.currentTarget.getAttribute(\"aria-controls\");\n this.switchTabByID(targetItem);\n }\n\n handleItemLinkKeyDown(itemLinkKeyDownEvent) {\n let preventDefaultKeyAction = false;\n switch (itemLinkKeyDownEvent.key) {\n case \"ArrowLeft\":\n case \"ArrowUp\":\n this.previousTab();\n preventDefaultKeyAction = true;\n break;\n case \"ArrowRight\":\n case \"ArrowDown\":\n this.nextTab();\n preventDefaultKeyAction = true;\n break;\n case \"Home\":\n /* eslint-disable-next-line no-magic-numbers */\n this.switchTabByIndex(0, true);\n preventDefaultKeyAction = true;\n break;\n case \"End\":\n /* eslint-disable-next-line no-magic-numbers */\n this.switchTabByIndex(this.$tabListItemLinks.length - 1, true);\n preventDefaultKeyAction = true;\n break;\n default:\n break;\n }\n if (preventDefaultKeyAction) {\n itemLinkKeyDownEvent.stopPropagation();\n itemLinkKeyDownEvent.preventDefault();\n }\n }\n\n nextTab() {\n /* eslint-disable-next-line no-magic-numbers */\n if (this.currentTabIndex < this.$tabListItemLinks.length - 1) {\n /* eslint-disable-next-line no-magic-numbers */\n this.switchTabByIndex(this.currentTabIndex + 1, true);\n } else {\n /* eslint-disable-next-line no-magic-numbers */\n this.switchTabByIndex(0, true);\n }\n }\n\n previousTab() {\n /* eslint-disable-next-line no-magic-numbers */\n if (this.currentTabIndex >= 1) {\n /* eslint-disable-next-line no-magic-numbers */\n this.switchTabByIndex(this.currentTabIndex - 1, true);\n } else {\n /* eslint-disable-next-line no-magic-numbers */\n this.switchTabByIndex(this.$tabListItemLinks.length - 1, true);\n }\n }\n\n switchTabByIndex(newIndex, switchFocus = false) {\n this.currentTabIndex = newIndex;\n this.$tabListItemLinks.forEach(($tabListItemLink, index) => {\n if (index === this.currentTabIndex) {\n $tabListItemLink.setAttribute(\"aria-selected\", true);\n $tabListItemLink.setAttribute(\"tabindex\", \"0\");\n if (switchFocus) {\n $tabListItemLink.focus();\n }\n } else {\n $tabListItemLink.setAttribute(\"aria-selected\", false);\n $tabListItemLink.setAttribute(\"tabindex\", \"-1\");\n }\n });\n this.$tabItems.forEach(($tabItem, index) => {\n if (index === this.currentTabIndex) {\n $tabItem.removeAttribute(\"hidden\");\n $tabItem.setAttribute(\"tabindex\", \"0\");\n } else {\n $tabItem.setAttribute(\"hidden\", \"\");\n $tabItem.setAttribute(\"tabindex\", \"-1\");\n }\n });\n }\n\n switchTabByID(targetId) {\n const index = Array.from(this.$tabItems).findIndex(\n ($tabItem) => $tabItem.getAttribute(\"id\") === targetId,\n );\n this.switchTabByIndex(index);\n }\n}\n","export class TextInputPassword {\n constructor($module) {\n this.$module = $module;\n this.$input = $module && $module.querySelector(\".tna-text-input\");\n\n if (\n !this.$module ||\n !this.$input ||\n this.$input.getAttribute(\"type\") !== \"password\"\n ) {\n return;\n }\n\n this.$textInputWrapper = document.createElement(\"div\");\n this.$textInputWrapper.classList.add(\"tna-text-input-wrapper\");\n\n this.$textInputPasswordToggle = document.createElement(\"button\");\n this.$textInputPasswordToggle.setAttribute(\"type\", \"button\");\n this.$textInputPasswordToggle.classList.add(\n \"tna-button\",\n \"tna-button--small\",\n \"tna-button--icon-only\",\n );\n this.$textInputPasswordToggle.setAttribute(\"aria-controls\", this.$input.id);\n this.updateTogglePasswordButtonText();\n\n this.$textInputWrapper.appendChild(this.$input);\n this.$textInputWrapper.appendChild(this.$textInputPasswordToggle);\n this.$module.appendChild(this.$textInputWrapper);\n\n this.$textInputPasswordToggle.addEventListener(\"click\", () => {\n this.togglePasswordType();\n this.$input.focus();\n });\n }\n\n togglePasswordType() {\n if (this.$input.getAttribute(\"type\") === \"password\") {\n this.$input.setAttribute(\"type\", \"text\");\n } else {\n this.$input.setAttribute(\"type\", \"password\");\n }\n this.updateTogglePasswordButtonText();\n }\n\n updateTogglePasswordButtonText() {\n if (this.$input.getAttribute(\"type\") === \"password\") {\n this.$textInputPasswordToggle.innerHTML = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 640 640\" height=\"24\" aria-hidden=\"true\" focusable=\"false\"><!--!Font Awesome Free v7.0.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--><path d=\"M320 96C239.2 96 174.5 132.8 127.4 176.6C80.6 220.1 49.3 272 34.4 307.7C31.1 315.6 31.1 324.4 34.4 332.3C49.3 368 80.6 420 127.4 463.4C174.5 507.1 239.2 544 320 544C400.8 544 465.5 507.2 512.6 463.4C559.4 419.9 590.7 368 605.6 332.3C608.9 324.4 608.9 315.6 605.6 307.7C590.7 272 559.4 220 512.6 176.6C465.5 132.9 400.8 96 320 96zM176 320C176 240.5 240.5 176 320 176C399.5 176 464 240.5 464 320C464 399.5 399.5 464 320 464C240.5 464 176 399.5 176 320zM320 256C320 291.3 291.3 320 256 320C244.5 320 233.7 317 224.3 311.6C223.3 322.5 224.2 333.7 227.2 344.8C240.9 396 293.6 426.4 344.8 412.7C396 399 426.4 346.3 412.7 295.1C400.5 249.4 357.2 220.3 311.6 224.3C316.9 233.6 320 244.4 320 256z\" /></svg>Show password`;\n this.$textInputPasswordToggle.setAttribute(\"title\", \"Show password\");\n this.$textInputPasswordToggle.setAttribute(\"aria-label\", \"Show password\");\n } else {\n this.$textInputPasswordToggle.innerHTML = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 640 640\" height=\"24\" aria-hidden=\"true\" focusable=\"false\"><!--!Font Awesome Free v7.0.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--><path d=\"M73 39.1C63.6 29.7 48.4 29.7 39.1 39.1C29.8 48.5 29.7 63.7 39 73.1L567 601.1C576.4 610.5 591.6 610.5 600.9 601.1C610.2 591.7 610.3 576.5 600.9 567.2L504.5 470.8C507.2 468.4 509.9 466 512.5 463.6C559.3 420.1 590.6 368.2 605.5 332.5C608.8 324.6 608.8 315.8 605.5 307.9C590.6 272.2 559.3 220.2 512.5 176.8C465.4 133.1 400.7 96.2 319.9 96.2C263.1 96.2 214.3 114.4 173.9 140.4L73 39.1zM236.5 202.7C260 185.9 288.9 176 320 176C399.5 176 464 240.5 464 320C464 351.1 454.1 379.9 437.3 403.5L402.6 368.8C415.3 347.4 419.6 321.1 412.7 295.1C399 243.9 346.3 213.5 295.1 227.2C286.5 229.5 278.4 232.9 271.1 237.2L236.4 202.5zM357.3 459.1C345.4 462.3 332.9 464 320 464C240.5 464 176 399.5 176 320C176 307.1 177.7 294.6 180.9 282.7L101.4 203.2C68.8 240 46.4 279 34.5 307.7C31.2 315.6 31.2 324.4 34.5 332.3C49.4 368 80.7 420 127.5 463.4C174.6 507.1 239.3 544 320.1 544C357.4 544 391.3 536.1 421.6 523.4L357.4 459.2z\" /></svg>Hide password`;\n this.$textInputPasswordToggle.setAttribute(\"title\", \"Hide password\");\n this.$textInputPasswordToggle.setAttribute(\"aria-label\", \"Hide password\");\n }\n }\n}\n","export class TextAreaItemisedRows {\n constructor($module, options = {}) {\n this.$module = $module;\n this.$formFieldInput =\n this.$module && this.$module.querySelector(\".tna-textarea\");\n this.$formFieldInputHint =\n this.$module && this.$module.querySelector(\".tna-form-item__hint\");\n this.$formFieldBody =\n this.$module && this.$module.querySelector(\".tna-form-item__body\");\n\n if (\n !this.$module ||\n !this.$formFieldInput ||\n !this.$formFieldBody ||\n this.$formFieldInput.getAttribute(\"hidden\") !== null\n ) {\n return;\n }\n\n const { enhancedHint } = options;\n this.enhancedHint = enhancedHint || \"Enter an item and press enter\";\n\n this.init();\n }\n\n init() {\n this.values = this.$formFieldInput.value\n .split(\"\\n\")\n .map((value) => value.trim())\n .filter((value) => value);\n\n this.id = this.$formFieldInput.id;\n\n this.$formFieldNewInput = document.createElement(\"input\");\n this.$formFieldNewInput.classList.add(\"tna-text-input\");\n [\"id\", \"aria-describedby\"].forEach((attribute) => {\n this.$formFieldNewInput.setAttribute(\n attribute,\n this.$formFieldInput.getAttribute(attribute),\n );\n this.$formFieldInput.removeAttribute(attribute);\n });\n this.$formFieldBody.appendChild(this.$formFieldNewInput);\n this.$formFieldInput.setAttribute(\"hidden\", \"\");\n this.$formFieldInput.addEventListener(\"keyup\", () => this.updateList());\n this.$formFieldNewInput.addEventListener(\"keypress\", (event) => {\n if (event.key === \"Enter\") {\n this.appendValue(event.target.value);\n }\n });\n\n this.$formFieldNewInputAddButton = document.createElement(\"button\");\n this.$formFieldNewInputAddButton.setAttribute(\"type\", \"button\");\n this.$formFieldNewInputAddButton.classList.add(\n \"tna-button\",\n \"tna-button--small\",\n );\n this.$formFieldNewInputAddButtonInner = document.createElement(\"span\");\n this.$formFieldNewInputAddButtonInner.innerText = \"Add\";\n this.$formFieldNewInputAddButtonInnerExtra = document.createElement(\"span\");\n this.$formFieldNewInputAddButtonInnerExtra.classList.add(\n \"tna-visually-hidden\",\n );\n this.$formFieldNewInputAddButtonInnerExtra.innerText = \" to list\";\n this.$formFieldNewInputAddButtonInner.appendChild(\n this.$formFieldNewInputAddButtonInnerExtra,\n );\n this.$formFieldNewInputAddButton.appendChild(\n this.$formFieldNewInputAddButtonInner,\n );\n this.$formFieldBody.appendChild(this.$formFieldNewInputAddButton);\n this.$formFieldNewInputAddButton.addEventListener(\"click\", () => {\n this.appendValue(this.$formFieldNewInput.value);\n });\n\n this.$formFieldLiveAria = document.createElement(\"div\");\n this.$formFieldLiveAria.setAttribute(\"aria-live\", \"assertive\");\n this.$formFieldLiveAria.classList.add(\"tna-visually-hidden\");\n this.$module.appendChild(this.$formFieldLiveAria);\n\n this.$formFieldCounter = document.createElement(\"p\");\n this.$formFieldCounter.id = `${this.id}-list-helper`;\n this.$formFieldCounter.classList.add(\"tna-!--margin-top-xs\");\n this.$module.appendChild(this.$formFieldCounter);\n\n this.$formFieldNewInput.setAttribute(\n \"aria-describedby\",\n `${this.$formFieldNewInput.getAttribute(\"aria-describedby\")} ${\n this.$formFieldCounter.id\n }`,\n );\n\n this.$valuesList = document.createElement(\"ul\");\n this.$valuesList.classList.add(\n \"tna-compound-filters\",\n \"tna-!--margin-top-xs\",\n );\n this.$valuesList.addEventListener(\"blur\", () => {\n this.$valuesList.removeAttribute(\"tabindex\");\n this.updateAriaText(\"\");\n });\n this.$module.appendChild(this.$valuesList);\n\n if (!this.$formFieldInputHint) {\n this.$formFieldInputHint = document.createElement(\"p\");\n this.$formFieldInputHint.classList.add(\"tna-form-item__hint\");\n this.$formFieldBody.parentNode.insertBefore(\n this.$formFieldInputHint,\n this.$formFieldBody,\n );\n }\n this.$formFieldInputHint.innerText = this.enhancedHint;\n\n this.updateList();\n }\n\n updateAriaText(content) {\n this.$formFieldLiveAria.innerText = content;\n }\n\n /* eslint-disable-next-line class-methods-use-this */\n normaliseValue(value) {\n return value.replace(/\\s{2,}/u, \" \").trim();\n }\n\n isValueInList(value) {\n return this.values\n .map((eachValue) => this.normaliseValue(eachValue).toLowerCase())\n .includes(value.toLowerCase().trim());\n }\n\n appendValue(value) {\n const newValue = this.normaliseValue(value);\n if (newValue) {\n if (this.isValueInList(newValue)) {\n this.updateAriaText(`'${newValue}' already added`);\n } else {\n this.values.push(newValue);\n this.$formFieldInput.value = this.values.join(\"\\n\");\n this.updateList();\n this.updateAriaText(`'${newValue}' added`);\n }\n } else {\n this.updateAriaText(\"Enter an item to add\");\n }\n this.$formFieldNewInput.value = \"\";\n this.$formFieldNewInput.focus();\n }\n\n removeValue(value) {\n const removeValue = this.normaliseValue(value);\n if (removeValue && this.isValueInList(removeValue)) {\n this.values = this.values.filter(\n (existingValue) => existingValue !== removeValue,\n );\n this.$formFieldInput.value = this.values.join(\"\\n\");\n this.updateList();\n this.updateAriaText(`'${removeValue}' removed`);\n }\n if (this.values.length) {\n this.$valuesList.setAttribute(\"tabindex\", \"0\");\n this.$valuesList.focus();\n } else {\n this.$formFieldNewInput.focus();\n }\n }\n\n updateList() {\n this.$valuesList.innerHTML = \"\";\n this.values\n .map((value) => {\n const $item = document.createElement(\"li\");\n $item.classList.add(\"tna-compound-filters__item\");\n const $itemLabel = document.createElement(\"span\");\n $itemLabel.innerText = value;\n $item.appendChild($itemLabel);\n\n const $removeItemButton = document.createElement(\"button\");\n $removeItemButton.innerText = `Remove '${value}'`;\n $removeItemButton.setAttribute(\"type\", \"button\");\n $removeItemButton.classList.add(\"tna-compound-filters__link\");\n $removeItemButton.addEventListener(\"click\", () => {\n this.removeValue(value);\n });\n $item.appendChild($removeItemButton);\n return $item;\n })\n .forEach(($item) => this.$valuesList.appendChild($item));\n\n let innerTextItemValue = \"item\";\n /* eslint-disable-next-line no-magic-numbers */\n if (this.values.length !== 1) {\n innerTextItemValue += \"s\";\n }\n const innerTextValue = `${this.values.length} ${innerTextItemValue} added`;\n this.$formFieldCounter.innerText = innerTextValue;\n }\n}\n","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","import uuidv4 from \"./uuid.mjs\";\n\nexport const iso8601ToPrettyDatetime = (dateStr) => {\n const datetime = dateStr;\n\n if (!datetime) {\n throw new Error(\"No datetime provided\");\n }\n const isDateTime =\n /^\\d{4}(?:-\\d{2}){2}(?:T| )\\d{2}(?::\\d{2}){1,2}(?:\\.\\d+)?(?:Z|(?:[+-]\\d{2}:\\d{2}))?$/u.test(\n datetime,\n );\n const isDate = /^\\d{4}(?:-\\d{2}){2}$/u.test(datetime);\n if (!isDateTime && !isDate) {\n throw new Error(\"Invalid datetime provided\");\n }\n\n const date = new Date(datetime);\n if (!(date instanceof Date) || isNaN(date)) {\n throw new Error(\"Invalid datetime provided\");\n }\n\n const dayString = date.toLocaleDateString(\"en-GB\", {\n weekday: \"long\",\n });\n const dateString = date.toLocaleDateString(\"en-GB\", {\n day: \"numeric\",\n month: \"long\",\n year: \"numeric\",\n });\n\n if (isDateTime && (date.getHours() || date.getMinutes())) {\n let timeString = date.toLocaleTimeString(\"en-GB\", {\n hour: \"2-digit\",\n minute: \"2-digit\",\n });\n if (date.getSeconds()) {\n timeString = date.toLocaleTimeString(\"en-GB\", {\n hour: \"2-digit\",\n minute: \"2-digit\",\n second: \"2-digit\",\n });\n }\n return `${dayString} ${dateString}, ${timeString}`;\n }\n return `${dayString} ${dateString}`;\n};\n\n/*\n * ==========================================\n * Transform any <time> element into a pretty\n * and human readable format that is based on\n * the valid ISO 8601 datetime attribute. The\n * replaced value will be localised according\n * to user's system settings, repurposing the\n * original text content as a title attribute\n * to allow users to see the value. A null or\n * invalid datetime format will result in the\n * element not being modified. If the updated\n * value is similar to the starting value for\n * the element text content, then the element\n * will not be updated to avoid redundancy.\n * ------------------------------------------\n * For example if the user's system has a UTC\n * timezone set then the element:\n *\n * <time\n * datetime=\"2026-03-05T13:48:00-05:00\"\n * >\n * 5 March 2026, 13:48 (UTC -5)\n * </time>\n *\n * would become:\n *\n * <time\n * datetime=\"2026-03-05T13:48:00-05:00\"\n * title=\"5 March 2026, 13:48 (UTC -5)\"\n * >\n * Thursday 5 March 2026, 09:48\n * </time>\n * ==========================================\n */\nexport const updateTimeElement = ($el) => {\n const datetime = $el.getAttribute(\"datetime\");\n\n try {\n const prettyDatetime = iso8601ToPrettyDatetime(datetime);\n if (!prettyDatetime.includes($el.textContent)) {\n $el.setAttribute(\"title\", $el.textContent);\n $el.textContent = prettyDatetime;\n }\n // eslint-disable-next-line no-unused-vars\n } catch (error) {\n // Do nothing if the datetime is invalid or not provided\n }\n};\n\nexport const checkTableForScroll = ($tableWrapper) => {\n const $caption = $tableWrapper.querySelector(\"caption\");\n if (!($tableWrapper.dataset.tableScrollInitialised === \"true\")) {\n if ($caption && !$caption.id) {\n $caption.id = `table-caption-${uuidv4()}`;\n }\n $tableWrapper.dataset.tableScrollInitialised = \"true\";\n }\n if ($tableWrapper.scrollWidth > $tableWrapper.clientWidth) {\n $tableWrapper.setAttribute(\"tabindex\", \"0\");\n $tableWrapper.setAttribute(\"role\", \"region\");\n $tableWrapper.setAttribute(\"aria-labelledby\", $caption?.id || \"\");\n $tableWrapper.classList.add(\"tna-table-wrapper--scroll\");\n } else {\n $tableWrapper.removeAttribute(\"tabindex\");\n $tableWrapper.removeAttribute(\"role\");\n $tableWrapper.removeAttribute(\"aria-labelledby\");\n $tableWrapper.classList.remove(\"tna-table-wrapper--scroll\");\n }\n};\n","/* eslint-disable no-magic-numbers */\n/* eslint-disable no-bitwise */\nconst uuidv4 = () =>\n ([1e7] + -1e3 + -4e3 + -8e3 + -1e11).replace(/[018]/gu, (char) =>\n (\n char ^\n (crypto.getRandomValues(new Uint8Array(1))[0] & (15 >> (char / 4)))\n ).toString(16),\n );\n\nexport default uuidv4;\n","// The module cache\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};","/* eslint-disable no-new */\nimport { Accordion } from \"./components/accordion/accordion.mjs\";\nimport { Breadcrumbs } from \"./components/breadcrumbs/breadcrumbs.mjs\";\nimport { CodeBlock } from \"./components/code-block/code-block.mjs\";\nimport { CookieBanner } from \"./components/cookie-banner/cookie-banner.mjs\";\nimport { DateInputProgressive } from \"./components/date-input/date-input.mjs\";\nimport { ErrorSummary } from \"./components/error-summary/error-summary.mjs\";\nimport { FileInputDroppable } from \"./components/file-input/file-input.mjs\";\nimport { Footer } from \"./components/footer/footer.mjs\";\nimport { Gallery } from \"./components/gallery/gallery.mjs\";\nimport { GlobalHeader } from \"./components/global-header/global-header.mjs\";\nimport { Header } from \"./components/header/header.mjs\";\nimport { Picture } from \"./components/picture/picture.mjs\";\nimport { Sidebar } from \"./components/sidebar/sidebar.mjs\";\nimport { SkipLink } from \"./components/skip-link/skip-link.mjs\";\nimport { Tabs } from \"./components/tabs/tabs.mjs\";\nimport { TextInputPassword } from \"./components/text-input/text-input.mjs\";\nimport { TextAreaItemisedRows } from \"./components/textarea/textarea.mjs\";\nimport Cookies from \"./lib/cookies.mjs\";\nimport { checkTableForScroll, updateTimeElement } from \"./lib/helpers.mjs\";\n\nconst initAll = (options = {}) => {\n const { scope } = options;\n let $scope = document;\n if (scope) {\n if (scope instanceof HTMLElement) {\n $scope = scope;\n } else {\n throw new Error(\"Scope must be an HTMLElement\");\n }\n }\n const $html = document.documentElement;\n $html.classList.add(\"tna-template--js-enabled\");\n\n const onFirstTouch = () => {\n window.removeEventListener(\"touchstart\", onFirstTouch);\n $html.classList.add(\"tna-template--touched\");\n };\n window.addEventListener(\"touchstart\", onFirstTouch);\n\n const onKeyDown = (event) => {\n if (event.key === \"Tab\") {\n $html.classList.add(\"tna-template--tabbed\");\n $html.classList.remove(\"tna-template--clicked\");\n }\n };\n window.addEventListener(\"keydown\", onKeyDown);\n\n const onMouseDown = () => {\n $html.classList.add(\"tna-template--clicked\");\n $html.classList.remove(\"tna-template--tabbed\");\n };\n window.addEventListener(\"mousedown\", onMouseDown);\n\n /*\n * ==========================================\n * Checks if widths of all tables on the page\n * are wider than their parent container, and\n * allowing horizontal scrolling if they are.\n * This is done both on load and on resize.\n * ==========================================\n */\n const $tableWrappers = $scope.querySelectorAll(\".tna-table-wrapper\");\n $tableWrappers.forEach(($tableWrapper) => checkTableForScroll($tableWrapper));\n window.addEventListener(\"resize\", () => {\n $tableWrappers.forEach(($tableWrapper) =>\n checkTableForScroll($tableWrapper),\n );\n });\n\n // Remove this opt-in class in a later release\n if ($html.classList.contains(\"tna-template--enhance-time-elements\")) {\n document.querySelectorAll(\"time[datetime]\").forEach(updateTimeElement);\n }\n\n const $accordions = $scope.querySelectorAll('[data-module=\"tna-accordion\"]');\n $accordions.forEach(($accordion) => {\n new Accordion($accordion);\n });\n\n const $breadcrumbs = $scope.querySelector('[data-module=\"tna-breadcrumbs\"]');\n if ($breadcrumbs) {\n new Breadcrumbs($breadcrumbs);\n }\n\n const $codeBlocks = $scope.querySelectorAll('[data-module=\"tna-code-block\"]');\n $codeBlocks.forEach(($codeBlock) => {\n new CodeBlock($codeBlock);\n });\n\n const $cookieBanner = $scope.querySelector(\n '[data-module=\"tna-cookie-banner\"]',\n );\n if ($cookieBanner) {\n new CookieBanner($cookieBanner);\n }\n\n const $progressiveDateInputs = $scope.querySelectorAll(\n '[data-module=\"tna-date-input-progressive\"]',\n );\n $progressiveDateInputs.forEach(($dateInput) => {\n new DateInputProgressive($dateInput);\n });\n\n const $errorSummary = $scope.querySelector(\n '[data-module=\"tna-error-summary\"]',\n );\n if ($errorSummary) {\n new ErrorSummary($errorSummary).init();\n }\n\n const $fileInputs = $scope.querySelectorAll('[data-module=\"tna-file-input\"]');\n $fileInputs.forEach(($fileInput) => {\n new FileInputDroppable($fileInput);\n });\n\n const $footer = $scope.querySelector('[data-module=\"tna-footer\"]');\n if ($footer) {\n new Footer($footer);\n }\n\n const $galleries = $scope.querySelectorAll('[data-module=\"tna-gallery\"]');\n $galleries.forEach(($gallery) => {\n new Gallery($gallery);\n });\n\n const $globalHeader = $scope.querySelector(\n '[data-module=\"tna-global-header\"]',\n );\n if ($globalHeader) {\n new GlobalHeader($globalHeader);\n }\n\n const $header = $scope.querySelector('[data-module=\"tna-header\"]');\n if ($header) {\n new Header($header);\n }\n\n const $pictures = $scope.querySelectorAll('[data-module=\"tna-picture\"]');\n $pictures.forEach(($picture) => {\n new Picture($picture);\n });\n\n const $sidebar = $scope.querySelector('[data-module=\"tna-sidebar-sections\"]');\n if ($sidebar) {\n const { scrollTopThreshold, disableHighlightSize } = $sidebar.dataset;\n new Sidebar($sidebar, { scrollTopThreshold, disableHighlightSize });\n }\n\n const $skipLinks = $scope.querySelectorAll('[data-module=\"tna-skip-link\"]');\n $skipLinks.forEach(($skipLink) => {\n new SkipLink($skipLink);\n });\n\n const $tabs = $scope.querySelectorAll('[data-module=\"tna-tabs\"]');\n $tabs.forEach(($tabModule) => {\n new Tabs($tabModule);\n });\n\n const $textAreaItemisedRows = $scope.querySelectorAll(\n '[data-module=\"tna-textarea-itemised-rows\"]',\n );\n $textAreaItemisedRows.forEach(($textAreaWithItemisedRows) => {\n const { enhancedHint } = $textAreaWithItemisedRows.dataset;\n new TextAreaItemisedRows($textAreaWithItemisedRows, { enhancedHint });\n });\n\n const $textInputPasswords = $scope.querySelectorAll(\n '[data-module=\"tna-text-input-password\"]',\n );\n $textInputPasswords.forEach(($textInputPassword) => {\n new TextInputPassword($textInputPassword);\n });\n\n window.matchMedia(\"print\").addEventListener(\"change\", (evt) => {\n if (evt.matches) {\n $scope\n .querySelectorAll(\".tna-details__details:not([open])\")\n .forEach(($element) => {\n $element.setAttribute(\"open\", \"\");\n $element.dataset.wasClosed = \"\";\n });\n $scope\n .querySelectorAll(\n \".tna-accordion__content[hidden], .tna-picture__transcript[hidden]\",\n )\n .forEach(($element) => {\n $element.removeAttribute(\"hidden\");\n $element.dataset.wasClosed = \"\";\n });\n } else {\n $scope\n .querySelectorAll(\".tna-details__details[data-was-closed]\")\n .forEach(($element) => {\n $element.removeAttribute(\"open\");\n delete $element.dataset.wasClosed;\n });\n $scope\n .querySelectorAll(\n \".tna-accordion__content[data-was-closed], .tna-picture__transcript[data-was-closed]\",\n )\n .forEach(($element) => {\n $element.setAttribute(\"hidden\", \"\");\n $element.dataset.wasClosed = \"\";\n });\n }\n });\n};\n\nexport {\n initAll,\n Cookies,\n Accordion,\n Breadcrumbs,\n CodeBlock,\n CookieBanner,\n DateInputProgressive,\n ErrorSummary,\n FileInputDroppable,\n Footer,\n Gallery,\n GlobalHeader,\n Header,\n Picture,\n Sidebar,\n SkipLink,\n Tabs,\n TextInputPassword,\n TextAreaItemisedRows,\n checkTableForScroll,\n updateTimeElement,\n};\n"],"names":["root","factory","exports","module","define","amd","self","Accordion","constructor","$module","this","$items","querySelectorAll","allowMultipleItemsOpen","dataset","singleOpenItem","forEach","$item","initItem","initState","$toggleAllButton","querySelector","syncToggleAllButton","removeAttribute","addEventListener","isAllOpen","closeItem","openItem","$heading","$content","classList","add","remove","setAttribute","$headingButton","document","createElement","id","innerText","appendChild","getAttribute","isopen","closeAllItemsExcept","trim","$tableWrapper","$wrapper","_lib_helpers_mjs__WEBPACK_IMPORTED_MODULE_0__","DJ","$excludeItem","Array","from","filter","every","closeAllLabel","openAllLabel","Breadcrumbs","$breadcrumbsList","$breadcrumbs","length","contains","init","uniqueId","_lib_uuid_mjs__WEBPACK_IMPORTED_MODULE_0__","A","$expandable","style","display","$expandButton","innerHTML","focus","once","insertBefore","nextSibling","CodeBlock","$code","$copyButton","navigator","clipboard","async","writeText","CookieBanner","$acceptButton","$rejectButton","$prompt","$acceptedMessage","$rejectedMessage","$closeButtons","cookies","_lib_cookies_mjs__WEBPACK_IMPORTED_MODULE_0__","newInstance","cookiePreferencesSetKey","preferencesKey","policiesCorrectOnInit","delete","exists","hasValue","accept","reject","complete","acceptAllPolicies","rejectAllPolicies","set","$closeButton","close","DateInputProgressive","$yearWrapper","$yearInput","$monthWrapper","$monthInput","$dayWrapper","$dayInput","update","window","isValidYear","showMonth","isValidMonth","showDay","hideDay","hideMonth","yearValue","parseInt","value","isNaN","monthRawValue","monthIntValue","includes","toLowerCase","ErrorSummary","disableAutofocus","setFocus","event","handleClick","$element","options","isFocusable","onBlur","call","onBeforeFocus","$target","target","focusTarget","preventDefault","getFragmentFromUrl","url","split","pop","HTMLAnchorElement","inputId","href","$input","getElementById","$legendOrLabel","getAssociatedLegendOrLabel","scrollIntoView","preventScroll","$fieldset","closest","$legends","getElementsByTagName","$candidateLegend","HTMLInputElement","type","legendTop","getBoundingClientRect","top","inputRect","height","innerHeight","FileInputDroppable","$body","acceptMutltipleFiles","hasAttribute","$droppableArea","$pseudoSelectFileText","fileText","textContent","$droppableButtons","$pseudoSelectFileButton","$pseudoDropFileButton","$droppableAreaAriaLabel","showDropTarget","hideDropTarget","onChange","isContainingFiles","dataTransfer","hasNoTypesInfo","types","isDraggingFiles","some","updateAriaLabel","classToAdd","items","files","name","Footer","themeCookieName","$themeSelector","$themeSelectorNotice","$themeSelectorEnableSettingsCookiesButton","$tnaTemplate","currentTheme","themeOnLoad","$themeSelectorButtons","$themeSelectorButton","$button","setTheme","selectThemeSelectorButton","acceptPolicy","showThemeSelector","on","data","Object","hasOwn","settings","$currentThemeButton","find","get","isPolicyAccepted","theme","$selectedButton","Gallery","$itemsContainer","$navigation","$navigationItems","$navigationButtons","$navigationButtonPrev","$navigationButtonNext","setup","currentId","showItem","preventDefaultKeyAction","key","showPreviousItem","showNextItem","showFirstItem","showLastItem","stopPropagation","$liveRegion","prepend","getCurrentItemIndex","findIndex","nextIndexToShow","GlobalHeader","$toggleButton","$topNavigation","$links","menuOpened","mql","matchMedia","syncState","handleToggleNavigation","addListener","code","matches","show","hide","hidden","index","Header","Picture","$imageWrapper","$transcriptToggle","$transcript","transcriptOpened","openLabel","informationLabelOpen","closeLabel","informationLabelClose","toggleTranscript","Sidebar","map","substring","item","scrollTopThreshold","disableHighlightSize","breakpoints","tiny","getComputedStyle","documentElement","getPropertyValue","small","medium","keys","Error","join","hideOnDevice","currentItem","highlightCurrentSection","$topItem","findLast","Math","floor","SkipLink","linkedElementListener","linkedElementId","$linkedElement","focusLinkedElement","removeFocusProperties","Tabs","$tabList","$tabListItemLinks","$tabItems","currentTabIndex","$tabListItemLink","tabPanelID","$tabPanel","handleItemLinkClick","switchTabByIndex","handleItemLinkKeyDown","itemLinkClickEvent","targetItem","currentTarget","switchTabByID","itemLinkKeyDownEvent","previousTab","nextTab","newIndex","switchFocus","$tabItem","targetId","TextInputPassword","$textInputWrapper","$textInputPasswordToggle","updateTogglePasswordButtonText","togglePasswordType","TextAreaItemisedRows","$formFieldInput","$formFieldInputHint","$formFieldBody","enhancedHint","values","$formFieldNewInput","attribute","updateList","appendValue","$formFieldNewInputAddButton","$formFieldNewInputAddButtonInner","$formFieldNewInputAddButtonInnerExtra","$formFieldLiveAria","$formFieldCounter","$valuesList","updateAriaText","parentNode","content","normaliseValue","replace","isValueInList","eachValue","newValue","push","removeValue","existingValue","$itemLabel","$removeItemButton","innerTextItemValue","innerTextValue","TNAFrontendCookieEvents","CookieEventHandler","events","oneTimeEvents","debug","log","args","console","callback","trigger","eventToTrigger","eventIndex","splice","TNAFrontendCookies","tnaCookiePolicies","Cookies","defaultDomain","defaultPath","secure","policiesKey","defaultAge","tnaFrontendDebug","noInit","tnaCookiesDomain","location","hostname","tnaCookiesPath","tnaCookiesInsecure","tnaCookiesPoliciesKey","secondsInAYear","tnaCookiesDefaultAge","policies","policy","existingPolicies","filteredExistingPolicies","fromEntries","savePolicies","usage","marketing","essential","all","destroyInstance","deserialised","cookie","parts","decodeURIComponent","JSON","parse","error","maxAge","sameSite","domain","path","session","secureString","sessionString","encodeURIComponent","deleteAll","setPolicy","rejectPolicy","accepted","allPolicies","stringify","updateTimeElement","$el","datetime","prettyDatetime","dateStr","isDateTime","test","isDate","date","Date","dayString","toLocaleDateString","weekday","dateString","day","month","year","getHours","getMinutes","timeString","toLocaleTimeString","hour","minute","getSeconds","second","iso8601ToPrettyDatetime","checkTableForScroll","$caption","tableScrollInitialised","_uuid_mjs__WEBPACK_IMPORTED_MODULE_0__","scrollWidth","clientWidth","__WEBPACK_DEFAULT_EXPORT__","char","crypto","getRandomValues","Uint8Array","toString","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","__webpack_modules__","d","definition","o","defineProperty","enumerable","obj","prop","prototype","hasOwnProperty","r","Symbol","toStringTag","initAll","scope","$scope","HTMLElement","$html","onFirstTouch","removeEventListener","$tableWrappers","_lib_helpers_mjs__WEBPACK_IMPORTED_MODULE_18__","FH","$accordion","_components_accordion_accordion_mjs__WEBPACK_IMPORTED_MODULE_0__","_components_breadcrumbs_breadcrumbs_mjs__WEBPACK_IMPORTED_MODULE_1__","$codeBlock","_components_code_block_code_block_mjs__WEBPACK_IMPORTED_MODULE_2__","$cookieBanner","_components_cookie_banner_cookie_banner_mjs__WEBPACK_IMPORTED_MODULE_3__","$dateInput","_components_date_input_date_input_mjs__WEBPACK_IMPORTED_MODULE_4__","$errorSummary","_components_error_summary_error_summary_mjs__WEBPACK_IMPORTED_MODULE_5__","$fileInput","_components_file_input_file_input_mjs__WEBPACK_IMPORTED_MODULE_6__","$footer","_components_footer_footer_mjs__WEBPACK_IMPORTED_MODULE_7__","$gallery","_components_gallery_gallery_mjs__WEBPACK_IMPORTED_MODULE_8__","$globalHeader","_components_global_header_global_header_mjs__WEBPACK_IMPORTED_MODULE_9__","$header","_components_header_header_mjs__WEBPACK_IMPORTED_MODULE_10__","$picture","_components_picture_picture_mjs__WEBPACK_IMPORTED_MODULE_11__","$sidebar","_components_sidebar_sidebar_mjs__WEBPACK_IMPORTED_MODULE_12__","$skipLink","_components_skip_link_skip_link_mjs__WEBPACK_IMPORTED_MODULE_13__","$tabModule","_components_tabs_tabs_mjs__WEBPACK_IMPORTED_MODULE_14__","$textAreaWithItemisedRows","_components_textarea_textarea_mjs__WEBPACK_IMPORTED_MODULE_16__","$textInputPassword","_components_text_input_text_input_mjs__WEBPACK_IMPORTED_MODULE_15__","evt","wasClosed"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"file":"all.js","mappings":"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","sources":["webpack://TNAFrontend/webpack/universalModuleDefinition","webpack://TNAFrontend/./node_modules/@nationalarchives/cookies/src/events.js","webpack://TNAFrontend/./node_modules/@nationalarchives/cookies/src/index.js","webpack://TNAFrontend/./src/nationalarchives/components/accordion/accordion.mjs","webpack://TNAFrontend/./src/nationalarchives/components/breadcrumbs/breadcrumbs.mjs","webpack://TNAFrontend/./src/nationalarchives/components/code-block/code-block.mjs","webpack://TNAFrontend/./src/nationalarchives/components/cookie-banner/cookie-banner.mjs","webpack://TNAFrontend/./src/nationalarchives/components/date-input/date-input.mjs","webpack://TNAFrontend/./src/nationalarchives/components/error-summary/error-summary.mjs","webpack://TNAFrontend/./src/nationalarchives/components/file-input/file-input.mjs","webpack://TNAFrontend/./src/nationalarchives/components/footer/footer.mjs","webpack://TNAFrontend/./src/nationalarchives/components/gallery/gallery.mjs","webpack://TNAFrontend/./src/nationalarchives/components/global-header/global-header.mjs","webpack://TNAFrontend/./src/nationalarchives/components/header/header.mjs","webpack://TNAFrontend/./src/nationalarchives/components/picture/picture.mjs","webpack://TNAFrontend/./src/nationalarchives/components/sidebar/sidebar.mjs","webpack://TNAFrontend/./src/nationalarchives/components/skip-link/skip-link.mjs","webpack://TNAFrontend/./src/nationalarchives/components/tabs/tabs.mjs","webpack://TNAFrontend/./src/nationalarchives/components/text-input/text-input.mjs","webpack://TNAFrontend/./src/nationalarchives/components/textarea/textarea.mjs","webpack://TNAFrontend/./src/nationalarchives/lib/helpers.mjs","webpack://TNAFrontend/./src/nationalarchives/lib/uuid.mjs","webpack://TNAFrontend/webpack/bootstrap","webpack://TNAFrontend/webpack/runtime/define property getters","webpack://TNAFrontend/webpack/runtime/hasOwnProperty shorthand","webpack://TNAFrontend/webpack/runtime/make namespace object","webpack://TNAFrontend/./src/nationalarchives/all.mjs"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"TNAFrontend\"] = factory();\n\telse\n\t\troot[\"TNAFrontend\"] = factory();\n})(self, () => {\nreturn ","/**\n * Class to handle cookie events.\n * @class CookieEventHandler\n * @constructor\n * @public\n */\nexport default class CookieEventHandler {\n /** @protected */\n events = {};\n /** @protected */\n oneTimeEvents = {};\n\n constructor() {\n if (\n window.TNAFrontendCookieEvents &&\n window.TNAFrontendCookieEvents instanceof CookieEventHandler\n ) {\n /* eslint-disable-next-line no-constructor-return */\n return window.TNAFrontendCookieEvents;\n }\n window.TNAFrontendCookieEvents = this;\n }\n\n /**\n * Clear all event listeners.\n */\n clearAll() {\n this.events = {};\n this.oneTimeEvents = {};\n }\n\n /**\n * Add an event listener.\n * @param {String} event - The event to add a listener for.\n * @param {Function} callback - The callback function to call when the event is triggered.\n */\n on(event, callback) {\n if (!Object.hasOwn(this.events, event)) {\n this.events[event] = [];\n }\n this.events[event] = [...this.events[event], callback];\n }\n\n /**\n * Add a one-time event listener.\n * @param {String} event - The event to add a listener for.\n * @param {Function} callback - The callback function to call when the event is triggered.\n */\n once(event, callback) {\n 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.events[event].forEach((eventToTrigger) =>\n eventToTrigger.call(this, data),\n );\n }\n if (Object.hasOwn(this.oneTimeEvents, event)) {\n this.oneTimeEvents[event].forEach((eachEvent) =>\n eachEvent.call(this, data),\n );\n this.oneTimeEvents[event] = [];\n }\n }\n}\n","/* eslint-disable max-lines, no-ternary */\n\nimport CookieEventHandler from \"./events\";\n\n/**\n * Class to handle cookies.\n * @class Cookies\n * @constructor\n * @public\n */\nexport default class Cookies {\n /** @protected */\n defaultDomain = \"\";\n /** @protected */\n defaultPath = \"\";\n /** @protected */\n secure = true;\n /** @protected */\n preferencesKey = \"\";\n /** @protected */\n events = null;\n /** @protected */\n defaultAge = null;\n /** @protected */\n preferencesCorrectOnInit = false;\n\n /** @protected */\n tnaCookiePreferences = [\"usage\", \"settings\", \"marketing\", \"essential\"];\n\n /**\n * Create a cookie handler.\n * @param {String} [options.defaultDomain] - The domain to register the cookie with.\n * @param {String} [options.path] - The domain to register the cookie with.\n * @param {Boolean} [options.secure] - Only set cookie in HTTPS environments.\n * @param {String} [options.preferencesKey] - The name of the cookie.\n * @param {Number} [options.defaultAge] - The default age of non-session cookies.\n * @param {Boolean} [options.noInit=false] - Don't initialise a blank cookie preference.\n */\n /* eslint-disable-next-line max-statements, */\n constructor(options = {}) {\n const {\n defaultDomain,\n defaultPath,\n secure,\n preferencesKey,\n defaultAge,\n noInit = false,\n } = options;\n const docDataset = document.documentElement.dataset;\n this.defaultDomain = defaultDomain\n ? defaultDomain\n : docDataset.tnaCookiesDomain || window.location.hostname;\n this.defaultPath = defaultPath\n ? defaultPath\n : docDataset.tnaCookiesPath || \"/\";\n this.secure = secure ? secure : docDataset.tnaCookiesInsecure !== \"true\";\n this.preferencesKey = preferencesKey\n ? preferencesKey\n : docDataset.tnaCookiesPreferencesKey || \"cookie_preferences\";\n this.defaultAge = defaultAge\n ? defaultAge\n : parseInt(docDataset.tnaCookiesDefaultAge, 10) ||\n /* eslint-disable-next-line no-magic-numbers */\n 365 * 24 * 60 * 60;\n this.events = new CookieEventHandler();\n this.preferencesCorrectOnInit =\n Object.keys(this.preferences).length ===\n this.tnaCookiePreferences.length &&\n this.tnaCookiePreferences.every(\n (preference) =>\n Object.keys(this.preferences).includes(preference) &&\n typeof this.preferences[preference] === \"boolean\",\n );\n if (!this.preferencesCorrectOnInit && !noInit) {\n this.init();\n }\n }\n\n /** @protected */\n init() {\n const existingPreferences = this.preferences;\n const filteredExistingPreferences = Object.fromEntries(\n Object.keys(existingPreferences)\n .filter((preference) => this.tnaCookiePreferences.includes(preference))\n .map((preference) => [preference, existingPreferences[preference]]),\n );\n this.savePreferences({\n usage: false,\n settings: false,\n marketing: false,\n ...filteredExistingPreferences,\n essential: true,\n });\n }\n\n /** @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 preferences() {\n try {\n return JSON.parse(this.get(this.preferencesKey) || \"{}\");\n // eslint-disable-next-line no-unused-vars\n } catch (error) {\n return {};\n }\n }\n\n /**\n * Check to see whether a cookie exists or not.\n * @param {String} key - The cookie name.\n * @returns {Boolean}\n */\n exists(key) {\n return Object.hasOwn(this.all, key);\n }\n\n /**\n * Check to see whether a cookie has a particular value.\n * @param {String} key - The cookie name.\n * @param {String|Number|Boolean} value - The value to check against.\n * @returns\n */\n hasValue(key, value) {\n return this.get(key) === value;\n }\n\n /**\n * Get a cookie.\n * @param {String} key - The cookie name.\n * @returns {String|Number|Boolean|null}\n */\n get(key) {\n if (this.exists(key)) {\n return decodeURIComponent(this.all[key]);\n }\n /* eslint-disable-next-line no-undefined */\n return undefined;\n }\n\n /**\n * Set a cookie.\n * @param {String} key - The cookie name.\n * @param {String|Number|Boolean} value - The cookie value.\n * @param {Object} options\n * @param {Number} [options.maxAge=this.defaultAge] - The maximum age of the cookie in seconds.\n * @param {String} [options.path=/] - The path to register the cookie for.\n * @param {String} [options.sameSite=Lax] - The sameSite attribute.\n * @param {String} [options.domain=this.defaultDomain] - The domain to register the cookie with.\n * @param {String} [options.path=this.defaultPath] - The path to register the cookie with.\n * @param {String} [options.secure=this.secure] - Only set cookie in HTTPS environments.\n * @param {String} [options.session=false] - Set a session cookie.\n */\n set(key, value, options = {}) {\n const {\n maxAge = this.defaultAge,\n sameSite = \"Lax\",\n domain = this.defaultDomain,\n path = this.defaultPath,\n secure = this.secure,\n session = false,\n } = options;\n if (!key) {\n return;\n }\n const secureString = secure ? \"; secure\" : \"\";\n const sessionString = session ? \"\" : `; max-age=${maxAge}`;\n const cookie = `${encodeURIComponent(key)}=${encodeURIComponent(value)}; domain=${domain}; samesite=${sameSite}; path=${path}${sessionString}${secureString}`;\n document.cookie = cookie;\n const cookieDetails = {\n key,\n value,\n maxAge,\n path,\n sameSite,\n domain,\n secure,\n session,\n cookie,\n };\n this.events.trigger(\"setCookie\", cookieDetails);\n }\n\n /**\n * Delete a cookie.\n * @param {String} key - The cookie name.\n * @param {String} [path=/] - The path to the cookie is registered on.\n */\n delete(key, path = \"/\", domain = this.defaultDomain) {\n const options = { maxAge: -1, path, domain: domain || this.defaultDomain };\n this.set(key, \"\", options);\n this.events.trigger(\"deleteCookie\", { key, ...options });\n }\n\n /**\n * Delete all cookies.\n */\n deleteAll(path = \"/\", domain = this.defaultDomain) {\n Object.keys(this.all).forEach((cookie) => {\n this.delete(cookie, path, domain);\n });\n const details = { path, domain };\n this.events.trigger(\"deleteAllCookies\", details);\n }\n\n /**\n * Accept a preference.\n * @param {String} preference - The name of the preference.\n */\n enablePreference(preference) {\n if (!Object.hasOwn(this.preferences, preference)) {\n throw new Error(`Preference '${preference}' does not exist`);\n }\n this.setPreference(preference, true);\n this.events.trigger(\"enablePreference\", preference);\n this.events.trigger(\"changePreference\", { [preference]: true });\n }\n\n /**\n * Reject a preference.\n * @param {String} preference - The name of the preference.\n */\n disablePreference(preference) {\n if (!Object.hasOwn(this.preferences, preference)) {\n throw new Error(`Preference '${preference}' does not exist`);\n }\n this.setPreference(preference, false);\n this.events.trigger(\"disablePreference\", preference);\n this.events.trigger(\"changePreference\", { [preference]: false });\n }\n\n /**\n * Set a preference.\n * @param {String} preference - The name of the preference.\n * @param {Boolean} accepted - Whether the preference is accepted or not.\n */\n setPreference(preference, accepted) {\n if (!Object.hasOwn(this.preferences, preference)) {\n throw new Error(`Preference '${preference}' does not exist`);\n }\n if (preference === \"essential\") {\n return;\n }\n this.savePreferences({\n ...this.preferences,\n [preference]: accepted,\n essential: true,\n });\n this.events.trigger(\"changePreference\", { [preference]: accepted });\n }\n\n /**\n * Accept all the cookie preferences.\n */\n enableAllPreferences() {\n const allPreferences = Object.fromEntries(\n Object.keys(this.preferences).map((key) => [key.toLowerCase(), true]),\n );\n this.savePreferences(allPreferences);\n this.events.trigger(\"enableAllPreferences\");\n this.events.trigger(\"changePreference\", allPreferences);\n }\n\n /**\n * Reject all the cookie preferences.\n */\n disableAllPreferences() {\n const allPreferences = {\n ...Object.fromEntries(\n Object.keys(this.preferences).map((key) => [key.toLowerCase(), false]),\n ),\n essential: true,\n };\n this.savePreferences(allPreferences);\n this.events.trigger(\"disableAllPreferences\");\n this.events.trigger(\"changePreference\", allPreferences);\n }\n\n /** @protected */\n savePreferences(preferences) {\n this.set(this.preferencesKey, JSON.stringify(preferences));\n }\n\n /**\n * Get the acceptance status of a preference.\n * @param {String} preference - The name of the preference.\n * @returns {Boolean}\n */\n preference(preference) {\n if (Object.hasOwn(this.preferences, preference)) {\n return this.preferences[preference] === true;\n }\n throw new Error(`Preference '${preference}' does not exist`);\n }\n\n /**\n * Add an event listener.\n * @param {String} event - The event to add a listener for.\n * @param {Function} callback - The callback function to call when the event is triggered.\n */\n on(event, callback) {\n this.events.on(event, callback);\n }\n\n /**\n * Add a one-time event listener.\n * @param {String} event - The event to add a listener for.\n * @param {Function} callback - The callback function to call when the event is triggered.\n */\n once(event, callback) {\n this.events.once(event, callback);\n }\n}\n","import { checkTableForScroll } from \"../../lib/helpers.mjs\";\n\nexport class Accordion {\n constructor($module) {\n this.$module = $module;\n this.$items = $module && $module.querySelectorAll(\".tna-accordion__item\");\n if (!this.$module || !this.$items) {\n return;\n }\n\n this.allowMultipleItemsOpen =\n this.$module.dataset.singleOpenItem !== \"true\";\n\n this.$items.forEach(($item) => this.initItem($item));\n this.initState();\n\n this.$toggleAllButton = this.$module.querySelector(\n \".tna-accordion__toggle-all\",\n );\n if (this.$toggleAllButton) {\n this.syncToggleAllButton();\n this.$toggleAllButton.removeAttribute(\"hidden\");\n this.$toggleAllButton.addEventListener(\"click\", () => {\n if (this.isAllOpen()) {\n this.$items.forEach(($item) => this.closeItem($item));\n } else {\n this.$items.forEach(($item) => this.openItem($item));\n }\n this.syncToggleAllButton();\n });\n }\n }\n\n initItem($item) {\n const $heading = $item.querySelector(\".tna-accordion__heading\");\n const $content = $item.querySelector(\".tna-accordion__body\");\n\n if (!$heading || !$content) {\n return;\n }\n\n $item.classList.add(\"tna-accordion__details\");\n $item.classList.remove(\"tna-accordion__item\");\n\n $heading.removeAttribute(\"class\");\n\n $content.classList.add(\"tna-accordion__content\");\n $content.classList.remove(\"tna-accordion__body\");\n $content.setAttribute(\"hidden\", \"\");\n\n const $headingButton = document.createElement(\"button\");\n $headingButton.classList.add(\"tna-accordion__summary\");\n $headingButton.setAttribute(\"type\", \"button\");\n $headingButton.setAttribute(\"aria-controls\", $content.id);\n $headingButton.innerText = $heading.innerText;\n $heading.innerText = \"\";\n $heading.appendChild($headingButton);\n\n $headingButton.addEventListener(\"click\", () => {\n const isOpen = $headingButton.getAttribute(\"aria-expanded\") === \"true\";\n if (isOpen) {\n this.closeItem($item);\n } else {\n this.openItem($item);\n }\n });\n }\n\n initState() {\n this.$items.forEach(($item) => {\n if ($item.dataset.isopen === \"true\") {\n this.openItem($item);\n } else {\n this.closeItem($item);\n }\n $item.removeAttribute(\"data-isopen\");\n });\n }\n\n openItem($item) {\n if (!this.allowMultipleItemsOpen) {\n this.closeAllItemsExcept($item);\n }\n const $headingButton = $item.querySelector(\".tna-accordion__summary\");\n const $content = $item.querySelector(\".tna-accordion__content\");\n $headingButton.setAttribute(\"aria-expanded\", \"true\");\n $headingButton.setAttribute(\n \"aria-label\",\n `${$headingButton.innerText.trim()}, Hide this section`,\n );\n $content.removeAttribute(\"hidden\");\n // $content.setAttribute(\"tabindex\", \"0\");\n this.syncToggleAllButton();\n\n const $tableWrapper = $content.querySelectorAll(\".tna-table-wrapper\");\n if ($tableWrapper) {\n $tableWrapper.forEach(($wrapper) => {\n checkTableForScroll($wrapper);\n });\n }\n }\n\n closeItem($item) {\n const $headingButton = $item.querySelector(\".tna-accordion__summary\");\n const $content = $item.querySelector(\".tna-accordion__content\");\n $headingButton.setAttribute(\"aria-expanded\", \"false\");\n $headingButton.setAttribute(\n \"aria-label\",\n `${$headingButton.innerText.trim()}, Show this section`,\n );\n $content.setAttribute(\"hidden\", \"\");\n // $content.setAttribute(\"tabindex\", \"-1\");\n this.syncToggleAllButton();\n }\n\n closeAllItemsExcept($excludeItem) {\n Array.from(this.$items)\n .filter(\n ($item) =>\n $item.querySelector(\".tna-accordion__summary\") !== $excludeItem &&\n $item\n .querySelector(\".tna-accordion__summary\")\n .getAttribute(\"aria-expanded\") === \"true\",\n )\n .forEach(($item) => this.closeItem($item));\n }\n\n isAllOpen() {\n return Array.from(this.$items).every(\n ($item) =>\n $item\n .querySelector(\".tna-accordion__summary\")\n .getAttribute(\"aria-expanded\") === \"true\",\n );\n }\n\n syncToggleAllButton() {\n if (this.$toggleAllButton) {\n if (this.isAllOpen()) {\n this.$toggleAllButton.innerText =\n this.$toggleAllButton.dataset.closeAllLabel || \"Hide all sections\";\n } else {\n this.$toggleAllButton.innerText =\n this.$toggleAllButton.dataset.openAllLabel || \"Show all sections\";\n }\n }\n }\n}\n","import uuidv4 from \"../../lib/uuid.mjs\";\n\nexport class Breadcrumbs {\n constructor($module) {\n this.$module = $module;\n this.$breadcrumbsList =\n $module && $module.querySelector(\".tna-breadcrumbs__list\");\n this.$breadcrumbs =\n $module &&\n this.$breadcrumbsList &&\n $module.querySelectorAll(\".tna-breadcrumbs__item\");\n\n if (!this.$module || !this.$breadcrumbsList || !this.$breadcrumbs) {\n return;\n }\n\n if (\n /* eslint-disable-next-line no-magic-numbers */\n this.$breadcrumbs.length > 2 &&\n !this.$module.classList.contains(\"tna-breadcrumbs--no-collapse\")\n ) {\n this.init();\n }\n }\n\n init() {\n const uniqueId = `tna-breadcrumbs-${uuidv4()}`;\n const $expandable = document.createElement(\"li\");\n $expandable.classList.add(\n \"tna-breadcrumbs__item\",\n \"tna-breadcrumbs__item--expandable\",\n );\n $expandable.style.display = \"none\";\n\n const $expandButton = document.createElement(\"button\");\n $expandButton.classList.add(\"tna-breadcrumbs__link\");\n $expandButton.innerHTML =\n \"<span class='tna-!--visually-hidden'>Expand breadcrumbs</span>…\";\n $expandButton.setAttribute(\"type\", \"button\");\n $expandButton.setAttribute(\"aria-expanded\", \"false\");\n $expandButton.setAttribute(\"aria-controls\", uniqueId);\n $expandButton.addEventListener(\"click\", () => {\n this.$module.classList.remove(\"tna-breadcrumbs--collapsed\");\n $expandable.remove();\n this.$module.setAttribute(\"tabindex\", \"0\");\n this.$module.focus();\n this.$module.addEventListener(\n \"blur\",\n () => {\n this.$module.removeAttribute(\"tabindex\");\n },\n { once: true },\n );\n });\n $expandable.appendChild($expandButton);\n\n this.$breadcrumbsList.setAttribute(\"id\", uniqueId);\n this.$breadcrumbsList.insertBefore(\n $expandable,\n /* eslint-disable-next-line no-magic-numbers */\n this.$breadcrumbs[this.$breadcrumbs.length - 2].nextSibling,\n );\n\n this.$module.classList.add(\"tna-breadcrumbs--collapsed\");\n }\n}\n","export class CodeBlock {\n constructor($module) {\n this.$module = $module;\n this.$code = this.$module.querySelector(\"pre code\");\n this.$copyButton = this.$module.querySelector(\".tna-code-block__copy\");\n\n if (\n !this.$module ||\n !this.$code ||\n !this.$copyButton ||\n !navigator.clipboard\n ) {\n return;\n }\n\n this.$copyButton.removeAttribute(\"hidden\");\n this.$module.classList.add(\"tna-code-block__copyable\");\n\n this.$copyButton.addEventListener(\"click\", async () => {\n try {\n await navigator.clipboard.writeText(this.$code.innerText);\n this.$copyButton.innerText = \"Code copied\";\n } catch {\n // Continue regardless of error\n }\n });\n\n this.$copyButton.addEventListener(\"blur\", () => {\n this.$copyButton.innerText = \"Copy code\";\n });\n }\n}\n","import Cookies from \"@nationalarchives/cookies/src/index.js\";\n\nexport { Cookies };\n\nexport class CookieBanner {\n constructor($module) {\n this.$module = $module;\n this.$acceptButton = $module && $module.querySelector('[value=\"accept\"]');\n this.$rejectButton = $module && $module.querySelector('[value=\"reject\"]');\n this.$prompt =\n $module && $module.querySelector(\".tna-cookie-banner__message--prompt\");\n this.$acceptedMessage =\n $module && $module.querySelector(\".tna-cookie-banner__message--accepted\");\n this.$rejectedMessage =\n $module && $module.querySelector(\".tna-cookie-banner__message--rejected\");\n this.$closeButtons = $module && $module.querySelectorAll('[value=\"close\"]');\n\n if (\n !this.$module ||\n !this.$acceptButton ||\n !this.$rejectButton ||\n !this.$prompt ||\n !this.$acceptedMessage ||\n !this.$rejectedMessage ||\n !this.$closeButtons\n ) {\n return;\n }\n\n this.cookies = new Cookies();\n\n this.cookiePreferencesSetKey =\n this.$module.dataset.preferencesKey || \"cookie_preferences_set\";\n\n if (!this.cookies.preferencesCorrectOnInit) {\n this.cookies.delete(this.cookiePreferencesSetKey);\n }\n\n if (\n !this.cookies.exists(this.cookiePreferencesSetKey) ||\n !this.cookies.hasValue(this.cookiePreferencesSetKey, \"true\")\n ) {\n this.$module.removeAttribute(\"hidden\");\n\n this.$acceptButton.addEventListener(\"click\", () => this.accept());\n this.$rejectButton.addEventListener(\"click\", () => this.reject());\n }\n }\n\n accept() {\n this.$prompt.setAttribute(\"hidden\", \"\");\n this.complete();\n this.cookies.enableAllPreferences();\n this.$acceptedMessage.removeAttribute(\"hidden\");\n this.$acceptedMessage.setAttribute(\"tabindex\", \"0\");\n this.$acceptedMessage.focus();\n this.$acceptedMessage.addEventListener(\"blur\", () => {\n this.$acceptedMessage.removeAttribute(\"tabindex\");\n });\n }\n\n reject() {\n this.$prompt.setAttribute(\"hidden\", \"\");\n this.complete();\n this.cookies.disableAllPreferences();\n this.$rejectedMessage.removeAttribute(\"hidden\");\n this.$rejectedMessage.setAttribute(\"tabindex\", \"0\");\n this.$rejectedMessage.focus();\n this.$rejectedMessage.addEventListener(\"blur\", () => {\n this.$rejectedMessage.removeAttribute(\"tabindex\");\n });\n }\n\n complete() {\n this.cookies.set(this.cookiePreferencesSetKey, true);\n this.$closeButtons.forEach(($closeButton) => {\n $closeButton.addEventListener(\"click\", () => this.close());\n });\n }\n\n close() {\n this.$module.setAttribute(\"hidden\", \"\");\n }\n}\n","export class DateInputProgressive {\n constructor($module) {\n this.$module = $module;\n this.$yearWrapper =\n $module && $module.querySelector(\".tna-date-input__item--year\");\n this.$yearInput =\n this.$yearWrapper && this.$yearWrapper.querySelector(\"input\");\n this.$monthWrapper =\n $module && $module.querySelector(\".tna-date-input__item--month\");\n this.$monthInput =\n this.$monthWrapper && this.$monthWrapper.querySelector(\"input\");\n this.$dayWrapper =\n $module && $module.querySelector(\".tna-date-input__item--day\");\n this.$dayInput =\n this.$dayWrapper && this.$dayWrapper.querySelector(\"input\");\n\n if (!this.$module) {\n return;\n }\n\n this.update();\n window.addEventListener(\"pageshow\", () => this.update());\n\n if (this.$yearInput) {\n this.$yearInput.addEventListener(\"keyup\", () => this.update());\n this.$yearInput.addEventListener(\"change\", () => this.update());\n }\n if (this.$monthInput) {\n this.$monthInput.addEventListener(\"keyup\", () => this.update());\n this.$monthInput.addEventListener(\"change\", () => this.update());\n }\n if (this.$dayInput) {\n this.$dayInput.addEventListener(\"keyup\", () => this.update());\n this.$dayInput.addEventListener(\"change\", () => this.update());\n }\n }\n\n update() {\n if (this.isValidYear()) {\n this.showMonth();\n if (this.isValidMonth()) {\n this.showDay();\n } else {\n this.hideDay();\n }\n } else {\n this.hideMonth();\n this.hideDay();\n }\n }\n\n isValidYear() {\n if (!this.$yearInput) {\n return true;\n }\n const yearValue = parseInt(this.$yearInput.value.trim(), 10);\n /* eslint-disable-next-line no-magic-numbers */\n return !isNaN(this.$yearInput.value) && !isNaN(yearValue) && yearValue > 0;\n }\n\n isValidMonth() {\n if (!this.$monthInput) {\n return true;\n }\n const monthRawValue = this.$monthInput.value.trim();\n const monthIntValue = parseInt(monthRawValue, 10);\n const validMonthStrings = [\n \"january\",\n \"february\",\n \"march\",\n \"april\",\n \"may\",\n \"june\",\n \"july\",\n \"august\",\n \"september\",\n \"october\",\n \"november\",\n \"december\",\n \"jan\",\n \"feb\",\n \"mar\",\n \"apr\",\n \"jun\",\n \"jul\",\n \"aug\",\n \"sep\",\n \"oct\",\n \"nov\",\n \"dec\",\n ];\n return (\n (!isNaN(this.$monthInput.value) &&\n !isNaN(monthIntValue) &&\n /* eslint-disable-next-line no-magic-numbers */\n monthIntValue > 0 &&\n /* eslint-disable-next-line no-magic-numbers */\n monthIntValue <= 12) ||\n validMonthStrings.includes(monthRawValue.toLowerCase())\n );\n }\n\n showMonth() {\n if (this.$monthWrapper) {\n this.$monthWrapper.removeAttribute(\"hidden\");\n }\n }\n\n hideMonth() {\n if (this.$monthWrapper) {\n this.$monthWrapper.setAttribute(\"hidden\", \"\");\n }\n }\n\n showDay() {\n if (this.$dayWrapper) {\n this.$dayWrapper.removeAttribute(\"hidden\");\n }\n }\n\n hideDay() {\n if (this.$dayWrapper) {\n this.$dayWrapper.setAttribute(\"hidden\", \"\");\n }\n }\n}\n","export class ErrorSummary {\n constructor($module) {\n this.$module = $module;\n }\n\n init() {\n if (!this.$module) {\n return;\n }\n\n const disableAutoFocus =\n this.$module.dataset.disableAutofocus === \"true\" || false;\n\n if (!disableAutoFocus) {\n this.setFocus(this.$module);\n }\n\n this.$module.addEventListener(\"click\", (event) => this.handleClick(event));\n }\n\n /* eslint-disable-next-line class-methods-use-this */\n setFocus($element, options = {}) {\n const isFocusable = $element.getAttribute(\"tabindex\");\n\n if (!isFocusable) {\n $element.setAttribute(\"tabindex\", \"-1\");\n }\n\n /**\n * Handle element blur\n */\n function onBlur() {\n options.onBlur?.call($element);\n\n if (!isFocusable) {\n $element.removeAttribute(\"tabindex\");\n }\n }\n\n /**\n * Handle element focus\n */\n function onFocus() {\n $element.addEventListener(\"blur\", onBlur, { once: true });\n }\n\n // Add listener to reset element on blur, after focus\n $element.addEventListener(\"focus\", onFocus, { once: true });\n\n // Focus element\n options.onBeforeFocus?.call($element);\n $element.focus();\n }\n\n handleClick(event) {\n const $target = event.target;\n if ($target && this.focusTarget($target)) {\n event.preventDefault();\n }\n }\n\n /* eslint-disable-next-line class-methods-use-this */\n getFragmentFromUrl(url) {\n if (!url.includes(\"#\")) {\n return null;\n }\n\n return url.split(\"#\").pop();\n }\n\n focusTarget($target) {\n // If the element that was clicked was not a link, return early\n if (!($target instanceof HTMLAnchorElement)) {\n return false;\n }\n\n const inputId = this.getFragmentFromUrl($target.href);\n if (!inputId) {\n return false;\n }\n\n const $input = document.getElementById(inputId);\n if (!$input) {\n return false;\n }\n\n const $legendOrLabel = this.getAssociatedLegendOrLabel($input);\n if (!$legendOrLabel) {\n return false;\n }\n\n // Scroll the legend or label into view *before* calling focus on the input\n // To avoid extra scrolling in browsers that don't support `preventScroll`\n // (which at time of writing is most of them...)\n $legendOrLabel.scrollIntoView();\n $input.focus({ preventScroll: true });\n\n return true;\n }\n\n /**\n * Get associated legend or label\n *\n * Returns the first element that exists from this list:\n *\n * - The `<legend>` associated with the closest `<fieldset>` ancestor, as long\n * as the top of it is no more than half a viewport height away from the\n * bottom of the input\n * - The first `<label>` that is associated with the input using for=\"inputId\"\n * - The closest parent `<label>`\n *\n * @private\n * @param {Element} $input - The input\n * @returns {Element | null} Associated legend or label, or null if no\n * associated legend or label can be found\n */\n /* eslint-disable-next-line class-methods-use-this */\n getAssociatedLegendOrLabel($input) {\n const $fieldset = $input.closest(\"fieldset\");\n\n if ($fieldset) {\n const $legends = $fieldset.getElementsByTagName(\"legend\");\n\n if ($legends.length) {\n const [$candidateLegend] = $legends;\n\n // If the input type is radio or checkbox, always use the legend if\n // There is one.\n if (\n $input instanceof HTMLInputElement &&\n ($input.type === \"checkbox\" || $input.type === \"radio\")\n ) {\n return $candidateLegend;\n }\n\n // For other input types, only scroll to the fieldset’s legend (instead\n // Of the label associated with the input) if the input would end up in\n // The top half of the screen.\n //\n // This should avoid situations where the input either ends up off the\n // Screen, or obscured by a software keyboard.\n const legendTop = $candidateLegend.getBoundingClientRect().top;\n const inputRect = $input.getBoundingClientRect();\n\n // If the browser doesn't support Element.getBoundingClientRect().height\n // Or window.innerHeight (like IE8), bail and just link to the label.\n if (inputRect.height && window.innerHeight) {\n const inputBottom = inputRect.top + inputRect.height;\n\n /* eslint-disable no-magic-numbers */\n if (inputBottom - legendTop < window.innerHeight / 2) {\n return $candidateLegend;\n }\n }\n }\n }\n\n return (\n document.querySelector(`label[for='${$input.getAttribute(\"id\")}']`) ??\n $input.closest(\"label\")\n );\n }\n}\n","export class FileInputDroppable {\n constructor($module) {\n this.$module = $module;\n this.$body = $module && $module.querySelector(\".tna-form-item__body\");\n this.$input = this.$body && this.$body.querySelector(\".tna-file-input\");\n\n if (!this.$module || !this.$body || !this.$input) {\n return;\n }\n\n this.acceptMutltipleFiles = this.$input.hasAttribute(\"multiple\");\n\n this.init();\n }\n\n init() {\n this.$droppableArea = document.createElement(\"div\");\n this.$droppableArea.classList.add(\n \"tna-file-input__droppable\",\n \"tna-file-input__droppable--empty\",\n );\n this.$body.insertBefore(this.$droppableArea, this.$input);\n this.$droppableArea.appendChild(this.$input);\n this.$pseudoSelectFileText = document.createElement(\"span\");\n this.$pseudoSelectFileText.setAttribute(\"aria-live\", \"polite\");\n this.$pseudoSelectFileText.classList.add(\n \"tna-file-input__droppable-status\",\n );\n const fileText = this.acceptMutltipleFiles ? \"files\" : \"file\";\n this.$pseudoSelectFileText.textContent = `No ${fileText} selected`;\n this.$droppableArea.appendChild(this.$pseudoSelectFileText);\n const $droppableButtons = document.createElement(\"div\");\n $droppableButtons.classList.add(\n \"tna-button-group\",\n \"tna-button-group--small\",\n \"tna-!--margin-top-s\",\n \"tna-file-input__droppable-buttons\",\n );\n this.$droppableArea.appendChild($droppableButtons);\n const $pseudoSelectFileButton = document.createElement(\"span\");\n $pseudoSelectFileButton.classList.add(\"tna-button\");\n $pseudoSelectFileButton.textContent = `Choose ${fileText}`;\n $droppableButtons.appendChild($pseudoSelectFileButton);\n const $pseudoDropFileButton = document.createElement(\"span\");\n $pseudoDropFileButton.textContent = `or drop ${fileText}`;\n $droppableButtons.appendChild($pseudoDropFileButton);\n this.$droppableAreaAriaLabel = document.createElement(\"span\");\n this.$droppableAreaAriaLabel.classList.add(\"tna-visually-hidden\");\n this.$droppableAreaAriaLabel.setAttribute(\"aria-live\", \"assertive\");\n this.$droppableArea.appendChild(this.$droppableAreaAriaLabel);\n\n this.$input.addEventListener(\"dragenter\", (event) =>\n this.showDropTarget(event),\n );\n this.$input.addEventListener(\"dragleave\", () => this.hideDropTarget());\n this.$input.addEventListener(\"dragend\", () => this.hideDropTarget());\n this.$input.addEventListener(\"change\", () => this.onChange());\n this.$input.addEventListener(\"drop\", () => this.onChange());\n }\n\n /* eslint-disable-next-line class-methods-use-this */\n isContainingFiles(dataTransfer) {\n const hasNoTypesInfo = !dataTransfer.types.length;\n const isDraggingFiles = dataTransfer.types.some((type) => type === \"Files\");\n return hasNoTypesInfo || isDraggingFiles;\n }\n\n showDropTarget(event, updateAriaLabel = true) {\n if (event.dataTransfer && this.isContainingFiles(event.dataTransfer)) {\n let classToAdd = \"tna-file-input__droppable--over\";\n if (event.dataTransfer.items.length) {\n classToAdd = \"tna-file-input__droppable--over-multiple\";\n }\n this.$droppableArea.classList.add(classToAdd);\n\n if (updateAriaLabel) {\n this.$droppableAreaAriaLabel.textContent = \"Entered drop zone\";\n }\n }\n }\n\n hideDropTarget(updateAriaLabel = true) {\n this.$droppableArea.classList.remove(\n \"tna-file-input__droppable--over\",\n \"tna-file-input__droppable--over-multiple\",\n );\n if (updateAriaLabel) {\n this.$droppableAreaAriaLabel.textContent = \"Left drop zone\";\n }\n }\n\n onChange() {\n const { files } = this.$input;\n if (this.acceptMutltipleFiles) {\n if (files.length) {\n let fileText = \"file\";\n /* eslint-disable-next-line no-magic-numbers */\n if (files.length > 1) {\n fileText += \"s\";\n }\n const textContent = `${files.length} ${fileText} selected`;\n this.$pseudoSelectFileText.textContent = textContent;\n } else {\n this.$pseudoSelectFileText.textContent = `No files selected`;\n }\n } else {\n this.$pseudoSelectFileText.textContent =\n /* eslint-disable-next-line no-magic-numbers */\n files[0]?.name || `No file selected`;\n }\n if (files.length) {\n this.$droppableArea.classList.remove(\"tna-file-input__droppable--empty\");\n } else {\n this.$droppableArea.classList.add(\"tna-file-input__droppable--empty\");\n }\n this.hideDropTarget(false);\n }\n}\n","import Cookies from \"@nationalarchives/cookies/src/index.js\";\n\nexport class Footer {\n constructor($module, themeCookieName = \"theme\") {\n this.$module = $module;\n this.$themeSelector =\n $module && $module.querySelector(\".tna-footer__theme-selector\");\n this.$themeSelectorNotice =\n $module && $module.querySelector(\".tna-footer__theme-selector-notice\");\n this.$themeSelectorEnableSettingsCookiesButton =\n this.$themeSelectorNotice &&\n this.$themeSelectorNotice.querySelector(\n \".tna-footer__theme-selector-enable-settings-cookies\",\n );\n this.$tnaTemplate = document.querySelector(\".tna-template\");\n\n if (\n !this.$module ||\n !this.$themeSelector ||\n !this.$themeSelectorNotice ||\n !this.$themeSelectorEnableSettingsCookiesButton ||\n !this.$tnaTemplate\n ) {\n return;\n }\n\n this.themeCookieName = themeCookieName;\n\n this.init();\n }\n\n init() {\n this.currentTheme = this.$themeSelector.dataset.themeOnLoad;\n\n this.cookies = new Cookies();\n\n this.$themeSelectorButtons = this.$themeSelector.querySelectorAll(\n \"button.tna-footer__theme-selector-button[value]\",\n );\n\n Array.from(this.$themeSelectorButtons).forEach(($themeSelectorButton) => {\n $themeSelectorButton.addEventListener(\"click\", (event) => {\n const $button = event.target;\n this.setTheme($button.value);\n this.selectThemeSelectorButton($button);\n });\n });\n\n this.$themeSelectorEnableSettingsCookiesButton.addEventListener(\n \"click\",\n () => {\n this.cookies.enablePreference(\"settings\");\n },\n );\n\n this.showThemeSelector();\n this.cookies.on(\"changePreference\", (data) => {\n if (Object.hasOwn(data, \"settings\")) {\n if (data.settings === true) {\n this.cookies.set(this.themeCookieName, this.currentTheme);\n this.$themeSelectorNotice.setAttribute(\"hidden\", \"\");\n } else {\n this.cookies.delete(this.themeCookieName);\n this.$themeSelectorNotice.removeAttribute(\"hidden\");\n }\n }\n });\n }\n\n showThemeSelector() {\n this.$themeSelector.removeAttribute(\"hidden\");\n if (this.cookies.exists(this.themeCookieName)) {\n const $currentThemeButton = Array.from(this.$themeSelectorButtons).find(\n ($button) => $button.value === this.cookies.get(this.themeCookieName),\n );\n if ($currentThemeButton) {\n this.selectThemeSelectorButton($currentThemeButton);\n }\n }\n if (!this.cookies.preference(\"settings\")) {\n this.$themeSelectorNotice.removeAttribute(\"hidden\");\n }\n }\n\n setTheme(theme) {\n if (theme === \"light\") {\n this.$tnaTemplate.classList.remove(\n \"tna-template--system-theme\",\n \"tna-template--dark-theme\",\n );\n } else if (theme === \"dark\") {\n this.$tnaTemplate.classList.remove(\"tna-template--system-theme\");\n this.$tnaTemplate.classList.add(`tna-template--dark-theme`);\n } else if (theme === \"system\") {\n this.$tnaTemplate.classList.remove(\"tna-template--dark-theme\");\n this.$tnaTemplate.classList.add(`tna-template--system-theme`);\n } else {\n return;\n }\n this.currentTheme = theme;\n if (this.cookies.preference(\"settings\")) {\n this.cookies.set(this.themeCookieName, this.currentTheme);\n } else {\n this.$themeSelectorNotice.removeAttribute(\"hidden\");\n }\n }\n\n selectThemeSelectorButton($selectedButton) {\n Array.from(this.$themeSelectorButtons).forEach(($button) => {\n if ($button.value === $selectedButton.value) {\n $button.classList.remove(\"tna-button--plain\");\n $button.setAttribute(\"aria-current\", true);\n } else {\n $button.classList.add(\"tna-button--plain\");\n $button.removeAttribute(\"aria-current\");\n }\n });\n }\n}\n","export class Gallery {\n constructor($module) {\n this.$module = $module;\n this.$itemsContainer =\n $module && $module.querySelector(\".tna-gallery__items\");\n this.$items =\n this.$itemsContainer &&\n this.$itemsContainer.querySelectorAll(\".tna-gallery__item\");\n this.$navigation =\n $module && $module.querySelector(\".tna-gallery__navigation\");\n this.$navigationItems =\n this.$navigation &&\n $module.querySelectorAll(\".tna-gallery__navigation-item\");\n this.$navigationButtons =\n $module && $module.querySelector(\".tna-gallery__navigation-buttons\");\n\n if (\n !this.$module ||\n !this.$itemsContainer ||\n !this.$items ||\n /* eslint-disable-next-line no-magic-numbers */\n this.$items.length < 2 ||\n !this.$navigation ||\n !this.$navigationItems ||\n !this.$navigationButtons\n ) {\n return;\n }\n\n this.$module.classList.add(\"tna-gallery--interactive\");\n\n this.$navigationButtonPrev = this.$navigationButtons.querySelector(\n \".tna-gallery__navigation-prev\",\n );\n this.$navigationButtonNext = this.$navigationButtons.querySelector(\n \".tna-gallery__navigation-next\",\n );\n\n this.setup();\n /* eslint-disable-next-line no-magic-numbers */\n this.currentId = this.$items[0].id;\n this.showItem(this.currentId);\n }\n\n setup() {\n this.$items.forEach(($item) => {\n $item.setAttribute(\"hidden\", \"\");\n $item.setAttribute(\"aria-hidden\", \"true\");\n $item\n .querySelector(\".tna-gallery__item-header\")\n ?.setAttribute(\"aria-hidden\", \"true\");\n });\n this.$navigation.removeAttribute(\"hidden\");\n this.$navigationItems.forEach(($item) => {\n $item.addEventListener(\"click\", () => {\n this.showItem($item.getAttribute(\"aria-controls\"));\n this.$itemsContainer.setAttribute(\"tabindex\", \"0\");\n this.$itemsContainer.focus();\n });\n });\n this.$module.addEventListener(\"keydown\", (event) => {\n let preventDefaultKeyAction = false;\n switch (event.key) {\n case \"ArrowLeft\":\n case \"ArrowUp\":\n this.showPreviousItem();\n preventDefaultKeyAction = true;\n break;\n case \"ArrowRight\":\n case \"ArrowDown\":\n this.showNextItem();\n preventDefaultKeyAction = true;\n break;\n case \"Home\":\n this.showFirstItem();\n preventDefaultKeyAction = true;\n break;\n case \"End\":\n this.showLastItem();\n preventDefaultKeyAction = true;\n break;\n default:\n break;\n }\n if (preventDefaultKeyAction) {\n event.stopPropagation();\n event.preventDefault();\n }\n });\n\n this.$navigationButtons?.removeAttribute(\"hidden\");\n this.$navigationButtonPrev?.addEventListener(\"click\", () => {\n this.showPreviousItem();\n });\n this.$navigationButtonNext?.addEventListener(\"click\", () => {\n this.showNextItem();\n });\n\n this.$liveRegion = document.createElement(\"div\");\n this.$liveRegion.setAttribute(\"aria-live\", \"polite\");\n this.$liveRegion.setAttribute(\"aria-atomic\", \"true\");\n this.$liveRegion.setAttribute(\"class\", \"tna-gallery__item-header\");\n this.$itemsContainer.prepend(this.$liveRegion);\n this.$itemsContainer.classList.add(\"tna-gallery__items--hide-item-titles\");\n this.$itemsContainer.addEventListener(\"blur\", () =>\n this.$itemsContainer.removeAttribute(\"tabindex\"),\n );\n }\n\n showItem(id) {\n this.$items.forEach(($item) => {\n if (id && $item.id === id) {\n $item.removeAttribute(\"hidden\");\n $item.removeAttribute(\"aria-hidden\");\n } else {\n $item.setAttribute(\"hidden\", \"\");\n $item.setAttribute(\"aria-hidden\", \"true\");\n }\n });\n this.$navigationItems.forEach(($item) => {\n if (id) {\n if ($item.getAttribute(\"aria-controls\") === id) {\n $item.setAttribute(\"aria-current\", \"true\");\n } else {\n $item.setAttribute(\"aria-current\", \"false\");\n }\n } else {\n $item.setAttribute(\"aria-current\", \"false\");\n }\n });\n this.currentId = id;\n /* eslint-disable-next-line no-magic-numbers */\n this.$liveRegion.textContent = `Image ${this.getCurrentItemIndex() + 1} of ${this.$items.length}`;\n }\n\n getCurrentItemIndex() {\n return Array.from(this.$items).findIndex(\n ($item) => $item.id === this.currentId,\n );\n }\n\n showPreviousItem() {\n /* eslint-disable-next-line no-magic-numbers */\n let nextIndexToShow = this.getCurrentItemIndex() - 1;\n /* eslint-disable-next-line no-magic-numbers */\n if (nextIndexToShow < 0) {\n /* eslint-disable-next-line no-magic-numbers */\n nextIndexToShow = this.$items.length - 1;\n }\n this.showItem(this.$items[nextIndexToShow].id);\n }\n\n showNextItem() {\n /* eslint-disable-next-line no-magic-numbers */\n let nextIndexToShow = this.getCurrentItemIndex() + 1;\n if (nextIndexToShow >= this.$items.length) {\n /* eslint-disable-next-line no-magic-numbers */\n nextIndexToShow = 0;\n }\n this.showItem(this.$items[nextIndexToShow].id);\n }\n\n showFirstItem() {\n /* eslint-disable-next-line no-magic-numbers */\n this.showItem(this.$items[0].id);\n }\n\n showLastItem() {\n /* eslint-disable-next-line no-magic-numbers */\n this.showItem(this.$items[this.$items.length - 1].id);\n }\n}\n","export class GlobalHeader {\n constructor($module) {\n this.$module = $module;\n this.$toggleButton =\n $module && $module.querySelector(\".tna-global-header__navigation-button\");\n this.$navigation =\n $module &&\n $module.querySelector(\".tna-global-header__navigation-wrapper\");\n this.$topNavigation =\n $module &&\n $module.querySelector(\".tna-global-header__top-navigation-wrapper\");\n this.$links =\n $module &&\n ((this.$navigation &&\n this.$navigation.querySelectorAll(\"[tabindex='0']\")) ||\n (this.$topNavigation &&\n this.$topNavigation.querySelectorAll(\"[tabindex='0']\")));\n this.menuOpened = false;\n this.mql = window.matchMedia(\"(max-width: 48em)\");\n\n if (\n !this.$module ||\n !this.$toggleButton ||\n (!this.$navigation && !this.$topNavigation)\n ) {\n return;\n }\n\n this.$toggleButton.removeAttribute(\"hidden\");\n this.syncState();\n this.$toggleButton.addEventListener(\"click\", () =>\n this.handleToggleNavigation(),\n );\n if (\"addEventListener\" in this.mql) {\n this.mql.addEventListener(\"change\", () => this.syncState());\n } else {\n this.mql.addListener(() => this.syncState());\n }\n\n this.$module.addEventListener(\"keyup\", (event) => {\n if (event.code === \"Escape\" && this.mql.matches && this.menuOpened) {\n this.menuOpened = false;\n this.syncState();\n this.$toggleButton.focus();\n }\n });\n }\n\n handleToggleNavigation() {\n this.menuOpened = !this.menuOpened;\n this.syncState();\n }\n\n syncState() {\n if (this.mql.matches) {\n if (this.menuOpened) {\n this.show();\n } else {\n this.hide();\n }\n } else {\n this.show();\n }\n }\n\n hide() {\n if (this.$navigation) {\n this.$navigation.hidden = true;\n this.$navigation.setAttribute(\"aria-hidden\", \"true\");\n }\n if (this.$topNavigation) {\n this.$topNavigation.hidden = true;\n this.$topNavigation.setAttribute(\"aria-hidden\", \"true\");\n }\n this.$toggleButton.setAttribute(\"aria-expanded\", \"false\");\n this.$toggleButton.setAttribute(\"title\", \"Open menu\");\n this.$toggleButton.classList.remove(\n \"tna-global-header__navigation-button--opened\",\n );\n /* eslint-disable-next-line no-magic-numbers */\n for (let index = 0; index < this.$links.length; index += 1) {\n this.$links[index].setAttribute(\"tabindex\", \"-1\");\n }\n }\n\n show() {\n if (this.$navigation) {\n this.$navigation.hidden = false;\n this.$navigation.setAttribute(\"aria-hidden\", \"false\");\n }\n if (this.$topNavigation) {\n this.$topNavigation.hidden = false;\n this.$topNavigation.setAttribute(\"aria-hidden\", \"false\");\n }\n this.$toggleButton.setAttribute(\"aria-expanded\", \"true\");\n this.$toggleButton.setAttribute(\"title\", \"Close menu\");\n this.$toggleButton.classList.add(\n \"tna-global-header__navigation-button--opened\",\n );\n /* eslint-disable-next-line no-magic-numbers */\n for (let index = 0; index < this.$links.length; index += 1) {\n this.$links[index].setAttribute(\"tabindex\", \"0\");\n }\n }\n}\n","export class Header {\n constructor($module) {\n this.$module = $module;\n this.$toggleButton =\n $module && $module.querySelector(\".tna-header__navigation-button\");\n this.$navigation =\n $module && $module.querySelector(\".tna-header__navigation\");\n this.$links =\n $module &&\n this.$navigation &&\n this.$navigation.querySelectorAll(\"[tabindex='0']\");\n this.menuOpened = false;\n this.mql = window.matchMedia(\"(max-width: 48em)\");\n\n if (!this.$module || !this.$toggleButton || !this.$navigation) {\n return;\n }\n\n this.$toggleButton.removeAttribute(\"hidden\");\n this.syncState();\n this.$toggleButton.addEventListener(\"click\", () =>\n this.handleToggleNavigation(),\n );\n if (\"addEventListener\" in this.mql) {\n this.mql.addEventListener(\"change\", () => this.syncState());\n } else {\n this.mql.addListener(() => this.syncState());\n }\n\n this.$module.addEventListener(\"keyup\", (event) => {\n if (event.code === \"Escape\" && this.menuOpened && this.mql.matches) {\n this.menuOpened = false;\n this.syncState();\n this.$toggleButton.focus();\n }\n });\n }\n\n handleToggleNavigation() {\n this.menuOpened = !this.menuOpened;\n this.syncState();\n }\n\n syncState() {\n if (this.mql.matches) {\n if (this.menuOpened) {\n this.show();\n } else {\n this.hide();\n }\n } else {\n this.show();\n }\n }\n\n show() {\n this.$navigation.classList.add(\"tna-header__navigation--open\");\n this.$navigation.removeAttribute(\"hidden\");\n this.$navigation.setAttribute(\"aria-hidden\", \"false\");\n this.$toggleButton.setAttribute(\"aria-expanded\", \"true\");\n this.$toggleButton.setAttribute(\"title\", \"Close menu\");\n this.$toggleButton.classList.add(\"tna-header__navigation-button--opened\");\n\n /* eslint-disable-next-line no-magic-numbers */\n for (let index = 0; index < this.$links.length; index += 1) {\n this.$links[index].setAttribute(\"tabindex\", \"0\");\n }\n }\n\n hide() {\n this.$navigation.classList.remove(\"tna-header__navigation--open\");\n this.$navigation.hidden = true;\n this.$navigation.setAttribute(\"aria-hidden\", \"true\");\n this.$toggleButton.setAttribute(\"aria-expanded\", \"false\");\n this.$toggleButton.setAttribute(\"title\", \"Open menu\");\n this.$toggleButton.classList.remove(\n \"tna-header__navigation-button--opened\",\n );\n\n /* eslint-disable-next-line no-magic-numbers */\n for (let index = 0; index < this.$links.length; index += 1) {\n this.$links[index].setAttribute(\"tabindex\", \"-1\");\n }\n }\n}\n","import uuidv4 from \"../../lib/uuid.mjs\";\n\nexport class Picture {\n constructor($module) {\n this.$module = $module;\n this.$imageWrapper =\n $module && $module.querySelector(\".tna-picture__image-wrapper\");\n\n this.$transcriptToggle =\n this.$imageWrapper &&\n this.$imageWrapper.querySelector(\".tna-picture__toggle-transcript\");\n\n this.$transcript =\n $module && $module.querySelector(\".tna-picture__transcript\");\n this.transcriptOpened = false;\n\n if (\n !this.$module ||\n !this.$imageWrapper ||\n !this.$transcriptToggle ||\n !this.$transcript\n ) {\n return;\n }\n\n this.openLabel =\n this.$module.dataset.informationLabelOpen || \"Open transcript\";\n this.closeLabel =\n this.$module.dataset.informationLabelClose || \"Close transcript\";\n\n this.init();\n }\n\n init() {\n const uniqueId = `tna-picture-${uuidv4()}`;\n\n this.$transcriptToggle.removeAttribute(\"hidden\");\n this.$transcriptToggle.setAttribute(\"aria-controls\", uniqueId);\n this.$transcriptToggle.innerText = this.openLabel;\n this.$transcriptToggle.addEventListener(\"click\", () =>\n this.toggleTranscript(),\n );\n\n this.$transcript.setAttribute(\"id\", uniqueId);\n this.$transcript.setAttribute(\"hidden\", \"\");\n\n this.$transcript.addEventListener(\"keydown\", (event) => {\n switch (event.key) {\n case \"Escape\":\n this.toggleTranscript();\n this.$transcriptToggle.focus();\n break;\n default:\n break;\n }\n });\n }\n\n toggleTranscript() {\n this.transcriptOpened = !this.transcriptOpened;\n if (this.transcriptOpened) {\n this.$transcriptToggle.setAttribute(\"aria-expanded\", true);\n this.$transcriptToggle.innerText = this.closeLabel;\n this.$transcript.removeAttribute(\"hidden\");\n } else {\n this.$transcriptToggle.setAttribute(\"aria-expanded\", false);\n this.$transcriptToggle.innerText = this.openLabel;\n this.$transcript.setAttribute(\"hidden\", \"\");\n }\n }\n}\n","export class Sidebar {\n constructor($module, options = {}) {\n this.$module = $module;\n this.items =\n $module &&\n Array.from($module.querySelectorAll(\".tna-sidebar__item\"))\n .map(($item) => {\n const id = $item\n .querySelector(\".tna-sidebar__link[href^='#']\")\n .getAttribute(\"href\")\n /* eslint-disable-next-line no-magic-numbers */\n .substring(1);\n const target = document.getElementById(id);\n return {\n $item,\n id,\n target,\n };\n })\n .filter((item) => item.target);\n\n if (!this.$module || !this.items) {\n return;\n }\n\n /* eslint-disable-next-line no-magic-numbers */\n const { scrollTopThreshold = 0, disableHighlightSize = \"small\" } = options;\n this.scrollTopThreshold = scrollTopThreshold;\n this.disableHighlightSize = disableHighlightSize;\n\n this.init();\n }\n\n init() {\n this.breakpoints = {\n tiny:\n getComputedStyle(document.documentElement).getPropertyValue(\n \"--media-breakpoint-tiny\",\n ) || \"480px\",\n small:\n getComputedStyle(document.documentElement).getPropertyValue(\n \"--media-breakpoint-small\",\n ) || \"768px\",\n medium:\n getComputedStyle(document.documentElement).getPropertyValue(\n \"--media-breakpoint-medium\",\n ) || \"1024px\",\n };\n\n if (this.disableHighlightSize) {\n if (!Object.keys(this.breakpoints).includes(this.disableHighlightSize)) {\n throw new Error(\n `Invalid value for disableHighlightSize: ${this.disableHighlightSize}. Expected one of: ${Object.keys(this.breakpoints).join(\", \")}`,\n );\n }\n this.hideOnDevice = window.matchMedia(\n `(max-width: ${this.breakpoints[this.disableHighlightSize]})`,\n );\n } else {\n this.hideOnDevice = null;\n }\n\n this.currentItem = null;\n\n window.addEventListener(\"scroll\", () => this.highlightCurrentSection());\n window.addEventListener(\"resize\", () => this.highlightCurrentSection());\n this.highlightCurrentSection();\n }\n\n highlightCurrentSection() {\n if (this.hideOnDevice && this.hideOnDevice.matches) {\n this.items.forEach((item) => {\n item.$item.classList.remove(\"tna-sidebar__item--current\");\n });\n this.currentItem = null;\n return;\n }\n\n const $topItem = this.items.findLast(\n (item) =>\n Math.floor(item.target.getBoundingClientRect().top) <=\n this.scrollTopThreshold,\n );\n\n if ($topItem !== this.currentItem) {\n this.items.forEach((item) => {\n if ($topItem && item === $topItem) {\n this.currentItem = item;\n this.currentItem.$item.classList.add(\"tna-sidebar__item--current\");\n } else {\n item.$item.classList.remove(\"tna-sidebar__item--current\");\n }\n });\n }\n this.currentItem = $topItem || null;\n }\n}\n","export class SkipLink {\n linkedElementListener = false;\n\n constructor($module) {\n this.$module = $module;\n this.linkedElementId = $module.getAttribute(\"href\")?.split(\"#\").pop();\n this.$linkedElement =\n $module &&\n this.linkedElementId &&\n document.getElementById(this.linkedElementId);\n\n if (this.$module && this.$linkedElement) {\n this.$module.addEventListener(\"click\", () => this.focusLinkedElement());\n }\n }\n\n focusLinkedElement() {\n if (!this.$linkedElement.getAttribute(\"tabindex\")) {\n this.$linkedElement.setAttribute(\"tabindex\", \"-1\");\n this.$linkedElement.classList.add(\"tna-!--no-focus-style\");\n\n if (!this.linkedElementListener) {\n this.$linkedElement.addEventListener(\"blur\", () =>\n this.removeFocusProperties(),\n );\n this.linkedElementListener = true;\n }\n }\n\n this.$linkedElement.focus();\n }\n\n removeFocusProperties() {\n this.$linkedElement.removeAttribute(\"tabindex\");\n this.$linkedElement.classList.remove(\"tna-!--no-focus-style\");\n }\n}\n","export class Tabs {\n constructor($module) {\n this.$module = $module;\n this.$tabList = $module && $module.querySelector(\".tna-tabs__list\");\n this.$tabListItemLinks =\n $module &&\n this.$tabList &&\n this.$tabList.querySelectorAll(\".tna-tabs__button\");\n this.$tabItems = $module && $module.querySelectorAll(\".tna-tabs__item\");\n\n if (\n !this.$module ||\n !this.$tabList ||\n !this.$tabListItemLinks ||\n !this.$tabItems ||\n this.$tabListItemLinks.length !== this.$tabItems.length\n ) {\n return;\n }\n\n this.currentTabIndex = 0;\n this.init();\n }\n\n init() {\n this.$module.classList.add(\"tna-tabs--interactive\");\n this.$tabList.removeAttribute(\"hidden\");\n this.$tabListItemLinks.forEach(($tabListItemLink) => {\n const tabPanelID = $tabListItemLink.getAttribute(\"aria-controls\");\n $tabListItemLink.setAttribute(\"aria-selected\", false);\n const $tabPanel = document.getElementById(tabPanelID);\n $tabPanel.setAttribute(\"aria-labelledby\", $tabListItemLink.id);\n $tabPanel.setAttribute(\"role\", \"tabpanel\");\n $tabListItemLink.addEventListener(\n \"click\",\n (event) => this.handleItemLinkClick(event),\n true,\n );\n });\n this.switchTabByIndex(this.currentTabIndex);\n this.$module.addEventListener(\"keydown\", (event) =>\n this.handleItemLinkKeyDown(event),\n );\n }\n\n handleItemLinkClick(itemLinkClickEvent) {\n itemLinkClickEvent.preventDefault();\n const targetItem =\n itemLinkClickEvent.currentTarget.getAttribute(\"aria-controls\");\n this.switchTabByID(targetItem);\n }\n\n handleItemLinkKeyDown(itemLinkKeyDownEvent) {\n let preventDefaultKeyAction = false;\n switch (itemLinkKeyDownEvent.key) {\n case \"ArrowLeft\":\n case \"ArrowUp\":\n this.previousTab();\n preventDefaultKeyAction = true;\n break;\n case \"ArrowRight\":\n case \"ArrowDown\":\n this.nextTab();\n preventDefaultKeyAction = true;\n break;\n case \"Home\":\n /* eslint-disable-next-line no-magic-numbers */\n this.switchTabByIndex(0, true);\n preventDefaultKeyAction = true;\n break;\n case \"End\":\n /* eslint-disable-next-line no-magic-numbers */\n this.switchTabByIndex(this.$tabListItemLinks.length - 1, true);\n preventDefaultKeyAction = true;\n break;\n default:\n break;\n }\n if (preventDefaultKeyAction) {\n itemLinkKeyDownEvent.stopPropagation();\n itemLinkKeyDownEvent.preventDefault();\n }\n }\n\n nextTab() {\n /* eslint-disable-next-line no-magic-numbers */\n if (this.currentTabIndex < this.$tabListItemLinks.length - 1) {\n /* eslint-disable-next-line no-magic-numbers */\n this.switchTabByIndex(this.currentTabIndex + 1, true);\n } else {\n /* eslint-disable-next-line no-magic-numbers */\n this.switchTabByIndex(0, true);\n }\n }\n\n previousTab() {\n /* eslint-disable-next-line no-magic-numbers */\n if (this.currentTabIndex >= 1) {\n /* eslint-disable-next-line no-magic-numbers */\n this.switchTabByIndex(this.currentTabIndex - 1, true);\n } else {\n /* eslint-disable-next-line no-magic-numbers */\n this.switchTabByIndex(this.$tabListItemLinks.length - 1, true);\n }\n }\n\n switchTabByIndex(newIndex, switchFocus = false) {\n this.currentTabIndex = newIndex;\n this.$tabListItemLinks.forEach(($tabListItemLink, index) => {\n if (index === this.currentTabIndex) {\n $tabListItemLink.setAttribute(\"aria-selected\", true);\n $tabListItemLink.setAttribute(\"tabindex\", \"0\");\n if (switchFocus) {\n $tabListItemLink.focus();\n }\n } else {\n $tabListItemLink.setAttribute(\"aria-selected\", false);\n $tabListItemLink.setAttribute(\"tabindex\", \"-1\");\n }\n });\n this.$tabItems.forEach(($tabItem, index) => {\n if (index === this.currentTabIndex) {\n $tabItem.removeAttribute(\"hidden\");\n $tabItem.setAttribute(\"tabindex\", \"0\");\n } else {\n $tabItem.setAttribute(\"hidden\", \"\");\n $tabItem.setAttribute(\"tabindex\", \"-1\");\n }\n });\n }\n\n switchTabByID(targetId) {\n const index = Array.from(this.$tabItems).findIndex(\n ($tabItem) => $tabItem.getAttribute(\"id\") === targetId,\n );\n this.switchTabByIndex(index);\n }\n}\n","export class TextInputPassword {\n constructor($module) {\n this.$module = $module;\n this.$input = $module && $module.querySelector(\".tna-text-input\");\n\n if (\n !this.$module ||\n !this.$input ||\n this.$input.getAttribute(\"type\") !== \"password\"\n ) {\n return;\n }\n\n this.$textInputWrapper = document.createElement(\"div\");\n this.$textInputWrapper.classList.add(\"tna-text-input-wrapper\");\n\n this.$textInputPasswordToggle = document.createElement(\"button\");\n this.$textInputPasswordToggle.setAttribute(\"type\", \"button\");\n this.$textInputPasswordToggle.classList.add(\n \"tna-button\",\n \"tna-button--small\",\n \"tna-button--icon-only\",\n );\n this.$textInputPasswordToggle.setAttribute(\"aria-controls\", this.$input.id);\n this.updateTogglePasswordButtonText();\n\n this.$textInputWrapper.appendChild(this.$input);\n this.$textInputWrapper.appendChild(this.$textInputPasswordToggle);\n this.$module.appendChild(this.$textInputWrapper);\n\n this.$textInputPasswordToggle.addEventListener(\"click\", () => {\n this.togglePasswordType();\n this.$input.focus();\n });\n }\n\n togglePasswordType() {\n if (this.$input.getAttribute(\"type\") === \"password\") {\n this.$input.setAttribute(\"type\", \"text\");\n } else {\n this.$input.setAttribute(\"type\", \"password\");\n }\n this.updateTogglePasswordButtonText();\n }\n\n updateTogglePasswordButtonText() {\n if (this.$input.getAttribute(\"type\") === \"password\") {\n this.$textInputPasswordToggle.innerHTML = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 640 640\" height=\"24\" aria-hidden=\"true\" focusable=\"false\"><!--!Font Awesome Free v7.0.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--><path d=\"M320 96C239.2 96 174.5 132.8 127.4 176.6C80.6 220.1 49.3 272 34.4 307.7C31.1 315.6 31.1 324.4 34.4 332.3C49.3 368 80.6 420 127.4 463.4C174.5 507.1 239.2 544 320 544C400.8 544 465.5 507.2 512.6 463.4C559.4 419.9 590.7 368 605.6 332.3C608.9 324.4 608.9 315.6 605.6 307.7C590.7 272 559.4 220 512.6 176.6C465.5 132.9 400.8 96 320 96zM176 320C176 240.5 240.5 176 320 176C399.5 176 464 240.5 464 320C464 399.5 399.5 464 320 464C240.5 464 176 399.5 176 320zM320 256C320 291.3 291.3 320 256 320C244.5 320 233.7 317 224.3 311.6C223.3 322.5 224.2 333.7 227.2 344.8C240.9 396 293.6 426.4 344.8 412.7C396 399 426.4 346.3 412.7 295.1C400.5 249.4 357.2 220.3 311.6 224.3C316.9 233.6 320 244.4 320 256z\" /></svg>Show password`;\n this.$textInputPasswordToggle.setAttribute(\"title\", \"Show password\");\n this.$textInputPasswordToggle.setAttribute(\"aria-label\", \"Show password\");\n } else {\n this.$textInputPasswordToggle.innerHTML = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 640 640\" height=\"24\" aria-hidden=\"true\" focusable=\"false\"><!--!Font Awesome Free v7.0.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--><path d=\"M73 39.1C63.6 29.7 48.4 29.7 39.1 39.1C29.8 48.5 29.7 63.7 39 73.1L567 601.1C576.4 610.5 591.6 610.5 600.9 601.1C610.2 591.7 610.3 576.5 600.9 567.2L504.5 470.8C507.2 468.4 509.9 466 512.5 463.6C559.3 420.1 590.6 368.2 605.5 332.5C608.8 324.6 608.8 315.8 605.5 307.9C590.6 272.2 559.3 220.2 512.5 176.8C465.4 133.1 400.7 96.2 319.9 96.2C263.1 96.2 214.3 114.4 173.9 140.4L73 39.1zM236.5 202.7C260 185.9 288.9 176 320 176C399.5 176 464 240.5 464 320C464 351.1 454.1 379.9 437.3 403.5L402.6 368.8C415.3 347.4 419.6 321.1 412.7 295.1C399 243.9 346.3 213.5 295.1 227.2C286.5 229.5 278.4 232.9 271.1 237.2L236.4 202.5zM357.3 459.1C345.4 462.3 332.9 464 320 464C240.5 464 176 399.5 176 320C176 307.1 177.7 294.6 180.9 282.7L101.4 203.2C68.8 240 46.4 279 34.5 307.7C31.2 315.6 31.2 324.4 34.5 332.3C49.4 368 80.7 420 127.5 463.4C174.6 507.1 239.3 544 320.1 544C357.4 544 391.3 536.1 421.6 523.4L357.4 459.2z\" /></svg>Hide password`;\n this.$textInputPasswordToggle.setAttribute(\"title\", \"Hide password\");\n this.$textInputPasswordToggle.setAttribute(\"aria-label\", \"Hide password\");\n }\n }\n}\n","export class TextAreaItemisedRows {\n constructor($module, options = {}) {\n this.$module = $module;\n this.$formFieldInput =\n this.$module && this.$module.querySelector(\".tna-textarea\");\n this.$formFieldInputHint =\n this.$module && this.$module.querySelector(\".tna-form-item__hint\");\n this.$formFieldBody =\n this.$module && this.$module.querySelector(\".tna-form-item__body\");\n\n if (\n !this.$module ||\n !this.$formFieldInput ||\n !this.$formFieldBody ||\n this.$formFieldInput.getAttribute(\"hidden\") !== null\n ) {\n return;\n }\n\n const { enhancedHint } = options;\n this.enhancedHint = enhancedHint || \"Enter an item and press enter\";\n\n this.init();\n }\n\n init() {\n this.values = this.$formFieldInput.value\n .split(\"\\n\")\n .map((value) => value.trim())\n .filter((value) => value);\n\n this.id = this.$formFieldInput.id;\n\n this.$formFieldNewInput = document.createElement(\"input\");\n this.$formFieldNewInput.classList.add(\"tna-text-input\");\n [\"id\", \"aria-describedby\"].forEach((attribute) => {\n this.$formFieldNewInput.setAttribute(\n attribute,\n this.$formFieldInput.getAttribute(attribute),\n );\n this.$formFieldInput.removeAttribute(attribute);\n });\n this.$formFieldBody.appendChild(this.$formFieldNewInput);\n this.$formFieldInput.setAttribute(\"hidden\", \"\");\n this.$formFieldInput.addEventListener(\"keyup\", () => this.updateList());\n this.$formFieldNewInput.addEventListener(\"keypress\", (event) => {\n if (event.key === \"Enter\") {\n this.appendValue(event.target.value);\n }\n });\n\n this.$formFieldNewInputAddButton = document.createElement(\"button\");\n this.$formFieldNewInputAddButton.setAttribute(\"type\", \"button\");\n this.$formFieldNewInputAddButton.classList.add(\n \"tna-button\",\n \"tna-button--small\",\n );\n this.$formFieldNewInputAddButtonInner = document.createElement(\"span\");\n this.$formFieldNewInputAddButtonInner.innerText = \"Add\";\n this.$formFieldNewInputAddButtonInnerExtra = document.createElement(\"span\");\n this.$formFieldNewInputAddButtonInnerExtra.classList.add(\n \"tna-visually-hidden\",\n );\n this.$formFieldNewInputAddButtonInnerExtra.innerText = \" to list\";\n this.$formFieldNewInputAddButtonInner.appendChild(\n this.$formFieldNewInputAddButtonInnerExtra,\n );\n this.$formFieldNewInputAddButton.appendChild(\n this.$formFieldNewInputAddButtonInner,\n );\n this.$formFieldBody.appendChild(this.$formFieldNewInputAddButton);\n this.$formFieldNewInputAddButton.addEventListener(\"click\", () => {\n this.appendValue(this.$formFieldNewInput.value);\n });\n\n this.$formFieldLiveAria = document.createElement(\"div\");\n this.$formFieldLiveAria.setAttribute(\"aria-live\", \"assertive\");\n this.$formFieldLiveAria.classList.add(\"tna-visually-hidden\");\n this.$module.appendChild(this.$formFieldLiveAria);\n\n this.$formFieldCounter = document.createElement(\"p\");\n this.$formFieldCounter.id = `${this.id}-list-helper`;\n this.$formFieldCounter.classList.add(\"tna-!--margin-top-xs\");\n this.$module.appendChild(this.$formFieldCounter);\n\n this.$formFieldNewInput.setAttribute(\n \"aria-describedby\",\n `${this.$formFieldNewInput.getAttribute(\"aria-describedby\")} ${\n this.$formFieldCounter.id\n }`,\n );\n\n this.$valuesList = document.createElement(\"ul\");\n this.$valuesList.classList.add(\n \"tna-compound-filters\",\n \"tna-!--margin-top-xs\",\n );\n this.$valuesList.addEventListener(\"blur\", () => {\n this.$valuesList.removeAttribute(\"tabindex\");\n this.updateAriaText(\"\");\n });\n this.$module.appendChild(this.$valuesList);\n\n if (!this.$formFieldInputHint) {\n this.$formFieldInputHint = document.createElement(\"p\");\n this.$formFieldInputHint.classList.add(\"tna-form-item__hint\");\n this.$formFieldBody.parentNode.insertBefore(\n this.$formFieldInputHint,\n this.$formFieldBody,\n );\n }\n this.$formFieldInputHint.innerText = this.enhancedHint;\n\n this.updateList();\n }\n\n updateAriaText(content) {\n this.$formFieldLiveAria.innerText = content;\n }\n\n /* eslint-disable-next-line class-methods-use-this */\n normaliseValue(value) {\n return value.replace(/\\s{2,}/u, \" \").trim();\n }\n\n isValueInList(value) {\n return this.values\n .map((eachValue) => this.normaliseValue(eachValue).toLowerCase())\n .includes(value.toLowerCase().trim());\n }\n\n appendValue(value) {\n const newValue = this.normaliseValue(value);\n if (newValue) {\n if (this.isValueInList(newValue)) {\n this.updateAriaText(`'${newValue}' already added`);\n } else {\n this.values.push(newValue);\n this.$formFieldInput.value = this.values.join(\"\\n\");\n this.updateList();\n this.updateAriaText(`'${newValue}' added`);\n }\n } else {\n this.updateAriaText(\"Enter an item to add\");\n }\n this.$formFieldNewInput.value = \"\";\n this.$formFieldNewInput.focus();\n }\n\n removeValue(value) {\n const removeValue = this.normaliseValue(value);\n if (removeValue && this.isValueInList(removeValue)) {\n this.values = this.values.filter(\n (existingValue) => existingValue !== removeValue,\n );\n this.$formFieldInput.value = this.values.join(\"\\n\");\n this.updateList();\n this.updateAriaText(`'${removeValue}' removed`);\n }\n if (this.values.length) {\n this.$valuesList.setAttribute(\"tabindex\", \"0\");\n this.$valuesList.focus();\n } else {\n this.$formFieldNewInput.focus();\n }\n }\n\n updateList() {\n this.$valuesList.innerHTML = \"\";\n this.values\n .map((value) => {\n const $item = document.createElement(\"li\");\n $item.classList.add(\"tna-compound-filters__item\");\n const $itemLabel = document.createElement(\"span\");\n $itemLabel.innerText = value;\n $item.appendChild($itemLabel);\n\n const $removeItemButton = document.createElement(\"button\");\n $removeItemButton.innerText = `Remove '${value}'`;\n $removeItemButton.setAttribute(\"type\", \"button\");\n $removeItemButton.classList.add(\"tna-compound-filters__link\");\n $removeItemButton.addEventListener(\"click\", () => {\n this.removeValue(value);\n });\n $item.appendChild($removeItemButton);\n return $item;\n })\n .forEach(($item) => this.$valuesList.appendChild($item));\n\n let innerTextItemValue = \"item\";\n /* eslint-disable-next-line no-magic-numbers */\n if (this.values.length !== 1) {\n innerTextItemValue += \"s\";\n }\n const innerTextValue = `${this.values.length} ${innerTextItemValue} added`;\n this.$formFieldCounter.innerText = innerTextValue;\n }\n}\n","import uuidv4 from \"./uuid.mjs\";\n\nexport const iso8601ToPrettyDatetime = (dateStr) => {\n const datetime = dateStr;\n\n if (!datetime) {\n throw new Error(\"No datetime provided\");\n }\n const isDateTime =\n /^\\d{4}(?:-\\d{2}){2}(?:T| )\\d{2}(?::\\d{2}){1,2}(?:\\.\\d+)?(?:Z|(?:[+-]\\d{2}:\\d{2}))?$/u.test(\n datetime,\n );\n const isDate = /^\\d{4}(?:-\\d{2}){2}$/u.test(datetime);\n if (!isDateTime && !isDate) {\n throw new Error(\"Invalid datetime provided\");\n }\n\n const date = new Date(datetime);\n if (!(date instanceof Date) || isNaN(date)) {\n throw new Error(\"Invalid datetime provided\");\n }\n\n const dayString = date.toLocaleDateString(\"en-GB\", {\n weekday: \"long\",\n });\n const dateString = date.toLocaleDateString(\"en-GB\", {\n day: \"numeric\",\n month: \"long\",\n year: \"numeric\",\n });\n\n if (isDateTime && (date.getHours() || date.getMinutes())) {\n let timeString = date.toLocaleTimeString(\"en-GB\", {\n hour: \"2-digit\",\n minute: \"2-digit\",\n });\n if (date.getSeconds()) {\n timeString = date.toLocaleTimeString(\"en-GB\", {\n hour: \"2-digit\",\n minute: \"2-digit\",\n second: \"2-digit\",\n });\n }\n return `${dayString} ${dateString}, ${timeString}`;\n }\n return `${dayString} ${dateString}`;\n};\n\n/*\n * ==========================================\n * Transform any <time> element into a pretty\n * and human readable format that is based on\n * the valid ISO 8601 datetime attribute. The\n * replaced value will be localised according\n * to user's system settings, repurposing the\n * original text content as a title attribute\n * to allow users to see the value. A null or\n * invalid datetime format will result in the\n * element not being modified. If the updated\n * value is similar to the starting value for\n * the element text content, then the element\n * will not be updated to avoid redundancy.\n * ------------------------------------------\n * For example if the user's system has a UTC\n * timezone set then the element:\n *\n * <time\n * datetime=\"2026-03-05T13:48:00-05:00\"\n * >\n * 5 March 2026, 13:48 (UTC -5)\n * </time>\n *\n * would become:\n *\n * <time\n * datetime=\"2026-03-05T13:48:00-05:00\"\n * title=\"5 March 2026, 13:48 (UTC -5)\"\n * >\n * Thursday 5 March 2026, 09:48\n * </time>\n * ==========================================\n */\nexport const updateTimeElement = ($el) => {\n const datetime = $el.getAttribute(\"datetime\");\n\n try {\n const prettyDatetime = iso8601ToPrettyDatetime(datetime);\n if (!prettyDatetime.includes($el.textContent)) {\n $el.setAttribute(\"title\", $el.textContent);\n $el.textContent = prettyDatetime;\n }\n // eslint-disable-next-line no-unused-vars\n } catch (error) {\n // Do nothing if the datetime is invalid or not provided\n }\n};\n\nexport const checkTableForScroll = ($tableWrapper) => {\n const $caption = $tableWrapper.querySelector(\"caption\");\n if (!($tableWrapper.dataset.tableScrollInitialised === \"true\")) {\n if ($caption && !$caption.id) {\n $caption.id = `table-caption-${uuidv4()}`;\n }\n $tableWrapper.dataset.tableScrollInitialised = \"true\";\n }\n if ($tableWrapper.scrollWidth > $tableWrapper.clientWidth) {\n $tableWrapper.setAttribute(\"tabindex\", \"0\");\n $tableWrapper.setAttribute(\"role\", \"region\");\n $tableWrapper.setAttribute(\"aria-labelledby\", $caption?.id || \"\");\n $tableWrapper.classList.add(\"tna-table-wrapper--scroll\");\n } else {\n $tableWrapper.removeAttribute(\"tabindex\");\n $tableWrapper.removeAttribute(\"role\");\n $tableWrapper.removeAttribute(\"aria-labelledby\");\n $tableWrapper.classList.remove(\"tna-table-wrapper--scroll\");\n }\n};\n","/* eslint-disable no-magic-numbers */\n/* eslint-disable no-bitwise */\nconst uuidv4 = () =>\n ([1e7] + -1e3 + -4e3 + -8e3 + -1e11).replace(/[018]/gu, (char) =>\n (\n char ^\n (crypto.getRandomValues(new Uint8Array(1))[0] & (15 >> (char / 4)))\n ).toString(16),\n );\n\nexport default uuidv4;\n","// The module cache\nconst __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tconst cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tconst module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter/value functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tif(Array.isArray(definition)) {\n\t\tvar i = 0;\n\t\twhile(i < definition.length) {\n\t\t\tvar key = definition[i++];\n\t\t\tvar binding = definition[i++];\n\t\t\tif(!__webpack_require__.o(exports, key)) {\n\t\t\t\tif(binding === 0) {\n\t\t\t\t\tObject.defineProperty(exports, key, { enumerable: true, value: definition[i++] });\n\t\t\t\t} else {\n\t\t\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: binding });\n\t\t\t\t}\n\t\t\t} else if(binding === 0) { i++; }\n\t\t}\n\t} else {\n\t\tfor(var key in definition) {\n\t\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t\t}\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","/* eslint-disable no-new */\nimport { Accordion } from \"./components/accordion/accordion.mjs\";\nimport { Breadcrumbs } from \"./components/breadcrumbs/breadcrumbs.mjs\";\nimport { CodeBlock } from \"./components/code-block/code-block.mjs\";\nimport { CookieBanner } from \"./components/cookie-banner/cookie-banner.mjs\";\nimport { DateInputProgressive } from \"./components/date-input/date-input.mjs\";\nimport { ErrorSummary } from \"./components/error-summary/error-summary.mjs\";\nimport { FileInputDroppable } from \"./components/file-input/file-input.mjs\";\nimport { Footer } from \"./components/footer/footer.mjs\";\nimport { Gallery } from \"./components/gallery/gallery.mjs\";\nimport { GlobalHeader } from \"./components/global-header/global-header.mjs\";\nimport { Header } from \"./components/header/header.mjs\";\nimport { Picture } from \"./components/picture/picture.mjs\";\nimport { Sidebar } from \"./components/sidebar/sidebar.mjs\";\nimport { SkipLink } from \"./components/skip-link/skip-link.mjs\";\nimport { Tabs } from \"./components/tabs/tabs.mjs\";\nimport { TextInputPassword } from \"./components/text-input/text-input.mjs\";\nimport { TextAreaItemisedRows } from \"./components/textarea/textarea.mjs\";\nimport { checkTableForScroll, updateTimeElement } from \"./lib/helpers.mjs\";\n\nconst initAll = (options = {}) => {\n const { scope } = options;\n let $scope = document;\n if (scope) {\n if (scope instanceof HTMLElement) {\n $scope = scope;\n } else {\n throw new Error(\"Scope must be an HTMLElement\");\n }\n }\n const $html = document.documentElement;\n $html.classList.add(\"tna-template--js-enabled\");\n\n const onFirstTouch = () => {\n window.removeEventListener(\"touchstart\", onFirstTouch);\n $html.classList.add(\"tna-template--touched\");\n };\n window.addEventListener(\"touchstart\", onFirstTouch);\n\n const onKeyDown = (event) => {\n if (event.key === \"Tab\") {\n $html.classList.add(\"tna-template--tabbed\");\n $html.classList.remove(\"tna-template--clicked\");\n }\n };\n window.addEventListener(\"keydown\", onKeyDown);\n\n const onMouseDown = () => {\n $html.classList.add(\"tna-template--clicked\");\n $html.classList.remove(\"tna-template--tabbed\");\n };\n window.addEventListener(\"mousedown\", onMouseDown);\n\n /*\n * ==========================================\n * Checks if widths of all tables on the page\n * are wider than their parent container, and\n * allowing horizontal scrolling if they are.\n * This is done both on load and on resize.\n * ==========================================\n */\n const $tableWrappers = $scope.querySelectorAll(\".tna-table-wrapper\");\n $tableWrappers.forEach(($tableWrapper) => checkTableForScroll($tableWrapper));\n window.addEventListener(\"resize\", () => {\n $tableWrappers.forEach(($tableWrapper) =>\n checkTableForScroll($tableWrapper),\n );\n });\n\n // Remove this opt-in class in a later release\n if ($html.classList.contains(\"tna-template--enhance-time-elements\")) {\n document.querySelectorAll(\"time[datetime]\").forEach(updateTimeElement);\n }\n\n const $accordions = $scope.querySelectorAll('[data-module=\"tna-accordion\"]');\n $accordions.forEach(($accordion) => {\n new Accordion($accordion);\n });\n\n const $breadcrumbs = $scope.querySelector('[data-module=\"tna-breadcrumbs\"]');\n if ($breadcrumbs) {\n new Breadcrumbs($breadcrumbs);\n }\n\n const $codeBlocks = $scope.querySelectorAll('[data-module=\"tna-code-block\"]');\n $codeBlocks.forEach(($codeBlock) => {\n new CodeBlock($codeBlock);\n });\n\n const $cookieBanner = $scope.querySelector(\n '[data-module=\"tna-cookie-banner\"]',\n );\n if ($cookieBanner) {\n new CookieBanner($cookieBanner);\n }\n\n const $progressiveDateInputs = $scope.querySelectorAll(\n '[data-module=\"tna-date-input-progressive\"]',\n );\n $progressiveDateInputs.forEach(($dateInput) => {\n new DateInputProgressive($dateInput);\n });\n\n const $errorSummary = $scope.querySelector(\n '[data-module=\"tna-error-summary\"]',\n );\n if ($errorSummary) {\n new ErrorSummary($errorSummary).init();\n }\n\n const $fileInputs = $scope.querySelectorAll('[data-module=\"tna-file-input\"]');\n $fileInputs.forEach(($fileInput) => {\n new FileInputDroppable($fileInput);\n });\n\n const $footer = $scope.querySelector('[data-module=\"tna-footer\"]');\n if ($footer) {\n new Footer($footer);\n }\n\n const $galleries = $scope.querySelectorAll('[data-module=\"tna-gallery\"]');\n $galleries.forEach(($gallery) => {\n new Gallery($gallery);\n });\n\n const $globalHeader = $scope.querySelector(\n '[data-module=\"tna-global-header\"]',\n );\n if ($globalHeader) {\n new GlobalHeader($globalHeader);\n }\n\n const $header = $scope.querySelector('[data-module=\"tna-header\"]');\n if ($header) {\n new Header($header);\n }\n\n const $pictures = $scope.querySelectorAll('[data-module=\"tna-picture\"]');\n $pictures.forEach(($picture) => {\n new Picture($picture);\n });\n\n const $sidebar = $scope.querySelector('[data-module=\"tna-sidebar-sections\"]');\n if ($sidebar) {\n const { scrollTopThreshold, disableHighlightSize } = $sidebar.dataset;\n new Sidebar($sidebar, { scrollTopThreshold, disableHighlightSize });\n }\n\n const $skipLinks = $scope.querySelectorAll('[data-module=\"tna-skip-link\"]');\n $skipLinks.forEach(($skipLink) => {\n new SkipLink($skipLink);\n });\n\n const $tabs = $scope.querySelectorAll('[data-module=\"tna-tabs\"]');\n $tabs.forEach(($tabModule) => {\n new Tabs($tabModule);\n });\n\n const $textAreaItemisedRows = $scope.querySelectorAll(\n '[data-module=\"tna-textarea-itemised-rows\"]',\n );\n $textAreaItemisedRows.forEach(($textAreaWithItemisedRows) => {\n const { enhancedHint } = $textAreaWithItemisedRows.dataset;\n new TextAreaItemisedRows($textAreaWithItemisedRows, { enhancedHint });\n });\n\n const $textInputPasswords = $scope.querySelectorAll(\n '[data-module=\"tna-text-input-password\"]',\n );\n $textInputPasswords.forEach(($textInputPassword) => {\n new TextInputPassword($textInputPassword);\n });\n\n window.matchMedia(\"print\").addEventListener(\"change\", (evt) => {\n if (evt.matches) {\n $scope\n .querySelectorAll(\".tna-details__details:not([open])\")\n .forEach(($element) => {\n $element.setAttribute(\"open\", \"\");\n $element.dataset.wasClosed = \"\";\n });\n $scope\n .querySelectorAll(\n \".tna-accordion__content[hidden], .tna-picture__transcript[hidden]\",\n )\n .forEach(($element) => {\n $element.removeAttribute(\"hidden\");\n $element.dataset.wasClosed = \"\";\n });\n } else {\n $scope\n .querySelectorAll(\".tna-details__details[data-was-closed]\")\n .forEach(($element) => {\n $element.removeAttribute(\"open\");\n delete $element.dataset.wasClosed;\n });\n $scope\n .querySelectorAll(\n \".tna-accordion__content[data-was-closed], .tna-picture__transcript[data-was-closed]\",\n )\n .forEach(($element) => {\n $element.setAttribute(\"hidden\", \"\");\n $element.dataset.wasClosed = \"\";\n });\n }\n });\n};\n\nexport {\n initAll,\n Accordion,\n Breadcrumbs,\n CodeBlock,\n CookieBanner,\n DateInputProgressive,\n ErrorSummary,\n FileInputDroppable,\n Footer,\n Gallery,\n GlobalHeader,\n Header,\n Picture,\n Sidebar,\n SkipLink,\n Tabs,\n TextInputPassword,\n TextAreaItemisedRows,\n checkTableForScroll,\n updateTimeElement,\n};\n"],"names":["root","factory","exports","module","define","amd","self","CookieEventHandler","events","oneTimeEvents","constructor","window","TNAFrontendCookieEvents","this","clearAll","on","event","callback","Object","hasOwn","once","trigger","data","forEach","eventToTrigger","call","eachEvent","Cookies","defaultDomain","defaultPath","secure","preferencesKey","defaultAge","preferencesCorrectOnInit","tnaCookiePreferences","options","noInit","docDataset","document","documentElement","dataset","tnaCookiesDomain","location","hostname","tnaCookiesPath","tnaCookiesInsecure","tnaCookiesPreferencesKey","parseInt","tnaCookiesDefaultAge","keys","preferences","length","every","preference","includes","init","existingPreferences","filteredExistingPreferences","fromEntries","filter","map","savePreferences","usage","settings","marketing","essential","all","deserialised","cookie","split","trim","parts","key","value","decodeURIComponent","JSON","parse","get","error","exists","hasValue","set","maxAge","sameSite","domain","path","session","secureString","sessionString","encodeURIComponent","cookieDetails","deleteAll","delete","details","enablePreference","Error","setPreference","disablePreference","accepted","enableAllPreferences","allPreferences","toLowerCase","disableAllPreferences","stringify","Accordion","$module","$items","querySelectorAll","allowMultipleItemsOpen","singleOpenItem","$item","initItem","initState","$toggleAllButton","querySelector","syncToggleAllButton","removeAttribute","addEventListener","isAllOpen","closeItem","openItem","$heading","$content","classList","add","remove","setAttribute","$headingButton","createElement","id","innerText","appendChild","getAttribute","isopen","closeAllItemsExcept","$tableWrapper","$wrapper","_lib_helpers_mjs__WEBPACK_IMPORTED_MODULE_0__","DJ","$excludeItem","Array","from","closeAllLabel","openAllLabel","Breadcrumbs","$breadcrumbsList","$breadcrumbs","contains","uniqueId","_lib_uuid_mjs__WEBPACK_IMPORTED_MODULE_0__","A","$expandable","style","display","$expandButton","innerHTML","focus","insertBefore","nextSibling","CodeBlock","$code","$copyButton","navigator","clipboard","async","writeText","CookieBanner","$acceptButton","$rejectButton","$prompt","$acceptedMessage","$rejectedMessage","$closeButtons","cookies","_nationalarchives_cookies_src_index_js__WEBPACK_IMPORTED_MODULE_0__","cookiePreferencesSetKey","accept","reject","complete","$closeButton","close","DateInputProgressive","$yearWrapper","$yearInput","$monthWrapper","$monthInput","$dayWrapper","$dayInput","update","isValidYear","showMonth","isValidMonth","showDay","hideDay","hideMonth","yearValue","isNaN","monthRawValue","monthIntValue","ErrorSummary","disableAutofocus","setFocus","handleClick","$element","isFocusable","onBlur","onBeforeFocus","$target","target","focusTarget","preventDefault","getFragmentFromUrl","url","pop","HTMLAnchorElement","inputId","href","$input","getElementById","$legendOrLabel","getAssociatedLegendOrLabel","scrollIntoView","preventScroll","$fieldset","closest","$legends","getElementsByTagName","$candidateLegend","HTMLInputElement","type","legendTop","getBoundingClientRect","top","inputRect","height","innerHeight","FileInputDroppable","$body","acceptMutltipleFiles","hasAttribute","$droppableArea","$pseudoSelectFileText","fileText","textContent","$droppableButtons","$pseudoSelectFileButton","$pseudoDropFileButton","$droppableAreaAriaLabel","showDropTarget","hideDropTarget","onChange","isContainingFiles","dataTransfer","hasNoTypesInfo","types","isDraggingFiles","some","updateAriaLabel","classToAdd","items","files","name","Footer","themeCookieName","$themeSelector","$themeSelectorNotice","$themeSelectorEnableSettingsCookiesButton","$tnaTemplate","currentTheme","themeOnLoad","$themeSelectorButtons","$themeSelectorButton","$button","setTheme","selectThemeSelectorButton","showThemeSelector","$currentThemeButton","find","theme","$selectedButton","Gallery","$itemsContainer","$navigation","$navigationItems","$navigationButtons","$navigationButtonPrev","$navigationButtonNext","setup","currentId","showItem","preventDefaultKeyAction","showPreviousItem","showNextItem","showFirstItem","showLastItem","stopPropagation","$liveRegion","prepend","getCurrentItemIndex","findIndex","nextIndexToShow","GlobalHeader","$toggleButton","$topNavigation","$links","menuOpened","mql","matchMedia","syncState","handleToggleNavigation","addListener","code","matches","show","hide","hidden","index","Header","Picture","$imageWrapper","$transcriptToggle","$transcript","transcriptOpened","openLabel","informationLabelOpen","closeLabel","informationLabelClose","toggleTranscript","Sidebar","substring","item","scrollTopThreshold","disableHighlightSize","breakpoints","tiny","getComputedStyle","getPropertyValue","small","medium","join","hideOnDevice","currentItem","highlightCurrentSection","$topItem","findLast","Math","floor","SkipLink","linkedElementListener","linkedElementId","$linkedElement","focusLinkedElement","removeFocusProperties","Tabs","$tabList","$tabListItemLinks","$tabItems","currentTabIndex","$tabListItemLink","tabPanelID","$tabPanel","handleItemLinkClick","switchTabByIndex","handleItemLinkKeyDown","itemLinkClickEvent","targetItem","currentTarget","switchTabByID","itemLinkKeyDownEvent","previousTab","nextTab","newIndex","switchFocus","$tabItem","targetId","TextInputPassword","$textInputWrapper","$textInputPasswordToggle","updateTogglePasswordButtonText","togglePasswordType","TextAreaItemisedRows","$formFieldInput","$formFieldInputHint","$formFieldBody","enhancedHint","values","$formFieldNewInput","attribute","updateList","appendValue","$formFieldNewInputAddButton","$formFieldNewInputAddButtonInner","$formFieldNewInputAddButtonInnerExtra","$formFieldLiveAria","$formFieldCounter","$valuesList","updateAriaText","parentNode","content","normaliseValue","replace","isValueInList","eachValue","newValue","push","removeValue","existingValue","$itemLabel","$removeItemButton","innerTextItemValue","innerTextValue","$caption","tableScrollInitialised","_uuid_mjs__WEBPACK_IMPORTED_MODULE_0__","scrollWidth","clientWidth","$el","datetime","prettyDatetime","dateStr","isDateTime","test","isDate","date","Date","dayString","toLocaleDateString","weekday","dateString","day","month","year","getHours","getMinutes","timeString","toLocaleTimeString","hour","minute","getSeconds","second","iso8601ToPrettyDatetime","char","crypto","getRandomValues","Uint8Array","toString","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","__webpack_modules__","d","definition","isArray","i","binding","o","defineProperty","enumerable","obj","prop","prototype","hasOwnProperty","r","Symbol","toStringTag","scope","$scope","HTMLElement","$html","onFirstTouch","removeEventListener","$tableWrappers","_lib_helpers_mjs__WEBPACK_IMPORTED_MODULE_17__","FH","$accordion","_components_accordion_accordion_mjs__WEBPACK_IMPORTED_MODULE_0__","_components_breadcrumbs_breadcrumbs_mjs__WEBPACK_IMPORTED_MODULE_1__","$codeBlock","_components_code_block_code_block_mjs__WEBPACK_IMPORTED_MODULE_2__","$cookieBanner","_components_cookie_banner_cookie_banner_mjs__WEBPACK_IMPORTED_MODULE_3__","$dateInput","_components_date_input_date_input_mjs__WEBPACK_IMPORTED_MODULE_4__","$errorSummary","_components_error_summary_error_summary_mjs__WEBPACK_IMPORTED_MODULE_5__","$fileInput","_components_file_input_file_input_mjs__WEBPACK_IMPORTED_MODULE_6__","$footer","_components_footer_footer_mjs__WEBPACK_IMPORTED_MODULE_7__","$gallery","_components_gallery_gallery_mjs__WEBPACK_IMPORTED_MODULE_8__","$globalHeader","_components_global_header_global_header_mjs__WEBPACK_IMPORTED_MODULE_9__","$header","_components_header_header_mjs__WEBPACK_IMPORTED_MODULE_10__","$picture","_components_picture_picture_mjs__WEBPACK_IMPORTED_MODULE_11__","$sidebar","_components_sidebar_sidebar_mjs__WEBPACK_IMPORTED_MODULE_12__","$skipLink","_components_skip_link_skip_link_mjs__WEBPACK_IMPORTED_MODULE_13__","$tabModule","_components_tabs_tabs_mjs__WEBPACK_IMPORTED_MODULE_14__","$textAreaWithItemisedRows","_components_textarea_textarea_mjs__WEBPACK_IMPORTED_MODULE_16__","$textInputPassword","_components_text_input_text_input_mjs__WEBPACK_IMPORTED_MODULE_15__","evt","wasClosed"],"sourceRoot":""}
|