{"version":3,"sources":["webpack:///./cartridges/app_designholding/cartridge/client/default/js/utilities/get-elements.js","webpack:///./cartridges/app_designholding/cartridge/client/default/js/utilities/toggle-class.js","webpack:///./cartridges/app_designholding/cartridge/client/default/js/components/paged-navigation/paged-navigation.js","webpack:///./cartridges/app_designholding/cartridge/client/default/js/components/paged-navigation/index.js"],"names":["getElements","selector","document","querySelectorAll","Array","isArray","toggleClass","className","onoff","els","method","classNames","forEach","el","cn","classList","JS_HOOK_CONTROL","JS_HOOK_VIEW","ANIMATION_ENTERING","ANIMATION_ENTERED","ANIMATION_EXITING","ANIMATION_EXITED","ANIMATION_DURATION","ANIMATION_STATES","PagedNavigation","constructor","element","args","id","dataset","getAttribute","bindEvents","viewID","showView","scrollTop","scrollList","Events","$on","e","data","animate","addEventListener","event","target","closest","hideThese","filter","visibleView","showThese","length","animationTimer","clearTimeout","view","setTimeout","$trigger"],"mappings":"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","file":"js/PagedNavigation.js","sourcesContent":["/**\n * usage examples:\n * getElements('body')\n * getElements(document.querySelector('foo'))\n * getElements(document.querySelectorAll('foo'))\n *\n * always returns an array\n */\nconst getElements = function(selector) {\n  if (typeof selector === 'string') {\n    return [...document.querySelectorAll(selector)];\n  }\n\n  if (Array.isArray(selector)) {\n    return selector;\n  }\n\n  return [selector];\n};\n\nexport default getElements;\n","import getElements from '@utilities/get-elements';\n\n/**\n * toggles zero or more classes on zero or more elements on or off\n *\n * usage examples:\n * toggleClass('body', 'is-mobile', true)\n * toggleClass(document.querySelector('.foo'), 'bar', true)\n * toggleClass(document.querySelectorAll('.many'), ['foo', 'bar'], true)\n */\nconst toggleClass = function(selector, className, onoff) {\n  const els = getElements(selector);\n  const method = onoff ? 'add' : 'remove';\n  const classNames = typeof className === 'string' ? [className] : className;\n  els.forEach(el => {\n    classNames.forEach(cn => {\n      el.classList[method](cn);\n    });\n  });\n};\n\nexport default toggleClass;\n","import Events from '@utilities/events'\nimport toggleClass from '@utilities/toggle-class';\n\nconst JS_HOOK_CONTROL = '[js-hook-paged-navigation-control]';\nconst JS_HOOK_VIEW = '[js-hook-paged-navigation-view]';\nconst ANIMATION_ENTERING = 'paged-navigation--entering';\nconst ANIMATION_ENTERED = 'paged-navigation--entered';\nconst ANIMATION_EXITING = 'paged-navigation--exiting';\nconst ANIMATION_EXITED = 'paged-navigation--exited';\nlet ANIMATION_DURATION = '300'; // ms\nconst ANIMATION_STATES = [\n  ANIMATION_ENTERING,\n  ANIMATION_ENTERED,\n  ANIMATION_EXITING,\n  ANIMATION_EXITED\n];\n\nclass PagedNavigation {\n  constructor(element, args) {\n    this.element = element;\n    this.id = this.element.dataset.id || this.element.id;\n\n    ANIMATION_DURATION = this.element.getAttribute('js-hook-paged-navigation-duration') || ANIMATION_DURATION;\n\n    this.bindEvents();\n\n    if (args && args.viewID) this.showView(args.viewID, args.scrollTop, args.scrollList, false);\n  }\n\n  bindEvents() {\n    Events.$on(`pagedNavigation[${this.id}]::changeView`, (e, data) => {\n      this.showView(data.viewID, null, null, data.animate);\n    });\n\n    this.element.addEventListener(\n      'click',\n      event => {\n        const target = event.target.closest(JS_HOOK_CONTROL);\n        if (!target) return;\n\n        const viewID = target.getAttribute('aria-controls');\n        this.showView(viewID);\n      },\n      false\n    );\n  }\n\n  /**\n   * Show view based on control\n   */\n  showView(viewID, scrollTop = null, scrollList = null, animate = true) {\n    // reset: Hide views\n    const hideThese = [\n      ...this.element.querySelectorAll(`${JS_HOOK_VIEW}:not(.${ANIMATION_EXITED})`)\n    ].filter(visibleView => visibleView.getAttribute('id') !== viewID);\n    const showThese = [...this.element.querySelectorAll(`#${viewID}:not(.${ANIMATION_ENTERED})`)];\n\n    if (showThese.length < 1) return;\n\n    if (this.animationTimer) clearTimeout(this.animationTimer);\n\n    if (animate) {\n      hideThese.forEach(view => {\n        toggleClass(view, ANIMATION_STATES, false);\n        toggleClass(view, ANIMATION_EXITING, true);\n      });\n      showThese.forEach(view => {\n        toggleClass(view, ANIMATION_STATES, false);\n        toggleClass(view, ANIMATION_ENTERING, true);\n      });\n      this.animationTimer = setTimeout(() => {\n        hideThese.forEach(view => {\n          toggleClass(view, ANIMATION_STATES, false);\n          toggleClass(view, ANIMATION_EXITED, true);\n        });\n        showThese.forEach(view => {\n          toggleClass(view, ANIMATION_STATES, false);\n          toggleClass(view, ANIMATION_ENTERED, true);\n        });\n      }, ANIMATION_DURATION);\n    } else {\n      hideThese.forEach(view => {\n        toggleClass(view, ANIMATION_STATES, false);\n        toggleClass(view, ANIMATION_EXITED, true);\n      });\n      showThese.forEach(view => {\n        toggleClass(view, ANIMATION_STATES, false);\n        toggleClass(view, ANIMATION_ENTERED, true);\n      });\n    }\n\n    if (scrollTop && scrollList) scrollList.scrollTop = scrollTop;\n\n    Events.$trigger(`pagedNavigation[${this.id}]::changedView`, {\n      data: {\n        viewID\n      }\n    });\n\n    Events.$trigger(`pagedNavigation::changedView`);\n  }\n}\n\nexport default PagedNavigation;\n","import PagedNavigation from './paged-navigation';\n\nexport default PagedNavigation;\n"],"sourceRoot":""}