{"version":3,"file":"navigation.66be4080e08300d4296e.js","mappings":"mKAAA,IAAMA,EAAaC,OAAOC,WAAW,sBAE/BC,EAAW,CACfC,IAAKC,SAASC,cAAc,WAC5BC,UAAWF,SAASC,cAAc,kBAClCE,OAAQH,SAASC,cAAc,eAGjC,SAASG,IACkD,UAArDN,EAASI,UAAUG,aAAa,iBAClCP,EAASI,UAAUI,aAAa,iBAAiB,GAEjDR,EAASI,UAAUI,aAAa,iBAAiB,GAGnDR,EAASC,IAAIQ,UAAUC,OAAO,cAC9BV,EAASI,UAAUK,UAAUC,OAAO,WAGtC,SAASC,IACPX,EAASC,IAAIQ,UAAUG,OAAO,cAC9BZ,EAASI,UAAUI,aAAa,iBAAiB,GACjDR,EAASI,UAAUK,UAAUG,OAAO,W,MAyCtC,WAtCA,IACQC,EAGAC,EACAC,EAkCDf,EAASK,SAIdL,EAASI,UAAUY,iBAAiB,QAASV,GAC7CR,OAAOkB,iBAAiB,SAAUL,GA3C5BE,EAAeb,EAASK,OAAOY,iBACnC,2BAEIH,EAAmBD,EAAa,GAChCE,EAAkBF,EAAaA,EAAaK,OAAS,GAI3DL,EAAaM,SAAQ,SAACC,GAAD,OAAQA,EAAGJ,iBAAiB,QAASL,MAE1D,CAACG,EAAkBC,GAAiBI,SAAQ,SAACC,GAEzCA,EAAGJ,iBAAiB,WAAW,SAAUK,IAE3B,QAAVA,EAAEC,KARU,IASXD,EAAEE,UAA4B1B,EAAW2B,WAEtCH,EAAEI,SACkBvB,SAASwB,gBAAkBZ,IAC/CC,EAAgBY,QAChBN,EAAEO,kBAIF1B,SAASwB,gBAAkBX,GAC1BlB,EAAW2B,UAEZV,EAAiBa,QACjBN,EAAEO,2B","sources":["webpack://jcb-golf/./src/js/components/navigation.js"],"sourcesContent":["const mediaQuery = window.matchMedia(\"(min-width: 920px)\");\r\n\r\nconst elements = {\r\n nav: document.querySelector(\".js-nav\"),\r\n navToggle: document.querySelector(\".js-nav-toggle\"),\r\n header: document.querySelector(\".js-header\"),\r\n};\r\n\r\nfunction toggleMenu() {\r\n if (elements.navToggle.getAttribute(\"aria-expanded\") === \"false\") {\r\n elements.navToggle.setAttribute(\"aria-expanded\", true);\r\n } else {\r\n elements.navToggle.setAttribute(\"aria-expanded\", false);\r\n }\r\n\r\n elements.nav.classList.toggle(\"is-visible\");\r\n elements.navToggle.classList.toggle(\"is-open\");\r\n}\r\n\r\nfunction resetMobileMenu() {\r\n elements.nav.classList.remove(\"is-visible\");\r\n elements.navToggle.setAttribute(\"aria-expanded\", false);\r\n elements.navToggle.classList.remove(\"is-open\");\r\n}\r\n\r\nfunction focusTrap() {\r\n const focusableEls = elements.header.querySelectorAll(\r\n \"a[href]:not([disabled])\"\r\n );\r\n const firstFocusableEl = focusableEls[0];\r\n const lastFocusableEl = focusableEls[focusableEls.length - 1];\r\n\r\n const KEYCODE_TAB = 9;\r\n\r\n focusableEls.forEach((el) => el.addEventListener(\"click\", resetMobileMenu));\r\n\r\n [firstFocusableEl, lastFocusableEl].forEach((el) => {\r\n {\r\n el.addEventListener(\"keydown\", function (e) {\r\n if (\r\n e.key === \"Tab\" ||\r\n (e.keyCode === KEYCODE_TAB && !mediaQuery.matches)\r\n ) {\r\n if (e.shiftKey) {\r\n /* shift + tab */ if (document.activeElement === firstFocusableEl) {\r\n lastFocusableEl.focus();\r\n e.preventDefault();\r\n }\r\n } /* tab */ else {\r\n if (\r\n document.activeElement === lastFocusableEl &&\r\n !mediaQuery.matches\r\n ) {\r\n firstFocusableEl.focus();\r\n e.preventDefault();\r\n }\r\n }\r\n }\r\n });\r\n }\r\n });\r\n}\r\n\r\nfunction init() {\r\n if (!elements.header) {\r\n return;\r\n }\r\n\r\n elements.navToggle.addEventListener(\"click\", toggleMenu);\r\n window.addEventListener(\"resize\", resetMobileMenu);\r\n focusTrap();\r\n}\r\n\r\nexport default init;\r\n"],"names":["mediaQuery","window","matchMedia","elements","nav","document","querySelector","navToggle","header","toggleMenu","getAttribute","setAttribute","classList","toggle","resetMobileMenu","remove","focusableEls","firstFocusableEl","lastFocusableEl","addEventListener","querySelectorAll","length","forEach","el","e","key","keyCode","matches","shiftKey","activeElement","focus","preventDefault"],"sourceRoot":""}