{"version":3,"sources":["webpack://opten.radix/./app/radix.ts","webpack://opten.radix/./app/components/radix/navbar.ts","webpack://opten.radix/./app/components/shared/alert.ts","webpack://opten.radix/./app/components/shared/datepicker.ts","webpack://opten.radix/./app/components/shared/filter-helper.ts","webpack://opten.radix/./app/components/shared/filter.ts","webpack://opten.radix/./app/components/shared/form-checkboxes.ts","webpack://opten.radix/./app/components/shared/form-select-updater.ts","webpack://opten.radix/./app/components/shared/form-templates.ts","webpack://opten.radix/./app/components/shared/form-total.ts","webpack://opten.radix/./app/components/shared/globalvars.ts","webpack://opten.radix/./app/components/shared/grid.ts","webpack://opten.radix/./app/components/shared/headline-slider.ts","webpack://opten.radix/./app/components/shared/input.ts","webpack://opten.radix/./app/components/shared/interactive-svg.ts","webpack://opten.radix/./app/components/shared/map-searcher.ts","webpack://opten.radix/./app/components/shared/map.ts","webpack://opten.radix/./app/components/shared/media-slider.ts","webpack://opten.radix/./app/components/shared/modal.ts","webpack://opten.radix/./app/components/shared/page-top.ts","webpack://opten.radix/./app/components/shared/page-transition.ts","webpack://opten.radix/./app/components/shared/password-reveal.ts","webpack://opten.radix/./app/components/shared/recaptcha.ts","webpack://opten.radix/./app/components/shared/scroll-to.ts","webpack://opten.radix/./app/components/shared/sidebar.ts","webpack://opten.radix/./app/components/shared/sticky.ts","webpack://opten.radix/./app/components/shared/tabdrop.ts","webpack://opten.radix/./app/components/shared/text-slider.ts","webpack://opten.radix/../node_modules/babel-plugin-transform-async-to-promises/helpers.js","webpack://opten.radix/../src/modules/Logger.ts","webpack://opten.radix/../node_modules/path-to-regexp/index.js","webpack://opten.radix/../src/schemas/attribute.ts","webpack://opten.radix/../src/utils/dom.ts","webpack://opten.radix/../src/utils/history.ts","webpack://opten.radix/../src/utils/helpers.ts","webpack://opten.radix/../src/utils/url.ts","webpack://opten.radix/../src/utils/request.ts","webpack://opten.radix/../node_modules/is-promise/index.js","webpack://opten.radix/../src/utils/run-async.ts","webpack://opten.radix/../src/hooks.ts","webpack://opten.radix/../src/defs/hooks.ts","webpack://opten.radix/../src/modules/Ignore.ts","webpack://opten.radix/../src/modules/Cache.ts","webpack://opten.radix/../src/modules/Prevent.ts","webpack://opten.radix/../src/modules/Error.ts","webpack://opten.radix/../src/modules/Store.ts","webpack://opten.radix/../src/modules/Transitions.ts","webpack://opten.radix/../src/modules/Views.ts","webpack://opten.radix/../src/polyfills/index.ts","webpack://opten.radix/../src/schemas/page.ts","webpack://opten.radix/../src/core.ts","webpack://opten.radix/../src/css.ts","webpack://opten.radix/./node_modules/@easepick/base-plugin/dist/index.esm.js","webpack://opten.radix/./node_modules/@easepick/core/dist/index.esm.js","webpack://opten.radix/./node_modules/@easepick/datetime/dist/index.esm.js","webpack://opten.radix/./node_modules/@easepick/lock-plugin/dist/index.esm.js","webpack://opten.radix/./node_modules/@easepick/time-plugin/dist/index.esm.js","webpack://opten.radix/./node_modules/@opten/animation/linear-tween/index.ts","webpack://opten.radix/./node_modules/@opten/collapse/index.ts","webpack://opten.radix/./node_modules/@opten/collapse/initializer/index.ts","webpack://opten.radix/./node_modules/@opten/compiler/factory/index.ts","webpack://opten.radix/./node_modules/@opten/compiler/index.ts","webpack://opten.radix/./node_modules/@opten/compiler/metadata/component.ts","webpack://opten.radix/./node_modules/@opten/compiler/reflector/index.ts","webpack://opten.radix/./node_modules/@opten/compiler/resolver/index.ts","webpack://opten.radix/./node_modules/@opten/compiler/util/decorators.ts","webpack://opten.radix/./node_modules/@opten/compiler/util/factories.ts","webpack://opten.radix/./node_modules/@opten/compiler/util/type.ts","webpack://opten.radix/./node_modules/@opten/cookie/get/index.ts","webpack://opten.radix/./node_modules/@opten/cookie/set/index.ts","webpack://opten.radix/./node_modules/@opten/dom/add-class-factory/index.ts","webpack://opten.radix/./node_modules/@opten/dom/add-class/index.ts","webpack://opten.radix/./node_modules/@opten/dom/as-html-element/index.ts","webpack://opten.radix/./node_modules/@opten/dom/change-class/index.ts","webpack://opten.radix/./node_modules/@opten/dom/class-regex/index.ts","webpack://opten.radix/./node_modules/@opten/dom/get-class/index.ts","webpack://opten.radix/./node_modules/@opten/dom/get-selector-element-from-element/index.ts","webpack://opten.radix/./node_modules/@opten/dom/get-selector-from-element/index.ts","webpack://opten.radix/./node_modules/@opten/dom/get-window-scroll-top/index.ts","webpack://opten.radix/./node_modules/@opten/dom/has-class/index.ts","webpack://opten.radix/./node_modules/@opten/dom/is-html-element/index.ts","webpack://opten.radix/./node_modules/@opten/dom/remove-class/index.ts","webpack://opten.radix/./node_modules/@opten/dom/toggle-class/index.ts","webpack://opten.radix/./node_modules/@opten/events/dispatch-custom-event/index.ts","webpack://opten.radix/./node_modules/@opten/events/event-dispatcher/index.ts","webpack://opten.radix/./node_modules/@opten/events/event-namespace-factory/index.ts","webpack://opten.radix/./node_modules/@opten/map-helpers/fit-bounds-with-padding/index.ts","webpack://opten.radix/./node_modules/@opten/reactive/debounce/index.ts","webpack://opten.radix/./node_modules/@opten/scroll/scroll-to-element/index.ts","webpack://opten.radix/./node_modules/@opten/scroll/scroll-to-offset/index.ts","webpack://opten.radix/./node_modules/@opten/scroll/scroll-to/index.ts","webpack://opten.radix/./node_modules/@opten/transition/add-transition-end-listener/index.ts","webpack://opten.radix/./node_modules/@opten/transition/get-transition-end-event-name/index.ts","webpack://opten.radix/webpack/bootstrap"],"names":["initialize","NavbarComponent","Component","className","element","modalOffset","maxMobile","this","toggler","Array","from","getElementsByClassName","subItems","subItemsToggler","forEach","addEventListener","e","preventDefault","window","scrollTo","toggleClass","document","body","subItem","isOpen","hasClass","modal","nextElementSibling","left","pageX","top","pageY","scrollY","setModalPos","filter","o","removeClass","debounce","rect","getBoundingClientRect","width","height","target","closest","setNavSize","documentElement","style","setProperty","offsetHeight","innerWidth","clientWidth","clientHeight","innerHeight","removeAttribute","AlertComponent","closer","querySelector","close","setTimeout","addClass","remove","DatepickerComponent","disabledWeekDays","getAttribute","enableTime","plugins","LockPlugin","push","TimePlugin","datePicker","easepick","create","css","lang","zIndex","format","readonly","date","value","minDate","min","maxDate","max","picked","indexOf","getDay","toString","setup","picker","on","event","Event","bubbles","cancelable","dispatchEvent","gotoDate","FilterHelper","options","filterGroups","tags","defaults","form","filterFormSelector","substring","emptyState","modals","filters","querySelectorAll","filterControlSelector","search","tagContainer","tagTemplate","closeModal","tag","removeFilterItem","toggleEmptyState","onReset","onSubmit","type","self","connected","filterSame","name","filterAll","checked","find","every","length","all","some","option","selected","innerHTML","FormData","title","addFilterItem","temp","createElement","cloneNode","setAttribute","appendChild","outerHTML","replace","firstChild","firstElementChild","defaultValue","onRemoveFilter","show","FilterComponent","targetSelector","sortSelector","pageListSelector","pageList","sortControls","mixer","activeFilter","getFilterGroupSelectors","setFilterGroupSelectors","parseFilterGroups","selectors","control","controls","scope","toggleLogic","enable","multifilter","parseOn","callbacks","onParseFilterGroups","command","updateTags","onMixStart","state","futureState","totalShow","onMixEnd","onMixClick","originalEvent","mergeDeep","classNames","elementPager","pagination","limit","maintainActivePage","hidePageListIfSinglePage","generatePageStats","templates","pagerPrev","pagerNext","initPager","mixitup","sort","collapse","Collapse","getInstance","parentElement","hide","params","URL","location","searchParams","events","key","tagName","t","changeEvent","Object","keys","pagerControls","dataPage","paginate","sources","source","shift","isObject","item","isArray","FormCheckboxesComponent","sameInputs","hasAttribute","input","checkRequired","scrollToSelected","firstChecked","offsetTop","parseInt","getComputedStyle","marginTop","hasSomeChecked","required","FormSelectUpdateComponent","items","targets","setupItem","FormTemplatesComponent","onFieldAdded","subscribe","field","update","onFieldRemoved","updateRemoving","updateTargets","oldValue","newValue","add","text","i","opt","concat","createTargets","splice","undefined","Number","MAX_SAFE_INTEGER","shadow","shadowInput","namePrefix","idPrefix","id","template","adder","initItem","checkRemover","checkAdder","newItem","newHtmlItem","parentNode","insertBefore","nextSibling","newIndex","replaceAll","dispatch","updateIndex","remover","index","regExp","RegExp","escapeRegExp","elem","string","EventDispatcher","FormTotalComponent","total","inputs","updateTotal","factor","parseFloat","GlobalVarsComponent","setGlobalVars","GridComponent","grid","Isotope","itemSelector","layoutMode","arrange","HeadlineSliderComponent","slider","sliderImg","autoplay","swiperImg","Swiper","speed","effect","fadeEffect","crossFade","watchSlidesVisibility","watchSlidesProgress","delay","autoHeight","navigation","nextEl","prevEl","keyboard","enabled","onlyInViewport","thumbs","swiper","InputComponent","hasValueClass","isActiveClass","formField","valueShadows","labels","setValueClass","hasData","placeholder","updateInputHeight","toLowerCase","label","htmlFor","scrollHeight","InteractiveSvgComponent","file","triggers","trigger","click","MapSearcher","scrollWrapper","defaultOptions","cookieClass","mapClass","mapOverlayClass","mapScrollClass","locationClass","markerIcon","url","size","google","maps","Size","scaledSize","anchor","Point","clusterStyle","textColor","mapCenter","lat","lng","mapInitialZoom","maxZoom","mapStyles","radiusBounds","openIfSingleResult","hideCluster","locations","cantons","filterType","cookiePlaceholder","mapPlaceholder","mapOverlay","mapScroll","PageTopComponent","updateValuesByUrl","map","createMapLocation","l","markerClick","visible","getSelectorElementFromElement","overview","dispatchCustomEvent","centerMap","scrollToOffset","getScrollTop","getScrollTarget","marker","addListener","isActive","actives","loc","active","hideCollapse","LatLngBounds","latLng","showCollapse","cookiebotInit","Cookiebot","consent","marketing","infowindow","InfoWindow","content","Map","zoom","center","fullscreenControl","mapTypeControl","streetViewControl","styles","gestureHandling","addListenerOnce","oms","OverlappingMarkerSpiderfier","markersWontMove","markersWontHide","basicFormatEvents","circleFootSeparation","Math","nearbyDistance","markerCluster","MarkerClusterer","zoomOnClick","setCalculator","markers","numStyles","cluster","theBounds","getBounds","geoCoder","Geocoder","data","loadGeoJson","features","feature","bounds","getGeometry","forEachLatLng","extend","getProperty","setStyle","strokeColor","strokeOpacity","strokeWeight","fillColor","fillOpacity","clickable","setMap","addMarker","hash","hashArray","split","clear","startsWith","decodeURI","tagsAttr","searchAttr","iconUrl","iconColor","iconColorActive","iconColorHit","setupMarker","LatLng","Marker","position","icon","getMarkerTemplate","markerSettings","history","pushState","formData","activeFilters","activeFiltersGrouped","reduce","arr","ob","x","activeCantons","getSearchBounds","then","clearMarkers","searchAddress","getSearchAddress","join","setUrlHash","searchCondition","hideLocation","locationBounds","accumulateLocationBounds","addRadiusToBounds","furtherLocations","contains","showLocation","canton","isActiveCanton","getNorthEast","getSouthWest","overrideStyle","activeLocations","group","hit","setIcon","removeMarker","isExactPos","bottom","right","offsetWidth","fitBoundsWithPadding","setZoom","y","panBy","getZoom","radius","ne","geometry","spherical","computeOffset","sw","allIfEmpty","visibles","Promise","resolve","address","previousAddress","previousBounds","geocode","region","results","status","GeocoderStatus","OK","union","trim","color","encodeURIComponent","callback","inner","Window","scrollTop","MapComponent","infoWindow","mapHolder","parseLocation","init","instance","disableDefaultUI","scrollwheel","MapStyles","button","showAllLocations","div","infobox","latlng","fontFamily","fontSize","href","scrollToElement","setContent","open","setCenter","fitBounds","elementType","stylers","visibility","featureType","weight","MediaSliderComponent","el","parallax","updateAutoHeight","ModalComponent","cookieKey","cookieDays","getCookie","stopPropagation","closeEvent","Date","setDate","getDate","setCookie","wrapper","setVisibility","getWindowScrollTop","PageTransitionComponent","barba","hooks","afterOnce","after","onPageChange","next","container","runScripts","enter","startAt","pos","offset","leave","current","namespace","use","barbaCss","timeout","prevent","transitions","to","requestError","action","response","PasswordRevealComponent","ReCaptchaComponent","grecaptcha","ready","render","ScrollToComponent","navbar","offsetString","isNaN","SidebarComponent","closers","segment","otherTriggers","otherTrigger","ignoreHistory","segmentAndFilter","filterActive","replaceState","mapSearcher","reInit","fetch","method","cache","credentials","headers","children","catch","error","StickyComponent","ignoreObserver","IntersectionObserver","boundingClientRect","intersectionRatio","threshold","rootMargin","observe","TabDropComponent","tabdrop","TabDrop","itemHolder","listChildren","child","layout","containerWidth","cummulatedWidth","removeClassFactory","breakIndex","getBreakIndex","overlappingChildren","slice","overlapping","onTransform","addClassFactory","offsetLeft","TextSliderComponent","paginations","renderBullet","_catch","recover","result","LogLevels","Symbol","iterator","asyncIterator","_level","off","Logger","_source","getLevel","setLevel","objects","_log","console","warn","warning","info","debug","log","fn","level","apply","pathToRegexp","regexpToFunction","parse","tokensToFunction","tokensToRegExp","PATH_REGEXP","str","res","tokens","path","defaultDelimiter","delimiter","whitelist","pathEscaped","exec","m","escaped","prev","capture","modifier","k","c","pattern","prefix","optional","repeat","escapeGroup","escapeString","substr","re","pathname","decode","decodeURIComponent","matches","flags","encode","validate","token","TypeError","j","test","String","sensitive","strict","start","end","endsWith","route","endToken","isEndDelimited","groups","match","regexpToRegexp","parts","arrayToRegexp","stringToRegexp","schemaAttribute","dom","DOMParser","toDocument","htmlString","_parser","parseFromString","toElement","getHtml","doc","getWrapper","_attr","getContainer","removeContainer","removeChild","addContainer","existingContainer","_insertAfter","getNamespace","ns","n","getHref","resolveUrl","baseVal","urls","numUrls","Error","base","arguments","head","getElementsByTagName","resolved","a","newNode","referenceNode","_session","scroll","scrollX","_states","_pointer","states","change","_getDirection","_getAction","get","set","pop","newStates","attr","diff","abs","page","html","nextDocument","ptr","requestAnimationFrame","getOrigin","origin","getPort","port","portString","query","hashIndex","queryIndex","parseQuery","acc","clean","request","ttl","reject","xhr","XMLHttpRequest","onreadystatechange","readyState","DONE","responseText","statusText","ontimeout","err","onerror","setRequestHeader","send","obj","runAsync","func","ctx","args","async","promise","answer","isPromise","_this","registered","_this2","hook","has","Set","chain","_this3","logger","_this4","help","HookMethods","Ignore","ignore","_ignoreAll","paths","_ignoreRegexes","p","checkHref","regex","Cache","_state","getRequest","getAction","exists","newTab","which","metaKey","ctrlKey","shiftKey","altKey","blank","corsDomain","protocol","hostname","corsPort","download","preventSelf","preventAll","Boolean","sameUrl","Prevent","check","suite","tests","run","checkLink","BarbaError","captureStackTrace","Store","_rules","once","matching","valid","reverse","_check","rule","activeMatch","transitionType","infos","_addPriority","b","priority","transition","direction","isValid","hasMatch","strRule","objRule","fnName","names","_calculatePriority","ruleName","ruleIndex","pow","Transitions","store","doOnce","_running","_doAsyncHook","doPage","f","sync","_isTransitionError","leaveResult","helpers","values","message","Views","views","byNamespace","view","_createHook","Element","prototype","msMatchesSelector","webkitMatchesSelector","s","nodeType","schemaPage","plugin","installedPlugins","install","schema","cacheIgnore","prefetchIgnore","preventRunning","preventCustom","logLevel","version","_requestCustomError","_wrapper","_resetData","_onLinkEnter","bind","_onLinkClick","_onStateChange","_bind","onceData","destroy","_unbind","force","assign","go","isRunning","getPath","hasSelf","readyData","hasOnce","onRequestError","shouldWait","prefetch","_this5","removeEventListener","link","_getLinkElement","_this6","_data","_once","_leave","_enter","before","_getPrefix","beforeOnce","_beforeOnce","_afterOnce","beforeLeave","_beforeLeave","afterLeave","_afterLeave","beforeEnter","_beforeEnter","afterEnter","_afterEnter","unshift","kind","nextTick","_hasTransition","_checkTransition","cb","step","classList","transitionDuration","dependencies","getName","includes","dependenciesNotFound","pluginsAsStringArray","camelCaseToKebab","ui","onAttach","onDetach","setHours","header","clone","autoApply","HTMLElement","calendars","getCalendarHeaderView","getCalendarDayNamesView","getCalendarDaysView","r","getCalendarFooterView","locale","cancel","disabled","toLocaleString","month","previousMonth","nextMonth","firstDay","weekday","dayIdx","calcOffsetDays","getFullYear","getMonth","getCalendarDayView","dataset","time","getTime","isSame","datePicked","instances","hasOwnProperty","call","attach","getPluginFn","detach","removeInstance","addInstance","Calendar","PluginManager","cssLoaded","binds","hidePicker","inline","documentClick","shadowRoot","handleOptions","display","pointerEvents","attachShadow","mode","handleCSS","onView","onRender","parseValues","onClick","renderAll","CustomEvent","detail","isCalendarHeaderButton","subtract","isCalendarDay","isApplyButton","isCancelButton","onClickHeaderButton","onClickCalendarDay","onClickApplyButton","onClickCancelButton","isShown","adjustPosition","updateValues","HTMLInputElement","innerText","composedPath","getRootNode","host","readOnly","rel","append","createTextNode","freeze","__proto__","Core","parseDateTime","midnight_ts","setMonth","ceil","isBetween","round","entries","formatTokens","shortMonths","longMonths","getHours","getMinutes","getSeconds","toJSDate","year","shortMonth","longMonth","day","hour","minute","second","ampm","formatPatterns","h","g","u","d","M","MONTH_JS","minDays","maxDays","selectForward","selectBackward","presets","inseparable","isSameOrBefore","isSameOrAfter","testFilter","isBefore","isAfter","rangeIsNotAvailable","dateIsNotAvailable","lockMinDate","lockMaxDate","lockMinDays","lockMaxDays","lockSelectForward","lockSelectBackward","native","seconds","stepHours","stepMinutes","stepSeconds","format12","timePicked","timePrePicked","getStartDate","getEndDate","onInput","onChange","setTime","setStartTime","setEndTime","_getDate","_getStartDate","_getEndDate","defineProperties","configurable","rangePlugin","getStartInput","getEndInput","getSingleInput","HTMLSelectElement","handleFormat12","startDate","endDate","handleTimeString","getNativeInput","getCustomInput","elementEnd","timeElapsed","distance","duration","CollapseComponent","stringCollapse","activeClass","activeParentClass","animateProp","collapsingClass","componentClass","showClass","showClassDesktop","desktopWidth","isHideable","closeSiblings","useShowClassDesktop","dataParentSelector","dataTargetSelector","dataToggleSelector","hrefSelector","isTransitioning","eventNamespaceFn","eventNamespaceFactory","handleClick","currentTarget","toggle","outerWidth","parent","selector","collapseInstance","_handleShow","_handleClose","_addAriaAndCollapsedClass","collapseElement","addTransitionEndListener","components","rootElement","observables","componentType","component","resolver","safeRootElement","node","compiler","compile","MutationObserver","mutations","componentInitializer","mutation","addedNodes","isHTMLElement","asHTMLElement","comps","childList","subtree","reflector","Reflector","Resolver","Compiler","componentCache","constructor","queries","propName","nodes","descendants","val","first","isType","onInit","makeDecorator","createComponent","makeMetadataFactory","typeOrFunc","parentCtor","getParentCtor","ownAnnotations","_ownAnnotations","annotations","propMetadata","parentPropMetadata","ownPropMetadata","_ownPropMetadata","decorators","ANNOTATIONS","PROP_METADATA","ctor","parentProto","getPrototypeOf","QUERY_METADATA_IDENTIFIERS","typeMetadata","metadata","findLast","metadataName","propertyMetadata","_mergeWithPropertyMetadata","_merge","mergedQueries","propertyName","_getQueryMetadata","q","read","condition","props","parentClass","chainFn","typeFn","metaCtor","makeMetadataCtor","DecoratorFactory","annotationInstance","typeDecorator","cls","defineProperty","PropDecoratorFactory","decoratorInstance","metaName","meta","factory","isTypeOf","v","Type","Function","cookie","domain","secure","expires","Infinity","toUTCString","keyStr","valueStr","domainStr","pathStr","secureStr","getClass","classRegexCache","attribute","fallbackHref","getSelectorFromElement","getElementById","pageYOffset","classRegex","nodeName","elements","changeClass","eventName","Subscription","handler","isOnce","isExecuted","subscriptions","sub","execute","cleanup","padding","projection","getProjection","point1","fromLatLngToPoint","point2","newPoint","fromPointToLatLng","wait","immediate","context","later","callNow","clearTimeout","animation","linearTween","animationFunction","timeStart","loop","fallbackDuration","called","listener","transitionEndEventName","getTransitionEndEventName","WebkitTransition","__webpack_module_cache__","__webpack_require__","moduleId","exports","module","__webpack_modules__"],"mappings":"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","file":"Scripts/radix.js","sourcesContent":["import { CollapseComponent } from '@opten/collapse';\r\nimport { factory } from '@opten/compiler/factory';\r\nimport { NavbarComponent } from './components/radix/navbar';\r\nimport { AlertComponent } from './components/shared/alert';\r\nimport { DatepickerComponent } from './components/shared/datepicker';\r\nimport { FilterComponent } from './components/shared/filter';\r\nimport { FormCheckboxesComponent } from './components/shared/form-checkboxes';\r\nimport { FormSelectUpdateComponent } from './components/shared/form-select-updater';\r\nimport { FormTemplatesComponent } from './components/shared/form-templates';\r\nimport { FormTotalComponent } from './components/shared/form-total';\r\nimport { GlobalVarsComponent } from './components/shared/globalvars';\r\nimport { GridComponent } from './components/shared/grid';\r\nimport { HeadlineSliderComponent } from './components/shared/headline-slider';\r\nimport { InputComponent } from './components/shared/input';\r\nimport { InteractiveSvgComponent } from './components/shared/interactive-svg';\r\nimport { MapComponent } from './components/shared/map';\r\nimport { MediaSliderComponent } from './components/shared/media-slider';\r\nimport { ModalComponent } from './components/shared/modal';\r\nimport { PageTopComponent } from './components/shared/page-top';\r\nimport { PageTransitionComponent } from './components/shared/page-transition';\r\nimport { PasswordRevealComponent } from './components/shared/password-reveal';\r\nimport { ReCaptchaComponent } from './components/shared/recaptcha';\r\nimport { ScrollToComponent } from './components/shared/scroll-to';\r\nimport { SidebarComponent } from './components/shared/sidebar';\r\nimport { StickyComponent } from './components/shared/sticky';\r\nimport { TabDropComponent } from './components/shared/tabdrop';\r\nimport { TextSliderComponent } from './components/shared/text-slider';\r\n\r\nconst initialize = factory([\r\n\tPageTransitionComponent,\r\n\tTabDropComponent,\r\n\tNavbarComponent,\r\n\tHeadlineSliderComponent,\r\n\tMediaSliderComponent,\r\n\tTextSliderComponent,\r\n\tModalComponent,\r\n\tFilterComponent,\r\n\tInputComponent,\r\n\tPasswordRevealComponent,\r\n\tDatepickerComponent,\r\n\tMapComponent,\r\n\tInteractiveSvgComponent,\r\n\tSidebarComponent,\r\n\tCollapseComponent,\r\n\tScrollToComponent,\r\n\tStickyComponent,\r\n\tReCaptchaComponent,\r\n\tPageTopComponent,\r\n\tGridComponent,\r\n\tFormTotalComponent,\r\n\tFormTemplatesComponent,\r\n\tFormCheckboxesComponent,\r\n\tFormSelectUpdateComponent,\r\n\tAlertComponent,\r\n]);\r\n\r\ninitialize(document.body);\r\n\r\nPageTransitionComponent.onPageChange.subscribe((container) => {\r\n\tinitialize(container);\r\n});\r\n\r\nSidebarComponent.onPageChange.subscribe((container) => {\r\n\tinitialize(container);\r\n});\r\n\r\nFormTemplatesComponent.onFieldAdded.subscribe((container) => {\r\n\tinitialize(container);\r\n});\r\n\r\nconst vars = new GlobalVarsComponent();\r\n","import { debounce } from '@opten/reactive/debounce';\r\nimport { Component } from '@opten/compiler/metadata/component';\r\nimport { toggleClass } from '@opten/dom/toggle-class';\r\nimport { hasClass } from '@opten/dom/has-class';\r\nimport { removeClass } from '@opten/dom/remove-class';\r\n\r\n@Component({ className: 'js-navbar' })\r\nexport class NavbarComponent {\r\n\tprivate toggler: HTMLElement[];\r\n\tprivate subItems: HTMLElement[];\r\n\tprivate subItemsToggler: HTMLElement[];\r\n\r\n\tprivate modalOffset = 50;\r\n\tprivate maxMobile = 767;\r\n\r\n\tconstructor(private element: HTMLElement) {\r\n\t\tthis.toggler = Array.from(\r\n\t\t\telement.getElementsByClassName('js-navbar-toggler')\r\n\t\t) as HTMLElement[];\r\n\t\tthis.subItems = Array.from(\r\n\t\t\telement.getElementsByClassName('js-navbar-sub-item')\r\n\t\t) as HTMLElement[];\r\n\t\tthis.subItemsToggler = Array.from(\r\n\t\t\telement.getElementsByClassName('js-navbar-sub-item-toggler')\r\n\t\t) as HTMLElement[];\r\n\r\n\t\tthis.toggler.forEach((toggler) => {\r\n\t\t\ttoggler.addEventListener('click', (e) => {\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\twindow.scrollTo(0, 0);\r\n\t\t\t\ttoggleClass(document.body, 'is-open');\r\n\t\t\t});\r\n\t\t});\r\n\r\n\t\tthis.subItems.forEach((subItem) => {\r\n\t\t\tsubItem.addEventListener('click', (e) => {\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\tconst isOpen = hasClass(subItem, 'is-open');\r\n\t\t\t\tconst modal = subItem.nextElementSibling as HTMLElement;\r\n\t\t\t\tconst left = e.pageX;\r\n\t\t\t\tconst top = e.pageY - window.scrollY;\r\n\t\t\t\tthis.setModalPos(left, top, modal);\r\n\t\t\t\tthis.subItems.filter((o) => removeClass(o, 'is-open'));\r\n\t\t\t\ttoggleClass(subItem, 'is-open', !isOpen);\r\n\t\t\t\twindow.addEventListener(\r\n\t\t\t\t\t'resize',\r\n\t\t\t\t\tdebounce(() => {\r\n\t\t\t\t\t\tconst rect = subItem.getBoundingClientRect();\r\n\t\t\t\t\t\tthis.setModalPos(\r\n\t\t\t\t\t\t\trect.left + rect.width / 2,\r\n\t\t\t\t\t\t\trect.top + rect.height / 2,\r\n\t\t\t\t\t\t\tmodal\r\n\t\t\t\t\t\t);\r\n\t\t\t\t\t}, 200)\r\n\t\t\t\t);\r\n\t\t\t});\r\n\t\t});\r\n\r\n\t\tthis.subItemsToggler.forEach((toggler) => {\r\n\t\t\ttoggler.addEventListener('click', (e) => {\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\tthis.subItems.filter((o) => removeClass(o, 'is-open'));\r\n\t\t\t});\r\n\t\t});\r\n\r\n\t\tdocument.addEventListener('click', (e) => {\r\n\t\t\tif (\r\n\t\t\t\thasClass(document.body, 'is-open') &&\r\n\t\t\t\t!e.target.closest('header')\r\n\t\t\t) {\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\ttoggleClass(document.body, 'is-open');\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\twindow.addEventListener(\r\n\t\t\t'resize',\r\n\t\t\tdebounce(() => {\r\n\t\t\t\tthis.setNavSize();\r\n\t\t\t}, 300)\r\n\t\t);\r\n\r\n\t\tthis.setNavSize();\r\n\t}\r\n\r\n\tprivate setNavSize() {\r\n\t\tdocument.documentElement.style.setProperty(\r\n\t\t\t'--navbar-height',\r\n\t\t\tthis.element.offsetHeight + 'px'\r\n\t\t);\r\n\t}\r\n\r\n\tprivate setModalPos(left: number, top: number, modal: HTMLElement) {\r\n\t\tif (window.innerWidth > this.maxMobile) {\r\n\t\t\tmodal.style.left =\r\n\t\t\t\tleft + modal.clientWidth + this.modalOffset < window.innerWidth\r\n\t\t\t\t\t? left - this.modalOffset + 'px'\r\n\t\t\t\t\t: window.innerWidth +\r\n\t\t\t\t\t 0 -\r\n\t\t\t\t\t this.modalOffset -\r\n\t\t\t\t\t modal.clientWidth +\r\n\t\t\t\t\t 'px';\r\n\t\t\tmodal.style.top =\r\n\t\t\t\ttop + modal.clientHeight + this.modalOffset < window.innerHeight\r\n\t\t\t\t\t? top - this.modalOffset + 'px'\r\n\t\t\t\t\t: window.innerHeight +\r\n\t\t\t\t\t 0 -\r\n\t\t\t\t\t this.modalOffset -\r\n\t\t\t\t\t modal.clientHeight +\r\n\t\t\t\t\t 'px';\r\n\t\t} else {\r\n\t\t\tmodal.removeAttribute('style');\r\n\t\t}\r\n\t}\r\n}\r\n","import { Component } from '@opten/compiler/metadata/component';\r\nimport { addClass } from '@opten/dom/add-class';\r\nimport { hasClass } from '@opten/dom/has-class';\r\n\r\n@Component({ className: 'alert' })\r\nexport class AlertComponent {\r\n\tconstructor(private element: HTMLElement) {\r\n\t\tconst closer = this.element.querySelector('.close');\r\n\t\tif (closer) {\r\n\t\t\tcloser.addEventListener('click', (e) => {\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\tthis.close();\r\n\t\t\t});\r\n\t\t}\r\n\t\tthis.element.addEventListener('click', (e) => {\r\n\t\t\te.preventDefault();\r\n\t\t\tthis.close();\r\n\t\t});\r\n\t\tsetTimeout(() => {\r\n\t\t\tthis.close();\r\n\t\t}, 10000);\r\n\t}\r\n\r\n\tprivate close() {\r\n\t\taddClass(this.element, 'is-hidden');\r\n\t\tsetTimeout(() => {\r\n\t\t\tthis.element.remove();\r\n\t\t}, 2000);\r\n\t}\r\n}\r\n","import { easepick } from '@easepick/core';\r\nimport { DateTime } from '@easepick/datetime';\r\nimport { LockPlugin } from '@easepick/lock-plugin';\r\nimport { TimePlugin } from '@easepick/time-plugin';\r\nimport { Component } from '@opten/compiler/metadata/component';\r\n\r\n@Component({ className: 'js-datepicker' })\r\nexport class DatepickerComponent {\r\n\tprivate datePicker: easepick.Core;\r\n\r\n\tconstructor(private element: HTMLInputElement) {\r\n\t\tconst disabledWeekDays = this.element.getAttribute(\r\n\t\t\t'data-disabled-week-days'\r\n\t\t);\r\n\t\tconst enableTime = this.element.getAttribute('data-enable-time');\r\n\t\tconst plugins = [LockPlugin] as any;\r\n\t\tif (enableTime && enableTime == 'true') {\r\n\t\t\tplugins.push(TimePlugin);\r\n\t\t}\r\n\t\tthis.datePicker = new easepick.create({\r\n\t\t\telement: this.element,\r\n\t\t\tcss: ['/css/datepicker.css'],\r\n\t\t\tplugins: plugins,\r\n\t\t\tlang: document.documentElement.lang,\r\n\t\t\tzIndex: 999,\r\n\t\t\tformat: 'DD.MM.YYYY',\r\n\t\t\treadonly: false,\r\n\t\t\tdate: this.element.value,\r\n\t\t\tLockPlugin: {\r\n\t\t\t\tminDate: this.element.min,\r\n\t\t\t\tmaxDate: this.element.max,\r\n\t\t\t\tfilter(date: DateTime, picked: DateTime[]) {\r\n\t\t\t\t\tconst isDisabled =\r\n\t\t\t\t\t\tdisabledWeekDays &&\r\n\t\t\t\t\t\tdisabledWeekDays.indexOf(date.getDay().toString()) !=\r\n\t\t\t\t\t\t\t-1;\r\n\t\t\t\t\treturn isDisabled;\r\n\t\t\t\t},\r\n\t\t\t},\r\n\t\t\tsetup(picker) {\r\n\t\t\t\tpicker.on('select', (e) => {\r\n\t\t\t\t\tconst event = new Event('change', {\r\n\t\t\t\t\t\tbubbles: false,\r\n\t\t\t\t\t\tcancelable: true,\r\n\t\t\t\t\t});\r\n\t\t\t\t\tthis.element.dispatchEvent(event);\r\n\t\t\t\t});\r\n\t\t\t},\r\n\t\t});\r\n\t\tif (!this.element.value) {\r\n\t\t\tthis.datePicker.gotoDate(this.element.min);\r\n\t\t}\r\n\t}\r\n}\r\n","import { hasClass } from '@opten/dom/has-class';\r\nimport { removeClass } from '@opten/dom/remove-class';\r\nimport { toggleClass } from '@opten/dom/toggle-class';\r\n\r\nexport interface FilterHelperOptions {\r\n\tfilterControlSelector?: string;\r\n\tfilterFormSelector?: string;\r\n\tonSubmit?: () => void;\r\n\tonReset?: () => void;\r\n\tonRemoveFilter?: (value, name) => void;\r\n}\r\n\r\nexport class FilterHelper {\r\n\tstatic defaults: FilterHelperOptions = {\r\n\t\tfilterControlSelector: '.js-filter-control',\r\n\t\tfilterFormSelector: '.js-filter-form',\r\n\t\tonSubmit: () => {},\r\n\t\tonReset: () => {},\r\n\t\tonRemoveFilter: (value, name) => {},\r\n\t};\r\n\r\n\tform: HTMLFormElement;\r\n\temptyState: HTMLElement;\r\n\ttagContainer: HTMLElement;\r\n\tfilters: HTMLInputElement[];\r\n\tsearch: HTMLInputElement;\r\n\r\n\tprivate filterGroups: any = {};\r\n\r\n\toptions: FilterHelperOptions;\r\n\r\n\ttags: HTMLElement[] = [];\r\n\tprivate tagTemplate: HTMLElement;\r\n\r\n\tprivate modals: HTMLElement[];\r\n\r\n\tconstructor(private element: HTMLElement, options?: FilterHelperOptions) {\r\n\t\tthis.options = { ...FilterHelper.defaults, ...options };\r\n\r\n\t\tthis.form = hasClass(\r\n\t\t\telement,\r\n\t\t\tthis.options.filterFormSelector.substring(1)\r\n\t\t)\r\n\t\t\t? (element as HTMLFormElement)\r\n\t\t\t: (element.querySelector(\r\n\t\t\t\t\tthis.options.filterFormSelector\r\n\t\t\t ) as HTMLFormElement);\r\n\t\tthis.emptyState = element.getElementsByClassName(\r\n\t\t\t'js-filter-empty-state'\r\n\t\t)[0] as HTMLElement;\r\n\t\tthis.modals = Array.from(\r\n\t\t\telement.getElementsByClassName('js-modal')\r\n\t\t) as HTMLElement[];\r\n\t\tthis.filters = Array.from(\r\n\t\t\telement.querySelectorAll(this.options.filterControlSelector)\r\n\t\t) as HTMLInputElement[];\r\n\t\tthis.search = element.getElementsByClassName(\r\n\t\t\t'js-filter-search'\r\n\t\t)[0] as HTMLInputElement;\r\n\t\tthis.tagContainer = element.getElementsByClassName(\r\n\t\t\t'js-filter-tag-container'\r\n\t\t)[0] as HTMLElement;\r\n\t\tthis.tagTemplate = element.getElementsByClassName(\r\n\t\t\t'js-filter-tag'\r\n\t\t)[0] as HTMLElement;\r\n\r\n\t\tthis.form.addEventListener('reset', (e) => {\r\n\t\t\tthis.closeModal();\r\n\t\t\tthis.tags.forEach((tag) => {\r\n\t\t\t\tthis.removeFilterItem(tag);\r\n\t\t\t});\r\n\t\t\tif (this.search) {\r\n\t\t\t\tthis.search.value = '';\r\n\t\t\t}\r\n\t\t\tthis.toggleEmptyState(false);\r\n\t\t\tthis.options.onReset();\r\n\t\t});\r\n\r\n\t\tthis.form.addEventListener('submit', (e) => {\r\n\t\t\te.preventDefault();\r\n\t\t\tthis.closeModal();\r\n\t\t\tthis.options.onSubmit();\r\n\t\t});\r\n\r\n\t\tthis.filters.forEach((filter) => {\r\n\t\t\tif (filter.type === 'checkbox') {\r\n\t\t\t\tconst self = filter.getAttribute('data-self');\r\n\t\t\t\tconst connected = filter.getAttribute('data-connected');\r\n\t\t\t\tif (connected) {\r\n\t\t\t\t\tif (this.filterGroups[connected]) {\r\n\t\t\t\t\t\tthis.filterGroups[connected].push(filter);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tthis.filterGroups[connected] = [filter];\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tconst filterSame = this.filters.filter(\r\n\t\t\t\t\t(o) => o.name === filter.name\r\n\t\t\t\t);\r\n\t\t\t\tconst filterAll = filterSame.filter((o) => o.value === '');\r\n\t\t\t\tfilter.addEventListener('change', (e) => {\r\n\t\t\t\t\tif (this.filterGroups[self]) {\r\n\t\t\t\t\t\tthis.filterGroups[self].filter(\r\n\t\t\t\t\t\t\t(o) => (o.checked = filter.checked)\r\n\t\t\t\t\t\t);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (connected) {\r\n\t\t\t\t\t\tconst target = this.filters.find(\r\n\t\t\t\t\t\t\t(o) => o.getAttribute('data-self') === connected\r\n\t\t\t\t\t\t);\r\n\t\t\t\t\t\tif (target) {\r\n\t\t\t\t\t\t\tif (filter.checked) {\r\n\t\t\t\t\t\t\t\ttarget.checked = this.filters\r\n\t\t\t\t\t\t\t\t\t.filter(\r\n\t\t\t\t\t\t\t\t\t\t(o) =>\r\n\t\t\t\t\t\t\t\t\t\t\to.getAttribute('data-connected') ===\r\n\t\t\t\t\t\t\t\t\t\t\tconnected\r\n\t\t\t\t\t\t\t\t\t)\r\n\t\t\t\t\t\t\t\t\t.every((o) => o.checked);\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\ttarget.checked = false;\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\tif (filter.value === '' && filter.checked) {\r\n\t\t\t\t\t\tfilterSame.filter((o) => (o.checked = false));\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (filterAll && filterAll.length > 0) {\r\n\t\t\t\t\t\tfilterAll.forEach((all) => {\r\n\t\t\t\t\t\t\tall.checked =\r\n\t\t\t\t\t\t\t\tfilterSame.some(\r\n\t\t\t\t\t\t\t\t\t(o) =>\r\n\t\t\t\t\t\t\t\t\t\to.checked ||\r\n\t\t\t\t\t\t\t\t\t\t(o.checked && o.value === '')\r\n\t\t\t\t\t\t\t\t) === false;\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\tclear() {\r\n\t\tthis.filters.forEach(filter => {\r\n\t\t\tif (filter.checked) {\r\n\t\t\t\tfilter.checked = false;\r\n\t\t\t}\r\n\t\t\tconst options = Array.from(filter.options || []);\r\n\t\t\tif (options && options.length > 0) {\r\n\t\t\t\toptions.forEach(option => {\r\n\t\t\t\t\toption.selected = false;\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\t\tif (this.search) {\r\n\t\t\tthis.search.value = '';\r\n\t\t}\r\n\t}\r\n\r\n\tupdateTags() {\r\n\t\tif (this.tagContainer) {\r\n\t\t\tthis.tags = [];\r\n\t\t\tthis.tagContainer.innerHTML = '';\r\n\t\t\tconst data = new FormData(this.form);\r\n\t\t\tfor (const [name, value] of data) {\r\n\t\t\t\tif (value && value !== '') {\r\n\t\t\t\t\tconst filter = this.filters.find(\r\n\t\t\t\t\t\t(o) => o.name === name && o.value === value\r\n\t\t\t\t\t);\r\n\t\t\t\t\tconst title = filter\r\n\t\t\t\t\t\t? filter.getAttribute('data-title')\r\n\t\t\t\t\t\t: '';\r\n\t\t\t\t\tif (title) {\r\n\t\t\t\t\t\tthis.addFilterItem(title, name, value);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\ttoggleClass(this.element, 'has-filters', this.tags.length > 0);\r\n\t\t}\r\n\t}\r\n\r\n\taddFilterItem(title, name, value) {\r\n\t\tconst temp = document.createElement('div');\r\n\t\tlet tag = this.tagTemplate.cloneNode(true) as HTMLElement;\r\n\t\tremoveClass(tag, 'd-none');\r\n\t\ttag.setAttribute('data-name', name);\r\n\t\ttag.setAttribute('data-value', value);\r\n\t\ttemp.appendChild(tag);\r\n\t\ttag.outerHTML = tag.outerHTML.replace(/{title}/g, title);\r\n\t\ttag = (temp.firstChild || temp.firstElementChild) as HTMLElement;\r\n\t\tthis.tagContainer.appendChild(tag);\r\n\t\tthis.tags.push(tag);\r\n\r\n\t\ttag.addEventListener('click', (e) => {\r\n\t\t\te.preventDefault();\r\n\t\t\tthis.removeFilterItem(tag);\r\n\t\t});\r\n\t}\r\n\r\n\tremoveFilterItem(tag) {\r\n\t\tconst name = tag.getAttribute('data-name');\r\n\t\tconst value = tag.getAttribute('data-value');\r\n\t\tconst filter = this.filters.find(\r\n\t\t\t(o) => o.name === name && o.value === value\r\n\t\t);\r\n\t\tif (filter) {\r\n\t\t\tfilter.value = filter.defaultValue;\r\n\t\t\tfilter.checked = false;\r\n\t\t}\r\n\t\tthis.options.onRemoveFilter(value, name);\r\n\t}\r\n\r\n\ttoggleEmptyState(show = false) {\r\n\t\tif (this.emptyState) {\r\n\t\t\ttoggleClass(this.emptyState, 'd-none', show);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate closeModal() {\r\n\t\tif (this.modals.length) {\r\n\t\t\tthis.modals.forEach((modal) => {\r\n\t\t\t\tremoveClass(modal, 'is-open');\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n}\r\n","import { Collapse } from '@opten/collapse/initializer';\r\nimport { Component } from '@opten/compiler/metadata/component';\r\n\r\nimport { FilterHelper } from './filter-helper';\r\n\r\ndeclare const mixitup: any;\r\n\r\n@Component({ className: 'js-filter' })\r\nexport class FilterComponent {\r\n\tprivate filter: FilterHelper;\r\n\r\n\tprivate mixer: any;\r\n\tprivate targetSelector = '.js-filter-item';\r\n\tprivate sortSelector = '.js-filter-sort';\r\n\tprivate pageListSelector = '.js-filter-page-list';\r\n\tprivate sortControls: HTMLElement[];\r\n\tprivate pageList: HTMLElement;\r\n\tprivate pagerControls: HTMLElement[];\r\n\r\n\tconstructor(private element: HTMLElement) {\r\n\t\tthis.pageList = this.element.querySelector(\r\n\t\t\t'.js-filter-page-list'\r\n\t\t) as HTMLElement;\r\n\t\tthis.sortControls = Array.from(\r\n\t\t\tthis.element.querySelectorAll(this.sortSelector)\r\n\t\t) as HTMLElement[];\r\n\r\n\t\tthis.filter = new FilterHelper(this.element, {\r\n\t\t\tonReset: () => {\r\n\t\t\t\tthis.mixer.filter('all');\r\n\t\t\t},\r\n\t\t\tonRemoveFilter: (value, name) => {\r\n\t\t\t\tconst activeFilter = this.mixer.getFilterGroupSelectors(name);\r\n\t\t\t\tthis.mixer.setFilterGroupSelectors(\r\n\t\t\t\t\tname,\r\n\t\t\t\t\tactiveFilter.filter((o) => o !== value)\r\n\t\t\t\t);\r\n\t\t\t\tthis.mixer.parseFilterGroups();\r\n\t\t\t},\r\n\t\t});\r\n\r\n\t\tlet options: any = {\r\n\t\t\tselectors: {\r\n\t\t\t\ttarget: this.targetSelector,\r\n\t\t\t\tcontrol: this.filter.options.filterControlSelector,\r\n\t\t\t},\r\n\t\t\tcontrols: {\r\n\t\t\t\tscope: 'local',\r\n\t\t\t\ttoggleLogic: 'and',\r\n\t\t\t\tenable: false,\r\n\t\t\t},\r\n\t\t\tmultifilter: {\r\n\t\t\t\tenable: true,\r\n\t\t\t\tparseOn: 'submit', //'change',\r\n\t\t\t},\r\n\t\t\tcallbacks: {\r\n\t\t\t\tonParseFilterGroups: (command) => {\r\n\t\t\t\t\tthis.filter.updateTags();\r\n\t\t\t\t\treturn command;\r\n\t\t\t\t},\r\n\t\t\t\tonMixStart: (state, futureState) => {\r\n\t\t\t\t\tthis.filter.toggleEmptyState(futureState.totalShow > 0);\r\n\t\t\t\t},\r\n\t\t\t\tonMixEnd: (state) => {\r\n\t\t\t\t\tthis.filter.toggleEmptyState(state.totalShow > 0);\r\n\t\t\t\t},\r\n\t\t\t\tonMixClick: (state, originalEvent) => {\r\n\t\t\t\t\tif (originalEvent.target.closest(this.filter.options.filterControlSelector).getAttribute('data-filter')) {\r\n\t\t\t\t\t\toriginalEvent.preventDefault();\r\n\t\t\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\t\t\tthis.mixer.parseFilterGroups();\r\n\t\t\t\t\t\t}, 500);\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\tif (this.pageList) {\r\n\t\t\toptions = this.mergeDeep(options, {\r\n\t\t\t\tselectors: {\r\n\t\t\t\t\tpageList: this.pageListSelector,\r\n\t\t\t\t},\r\n\t\t\t\tclassNames: {\r\n\t\t\t\t\telementPager: 'pager',\r\n\t\t\t\t},\r\n\t\t\t\tpagination: {\r\n\t\t\t\t\tlimit: 10,\r\n\t\t\t\t\tmaintainActivePage: false,\r\n\t\t\t\t\thidePageListIfSinglePage: true,\r\n\t\t\t\t\tgeneratePageStats: false,\r\n\t\t\t\t},\r\n\t\t\t\ttemplates: {\r\n\t\t\t\t\tpagerPrev:\r\n\t\t\t\t\t\t' ',\r\n\t\t\t\t\tpagerNext:\r\n\t\t\t\t\t\t' ',\r\n\t\t\t\t},\r\n\t\t\t\tcallbacks: {\r\n\t\t\t\t\tonMixEnd: (state) => {\r\n\t\t\t\t\t\tthis.initPager();\r\n\t\t\t\t\t\tthis.filter.toggleEmptyState(state.totalShow > 0);\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\tthis.mixer = mixitup(this.element, options);\r\n\r\n\t\tif (this.sortControls.length > 0) {\r\n\t\t\tthis.sortControls.forEach((sort) => {\r\n\t\t\t\tconst collapse = Collapse.getInstance(sort.parentElement);\r\n\t\t\t\tsort.addEventListener('click', (e) => {\r\n\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\tthis.mixer.sort(sort.getAttribute('data-sort'));\r\n\t\t\t\t\tif (collapse) {\r\n\t\t\t\t\t\tcollapse.hide();\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\tconst params = new URL(document.location).searchParams;\r\n\t\tif (params) {\r\n\t\t\tconst events = {};\r\n\t\t\tparams.forEach((value, key) => {\r\n\t\t\t\tconst filter = this.filter.filters.find(\r\n\t\t\t\t\t(o) => (o.name == key && o.value == value)\r\n\t\t\t\t);\r\n\t\t\t\tconst filterLink = this.filter.filters.find(\r\n\t\t\t\t\t(o) => (o.tagName != 'checkbox' && o.getAttribute('data-filter') == value)\r\n\t\t\t\t) as HTMLElement;\r\n\t\t\t\tif (filterLink) {\r\n\t\t\t\t\tconst t = events[key];\r\n\t\t\t\t\tif (t) {\r\n\t\t\t\t\t\tt.push(value);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tevents[key] = [value];\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tif (filter) {\r\n\t\t\t\t\tconst t = events[filter.name];\r\n\t\t\t\t\tif (t) {\r\n\t\t\t\t\t\tt.push(filter.value);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tevents[filter.name] = [filter.value];\r\n\t\t\t\t\t}\r\n\t\t\t\t\tfilter.checked = true;\r\n\t\t\t\t\tconst changeEvent = new Event('change', {\r\n\t\t\t\t\t\tbubbles: false,\r\n\t\t\t\t\t\tcancelable: true,\r\n\t\t\t\t\t});\r\n\t\t\t\t\tfilter.dispatchEvent(changeEvent);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\tif (Object.keys(events).length > 0) {\r\n\t\t\t\tObject.keys(events).forEach((key) => {\r\n\t\t\t\t\tthis.mixer.setFilterGroupSelectors(key, events[key]);\r\n\t\t\t\t});\r\n\t\t\t\tthis.mixer.parseFilterGroups();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.initPager();\r\n\t}\r\n\r\n\tprivate initPager() {\r\n\t\tif (this.pageList) {\r\n\t\t\tthis.pagerControls = Array.from(\r\n\t\t\t\tthis.pageList.querySelectorAll('.mixitup-pager')\r\n\t\t\t) as HTMLElement[];\r\n\t\t\tthis.pagerControls.forEach((control) => {\r\n\t\t\t\tconst dataPage = control.getAttribute('data-page');\r\n\t\t\t\tcontrol.addEventListener('click', (e) => {\r\n\t\t\t\t\tthis.mixer.paginate(dataPage);\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tprivate mergeDeep(target, ...sources) {\r\n\t\tif (!sources.length) return target;\r\n\t\tconst source = sources.shift();\r\n\r\n\t\tif (this.isObject(target) && this.isObject(source)) {\r\n\t\t\tfor (const key in source) {\r\n\t\t\t\tif (this.isObject(source[key])) {\r\n\t\t\t\t\tif (!target[key]) Object.assign(target, { [key]: {} });\r\n\t\t\t\t\tthis.mergeDeep(target[key], source[key]);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tObject.assign(target, { [key]: source[key] });\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn this.mergeDeep(target, ...sources);\r\n\t}\r\n\r\n\tprivate isObject(item) {\r\n\t\treturn item && typeof item === 'object' && !Array.isArray(item);\r\n\t}\r\n}\r\n","import { Component } from '@opten/compiler/metadata/component';\r\n\r\n@Component({ className: 'js-checkboxes' })\r\nexport class FormCheckboxesComponent {\r\n\tprivate sameInputs: HTMLInputElement[];\r\n\r\n\tconstructor(private element: HTMLElement) {\r\n\t\tthis.sameInputs = Array.from(\r\n\t\t\tthis.element.querySelectorAll(`input[type=\"checkbox\"]`)\r\n\t\t) as HTMLInputElement[];\r\n\r\n\t\tif (this.sameInputs && this.sameInputs.length > 0) {\r\n\t\t\tif (this.element.hasAttribute('data-required')) {\r\n\t\t\t\tthis.sameInputs.forEach((input) => {\r\n\t\t\t\t\tinput.addEventListener('change', () => {\r\n\t\t\t\t\t\tthis.checkRequired();\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\r\n\t\t\t\tthis.checkRequired();\r\n\t\t\t\tthis.scrollToSelected();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprivate scrollToSelected() {\r\n\t\tconst firstChecked = this.sameInputs.find((o) => o.checked);\r\n\t\tif (firstChecked) {\r\n\t\t\tthis.element.scrollTo(\r\n\t\t\t\t0,\r\n\t\t\t\tfirstChecked.parentElement.offsetTop -\r\n\t\t\t\t\tfirstChecked.parentElement.offsetHeight -\r\n\t\t\t\t\tparseInt(getComputedStyle(this.element).marginTop)\r\n\t\t\t);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate checkRequired() {\r\n\t\tconst hasSomeChecked = this.sameInputs.some((o) => o.checked);\r\n\t\tthis.sameInputs.forEach((o) => (o.required = hasSomeChecked == false));\r\n\t}\r\n}\r\n","import { Component } from '@opten/compiler/metadata/component';\r\nimport { FormTemplatesComponent } from './form-templates';\r\n\r\n@Component({ className: 'js-form-select-updater' })\r\nexport class FormSelectUpdateComponent {\r\n\tprivate items: HTMLInputElement[];\r\n\tprivate targets: HTMLSelectElement[];\r\n\r\n\tconstructor(private element: HTMLElement) {\r\n\t\tthis.items = Array.from(\r\n\t\t\tthis.element.querySelectorAll('.js-form-select-updater-item')\r\n\t\t) as HTMLInputElement[];\r\n\t\tthis.targets = Array.from(\r\n\t\t\tdocument.querySelectorAll('.js-form-select-updater-target')\r\n\t\t) as HTMLSelectElement[];\r\n\r\n\t\tif (\r\n\t\t\tthis.items &&\r\n\t\t\tthis.items.length > 0 &&\r\n\t\t\tthis.targets &&\r\n\t\t\tthis.targets.length > 0\r\n\t\t) {\r\n\t\t\tthis.items.forEach((item) => {\r\n\t\t\t\tthis.setupItem(item);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tFormTemplatesComponent.onFieldAdded.subscribe((field) => {\r\n\t\t\tthis.update(field);\r\n\t\t});\r\n\t\tFormTemplatesComponent.onFieldRemoved.subscribe((field) => {\r\n\t\t\tthis.updateRemoving(field);\r\n\t\t});\r\n\t}\r\n\r\n\tprivate setupItem(item: HTMLInputElement) {\r\n\t\titem.setAttribute('data-old-val', item.value);\r\n\t\titem.addEventListener('change', (e) => {\r\n\t\t\tthis.updateTargets(item.getAttribute('data-old-val'), item.value);\r\n\t\t\titem.setAttribute('data-old-val', item.value);\r\n\t\t});\r\n\t}\r\n\r\n\tprivate updateTargets(oldValue: string, newValue: string) {\r\n\t\tthis.targets.forEach((target) => {\r\n\t\t\tlet item = Array.from(target.options).find(o => o.value == oldValue);\r\n\t\t\tif (!oldValue && !newValue) {\r\n\t\t\t\tif (item) {\r\n\t\t\t\t\titem.remove();\r\n\t\t\t\t}\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tif (!newValue && item) {\r\n\t\t\t\titem.remove();\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tif (!item) {\r\n\t\t\t\titem = document.createElement('option');\r\n\t\t\t\ttarget.add(item, null);\r\n\t\t\t}\r\n\t\t\titem.text = newValue;\r\n\t\t\titem.value = newValue;\r\n\t\t});\r\n\t}\r\n\r\n\tprivate createTargets(targets: HTMLSelectElement[]) {\r\n\t\ttargets.forEach((target) => {\r\n\t\t\twhile (target.options.length > 0) {\r\n\t\t\t\ttarget.remove(target.options.length - 1);\r\n\t\t\t}\r\n\t\t\tfor (let i = 0; i < this.items.length; i++) {\r\n\t\t\t\tvar opt = document.createElement('option');\r\n\t\t\t\topt.text = this.items[i].value;\r\n\t\t\t\topt.value = this.items[i].value;\r\n\t\t\t\topt.selected = i == 0;\r\n\t\t\t\ttarget.add(opt, null);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tprivate update(field: HTMLElement) {\r\n\t\tconst item = field.querySelector(\r\n\t\t\t'.js-form-select-updater-item'\r\n\t\t) as HTMLInputElement;\r\n\t\tif (item) {\r\n\t\t\tthis.items.push(item);\r\n\t\t\tthis.setupItem(item);\r\n\t\t}\r\n\r\n\t\tconst targets = Array.from(\r\n\t\t\tfield.querySelectorAll('.js-form-select-updater-target')\r\n\t\t) as HTMLSelectElement[];\r\n\t\tif (targets && targets.length > 0) {\r\n\t\t\tthis.targets = this.targets.concat(targets);\r\n\t\t\tthis.createTargets(targets);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate updateRemoving(field: HTMLElement) {\r\n\t\tconst item = field.querySelector(\r\n\t\t\t'.js-form-select-updater-item'\r\n\t\t) as HTMLInputElement;\r\n\t\tif (item) {\r\n\t\t\tthis.items.splice(this.items.indexOf(item), 1);\r\n\t\t\tthis.updateTargets(item.value, undefined);\r\n\t\t}\r\n\t}\r\n}\r\n","import { Component } from '@opten/compiler/metadata/component';\r\nimport { EventDispatcher } from '@opten/events/event-dispatcher';\r\nimport { toggleClass } from '@opten/dom/toggle-class';\r\n\r\n@Component({ className: 'js-form-templates' })\r\nexport class FormTemplatesComponent {\r\n\tstatic onFieldAdded = new EventDispatcher();\r\n\tstatic onFieldRemoved = new EventDispatcher();\r\n\r\n\tprivate template: Node;\r\n\tprivate adder: HTMLElement;\r\n\tprivate items: HTMLElement[];\r\n\tprivate namePrefix: string;\r\n\tprivate idPrefix: string;\r\n\tprivate min = 0;\r\n\tprivate max = Number.MAX_SAFE_INTEGER;\r\n\r\n\tconstructor(private element: HTMLElement) {\r\n\t\tconst shadow = element.querySelector(\r\n\t\t\t'.js-form-template-shadow'\r\n\t\t) as HTMLElement;\r\n\t\tconst shadowInput = shadow.querySelector('input');\r\n\t\tthis.namePrefix = shadowInput.name.substring(\r\n\t\t\t0,\r\n\t\t\tshadowInput.name.indexOf('Shadow')\r\n\t\t);\r\n\t\tthis.idPrefix = shadowInput.id.substring(\r\n\t\t\t0,\r\n\t\t\tshadowInput.id.indexOf('Shadow')\r\n\t\t);\r\n\t\tthis.template = shadow\r\n\t\t\t.querySelector('.js-form-template-item')\r\n\t\t\t.cloneNode(true);\r\n\t\tshadow.remove();\r\n\r\n\t\tthis.min = parseInt(element.getAttribute('data-min') || '0');\r\n\t\tthis.max = parseInt(element.getAttribute('data-max') || Number.MAX_SAFE_INTEGER.toString());\r\n\t\tthis.adder = element.querySelector(\r\n\t\t\t'.js-form-template-add'\r\n\t\t) as HTMLElement;\r\n\t\tthis.items = Array.from(\r\n\t\t\tthis.element.querySelectorAll('.js-form-template-item')\r\n\t\t) as HTMLElement[] || [];\r\n\r\n\t\tthis.adder.addEventListener('click', (e) => {\r\n\t\t\te.preventDefault();\r\n\t\t\tthis.add();\r\n\t\t});\r\n\r\n\t\tif (this.items && this.items.length > 0) {\r\n\t\t\tthis.items.forEach((item) => {\r\n\t\t\t\tthis.initItem(item);\r\n\t\t\t});\r\n\t\t\tthis.checkRemover();\r\n\t\t\tthis.checkAdder();\r\n\t\t}\r\n\r\n\t\twhile (!this.items || this.items.length < this.min) {\r\n\t\t\tthis.add();\r\n\t\t}\r\n\t}\r\n\r\n\tadd() {\r\n\t\tconst newItem = this.template.cloneNode(true);\r\n\t\tconst parent =\r\n\t\t\tthis.items && this.items.length > 0\r\n\t\t\t\t? this.items[this.items.length - 1].parentNode\r\n\t\t\t\t: this.adder.parentNode;\r\n\t\tconst newHtmlItem = parent.insertBefore(\r\n\t\t\tnewItem,\r\n\t\t\tthis.items && this.items.length > 0\r\n\t\t\t\t? this.items[this.items.length - 1].nextSibling\r\n\t\t\t\t: this.adder\r\n\t\t) as HTMLElement;\r\n\t\tconst newIndex = this.items.length;\r\n\t\tnewHtmlItem.innerHTML = newHtmlItem.innerHTML\r\n\t\t\t.replaceAll('Shadow_0', `_${newIndex}`)\r\n\t\t\t.replaceAll('Shadow[0]', `[${newIndex}]`);\r\n\t\tthis.items.push(newHtmlItem);\r\n\t\tthis.initItem(newHtmlItem);\r\n\t\tthis.checkRemover();\r\n\t\tthis.checkAdder();\r\n\t\tFormTemplatesComponent.onFieldAdded.dispatch(newHtmlItem);\r\n\t}\r\n\r\n\tremove(item: HTMLElement) {\r\n\t\tthis.items.splice(this.items.indexOf(item), 1);\r\n\t\titem.remove();\r\n\t\tthis.updateIndex();\r\n\t\tthis.checkRemover();\r\n\t\tthis.checkAdder();\r\n\t\tFormTemplatesComponent.onFieldRemoved.dispatch(item);\r\n\t}\r\n\r\n\tprivate initItem(item: HTMLElement) {\r\n\t\tconst remover = item.querySelector(\r\n\t\t\t'.js-form-template-remove'\r\n\t\t) as HTMLElement;\r\n\t\tif (remover) {\r\n\t\t\titem['Remover'] = remover;\r\n\t\t\tremover.addEventListener('click', (e) => {\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\tthis.remove(item);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tprivate updateIndex() {\r\n\t\tif (this.items && this.items.length > 0) {\r\n\t\t\tthis.items.forEach((item, index) => {\r\n\t\t\t\tlet regExp = new RegExp(\r\n\t\t\t\t\t`${this.escapeRegExp(this.idPrefix)}_\\\\d+`\r\n\t\t\t\t);\r\n\t\t\t\tconst ids = item.querySelectorAll(`[id^=\"${this.idPrefix}_\"]`);\r\n\t\t\t\tids.forEach((elem) => {\r\n\t\t\t\t\telem.id = elem.id.replace(\r\n\t\t\t\t\t\tregExp,\r\n\t\t\t\t\t\t`${this.idPrefix}_${index}`\r\n\t\t\t\t\t);\r\n\t\t\t\t});\r\n\t\t\t\tconst fors = item.querySelectorAll(\r\n\t\t\t\t\t`[for^=\"${this.idPrefix}_\"]`\r\n\t\t\t\t);\r\n\t\t\t\tfors.forEach((elem) => {\r\n\t\t\t\t\telem.setAttribute(\r\n\t\t\t\t\t\t'for',\r\n\t\t\t\t\t\telem\r\n\t\t\t\t\t\t\t.getAttribute('for')\r\n\t\t\t\t\t\t\t.replace(regExp, `${this.idPrefix}_${index}`)\r\n\t\t\t\t\t);\r\n\t\t\t\t});\r\n\t\t\t\tregExp = new RegExp(\r\n\t\t\t\t\t`${this.escapeRegExp(this.namePrefix)}\\\\[\\\\d+`\r\n\t\t\t\t);\r\n\t\t\t\tconst names = item.querySelectorAll(\r\n\t\t\t\t\t`[name^=\"${this.namePrefix}[\"]`\r\n\t\t\t\t);\r\n\t\t\t\tnames.forEach((elem) => {\r\n\t\t\t\t\telem.setAttribute(\r\n\t\t\t\t\t\t'name',\r\n\t\t\t\t\t\telem\r\n\t\t\t\t\t\t\t.getAttribute('name')\r\n\t\t\t\t\t\t\t.replace(regExp, `${this.namePrefix}[${index}`)\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 checkRemover() {\r\n\t\tif (this.min >= 0 && this.items && this.items.length > 0) {\r\n\t\t\tthis.items.forEach((item) => {\r\n\t\t\t\tconst remover = item['Remover'];\r\n\t\t\t\tif (remover) {\r\n\t\t\t\t\ttoggleClass(\r\n\t\t\t\t\t\tremover,\r\n\t\t\t\t\t\t'd-none',\r\n\t\t\t\t\t\tthis.items.length <= this.min\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 checkAdder() {\r\n\t\ttoggleClass(\r\n\t\t\tthis.adder,\r\n\t\t\t'd-none',\r\n\t\t\tthis.items.length >= this.max\r\n\t\t);\r\n\t}\r\n\r\n\tprivate escapeRegExp(string) {\r\n\t\treturn string.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\r\n\t}\r\n}\r\n","import { Component } from '@opten/compiler/metadata/component';\r\n\r\n@Component({ className: 'js-form-total' })\r\nexport class FormTotalComponent {\r\n\tprivate inputs: HTMLInputElement[];\r\n\r\n\tconstructor(private total: HTMLElement) {\r\n\t\tconst form = total.closest('form') as HTMLElement; \r\n\t\tthis.inputs = Array.from(\r\n\t\t\tform.querySelectorAll(\r\n\t\t\t\t`[data-group=\"${this.total.getAttribute('data-group')}\"]`\r\n\t\t\t)\r\n\t\t) as HTMLInputElement[];\r\n\t\tif (this.inputs && this.inputs.length > 0) {\r\n\t\t\tthis.inputs.forEach((input) => {\r\n\t\t\t\tinput.addEventListener('change', () => this.updateTotal());\r\n\t\t\t\tinput.addEventListener('input', () => this.updateTotal());\r\n\t\t\t});\r\n\t\t\tthis.updateTotal();\r\n\t\t}\r\n\t}\r\n\r\n\tprivate updateTotal() {\r\n\t\tlet total = 0;\r\n\t\tthis.inputs.forEach((input) => {\r\n\t\t\tconst factor = parseFloat(input.getAttribute('data-factor') || '1');\r\n\t\t\ttotal += factor * parseInt(input.value || '0');\r\n\t\t});\r\n\t\tthis.total.innerHTML = total.toString();\r\n\t}\r\n}\r\n","import { debounce } from '@opten/reactive/debounce';\r\n\r\nexport class GlobalVarsComponent {\r\n\tconstructor(private element: HTMLElement = document.documentElement) {\r\n\t\tthis.setGlobalVars();\r\n\t\twindow.addEventListener(\r\n\t\t\t'resize',\r\n\t\t\tdebounce(() => {\r\n\t\t\t\tthis.setGlobalVars();\r\n\t\t\t}, 300)\r\n\t\t);\r\n\t}\r\n\r\n\tsetGlobalVars() {\r\n\t\tthis.element.style.setProperty(\r\n\t\t\t'--window-height',\r\n\t\t\t`${window.innerHeight * 0.01 * 100}px`\r\n\t\t);\r\n\t}\r\n}\r\n","import { Component } from '@opten/compiler/metadata/component';\r\nimport { FormTemplatesComponent } from './form-templates';\r\n\r\ndeclare const Isotope: any;\r\n\r\n@Component({ className: 'js-grid' })\r\nexport class GridComponent {\r\n\tconstructor(private element: HTMLElement) {\r\n\t\tconst grid = new Isotope(this.element, {\r\n\t\t\titemSelector: '.js-grid-item',\r\n\t\t\tlayoutMode: 'masonry',\r\n\t\t});\r\n\r\n\t\tFormTemplatesComponent.onFieldAdded.subscribe((field) => {\r\n\t\t\tgrid.arrange();\r\n\t\t});\r\n\t\tFormTemplatesComponent.onFieldRemoved.subscribe((field) => {\r\n\t\t\tgrid.arrange();\r\n\t\t});\r\n\t}\r\n}\r\n","import { addClass } from '@opten/dom/add-class';\r\nimport { Component } from '@opten/compiler/metadata/component';\r\nimport { debounce } from '@opten/reactive/debounce';\r\n\r\ndeclare const Swiper: any;\r\n\r\n@Component({ className: 'js-headline' })\r\nexport class HeadlineSliderComponent {\r\n\tconstructor(private element: HTMLElement) {\r\n\t\tconst slider = element.getElementsByClassName(\r\n\t\t\t'js-headline-slider'\r\n\t\t)[0] as HTMLElement;\r\n\t\tconst sliderImg = element.getElementsByClassName(\r\n\t\t\t'js-headline-slider-img'\r\n\t\t)[0] as HTMLElement;\r\n\t\tconst autoplay = parseInt(this.element.getAttribute('data-autoplay'), 0) || 0;\r\n\r\n\t\tconst swiperImg = new Swiper(sliderImg, {\r\n\t\t\tspeed: 1000,\r\n\t\t\teffect: 'fade',\r\n\t\t\tfadeEffect: {\r\n\t\t\t\tcrossFade: true,\r\n\t\t\t},\r\n\t\t\twatchSlidesVisibility: true,\r\n\t\t\twatchSlidesProgress: true,\r\n\t\t});\r\n\t\tconst swiper = new Swiper(slider, {\r\n\t\t\tautoplay: (autoplay > 0 ? {\r\n\t\t\t\tdelay: 5000,\r\n\t\t\t } : false),\r\n\t\t\tautoHeight: true,\r\n\t\t\tspeed: 1000,\r\n\t\t\tnavigation: {\r\n\t\t\t\tnextEl: '.swiper-button-next',\r\n\t\t\t\tprevEl: '.swiper-button-prev',\r\n\t\t\t},\r\n\t\t\tkeyboard: {\r\n\t\t\t\tenabled: true,\r\n\t\t\t\tonlyInViewport: true,\r\n\t\t\t},\r\n\t\t\tthumbs: {\r\n\t\t\t\tswiper: swiperImg,\r\n\t\t\t},\r\n\t\t});\r\n\t}\r\n}\r\n","import { Component } from \"@opten/compiler/metadata/component\";\r\nimport { toggleClass } from \"@opten/dom/toggle-class\";\r\n\r\n@Component({ className: \"js-input\" })\r\nexport class InputComponent {\r\n\tprivate formField: HTMLElement;\r\n\tprivate valueShadows: HTMLElement[];\r\n\tprivate labels: HTMLElement[];\r\n\tprivate hasValueClass = \"has-value\";\r\n\tprivate isActiveClass = \"is-active\";\r\n\r\n\tconstructor(private input: HTMLInputElement) {\r\n\t\tthis.formField = input.closest(\".c-formfield\") as HTMLElement;\r\n\t\tthis.valueShadows = Array.from(\r\n\t\t\tdocument.querySelectorAll(\r\n\t\t\t\t`.js-input-shadow[data-name='${this.input.name}']`\r\n\t\t\t)\r\n\t\t) as HTMLElement[];\r\n\t\tthis.labels = Array.from(\r\n\t\t\tinput\r\n\t\t\t\t.closest(\"form\")\r\n\t\t\t\t.querySelectorAll(`[data-group=\"${this.input.name}\"]`)\r\n\t\t) as HTMLElement[];\r\n\r\n\t\tinput.addEventListener(\"change\", () => this.setValueClass());\r\n\t\tinput.addEventListener(\"input\", () => this.setValueClass());\r\n\r\n\t\tthis.setValueClass();\r\n\t}\r\n\r\n\tprivate setValueClass() {\r\n\t\tconst hasData =\r\n\t\t\tthis.input.placeholder ||\r\n\t\t\tthis.input.value ||\r\n\t\t\tthis.input.type == \"date\" ||\r\n\t\t\tthis.input.type == \"time\" ||\r\n\t\t\tthis.input.type == \"file\";\r\n\t\ttoggleClass(this.formField, this.hasValueClass, !!hasData);\r\n\t\tthis.updateInputHeight();\r\n\t\tif (this.valueShadows && this.valueShadows.length > 0) {\r\n\t\t\tthis.valueShadows.forEach((shadow) => {\r\n\t\t\t\tshadow.innerHTML = this.input.value;\r\n\t\t\t});\r\n\t\t}\r\n\t\tif (this.labels && this.labels.length > 0) {\r\n\t\t\tlet value = this.input.value;\r\n\t\t\tif (\r\n\t\t\t\tthis.input.type.toLowerCase() === \"radio\" ||\r\n\t\t\t\tthis.input.type.toLowerCase() === \"checkbox\"\r\n\t\t\t) {\r\n\t\t\t\tvalue = this.input.checked ? this.input.value : \"\";\r\n\t\t\t}\r\n\t\t\tthis.labels.forEach((label) => {\r\n\t\t\t\tconst isActiveClass =\r\n\t\t\t\t\tlabel.getAttribute(\"data-active-class\") ||\r\n\t\t\t\t\tthis.isActiveClass;\r\n\t\t\t\tconst htmlFor = label.htmlFor || label.getAttribute(\"data-for\");\r\n\t\t\t\ttoggleClass(\r\n\t\t\t\t\tlabel,\r\n\t\t\t\t\tisActiveClass,\r\n\t\t\t\t\tvalue && htmlFor == this.input.id\r\n\t\t\t\t);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tprivate updateInputHeight() {\r\n\t\tif (this.input.tagName.toLowerCase() === \"textarea\") {\r\n\t\t\tthis.input.style.height = \"\";\r\n\t\t\tthis.input.style.height =\r\n\t\t\t\t(this.input.scrollHeight || 65) + 2 + \"px\";\r\n\t\t}\r\n\t}\r\n}\r\n","import { Component } from '@opten/compiler/metadata/component';\r\nimport { addClass } from '@opten/dom/add-class';\r\nimport { removeClass } from '@opten/dom/remove-class';\r\n\r\n@Component({ className: 'js-interactive-svg' })\r\nexport class InteractiveSvgComponent {\r\n\tprivate file: HTMLElement;\r\n\tprivate triggers: HTMLElement[];\r\n\r\n\tconstructor(private element: HTMLElement) {\r\n\t\tthis.file = element.querySelector('.js-interactive-svg-file');\r\n\t\tthis.triggers = Array.from(\r\n\t\t\telement.querySelectorAll('.js-interactive-svg-trigger')\r\n\t\t) as HTMLElement[];\r\n\t\tif (this.triggers && this.triggers.length > 0) {\r\n\t\t\tthis.triggers.forEach((trigger) => {\r\n\t\t\t\tconst type = trigger.getAttribute(\"data-type\");\r\n\t\t\t\tconst targets = Array.from(\r\n\t\t\t\t\tthis.file.querySelectorAll(\r\n\t\t\t\t\t\t`[id^='${trigger.getAttribute('data-target')}']`\r\n\t\t\t\t\t)\r\n\t\t\t\t) as HTMLElement[];\r\n\t\t\t\tif (targets && targets.length > 0) {\r\n\t\t\t\t\ttargets.forEach((target) => {\r\n\t\t\t\t\t\taddClass(target, 'c-interactive-svg-target');\r\n\t\t\t\t\t\tif (type) {\r\n\t\t\t\t\t\t\taddClass(target, `type--${type}`);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\ttarget.addEventListener('click', () => {\r\n\t\t\t\t\t\t\taddClass(target, 'is-active');\r\n\t\t\t\t\t\t\ttrigger.click();\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\ttarget.addEventListener('mouseenter', () => {\r\n\t\t\t\t\t\t\taddClass(target, 'is-active');\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\ttarget.addEventListener('mouseleave', () => {\r\n\t\t\t\t\t\t\tremoveClass(target, 'is-active');\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","import { addClass } from '@opten/dom/add-class';\r\nimport { toggleClass } from '@opten/dom/toggle-class';\r\nimport { getSelectorElementFromElement } from '@opten/dom/get-selector-element-from-element';\r\nimport { hasClass } from '@opten/dom/has-class';\r\nimport { removeClass } from '@opten/dom/remove-class';\r\nimport { dispatchCustomEvent } from '@opten/events/dispatch-custom-event';\r\nimport { fitBoundsWithPadding } from '@opten/map-helpers/fit-bounds-with-padding';\r\nimport { scrollToOffset } from '@opten/scroll/scroll-to-offset';\r\n\r\nimport { FilterHelper } from './filter-helper';\r\nimport { PageTopComponent } from './page-top';\r\nimport { Collapse } from '@opten/collapse/initializer';\r\n\r\ndeclare const Cookiebot: any;\r\n\r\nexport interface MapSearcherOptions {\r\n\tlocationClass?: string;\r\n\tcookieClass?: string;\r\n\tmapClass?: string;\r\n\tmapOverlayClass?: string;\r\n\tmapScrollClass?: string;\r\n\tmarkerIcon?: {\r\n\t\turl: string;\r\n\t\tsize: google.maps.Size;\r\n\t\tscaledSize: google.maps.Size;\r\n\t\tanchor: google.maps.Point;\r\n\t};\r\n\tclusterStyle?: any;\r\n\tmapCenter?: {\r\n\t\tlat: number;\r\n\t\tlng: number;\r\n\t};\r\n\tmapInitialZoom?: 8;\r\n\tmaxZoom?: number;\r\n\tmapStyles?: google.maps.MapTypeStyle[];\r\n\tradiusBounds?: number;\r\n\topenIfSingleResult?: boolean;\r\n\thideCluster?: boolean;\r\n}\r\n\r\ndeclare class OverlappingMarkerSpiderfier {\r\n\tconstructor(map: any, options: any);\r\n\taddMarker(marker: any);\r\n\taddListener(event, func);\r\n\tmarkersNearMarker(event, func);\r\n}\r\n\r\ninterface MapsLocation {\r\n\telement: HTMLElement;\r\n\tmarker: google.maps.Marker;\r\n\tmarkerSettings: {\r\n\t\ticonUrl: string;\r\n\t\ticonColor: string;\r\n\t\ticonColorActive: string;\r\n\t\ticonColorHit: string;\r\n\t};\r\n\tlatLng: google.maps.LatLng;\r\n\ttags: string[];\r\n\tsearch: string[];\r\n\ttype: 'vbgf' | 'sn21' | 'canton' | 'standard';\r\n\tvisible: boolean;\r\n}\r\n\r\ninterface MapsFeature {\r\n\tname: string;\r\n\tfeature: google.maps.Data.Feature;\r\n\tbounds: google.maps.LatLngBounds;\r\n}\r\n\r\nexport class MapSearcher {\r\n\tpublic defaultOptions: MapSearcherOptions = {\r\n\t\tcookieClass: 'js-map-filter-cookie',\r\n\t\tmapClass: 'js-map-filter-map',\r\n\t\tmapOverlayClass: 'js-map-filter-overlay',\r\n\t\tmapScrollClass: 'js-map-filter-scroll',\r\n\t\tlocationClass: 'js-map-filter-location',\r\n\t\tmarkerIcon: {\r\n\t\t\turl: '/map/map-marker.svg',\r\n\t\t\tsize: new google.maps.Size(22, 35),\r\n\t\t\tscaledSize: new google.maps.Size(22, 35),\r\n\t\t\tanchor: new google.maps.Point(11, 35),\r\n\t\t},\r\n\t\tclusterStyle: [\r\n\t\t\t{\r\n\t\t\t\turl: '/map/map-cluster.png',\r\n\t\t\t\theight: 52,\r\n\t\t\t\twidth: 53,\r\n\t\t\t\ttextColor: 'black',\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\turl: '/map/map-cluster2.png',\r\n\t\t\t\theight: 55,\r\n\t\t\t\twidth: 56,\r\n\t\t\t\ttextColor: 'black',\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\turl: '/map/map-cluster3.png',\r\n\t\t\t\theight: 65,\r\n\t\t\t\twidth: 66,\r\n\t\t\t\ttextColor: 'black',\r\n\t\t\t},\r\n\t\t],\r\n\t\tmapCenter: { lat: 46.905358, lng: 8.423689 },\r\n\t\tmapInitialZoom: 8,\r\n\t\tmaxZoom: 15,\r\n\t\tmapStyles: [],\r\n\t\tradiusBounds: 0,\r\n\t\topenIfSingleResult: true,\r\n\t\thideCluster: false,\r\n\t};\r\n\r\n\tpublic filter: FilterHelper;\r\n\tprivate cookiePlaceholder: HTMLElement;\r\n\tprivate mapPlaceholder: HTMLElement;\r\n\tprivate mapOverlay: HTMLElement;\r\n\tprivate mapScroll: HTMLElement;\r\n\tprivate options: MapSearcherOptions;\r\n\tprivate map: google.maps.Map;\r\n\tprivate oms?: OverlappingMarkerSpiderfier;\r\n\tprivate markerCluster?: MarkerClusterer;\r\n\tprivate geoCoder: google.maps.Geocoder;\r\n\tprivate infowindow: google.maps.InfoWindow;\r\n\tprivate locations: MapsLocation[] = [];\r\n\tprivate previousAddress: string;\r\n\tprivate previousBounds: google.maps.LatLngBounds;\r\n\tprivate cantons: MapsFeature[] = [];\r\n\tprivate filterType: 'Default' | 'HealthyCommunities' | 'HealthySchools' =\r\n\t\t'Default';\r\n\r\n\t// tslint:disable-next-line: max-func-body-length\r\n\tconstructor(\r\n\t\tprivate element: HTMLElement,\r\n\t\tprivate scrollWrapper: HTMLElement | Window,\r\n\t\toptions?: MapSearcherOptions\r\n\t) {\r\n\t\tthis.options = { ...this.defaultOptions, ...options };\r\n\r\n\t\tthis.filter = new FilterHelper(this.element, {\r\n\t\t\tonSubmit: () => {\r\n\t\t\t\tthis.search();\r\n\t\t\t},\r\n\t\t\tonReset: () => {\r\n\t\t\t\tthis.search();\r\n\t\t\t},\r\n\t\t\tonRemoveFilter: () => {\r\n\t\t\t\tthis.search();\r\n\t\t\t},\r\n\t\t});\r\n\r\n\t\tthis.cookiePlaceholder = this.element.querySelector(\r\n\t\t\t`.${this.options.cookieClass}`\r\n\t\t);\r\n\t\tthis.mapPlaceholder = this.element.querySelector(\r\n\t\t\t`.${this.options.mapClass}`\r\n\t\t);\r\n\t\tthis.mapOverlay = this.element.querySelector(\r\n\t\t\t`.${this.options.mapOverlayClass}`\r\n\t\t);\r\n\t\tthis.mapScroll = this.element.querySelector(\r\n\t\t\t`.${this.options.mapScrollClass}`\r\n\t\t);\r\n\t\tnew PageTopComponent(\r\n\t\t\tdocument.querySelector('.js-page-top'),\r\n\t\t\tthis.mapScroll\r\n\t\t);\r\n\r\n\t\tthis.filterType =\r\n\t\t\tthis.filter.form.getAttribute('data-type') || 'Default';\r\n\r\n\t\tthis.options.hideCluster =\r\n\t\t\tthis.mapPlaceholder.getAttribute('data-hide-cluster') == 'true';\r\n\r\n\t\tthis.updateValuesByUrl();\r\n\r\n\t\tthis.locations = Array.from(\r\n\t\t\tthis.element.getElementsByClassName(this.options.locationClass)\r\n\t\t)\r\n\t\t\t.map((elem) => this.createMapLocation(elem))\r\n\t\t\t.filter((o) => !!o);\r\n\r\n\t\tthis.locations.forEach((l) => {\r\n\t\t\tlet markerClick = false;\r\n\t\t\tl.visible = true;\r\n\r\n\t\t\tconst collapse = getSelectorElementFromElement(l.element);\r\n\t\t\tconst overview = collapse?.querySelector('.js-map-filter-overview');\r\n\t\t\tif (overview) {\r\n\t\t\t\toverview.addEventListener('click', (e) => {\r\n\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\tdispatchCustomEvent(l.element, 'click');\r\n\t\t\t\t\tthis.centerMap();\r\n\t\t\t\t\tif (window.innerWidth < 768) {\r\n\t\t\t\t\t\tscrollToOffset(\r\n\t\t\t\t\t\t\tthis.getScrollTop() * -1 + 187,\r\n\t\t\t\t\t\t\tundefined,\r\n\t\t\t\t\t\t\t300,\r\n\t\t\t\t\t\t\t0,\r\n\t\t\t\t\t\t\tthis.getScrollTarget()\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\tl.marker.addListener('spider_click', () => {\r\n\t\t\t\tmarkerClick = true;\r\n\t\t\t\tdispatchCustomEvent(l.element, 'click');\r\n\t\t\t});\r\n\t\t\tl.element.addEventListener('click', (e) => {\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\tconst isActive = !hasClass(l.element, 'is-active');\r\n\t\t\t\tconst actives = this.locations.filter((loc) =>\r\n\t\t\t\t\thasClass(loc.element, 'is-active')\r\n\t\t\t\t);\r\n\t\t\t\tif (actives && actives.length) {\r\n\t\t\t\t\tactives.forEach((active) => {\r\n\t\t\t\t\t\tthis.hideCollapse(active);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t\tif (isActive) {\r\n\t\t\t\t\tif (markerClick === false) {\r\n\t\t\t\t\t\tthis.centerMap(\r\n\t\t\t\t\t\t\tnew google.maps.LatLngBounds(l.latLng, l.latLng),\r\n\t\t\t\t\t\t\ttrue\r\n\t\t\t\t\t\t);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tthis.showCollapse(l, () => {\r\n\t\t\t\t\t\tscrollToOffset(\r\n\t\t\t\t\t\t\tl.element.offsetTop - this.getScrollTop(),\r\n\t\t\t\t\t\t\tundefined,\r\n\t\t\t\t\t\t\t300,\r\n\t\t\t\t\t\t\t-15,\r\n\t\t\t\t\t\t\tthis.getScrollTarget()\r\n\t\t\t\t\t\t);\r\n\t\t\t\t\t});\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.hideCollapse(l);\r\n\t\t\t\t}\r\n\t\t\t\tmarkerClick = false;\r\n\t\t\t});\r\n\t\t});\r\n\r\n\t\twindow.addEventListener(\r\n\t\t\t'CookiebotOnLoad',\r\n\t\t\t(e) => {\r\n\t\t\t\tthis.cookiebotInit();\r\n\t\t\t},\r\n\t\t\tfalse\r\n\t\t);\r\n\t\tthis.cookiebotInit();\r\n\r\n\t\tthis.search();\r\n\t}\r\n\r\n\tprivate cookiebotInit() {\r\n\t\tif ('Cookiebot' in window && Cookiebot.consent.marketing) {\r\n\t\t\tremoveClass(this.mapPlaceholder, 'd-none');\r\n\t\t\taddClass(this.cookiePlaceholder, 'd-none');\r\n\t\t} else {\r\n\t\t\taddClass(this.mapPlaceholder, 'd-none');\r\n\t\t\tremoveClass(this.cookiePlaceholder, 'd-none');\r\n\t\t}\r\n\t\tif (\r\n\t\t\t'Cookiebot' in window &&\r\n\t\t\tCookiebot.consent.marketing &&\r\n\t\t\thasClass(this.element, 'is-cookiebot-initialized') == false\r\n\t\t) {\r\n\t\t\taddClass(this.element, 'is-cookiebot-initialized');\r\n\r\n\t\t\tthis.infowindow = new google.maps.InfoWindow({\r\n\t\t\t\tcontent: '',\r\n\t\t\t});\r\n\r\n\t\t\tthis.map = new google.maps.Map(this.mapPlaceholder, {\r\n\t\t\t\tzoom: this.options.mapInitialZoom,\r\n\t\t\t\tcenter: this.options.mapCenter,\r\n\t\t\t\tfullscreenControl: false,\r\n\t\t\t\tmapTypeControl: false,\r\n\t\t\t\tstreetViewControl: false,\r\n\t\t\t\tstyles: this.options.mapStyles,\r\n\t\t\t\tgestureHandling: window.innerWidth > 767 ? 'greedy' : 'auto',\r\n\t\t\t});\r\n\t\t\tgoogle.maps.event.addListenerOnce(this.map, 'idle', () =>\r\n\t\t\t\tthis.centerMap()\r\n\t\t\t);\r\n\t\t\tgoogle.maps.event.addListener(this.map, 'click', () => {\r\n\t\t\t\tthis.infowindow.close();\r\n\t\t\t});\r\n\r\n\t\t\tif (this.options.hideCluster == false) {\r\n\t\t\t\tthis.oms = new OverlappingMarkerSpiderfier(this.map, {\r\n\t\t\t\t\tmarkersWontMove: true,\r\n\t\t\t\t\tmarkersWontHide: true,\r\n\t\t\t\t\tbasicFormatEvents: true,\r\n\t\t\t\t\t//keepSpiderfied: true,\r\n\t\t\t\t\tcircleFootSeparation: Math.max(\r\n\t\t\t\t\t\tthis.options.markerIcon.size.width,\r\n\t\t\t\t\t\tthis.options.markerIcon.size.height\r\n\t\t\t\t\t),\r\n\t\t\t\t\tnearbyDistance: Math.max(\r\n\t\t\t\t\t\tthis.options.markerIcon.size.width,\r\n\t\t\t\t\t\tthis.options.markerIcon.size.height\r\n\t\t\t\t\t),\r\n\t\t\t\t});\r\n\r\n\t\t\t\tthis.markerCluster = new MarkerClusterer(this.map, [], {\r\n\t\t\t\t\tmaxZoom: this.options.maxZoom - 1,\r\n\t\t\t\t\tstyles: this.options.clusterStyle,\r\n\t\t\t\t\tzoomOnClick: false,\r\n\t\t\t\t});\r\n\t\t\t\tthis.markerCluster.setCalculator((markers, numStyles) => {\r\n\t\t\t\t\tif (markers.length >= 100) {\r\n\t\t\t\t\t\treturn { text: markers.length, index: 3 };\r\n\t\t\t\t\t} else if (markers.length >= 10) {\r\n\t\t\t\t\t\treturn { text: markers.length, index: 2 };\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\treturn { text: markers.length, index: 1 };\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t\tthis.markerCluster.addListener('clusterclick', (cluster) => {\r\n\t\t\t\t\tconst theBounds = cluster.getBounds();\r\n\t\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\t\tthis.centerMap(theBounds);\r\n\t\t\t\t\t}, 100);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tthis.geoCoder = new google.maps.Geocoder();\r\n\r\n\t\t\tthis.map.data.loadGeoJson(\r\n\t\t\t\t'/map/cantons_small.json',\r\n\t\t\t\tnull,\r\n\t\t\t\t(features) => {\r\n\t\t\t\t\tthis.cantons = features.map((feature) => {\r\n\t\t\t\t\t\tvar bounds = new google.maps.LatLngBounds();\r\n\t\t\t\t\t\tfeature\r\n\t\t\t\t\t\t\t.getGeometry()\r\n\t\t\t\t\t\t\t.forEachLatLng((latLng) => bounds.extend(latLng));\r\n\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\tname: feature.getProperty('ak').toLowerCase(),\r\n\t\t\t\t\t\t\tfeature,\r\n\t\t\t\t\t\t\tbounds,\r\n\t\t\t\t\t\t} as MapsFeature;\r\n\t\t\t\t\t});\r\n\t\t\t\t\tthis.search();\r\n\t\t\t\t}\r\n\t\t\t);\r\n\t\t\tthis.map.data.setStyle({\r\n\t\t\t\tstrokeColor: '#AE0270',\r\n\t\t\t\tstrokeOpacity: 0.8,\r\n\t\t\t\tstrokeWeight: 0,\r\n\t\t\t\tfillColor: '#AE0270',\r\n\t\t\t\tfillOpacity: 0.1,\r\n\t\t\t\tclickable: false,\r\n\t\t\t});\r\n\r\n\t\t\tthis.locations.forEach((l) => {\r\n\t\t\t\tl.marker.setMap(this.map);\r\n\t\t\t\tif (this.options.hideCluster == false) {\r\n\t\t\t\t\tthis.oms.addMarker(l.marker);\r\n\t\t\t\t\tthis.markerCluster.addMarker(l.marker);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tupdateValuesByUrl(hash?: string) {\r\n\t\tconst hashArray = (hash || location.hash).toLowerCase().split('/');\r\n\t\tif (hashArray && hashArray.length > 0) {\r\n\t\t\tthis.filter.clear();\r\n\t\t\thashArray.forEach((item) => {\r\n\t\t\t\tif (item.startsWith('#')) {\r\n\t\t\t\t\t// skip\r\n\t\t\t\t} else if (item.startsWith('.')) {\r\n\t\t\t\t\t// filter\r\n\t\t\t\t\tfor (const input of this.filter.filters) {\r\n\t\t\t\t\t\tif (input) {\r\n\t\t\t\t\t\t\tif (input.value === item) {\r\n\t\t\t\t\t\t\t\tinput.checked = true;\r\n\t\t\t\t\t\t\t\tconst event = new Event('change', {\r\n\t\t\t\t\t\t\t\t\tbubbles: false,\r\n\t\t\t\t\t\t\t\t\tcancelable: true,\r\n\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\tinput.dispatchEvent(event);\r\n\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t} else if (input.options) {\r\n\t\t\t\t\t\t\t\tconst option = Array.from(input.options).find(\r\n\t\t\t\t\t\t\t\t\t(o) => o.value == item\r\n\t\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t\t\tif (option) {\r\n\t\t\t\t\t\t\t\t\toption.selected = true;\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\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tif (this.filter.search) {\r\n\t\t\t\t\t\t// search\r\n\t\t\t\t\t\tthis.filter.search.value = decodeURI(item);\r\n\t\t\t\t\t\tdispatchCustomEvent(this.filter.search, 'input');\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\treInit() {\r\n\t\tsetTimeout(() => {\r\n\t\t\tthis.updateValuesByUrl();\r\n\t\t\tthis.search();\r\n\t\t\tgoogle.maps.event.trigger(this.map, 'resize');\r\n\t\t}, 300);\r\n\t}\r\n\r\n\tgetActiveLocations(): MapsLocation[] {\r\n\t\treturn this.locations.filter((o) => o.visible);\r\n\t}\r\n\r\n\tprivate createMapLocation(element: Element) {\r\n\t\tconst lat = parseFloat(element.getAttribute('data-lat'));\r\n\t\tconst lng = parseFloat(element.getAttribute('data-lng'));\r\n\t\tconst address = element.getAttribute('data-address');\r\n\t\tconst name = element.getAttribute('data-name');\r\n\t\tconst tagsAttr = element.getAttribute('data-tags');\r\n\t\tconst searchAttr = element.getAttribute('data-search');\r\n\t\tconst type = element.getAttribute('data-type');\r\n\t\tconst iconUrl = element.getAttribute('data-icon');\r\n\t\tconst iconColor = element.getAttribute('data-icon-color');\r\n\t\tconst iconColorActive = element.getAttribute('data-icon-color-active');\r\n\t\tconst iconColorHit = element.getAttribute('data-icon-color-hit');\r\n\t\tlet tags = [];\r\n\t\tif (tagsAttr) {\r\n\t\t\ttags = tagsAttr.split(',');\r\n\t\t}\r\n\t\tlet search = [];\r\n\t\tif (searchAttr) {\r\n\t\t\tsearch = searchAttr.split(',');\r\n\t\t}\r\n\t\tif (lat && lng) {\r\n\t\t\treturn this.setupMarker(\r\n\t\t\t\telement,\r\n\t\t\t\ttags,\r\n\t\t\t\tsearch,\r\n\t\t\t\tnew google.maps.LatLng(lat, lng),\r\n\t\t\t\ttype,\r\n\t\t\t\ticonUrl,\r\n\t\t\t\ticonColor,\r\n\t\t\t\ticonColorActive,\r\n\t\t\t\ticonColorHit\r\n\t\t\t);\r\n\t\t}\r\n\t}\r\n\tprivate setupMarker(\r\n\t\telement,\r\n\t\ttags,\r\n\t\tsearch,\r\n\t\tlocation,\r\n\t\ttype,\r\n\t\ticonUrl,\r\n\t\ticonColor,\r\n\t\ticonColorActive,\r\n\t\ticonColorHit\r\n\t): MapsLocation {\r\n\t\tconst marker = new google.maps.Marker({\r\n\t\t\tposition: location,\r\n\t\t\ticon: this.getMarkerTemplate(iconColor, iconUrl),\r\n\t\t\ttitle: element.getAttribute('data-name'),\r\n\t\t});\r\n\t\treturn {\r\n\t\t\telement,\r\n\t\t\tlatLng: location,\r\n\t\t\ttags,\r\n\t\t\tsearch,\r\n\t\t\tmarker,\r\n\t\t\tmarkerSettings: {\r\n\t\t\t\ticonUrl,\r\n\t\t\t\ticonColor,\r\n\t\t\t\ticonColorActive,\r\n\t\t\t\ticonColorHit,\r\n\t\t\t},\r\n\t\t\ttype,\r\n\t\t\tvisible: false,\r\n\t\t};\r\n\t}\r\n\r\n\tprivate setUrlHash(hash) {\r\n\t\tif (\r\n\t\t\t(location.hash && location.hash != hash) ||\r\n\t\t\t(!location.hash && hash != '#/')\r\n\t\t) {\r\n\t\t\tif (history.pushState) {\r\n\t\t\t\thistory.pushState(null, null, hash);\r\n\t\t\t} else {\r\n\t\t\t\tlocation.hash = hash;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t// tslint:disable-next-line: max-func-body-length\r\n\tpublic search() {\r\n\t\tconst formData = Array.from(new FormData(this.filter.form)).filter(\r\n\t\t\t(o) => !!o[1]\r\n\t\t);\r\n\t\tconst activeFilters = formData.map((o) => o[1]);\r\n\t\tconst activeFiltersGrouped: any = formData.reduce((arr: any[], ob) => {\r\n\t\t\tconst x = arr.find((o) => o[0] === ob[0]);\r\n\t\t\tx ? x[1].push(ob[1]) : arr.push([ob[0], [ob[1]]]);\r\n\t\t\treturn arr;\r\n\t\t}, []);\r\n\t\tconst activeCantons = this.cantons.filter(\r\n\t\t\t(o) => activeFilters.indexOf('.' + o.name) >= 0\r\n\t\t);\r\n\t\t// tslint:disable-next-line: max-func-body-length\r\n\t\tthis.getSearchBounds(activeFilters, activeCantons).then((bounds) => {\r\n\t\t\t'Cookiebot' in window &&\r\n\t\t\t\tCookiebot.consent.marketing &&\r\n\t\t\t\tthis.options.hideCluster == false &&\r\n\t\t\t\tthis.markerCluster.clearMarkers();\r\n\t\t\tconst searchAddress = this.getSearchAddress();\r\n\t\t\tconst hash = `${this.element.id}/${activeFilters.join('/')}`;\r\n\t\t\tif (hash) {\r\n\t\t\t\tthis.setUrlHash(`#${hash}`);\r\n\t\t\t}\r\n\t\t\tswitch (this.filterType) {\r\n\t\t\t\tcase 'HealthyCommunities':\r\n\t\t\t\t\tthis.locations.forEach((l) => {\r\n\t\t\t\t\t\tif (\r\n\t\t\t\t\t\t\t(activeCantons.length > 0 &&\r\n\t\t\t\t\t\t\t\tactiveFiltersGrouped.length -\r\n\t\t\t\t\t\t\t\t\t(searchAddress ? 1 : 0) ===\r\n\t\t\t\t\t\t\t\t\t1 &&\r\n\t\t\t\t\t\t\t\t(l.type === 'standard' || l.type === 'vbgf')) ||\r\n\t\t\t\t\t\t\t(activeCantons.length > 0 &&\r\n\t\t\t\t\t\t\t\tactiveFiltersGrouped.length -\r\n\t\t\t\t\t\t\t\t\t(searchAddress ? 1 : 0) >\r\n\t\t\t\t\t\t\t\t\t1 &&\r\n\t\t\t\t\t\t\t\t(l.type === 'standard' ||\r\n\t\t\t\t\t\t\t\t\tl.type === 'canton')) ||\r\n\t\t\t\t\t\t\t(activeCantons.length === 0 &&\r\n\t\t\t\t\t\t\t\tl.type === 'standard')\r\n\t\t\t\t\t\t) {\r\n\t\t\t\t\t\t\tthis.searchCondition(\r\n\t\t\t\t\t\t\t\tl,\r\n\t\t\t\t\t\t\t\tactiveFilters,\r\n\t\t\t\t\t\t\t\tactiveFiltersGrouped,\r\n\t\t\t\t\t\t\t\tsearchAddress\r\n\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tthis.hideLocation(l);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 'HealthySchools':\r\n\t\t\t\t\tthis.locations.forEach((l) => {\r\n\t\t\t\t\t\tif (\r\n\t\t\t\t\t\t\t(activeFiltersGrouped.length -\r\n\t\t\t\t\t\t\t\t(searchAddress ? 1 : 0) ===\r\n\t\t\t\t\t\t\t\t0 &&\r\n\t\t\t\t\t\t\t\t(l.type === 'vbgf' || l.type === 'sn21')) ||\r\n\t\t\t\t\t\t\t(activeCantons.length === 0 &&\r\n\t\t\t\t\t\t\t\tactiveFiltersGrouped.length -\r\n\t\t\t\t\t\t\t\t\t(searchAddress ? 1 : 0) ===\r\n\t\t\t\t\t\t\t\t\t1 &&\r\n\t\t\t\t\t\t\t\tl.type === 'standard') ||\r\n\t\t\t\t\t\t\t(activeCantons.length > 0 &&\r\n\t\t\t\t\t\t\t\tactiveFiltersGrouped.length -\r\n\t\t\t\t\t\t\t\t\t(searchAddress ? 1 : 0) ===\r\n\t\t\t\t\t\t\t\t\t1) ||\r\n\t\t\t\t\t\t\t(activeCantons.length > 0 &&\r\n\t\t\t\t\t\t\t\tactiveFiltersGrouped.length -\r\n\t\t\t\t\t\t\t\t\t(searchAddress ? 1 : 0) >\r\n\t\t\t\t\t\t\t\t\t1 &&\r\n\t\t\t\t\t\t\t\tl.type === 'standard')\r\n\t\t\t\t\t\t) {\r\n\t\t\t\t\t\t\tthis.searchCondition(\r\n\t\t\t\t\t\t\t\tl,\r\n\t\t\t\t\t\t\t\tactiveFilters,\r\n\t\t\t\t\t\t\t\tactiveFiltersGrouped,\r\n\t\t\t\t\t\t\t\tsearchAddress\r\n\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tthis.hideLocation(l);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tthis.locations.forEach((l) => {\r\n\t\t\t\t\t\tthis.searchCondition(\r\n\t\t\t\t\t\t\tl,\r\n\t\t\t\t\t\t\tactiveFilters,\r\n\t\t\t\t\t\t\tactiveFiltersGrouped,\r\n\t\t\t\t\t\t\tsearchAddress\r\n\t\t\t\t\t\t);\r\n\t\t\t\t\t});\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tvar locationBounds =\r\n\t\t\t\tbounds || this.accumulateLocationBounds(this.locations, false);\r\n\t\t\tif (locationBounds && this.options.radiusBounds > 0) {\r\n\t\t\t\tvar radiusBounds = this.addRadiusToBounds(\r\n\t\t\t\t\tthis.options.radiusBounds,\r\n\t\t\t\t\tlocationBounds\r\n\t\t\t\t);\r\n\t\t\t\tvar furtherLocations = this.locations.filter(\r\n\t\t\t\t\t(l) => radiusBounds.contains(l.latLng) && l.visible == false\r\n\t\t\t\t);\r\n\t\t\t\tif (furtherLocations && furtherLocations.length > 0) {\r\n\t\t\t\t\tfurtherLocations.forEach((l) => this.showLocation(l));\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (!bounds) {\r\n\t\t\t\tbounds = new google.maps.LatLngBounds();\r\n\t\t\t}\r\n\t\t\tthis.cantons.forEach((canton) => {\r\n\t\t\t\tconst isActiveCanton =\r\n\t\t\t\t\tactiveFilters.indexOf('.' + canton.name) >= 0 ||\r\n\t\t\t\t\tthis.locations.some(\r\n\t\t\t\t\t\t(o) =>\r\n\t\t\t\t\t\t\to.visible &&\r\n\t\t\t\t\t\t\to.tags[0].indexOf('.' + canton.name) >= 0\r\n\t\t\t\t\t);\r\n\t\t\t\tif (isActiveCanton) {\r\n\t\t\t\t\tbounds.extend(canton.bounds.getNorthEast());\r\n\t\t\t\t\tbounds.extend(canton.bounds.getSouthWest());\r\n\t\t\t\t}\r\n\t\t\t\tthis.map.data.overrideStyle(canton.feature, {\r\n\t\t\t\t\tvisible: isActiveCanton,\r\n\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\t\tthis.filter.updateTags();\r\n\t\t\tthis.filter.toggleEmptyState(\r\n\t\t\t\tthis.locations.filter((o) => o.visible).length > 0\r\n\t\t\t);\r\n\r\n\t\t\tconst activeLocations = this.locations.filter((o) => o.visible);\r\n\t\t\tif (\r\n\t\t\t\tthis.options.openIfSingleResult &&\r\n\t\t\t\tactiveLocations.length === 1\r\n\t\t\t) {\r\n\t\t\t\tdispatchCustomEvent(activeLocations[0].element, 'click');\r\n\t\t\t} else if (activeLocations.length > 1) {\r\n\t\t\t\tconst actives = this.locations.filter((loc) =>\r\n\t\t\t\t\thasClass(loc.element, 'is-active')\r\n\t\t\t\t);\r\n\t\t\t\tif (actives && actives.length) {\r\n\t\t\t\t\tactives.forEach((active) => {\r\n\t\t\t\t\t\tthis.hideCollapse(active);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tthis.centerMap(bounds);\r\n\t\t});\r\n\t}\r\n\r\n\tprivate searchCondition(\r\n\t\tl,\r\n\t\tactiveFilters,\r\n\t\tactiveFiltersGrouped,\r\n\t\tsearchAddress\r\n\t) {\r\n\t\tif (\r\n\t\t\tactiveFilters.length === 0 ||\r\n\t\t\t(searchAddress &&\r\n\t\t\t\tactiveFilters.length === 1 &&\r\n\t\t\t\tl.search.some((o) => o.indexOf(searchAddress) >= 0)) ||\r\n\t\t\t(!searchAddress &&\r\n\t\t\t\tactiveFilters.length >= 1 &&\r\n\t\t\t\tactiveFiltersGrouped.every((group) =>\r\n\t\t\t\t\tgroup[1].some((o) => l.tags.indexOf(o) >= 0)\r\n\t\t\t\t)) ||\r\n\t\t\t(activeFilters.length > 1 &&\r\n\t\t\t\tsearchAddress &&\r\n\t\t\t\tactiveFiltersGrouped.every(\r\n\t\t\t\t\t(group) =>\r\n\t\t\t\t\t\tgroup[1].some((o) => l.tags.indexOf(o) >= 0) ||\r\n\t\t\t\t\t\tgroup[1].some((o) =>\r\n\t\t\t\t\t\t\tl.search.some((o) => o.indexOf(searchAddress) >= 0)\r\n\t\t\t\t\t\t)\r\n\t\t\t\t) &&\r\n\t\t\t\tl.search.some((o) => o.indexOf(searchAddress) >= 0))\r\n\t\t) {\r\n\t\t\tthis.showLocation(l, activeFiltersGrouped.length > 0);\r\n\t\t} else {\r\n\t\t\tthis.hideLocation(l);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate showLocation(l: MapsLocation, hit: boolean = false) {\r\n\t\tl.visible = true;\r\n\t\tremoveClass(l.element, 'd-none');\r\n\t\ttoggleClass(l.element, 'c-map-filter__list--hit', hit);\r\n\t\tl.marker.setIcon(\r\n\t\t\tthis.getMarkerTemplate(\r\n\t\t\t\thit\r\n\t\t\t\t\t? l.markerSettings.iconColorHit\r\n\t\t\t\t\t: l.markerSettings.iconColor,\r\n\t\t\t\tl.markerSettings.iconUrl\r\n\t\t\t)\r\n\t\t);\r\n\t\tif ('Cookiebot' in window && Cookiebot.consent.marketing) {\r\n\t\t\tl.marker.setMap(this.map);\r\n\t\t\tif (this.options.hideCluster == false) {\r\n\t\t\t\tthis.markerCluster.addMarker(l.marker);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprivate hideLocation(l: MapsLocation) {\r\n\t\tl.visible = false;\r\n\t\taddClass(l.element, 'd-none');\r\n\t\tremoveClass(l.element, 'c-map-filter__list--hit');\r\n\t\tif (hasClass(l.element, 'is-active')) {\r\n\t\t\tthis.hideCollapse(l);\r\n\t\t}\r\n\t\tif ('Cookiebot' in window && Cookiebot.consent.marketing) {\r\n\t\t\tl.marker.setMap(null);\r\n\t\t\tif (this.options.hideCluster == false) {\r\n\t\t\t\tthis.markerCluster.removeMarker(l.marker);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprivate centerMap(bounds?, isExactPos = false) {\r\n\t\tif (\r\n\t\t\t'Cookiebot' in window &&\r\n\t\t\tCookiebot.consent.marketing &&\r\n\t\t\tthis.locations &&\r\n\t\t\tthis.locations.length > 0\r\n\t\t) {\r\n\t\t\tif (!bounds) {\r\n\t\t\t\tbounds = this.accumulateLocationBounds(this.locations);\r\n\t\t\t}\r\n\t\t\tlet top = 7.5;\r\n\t\t\tlet left = 7.5;\r\n\t\t\tlet bottom = 7.5;\r\n\t\t\tlet right = 7.5;\r\n\t\t\tif (window.innerWidth > 767) {\r\n\t\t\t\ttop = 15;\r\n\t\t\t\tleft = this.mapOverlay.offsetWidth;\r\n\t\t\t\tright = 15;\r\n\t\t\t\tbottom = 15;\r\n\t\t\t}\r\n\t\t\tfitBoundsWithPadding(this.map, bounds, {\r\n\t\t\t\ttop,\r\n\t\t\t\tleft,\r\n\t\t\t\tbottom,\r\n\t\t\t\tright,\r\n\t\t\t});\r\n\t\t\tthis.setZoom();\r\n\t\t\tif (isExactPos) {\r\n\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\tconst x = window.innerWidth > 767 ? -left / 2 : -left / 2;\r\n\t\t\t\t\tconst y = window.innerWidth > 767 ? -top / 2 : bottom / 2;\r\n\t\t\t\t\tthis.map.panBy(x, y);\r\n\t\t\t\t}, 100);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprivate setZoom() {\r\n\t\tif (this.map.getZoom() > this.options.maxZoom) {\r\n\t\t\tthis.map.setZoom(this.options.maxZoom);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate addRadiusToBounds(\r\n\t\tradius: number,\r\n\t\tbounds: google.maps.LatLngBounds\r\n\t) {\r\n\t\tconst ne = google.maps.geometry.spherical.computeOffset(\r\n\t\t\tbounds.getNorthEast(),\r\n\t\t\tradius * 1000,\r\n\t\t\t45\r\n\t\t);\r\n\t\tconst sw = google.maps.geometry.spherical.computeOffset(\r\n\t\t\tbounds.getSouthWest(),\r\n\t\t\tradius * 1000,\r\n\t\t\t225\r\n\t\t);\r\n\t\treturn new google.maps.LatLngBounds(sw, ne);\r\n\t}\r\n\r\n\tprivate accumulateLocationBounds(\r\n\t\tlocations: MapsLocation[],\r\n\t\tallIfEmpty = true\r\n\t) {\r\n\t\tlet visibles = locations.filter((o) => o.visible);\r\n\t\tif (!visibles || visibles.length === 0) {\r\n\t\t\tif (allIfEmpty == false) {\r\n\t\t\t\treturn null;\r\n\t\t\t}\r\n\t\t\tvisibles = locations;\r\n\t\t}\r\n\t\treturn visibles.reduce(\r\n\t\t\t(bounds, l) => bounds.extend(l.latLng),\r\n\t\t\tnew google.maps.LatLngBounds()\r\n\t\t);\r\n\t}\r\n\r\n\tprivate getSearchBounds(activeFilters: any[], activeCantons: any[]) {\r\n\t\treturn new Promise((resolve) => {\r\n\t\t\tconst address = this.getSearchAddress();\r\n\t\t\tif (address) {\r\n\t\t\t\tif (address === this.previousAddress) {\r\n\t\t\t\t\tresolve(this.previousBounds);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tif ('Cookiebot' in window && Cookiebot.consent.marketing) {\r\n\t\t\t\t\t\tthis.geoCoder.geocode(\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\taddress,\r\n\t\t\t\t\t\t\t\tregion: 'ch',\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t(results, status) => {\r\n\t\t\t\t\t\t\t\tif (status === google.maps.GeocoderStatus.OK) {\r\n\t\t\t\t\t\t\t\t\tconst bounds = results[0].geometry.bounds;\r\n\t\t\t\t\t\t\t\t\tthis.previousAddress = address;\r\n\t\t\t\t\t\t\t\t\tthis.previousBounds =\r\n\t\t\t\t\t\t\t\t\t\tnew google.maps.LatLngBounds().union(\r\n\t\t\t\t\t\t\t\t\t\t\tbounds\r\n\t\t\t\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t\t\t\tresolve(bounds);\r\n\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\tresolve(null);\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\t);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tresolve(null);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tresolve(null);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tprivate getSearchAddress() {\r\n\t\tif (this.filter.search) {\r\n\t\t\tconst address = this.filter.search.value;\r\n\t\t\tif (address) {\r\n\t\t\t\treturn address.trim().toLowerCase();\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn '';\r\n\t}\r\n\r\n\tprivate getMarkerTemplate(color = '#009799', variant: string) {\r\n\t\tconst marker = this.options.markerIcon;\r\n\t\tconst template = `\r\n\t\t\r\n\t\t\r\n\t\t\t \r\n\t\t \r\n\t\t \r\n\t\t`;\r\n\t\tmarker.url =\r\n\t\t\t'data:image/svg+xml;charset=UTF-8,' + encodeURIComponent(template);\r\n\t\treturn marker;\r\n\t}\r\n\r\n\tprivate showCollapse(location: MapsLocation, callback?: Function) {\r\n\t\taddClass(location.element, 'is-active');\r\n\t\tif (location.markerSettings.iconColorActive) {\r\n\t\t\tlocation.marker.setIcon(\r\n\t\t\t\tthis.getMarkerTemplate(\r\n\t\t\t\t\tlocation.markerSettings.iconColorActive,\r\n\t\t\t\t\tlocation.markerSettings.iconUrl\r\n\t\t\t\t)\r\n\t\t\t);\r\n\t\t}\r\n\r\n\t\tconst collapse = getSelectorElementFromElement(location.element);\r\n\t\tif (collapse) {\r\n\t\t\tif (hasClass(collapse, 'inner-collapse--done') == false) {\r\n\t\t\t\taddClass(collapse, 'inner-collapse--done');\r\n\t\t\t\tconst innerCollapse =\r\n\t\t\t\t\tcollapse.querySelectorAll(\r\n\t\t\t\t\t\t'.js-collapse-inner'\r\n\t\t\t\t\t);\r\n\t\t\t\tinnerCollapse.forEach((inner) => {\r\n\t\t\t\t\tnew Collapse(inner);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\twindow.location = location.element.getAttribute('href');\r\n\t\t}\r\n\t\tif (callback) {\r\n\t\t\tcallback();\r\n\t\t}\r\n\t}\r\n\r\n\tprivate hideCollapse(location: MapsLocation, callback?: Function) {\r\n\t\tremoveClass(location.element, 'is-active');\r\n\t\tlocation.marker.setIcon(\r\n\t\t\tthis.getMarkerTemplate(\r\n\t\t\t\tlocation.markerSettings.iconColor,\r\n\t\t\t\tlocation.markerSettings.iconUrl\r\n\t\t\t)\r\n\t\t);\r\n\r\n\t\tif (callback) {\r\n\t\t\tcallback();\r\n\t\t}\r\n\t}\r\n\r\n\tprivate getScrollTarget() {\r\n\t\treturn window.innerWidth > 767 ? this.mapScroll : this.scrollWrapper;\r\n\t}\r\n\r\n\tprivate getScrollTop() {\r\n\t\tconst target = this.getScrollTarget();\r\n\t\tif (target instanceof Window) {\r\n\t\t\treturn target.scrollY;\r\n\t\t} else {\r\n\t\t\treturn target.scrollTop;\r\n\t\t}\r\n\t}\r\n}\r\n","import { scrollToElement } from \"@opten/scroll/scroll-to-element\";\r\nimport { Component } from \"@opten/compiler/metadata/component\";\r\n\r\ndeclare const Cookiebot: any;\r\n\r\ninterface Location {\r\n\telement: HTMLElement;\r\n\tposition: google.maps.LatLng;\r\n\tmarker: google.maps.Marker;\r\n\turl?: string;\r\n\tcontent: string;\r\n\tbutton: HTMLElement;\r\n}\r\n\r\n@Component({ className: \"js-map\" })\r\nexport class MapComponent {\r\n\tprivate instance: google.maps.Map;\r\n\tprivate infoWindow: google.maps.InfoWindow;\r\n\tprivate geoCoder: google.maps.Geocoder;\r\n\tprivate locations: Location[];\r\n\r\n\tprivate mapHolder: HTMLElement;\r\n\r\n\tconstructor(private element: HTMLElement) {\r\n\t\twindow.addEventListener(\r\n\t\t\t\"CookiebotOnAccept\",\r\n\t\t\t(e) => {\r\n\t\t\t\tthis.cookiebotInit();\r\n\t\t\t},\r\n\t\t\tfalse\r\n\t\t);\r\n\t\tthis.cookiebotInit();\r\n\t}\r\n\r\n\tprivate cookiebotInit() {\r\n\t\tif (\"Cookiebot\" in window && Cookiebot.consent.marketing) {\r\n\t\t\tthis.geoCoder = new google.maps.Geocoder();\r\n\t\t\tthis.infoWindow = new google.maps.InfoWindow();\r\n\r\n\t\t\tthis.mapHolder = this.element.querySelector(\".js-map-placeholder\");\r\n\t\t\tPromise.all(\r\n\t\t\t\tArray.from(\r\n\t\t\t\t\tthis.element.querySelectorAll(\".js-map-location\")\r\n\t\t\t\t).map((elem) => this.parseLocation(elem as HTMLElement))\r\n\t\t\t).then((locations) => {\r\n\t\t\t\tthis.init(this.mapHolder, locations);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t// tslint:disable-next-line: max-func-body-length\r\n\tprivate init(placeholder: Element, locations: Location[]) {\r\n\t\tthis.instance = new google.maps.Map(placeholder, {\r\n\t\t\tcenter: { lat: 47.4133597, lng: 8.5342391 },\r\n\t\t\tzoom: 15,\r\n\t\t\tmaxZoom: 25,\r\n\t\t\tdisableDefaultUI: true,\r\n\t\t\tscrollwheel: false,\r\n\t\t\tstyles: MapStyles,\r\n\t\t});\r\n\r\n\t\tlocations.forEach((location) => {\r\n\t\t\tlocation.marker = this.addMarker(location);\r\n\t\t\tif (location.button) {\r\n\t\t\t\tlocation.button.addEventListener(\"click\", () => {\r\n\t\t\t\t\tthis.showLocation(location);\r\n\t\t\t\t});\r\n\t\t\t} else {\r\n\t\t\t\tlocation.element.addEventListener(\"click\", () => {\r\n\t\t\t\t\tthis.showLocation(location);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis.locations = locations;\r\n\r\n\t\tthis.showAllLocations();\r\n\t}\r\n\r\n\tprivate parseLocation(div: HTMLElement) {\r\n\t\treturn new Promise((resolve) => {\r\n\t\t\tconst infobox = div.querySelector(\".js-map-location-info\");\r\n\t\t\tconst location = {\r\n\t\t\t\telement: div,\r\n\t\t\t\turl: div.getAttribute(\"data-link\"),\r\n\t\t\t\tcontent: infobox ? infobox.innerHTML.trim() : undefined,\r\n\t\t\t\tbutton: div.querySelector(\".js-map-pan2location\"),\r\n\t\t\t} as Location;\r\n\r\n\t\t\tif (div.getAttribute(\"data-location\")) {\r\n\t\t\t\tconst latlng = div.getAttribute(\"data-location\").split(\",\");\r\n\t\t\t\tlocation.position = new google.maps.LatLng(\r\n\t\t\t\t\t+latlng[0],\r\n\t\t\t\t\t+latlng[1]\r\n\t\t\t\t);\r\n\t\t\t\tresolve(location);\r\n\t\t\t} else {\r\n\t\t\t\tconst address = div.getAttribute(\"data-address\");\r\n\t\t\t\tthis.geoCoder.geocode({ address }, (results, status) => {\r\n\t\t\t\t\tif (status === google.maps.GeocoderStatus.OK) {\r\n\t\t\t\t\t\tlocation.position = results[0].geometry.location;\r\n\t\t\t\t\t\tresolve(location);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tresolve(null);\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 addMarker(location: Location): google.maps.Marker {\r\n\t\tconst marker = new google.maps.Marker({\r\n\t\t\tposition: location.position,\r\n\t\t\tmap: this.instance,\r\n\t\t\ticon: \" \",\r\n\t\t\tlabel: {\r\n\t\t\t\tfontFamily: \"icomoon\",\r\n\t\t\t\tfontSize: \"30px\",\r\n\t\t\t\ttext: \"\\ue91c\",\r\n\t\t\t},\r\n\t\t});\r\n\r\n\t\tmarker.addListener(\"click\", () => {\r\n\t\t\tthis.showLocation(location);\r\n\t\t});\r\n\r\n\t\treturn marker;\r\n\t}\r\n\r\n\tprivate showLocation(location: Location): void {\r\n\t\tif (location.url) {\r\n\t\t\twindow.location.href = location.url;\r\n\t\t} else if (location.content) {\r\n\t\t\tscrollToElement(this.mapHolder, undefined, undefined, -50);\r\n\t\t\tthis.infoWindow.setContent(location.content);\r\n\t\t\tthis.infoWindow.open(this.instance, location.marker);\r\n\t\t}\r\n\r\n\t\tthis.instance.setCenter(location.position);\r\n\t\tthis.instance.setZoom(12);\r\n\t}\r\n\r\n\tprivate showAllLocations() {\r\n\t\tif (this.locations.length > 1) {\r\n\t\t\tconst bounds = new google.maps.LatLngBounds();\r\n\t\t\tfor (let i = 0; i < this.locations.length; i++) {\r\n\t\t\t\tbounds.extend(this.locations[i].position);\r\n\t\t\t}\r\n\r\n\t\t\tthis.instance.fitBounds(bounds, 30);\r\n\t\t} else {\r\n\t\t\tthis.instance.setCenter(this.locations[0].position);\r\n\t\t}\r\n\t}\r\n}\r\n\r\nexport var MapStyles: google.maps.MapTypeStyle[] = [\r\n\t{\r\n\t\telementType: \"labels.icon\",\r\n\t\tstylers: [\r\n\t\t\t{\r\n\t\t\t\tvisibility: \"off\",\r\n\t\t\t},\r\n\t\t],\r\n\t},\r\n\t{\r\n\t\tfeatureType: \"administrative.country\",\r\n\t\telementType: \"geometry.stroke\",\r\n\t\tstylers: [\r\n\t\t\t{\r\n\t\t\t\tcolor: \"#AE0270\",\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tvisibility: \"on\",\r\n\t\t\t},\r\n\t\t],\r\n\t},\r\n\t{\r\n\t\tfeatureType: \"administrative.province\",\r\n\t\telementType: \"geometry.stroke\",\r\n\t\tstylers: [\r\n\t\t\t{\r\n\t\t\t\tcolor: \"#AE0270\",\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tvisibility: \"on\",\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tweight: 2,\r\n\t\t\t},\r\n\t\t],\r\n\t},\r\n\t{\r\n\t\tfeatureType: \"poi.park\",\r\n\t\telementType: \"geometry\",\r\n\t\tstylers: [\r\n\t\t\t{\r\n\t\t\t\tcolor: \"#e5e5e5\",\r\n\t\t\t},\r\n\t\t],\r\n\t},\r\n\t{\r\n\t\tfeatureType: \"road.arterial\",\r\n\t\telementType: \"labels.text.fill\",\r\n\t\tstylers: [\r\n\t\t\t{\r\n\t\t\t\tcolor: \"#757575\",\r\n\t\t\t},\r\n\t\t],\r\n\t},\r\n\t{\r\n\t\tfeatureType: \"road.highway\",\r\n\t\telementType: \"labels.text.fill\",\r\n\t\tstylers: [\r\n\t\t\t{\r\n\t\t\t\tcolor: \"#616161\",\r\n\t\t\t},\r\n\t\t],\r\n\t},\r\n\t{\r\n\t\tfeatureType: \"water\",\r\n\t\telementType: \"geometry\",\r\n\t\tstylers: [\r\n\t\t\t{\r\n\t\t\t\tcolor: \"#c9c9c9\",\r\n\t\t\t},\r\n\t\t],\r\n\t},\r\n];\r\n","import { Component } from '@opten/compiler/metadata/component';\r\nimport { debounce } from '@opten/reactive/debounce';\r\n\r\ndeclare const Swiper: any;\r\n\r\n@Component({ className: 'js-media-slider' })\r\nexport class MediaSliderComponent {\r\n\tconstructor(private element: HTMLElement) {\r\n\t\tconst autoplay = parseInt(this.element.getAttribute('data-autoplay'), 0) || 0;\r\n\t\tconst swiper = new Swiper(element, {\r\n\t\t\tautoHeight: true,\r\n\t\t\tspeed: 1000,\r\n\t\t\tnavigation: {\r\n\t\t\t\tnextEl: '.swiper-button-next',\r\n\t\t\t\tprevEl: '.swiper-button-prev',\r\n\t\t\t},\r\n\t\t\tpagination: {\r\n\t\t\t\tel: '.swiper-pagination',\r\n\t\t\t\tclickable: true,\r\n\t\t\t},\r\n\t\t\tkeyboard: {\r\n\t\t\t\tenabled: true,\r\n\t\t\t\tonlyInViewport: true,\r\n\t\t\t},\r\n\t\t\tparallax: true,\r\n\t\t\tautoplay: (autoplay > 0 ? {\r\n\t\t\t\tdelay: 5000,\r\n\t\t\t } : false),\r\n\t\t});\r\n\r\n\t\tdocument.addEventListener('lazyloaded', (e) => {\r\n\t\t\tswiper.updateAutoHeight(0);\r\n\t\t});\r\n\r\n\t\twindow.addEventListener(\r\n\t\t\t'resize',\r\n\t\t\tdebounce(() => {\r\n\t\t\t\tswiper.updateAutoHeight(0);\r\n\t\t\t}, 400)\r\n\t\t);\r\n\t}\r\n}\r\n","import { Component } from '@opten/compiler/metadata/component';\r\nimport { getCookie } from '@opten/cookie/get';\r\nimport { setCookie } from '@opten/cookie/set';\r\nimport { addClass } from '@opten/dom/add-class';\r\nimport { hasClass } from '@opten/dom/has-class';\r\nimport { removeClass } from '@opten/dom/remove-class';\r\nimport { toggleClass } from '@opten/dom/toggle-class';\r\n\r\n@Component({ className: 'js-modal' })\r\nexport class ModalComponent {\r\n\tprivate triggers: HTMLElement[];\r\n\tprivate cookieKey: string;\r\n\tprivate cookieDays: number;\r\n\r\n\tconstructor(private element: HTMLElement) {\r\n\t\tthis.cookieKey = `modal-ignore-${element.id}`;\r\n\t\tthis.cookieDays =\r\n\t\t\tparseInt(this.element.getAttribute('data-cookie-ignore')) || -1;\r\n\r\n\t\tif (this.cookieDays >= 0 && getCookie(this.cookieKey) !== 'true') {\r\n\t\t\taddClass(this.element, 'is-open');\r\n\t\t}\r\n\r\n\t\tthis.triggers = Array.from(\r\n\t\t\tdocument.querySelectorAll(\r\n\t\t\t\t`[href=\"#${this.element.id}\"], [data-target=\"#${this.element.id}\"]`\r\n\t\t\t)\r\n\t\t);\r\n\r\n\t\tthis.triggers.forEach((trigger) => {\r\n\t\t\ttrigger.addEventListener('click', (e) => {\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t\ttoggleClass(this.element, 'is-open');\r\n\t\t\t\tif (hasClass(this.element, 'is-open') == false) {\r\n\t\t\t\t\tthis.closeEvent();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t});\r\n\r\n\t\tdocument.addEventListener('click', (e) => {\r\n\t\t\tif (\r\n\t\t\t\thasClass(this.element, 'is-open') &&\r\n\t\t\t\t(!e.target.closest('.c-modal__inner') ||\r\n\t\t\t\t\te.target.closest('.js-modal-close'))\r\n\t\t\t) {\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\tremoveClass(this.element, 'is-open');\r\n\t\t\t\tthis.closeEvent();\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tprivate closeEvent() {\r\n\t\tif (this.cookieDays >= 0 && getCookie(this.cookieKey) !== 'true') {\r\n\t\t\tconst date = new Date();\r\n\t\t\tdate.setDate(date.getDate() + 1);\r\n\t\t\tsetCookie(this.cookieKey, 'true', date, '/');\r\n\t\t}\r\n\t}\r\n}\r\n","import { Component } from '@opten/compiler/metadata/component';\r\nimport { getWindowScrollTop } from '@opten/dom/get-window-scroll-top';\r\nimport { toggleClass } from '@opten/dom/toggle-class';\r\nimport { debounce } from '@opten/reactive/debounce';\r\nimport { scrollToOffset } from '@opten/scroll/scroll-to-offset';\r\n\r\n@Component({ className: 'js-page-top' })\r\nexport class PageTopComponent {\r\n\tconstructor(\r\n\t\tprivate element: HTMLElement,\r\n\t\tprivate wrapper: HTMLElement | Window = window\r\n\t) {\r\n\t\tthis.setVisibility();\r\n\t\tthis.wrapper.addEventListener(\r\n\t\t\t'scroll',\r\n\t\t\tdebounce(() => this.setVisibility(), 300)\r\n\t\t);\r\n\t\telement.addEventListener('click', (e) => {\r\n\t\t\te.preventDefault();\r\n\t\t\tscrollToOffset(\r\n\t\t\t\tthis.scrollTop() * -1,\r\n\t\t\t\tundefined,\r\n\t\t\t\tundefined,\r\n\t\t\t\tundefined,\r\n\t\t\t\tthis.wrapper\r\n\t\t\t);\r\n\t\t});\r\n\t}\r\n\r\n\tprivate setVisibility() {\r\n\t\ttoggleClass(this.element, 'is-visible', this.scrollTop() > 400);\r\n\t}\r\n\r\n\tprivate scrollTop() {\r\n\t\tif (this.wrapper instanceof Window || this.wrapper.clientHeight == 0) {\r\n\t\t\treturn getWindowScrollTop();\r\n\t\t} else {\r\n\t\t\treturn this.wrapper.scrollTop;\r\n\t\t}\r\n\t}\r\n}\r\n","import { Component } from '@opten/compiler/metadata/component';\r\nimport { addClass } from '@opten/dom/add-class';\r\nimport { hasClass } from '@opten/dom/has-class';\r\nimport { EventDispatcher } from '@opten/events/event-dispatcher';\r\n\r\nimport barba from '@barba/core';\r\nimport barbaCss from '@barba/css';\r\n\r\ndeclare const Cookiebot: any;\r\n\r\n@Component({ className: 'js-page-transition' })\r\nexport class PageTransitionComponent {\r\n\tstatic onPageChange = new EventDispatcher();\r\n\r\n\t// tslint:disable-next-line: max-func-body-length\r\n\tconstructor(private element: HTMLElement) {\r\n\t\t// const _listeners = [];\r\n\r\n\t\t// window.EventTarget || (window.EventTarget = function () {});\r\n\t\t// EventTarget.prototype.addEventListenerBase =\r\n\t\t// \tEventTarget.prototype.addEventListener;\r\n\t\t// EventTarget.prototype.addEventListener = function (\r\n\t\t// \ttype,\r\n\t\t// \tlistener,\r\n\t\t// \toptions?\r\n\t\t// ) {\r\n\t\t// \t_listeners.push({\r\n\t\t// \t\ttarget: this,\r\n\t\t// \t\ttype: type,\r\n\t\t// \t\tlistener: listener,\r\n\t\t// \t\toptions: options,\r\n\t\t// \t});\r\n\t\t// \tif (this) {\r\n\t\t// \t\tthis.addEventListenerBase(type, listener, options);\r\n\t\t// \t}\r\n\t\t// };\r\n\r\n\t\t// EventTarget.prototype.removeEventListeners = function (targetTypes) {\r\n\t\t// \tfor (let index = 0; index != _listeners.length; index++) {\r\n\t\t// \t\tconst item = _listeners[index];\r\n\r\n\t\t// \t\tconst target = item.target;\r\n\t\t// \t\tconst type = item.type;\r\n\t\t// \t\tconst listener = item.listener;\r\n\r\n\t\t// \t\tif (\r\n\t\t// \t\t\ttarget == this &&\r\n\t\t// \t\t\t(Array.isArray(targetTypes)\r\n\t\t// \t\t\t\t? targetTypes.includes(type)\r\n\t\t// \t\t\t\t: type == targetTypes)\r\n\t\t// \t\t) {\r\n\t\t// \t\t\tthis.removeEventListener(type, listener);\r\n\t\t// \t\t}\r\n\t\t// \t}\r\n\t\t// };\r\n\r\n\t\tif (hasClass(this.element, 'barba--init') === false) {\r\n\t\t\tbarba.hooks.afterOnce(() => {\r\n\t\t\t\taddClass(this.element, 'barba--init');\r\n\t\t\t});\r\n\t\t\tbarba.hooks.after((e) => {\r\n\t\t\t\tPageTransitionComponent.onPageChange.dispatch(e.next.container);\r\n\t\t\t\tif ('Cookiebot' in window) {\r\n\t\t\t\t\tCookiebot.runScripts();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\tbarba.hooks.enter((data) => {\r\n\t\t\t\tconst startAt = data.next.container.querySelector(\r\n\t\t\t\t\t'.js-page-transition-start-at'\r\n\t\t\t\t) as HTMLElement;\r\n\t\t\t\tif (startAt) {\r\n\t\t\t\t\tconst pos = startAt.style.position;\r\n\t\t\t\t\tstartAt.style.position = 'relative';\r\n\t\t\t\t\tconst offset = startAt.offsetTop;\r\n\t\t\t\t\tstartAt.style.position = pos;\r\n\t\t\t\t\tif (window.scrollY > offset) {\r\n\t\t\t\t\t\twindow.scrollTo(0, offset);\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\twindow.scrollTo(0, 0);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\t// barba.hooks.beforeLeave(() => {\r\n\t\t\t// \twindow.removeEventListeners(['resize', 'scroll']);\r\n\t\t\t// \tdocument.removeEventListeners(['resize', 'scroll']);\r\n\t\t\t// });\r\n\t\t\tbarba.hooks.leave((data) => {\r\n\t\t\t\treturn new Promise((resolve) => {\r\n\t\t\t\t\tif (\r\n\t\t\t\t\t\tdata.current.namespace === 'page' &&\r\n\t\t\t\t\t\tdata.next.namespace === 'page'\r\n\t\t\t\t\t) {\r\n\t\t\t\t\t\tresolve();\r\n\t\t\t\t\t}\r\n\t\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\t\tresolve();\r\n\t\t\t\t\t}, 350);\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t\tbarba.use(barbaCss);\r\n\t\t\tbarba.init({\r\n\t\t\t\ttimeout: 10000,\r\n\t\t\t\tprevent: ({ el }) =>\r\n\t\t\t\t\t!!el.closest('.js-page-transition-prevent') ||\r\n\t\t\t\t\t!el.closest('.js-page-transition-start-at'),\r\n\t\t\t\ttransitions: [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tname: 'slide-in',\r\n\t\t\t\t\t\tto: {\r\n\t\t\t\t\t\t\tnamespace: ['page-slide'],\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tenter() {},\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tname: 'slide-out',\r\n\t\t\t\t\t\tfrom: {\r\n\t\t\t\t\t\t\tnamespace: ['page-slide'],\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tto: {\r\n\t\t\t\t\t\t\tnamespace: ['page'],\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tenter() {},\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tname: 'fade',\r\n\t\t\t\t\t\tfrom: {\r\n\t\t\t\t\t\t\tnamespace: ['page'],\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tto: {\r\n\t\t\t\t\t\t\tnamespace: ['page'],\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tenter() {},\r\n\t\t\t\t\t},\r\n\t\t\t\t],\r\n\t\t\t\trequestError: (trigger, action, url, response) => {\r\n\t\t\t\t\t// redirect to failed url (to show 404, 500 or just clean reload if timeout happend)\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t},\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n}\r\n","import { Component } from '@opten/compiler/metadata/component';\r\nimport { addClass } from '@opten/dom/add-class';\r\nimport { removeClass } from '@opten/dom/remove-class';\r\n\r\n@Component({ className: 'js-password-reveal' })\r\nexport class PasswordRevealComponent {\r\n\tprivate formField: HTMLElement;\r\n\tprivate input: HTMLInputElement;\r\n\r\n\tconstructor(private element: HTMLElement) {\r\n\t\tthis.formField = element.closest('.c-formfield') as HTMLElement;\r\n\t\tthis.input = this.formField?.querySelector('input') as HTMLInputElement;\r\n\r\n\t\tif (this.input) {\r\n\t\t\tthis.element.addEventListener('click', () => {\r\n\t\t\t\tif (this.input.type.toLowerCase() == 'password') {\r\n\t\t\t\t\tthis.input.type = 'text';\r\n\t\t\t\t\tremoveClass(this.element, 'icon-eye');\r\n\t\t\t\t\taddClass(this.element, 'icon-eye-off');\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.input.type = 'password';\r\n\t\t\t\t\taddClass(this.element, 'icon-eye');\r\n\t\t\t\t\tremoveClass(this.element, 'icon-eye-off');\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n}\r\n","import { Component } from '@opten/compiler/metadata/component';\r\n\r\ndeclare const grecaptcha: any;\r\n\r\n@Component({ className: 'g-recaptcha' })\r\nexport class ReCaptchaComponent {\r\n\tconstructor(private element: HTMLElement) {\r\n\t\tgrecaptcha.ready(() => {\r\n\t\t\tgrecaptcha.render(this.element);\r\n\t\t});\r\n\t}\r\n}\r\n","import { Component } from '@opten/compiler/metadata/component';\r\nimport { scrollToElement } from '@opten/scroll/scroll-to-element';\r\nimport { getSelectorElementFromElement } from '@opten/dom/get-selector-element-from-element';\r\n\r\n@Component({ className: 'js-scroll-to' })\r\nexport class ScrollToComponent {\r\n\tprivate navbar: HTMLElement;\r\n\r\n\tconstructor(private element: HTMLElement) {\r\n\t\tthis.navbar = document.getElementsByClassName(\r\n\t\t\t'js-navbar-height'\r\n\t\t)[0] as HTMLElement;\r\n\r\n\t\telement.addEventListener('click', (e) => {\r\n\t\t\te.preventDefault();\r\n\t\t\tconst target = getSelectorElementFromElement(element);\r\n\t\t\tconst offsetString = element.getAttribute('data-offset');\r\n\t\t\tlet offset =\r\n\t\t\t\toffsetString === 'targetHeight'\r\n\t\t\t\t\t? target.clientHeight\r\n\t\t\t\t\t: parseInt(offsetString || '0', 0);\r\n\t\t\tif (isNaN(offset)) {\r\n\t\t\t\toffset = 0;\r\n\t\t\t}\r\n\t\t\tif (offset === 0) {\r\n\t\t\t\toffset = this.navbar ? this.navbar.clientHeight * -1 : 0;\r\n\t\t\t}\r\n\t\t\tscrollToElement(target, undefined, undefined, offset);\r\n\t\t});\r\n\t}\r\n}\r\n","import { Component } from '@opten/compiler/metadata/component';\r\nimport { addClass } from '@opten/dom/add-class';\r\nimport { getSelectorElementFromElement } from '@opten/dom/get-selector-element-from-element';\r\nimport { hasClass } from '@opten/dom/has-class';\r\nimport { removeClass } from '@opten/dom/remove-class';\r\nimport { EventDispatcher } from '@opten/events/event-dispatcher';\r\n\r\nimport { MapStyles } from './map';\r\nimport { MapSearcher } from './map-searcher';\r\n\r\n@Component({ className: 'js-sidebar' })\r\nexport class SidebarComponent {\r\n\tstatic onPageChange = new EventDispatcher();\r\n\r\n\tprivate triggers: HTMLElement[] = [];\r\n\tprivate closers: HTMLElement[] = [];\r\n\r\n\tprivate mapSearcher: MapSearcher;\r\n\r\n\tconstructor(private element: HTMLElement) {\r\n\t\tthis.triggers = Array.from(\r\n\t\t\tthis.element.getElementsByClassName('js-sidebar-item')\r\n\t\t) as HTMLElement[];\r\n\t\tthis.closers = Array.from(\r\n\t\t\tthis.element.getElementsByClassName('js-sidebar-close')\r\n\t\t) as HTMLElement[];\r\n\r\n\t\tthis.triggers.forEach((trigger) => {\r\n\t\t\tconst target = getSelectorElementFromElement(trigger);\r\n\t\t\tconst segment = trigger.getAttribute('href');\r\n\t\t\tif (window.location.href.indexOf(segment) >= 0) {\r\n\t\t\t\tthis.open(trigger, target, true);\r\n\t\t\t}\r\n\t\t\ttrigger.addEventListener('click', (e) => {\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\tconst isActive = hasClass(trigger, 'is-active');\r\n\t\t\t\tthis.triggers.filter((o) => removeClass(o, 'is-active'));\r\n\t\t\t\tif (isActive) {\r\n\t\t\t\t\tthis.close();\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.open(trigger, target);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\tconst otherTriggers = Array.from(\r\n\t\t\t\tdocument.querySelectorAll(`[href^='${segment}']`)\r\n\t\t\t) as HTMLLinkElement[];\r\n\t\t\tif (otherTriggers && otherTriggers.length > 0) {\r\n\t\t\t\totherTriggers.forEach((otherTrigger) => {\r\n\t\t\t\t\tif (otherTrigger != trigger) {\r\n\t\t\t\t\t\totherTrigger.addEventListener('click', (e) => {\r\n\t\t\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\t\t\taddClass(trigger, 'is-active');\r\n\t\t\t\t\t\t\tthis.open(\r\n\t\t\t\t\t\t\t\totherTrigger,\r\n\t\t\t\t\t\t\t\ttarget,\r\n\t\t\t\t\t\t\t\tfalse,\r\n\t\t\t\t\t\t\t\totherTrigger.getAttribute('href')\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\r\n\t\tdocument.addEventListener('click', (e) => {\r\n\t\t\tif (\r\n\t\t\t\tthis.triggers.some((o) => hasClass(o, 'is-active')) &&\r\n\t\t\t\tdocument.body.contains(e.target) &&\r\n\t\t\t\t!e.target.closest('.js-sidebar') &&\r\n\t\t\t\thasClass(document.body, 'has-overlay') == false\r\n\t\t\t) {\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\tthis.close();\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis.closers.forEach((closer) => {\r\n\t\t\tcloser.addEventListener('click', (e) => {\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\tthis.close();\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n\r\n\t// tslint:disable-next-line: max-func-body-length\r\n\tprivate open(\r\n\t\ttrigger,\r\n\t\ttarget,\r\n\t\tignoreHistory = false,\r\n\t\tsegmentAndFilter = undefined\r\n\t) {\r\n\t\taddClass(trigger, 'is-active');\r\n\t\tif (ignoreHistory === false) {\r\n\t\t\tconst segment = trigger.getAttribute('href');\r\n\t\t\tconst filterActive = target.getAttribute('data-filter-active');\r\n\t\t\tif (segmentAndFilter) {\r\n\t\t\t\thistory.replaceState(null, null, segmentAndFilter);\r\n\t\t\t} else if (filterActive) {\r\n\t\t\t\thistory.replaceState(null, null, `${segment}/${filterActive}`);\r\n\t\t\t} else {\r\n\t\t\t\thistory.replaceState(null, null, segment);\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (hasClass(target, 'js-map-filter')) {\r\n\t\t\taddClass(document.body, 'has-overlay');\r\n\t\t\tif (!this.mapSearcher) {\r\n\t\t\t\tconst render = target.querySelector(\r\n\t\t\t\t\t'.js-sidebar-render'\r\n\t\t\t\t) as HTMLElement;\r\n\t\t\t\tfetch(render.getAttribute('data-url'), {\r\n\t\t\t\t\tmethod: 'get',\r\n\t\t\t\t\tcache: 'default',\r\n\t\t\t\t\tcredentials: 'same-origin',\r\n\t\t\t\t\theaders: {\r\n\t\t\t\t\t\t'Content-Type': 'application/x-www-form-urlencoded',\r\n\t\t\t\t\t\t'accept-language': document.documentElement.lang,\r\n\t\t\t\t\t\t'X-Requested-With': 'XMLHttpRequest',\r\n\t\t\t\t\t},\r\n\t\t\t\t})\r\n\t\t\t\t\t.then((response) => response.text())\r\n\t\t\t\t\t.then((response) => {\r\n\t\t\t\t\t\trender.innerHTML = response;\r\n\t\t\t\t\t\tremoveClass(render, 'is-loading');\r\n\t\t\t\t\t\tSidebarComponent.onPageChange.dispatch(\r\n\t\t\t\t\t\t\trender.children[0]\r\n\t\t\t\t\t\t);\r\n\t\t\t\t\t\tthis.mapSearcher = new MapSearcher(target, target, {\r\n\t\t\t\t\t\t\tmapStyles: MapStyles,\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t})\r\n\t\t\t\t\t.catch((error) => {\r\n\t\t\t\t\t\trender.innerHTML =\r\n\t\t\t\t\t\t\t'Map could not be loaded. Please reload page.';\r\n\t\t\t\t\t});\r\n\t\t\t} else {\r\n\t\t\t\tthis.mapSearcher.reInit();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprivate close() {\r\n\t\tremoveClass(document.body, 'has-overlay');\r\n\t\tthis.triggers.filter((o) => {\r\n\t\t\tremoveClass(o, 'is-active');\r\n\t\t});\r\n\t\thistory.replaceState(\r\n\t\t\tnull,\r\n\t\t\tnull,\r\n\t\t\twindow.location.href.replace(window.location.hash, '')\r\n\t\t);\r\n\t}\r\n}\r\n","import { removeClass } from '@opten/dom/remove-class';\r\nimport { Component } from '@opten/compiler/metadata/component';\r\nimport { addClass } from '@opten/dom/add-class';\r\n\r\n@Component({ className: 'js-sticky' })\r\nexport class StickyComponent {\r\n\tprivate ignoreObserver = false;\r\n\tconstructor(private element: HTMLElement) {\r\n\t\tconst observer = new IntersectionObserver(\r\n\t\t\t([e]) => {\r\n\t\t\t\tif (this.ignoreObserver === false && e.boundingClientRect.top < 200) {\r\n\t\t\t\t\tif (e.intersectionRatio < 1) {\r\n\t\t\t\t\t\taddClass(element, 'is-sticky');\r\n\t\t\t\t\t\tthis.ignoreObserver = true;\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tremoveClass(element, 'is-sticky');\r\n\t\t\t\t\t\tthis.ignoreObserver = false;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\t\tthis.ignoreObserver = false;\r\n\t\t\t\t\t}, 300);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tthreshold: [1],\r\n\t\t\t\trootMargin: '-20px 0px 0px 0px',\r\n\t\t\t}\r\n\t\t);\r\n\r\n\t\tobserver.observe(element);\r\n\t}\r\n}\r\n","import { Component } from '@opten/compiler/metadata/component';\r\nimport { addClass } from '@opten/dom/add-class';\r\nimport { addClassFactory } from '@opten/dom/add-class-factory';\r\nimport { hasClass } from '@opten/dom/has-class';\r\nimport { removeClass, removeClassFactory } from '@opten/dom/remove-class';\r\nimport { debounce } from '@opten/reactive/debounce';\r\n\r\n@Component({ className: 'js-tabdrop' })\r\nexport class TabDropComponent {\r\n\tprivate tabdrop: TabDrop;\r\n\r\n\tconstructor(private element: HTMLElement) {\r\n\t\tthis.tabdrop = new TabDrop(element);\r\n\t}\r\n}\r\n\r\n//import { TabDrop } from '@opten/tabdrop';\r\nexport class TabDrop {\r\n\tprivate itemHolder: HTMLElement;\r\n\tprivate tabdrop: HTMLElement;\r\n\tprivate children: HTMLElement[];\r\n\tprivate listChildren: HTMLElement[];\r\n\r\n\tconstructor(private element: HTMLElement) {\r\n\t\tthis.itemHolder = this.element.getElementsByClassName(\r\n\t\t\t'js-tabdrop-holder'\r\n\t\t)[0] as HTMLElement;\r\n\t\tthis.tabdrop = this.element.getElementsByClassName(\r\n\t\t\t'js-tabdrop-element'\r\n\t\t)[0] as HTMLElement;\r\n\t\tthis.children = Array.from(this.element.children) as HTMLElement[];\r\n\t\tthis.listChildren = this.children.filter(\r\n\t\t\t(child) => !hasClass(child, 'js-tabdrop-element')\r\n\t\t);\r\n\r\n\t\twindow.addEventListener(\r\n\t\t\t'resize',\r\n\t\t\tdebounce(() => this.layout(), 100)\r\n\t\t);\r\n\r\n\t\tthis.layout();\r\n\t}\r\n\r\n\tprotected onTransform(element: HTMLElement): HTMLElement {\r\n\t\treturn element.cloneNode(true) as HTMLElement;\r\n\t}\r\n\r\n\tprivate getBreakIndex() {\r\n\t\tconst containerWidth = this.element.offsetWidth;\r\n\t\tlet cummulatedWidth = this.tabdrop.offsetWidth;\r\n\t\tlet index = 0;\r\n\r\n\t\tfor (const child of this.listChildren) {\r\n\t\t\tcummulatedWidth += child.offsetWidth;\r\n\r\n\t\t\tif (cummulatedWidth > containerWidth) {\r\n\t\t\t\treturn index;\r\n\t\t\t}\r\n\r\n\t\t\tindex++;\r\n\t\t}\r\n\r\n\t\treturn -1;\r\n\t}\r\n\r\n\tprivate layout() {\r\n\t\tremoveClass(this.element, 'is-loading');\r\n\t\tArray.from(this.element.children).forEach(removeClassFactory('d-none'));\r\n\t\tthis.itemHolder.innerHTML = '';\r\n\r\n\t\tconst breakIndex = this.getBreakIndex();\r\n\r\n\t\tif (breakIndex === -1) {\r\n\t\t\taddClass(this.tabdrop, 'd-none');\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst overlappingChildren = this.listChildren.slice(breakIndex);\r\n\r\n\t\toverlappingChildren.forEach((overlapping) =>\r\n\t\t\tthis.itemHolder.appendChild(this.onTransform(overlapping))\r\n\t\t);\r\n\r\n\t\toverlappingChildren.forEach(addClassFactory('d-none'));\r\n\r\n\t\tif (this.tabdrop.offsetLeft < 250) {\r\n\t\t\tthis.itemHolder.style.left = `${(this.tabdrop.offsetLeft - 15) * -1}px`;\r\n\t\t\tthis.itemHolder.style.right = 'auto';\r\n\t\t} else {\r\n\t\t\tthis.itemHolder.removeAttribute('style');\r\n\t\t}\r\n\t}\r\n}\r\n","import { addClass } from '@opten/dom/add-class';\r\nimport { Component } from '@opten/compiler/metadata/component';\r\nimport { debounce } from '@opten/reactive/debounce';\r\n\r\ndeclare const Swiper: any;\r\n\r\n@Component({ className: 'js-text-slider' })\r\nexport class TextSliderComponent {\r\n\tconstructor(private element: HTMLElement) {\r\n\t\tconst paginations = Array.from(element.getElementsByClassName('js-text-slider-pagination')) as HTMLElement[];\r\n\t\tconst autoplay = parseInt(this.element.getAttribute('data-autoplay'), 0) || 0;\r\n\t\tconst swiper = new Swiper(element, {\r\n\t\t\tautoplay: (autoplay > 0 ? {\r\n\t\t\t\tdelay: 5000,\r\n\t\t\t } : false),\r\n\t\t\tautoHeight: true,\r\n\t\t\tspeed: 1000,\r\n\t\t\tpagination: {\r\n\t\t\t\tel: '.swiper-pagination',\r\n\t\t\t\tclickable: true,\r\n\t\t\t\trenderBullet: (index, className) => {\r\n\t\t\t\t\tconst pagination = paginations[index];\r\n\t\t\t\t\taddClass(pagination, className);\r\n\t\t\t\t\treturn pagination.outerHTML;\r\n\t\t\t\t},\r\n\t\t\t},\r\n\t\t\tkeyboard: {\r\n\t\t\t\tenabled: true,\r\n\t\t\t\tonlyInViewport: true,\r\n\t\t\t},\r\n\t\t});\r\n\r\n\t\twindow.addEventListener(\r\n\t\t\t'resize',\r\n\t\t\tdebounce(() => {\r\n\t\t\t\tswiper.updateAutoHeight(0);\r\n\t\t\t}, 400)\r\n\t\t);\r\n\t}\r\n}\r\n","// A type of promise-like that resolves synchronously and supports only one observer\nexport const _Pact = /*#__PURE__*/(function() {\n\tfunction _Pact() {}\n\t_Pact.prototype.then = function(onFulfilled, onRejected) {\n\t\tconst result = new _Pact();\n\t\tconst state = this.s;\n\t\tif (state) {\n\t\t\tconst callback = state & 1 ? onFulfilled : onRejected;\n\t\t\tif (callback) {\n\t\t\t\ttry {\n\t\t\t\t\t_settle(result, 1, callback(this.v));\n\t\t\t\t} catch (e) {\n\t\t\t\t\t_settle(result, 2, e);\n\t\t\t\t}\n\t\t\t\treturn result;\n\t\t\t} else {\n\t\t\t\treturn this;\n\t\t\t}\n\t\t}\n\t\tthis.o = function(_this) {\n\t\t\ttry {\n\t\t\t\tconst value = _this.v;\n\t\t\t\tif (_this.s & 1) {\n\t\t\t\t\t_settle(result, 1, onFulfilled ? onFulfilled(value) : value);\n\t\t\t\t} else if (onRejected) {\n\t\t\t\t\t_settle(result, 1, onRejected(value));\n\t\t\t\t} else {\n\t\t\t\t\t_settle(result, 2, value);\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\t_settle(result, 2, e);\n\t\t\t}\n\t\t};\n\t\treturn result;\n\t}\n\treturn _Pact;\n})();\n\n// Settles a pact synchronously\nexport function _settle(pact, state, value) {\n\tif (!pact.s) {\n\t\tif (value instanceof _Pact) {\n\t\t\tif (value.s) {\n\t\t\t\tif (state & 1) {\n\t\t\t\t\tstate = value.s;\n\t\t\t\t}\n\t\t\t\tvalue = value.v;\n\t\t\t} else {\n\t\t\t\tvalue.o = _settle.bind(null, pact, state);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\tif (value && value.then) {\n\t\t\tvalue.then(_settle.bind(null, pact, state), _settle.bind(null, pact, 2));\n\t\t\treturn;\n\t\t}\n\t\tpact.s = state;\n\t\tpact.v = value;\n\t\tconst observer = pact.o;\n\t\tif (observer) {\n\t\t\tobserver(pact);\n\t\t}\n\t}\n}\n\nexport function _isSettledPact(thenable) {\n\treturn thenable instanceof _Pact && thenable.s & 1;\n}\n\n// Converts argument to a function that always returns a Promise\nexport function _async(f) {\n\treturn function() {\n\t\tfor (var args = [], i = 0; i < arguments.length; i++) {\n\t\t\targs[i] = arguments[i];\n\t\t}\n\t\ttry {\n\t\t\treturn Promise.resolve(f.apply(this, args));\n\t\t} catch(e) {\n\t\t\treturn Promise.reject(e);\n\t\t}\n\t}\n}\n\n// Awaits on a value that may or may not be a Promise (equivalent to the await keyword in ES2015, with continuations passed explicitly)\nexport function _await(value, then, direct) {\n\tif (direct) {\n\t\treturn then ? then(value) : value;\n\t}\n\tif (!value || !value.then) {\n\t\tvalue = Promise.resolve(value);\n\t}\n\treturn then ? value.then(then) : value;\n}\n\n// Awaits on a value that may or may not be a Promise, then ignores it\nexport function _awaitIgnored(value, direct) {\n\tif (!direct) {\n\t\treturn value && value.then ? value.then(_empty) : Promise.resolve();\n\t}\n}\n\n// Proceeds after a value has resolved, or proceeds immediately if the value is not thenable\nexport function _continue(value, then) {\n\treturn value && value.then ? value.then(then) : then(value);\n}\n\n// Proceeds after a value has resolved, or proceeds immediately if the value is not thenable\nexport function _continueIgnored(value) {\n\tif (value && value.then) {\n\t\treturn value.then(_empty);\n\t}\n}\n\n// Asynchronously iterate through an object that has a length property, passing the index as the first argument to the callback (even as the length property changes)\nexport function _forTo(array, body, check) {\n\tvar i = -1, pact, reject;\n\tfunction _cycle(result) {\n\t\ttry {\n\t\t\twhile (++i < array.length && (!check || !check())) {\n\t\t\t\tresult = body(i);\n\t\t\t\tif (result && result.then) {\n\t\t\t\t\tif (_isSettledPact(result)) {\n\t\t\t\t\t\tresult = result.v;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresult.then(_cycle, reject || (reject = _settle.bind(null, pact = new _Pact(), 2)));\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (pact) {\n\t\t\t\t_settle(pact, 1, result);\n\t\t\t} else {\n\t\t\t\tpact = result;\n\t\t\t}\n\t\t} catch (e) {\n\t\t\t_settle(pact || (pact = new _Pact()), 2, e);\n\t\t}\n\t}\n\t_cycle();\n\treturn pact;\n}\n\n// Asynchronously iterate through an object's properties (including properties inherited from the prototype)\n// Uses a snapshot of the object's properties\nexport function _forIn(target, body, check) {\n\tvar keys = [];\n\tfor (var key in target) {\n\t\tkeys.push(key);\n\t}\n\treturn _forTo(keys, function(i) { return body(keys[i]); }, check);\n}\n\n// Asynchronously iterate through an object's own properties (excluding properties inherited from the prototype)\n// Uses a snapshot of the object's properties\nexport function _forOwn(target, body, check) {\n\tvar keys = [];\n\tfor (var key in target) {\n\t\tif (Object.prototype.hasOwnProperty.call(target, key)) {\n\t\t\tkeys.push(key);\n\t\t}\n\t}\n\treturn _forTo(keys, function(i) { return body(keys[i]); }, check);\n}\n\nexport const _iteratorSymbol = /*#__PURE__*/ typeof Symbol !== \"undefined\" ? (Symbol.iterator || (Symbol.iterator = Symbol(\"Symbol.iterator\"))) : \"@@iterator\";\n\n// Asynchronously iterate through an object's values\n// Uses for...of if the runtime supports it, otherwise iterates until length on a copy\nexport function _forOf(target, body, check) {\n\tif (typeof target[_iteratorSymbol] === \"function\") {\n\t\tvar iterator = target[_iteratorSymbol](), step, pact, reject;\n\t\tfunction _cycle(result) {\n\t\t\ttry {\n\t\t\t\twhile (!(step = iterator.next()).done && (!check || !check())) {\n\t\t\t\t\tresult = body(step.value);\n\t\t\t\t\tif (result && result.then) {\n\t\t\t\t\t\tif (_isSettledPact(result)) {\n\t\t\t\t\t\t\tresult = result.v;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tresult.then(_cycle, reject || (reject = _settle.bind(null, pact = new _Pact(), 2)));\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (pact) {\n\t\t\t\t\t_settle(pact, 1, result);\n\t\t\t\t} else {\n\t\t\t\t\tpact = result;\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\t_settle(pact || (pact = new _Pact()), 2, e);\n\t\t\t}\n\t\t}\n\t\t_cycle();\n\t\tif (iterator.return) {\n\t\t\tvar _fixup = function(value) {\n\t\t\t\ttry {\n\t\t\t\t\tif (!step.done) {\n\t\t\t\t\t\titerator.return();\n\t\t\t\t\t}\n\t\t\t\t} catch(e) {\n\t\t\t\t}\n\t\t\t\treturn value;\n\t\t\t}\n\t\t\tif (pact && pact.then) {\n\t\t\t\treturn pact.then(_fixup, function(e) {\n\t\t\t\t\tthrow _fixup(e);\n\t\t\t\t});\n\t\t\t}\n\t\t\t_fixup();\n\t\t}\n\t\treturn pact;\n\t}\n\t// No support for Symbol.iterator\n\tif (!(\"length\" in target)) {\n\t\tthrow new TypeError(\"Object is not iterable\");\n\t}\n\t// Handle live collections properly\n\tvar values = [];\n\tfor (var i = 0; i < target.length; i++) {\n\t\tvalues.push(target[i]);\n\t}\n\treturn _forTo(values, function(i) { return body(values[i]); }, check);\n}\n\nexport const _asyncIteratorSymbol = /*#__PURE__*/ typeof Symbol !== \"undefined\" ? (Symbol.asyncIterator || (Symbol.asyncIterator = Symbol(\"Symbol.asyncIterator\"))) : \"@@asyncIterator\";\n\n// Asynchronously iterate on a value using it's async iterator if present, or its synchronous iterator if missing\nexport function _forAwaitOf(target, body, check) {\n\tif (typeof target[_asyncIteratorSymbol] === \"function\") {\n\t\tvar pact = new _Pact();\n\t\tvar iterator = target[_asyncIteratorSymbol]();\n\t\titerator.next().then(_resumeAfterNext).then(void 0, _reject);\n\t\treturn pact;\n\t\tfunction _resumeAfterBody(result) {\n\t\t\tif (check && check()) {\n\t\t\t\treturn _settle(pact, 1, iterator.return ? iterator.return().then(function() { return result; }) : result);\n\t\t\t}\n\t\t\titerator.next().then(_resumeAfterNext).then(void 0, _reject);\n\t\t}\n\t\tfunction _resumeAfterNext(step) {\n\t\t\tif (step.done) {\n\t\t\t\t_settle(pact, 1);\n\t\t\t} else {\n\t\t\t\tPromise.resolve(body(step.value)).then(_resumeAfterBody).then(void 0, _reject);\n\t\t\t}\n\t\t}\n\t\tfunction _reject(error) {\n\t\t\t_settle(pact, 2, iterator.return ? iterator.return().then(function() { return error; }) : error);\n\t\t}\n\t}\n\treturn Promise.resolve(_forOf(target, function(value) { return Promise.resolve(value).then(body); }, check));\n}\n\n// Asynchronously implement a generic for loop\nexport function _for(test, update, body) {\n\tvar stage;\n\tfor (;;) {\n\t\tvar shouldContinue = test();\n\t\tif (_isSettledPact(shouldContinue)) {\n\t\t\tshouldContinue = shouldContinue.v;\n\t\t}\n\t\tif (!shouldContinue) {\n\t\t\treturn result;\n\t\t}\n\t\tif (shouldContinue.then) {\n\t\t\tstage = 0;\n\t\t\tbreak;\n\t\t}\n\t\tvar result = body();\n\t\tif (result && result.then) {\n\t\t\tif (_isSettledPact(result)) {\n\t\t\t\tresult = result.s;\n\t\t\t} else {\n\t\t\t\tstage = 1;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tif (update) {\n\t\t\tvar updateValue = update();\n\t\t\tif (updateValue && updateValue.then && !_isSettledPact(updateValue)) {\n\t\t\t\tstage = 2;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\tvar pact = new _Pact();\n\tvar reject = _settle.bind(null, pact, 2);\n\t(stage === 0 ? shouldContinue.then(_resumeAfterTest) : stage === 1 ? result.then(_resumeAfterBody) : updateValue.then(_resumeAfterUpdate)).then(void 0, reject);\n\treturn pact;\n\tfunction _resumeAfterBody(value) {\n\t\tresult = value;\n\t\tdo {\n\t\t\tif (update) {\n\t\t\t\tupdateValue = update();\n\t\t\t\tif (updateValue && updateValue.then && !_isSettledPact(updateValue)) {\n\t\t\t\t\tupdateValue.then(_resumeAfterUpdate).then(void 0, reject);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t\tshouldContinue = test();\n\t\t\tif (!shouldContinue || (_isSettledPact(shouldContinue) && !shouldContinue.v)) {\n\t\t\t\t_settle(pact, 1, result);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (shouldContinue.then) {\n\t\t\t\tshouldContinue.then(_resumeAfterTest).then(void 0, reject);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tresult = body();\n\t\t\tif (_isSettledPact(result)) {\n\t\t\t\tresult = result.v;\n\t\t\t}\n\t\t} while (!result || !result.then);\n\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t}\n\tfunction _resumeAfterTest(shouldContinue) {\n\t\tif (shouldContinue) {\n\t\t\tresult = body();\n\t\t\tif (result && result.then) {\n\t\t\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t\t\t} else {\n\t\t\t\t_resumeAfterBody(result);\n\t\t\t}\n\t\t} else {\n\t\t\t_settle(pact, 1, result);\n\t\t}\n\t}\n\tfunction _resumeAfterUpdate() {\n\t\tif (shouldContinue = test()) {\n\t\t\tif (shouldContinue.then) {\n\t\t\t\tshouldContinue.then(_resumeAfterTest).then(void 0, reject);\n\t\t\t} else {\n\t\t\t\t_resumeAfterTest(shouldContinue);\n\t\t\t}\n\t\t} else {\n\t\t\t_settle(pact, 1, result);\n\t\t}\n\t}\n}\n\n// Asynchronously implement a do ... while loop\nexport function _do(body, test) {\n\tvar awaitBody;\n\tdo {\n\t\tvar result = body();\n\t\tif (result && result.then) {\n\t\t\tif (_isSettledPact(result)) {\n\t\t\t\tresult = result.v;\n\t\t\t} else {\n\t\t\t\tawaitBody = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tvar shouldContinue = test();\n\t\tif (_isSettledPact(shouldContinue)) {\n\t\t\tshouldContinue = shouldContinue.v;\n\t\t}\n\t\tif (!shouldContinue) {\n\t\t\treturn result;\n\t\t}\n\t} while (!shouldContinue.then);\n\tconst pact = new _Pact();\n\tconst reject = _settle.bind(null, pact, 2);\n\t(awaitBody ? result.then(_resumeAfterBody) : shouldContinue.then(_resumeAfterTest)).then(void 0, reject);\n\treturn pact;\n\tfunction _resumeAfterBody(value) {\n\t\tresult = value;\n\t\tfor (;;) {\n\t\t\tshouldContinue = test();\n\t\t\tif (_isSettledPact(shouldContinue)) {\n\t\t\t\tshouldContinue = shouldContinue.v;\n\t\t\t}\n\t\t\tif (!shouldContinue) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (shouldContinue.then) {\n\t\t\t\tshouldContinue.then(_resumeAfterTest).then(void 0, reject);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tresult = body();\n\t\t\tif (result && result.then) {\n\t\t\t\tif (_isSettledPact(result)) {\n\t\t\t\t\tresult = result.v;\n\t\t\t\t} else {\n\t\t\t\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t_settle(pact, 1, result);\n\t}\n\tfunction _resumeAfterTest(shouldContinue) {\n\t\tif (shouldContinue) {\n\t\t\tdo {\n\t\t\t\tresult = body();\n\t\t\t\tif (result && result.then) {\n\t\t\t\t\tif (_isSettledPact(result)) {\n\t\t\t\t\t\tresult = result.v;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tshouldContinue = test();\n\t\t\t\tif (_isSettledPact(shouldContinue)) {\n\t\t\t\t\tshouldContinue = shouldContinue.v;\n\t\t\t\t}\n\t\t\t\tif (!shouldContinue) {\n\t\t\t\t\t_settle(pact, 1, result);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t} while (!shouldContinue.then);\n\t\t\tshouldContinue.then(_resumeAfterTest).then(void 0, reject);\n\t\t} else {\n\t\t\t_settle(pact, 1, result);\n\t\t}\n\t}\n}\n\n// Asynchronously implement a switch statement\nexport function _switch(discriminant, cases) {\n\tvar dispatchIndex = -1;\n\tvar awaitBody;\n\touter: {\n\t\tfor (var i = 0; i < cases.length; i++) {\n\t\t\tvar test = cases[i][0];\n\t\t\tif (test) {\n\t\t\t\tvar testValue = test();\n\t\t\t\tif (testValue && testValue.then) {\n\t\t\t\t\tbreak outer;\n\t\t\t\t}\n\t\t\t\tif (testValue === discriminant) {\n\t\t\t\t\tdispatchIndex = i;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Found the default case, set it as the pending dispatch case\n\t\t\t\tdispatchIndex = i;\n\t\t\t}\n\t\t}\n\t\tif (dispatchIndex !== -1) {\n\t\t\tdo {\n\t\t\t\tvar body = cases[dispatchIndex][1];\n\t\t\t\twhile (!body) {\n\t\t\t\t\tdispatchIndex++;\n\t\t\t\t\tbody = cases[dispatchIndex][1];\n\t\t\t\t}\n\t\t\t\tvar result = body();\n\t\t\t\tif (result && result.then) {\n\t\t\t\t\tawaitBody = true;\n\t\t\t\t\tbreak outer;\n\t\t\t\t}\n\t\t\t\tvar fallthroughCheck = cases[dispatchIndex][2];\n\t\t\t\tdispatchIndex++;\n\t\t\t} while (fallthroughCheck && !fallthroughCheck());\n\t\t\treturn result;\n\t\t}\n\t}\n\tconst pact = new _Pact();\n\tconst reject = _settle.bind(null, pact, 2);\n\t(awaitBody ? result.then(_resumeAfterBody) : testValue.then(_resumeAfterTest)).then(void 0, reject);\n\treturn pact;\n\tfunction _resumeAfterTest(value) {\n\t\tfor (;;) {\n\t\t\tif (value === discriminant) {\n\t\t\t\tdispatchIndex = i;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (++i === cases.length) {\n\t\t\t\tif (dispatchIndex !== -1) {\n\t\t\t\t\tbreak;\n\t\t\t\t} else {\n\t\t\t\t\t_settle(pact, 1, result);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t\ttest = cases[i][0];\n\t\t\tif (test) {\n\t\t\t\tvalue = test();\n\t\t\t\tif (value && value.then) {\n\t\t\t\t\tvalue.then(_resumeAfterTest).then(void 0, reject);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdispatchIndex = i;\n\t\t\t}\n\t\t}\n\t\tdo {\n\t\t\tvar body = cases[dispatchIndex][1];\n\t\t\twhile (!body) {\n\t\t\t\tdispatchIndex++;\n\t\t\t\tbody = cases[dispatchIndex][1];\n\t\t\t}\n\t\t\tvar result = body();\n\t\t\tif (result && result.then) {\n\t\t\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar fallthroughCheck = cases[dispatchIndex][2];\n\t\t\tdispatchIndex++;\n\t\t} while (fallthroughCheck && !fallthroughCheck());\n\t\t_settle(pact, 1, result);\n\t}\n\tfunction _resumeAfterBody(result) {\n\t\tfor (;;) {\n\t\t\tvar fallthroughCheck = cases[dispatchIndex][2];\n\t\t\tif (!fallthroughCheck || fallthroughCheck()) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tdispatchIndex++;\n\t\t\tvar body = cases[dispatchIndex][1];\n\t\t\twhile (!body) {\n\t\t\t\tdispatchIndex++;\n\t\t\t\tbody = cases[dispatchIndex][1];\n\t\t\t}\n\t\t\tresult = body();\n\t\t\tif (result && result.then) {\n\t\t\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\t_settle(pact, 1, result);\n\t}\n}\n\n// Asynchronously call a function and pass the result to explicitly passed continuations\nexport function _call(body, then, direct) {\n\tif (direct) {\n\t\treturn then ? then(body()) : body();\n\t}\n\ttry {\n\t\tvar result = Promise.resolve(body());\n\t\treturn then ? result.then(then) : result;\n\t} catch (e) {\n\t\treturn Promise.reject(e);\n\t}\n}\n\n// Asynchronously call a function and swallow the result\nexport function _callIgnored(body, direct) {\n\treturn _call(body, _empty, direct);\n}\n\n// Asynchronously call a function and pass the result to explicitly passed continuations\nexport function _invoke(body, then) {\n\tvar result = body();\n\tif (result && result.then) {\n\t\treturn result.then(then);\n\t}\n\treturn then(result);\n}\n\n// Asynchronously call a function and swallow the result\nexport function _invokeIgnored(body) {\n\tvar result = body();\n\tif (result && result.then) {\n\t\treturn result.then(_empty);\n\t}\n}\n\n// Asynchronously call a function and send errors to recovery continuation\nexport function _catch(body, recover) {\n\ttry {\n\t\tvar result = body();\n\t} catch(e) {\n\t\treturn recover(e);\n\t}\n\tif (result && result.then) {\n\t\treturn result.then(void 0, recover);\n\t}\n\treturn result;\n}\n\n// Asynchronously await a promise and pass the result to a finally continuation\nexport function _finallyRethrows(body, finalizer) {\n\ttry {\n\t\tvar result = body();\n\t} catch (e) {\n\t\treturn finalizer(true, e);\n\t}\n\tif (result && result.then) {\n\t\treturn result.then(finalizer.bind(null, false), finalizer.bind(null, true));\n\t}\n\treturn finalizer(false, result);\n}\n\n// Asynchronously await a promise and invoke a finally continuation that always overrides the result\nexport function _finally(body, finalizer) {\n\ttry {\n\t\tvar result = body();\n\t} catch (e) {\n\t\treturn finalizer();\n\t}\n\tif (result && result.then) {\n\t\treturn result.then(finalizer, finalizer);\n\t}\n\treturn finalizer();\n}\n\n// Rethrow or return a value from a finally continuation\nexport function _rethrow(thrown, value) {\n\tif (thrown)\n\t\tthrow value;\n\treturn value;\n}\n\n// Empty function to implement break and other control flow that ignores asynchronous results\nexport function _empty() {\n}\n\n// Sentinel value for early returns in generators \nexport const _earlyReturn = /*#__PURE__*/ {};\n\n// Asynchronously call a function and send errors to recovery continuation, skipping early returns\nexport function _catchInGenerator(body, recover) {\n\treturn _catch(body, function(e) {\n\t\tif (e === _earlyReturn) {\n\t\t\tthrow e;\n\t\t}\n\t\treturn recover(e);\n\t});\n}\n\n// Asynchronous generator class; accepts the entrypoint of the generator, to which it passes itself when the generator should start\nexport const _AsyncGenerator = /*#__PURE__*/(function() {\n\tfunction _AsyncGenerator(entry) {\n\t\tthis._entry = entry;\n\t\tthis._pact = null;\n\t\tthis._resolve = null;\n\t\tthis._return = null;\n\t\tthis._promise = null;\n\t}\n\n\tfunction _wrapReturnedValue(value) {\n\t\treturn { value: value, done: true };\n\t}\n\tfunction _wrapYieldedValue(value) {\n\t\treturn { value: value, done: false };\n\t}\n\n\t_AsyncGenerator.prototype._yield = function(value) {\n\t\t// Yield the value to the pending next call\n\t\tthis._resolve(value && value.then ? value.then(_wrapYieldedValue) : _wrapYieldedValue(value));\n\t\t// Return a pact for an upcoming next/return/throw call\n\t\treturn this._pact = new _Pact();\n\t};\n\t_AsyncGenerator.prototype.next = function(value) {\n\t\t// Advance the generator, starting it if it has yet to be started\n\t\tconst _this = this;\n\t\treturn _this._promise = new Promise(function (resolve) {\n\t\t\tconst _pact = _this._pact;\n\t\t\tif (_pact === null) {\n\t\t\t\tconst _entry = _this._entry;\n\t\t\t\tif (_entry === null) {\n\t\t\t\t\t// Generator is started, but not awaiting a yield expression\n\t\t\t\t\t// Abandon the next call!\n\t\t\t\t\treturn resolve(_this._promise);\n\t\t\t\t}\n\t\t\t\t// Start the generator\n\t\t\t\t_this._entry = null;\n\t\t\t\t_this._resolve = resolve;\n\t\t\t\tfunction returnValue(value) {\n\t\t\t\t\t_this._resolve(value && value.then ? value.then(_wrapReturnedValue) : _wrapReturnedValue(value));\n\t\t\t\t\t_this._pact = null;\n\t\t\t\t\t_this._resolve = null;\n\t\t\t\t}\n\t\t\t\tvar result = _entry(_this);\n\t\t\t\tif (result && result.then) {\n\t\t\t\t\tresult.then(returnValue, function(error) {\n\t\t\t\t\t\tif (error === _earlyReturn) {\n\t\t\t\t\t\t\treturnValue(_this._return);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tconst pact = new _Pact();\n\t\t\t\t\t\t\t_this._resolve(pact);\n\t\t\t\t\t\t\t_this._pact = null;\n\t\t\t\t\t\t\t_this._resolve = null;\n\t\t\t\t\t\t\t_resolve(pact, 2, error);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\treturnValue(result);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Generator is started and a yield expression is pending, settle it\n\t\t\t\t_this._pact = null;\n\t\t\t\t_this._resolve = resolve;\n\t\t\t\t_settle(_pact, 1, value);\n\t\t\t}\n\t\t});\n\t};\n\t_AsyncGenerator.prototype.return = function(value) {\n\t\t// Early return from the generator if started, otherwise abandons the generator\n\t\tconst _this = this;\n\t\treturn _this._promise = new Promise(function (resolve) {\n\t\t\tconst _pact = _this._pact;\n\t\t\tif (_pact === null) {\n\t\t\t\tif (_this._entry === null) {\n\t\t\t\t\t// Generator is started, but not awaiting a yield expression\n\t\t\t\t\t// Abandon the return call!\n\t\t\t\t\treturn resolve(_this._promise);\n\t\t\t\t}\n\t\t\t\t// Generator is not started, abandon it and return the specified value\n\t\t\t\t_this._entry = null;\n\t\t\t\treturn resolve(value && value.then ? value.then(_wrapReturnedValue) : _wrapReturnedValue(value));\n\t\t\t}\n\t\t\t// Settle the yield expression with a rejected \"early return\" value\n\t\t\t_this._return = value;\n\t\t\t_this._resolve = resolve;\n\t\t\t_this._pact = null;\n\t\t\t_settle(_pact, 2, _earlyReturn);\n\t\t});\n\t};\n\t_AsyncGenerator.prototype.throw = function(error) {\n\t\t// Inject an exception into the pending yield expression\n\t\tconst _this = this;\n\t\treturn _this._promise = new Promise(function (resolve, reject) {\n\t\t\tconst _pact = _this._pact;\n\t\t\tif (_pact === null) {\n\t\t\t\tif (_this._entry === null) {\n\t\t\t\t\t// Generator is started, but not awaiting a yield expression\n\t\t\t\t\t// Abandon the throw call!\n\t\t\t\t\treturn resolve(_this._promise);\n\t\t\t\t}\n\t\t\t\t// Generator is not started, abandon it and return a rejected Promise containing the error\n\t\t\t\t_this._entry = null;\n\t\t\t\treturn reject(error);\n\t\t\t}\n\t\t\t// Settle the yield expression with the value as a rejection\n\t\t\t_this._resolve = resolve;\n\t\t\t_this._pact = null;\n\t\t\t_settle(_pact, 2, error);\n\t\t});\n\t};\n\n\t_AsyncGenerator.prototype[_asyncIteratorSymbol] = function() {\n\t\treturn this;\n\t};\n\t\n\treturn _AsyncGenerator;\n})();\n","/**\n * @barba/core/modules/Logger\n * \n * ## Logger.\n *\n * - Display informations via the console\n *\n * @module core/modules/Logger\n * @preferred\n */\n\n/***/\n\n/**\n * Log levels, all lower level messages are printed\n *\n * 0. mute\n * 1. error = `console.error()`\n * 2. warning= `console.warn()`\n * 3. info = `console.info()`\n * 4. debug = `console.log()`\n */\nexport enum LogLevels {\n off = 0,\n error = 1,\n warning = 2,\n info = 3,\n debug = 4,\n}\n\n/**\n * Global log level\n */\nlet _level: number = LogLevels.off;\n\nexport class Logger {\n /**\n * Get global log level.\n */\n public static getLevel(): number {\n return _level;\n }\n\n /**\n * Set global log level.\n */\n public static setLevel(name: keyof typeof LogLevels): number {\n _level = LogLevels[name];\n\n return _level;\n }\n\n /**\n * Log \"prefix\".\n */\n private _source: string;\n\n /**\n * Creates an instance of Logger.\n */\n constructor(source: string) {\n this._source = source;\n }\n\n /**\n * Permanent, unremovable log.\n */\n // public print(...objects: any[]): void {\n // this._log(console.info, LogLevels.off, objects);\n // }\n\n /**\n * Error log.\n */\n public error(...objects: any[]): void {\n this._log(console.error, LogLevels.error, objects);\n }\n\n /**\n * Warn log.\n */\n public warn(...objects: any[]): void {\n this._log(console.warn, LogLevels.warning, objects);\n }\n\n /**\n * Info log.\n */\n public info(...objects: any[]): void {\n this._log(console.info, LogLevels.info, objects);\n }\n\n /**\n * Debug log.\n */\n public debug(...objects: any[]): void {\n this._log(console.log, LogLevels.debug, objects);\n }\n\n /**\n * Internal logger.\n */\n private _log(fn: () => void, level: number, objects: any[]): void {\n if (level <= Logger.getLevel()) {\n fn.apply(console, ([`[${this._source}] `].concat(objects) as unknown) as [\n\n ]);\n }\n }\n}\n","/**\n * Expose `pathToRegexp`.\n */\nmodule.exports = pathToRegexp\nmodule.exports.match = match\nmodule.exports.regexpToFunction = regexpToFunction\nmodule.exports.parse = parse\nmodule.exports.compile = compile\nmodule.exports.tokensToFunction = tokensToFunction\nmodule.exports.tokensToRegExp = tokensToRegExp\n\n/**\n * Default configs.\n */\nvar DEFAULT_DELIMITER = '/'\n\n/**\n * The main path matching regexp utility.\n *\n * @type {RegExp}\n */\nvar PATH_REGEXP = new RegExp([\n // Match escaped characters that would otherwise appear in future matches.\n // This allows the user to escape special characters that won't transform.\n '(\\\\\\\\.)',\n // Match Express-style parameters and un-named parameters with a prefix\n // and optional suffixes. Matches appear as:\n //\n // \":test(\\\\d+)?\" => [\"test\", \"\\d+\", undefined, \"?\"]\n // \"(\\\\d+)\" => [undefined, undefined, \"\\d+\", undefined]\n '(?:\\\\:(\\\\w+)(?:\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))?|\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))([+*?])?'\n].join('|'), 'g')\n\n/**\n * Parse a string for the raw tokens.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!Array}\n */\nfunction parse (str, options) {\n var tokens = []\n var key = 0\n var index = 0\n var path = ''\n var defaultDelimiter = (options && options.delimiter) || DEFAULT_DELIMITER\n var whitelist = (options && options.whitelist) || undefined\n var pathEscaped = false\n var res\n\n while ((res = PATH_REGEXP.exec(str)) !== null) {\n var m = res[0]\n var escaped = res[1]\n var offset = res.index\n path += str.slice(index, offset)\n index = offset + m.length\n\n // Ignore already escaped sequences.\n if (escaped) {\n path += escaped[1]\n pathEscaped = true\n continue\n }\n\n var prev = ''\n var name = res[2]\n var capture = res[3]\n var group = res[4]\n var modifier = res[5]\n\n if (!pathEscaped && path.length) {\n var k = path.length - 1\n var c = path[k]\n var matches = whitelist ? whitelist.indexOf(c) > -1 : true\n\n if (matches) {\n prev = c\n path = path.slice(0, k)\n }\n }\n\n // Push the current path onto the tokens.\n if (path) {\n tokens.push(path)\n path = ''\n pathEscaped = false\n }\n\n var repeat = modifier === '+' || modifier === '*'\n var optional = modifier === '?' || modifier === '*'\n var pattern = capture || group\n var delimiter = prev || defaultDelimiter\n\n tokens.push({\n name: name || key++,\n prefix: prev,\n delimiter: delimiter,\n optional: optional,\n repeat: repeat,\n pattern: pattern\n ? escapeGroup(pattern)\n : '[^' + escapeString(delimiter === defaultDelimiter ? delimiter : (delimiter + defaultDelimiter)) + ']+?'\n })\n }\n\n // Push any remaining characters.\n if (path || index < str.length) {\n tokens.push(path + str.substr(index))\n }\n\n return tokens\n}\n\n/**\n * Compile a string to a template function for the path.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!function(Object=, Object=)}\n */\nfunction compile (str, options) {\n return tokensToFunction(parse(str, options), options)\n}\n\n/**\n * Create path match function from `path-to-regexp` spec.\n */\nfunction match (str, options) {\n var keys = []\n var re = pathToRegexp(str, keys, options)\n return regexpToFunction(re, keys)\n}\n\n/**\n * Create a path match function from `path-to-regexp` output.\n */\nfunction regexpToFunction (re, keys) {\n return function (pathname, options) {\n var m = re.exec(pathname)\n if (!m) return false\n\n var path = m[0]\n var index = m.index\n var params = {}\n var decode = (options && options.decode) || decodeURIComponent\n\n for (var i = 1; i < m.length; i++) {\n if (m[i] === undefined) continue\n\n var key = keys[i - 1]\n\n if (key.repeat) {\n params[key.name] = m[i].split(key.delimiter).map(function (value) {\n return decode(value, key)\n })\n } else {\n params[key.name] = decode(m[i], key)\n }\n }\n\n return { path: path, index: index, params: params }\n }\n}\n\n/**\n * Expose a method for transforming tokens into the path function.\n */\nfunction tokensToFunction (tokens, options) {\n // Compile all the tokens into regexps.\n var matches = new Array(tokens.length)\n\n // Compile all the patterns before compilation.\n for (var i = 0; i < tokens.length; i++) {\n if (typeof tokens[i] === 'object') {\n matches[i] = new RegExp('^(?:' + tokens[i].pattern + ')$', flags(options))\n }\n }\n\n return function (data, options) {\n var path = ''\n var encode = (options && options.encode) || encodeURIComponent\n var validate = options ? options.validate !== false : true\n\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i]\n\n if (typeof token === 'string') {\n path += token\n continue\n }\n\n var value = data ? data[token.name] : undefined\n var segment\n\n if (Array.isArray(value)) {\n if (!token.repeat) {\n throw new TypeError('Expected \"' + token.name + '\" to not repeat, but got array')\n }\n\n if (value.length === 0) {\n if (token.optional) continue\n\n throw new TypeError('Expected \"' + token.name + '\" to not be empty')\n }\n\n for (var j = 0; j < value.length; j++) {\n segment = encode(value[j], token)\n\n if (validate && !matches[i].test(segment)) {\n throw new TypeError('Expected all \"' + token.name + '\" to match \"' + token.pattern + '\"')\n }\n\n path += (j === 0 ? token.prefix : token.delimiter) + segment\n }\n\n continue\n }\n\n if (typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean') {\n segment = encode(String(value), token)\n\n if (validate && !matches[i].test(segment)) {\n throw new TypeError('Expected \"' + token.name + '\" to match \"' + token.pattern + '\", but got \"' + segment + '\"')\n }\n\n path += token.prefix + segment\n continue\n }\n\n if (token.optional) continue\n\n throw new TypeError('Expected \"' + token.name + '\" to be ' + (token.repeat ? 'an array' : 'a string'))\n }\n\n return path\n }\n}\n\n/**\n * Escape a regular expression string.\n *\n * @param {string} str\n * @return {string}\n */\nfunction escapeString (str) {\n return str.replace(/([.+*?=^!:${}()[\\]|/\\\\])/g, '\\\\$1')\n}\n\n/**\n * Escape the capturing group by escaping special characters and meaning.\n *\n * @param {string} group\n * @return {string}\n */\nfunction escapeGroup (group) {\n return group.replace(/([=!:$/()])/g, '\\\\$1')\n}\n\n/**\n * Get the flags for a regexp from the options.\n *\n * @param {Object} options\n * @return {string}\n */\nfunction flags (options) {\n return options && options.sensitive ? '' : 'i'\n}\n\n/**\n * Pull out keys from a regexp.\n *\n * @param {!RegExp} path\n * @param {Array=} keys\n * @return {!RegExp}\n */\nfunction regexpToRegexp (path, keys) {\n if (!keys) return path\n\n // Use a negative lookahead to match only capturing groups.\n var groups = path.source.match(/\\((?!\\?)/g)\n\n if (groups) {\n for (var i = 0; i < groups.length; i++) {\n keys.push({\n name: i,\n prefix: null,\n delimiter: null,\n optional: false,\n repeat: false,\n pattern: null\n })\n }\n }\n\n return path\n}\n\n/**\n * Transform an array into a regexp.\n *\n * @param {!Array} path\n * @param {Array=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction arrayToRegexp (path, keys, options) {\n var parts = []\n\n for (var i = 0; i < path.length; i++) {\n parts.push(pathToRegexp(path[i], keys, options).source)\n }\n\n return new RegExp('(?:' + parts.join('|') + ')', flags(options))\n}\n\n/**\n * Create a path regexp from string input.\n *\n * @param {string} path\n * @param {Array=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction stringToRegexp (path, keys, options) {\n return tokensToRegExp(parse(path, options), keys, options)\n}\n\n/**\n * Expose a function for taking tokens and returning a RegExp.\n *\n * @param {!Array} tokens\n * @param {Array=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction tokensToRegExp (tokens, keys, options) {\n options = options || {}\n\n var strict = options.strict\n var start = options.start !== false\n var end = options.end !== false\n var delimiter = options.delimiter || DEFAULT_DELIMITER\n var endsWith = [].concat(options.endsWith || []).map(escapeString).concat('$').join('|')\n var route = start ? '^' : ''\n\n // Iterate over the tokens and create our regexp string.\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i]\n\n if (typeof token === 'string') {\n route += escapeString(token)\n } else {\n var capture = token.repeat\n ? '(?:' + token.pattern + ')(?:' + escapeString(token.delimiter) + '(?:' + token.pattern + '))*'\n : token.pattern\n\n if (keys) keys.push(token)\n\n if (token.optional) {\n if (!token.prefix) {\n route += '(' + capture + ')?'\n } else {\n route += '(?:' + escapeString(token.prefix) + '(' + capture + '))?'\n }\n } else {\n route += escapeString(token.prefix) + '(' + capture + ')'\n }\n }\n }\n\n if (end) {\n if (!strict) route += '(?:' + escapeString(delimiter) + ')?'\n\n route += endsWith === '$' ? '$' : '(?=' + endsWith + ')'\n } else {\n var endToken = tokens[tokens.length - 1]\n var isEndDelimited = typeof endToken === 'string'\n ? endToken[endToken.length - 1] === delimiter\n : endToken === undefined\n\n if (!strict) route += '(?:' + escapeString(delimiter) + '(?=' + endsWith + '))?'\n if (!isEndDelimited) route += '(?=' + escapeString(delimiter) + '|' + endsWith + ')'\n }\n\n return new RegExp(route, flags(options))\n}\n\n/**\n * Normalize the given path string, returning a regular expression.\n *\n * An empty array can be passed in for the keys, which will hold the\n * placeholder key descriptions. For example, using `/user/:id`, `keys` will\n * contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`.\n *\n * @param {(string|RegExp|Array)} path\n * @param {Array=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction pathToRegexp (path, keys, options) {\n if (path instanceof RegExp) {\n return regexpToRegexp(path, keys)\n }\n\n if (Array.isArray(path)) {\n return arrayToRegexp(/** @type {!Array} */ (path), keys, options)\n }\n\n return stringToRegexp(/** @type {string} */ (path), keys, options)\n}\n","/**\n * @barba/core/schemas\n * \n * ## Schemas description.\n *\n * @module core/schemas\n * @preferred\n */\n\n/***/\n\n// Definitions\nimport { ISchemaAttribute } from '../defs';\n\n/**\n * See [[ISchemaAttribute]]\n */\nexport const schemaAttribute: ISchemaAttribute = {\n container: 'container',\n history: 'history',\n namespace: 'namespace',\n prefix: 'data-barba',\n prevent: 'prevent',\n wrapper: 'wrapper',\n};\n","/**\n * @barba/core/utils/dom\n * \n * ## Dom utils\n *\n * - Access DOM contents\n * - DOM vs string conversions\n *\n * @module core/utils/dom\n * @preferred\n */\n\n/***/\n\nimport path from 'path';\n\n// Definitions\nimport { ISchemaAttribute, Link, Scope, Wrapper } from '../defs';\n// Schemas\nimport { schemaAttribute } from '../schemas/attribute';\n\nexport class Dom {\n private _attr: ISchemaAttribute = schemaAttribute;\n private _parser: DOMParser = new DOMParser();\n\n /**\n * Convert HTMLDocument to string.\n */\n public toString(el: HTMLElement): string {\n return el.outerHTML;\n }\n\n /**\n * Parse HTML string to HTMLDocument.\n */\n // see https://github.com/barbajs/barba/issues/362\n // Seems that using DOMParser.parseFromString causes this issue.\n public toDocument(htmlString: string): HTMLDocument {\n return this._parser.parseFromString(htmlString, 'text/html');\n }\n\n /**\n * Parse HTML string to DIVElement.\n *\n * DOMParser.parseFromString fails with img[srcset] on iOS.\n * see https://github.com/barbajs/barba/issues/362\n */\n public toElement(htmlString: string): HTMLDivElement {\n const div = document.createElement('div');\n\n div.innerHTML = htmlString;\n return div;\n }\n\n /**\n * Get HTML content.\n */\n public getHtml(doc: HTMLDocument = document): string {\n return this.toString(doc.documentElement);\n }\n\n /**\n * Get full document content.\n */\n // getDocument(el = document.documentElement) {\n // return this.toStr(el);\n // },\n\n /**\n * Get `[data-barba=\"wrapper\"]`.\n */\n public getWrapper(scope: Scope = document): Wrapper {\n return scope.querySelector(\n `[${this._attr.prefix}=\"${this._attr.wrapper}\"]`\n );\n }\n\n /**\n * Get `[data-barba=\"container\"]`.\n */\n public getContainer(scope: Scope = document): HTMLElement | null {\n return scope.querySelector(\n `[${this._attr.prefix}=\"${this._attr.container}\"]`\n );\n }\n\n /**\n * Remove container and store next sibling (if applicable).\n */\n public removeContainer(container: HTMLElement) {\n if (document.body.contains(container)) {\n container.parentNode.removeChild(container);\n }\n }\n\n /**\n * Add container before next sibling or at the end of the wrapper.\n */\n public addContainer(container: HTMLElement, wrapper: HTMLElement) {\n const existingContainer = this.getContainer();\n\n if (existingContainer) {\n this._insertAfter(container, existingContainer);\n } else {\n wrapper.appendChild(container);\n }\n }\n\n /**\n * Get `[data-barba-namespace]`.\n */\n public getNamespace(scope: Scope = document): string | null {\n const ns = scope.querySelector(\n `[${this._attr.prefix}-${this._attr.namespace}]`\n );\n\n return ns\n ? ns.getAttribute(`${this._attr.prefix}-${this._attr.namespace}`)\n : null;\n }\n\n /**\n * Get URL from `href` value.\n */\n public getHref(el: Link): string | null {\n // HTML tagName is UPPERCASE, xhtml tagName keeps existing case.\n if (el.tagName && el.tagName.toLowerCase() === 'a') {\n // HTMLAnchorElement, full URL available\n if (typeof el.href === 'string') {\n return el.href;\n }\n\n // Probably a SVGAElement…\n const href = el.getAttribute('href') || el.getAttribute('xlink:href');\n\n /* istanbul ignore else */\n if (href) {\n // When link comes from SVG, `href` returns an object, not a string.\n const attr: string =\n ((href as unknown) as SVGAnimatedString).baseVal || href;\n\n return this.resolveUrl(attr);\n }\n }\n return null;\n }\n\n // Copyright 2014 Simon Lydell\n // X11 (“MIT”) Licensed. (See LICENSE\n // https://github.com/lydell/resolve-url/blob/master/resolve-url.js\n /* istanbul ignore next */\n public resolveUrl(...urls: string[]) {\n const numUrls = urls.length;\n\n if (numUrls === 0) {\n throw new Error('resolveUrl requires at least one argument; got none.');\n }\n\n const base = document.createElement('base');\n base.href = arguments[0];\n\n if (numUrls === 1) {\n return base.href;\n }\n\n const head = document.getElementsByTagName('head')[0];\n head.insertBefore(base, head.firstChild);\n\n const a = document.createElement('a');\n let resolved;\n\n for (let index = 1; index < numUrls; index++) {\n a.href = arguments[index];\n resolved = a.href;\n base.href = resolved;\n }\n\n head.removeChild(base);\n\n return resolved;\n }\n\n /**\n * Insert node after another node.\n */\n private _insertAfter(newNode: Node, referenceNode: Node) {\n referenceNode.parentNode.insertBefore(newNode, referenceNode.nextSibling);\n }\n}\n\nconst dom = new Dom();\n\nexport { dom };\n","import { HistoryAction, LinkEvent, Trigger } from '../defs';\n// Schemas\nimport { schemaAttribute } from '../schemas/attribute';\n\n/**\n * @barba/core/utils/history\n * \n * ## History manager.\n *\n * - Keep track of the navigation history\n *\n * @module core/utils/history\n * @preferred\n */\n\n/**\n * State item.\n *\n * @property from\n * @property index\n */\ninterface IHistoryItem {\n /** origin */\n from: string;\n /** index */\n index: number;\n /** states */\n states: IStateItem[];\n}\n\n/***/\ninterface ICoords {\n x: number;\n y: number;\n}\n\n/**\n * History item.\n *\n * @property namespace\n * @property scroll\n * @property URL\n */\ninterface IStateItem {\n /** namespace */\n ns: string | undefined;\n /** Scroll position */\n scroll: ICoords;\n /** URL */\n url: string;\n}\n\nexport class History {\n private _session: string;\n private _states: IStateItem[] = [];\n private _pointer = -1;\n\n /**\n * Init with first state.\n */\n public init(url: string, ns: string): void {\n this._session = 'barba';\n const index = 0;\n\n const state: IStateItem = {\n ns,\n scroll: {\n x: window.scrollX,\n y: window.scrollY,\n },\n url,\n };\n\n this._states.push(state);\n this._pointer = index;\n\n const item: IHistoryItem = {\n from: this._session,\n index,\n states: [...this._states],\n };\n\n window.history && window.history.replaceState(item, '', url);\n }\n\n public change(\n url: string,\n trigger: Trigger,\n e?: LinkEvent | PopStateEvent\n ): Trigger {\n if (e && (e as PopStateEvent).state) {\n // If popstate, move to existing state\n // and get back/forward direction.\n const { state }: { state: IHistoryItem } = e as PopStateEvent;\n const { index } = state;\n const diff = this._pointer - index;\n\n trigger = this._getDirection(diff);\n\n // Work with previous states\n this.replace(state.states);\n this._pointer = index;\n } else {\n // Add new state\n this.add(url, trigger);\n }\n\n return trigger;\n }\n\n /**\n * Add a new state.\n */\n public add(url: string, trigger: Trigger): void {\n // If no state, it will be updated later.\n const ns = 'tmp';\n const index = this.size;\n const action = this._getAction(trigger);\n const state: IStateItem = {\n ns,\n scroll: {\n x: window.scrollX,\n y: window.scrollY,\n },\n url,\n };\n\n this._states.push(state);\n this._pointer = index;\n\n const item: IHistoryItem = {\n from: this._session,\n index,\n states: [...this._states],\n };\n\n switch (action) {\n case 'push':\n window.history && window.history.pushState(item, '', url);\n break;\n case 'replace':\n window.history && window.history.replaceState(item, '', url);\n break;\n /* istanbul ignore next */\n default:\n }\n }\n\n /**\n * Update state.\n */\n public update(data: any, i?: number): void {\n const index = i || this._pointer;\n const existing = this.get(index);\n const state: IStateItem = {\n ...existing,\n ...data,\n };\n\n this.set(index, state);\n }\n\n /**\n * Remove last state.\n */\n public remove(i?: number): void {\n if (i) {\n this._states.splice(i, 1);\n } else {\n this._states.pop();\n }\n\n this._pointer--;\n }\n\n /**\n * Delete all states.\n */\n public clear(): void {\n this._states = [];\n this._pointer = -1;\n }\n\n /**\n * Replace all states.\n */\n public replace(newStates: IStateItem[]): void {\n this._states = newStates;\n }\n\n /**\n * Get state by index.\n */\n public get(index: number) {\n return this._states[index];\n }\n\n /**\n * Set state by index.\n */\n public set(i: number, state: IStateItem) {\n return (this._states[i] = state);\n }\n\n /**\n * Get the current state.\n */\n get current(): IStateItem {\n return this._states[this._pointer];\n }\n\n /**\n * Get the last state (top of the history stack).\n */\n get state(): IStateItem {\n return this._states[this._states.length - 1];\n }\n\n /**\n * Get the previous state.\n */\n get previous(): IStateItem | null {\n return this._pointer < 1 ? null : this._states[this._pointer - 1];\n }\n\n /**\n * Get the state size.\n */\n get size(): number {\n return this._states.length;\n }\n\n /**\n * Get the history action: push vs replace\n */\n private _getAction(trigger: Trigger): HistoryAction {\n let action: HistoryAction = 'push';\n\n // Manage `data-barba-history` attribute\n // to get the right action (push vs replace).\n const el = trigger as HTMLAnchorElement;\n const attr = `${schemaAttribute.prefix}-${schemaAttribute.history}`;\n\n if (el.hasAttribute && el.hasAttribute(attr)) {\n action = el.getAttribute(attr) as HistoryAction;\n }\n\n return action;\n }\n\n /**\n * Get the direction of popstate change\n */\n private _getDirection(diff: number): Trigger {\n // Check if \"session switch\"\n if (Math.abs(diff) > 1) {\n // Ex 6-0 > 0 -> forward, 0-6 < 0 -> back\n return diff > 0 ? 'forward' : 'back';\n } else {\n if (diff === 0) {\n return 'popstate';\n } else {\n // Ex 6-5 > 0 -> back, 5-6 < 0 -> forward\n return diff > 0 ? 'back' : 'forward';\n }\n }\n }\n}\n\nconst history = new History();\n\nexport { history };\n","/**\n * @barba/core/utils/helpers\n * \n * ## Helpers\n *\n * - Update next page data\n *\n * @module core/utils/helpers\n * @preferred\n */\n\n/***/\n\n// Third-party\nimport ptr from 'path-to-regexp';\n// Definitions\nimport { ITransitionData } from '../defs';\n// Utils\nimport { dom } from './dom';\nimport { history } from './history';\n\n/**\n * Update `data.next`, the title and the history\n */\nexport const update = async (\n page: Promise,\n data: ITransitionData\n): Promise => {\n // If not already updated\n if (!data.next.html) {\n const html = await page;\n const { next } = data;\n\n if (html) {\n // see: https://github.com/barbajs/barba/issues/362\n // const nextDocument = dom.toDocument(html);\n const nextDocument = dom.toElement(html);\n\n next.namespace = dom.getNamespace(nextDocument);\n next.container = dom.getContainer(nextDocument);\n // see https://github.com/barbajs/barba/issues/362\n // next.html = dom.getHtml(nextDocument);\n // next.html = nextDocument.innerHTML;\n next.html = html;\n\n // Update history namespace (not available when initially set)\n history.update({ ns: next.namespace });\n\n // Update title.\n const { title } = dom.toDocument(html);\n\n document.title = title;\n }\n }\n};\n\n/**\n * Next tick\n */\nexport const nextTick = () =>\n new Promise(resolve => {\n window.requestAnimationFrame(resolve);\n // DEV: same result?\n // setTimeout(resolve, 0);\n });\n\n/**\n * Turn a route string such as `/user/:name` into a regular expression.\n *\n * Used for:\n *\n * - routes to ignore\n * - route transition resolution\n *\n * @see https://www.npmjs.com/package/path-to-regexp\n */\nconst pathToRegexp = ptr;\n\nexport { pathToRegexp };\n","/**\n * @barba/core/utils/url\n * \n * ## URL utils.\n *\n * - Collect and structure informations from URLs\n *\n * @module core/utils/url\n */\n\n/***/\n\n// Definitions\nimport { IGenericObject, IUrlBase } from '../defs';\n\n/**\n * Get location href.\n */\nexport const getHref = () => window.location.href;\n\n/**\n * Get location origin.\n */\nexport const getOrigin = () => window.location.origin;\n\n/**\n * Get port based on URL or location.\n */\nexport const getPort = (url: string = window.location.href) => parse(url).port;\n\n/**\n * Get path from URL.\n */\nexport const getPath = (url: string = window.location.href) => parse(url).path;\n\n/**\n * Get query object from URL.\n */\n// export const getQuery = (url: string): IGenericObject => parse(url).query;\n\n/**\n * Get hash from URL.\n */\n// export const getHash = (url: string): string => parse(url).hash;\n\n/**\n * Parse URL for path, query and hash and more.\n */\nexport const parse = (url: string): IUrlBase => {\n // Port\n let port;\n const matches = url.match(/:\\d+/);\n\n if (matches === null) {\n if (/^http/.test(url)) {\n port = 80;\n }\n\n if (/^https/.test(url)) {\n port = 443;\n }\n } else {\n const portString = matches[0].substring(1);\n\n port = parseInt(portString, 10);\n }\n\n // Path\n let path = url.replace(getOrigin(), '');\n let hash;\n let query = {};\n\n // Hash\n const hashIndex = path.indexOf('#');\n\n if (hashIndex >= 0) {\n hash = path.slice(hashIndex + 1);\n path = path.slice(0, hashIndex);\n }\n\n // Query\n const queryIndex = path.indexOf('?');\n\n if (queryIndex >= 0) {\n query = parseQuery(path.slice(queryIndex + 1));\n path = path.slice(0, queryIndex);\n }\n\n return {\n hash,\n path,\n port,\n query,\n };\n};\n\n/**\n * Parse a query string to object.\n */\nexport const parseQuery = (str: string) =>\n str.split('&').reduce((acc: IGenericObject, el: string) => {\n const [key, value] = el.split('=');\n\n acc[key] = value;\n\n return acc;\n }, {});\n\n/**\n * Clean URL, remove \"hash\" and/or \"trailing slash\".\n */\nexport const clean = (url: string = window.location.href) =>\n url.replace(/(\\/#.*|\\/|#.*)$/, '');\n","/**\n * @barba/core/utils/request\n * \n * ## Fetch pages for transitions.\n *\n * - Includes timeout\n * - Uses Fetch API\n * - Handles errors\n *\n * @module core/utils/request\n * @preferred\n */\n\n/***/\n\n// Definitions\nimport { RequestError } from '../defs';\n\n/**\n * Init a page request.\n * Fetch the page and returns a promise with the text content.\n */\nfunction request(\n url: string,\n ttl: number = 2e3,\n requestError: RequestError\n): Promise {\n return new Promise((resolve, reject) => {\n const xhr = new XMLHttpRequest();\n\n xhr.onreadystatechange = () => {\n if (xhr.readyState === XMLHttpRequest.DONE) {\n if (xhr.status === 200) {\n resolve(xhr.responseText);\n } else if (xhr.status) {\n // HTTP code is not 200, reject with response.\n const res = {\n status: xhr.status,\n statusText: xhr.statusText,\n };\n requestError(url, res);\n reject(res);\n }\n }\n };\n xhr.ontimeout = () => {\n const err = new Error(`Timeout error [${ttl}]`);\n requestError(url, err);\n reject(err);\n };\n xhr.onerror = () => {\n const err = new Error(`Fetch error`);\n requestError(url, err);\n reject(err);\n };\n\n xhr.open('GET', url);\n xhr.timeout = ttl;\n xhr.setRequestHeader(\n 'Accept',\n 'text/html,application/xhtml+xml,application/xml'\n );\n xhr.setRequestHeader('x-barba', 'yes');\n xhr.send();\n });\n}\n\nexport { request };\n","module.exports = isPromise;\n\nfunction isPromise(obj) {\n return !!obj && (typeof obj === 'object' || typeof obj === 'function') && typeof obj.then === 'function';\n}\n","import isPromise from 'is-promise';\n\n// https://github.com/SBoudrias/run-async\n/* istanbul ignore next */\nexport function runAsync(\n func: (...args: any[]) => void | Promise,\n ctx: any = {}\n): (...args: any[]) => Promise {\n return (...args: any[]) => {\n let async = false;\n\n const promise = new Promise((resolve, reject) => {\n // Add async to context\n ctx.async = () => {\n async = true;\n\n return (err: any, value: any) => {\n if (err) {\n reject(err);\n } else {\n resolve(value);\n }\n };\n };\n\n const answer = func.apply(ctx, args as []);\n\n if (!async) {\n if (isPromise(answer)) {\n (answer as Promise).then(resolve, reject);\n } else {\n resolve(answer);\n }\n }\n });\n\n return promise;\n };\n}\n","/**\n * @barba/core/modules/hooks\n * \n * ## Hooks manager.\n *\n * - Register and trigger hooks\n *\n * Hooks can be easily registered:\n *\n * ```js\n * hooks.leave(callback, context);\n * ```\n *\n * @module core/modules/hooks\n * @preferred\n */\n\n/***/\n\n// Definitions\nimport { HookFunction, HookMethods, HooksAll } from './defs';\n// Modules\nimport { Logger } from './modules/Logger';\n// Utils\nimport { runAsync } from './utils';\n// Types\ninterface IHookInfos {\n ctx: any;\n fn: HookFunction;\n}\n\nexport class Hooks extends HookMethods {\n /**\n * Allow the use of `hooks[name](cb, ctx)`.\n */\n [key: string]: any;\n // [key in HooksAll]?: any;\n public logger: Logger = new Logger('@barba/core');\n /**\n * All available hooks.\n *\n * See [[HooksAll]]\n */\n // TODO: get hooks from defs (DRY)?\n public all: HooksAll[] = [\n 'ready',\n 'page',\n 'reset',\n 'currentAdded',\n 'currentRemoved',\n 'nextAdded',\n 'nextRemoved',\n 'beforeOnce',\n 'once',\n 'afterOnce',\n 'before',\n 'beforeLeave',\n 'leave',\n 'afterLeave',\n 'beforeEnter',\n 'enter',\n 'afterEnter',\n 'after',\n ];\n /**\n * Registered hooks.\n *\n * - Unique hook name\n * - Associated data set(s) (callback + context)\n */\n public registered: Map> = new Map();\n\n constructor() {\n super();\n this.init();\n }\n\n public init() {\n this.registered.clear();\n this.all.forEach(hook => {\n if (!this[hook]) {\n this[hook] = (fn: HookFunction, ctx?: any) => {\n if (!this.registered.has(hook)) {\n this.registered.set(hook, new Set());\n }\n const set = this.registered.get(hook);\n\n set.add({\n ctx: ctx || {},\n fn,\n });\n };\n }\n });\n }\n\n /**\n * Do hook.\n *\n * Trigger registered hooks.\n */\n public do(name: HooksAll, ...args: any): Promise {\n if (this.registered.has(name)) {\n // Let's start a chain of promises\n let chain = Promise.resolve();\n\n this.registered.get(name).forEach(hook => {\n // Chain async hooks promisified\n chain = chain.then(() => runAsync(hook.fn, hook.ctx)(...args));\n });\n\n return chain.catch(error => {\n this.logger.debug(`Hook error [${name}]`);\n this.logger.error(error);\n });\n }\n\n return Promise.resolve();\n }\n\n public clear(): void {\n this.all.forEach(hook => {\n delete this[hook];\n });\n\n this.init();\n }\n\n /**\n * Help, print available and registered hooks.\n */\n public help(): void {\n this.logger.info(`Available hooks: ${this.all.join(',')}`);\n const registered: string[] = [];\n this.registered.forEach((value, key) => registered.push(key));\n this.logger.info(`Registered hooks: ${registered.join(',')}`);\n }\n}\n\nconst hooks = new Hooks();\n\nexport { hooks };\n","/**\n * @module typings/core\n */\nimport { ITransitionData, ITransitionPage, IViewData } from './index';\n\nexport type HooksBarba =\n | 'ready'\n | 'page'\n | 'reset'\n | 'currentAdded'\n | 'currentRemoved'\n | 'nextAdded'\n | 'nextRemoved';\n\nexport type HooksOnce = 'beforeOnce' | 'once' | 'afterOnce';\n\nexport type HooksPage =\n | 'before'\n | 'beforeLeave'\n | 'leave'\n | 'afterLeave'\n | 'beforeEnter'\n | 'enter'\n | 'afterEnter'\n | 'after';\n\nexport type HooksBefore = 'beforeOnce' | 'beforeLeave' | 'beforeEnter';\nexport type HooksAfter = 'afterOnce' | 'afterLeave' | 'afterEnter';\n\nexport type HooksTransition = HooksOnce | HooksPage;\nexport type HooksView = HooksBefore | HooksAfter;\nexport type HooksAll = HooksBarba | HooksTransition;\n\n// Allow optional \"dynamically created\" hooks\nexport type HooksTransitionMap = { [key in HooksTransition]?: any };\n\nexport type HookFunction = (\n data?: ITransitionData | IViewData,\n t?: ITransitionPage\n) => Promise | void;\n\nexport class HookMethods {\n public before: (fn: HookFunction, ctx?: any) => void;\n public beforeLeave: (fn: HookFunction, ctx?: any) => void;\n public leave: (fn: HookFunction, ctx?: any) => void;\n public afterLeave: (fn: HookFunction, ctx?: any) => void;\n public beforeEnter: (fn: HookFunction, ctx?: any) => void;\n public enter: (fn: HookFunction, ctx?: any) => void;\n public afterEnter: (fn: HookFunction, ctx?: any) => void;\n public after: (fn: HookFunction, ctx?: any) => void;\n}\n","/**\n * @barba/core/modules/ignore\n * \n * ## Manage ignore options.\n *\n * - cache\n * - prefetch\n *\n * @module core/modules/ignore\n * @preferred\n */\n\n/***/\n\n// Definitions\nimport { IgnoreOption } from '../defs';\n// Utils\nimport { pathToRegexp } from '../utils/helpers';\nimport { parse } from '../utils/url';\n\nexport class Ignore {\n private _ignoreAll: boolean;\n private _ignoreRegexes: RegExp[] = [];\n\n constructor(ignore: IgnoreOption) {\n if (typeof ignore === 'boolean') {\n this._ignoreAll = ignore;\n } else {\n const paths = Array.isArray(ignore) ? ignore : [ignore];\n\n this._ignoreRegexes = paths.map(p => pathToRegexp(p));\n }\n }\n\n public checkHref(href: string): boolean {\n if (typeof this._ignoreAll === 'boolean') {\n return this._ignoreAll;\n }\n\n const { path } = parse(href);\n\n return this._ignoreRegexes.some(regex => regex.exec(path) !== null);\n }\n}\n","/**\n * @barba/core/modules/cache\n * \n * ## Cache for storing URL / HTML.\n *\n * @module core/modules/cache\n * @preferred\n */\n\n/***/\n\n// Definitions\nimport { CacheAction, CacheRequest, ICacheData, IgnoreOption } from '../defs';\n// Modules\nimport { Ignore } from './Ignore';\n\nexport class Cache extends Ignore {\n private _state: Map = new Map();\n\n constructor(ignore: IgnoreOption) {\n super(ignore);\n }\n\n /**\n * Set value to cache\n */\n public set(\n href: string,\n request: CacheRequest,\n action: CacheAction\n ): ICacheData {\n this._state.set(href, {\n action,\n request,\n });\n\n return {\n action,\n request,\n };\n }\n\n /**\n * Get data from cache\n */\n public get(href: string): ICacheData {\n return this._state.get(href);\n }\n\n /**\n * Get request from cache\n */\n public getRequest(href: string): CacheRequest {\n return this._state.get(href).request;\n }\n\n /**\n * Get action from cache\n */\n public getAction(href: string): CacheAction {\n return this._state.get(href).action;\n }\n\n /**\n * Check if value exists into cache\n */\n public has(href: string): boolean {\n /* istanbul ignore else */\n if (this.checkHref(href)) {\n return false;\n }\n return this._state.has(href);\n }\n\n /**\n * Delete value from cache\n */\n public delete(href: string): boolean {\n return this._state.delete(href);\n }\n\n /**\n * Update cache value\n */\n public update(href: string, data: ICacheData): ICacheData {\n const state = {\n ...this._state.get(href),\n ...data,\n };\n this._state.set(href, state);\n\n return state;\n }\n}\n","/**\n * @barba/core/modules/prevent\n * \n * ## Prevent checks.\n *\n * - Gathers all the tests that allow Barba to work and play transitions\n *\n * @module core/modules/prevent\n * @preferred\n */\n\n/***/\n\n// Definitions\nimport { IgnoreOption, Link, PreventCheck } from '../defs';\n// Schemas\nimport { schemaAttribute } from '../schemas/attribute';\n// Utils\nimport { url } from '../utils';\n// Modules\nimport { Ignore } from './Ignore';\n\n/**\n * Make sure the browser supports `history.pushState`.\n */\nconst pushState: PreventCheck = () => !window.history.pushState;\n\n/**\n * Make sure there is an `el` and `href`.\n */\nconst exists: PreventCheck = ({ el, href }) => !el || !href;\n\n/**\n * If the user is pressing ctrl + click, the browser will open a new tab.\n */\nconst newTab: PreventCheck = ({ event }) =>\n (event as KeyboardEvent).which > 1 ||\n (event as KeyboardEvent).metaKey ||\n (event as KeyboardEvent).ctrlKey ||\n (event as KeyboardEvent).shiftKey ||\n (event as KeyboardEvent).altKey;\n\n/**\n * If the link has `_blank` target.\n */\nconst blank: PreventCheck = ({ el }) =>\n el.hasAttribute('target') && (el as Link).target === '_blank';\n\n/**\n * If the domain is the same (in order to avoid pushState cross origin security problem).\n * Note: SVGAElement do not have `protocol` neither `hostname` properties.\n */\nconst corsDomain: PreventCheck = ({ el }) =>\n ((el as HTMLAnchorElement).protocol !== undefined &&\n window.location.protocol !== (el as HTMLAnchorElement).protocol) ||\n ((el as HTMLAnchorElement).hostname !== undefined &&\n window.location.hostname !== (el as HTMLAnchorElement).hostname);\n\n/**\n * If the port is the same.\n * Note: SVGAElement do not have `port` property.\n */\nconst corsPort: PreventCheck = ({ el }) =>\n (el as HTMLAnchorElement).port !== undefined &&\n url.getPort() !== url.getPort((el as HTMLAnchorElement).href);\n\n/**\n * If the link has download attribute.\n */\nconst download: PreventCheck = ({ el }) =>\n el.getAttribute && typeof el.getAttribute('download') === 'string';\n\n/**\n * If the links contains [data-barba-prevent] or [data-barba-prevent=\"self\"].\n */\nconst preventSelf: PreventCheck = ({ el }) =>\n el.hasAttribute(`${schemaAttribute.prefix}-${schemaAttribute.prevent}`);\n\n/**\n * If some link ancestor contains [data-barba-prevent=\"all\"].\n */\nconst preventAll: PreventCheck = ({ el }) =>\n Boolean(\n el.closest(`[${schemaAttribute.prefix}-${schemaAttribute.prevent}=\"all\"]`)\n );\n\n/**\n * If the link is the current URL.\n *\n * > Not in the test suite.\n */\nconst sameUrl: PreventCheck = ({ href }) =>\n url.clean(href) === url.clean() && url.getPort(href) === url.getPort();\n\nexport class Prevent extends Ignore {\n public suite: string[] = [];\n public tests: Map = new Map();\n\n constructor(ignore: IgnoreOption) {\n super(ignore);\n this.init();\n }\n\n public init(): void {\n // Add defaults\n this.add('pushState', pushState);\n this.add('exists', exists);\n this.add('newTab', newTab);\n this.add('blank', blank);\n this.add('corsDomain', corsDomain);\n this.add('corsPort', corsPort);\n this.add('download', download);\n this.add('preventSelf', preventSelf);\n this.add('preventAll', preventAll);\n\n // Outside of the test suite\n this.add('sameUrl', sameUrl, false);\n }\n\n public add(name: string, check: PreventCheck, suite: boolean = true): void {\n this.tests.set(name, check);\n suite && this.suite.push(name);\n }\n\n /**\n * Run individual test\n */\n public run(name: string, el: Link, event: Event, href: string): boolean {\n return this.tests.get(name)({\n el,\n event,\n href,\n });\n }\n\n /**\n * Run test suite\n */\n public checkLink(el: Link, event: Event, href: string): boolean {\n return this.suite.some(name => this.run(name, el, event, href));\n }\n}\n","// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error\nexport class BarbaError extends Error {\n /* istanbul ignore next */\n constructor(\n public error: Error,\n public label = 'Barba error',\n ...params: any[]\n ) {\n // Pass remaining arguments (including vendor specific ones) to parent constructor\n super(...params);\n\n // Maintains proper stack trace for where our error was thrown (only available on V8)\n /* istanbul ignore else */\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, BarbaError);\n }\n\n this.name = 'BarbaError';\n }\n}\n","/**\n * @barba/core/modules/store\n * \n * ## Transitions store.\n *\n * - Resolve transition\n * - Manage rules\n *\n * @module core/modules/store\n * @preferred\n */\n\n/***/\n\n// Definitions\nimport {\n IRule,\n IRules,\n ITransitionData,\n ITransitionFilters,\n ITransitionOnce,\n ITransitionPage,\n RuleName,\n} from '../defs';\n\n// Modules\nimport { Logger } from './Logger';\n\nexport class Store {\n public logger: Logger = new Logger('@barba/core');\n /**\n * All registered transitions.\n */\n public all: ITransitionPage[] = [];\n /**\n * \"Page only\" registered transitions.\n */\n public page: ITransitionPage[] = [];\n /**\n * \"Once only\" registered transitions.\n */\n public once: ITransitionOnce[] = [];\n /**\n * Rules for transition resolution.\n *\n * Defaults:\n *\n * - namespace\n * - custom\n */\n private _rules: IRule[] = [\n {\n name: 'namespace',\n type: 'strings',\n },\n {\n name: 'custom',\n type: 'function',\n },\n ];\n\n /**\n * Init store.\n */\n constructor(transitions: ITransitionPage[] = []) {\n /* istanbul ignore else */\n if (transitions) {\n // TODO: add check for valid transitions? criteria? (once || enter && leave)\n this.all = this.all.concat(transitions);\n }\n this.update();\n }\n\n /**\n * Add rule or transition.\n */\n public add(type: 'rule' | 'transition', data: any): void {\n switch (type) {\n case 'rule':\n // TODO: check for valid rule\n this._rules.splice(data.position || 0, 0, data.value);\n break;\n case 'transition':\n default:\n // TODO: check for valid transition\n this.all.push(data);\n break;\n }\n\n this.update();\n }\n\n /**\n * Resolve transition.\n */\n public resolve(\n data: ITransitionData,\n filters: ITransitionFilters = {}\n ): ITransitionOnce | ITransitionPage {\n // Filter on \"once\"\n let transitions = filters.once ? this.once : this.page;\n\n // Filter on \"self\"\n if (filters.self) {\n transitions = transitions.filter(t => t.name && t.name === 'self');\n } else {\n transitions = transitions.filter(t => !t.name || t.name !== 'self');\n }\n\n // All matching transition infos\n const matching = new Map();\n\n // Active = first of valid transitions\n // sorted by directions (from/to, from || to, …)\n const active = transitions.find(t => {\n let valid = true;\n const match = {};\n\n if (filters.self && t.name === 'self') {\n return true;\n }\n\n // Check rules\n this._rules.reverse().forEach(rule => {\n if (valid) {\n valid = this._check(t, rule, data, match);\n // From/to check\n if (t.from && t.to) {\n valid =\n this._check(t, rule, data, match, 'from') &&\n this._check(t, rule, data, match, 'to');\n }\n if (t.from && !t.to) {\n valid = this._check(t, rule, data, match, 'from');\n }\n if (!t.from && t.to) {\n valid = this._check(t, rule, data, match, 'to');\n }\n }\n });\n\n matching.set(t, match);\n\n return valid;\n });\n\n const activeMatch = matching.get(active);\n const transitionType = [];\n if (filters.once) {\n transitionType.push('once');\n } else {\n transitionType.push('page');\n }\n if (filters.self) {\n transitionType.push('self');\n }\n\n if (activeMatch) {\n // Log resolved transition\n const infos: any[] = [active];\n // Log if matching criteria\n Object.keys(activeMatch).length > 0 && infos.push(activeMatch);\n\n this.logger.info(\n `Transition found [${transitionType.join(',')}]`,\n ...infos\n );\n } else {\n this.logger.info(`No transition found [${transitionType.join(',')}]`);\n }\n\n return active;\n }\n\n /**\n * ### Update store.\n *\n * - Reorder transition by priorities\n * - Get wait indicator\n * - Get once transitions\n */\n public update(): void {\n // Reorder by priorities\n this.all = this.all\n .map(t => this._addPriority(t))\n .sort((a, b) => a.priority - b.priority)\n .reverse()\n .map(t => {\n delete t.priority;\n\n return t;\n });\n this.page = this.all.filter(\n t => t.leave !== undefined || t.enter !== undefined\n ) as ITransitionPage[];\n this.once = this.all.filter(t => t.once !== undefined) as ITransitionOnce[];\n }\n\n /**\n * ### Check if transition apply.\n *\n * Based on rule, page data and optional direction:\n *\n * 1. transition has no rule \"property\":\n * - always returns true\n * 2. transition has rule \"property\":\n * - \"strings\" should be present on both side (transition + page) and match\n * - \"function\" should return true\n */\n private _check(\n transition: ITransitionPage,\n rule: IRule,\n data: ITransitionData,\n match: any,\n direction?: 'from' | 'to'\n ): boolean {\n let isValid = true;\n let hasMatch = false;\n const t = transition;\n const { name, type } = rule;\n const strRule = name as IRules['strings'];\n const objRule = name as IRules['object'];\n const fnName = name as IRules['function'];\n const base = direction ? t[direction] : t; // = t || t.from || t.to\n const page = direction === 'to' ? data.next : data.current; // = current || next\n const exist = direction ? base && base[name] : base[name];\n\n // If transition rule exists\n if (exist) {\n switch (type) {\n case 'strings':\n default: {\n // Array support\n const names: string[] = Array.isArray(base[strRule])\n ? (base[strRule] as string[])\n : [base[strRule] as string];\n\n // For matching, prop should be present on both sides and match\n if (page[strRule] && names.indexOf(page[strRule]) !== -1) {\n hasMatch = true;\n }\n // If transition prop is different from current, not valid\n if (names.indexOf(page[strRule]) === -1) {\n isValid = false;\n }\n break;\n }\n\n case 'object': {\n // Array support\n const names: string[] = Array.isArray(base[objRule])\n ? (base[objRule] as string[])\n : [base[objRule] as string];\n\n // For matching, prop should be present on both sides and match\n if (page[objRule]) {\n if (\n page[objRule].name &&\n names.indexOf(page[objRule].name) !== -1\n ) {\n hasMatch = true;\n }\n // If transition prop is different from current, not valid\n if (names.indexOf(page[objRule].name) === -1) {\n isValid = false;\n }\n } else {\n isValid = false;\n }\n break;\n }\n\n case 'function':\n if (base[fnName](data)) {\n hasMatch = true;\n } else {\n isValid = false;\n }\n break;\n }\n\n if (hasMatch) {\n if (direction) {\n match[direction] = match[direction] || {};\n match[direction][name] = t[direction][name];\n } else {\n match[name] = t[name];\n }\n }\n }\n\n return isValid;\n }\n\n /**\n * ### Calculate transition priority.\n *\n * Based on:\n *\n * - rule \"position\" (index) give tens, hundreds, thousands, …\n * - from/to properties give units (0, 1 or 2)\n */\n private _calculatePriority(\n t: ITransitionPage,\n ruleName: RuleName,\n ruleIndex: number\n ): number {\n let priority = 0;\n\n if (\n t[ruleName] ||\n (t.from && t.from[ruleName]) ||\n (t.to && t.to[ruleName])\n ) {\n priority += Math.pow(10, ruleIndex);\n\n if (t.from && t.from[ruleName]) {\n priority += 1;\n }\n if (t.to && t.to[ruleName]) {\n priority += 2;\n }\n }\n\n return priority;\n }\n\n private _addPriority(t: ITransitionPage): ITransitionPage {\n t.priority = 0;\n let priority = 0;\n\n this._rules.forEach((rule, i) => {\n const { name } = rule;\n const index = i + 1;\n\n priority += this._calculatePriority(t, name, index);\n });\n\n t.priority = priority;\n\n return t;\n }\n}\n","/**\n * @barba/core/modules/transitions\n * \n * ## Transitions manager.\n *\n * - Handle hooks and transition lifecycle\n *\n * @module core/modules/transitions\n * @preferred\n */\n\n/***/\n\n// Definitions\nimport {\n HooksTransition,\n HooksTransitionMap,\n ITransitionData,\n ITransitionFilters,\n ITransitionOnce,\n ITransitionPage,\n Wrapper,\n} from '../defs';\n// Hooks\nimport { hooks } from '../hooks';\n// Utils\nimport { dom, helpers, runAsync } from '../utils';\n// Modules\nimport { BarbaError } from './Error';\nimport { Logger } from './Logger';\nimport { Store } from './Store';\n\nexport class Transitions {\n public logger: Logger = new Logger('@barba/core');\n public store: Store;\n private _running: boolean = false;\n\n constructor(transitions: ITransitionPage[] = []) {\n this.store = new Store(transitions);\n }\n\n /**\n * Get resolved transition\n *\n * - based on data\n */\n public get(\n data: ITransitionData,\n filters?: ITransitionFilters\n ): ITransitionOnce | ITransitionPage {\n return this.store.resolve(data, filters);\n }\n\n /**\n * Animation running status.\n */\n get isRunning(): boolean {\n return this._running;\n }\n set isRunning(status: boolean) {\n this._running = status;\n }\n\n /**\n * Check for registered once transition(s).\n */\n get hasOnce(): boolean {\n return this.store.once.length > 0;\n }\n\n /**\n * Check for registered self transition.\n */\n get hasSelf(): boolean {\n return this.store.all.some(t => t.name === 'self');\n }\n\n /**\n * ### Wait indicator.\n *\n * Tells Barba to get next page data \n * before starting the resolution \n * because some registered transitions need \n * next page data to be resolved (eg: `sync: true`, `to: { namespace }`, …)\n */\n get shouldWait(): boolean {\n return this.store.all.some(t => (t.to && !t.to.route) || t.sync);\n }\n\n /**\n * ### Do \"once\" transition.\n *\n * Hooks: see [[HooksOnce]].\n */\n public async doOnce({\n data,\n transition,\n }: {\n data: ITransitionData;\n transition: ITransitionOnce;\n }) {\n const t = transition || {};\n this._running = true;\n\n try {\n await this._doAsyncHook('beforeOnce', data, t);\n await this.once(data, t);\n await this._doAsyncHook('afterOnce', data, t);\n } catch (error) {\n this._running = false;\n\n this.logger.debug('Transition error [before/after/once]');\n this.logger.error(error);\n }\n\n this._running = false;\n }\n\n /**\n * ### Do \"page\" transition.\n *\n * Hooks: see [[HooksPage]].\n *\n * `sync: false` (default) order:\n *\n * 1. before\n * 2. beforeLeave\n * 3. leave\n * 4. afterLeave\n * 5. beforeEnter\n * 6. enter\n * 7. afterEnter\n * 8. after\n *\n * `sync: true` order:\n *\n * 1. before\n * 2. beforeLeave\n * 3. beforeEnter\n * 4. leave & enter\n * 5. afterLeave\n * 6. afterEnter\n * 7. after\n */\n public async doPage({\n data,\n transition,\n page,\n wrapper,\n }: {\n data: ITransitionData;\n transition: ITransitionPage;\n page: Promise;\n wrapper: Wrapper;\n }) {\n const t = transition || {};\n const sync = t.sync === true || false;\n\n this._running = true;\n\n try {\n // Check sync mode, wait for next content\n if (sync) {\n await helpers.update(page, data);\n }\n\n await this._doAsyncHook('before', data, t);\n\n if (sync) {\n try {\n await this.add(data, wrapper);\n // Before actions\n await this._doAsyncHook('beforeLeave', data, t);\n await this._doAsyncHook('beforeEnter', data, t);\n\n // Actions\n await Promise.all([this.leave(data, t), this.enter(data, t)]);\n\n // After actions\n await this._doAsyncHook('afterLeave', data, t);\n await this._doAsyncHook('afterEnter', data, t);\n } catch (error) {\n // this.logger.debug('Transition error [sync]');\n // this.logger.error(error);\n if (this._isTransitionError(error)) {\n throw new BarbaError(error, 'Transition error [sync]');\n }\n }\n } else {\n let leaveResult: any = false;\n\n try {\n // Leave\n await this._doAsyncHook('beforeLeave', data, t);\n\n leaveResult = await Promise.all([\n this.leave(data, t),\n helpers.update(page, data),\n ]).then(values => values[0]);\n\n await this._doAsyncHook('afterLeave', data, t);\n\n // TODO: check here \"valid\" page result\n // before going further\n } catch (error) {\n // this.logger.debug('Transition error [before/after/leave]');\n // this.logger.error(error);\n if (this._isTransitionError(error)) {\n throw new BarbaError(\n error,\n 'Transition error [before/after/leave]'\n );\n }\n }\n\n try {\n // Enter\n /* istanbul ignore else */\n if (leaveResult !== false) {\n await this.add(data, wrapper);\n\n await this._doAsyncHook('beforeEnter', data, t);\n await this.enter(data, t, leaveResult);\n await this._doAsyncHook('afterEnter', data, t);\n }\n } catch (error) {\n // this.logger.debug('Transition error [before/after/enter]');\n // this.logger.error(error);\n if (this._isTransitionError(error)) {\n throw new BarbaError(\n error,\n 'Transition error [before/after/enter]'\n );\n }\n }\n }\n\n // Remove current contaienr\n await this.remove(data);\n\n await this._doAsyncHook('after', data, t);\n } catch (error) {\n this._running = false;\n\n // If \"custom/specific\" barba error.\n /* istanbul ignore else */\n if (error.name && error.name === 'BarbaError') {\n this.logger.debug(error.label);\n this.logger.error(error.error);\n\n throw error;\n }\n\n this.logger.debug('Transition error [page]');\n this.logger.error(error);\n\n throw error;\n }\n\n this._running = false;\n }\n\n /**\n * Once hook + async \"once\" transition.\n */\n public async once(data: ITransitionData, t: ITransitionOnce): Promise {\n await hooks.do('once', data, t);\n\n return t.once ? runAsync(t.once, t)(data) : Promise.resolve();\n }\n\n /**\n * Leave hook + async \"leave\" transition.\n */\n public async leave(data: ITransitionData, t: ITransitionPage): Promise {\n await hooks.do('leave', data, t);\n\n return t.leave ? runAsync(t.leave, t)(data) : Promise.resolve();\n }\n\n /**\n * Enter hook + async \"enter\" transition.\n */\n public async enter(\n data: ITransitionData,\n t: ITransitionPage,\n leaveResult?: any\n ): Promise {\n await hooks.do('enter', data, t);\n\n return t.enter\n ? runAsync(t.enter, t)(data, leaveResult)\n : Promise.resolve();\n }\n\n /**\n * Add next container.\n */\n public async add(data: ITransitionData, wrapper: Wrapper): Promise {\n dom.addContainer(data.next.container, wrapper);\n hooks.do('nextAdded', data);\n }\n\n /**\n * Remove current container.\n */\n public async remove(data: ITransitionData): Promise {\n dom.removeContainer(data.current.container);\n hooks.do('currentRemoved', data);\n }\n\n private _isTransitionError(error: any) {\n if (error.message) {\n // Errors from request\n return !/Timeout error|Fetch error/.test(error.message);\n }\n\n if (error.status) {\n // Errors from request\n return false;\n }\n\n return true;\n }\n\n /**\n * Do hooks + async transition methods.\n */\n private async _doAsyncHook(\n hook: HooksTransition,\n data: ITransitionData,\n t: HooksTransitionMap\n ): Promise {\n await hooks.do(hook, data, t);\n\n return t[hook] ? runAsync(t[hook], t)(data) : Promise.resolve();\n }\n}\n","/**\n * @barba/core/modules/views\n * \n * ## Views manager.\n *\n * @module core/modules/views\n * @preferred\n */\n\n/***/\n\n// Definitions\nimport { HooksView, IView, IViewData } from '../defs';\n// Hooks\nimport { hooks } from '../hooks';\n// Utils\nimport { runAsync } from '../utils';\n// Types\ntype Hook = (data: IViewData) => Promise;\n\nexport class Views {\n /**\n * Available hook names for views.\n */\n public names: HooksView[] = [\n 'beforeLeave',\n 'afterLeave',\n 'beforeEnter',\n 'afterEnter',\n ];\n /**\n * Registered views by namespace.\n */\n public byNamespace: Map = new Map();\n\n /**\n * Init views.\n */\n constructor(views: IView[]) {\n if (views.length === 0) {\n return;\n }\n\n // TODO: add check\n // for valid views? criteria? (namespace property, string ?)\n // or duplicate\n views.forEach(view => {\n this.byNamespace.set(view.namespace, view);\n });\n\n this.names.forEach(name => {\n hooks[name](this._createHook(name));\n });\n }\n\n /**\n * Create the hook method.\n *\n * - get view based on namespace\n * - execute callback with transition data\n */\n private _createHook(name: HooksView): Hook {\n return data => {\n const { namespace } = name.match(/enter/i) ? data.next : data.current;\n const view = this.byNamespace.get(namespace);\n\n // TODO: manage self…\n // if (view && data.trigger !== 'self') {\n if (view && view[name]) {\n return runAsync(view[name], view)(data);\n }\n\n return Promise.resolve();\n };\n }\n}\n","// Element.prototype.matches polyfill\n// https://developer.mozilla.org/en-US/docs/Web/API/Element/matches#Polyfill\nif (!Element.prototype.matches) {\n Element.prototype.matches =\n (Element as any).prototype.msMatchesSelector ||\n Element.prototype.webkitMatchesSelector;\n}\n\n// Element.prototype.closest polyfill\n// https://developer.mozilla.org/en-US/docs/Web/API/Element/closest#Polyfill\nif (!Element.prototype.closest) {\n Element.prototype.closest = function closest(s: string) {\n let el = this;\n\n do {\n if (el.matches(s)) {\n return el;\n }\n\n el = (el.parentElement || el.parentNode) as Element;\n } while (el !== null && el.nodeType === 1);\n\n return null;\n };\n}\n","/**\n * @module core/schemas\n */\n\n// Definitions\nimport { ISchemaPage } from '../defs';\n\n/**\n * See [[ISchemaPage]]\n */\nexport const schemaPage: ISchemaPage = {\n container: null,\n html: '',\n namespace: '',\n url: {\n hash: '',\n href: '',\n path: '',\n port: null,\n query: {},\n },\n};\n","/**\n * @barba/core\n * \n * ## Barba core object\n *\n * Main methods:\n *\n * - `.init()` for initialization with options\n * - `.use()` for plugins\n *\n * @module core\n */\n\n/***/\n\nimport { version } from '../package.json';\n// Definitions\nimport {\n IBarbaOptions,\n IBarbaPlugin,\n IgnoreOption,\n ISchemaPage,\n ITransitionData,\n ITransitionOnce,\n ITransitionPage,\n Link,\n LinkEvent,\n RequestCustomError,\n RequestErrorOrResponse,\n SchemaAttributeValues,\n Trigger,\n Wrapper,\n} from './defs';\n// Hooks\nimport { hooks } from './hooks';\n// Modules\nimport { Cache } from './modules/Cache';\nimport { Logger } from './modules/Logger';\nimport { Prevent } from './modules/Prevent';\nimport { Transitions } from './modules/Transitions';\nimport { Views } from './modules/Views';\n// Polyfills\nimport './polyfills';\n// Schemas\nimport { schemaAttribute } from './schemas/attribute';\nimport { schemaPage } from './schemas/page';\n// Utils\nimport { dom, helpers, history, request, url } from './utils';\n\nexport class Core {\n /**\n * Version.\n */\n public version: string = version;\n /**\n * Schemas.\n */\n public schemaPage: ISchemaPage = schemaPage;\n /**\n * Logger class, allows plugins to create Logger.\n */\n public Logger: typeof Logger = Logger;\n /**\n * Barba logger.\n */\n public logger: Logger = new Logger('@barba/core');\n /**\n * Plugins.\n */\n public plugins: Array> = [];\n /**\n * Options\n */\n public timeout: number;\n public cacheIgnore: IgnoreOption;\n public prefetchIgnore: IgnoreOption;\n public preventRunning: boolean;\n /**\n * Hooks\n */\n public hooks = hooks;\n /**\n * Modules.\n */\n // public history: History;\n public cache: Cache;\n public prevent: Prevent;\n public transitions: Transitions;\n public views: Views;\n /**\n * Utils.\n */\n public dom = dom;\n public helpers = helpers;\n public history = history;\n public request = request;\n public url = url;\n\n private _data: ITransitionData;\n private _requestCustomError: RequestCustomError;\n private _wrapper: Wrapper;\n\n /**\n * ### Init plugin with options.\n *\n * See [[IBarbaPlugin]] for more details.\n */\n public use(plugin: IBarbaPlugin, options?: T): void {\n const installedPlugins = this.plugins;\n\n // Plugin installation\n if (installedPlugins.indexOf(plugin) > -1) {\n this.logger.warn(`Plugin [${plugin.name}] already installed.`);\n\n return;\n }\n\n if (typeof plugin.install !== 'function') {\n this.logger.warn(`Plugin [${plugin.name}] has no \"install\" method.`);\n\n return;\n }\n\n plugin.install(this, options);\n installedPlugins.push(plugin);\n }\n\n /**\n * ### Init barba with options.\n *\n * See [[IBarbaOptions]] for more details.\n *\n * Default values are:\n *\n * - transitions: `[]`\n * - views: `[]`\n * - schema: [[SchemaAttribute]]\n * - timeout: `2e3`\n * - cacheIgnore: `false`\n * - prefetchIgnore: `false`\n * - preventRunning: `false`\n * - prevent: `null`,\n * - debug: `false`\n * - logLevel: `'debug'`\n */\n public init(\n /** @ignore */ {\n transitions = [],\n views = [],\n schema = schemaAttribute,\n requestError,\n timeout = 2e3,\n cacheIgnore = false,\n prefetchIgnore = false,\n /* istanbul ignore next */\n preventRunning = false,\n prevent: preventCustom = null,\n debug = false,\n logLevel = 'off',\n }: IBarbaOptions = {}\n ) {\n // 0. Set logger level and print version\n Logger.setLevel(debug === true ? 'debug' : logLevel);\n this.logger.info(this.version);\n\n // 1. Manage options\n Object.keys(schema).forEach(k => {\n const attr = k as SchemaAttributeValues;\n\n /* istanbul ignore else */\n if (schemaAttribute[attr]) {\n schemaAttribute[attr] = schema[attr];\n }\n });\n this._requestCustomError = requestError;\n this.timeout = timeout;\n this.cacheIgnore = cacheIgnore;\n this.prefetchIgnore = prefetchIgnore;\n this.preventRunning = preventRunning;\n\n // 2. Get and check wrapper\n this._wrapper = this.dom.getWrapper();\n if (!this._wrapper) {\n throw new Error('[@barba/core] No Barba wrapper found');\n }\n this._wrapper.setAttribute('aria-live', 'polite'); // A11y\n\n // 3. Init pages (get \"current\" data)\n this._resetData();\n\n const { current } = this.data;\n\n if (!current.container) {\n throw new Error('[@barba/core] No Barba container found');\n }\n\n // 4. Init other modules\n this.cache = new Cache(cacheIgnore);\n this.prevent = new Prevent(prefetchIgnore);\n this.transitions = new Transitions(transitions);\n this.views = new Views(views);\n\n // Add prevent custom\n if (preventCustom !== null) {\n if (typeof preventCustom !== 'function') {\n throw new Error('[@barba/core] Prevent should be a function');\n }\n\n this.prevent.add('preventCustom', preventCustom);\n }\n\n // 5. Use \"current\" data\n // Init history\n this.history.init(current.url.href, current.namespace);\n // Add to cache\n // TODO: do not cache renderer HTML, only request results…\n // this.cache.set(current.url.href, Promise.resolve(current.html), 'init');\n\n // 6. Bind context\n this._onLinkEnter = this._onLinkEnter.bind(this);\n this._onLinkClick = this._onLinkClick.bind(this);\n this._onStateChange = this._onStateChange.bind(this);\n this._bind();\n\n // 7. Init plugins\n this.plugins.forEach(plugin => plugin.init());\n\n // 8. Barba ready\n // Set next + trigger for once and `beforeEnter`/`afterEnter` view on page load.\n const onceData = this.data;\n\n onceData.trigger = 'barba';\n onceData.next = onceData.current;\n onceData.current = { ...this.schemaPage };\n this.hooks.do('ready', onceData);\n\n // 9. Finally, do once…\n this.once(onceData);\n\n // Clean data for first barba transition…\n this._resetData();\n }\n\n public destroy(): void {\n this._resetData();\n this._unbind();\n this.history.clear();\n this.hooks.clear();\n this.plugins = [];\n }\n\n get data(): ITransitionData {\n return this._data;\n }\n\n get wrapper(): HTMLElement {\n return this._wrapper;\n }\n\n /**\n * ### Force a page change without Barba transition.\n */\n public force(href: string): void {\n // DEV\n // Can be used waiting animation cancellation management…\n window.location.assign(href);\n }\n\n /**\n * ### Go for a Barba transition.\n *\n * Manage \"self page\" href:\n *\n * - if same url and no self transition, keep default behavior\n * - link: reload the page\n * - anchor: scroll to\n * - if same url with self transition, use it\n * - then start a page transition.\n */\n public go(\n href: string,\n trigger: Trigger = 'barba',\n e?: LinkEvent | PopStateEvent\n ): Promise {\n // If animation running, force reload\n if (this.transitions.isRunning) {\n this.force(href);\n\n return;\n }\n\n let self = false;\n\n // Check prevent sameURL against current history\n // + state check\n // + update trigger with direction\n if (trigger === 'popstate') {\n self =\n this.history.current &&\n this.url.getPath(this.history.current.url) === this.url.getPath(href);\n } else {\n self = this.prevent.run('sameUrl', null, null, href);\n }\n\n if (self && !this.transitions.hasSelf) {\n return;\n }\n\n trigger = this.history.change(href, trigger, e);\n\n if (e) {\n e.stopPropagation();\n e.preventDefault();\n }\n\n return this.page(href, trigger, self);\n }\n\n /**\n * ### Start an \"once\" transition.\n *\n * If some registered \"once\" transition,\n * get the \"resolved\" transition from the store and start it.\n */\n public async once(readyData: ITransitionData): Promise {\n await this.hooks.do('beforeEnter', readyData);\n\n // Check if once transition\n if (this.transitions.hasOnce) {\n const transition = this.transitions.get(readyData, {\n once: true,\n }) as ITransitionOnce;\n\n await this.transitions.doOnce({ transition, data: readyData });\n }\n\n await this.hooks.do('afterEnter', readyData);\n }\n\n /**\n * ### Start a \"page\" transition.\n *\n * 1. If no running transition, updates data with full URL properties and trigger.\n * 2. Get page from cache or init request.\n * 3. Wait if some transitions need \"next\" data (`sync: true`, `to: …`).\n * 4. Manage the history, depending on trigger.\n * 5. Get \"data\" and trigger \"go\" hook.\n * 6. Get the \"resolved\" transition from the store and start it.\n * 7. Update title and reset data (current, next = undefined).\n *\n * > If \"self\", use the \"self\" transition\n */\n public async page(\n href: string,\n trigger: Trigger,\n self: boolean\n ): Promise {\n this.data.next.url = {\n href,\n ...this.url.parse(href),\n };\n this.data.trigger = trigger;\n\n const page = this.cache.has(href)\n ? this.cache.update(href, { action: 'click' }).request\n : this.cache.set(\n href,\n this.request(\n href,\n this.timeout,\n this.onRequestError.bind(this, trigger)\n ),\n 'click'\n ).request;\n\n // Need to wait before getting the right transition\n if (this.transitions.shouldWait) {\n await helpers.update(page, this.data);\n }\n\n const data = this.data;\n\n // Hook: between trigger and transition\n // Can be used to resolve \"route\"…\n await this.hooks.do('page', data);\n\n try {\n const transition = this.transitions.get(data, {\n once: false,\n self,\n }) as ITransitionPage;\n\n await this.transitions.doPage({\n data,\n page,\n transition,\n wrapper: this._wrapper,\n });\n\n this._resetData();\n } catch (error) {\n // Something went wrong (rejected promise, error, 404, 505, other…)\n // TODO: manage / use cases for cancellation\n // this.logger.debug('Transition cancelled');\n\n // If transition error and no debug mode, force reload page.\n /* istanbul ignore else */\n if (Logger.getLevel() === 0) {\n this.force(data.current.url.href);\n }\n }\n }\n\n /**\n * When a request error occurs.\n *\n * Allow the user to manage request error. (E.g: 404)\n */\n public onRequestError(trigger: Trigger, ...args: any): boolean {\n // Cancel transition status\n this.transitions.isRunning = false;\n\n const [href, response]: [string, RequestErrorOrResponse] = args;\n const action = this.cache.getAction(href);\n this.cache.delete(href);\n\n // Custom requestError returning false will return here.\n if (\n this._requestCustomError &&\n this._requestCustomError(trigger, action, href, response) === false\n ) {\n return false;\n }\n\n // Force page change\n if (action === 'click') {\n this.force(href);\n }\n return false;\n }\n\n /**\n * Programmatically prefetch\n */\n public prefetch(href: string) {\n // Already in cache\n /* istanbul ignore next */\n if (this.cache.has(href)) {\n return;\n }\n\n this.cache.set(\n href,\n this.request(\n href,\n this.timeout,\n this.onRequestError.bind(this, 'barba')\n ).catch((error: RequestErrorOrResponse) => {\n this.logger.error(error);\n }),\n 'prefetch'\n );\n }\n\n /**\n * Bind event listeners.\n */\n private _bind(): void {\n /* istanbul ignore else */\n if (this.prefetchIgnore !== true) {\n document.addEventListener('mouseover', this._onLinkEnter);\n document.addEventListener('touchstart', this._onLinkEnter);\n }\n document.addEventListener('click', this._onLinkClick);\n window.addEventListener('popstate', this._onStateChange);\n }\n\n /**\n * Bind event listeners.\n */\n private _unbind(): void {\n /* istanbul ignore else */\n if (this.prefetchIgnore !== true) {\n document.removeEventListener('mouseover', this._onLinkEnter);\n document.removeEventListener('touchstart', this._onLinkEnter);\n }\n document.removeEventListener('click', this._onLinkClick);\n window.removeEventListener('popstate', this._onStateChange);\n }\n\n /**\n * When a element is entered.\n *\n * Get valid link element.\n * Cache URL if needed.\n */\n private _onLinkEnter(e: LinkEvent): void {\n const link = this._getLinkElement(e);\n\n if (!link) {\n return;\n }\n\n const href = this.dom.getHref(link);\n\n if (this.prevent.checkHref(href)) {\n return;\n }\n\n // Already in cache\n if (this.cache.has(href)) {\n return;\n }\n\n this.cache.set(\n href,\n this.request(\n href,\n this.timeout,\n this.onRequestError.bind(this, link)\n ).catch((error: RequestErrorOrResponse) => {\n this.logger.error(error);\n }),\n 'enter'\n );\n }\n\n /**\n * When an element is clicked.\n *\n * Get valid link element.\n * Prevent same URL.\n * Go for a Barba transition.\n */\n private _onLinkClick(e: LinkEvent): void {\n // This use `prevent.checkLink` under the hood to get eligible link.\n const link = this._getLinkElement(e);\n\n if (!link) {\n return;\n }\n\n if (this.transitions.isRunning && this.preventRunning) {\n e.preventDefault();\n e.stopPropagation();\n\n return;\n }\n\n this.go(this.dom.getHref(link), link, e);\n }\n\n /**\n * When History state changes.\n *\n * Get \"href\" from URL\n * Go for a Barba transition.\n */\n private _onStateChange(e: PopStateEvent): void {\n this.go(this.url.getHref(), 'popstate', e);\n }\n\n /**\n * Get a valid link ancestor.\n *\n * Check for a \"href\" attribute.\n * Then check if eligible for Barba.\n */\n private _getLinkElement(e: LinkEvent): Link {\n let el = e.target as Link;\n\n while (el && !this.dom.getHref(el)) {\n el = (el as HTMLElement).parentNode as Link;\n }\n\n // Check prevent\n if (!el || this.prevent.checkLink(el, e, this.dom.getHref(el))) {\n return;\n }\n\n return el;\n }\n\n /**\n * Reset pages data.\n *\n * Set \"current\" and unset \"next\".\n */\n private _resetData() {\n const href = this.url.getHref();\n const current = {\n container: this.dom.getContainer(),\n html: this.dom.getHtml(),\n namespace: this.dom.getNamespace(),\n url: {\n href,\n ...this.url.parse(href),\n },\n };\n\n this._data = {\n current,\n next: { ...this.schemaPage },\n trigger: undefined,\n };\n\n this.hooks.do('reset', this.data);\n }\n}\n\nconst core = new Core();\n\nexport default core;\n","/**\n * @barba/css\n * \n * ## Barba CSS.\n *\n * - Add CSS classes\n * - Manage CSS transitions\n *\n * @module css\n * @preferred\n */\n\n/***/\n\n// Definitions\nimport {\n IBarbaPlugin,\n ITransitionData,\n ITransitionPage,\n} from '@barba/core/src/defs';\n\nimport { Core } from '@barba/core/src/core';\nimport { Logger } from '@barba/core/src/modules/Logger';\n\nimport { ICssCallbacks } from './defs';\n\nimport { version } from '../package.json';\n\nexport class Css implements IBarbaPlugin<{}> {\n public name = '@barba/css';\n public version = version;\n public barba: Core;\n public logger: Logger;\n\n public prefix: string = 'barba';\n public callbacks: ICssCallbacks = {};\n public cb: any;\n\n // Check if transition property applied\n private _hasTransition: boolean = false;\n\n /**\n * Plugin installation.\n */\n public install(barba: Core) {\n this.logger = new barba.Logger(this.name);\n this.logger.info(this.version);\n this.barba = barba;\n this._once = this._once.bind(this);\n this._leave = this._leave.bind(this);\n this._enter = this._enter.bind(this);\n }\n\n /**\n * Plugin installation.\n */\n public init() {\n // Register hooks to get prefix\n this.barba.hooks.before(this._getPrefix, this);\n this.barba.hooks.beforeOnce(this._getPrefix, this);\n\n // Register hook for CSS classes\n this.barba.hooks.beforeOnce(this._beforeOnce, this);\n this.barba.hooks.afterOnce(this._afterOnce, this);\n this.barba.hooks.beforeLeave(this._beforeLeave, this);\n this.barba.hooks.afterLeave(this._afterLeave, this);\n this.barba.hooks.beforeEnter(this._beforeEnter, this);\n this.barba.hooks.afterEnter(this._afterEnter, this);\n\n // Override main transitions\n this.barba.transitions.once = this._once;\n this.barba.transitions.leave = this._leave;\n this.barba.transitions.enter = this._enter;\n\n // Add empty default transition (force prepend)\n /* istanbul ignore next */\n this.barba.transitions.store.all.unshift({\n name: 'barba',\n once() {}, // tslint:disable-line:no-empty\n leave() {}, // tslint:disable-line:no-empty\n enter() {}, // tslint:disable-line:no-empty\n });\n this.barba.transitions.store.update();\n }\n\n /**\n * Initial state.\n */\n public async start(container: HTMLElement, kind: string): Promise {\n // Set initial CSS values\n this.add(container, kind); // CSS: add kind\n await this.barba.helpers.nextTick();\n // Apply CSS transition\n this.add(container, `${kind}-active`); // CSS: add kind-active\n await this.barba.helpers.nextTick();\n }\n\n /**\n * Next frame state.\n */\n public async next(container: HTMLElement, kind: string): Promise {\n this._hasTransition = this._checkTransition(container);\n\n if (this._hasTransition) {\n // We need to listen the end of the animation\n return new Promise(async resolve => {\n this.cb = resolve;\n this.callbacks[kind] = resolve;\n\n container.addEventListener('transitionend', resolve, false);\n await this.barba.helpers.nextTick();\n this.remove(container, kind); // CSS: remove kind\n // await this.barba.helpers.nextTick();\n this.add(container, `${kind}-to`); // CSS: add kind-to\n await this.barba.helpers.nextTick();\n });\n } else {\n this.remove(container, kind); // CSS: remove kind\n await this.barba.helpers.nextTick();\n this.add(container, `${kind}-to`); // CSS: add kind-to\n await this.barba.helpers.nextTick();\n }\n }\n\n /**\n * Final state.\n */\n public async end(container: HTMLElement, kind: string): Promise {\n this.remove(container, `${kind}-to`); // CSS: remove kind-to\n this.remove(container, `${kind}-active`); // CSS: remove kind-active\n container.removeEventListener('transitionend', this.callbacks[kind]);\n this._hasTransition = false;\n }\n\n /**\n * Add CSS classes.\n */\n public add(el: HTMLElement, step: string): void {\n el.classList.add(`${this.prefix}-${step}`);\n }\n\n /**\n * Remove CSS classes.\n */\n public remove(el: HTMLElement, step: string): void {\n el.classList.remove(`${this.prefix}-${step}`);\n }\n\n /**\n * Get CSS prefix from transition `name` property.\n */\n private _getPrefix(data: ITransitionData, t: ITransitionPage): void {\n this.prefix = t.name || 'barba';\n }\n\n /**\n * Check if CSS transition is applied\n */\n private _checkTransition(container: HTMLElement) {\n // DEV: check for CSS animation property?\n return getComputedStyle(container).transitionDuration !== '0s';\n }\n\n /**\n * `beforeOnce` hook.\n */\n private _beforeOnce(data: ITransitionData): Promise {\n return this.start(data.next.container, 'once');\n }\n\n /**\n * `once` hook.\n */\n private async _once(data: ITransitionData, t: ITransitionPage): Promise {\n await this.barba.hooks.do('once', data, t);\n\n return this.next(data.next.container, 'once');\n }\n\n /**\n * `afterOnce` hook.\n */\n private _afterOnce(data: ITransitionData): Promise {\n return this.end(data.next.container, 'once');\n }\n\n /**\n * `beforeLeave` hook.\n */\n private _beforeLeave(data: ITransitionData): Promise {\n return this.start(data.current.container, 'leave');\n }\n\n /**\n * `leave` hook.\n */\n private async _leave(\n data: ITransitionData,\n t: ITransitionPage\n ): Promise {\n await this.barba.hooks.do('leave', data, t);\n\n return this.next(data.current.container, 'leave');\n }\n\n /**\n * `afterLeave` hook.\n */\n private _afterLeave(data: ITransitionData): Promise {\n this.end(data.current.container, 'leave');\n // For CSS transitions, we need to remove current container\n // directly after the leave transition\n this.barba.transitions.remove(data);\n\n return Promise.resolve();\n }\n\n /**\n * `beforeEnter` hook.\n */\n private _beforeEnter(data: ITransitionData): Promise {\n // Avoid on first load\n if (this.barba.history.size === 1) {\n return Promise.resolve();\n }\n return this.start(data.next.container, 'enter');\n }\n\n /**\n * `enter` hook.\n */\n private async _enter(\n data: ITransitionData,\n t: ITransitionPage\n ): Promise {\n await this.barba.hooks.do('enter', data, t);\n\n return this.next(data.next.container, 'enter');\n }\n\n /**\n * `afterEnter` hook.\n */\n private _afterEnter(data: ITransitionData): Promise {\n // Avoid on first load\n if (this.barba.history.size === 1) {\n return Promise.resolve();\n }\n return this.end(data.next.container, 'enter');\n }\n}\n\nconst css = new Css();\n\nexport default css;\n","class e{picker;options;priority=0;dependencies=[];attach(e){const t=this.getName(),s={...this.options};this.options={...this.options,...e.options[t]||{}};for(const i of Object.keys(s))if(null!==s[i]&&\"object\"==typeof s[i]&&Object.keys(s[i]).length&&t in e.options&&i in e.options[t]){const n={...e.options[t][i]};null!==n&&\"object\"==typeof n&&Object.keys(n).length&&Object.keys(n).every((e=>Object.keys(s[i]).includes(e)))&&(this.options[i]={...s[i],...n})}if(this.picker=e,this.dependenciesNotFound()){const e=this.dependencies.filter((e=>!this.pluginsAsStringArray().includes(e)));return void console.warn(`${this.getName()}: required dependencies (${e.join(\", \")}).`)}const i=this.camelCaseToKebab(this.getName());this.picker.ui.container.classList.add(i),this.onAttach()}detach(){const e=this.camelCaseToKebab(this.getName());this.picker.ui.container.classList.remove(e),\"function\"==typeof this.onDetach&&this.onDetach()}dependenciesNotFound(){return this.dependencies.length&&!this.dependencies.every((e=>this.pluginsAsStringArray().includes(e)))}pluginsAsStringArray(){return this.picker.options.plugins.map((e=>\"function\"==typeof e?(new e).getName():e))}camelCaseToKebab(e){return e.replace(/([a-zA-Z])(?=[A-Z])/g,\"$1-\").toLowerCase()}}export{e as BasePlugin};\n","import{DateTime as e}from\"@easepick/datetime\";class t{picker;constructor(e){this.picker=e}render(t,i){t||(t=new e),t.setDate(1),t.setHours(0,0,0,0),\"function\"==typeof this[`get${i}View`]&&this[`get${i}View`](t)}getContainerView(e){this.picker.ui.container.innerHTML=\"\",this.picker.options.header&&this.picker.trigger(\"render\",{date:e.clone(),view:\"Header\"}),this.picker.trigger(\"render\",{date:e.clone(),view:\"Main\"}),this.picker.options.autoApply||this.picker.trigger(\"render\",{date:e.clone(),view:\"Footer\"})}getHeaderView(e){const t=document.createElement(\"header\");this.picker.options.header instanceof HTMLElement&&t.appendChild(this.picker.options.header),\"string\"==typeof this.picker.options.header&&(t.innerHTML=this.picker.options.header),this.picker.ui.container.appendChild(t),this.picker.trigger(\"view\",{target:t,date:e.clone(),view:\"Header\"})}getMainView(e){const t=document.createElement(\"main\");this.picker.ui.container.appendChild(t);const i=document.createElement(\"div\");i.className=`calendars grid-${this.picker.options.grid}`;for(let t=0;t${e.toLocaleString(this.picker.options.lang,{month:\"long\"})} ${e.format(\"YYYY\")}`,t.appendChild(i);const n=document.createElement(\"button\");n.className=\"previous-button unit\",n.innerHTML=this.picker.options.locale.previousMonth,t.appendChild(n);const s=document.createElement(\"button\");return s.className=\"next-button unit\",s.innerHTML=this.picker.options.locale.nextMonth,t.appendChild(s),t}getCalendarDayNamesView(){const e=document.createElement(\"div\");e.className=\"daynames-row\";for(let t=1;t<=7;t++){const i=3+this.picker.options.firstDay+t,n=document.createElement(\"div\");n.className=\"dayname\",n.innerHTML=new Date(1970,0,i,12,0,0,0).toLocaleString(this.picker.options.lang,{weekday:\"short\"}),n.title=new Date(1970,0,i,12,0,0,0).toLocaleString(this.picker.options.lang,{weekday:\"long\"}),e.appendChild(n),this.picker.trigger(\"view\",{dayIdx:i,view:\"CalendarDayName\",target:n})}return e}getCalendarDaysView(e){const t=document.createElement(\"div\");t.className=\"days-grid\";const i=this.calcOffsetDays(e,this.picker.options.firstDay),n=32-new Date(e.getFullYear(),e.getMonth(),32).getDate();for(let e=0;e{\"function\"==typeof t?e.push(new t):\"string\"==typeof t&&\"undefined\"!=typeof easepick&&Object.prototype.hasOwnProperty.call(easepick,t)?e.push(new easepick[t]):console.warn(`easepick: ${t} not found.`)})),e.sort(((e,t)=>e.priority>t.priority?-1:e.priorityt.dependencies.length?1:e.dependencies.length{e.attach(this.picker),this.instances[e.getName()]=e}))}getInstance(e){return this.instances[e]}addInstance(e){if(Object.prototype.hasOwnProperty.call(this.instances,e))console.warn(`easepick: ${e} already added.`);else{if(\"undefined\"!=typeof easepick&&Object.prototype.hasOwnProperty.call(easepick,e)){const t=new easepick[e];return t.attach(this.picker),this.instances[t.getName()]=t,t}if(\"undefined\"!==this.getPluginFn(e)){const t=new(this.getPluginFn(e));return t.attach(this.picker),this.instances[t.getName()]=t,t}console.warn(`easepick: ${e} not found.`)}return null}removeInstance(e){return e in this.instances&&this.instances[e].detach(),delete this.instances[e]}reloadInstance(e){return this.removeInstance(e),this.addInstance(e)}getPluginFn(e){return[...this.picker.options.plugins].filter((t=>\"function\"==typeof t&&(new t).getName()===e)).shift()}}class n{Calendar=new t(this);PluginManager=new i(this);calendars=[];datePicked=[];cssLoaded=0;binds={hidePicker:this.hidePicker.bind(this),show:this.show.bind(this)};options={doc:document,css:[],element:null,firstDay:1,grid:1,calendars:1,lang:\"en-US\",date:null,format:\"YYYY-MM-DD\",readonly:!0,autoApply:!0,header:!1,inline:!1,locale:{nextMonth:' ',previousMonth:' ',cancel:\"Cancel\",apply:\"Apply\"},documentClick:this.binds.hidePicker,plugins:[]};ui={container:null,shadowRoot:null,wrapper:null};version=\"1.1.7\";constructor(e){const t={...this.options.locale,...e.locale};this.options={...this.options,...e},this.options.locale=t,this.handleOptions(),this.ui.wrapper=document.createElement(\"span\"),this.ui.wrapper.style.display=\"none\",this.ui.wrapper.style.position=\"absolute\",this.ui.wrapper.style.pointerEvents=\"none\",this.ui.wrapper.className=\"easepick-wrapper\",this.ui.wrapper.attachShadow({mode:\"open\"}),this.ui.shadowRoot=this.ui.wrapper.shadowRoot,this.ui.container=document.createElement(\"div\"),this.ui.container.className=\"container\",this.options.zIndex&&(this.ui.container.style.zIndex=String(this.options.zIndex)),this.options.inline&&(this.ui.wrapper.style.position=\"relative\",this.ui.container.classList.add(\"inline\")),this.ui.shadowRoot.appendChild(this.ui.container),this.options.element.after(this.ui.wrapper),this.handleCSS(),this.options.element.addEventListener(\"click\",this.binds.show),this.on(\"view\",this.onView.bind(this)),this.on(\"render\",this.onRender.bind(this)),this.PluginManager.initialize(),this.parseValues(),\"function\"==typeof this.options.setup&&this.options.setup(this),this.on(\"click\",this.onClick.bind(this)),this.renderAll()}on(e,t,i={}){this.ui.container.addEventListener(e,t,i)}off(e,t,i={}){this.ui.container.removeEventListener(e,t,i)}trigger(e,t={}){return this.ui.container.dispatchEvent(new CustomEvent(e,{detail:t}))}destroy(){this.options.element.removeEventListener(\"click\",this.binds.show),\"function\"==typeof this.options.documentClick&&document.removeEventListener(\"click\",this.options.documentClick,!0),Object.keys(this.PluginManager.instances).forEach((e=>{this.PluginManager.removeInstance(e)})),this.ui.wrapper.remove()}onRender(e){const{view:t,date:i}=e.detail;this.Calendar.render(i,t)}onView(e){const{view:t,target:i}=e.detail;if(\"Footer\"===t&&this.datePicked.length){i.querySelector(\".apply-button\").disabled=!1}}onClickHeaderButton(e){this.isCalendarHeaderButton(e)&&(e.classList.contains(\"next-button\")?this.calendars[0].add(1,\"month\"):this.calendars[0].subtract(1,\"month\"),this.renderAll(this.calendars[0]))}onClickCalendarDay(t){if(this.isCalendarDay(t)){const i=new e(t.dataset.time);this.options.autoApply?(this.setDate(i),this.trigger(\"select\",{date:this.getDate()}),this.hide()):(this.datePicked[0]=i,this.trigger(\"preselect\",{date:this.getDate()}),this.renderAll())}}onClickApplyButton(e){if(this.isApplyButton(e)){if(this.datePicked[0]instanceof Date){const e=this.datePicked[0].clone();this.setDate(e)}this.hide(),this.trigger(\"select\",{date:this.getDate()})}}onClickCancelButton(e){this.isCancelButton(e)&&this.hide()}onClick(e){const t=e.target;if(t instanceof HTMLElement){const e=t.closest(\".unit\");if(!(e instanceof HTMLElement))return;this.onClickHeaderButton(e),this.onClickCalendarDay(e),this.onClickApplyButton(e),this.onClickCancelButton(e)}}isShown(){return this.ui.container.classList.contains(\"inline\")||this.ui.container.classList.contains(\"show\")}show(e){if(this.isShown())return;const t=e&&\"target\"in e?e.target:this.options.element,{top:i,left:n}=this.adjustPosition(t);this.ui.container.style.top=`${i}px`,this.ui.container.style.left=`${n}px`,this.ui.container.classList.add(\"show\"),this.trigger(\"show\",{target:t})}hide(){this.ui.container.classList.remove(\"show\"),this.datePicked.length=0,this.renderAll(),this.trigger(\"hide\")}setDate(t){const i=new e(t,this.options.format);this.options.date=i.clone(),this.updateValues(),this.calendars.length&&this.renderAll()}getDate(){return this.options.date instanceof e?this.options.date.clone():null}parseValues(){this.options.date?this.setDate(this.options.date):this.options.element instanceof HTMLInputElement&&this.options.element.value.length&&this.setDate(this.options.element.value),this.options.date instanceof Date||(this.options.date=null)}updateValues(){const e=this.getDate(),t=e instanceof Date?e.format(this.options.format,this.options.lang):\"\",i=this.options.element;i instanceof HTMLInputElement?i.value=t:i instanceof HTMLElement&&(i.innerText=t)}hidePicker(e){let t=e.target,i=null;t.shadowRoot&&(t=e.composedPath()[0],i=t.getRootNode().host),this.isShown()&&i!==this.ui.wrapper&&t!==this.options.element&&this.hide()}renderAll(e){this.trigger(\"render\",{view:\"Container\",date:(e||this.calendars[0]).clone()})}isCalendarHeaderButton(e){return[\"previous-button\",\"next-button\"].some((t=>e.classList.contains(t)))}isCalendarDay(e){return e.classList.contains(\"day\")}isApplyButton(e){return e.classList.contains(\"apply-button\")}isCancelButton(e){return e.classList.contains(\"cancel-button\")}gotoDate(t){const i=new e(t,this.options.format);i.setDate(1),this.calendars[0]=i.clone(),this.renderAll()}clear(){this.options.date=null,this.datePicked.length=0,this.updateValues(),this.renderAll()}handleOptions(){this.options.element instanceof HTMLElement||(this.options.element=this.options.doc.querySelector(this.options.element)),\"function\"==typeof this.options.documentClick&&document.addEventListener(\"click\",this.options.documentClick,!0),this.options.element instanceof HTMLInputElement&&(this.options.element.readOnly=this.options.readonly),this.options.date?this.calendars[0]=new e(this.options.date,this.options.format):this.calendars[0]=new e}handleCSS(){if(Array.isArray(this.options.css))this.options.css.forEach((e=>{const t=document.createElement(\"link\");t.href=e,t.rel=\"stylesheet\";const i=()=>{this.cssLoaded++,this.cssLoaded===this.options.css.length&&(this.ui.wrapper.style.display=\"\")};t.addEventListener(\"load\",i),t.addEventListener(\"error\",i),this.ui.shadowRoot.append(t)}));else if(\"string\"==typeof this.options.css){const e=document.createElement(\"style\"),t=document.createTextNode(this.options.css);e.appendChild(t),this.ui.shadowRoot.append(e),this.ui.wrapper.style.display=\"\"}else\"function\"==typeof this.options.css&&(this.options.css.call(this,this),this.ui.wrapper.style.display=\"\")}adjustPosition(e){const t=e.getBoundingClientRect(),i=this.ui.wrapper.getBoundingClientRect();this.ui.container.classList.add(\"calc\");const n=this.ui.container.getBoundingClientRect();this.ui.container.classList.remove(\"calc\");let s=t.bottom-i.bottom,a=t.left-i.left;return\"undefined\"!=typeof window&&(window.innerHeight=0&&(s=t.top-i.top-n.height),window.innerWidth=0&&(a=t.right-i.right-n.width)),{left:a,top:s}}}var s=Object.freeze({__proto__:null,Core:n,create:n});export{n as Core,n as create,s as easepick};\n","class t extends Date{static parseDateTime(e,s=\"YYYY-MM-DD\",n=\"en-US\"){if(!e)return new Date((new Date).setHours(0,0,0,0));if(e instanceof t)return e.toJSDate();if(e instanceof Date)return e;if(/^-?\\d{10,}$/.test(String(e)))return new Date(Number(e));if(\"string\"==typeof e){const r=[];let a=null;for(;null!=(a=t.regex.exec(s));)\"\\\\\"!==a[1]&&r.push(a);if(r.length){const s={year:null,month:null,shortMonth:null,longMonth:null,day:null,hour:0,minute:0,second:0,ampm:null,value:\"\"};r[0].index>0&&(s.value+=\".*?\");for(const[e,a]of Object.entries(r)){const r=Number(e),{group:i,pattern:h}=t.formatPatterns(a[0],n);s[i]=r+1,s.value+=h,s.value+=\".*?\"}const a=new RegExp(`^${s.value}$`);if(a.test(e)){const r=a.exec(e),i=Number(r[s.year]);let h=null;s.month?h=Number(r[s.month])-1:s.shortMonth?h=t.shortMonths(n).indexOf(r[s.shortMonth]):s.longMonth&&(h=t.longMonths(n).indexOf(r[s.longMonth]));const g=Number(r[s.day])||1,o=Number(r[s.hour]);let u=Number.isNaN(o)?0:o;const c=Number(r[s.minute]),l=Number.isNaN(c)?0:c,m=Number(r[s.second]),d=Number.isNaN(m)?0:m,M=r[s.ampm];return M&&\"PM\"===M&&(u+=12,24===u&&(u=0)),new Date(i,h,g,u,l,d,0)}}}return new Date((new Date).setHours(0,0,0,0))}static regex=/(\\\\)?(Y{2,4}|M{1,4}|D{1,2}|H{1,2}|h{1,2}|m{1,2}|s{1,2}|A|a)/g;static MONTH_JS=[0,1,2,3,4,5,6,7,8,9,10,11];static shortMonths(e){return t.MONTH_JS.map((t=>new Date(2019,t).toLocaleString(e,{month:\"short\"})))}static longMonths(e){return t.MONTH_JS.map((t=>new Date(2019,t).toLocaleString(e,{month:\"long\"})))}static formatPatterns(e,s){switch(e){case\"YY\":case\"YYYY\":return{group:\"year\",pattern:`(\\\\d{${e.length}})`};case\"M\":return{group:\"month\",pattern:\"(\\\\d{1,2})\"};case\"MM\":return{group:\"month\",pattern:\"(\\\\d{2})\"};case\"MMM\":return{group:\"shortMonth\",pattern:`(${t.shortMonths(s).join(\"|\")})`};case\"MMMM\":return{group:\"longMonth\",pattern:`(${t.longMonths(s).join(\"|\")})`};case\"D\":return{group:\"day\",pattern:\"(\\\\d{1,2})\"};case\"DD\":return{group:\"day\",pattern:\"(\\\\d{2})\"};case\"h\":case\"H\":return{group:\"hour\",pattern:\"(\\\\d{1,2})\"};case\"hh\":case\"HH\":return{group:\"hour\",pattern:\"(\\\\d{2})\"};case\"m\":return{group:\"minute\",pattern:\"(\\\\d{1,2})\"};case\"mm\":return{group:\"minute\",pattern:\"(\\\\d{2})\"};case\"s\":return{group:\"second\",pattern:\"(\\\\d{1,2})\"};case\"ss\":return{group:\"second\",pattern:\"(\\\\d{2})\"};case\"a\":case\"A\":return{group:\"ampm\",pattern:\"(AM|PM|am|pm)\"}}}lang;constructor(e=null,s=\"YYYY-MM-DD\",n=\"en-US\"){super(t.parseDateTime(e,s,n)),this.lang=n}getWeek(t){const e=new Date(this.midnight_ts(this)),s=(this.getDay()+(7-t))%7;e.setDate(e.getDate()-s);const n=e.getTime();return e.setMonth(0,1),e.getDay()!==t&&e.setMonth(0,1+(4-e.getDay()+7)%7),1+Math.ceil((n-e.getTime())/6048e5)}clone(){return new t(this)}toJSDate(){return new Date(this)}inArray(t,e=\"[]\"){return t.some((t=>t instanceof Array?this.isBetween(t[0],t[1],e):this.isSame(t,\"day\")))}isBetween(t,e,s=\"()\"){switch(s){default:case\"()\":return this.midnight_ts(this)>this.midnight_ts(t)&&this.midnight_ts(this)=this.midnight_ts(t)&&this.midnight_ts(this)this.midnight_ts(t)&&this.midnight_ts(this)<=this.midnight_ts(e);case\"[]\":return this.midnight_ts()>=this.midnight_ts(t)&&this.midnight_ts()<=this.midnight_ts(e)}}isBefore(t,e=\"days\"){switch(e){case\"day\":case\"days\":return new Date(t.getFullYear(),t.getMonth(),t.getDate()).getTime()>new Date(this.getFullYear(),this.getMonth(),this.getDate()).getTime();case\"month\":case\"months\":return new Date(t.getFullYear(),t.getMonth(),1).getTime()>new Date(this.getFullYear(),this.getMonth(),1).getTime();case\"year\":case\"years\":return t.getFullYear()>this.getFullYear()}throw new Error(\"isBefore: Invalid unit!\")}isSameOrBefore(t,e=\"days\"){switch(e){case\"day\":case\"days\":return new Date(t.getFullYear(),t.getMonth(),t.getDate()).getTime()>=new Date(this.getFullYear(),this.getMonth(),this.getDate()).getTime();case\"month\":case\"months\":return new Date(t.getFullYear(),t.getMonth(),1).getTime()>=new Date(this.getFullYear(),this.getMonth(),1).getTime()}throw new Error(\"isSameOrBefore: Invalid unit!\")}isAfter(t,e=\"days\"){switch(e){case\"day\":case\"days\":return new Date(this.getFullYear(),this.getMonth(),this.getDate()).getTime()>new Date(t.getFullYear(),t.getMonth(),t.getDate()).getTime();case\"month\":case\"months\":return new Date(this.getFullYear(),this.getMonth(),1).getTime()>new Date(t.getFullYear(),t.getMonth(),1).getTime();case\"year\":case\"years\":return this.getFullYear()>t.getFullYear()}throw new Error(\"isAfter: Invalid unit!\")}isSameOrAfter(t,e=\"days\"){switch(e){case\"day\":case\"days\":return new Date(this.getFullYear(),this.getMonth(),this.getDate()).getTime()>=new Date(t.getFullYear(),t.getMonth(),t.getDate()).getTime();case\"month\":case\"months\":return new Date(this.getFullYear(),this.getMonth(),1).getTime()>=new Date(t.getFullYear(),t.getMonth(),1).getTime()}throw new Error(\"isSameOrAfter: Invalid unit!\")}isSame(t,e=\"days\"){switch(e){case\"day\":case\"days\":return new Date(this.getFullYear(),this.getMonth(),this.getDate()).getTime()===new Date(t.getFullYear(),t.getMonth(),t.getDate()).getTime();case\"month\":case\"months\":return new Date(this.getFullYear(),this.getMonth(),1).getTime()===new Date(t.getFullYear(),t.getMonth(),1).getTime()}throw new Error(\"isSame: Invalid unit!\")}add(t,e=\"days\"){switch(e){case\"day\":case\"days\":this.setDate(this.getDate()+t);break;case\"month\":case\"months\":this.setMonth(this.getMonth()+t)}return this}subtract(t,e=\"days\"){switch(e){case\"day\":case\"days\":this.setDate(this.getDate()-t);break;case\"month\":case\"months\":this.setMonth(this.getMonth()-t)}return this}diff(t,e=\"days\"){switch(e){default:case\"day\":case\"days\":return Math.round((this.midnight_ts()-this.midnight_ts(t))/864e5);case\"month\":case\"months\":let e=12*(t.getFullYear()-this.getFullYear());return e-=t.getMonth(),e+=this.getMonth(),e}}format(e,s=\"en-US\"){let n=\"\";const r=[];let a=null;for(;null!=(a=t.regex.exec(e));)\"\\\\\"!==a[1]&&r.push(a);if(r.length){r[0].index>0&&(n+=e.substring(0,r[0].index));for(const[t,a]of Object.entries(r)){const i=Number(t);n+=this.formatTokens(a[0],s),r[i+1]&&(n+=e.substring(a.index+a[0].length,r[i+1].index)),i===r.length-1&&(n+=e.substring(a.index+a[0].length))}}return n.replace(/\\\\/g,\"\")}midnight_ts(t){return t?new Date(t.getFullYear(),t.getMonth(),t.getDate(),0,0,0,0).getTime():new Date(this.getFullYear(),this.getMonth(),this.getDate(),0,0,0,0).getTime()}formatTokens(e,s){switch(e){case\"YY\":return String(this.getFullYear()).slice(-2);case\"YYYY\":return String(this.getFullYear());case\"M\":return String(this.getMonth()+1);case\"MM\":return`0${this.getMonth()+1}`.slice(-2);case\"MMM\":return t.shortMonths(s)[this.getMonth()];case\"MMMM\":return t.longMonths(s)[this.getMonth()];case\"D\":return String(this.getDate());case\"DD\":return`0${this.getDate()}`.slice(-2);case\"H\":return String(this.getHours());case\"HH\":return`0${this.getHours()}`.slice(-2);case\"h\":return String(this.getHours()%12||12);case\"hh\":return`0${this.getHours()%12||12}`.slice(-2);case\"m\":return String(this.getMinutes());case\"mm\":return`0${this.getMinutes()}`.slice(-2);case\"s\":return String(this.getSeconds());case\"ss\":return`0${this.getSeconds()}`.slice(-2);case\"a\":return this.getHours()<12||24===this.getHours()?\"am\":\"pm\";case\"A\":return this.getHours()<12||24===this.getHours()?\"AM\":\"PM\";default:return\"\"}}}export{t as DateTime};\n","import{DateTime as t}from\"@easepick/datetime\";import{BasePlugin as i}from\"@easepick/base-plugin\";class s extends i{priority=1;binds={onView:this.onView.bind(this)};options={minDate:null,maxDate:null,minDays:null,maxDays:null,selectForward:null,selectBackward:null,presets:!0,inseparable:!1,filter:null};getName(){return\"LockPlugin\"}onAttach(){if(this.options.minDate&&(this.options.minDate=new t(this.options.minDate,this.picker.options.format,this.picker.options.lang)),this.options.maxDate&&(this.options.maxDate=new t(this.options.maxDate,this.picker.options.format,this.picker.options.lang),this.options.maxDate instanceof t&&this.picker.options.calendars>1&&this.picker.calendars[0].isSame(this.options.maxDate,\"month\"))){const t=this.picker.calendars[0].clone().subtract(1,\"month\");this.picker.gotoDate(t)}if((this.options.minDays||this.options.maxDays||this.options.selectForward||this.options.selectBackward)&&!this.picker.options.plugins.includes(\"RangePlugin\")){const t=[\"minDays\",\"maxDays\",\"selectForward\",\"selectBackward\"];console.warn(`${this.getName()}: options ${t.join(\", \")} required RangePlugin.`)}this.picker.on(\"view\",this.binds.onView)}onDetach(){this.picker.off(\"view\",this.binds.onView)}onView(i){const{view:s,target:e,date:a}=i.detail;if(\"CalendarHeader\"===s&&(this.options.minDate instanceof t&&a.isSameOrBefore(this.options.minDate,\"month\")&&e.classList.add(\"no-previous-month\"),this.options.maxDate instanceof t&&a.isSameOrAfter(this.options.maxDate,\"month\")&&e.classList.add(\"no-next-month\")),\"CalendarDay\"===s){const t=this.picker.datePicked.length?this.picker.datePicked[0]:null;if(this.testFilter(a))return void e.classList.add(\"locked\");if(this.options.inseparable){if(this.options.minDays){const t=a.clone().subtract(this.options.minDays-1,\"day\"),i=a.clone().add(this.options.minDays-1,\"day\");let s=!1,o=!1;for(;t.isBefore(a,\"day\");){if(this.testFilter(t)){s=!0;break}t.add(1,\"day\")}for(;i.isAfter(a,\"day\");){if(this.testFilter(i)){o=!0;break}i.subtract(1,\"day\")}s&&o&&e.classList.add(\"not-available\")}this.rangeIsNotAvailable(a,t)&&e.classList.add(\"not-available\")}this.dateIsNotAvailable(a,t)&&e.classList.add(\"not-available\")}if(this.options.presets&&\"PresetPluginButton\"===s){const i=new t(Number(e.dataset.start)),s=new t(Number(e.dataset.end)),a=s.diff(i,\"day\"),o=this.options.minDays&&athis.options.maxDays;(o||n||this.lockMinDate(i)||this.lockMaxDate(i)||this.lockMinDate(s)||this.lockMaxDate(s)||this.rangeIsNotAvailable(i,s))&&e.setAttribute(\"disabled\",\"disabled\")}}dateIsNotAvailable(t,i){return this.lockMinDate(t)||this.lockMaxDate(t)||this.lockMinDays(t,i)||this.lockMaxDays(t,i)||this.lockSelectForward(t)||this.lockSelectBackward(t)}rangeIsNotAvailable(t,i){if(!t||!i)return!1;const s=(t.isSameOrBefore(i,\"day\")?t:i).clone(),e=(i.isSameOrAfter(t,\"day\")?i:t).clone();for(;s.isSameOrBefore(e,\"day\");){if(this.testFilter(s))return!0;s.add(1,\"day\")}return!1}lockMinDate(i){return this.options.minDate instanceof t&&i.isBefore(this.options.minDate,\"day\")}lockMaxDate(i){return this.options.maxDate instanceof t&&i.isAfter(this.options.maxDate,\"day\")}lockMinDays(t,i){if(this.options.minDays&&i){const s=i.clone().subtract(this.options.minDays-1,\"day\"),e=i.clone().add(this.options.minDays-1,\"day\");return t.isBetween(s,e)}return!1}lockMaxDays(t,i){if(this.options.maxDays&&i){const s=i.clone().subtract(this.options.maxDays,\"day\"),e=i.clone().add(this.options.maxDays,\"day\");return!t.isBetween(s,e)}return!1}lockSelectForward(t){if(1===this.picker.datePicked.length&&this.options.selectForward){const i=this.picker.datePicked[0].clone();return t.isBefore(i,\"day\")}return!1}lockSelectBackward(t){if(1===this.picker.datePicked.length&&this.options.selectBackward){const i=this.picker.datePicked[0].clone();return t.isAfter(i,\"day\")}return!1}testFilter(t){return\"function\"==typeof this.options.filter&&this.options.filter(t,this.picker.datePicked)}}export{s as LockPlugin};\n","import{DateTime as t}from\"@easepick/datetime\";import{BasePlugin as e}from\"@easepick/base-plugin\";class i extends e{options={native:!1,seconds:!1,stepHours:1,stepMinutes:5,stepSeconds:5,format12:!1};rangePlugin;timePicked={input:null,start:null,end:null};timePrePicked={input:null,start:null,end:null};binds={getDate:this.getDate.bind(this),getStartDate:this.getStartDate.bind(this),getEndDate:this.getEndDate.bind(this),onView:this.onView.bind(this),onInput:this.onInput.bind(this),onChange:this.onChange.bind(this),onClick:this.onClick.bind(this),setTime:this.setTime.bind(this),setStartTime:this.setStartTime.bind(this),setEndTime:this.setEndTime.bind(this)};getName(){return\"TimePlugin\"}onAttach(){this.binds._getDate=this.picker.getDate,this.binds._getStartDate=this.picker.getStartDate,this.binds._getEndDate=this.picker.getEndDate,Object.defineProperties(this.picker,{getDate:{configurable:!0,value:this.binds.getDate},getStartDate:{configurable:!0,value:this.binds.getStartDate},getEndDate:{configurable:!0,value:this.binds.getEndDate},setTime:{configurable:!0,value:this.binds.setTime},setStartTime:{configurable:!0,value:this.binds.setStartTime},setEndTime:{configurable:!0,value:this.binds.setEndTime}}),this.rangePlugin=this.picker.PluginManager.getInstance(\"RangePlugin\"),this.parseValues(),this.picker.on(\"view\",this.binds.onView),this.picker.on(\"input\",this.binds.onInput),this.picker.on(\"change\",this.binds.onChange),this.picker.on(\"click\",this.binds.onClick)}onDetach(){delete this.picker.setTime,delete this.picker.setStartTime,delete this.picker.setEndTime,Object.defineProperties(this.picker,{getDate:{configurable:!0,value:this.binds._getDate},getStartDate:{configurable:!0,value:this.binds._getStartDate},getEndDate:{configurable:!0,value:this.binds._getEndDate}}),this.picker.off(\"view\",this.binds.onView),this.picker.off(\"input\",this.binds.onInput),this.picker.off(\"change\",this.binds.onChange),this.picker.off(\"click\",this.binds.onClick)}onView(t){const{view:e,target:i}=t.detail;if(\"Main\"===e){this.rangePlugin=this.picker.PluginManager.getInstance(\"RangePlugin\");const t=document.createElement(\"div\");if(t.className=\"time-plugin-container\",this.rangePlugin){const e=this.getStartInput();t.appendChild(e),this.picker.trigger(\"view\",{view:\"TimePluginInput\",target:e});const i=this.getEndInput();t.appendChild(i),this.picker.trigger(\"view\",{view:\"TimePluginInput\",target:i})}else{const e=this.getSingleInput();t.appendChild(e),this.picker.trigger(\"view\",{view:\"TimePluginInput\",target:e})}i.appendChild(t),this.picker.trigger(\"view\",{view:\"TimePluginContainer\",target:t})}}onInput(e){const i=e.target;if(i instanceof HTMLInputElement&&i.classList.contains(\"time-plugin-input\")){const e=this.timePicked[i.name]||new t,[n,s]=i.value.split(\":\");e.setHours(Number(n)||0,Number(s)||0,0,0),this.picker.options.autoApply?(this.timePicked[i.name]=e,this.picker.updateValues()):this.timePrePicked[i.name]=e}}onChange(e){const i=e.target;if(i instanceof HTMLSelectElement&&i.classList.contains(\"time-plugin-custom-input\")){const e=/(\\w+)\\[(\\w+)\\]/,[,n,s]=i.name.match(e),o=Number(i.value);let a=new t;switch(!this.picker.options.autoApply&&this.timePrePicked[n]instanceof Date?a=this.timePrePicked[n].clone():this.timePicked[n]instanceof Date&&(a=this.timePicked[n].clone()),s){case\"HH\":if(this.options.format12){const t=i.closest(\".time-plugin-custom-block\").querySelector(`select[name=\"${n}[period]\"]`).value,e=this.handleFormat12(t,a,o);a.setHours(e.getHours(),e.getMinutes(),e.getSeconds(),0)}else a.setHours(o,a.getMinutes(),a.getSeconds(),0);break;case\"mm\":a.setHours(a.getHours(),o,a.getSeconds(),0);break;case\"ss\":a.setHours(a.getHours(),a.getMinutes(),o,0);break;case\"period\":if(this.options.format12){const t=i.closest(\".time-plugin-custom-block\").querySelector(`select[name=\"${n}[HH]\"]`).value,e=this.handleFormat12(i.value,a,Number(t));a.setHours(e.getHours(),e.getMinutes(),e.getSeconds(),0)}}if(this.picker.options.autoApply)this.timePicked[n]=a,this.picker.updateValues();else{this.timePrePicked[n]=a;const t=this.picker.ui.container.querySelector(\".apply-button\");if(this.rangePlugin){const e=this.rangePlugin.options,i=this.picker.datePicked,n=e.strict&&2===i.length||!e.strict&&i.length>0||!i.length&&e.strict&&e.startDate instanceof Date&&e.endDate instanceof Date||!i.length&&!e.strict&&(e.startDate instanceof Date||e.endDate instanceof Date);t.disabled=!n}else this.picker.datePicked.length&&(t.disabled=!1)}}}onClick(t){const e=t.target;if(e instanceof HTMLElement){const t=e.closest(\".unit\");if(!(t instanceof HTMLElement))return;this.picker.isApplyButton(t)&&(Object.keys(this.timePicked).forEach((t=>{this.timePrePicked[t]instanceof Date&&(this.timePicked[t]=this.timePrePicked[t].clone())})),this.picker.updateValues(),this.timePrePicked={input:null,start:null,end:null}),this.picker.isCancelButton(t)&&(this.timePrePicked={input:null,start:null,end:null},this.picker.renderAll())}}setTime(t){const e=this.handleTimeString(t);this.timePicked.input=e.clone(),this.picker.renderAll(),this.picker.updateValues()}setStartTime(t){const e=this.handleTimeString(t);this.timePicked.start=e.clone(),this.picker.renderAll(),this.picker.updateValues()}setEndTime(t){const e=this.handleTimeString(t);this.timePicked.end=e.clone(),this.picker.renderAll(),this.picker.updateValues()}handleTimeString(e){const i=new t,[n,s,o]=e.split(\":\").map((t=>Number(t))),a=n&&!Number.isNaN(n)?n:0,c=s&&!Number.isNaN(s)?s:0,r=o&&!Number.isNaN(o)?o:0;return i.setHours(a,c,r,0),i}getDate(){if(this.picker.options.date instanceof Date){const e=new t(this.picker.options.date,this.picker.options.format);if(this.timePicked.input instanceof Date){const t=this.timePicked.input;e.setHours(t.getHours(),t.getMinutes(),t.getSeconds(),0)}return e}return null}getStartDate(){if(this.rangePlugin.options.startDate instanceof Date){const e=new t(this.rangePlugin.options.startDate,this.picker.options.format);if(this.timePicked.start instanceof Date){const t=this.timePicked.start;e.setHours(t.getHours(),t.getMinutes(),t.getSeconds(),0)}return e}return null}getEndDate(){if(this.rangePlugin.options.endDate instanceof Date){const e=new t(this.rangePlugin.options.endDate,this.picker.options.format);if(this.timePicked.end instanceof Date){const t=this.timePicked.end;e.setHours(t.getHours(),t.getMinutes(),t.getSeconds(),0)}return e}return null}getSingleInput(){return this.options.native?this.getNativeInput(\"input\"):this.getCustomInput(\"input\")}getStartInput(){return this.options.native?this.getNativeInput(\"start\"):this.getCustomInput(\"start\")}getEndInput(){return this.options.native?this.getNativeInput(\"end\"):this.getCustomInput(\"end\")}getNativeInput(t){const e=document.createElement(\"input\");e.type=\"time\",e.name=t,e.className=\"time-plugin-input unit\";const i=this.timePicked[t];if(i){const t=`0${i.getHours()}`.slice(-2),n=`0${i.getMinutes()}`.slice(-2);e.value=`${t}:${n}`}return e}getCustomInput(t){const e=document.createElement(\"div\");e.className=\"time-plugin-custom-block\";const i=document.createElement(\"select\");i.className=\"time-plugin-custom-input unit\",i.name=`${t}[HH]`;const n=this.options.format12?1:0,s=this.options.format12?13:24;let o=null;!this.picker.options.autoApply&&this.timePrePicked[t]instanceof Date?o=this.timePrePicked[t].clone():this.timePicked[t]instanceof Date&&(o=this.timePicked[t].clone());for(let t=n;t{const e=document.createElement(\"option\");e.value=t,e.text=t,o&&\"PM\"===t&&o.getHours()>=12&&(e.selected=!0),i.appendChild(e)})),e.appendChild(i)}return e}handleFormat12(t,e,i){const n=e.clone();switch(t){case\"AM\":12===i?n.setHours(0,n.getMinutes(),n.getSeconds(),0):n.setHours(i,n.getMinutes(),n.getSeconds(),0);break;case\"PM\":12!==i?n.setHours(i+12,n.getMinutes(),n.getSeconds(),0):n.setHours(i,n.getMinutes(),n.getSeconds(),0)}return n}parseValues(){if(this.rangePlugin){if(this.rangePlugin.options.strict){if(this.rangePlugin.options.startDate&&this.rangePlugin.options.endDate){const e=new t(this.rangePlugin.options.startDate,this.picker.options.format),i=new t(this.rangePlugin.options.endDate,this.picker.options.format);this.timePicked.start=e.clone(),this.timePicked.end=i.clone()}}else{if(this.rangePlugin.options.startDate){const e=new t(this.rangePlugin.options.startDate,this.picker.options.format);this.timePicked.start=e.clone()}if(this.rangePlugin.options.endDate){const e=new t(this.rangePlugin.options.endDate,this.picker.options.format);this.timePicked.end=e.clone()}}if(this.rangePlugin.options.elementEnd)if(this.rangePlugin.options.strict){if(this.picker.options.element instanceof HTMLInputElement&&this.picker.options.element.value.length&&this.rangePlugin.options.elementEnd instanceof HTMLInputElement&&this.rangePlugin.options.elementEnd.value.length){const e=new t(this.picker.options.element.value,this.picker.options.format),i=new t(this.rangePlugin.options.elementEnd.value,this.picker.options.format);this.timePicked.start=e.clone(),this.timePicked.end=i.clone()}}else{if(this.picker.options.element instanceof HTMLInputElement&&this.picker.options.element.value.length){const e=new t(this.picker.options.element.value,this.picker.options.format);this.timePicked.start=e.clone()}if(this.rangePlugin.options.elementEnd instanceof HTMLInputElement&&this.rangePlugin.options.elementEnd.value.length){const e=new t(this.rangePlugin.options.elementEnd.value,this.picker.options.format);this.timePicked.start=e.clone()}}else if(this.picker.options.element instanceof HTMLInputElement&&this.picker.options.element.value.length){const[e,i]=this.picker.options.element.value.split(this.rangePlugin.options.delimiter);if(this.rangePlugin.options.strict){if(e&&i){const n=new t(e,this.picker.options.format),s=new t(i,this.picker.options.format);this.timePicked.start=n.clone(),this.timePicked.end=s.clone()}}else{if(e){const i=new t(e,this.picker.options.format);this.timePicked.start=i.clone()}if(i){const e=new t(i,this.picker.options.format);this.timePicked.start=e.clone()}}}}else{if(this.picker.options.date){const e=new t(this.picker.options.date,this.picker.options.format);this.timePicked.input=e.clone()}if(this.picker.options.element instanceof HTMLInputElement&&this.picker.options.element.value.length){const e=new t(this.picker.options.element.value,this.picker.options.format);this.timePicked.input=e.clone()}}}}export{i as TimePlugin};\n","export function linearTween(\n\ttimeElapsed: number,\n\tstart: number,\n\tdistance: number,\n\tduration: number\n) {\n\treturn (distance * timeElapsed) / duration + start;\n}\n","import { Component } from '@opten/compiler/metadata/component';\nimport { Collapse } from './initializer';\n\n@Component({ className: 'js-collapse' })\nexport class CollapseComponent {\n\tcollapse: Collapse;\n\tconstructor(private element: HTMLElement) {\n\t\tthis.collapse = new Collapse(element, {});\n\t}\n}\n","import { addClass } from '@opten/dom/add-class';\nimport { hasClass } from '@opten/dom/has-class';\nimport { removeClass } from '@opten/dom/remove-class';\n\nimport { getSelectorElementFromElement } from '@opten/dom/get-selector-element-from-element';\nimport { addTransitionEndListener } from '@opten/transition/add-transition-end-listener';\n\nimport { eventNamespaceFactory } from '@opten/events/event-namespace-factory';\n\nconst stringCollapse = 'Collapse';\n\nexport interface CollapseOptions {\n\tcomponentClass?: string;\n\tactiveClass?: string;\n\tactiveParentClass?: string;\n\tshowClass?: string;\n\tshowClassDesktop?: string;\n\tdesktopWidth?: number;\n\tcollapsingClass?: string;\n\tparentElement?: HTMLElement;\n\ttransitionDuration?: number;\n\tanimateProp?: 'height' | 'width' | false;\n\tisHideable?: boolean;\n\tcloseSiblings?: boolean;\n\tuseShowClassDesktop?: boolean;\n\tdataParentSelector?: string;\n\tdataTargetSelector?: string;\n\tdataToggleSelector?: string;\n\threfSelector?: string;\n}\n\nexport class Collapse {\n\t// TODO: Uggly naming\n\tget toggles(): HTMLElement[] {\n\t\treturn this.triggers;\n\t}\n\n\tconstructor(public element: HTMLElement, options?: CollapseOptions) {\n\t\tthis.options = {\n\t\t\t...this.options,\n\t\t\t...options,\n\t\t};\n\n\t\tif (!this.options.parentElement) {\n\t\t\tthis.options.parentElement = getSelectorElementFromElement(\n\t\t\t\telement,\n\t\t\t\tthis.options.dataParentSelector,\n\t\t\t\tfalse\n\t\t\t);\n\t\t}\n\n\t\tthis.init();\n\t}\n\tprivate options: CollapseOptions = {\n\t\tactiveClass: 'is-active',\n\t\tactiveParentClass: 'is-active',\n\t\tanimateProp: 'height',\n\t\tcollapsingClass: 'collapse--collapsing',\n\t\tcomponentClass: 'collapse',\n\t\tshowClass: 'collapse--show',\n\t\tshowClassDesktop: 'collapse--md-show',\n\t\tdesktopWidth: 1024,\n\t\ttransitionDuration: 600,\n\t\tisHideable: true,\n\t\tcloseSiblings: true,\n\t\tuseShowClassDesktop: false,\n\t\tdataParentSelector: 'data-parent',\n\t\tdataTargetSelector: 'data-target',\n\t\tdataToggleSelector: 'data-toggle',\n\t\threfSelector: 'href',\n\t};\n\n\tprivate parent: HTMLElement;\n\tprivate triggers: HTMLElement[];\n\n\tprivate target: Element;\n\tprivate isTransitioning = false; // when true it will prevent click handlers\n\n\t// event names\n\tprivate eventNamespaceFn = eventNamespaceFactory('opten.collapse');\n\n\tstatic getInstance(\n\t\telement: HTMLElement,\n\t\toptions?: CollapseOptions,\n\t\tcreate = true\n\t) {\n\t\tlet data = element[stringCollapse] as Collapse;\n\n\t\tif (!data && create) {\n\t\t\tdata = new Collapse(element, options);\n\t\t}\n\n\t\treturn data;\n\t}\n\n\tisOpen(): boolean {\n\t\tif (\n\t\t\tthis.options.useShowClassDesktop &&\n\t\t\twindow.outerWidth >= this.options.desktopWidth &&\n\t\t\thasClass(this.element, this.options.showClassDesktop)\n\t\t) {\n\t\t\taddClass(this.element, this.options.showClass);\n\t\t}\n\t\tremoveClass(this.element, this.options.showClassDesktop);\n\t\treturn hasClass(this.element, this.options.showClass);\n\t}\n\n\ttoggle() {\n\t\tif (this.isOpen()) {\n\t\t\tif (this.options.isHideable) {\n\t\t\t\tthis.hide();\n\t\t\t}\n\t\t} else {\n\t\t\tthis.show();\n\t\t}\n\t}\n\n\tshow() {\n\t\tif (this.isTransitioning || this.isOpen()) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.options.closeSiblings && this.parent) {\n\t\t\tconst selector = `[${this.options.dataParentSelector}=\"#${this.parent.id}\"]`;\n\t\t\tconst actives = Array.from(\n\t\t\t\tthis.parent.querySelectorAll(\n\t\t\t\t\t`${selector}.${this.options.showClass}, ${selector}.${this.options.collapsingClass}`\n\t\t\t\t)\n\t\t\t).filter((active) => active !== this.target);\n\n\t\t\tif (actives && actives.length) {\n\t\t\t\tconst anyTransitioning = actives.filter((active) => {\n\t\t\t\t\tconst collapseInstance = active[stringCollapse] as Collapse;\n\t\t\t\t\treturn collapseInstance && collapseInstance.isTransitioning;\n\t\t\t\t});\n\n\t\t\t\tif (anyTransitioning.length) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tactives.forEach((active) =>\n\t\t\t\t\tCollapse.getInstance(active as HTMLElement).hide()\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\tthis._handleShow(this.element, this.triggers);\n\t}\n\n\thide() {\n\t\tif (this.isTransitioning || !this.isOpen()) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._handleClose(this.element, this.triggers);\n\t}\n\n\tdestroy() {\n\t\tconst element = this.element;\n\n\t\tif (element[stringCollapse]) {\n\t\t\telement[stringCollapse] = null;\n\n\t\t\tremoveClass(element, this.options.componentClass);\n\t\t\tremoveClass(element, this.options.collapsingClass);\n\t\t\tremoveClass(element, this.options.showClass);\n\n\t\t\tif (this.options.animateProp) {\n\t\t\t\telement.style[this.options.animateProp] = null;\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate init() {\n\t\t// todo: only initalize once, like bootstrap does it?\n\t\tthis.triggers = Array.from(\n\t\t\tdocument.querySelectorAll(\n\t\t\t\t`[${this.options.hrefSelector}=\"#${this.element.id}\"], [${this.options.dataTargetSelector}=\"#${this.element.id}\"]`\n\t\t\t)\n\t\t);\n\n\t\t// todo: why do we need that?\n\t\tconst toggles = Array.from(\n\t\t\tdocument.querySelectorAll(\n\t\t\t\t`[${this.options.dataToggleSelector}=\"collapse\"]`\n\t\t\t)\n\t\t);\n\t\tfor (const toggle of toggles) {\n\t\t\tconst target = getSelectorElementFromElement(\n\t\t\t\ttoggle,\n\t\t\t\tthis.options.dataTargetSelector\n\t\t\t);\n\t\t\tif (target !== null && target === this.element) {\n\t\t\t\tthis.target = target;\n\t\t\t\tthis.triggers.push(toggle as HTMLElement);\n\t\t\t}\n\t\t}\n\n\t\tthis.parent = this.options.parentElement;\n\n\t\t// init\n\t\tif (!(stringCollapse in this.element)) {\n\t\t\t// prevent adding event handlers twice\n\t\t\tthis.triggers.forEach((trigger) =>\n\t\t\t\ttrigger.addEventListener('click', this.handleClick, false)\n\t\t\t);\n\t\t}\n\n\t\tif (this.parent) {\n\t\t\tArray.from(\n\t\t\t\tthis.parent.querySelectorAll(\n\t\t\t\t\t`[${this.options.dataToggleSelector}=\"collapse\"][${this.options.dataParentSelector}=\"#${this.parent.id}\"]`\n\t\t\t\t)\n\t\t\t).forEach((element) => {\n\t\t\t\tthis._addAriaAndCollapsedClass(\n\t\t\t\t\tgetSelectorElementFromElement(\n\t\t\t\t\t\telement,\n\t\t\t\t\t\tthis.options.dataTargetSelector\n\t\t\t\t\t),\n\t\t\t\t\t[element]\n\t\t\t\t);\n\t\t\t});\n\t\t} else {\n\t\t\tthis._addAriaAndCollapsedClass(this.element, this.triggers);\n\t\t}\n\n\t\taddClass(this.element, this.options.componentClass);\n\n\t\tthis.element[stringCollapse] = this;\n\t}\n\n\tprivate handleClick = (event: Event) => {\n\t\t// preventDefault only for elements (which change the URL) not inside the collapsible element\n\t\tconst trigger = event && (event.currentTarget as HTMLElement);\n\t\tif (trigger && trigger.tagName === 'A') {\n\t\t\tevent.preventDefault();\n\t\t}\n\n\t\tconst target = getSelectorElementFromElement(\n\t\t\ttrigger,\n\t\t\tthis.options.dataTargetSelector\n\t\t);\n\t\tlet data = target[stringCollapse] as Collapse;\n\n\t\tif (!data) {\n\t\t\tdata = trigger[stringCollapse] as Collapse;\n\t\t}\n\n\t\tif (target) {\n\t\t\tCollapse.getInstance(target, data.options).toggle();\n\t\t}\n\t};\n\n\tprivate _handleShow(collapseElement: HTMLElement, triggers?: Element[]) {\n\t\tthis.eventNamespaceFn(collapseElement, 'show');\n\n\t\tremoveClass(collapseElement, this.options.componentClass);\n\t\taddClass(collapseElement, this.options.collapsingClass);\n\t\tif (this.options.animateProp) {\n\t\t\tcollapseElement.style[this.options.animateProp] =\n\t\t\t\tcollapseElement.scrollHeight + 'px';\n\t\t}\n\n\t\tif (triggers && triggers.length) {\n\t\t\ttriggers.forEach((trigger) => {\n\t\t\t\taddClass(trigger, this.options.activeClass);\n\t\t\t\ttrigger.setAttribute('aria-expanded', 'true');\n\t\t\t});\n\t\t}\n\n\t\tif (this.parent) {\n\t\t\taddClass(this.parent, this.options.activeClass);\n\t\t}\n\n\t\tthis.isTransitioning = true;\n\n\t\taddTransitionEndListener(\n\t\t\tcollapseElement,\n\t\t\t() => {\n\t\t\t\tremoveClass(collapseElement, this.options.collapsingClass);\n\t\t\t\taddClass(collapseElement, this.options.componentClass);\n\t\t\t\taddClass(collapseElement, this.options.showClass);\n\n\t\t\t\tthis.isTransitioning = false;\n\t\t\t\tif (this.options.animateProp) {\n\t\t\t\t\tcollapseElement.style[this.options.animateProp] = null;\n\t\t\t\t}\n\n\t\t\t\tthis.eventNamespaceFn(collapseElement, 'shown');\n\t\t\t},\n\t\t\tthis.options.transitionDuration\n\t\t);\n\t}\n\n\tprivate _handleClose(collapseElement: HTMLElement, triggers?: Element[]) {\n\t\tthis.eventNamespaceFn(collapseElement, 'hide');\n\n\t\tif (this.options.animateProp) {\n\t\t\tcollapseElement.style[this.options.animateProp] =\n\t\t\t\tcollapseElement.scrollHeight + 'px';\n\t\t}\n\n\t\taddClass(collapseElement, this.options.collapsingClass);\n\t\tremoveClass(collapseElement, this.options.componentClass);\n\t\tremoveClass(collapseElement, this.options.showClass);\n\t\t// force reflow to enable transition\n\t\tcollapseElement.offsetWidth; // tslint:disable-line\n\n\t\tif (triggers && triggers.length) {\n\t\t\ttriggers.forEach((trigger) => {\n\t\t\t\tconst target = getSelectorElementFromElement(\n\t\t\t\t\ttrigger,\n\t\t\t\t\tthis.options.dataTargetSelector\n\t\t\t\t);\n\n\t\t\t\tif (target !== null) {\n\t\t\t\t\tif (!hasClass(target, this.options.showClass)) {\n\t\t\t\t\t\tremoveClass(trigger, this.options.activeClass);\n\t\t\t\t\t\ttrigger.setAttribute('aria-expanded', 'false');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tif (this.parent) {\n\t\t\tconst selector = `[${this.options.dataParentSelector}=\"#${this.parent.id}\"]`;\n\t\t\tconst actives = Array.from(\n\t\t\t\tthis.parent.querySelectorAll(\n\t\t\t\t\t`${selector}.${this.options.showClass}, ${selector}.${this.options.collapsingClass}`\n\t\t\t\t)\n\t\t\t).filter((o) => o !== collapseElement);\n\n\t\t\tif (this.parent && actives.length === 0) {\n\t\t\t\tremoveClass(this.parent, this.options.activeParentClass);\n\t\t\t}\n\t\t}\n\n\t\tthis.isTransitioning = true;\n\t\tif (this.options.animateProp) {\n\t\t\tcollapseElement.style[this.options.animateProp] = null;\n\t\t}\n\n\t\taddTransitionEndListener(\n\t\t\tcollapseElement,\n\t\t\t() => {\n\t\t\t\tthis.isTransitioning = false;\n\n\t\t\t\tremoveClass(collapseElement, this.options.collapsingClass);\n\t\t\t\taddClass(collapseElement, this.options.componentClass);\n\n\t\t\t\tif (this.options.animateProp) {\n\t\t\t\t\tcollapseElement.style[this.options.animateProp] = null;\n\t\t\t\t}\n\n\t\t\t\tthis.eventNamespaceFn(collapseElement, 'hidden');\n\t\t\t},\n\t\t\tthis.options.transitionDuration\n\t\t);\n\t}\n\n\tprivate _addAriaAndCollapsedClass(element: Element, triggers: Element[]) {\n\t\tif (element) {\n\t\t\tconst isOpen = hasClass(element, this.options.showClass);\n\n\t\t\tif (triggers && triggers.length) {\n\t\t\t\ttriggers.forEach((trigger) => {\n\t\t\t\t\tisOpen\n\t\t\t\t\t\t? addClass(trigger, this.options.activeClass)\n\t\t\t\t\t\t: removeClass(trigger, this.options.activeClass);\n\n\t\t\t\t\ttrigger.setAttribute(\n\t\t\t\t\t\t'aria-expanded',\n\t\t\t\t\t\tisOpen.toString().toLowerCase()\n\t\t\t\t\t);\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n}\n\nexport function collapse(\n\telement: HTMLElement,\n\toptions?: CollapseOptions\n): Collapse {\n\tconsole.error(\n\t\t'collapse deprecated: use new Collapse(element, options) instead. (initialized elements can be accessed via Collapse.getInstance()'\n\t);\n\tlet data = element[stringCollapse] as Collapse;\n\n\tif (!data) {\n\t\tdata = new Collapse(element, options);\n\t}\n\n\treturn data;\n}\n","import { asHTMLElement } from '@opten/dom/as-html-element';\nimport { hasClass } from '@opten/dom/has-class';\nimport { isHTMLElement } from '@opten/dom/is-html-element';\n\nimport { Compiler } from '../';\nimport { Component } from '../metadata/component';\nimport { Reflector } from '../reflector';\nimport { Resolver } from '../resolver';\n\n// todo: cache, static, inject?\nconst reflector = new Reflector();\nconst resolver = new Resolver(reflector);\nconst compiler = new Compiler(resolver);\n\nexport function factory(components: any[]) {\n\treturn (rootElement: HTMLElement) => {\n\t\tconst observables = new Map();\n\t\tcomponents.forEach((componentType) => {\n\t\t\t// todo: inject resolver, or cache?\n\t\t\t// todo: static or something to cache?\n\t\t\tconst component = resolver.resolve(componentType);\n\n\t\t\tif (component) {\n\t\t\t\tconst safeRootElement =\n\t\t\t\t\trootElement === document.body ? document : rootElement;\n\t\t\t\tArray.from(\n\t\t\t\t\tsafeRootElement.getElementsByClassName(component.className)\n\t\t\t\t).forEach((node) =>\n\t\t\t\t\tcompiler.compile(component, node as HTMLElement, componentType)\n\t\t\t\t);\n\n\t\t\t\tif (component.observe) {\n\t\t\t\t\tobservables.set(component, componentType);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`No @Component annotation for ${\n\t\t\t\t\t\tcomponentType ? componentType.name : componentType\n\t\t\t\t\t} found!`\n\t\t\t\t);\n\t\t\t}\n\t\t});\n\n\t\tif (observables.size) {\n\t\t\tnew MutationObserver((mutations) => {\n\t\t\t\tconst componentInitializer = new Map void>();\n\n\t\t\t\tmutations.forEach((mutation) => {\n\t\t\t\t\tobservables.forEach((value, key) =>\n\t\t\t\t\t\tArray.from(mutation.addedNodes)\n\t\t\t\t\t\t\t.filter((node) => isHTMLElement(node))\n\t\t\t\t\t\t\t.map((node) => asHTMLElement(node))\n\t\t\t\t\t\t\t.forEach((node) => {\n\t\t\t\t\t\t\t\tconst comps = Array.from(\n\t\t\t\t\t\t\t\t\tnode.getElementsByClassName(key.className)\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\tif (hasClass(node, key.className)) {\n\t\t\t\t\t\t\t\t\tcomps.push(node);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tcomps.forEach((component) => {\n\t\t\t\t\t\t\t\t\tcomponentInitializer.set(component as HTMLElement, () =>\n\t\t\t\t\t\t\t\t\t\tcompiler.compile(key, component as HTMLElement, value)\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t})\n\t\t\t\t\t);\n\t\t\t\t});\n\n\t\t\t\tcomponentInitializer.forEach((c) => c());\n\t\t\t}).observe(document.body, {\n\t\t\t\tchildList: true,\n\t\t\t\tsubtree: true,\n\t\t\t});\n\t\t}\n\t};\n}\n","import { Component } from './metadata/component';\nimport { Query } from './metadata/di';\nimport { OnInit } from './metadata/lifecycle';\nimport { Resolver } from './resolver';\nimport { isType } from './util/type';\n\n// todo: move whole project to @opten/initializer?\nexport class Compiler {\n\tprivate componentCache = new Map();\n\n\tconstructor(private resolver: Resolver) {}\n\n\tcompile(\n\t\tcomponent: Component,\n\t\tnode: HTMLElement,\n\t\tcomponentType: /*Type*/ any\n\t) {\n\t\t// todo: cache everything?\n\n\t\t// todo: cache that also?\n\t\tconst constructor = new componentType(node);\n\n\t\tif (this.componentCache.has(node)) {\n\t\t\tthis.componentCache.get(node).push(constructor);\n\t\t} else {\n\t\t\tthis.componentCache.set(node, [constructor]);\n\t\t}\n\n\t\tObject.keys(component.queries).forEach((propName) => {\n\t\t\tconst query: Query = component.queries[propName];\n\n\t\t\t// todo: why do we have to inject the resolver?\n\t\t\t// can we not get the class name by some other way?\n\t\t\tconst target = this.resolver.resolve(query.selector);\n\n\t\t\tif (target) {\n\t\t\t\tconst targetNode = query.descendants ? node : document;\n\t\t\t\tconst nodes = targetNode.getElementsByClassName(target.className);\n\n\t\t\t\tconst cache = Array.from(nodes)\n\t\t\t\t\t.filter((o) => (query.filter ? query.filter(o) : true))\n\t\t\t\t\t.map((e) => this.componentCache.get(e as HTMLElement))\n\t\t\t\t\t.filter((e) => e !== undefined && e !== null)\n\t\t\t\t\t.reduce((acc, val) => acc.concat(val), [])\n\t\t\t\t\t.filter((f) => f.constructor === query.selector);\n\n\t\t\t\tconstructor[propName] = query.first ? cache[0] : cache;\n\t\t\t}\n\t\t});\n\n\t\tif (isType(constructor.onInit)) {\n\t\t\t(constructor as OnInit).onInit();\n\t\t}\n\t}\n}\n","import { makeDecorator, TypeDecorator } from '../util/decorators';\nimport { makeMetadataFactory, MetadataFactory } from '../util/factories';\n\nexport interface ComponentDecorator {\n\t(obj: Component): TypeDecorator;\n\tnew (obj: Component): Component;\n}\n\nexport interface Component {\n\tclassName?: string;\n\tobserve?: boolean;\n\tqueries?: { [key: string]: any };\n}\n\n// tslint:disable-next-line:variable-name\nexport const Component: ComponentDecorator = makeDecorator(\n\t'Component',\n\t(c: Component = {}) => ({ ...c })\n);\n\nexport const createComponent: MetadataFactory = makeMetadataFactory<\n\tComponent\n>('Component', (c: Component = {}) => ({ ...c }));\n","import { ANNOTATIONS, PROP_METADATA } from '../util/decorators';\nimport { isType, Type } from '../util/type';\n\n// todo: @opten/reflector? or @opten/initializer/reflector?\nexport class Reflector {\n\tannotations(typeOrFunc: Type): any[] {\n\t\tif (!isType(typeOrFunc)) {\n\t\t\treturn [];\n\t\t}\n\t\tconst parentCtor = getParentCtor(typeOrFunc);\n\t\tconst ownAnnotations = this._ownAnnotations(typeOrFunc, parentCtor) || [];\n\t\tconst parentAnnotations =\n\t\t\tparentCtor !== Object ? this.annotations(parentCtor) : [];\n\t\treturn parentAnnotations.concat(ownAnnotations);\n\t}\n\n\tpropMetadata(typeOrFunc: any): { [key: string]: any[] } {\n\t\tif (!isType(typeOrFunc)) {\n\t\t\treturn {};\n\t\t}\n\t\tconst parentCtor = getParentCtor(typeOrFunc);\n\t\tconst propMetadata: { [key: string]: any[] } = {};\n\t\tif (parentCtor !== Object) {\n\t\t\tconst parentPropMetadata = this.propMetadata(parentCtor);\n\t\t\tObject.keys(parentPropMetadata).forEach((propName) => {\n\t\t\t\tpropMetadata[propName] = parentPropMetadata[propName];\n\t\t\t});\n\t\t}\n\t\tconst ownPropMetadata = this._ownPropMetadata(typeOrFunc, parentCtor);\n\t\tif (ownPropMetadata) {\n\t\t\tObject.keys(ownPropMetadata).forEach((propName) => {\n\t\t\t\tconst decorators: any[] = [];\n\t\t\t\tif (propMetadata.hasOwnProperty(propName)) {\n\t\t\t\t\tdecorators.push(...propMetadata[propName]);\n\t\t\t\t}\n\t\t\t\tdecorators.push(...ownPropMetadata[propName]);\n\t\t\t\tpropMetadata[propName] = decorators;\n\t\t\t});\n\t\t}\n\t\treturn propMetadata;\n\t}\n\n\tprivate _ownAnnotations(\n\t\ttypeOrFunc: Type,\n\t\tparentCtor: any\n\t): any[] | null {\n\t\t// API for metadata created by invoking the decorators.\n\t\tif (typeOrFunc.hasOwnProperty(ANNOTATIONS)) {\n\t\t\treturn (typeOrFunc as any)[ANNOTATIONS];\n\t\t}\n\t\treturn null;\n\t}\n\n\tprivate _ownPropMetadata(\n\t\ttypeOrFunc: any,\n\t\tparentCtor: any\n\t): { [key: string]: any[] } | null {\n\t\t// API for metadata created by invoking the decorators.\n\t\tif (typeOrFunc.hasOwnProperty(PROP_METADATA)) {\n\t\t\treturn (typeOrFunc as any)[PROP_METADATA];\n\t\t}\n\t\treturn null;\n\t}\n}\n\nfunction getParentCtor(ctor: Type): Type {\n\tconst parentProto = Object.getPrototypeOf(ctor.prototype);\n\tconst parentCtor = parentProto ? parentProto.constructor : null;\n\t// Note: We always use `Object` as the null value\n\t// to simplify checking later on.\n\treturn parentCtor || Object;\n}\n","import { Component, createComponent } from '../metadata/component';\nimport { Query } from '../metadata/di';\nimport { Reflector } from '../reflector';\n\nconst QUERY_METADATA_IDENTIFIERS = [\n\t'ComponentRef',\n\t'ComponentRefs',\n\t'ChildRef',\n\t'ChildrenRef',\n];\n\n// todo: @opten/resolver? or @opten/initializer/resolver?\nexport class Resolver {\n\tconstructor(private reflector: Reflector) {}\n\n\t// propertyCache = new Map();\n\n\tresolve(type: any /*Type*/): Component | null {\n\t\tconst typeMetadata = this.reflector.annotations(type);\n\n\t\tif (typeMetadata) {\n\t\t\tconst metadata = findLast(\n\t\t\t\ttypeMetadata,\n\t\t\t\t(c) => c && c.metadataName === 'Component'\n\t\t\t);\n\n\t\t\tif (metadata) {\n\t\t\t\tconst propertyMetadata = this.reflector.propMetadata(type);\n\n\t\t\t\treturn this._mergeWithPropertyMetadata(\n\t\t\t\t\tmetadata,\n\t\t\t\t\tpropertyMetadata,\n\t\t\t\t\ttype\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tprivate _mergeWithPropertyMetadata(\n\t\tcomponent: Component,\n\t\tpropertyMetadata: { [key: string]: any[] },\n\t\tcomponentType: /*Type*/ any\n\t): Component {\n\t\tconst queries: { [key: string]: any } = {};\n\n\t\tObject.keys(propertyMetadata).forEach((propName: string) => {\n\t\t\tconst query = findLast(propertyMetadata[propName], (a) =>\n\t\t\t\tQUERY_METADATA_IDENTIFIERS.some((i) => i && i === a.metadataName)\n\t\t\t);\n\n\t\t\tif (query) {\n\t\t\t\tqueries[propName] = query;\n\t\t\t}\n\t\t});\n\n\t\treturn this._merge(component, queries, componentType);\n\t}\n\n\tprivate _merge(\n\t\tcomponent: Component,\n\t\tqueries: { [key: string]: any },\n\t\tcomponentType: /*Type*/ any\n\t): Component {\n\t\tconst mergedQueries = component.queries\n\t\t\t? { ...component.queries, ...queries }\n\t\t\t: queries;\n\n\t\treturn createComponent({\n\t\t\tclassName: component.className,\n\t\t\tobserve: component.observe,\n\t\t\tqueries: mergedQueries,\n\t\t});\n\t}\n\n\tprivate _getQueriesMetadata(queries: { [key: string]: Query }): any[] {\n\t\tconst res: any[] = [];\n\n\t\tObject.keys(queries).forEach((propertyName: string) => {\n\t\t\tconst query = queries[propertyName];\n\t\t\tres.push(this._getQueryMetadata(query, propertyName));\n\t\t});\n\n\t\treturn res;\n\t}\n\n\tprivate _getQueryMetadata(q: Query, propertyName: string): any {\n\t\treturn {\n\t\t\tdescendants: q.descendants,\n\t\t\tfirst: q.first,\n\t\t\tpropertyName,\n\t\t\tread: false,\n\t\t\tselector: q.selector,\n\t\t};\n\t}\n}\n\nfunction findLast(arr: T[], condition: (value: T) => boolean): T | null {\n\tfor (let i = arr.length - 1; i >= 0; i--) {\n\t\tif (condition(arr[i])) {\n\t\t\treturn arr[i];\n\t\t}\n\t}\n\treturn null;\n}\n","import { Type } from './type';\n\nexport const ANNOTATIONS = '__annotations__';\nexport const PROP_METADATA = '__prop__metadata__';\n\nexport interface TypeDecorator {\n\t// Invoke as ES7 decorator.\n\t>(type: T): T;\n\n\t// Make TypeDecorator assignable to built-in ParameterDecorator type.\n\t// ParameterDecorator is declared in lib.d.ts as a `declare type`\n\t// so we cannot declare this interface as a subtype.\n\t// see https://github.com/angular/angular/issues/3379#issuecomment-126169417\n\t(\n\t\ttarget: object,\n\t\tpropertyKey?: string | symbol,\n\t\tparameterIndex?: number\n\t): void;\n}\n\nexport function makeDecorator(\n\tname: string,\n\tprops?: (...args: any[]) => any,\n\tparentClass?: any,\n\tchainFn?: (fn: TypeDecorator) => void,\n\ttypeFn?: (type: Type, ...args: any[]) => void\n): {\n\tnew (...args: any[]): any;\n\t(...args: any[]): any;\n\t(...args: any[]): (cls: any) => any;\n} {\n\tconst metaCtor = makeMetadataCtor(props);\n\n\tfunction DecoratorFactory(...args: any[]): (cls: any) => any {\n\t\tif (this instanceof DecoratorFactory) {\n\t\t\tmetaCtor.call(this, ...args);\n\t\t\treturn this;\n\t\t}\n\n\t\tconst annotationInstance = new (DecoratorFactory as any)(...args);\n\t\tconst typeDecorator: TypeDecorator = (cls: Type) => {\n\t\t\tif (typeFn) {\n\t\t\t\ttypeFn(cls, ...args);\n\t\t\t}\n\t\t\t// Use of Object.defineProperty is important since it creates non-enumerable property which\n\t\t\t// prevents the property is copied during subclassing.\n\t\t\tconst annotations = cls.hasOwnProperty(ANNOTATIONS)\n\t\t\t\t? (cls as any)[ANNOTATIONS]\n\t\t\t\t: Object.defineProperty(cls, ANNOTATIONS, { value: [] })[ANNOTATIONS];\n\t\t\tannotations.push(annotationInstance);\n\t\t\treturn cls;\n\t\t};\n\t\tif (chainFn) {\n\t\t\tchainFn(typeDecorator);\n\t\t}\n\t\treturn typeDecorator;\n\t}\n\n\tif (parentClass) {\n\t\tDecoratorFactory.prototype = Object.create(parentClass.prototype);\n\t}\n\n\tDecoratorFactory.prototype.metadataName = name;\n\treturn DecoratorFactory as any;\n}\n\nfunction makeMetadataCtor(props?: (...args: any[]) => any): any {\n\treturn function ctor(...args: any[]) {\n\t\tif (props) {\n\t\t\tconst values = props(...args);\n\t\t\tfor (const propName in values) {\n\t\t\t\tif (values.hasOwnProperty(propName)) {\n\t\t\t\t\tthis[propName] = values[propName];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\nexport function makePropDecorator(\n\tname: string,\n\tprops?: (...args: any[]) => any,\n\tparentClass?: any\n): any {\n\tconst metaCtor = makeMetadataCtor(props);\n\n\tfunction PropDecoratorFactory(...args: any[]): any {\n\t\tif (this instanceof PropDecoratorFactory) {\n\t\t\tmetaCtor.apply(this, args);\n\t\t\treturn this;\n\t\t}\n\n\t\tconst decoratorInstance = new (PropDecoratorFactory as any)(...args);\n\n\t\treturn function PropDecorator(target: any, metaName: string) {\n\t\t\tconst constructor = target.constructor;\n\t\t\t// Use of Object.defineProperty is important since it creates non-enumerable property which\n\t\t\t// prevents the property is copied during subclassing.\n\t\t\tconst meta = constructor.hasOwnProperty(PROP_METADATA)\n\t\t\t\t? (constructor as any)[PROP_METADATA]\n\t\t\t\t: Object.defineProperty(constructor, PROP_METADATA, {\n\t\t\t\t\t\tvalue: {},\n\t\t\t\t })[PROP_METADATA];\n\t\t\tmeta[metaName] = (meta.hasOwnProperty(metaName) && meta[metaName]) || [];\n\t\t\tmeta[metaName].unshift(decoratorInstance);\n\t\t};\n\t}\n\n\tif (parentClass) {\n\t\tPropDecoratorFactory.prototype = Object.create(parentClass.prototype);\n\t}\n\n\tPropDecoratorFactory.prototype.metadataName = name;\n\treturn PropDecoratorFactory;\n}\n","export interface MetadataFactory {\n\t(...args: any[]): T;\n\tmetadataName: string;\n\tisTypeOf(obj: any): obj is T;\n}\n\nexport function makeMetadataFactory(\n\tname: string,\n\tprops?: (...args: any[]) => T\n): MetadataFactory {\n\tconst factory: any = (...args: any[]) => {\n\t\tconst values = props ? props(...args) : {};\n\t\treturn {\n\t\t\tmetadataName: name,\n\t\t\t...values,\n\t\t};\n\t};\n\tfactory.isTypeOf = (obj: any) => obj && obj.metadataName === name;\n\tfactory.metadataName = name;\n\treturn factory;\n}\n","// tslint:disable-next-line:variable-name\nexport const Type = Function;\n\nexport function isType(v: any): v is Type {\n\treturn typeof v === 'function';\n}\n\nexport type Type = new (...args: any[]) => T;\n","export function getCookie(key: string) {\n\tif (!key) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\tdecodeURIComponent(\n\t\t\tdocument.cookie.replace(\n\t\t\t\tnew RegExp(\n\t\t\t\t\t`(?:(?:^|.*;)\\\\s*${encodeURIComponent(key).replace(\n\t\t\t\t\t\t/[\\-\\.\\+\\*]/g,\n\t\t\t\t\t\t'\\\\$&'\n\t\t\t\t\t)}\\\\s*\\\\=\\\\s*([^;]*).*$)|^.*$`\n\t\t\t\t),\n\t\t\t\t'$1'\n\t\t\t)\n\t\t) || null\n\t);\n}\n","export function setCookie(\n\tkey: string,\n\tvalue: string,\n\tend: number | string | Date,\n\tpath = '/',\n\tdomain = '',\n\tsecure = false\n) {\n\tif (!key || /^(?:expires|max\\-age|path|domain|secure)$/i.test(key)) {\n\t\treturn false;\n\t}\n\tlet expires = '';\n\tif (end) {\n\t\tswitch (end.constructor) {\n\t\t\tcase Number:\n\t\t\t\texpires =\n\t\t\t\t\tend === Infinity\n\t\t\t\t\t\t? '; expires=Fri, 31 Dec 9999 23:59:59 GMT'\n\t\t\t\t\t\t: '; max-age=' + end;\n\t\t\t\tbreak;\n\t\t\tcase String:\n\t\t\t\texpires = `; expires=${end}`;\n\t\t\t\tbreak;\n\t\t\tcase Date:\n\t\t\t\texpires = `; expires=${(end as Date).toUTCString()}`;\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\texpires = '';\n\t\t}\n\t}\n\tconst keyStr = encodeURIComponent(key);\n\tconst valueStr = encodeURIComponent(value);\n\tconst domainStr = `${domain ? `; domain=${domain}` : ''}`;\n\tconst pathStr = `${path ? `; path=${path}` : ''}`;\n\tconst secureStr = `${secure ? '; secure' : ''}`;\n\tdocument.cookie = `${keyStr}=${valueStr}${expires}${domainStr}${pathStr}${secureStr}`;\n\n\treturn true;\n}\n","import { addClass } from '../add-class';\r\n\r\nexport function addClassFactory(className: string) {\r\n\treturn (element: Element) => addClass(element, className);\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('class', getClass(element).trim() + ' ' + className);\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(element: Element, className: string, add = true) {\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","export function getClass(element: Element) {\r\n\treturn element.getAttribute('class') || '';\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\t\tdocument.body.parentNode ||\r\n\t\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('class', getClass(element).replace(regex, ' ').trim());\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(\r\n\telements: Element[],\r\n\tclassName: string\r\n) {\r\n\telements.forEach(removeClassFactory(className));\r\n}\r\n","import { changeClass } from '../change-class';\r\nimport { hasClass } from '../has-class';\r\n\r\nexport function toggleClass(\r\n\telement: Element,\r\n\tclassName: string,\r\n\tstate?: boolean\r\n) {\r\n\tchangeClass(\r\n\t\telement,\r\n\t\tclassName,\r\n\t\tstate === undefined ? !hasClass(element, className) : state\r\n\t);\r\n}\r\n","export function dispatchCustomEvent(element: EventTarget, eventName: string) {\n\tconst event = new CustomEvent(eventName);\n\telement.dispatchEvent(event);\n}\n","export type IEventHandler = (args: TArgs) => void;\n\nclass Subscription {\n\tisExecuted = false;\n\n\tconstructor(public handler: IEventHandler, public isOnce: boolean) {}\n\n\texecute(args: TArgs) {\n\t\tif (!this.isOnce || !this.isExecuted) {\n\t\t\tthis.isExecuted = true;\n\t\t\tthis.handler(args);\n\t\t}\n\t}\n}\n\nexport class EventDispatcher {\n\tprivate subscriptions = new Array>();\n\n\tdispatch(args: TArgs): void {\n\t\tfor (const sub of [...this.subscriptions]) {\n\t\t\tsub.execute(args);\n\t\t\tthis.cleanup(sub);\n\t\t}\n\t}\n\n\tsubscribe(fn: IEventHandler) {\n\t\tif (fn) {\n\t\t\tthis.subscriptions.push(new Subscription(fn, false));\n\t\t}\n\t\treturn this;\n\t}\n\n\tone(fn: IEventHandler) {\n\t\tif (fn) {\n\t\t\tthis.subscriptions.push(new Subscription(fn, true));\n\t\t}\n\t\treturn this;\n\t}\n\n\thas(fn: IEventHandler): boolean {\n\t\tif (!fn) {\n\t\t\treturn false;\n\t\t}\n\t\treturn this.subscriptions.some((sub) => sub.handler === fn);\n\t}\n\n\tunsubscribe(fn: IEventHandler) {\n\t\tif (!fn) {\n\t\t\treturn;\n\t\t}\n\n\t\tfor (let i = 0; i < this.subscriptions.length; i++) {\n\t\t\tif (this.subscriptions[i].handler === fn) {\n\t\t\t\tthis.subscriptions.splice(i, 1);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t}\n\n\tclear(): void {\n\t\tthis.subscriptions.splice(0, this.subscriptions.length);\n\t}\n\n\tprivate cleanup(sub: Subscription) {\n\t\tif (sub.isOnce && sub.isExecuted) {\n\t\t\tconst i = this.subscriptions.indexOf(sub);\n\t\t\tif (i > -1) {\n\t\t\t\tthis.subscriptions.splice(i, 1);\n\t\t\t}\n\t\t}\n\t}\n}\n","import { dispatchCustomEvent } from '../dispatch-custom-event';\n\nexport function eventNamespaceFactory(namespace: string) {\n\treturn (element: EventTarget, eventName: string) =>\n\t\tdispatchCustomEvent(element, eventName + '.' + namespace);\n}\n","// TODO: cannot import typings and somehow ts does not know where to look for\r\n//import 'googlemaps';\r\n\r\nexport class FitBoundsPadding {\r\n\ttop? = 0;\r\n\tleft? = 0;\r\n\tbottom? = 0;\r\n\tright? = 0;\r\n}\r\n\r\nexport function fitBoundsWithPadding(\r\n\tmap: google.maps.Map,\r\n\tbounds: google.maps.LatLngBounds,\r\n\tpadding: FitBoundsPadding\r\n) {\r\n\tconst projection = map.getProjection();\r\n\tif (projection) {\r\n\t\t// copying the bounds object, since we will extend it\r\n\t\tbounds = new google.maps.LatLngBounds(\r\n\t\t\tbounds.getSouthWest(),\r\n\t\t\tbounds.getNorthEast()\r\n\t\t);\r\n\r\n\t\t// SW\r\n\t\tlet point1 = projection.fromLatLngToPoint(bounds.getSouthWest());\r\n\t\tmap.fitBounds(bounds);\r\n\r\n\t\tlet point2 = new google.maps.Point(\r\n\t\t\t(typeof padding.left === 'number' ? padding.left : 0) /\r\n\t\t\t\tMath.pow(2, map.getZoom()) || 0,\r\n\t\t\t(typeof padding.bottom === 'number' ? padding.bottom : 0) /\r\n\t\t\t\tMath.pow(2, map.getZoom()) || 0\r\n\t\t);\r\n\r\n\t\tlet newPoint = projection.fromPointToLatLng(\r\n\t\t\tnew google.maps.Point(point1.x - point2.x, point1.y + point2.y)\r\n\t\t);\r\n\r\n\t\tbounds.extend(newPoint);\r\n\r\n\t\tpoint1 = projection.fromLatLngToPoint(bounds.getNorthEast());\r\n\t\tpoint2 = new google.maps.Point(\r\n\t\t\t(typeof padding.right === 'number' ? padding.right : 0) /\r\n\t\t\t\tMath.pow(2, map.getZoom()) || 0,\r\n\t\t\t(typeof padding.top === 'number' ? padding.top : 0) /\r\n\t\t\t\tMath.pow(2, map.getZoom()) || 0\r\n\t\t);\r\n\t\tnewPoint = projection.fromPointToLatLng(\r\n\t\t\tnew google.maps.Point(point1.x + point2.x, point1.y - point2.y)\r\n\t\t);\r\n\r\n\t\tbounds.extend(newPoint);\r\n\t\tmap.fitBounds(bounds);\r\n\t}\r\n}\r\n","export function debounce(func: Function, wait: number, immediate?: boolean) {\n\tlet timeout;\n\tlet result;\n\treturn function debounceFn() {\n\t\tconst context = this;\n\t\tconst args = arguments;\n\t\tconst later = () => {\n\t\t\ttimeout = null;\n\t\t\tif (!immediate) {\n\t\t\t\tresult = func.apply(context, args);\n\t\t\t}\n\t\t};\n\t\tconst callNow = immediate && !timeout;\n\t\tclearTimeout(timeout);\n\t\ttimeout = setTimeout(later, wait);\n\t\tif (callNow) {\n\t\t\tresult = func.apply(context, args);\n\t\t}\n\t\treturn result;\n\t};\n}\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 - (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 { 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 { dispatchCustomEvent } from '@opten/events/dispatch-custom-event';\nimport { getTransitionEndEventName } from '../get-transition-end-event-name';\n\nconst transitionEndEventName = getTransitionEndEventName();\n\nexport function addTransitionEndListener(\n\telement: Element,\n\tcallback: () => void,\n\tfallbackDuration = 0,\n\tremove = true\n): void {\n\tlet called = false;\n\tconst listener = (event: Event) => {\n\t\tcalled = true;\n\t\tif (remove) {\n\t\t\telement.removeEventListener(transitionEndEventName as string, listener);\n\t\t}\n\t\tcallback();\n\t};\n\n\tif (transitionEndEventName === false) {\n\t\tsetTimeout(() => {\n\t\t\tcallback();\n\t\t}, fallbackDuration);\n\t} else {\n\t\telement.addEventListener(transitionEndEventName, listener);\n\t\t// https://github.com/twbs/bootstrap/blob/v4.0.0/js/src/util.js#L49\n\t\tif (fallbackDuration) {\n\t\t\tsetTimeout(() => {\n\t\t\t\tif (!called) {\n\t\t\t\t\tdispatchCustomEvent(element, transitionEndEventName);\n\t\t\t\t}\n\t\t\t}, fallbackDuration);\n\t\t}\n\t}\n}\n","export function getTransitionEndEventName(): string | false {\n\tconst element = document.createElement('_');\n\tconst transitions = {\n\t\tWebkitTransition: 'webkitTransitionEnd',\n\t\ttransition: 'transitionend',\n\t};\n\n\tfor (const transition in transitions) {\n\t\tif (element.style[transition] !== undefined) {\n\t\t\treturn transitions[transition];\n\t\t}\n\t}\n\n\treturn false;\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tif(__webpack_module_cache__[moduleId]) {\n\t\treturn __webpack_module_cache__[moduleId].exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n"],"sourceRoot":""}