{"version":3,"sources":["webpack:///./src/client/default/js/components/homeNavComponent.js","webpack:///./src/client/default/js/base/baseComponent.js"],"names":["HomeNavComponent","_BaseComponent","element","_this","_classCallCheck","_callSuper","trap","moveTopBar","handleMobileChange","handleEscapeTrigger","window","addEventListener","getHeights","document","e","target","classList","contains","closeMenu","_inherits","_createClass","key","get","topBar","navLists","listContainer","mainHeader","triggersMobile","triggersDesktop","triggersDesktopActive","homenav","secondLevelNavigation","bodyOverlay","infoStrip","pushApp","selected","active","_defineProperty","this","CUSTOM_MESSAGES","BREAKPOINTER","BREAKPOINT_CHANGE","value","_this2","_ref2","_this3","match","querySelectorAll","SELECTORS","forEach","trigger","$off","$on","preventDefault","lists","$el","_toConsumableArray","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","_document$querySelect","appendChild","_document$querySelect2","insertBefore","nextSibling","_document$querySelect3","firstChild","BaseComponent","_BaseGiaComponent","_componentElement","setAttribute","_checkMessages","compOptions","options","_objectSpread","dataset","Object","keys","filter","entry","includes","optionValue","cleanEntry","cleanOptionKey","JSON","parse","replace","convertType","deepFreeze","getAttribute","events","cb","arguments","length","undefined","elements","Bean","on","stopPropagation","one","off","fire","container","message","_loading","LOADER_EVENTS","show","body","error","icon","setTimeout","hide","option","optionReturn","str","concat","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":""}