{"version":3,"sources":["webpack:///./modules/SkipToMainContent.ts"],"names":["__webpack_require__","r","__webpack_exports__","SkipToMainContent","element","this","init","setup","selector","Array","from","document","querySelectorAll","filter","node","dataset","moduleInitialized","forEach","prototype","_this","style","display","addEventListener","e","key","setTimeout","focus","once","preventDefault","scrollToFirstSection","firstSection","querySelector","sectionEl_1","setAttribute","preventScroll","scrollIntoView","behavior","block","removeAttribute"],"mappings":"2FAAAA,EAAAC,EAAAC,GAEA,IAEAC,EAAA,WAUI,SAAAA,EAAoBC,GAAAC,KAAAD,UAChBC,KAAKC,OAyCb,OAnDWH,EAAAI,MAAP,SAAaC,QAAA,IAAAA,MAHM,qCAIfC,MAAMC,KAAKC,SAASC,iBAAiBJ,IAChCK,OAAO,SAACC,GAAsB,OAACA,EAAKC,QAAQC,oBAC5CC,QAAQ,SAACb,GACN,IAAID,EAAkBC,GACtBA,EAAQW,QAAQC,kBAAoB,UAQxCb,EAAAe,UAAAZ,KAAR,eAAAa,EAAAd,KACIA,KAAKD,QAAQgB,MAAMC,QAAU,OAE7BV,SAASW,iBAAiB,UAAW,SAACC,GACpB,QAAVA,EAAEC,KACFC,WAAW,WACPN,EAAKf,QAAQgB,MAAMC,QAAU,OAC7BF,EAAKf,QAAQsB,SACd,KAENC,MAAM,IAEXtB,KAAKD,QAAQkB,iBAAiB,QAAS,SAACC,GACpCA,EAAEK,iBACFT,EAAKU,yBAGTxB,KAAKD,QAAQkB,iBAAiB,UAAW,SAACC,GACxB,UAAVA,EAAEC,KAA6B,MAAVD,EAAEC,MACvBD,EAAEK,iBACFT,EAAKU,2BAKT1B,EAAAe,UAAAW,qBAAR,WACI,IAAMC,EAAenB,SAASoB,cAAc,yBAC5C,GAAID,EAAc,CACd,IAAME,EAAYF,EAClBE,EAAUC,aAAa,WAAY,MACnCD,EAAUN,OAAQQ,eAAe,IACjCF,EAAUG,gBAAiBC,SAAU,SAAUC,MAAO,UACtDZ,WAAW,WAAM,OAAAO,EAAUM,gBAAgB,aAAa,KAI5DjC,KAAKD,QAAQgB,MAAMC,QAAU,QAErClB,EApDA,eAsDA,IAAIA,EAAkBI","file":"./modules/SkipToMainContent.bfe4857b.js","sourcesContent":["/// \r\n\r\nconst moduleSelector = '[data-module=\"SkipToMainContent\"]';\r\n\r\nexport default class SkipToMainContent {\r\n static setup(selector: string = moduleSelector): void {\r\n Array.from(document.querySelectorAll(selector))\r\n .filter((node: HTMLElement) => !node.dataset.moduleInitialized)\r\n .forEach((element: HTMLElement) => {\r\n new SkipToMainContent(element as HTMLAnchorElement);\r\n element.dataset.moduleInitialized = 'true';\r\n });\r\n }\r\n\r\n constructor(private element: HTMLAnchorElement) {\r\n this.init();\r\n }\r\n\r\n private init(): void {\r\n this.element.style.display = 'none';\r\n\r\n document.addEventListener('keydown', (e: KeyboardEvent) => {\r\n if (e.key === 'Tab') {\r\n setTimeout(() => {\r\n this.element.style.display = 'flex';\r\n this.element.focus();\r\n }, 0);\r\n }\r\n }, { once: true });\r\n\r\n this.element.addEventListener('click', (e: MouseEvent | KeyboardEvent) => {\r\n e.preventDefault();\r\n this.scrollToFirstSection();\r\n });\r\n\r\n this.element.addEventListener('keydown', (e: KeyboardEvent) => {\r\n if (e.key === 'Enter' || e.key === ' ') {\r\n e.preventDefault();\r\n this.scrollToFirstSection();\r\n }\r\n });\r\n }\r\n\r\n private scrollToFirstSection(): void {\r\n const firstSection = document.querySelector('main section, section');\r\n if (firstSection) {\r\n const sectionEl = firstSection as HTMLElement;\r\n sectionEl.setAttribute('tabindex', '-1');\r\n sectionEl.focus({ preventScroll: true });\r\n sectionEl.scrollIntoView({ behavior: 'smooth', block: 'start' });\r\n setTimeout(() => sectionEl.removeAttribute('tabindex'), 1000);\r\n }\r\n\r\n // Hide skip link again after use\r\n this.element.style.display = 'none';\r\n }\r\n}\r\n\r\nnew SkipToMainContent.setup();"],"sourceRoot":""}