{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./app/components/cookie-banner.ts","webpack:///./app/components/filterpage.ts","webpack:///./app/components/filterswitch.ts","webpack:///./app/components/lightswitch.ts","webpack:///./app/components/navbar.ts","webpack:///./app/components/slider.ts","webpack:///./app/components/sticky-footer.ts","webpack:///./app/main.scss","webpack:///./app/main.ts","webpack:///./node_modules/@opten/animation/linear-tween/index.ts","webpack:///./node_modules/@opten/collapse/index.ts","webpack:///./node_modules/@opten/collapse/initializer/index.ts","webpack:///./node_modules/@opten/compiler/factory/index.ts","webpack:///./node_modules/@opten/compiler/index.ts","webpack:///./node_modules/@opten/compiler/metadata/component.ts","webpack:///./node_modules/@opten/compiler/reflector/index.ts","webpack:///./node_modules/@opten/compiler/resolver/index.ts","webpack:///./node_modules/@opten/compiler/util/decorators.ts","webpack:///./node_modules/@opten/compiler/util/factories.ts","webpack:///./node_modules/@opten/compiler/util/type.ts","webpack:///./node_modules/@opten/cookie/get/index.ts","webpack:///./node_modules/@opten/cookie/set/index.ts","webpack:///./node_modules/@opten/dom/add-class/index.ts","webpack:///./node_modules/@opten/dom/as-html-element/index.ts","webpack:///./node_modules/@opten/dom/change-class/index.ts","webpack:///./node_modules/@opten/dom/class-regex/index.ts","webpack:///./node_modules/@opten/dom/first-by-class/index.ts","webpack:///./node_modules/@opten/dom/get-children-with-class/index.ts","webpack:///./node_modules/@opten/dom/get-class/index.ts","webpack:///./node_modules/@opten/dom/get-parent-with-class/index.ts","webpack:///./node_modules/@opten/dom/get-parents-or-self/index.ts","webpack:///./node_modules/@opten/dom/get-parents/index.ts","webpack:///./node_modules/@opten/dom/get-selector-element-from-element/index.ts","webpack:///./node_modules/@opten/dom/get-selector-from-element/index.ts","webpack:///./node_modules/@opten/dom/get-window-scroll-top/index.ts","webpack:///./node_modules/@opten/dom/has-class/index.ts","webpack:///./node_modules/@opten/dom/is-html-element/index.ts","webpack:///./node_modules/@opten/dom/remove-class/index.ts","webpack:///./node_modules/@opten/events/dispatch-custom-event/index.ts","webpack:///./node_modules/@opten/events/event-namespace-factory/index.ts","webpack:///./node_modules/@opten/forms/form-field.ts","webpack:///./node_modules/@opten/reactive/debounce/index.ts","webpack:///./node_modules/@opten/script/create-script/index.ts","webpack:///./node_modules/@opten/script/get-script-by-src/index.ts","webpack:///./node_modules/@opten/script/load-polyfill/index.ts","webpack:///./node_modules/@opten/scroll/scroll-to-element/index.ts","webpack:///./node_modules/@opten/scroll/scroll-to-id/index.ts","webpack:///./node_modules/@opten/scroll/scroll-to-offset/index.ts","webpack:///./node_modules/@opten/scroll/scroll-to/index.ts","webpack:///./node_modules/@opten/slider/arrows-responsive-behavior/index.ts","webpack:///./node_modules/@opten/slider/dots-responsive-behavior/index.ts","webpack:///./node_modules/@opten/slider/index.ts","webpack:///./node_modules/@opten/slider/lory/defaults.js","webpack:///./node_modules/@opten/slider/lory/index.js","webpack:///./node_modules/@opten/slider/lory/utils/detect-prefixes.js","webpack:///./node_modules/@opten/slider/lory/utils/detect-supportsPassive.js","webpack:///./node_modules/@opten/slider/lory/utils/dispatch-event.js","webpack:///./node_modules/@opten/transition/add-transition-end-listener/index.ts","webpack:///./node_modules/@opten/transition/get-transition-end-event-name/index.ts","webpack:///./node_modules/@opten/url/remove-domain/index.ts"],"names":["CookieBanner","className","element","body","document","style","display","setSpace","window","addEventListener","e","Array","from","getElementsByClassName","forEach","btn","preventDefault","remove","hide","Infinity","removeAttribute","setAttribute","offsetHeight","FilterPageOptions","FilterPage","wrapper","options","pagingSize","page","language","_options","selectors","content","selects","selectTag","tag","dropdown","dropdownToggle","tagsDropdown","searchText","searchButton","tagAll","tagAllActive","tagActive","resetAllActiveTagsElements","resetSearchTextInputElements","paging","pageBack","pageNext","pageJump","pageJumpAttribute","loading","contentLoading","contentYScroll","classes","active","hidden","contentLocation","wrapperId","searchValueText","tagValue","getAttribute","wrapperElement","dataLanguage","length","AOS","init","filter","activeFilter","categorySpacer","mobileFilterWrapper","Number","contentElement","tags","searchTextInput","allTags","toggleTag","searchTextButton","parentElement","key","which","keyCode","loadFilterElements","toggleReset","location","search","searchValues","substring","split","index","searchTextValue","decodeURIComponent","value","query","history","undefined","pushState","title","pathname","select","onChange","allTag","allTagClick","resetTags","resetAllActiveTags","clearSpacer","resetSearchTextInput","innerHTML","getTagsLocationHash","event","updateSelectTag","target","that","newSelects","newTags","push","setPageDefault","loadMore","setPageToDefault","dataSearch","getFilters","moreButton","querySelector","fetch","method","headers","credentials","then","response","contentType","get","includes","text","data","setPreviousNextJumpPageEvents","initContentFilter","reinitFilter","toggleMobileFilter","scrollTo","currentTarget","pageStep","loadPreviousPage","loadNextPage","loadJumpPage","state","activeTags","getTagsFromLocationHash","filters","setActiveTagsClasses","isTagActive","deactivateAllTag","isSelectOption","selectedIndex","addTagToFilters","allTagsActive","activateAllTag","removeTagFromFilters","newHash","hash","decodeURI","o","indexOf","join","minHeight","scrollHeight","toString","doActivateTag","deactivateActiveTags","activateTag","deactivateTag","activateActiveTag","deactivateActiveTag","selectMenu","selectedTag","getTagValue","tagValueIndex","getTagValueIndex","splice","filterNodes","node","tagName","filterNode","createElement","classList","add","filtertext","createTextNode","appendChild","icon","toggleFilterTag","removeChild","filterLists","list","createFilterNode","tagsActive","removeFilterNode","allTagActive","dropdownToggleBtn","filterAll","indexFilter","filterpage","FilterSwitchComponent","observe","resetFilter","resetFilterTag","showDetailedFilter","reset","resetFitler","filterList","LightSwitchComponent","allNav","allItemWrapper","amount","indicator","width","allItem","item","i","items","changeStandNav","allnav","position","left","changeStandItem","Navbar","backTop","scrollToElements","navbar","toggleCollapse","showBackTop","scrollY","replace","getElementById","offset","SliderCustom","behaviors","SliderDotsResponsiveBehavior","SliderArrowsResponsiveBehavior","slider","Slider","next","prev","StickyFooter","footer","defaultOffset","parseFloat","getComputedStyle","marginBottom","setPos","documentHeight","clientHeight","scrollBottom","innerHeight","footerHeight","bottom","CollapseComponent","FormField","lazyLoadInstance","LazyLoad","elements_selector","setViewportHeight","vh","documentElement","setProperty","linearTween","timeElapsed","start","distance","duration","collapse","Collapse","stringCollapse","triggers","activeClass","animateProp","collapsingClass","componentClass","showClass","showClassDesktop","desktopWidth","transitionDuration","isHideable","closeSiblings","useShowClassDesktop","dataParentSelector","dataTargetSelector","dataToggleSelector","hrefSelector","isTransitioning","eventNamespaceFn","handleClick","trigger","getInstance","toggle","outerWidth","isOpen","show","parent","selector","id","actives","querySelectorAll","anyTransitioning","collapseInstance","_handleShow","_handleClose","toggles","_addAriaAndCollapsedClass","collapseElement","offsetWidth","toLowerCase","create","console","error","reflector","Reflector","resolver","Resolver","compiler","Compiler","factory","components","rootElement","observables","Map","componentType","component","resolve","compile","set","Error","name","size","MutationObserver","mutations","componentInitializer","mutation","addedNodes","map","comps","c","childList","subtree","componentCache","constructor","has","Object","keys","queries","propName","targetNode","descendants","nodes","cache","reduce","acc","val","concat","f","first","onInit","Component","createComponent","typeOrFunc","parentCtor","getParentCtor","ownAnnotations","_ownAnnotations","parentAnnotations","annotations","propMetadata","parentPropMetadata","ownPropMetadata","_ownPropMetadata","decorators","hasOwnProperty","ANNOTATIONS","PROP_METADATA","ctor","parentProto","getPrototypeOf","prototype","QUERY_METADATA_IDENTIFIERS","type","typeMetadata","metadata","findLast","metadataName","propertyMetadata","_mergeWithPropertyMetadata","a","some","_merge","mergedQueries","res","propertyName","_getQueryMetadata","q","read","arr","condition","makeDecorator","props","parentClass","chainFn","typeFn","metaCtor","makeMetadataCtor","DecoratorFactory","args","call","annotationInstance","typeDecorator","cls","defineProperty","values","makePropDecorator","PropDecoratorFactory","apply","decoratorInstance","PropDecorator","metaName","meta","unshift","makeMetadataFactory","isTypeOf","obj","Type","Function","isType","v","getCookie","cookie","RegExp","encodeURIComponent","setCookie","end","path","domain","secure","test","expires","String","Date","toUTCString","keyStr","valueStr","domainStr","pathStr","secureStr","addClass","trim","asHTMLElement","changeClass","classRegexCache","classRegex","firstByClass","elements","getChildrenWithClass","children","child","getClass","getParentWithClass","getParentsOrSelf","parents","getParents","getSelectorElementFromElement","attribute","fallbackHref","substr","getSelectorFromElement","getWindowScrollTop","pageYOffset","parentNode","scrollTop","hasClass","isHTMLElement","HTMLElement","nodeType","nodeName","removeClass","regex","removeClassFactory","removeClassOnCollection","dispatchCustomEvent","eventName","CustomEvent","dispatchEvent","eventNamespaceFactory","namespace","checkValue","debounce","func","wait","immediate","timeout","result","debounceFn","context","arguments","later","callNow","clearTimeout","setTimeout","loadingScriptWindow","loadingScripts","createScript","src","onerror","scriptElement","async","onload","removeLoadingScript","getScriptBySrc","scripts","getElementsByTagName","currentScriptElement","currentSrc","polyfillWindow","polyfillesLoadedFn","polyfillsLoadedCallbacks","polyfillsLoadedFlag","polyfillsLoaded","loadPolyfillv2","cb","features","loadPolyfill","script","head","scrollToElement","animation","top","offsetTop","getBoundingClientRect","scrollToId","animationFunction","scrollToOffset","t","b","d","timeStart","requestAnimationFrame","time","loop","Window","infinite","rewind","_slidingWindowCount","getSlidingWindowCount","reconfigureArrows","detail","currentSlide","frameWidth","frame","slides","firstSlideWith","slidesToShow","Math","round","countSlides","slidesToScroll","pagerQty","lastSlideVisible","counter","dots","reinitDots","len","childNodes","instance","slideTo","dotsCount","getDotCount","li","firstElementChild","behavoirs","classNameFrame","classNameNextCtrl","classNamePrevCtrl","classNameSlideContainer","ease","enableMouseEvents","initialIndex","rewindSpeed","slideSpeed","snapBackSpeed","rewindOnResize","slidesWrapper","behavior","initialize","reinitInstance","destroy","classNameActiveSlide","slice","lory","opts","slidesWidth","slideContainer","prevCtrl","nextCtrl","prefixes","transitionEndCallback","touchEventParams","passive","jQuery","setActiveElement","currentIndex","contains","setupInfinite","slideArray","front","back","cloned","cloneNode","reverse","insertBefore","firstChild","transitionEnd","onTransitionEnd","dispatchSliderEvent","phase","translate","to","transition","transform","elementWidth","slide","nextIndex","direction","rewindPrev","classNameDisabledNextCtrl","classNameDisabledPrevCtrl","nextSlide","maxOffset","min","max","abs","x","nextOffset","offsetLeft","setup","defaults","y","onTouchstart","onClick","onResize","previousValue","returnIndex","removeEventListener","onTouchmove","onTouchend","lastChild","touchOffset","delta","isScrolling","touches","pageX","pageY","now","isValid","isOutOfBounds","detectPrefixes","el","prop","detectSupportsPassive","supportsPassive","bubbles","cancelable","transitionEndEventName","addTransitionEndListener","callback","fallbackDuration","called","listener","getTransitionEndEventName","transitions","WebkitTransition","removeDomain","url"],"mappings":"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","file":"Scripts/main.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"./app/main.ts\");\n","import { Component } from '@opten/compiler/metadata/component';\r\nimport { setCookie } from '@opten/cookie/set';\r\nimport { getCookie } from '@opten/cookie/get';\r\nimport { debounce } from '@opten/reactive/debounce';\r\n\r\n@Component({ className: 'js-cookie-banner' })\r\nexport class CookieBanner {\r\n\tprivate body = document.body;\r\n\r\n\tconstructor(private element: HTMLElement) {\r\n\t\tif (getCookie('cookiesAccepted') !== 'true') {\r\n\t\t\tthis.element.style.display = 'block';\r\n\t\t\tthis.setSpace();\r\n\t\t\twindow.addEventListener('resize', debounce((e) => {\r\n\t\t\t\tthis.setSpace();\r\n\t\t\t}, 100));\r\n\t\t\tArray.from(document.getElementsByClassName('js-cookie-banner-accept'))\r\n\t\t\t\t.forEach((btn) => btn.addEventListener('click', (e) => {\r\n\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\tthis.remove();\r\n\t\t\t\t}));\r\n\t\t} else {\r\n\t\t\tthis.hide();\r\n\t\t}\r\n\t}\r\n\r\n\tprivate remove() {\r\n\t\tsetCookie('cookiesAccepted', 'true', Infinity, '/');\r\n\t\tthis.hide();\r\n\t}\r\n\r\n\tprivate hide() {\r\n\t\tthis.element.style.display = 'none';\r\n\t\tthis.body.removeAttribute('style');\r\n\t}\r\n\r\n\tprivate setSpace() {\r\n\t\tthis.body.setAttribute('style', 'margin-bottom: ' + (this.element.offsetHeight + 20) + 'px;');\r\n\t}\r\n}\r\n","import { hasClass } from '@opten/dom/has-class';\r\nimport { addClass } from '@opten/dom/add-class';\r\nimport { removeClass } from '@opten/dom/remove-class';\r\nimport { forElementsByClassName } from '@opten/dom/for-elements-by-class-name';\r\nimport { getParentWithClass } from '@opten/dom/get-parent-with-class';\r\nimport { getChildrenWithClass } from '@opten/dom/get-children-with-class';\r\n// import { isMobile } from './../utilities/detection';\r\n\r\n// todo: better way? global?\r\n// declare const picturefill;\r\ndeclare var AOS;\r\n\r\nexport class FilterPageOptions {\r\n\tselectors: {\r\n\t\tcontent: string;\r\n\t\tselects: string;\r\n\t\tselectTag: string;\r\n\t\ttag: string;\r\n\t\tdropdown: string;\r\n\t\tdropdownToggle: string;\r\n\t\ttagsDropdown: string;\r\n\t\tsearchText: string;\r\n\t\tsearchButton: string;\r\n\t\ttagAll: string;\r\n\t\ttagAllActive: string;\r\n\t\ttagActive: string;\r\n\t\tresetAllActiveTagsElements: string;\r\n\t\tresetSearchTextInputElements: string;\r\n\t};\r\n\tpaging: {\r\n\t\tpageBack: string;\r\n\t\tpageNext: string;\r\n\t\tpageJump: string;\r\n\t\tpageJumpAttribute: string;\r\n\t\tpagingSize: string;\r\n\t};\r\n\tloading: {\r\n\t\tcontentLoading: string;\r\n\t\tcontentYScroll: number;\r\n\t};\r\n\tclasses: {\r\n\t\tactive: string;\r\n\t\thidden: string;\r\n\t};\r\n\r\n\tcontentLocation: string;\r\n\twrapperId: string;\r\n\tsearchValueText: string;\r\n\ttagValue: string;\r\n}\r\n\r\nexport class FilterPage {\r\n\tprivate wrapperElement: HTMLElement;\r\n\tprivate wrapperId: string;\r\n\tprivate contentElement: HTMLElement;\r\n\tprivate categorySpacer: HTMLElement;\r\n\tprivate mobileFilterWrapper: HTMLElement;\r\n\tprivate activeFilter: HTMLElement;\r\n\tprivate contentLocation: string;\r\n\tprivate tags: Array;\r\n\tprivate filters: Array;\r\n\tprivate activeTags: Array;\r\n\tprivate selects: Array;\r\n\tprivate searchTextInput: HTMLInputElement;\r\n\tprivate searchTextButton: HTMLElement;\r\n\tprivate resetAllActiveTagsElements: Array;\r\n\tprivate resetSearchTextInputElements: Array;\r\n\tprivate allTags: Array;\r\n\tprivate pagingSize: number = 6;\r\n\tprivate page: number = 1;\r\n\tprivate language: string = 'de-CH';\r\n\tprivate moreButton: HTMLElement;\r\n\r\n\tprivate _options: FilterPageOptions = {\r\n\t\tselectors: {\r\n\t\t\tcontent: 'js-filter__page__content',\r\n\t\t\tselects: 'js-filter__select',\r\n\t\t\tselectTag: 'js-filter__select__tag',\r\n\t\t\ttag: 'js-filter__tag',\r\n\t\t\tdropdown: 'js-filter__dropdown',\r\n\t\t\tdropdownToggle: 'js-filter__dropdown-toggle',\r\n\t\t\ttagsDropdown: 'js-filter-tags-dropdown',\r\n\t\t\tsearchText: 'js-filter__search-text',\r\n\t\t\tsearchButton: 'js-filter__search-button',\r\n\t\t\ttagAll: 'js-filter__tag-all',\r\n\t\t\ttagAllActive: 'js-filter__tag-all--active',\r\n\t\t\ttagActive: 'js-filter__tag-active',\r\n\t\t\tresetAllActiveTagsElements: 'js-filter__reset-all',\r\n\t\t\tresetSearchTextInputElements: 'js-filter__reset-search-input',\r\n\t\t},\r\n\t\tpaging: {\r\n\t\t\tpageBack: 'js-filter__page-back',\r\n\t\t\tpageNext: 'js-filter__page-next',\r\n\t\t\tpageJump: 'js-filter__page-jump',\r\n\t\t\tpageJumpAttribute: 'data-value',\r\n\t\t\tpagingSize: 'data-paging-size',\r\n\t\t},\r\n\t\tloading: {\r\n\t\t\tcontentLoading:\r\n\t\t\t\t'
',\r\n\t\t\tcontentYScroll: 0,\r\n\t\t},\r\n\t\tclasses: {\r\n\t\t\tactive: 'is--active',\r\n\t\t\thidden: 'is--hidden',\r\n\t\t},\r\n\t\tcontentLocation: 'data-location',\r\n\t\twrapperId: 'data-id',\r\n\t\tsearchValueText: 'search_text',\r\n\t\ttagValue: 'data-value',\r\n\t};\r\n\r\n\tconstructor(private wrapper: HTMLElement, options?: FilterPageOptions) {\r\n\t\tthis.language = document.body.getAttribute('data-language');\r\n\t\tthis.wrapperElement = wrapper;\r\n\t\tthis._options = { ...this._options, ...options };\r\n\t\tlet dataLanguage = document.body.getAttribute('data-language-long');\r\n\t\tif (dataLanguage && dataLanguage.length > 0) {\r\n\t\t\tthis.language = dataLanguage;\r\n\t\t}\r\n\t\tAOS.init();\r\n\t\tthis.init();\r\n\r\n\t\twindow.addEventListener('hashchange', () => this.filter());\r\n\r\n\t\tthis.filter();\r\n\t}\r\n\r\n\tprivate init() {\r\n\r\n\t\tthis.activeFilter = this.wrapperElement.getElementsByClassName('js-filter__active')[0] as HTMLElement;\r\n\t\tthis.categorySpacer = this.wrapperElement.getElementsByClassName('js-filter-category')[0] as HTMLElement;\r\n\t\t// tslint:disable-next-line:max-line-length\r\n\t\tthis.mobileFilterWrapper = this.wrapperElement.getElementsByClassName('js-mobile-subfilter-wrapper')[0] as HTMLElement;\r\n\r\n\t\tthis.wrapperId = this.wrapperElement.getAttribute(this._options.wrapperId);\r\n\t\tthis.pagingSize = Number(\r\n\t\t\tthis.wrapperElement.getAttribute(this._options.paging.pagingSize),\r\n\t\t);\r\n\t\tthis.contentLocation = this.wrapperElement.getAttribute(\r\n\t\t\tthis._options.contentLocation,\r\n\t\t);\r\n\t\tthis.contentElement = this.wrapperElement.getElementsByClassName(\r\n\t\t\tthis._options.selectors.content,\r\n\t\t)[0] as HTMLElement;\r\n\t\tthis.selects = Array.from(\r\n\t\t\tthis.wrapperElement.getElementsByClassName(\r\n\t\t\t\tthis._options.selectors.selects,\r\n\t\t\t),\r\n\t\t);\r\n\t\tthis.tags = Array.from(\r\n\t\t\tthis.wrapperElement.getElementsByClassName(\r\n\t\t\t\tthis._options.selectors.tag,\r\n\t\t\t),\r\n\t\t);\r\n\t\tthis.searchTextInput = this.wrapperElement.getElementsByClassName(\r\n\t\t\tthis._options.selectors.searchText,\r\n\t\t)[0] as HTMLInputElement;\r\n\t\tthis.allTags = Array.from(\r\n\t\t\tthis.wrapperElement.getElementsByClassName(\r\n\t\t\t\tthis._options.selectors.tagAll,\r\n\t\t\t),\r\n\t\t);\r\n\t\tthis.resetAllActiveTagsElements = Array.from(\r\n\t\t\tthis.wrapperElement.getElementsByClassName(\r\n\t\t\t\tthis._options.selectors.resetAllActiveTagsElements,\r\n\t\t\t),\r\n\t\t);\r\n\r\n\t\tthis.resetSearchTextInputElements = Array.from(\r\n\t\t\tthis.wrapperElement.getElementsByClassName(\r\n\t\t\t\tthis._options.selectors.resetSearchTextInputElements,\r\n\t\t\t),\r\n\t\t);\r\n\r\n\t\tthis.tags.forEach((tag) => {\r\n\r\n\t\t\t// if (!hasClass(tag, this._options.selectors.selectTag)) {}\r\n\t\t\ttag.addEventListener('click', () => this.toggleTag(tag));\r\n\r\n\t\t});\r\n\r\n\t\tif (this.searchTextInput != null) {\r\n\t\t\tthis.searchTextButton = this.searchTextInput.parentElement.getElementsByClassName(\r\n\t\t\t\tthis._options.selectors.searchButton,\r\n\t\t\t)[0] as HTMLElement;\r\n\r\n\t\t\tthis.searchTextInput.addEventListener('keypress', (e) => {\r\n\t\t\t\tconst key = e.which || e.keyCode;\r\n\t\t\t\tif (key === 13) {\r\n\t\t\t\t\t// 13 is enter\r\n\t\t\t\t\tthis.loadFilterElements();\r\n\t\t\t\t\tif (this.searchTextInput != null) {\r\n\t\t\t\t\t\tthis.toggleReset(true);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tthis.toggleReset(false);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tif (this.searchTextButton != null) {\r\n\t\t\t\tthis.searchTextButton.addEventListener('click', () =>\r\n\t\t\t\t\tthis.loadFilterElements(),\r\n\t\t\t\t);\r\n\t\t\t}\r\n\r\n\t\t\tif (location.search.length > 0 && this.searchTextButton != null) {\r\n\t\t\t\tconst searchValues = location.search.substring(1).split('=');\r\n\t\t\t\tfor (const index in searchValues) {\r\n\t\t\t\t\tif (searchValues[index] === this._options.searchValueText) {\r\n\t\t\t\t\t\tlet searchTextValue = searchValues[Number(index) + 1];\r\n\t\t\t\t\t\tif (\r\n\t\t\t\t\t\t\tsearchTextValue !== null &&\r\n\t\t\t\t\t\t\tsearchTextValue !== ''\r\n\t\t\t\t\t\t) {\r\n\t\t\t\t\t\t\tsearchTextValue = decodeURIComponent(\r\n\t\t\t\t\t\t\t\tsearchTextValue,\r\n\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tthis.searchTextInput.value = searchTextValue;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tconst query = window.location.search.substring(1);\r\n\r\n\t\t\t\t// is there anything there ?\r\n\t\t\t\tif (query.length) {\r\n\t\t\t\t\t// are the new history methods available ?\r\n\t\t\t\t\tif (\r\n\t\t\t\t\t\twindow.history !== undefined &&\r\n\t\t\t\t\t\twindow.history.pushState !== undefined\r\n\t\t\t\t\t) {\r\n\t\t\t\t\t\t// if pushstate exists, add a new state the the history, this changes the url without reloading the page\r\n\t\t\t\t\t\twindow.history.pushState(\r\n\t\t\t\t\t\t\t{},\r\n\t\t\t\t\t\t\tdocument.title,\r\n\t\t\t\t\t\t\twindow.location.pathname,\r\n\t\t\t\t\t\t);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (this.selects && this.selects.length > 0) {\r\n\t\t\tthis.selects.forEach((select) => {\r\n\t\t\t\tselect.addEventListener('change', this.onChange);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif (this.allTags && this.allTags.length > 0) {\r\n\t\t\tthis.allTags.forEach((allTag) =>\r\n\t\t\t\tallTag.addEventListener('click', () =>\r\n\t\t\t\t\tthis.allTagClick(\r\n\t\t\t\t\t\tgetParentWithClass(\r\n\t\t\t\t\t\t\tallTag,\r\n\t\t\t\t\t\t\t'js-filter-tags-dropdown',\r\n\t\t\t\t\t\t),\r\n\t\t\t\t\t),\r\n\t\t\t\t),\r\n\t\t\t);\r\n\t\t}\r\n\r\n\t\tif (\r\n\t\t\tthis.resetAllActiveTagsElements &&\r\n\t\t\tthis.resetAllActiveTagsElements.length > 0\r\n\t\t) {\r\n\t\t\tthis.resetAllActiveTagsElements.forEach((resetTags) =>\r\n\t\t\t\tresetTags.addEventListener('click', () => {\r\n\t\t\t\t\tthis.resetAllActiveTags();\r\n\t\t\t\t\tthis.clearSpacer();\r\n\t\t\t\t},\r\n\t\t\t\t),\r\n\t\t\t);\r\n\t\t}\r\n\r\n\t\tif (\r\n\t\t\tthis.resetSearchTextInputElements &&\r\n\t\t\tthis.resetSearchTextInputElements.length > 0\r\n\t\t) {\r\n\t\t\tthis.resetSearchTextInputElements.forEach((resetTags) =>\r\n\t\t\t\tresetTags.addEventListener('click', () => {\r\n\t\t\t\t\tthis.resetSearchTextInput();\r\n\t\t\t\t},\r\n\t\t\t\t),\r\n\t\t\t);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate clearSpacer() {\r\n\t\tthis.categorySpacer.innerHTML = this.categorySpacer.getAttribute('data-placeholder');\r\n\t}\r\n\r\n\tprivate toggleMobileFilter() {\r\n\t\tconst active = true;\r\n\t\tif (this.mobileFilterWrapper != null) {\r\n\t\t\tif (this.getTagsLocationHash() !== '/') {\r\n\t\t\t\tif (!hasClass(this.mobileFilterWrapper, 'is--active')) {\r\n\t\t\t\t\taddClass(this.mobileFilterWrapper, 'is--active');\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tif (hasClass(this.mobileFilterWrapper, 'is--active')) {\r\n\t\t\t\t\tremoveClass(this.mobileFilterWrapper, 'is--active');\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprivate onChange(event: Event) {\r\n\t\tthis.updateSelectTag(event.target as HTMLSelectElement);\r\n\t}\r\n\r\n\tprivate initContentFilter() {\r\n\t\tconst that = this;\r\n\t\tif (this.contentElement != null) {\r\n\t\t\tconst newSelects = Array.from(\r\n\t\t\t\tthis.contentElement.getElementsByClassName(\r\n\t\t\t\t\tthis._options.selectors.selects,\r\n\t\t\t\t),\r\n\t\t\t);\r\n\t\t\tconst newTags = Array.from(\r\n\t\t\t\tthis.contentElement.getElementsByClassName(\r\n\t\t\t\t\tthis._options.selectors.tag,\r\n\t\t\t\t),\r\n\t\t\t);\r\n\r\n\t\t\tif (newTags && newTags.length > 0) {\r\n\t\t\t\tnewTags.forEach((tag) => {\r\n\t\t\t\t\tif (!hasClass(tag, this._options.selectors.selectTag)) {\r\n\t\t\t\t\t\ttag.addEventListener('click', () =>\r\n\t\t\t\t\t\t\tthis.toggleTag(tag),\r\n\t\t\t\t\t\t);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tthat.tags.push(tag);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tif (newSelects && newSelects.length > 0) {\r\n\t\t\t\tnewSelects.forEach((select) => {\r\n\t\t\t\t\tselect.addEventListener('change', () =>\r\n\t\t\t\t\t\tthis.updateSelectTag(select),\r\n\t\t\t\t\t);\r\n\t\t\t\t\tthat.selects.push(select);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprivate loadFilterElements(setPageDefault: boolean = true, loadMore: boolean = false) {\r\n\t\tif (setPageDefault) {\r\n\t\t\tthis.setPageToDefault();\r\n\t\t}\r\n\t\tconst searchText =\r\n\t\t\tthis.searchTextInput != null ? this.searchTextInput.value : '';\r\n\r\n\t\tconst dataSearch =\r\n\t\t\t'id=' +\r\n\t\t\tthis.wrapperId +\r\n\t\t\t'&filter=' +\r\n\t\t\tthis.getFilters() +\r\n\t\t\t'&pagingSize=' +\r\n\t\t\tthis.pagingSize +\r\n\t\t\t'&page=' +\r\n\t\t\tthis.page +\r\n\t\t\t'&searchText=' +\r\n\t\t\tsearchText;\r\n\r\n\t\t// this.contentElement.parentElement.style.overflow = 'hidden';\r\n\r\n\t\t// Todo: Loader Button add next to more button\r\n\t\tif (loadMore) {\r\n\t\t\tif (this.page >= 2) {\r\n\t\t\t\tthis.moreButton = document.querySelector('.js-filter__page-next');\r\n\t\t\t\tthis.moreButton.innerHTML = 'lädt';\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tthis.contentElement.innerHTML = this._options.loading.contentLoading;\r\n\t\t}\r\n\r\n\t\tfetch('/umbraco/surface/' + this.contentLocation, {\r\n\t\t\tmethod: 'POST',\r\n\t\t\theaders: {\r\n\t\t\t\t'Content-Type': 'application/x-www-form-urlencoded',\r\n\t\t\t\t'accept-language': this.language,\r\n\t\t\t\t// todo: why? if we change to a api controller we don't have this problem...\r\n\t\t\t\t'X-Requested-With': 'XMLHttpRequest', // otherwise accept-language is ignored\r\n\t\t\t},\r\n\t\t\tbody: dataSearch,\r\n\t\t\tcredentials: 'include',\r\n\t\t})\r\n\t\t\t.then((response) => {\r\n\t\t\t\tconst contentType = response.headers.get('content-type');\r\n\t\t\t\tif (contentType && contentType.includes('text/html')) {\r\n\t\t\t\t\treturn response.text();\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t\t.then((data) => {\r\n\t\t\t\tif (data != null && data.length > 0) {\r\n\t\t\t\t\tif (loadMore) {\r\n\t\t\t\t\t\tif (this.page >= 2) {\r\n\t\t\t\t\t\t\tthis.moreButton.remove();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tthis.contentElement.innerHTML = this.contentElement.innerHTML + data;\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tthis.contentElement.innerHTML = data;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tthis.contentElement.removeAttribute('style');\r\n\t\t\t\t\tthis.setPreviousNextJumpPageEvents();\r\n\t\t\t\t\tthis.initContentFilter();\r\n\t\t\t\t\tthis.reinitFilter();\r\n\r\n\t\t\t\t\tthis.toggleMobileFilter();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t}\r\n\r\n\tprivate loadPreviousPage(event: any) {\r\n\t\tevent.preventDefault();\r\n\t\tthis.page = this.page - 1 >= 1 ? this.page - 1 : 1;\r\n\t\tthis.loadFilterElements(false, false);\r\n\t\twindow.scrollTo(0, 0);\r\n\t}\r\n\r\n\tprivate loadNextPage(event: any) {\r\n\t\tevent.preventDefault();\r\n\t\tthis.page = this.page + 1;\r\n\t\tthis.loadFilterElements(false, false);\r\n\t\twindow.scrollTo(0, 0);\r\n\t}\r\n\r\n\tprivate loadJumpPage(event: any) {\r\n\t\tevent.preventDefault();\r\n\t\tconst element = event.target || event.currentTarget;\r\n\t\tthis.page = Number(\r\n\t\t\telement.getAttribute(this._options.paging.pageJumpAttribute),\r\n\t\t);\r\n\t\tthis.loadFilterElements(false, false);\r\n\t\twindow.scrollTo(0, 0);\r\n\t}\r\n\r\n\tprivate setPreviousNextJumpPageEvents() {\r\n\t\tconst pageBack = Array.from(\r\n\t\t\tthis.contentElement.getElementsByClassName(\r\n\t\t\t\tthis._options.paging.pageBack,\r\n\t\t\t),\r\n\t\t);\r\n\t\tconst pageNext = Array.from(\r\n\t\t\tthis.contentElement.getElementsByClassName(\r\n\t\t\t\tthis._options.paging.pageNext,\r\n\t\t\t),\r\n\t\t);\r\n\r\n\t\tconst pageJump = Array.from(\r\n\t\t\tthis.contentElement.getElementsByClassName(\r\n\t\t\t\tthis._options.paging.pageJump,\r\n\t\t\t),\r\n\t\t);\r\n\r\n\t\tif (pageBack.length > 0) {\r\n\t\t\tpageBack.forEach((pageStep) =>\r\n\t\t\t\tpageStep.addEventListener('click', (e) =>\r\n\t\t\t\t\tthis.loadPreviousPage(e),\r\n\t\t\t\t),\r\n\t\t\t);\r\n\t\t}\r\n\t\tif (pageNext.length > 0) {\r\n\t\t\tpageNext.forEach((pageStep) =>\r\n\t\t\t\tpageStep.addEventListener('click', (e) => this.loadNextPage(e),\r\n\t\t\t\t),\r\n\t\t\t);\r\n\t\t}\r\n\r\n\t\tif (pageJump.length > 0) {\r\n\t\t\tpageJump.forEach((pageStep) =>\r\n\t\t\t\tpageStep.addEventListener('click', (e) => this.loadJumpPage(e)),\r\n\t\t\t);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate setPageToDefault() {\r\n\t\tthis.page = 1;\r\n\t}\r\n\r\n\tprivate filter() {\r\n\t\tthis.reinitFilter();\r\n\t\tthis.loadFilterElements();\r\n\t}\r\n\r\n\tprivate toggleReset(state: boolean) {\r\n\t\tif (state) {\r\n\t\t\tthis.resetAllActiveTagsElements.forEach((resetTags) => {\r\n\t\t\t\tif (!hasClass(resetTags, 'is--active')) {\r\n\t\t\t\t\taddClass(resetTags, 'is--active');\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t} else {\r\n\t\t\tthis.resetAllActiveTagsElements.forEach((resetTags) => {\r\n\t\t\t\tif (hasClass(resetTags, 'is--active')) {\r\n\t\t\t\t\tremoveClass(resetTags, 'is--active');\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tprivate reinitFilter() {\r\n\t\tthis.activeTags = this.getTagsFromLocationHash();\r\n\t\tif (\r\n\t\t\tthis.resetAllActiveTagsElements &&\r\n\t\t\tthis.resetAllActiveTagsElements.length > 0\r\n\t\t) {\r\n\t\t\tif (this.activeTags.length > 0 || this.searchTextInput.value !== '') {\r\n\t\t\t\tthis.toggleReset(true);\r\n\t\t\t} else {\r\n\t\t\t\tthis.toggleReset(false);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.filters = [];\r\n\t\tthis.setActiveTagsClasses();\r\n\t}\r\n\r\n\tprivate setActiveTagsClasses() {\r\n\t\tthis.tags.forEach((tag) => {\r\n\t\t\tconst tagsDropdown = getParentWithClass(\r\n\t\t\t\ttag as HTMLElement,\r\n\t\t\t\tthis._options.selectors.tagsDropdown,\r\n\t\t\t);\r\n\t\t\tif (tagsDropdown != null) {\r\n\t\t\t\tif (hasClass(tag, this._options.selectors.tagActive)) {\r\n\t\t\t\t\taddClass(tag.parentElement, this._options.classes.hidden);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tremoveClass(\r\n\t\t\t\t\t\ttag.parentElement,\r\n\t\t\t\t\t\tthis._options.classes.hidden,\r\n\t\t\t\t\t);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (this.isTagActive(tag)) {\r\n\t\t\t\tif (tagsDropdown != null) {\r\n\t\t\t\t\tthis.deactivateAllTag(tagsDropdown);\r\n\t\t\t\t} else {\r\n\t\t\t\t\taddClass(tag, this._options.classes.active);\r\n\t\t\t\t\taddClass(tag.parentElement, this._options.classes.active);\r\n\t\t\t\t\tif (this.isSelectOption(tag)) {\r\n\t\t\t\t\t\t(tag.parentElement).selectedIndex = (tag).index;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tthis.addTagToFilters(tag);\r\n\t\t\t} else {\r\n\t\t\t\tif (tagsDropdown != null) {\r\n\t\t\t\t\tconst allTagsActive = Array.from(\r\n\t\t\t\t\t\ttagsDropdown.getElementsByClassName(\r\n\t\t\t\t\t\t\tthis._options.selectors.tag +\r\n\t\t\t\t\t\t\t' ' +\r\n\t\t\t\t\t\t\tthis._options.selectors.tagActive,\r\n\t\t\t\t\t\t),\r\n\t\t\t\t\t).filter(\r\n\t\t\t\t\t\t(tag) =>\r\n\t\t\t\t\t\t\thasClass(\r\n\t\t\t\t\t\t\t\ttag.parentElement,\r\n\t\t\t\t\t\t\t\tthis._options.classes.hidden,\r\n\t\t\t\t\t\t\t) !== true,\r\n\t\t\t\t\t);\r\n\t\t\t\t\tif (allTagsActive.length === 0) {\r\n\t\t\t\t\t\tthis.activateAllTag(tagsDropdown);\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tremoveClass(tag, this._options.classes.active);\r\n\t\t\t\t\tremoveClass(tag.parentElement, this._options.classes.active);\r\n\t\t\t\t}\r\n\t\t\t\tthis.removeTagFromFilters(tag);\r\n\t\t\t}\r\n\t\t});\r\n\t\tthis.activeTags = this.filters;\r\n\t\tlet newHash = this.getTagsLocationHash();\r\n\r\n\t\tif (newHash && newHash.length > 1) {\r\n\t\t\tlocation.hash = newHash;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate getTagsFromLocationHash(): Array {\r\n\t\treturn decodeURI(location.hash)\r\n\t\t\t.split('/')\r\n\t\t\t.filter((o) => ['', '#'].indexOf(o) === -1);\r\n\t}\r\n\r\n\tprivate getTagsLocationHash(): string {\r\n\t\treturn '/' + this.activeTags.join('/');\r\n\t}\r\n\r\n\tprivate toggleTag(tag: Element): void {\r\n\t\tthis.contentElement.style.minHeight = this.contentElement.scrollHeight.toString() + 'px';\r\n\t\tthis.contentElement.innerHTML = '';\r\n\r\n\t\tconst doActivateTag = !this.isTagActive(tag);\r\n\t\tconst tagsDropdown = getParentWithClass(\r\n\t\t\ttag as HTMLElement,\r\n\t\t\tthis._options.selectors.tagsDropdown,\r\n\t\t);\r\n\t\tif (tagsDropdown != null) {\r\n\t\t\tthis.deactivateActiveTags(tagsDropdown);\r\n\t\t\tif (doActivateTag) {\r\n\t\t\t\tthis.activateTag(tag);\r\n\t\t\t} else {\r\n\t\t\t\tthis.deactivateTag(tag);\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tif (doActivateTag) {\r\n\t\t\t\tthis.activateActiveTag(tag);\r\n\t\t\t} else {\r\n\t\t\t\tif (tag.getAttribute('data-type') === 'single') {\r\n\t\t\t\t\tif (this.categorySpacer) {\r\n\t\t\t\t\t\tthis.clearSpacer();\r\n\t\t\t\t\t}\r\n\t\t\t\t\tthis.resetAllActiveTags();\r\n\t\t\t\t\tthis.activeTags = [];\r\n\t\t\t\t}\r\n\t\t\t\tthis.deactivateActiveTag(tag);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprivate updateSelectTag(select: Element): void {\r\n\t\tconst selectMenu = select as HTMLSelectElement;\r\n\t\tconst selectedIndex = selectMenu.selectedIndex;\r\n\t\tconst selectedTag = selectMenu.options[selectedIndex] as Element;\r\n\t\tthis.deactivateActiveTags(select);\r\n\t\tif (selectedTag != null) {\r\n\t\t\tthis.activateActiveTag(selectedTag);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate resetSearchTextInput() {\r\n\t\tif (this.searchTextInput) {\r\n\t\t\tthis.searchTextInput.value = '';\r\n\t\t}\r\n\t\tthis.loadFilterElements();\r\n\t}\r\n\r\n\tprivate resetAllActiveTags(): void {\r\n\t\tthis.filters = [];\r\n\t\tlocation.hash = '';\r\n\r\n\t\tthis.selects.forEach((select) => {\r\n\t\t\t(select as HTMLSelectElement).selectedIndex = 0;\r\n\t\t});\r\n\t\tif (this.searchTextInput) {\r\n\t\t\tthis.searchTextInput.value = '';\r\n\t\t}\r\n\t\tthis.loadFilterElements();\r\n\t}\r\n\r\n\tprivate isSelectOption(tag: Element): boolean {\r\n\t\treturn this.selects.indexOf(tag.parentElement) > -1;\r\n\t}\r\n\r\n\tprivate deactivateTag(tag: Element) {\r\n\t\tconst tagValue = this.getTagValue(tag);\r\n\t\tif (tagValue.length > 0) {\r\n\t\t\tconst tagValueIndex = this.getTagValueIndex(tagValue);\r\n\t\t\tif (tagValueIndex > -1) {\r\n\t\t\t\tthis.activeTags.splice(tagValueIndex, 1);\r\n\t\t\t\tlocation.hash = this.getTagsLocationHash();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprivate createFilterNode(tag: Element) {\r\n\t\tconst tagValue = this.getTagValue(tag);\r\n\r\n\t\tconst filterNodes = getChildrenWithClass(this.activeFilter, 'js-filter__active__tag');\r\n\t\tlet state = false;\r\n\t\tfilterNodes.forEach((node) => {\r\n\t\t\tif (!state) {\r\n\t\t\t\tif (node.getAttribute('data-filterValue') === tagValue) {\r\n\t\t\t\t\tstate = true;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif (!state) {\r\n\r\n\t\t\tconst tagName = tag.getAttribute('data-name');\r\n\t\t\tconst filterNode = document.createElement('div');\r\n\t\t\tfilterNode.classList.add('js-filter__active__tag');\r\n\t\t\tfilterNode.classList.add('c-filter__tag');\r\n\t\t\tfilterNode.setAttribute('data-filterValue', tagValue);\r\n\r\n\t\t\tconst filtertext = document.createTextNode(tagName);\r\n\t\t\tfilterNode.appendChild(filtertext);\r\n\r\n\t\t\tconst icon = document.createElement('i');\r\n\t\t\ticon.classList.add('fas');\r\n\t\t\ticon.classList.add('fa-times');\r\n\t\t\tfilterNode.appendChild(icon);\r\n\r\n\t\t\tfilterNode.addEventListener('click', () => this.toggleFilterTag(tag));\r\n\r\n\t\t\tthis.activeFilter.appendChild(filterNode);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate removeFilterNode(tagValue) {\r\n\t\tconst filterNodes = getChildrenWithClass(this.activeFilter, 'js-filter__active__tag');\r\n\r\n\t\tfilterNodes.forEach((node) => {\r\n\t\t\tif (node.getAttribute('data-filterValue') === tagValue) {\r\n\t\t\t\tthis.activeFilter.removeChild(node);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tprivate toggleFilterTag(tag: Element) {\r\n\r\n\t\tif (tag.getAttribute('data-type') === 'single') {\r\n\t\t\tconst filterLists = Array.from(document.getElementsByClassName('js-filter-list')) as HTMLElement[];\r\n\t\t\tfilterLists.forEach((list) => {\r\n\t\t\t\tif (hasClass(list, 'is--active')) {\r\n\t\t\t\t\tremoveClass(list, 'is--active');\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t\tthis.toggleTag(tag);\r\n\t}\r\n\r\n\tprivate activateActiveTag(tag: Element) {\r\n\r\n\t\tif (tag.getAttribute('data-type') === 'single') {\r\n\t\t\tif (this.categorySpacer) {\r\n\t\t\t\tthis.categorySpacer.innerHTML = tag.getAttribute('data-name');\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\taddClass(tag, this._options.classes.active);\r\n\t\tthis.activateTag(tag);\r\n\t}\r\n\r\n\tprivate activateTag(tag: Element) {\r\n\r\n\t\tconst tagValue = this.getTagValue(tag);\r\n\t\tif (tag.getAttribute('data-type') === 'single') {\r\n\t\t\tthis.activeTags = [];\r\n\t\t\tlocation.hash = '';\r\n\t\t\t// this.resetAllActiveTags();\r\n\t\t}\r\n\r\n\t\tif (tagValue.length > 0) {\r\n\t\t\tthis.activeTags.push(tagValue);\r\n\t\t\tlocation.hash = this.getTagsLocationHash();\r\n\t\t\tthis.createFilterNode(tag);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate deactivateActiveTags(tagsDropdown: Element): void {\r\n\r\n\t\tconst allTagsActive = Array.from(\r\n\t\t\ttagsDropdown.getElementsByClassName(\r\n\t\t\t\tthis._options.selectors.tag +\r\n\t\t\t\t' ' +\r\n\t\t\t\tthis._options.selectors.tagActive,\r\n\t\t\t),\r\n\t\t).filter(\r\n\t\t\t(tag) =>\r\n\t\t\t\thasClass(tag.parentElement, this._options.classes.hidden) !== true,\r\n\t\t);\r\n\t\tallTagsActive.forEach((tag) => this.deactivateTag(tag));\r\n\t\tconst tagsActive = Array.from(\r\n\t\t\ttagsDropdown.getElementsByClassName(\r\n\t\t\t\tthis._options.selectors.tag + ' ' + this._options.classes.active,\r\n\t\t\t),\r\n\t\t);\r\n\t\ttagsActive.forEach((tag) => this.deactivateActiveTag(tag));\r\n\t}\r\n\r\n\tprivate deactivateActiveTag(tag: Element): void {\r\n\t\tremoveClass(tag.parentElement, this._options.classes.active);\r\n\t\tremoveClass(tag, this._options.classes.active);\r\n\t\tthis.deactivateTag(tag);\r\n\t\tthis.removeFilterNode(this.getTagValue(tag));\r\n\t}\r\n\r\n\tprivate allTagClick(tagsDropdown: Element) {\r\n\t\tthis.deactivateActiveTags(tagsDropdown);\r\n\t\tthis.activateAllTag(tagsDropdown as HTMLElement);\r\n\t}\r\n\r\n\tprivate activateAllTag(tagsDropdown: HTMLElement) {\r\n\t\tif (this.allTags != null && this.allTags.length) {\r\n\t\t\tconst allTag = tagsDropdown.getElementsByClassName(\r\n\t\t\t\tthis._options.selectors.tagAll,\r\n\t\t\t)[0];\r\n\t\t\tconst allTagActive = tagsDropdown.getElementsByClassName(\r\n\t\t\t\tthis._options.selectors.tagAllActive,\r\n\t\t\t)[0];\r\n\t\t\tconst dropdownToggleBtn = getParentWithClass(\r\n\t\t\t\ttagsDropdown,\r\n\t\t\t\tthis._options.selectors.dropdown,\r\n\t\t\t).getElementsByClassName(this._options.selectors.dropdownToggle)[0];\r\n\t\t\tconst filterAll = this.getTagValue(allTag);\r\n\r\n\t\t\tif (filterAll !== 'undefined' && filterAll !== '') {\r\n\t\t\t\tthis.addTagToFilters(allTag);\r\n\t\t\t}\r\n\t\t\taddClass(allTag.parentElement, this._options.classes.hidden);\r\n\t\t\tremoveClass(\r\n\t\t\t\tallTagActive.parentElement,\r\n\t\t\t\tthis._options.classes.hidden,\r\n\t\t\t);\r\n\t\t\tremoveClass(dropdownToggleBtn, this._options.classes.active);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate deactivateAllTag(tagsDropdown: HTMLElement) {\r\n\t\tif (this.allTags != null && this.allTags.length) {\r\n\t\t\tconst allTag = tagsDropdown.getElementsByClassName(\r\n\t\t\t\tthis._options.selectors.tagAll,\r\n\t\t\t)[0];\r\n\t\t\tconst allTagActive = tagsDropdown.getElementsByClassName(\r\n\t\t\t\tthis._options.selectors.tagAllActive,\r\n\t\t\t)[0];\r\n\t\t\tconst dropdownToggleBtn = getParentWithClass(\r\n\t\t\t\ttagsDropdown,\r\n\t\t\t\tthis._options.selectors.dropdown,\r\n\t\t\t).getElementsByClassName(this._options.selectors.dropdownToggle)[0];\r\n\t\t\tconst filterAll = this.getTagValue(allTag);\r\n\r\n\t\t\tif (filterAll !== 'undefined' && filterAll !== '') {\r\n\t\t\t\tthis.removeTagFromFilters(allTag);\r\n\t\t\t}\r\n\t\t\tremoveClass(allTag.parentElement, this._options.classes.hidden);\r\n\t\t\taddClass(allTagActive.parentElement, this._options.classes.hidden);\r\n\t\t\taddClass(dropdownToggleBtn, this._options.classes.active);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate isTagActive(tag: Element): boolean {\r\n\t\treturn this.getTagValueIndex(this.getTagValue(tag)) > -1;\r\n\t}\r\n\r\n\tprivate getTagValueIndex(tagValue: string): number {\r\n\t\treturn this.activeTags.indexOf(tagValue);\r\n\t}\r\n\r\n\tprivate getTagValue(tag: Element): string {\r\n\t\treturn tag.getAttribute(this._options.tagValue);\r\n\t}\r\n\r\n\tprivate getFilters(): string {\r\n\t\treturn this.filters.toString();\r\n\t}\r\n\r\n\tprivate addTagToFilters(tag: Element) {\r\n\t\tconst tagValue = this.getTagValue(tag);\r\n\r\n\t\tthis.createFilterNode(tag);\r\n\r\n\t\tif (tagValue !== 'undefined' && tagValue !== '') {\r\n\t\t\tif (this.filters.indexOf(tagValue) < 0) {\r\n\t\t\t\tthis.filters.push(tagValue);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\tprivate removeTagFromFilters(tag: Element) {\r\n\t\tconst tagValue = this.getTagValue(tag);\r\n\r\n\t\tthis.removeFilterNode(tagValue);\r\n\r\n\t\tif (tagValue !== 'undefined' && tagValue !== '') {\r\n\t\t\tconst indexFilter = this.filters.indexOf(tagValue);\r\n\r\n\t\t\tif (indexFilter > -1) {\r\n\t\t\t\tthis.filters.splice(indexFilter, 1);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\nexport default function filterpage(\r\n\twrapper: HTMLElement,\r\n\toptions?: FilterPageOptions,\r\n): FilterPage {\r\n\treturn new FilterPage(wrapper, options);\r\n}\r\n","import { addClass } from '@opten/dom/add-class';\r\nimport { hasClass } from '@opten/dom/has-class';\r\nimport { removeClassFactory, removeClass } from '@opten/dom/remove-class';\r\nimport { Component } from '@opten/compiler/metadata/component';\r\n\r\n@Component({ className: 'js-filter-list-picker', observe: true })\r\n\r\nexport class FilterSwitchComponent {\r\n\tprivate filterLists: HTMLElement[];\r\n\tprivate resetFilter: HTMLElement[];\r\n\tprivate resetFilterTag: HTMLElement[];\r\n\r\n\tconstructor(private element: HTMLElement) {\r\n\r\n\t\tthis.filterLists = Array.from(document.getElementsByClassName('js-filter-list')) as HTMLElement[];\r\n\t\tthis.resetFilter = Array.from(document.getElementsByClassName('js-filter__reset-all')) as HTMLElement[];\r\n\t\tthis.resetFilterTag = Array.from(document.getElementsByClassName('js-filter__active__tag')) as HTMLElement[];\r\n\r\n\t\t// on init\r\n\t\tif (hasClass(this.element, 'is--active')) {\r\n\t\t\tthis.showDetailedFilter(this.element);\r\n\t\t}\r\n\t\tthis.element.addEventListener('click', () => this.showDetailedFilter(this.element));\r\n\r\n\t\tthis.resetFilter.forEach((reset) => {\r\n\t\t\treset.addEventListener('click', () => this.resetFitler());\r\n\t\t});\r\n\r\n\t\tthis.resetFilterTag.forEach((reset) => {\r\n\t\t\treset.addEventListener('click', () => this.resetFitler());\r\n\t\t});\r\n\t}\r\n\r\n\tprivate resetFitler() {\r\n\t\tthis.filterLists.forEach((list) => {\r\n\t\t\tif (hasClass(list, 'is--active')) {\r\n\t\t\t\tremoveClass(list, 'is--active');\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tprivate showDetailedFilter(element: HTMLElement) {\r\n\t\tthis.filterLists.forEach((filterList) => {\r\n\t\t\tif (filterList.getAttribute('data-category') === element.getAttribute('data-category')) {\r\n\t\t\t\tif (!hasClass(element, 'is--active')) {\r\n\t\t\t\t\tremoveClass(filterList, 'is--active');\r\n\t\t\t\t} else {\r\n\t\t\t\t\taddClass(filterList, 'is--active');\r\n\t\t\t\t}\r\n\r\n\t\t\t} else {\r\n\t\t\t\tif (hasClass(filterList, 'is--active')) {\r\n\t\t\t\t\tremoveClass(filterList, 'is--active');\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n}\r\n","import { addClass } from '@opten/dom/add-class';\r\nimport { hasClass } from '@opten/dom/has-class';\r\nimport { removeClassFactory } from '@opten/dom/remove-class';\r\nimport { Component } from '@opten/compiler/metadata/component';\r\n\r\n@Component({ className: 'js-lightswitch-nav-item', observe: true })\r\n@Component({ className: 'js-lightswitch-item', observe: true })\r\n\r\nexport class LightSwitchComponent {\r\n\r\n\tprivate indicator: HTMLElement;\r\n\tprivate amount: number;\r\n\r\n\tconstructor(private element: HTMLElement) {\r\n\r\n\t\tconst allNav = Array.from(document.getElementsByClassName('js-lightswitch-nav-item')) as HTMLElement[];\r\n\t\tconst allItemWrapper = Array.from(document.getElementsByClassName('js-lightswitch-content-wrapper')) as HTMLElement[];\r\n\r\n\t\tthis.amount = allNav.length;\r\n\r\n\t\tthis.indicator = document.getElementsByClassName('js-lightswitch-nav-indicator')[0] as HTMLElement;\r\n\t\tthis.indicator.style.width = (100 / this.amount) + '%';\r\n\r\n\t\taddClass(allNav[0], 'is-active');\r\n\r\n\t\tallItemWrapper.forEach((wrapper) => {\r\n\t\t\tconst allItem = Array.from(wrapper.getElementsByClassName('js-lightswitch-item')) as HTMLElement[];\r\n\t\t\taddClass(allItem[0], 'is-active');\r\n\t\t});\r\n\r\n\t\tallNav.forEach((item, i, items) => item.addEventListener(\r\n\t\t\t'click',\r\n\t\t\t() => this.changeStandNav(item, i, items, allItemWrapper),\r\n\t\t));\r\n\t}\r\n\r\n\tprivate changeStandNav(item: HTMLElement, i: number, allnav: Element[], allItemWrapper) {\r\n\t\tif (hasClass(item, 'is-active') === false) {\r\n\r\n\t\t\tconst position = (100 / this.amount) * i;\r\n\t\t\tthis.indicator.style.left = position + '%';\r\n\r\n\t\t\tallnav.forEach(removeClassFactory('is-active'));\r\n\t\t\taddClass(item, 'is-active');\r\n\t\t}\r\n\t\tthis.changeStandItem(i, allItemWrapper);\r\n\t}\r\n\r\n\tprivate changeStandItem(i, allItemWrapper) {\r\n\r\n\t\tallItemWrapper.forEach((wrapper) => {\r\n\t\t\tconst allItem = Array.from(wrapper.getElementsByClassName('js-lightswitch-item')) as HTMLElement[];\r\n\t\t\tallItem.forEach(removeClassFactory('is-active'));\r\n\t\t\taddClass(allItem[i], 'is-active');\r\n\t\t});\r\n\t}\r\n}\r\n","import { Component } from '@opten/compiler/metadata/component';\r\nimport { Collapse } from '@opten/collapse/initializer';\r\nimport { hasClass } from '@opten/dom/has-class';\r\nimport { addClass } from '@opten/dom/add-class';\r\nimport { removeClass } from '@opten/dom/remove-class';\r\nimport { getParentWithClass } from '@opten/dom/get-parent-with-class';\r\nimport { isAncestorOfClass } from '@opten/dom/is-ancestor-of-class';\r\nimport { scrollToId } from '@opten/scroll/scroll-to-id';\r\nimport dispatchCustomEvent from '@opten/events/dispatch-custom-event';\r\n\r\ndeclare const Modernizr: any;\r\n\r\n@Component({ className: 'js-collapse', observe: true })\r\nexport class Navbar {\r\n\r\n\tprivate navbarToggler: HTMLElement;\r\n\tprivate navbarWrapper: HTMLElement;\r\n\tprivate backTop: HTMLElement;\r\n\tprivate scrollToElements: HTMLElement[];\r\n\tprivate navbar: HTMLElement;\r\n\tprivate col: Collapse;\r\n\r\n\tconstructor(public element: HTMLElement) {\r\n\t\tthis.backTop = document.getElementsByClassName('js-back-top')[0] as HTMLElement;\r\n\t\tthis.scrollToElements = Array.from(document.getElementsByClassName('js-scroll-to')) as HTMLElement[];\r\n\t\tthis.navbar = document.getElementsByClassName('c-navbar')[0] as HTMLElement;\r\n\r\n\t\tthis.element.addEventListener('show.opten.collapse', () => this.toggleCollapse(true, this.element));\r\n\t\tthis.element.addEventListener('hide.opten.collapse', () => this.toggleCollapse(false, this.element));\r\n\r\n\t\tthis.scrollToElements.forEach((target) => {\r\n\t\t\ttarget.addEventListener('click', (e) => {\r\n\t\t\t\tthis.scrollTo(target.getAttribute('href'));\r\n\t\t\t});\r\n\t\t});\r\n\r\n\t\tthis.showBackTop();\r\n\t\twindow.addEventListener('scroll', () => {\r\n\t\t\tthis.showBackTop();\r\n\t\t});\r\n\t}\r\n\r\n\tprivate showBackTop() {\r\n\t\twindow.scrollY > 50 ? addClass(this.backTop, 'fade--show') : removeClass(this.backTop, 'fade--show');\r\n\t}\r\n\r\n\tprivate scrollTo(item) {\r\n\t\tif (item) {\r\n\t\t\tconst target = item.replace('#', '');\r\n\t\t\tif (document.getElementById(target)) {\r\n\t\t\t\tconst offset = (this.navbar.offsetHeight * -1);\r\n\t\t\t\tscrollToId(target, undefined, undefined, offset);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprivate toggleCollapse(state: Boolean, element: HTMLElement) {\r\n\r\n\t\tif (element.getAttribute('data-bind') === 'navbar') {\r\n\t\t\tif (state) {\r\n\t\t\t\taddClass(document.body, 'nav-open');\r\n\t\t\t} else {\r\n\t\t\t\tremoveClass(document.body, 'nav-open');\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (element.getAttribute('data-bind') === 'top-level') {\r\n\t\t\tif (state) {\r\n\t\t\t\taddClass(getParentWithClass(element, 'js-accordion'), 'is--active');\r\n\t\t\t} else {\r\n\t\t\t\tremoveClass(getParentWithClass(element, 'js-accordion'), 'is--active');\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t}\r\n\r\n}\r\n","import { Component } from '@opten/compiler/metadata/component';\r\nimport { Slider } from '@opten/slider';\r\nimport { SliderDotsResponsiveBehavior } from '@opten/slider/dots-responsive-behavior';\r\nimport { SliderArrowsResponsiveBehavior } from '@opten/slider/arrows-responsive-behavior';\r\n\r\n@Component({ className: 'js-slider' })\r\nexport class SliderCustom {\r\n\r\n\tconstructor(public element: HTMLElement) {\r\n\t\tconst behaviors = [new SliderDotsResponsiveBehavior(), new SliderArrowsResponsiveBehavior()];\r\n\r\n\t\tconst slider = new Slider(this.element, {\r\n\t\t\t// rewind: true,\r\n\t\t}, behaviors);\r\n\t\tslider.next.addEventListener('click', (e) => e.preventDefault());\r\n\t\tslider.prev.addEventListener('click', (e) => e.preventDefault());\r\n\t}\r\n}\r\n","import { Component } from '@opten/compiler/metadata/component';\r\nimport { debounce } from '@opten/reactive/debounce';\r\n\r\n@Component({ className: 'js-sticky-footer' })\r\nexport class StickyFooter {\r\n\tprivate defaultOffset: number;\r\n\tprivate footer: HTMLElement;\r\n\r\n\tconstructor(private element: HTMLElement) {\r\n\t\tthis.footer = document.querySelector('footer') as HTMLElement;\r\n\t\tthis.defaultOffset = parseFloat(window.getComputedStyle(this.element).marginBottom);\r\n\r\n\t\twindow.addEventListener('scroll', () => this.setPos());\r\n\t\twindow.addEventListener('resize', () => {\r\n\t\t\tdebounce(() => this.setPos(), 300);\r\n\t\t});\r\n\t}\r\n\r\n\tprivate setPos() {\r\n\t\tconst documentHeight = document.body.clientHeight;\r\n\t\tconst scrollBottom = window.scrollY + window.innerHeight;\r\n\t\tconst footerHeight = this.footer.clientHeight;\r\n\t\tlet offset = (scrollBottom) - (documentHeight - footerHeight + this.defaultOffset);\r\n\t\tif (offset < 0) {\r\n\t\t\toffset = 0;\r\n\t\t}\r\n\t\tthis.element.style.bottom = offset + 'px';\r\n\t}\r\n}\r\n","// extracted by mini-css-extract-plugin","import './main.scss';\r\nimport { loadPolyfillv2 } from '@opten/script/load-polyfill';\r\nimport { factory } from '@opten/compiler/factory';\r\nimport { debounce } from '@opten/reactive/debounce';\r\nimport { Component } from '@opten/compiler/metadata/component';\r\nimport { CollapseComponent } from '@opten/collapse';\r\nimport { FormField } from '@opten/forms/form-field';\r\n\r\nimport filterpage from './components/filterpage';\r\nimport { CookieBanner } from './components/cookie-banner';\r\nimport { Navbar } from './components/navbar';\r\nimport { StickyFooter } from './components/sticky-footer';\r\nimport { SliderCustom } from './components/slider';\r\nimport { LightSwitchComponent } from './components/lightswitch';\r\nimport { FilterSwitchComponent } from './components/filterswitch';\r\ndeclare const LazyLoad: any;\r\n\r\n@Component({ className: 'js-filter__page' })\r\nclass FilterPage {\r\n\tconstructor(private element: HTMLElement) {\r\n\t\tfilterpage(element);\r\n\t}\r\n}\r\n\r\nloadPolyfillv2(\r\n\t() => {\r\n\t\tfactory([\r\n\t\t\tCollapseComponent,\r\n\t\t\tFormField,\r\n\t\t\tCookieBanner,\r\n\t\t\tSliderCustom,\r\n\t\t\tStickyFooter,\r\n\t\t\tNavbar,\r\n\t\t\tFilterPage,\r\n\t\t\tLightSwitchComponent,\r\n\t\t\tFilterSwitchComponent,\r\n\t\t])(document.body);\r\n\r\n\t\tconst lazyLoadInstance = new LazyLoad({\r\n\t\t\telements_selector: '.lazyload',\r\n\t\t});\r\n\r\n\t\tsetViewportHeight();\r\n\t\twindow.addEventListener('resize', debounce(() => {\r\n\t\t\tsetViewportHeight();\r\n\t\t}, 100));\r\n\t},\r\n);\r\n\r\nfunction setViewportHeight() {\r\n\t// First we get the viewport height and we multiple it by 1% to get a value for a vh unit\r\n\tconst vh = window.innerHeight * 0.01;\r\n\t// Then we set the value in the --vh custom property to the root of the document\r\n\tdocument.documentElement.style.setProperty('--vh', `${vh}px`);\r\n}\r\n","export function linearTween(\r\n\ttimeElapsed: number,\r\n\tstart: number,\r\n\tdistance: number,\r\n\tduration: number,\r\n) {\r\n\treturn distance * timeElapsed / duration + start;\r\n}\r\n","import { Component } from '@opten/compiler/metadata/component';\r\nimport { Collapse } from './initializer';\r\n\r\n@Component({ className: 'js-collapse' })\r\nexport class CollapseComponent {\r\n\tcollapse: Collapse;\r\n\tconstructor(private element: HTMLElement) {\r\n\t\tthis.collapse = new Collapse(element, {});\r\n\t}\r\n}\r\n","import { addClass } from '@opten/dom/add-class';\r\nimport { hasClass } from '@opten/dom/has-class';\r\nimport { removeClass } from '@opten/dom/remove-class';\r\n\r\nimport { getSelectorElementFromElement } from '@opten/dom/get-selector-element-from-element';\r\nimport { addTransitionEndListener } from '@opten/transition/add-transition-end-listener';\r\n\r\nimport { eventNamespaceFactory } from '@opten/events/event-namespace-factory';\r\n\r\nconst stringCollapse = 'Collapse';\r\n\r\nexport interface CollapseOptions {\r\n\tcomponentClass?: string;\r\n\tactiveClass?: string;\r\n\tshowClass?: string;\r\n\tshowClassDesktop?: string;\r\n\tdesktopWidth?: number;\r\n\tcollapsingClass?: string;\r\n\tparentElement?: HTMLElement;\r\n\ttransitionDuration?: number;\r\n\tanimateProp?: 'height' | 'width' | false;\r\n\tisHideable?: boolean;\r\n\tcloseSiblings?: boolean;\r\n\tuseShowClassDesktop?: boolean;\r\n\tdataParentSelector?: string;\r\n\tdataTargetSelector?: string;\r\n\tdataToggleSelector?: string;\r\n\threfSelector?: string;\r\n}\r\n\r\nexport class Collapse {\r\n\tprivate options: CollapseOptions = {\r\n\t\tactiveClass: 'is-active',\r\n\t\tanimateProp: 'height',\r\n\t\tcollapsingClass: 'collapse--collapsing',\r\n\t\tcomponentClass: 'collapse',\r\n\t\tshowClass: 'collapse--show',\r\n\t\tshowClassDesktop: 'collapse--md-show',\r\n\t\tdesktopWidth: 1024,\r\n\t\ttransitionDuration: 600,\r\n\t\tisHideable: true,\r\n\t\tcloseSiblings: true,\r\n\t\tuseShowClassDesktop: false,\r\n\t\tdataParentSelector: 'data-parent',\r\n\t\tdataTargetSelector: 'data-target',\r\n\t\tdataToggleSelector: 'data-toggle',\r\n\t\threfSelector: 'href'\r\n\t};\r\n\r\n\tprivate parent: HTMLElement;\r\n\tprivate triggers: HTMLElement[];\r\n\r\n\t// TODO: Uggly naming\r\n\tget toggles(): HTMLElement[] {\r\n\t\treturn this.triggers;\r\n\t}\r\n\r\n\tprivate target: Element;\r\n\tprivate isTransitioning = false; // when true it will prevent click handlers\r\n\r\n\t// event names\r\n\tprivate eventNamespaceFn = eventNamespaceFactory('opten.collapse');\r\n\r\n\tconstructor(public element: HTMLElement, options?: CollapseOptions) {\r\n\t\tthis.options = {\r\n\t\t\t...this.options,\r\n\t\t\t...options\r\n\t\t};\r\n\r\n\t\tif (!this.options.parentElement) {\r\n\t\t\tthis.options.parentElement = getSelectorElementFromElement(\r\n\t\t\t\telement,\r\n\t\t\t\tthis.options.dataParentSelector,\r\n\t\t\t\tfalse\r\n\t\t\t);\r\n\t\t}\r\n\r\n\t\tthis.init();\r\n\t}\r\n\r\n\tisOpen() {\r\n\t\tif (\r\n\t\t\tthis.options.useShowClassDesktop &&\r\n\t\t\twindow.outerWidth >= this.options.desktopWidth &&\r\n\t\t\thasClass(this.element, this.options.showClassDesktop)\r\n\t\t) {\r\n\t\t\taddClass(this.element, this.options.showClass);\r\n\t\t}\r\n\t\tremoveClass(this.element, this.options.showClassDesktop);\r\n\t\treturn hasClass(this.element, this.options.showClass);\r\n\t}\r\n\r\n\ttoggle() {\r\n\t\tif (this.isOpen()) {\r\n\t\t\tif (this.options.isHideable) {\r\n\t\t\t\tthis.hide();\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tthis.show();\r\n\t\t}\r\n\t}\r\n\r\n\tshow() {\r\n\t\tif (this.isTransitioning || this.isOpen()) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (this.options.closeSiblings && this.parent) {\r\n\t\t\tconst selector = `[${this.options.dataParentSelector}=\"#${\r\n\t\t\t\tthis.parent.id\r\n\t\t\t}\"]`;\r\n\t\t\tconst actives = Array.from(\r\n\t\t\t\tthis.parent.querySelectorAll(\r\n\t\t\t\t\t`${selector}.${this.options.showClass}, ${selector}.${\r\n\t\t\t\t\t\tthis.options.collapsingClass\r\n\t\t\t\t\t}`\r\n\t\t\t\t)\r\n\t\t\t).filter(active => active !== this.target);\r\n\r\n\t\t\tif (actives && actives.length) {\r\n\t\t\t\tconst anyTransitioning = actives.filter(active => {\r\n\t\t\t\t\tconst collapseInstance = active[stringCollapse] as Collapse;\r\n\t\t\t\t\treturn collapseInstance && collapseInstance.isTransitioning;\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif (anyTransitioning.length) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tactives.forEach(active =>\r\n\t\t\t\t\tCollapse.getInstance(active as HTMLElement).hide()\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis._handleShow(this.element, this.triggers);\r\n\t}\r\n\r\n\thide() {\r\n\t\tif (this.isTransitioning || !this.isOpen()) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis._handleClose(this.element, this.triggers);\r\n\t}\r\n\r\n\tdestroy() {\r\n\t\tconst element = this.element;\r\n\r\n\t\tif (element[stringCollapse]) {\r\n\t\t\telement[stringCollapse] = null;\r\n\r\n\t\t\tremoveClass(element, this.options.componentClass);\r\n\t\t\tremoveClass(element, this.options.collapsingClass);\r\n\t\t\tremoveClass(element, this.options.showClass);\r\n\r\n\t\t\tif (this.options.animateProp) {\r\n\t\t\t\telement.style[this.options.animateProp] = null;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprivate init() {\r\n\t\t// todo: only initalize once, like bootstrap does it?\r\n\t\tthis.triggers = Array.from(\r\n\t\t\tdocument.querySelectorAll(\r\n\t\t\t\t`[${this.options.hrefSelector}=\"#${this.element.id}\"], [${\r\n\t\t\t\t\tthis.options.dataTargetSelector\r\n\t\t\t\t}=\"#${this.element.id}\"]`\r\n\t\t\t)\r\n\t\t);\r\n\r\n\t\t// todo: why do we need that?\r\n\t\tconst toggles = Array.from(\r\n\t\t\tdocument.querySelectorAll(\r\n\t\t\t\t`[${this.options.dataToggleSelector}=\"collapse\"]`\r\n\t\t\t)\r\n\t\t);\r\n\t\tfor (const toggle of toggles) {\r\n\t\t\tconst target = getSelectorElementFromElement(\r\n\t\t\t\ttoggle,\r\n\t\t\t\tthis.options.dataTargetSelector\r\n\t\t\t);\r\n\t\t\tif (target !== null && target === this.element) {\r\n\t\t\t\tthis.target = target;\r\n\t\t\t\tthis.triggers.push(toggle as HTMLElement);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.parent = this.options.parentElement;\r\n\r\n\t\t// init\r\n\t\tif (!(stringCollapse in this.element)) {\r\n\t\t\t// prevent adding event handlers twice\r\n\t\t\tthis.triggers.forEach(trigger =>\r\n\t\t\t\ttrigger.addEventListener('click', this.handleClick, false)\r\n\t\t\t);\r\n\t\t}\r\n\r\n\t\tif (this.parent) {\r\n\t\t\tArray.from(\r\n\t\t\t\tthis.parent.querySelectorAll(\r\n\t\t\t\t\t`[${this.options.dataToggleSelector}=\"collapse\"][${\r\n\t\t\t\t\t\tthis.options.dataParentSelector\r\n\t\t\t\t\t}=\"#${this.parent.id}\"]`\r\n\t\t\t\t)\r\n\t\t\t).forEach(element => {\r\n\t\t\t\tthis._addAriaAndCollapsedClass(\r\n\t\t\t\t\tgetSelectorElementFromElement(\r\n\t\t\t\t\t\telement,\r\n\t\t\t\t\t\tthis.options.dataTargetSelector\r\n\t\t\t\t\t),\r\n\t\t\t\t\t[element]\r\n\t\t\t\t);\r\n\t\t\t});\r\n\t\t} else {\r\n\t\t\tthis._addAriaAndCollapsedClass(this.element, this.triggers);\r\n\t\t}\r\n\r\n\t\taddClass(this.element, this.options.componentClass);\r\n\r\n\t\tthis.element[stringCollapse] = this;\r\n\t}\r\n\r\n\tprivate handleClick = (event: Event) => {\r\n\t\t// preventDefault only for elements (which change the URL) not inside the collapsible element\r\n\t\tconst trigger = event && (event.currentTarget as HTMLElement);\r\n\t\tif (trigger && trigger.tagName === 'A') {\r\n\t\t\tevent.preventDefault();\r\n\t\t}\r\n\r\n\t\tconst target = getSelectorElementFromElement(\r\n\t\t\ttrigger,\r\n\t\t\tthis.options.dataTargetSelector\r\n\t\t);\r\n\t\tlet data = target[stringCollapse] as Collapse;\r\n\r\n\t\tif (!data) {\r\n\t\t\tdata = trigger[stringCollapse] as Collapse;\r\n\t\t}\r\n\r\n\t\tif (target) {\r\n\t\t\tCollapse.getInstance(target, data.options).toggle();\r\n\t\t}\r\n\t};\r\n\r\n\tprivate _handleShow(collapseElement: HTMLElement, triggers?: Element[]) {\r\n\t\tthis.eventNamespaceFn(collapseElement, 'show');\r\n\r\n\t\tremoveClass(collapseElement, this.options.componentClass);\r\n\t\taddClass(collapseElement, this.options.collapsingClass);\r\n\t\tif (this.options.animateProp) {\r\n\t\t\tcollapseElement.style[this.options.animateProp] =\r\n\t\t\t\tcollapseElement.scrollHeight + 'px';\r\n\t\t}\r\n\r\n\t\tif (triggers && triggers.length) {\r\n\t\t\ttriggers.forEach(trigger => {\r\n\t\t\t\taddClass(trigger, this.options.activeClass);\r\n\t\t\t\ttrigger.setAttribute('aria-expanded', 'true');\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tthis.isTransitioning = true;\r\n\r\n\t\taddTransitionEndListener(\r\n\t\t\tcollapseElement,\r\n\t\t\t() => {\r\n\t\t\t\tremoveClass(collapseElement, this.options.collapsingClass);\r\n\t\t\t\taddClass(collapseElement, this.options.componentClass);\r\n\t\t\t\taddClass(collapseElement, this.options.showClass);\r\n\r\n\t\t\t\tthis.isTransitioning = false;\r\n\t\t\t\tif (this.options.animateProp) {\r\n\t\t\t\t\tcollapseElement.style[this.options.animateProp] = null;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.eventNamespaceFn(collapseElement, 'shown');\r\n\t\t\t},\r\n\t\t\tthis.options.transitionDuration\r\n\t\t);\r\n\t}\r\n\r\n\tprivate _handleClose(collapseElement: HTMLElement, triggers?: Element[]) {\r\n\t\tthis.eventNamespaceFn(collapseElement, 'hide');\r\n\r\n\t\tif (this.options.animateProp) {\r\n\t\t\tcollapseElement.style[this.options.animateProp] =\r\n\t\t\t\tcollapseElement.scrollHeight + 'px';\r\n\t\t}\r\n\r\n\t\taddClass(collapseElement, this.options.collapsingClass);\r\n\t\tremoveClass(collapseElement, this.options.componentClass);\r\n\t\tremoveClass(collapseElement, this.options.showClass);\r\n\t\t// force reflow to enable transition\r\n\t\tcollapseElement.offsetWidth; // tslint:disable-line\r\n\r\n\t\tif (triggers && triggers.length) {\r\n\t\t\ttriggers.forEach(trigger => {\r\n\t\t\t\tconst target = getSelectorElementFromElement(\r\n\t\t\t\t\ttrigger,\r\n\t\t\t\t\tthis.options.dataTargetSelector\r\n\t\t\t\t);\r\n\r\n\t\t\t\tif (target !== null) {\r\n\t\t\t\t\tif (!hasClass(target, this.options.showClass)) {\r\n\t\t\t\t\t\tremoveClass(trigger, this.options.activeClass);\r\n\t\t\t\t\t\ttrigger.setAttribute('aria-expanded', 'false');\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tthis.isTransitioning = true;\r\n\t\tif (this.options.animateProp) {\r\n\t\t\tcollapseElement.style[this.options.animateProp] = null;\r\n\t\t}\r\n\r\n\t\taddTransitionEndListener(\r\n\t\t\tcollapseElement,\r\n\t\t\t() => {\r\n\t\t\t\tthis.isTransitioning = false;\r\n\r\n\t\t\t\tremoveClass(collapseElement, this.options.collapsingClass);\r\n\t\t\t\taddClass(collapseElement, this.options.componentClass);\r\n\r\n\t\t\t\tif (this.options.animateProp) {\r\n\t\t\t\t\tcollapseElement.style[this.options.animateProp] = null;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.eventNamespaceFn(collapseElement, 'hidden');\r\n\t\t\t},\r\n\t\t\tthis.options.transitionDuration\r\n\t\t);\r\n\t}\r\n\r\n\tprivate _addAriaAndCollapsedClass(element: Element, triggers: Element[]) {\r\n\t\tif (element) {\r\n\t\t\tconst isOpen = hasClass(element, this.options.showClass);\r\n\r\n\t\t\tif (triggers && triggers.length) {\r\n\t\t\t\ttriggers.forEach(trigger => {\r\n\t\t\t\t\tisOpen\r\n\t\t\t\t\t\t? addClass(trigger, this.options.activeClass)\r\n\t\t\t\t\t\t: removeClass(trigger, this.options.activeClass);\r\n\r\n\t\t\t\t\ttrigger.setAttribute(\r\n\t\t\t\t\t\t'aria-expanded',\r\n\t\t\t\t\t\tisOpen.toString().toLowerCase()\r\n\t\t\t\t\t);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tstatic getInstance(\r\n\t\telement: HTMLElement,\r\n\t\toptions?: CollapseOptions,\r\n\t\tcreate = true\r\n\t) {\r\n\t\tlet data = element[stringCollapse] as Collapse;\r\n\r\n\t\tif (!data && create) {\r\n\t\t\tdata = new Collapse(element, options);\r\n\t\t}\r\n\r\n\t\treturn data;\r\n\t}\r\n}\r\n\r\nexport function collapse(\r\n\telement: HTMLElement,\r\n\toptions?: CollapseOptions\r\n): Collapse {\r\n\tconsole.error(\r\n\t\t'collapse deprecated: use new Collapse(element, options) instead. (initialized elements can be accessed via Collapse.getInstance()'\r\n\t);\r\n\tlet data = element[stringCollapse] as Collapse;\r\n\r\n\tif (!data) {\r\n\t\tdata = new Collapse(element, options);\r\n\t}\r\n\r\n\treturn data;\r\n}\r\n","import { asHTMLElement } from '@opten/dom/as-html-element';\r\nimport { hasClass } from '@opten/dom/has-class';\r\nimport { isHTMLElement } from '@opten/dom/is-html-element';\r\n\r\nimport { Compiler } from '../';\r\nimport { Component } from '../metadata/component';\r\nimport { Reflector } from '../reflector';\r\nimport { Resolver } from '../resolver';\r\n\r\n// todo: cache, static, inject?\r\nconst reflector = new Reflector();\r\nconst resolver = new Resolver(reflector);\r\nconst compiler = new Compiler(resolver);\r\n\r\nexport function factory(components: any[]) {\r\n\treturn (rootElement: HTMLElement) => {\r\n\t\tconst observables = new Map();\r\n\t\tcomponents.forEach(componentType => {\r\n\t\t\t// todo: inject resolver, or cache?\r\n\t\t\t// todo: static or something to cache?\r\n\t\t\tconst component = resolver.resolve(componentType);\r\n\r\n\t\t\tif (component) {\r\n\t\t\t\tArray.from(\r\n\t\t\t\t\tdocument.getElementsByClassName(component.className)\r\n\t\t\t\t).forEach(node =>\r\n\t\t\t\t\tcompiler.compile(\r\n\t\t\t\t\t\tcomponent,\r\n\t\t\t\t\t\tnode as HTMLElement,\r\n\t\t\t\t\t\tcomponentType\r\n\t\t\t\t\t)\r\n\t\t\t\t);\r\n\r\n\t\t\t\tif (component.observe) {\r\n\t\t\t\t\tobservables.set(component, componentType);\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tthrow new Error(\r\n\t\t\t\t\t`No @Component annotation for ${\r\n\t\t\t\t\t\tcomponentType ? componentType.name : componentType\r\n\t\t\t\t\t} found!`\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif (observables.size) {\r\n\t\t\tnew MutationObserver(mutations => {\r\n\t\t\t\tconst componentInitializer = new Map void>();\r\n\r\n\t\t\t\tmutations.forEach(mutation => {\r\n\t\t\t\t\tobservables.forEach((value, key) =>\r\n\t\t\t\t\t\tArray.from(mutation.addedNodes)\r\n\t\t\t\t\t\t\t.filter(node => isHTMLElement(node))\r\n\t\t\t\t\t\t\t.map(node => asHTMLElement(node))\r\n\t\t\t\t\t\t\t.forEach(node => {\r\n\t\t\t\t\t\t\t\tconst comps = Array.from(\r\n\t\t\t\t\t\t\t\t\tnode.getElementsByClassName(key.className)\r\n\t\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t\t\tif (hasClass(node, key.className)) {\r\n\t\t\t\t\t\t\t\t\tcomps.push(node);\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\tcomps.forEach(component => {\r\n\t\t\t\t\t\t\t\t\tcomponentInitializer.set(\r\n\t\t\t\t\t\t\t\t\t\tcomponent as HTMLElement,\r\n\t\t\t\t\t\t\t\t\t\t() =>\r\n\t\t\t\t\t\t\t\t\t\t\tcompiler.compile(\r\n\t\t\t\t\t\t\t\t\t\t\t\tkey,\r\n\t\t\t\t\t\t\t\t\t\t\t\tcomponent as HTMLElement,\r\n\t\t\t\t\t\t\t\t\t\t\t\tvalue\r\n\t\t\t\t\t\t\t\t\t\t\t)\r\n\t\t\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t})\r\n\t\t\t\t\t);\r\n\t\t\t\t});\r\n\r\n\t\t\t\tcomponentInitializer.forEach(c => c());\r\n\t\t\t}).observe(rootElement, {\r\n\t\t\t\tchildList: true,\r\n\t\t\t\tsubtree: true\r\n\t\t\t});\r\n\t\t}\r\n\t};\r\n}\r\n","import { Component } from './metadata/component';\r\nimport { Query } from './metadata/di';\r\nimport { OnInit } from './metadata/lifecycle';\r\nimport { Resolver } from './resolver';\r\nimport { isType } from './util/type';\r\n\r\n\r\n// todo: move whole project to @opten/initializer?\r\nexport class Compiler {\r\n\tprivate componentCache = new Map();\r\n\r\n\tconstructor(private resolver: Resolver) {}\r\n\r\n\tcompile(\r\n\t\tcomponent: Component,\r\n\t\tnode: HTMLElement,\r\n\t\tcomponentType: /*Type*/ any\r\n\t) {\r\n\t\t// todo: cache everything?\r\n\r\n\t\t// todo: cache that also?\r\n\t\tconst constructor = new componentType(node);\r\n\r\n\t\tif (this.componentCache.has(node)) {\r\n\t\t\tthis.componentCache.get(node).push(constructor);\r\n\t\t} else {\r\n\t\t\tthis.componentCache.set(node, [constructor]);\r\n\t\t}\r\n\r\n\t\tObject.keys(component.queries).forEach(propName => {\r\n\t\t\tconst query: Query = component.queries[propName];\r\n\r\n\t\t\t// todo: why do we have to inject the resolver?\r\n\t\t\t// can we not get the class name by some other way?\r\n\t\t\tconst target = this.resolver.resolve(query.selector);\r\n\r\n\t\t\tif (target) {\r\n\t\t\t\tconst targetNode = query.descendants ? node : document;\r\n\t\t\t\tconst nodes = targetNode.getElementsByClassName(\r\n\t\t\t\t\ttarget.className\r\n\t\t\t\t);\r\n\r\n\t\t\t\tconst cache = Array.from(nodes)\r\n\t\t\t\t\t.filter(o => (query.filter ? query.filter(o) : true))\r\n\t\t\t\t\t.map(e => this.componentCache.get(e as HTMLElement))\r\n\t\t\t\t\t.reduce((acc, val) => acc.concat(val), [])\r\n\t\t\t\t\t.filter(f => f.constructor === query.selector);\r\n\r\n\t\t\t\tconstructor[propName] = query.first ? cache[0] : cache;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif (isType(constructor.onInit)) {\r\n\t\t\t(constructor as OnInit).onInit();\r\n\t\t}\r\n\t}\r\n}\r\n\r\n","import { makeDecorator, TypeDecorator } from '../util/decorators';\r\nimport { makeMetadataFactory, MetadataFactory } from '../util/factories';\r\n\r\nexport interface ComponentDecorator {\r\n\t(obj: Component): TypeDecorator;\r\n\tnew (obj: Component): Component;\r\n}\r\n\r\nexport interface Component {\r\n\tclassName?: string;\r\n\tobserve?: boolean;\r\n\tqueries?: { [key: string]: any };\r\n}\r\n\r\n// tslint:disable-next-line:variable-name\r\nexport const Component: ComponentDecorator = makeDecorator(\r\n\t'Component',\r\n\t(c: Component = {}) => ({ ...c })\r\n);\r\n\r\nexport const createComponent: MetadataFactory = makeMetadataFactory<\r\n\tComponent\r\n>('Component', (c: Component = {}) => ({ ...c }));\r\n","import { ANNOTATIONS, PROP_METADATA } from '../util/decorators';\r\nimport { isType, Type } from '../util/type';\r\n\r\n\r\n// todo: @opten/reflector? or @opten/initializer/reflector?\r\nexport class Reflector {\r\n\tannotations(typeOrFunc: Type): any[] {\r\n\t\tif (!isType(typeOrFunc)) {\r\n\t\t\treturn [];\r\n\t\t}\r\n\t\tconst parentCtor = getParentCtor(typeOrFunc);\r\n\t\tconst ownAnnotations =\r\n\t\t\tthis._ownAnnotations(typeOrFunc, parentCtor) || [];\r\n\t\tconst parentAnnotations =\r\n\t\t\tparentCtor !== Object ? this.annotations(parentCtor) : [];\r\n\t\treturn parentAnnotations.concat(ownAnnotations);\r\n\t}\r\n\r\n\tpropMetadata(typeOrFunc: any): { [key: string]: any[] } {\r\n\t\tif (!isType(typeOrFunc)) {\r\n\t\t\treturn {};\r\n\t\t}\r\n\t\tconst parentCtor = getParentCtor(typeOrFunc);\r\n\t\tconst propMetadata: { [key: string]: any[] } = {};\r\n\t\tif (parentCtor !== Object) {\r\n\t\t\tconst parentPropMetadata = this.propMetadata(parentCtor);\r\n\t\t\tObject.keys(parentPropMetadata).forEach(propName => {\r\n\t\t\t\tpropMetadata[propName] = parentPropMetadata[propName];\r\n\t\t\t});\r\n\t\t}\r\n\t\tconst ownPropMetadata = this._ownPropMetadata(typeOrFunc, parentCtor);\r\n\t\tif (ownPropMetadata) {\r\n\t\t\tObject.keys(ownPropMetadata).forEach(propName => {\r\n\t\t\t\tconst decorators: any[] = [];\r\n\t\t\t\tif (propMetadata.hasOwnProperty(propName)) {\r\n\t\t\t\t\tdecorators.push(...propMetadata[propName]);\r\n\t\t\t\t}\r\n\t\t\t\tdecorators.push(...ownPropMetadata[propName]);\r\n\t\t\t\tpropMetadata[propName] = decorators;\r\n\t\t\t});\r\n\t\t}\r\n\t\treturn propMetadata;\r\n\t}\r\n\r\n\tprivate _ownAnnotations(\r\n\t\ttypeOrFunc: Type,\r\n\t\tparentCtor: any\r\n\t): any[] | null {\r\n\t\t// API for metadata created by invoking the decorators.\r\n\t\tif (typeOrFunc.hasOwnProperty(ANNOTATIONS)) {\r\n\t\t\treturn (typeOrFunc as any)[ANNOTATIONS];\r\n\t\t}\r\n\t\treturn null;\r\n\t}\r\n\r\n\tprivate _ownPropMetadata(\r\n\t\ttypeOrFunc: any,\r\n\t\tparentCtor: any\r\n\t): { [key: string]: any[] } | null {\r\n\t\t// API for metadata created by invoking the decorators.\r\n\t\tif (typeOrFunc.hasOwnProperty(PROP_METADATA)) {\r\n\t\t\treturn (typeOrFunc as any)[PROP_METADATA];\r\n\t\t}\r\n\t\treturn null;\r\n\t}\r\n}\r\n\r\nfunction getParentCtor(ctor: Type): Type {\r\n\tconst parentProto = Object.getPrototypeOf(ctor.prototype);\r\n\tconst parentCtor = parentProto ? parentProto.constructor : null;\r\n\t// Note: We always use `Object` as the null value\r\n\t// to simplify checking later on.\r\n\treturn parentCtor || Object;\r\n}\r\n","import { Component, createComponent } from '../metadata/component';\r\nimport { Query } from '../metadata/di';\r\nimport { Reflector } from '../reflector';\r\n\r\n\r\nconst QUERY_METADATA_IDENTIFIERS = [\r\n\t'ComponentRef',\r\n\t'ComponentRefs',\r\n\t'ChildRef',\r\n\t'ChildrenRef'\r\n];\r\n\r\n// todo: @opten/resolver? or @opten/initializer/resolver?\r\nexport class Resolver {\r\n\tconstructor(private reflector: Reflector) {}\r\n\r\n\t// propertyCache = new Map();\r\n\r\n\tresolve(type: any /*Type*/): Component | null {\r\n\t\tconst typeMetadata = this.reflector.annotations(type);\r\n\r\n\t\tif (typeMetadata) {\r\n\t\t\tconst metadata = findLast(\r\n\t\t\t\ttypeMetadata,\r\n\t\t\t\tc => c && c.metadataName === 'Component'\r\n\t\t\t);\r\n\r\n\t\t\tif (metadata) {\r\n\t\t\t\tconst propertyMetadata = this.reflector.propMetadata(type);\r\n\r\n\t\t\t\treturn this._mergeWithPropertyMetadata(\r\n\t\t\t\t\tmetadata,\r\n\t\t\t\t\tpropertyMetadata,\r\n\t\t\t\t\ttype\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn null;\r\n\t}\r\n\r\n\tprivate _mergeWithPropertyMetadata(\r\n\t\tcomponent: Component,\r\n\t\tpropertyMetadata: { [key: string]: any[] },\r\n\t\tcomponentType: /*Type*/ any\r\n\t): Component {\r\n\t\tconst queries: { [key: string]: any } = {};\r\n\r\n\t\tObject.keys(propertyMetadata).forEach((propName: string) => {\r\n\t\t\tconst query = findLast(propertyMetadata[propName], a =>\r\n\t\t\t\tQUERY_METADATA_IDENTIFIERS.some(i => i && i === a.metadataName)\r\n\t\t\t);\r\n\r\n\t\t\tif (query) {\r\n\t\t\t\tqueries[propName] = query;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn this._merge(component, queries, componentType);\r\n\t}\r\n\r\n\tprivate _merge(\r\n\t\tcomponent: Component,\r\n\t\tqueries: { [key: string]: any },\r\n\t\tcomponentType: /*Type*/ any\r\n\t): Component {\r\n\t\tconst mergedQueries = component.queries\r\n\t\t\t? { ...component.queries, ...queries }\r\n\t\t\t: queries;\r\n\r\n\t\treturn createComponent({\r\n\t\t\tclassName: component.className,\r\n\t\t\tobserve: component.observe,\r\n\t\t\tqueries: mergedQueries\r\n\t\t});\r\n\t}\r\n\r\n\tprivate _getQueriesMetadata(queries: { [key: string]: Query }): any[] {\r\n\t\tconst res: any[] = [];\r\n\r\n\t\tObject.keys(queries).forEach((propertyName: string) => {\r\n\t\t\tconst query = queries[propertyName];\r\n\t\t\tres.push(this._getQueryMetadata(query, propertyName));\r\n\t\t});\r\n\r\n\t\treturn res;\r\n\t}\r\n\r\n\tprivate _getQueryMetadata(q: Query, propertyName: string): any {\r\n\t\treturn {\r\n\t\t\tdescendants: q.descendants,\r\n\t\t\tfirst: q.first,\r\n\t\t\tpropertyName,\r\n\t\t\tread: false,\r\n\t\t\tselector: q.selector\r\n\t\t};\r\n\t}\r\n}\r\n\r\nfunction findLast(arr: T[], condition: (value: T) => boolean): T | null {\r\n\tfor (let i = arr.length - 1; i >= 0; i--) {\r\n\t\tif (condition(arr[i])) {\r\n\t\t\treturn arr[i];\r\n\t\t}\r\n\t}\r\n\treturn null;\r\n}\r\n","import { Type } from './type';\r\n\r\nexport const ANNOTATIONS = '__annotations__';\r\nexport const PROP_METADATA = '__prop__metadata__';\r\n\r\nexport interface TypeDecorator {\r\n\t// Invoke as ES7 decorator.\r\n\t>(type: T): T;\r\n\r\n\t// Make TypeDecorator assignable to built-in ParameterDecorator type.\r\n\t// ParameterDecorator is declared in lib.d.ts as a `declare type`\r\n\t// so we cannot declare this interface as a subtype.\r\n\t// see https://github.com/angular/angular/issues/3379#issuecomment-126169417\r\n\t(\r\n\t\ttarget: object,\r\n\t\tpropertyKey?: string | symbol,\r\n\t\tparameterIndex?: number\r\n\t): void;\r\n}\r\n\r\nexport function makeDecorator(\r\n\tname: string,\r\n\tprops?: (...args: any[]) => any,\r\n\tparentClass?: any,\r\n\tchainFn?: (fn: TypeDecorator) => void,\r\n\ttypeFn?: (type: Type, ...args: any[]) => void\r\n): {\r\n\tnew (...args: any[]): any;\r\n\t(...args: any[]): any;\r\n\t(...args: any[]): (cls: any) => any;\r\n} {\r\n\tconst metaCtor = makeMetadataCtor(props);\r\n\r\n\tfunction DecoratorFactory(...args: any[]): (cls: any) => any {\r\n\t\tif (this instanceof DecoratorFactory) {\r\n\t\t\tmetaCtor.call(this, ...args);\r\n\t\t\treturn this;\r\n\t\t}\r\n\r\n\t\tconst annotationInstance = new (DecoratorFactory as any)(...args);\r\n\t\tconst typeDecorator: TypeDecorator = (cls: Type) => {\r\n\t\t\tif (typeFn) {\r\n\t\t\t\ttypeFn(cls, ...args);\r\n\t\t\t}\r\n\t\t\t// Use of Object.defineProperty is important since it creates non-enumerable property which\r\n\t\t\t// prevents the property is copied during subclassing.\r\n\t\t\tconst annotations = cls.hasOwnProperty(ANNOTATIONS)\r\n\t\t\t\t? (cls as any)[ANNOTATIONS]\r\n\t\t\t\t: Object.defineProperty(cls, ANNOTATIONS, { value: [] })[\r\n\t\t\t\t\t\tANNOTATIONS\r\n\t\t\t\t ];\r\n\t\t\tannotations.push(annotationInstance);\r\n\t\t\treturn cls;\r\n\t\t};\r\n\t\tif (chainFn) {\r\n\t\t\tchainFn(typeDecorator);\r\n\t\t}\r\n\t\treturn typeDecorator;\r\n\t}\r\n\r\n\tif (parentClass) {\r\n\t\tDecoratorFactory.prototype = Object.create(parentClass.prototype);\r\n\t}\r\n\r\n\tDecoratorFactory.prototype.metadataName = name;\r\n\treturn DecoratorFactory as any;\r\n}\r\n\r\nfunction makeMetadataCtor(props?: (...args: any[]) => any): any {\r\n\treturn function ctor(...args: any[]) {\r\n\t\tif (props) {\r\n\t\t\tconst values = props(...args);\r\n\t\t\tfor (const propName in values) {\r\n\t\t\t\tif (values.hasOwnProperty(propName)) {\r\n\t\t\t\t\tthis[propName] = values[propName];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n}\r\n\r\nexport function makePropDecorator(\r\n\tname: string,\r\n\tprops?: (...args: any[]) => any,\r\n\tparentClass?: any\r\n): any {\r\n\tconst metaCtor = makeMetadataCtor(props);\r\n\r\n\tfunction PropDecoratorFactory(...args: any[]): any {\r\n\t\tif (this instanceof PropDecoratorFactory) {\r\n\t\t\tmetaCtor.apply(this, args);\r\n\t\t\treturn this;\r\n\t\t}\r\n\r\n\t\tconst decoratorInstance = new (PropDecoratorFactory as any)(...args);\r\n\r\n\t\treturn function PropDecorator(target: any, metaName: string) {\r\n\t\t\tconst constructor = target.constructor;\r\n\t\t\t// Use of Object.defineProperty is important since it creates non-enumerable property which\r\n\t\t\t// prevents the property is copied during subclassing.\r\n\t\t\tconst meta = constructor.hasOwnProperty(PROP_METADATA)\r\n\t\t\t\t? (constructor as any)[PROP_METADATA]\r\n\t\t\t\t: Object.defineProperty(constructor, PROP_METADATA, {\r\n\t\t\t\t\t\tvalue: {}\r\n\t\t\t\t })[PROP_METADATA];\r\n\t\t\tmeta[metaName] =\r\n\t\t\t\t(meta.hasOwnProperty(metaName) && meta[metaName]) || [];\r\n\t\t\tmeta[metaName].unshift(decoratorInstance);\r\n\t\t};\r\n\t}\r\n\r\n\tif (parentClass) {\r\n\t\tPropDecoratorFactory.prototype = Object.create(parentClass.prototype);\r\n\t}\r\n\r\n\tPropDecoratorFactory.prototype.metadataName = name;\r\n\treturn PropDecoratorFactory;\r\n}\r\n","\r\n\r\nexport interface MetadataFactory {\r\n\t(...args: any[]): T;\r\n\tmetadataName: string;\r\n\tisTypeOf(obj: any): obj is T;\r\n}\r\n\r\nexport function makeMetadataFactory(\r\n\tname: string,\r\n\tprops?: (...args: any[]) => T\r\n): MetadataFactory {\r\n\tconst factory: any = (...args: any[]) => {\r\n\t\tconst values = props ? props(...args) : {};\r\n\t\treturn {\r\n\t\t\tmetadataName: name,\r\n\t\t\t...values\r\n\t\t};\r\n\t};\r\n\tfactory.isTypeOf = (obj: any) => obj && obj.metadataName === name;\r\n\tfactory.metadataName = name;\r\n\treturn factory;\r\n}\r\n","// tslint:disable-next-line:variable-name\r\nexport const Type = Function;\r\n\r\n\r\nexport function isType(v: any): v is Type {\r\n\treturn typeof v === 'function';\r\n}\r\n\r\nexport interface Type extends Function {\r\n\tnew (...args: any[]): T;\r\n}\r\n","export function getCookie(key: string) {\r\n\tif (!key) {\r\n\t\treturn null;\r\n\t}\r\n\r\n\treturn decodeURIComponent(\r\n\t\tdocument.cookie.replace(\r\n\t\t\tnew RegExp(`(?:(?:^|.*;)\\\\s*${encodeURIComponent(key).replace(/[\\-\\.\\+\\*]/g, '\\\\$&')}\\\\s*\\\\=\\\\s*([^;]*).*$)|^.*$`,\r\n\t\t\t), '$1')) || null;\r\n}\r\n","export function setCookie(\r\n\tkey: string,\r\n\tvalue: string,\r\n\tend: number | string | Date,\r\n\tpath = '/',\r\n\tdomain = '',\r\n\tsecure = false\r\n) {\r\n\tif (!key || /^(?:expires|max\\-age|path|domain|secure)$/i.test(key)) {\r\n\t\treturn false;\r\n\t}\r\n\tlet expires = '';\r\n\tif (end) {\r\n\t\tswitch (end.constructor) {\r\n\t\t\tcase Number:\r\n\t\t\t\texpires =\r\n\t\t\t\t\tend === Infinity\r\n\t\t\t\t\t\t? '; expires=Fri, 31 Dec 9999 23:59:59 GMT'\r\n\t\t\t\t\t\t: '; max-age=' + end;\r\n\t\t\t\tbreak;\r\n\t\t\tcase String:\r\n\t\t\t\texpires = `; expires=${end}`;\r\n\t\t\t\tbreak;\r\n\t\t\tcase Date:\r\n\t\t\t\texpires = `; expires=${(end as Date).toUTCString()}`;\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\t\texpires = '';\r\n\t\t}\r\n\t}\r\n\tconst keyStr = encodeURIComponent(key);\r\n\tconst valueStr = encodeURIComponent(value);\r\n\tconst domainStr = `${domain ? `; domain=${domain}` : ''}`;\r\n\tconst pathStr = `${path ? `; path=${path}` : ''}`;\r\n\tconst secureStr = `${secure ? '; secure' : ''}`;\r\n\tdocument.cookie = `${keyStr}=${valueStr}${expires}${domainStr}${pathStr}${secureStr}`;\r\n\r\n\treturn true;\r\n}\r\n","import { getClass } from '../get-class';\r\nimport { hasClass } from '../has-class';\r\n\r\nexport function addClass(element: Element, className: string) {\r\n\tif (element && !hasClass(element, className)) {\r\n\t\telement.setAttribute(\r\n\t\t\t'class',\r\n\t\t\tgetClass(element).trim() + ' ' + className,\r\n\t\t);\r\n\t}\r\n}\r\n","import { isHTMLElement } from '../is-html-element';\r\n\r\nexport function asHTMLElement(o: any): HTMLElement {\r\n\tif (isHTMLElement(o)) {\r\n\t\treturn o as HTMLElement;\r\n\t}\r\n\treturn null;\r\n}\r\n","import { addClass } from '../add-class';\r\nimport { removeClass } from '../remove-class';\r\n\r\nexport function changeClass(\r\n\telement: Element,\r\n\tclassName: string,\r\n\tadd = true,\r\n) {\r\n\tif (add) {\r\n\t\taddClass(element, className);\r\n\t} else {\r\n\t\tremoveClass(element, className);\r\n\t}\r\n}\r\n","const classRegexCache = {};\r\nexport function classRegex(className: string): RegExp {\r\n\tif (!classRegexCache[className]) {\r\n\t\tclassRegexCache[className] = new RegExp('(\\\\s|^)' + className + '(\\\\s|$)');\r\n\t}\r\n\treturn classRegexCache[className];\r\n}\r\n","import { hasClass } from '../has-class';\r\n\r\nexport function firstByClass(\r\n\telements: HTMLElement[],\r\n\tclassName: string,\r\n): HTMLElement {\r\n\tfor (const parent of elements as HTMLElement[]) {\r\n\t\tif (hasClass(parent, className)) {\r\n\t\t\treturn parent;\r\n\t\t}\r\n\t}\r\n\r\n\treturn null;\r\n}\r\n","import { hasClass } from '../has-class';\r\n\r\n\r\nexport function getChildrenWithClass(\r\n element: HTMLElement,\r\n className: string,\r\n): HTMLElement[] {\r\n return Array.prototype.filter.call(element.children, (child: HTMLElement) => {\r\n return hasClass(child, className);\r\n });\r\n}\r\n\r\n","export function getClass(element: Element) {\r\n\treturn element.getAttribute('class') || '';\r\n}\r\n","import { firstByClass } from '../first-by-class';\r\nimport { getParents } from '../get-parents';\r\n\r\nexport function getParentWithClass(\r\n\telement: HTMLElement,\r\n\tclassName: string,\r\n): HTMLElement {\r\n\treturn firstByClass(getParents(element), className);\r\n}\r\n","import { isHTMLElement } from '../is-html-element';\r\n\r\nexport function getParentsOrSelf(element: HTMLElement): HTMLElement[] {\r\n\tconst parents: HTMLElement[] = [];\r\n\r\n\tif (element && isHTMLElement(element)) {\r\n\t\tparents.push(element);\r\n\r\n\t\tif (element.parentElement) {\r\n\t\t\tparents.push.apply(\r\n\t\t\t\tparents,\r\n\t\t\t\tgetParentsOrSelf(element.parentElement)\r\n\t\t\t);\r\n\t\t}\r\n\t}\r\n\r\n\treturn parents;\r\n}\r\n","import { getParentsOrSelf } from '../get-parents-or-self';\r\n\r\nexport function getParents(element: HTMLElement) {\r\n\treturn getParentsOrSelf(element.parentElement);\r\n}\r\n","import { getSelectorFromElement } from '../get-selector-from-element';\r\n\r\nexport function getSelectorElementFromElement(\r\n\telement: Element,\r\n\tattribute = 'data-target',\r\n\tfallbackHref = true\r\n): HTMLElement {\r\n\tconst selector = getSelectorFromElement(element, attribute, fallbackHref);\r\n\r\n\tif (selector && selector.indexOf('#') === 0) {\r\n\t\treturn document.getElementById(selector.substr(1, selector.length - 1));\r\n\t}\r\n\r\n\treturn null;\r\n}\r\n","export function getSelectorFromElement(\r\n\telement: Element,\r\n\tattribute = 'data-target',\r\n\tfallbackHref = true\r\n): string {\r\n\tlet selector = element.getAttribute(attribute);\r\n\r\n\tif (!selector && fallbackHref) {\r\n\t\tselector = element.getAttribute('href') || '';\r\n\t\tselector = /^#.*/i.test(selector) ? selector : null;\r\n\t}\r\n\r\n\treturn selector;\r\n}\r\n","export function getWindowScrollTop() {\r\n\treturn window.pageYOffset !== undefined\r\n\t\t? window.pageYOffset\r\n\t\t: ((document.documentElement ||\r\n\t\t\tdocument.body.parentNode ||\r\n\t\t\tdocument.body) as HTMLElement).scrollTop;\r\n}\r\n","import { classRegex } from '../class-regex';\r\nimport { getClass } from '../get-class';\r\n\r\nexport function hasClass(element: Element, className: string): boolean {\r\n\treturn element && classRegex(className).test(getClass(element));\r\n}\r\n","export function isHTMLElement(o: any) {\r\n\treturn typeof HTMLElement === 'object'\r\n\t\t? o instanceof HTMLElement\r\n\t\t: o &&\r\n\t\t\t\ttypeof o === 'object' &&\r\n\t\t\t\to !== null &&\r\n\t\t\t\to.nodeType === 1 &&\r\n\t\t\t\ttypeof o.nodeName === 'string';\r\n}\r\n","import { classRegex } from '../class-regex';\r\nimport { getClass } from '../get-class';\r\nimport { hasClass } from '../has-class';\r\n\r\nexport function removeClass(element: Element, className: string) {\r\n\tif (element && hasClass(element, className)) {\r\n\t\tconst regex = classRegex(className);\r\n\t\telement.setAttribute(\r\n\t\t\t'class',\r\n\t\t\tgetClass(element)\r\n\t\t\t\t.replace(regex, ' ')\r\n\t\t\t\t.trim(),\r\n\t\t);\r\n\t}\r\n}\r\n\r\nexport function removeClassFactory(className: string) {\r\n\treturn (element: Element) => {\r\n\t\tremoveClass(element, className);\r\n\t};\r\n}\r\n\r\nexport function removeClassOnCollection(elements: Element[], className: string) {\r\n\telements.forEach(removeClassFactory(className));\r\n}\r\n","export function dispatchCustomEvent(\r\n\telement: EventTarget,\r\n\teventName: string,\r\n) {\r\n\tconst event = new CustomEvent(eventName);\r\n\telement.dispatchEvent(event);\r\n}\r\n","import { dispatchCustomEvent } from '../dispatch-custom-event';\r\n\r\nexport function eventNamespaceFactory(namespace: string) {\r\n\treturn (element: EventTarget, eventName: string) =>\r\n\t\tdispatchCustomEvent(element, eventName + '.' + namespace);\r\n}\r\n","import { Component } from '@opten/compiler/metadata/component';\r\nimport { OnInit } from '@opten/compiler/metadata/lifecycle';\r\nimport { changeClass } from '@opten/dom/change-class';\r\n\r\n@Component({ className: 'js-form-field', observe: true })\r\nexport class FormField implements OnInit {\r\n\tconstructor(private element: HTMLInputElement | HTMLSelectElement) {}\r\n\r\n\tonInit(): void {\r\n\t\tthis.checkValue();\r\n\t\tthis.element.addEventListener('input', () => this.checkValue());\r\n\t\tthis.element.addEventListener('change', () => this.checkValue());\r\n\t}\r\n\r\n\tprivate checkValue() {\r\n\t\tchangeClass(this.element, 'is-filled', !!this.element.value);\r\n\t}\r\n}\r\n","export function debounce(func: Function, wait: number, immediate?: boolean) {\r\n\tlet timeout;\r\n\tlet result;\r\n\treturn function debounceFn() {\r\n\t\tconst context = this;\r\n\t\tconst args = arguments;\r\n\t\tconst later = () => {\r\n\t\t\ttimeout = null;\r\n\t\t\tif (!immediate) {\r\n\t\t\t\tresult = func.apply(context, args);\r\n\t\t\t}\r\n\t\t};\r\n\t\tconst callNow = immediate && !timeout;\r\n\t\tclearTimeout(timeout);\r\n\t\ttimeout = setTimeout(later, wait);\r\n\t\tif (callNow) {\r\n\t\t\tresult = func.apply(context, args);\r\n\t\t}\r\n\t\treturn result;\r\n\t};\r\n}\r\n","interface LoadingScriptWindow extends Window {\r\n\tloadingScripts: string[];\r\n}\r\n\r\nconst loadingScriptWindow = window as LoadingScriptWindow;\r\n\r\nloadingScriptWindow.loadingScripts = loadingScriptWindow.loadingScripts || [];\r\n\r\nexport function createScript(src: string, onerror: () => void = () => {}) {\r\n\tconst scriptElement = document.createElement('script');\r\n\tscriptElement.src = src;\r\n\tscriptElement.async = false;\r\n\tscriptElement.onload = e => {\r\n\t\tremoveLoadingScript(src);\r\n\t};\r\n\tscriptElement.onerror = e => {\r\n\t\tconsole.error(e);\r\n\t\tremoveLoadingScript(src);\r\n\t\tonerror();\r\n\t};\r\n\tloadingScriptWindow.loadingScripts.push(src);\r\n\treturn scriptElement;\r\n}\r\n\r\nfunction removeLoadingScript(src: string) {\r\n\tconst index = loadingScriptWindow.loadingScripts.indexOf(src);\r\n\tif (index > -1) {\r\n\t\tloadingScriptWindow.loadingScripts = loadingScriptWindow.loadingScripts.splice(\r\n\t\t\tindex,\r\n\t\t\t1\r\n\t\t);\r\n\t}\r\n}\r\n","import { removeDomain } from '@opten/url/remove-domain';\r\n\r\nexport function getScriptBySrc(src: string): HTMLScriptElement {\r\n\t// HINT: NEVER EVER change to Array.from() we need this code in load-polyfill\r\n\t// and IE doesn't understand this until the polyfills are obviously loaded!\r\n\tconst scripts = document.getElementsByTagName('script');\r\n\tfor (let i = 0; i < scripts.length; i++) {\r\n\t\tconst currentScriptElement = scripts.item(i);\r\n\t\tconst currentSrc = removeDomain(currentScriptElement.src);\r\n\t\tif (currentSrc === src) {\r\n\t\t\treturn currentScriptElement;\r\n\t\t}\r\n\t}\r\n\treturn null;\r\n}\r\n","import { createScript } from '../create-script';\r\nimport { getScriptBySrc } from '../get-script-by-src';\r\n\r\ninterface PolyfillWindow extends Window {\r\n\tpolyfillsLoadedFlag: boolean;\r\n\tpolyfillsLoadedCallbacks: Function[];\r\n\tpolyfillsLoaded: () => void;\r\n}\r\n\r\nconst polyfillWindow = window as PolyfillWindow;\r\n\r\nconst polyfillesLoadedFn = () => {\r\n\tif (polyfillWindow.polyfillsLoadedCallbacks.length) {\r\n\t\t// tslint:disable-next-line:prefer-for-of\r\n\t\tfor (\r\n\t\t\tlet i = 0;\r\n\t\t\ti < polyfillWindow.polyfillsLoadedCallbacks.length;\r\n\t\t\ti++\r\n\t\t) {\r\n\t\t\tpolyfillWindow.polyfillsLoadedCallbacks[i]();\r\n\t\t}\r\n\t}\r\n\tpolyfillWindow.polyfillsLoadedFlag = true;\r\n};\r\n\r\npolyfillWindow.polyfillsLoadedFlag = false;\r\npolyfillWindow.polyfillsLoadedCallbacks =\r\n\tpolyfillWindow.polyfillsLoadedCallbacks || [];\r\npolyfillWindow.polyfillsLoaded =\r\n\tpolyfillWindow.polyfillsLoaded || polyfillesLoadedFn;\r\n\r\nexport function loadPolyfillv2(\r\n\tcb: () => void,\r\n\tfeatures: string[] = ['es6', 'CustomEvent', 'fetch', 'HTMLPictureElement']\r\n) {\r\n\treturn loadPolyfill(\r\n\t\tcb,\r\n\t\t`https://cdn.polyfill.io/v2/polyfill.min.js?features=${features.join(\r\n\t\t\t','\r\n\t\t)}&flags=gated&callback=polyfillsLoaded`\r\n\t);\r\n}\r\n\r\nexport function loadPolyfill(\r\n\tcb: () => void,\r\n\t// tslint:disable-next-line:max-line-length\r\n\tsrc = 'https://cdn.polyfill.io/v2/polyfill.min.js?features=es6,CustomEvent,fetch,HTMLPictureElement&flags=gated&callback=polyfillsLoaded'\r\n) {\r\n\tpolyfillWindow.polyfillsLoadedCallbacks.push(cb);\r\n\r\n\tconst script = getScriptBySrc(src);\r\n\r\n\tif (script) {\r\n\t\tif (polyfillWindow.polyfillsLoadedFlag) {\r\n\t\t\tcb();\r\n\t\t}\r\n\t} else {\r\n\t\tdocument.head.appendChild(createScript(src, cb));\r\n\t}\r\n}\r\n","import { AnimationFunction } from '@opten/animation/animation-function';\r\nimport { linearTween } from '@opten/animation/linear-tween';\r\nimport { scrollToOffset } from '../scroll-to-offset';\r\n\r\nexport function scrollToElement(\r\n\ttarget: Element,\r\n\tanimation: AnimationFunction = linearTween,\r\n\tduration = 300,\r\n\toffset = 0,\r\n\twrapper: HTMLElement | Window = window\r\n) {\r\n\tconst top =\r\n\t\twrapper !== window\r\n\t\t\t? (target as HTMLElement).offsetTop -\r\n\t\t\t (wrapper as HTMLElement).scrollTop\r\n\t\t\t: target.getBoundingClientRect().top;\r\n\r\n\treturn scrollToOffset(top, animation, duration, offset, wrapper);\r\n}\r\n","import { AnimationFunction } from '@opten/animation/animation-function';\r\nimport { linearTween } from '@opten/animation/linear-tween';\r\nimport { scrollToElement } from '../scroll-to-element';\r\n\r\nexport function scrollToId(\r\n\tid: string,\r\n\tanimationFunction: AnimationFunction = linearTween,\r\n\tduration = 300,\r\n\toffset = 0,\r\n\twrapper: HTMLElement | Window = window\r\n) {\r\n\treturn scrollToElement(\r\n\t\tdocument.getElementById(id),\r\n\t\tanimationFunction,\r\n\t\tduration,\r\n\t\toffset,\r\n\t\twrapper\r\n\t);\r\n}\r\n","import { AnimationFunction } from '@opten/animation/animation-function';\r\nimport { linearTween } from '@opten/animation/linear-tween';\r\nimport { scrollTo } from '../scroll-to';\r\n\r\nexport function scrollToOffset(\r\n\tdistance: number,\r\n\tanimationFunction: AnimationFunction = linearTween,\r\n\tduration = 300,\r\n\toffset = 0,\r\n\twrapper: HTMLElement | Window = window\r\n) {\r\n\tscrollTo(distance + offset, animationFunction, duration, wrapper);\r\n}\r\n","import { AnimationFunction } from '@opten/animation/animation-function';\r\nimport { getWindowScrollTop } from '@opten/dom/get-window-scroll-top';\r\n\r\nexport function scrollTo(\r\n\tdistance: number,\r\n\tanimationFunction: AnimationFunction = (t, b, c, d) => {\r\n\t\treturn (c * t) / d + b;\r\n\t},\r\n\tduration = 300,\r\n\twrapper: HTMLElement | Window = window\r\n) {\r\n\tlet start = getWindowScrollTop();\r\n\tlet timeStart: number;\r\n\tlet timeElapsed: number;\r\n\r\n\tif (wrapper instanceof HTMLElement) {\r\n\t\tstart = wrapper.scrollTop;\r\n\t}\r\n\r\n\trequestAnimationFrame.call(window, time => {\r\n\t\ttimeStart = time;\r\n\t\tloop(time);\r\n\t});\r\n\r\n\tfunction loop(time) {\r\n\t\ttimeElapsed = time - timeStart;\r\n\r\n\t\tif (wrapper instanceof Window) {\r\n\t\t\twrapper.scrollTo(\r\n\t\t\t\t0,\r\n\t\t\t\tanimationFunction(timeElapsed, start, distance, duration)\r\n\t\t\t);\r\n\r\n\t\t\tif (timeElapsed < duration) {\r\n\t\t\t\trequestAnimationFrame.call(window, loop);\r\n\t\t\t} else {\r\n\t\t\t\twrapper.scrollTo(0, start + distance);\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\twrapper.scrollTop = animationFunction(\r\n\t\t\t\ttimeElapsed,\r\n\t\t\t\tstart,\r\n\t\t\t\tdistance,\r\n\t\t\t\tduration\r\n\t\t\t);\r\n\r\n\t\t\tif (timeElapsed < duration) {\r\n\t\t\t\trequestAnimationFrame.call(window, loop);\r\n\t\t\t} else {\r\n\t\t\t\twrapper.scrollTop = start + distance;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n","import { Slider, SliderBehaviour } from '..';\r\nimport { addClass } from '@opten/dom/add-class';\r\nimport { removeClass } from '@opten/dom/remove-class';\r\n\r\nexport class SliderArrowsResponsiveBehavior implements SliderBehaviour {\r\n\tprivate _slidingWindowCount: number;\r\n\tinitialize(slider: Slider): void {\r\n\t\tif (slider.next && slider.prev) {\r\n\t\t\tif (\r\n\t\t\t\tslider.options.infinite === false &&\r\n\t\t\t\tslider.options.rewind === false\r\n\t\t\t) {\r\n\t\t\t\tslider.element.addEventListener('after.lory.init', e => {\r\n\t\t\t\t\tthis._slidingWindowCount = this.getSlidingWindowCount(\r\n\t\t\t\t\t\tslider\r\n\t\t\t\t\t);\r\n\t\t\t\t\tthis.reconfigureArrows(slider);\r\n\t\t\t\t});\r\n\t\t\t\tslider.element.addEventListener(\r\n\t\t\t\t\t'after.lory.slide',\r\n\t\t\t\t\t(e: any) => {\r\n\t\t\t\t\t\tthis.reconfigureArrows(slider, e.detail.currentSlide);\r\n\t\t\t\t\t}\r\n\t\t\t\t);\r\n\t\t\t\tslider.element.addEventListener('on.lory.resize', (e: any) => {\r\n\t\t\t\t\tthis._slidingWindowCount = this.getSlidingWindowCount(\r\n\t\t\t\t\t\tslider\r\n\t\t\t\t\t);\r\n\t\t\t\t\tthis.reconfigureArrows(slider, e.detail.currentSlide);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprivate reconfigureArrows(slider: Slider, currentSlide = 0) {\r\n\t\tif (this._slidingWindowCount > 1) {\r\n\t\t\tremoveClass(slider.prev, 'is-both-arrows-disabled');\r\n\t\t\tremoveClass(slider.next, 'is-both-arrows-disabled');\r\n\t\t\tif (currentSlide + 1 === this._slidingWindowCount) {\r\n\t\t\t\taddClass(slider.next, 'disabled');\r\n\t\t\t} else {\r\n\t\t\t\tremoveClass(slider.next, 'disabled');\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\taddClass(slider.prev, 'is-both-arrows-disabled');\r\n\t\t\taddClass(slider.next, 'disabled');\r\n\t\t\taddClass(slider.next, 'is-both-arrows-disabled');\r\n\r\n\t\t}\r\n\t}\r\n\r\n\tprivate getSlidingWindowCount(slider: Slider) {\r\n\t\tconst frameWidth = slider.frame.offsetWidth;\r\n\t\tif (slider.slides && slider.slides.length > 1) {\r\n\t\t\tconst firstSlideWith = slider.slides[0].offsetWidth;\r\n\t\t\tconst slidesToShow = Math.round(frameWidth / firstSlideWith);\r\n\t\t\tconst countSlides = slider.slides.length;\r\n\t\t\tconst slidesToScroll = slider.options.slidesToScroll;\r\n\t\t\tlet pagerQty = 0;\r\n\t\t\tlet lastSlideVisible = 0;\r\n\t\t\tlet counter = 0;\r\n\t\t\tif (slidesToShow === slidesToScroll) {\r\n\t\t\t\tpagerQty = countSlides + 1;\r\n\t\t\t} else if (slider.options.infinite === true) {\r\n\t\t\t\tif (countSlides <= slidesToShow) {\r\n\t\t\t\t\t++pagerQty;\r\n\t\t\t\t} else {\r\n\t\t\t\t\twhile (lastSlideVisible <= countSlides) {\r\n\t\t\t\t\t\t++pagerQty;\r\n\t\t\t\t\t\tlastSlideVisible = counter + slidesToShow;\r\n\t\t\t\t\t\tcounter +=\r\n\t\t\t\t\t\t\tslidesToScroll <= slidesToShow\r\n\t\t\t\t\t\t\t\t? slidesToScroll\r\n\t\t\t\t\t\t\t\t: slidesToShow;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\twhile (lastSlideVisible <= countSlides) {\r\n\t\t\t\t\t++pagerQty;\r\n\t\t\t\t\tlastSlideVisible = counter + slidesToShow;\r\n\t\t\t\t\tcounter +=\r\n\t\t\t\t\t\tslidesToScroll <= slidesToShow\r\n\t\t\t\t\t\t\t? slidesToScroll\r\n\t\t\t\t\t\t\t: slidesToShow;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn countSlides > slidesToShow ? pagerQty - 1 : 0;\r\n\t\t}\r\n\t}\r\n}\r\n","import { Slider, SliderBehaviour } from '..';\r\nimport { addClass } from '@opten/dom/add-class';\r\nimport { removeClass } from '@opten/dom/remove-class';\r\n\r\nexport class SliderDotsResponsiveBehavior implements SliderBehaviour {\r\n\tinitialize(slider: Slider) {\r\n\t\tconst dots = slider.element.querySelector('.js-dots');\r\n\t\tif (dots) {\r\n\t\t\tslider.element.addEventListener('before.lory.init', e => {\r\n\t\t\t\tthis.reinitDots(slider, dots);\r\n\t\t\t});\r\n\r\n\t\t\tslider.element.addEventListener('after.lory.init', e => {\r\n\t\t\t\tfor (let i = 0, len = dots.childNodes.length; i < len; i++) {\r\n\t\t\t\t\tdots.childNodes[i].addEventListener('click', e => {\r\n\t\t\t\t\t\tslider.instance.slideTo(\r\n\t\t\t\t\t\t\tArray.prototype.indexOf.call(\r\n\t\t\t\t\t\t\t\tdots.childNodes,\r\n\t\t\t\t\t\t\t\te.target\r\n\t\t\t\t\t\t\t)\r\n\t\t\t\t\t\t);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tslider.element.addEventListener('after.lory.slide', (e: any) => {\r\n\t\t\t\tfor (let i = 0, len = slider.slides.length; i < len; i++) {\r\n\t\t\t\t\tremoveClass(dots.children[i], 'active');\r\n\t\t\t\t}\r\n\t\t\t\taddClass(dots.children[e.detail.currentSlide], 'active');\r\n\t\t\t});\r\n\r\n\t\t\tslider.element.addEventListener('on.lory.resize', e => {\r\n\t\t\t\tthis.reinitDots(slider, dots);\r\n\t\t\t\tfor (let i = 0, len = dots.childNodes.length; i < len; i++) {\r\n\t\t\t\t\tdots.childNodes[i].addEventListener('click', e => {\r\n\t\t\t\t\t\tslider.instance.slideTo(\r\n\t\t\t\t\t\t\tArray.prototype.indexOf.call(\r\n\t\t\t\t\t\t\t\tdots.childNodes,\r\n\t\t\t\t\t\t\t\te.target\r\n\t\t\t\t\t\t\t)\r\n\t\t\t\t\t\t);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tprivate reinitDots(slider: Slider, dots: Element) {\r\n\t\tdots.innerHTML = '';\r\n\t\tconst dotsCount = this.getDotCount(slider);\r\n\t\tfor (let i = 0, len = dotsCount; i < len; i++) {\r\n\t\t\tconst li = document.createElement('li');\r\n\t\t\tdots.appendChild(li);\r\n\t\t}\r\n\t\taddClass(dots.firstElementChild, 'active');\r\n\r\n\t\treturn dots;\r\n\t}\r\n\r\n\tprivate getDotCount(slider: Slider) {\r\n\t\tconst frameWidth = slider.frame.offsetWidth;\r\n\t\tif (slider.slides && slider.slides.length > 1) {\r\n\t\t\tconst firstSlideWith = slider.slides[0].offsetWidth;\r\n\t\t\tconst slidesToShow = Math.round(frameWidth / firstSlideWith);\r\n\t\t\tconst countSlides = slider.slides.length;\r\n\t\t\tconst slidesToScroll = slider.options.slidesToScroll;\r\n\t\t\tlet pagerQty = 0;\r\n\t\t\tlet lastSlideVisible = 0;\r\n\t\t\tlet counter = 0;\r\n\t\t\tif (slidesToShow === slidesToScroll) {\r\n\t\t\t\tpagerQty = countSlides + 1;\r\n\t\t\t} else if (slider.options.infinite) {\r\n\t\t\t\tif (countSlides <= slidesToShow) {\r\n\t\t\t\t\t++pagerQty;\r\n\t\t\t\t} else {\r\n\t\t\t\t\twhile (lastSlideVisible <= countSlides) {\r\n\t\t\t\t\t\t++pagerQty;\r\n\t\t\t\t\t\tlastSlideVisible = counter + slidesToShow;\r\n\t\t\t\t\t\tcounter +=\r\n\t\t\t\t\t\t\tslidesToScroll <= slidesToShow\r\n\t\t\t\t\t\t\t\t? slidesToScroll\r\n\t\t\t\t\t\t\t\t: slidesToShow;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\twhile (lastSlideVisible <= countSlides) {\r\n\t\t\t\t\t++pagerQty;\r\n\t\t\t\t\tlastSlideVisible = counter + slidesToShow;\r\n\t\t\t\t\tcounter +=\r\n\t\t\t\t\t\tslidesToScroll <= slidesToShow\r\n\t\t\t\t\t\t\t? slidesToScroll\r\n\t\t\t\t\t\t\t: slidesToShow;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn countSlides > slidesToShow ? pagerQty - 1 : 0;\r\n\t\t}\r\n\t}\r\n}\r\n","import { lory } from './lory/index.js';\r\n\r\nexport interface SliderOptions {\r\n\tclassNameFrame?: string;\r\n\tclassNameNextCtrl?: string;\r\n\tclassNamePrevCtrl?: string;\r\n\tclassNameSlideContainer?: string;\r\n\tease?: string;\r\n\tenableMouseEvents?: boolean;\r\n\tinfinite?: boolean | number;\r\n\tinitialIndex?: number;\r\n\trewind?: boolean;\r\n\trewindOnResize?: boolean;\r\n\trewindSpeed?: number;\r\n\tslideSpeed?: number;\r\n\tslidesToScroll?: number;\r\n\tsnapBackSpeed?: number;\r\n} /*These are the slider options available in lory slider, which are used to initialize the lory slider */\r\n\r\nexport interface SliderBehaviour {\r\n\tinitialize(slider: Slider): void;\r\n}\r\n\r\nexport class Slider {\r\n\tslides: HTMLElement[];\r\n\tframe: HTMLElement;\r\n\tnext: HTMLElement;\r\n\tprev: HTMLElement;\r\n\tslidesWrapper: HTMLElement;\r\n\tinstance: any;\r\n\r\n\toptions: SliderOptions = {\r\n\t\tclassNameFrame: 'js-frame',\r\n\t\tclassNameNextCtrl: 'js-next',\r\n\t\tclassNamePrevCtrl: 'js-prev',\r\n\t\tclassNameSlideContainer: 'js-slides',\r\n\t\tease: 'ease',\r\n\t\tenableMouseEvents: true,\r\n\t\tinfinite: false,\r\n\t\tinitialIndex: 0,\r\n\t\trewind: false,\r\n\t\trewindSpeed: 600,\r\n\t\tslideSpeed: 300,\r\n\t\tslidesToScroll: 1,\r\n\t\tsnapBackSpeed: 200,\r\n\t\trewindOnResize: false\r\n\t}; /*options are public, because they are also used in some behavoirs*/\r\n\r\n\tconstructor(\r\n\t\tpublic element: HTMLElement,\r\n\t\toptions: SliderOptions = {},\r\n\t\tbehavoirs: SliderBehaviour[] = []\r\n\t) {\r\n\t\tthis.options = { ...this.options, ...options };\r\n\r\n\t\tthis.frame = this.element.querySelector(\r\n\t\t\t'.' + this.options.classNameFrame\r\n\t\t);\r\n\t\tthis.prev = this.element.querySelector(\r\n\t\t\t'.' + this.options.classNamePrevCtrl\r\n\t\t);\r\n\t\tthis.next = this.element.querySelector(\r\n\t\t\t'.' + this.options.classNameNextCtrl\r\n\t\t);\r\n\t\tthis.slidesWrapper = this.element.querySelector(\r\n\t\t\t'.' + this.options.classNameSlideContainer\r\n\t\t);\r\n\t\tthis.slides = Array.from(this.element.querySelectorAll('.js-slide'));\r\n\r\n\t\tbehavoirs.forEach(behavior => behavior.initialize(this));\r\n\t\tthis.reinitInstance();\r\n\t}\r\n\r\n\tpublic reinitInstance(){\r\n\t\tif(this.instance){\r\n\t\t\tthis.instance.destroy();\r\n\t\t}\r\n\t\tthis.instance = lory(this.element, this.options);\r\n\t}\r\n}\r\n","export default {\r\n\t/**\r\n\t * slides scrolled at once\r\n\t * @slidesToScroll {Number}\r\n\t */\r\n\tslidesToScroll: 1,\r\n\r\n\t/**\r\n\t * time in milliseconds for the animation of a valid slide attempt\r\n\t * @slideSpeed {Number}\r\n\t */\r\n\tslideSpeed: 300,\r\n\r\n\t/**\r\n\t * time in milliseconds for the animation of the rewind after the last slide\r\n\t * @rewindSpeed {Number}\r\n\t */\r\n\trewindSpeed: 600,\r\n\r\n\t/**\r\n\t * time for the snapBack of the slider if the slide attempt was not valid\r\n\t * @snapBackSpeed {Number}\r\n\t */\r\n\tsnapBackSpeed: 200,\r\n\r\n\t/**\r\n\t * Basic easing functions: https://developer.mozilla.org/de/docs/Web/CSS/transition-timing-function\r\n\t * cubic bezier easing functions: http://easings.net/de\r\n\t * @ease {String}\r\n\t */\r\n\tease: 'ease',\r\n\r\n\t/**\r\n\t * if slider reached the last slide, with next click the slider goes back to the startindex.\r\n\t * use infinite or rewind, not both\r\n\t * @rewind {Boolean}\r\n\t */\r\n\trewind: false,\r\n\r\n\t/**\r\n\t * number of visible slides or false\r\n\t * use infinite or rewind, not both\r\n\t * @infinite {number}\r\n\t */\r\n\tinfinite: false,\r\n\r\n\t/**\r\n\t * the slide index to show when the slider is initialized.\r\n\t * @initialIndex {number}\r\n\t */\r\n\tinitialIndex: 0,\r\n\r\n\t/**\r\n\t * class name for slider frame\r\n\t * @classNameFrame {string}\r\n\t */\r\n\tclassNameFrame: 'js_frame',\r\n\r\n\t/**\r\n\t * class name for slides container\r\n\t * @classNameSlideContainer {string}\r\n\t */\r\n\tclassNameSlideContainer: 'js_slides',\r\n\r\n\t/**\r\n\t * class name for slider prev control\r\n\t * @classNamePrevCtrl {string}\r\n\t */\r\n\tclassNamePrevCtrl: 'js_prev',\r\n\r\n\t/**\r\n\t * class name for slider next control\r\n\t * @classNameNextCtrl {string}\r\n\t */\r\n\tclassNameNextCtrl: 'js_next',\r\n\r\n\t/**\r\n\t * class name for current active slide\r\n\t * if emptyString then no class is set\r\n\t * @classNameActiveSlide {string}\r\n\t */\r\n\tclassNameActiveSlide: 'active',\r\n\r\n\t/**\r\n\t * enables mouse events for swiping on desktop devices\r\n\t * @enableMouseEvents {boolean}\r\n\t */\r\n\tenableMouseEvents: false,\r\n\r\n\t/**\r\n\t * window instance\r\n\t * @window {object}\r\n\t */\r\n\twindow: typeof window !== 'undefined' ? window : null,\r\n\r\n\t/**\r\n\t * If false, slides lory to the first slide on window resize.\r\n\t * @rewindOnResize {boolean}\r\n\t */\r\n\trewindOnResize: true\r\n};\r\n","/* globals jQuery */\r\n\r\nimport detectPrefixes from './utils/detect-prefixes.js';\r\nimport supportsPassive from './utils/detect-supportsPassive';\r\nimport dispatchEvent from './utils/dispatch-event.js';\r\nimport defaults from './defaults.js';\r\n\r\nconst slice = Array.prototype.slice;\r\n\r\nexport function lory(slider, opts) {\r\n\tlet position;\r\n\tlet slidesWidth;\r\n\tlet frameWidth;\r\n\tlet slides;\r\n\r\n\t/**\r\n\t * slider DOM elements\r\n\t */\r\n\tlet frame;\r\n\tlet slideContainer;\r\n\tlet prevCtrl;\r\n\tlet nextCtrl;\r\n\tlet prefixes;\r\n\tlet transitionEndCallback;\r\n\r\n\tlet index = 0;\r\n\tlet options = {};\r\n\tlet touchEventParams = supportsPassive() ? { passive: true } : false;\r\n\r\n\t/**\r\n\t * if object is jQuery convert to native DOM element\r\n\t */\r\n\tif (typeof jQuery !== 'undefined' && slider instanceof jQuery) {\r\n\t\tslider = slider[0];\r\n\t}\r\n\r\n\t/**\r\n\t * private\r\n\t * set active class to element which is the current slide\r\n\t */\r\n\tfunction setActiveElement(slides, currentIndex) {\r\n\t\tconst { classNameActiveSlide } = options;\r\n\r\n\t\tslides.forEach((element, index) => {\r\n\t\t\tif (element.classList.contains(classNameActiveSlide)) {\r\n\t\t\t\telement.classList.remove(classNameActiveSlide);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tslides[currentIndex].classList.add(classNameActiveSlide);\r\n\t}\r\n\r\n\t/**\r\n\t * private\r\n\t * setupInfinite: function to setup if infinite is set\r\n\t *\r\n\t * @param {array} slideArray\r\n\t * @return {array} array of updated slideContainer elements\r\n\t */\r\n\tfunction setupInfinite(slideArray) {\r\n\t\tconst { infinite } = options;\r\n\r\n\t\tconst front = slideArray.slice(0, infinite);\r\n\t\tconst back = slideArray.slice(\r\n\t\t\tslideArray.length - infinite,\r\n\t\t\tslideArray.length\r\n\t\t);\r\n\r\n\t\tfront.forEach(function(element) {\r\n\t\t\tconst cloned = element.cloneNode(true);\r\n\r\n\t\t\tslideContainer.appendChild(cloned);\r\n\t\t});\r\n\r\n\t\tback.reverse().forEach(function(element) {\r\n\t\t\tconst cloned = element.cloneNode(true);\r\n\r\n\t\t\tslideContainer.insertBefore(cloned, slideContainer.firstChild);\r\n\t\t});\r\n\r\n\t\tslideContainer.addEventListener(\r\n\t\t\tprefixes.transitionEnd,\r\n\t\t\tonTransitionEnd\r\n\t\t);\r\n\r\n\t\treturn slice.call(slideContainer.children);\r\n\t}\r\n\r\n\t/**\r\n\t * [dispatchSliderEvent description]\r\n\t * @return {[type]} [description]\r\n\t */\r\n\tfunction dispatchSliderEvent(phase, type, detail) {\r\n\t\tdispatchEvent(slider, `${phase}.lory.${type}`, detail);\r\n\t}\r\n\r\n\t/**\r\n\t * translates to a given position in a given time in milliseconds\r\n\t *\r\n\t * @to {number} number in pixels where to translate to\r\n\t * @duration {number} time in milliseconds for the transistion\r\n\t * @ease {string} easing css property\r\n\t */\r\n\tfunction translate(to, duration, ease) {\r\n\t\tconst style = slideContainer && slideContainer.style;\r\n\r\n\t\tif (style) {\r\n\t\t\tstyle[prefixes.transition + 'TimingFunction'] = ease;\r\n\t\t\tstyle[prefixes.transition + 'Duration'] = duration + 'ms';\r\n\t\t\tstyle[prefixes.transform] = 'translateX(' + to + 'px)';\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * returns an element's width\r\n\t */\r\n\tfunction elementWidth(element) {\r\n\t\treturn element.getBoundingClientRect().width || element.offsetWidth;\r\n\t}\r\n\r\n\t/**\r\n\t * slidefunction called by prev, next & touchend\r\n\t *\r\n\t * determine nextIndex and slide to next postion\r\n\t * under restrictions of the defined options\r\n\t *\r\n\t * @direction {boolean}\r\n\t */\r\n\tfunction slide(nextIndex, direction) {\r\n\t\tconst {\r\n\t\t\tslideSpeed,\r\n\t\t\tslidesToScroll,\r\n\t\t\tinfinite,\r\n\t\t\trewind,\r\n\t\t\trewindPrev,\r\n\t\t\trewindSpeed,\r\n\t\t\tease,\r\n\t\t\tclassNameActiveSlide,\r\n\t\t\tclassNameDisabledNextCtrl = 'disabled',\r\n\t\t\tclassNameDisabledPrevCtrl = 'disabled'\r\n\t\t} = options;\r\n\r\n\t\tlet duration = slideSpeed;\r\n\r\n\t\tconst nextSlide = direction ? index + 1 : index - 1;\r\n\t\tconst maxOffset = Math.round(slidesWidth - frameWidth);\r\n\r\n\t\tdispatchSliderEvent('before', 'slide', {\r\n\t\t\tindex,\r\n\t\t\tnextSlide\r\n\t\t});\r\n\r\n\t\t/**\r\n\t\t * Reset control classes\r\n\t\t */\r\n\t\tif (prevCtrl) {\r\n\t\t\tprevCtrl.classList.remove(classNameDisabledPrevCtrl);\r\n\t\t}\r\n\t\tif (nextCtrl) {\r\n\t\t\tnextCtrl.classList.remove(classNameDisabledNextCtrl);\r\n\t\t}\r\n\r\n\t\tif (typeof nextIndex !== 'number') {\r\n\t\t\tif (direction) {\r\n\t\t\t\tif (infinite && index + infinite * 2 !== slides.length) {\r\n\t\t\t\t\tnextIndex = index + (infinite - (index % infinite));\r\n\t\t\t\t} else {\r\n\t\t\t\t\tnextIndex = index + slidesToScroll;\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tif (infinite && index % infinite !== 0) {\r\n\t\t\t\t\tnextIndex = index - (index % infinite);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tnextIndex = index - slidesToScroll;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tnextIndex = Math.min(Math.max(nextIndex, 0), slides.length - 1);\r\n\r\n\t\tif (infinite && direction === undefined) {\r\n\t\t\tnextIndex += infinite;\r\n\t\t}\r\n\r\n\t\tif (rewindPrev && Math.abs(position.x) === 0 && direction === false) {\r\n\t\t\tnextIndex = slides.length - 1;\r\n\t\t\tduration = rewindSpeed;\r\n\t\t}\r\n\r\n\t\tlet nextOffset = Math.min(\r\n\t\t\tMath.max(slides[nextIndex].offsetLeft * -1, maxOffset * -1),\r\n\t\t\t0\r\n\t\t);\r\n\r\n\t\tif (rewind && Math.abs(position.x) === maxOffset && direction) {\r\n\t\t\tnextOffset = 0;\r\n\t\t\tnextIndex = 0;\r\n\t\t\tduration = rewindSpeed;\r\n\t\t}\r\n\r\n\t\t/**\r\n\t\t * translate to the nextOffset by a defined duration and ease function\r\n\t\t */\r\n\t\ttranslate(nextOffset, duration, ease);\r\n\r\n\t\t/**\r\n\t\t * update the position with the next position\r\n\t\t */\r\n\t\tposition.x = nextOffset;\r\n\r\n\t\t/**\r\n\t\t * update the index with the nextIndex only if\r\n\t\t * the offset of the nextIndex is in the range of the maxOffset\r\n\t\t */\r\n\t\tif (slides[nextIndex].offsetLeft <= maxOffset) {\r\n\t\t\tindex = nextIndex;\r\n\t\t}\r\n\t\t// HACK: OPTEN FIX\r\n\t\telse if (!infinite) {\r\n\t\t\tindex = slides.length - options.slidesToScroll;\r\n\t\t}\r\n\r\n\t\tif (\r\n\t\t\tinfinite &&\r\n\t\t\t(nextIndex === slides.length - infinite ||\r\n\t\t\t\tnextIndex === slides.length - (slides.length % infinite) ||\r\n\t\t\t\tnextIndex === 0)\r\n\t\t) {\r\n\t\t\tif (direction) {\r\n\t\t\t\tindex = infinite;\r\n\t\t\t}\r\n\r\n\t\t\tif (!direction) {\r\n\t\t\t\tindex = slides.length - infinite * 2;\r\n\t\t\t}\r\n\r\n\t\t\tposition.x = slides[index].offsetLeft * -1;\r\n\r\n\t\t\ttransitionEndCallback = function() {\r\n\t\t\t\ttranslate(slides[index].offsetLeft * -1, 0, undefined);\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\tif (classNameActiveSlide) {\r\n\t\t\tsetActiveElement(slice.call(slides), index);\r\n\t\t}\r\n\r\n\t\t/**\r\n\t\t * update classes for next and prev arrows\r\n\t\t * based on user settings\r\n\t\t */\r\n\t\tif (prevCtrl && !infinite && !rewindPrev && nextIndex === 0) {\r\n\t\t\tprevCtrl.classList.add(classNameDisabledPrevCtrl);\r\n\t\t}\r\n\r\n\t\tif (\r\n\t\t\tnextCtrl &&\r\n\t\t\t!infinite &&\r\n\t\t\t!rewind &&\r\n\t\t\tnextIndex + 1 === slides.length\r\n\t\t) {\r\n\t\t\tnextCtrl.classList.add(classNameDisabledNextCtrl);\r\n\t\t}\r\n\r\n\t\tdispatchSliderEvent('after', 'slide', {\r\n\t\t\tcurrentSlide: index\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * public\r\n\t * setup function\r\n\t */\r\n\tfunction setup() {\r\n\t\tdispatchSliderEvent('before', 'init');\r\n\r\n\t\tprefixes = detectPrefixes();\r\n\t\toptions = { ...defaults, ...opts };\r\n\r\n\t\tconst {\r\n\t\t\tclassNameFrame,\r\n\t\t\tclassNameSlideContainer,\r\n\t\t\tclassNamePrevCtrl,\r\n\t\t\tclassNameNextCtrl,\r\n\t\t\tclassNameDisabledNextCtrl = 'disabled',\r\n\t\t\tclassNameDisabledPrevCtrl = 'disabled',\r\n\t\t\tenableMouseEvents,\r\n\t\t\tclassNameActiveSlide,\r\n\t\t\tinitialIndex\r\n\t\t} = options;\r\n\r\n\t\tindex = initialIndex;\r\n\t\tframe = slider.getElementsByClassName(classNameFrame)[0];\r\n\t\tslideContainer = frame.getElementsByClassName(\r\n\t\t\tclassNameSlideContainer\r\n\t\t)[0];\r\n\t\tprevCtrl = slider.getElementsByClassName(classNamePrevCtrl)[0];\r\n\t\tnextCtrl = slider.getElementsByClassName(classNameNextCtrl)[0];\r\n\r\n\t\tposition = {\r\n\t\t\tx: slideContainer.offsetLeft,\r\n\t\t\ty: slideContainer.offsetTop\r\n\t\t};\r\n\r\n\t\tif (options.infinite) {\r\n\t\t\tslides = setupInfinite(slice.call(slideContainer.children));\r\n\t\t} else {\r\n\t\t\tslides = slice.call(slideContainer.children);\r\n\r\n\t\t\tif (prevCtrl && !options.rewindPrev) {\r\n\t\t\t\tprevCtrl.classList.add(classNameDisabledPrevCtrl);\r\n\t\t\t}\r\n\r\n\t\t\tif (nextCtrl && slides.length === 1 && !options.rewind) {\r\n\t\t\t\tnextCtrl.classList.add(classNameDisabledNextCtrl);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treset();\r\n\r\n\t\tif (classNameActiveSlide) {\r\n\t\t\tsetActiveElement(slides, index);\r\n\t\t}\r\n\r\n\t\tif (prevCtrl && nextCtrl) {\r\n\t\t\tprevCtrl.addEventListener('click', prev);\r\n\t\t\tnextCtrl.addEventListener('click', next);\r\n\t\t}\r\n\r\n\t\tframe.addEventListener('touchstart', onTouchstart, touchEventParams);\r\n\r\n\t\tif (enableMouseEvents) {\r\n\t\t\tframe.addEventListener('mousedown', onTouchstart);\r\n\t\t\tframe.addEventListener('click', onClick);\r\n\t\t}\r\n\r\n\t\toptions.window.addEventListener('resize', onResize);\r\n\r\n\t\tdispatchSliderEvent('after', 'init');\r\n\t}\r\n\r\n\t/**\r\n\t * public\r\n\t * reset function: called on resize\r\n\t */\r\n\tfunction reset() {\r\n\t\tvar {\r\n\t\t\tinfinite,\r\n\t\t\tease,\r\n\t\t\trewindSpeed,\r\n\t\t\trewindOnResize,\r\n\t\t\tclassNameActiveSlide,\r\n\t\t\tinitialIndex\r\n\t\t} = options;\r\n\r\n\t\tslidesWidth = elementWidth(slideContainer);\r\n\t\tframeWidth = elementWidth(frame);\r\n\r\n\t\tif (frameWidth === slidesWidth) {\r\n\t\t\tslidesWidth = slides.reduce(function(previousValue, slide) {\r\n\t\t\t\treturn previousValue + elementWidth(slide);\r\n\t\t\t}, 0);\r\n\t\t}\r\n\r\n\t\tif (rewindOnResize) {\r\n\t\t\tindex = initialIndex;\r\n\t\t} else {\r\n\t\t\tease = null;\r\n\t\t\trewindSpeed = 0;\r\n\t\t}\r\n\r\n\t\tif (infinite) {\r\n\t\t\ttranslate(slides[index + infinite].offsetLeft * -1, 0, null);\r\n\r\n\t\t\tindex = index + infinite;\r\n\t\t\tposition.x = slides[index].offsetLeft * -1;\r\n\t\t} else {\r\n\t\t\ttranslate(slides[index].offsetLeft * -1, rewindSpeed, ease);\r\n\t\t\tposition.x = slides[index].offsetLeft * -1;\r\n\t\t}\r\n\r\n\t\tif (classNameActiveSlide) {\r\n\t\t\tsetActiveElement(slice.call(slides), index);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * public\r\n\t * slideTo: called on clickhandler\r\n\t */\r\n\tfunction slideTo(index) {\r\n\t\tslide(index);\r\n\t}\r\n\r\n\t/**\r\n\t * public\r\n\t * returnIndex function: called on clickhandler\r\n\t */\r\n\tfunction returnIndex() {\r\n\t\treturn index - options.infinite || 0;\r\n\t}\r\n\r\n\t/**\r\n\t * public\r\n\t * prev function: called on clickhandler\r\n\t */\r\n\tfunction prev() {\r\n\t\tslide(false, false);\r\n\t}\r\n\r\n\t/**\r\n\t * public\r\n\t * next function: called on clickhandler\r\n\t */\r\n\tfunction next() {\r\n\t\tslide(false, true);\r\n\t}\r\n\r\n\t/**\r\n\t * public\r\n\t * destroy function: called to gracefully destroy the lory instance\r\n\t */\r\n\tfunction destroy() {\r\n\t\tdispatchSliderEvent('before', 'destroy');\r\n\r\n\t\t// remove event listeners\r\n\t\tframe.removeEventListener(prefixes.transitionEnd, onTransitionEnd);\r\n\t\tframe.removeEventListener('touchstart', onTouchstart, touchEventParams);\r\n\t\tframe.removeEventListener('touchmove', onTouchmove, touchEventParams);\r\n\t\tframe.removeEventListener('touchend', onTouchend);\r\n\t\tframe.removeEventListener('mousemove', onTouchmove);\r\n\t\tframe.removeEventListener('mousedown', onTouchstart);\r\n\t\tframe.removeEventListener('mouseup', onTouchend);\r\n\t\tframe.removeEventListener('mouseleave', onTouchend);\r\n\t\tframe.removeEventListener('click', onClick);\r\n\r\n\t\toptions.window.removeEventListener('resize', onResize);\r\n\r\n\t\tif (prevCtrl) {\r\n\t\t\tprevCtrl.removeEventListener('click', prev);\r\n\t\t}\r\n\r\n\t\tif (nextCtrl) {\r\n\t\t\tnextCtrl.removeEventListener('click', next);\r\n\t\t}\r\n\r\n\t\t// remove cloned slides if infinite is set\r\n\t\tif (options.infinite) {\r\n\t\t\tArray.apply(null, Array(options.infinite)).forEach(function() {\r\n\t\t\t\tslideContainer.removeChild(slideContainer.firstChild);\r\n\t\t\t\tslideContainer.removeChild(slideContainer.lastChild);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tdispatchSliderEvent('after', 'destroy');\r\n\t}\r\n\r\n\t// event handling\r\n\r\n\tlet touchOffset;\r\n\tlet delta;\r\n\tlet isScrolling;\r\n\r\n\tfunction onTransitionEnd() {\r\n\t\tif (transitionEndCallback) {\r\n\t\t\ttransitionEndCallback();\r\n\r\n\t\t\ttransitionEndCallback = undefined;\r\n\t\t}\r\n\t}\r\n\r\n\tfunction onTouchstart(event) {\r\n\t\tconst { enableMouseEvents } = options;\r\n\t\tconst touches = event.touches ? event.touches[0] : event;\r\n\r\n\t\tif (enableMouseEvents) {\r\n\t\t\tframe.addEventListener('mousemove', onTouchmove);\r\n\t\t\tframe.addEventListener('mouseup', onTouchend);\r\n\t\t\tframe.addEventListener('mouseleave', onTouchend);\r\n\t\t}\r\n\r\n\t\tframe.addEventListener('touchmove', onTouchmove, touchEventParams);\r\n\t\tframe.addEventListener('touchend', onTouchend);\r\n\r\n\t\tconst { pageX, pageY } = touches;\r\n\r\n\t\ttouchOffset = {\r\n\t\t\tx: pageX,\r\n\t\t\ty: pageY,\r\n\t\t\ttime: Date.now()\r\n\t\t};\r\n\r\n\t\tisScrolling = undefined;\r\n\r\n\t\tdelta = {};\r\n\r\n\t\tdispatchSliderEvent('on', 'touchstart', {\r\n\t\t\tevent\r\n\t\t});\r\n\t}\r\n\r\n\tfunction onTouchmove(event) {\r\n\t\tconst touches = event.touches ? event.touches[0] : event;\r\n\t\tconst { pageX, pageY } = touches;\r\n\r\n\t\tdelta = {\r\n\t\t\tx: pageX - touchOffset.x,\r\n\t\t\ty: pageY - touchOffset.y\r\n\t\t};\r\n\r\n\t\tif (typeof isScrolling === 'undefined') {\r\n\t\t\tisScrolling = !!(\r\n\t\t\t\tisScrolling || Math.abs(delta.x) < Math.abs(delta.y)\r\n\t\t\t);\r\n\t\t}\r\n\r\n\t\tif (!isScrolling && touchOffset) {\r\n\t\t\ttranslate(position.x + delta.x, 0, null);\r\n\t\t}\r\n\r\n\t\t// may be\r\n\t\tdispatchSliderEvent('on', 'touchmove', {\r\n\t\t\tevent\r\n\t\t});\r\n\t}\r\n\r\n\tfunction onTouchend(event) {\r\n\t\t/**\r\n\t\t * time between touchstart and touchend in milliseconds\r\n\t\t * @duration {number}\r\n\t\t */\r\n\t\tconst duration = touchOffset\r\n\t\t\t? Date.now() - touchOffset.time\r\n\t\t\t: undefined;\r\n\r\n\t\t/**\r\n\t\t * is valid if:\r\n\t\t *\r\n\t\t * -> swipe attempt time is over 300 ms\r\n\t\t * and\r\n\t\t * -> swipe distance is greater than 25px\r\n\t\t * or\r\n\t\t * -> swipe distance is more then a third of the swipe area\r\n\t\t *\r\n\t\t * @isValidSlide {Boolean}\r\n\t\t */\r\n\t\tconst isValid =\r\n\t\t\t(Number(duration) < 300 && Math.abs(delta.x) > 25) ||\r\n\t\t\tMath.abs(delta.x) > frameWidth / 3;\r\n\r\n\t\t/**\r\n\t\t * is out of bounds if:\r\n\t\t *\r\n\t\t * -> index is 0 and delta x is greater than 0\r\n\t\t * or\r\n\t\t * -> index is the last slide and delta is smaller than 0\r\n\t\t *\r\n\t\t * @isOutOfBounds {Boolean}\r\n\t\t */\r\n\t\tconst isOutOfBounds =\r\n\t\t\t(!index && delta.x > 0) ||\r\n\t\t\t(index === slides.length - 1 && delta.x < 0);\r\n\r\n\t\tconst direction = delta.x < 0;\r\n\r\n\t\tif (!isScrolling) {\r\n\t\t\tif (isValid && !isOutOfBounds) {\r\n\t\t\t\tslide(false, direction);\r\n\t\t\t} else {\r\n\t\t\t\ttranslate(position.x, options.snapBackSpeed);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\ttouchOffset = undefined;\r\n\r\n\t\t/**\r\n\t\t * remove eventlisteners after swipe attempt\r\n\t\t */\r\n\t\tframe.removeEventListener('touchmove', onTouchmove);\r\n\t\tframe.removeEventListener('touchend', onTouchend);\r\n\t\tframe.removeEventListener('mousemove', onTouchmove);\r\n\t\tframe.removeEventListener('mouseup', onTouchend);\r\n\t\tframe.removeEventListener('mouseleave', onTouchend);\r\n\r\n\t\tdispatchSliderEvent('on', 'touchend', {\r\n\t\t\tevent\r\n\t\t});\r\n\t}\r\n\r\n\tfunction onClick(event) {\r\n\t\tif (delta.x) {\r\n\t\t\tevent.preventDefault();\r\n\t\t}\r\n\t}\r\n\r\n\tfunction onResize(event) {\r\n\t\tif (frameWidth !== elementWidth(frame)) {\r\n\t\t\treset();\r\n\r\n\t\t\tdispatchSliderEvent('on', 'resize', {\r\n\t\t\t\tevent\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t// trigger initial setup\r\n\tsetup();\r\n\r\n\t// expose public api\r\n\treturn {\r\n\t\tsetup,\r\n\t\treset,\r\n\t\tslideTo,\r\n\t\treturnIndex,\r\n\t\tprev,\r\n\t\tnext,\r\n\t\tdestroy\r\n\t};\r\n}\r\n","/**\r\n * Detecting prefixes for saving time and bytes\r\n */\r\nexport default function detectPrefixes() {\r\n\tlet transform;\r\n\tlet transition;\r\n\tlet transitionEnd;\r\n\r\n\t(function() {\r\n\t\tlet el = document.createElement('_');\r\n\t\tlet style = el.style;\r\n\r\n\t\tlet prop;\r\n\r\n\t\tif (style[(prop = 'webkitTransition')] === '') {\r\n\t\t\ttransitionEnd = 'webkitTransitionEnd';\r\n\t\t\ttransition = prop;\r\n\t\t}\r\n\r\n\t\tif (style[(prop = 'transition')] === '') {\r\n\t\t\ttransitionEnd = 'transitionend';\r\n\t\t\ttransition = prop;\r\n\t\t}\r\n\r\n\t\tif (style[(prop = 'webkitTransform')] === '') {\r\n\t\t\ttransform = prop;\r\n\t\t}\r\n\r\n\t\tif (style[(prop = 'msTransform')] === '') {\r\n\t\t\ttransform = prop;\r\n\t\t}\r\n\r\n\t\tif (style[(prop = 'transform')] === '') {\r\n\t\t\ttransform = prop;\r\n\t\t}\r\n\r\n\t\tdocument.body.insertBefore(el, null);\r\n\t\tstyle[transform] = 'translateX(0)';\r\n\t\tdocument.body.removeChild(el);\r\n\t})();\r\n\r\n\treturn {\r\n\t\ttransform,\r\n\t\ttransition,\r\n\t\ttransitionEnd\r\n\t};\r\n}\r\n","export default function detectSupportsPassive() {\r\n\tlet supportsPassive = false;\r\n\r\n\ttry {\r\n\t\tlet opts = Object.defineProperty({}, 'passive', {\r\n\t\t\tget() {\r\n\t\t\t\tsupportsPassive = true;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\twindow.addEventListener('testPassive', null, opts);\r\n\t\twindow.removeEventListener('testPassive', null, opts);\r\n\t} catch (e) {}\r\n\r\n\treturn supportsPassive;\r\n}\r\n","/**\r\n * dispatch custom events\r\n *\r\n * @param {element} el slideshow element\r\n * @param {string} type custom event name\r\n * @param {object} detail custom detail information\r\n */\r\nexport default function dispatchEvent(target, type, detail) {\r\n\tlet event = new CustomEvent(type, {\r\n\t\tbubbles: true,\r\n\t\tcancelable: true,\r\n\t\tdetail: detail\r\n\t});\r\n\r\n\ttarget.dispatchEvent(event);\r\n}\r\n","import { dispatchCustomEvent } from '@opten/events/dispatch-custom-event';\r\nimport { getTransitionEndEventName } from '../get-transition-end-event-name';\r\n\r\nconst transitionEndEventName = getTransitionEndEventName();\r\n\r\nexport function addTransitionEndListener(\r\n\telement: Element,\r\n\tcallback: () => void,\r\n\tfallbackDuration = 0,\r\n\tremove = true\r\n): void {\r\n\tlet called = false;\r\n\tconst listener = (event: Event) => {\r\n\t\tcalled = true;\r\n\t\tif (remove) {\r\n\t\t\telement.removeEventListener(\r\n\t\t\t\ttransitionEndEventName as string,\r\n\t\t\t\tlistener\r\n\t\t\t);\r\n\t\t}\r\n\t\tcallback();\r\n\t};\r\n\r\n\tif (transitionEndEventName === false) {\r\n\t\tsetTimeout(() => {\r\n\t\t\tcallback();\r\n\t\t}, fallbackDuration);\r\n\t} else {\r\n\t\telement.addEventListener(transitionEndEventName, listener);\r\n\t\t// https://github.com/twbs/bootstrap/blob/v4.0.0/js/src/util.js#L49\r\n\t\tif (fallbackDuration) {\r\n\t\t\tsetTimeout(() => {\r\n\t\t\t\tif (!called) {\r\n\t\t\t\t\tdispatchCustomEvent(element, transitionEndEventName);\r\n\t\t\t\t}\r\n\t\t\t}, fallbackDuration);\r\n\t\t}\r\n\t}\r\n}\r\n","export function getTransitionEndEventName(): string | false {\r\n\tconst element = document.createElement('_');\r\n\tconst transitions = {\r\n\t\tWebkitTransition: 'webkitTransitionEnd',\r\n\t\ttransition: 'transitionend',\r\n\t};\r\n\r\n\tfor (const transition in transitions) {\r\n\t\tif (element.style[transition] !== undefined) {\r\n\t\t\treturn transitions[transition];\r\n\t\t}\r\n\t}\r\n\r\n\treturn false;\r\n}\r\n","export function removeDomain(url: string) {\r\n\treturn url.replace(/^[a-z]{4,5}\\:\\/{2}[a-z0-9\\.]{1,}[\\:]{0,1}[0-9]{0,4}(.*)/, '$1');\r\n}\r\n"],"sourceRoot":""}