{"version":3,"file":"assets/js/751.a7dbc4ec0dee5d5a71e3.js","mappings":"ghBAKA,E,oQC0GMA,IAnBSC,EAAAA,EAAAA,IAAO,WAmBMC,EAAAA,EAAAA,IAAI,KAE1BC,GAAcC,EAAAA,EAAAA,KAAS,IAAMC,EAAMC,mBAAqBD,EAAME,yBAE9DC,GAAcJ,EAAAA,EAAAA,KAAS,IAAOD,EAAc,KAAO,WACnDM,GAAaL,EAAAA,EAAAA,KAAS,IAAOD,EAAc,KAAO,SAExD,SAASO,EAAgBC,GACvBX,EAAoBY,MAAMC,KAAKF,EACjC,C,OAuBAG,EAAAA,EAAAA,KAAe,KACbd,EAAoBY,MAAQ,EAAE,KAGhCG,EAAAA,EAAAA,KAAU,MAzBV,WACE,MAAMC,EAAmBhB,EAAoBY,MAAM,GAC7CK,EAAkBjB,EAAoBY,MAAMZ,EAAoBY,MAAMM,OAAS,GAEjFD,GACFA,EAAgBE,iBAAiB,WAAYC,IAC7B,QAAVA,EAAEC,KAAkBD,EAAEE,UACxBC,EAAK,eACP,IAIAP,GACFA,EAAiBG,iBAAiB,WAAYC,IAC9B,QAAVA,EAAEC,KAAiBD,EAAEE,UACvBC,EAAK,eACP,GAGN,CAOEC,EAAe,I,ksECpHXC,EAAyB,UC3B/B,E,+BDoBA,MAAMC,GAASzB,EAAAA,EAAAA,IAAO,UAEhBM,GAAyBL,EAAAA,EAAAA,IAAI,MAC7ByB,GAAuBzB,EAAAA,EAAAA,IAAI,MAE3B0B,EAAaC,OAAOC,WAAW,wBAG/BC,EAA8BC,SAASC,iBAAiB,+BAE9D,SAASC,EAAwBC,GAC/BA,IAAM5B,EAAuBK,MAAQwB,IAuBvC,SAAqBD,GACnB5B,EAAuBK,MAAQuB,EAC/BJ,EAA4BM,SAAS1B,GAAOA,EAAG2B,aAAa,QAAS,MACrEN,SAASO,KAAKC,UAAUC,IAAIhB,GAE5BI,OAAOV,iBAAiB,QAASuB,GACjCb,OAAOV,iBAAiB,UAAWwB,EACrC,CA9BwDC,CAAYT,EACpE,CAEA,SAASO,EAAatB,GACpB,MAAMyB,EAAc,IAAIlB,EAAqBf,OAAOL,EAAuBK,QAC3EkC,EAAAA,EAAAA,KAAS,KACFD,IAIAA,EAAYE,SAAS3B,EAAE4B,SAC1BZ,IACF,GAEJ,CAEA,SAASO,EAAavB,GACN,WAAVA,EAAEC,KAAqD,OAAjCd,EAAuBK,QAC/CQ,EAAE6B,iBACFb,IAEJ,CAWA,SAASA,IACP7B,EAAuBK,MAAQ,KAC/BmB,EAA4BM,SAAS1B,GAAOA,EAAGuC,gBAAgB,WAC/DlB,SAASO,KAAKC,UAAUW,OAAO1B,GAE/BI,OAAOuB,oBAAoB,QAASV,GACpCb,OAAOuB,oBAAoB,UAAWT,EACxC,C,OAEA5B,EAAAA,EAAAA,KAAU,KACRa,EAAWT,iBAAiB,UAAU,KACpCiB,GAAc,GACd,I,goBEpEJ,QATA,WACE,MAAMiB,EAAmBrB,SAASsB,eAAe,eACjD,GAAID,EAAkB,CACpB,MAAME,GAAMC,EAAAA,EAAAA,IAAUC,GACtBF,EAAIG,QAAQ,SAAUC,WACtBJ,EAAIK,MAAMP,EACZ,CACF,C","sources":["webpack://mps/./src/app/components/nav-desktop-inner.vue?058d","webpack://mps/./src/app/components/nav-desktop-inner.vue","webpack://mps/./src/app/views/nav-desktop/nav-desktop.vue","webpack://mps/./src/app/views/nav-desktop/nav-desktop.vue?779e","webpack://mps/./src/app/views/nav-desktop/nav-desktop.ts"],"sourcesContent":["import script from \"./nav-desktop-inner.vue?vue&type=script&setup=true&lang=js\"\nexport * from \"./nav-desktop-inner.vue?vue&type=script&setup=true&lang=js\"\n\nconst __exports__ = script;\n\nexport default __exports__","<template>\r\n  <!-- Primary level nav item -->\r\n  <a\r\n    v-if=\"!firstLevelItem.children.length\"\r\n    class=\"c-nav-desktop__primary-link\"\r\n    :href=\"firstLevelItem.url\"\r\n    :ref=\"(el) => addFocusableRef(el)\"\r\n  >\r\n    {{ firstLevelItem.label }}\r\n  </a>\r\n  <button\r\n    v-else\r\n    class=\"c-nav-desktop__primary-link\"\r\n    :aria-controls=\"`second-level-list-${firstLevelNumber}`\"\r\n    :aria-expanded=\"panelIsOpen\"\r\n    @click=\"() => emit('primaryLevelButtonClick', firstLevelNumber)\"\r\n    :ref=\"(el) => addFocusableRef(el)\"\r\n  >\r\n    {{ firstLevelItem.label }}\r\n    <svg focusable=\"false\" aria-hidden=\"true\">\r\n      <use xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#down-arrow\"></use>\r\n    </svg>\r\n  </button>\r\n\r\n  <!-- Meganav panel -->\r\n  <section\r\n    class=\"c-nav-desktop__panel\"\r\n    :aria-label=\"firstLevelItem.label\"\r\n    tabindex=\"-1\"\r\n    :hidden=\"panelHidden\"\r\n    :inert=\"panelInert\"\r\n    v-if=\"firstLevelItem.children.length\"\r\n  >\r\n    <ul class=\"c-nav-desktop__panel-list\" :id=\"`second-level-list-${firstLevelNumber}`\" role=\"list\">\r\n      <!-- Link to the parent primary nav item's page -->\r\n      <li\r\n        v-if=\"firstLevelItem.url\"\r\n        class=\"c-nav-desktop__item c-nav-desktop__item--parent\"\r\n        role=\"listitem\"\r\n      >\r\n        <a\r\n          class=\"c-nav-desktop__link c-nav-desktop__link--second-level\"\r\n          :href=\"firstLevelItem.url\"\r\n          :ref=\"(el) => addFocusableRef(el)\"\r\n        >\r\n          {{ firstLevelItem.label }}\r\n        </a>\r\n      </li>\r\n      <!-- Second level: Child pages of primary items -->\r\n      <li\r\n        class=\"c-nav-desktop__item c-nav-desktop__item--second-level\"\r\n        v-for=\"(secondLevelItem, secondLevelNumber) in firstLevelItem.children\"\r\n        :key=\"`second-level-${secondLevelNumber}`\"\r\n        role=\"listitem\"\r\n      >\r\n        <a\r\n          class=\"c-nav-desktop__link c-nav-desktop__link--second-level\"\r\n          :href=\"secondLevelItem.url\"\r\n          :ref=\"(el) => addFocusableRef(el)\"\r\n        >\r\n          {{ secondLevelItem.label }}\r\n        </a>\r\n        <!-- Third level: Child pages of secondary items -->\r\n        <template v-if=\"secondLevelItem.children.length\">\r\n          <ul\r\n            class=\"c-nav-desktop__third-level\"\r\n            :id=\"`third-level-list-${firstLevelNumber}-${secondLevelNumber}`\"\r\n            role=\"list\"\r\n          >\r\n            <li\r\n              class=\"c-nav-desktop__item c-nav-desktop__item--third-level\"\r\n              v-for=\"(thirdLevelItem, thirdLevelNumber) in secondLevelItem.children\"\r\n              :key=\"`third-level-${thirdLevelNumber}`\"\r\n              role=\"listitem\"\r\n            >\r\n              <a\r\n                class=\"c-nav-desktop__link c-nav-desktop__link--third-level\"\r\n                :href=\"thirdLevelItem.url\"\r\n                :ref=\"(el) => addFocusableRef(el)\"\r\n              >\r\n                {{ thirdLevelItem.label }}\r\n              </a>\r\n            </li>\r\n          </ul>\r\n        </template>\r\n      </li>\r\n    </ul>\r\n  </section>\r\n</template>\r\n\r\n<script setup>\r\nimport { inject, computed, onBeforeUpdate, onMounted, ref } from 'vue';\r\nconst config = inject('config');\r\n\r\nconst props = defineProps({\r\n  activeFirstLevelNumber: {\r\n    type: [Number, null],\r\n    required: true,\r\n  },\r\n  firstLevelItem: {\r\n    type: Object,\r\n    required: true,\r\n  },\r\n  firstLevelNumber: {\r\n    type: Number,\r\n    required: true,\r\n  },\r\n});\r\n\r\nconst emit = defineEmits(['primaryLevelButtonClick', 'closeMeganav']);\r\n\r\nconst focusableElementRef = ref([]);\r\n\r\nconst panelIsOpen = computed(() => props.firstLevelNumber === props.activeFirstLevelNumber);\r\n\r\nconst panelHidden = computed(() => (panelIsOpen ? null : 'hidden'));\r\nconst panelInert = computed(() => (panelIsOpen ? null : 'true'));\r\n\r\nfunction addFocusableRef(el) {\r\n  focusableElementRef.value.push(el);\r\n}\r\n\r\nfunction handleTabbing() {\r\n  const firstFocucableEl = focusableElementRef.value[0];\r\n  const lastFocusableEl = focusableElementRef.value[focusableElementRef.value.length - 1];\r\n\r\n  if (lastFocusableEl) {\r\n    lastFocusableEl.addEventListener('keydown', (e) => {\r\n      if (e.key === 'Tab' && !e.shiftKey) {\r\n        emit('closeMeganav');\r\n      }\r\n    });\r\n  }\r\n\r\n  if (firstFocucableEl) {\r\n    firstFocucableEl.addEventListener('keydown', (e) => {\r\n      if (e.key === 'Tab' && e.shiftKey) {\r\n        emit('closeMeganav');\r\n      }\r\n    });\r\n  }\r\n}\r\n\r\nonBeforeUpdate(() => {\r\n  focusableElementRef.value = [];\r\n});\r\n\r\nonMounted(() => {\r\n  handleTabbing();\r\n});\r\n</script>\r\n","<template>\r\n  <nav v-if=\"config.nav.length\" class=\"c-nav-desktop__nav\" :aria-label=\"config.primaryNavAriaLabel\">\r\n    <!-- First level -->\r\n    <ul class=\"c-nav-desktop__primary-nav-list\" role=\"list\">\r\n      <li\r\n        class=\"c-nav-desktop__primary-nav-item\"\r\n        v-for=\"(firstLevelItem, firstLevelNumber) in config.nav\"\r\n        :key=\"`first-level-${firstLevelNumber}`\"\r\n        ref=\"meganavFirstLevelRef\"\r\n        role=\"listitem\"\r\n      >\r\n        <desktopNavItem\r\n          :activeFirstLevelNumber=\"activeFirstLevelNumber\"\r\n          :firstLevelItem=\"firstLevelItem\"\r\n          :firstLevelNumber=\"firstLevelNumber\"\r\n          @primaryLevelButtonClick=\"primaryLevelButtonClick\"\r\n          @closeMeganav=\"closeMeganav\"\r\n        />\r\n      </li>\r\n    </ul>\r\n  </nav>\r\n</template>\r\n<script setup>\r\nimport { inject, ref, onMounted, nextTick } from 'vue';\r\nimport desktopNavItem from '@/app/components/nav-desktop-inner.vue';\r\nconst config = inject('config');\r\n\r\nconst activeFirstLevelNumber = ref(null);\r\nconst meganavFirstLevelRef = ref(null);\r\n\r\nconst mediaQuery = window.matchMedia('(min-width: 61.25em)');\r\n\r\nconst activeBodyOverlayClass = 'is-menu';\r\nconst selectorsToBeInertOnOpenNav = document.querySelectorAll('main, footer, .js-vue-inert');\r\n\r\nfunction primaryLevelButtonClick(i) {\r\n  i === activeFirstLevelNumber.value ? closeMeganav() : openMeganav(i);\r\n}\r\n\r\nfunction clickOutside(e) {\r\n  const activeInner = [...meganavFirstLevelRef.value][activeFirstLevelNumber.value];\r\n  nextTick(() => {\r\n    if (!activeInner) {\r\n      return;\r\n    }\r\n\r\n    if (!activeInner.contains(e.target)) {\r\n      closeMeganav();\r\n    }\r\n  });\r\n}\r\n\r\nfunction handleEscape(e) {\r\n  if (e.key === 'Escape' && activeFirstLevelNumber.value !== null) {\r\n    e.preventDefault();\r\n    closeMeganav();\r\n  }\r\n}\r\n\r\nfunction openMeganav(i) {\r\n  activeFirstLevelNumber.value = i;\r\n  selectorsToBeInertOnOpenNav.forEach((el) => el.setAttribute('inert', ''));\r\n  document.body.classList.add(activeBodyOverlayClass);\r\n\r\n  window.addEventListener('click', clickOutside);\r\n  window.addEventListener('keydown', handleEscape);\r\n}\r\n\r\nfunction closeMeganav() {\r\n  activeFirstLevelNumber.value = null;\r\n  selectorsToBeInertOnOpenNav.forEach((el) => el.removeAttribute('inert'));\r\n  document.body.classList.remove(activeBodyOverlayClass);\r\n\r\n  window.removeEventListener('click', clickOutside);\r\n  window.removeEventListener('keydown', handleEscape);\r\n}\r\n\r\nonMounted(() => {\r\n  mediaQuery.addEventListener('change', () => {\r\n    closeMeganav();\r\n  });\r\n});\r\n</script>\r\n","import script from \"./nav-desktop.vue?vue&type=script&setup=true&lang=js\"\nexport * from \"./nav-desktop.vue?vue&type=script&setup=true&lang=js\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { createApp } from 'vue';\r\nimport meganavDesktopApp from '@/app/views/nav-desktop/nav-desktop.vue';\r\n\r\nfunction init() {\r\n  const meganavDesktopEl = document.getElementById('nav-desktop');\r\n  if (meganavDesktopEl) {\r\n    const app = createApp(meganavDesktopApp);\r\n    app.provide('config', VueConfig);\r\n    app.mount(meganavDesktopEl);\r\n  }\r\n}\r\n\r\nexport default init;\r\n"],"names":["focusableElementRef","inject","ref","panelIsOpen","computed","props","firstLevelNumber","activeFirstLevelNumber","panelHidden","panelInert","addFocusableRef","el","value","push","onBeforeUpdate","onMounted","firstFocucableEl","lastFocusableEl","length","addEventListener","e","key","shiftKey","emit","handleTabbing","activeBodyOverlayClass","config","meganavFirstLevelRef","mediaQuery","window","matchMedia","selectorsToBeInertOnOpenNav","document","querySelectorAll","primaryLevelButtonClick","i","closeMeganav","forEach","setAttribute","body","classList","add","clickOutside","handleEscape","openMeganav","activeInner","nextTick","contains","target","preventDefault","removeAttribute","remove","removeEventListener","meganavDesktopEl","getElementById","app","createApp","meganavDesktopApp","provide","VueConfig","mount"],"sourceRoot":""}