{"version":3,"sources":["webpack:///./src/client/default/js/components/homeNavComponent.js","webpack:///./src/client/default/js/base/baseComponent.js"],"names":["HomeNavComponent","element","trap","moveTopBar","handleMobileChange","handleEscapeTrigger","window","addEventListener","getHeights","document","e","target","classList","contains","closeMenu","topBar","navLists","listContainer","mainHeader","triggersMobile","triggersDesktop","triggersDesktopActive","homenav","secondLevelNavigation","bodyOverlay","infoStrip","pushApp","selected","active","this","CUSTOM_MESSAGES","BREAKPOINTER","BREAKPOINT_CHANGE","key","match","querySelectorAll","SELECTORS","forEach","trigger","$off","$on","preventDefault","lists","$el","el","index","CLASSES","remove","parentElement","add","openMenu","activeTrigger","querySelector","ariaExpanded","nextElementSibling","EMIT","BODY","TOGGLE_OVERLAY","overlayNoHeader","scroll","deactivate","targetElement","focusTrap","clickOutsideDeactivates","activate","homevavheight","getBoundingClientRect","height","listContainerheight","topbar","appendChild","insertBefore","nextSibling","firstChild","BaseComponent","_componentElement","setAttribute","_checkMessages","compOptions","options","dataset","Object","keys","filter","entry","includes","optionValue","cleanEntry","cleanOptionKey","JSON","parse","replace","convertType","deepFreeze","getAttribute","events","cb","elements","Bean","on","stopPropagation","one","off","fire","container","message","_loading","LOADER_EVENTS","show","body","error","icon","setTimeout","hide","option","optionReturn","str","charAt","toLocaleLowerCase","slice","BaseGiaComponent"],"mappings":"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","file":"js/component-homeNavComponent-js.chunks.js","sourcesContent":["import BaseComponent from '../base/baseComponent';\nimport { match } from '../utilities/resolutionHandler';\nimport * as focusTrap from 'focus-trap';\n\nexport default class HomeNavComponent extends BaseComponent {\n  get SELECTORS() {\n    return {\n      topBar: '.top-bar',\n      navLists: '.homenav li',\n      listContainer: '.homenav li.selected .glide-overflower',\n      mainHeader: 'header.header',\n      triggersMobile: '.homenav .category',\n      triggersDesktop: '.navigation .trigger-menu',\n      triggersDesktopActive: '.navigation .trigger-menu.active',\n      homenav: '.homenav',\n      secondLevelNavigation: '.secondLevelNavigation',\n      bodyOverlay: '.overlay-no-header',\n      infoStrip: '.information-strip.is-visible',\n      pushApp: '.push-app-content-wrapper'\n    };\n  }\n\n  get CLASSES() {\n    return {\n      selected: 'selected',\n      active: 'active'\n    };\n  }\n\n  get Messages() {\n    return {\n      [this.CUSTOM_MESSAGES.BREAKPOINTER.BREAKPOINT_CHANGE]: this.handleMobileChange\n    };\n  }\n\n  constructor(element) {\n    super(element);\n    this.trap = null;\n    this.moveTopBar();\n    this.handleMobileChange();\n    this.handleEscapeTrigger();\n    window.addEventListener(\n      'resize',\n      () => {\n        this.moveTopBar();\n        this.getHeights();\n      },\n      true\n    );\n    document.addEventListener('click', (e) => {\n      if (e.target.classList.contains('overlay-no-header')) {\n        this.closeMenu();\n      }\n    });\n  }\n\n  handleEscapeTrigger() {\n    document.addEventListener('keydown', ({ key }) => {\n      if (key === 'Escape') {\n        this.closeMenu();\n      }\n    });\n  }\n\n  handleMobileChange() {\n    if (match('lg', null)) {\n      this.closeMenu();\n      const triggers = document.querySelectorAll(this.SELECTORS.triggersMobile);\n      triggers.forEach((trigger) => {\n        this.$off('click.cat', trigger);\n        this.$on(\n          'click.cat',\n          (e) => {\n            e.preventDefault();\n            const lists = this.$el.querySelectorAll(this.SELECTORS.navLists);\n            [...lists].forEach((el, index) => {\n              if (el.classList.contains(this.CLASSES.selected)) {\n                el.classList.remove(this.CLASSES.selected);\n              }\n            });\n            const parent = e.target.parentElement;\n            parent.classList.add(this.CLASSES.selected);\n\n            this.moveTopBar();\n            this.getHeights();\n          },\n          trigger\n        );\n      });\n    } else {\n      const triggers = document.querySelectorAll(this.SELECTORS.triggersDesktop);\n      triggers.forEach((trigger) => {\n        this.$off('click.cat', trigger);\n        this.$on(\n          'click.cat',\n          (e) => {\n            e.preventDefault();\n            if (trigger.classList.contains(this.CLASSES.active)) {\n              this.closeMenu();\n            } else {\n              this.closeMenu();\n              this.openMenu(trigger);\n            }\n          },\n          trigger\n        );\n      });\n    }\n  }\n\n  closeMenu() {\n    const activeTrigger = document.querySelector(this.SELECTORS.triggersDesktopActive);\n    if (!activeTrigger) {\n      return;\n    }\n    activeTrigger.classList.remove(this.CLASSES.active);\n    activeTrigger.ariaExpanded = false;\n    activeTrigger.nextElementSibling.classList.remove(this.CLASSES.active);\n    this.EMIT(this.CUSTOM_MESSAGES.BODY.TOGGLE_OVERLAY, { overlayNoHeader: false, scroll: true });\n    this.trap.deactivate();\n  }\n\n  openMenu(activeTrigger) {\n    activeTrigger.classList.add(this.CLASSES.active);\n    activeTrigger.ariaExpanded = true;\n    activeTrigger.nextElementSibling.classList.add(this.CLASSES.active);\n    this.EMIT(this.CUSTOM_MESSAGES.BODY.TOGGLE_OVERLAY, { overlayNoHeader: true, scroll: false });\n    const targetElement = activeTrigger.parentElement.querySelector('.header-dropdown-panel');\n    this.trap = focusTrap.createFocusTrap(targetElement, { clickOutsideDeactivates: true });\n    this.trap.activate();\n  }\n\n  getHeights() {\n    const homevavheight = document.querySelector(this.SELECTORS.homenav).getBoundingClientRect().height;\n    const listContainerheight = document.querySelector(this.SELECTORS.listContainer).getBoundingClientRect().height;\n    const topbar = document.querySelector(this.SELECTORS.topBar);\n\n    if (listContainerheight < homevavheight) {\n      topbar.classList.add('sticky');\n    } else {\n      topbar.classList.remove('sticky');\n    }\n  }\n\n  moveTopBar() {\n    if (match('lg', null)) {\n      document.querySelector(this.SELECTORS.listContainer)?.appendChild(document.querySelector(this.SELECTORS.topBar));\n    } else if (document.querySelector(this.SELECTORS.infoStrip)) {\n      document.querySelector(this.SELECTORS.mainHeader)?.insertBefore(document.querySelector(this.SELECTORS.topBar), document.querySelector(this.SELECTORS.infoStrip).nextSibling);\n    } else {\n      document\n        .querySelector(this.SELECTORS.mainHeader)\n        ?.insertBefore(\n          document.querySelector(this.SELECTORS.topBar),\n          document.querySelector(this.SELECTORS.pushApp) ? document.querySelector(this.SELECTORS.pushApp).nextSibling : document.querySelector(this.SELECTORS.mainHeader).firstChild\n        );\n    }\n  }\n}\n","/* eslint-disable new-cap */\n/* eslint-disable valid-jsdoc */\n/* eslint-disable no-underscore-dangle */\n\nimport Bean from 'bean';\nimport deepFreeze from '../utilities/freeze';\nimport BaseGiaComponent from './baseGiaComponent';\n\nexport default class BaseComponent extends BaseGiaComponent {\n  /**\n   * @returns {HTMLElement}\n   */\n  get $el() {\n    return /** @type {HTMLElement} */ (this._componentElement);\n  }\n\n  get $options() {\n    const compOptions = {};\n    const options = { ...this.$el.dataset };\n    const optionsEntires = Object.keys(options).filter((entry) => entry.includes('option'));\n    optionsEntires.forEach((entry) => {\n      const cleanEntry = BaseComponent.cleanOptionKey(entry);\n      let optionValue;\n      if (options[entry].includes('{') && options[entry].includes('}')) {\n        optionValue = JSON.parse(options[entry].replace(/'/g, '\"'));\n      } else {\n        optionValue = BaseComponent.convertType(options[entry]);\n      }\n      compOptions[cleanEntry] = optionValue;\n    });\n    return deepFreeze(compOptions);\n  }\n\n  get COMPONENT_NAME() {\n    return this.$el.getAttribute('data-component');\n  }\n\n  /**\n   *\n   * constructor\n   *\n   * @param {Element} element\n   */\n  constructor(element) {\n    super(element);\n    this._componentElement = element;\n    this._componentElement.setAttribute('data-component-init', 'true');\n    this._checkMessages();\n  }\n\n  static convertType(option) {\n    let optionReturn;\n    switch (option) {\n      case 'false':\n        optionReturn = false;\n        break;\n      case 'true':\n        optionReturn = true;\n        break;\n      case 'null':\n        optionReturn = null;\n        break;\n      default:\n        optionReturn = option;\n        break;\n    }\n\n    return optionReturn;\n  }\n\n  static cleanOptionKey(key) {\n    const str = key.replace('option', '');\n    return `${str.charAt(0).toLocaleLowerCase()}${str.slice(1)}`;\n  }\n\n  /**\n   *\n   * $on\n   *\n   * @param {String} events\n   * @param {Function} cb\n   * @param {Element} [element = this.$el]\n   * @param {Array|String|Element} [elements = null]\n   */\n  $on(events, cb, element = this.$el, elements = null) {\n    if (!element || !events || !cb) return;\n    if (!elements) {\n      Bean.on(element, events, (e) => {\n        if (e) e.stopPropagation();\n        cb(e);\n      });\n    } else {\n      Bean.on(element, events, elements, (e) => {\n        if (e) e.stopPropagation();\n        cb(e);\n      });\n    }\n  }\n\n  /**\n   *\n   * $one\n   *\n   * @param {String} events\n   * @param {Function} cb\n   * @param {Element} [element = this.$el]\n   */\n  $one(events, cb, element = this.$el) {\n    Bean.one(element, events, cb);\n  }\n\n  /**\n   *\n   * $off\n   *\n   * @param {String} events\n   * @param {Element} [element = this.$el]\n   */\n  $off(events, element = this.$el) {\n    Bean.off(element, events);\n  }\n\n  /**\n   *\n   * $fire\n   *\n   * @param {String} events\n   * @param {Element} [element = this.$el]\n   */\n  $fire(events, element = this.$el) {\n    Bean.fire(element, events);\n  }\n\n  /**\n   *\n   * Activate loader\n   *\n   * @param {HTMLElement} [container]\n   * @param {String} [message]\n   */\n  loading(container, message) {\n    this._loading = true;\n    this.EMIT(this.CUSTOM_MESSAGES.LOADER_EVENTS.show, {\n      container: container || document.body,\n      message: message ?? null\n    });\n  }\n\n  /**\n   *\n   * Deactivate loader\n   *\n   * @param {HTMLElement} [container]\n   * @param {String} [message]\n   * @param {Boolean} [error=false]\n   * @param {String} [icon]\n   */\n  endLoading(container, message, error = false, icon) {\n    this._loading = false;\n    setTimeout(() => {\n      if (!this._loading) {\n        this.EMIT(this.CUSTOM_MESSAGES.LOADER_EVENTS.hide, {\n          container: container || document.body,\n          message,\n          error,\n          icon\n        });\n      }\n    }, 400);\n  }\n}\n"],"sourceRoot":""}