{"version":3,"file":"8389.d47501d7bcad7b7c0228.js","mappings":"wLAIA,MAEaA,EAAe,CACxBC,kBAH4BC,OAAOC,WAAW,oCAGHC,SAGlCC,EAAW,CACpBC,GAAI,EACJC,GAAI,EACJC,MAAQC,IACJJ,EAASC,GAAKG,CAAG,EAErBC,MAAQD,IACJJ,EAASE,GAAKE,CAAG,GAIZE,EAAiB,CAC1BC,cAAc,EACdC,gBAAkBC,IACdH,EAAeC,aAAeE,CAAI,EAEtCC,eAAe,EACfC,iBAAmBF,IACfH,EAAeI,cAAgBD,CAAI,GAI9BG,EAAe,CACxBC,QAAQ,EACRC,UAAYL,IACRG,EAAaC,OAASJ,CAAI,E,wCC7BlCG,EAAAA,GAAaE,WAAU,GAEvB,MAAMC,EAEFC,WAAAA,CAAYC,EAASC,EAASC,EAAUC,GACpCC,KAAKJ,QAAUA,EACfI,KAAKH,QAAUA,EACfG,KAAKF,SAAWA,EAChBE,KAAKD,YAAcA,EACnBC,KAAKR,QAAS,EAEdQ,KAAKH,QAAQI,gBAAgB,UAE7BD,KAAKJ,QAAQM,QAAU,KACfF,KAAKR,QAAQQ,KAAKG,MAAM,EAEhCH,KAAKF,SAASI,QAAU,KACjBF,KAAKR,QAAQQ,KAAKI,MAAM,EAG/BJ,KAAKH,QAAQQ,iBAAiB,WAAYC,IACtC,GAES,WAFDA,EAAEC,IAGCP,KAAKR,SACJc,EAAEE,iBACFR,KAAKI,MAAK,GAGtB,IAGJJ,KAAKF,SAASO,iBAAiB,WAAYC,IACvC,GAES,QAFDA,EAAEC,IAGCP,KAAKR,SACJc,EAAEE,iBACFR,KAAKD,YAAYU,QAG7B,GAER,CAEAN,IAAAA,GACIH,KAAKH,QAAQa,gBAAkB,KAC/BV,KAAKH,QAAQc,aAAa,eAAe,GACzCX,KAAKJ,QAAQe,aAAa,iBAAiB,GAC3CX,KAAKR,QAAS,EACdD,EAAAA,GAAaE,WAAU,GACvBjB,OAAOoC,uBAAsB,KACzBZ,KAAKH,QAAQgB,UAAUC,IAAI,uBAC3Bd,KAAKD,YAAYU,OAAO,GAEhC,CAEAL,IAAAA,CAAKW,GAAU,GACXf,KAAKJ,QAAQe,aAAa,iBAAiB,GAC3CX,KAAKR,QAAS,EACdD,EAAAA,GAAaE,WAAU,GACvBO,KAAKH,QAAQgB,UAAUG,OAAO,uBAC9BhB,KAAKH,QAAQa,gBAAmBJ,IACzBA,EAAEW,QAAUjB,KAAKH,SAASG,KAAKkB,cAAcH,EAAQ,CAEhE,CAEAG,aAAAA,CAAcH,GAAU,GACpBf,KAAKH,QAAQc,aAAa,eAAe,GACzCX,KAAKH,QAAQa,gBAAkB,KAC5BK,GAASf,KAAKJ,QAAQa,OAC7B,EAGJ,MAAMU,EAAuBC,SAASC,cAAc,uCAChDC,EAAsBF,SAASC,cAAc,2BAC7CE,EAAuBH,SAASC,cAAc,6BAC9CG,EAA4C,OAAxBF,EAA+BA,EAAoBD,cAAc,wBAA0B,KAExF,MAAxBF,GAAuD,MAAvBG,GAAuD,MAAxBC,GAAqD,MAArBC,GAC9F,IAAI9B,EAAmByB,EAAsBG,EAAqBC,EAAsBC,E","sources":["webpack://National Motor Museum Trust/./wwwroot/app/src/js/global.js","webpack://National Motor Museum Trust/./wwwroot/app/src/js/header-search.js"],"sourcesContent":["// ***********************************\r\n// ***** global site variables *****\r\n// ***********************************\r\n\r\nconst detectReducedMotionPref = window.matchMedia('(prefers-reduced-motion: reduce)');\r\n\r\nexport const siteSettings = {\r\n reducedMotionPref: detectReducedMotionPref.matches\r\n}\r\n\r\nexport const viewport = {\r\n vw: 0,\r\n vh: 0,\r\n setVw: (val) => {\r\n viewport.vw = val;\r\n },\r\n setVh: (val) => {\r\n viewport.vh = val;\r\n }\r\n}\r\n\r\nexport const mainNavigation = {\r\n mobileActive: false,\r\n setMobileActive: (mode) => {\r\n mainNavigation.mobileActive = mode;\r\n },\r\n desktopActive: false,\r\n setDesktopActive: (mode) => {\r\n mainNavigation.desktopActive = mode;\r\n }\r\n};\r\n\r\nexport const headerSearch = {\r\n active: false,\r\n setActive: (mode) => {\r\n headerSearch.active = mode;\r\n }\r\n};","// ***************************\r\n// ***** Header search *****\r\n// ***************************\r\n\r\nimport { headerSearch } from './global';\r\n\r\nheaderSearch.setActive(false);\r\n\r\nclass HeaderSearchSystem {\r\n\r\n constructor(showBtn, wrapper, closeBtn, searchField) {\r\n this.showBtn = showBtn;\r\n this.wrapper = wrapper;\r\n this.closeBtn = closeBtn;\r\n this.searchField = searchField;\r\n this.active = false;\r\n // remove 'hidden' attribute\r\n this.wrapper.removeAttribute('hidden');\r\n // triggers\r\n this.showBtn.onclick = () => {\r\n if(!this.active) this.show();\r\n };\r\n this.closeBtn.onclick = () => {\r\n if(this.active) this.hide();\r\n };\r\n // ESC key closes search\r\n this.wrapper.addEventListener('keydown', (e) => {\r\n switch (e.key) {\r\n // ESCAPE jumps out a level\r\n case 'Escape':\r\n if(this.active) {\r\n e.preventDefault();\r\n this.hide(true);\r\n }\r\n break;\r\n }\r\n });\r\n // loop the tabbing if search area is active\r\n this.closeBtn.addEventListener('keydown', (e) => {\r\n switch (e.key) {\r\n // TAB\r\n case 'Tab':\r\n if(this.active) {\r\n e.preventDefault();\r\n this.searchField.focus();\r\n }\r\n break;\r\n }\r\n });\r\n }\r\n\r\n show() {\r\n this.wrapper.ontransitionend = null;\r\n this.wrapper.setAttribute('aria-hidden', false);\r\n this.showBtn.setAttribute('aria-expanded', true);\r\n this.active = true;\r\n headerSearch.setActive(true);\r\n window.requestAnimationFrame(() => {\r\n this.wrapper.classList.add('search-form--active');\r\n this.searchField.focus();\r\n });\r\n }\r\n\r\n hide(doFocus = false) {\r\n this.showBtn.setAttribute('aria-expanded', false);\r\n this.active = false;\r\n headerSearch.setActive(false);\r\n this.wrapper.classList.remove('search-form--active');\r\n this.wrapper.ontransitionend = (e) => {\r\n if(e.target == this.wrapper) this.transitionEnd(doFocus);\r\n };\r\n }\r\n\r\n transitionEnd(doFocus = false) {\r\n this.wrapper.setAttribute('aria-hidden', true);\r\n this.wrapper.ontransitionend = null;\r\n if(doFocus) this.showBtn.focus();\r\n }\r\n}\r\n\r\nconst headerSearchShownBtn = document.querySelector('#header--content--search--show--btn'),\r\n headerSearchWrapper = document.querySelector('#header--search-wrapper'),\r\n headerSearchCloseBtn = document.querySelector('#header--search-close-btn'),\r\n headerSearchField = headerSearchWrapper !== null ? headerSearchWrapper.querySelector('input[type=\"search\"]') : null;\r\n\r\nif(headerSearchShownBtn != null && headerSearchWrapper != null && headerSearchCloseBtn != null && headerSearchField != null) {\r\n new HeaderSearchSystem(headerSearchShownBtn, headerSearchWrapper, headerSearchCloseBtn, headerSearchField);\r\n}"],"names":["siteSettings","reducedMotionPref","window","matchMedia","matches","viewport","vw","vh","setVw","val","setVh","mainNavigation","mobileActive","setMobileActive","mode","desktopActive","setDesktopActive","headerSearch","active","setActive","HeaderSearchSystem","constructor","showBtn","wrapper","closeBtn","searchField","this","removeAttribute","onclick","show","hide","addEventListener","e","key","preventDefault","focus","ontransitionend","setAttribute","requestAnimationFrame","classList","add","doFocus","remove","target","transitionEnd","headerSearchShownBtn","document","querySelector","headerSearchWrapper","headerSearchCloseBtn","headerSearchField"],"sourceRoot":""}