{"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":""}