{"version":3,"sources":["webpack://hblasset/./app/components/back-to-top/back-to-top.ts","webpack://hblasset/./app/components/back-to-top/navigation.ts","webpack://hblasset/./app/components/header/header.ts","webpack://hblasset/./app/components/map-extended.ts","webpack://hblasset/./app/components/mega-dropdown.ts","webpack://hblasset/./app/components/navbar/index.ts","webpack://hblasset/./app/components/navbar/navbar-mega-dropdown.ts","webpack://hblasset/./app/components/navbar/navbar-toggler.ts","webpack://hblasset/./app/components/navbar/navbar.ts","webpack://hblasset/./app/components/search/index.ts","webpack://hblasset/./app/components/search/search-toggler.ts","webpack://hblasset/./app/components/search/search.ts","webpack://hblasset/./app/components/slider.ts","webpack://hblasset/./app/utilities/detection.ts","webpack://hblasset/./app/utilities/scroll-helper.ts","webpack://hblasset/./node_modules/@opten/animation/ease-in-out-quad/index.ts","webpack://hblasset/./node_modules/@opten/animation/linear-tween/index.ts","webpack://hblasset/./node_modules/@opten/collapse/initializer/index.ts","webpack://hblasset/./node_modules/@opten/common/new-guid/index.ts","webpack://hblasset/./node_modules/@opten/common/wrap-function/index.ts","webpack://hblasset/./node_modules/@opten/compiler/factory/index.ts","webpack://hblasset/./node_modules/@opten/compiler/index.ts","webpack://hblasset/./node_modules/@opten/compiler/metadata/component.ts","webpack://hblasset/./node_modules/@opten/compiler/metadata/di.ts","webpack://hblasset/./node_modules/@opten/compiler/reflector/index.ts","webpack://hblasset/./node_modules/@opten/compiler/resolver/index.ts","webpack://hblasset/./node_modules/@opten/compiler/util/decorators.ts","webpack://hblasset/./node_modules/@opten/compiler/util/factories.ts","webpack://hblasset/./node_modules/@opten/compiler/util/type.ts","webpack://hblasset/./node_modules/@opten/dialog/dialog.ts","webpack://hblasset/./node_modules/@opten/dialog/index.ts","webpack://hblasset/./node_modules/@opten/dom/add-class/index.ts","webpack://hblasset/./node_modules/@opten/dom/as-html-element/index.ts","webpack://hblasset/./node_modules/@opten/dom/change-class/index.ts","webpack://hblasset/./node_modules/@opten/dom/class-regex/index.ts","webpack://hblasset/./node_modules/@opten/dom/create-node/index.ts","webpack://hblasset/./node_modules/@opten/dom/first-by-class/index.ts","webpack://hblasset/./node_modules/@opten/dom/get-class/index.ts","webpack://hblasset/./node_modules/@opten/dom/get-css/index.ts","webpack://hblasset/./node_modules/@opten/dom/get-offset/index.ts","webpack://hblasset/./node_modules/@opten/dom/get-parent-with-class/index.ts","webpack://hblasset/./node_modules/@opten/dom/get-parents-or-self/index.ts","webpack://hblasset/./node_modules/@opten/dom/get-parents/index.ts","webpack://hblasset/./node_modules/@opten/dom/get-selector-element-from-element/index.ts","webpack://hblasset/./node_modules/@opten/dom/get-selector-from-element/index.ts","webpack://hblasset/./node_modules/@opten/dom/get-styles/index.ts","webpack://hblasset/./node_modules/@opten/dom/get-window-scroll-top/index.ts","webpack://hblasset/./node_modules/@opten/dom/has-class/index.ts","webpack://hblasset/./node_modules/@opten/dom/is-ancestor-of-class/index.ts","webpack://hblasset/./node_modules/@opten/dom/is-html-element/index.ts","webpack://hblasset/./node_modules/@opten/dom/remove-class/index.ts","webpack://hblasset/./node_modules/@opten/dom/toggle-class/index.ts","webpack://hblasset/./node_modules/@opten/events/dispatch-custom-event/index.ts","webpack://hblasset/./node_modules/@opten/events/event-namespace-factory/index.ts","webpack://hblasset/./node_modules/@opten/keycodes/index.ts","webpack://hblasset/./node_modules/@opten/number/parse-css-unit/index.ts","webpack://hblasset/./node_modules/@opten/overlay/index.ts","webpack://hblasset/./node_modules/@opten/overlay/keyboard/overlay-keyboard-dispatcher.ts","webpack://hblasset/./node_modules/@opten/overlay/overlay-options.ts","webpack://hblasset/./node_modules/@opten/overlay/overlay.ts","webpack://hblasset/./node_modules/@opten/overlay/position/connected-position-strategy.ts","webpack://hblasset/./node_modules/@opten/overlay/position/connected-position.ts","webpack://hblasset/./node_modules/@opten/overlay/position/global-position-strategy.ts","webpack://hblasset/./node_modules/@opten/overlay/position/overlay-position-builder.ts","webpack://hblasset/./node_modules/@opten/overlay/scroll/reposition-scroll-strategy.ts","webpack://hblasset/./node_modules/@opten/script/create-script/index.ts","webpack://hblasset/./node_modules/@opten/script/get-script-by-src/index.ts","webpack://hblasset/./node_modules/@opten/script/load-script/index.ts","webpack://hblasset/./node_modules/@opten/scroll/scroll-to-element/index.ts","webpack://hblasset/./node_modules/@opten/scroll/scroll-to-offset/index.ts","webpack://hblasset/./node_modules/@opten/scroll/scroll-to/index.ts","webpack://hblasset/./node_modules/@opten/select/index.ts","webpack://hblasset/./node_modules/@opten/transition/add-transition-end-listener/index.ts","webpack://hblasset/./node_modules/@opten/transition/get-transition-end-event-name/index.ts","webpack://hblasset/./node_modules/@opten/url/remove-domain/index.ts","webpack://hblasset/./node_modules/@opten/viewport/is-element-clipped-by-scrolling/index.ts","webpack://hblasset/./node_modules/@opten/viewport/is-element-scrolled-outside-view/index.ts","webpack://hblasset/./node_modules/clip-path/dist/clippath.min.js","webpack://hblasset/./node_modules/core-js/es6/reflect.js","webpack://hblasset/./node_modules/core-js/fn/object/assign.js","webpack://hblasset/./node_modules/core-js/modules/_a-function.js","webpack://hblasset/./node_modules/core-js/modules/_an-object.js","webpack://hblasset/./node_modules/core-js/modules/_array-includes.js","webpack://hblasset/./node_modules/core-js/modules/_bind.js","webpack://hblasset/./node_modules/core-js/modules/_cof.js","webpack://hblasset/./node_modules/core-js/modules/_core.js","webpack://hblasset/./node_modules/core-js/modules/_ctx.js","webpack://hblasset/./node_modules/core-js/modules/_defined.js","webpack://hblasset/./node_modules/core-js/modules/_descriptors.js","webpack://hblasset/./node_modules/core-js/modules/_dom-create.js","webpack://hblasset/./node_modules/core-js/modules/_enum-bug-keys.js","webpack://hblasset/./node_modules/core-js/modules/_export.js","webpack://hblasset/./node_modules/core-js/modules/_fails.js","webpack://hblasset/./node_modules/core-js/modules/_function-to-string.js","webpack://hblasset/./node_modules/core-js/modules/_global.js","webpack://hblasset/./node_modules/core-js/modules/_has.js","webpack://hblasset/./node_modules/core-js/modules/_hide.js","webpack://hblasset/./node_modules/core-js/modules/_html.js","webpack://hblasset/./node_modules/core-js/modules/_ie8-dom-define.js","webpack://hblasset/./node_modules/core-js/modules/_invoke.js","webpack://hblasset/./node_modules/core-js/modules/_iobject.js","webpack://hblasset/./node_modules/core-js/modules/_is-object.js","webpack://hblasset/./node_modules/core-js/modules/_iter-create.js","webpack://hblasset/./node_modules/core-js/modules/_library.js","webpack://hblasset/./node_modules/core-js/modules/_object-assign.js","webpack://hblasset/./node_modules/core-js/modules/_object-create.js","webpack://hblasset/./node_modules/core-js/modules/_object-dp.js","webpack://hblasset/./node_modules/core-js/modules/_object-dps.js","webpack://hblasset/./node_modules/core-js/modules/_object-gopd.js","webpack://hblasset/./node_modules/core-js/modules/_object-gopn.js","webpack://hblasset/./node_modules/core-js/modules/_object-gops.js","webpack://hblasset/./node_modules/core-js/modules/_object-gpo.js","webpack://hblasset/./node_modules/core-js/modules/_object-keys-internal.js","webpack://hblasset/./node_modules/core-js/modules/_object-keys.js","webpack://hblasset/./node_modules/core-js/modules/_object-pie.js","webpack://hblasset/./node_modules/core-js/modules/_own-keys.js","webpack://hblasset/./node_modules/core-js/modules/_property-desc.js","webpack://hblasset/./node_modules/core-js/modules/_redefine.js","webpack://hblasset/./node_modules/core-js/modules/_set-proto.js","webpack://hblasset/./node_modules/core-js/modules/_set-to-string-tag.js","webpack://hblasset/./node_modules/core-js/modules/_shared-key.js","webpack://hblasset/./node_modules/core-js/modules/_shared.js","webpack://hblasset/./node_modules/core-js/modules/_to-absolute-index.js","webpack://hblasset/./node_modules/core-js/modules/_to-integer.js","webpack://hblasset/./node_modules/core-js/modules/_to-iobject.js","webpack://hblasset/./node_modules/core-js/modules/_to-length.js","webpack://hblasset/./node_modules/core-js/modules/_to-object.js","webpack://hblasset/./node_modules/core-js/modules/_to-primitive.js","webpack://hblasset/./node_modules/core-js/modules/_uid.js","webpack://hblasset/./node_modules/core-js/modules/_wks.js","webpack://hblasset/./node_modules/core-js/modules/es6.object.assign.js","webpack://hblasset/./node_modules/core-js/modules/es6.reflect.apply.js","webpack://hblasset/./node_modules/core-js/modules/es6.reflect.construct.js","webpack://hblasset/./node_modules/core-js/modules/es6.reflect.define-property.js","webpack://hblasset/./node_modules/core-js/modules/es6.reflect.delete-property.js","webpack://hblasset/./node_modules/core-js/modules/es6.reflect.enumerate.js","webpack://hblasset/./node_modules/core-js/modules/es6.reflect.get-own-property-descriptor.js","webpack://hblasset/./node_modules/core-js/modules/es6.reflect.get-prototype-of.js","webpack://hblasset/./node_modules/core-js/modules/es6.reflect.get.js","webpack://hblasset/./node_modules/core-js/modules/es6.reflect.has.js","webpack://hblasset/./node_modules/core-js/modules/es6.reflect.is-extensible.js","webpack://hblasset/./node_modules/core-js/modules/es6.reflect.own-keys.js","webpack://hblasset/./node_modules/core-js/modules/es6.reflect.prevent-extensions.js","webpack://hblasset/./node_modules/core-js/modules/es6.reflect.set-prototype-of.js","webpack://hblasset/./node_modules/core-js/modules/es6.reflect.set.js","webpack://hblasset/./node_modules/picturefill/dist/picturefill.js","webpack://hblasset/../Opten.HypothekarbankLenzburg.Core.Static/components/cookie-consent.ts","webpack://hblasset/../Opten.HypothekarbankLenzburg.Core.Static/components/datepicker.ts","webpack://hblasset/../Opten.HypothekarbankLenzburg.Core.Static/components/dialog/dialog.ts","webpack://hblasset/../Opten.HypothekarbankLenzburg.Core.Static/components/filterpage.ts","webpack://hblasset/../Opten.HypothekarbankLenzburg.Core.Static/components/input-fields-filled.ts","webpack://hblasset/../Opten.HypothekarbankLenzburg.Core.Static/components/map-extended/map-extended.ts","webpack://hblasset/../Opten.HypothekarbankLenzburg.Core.Static/components/player/player.ts","webpack://hblasset/../Opten.HypothekarbankLenzburg.Core.Static/components/recaptcha-3.ts","webpack://hblasset/../Opten.HypothekarbankLenzburg.Core.Static/components/recaptcha.ts","webpack://hblasset/../Opten.HypothekarbankLenzburg.Core.Static/components/select/select.ts","webpack://hblasset/../Opten.HypothekarbankLenzburg.Core.Static/utilities/cookie.ts","webpack://hblasset/../Opten.HypothekarbankLenzburg.Core.Static/utilities/detection.ts","webpack://hblasset/../Opten.HypothekarbankLenzburg.Core.Static/utilities/polyfills.ts","webpack://hblasset/../Opten.HypothekarbankLenzburg.Web.Static/app/utilities/detection.ts","webpack://hblasset/../Opten.HypothekarbankLenzburg.Web.Static/app/utilities/scroll-helper.ts","webpack://hblasset/./app/hblasset.scss","webpack://hblasset/webpack/bootstrap","webpack://hblasset/webpack/runtime/define property getters","webpack://hblasset/webpack/runtime/hasOwnProperty shorthand","webpack://hblasset/webpack/runtime/make namespace object","webpack://hblasset/webpack/runtime/node module decorator","webpack://hblasset/./app/hblasset.ts"],"names":["BackToTopComponent","Component","className","ComponentRef","Header","element","this","_bodyElement","document","body","addEventListener","animate","window","scrollTo","_headerElement","_update","removeClass","addClass","NavigationHideScrollDownShowScrollUpComponent","_lastScrollTop","_threshold","_navHeight","_direction","_wrapperElement","init","handleScroll","pageYOffset","currentYOffset","_paddingTop","_cachedHeight","_handleBoxShadow","hasClass","_dropdowns","getElementsByClassName","_handleScroll","_handleResize","top","_topCache","style","_hideDropdown","toggler","length","Array","from","forEach","dropdown","classList","contains","parentElement","setAttribute","_handleScrollDown","_handleScrollUp","getWindowScrollTop","_height","Math","round","getBoundingClientRect","height","MapExtendedComponent","Cookiebot","consent","marketing","undefined","mapExtended","initMap","showMapMarkerClasses","getAttribute","showMapMarkerClassesList","split","mapMarkerInformations","mapMarkerClasses","e","push","filter","v","i","a","indexOf","mapStylesAll","getMapStyles","MapExtended","mapStyles","hasMapMarkerClassesButtonIfMultiple","styledMapName","backdropElement","callback","addTransitionEndListener","console","log","NavbarMegaDropdown","Navbar","_timeout","_handleClick","event","_resetAllAriaAttributes","target","preventDefault","toggle","_handleBackdropClick","hide","_backdropElement","_dropdownElement","_dropdownElements","_togglerElements","_addDesktopListeners","isPad","removeEventListener","container","firstElementChild","stickyOffset","getStickyOffset","isMobile","maxHeight","marginLeft","dropdownBox","right","innerWidth","left","width","_setContainerHeight","_setDropdownPosition","_isOpen","show","_navbar","navbarElement","map","hideMegaDropdown","showMegaDropdown","transition","setTimeout","toElement","relatedTarget","isAncestorOfClass","clearTimeout","childclass","NavbarToggler","Search","ComponentRefs","_search","close","blur","_handleNavbarHeaderClick","_scrollableElements","scrollable","_removeScrollable","_setScrollable","_mainScrollElement","_header","_navbar1stLevelElements","querySelectorAll","_navbar2ndLevelElements","_navbarTogglerElements","_navbarHeaderElements","children","o","getSelectorElementFromElement","_click","_addMobileListeners","header","navbar","isOpen","querySelector","id","collapseInstance","Collapse","getInstance","destroy","_removeMobileListeners","_collapse","open","lockScrollbar","unlockScrollbar","_updateAria","titleElement","toString","toLowerCase","SearchToggler","SearchDesktop","_searchDesktop","isNavigationMobile","getElementsByTagName","focus","SliderComponent","idProgress","progressBar","swiper","Swiper","effect","loop","speed","slidesPerView","spaceBetween","grabCursor","keyboard","enabled","onlyInViewport","watchOverflow","watchSlidesProgress","watchSlidesVisibility","roundLengths","autoplay","delay","disableOnInteraction","on","moveProgressbar","slideChange","defaultSlideDelay","params","currentIndex","realIndex","currentSlideDelay","slides","autoplayTime","clearInterval","setInterval","bodyElement","scroll","requestAnimationFrame","isTinyMobile","clampScroll","documentElement","position","overflow","parseCssUnit","paddingTop","removeAttribute","elements","cookieConsent","reduce","pv","cv","timeElapsed","start","distance","duration","options","error","data","activeClass","activeParentClass","animateProp","collapsingClass","componentClass","showClass","showClassDesktop","desktopWidth","transitionDuration","isHideable","closeSiblings","useShowClassDesktop","dataParentSelector","dataTargetSelector","dataToggleSelector","hrefSelector","isTransitioning","eventNamespaceFn","eventNamespaceFactory","handleClick","trigger","currentTarget","tagName","triggers","outerWidth","parent","selector","actives","active","_handleShow","_handleClose","_addAriaAndCollapsedClass","collapseElement","scrollHeight","offsetWidth","create","replace","c","r","random","baseFn","extendFn","apply","components","rootElement","observables","Map","componentType","component","resolver","resolve","Error","name","safeRootElement","node","compiler","compile","observe","set","size","MutationObserver","mutations","componentInitializer","mutation","value","key","addedNodes","isHTMLElement","asHTMLElement","comps","childList","subtree","reflector","Reflector","Resolver","Compiler","componentCache","constructor","has","get","Object","keys","queries","propName","query","nodes","descendants","cache","acc","val","concat","f","first","isType","onInit","makeDecorator","createComponent","makeMetadataFactory","Query","makePropDecorator","ChildRef","ChildrenRef","typeOrFunc","parentCtor","getParentCtor","ownAnnotations","_ownAnnotations","annotations","propMetadata","parentPropMetadata","ownPropMetadata","_ownPropMetadata","decorators","hasOwnProperty","ANNOTATIONS","PROP_METADATA","ctor","parentProto","getPrototypeOf","prototype","QUERY_METADATA_IDENTIFIERS","type","typeMetadata","metadata","findLast","metadataName","propertyMetadata","_mergeWithPropertyMetadata","some","_merge","mergedQueries","res","propertyName","_getQueryMetadata","q","read","arr","condition","props","parentClass","chainFn","typeFn","metaCtor","makeMetadataCtor","DecoratorFactory","args","call","annotationInstance","typeDecorator","cls","defineProperty","PropDecoratorFactory","decoratorInstance","metaName","meta","unshift","values","factory","isTypeOf","obj","Type","Function","Dialog","dialogOpen","hasBackdrop","disableClose","maxWidth","createOverlay","addListeners","overlayRef","portalElement","createNode","innerHTML","overlay","getOverlayOptions","afterOpened","beforeClose","detachBackdrop","afterClosed","dispose","backdropClick","onKeyboardEvent","keyCode","KEYCODES","ESCAPE","dialogSettings","state","OverlayOptions","positionStrategy","OverlayPositionBuilder","global","minWidth","minHeight","backdropClassName","button","getClass","trim","add","classRegexCache","RegExp","html","createElement","computed","getStyles","getPropertyValue","clientRect","ownerDocument","documentTop","scrollTop","clientTop","documentLeft","pageXOffset","scrollLeft","clientLeft","firstByClass","getParents","getParentsOrSelf","parents","attribute","fallbackHref","getSelectorFromElement","getElementById","substr","test","view","defaultView","opener","getComputedStyle","parentNode","classRegex","includeSelf","nodeType","HTMLElement","nodeName","removeClassFactory","regex","changeClass","eventName","CustomEvent","dispatchEvent","namespace","dispatchCustomEvent","DOWN","ENTER","SPACE","UP","unit","units","u","parsed","Number","OverlayKeyboardDispatcher","attachedOverlays","keydownListener","_selectOverlayFromEvent","isAttached","index","splice","_detach","find","overlayElement","Overlay","attached","keyboardDispatcher","uuid","newGuid","scrollStrategy","attach","overlayContainerElement","insertBefore","lastElementChild","overlayClassName","appendChild","backdropToDetach","removeChild","pointerEvents","sizeConfig","_updateElementSize","_attach","updatePosition","beforeOpen","disable","remove","enable","_attachBackdrop","onAttached","hasAttached","detach","onDetached","formatCssUnit","ConnectedPositionStrategy","originPos","overlayPos","connectedTo","offsetX","offsetY","scrollables","preferredPositions","applied","positionLocked","boundResizeChange","_handleResizeChange","bind","origin","withFallbackPosition","pane","lastConnectedPosition","recalculateLastPosition","_validatePositions","fallbackPoint","fallbackPosition","originRect","overlayRect","viewportSize","innerHeight","pos","originPoint","_getOriginConnectionPoint","overlayPoint","_getOverlayPoint","fitsInViewport","_setElementPosition","visibleArea","lastPosition","ConnectionPositionPair","offset","isLocked","positions","slice","rect","originStartX","_getStartX","originEndX","_getEndX","x","originX","y","originY","bottom","overlayStartX","overlayStartY","overlayX","overlayY","leftOverflow","rightOverflow","topOverflow","bottomOverflow","_subtractOverflows","originBounds","overlayBounds","scrollContainerBounds","s","isOriginClipped","isElementClippedByScrolling","isOriginOutsideView","isElementScrolledOutsideView","isOverlayClipped","isOverlayOutsideView","verticalStyleProperty","clientHeight","horizontalStyleProperty","clientWidth","p","scrollableViewProperties","_getScrollVisibility","positionChange","ConnectedOverlayPositionChange","onPositionChange","overflows","currentValue","currentOverflow","max","pair","validateHorizontalPosition","validateVerticalPosition","property","connectionPair","GlobalPositionStrategy","cssPosition","topOffset","bottomOffset","leftOffset","rightOffset","alignItems","justifyContent","wrapper","getOptions","updateSize","parentStyles","marginTop","marginBottom","marginRight","elementRef","RepositionScrollStrategy","config","throttle","scrollThrottle","autoClose","update","parentRects","src","onerror","scriptElement","async","onload","removeLoadingScript","loadingScriptWindow","loadingScripts","scripts","currentScriptElement","item","removeDomain","Promise","reject","script","getScriptBySrc","wrapFunction","newScript","createScript","head","animation","linearTween","offsetTop","scrollToOffset","animationFunction","timeStart","t","b","d","time","Window","Select","Option","text","textContent","disabled","_disabled","_text","selectElement","classes","highlighted","panelOpen","htmlSelectElement","selectedIndex","_getSelectedIndex","activeIndex","_init","triggerRect","triggerElement","_createOverlay","_calculateOverlayPosition","_highlightCorrectOption","_scrollActiveOptionIntoView","_shouldForward","option","tabIndex","insertAdjacentHTML","_render","select","stopPropagation","_handleKeydown","_emit","delta","_updateActiveItem","_handleActiveIndex","panelHTML","_getOverlayOptions","_onPanelDone","transformOrigin","_calculateOverlayOffsetX","optionElements","_createPositionStrategy","primaryPosition","strategy","withOffsetX","withOffsetY","shouldForwardEvent","newValue","newLabel","_getOptionIndex","arrowHtml","iconHtml","result","current","itemHeight","_getItemHeight","scrollOffset","panelTop","_getPanelMaxHeight","items","panelHeight","min","maxScroll","selectedOptionOffset","scrollBuffer","_calculateOverlayScroll","_calculateOverlayOffsetY","_checkOverlayWithinViewport","paddingWidth","_getPanelToViewportPadding","topSpaceAvailable","bottomSpaceAvailable","panelHeightTop","abs","panelHeightBottom","_adjustPanelUp","_adjustPanelDown","_getOriginBasedOnOption","distanceBelowViewport","distanceAboveViewport","optionHeightAdjustment","optimalScrollPosition","maxOptionsDisplayed","floor","padding","getCss","offsetHeight","createEvent","initEvent","selected","fallbackDuration","called","listener","transitionEndEventName","getTransitionEndEventName","transitions","WebkitTransition","url","scrollContainers","scrollContainerRect","clippedAbove","clippedBelow","clippedLeft","clippedRight","containerBounds","outsideAbove","outsideBelow","outsideLeft","outsideRight","n","l","clipPath","h","substring","createElementNS","setAttributeNS","g","m","w","cloneNode","replaceChild","webkitClipPath","navigator","userAgent","applyClipPath","jQuery","fn","ClipPath","path","each","attr","require","module","exports","it","TypeError","isObject","toIObject","toLength","toAbsoluteIndex","IS_INCLUDES","$this","el","fromIndex","O","aFunction","invoke","arraySlice","factories","construct","F","len","join","that","partArgs","arguments","bound","core","version","__e","is","redefine","ctx","$export","source","own","out","exp","IS_FORCED","IS_GLOBAL","G","IS_PROTO","P","IS_BIND","B","S","expProto","U","W","R","exec","self","__g","dP","createDesc","object","un","cof","propertyIsEnumerable","descriptor","setToStringTag","IteratorPrototype","Constructor","NAME","next","DESCRIPTORS","getKeys","gOPS","pIE","toObject","IObject","$assign","assign","A","Symbol","K","k","T","aLen","getSymbols","isEnum","j","anObject","dPs","enumBugKeys","IE_PROTO","Empty","createDict","iframeDocument","iframe","display","contentWindow","write","lt","Properties","IE8_DOM_DEFINE","toPrimitive","Attributes","defineProperties","gOPD","getOwnPropertyDescriptor","$keys","hiddenKeys","getOwnPropertyNames","getOwnPropertySymbols","ObjectProto","arrayIndexOf","names","gOPN","Reflect","ownKeys","bitmap","enumerable","configurable","writable","SRC","$toString","TO_STRING","TPL","safe","isFunction","String","check","proto","setPrototypeOf","buggy","__proto__","def","TAG","tag","stat","shared","uid","SHARED","store","mode","copyright","toInteger","ceil","isNaN","defined","valueOf","px","USE_SYMBOL","rApply","fApply","thisArgument","argumentsList","L","fails","rConstruct","NEW_TARGET_BUG","ARGS_BUG","Target","newTarget","$args","instance","propertyKey","attributes","deleteProperty","desc","Enumerate","iterated","_t","_i","_k","done","enumerate","getProto","receiver","$isExtensible","isExtensible","$preventExtensions","preventExtensions","setProto","V","existingDescriptor","ownDesc","timer","dummySrc","fixRespimg","findPictureImgs","onResize","mq","ua","HTMLPictureElement","match","$1","img","sizes","picture","toUpperCase","_pfLastSize","imgs","matchMedia","addListener","srcset","readyState","eminpx","alwaysCheckWDescriptor","evalId","pf","isSupportTestReady","noop","image","getImgAttr","setImgAttr","removeImgAttr","docElem","types","cfg","algorithm","srcAttr","srcsetAttr","supportAbort","curSrcProp","regWDesc","regSize","setOptions","picturefillCFG","fsCss","isVwDirty","cssCache","sizeLengthCache","DPR","devicePixelRatio","anchor","alreadyRun","regexLeadingSpaces","regexLeadingCommasOrSpaces","regexLeadingNotSpaces","regexTrailingCommas","regexNonNegativeInteger","regexFloatingPoint","evt","capture","attachEvent","memoize","input","isSpace","regLength","buildStr","image2","width1","isDomReady","func","timeout","timestamp","later","regReady","run","timerId","lastClientWidth","evalCSS","css","string","parsedLength","setResolution","candidate","sizesattr","cWidth","calcListLength","picturefill","opt","plen","context","qsa","reevaluate","reselect","sel","selShort","setupRun","fillImg","teardownRun","ascendingSort","getCandidateForSrc","candidates","parseSet","makeUrl","warn","implementation","hasFeature","ns","Date","getTime","supSrcset","supSizes","supPicture","complete","setSize","href","matchesMedia","matches","media","mMQ","calcLength","sourceSizeValue","supportsType","parseSize","sourceSizeStr","cands","collectCharacters","regEx","chars","descriptors","currentDescriptor","inputLength","parseDescriptors","lastChar","intVal","floatVal","pError","parseInt","parseFloat","has1x","tokenize","charAt","parseSrcset","getEmValue","div","originalHTMLCSS","cssText","originalBodyCSS","sourceSizeListStr","uT","winningLength","strValue","unparsedSizesList","unparsedSizesListLength","unparsedSize","lastComponentValue","regexCssLengthWithUnits","regexCssCalc","str","chrctr","componentArray","listArray","parenDepth","inComment","pushComponent","pushComponentArray","parseComponentValues","pop","parseSizes","setRes","applySetCandidate","bestCandidate","curSrc","curCan","candidateSrc","abortCurSrc","lowerValue","higherValue","dprValue","isCached","bonusFactor","bonus","meanDensity","imageData","dpr","sets","setSrcToCur","cached","sort","pow","sqrt","setSrc","origWidth","getSet","parseSets","srcsetAttribute","imageSet","isWDescripor","srcsetParsed","hasPicture","pic","sources","getAllSourceElements","supported","extreme","evaled","srcSetCandidates","matchingSet","evaluated","applyBestCandidate","vw","vh","em","rem","fillImgs","last","_","shift","define","typeUri","Image","detectTypeSupport","stickyElements","CookieConsent","_stickyElements","_options","approveClassName","showAfter","animationDuration","cookie","expirationInDays","secure","_attributeName","_boundResize","_eventNamespaceFn","banner","_getBanner","_cookieKey","_animate","easeInOutQuad","_setSticky","_setElements","sticky","attributeName","hasAttribute","calculated","setCookie","_setCookie","date","setDate","getDate","domain","Datepicker","_locales","i18n","previousMonth","nextMonth","months","JSON","parse","weekdays","weekdaysShort","yearRange","moment","locale","Pikaday","field","format","onSelect","inputElement","hasWall","$","validator","$form","removeData","unobtrusive","one","submitCustomConsent","submit","_api","dialog","_toggle","FilterPage","isInitialPageLoad","pagingSize","page","language","selectors","content","selects","selectTag","tagCategory","dropdownToggle","tagsDropdown","searchText","searchButton","tagAll","tagAllActive","tagActive","resetAllActiveTagsElements","paging","pageBack","pageNext","pageJump","pageJumpAttribute","loading","contentLoading","contentYScroll","hidden","hasActiveTags","contentLocation","wrapperId","searchValueText","tagValue","scrollToTopAfterFiltering","hasStickyOffsetDesktop","wrapperElement","dataLanguage","lang","initContentFilter","contentElement","tags","tagsCategory","searchTextInput","allTags","toggleTag","searchTextButton","which","loadFilterElements","location","search","searchValues","searchTextValue","decodeURIComponent","history","pushState","title","pathname","onChange","allTag","allTagClick","getParentWithClass","resetTags","resetAllActiveTags","updateSelectTag","newSelects","newTags","setPageDefault","setPageToDefault","dataSearch","getFilters","fetch","method","headers","then","response","contentType","includes","setPreviousNextJumpPageEvents","reinitFilter","callbackAfterFilter","getOffset","crossselling","cookieBannerHeight","scrollToElement","pageStep","loadPreviousPage","loadNextPage","loadJumpPage","activeTags","getTagsFromLocationHash","filters","setActiveTagsClasses","setFilterPageHasActiveTags","isTagActive","deactivateAllTag","isSelectOption","addTagToFilters","activateAllTag","removeTagFromFilters","newHash","getTagsLocationHash","hash","doActivateTag","deactivateActiveTags","activateTag","deactivateTag","deactivateActiveTag","activateActiveTag","selectMenu","selectedTag","toggleClass","getTagValue","tagValueIndex","getTagValueIndex","allTagActive","dropdownToggleBtn","filterAll","indexFilter","InputFieldsFilled","_element","_checkValue","valid","MapMarkerExtended","marker","draggable","screen","google","maps","Animation","DROP","mapMarkerClassesButtonActiveClass","mapMarkerInfoClass","mapTypes","MapTypeId","ROADMAP","TERRAIN","SATELLITE","HYBRID","mapTypeControlStyle","MapTypeControlStyle","HORIZONTAL_BAR","fitToBounds","_mapMarkers","_currentInfoWindow","markerClass","markerElement","showHideMapMarkerClass","mapZoom","zoom","_bounds","LatLngBounds","mapOptions","center","LatLng","lat","lng","mapTypeControlOptions","mapTypeIds","nameMap","styledMap","StyledMapType","setMapTypeId","markersClass","showMarker","markerClassInfo","createMarkerClass","fitBounds","addListenerOnce","setZoom","markerInfoData","latlng","mapMarkerIcon","mapMarkerWidth","mapMarkerHeight","mapMarkerOriginX","mapMarkerOriginY","mapMarkerAnchorX","mapMarkerAnchorY","mapMarkerInfo","createMarker","Marker","icon","Size","Point","visible","extend","getPosition","infoWindow","InfoWindow","wasCurrentWindow","mapMarker","setVisible","IFramePlayer","_boundClick","_buttonElement","_iFrameElement","play","player","Player","Recaptcha3Validator","closest","siteKey","actionName","scriptUrl","culture","loadScript","catch","exc","form","grecaptcha","ready","timerFunction","execute","action","token","RecaptchaValidator","$captcha","recaptchaOnLoadCallback","render","sitekey","$textarea","border","margin","updateForm","getResponse","SelectComponent","toUTCString","cookies","getCookie","all","oldWindowWidth","PAD_WIDTH","__webpack_module_cache__","__webpack_require__","moduleId","loaded","__webpack_modules__","definition","prop","toStringTag","nmd","paths","connectionIsSecure","FormFieldAccept","checkbox","checked","FilterPageComponent","filterPage"],"mappings":"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,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,OAAO,OAAO,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,MAAM,MAAM,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,MAAM,MAAM,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,MAAM,MAAM,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,MAAM,MAAM,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,MAAM,MAAM,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,MAAM,MAAM,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,MAAM,MAAM,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,MAAM,MAAM,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,MAAM,MAAM,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,MAAM,MAAM,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,OAAO,OAAO,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,OAAO,OAAO,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,OAAO,OAAO,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,OAAO,OAAO,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,OAAO,OAAO,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,OAAO,OAAO,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,MAAM,MAAM,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,MAAM,MAAM,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,MAAM,MAAM,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,MAAM,MAAM,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,MAAM,MAAM,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,MAAM,MAAM,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,MAAM,MAAM,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,MAAM,MAAM,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,MAAM,MAAM,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,MAAM,MAAM,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,OAAO,OAAO,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,OAAO,OAAO,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,OAAO,OAAO,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,OAAO,OAAO,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,OAAO,OAAO,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,OAAO,OAAO,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,YAAY,YAAY,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,YAAY,YAAY,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,YAAY,YAAY,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU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AAY,YAAY,YAAY,YAAY,YAAY,SAAS,SAAS,cAAc,cAAc,cAAc,cAAc,aAAa,aAAa,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,YAAY,YAAY,YAAY,YAAY,iBAAiB,iBAAiB,gBAAgB,gBAAgB,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,eAAe,eAAe,eAAe,eAAe,iBAAiB,iBAAiB,gBAAgB,gBAAgB,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,eAAe,eAAe,eAAe,eAAe,iBAAiB,iBAAiB,gBAAgB,gBAAgB,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,eAAe,eAAe,eAAe,eAAe,iBAAiB,iBAAiB,gBAAgB,gBAAgB,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa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","file":"Scripts/hblasset.js","sourcesContent":["import { Component } from '@opten/compiler/metadata/component';\r\nimport { removeClass } from '@opten/dom/remove-class';\r\nimport { addClass } from '@opten/dom/add-class';\r\nimport { Header } from '../header/header';\r\nimport { ComponentRef } from '@opten/compiler/metadata/di';\r\n\r\n@Component({ className: 'js-back-to-top' })\r\nexport class BackToTopComponent {\r\n\tprivate _bodyElement: HTMLElement;\r\n\t@ComponentRef(Header) _headerElement: Header;\r\n\r\n\tconstructor(private element: HTMLElement) {\r\n\t\tthis._bodyElement = document.body;\r\n\t\telement.addEventListener('click', () => {\r\n\t\t\tthis.animate();\r\n\t\t});\r\n\t}\r\n\r\n\tprivate animate() {\r\n\t\twindow.scrollTo(0, 0);\r\n\t\tthis._headerElement._update(0);\r\n\t\tremoveClass(this._bodyElement, 'going-up');\r\n\t\taddClass(this._bodyElement, 'going-down');\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-header' })\r\nexport class NavigationHideScrollDownShowScrollUpComponent {\r\n\tprivate _wrapperElement: HTMLElement;\r\n\tprivate _lastScrollTop = 0;\r\n\tprivate _threshold = 10;\r\n\tprivate _navHeight = 0;\r\n\tprivate _bodyElement: HTMLElement;\r\n\tprivate _direction = '';\r\n\r\n\tconstructor(private element: HTMLElement) {\r\n\t\tthis._wrapperElement = element;\r\n\t\tthis._bodyElement = document.body;\r\n\t\tthis.init();\r\n\t}\r\n\r\n\tprivate init() {\r\n\t\twindow.addEventListener('scroll', () => this.handleScroll());\r\n\t}\r\n\r\n\thandleScroll() {\r\n\t\tif (window.pageYOffset === 0) {\r\n\t\t\tremoveClass(this._bodyElement, 'going-up');\r\n\t\t\taddClass(this._bodyElement, 'going-down');\r\n\t\t} else {\r\n\t\t\tconst currentYOffset = window.pageYOffset;\r\n\t\t\tif (\r\n\t\t\t\tcurrentYOffset > this._lastScrollTop &&\r\n\t\t\t\tcurrentYOffset > 0 &&\r\n\t\t\t\tcurrentYOffset - this._lastScrollTop >= this._threshold\r\n\t\t\t) {\r\n\t\t\t\tthis._direction = 'down';\r\n\t\t\t\tremoveClass(this._bodyElement, 'going-up');\r\n\t\t\t\taddClass(this._bodyElement, 'going-down');\r\n\t\t\t} else if (\r\n\t\t\t\tcurrentYOffset < this._lastScrollTop &&\r\n\t\t\t\tthis._lastScrollTop - currentYOffset >= this._threshold\r\n\t\t\t) {\r\n\t\t\t\tthis._direction = 'up';\r\n\t\t\t\taddClass(this._bodyElement, 'going-up');\r\n\t\t\t\tremoveClass(this._bodyElement, 'going-down');\r\n\t\t\t}\r\n\t\t\tthis._lastScrollTop = currentYOffset;\r\n\t\t}\r\n\t}\r\n}\r\n","import { Component } from '@opten/compiler/metadata/component';\r\nimport { OnInit } from '@opten/compiler/metadata/lifecycle';\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 { getWindowScrollTop } from '@opten/dom/get-window-scroll-top';\r\n\r\n@Component({ className: 'js-header' })\r\nexport class Header implements OnInit {\r\n\tprivate _height: number;\r\n\tprivate _topCache: number;\r\n\tprivate _paddingTop: number | null = null;\r\n\t// private _sidebar: Sidebar;\r\n\tprivate _dropdowns: HTMLCollectionOf;\r\n\r\n\t// prevent multiple resizings to add more height\r\n\t// if it's the same height as before!\r\n\tprivate _cachedHeight: number | null = null;\r\n\r\n\t// if we don't have a tangram,\r\n\t// we always want to show the shadow!\r\n\tprivate _handleBoxShadow: boolean = true;\r\n\r\n\tconstructor(private element: HTMLElement) {\r\n\t\tthis._handleBoxShadow = !hasClass(element, '--shadow');\r\n\t}\r\n\r\n\tonInit() {\r\n\t\tthis._dropdowns = document.getElementsByClassName(\r\n\t\t\t'js-navbar-mega-dropdown'\r\n\t\t);\r\n\r\n\t\taddClass(this.element, '--sticky');\r\n\t\t// this._sidebar = new Sidebar(\r\n\t\t// \tdocument.getElementsByClassName('js-sidebar')[0] as HTMLElement\r\n\t\t// );\r\n\t\tthis._handleScroll();\r\n\t\twindow.addEventListener('scroll', () => this._handleScroll());\r\n\r\n\t\tthis._handleResize();\r\n\t\twindow.addEventListener('resize', () => this._handleResize());\r\n\t}\r\n\r\n\tpublic _update(top: number) {\r\n\t\tif (top !== null) {\r\n\t\t\tif (top !== this._topCache) {\r\n\t\t\t\tthis._topCache = top;\r\n\t\t\t\tthis.element.style.top = `${top}px`;\r\n\t\t\t\tthis._hideDropdown();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprivate _hideDropdown() {\r\n\t\tif (this._dropdowns && this._dropdowns.length > 0) {\r\n\t\t\tlet toggler;\r\n\t\t\tArray.from(this._dropdowns).forEach(dropdown => {\r\n\t\t\t\tif (dropdown.classList.contains('--show')) {\r\n\t\t\t\t\tremoveClass(dropdown.parentElement, 'is-active');\r\n\t\t\t\t\tremoveClass(dropdown, '--show');\r\n\t\t\t\t\ttoggler = dropdown.parentElement.getElementsByClassName(\r\n\t\t\t\t\t\t'js-navbar-mega-dropdown-toggler'\r\n\t\t\t\t\t)[0];\r\n\t\t\t\t\tif (toggler) {\r\n\t\t\t\t\t\ttoggler.setAttribute('aria-expanded', 'false');\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tprivate _handleScroll() {\r\n\t\tif (document.body.classList.contains('going-down')) {\r\n\t\t\tthis._handleScrollDown();\r\n\t\t} else if (document.body.classList.contains('going-up')) {\r\n\t\t\tthis._handleScrollUp();\r\n\t\t}\r\n\t}\r\n\r\n\tprivate _handleScrollDown() {\r\n\t\tif (getWindowScrollTop() > this._height) {\r\n\t\t\tthis._update(-this._height);\r\n\t\t\t// this._sidebar._update(0);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate _handleScrollUp() {\r\n\t\tthis._update(0);\r\n\t}\r\n\r\n\tprivate _handleResize() {\r\n\t\tthis._height = Math.round(this.element.getBoundingClientRect().height);\r\n\t\t//document.body.style.paddingTop = `${this._height}px`;\r\n\r\n\t\t// if (this._cachedHeight !== this._height) {\r\n\t\t// \tthis._cachedHeight = this._height;\r\n\t\t// }\r\n\t}\r\n}\r\n","import { Component } from '@opten/compiler/metadata/component';\r\nimport {MapExtended} from '../../../Opten.HypothekarbankLenzburg.Core.Static/components/map-extended/map-extended';\r\ndeclare var Cookiebot;\r\n\r\n@Component({ className: 'js-map-extended' })\r\nexport class MapExtendedComponent {\r\n private mapExtended: MapExtended;\r\n\r\n constructor(private element: HTMLElement) {\r\n if(typeof(Cookiebot) !== 'undefined'){\r\n\t\t\twindow.addEventListener('CookiebotOnAccept', () => {\r\n\t\t\t\tif(Cookiebot.consent.marketing && (this.mapExtended == undefined || this.mapExtended == null)){\r\n\t\t\t\t\tthis.initMap(this.element);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t\telse{\r\n\t\t\tthis.initMap(this.element);\r\n\t\t}\r\n }\r\n\r\n\tprivate initMap(element: HTMLElement){\r\n const showMapMarkerClasses = element.getAttribute(\r\n 'data-show-marker-classes'\r\n );\r\n const showMapMarkerClassesList =\r\n showMapMarkerClasses.length > 0\r\n ? showMapMarkerClasses.split(',')\r\n : [];\r\n const mapMarkerInformations = Array.from(\r\n element.getElementsByClassName('c-map-extended__information')\r\n );\r\n let mapMarkerClasses = [];\r\n if (mapMarkerInformations != null) {\r\n mapMarkerInformations.forEach(e => {\r\n mapMarkerClasses.push(e.getAttribute('data-marker-class'));\r\n });\r\n mapMarkerClasses = mapMarkerClasses.filter(\r\n (v, i, a) => a.indexOf(v) === i\r\n );\r\n }\r\n const mapStylesAll = this.getMapStyles();\r\n this.mapExtended = new MapExtended(element, {\r\n showMapMarkerClasses: showMapMarkerClassesList,\r\n mapMarkerClasses: mapMarkerClasses,\r\n mapStyles: mapStylesAll,\r\n hasMapMarkerClassesButtonIfMultiple: true,\r\n styledMapName: 'Hypi'\r\n });\r\n\r\n }\r\n\r\n private getMapStyles(){\r\n return [\r\n {\r\n \"featureType\": \"administrative\",\r\n \"elementType\": \"labels.text.fill\",\r\n \"stylers\": [\r\n {\r\n \"color\": \"#000000\"\r\n }\r\n ]\r\n },\r\n {\r\n \"featureType\": \"administrative.country\",\r\n \"elementType\": \"geometry.fill\",\r\n \"stylers\": [\r\n {\r\n \"visibility\": \"off\"\r\n }\r\n ]\r\n },\r\n {\r\n \"featureType\": \"landscape\",\r\n \"stylers\": [\r\n {\r\n \"color\": \"#dcd9d2\"\r\n }\r\n ]\r\n },\r\n {\r\n \"featureType\": \"poi\",\r\n \"stylers\": [\r\n {\r\n \"visibility\": \"off\"\r\n }\r\n ]\r\n },\r\n {\r\n \"featureType\": \"road\",\r\n \"stylers\": [\r\n {\r\n \"saturation\": -100\r\n },\r\n {\r\n \"lightness\": 45\r\n }\r\n ]\r\n },\r\n {\r\n \"featureType\": \"road\",\r\n \"elementType\": \"geometry.fill\",\r\n \"stylers\": [\r\n {\r\n \"color\": \"#ffffff\"\r\n }\r\n ]\r\n },\r\n {\r\n \"featureType\": \"road.arterial\",\r\n \"elementType\": \"labels.icon\",\r\n \"stylers\": [\r\n {\r\n \"visibility\": \"off\"\r\n }\r\n ]\r\n },\r\n {\r\n \"featureType\": \"road.highway\",\r\n \"stylers\": [\r\n {\r\n \"visibility\": \"simplified\"\r\n }\r\n ]\r\n },\r\n {\r\n \"featureType\": \"transit\",\r\n \"stylers\": [\r\n {\r\n \"visibility\": \"off\"\r\n }\r\n ]\r\n },\r\n {\r\n \"featureType\": \"water\",\r\n \"stylers\": [\r\n {\r\n \"color\": \"#547fa9\"\r\n },\r\n {\r\n \"visibility\": \"on\"\r\n }\r\n ]\r\n },\r\n {\r\n \"featureType\": \"water\",\r\n \"elementType\": \"geometry.fill\",\r\n \"stylers\": [\r\n {\r\n \"color\": \"#547fa9\"\r\n },\r\n {\r\n \"gamma\": 1\r\n },\r\n {\r\n \"visibility\": \"on\"\r\n }\r\n ]\r\n },\r\n {\r\n \"featureType\": \"water\",\r\n \"elementType\": \"geometry.stroke\",\r\n \"stylers\": [\r\n {\r\n \"visibility\": \"off\"\r\n }\r\n ]\r\n },\r\n {\r\n \"featureType\": \"water\",\r\n \"elementType\": \"labels.text\",\r\n \"stylers\": [\r\n {\r\n \"visibility\": \"off\"\r\n }\r\n ]\r\n }\r\n ];\r\n }\r\n\r\n}","import { addClass } from '@opten/dom/add-class';\r\nimport { removeClass } from '@opten/dom/remove-class';\r\nimport { addTransitionEndListener } from '@opten/transition/add-transition-end-listener';\r\n\r\nconst transitionDuration = 600;\r\n\r\nexport function showMegaDropdown(\r\n dropdown: HTMLElement,\r\n backdropElement?: HTMLElement,\r\n callback?: () => void\r\n) {\r\n if (callback) {\r\n addTransitionEndListener(\r\n dropdown,\r\n () => callback(),\r\n transitionDuration\r\n );\r\n }\r\n console.log('showMegaDropdown');\r\n addClass(dropdown, '--show');\r\n\r\n if (backdropElement) {\r\n addClass(backdropElement, '--show');\r\n }\r\n}\r\n\r\nexport function hideMegaDropdown(\r\n dropdown: HTMLElement,\r\n backdropElement?: HTMLElement,\r\n callback?: () => void\r\n) {\r\n // add fade-out class for faster animations\r\n addClass(dropdown, '--fade-out');\r\n removeClass(dropdown, '--show');\r\n\r\n if (backdropElement) {\r\n // add fade-out class for faster animations\r\n addClass(backdropElement, '--fade-out');\r\n removeClass(backdropElement, '--show');\r\n }\r\n\r\n addTransitionEndListener(\r\n dropdown,\r\n () => {\r\n // remove fade-out so if we hover again, they're still slow\r\n removeClass(dropdown, '--fade-out');\r\n\r\n if (backdropElement) {\r\n // remove fade-out so if we hover again, they're still slow\r\n removeClass(backdropElement, '--fade-out');\r\n }\r\n\r\n if (callback) {\r\n callback();\r\n }\r\n },\r\n transitionDuration\r\n );\r\n}\r\n","export * from './navbar';\r\nexport * from './navbar-toggler';\r\nexport * from './navbar-mega-dropdown';\r\n","import { Component } from '@opten/compiler/metadata/component';\r\nimport { OnInit } from '@opten/compiler/metadata/lifecycle';\r\nimport { showMegaDropdown, hideMegaDropdown } from '../mega-dropdown';\r\nimport { isPad, isMobile } from '../../utilities/detection';\r\nimport { getStickyOffset } from '../../utilities/scroll-helper';\r\nimport { hasClass } from '@opten/dom/has-class';\r\nimport { addClass } from '@opten/dom/add-class';\r\nimport { removeClass } from '@opten/dom/remove-class';\r\n\r\nimport { ComponentRef } from '@opten/compiler/metadata/di';\r\nimport { Navbar } from './navbar';\r\n\r\nconst mouseEnterDuration = 300;\r\n\r\n// todo: update arias also in dekstop e.g. for mega-dropdown\r\n@Component({ className: 'js-navbar-mega-dropdown-toggler' })\r\nexport class NavbarMegaDropdown implements OnInit {\r\n\tprivate _backdropElement: HTMLElement;\r\n\tprivate _dropdownElement: HTMLElement;\r\n\tprivate _dropdownElements: Array;\r\n\tprivate _togglerElements: Array;\r\n\t@ComponentRef(Navbar) _navbar: Navbar;\r\n\r\n\tget _isOpen(): boolean {\r\n\t\treturn hasClass(this._dropdownElement, '--show');\r\n\t}\r\n\r\n\t// used to know if we're still animating\r\n\tprivate _timeout: number | null = null;\r\n\r\n\t// private _boundShow = this._handleShow.bind(this);\r\n\t// private _boundHide = this._handleHide.bind(this);\r\n\r\n\tconstructor(private element: HTMLElement) {\r\n\t\tthis._backdropElement = document.getElementsByClassName(\r\n\t\t\t'js-navbar-backdrop'\r\n\t\t)[0] as HTMLElement;\r\n\r\n\t\tthis._dropdownElement = element.parentElement.getElementsByClassName(\r\n\t\t\t'js-navbar-mega-dropdown'\r\n\t\t)[0] as HTMLElement;\r\n\r\n\t\tthis._dropdownElements = Array.from(\r\n\t\t\tdocument.getElementsByClassName('js-navbar-mega-dropdown')\r\n\t\t) as Array;\r\n\r\n\t\tthis._togglerElements = Array.from(\r\n\t\t\tdocument.getElementsByClassName('js-navbar-mega-dropdown-toggler')\r\n\t\t) as Array;\r\n\t}\r\n\r\n\tonInit() {\r\n\t\tthis._handleResize();\r\n\t\tthis._addDesktopListeners();\r\n window.addEventListener('resize', () => this._handleResize());\r\n\t}\r\n\r\n private _addDesktopListeners() {\r\n\t\tthis.element.addEventListener('click', this._handleClick);\r\n\t\tthis._backdropElement.addEventListener(\r\n\t\t\t'click',\r\n\t\t\tthis._handleBackdropClick\r\n\t\t);\r\n\t}\r\n\r\n\tprivate _removeDesktopListener() {\r\n\t\tif (isPad()) {\r\n\t\t\tthis.element.removeEventListener('click', this._handleClick);\r\n\t\t\tthis._backdropElement.removeEventListener(\r\n\t\t\t\t'click',\r\n\t\t\t\tthis._handleBackdropClick\r\n\t\t\t);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate _setContainerHeight() {\r\n\t\tconst container = this._dropdownElement\r\n\t\t\t.firstElementChild as HTMLElement;\r\n\r\n\t\tconst stickyOffset = getStickyOffset();\r\n if (container && stickyOffset) {\r\n if (!isMobile()) { \r\n container.style.maxHeight = `calc(100vh - ${stickyOffset}px)`;\r\n }\r\n\t\t}\r\n\t}\r\n\r\n\tprivate _setDropdownPosition() {\r\n\t\tthis._dropdownElement.style.marginLeft = '0px';\r\n\t\tif (isPad() == false) {\r\n\t\t\tconst dropdownBox = this._dropdownElement.getBoundingClientRect();\r\n\t\t\tconst spacerRight = 40;\r\n\t\t\tif (dropdownBox.right > window.innerWidth - spacerRight) {\r\n\t\t\t\tthis._dropdownElement.style.marginLeft =\r\n\t\t\t\t\t'-' +\r\n\t\t\t\t\t(dropdownBox.left +\r\n\t\t\t\t\t\tdropdownBox.width -\r\n\t\t\t\t\t\t(window.innerWidth - spacerRight)) +\r\n\t\t\t\t\t'px';\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprivate _handleResize() {\r\n\t\tthis.hide();\r\n\r\n\t\tthis._setContainerHeight();\r\n\t\t\r\n\t\tthis._setDropdownPosition();\r\n\t}\r\n\r\n\tpublic toggle() {\r\n\t\tthis._isOpen ? this.hide() : this.show();\r\n\t}\r\n\r\n\tpublic show() {\r\n\t\tif (this._isOpen) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tif (this.element.parentElement) { \r\n\t\t\taddClass(this.element.parentElement, 'is-active');\r\n\t\t}\r\n\t\taddClass(this._navbar.navbarElement, '--mega-dropdown--open');\r\n\t\tthis.element.setAttribute('aria-expanded', 'true');\r\n\t\t// check if another one is open, to hide it except the backdrop\r\n\t\tconst anyOpen =\r\n\t\t\tthis._dropdownElements.map(dropdown => hasClass(dropdown, '--show'))\r\n\t\t\t\t.length > 0;\r\n\r\n\t\tthis._dropdownElements.forEach(dropdown => {\r\n\t\t\tif (hasClass(dropdown, '--show')) {\r\n\t\t\t\thideMegaDropdown(dropdown);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tshowMegaDropdown(this._dropdownElement, this._backdropElement);\r\n\t}\r\n\r\n\tpublic hide() {\r\n\t\tif (!this._isOpen) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tif (this.element.parentElement) { \r\n\t\t\tremoveClass(this.element.parentElement, 'is-active');\r\n\t\t}\r\n\t\tremoveClass(this._navbar.navbarElement, '--mega-dropdown--open');\r\n\t\tthis.element.setAttribute('aria-expanded', 'false');\r\n\r\n\t\thideMegaDropdown(this._dropdownElement, this._backdropElement);\r\n\t}\r\n\r\n\tprivate _handleClick = (event: MouseEvent) => {\r\n\t\tthis._resetAllAriaAttributes(event.target as HTMLElement);\r\n\t\tlet element = event.target as HTMLElement;\r\n\t\tevent.preventDefault();\r\n\r\n\t\tthis.toggle();\r\n\t};\r\n\r\n\tprivate _resetAllAriaAttributes(element: HTMLElement) {\r\n\t\tlet expanded: boolean;\r\n\t\tthis._togglerElements.forEach(toggler => {\r\n\t\t\ttoggler.setAttribute('aria-expanded', 'false');\r\n\t\t});\r\n\t}\r\n\r\n\tprivate _handleBackdropClick = (event: MouseEvent) => {\r\n\t\tevent.preventDefault();\r\n\r\n\t\tthis.hide();\r\n\t};\r\n\r\n\tprivate _handleShow(event: MouseEvent) {\r\n\t\t// add an delay so we don't show it directly when the user\r\n\t\t// hover over the link\r\n\t\tif (this._timeout != null) {\r\n\t\t\t// don't do anything if we still animating\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst animate = !this._dropdownElement.style.transition;\r\n\r\n\t\tif (animate) {\r\n\t\t\tthis._timeout = setTimeout(\r\n\t\t\t\t() =>\r\n\t\t\t\t\tshowMegaDropdown(\r\n\t\t\t\t\t\tthis._dropdownElement,\r\n\t\t\t\t\t\tthis._backdropElement\r\n\t\t\t\t\t),\r\n\t\t\t\tmouseEnterDuration\r\n\t\t\t);\r\n\t\t} else {\r\n\t\t\tshowMegaDropdown(this._dropdownElement, this._backdropElement);\r\n\t\t}\r\n\r\n\t\t// close the search so we don't have to handle the backdrop\r\n\t\t// by re-adding it if the search is open...\r\n\t\t// if (this._search) {\r\n\t\t// this._search.close();\r\n\t\t// }\r\n\t}\r\n\r\n\tprivate _handleHide(event: MouseEvent) {\r\n\t\tconst toElement = (event.relatedTarget || event) as HTMLElement;\r\n\r\n\t\t// nicer animation, if we go over an other element\r\n\t\t// we just hide it instead of animate it\r\n\t\tif (\r\n\t\t\t!toElement ||\r\n\t\t\t!this.isAncestorOfClass(\r\n\t\t\t\ttoElement,\r\n\t\t\t\t'js-navbar-mega-dropdown-toggler'\r\n\t\t\t)\r\n\t\t) {\r\n\t\t\tthis._dropdownElements.forEach(\r\n\t\t\t\tdropdown => (dropdown.style.transition = null)\r\n\t\t\t);\r\n\t\t} else {\r\n\t\t\tthis._dropdownElements.forEach(\r\n\t\t\t\tdropdown => (dropdown.style.transition = 'none')\r\n\t\t\t);\r\n\t\t}\r\n\r\n\t\tthis.hide();\r\n\r\n\t\tif (this._timeout) {\r\n\t\t\tclearTimeout(this._timeout);\r\n\t\t\tthis._timeout = null;\r\n\t\t}\r\n\t}\r\n\tprivate isAncestorOfClass(element: HTMLElement, childclass: string) {\r\n\t\tlet children = element.getElementsByClassName(childclass);\r\n\t\treturn children.length < 0;\r\n\t}\r\n}\r\n","import { Component } from '@opten/compiler/metadata/component';\r\nimport { ComponentRef, ComponentRefs } from '@opten/compiler/metadata/di';\r\nimport { OnInit } from '@opten/compiler/metadata/lifecycle';\r\nimport { Navbar } from './navbar';\r\nimport { Search } from '../search';\r\nimport { isPad } from '../../utilities/detection';\r\nimport { NavbarMegaDropdown } from './navbar-mega-dropdown';\r\n\r\n@Component({ className: 'js-navbar-toggler' })\r\nexport class NavbarToggler implements OnInit {\r\n @ComponentRef(Navbar) _navbar: Navbar;\r\n @ComponentRef(Search) _search: Search;\r\n @ComponentRefs(NavbarMegaDropdown) _dropdowns: Array;\r\n\r\n constructor(private element: HTMLElement) {}\r\n\r\n onInit() {\r\n \r\n this.element.addEventListener('click', event => {\r\n event.preventDefault();\r\n\r\n if (isPad()) {\r\n // close the search so we don't have to handle the backdrop\r\n // by re-adding it if the search is open...\r\n if (this._search) {\r\n this._search.close();\r\n }\r\n\r\n this._navbar.toggle();\r\n } else {\r\n const target = event.target as HTMLElement;\r\n\r\n target.blur(); // remove focus\r\n\r\n this._dropdowns.forEach(dropdown => dropdown.hide());\r\n }\r\n });\r\n }\r\n}\r\n","import { Component } from '@opten/compiler/metadata/component';\r\nimport { OnInit } from '@opten/compiler/metadata/lifecycle';\r\nimport { hasClass } from '@opten/dom/has-class';\r\nimport { addClass } from '@opten/dom/add-class';\r\nimport { removeClass } from '@opten/dom/remove-class';\r\nimport { getSelectorElementFromElement } from '@opten/dom/get-selector-element-from-element';\r\nimport { Collapse } from '@opten/collapse/initializer';\r\nimport { isPad } from '../../utilities/detection';\r\nimport { lockScrollbar, unlockScrollbar } from '../../utilities/scroll-helper';\r\n\r\n// todo: @opten/typescrpit?\r\n@Component({ className: 'js-navbar' })\r\nexport class Navbar implements OnInit {\r\n\tprivate _backdropElement: HTMLElement;\r\n\r\n\tprivate _header: HTMLElement;\r\n\r\n\tprivate _navbarTogglerElements: Array;\r\n\tprivate _navbar1stLevelElements: Array;\r\n\tprivate _navbar2ndLevelElements: Array;\r\n\tprivate _navbarHeaderElements: Array;\r\n\r\n\tprivate _mainScrollElement: HTMLElement;\r\n\tprivate _scrollableElements: Array;\r\n\tprivate _togglerElements: Array;\r\n\r\n\tprivate _isOpen: boolean = false;\r\n\tnavbarElement: HTMLElement;\r\n\r\n\tconstructor(private element: HTMLElement) {\r\n\t\tthis.navbarElement = element;\r\n\t\tthis._backdropElement = document.getElementsByClassName(\r\n\t\t\t'js-navbar-backdrop'\r\n\t\t)[0] as HTMLElement;\r\n\r\n\t\t// todo: @ComponentRef()?\r\n\t\tthis._header = document.getElementsByClassName(\r\n\t\t\t'js-header'\r\n\t\t)[0] as HTMLElement;\r\n\r\n\t\tthis._navbar1stLevelElements = Array.from(\r\n\t\t\tdocument.querySelectorAll(`[id^=\"c-navbar-nav-true\"]`)\r\n\t\t);\r\n\r\n\t\tthis._navbar2ndLevelElements = Array.from(\r\n\t\t\tdocument.querySelectorAll(`[id^=\"c-navbar-collapse-\"]`)\r\n\t\t);\r\n\r\n\t\t// not navbar because we could also have some in the header\r\n\t\tthis._navbarTogglerElements = Array.from(\r\n\t\t\tthis._header.querySelectorAll(`[data-toggle='navbar']`)\r\n\t\t);\r\n\r\n\t\tthis._navbarHeaderElements = Array.from(\r\n\t\t\tdocument.getElementsByClassName('js-navbar-header')\r\n\t\t) as Array;\r\n\r\n\t\tthis._mainScrollElement = Array.from(element.children).filter(o =>\r\n\t\t\thasClass(o, 'c-navbar__scrollable')\r\n\t\t)[0] as HTMLElement;\r\n\r\n\t\tthis._scrollableElements = Array.from(\r\n\t\t\tthis.element.getElementsByClassName('c-navbar__scrollable')\r\n\t\t) as Array;\r\n\r\n\t\tthis._togglerElements = Array.from(\r\n\t\t\tdocument.getElementsByClassName('js-navbar-toggler')\r\n\t\t) as Array;\r\n\t}\r\n\r\n\tonInit() {\r\n\t\tthis._navbarTogglerElements.forEach(toggler => {\r\n toggler.addEventListener('click', event => {\r\n \r\n\t\t\t\tevent.preventDefault();\r\n\r\n\t\t\t\tconst target = getSelectorElementFromElement(toggler);\r\n\r\n\t\t\t\tif (target) {\r\n\t\t\t\t\tthis._click(target);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t});\r\n\r\n\t\tthis._backdropElement.addEventListener('click', () => this.close());\r\n\r\n\t\tthis._handleResize();\r\n\t\twindow.addEventListener('resize', () => this._handleResize());\r\n\t}\r\n\r\n\tprivate _handleNavbarHeaderClick = (event: MouseEvent) => {\r\n\t\tevent.preventDefault();\r\n\t\taddClass((event.target as Element).parentElement, '--collapsed');\r\n\r\n\t\tthis._scrollableElements.forEach(scrollable =>\r\n\t\t\tthis._removeScrollable(scrollable)\r\n\t\t);\r\n\r\n\t\tthis._setScrollable(this._mainScrollElement);\r\n\t};\r\n\r\n\tprivate _addMobileListeners() {\r\n\t\t// if (isPad()) {\r\n\t\t// this._navbarHeaderElements.forEach(header =>\r\n\t\t// header.addEventListener('click', this._handleNavbarHeaderClick)\r\n\t\t// );\r\n\t\t// }\r\n\t}\r\n\r\n\tprivate _removeMobileListeners() {\r\n\t\t// if (!isPad()) {\r\n\t\t// this._navbarHeaderElements.forEach(header =>\r\n\t\t// header.removeEventListener(\r\n\t\t// 'click',\r\n\t\t// this._handleNavbarHeaderClick\r\n\t\t// )\r\n\t\t// );\r\n\t\t// }\r\n\t}\r\n\r\n\tprivate _handleResize() {\r\n\t\tif (this._isOpen) {\r\n\t\t\tthis.toggle();\r\n\t\t}\r\n\r\n\t\tif (isPad()) {\r\n\t\t\tthis._addMobileListeners();\r\n\r\n\t\t\tconst height = Math.round(\r\n\t\t\t\tthis._header.getBoundingClientRect().height\r\n\t\t\t);\r\n\r\n\t\t\t// make the headers same height as the header itself\r\n\t\t\tArray.from(\r\n\t\t\t\tthis.element.getElementsByClassName('c-navbar__header')\r\n\t\t\t).forEach(header => {\r\n\t\t\t\t(header as HTMLElement).style.height = `${height}px`;\r\n\t\t\t});\r\n\r\n\t\t\tthis._navbar1stLevelElements.forEach(navbar => {\r\n\t\t\t\tconst isOpen =\r\n\t\t\t\t\thasClass(\r\n\t\t\t\t\t\tdocument.querySelector(`a[href='${navbar.id}']`),\r\n\t\t\t\t\t\t'is--active'\r\n\t\t\t\t\t) || navbar.getElementsByClassName('is--active').length;\r\n\t\t\t\tconst collapseInstance = Collapse.getInstance(\r\n\t\t\t\t\tnavbar as HTMLElement\r\n\t\t\t\t);\r\n\t\t\t\tif (isOpen) {\r\n\t\t\t\t\tif (hasClass(navbar, 'collapse--show') == false) {\r\n\t\t\t\t\t\tcollapseInstance.show();\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tcollapseInstance.hide();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis._navbar2ndLevelElements.forEach(element =>\r\n\t\t\t\tCollapse.getInstance(element as HTMLElement).destroy()\r\n\t\t\t);\r\n\t\t} else {\r\n\t\t\tthis._removeMobileListeners();\r\n\r\n\t\t\t// reset height, because we don't need it\r\n\t\t\tthis._scrollableElements.forEach(\r\n\t\t\t\tscrollable => (scrollable.style.height = null)\r\n\t\t\t);\r\n\r\n\t\t\tthis._navbar1stLevelElements.forEach(navbar =>\r\n\t\t\t\tCollapse.getInstance(navbar as HTMLElement).destroy()\r\n\t\t\t);\r\n\r\n\t\t\tthis._navbar2ndLevelElements.forEach(element =>\r\n\t\t\t\tthis._collapse(\r\n\t\t\t\t\telement,\r\n\t\t\t\t\telement.getElementsByClassName('is-active').length > 0\r\n\t\t\t\t)\r\n\t\t\t);\r\n\t\t}\r\n\t}\r\n\r\n\tpublic toggle() {\r\n\t\tthis._isOpen ? this.close() : this.open();\r\n\t}\r\n\r\n\tpublic open() {\r\n\t\tif (this._isOpen) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// mostly for iOS devices\r\n\t\tlockScrollbar(() => {\r\n\t\t\tremoveClass(this.element, '--collapsed');\r\n\r\n\t\t\t// set the width to the navbar-toggler\r\n\t\t\tconst left = Math.round(\r\n\t\t\t\tthis._togglerElements[0].getBoundingClientRect().left\r\n\t\t\t);\r\n\t\t\t/*this.element.style.width = `${left}px`;*/\r\n\r\n\t\t\taddClass(this._backdropElement, '--show');\r\n\r\n\t\t\tthis._togglerElements.forEach(toggler =>\r\n\t\t\t\taddClass(toggler, '--expanded')\r\n\t\t\t);\r\n\r\n\t\t\t// check if we're on a page (a container already has --scroll)\r\n\t\t\t// so we don't apply the scroll class otherwise we might cut off\r\n\t\t\t// a sub-navigation.\r\n\t\t\tconst hasScroll = this._scrollableElements.filter(o =>\r\n\t\t\t\thasClass(o, '--scroll')\r\n\t\t\t);\r\n\r\n\t\t\tif (!hasScroll.length) {\r\n\t\t\t\tthis._setScrollable(this._mainScrollElement);\r\n\t\t\t}\r\n\t\t\taddClass(this._header, '--expanded');\r\n\t\t\tthis._isOpen = true;\r\n\t\t});\r\n\t}\r\n\r\n\tpublic close() {\r\n\t\tif (!this._isOpen) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\taddClass(this.element, '--collapsed');\r\n\t\tthis.element.style.width = null; // reset to default\r\n\t\tremoveClass(this._backdropElement, '--show');\r\n\r\n\t\tthis._togglerElements.forEach(toggler =>\r\n\t\t\tremoveClass(toggler, '--expanded')\r\n\t\t);\r\n\r\n\t\t// mostly for iOS devices\r\n\t\tunlockScrollbar();\r\n\r\n\t\t// if (!isPad()) {\r\n\t\t// this._navbar1stLevelElements.forEach(navbar =>\r\n\t\t// Collapse.getInstance(navbar as HTMLElement).hide()\r\n\t\t// );\r\n\t\t// }\r\n\t\tremoveClass(this._header, '--expanded');\r\n\t\tthis._isOpen = false;\r\n\t}\r\n\r\n\tprivate _click(target: HTMLElement) {\r\n\t\tif (!this._isOpen) {\r\n\t\t\t// todo: better way? if we have a slower animation you see the other closing...\r\n\t\t\t// maybe we have some --collapsed in the cshtml\r\n\t\t\t// because we're on a certain page\r\n\t\t\t// so close all of them...\r\n\t\t\tthis._navbar2ndLevelElements.forEach(navbar =>\r\n\t\t\t\taddClass(navbar.firstElementChild, '--collapsed')\r\n\t\t\t);\r\n\r\n\t\t\tthis.open();\r\n\t\t}\r\n\r\n\t\tif (hasClass(target, '--collapsed')) {\r\n\t\t\tremoveClass(target, '--collapsed');\r\n\r\n\t\t\tconst scrollable = target.getElementsByClassName(\r\n\t\t\t\t'c-navbar__scrollable'\r\n\t\t\t)[0] as HTMLElement;\r\n\r\n\t\t\tthis._scrollableElements.forEach(o => this._removeScrollable(o));\r\n\t\t\tthis._setScrollable(scrollable);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate _collapse(target: HTMLElement, show: boolean) {\r\n\t\tconst navbar = target.getElementsByClassName('c-navbar')[0];\r\n\r\n\t\tconst toggler = document.querySelector(\r\n\t\t\t`a[href='#${navbar.id}']`\r\n\t\t) as HTMLElement;\r\n\r\n\t\tif (show) {\r\n\t\t\tCollapse.getInstance(target as HTMLElement).show();\r\n\t\t} else {\r\n\t\t\tCollapse.getInstance(target as HTMLElement).hide();\r\n\t\t}\r\n\r\n\t\tthis._updateAria(toggler, show);\r\n\t}\r\n\r\n\tprivate _setScrollable(element: HTMLElement) {\r\n\t\tlet height = Math.round(this._header.getBoundingClientRect().height);\r\n\r\n\t\tconst titleElement = Array.from(\r\n\t\t\telement.parentElement.children\r\n\t\t).filter(o => hasClass(o, 'c-navbar__title'))[0];\r\n\r\n\t\tif (titleElement) {\r\n\t\t\theight += Math.round(titleElement.getBoundingClientRect().height);\r\n\t\t}\r\n\r\n\t\telement.style.height = `calc(100% - ${height}px)`;\r\n\r\n\t\tremoveClass(element, '--lock');\r\n\t\taddClass(element, '--scroll');\r\n\t}\r\n\r\n\tprivate _removeScrollable(element: HTMLElement) {\r\n\t\telement.style.height = null;\r\n\r\n\t\taddClass(element, '--lock');\r\n\t\tremoveClass(element, '--scroll');\r\n\t}\r\n\r\n\tprivate _updateAria(toggler: HTMLElement, isOpen: boolean) {\r\n\t\ttoggler.setAttribute('aria-expanded', isOpen.toString().toLowerCase());\r\n\t}\r\n}\r\n","export * from './search';\r\nexport * from './search-toggler';\r\n","import { NavbarMegaDropdown } from './../navbar/navbar-mega-dropdown';\r\nimport { Component } from '@opten/compiler/metadata/component';\r\nimport { ComponentRef, ComponentRefs } from '@opten/compiler/metadata/di';\r\nimport { OnInit } from '@opten/compiler/metadata/lifecycle';\r\nimport { Navbar } from '../navbar';\r\nimport { Search, SearchDesktop } from './search';\r\nimport { isNavigationMobile } from '../../utilities/detection';\r\n\r\n\r\n@Component({ className: 'js-search-toggler' })\r\nexport class SearchToggler implements OnInit {\r\n @ComponentRef(Navbar) _navbar: Navbar;\r\n @ComponentRefs(NavbarMegaDropdown) _dropdowns: Array;\r\n @ComponentRef(Search) _search: Search;\r\n @ComponentRef(SearchDesktop) _searchDesktop: SearchDesktop;\r\n\r\n constructor(private element: HTMLElement) {}\r\n\r\n onInit() {\r\n this._search = new Search(document.getElementsByClassName('js-search')[0] as HTMLElement);\r\n this._searchDesktop = new SearchDesktop(document.getElementsByClassName('js-search-desktop')[0] as HTMLElement);\r\n this._handleResize();\r\n window.addEventListener('resize', () => this._handleResize());\r\n window.addEventListener('scroll', () => this._handleScroll());\r\n \r\n this.element.addEventListener('click', event => {\r\n event.preventDefault();\r\n if (isNavigationMobile()) {\r\n this._search.toggle();\r\n } else { \r\n this._searchDesktop.toggle();\r\n }\r\n\r\n if (this._dropdowns && this._dropdowns.length) {\r\n this._dropdowns.forEach(dropdown => dropdown.hide());\r\n }\r\n });\r\n }\r\n private _handleResize() {\r\n this._search.close();\r\n this._searchDesktop.close();\r\n\t}\r\n\r\n private _handleScroll() {\r\n this._searchDesktop.close();\r\n\t}\r\n}\r\n","import { Component } from '@opten/compiler/metadata/component';\r\nimport { OnInit } from '@opten/compiler/metadata/lifecycle';\r\nimport { hasClass } from '@opten/dom/has-class';\r\nimport { showMegaDropdown, hideMegaDropdown } from '../mega-dropdown';\r\nimport { lockScrollbar, unlockScrollbar } from '../../utilities/scroll-helper';\r\n\r\n@Component({ className: 'js-search'})\r\nexport class Search implements OnInit {\r\n\tget _isOpen(): boolean {\r\n\t\treturn hasClass(this.element, '--show');\r\n\t}\r\n\r\n\tprivate _backdropElement: HTMLElement;\r\n\r\n\tconstructor(private element: HTMLElement) {}\r\n\r\n\tonInit() {\r\n\t\t// todo: own backdrop or resuse navbar?\r\n\t\tthis._backdropElement = document.getElementsByClassName(\r\n\t\t\t'js-search-backdrop'\r\n\t\t)[0] as HTMLElement;\r\n\r\n\t\tthis._backdropElement.addEventListener('click', () => {\r\n\t\t\tconsole.log('click');\r\n\t\t\t// this.close();\r\n\t\t\tthis.close();\r\n\t\t});\r\n\t}\r\n\r\n\tpublic toggle() {\r\n\t\tthis._isOpen ? this.close() : this.open();\r\n\t}\r\n\r\n\tpublic open() {\r\n\t\tif (this._isOpen) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// mostly for iOS devices\r\n\t\tlockScrollbar(() => {\r\n\t\t\t// show and then focus search\r\n\t\t\tshowMegaDropdown(this.element, this._backdropElement, () =>\r\n\t\t\t\tthis.element.getElementsByTagName('input')[0].focus()\r\n\t\t\t);\r\n\t\t});\r\n\t}\r\n\r\n\tpublic close() {\r\n\t\tif (!this._isOpen) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// mostly for iOS devices\r\n\t\tunlockScrollbar();\r\n\r\n\t\thideMegaDropdown(this.element, this._backdropElement);\r\n\t}\r\n}\r\n\r\n@Component({ className: 'js-search-desktop'})\r\nexport class SearchDesktop implements OnInit {\r\n\tget _isOpen(): boolean {\r\n\t\treturn hasClass(this.element, '--show');\r\n\t}\r\n\r\n\tprivate _backdropElement: HTMLElement;\r\n\r\n\tconstructor(private element: HTMLElement) {}\r\n\r\n\tonInit() {\r\n\t\t// todo: own backdrop or resuse navbar?\r\n\t\tthis._backdropElement = document.getElementsByClassName(\r\n\t\t\t'js-search-backdrop'\r\n\t\t)[0] as HTMLElement;\r\n\r\n\t\tthis._backdropElement.addEventListener('click', () => {\r\n\t\t\tconsole.log('click');\r\n\t\t\tthis.close();\r\n\t\t});\r\n\t}\r\n\r\n\tpublic toggle() {\r\n\t\tthis._isOpen ? this.close() : this.open();\r\n\t}\r\n\r\n\tpublic open() {\r\n\t\tif (this._isOpen) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (!this._backdropElement || this._backdropElement == undefined) {\r\n\t\t\tthis._backdropElement = document.getElementsByClassName(\r\n\t\t\t\t'js-search-backdrop'\r\n\t\t\t)[0] as HTMLElement;\r\n\t\t}\r\n\t\t// show and then focus search\r\n\t\tshowMegaDropdown(this.element, this._backdropElement, () =>\r\n\t\t\tthis.element.getElementsByTagName('input')[0].focus()\r\n\t\t);\r\n\t}\r\n\r\n\tpublic close() {\r\n\t\tif (!this._isOpen) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tif (!this._backdropElement || this._backdropElement == undefined) {\r\n\t\t\tthis._backdropElement = document.getElementsByClassName(\r\n\t\t\t\t'js-search-backdrop'\r\n\t\t\t)[0] as HTMLElement;\r\n\t\t}\r\n\t\thideMegaDropdown(this.element, this._backdropElement);\r\n\t}\r\n}","import { Component } from '@opten/compiler/metadata/component';\r\n\r\ndeclare const Swiper: any;\r\n\r\n@Component({ className: 'js-slider' })\r\nexport class SliderComponent {\r\n\tprivate progressBar: HTMLElement;\r\n\tprivate idProgress: number= 0;\r\n\tprivate swiper;\r\n\tconstructor(private element: HTMLElement) {\r\n\t\tthis.progressBar = element.querySelector('.js-slider-progress-bar');\r\n\t\tconst autoPlayDelay = 3000;\r\n\t\tthis.swiper = new Swiper(element, {\r\n\t\t\teffect: 'fade',\r\n\t\t\tloop: true,\r\n\t\t\tspeed: 1000,\r\n\t\t\tslidesPerView: 1,\r\n\t\t\tspaceBetween: 30,\r\n\t\t\tgrabCursor: true,\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\twatchOverflow: true,\r\n\t\t\twatchSlidesProgress: true,\r\n\t\t\twatchSlidesVisibility: true,\r\n\t\t\troundLengths: true,\r\n\t\t\tautoplay: {\r\n\t\t\t\tdelay: autoPlayDelay,\r\n\t\t\t\tdisableOnInteraction: false\r\n\t\t\t},\r\n\t\t\ton: {\r\n\t\t\t\tinit: () => {\r\n\t\t\t\t\tthis.moveProgressbar(autoPlayDelay);\r\n\t\t\t\t},\r\n\t\t\t\tslideChange: () => {\r\n\t\t\t\t\tvar defaultSlideDelay = this.swiper.params.autoplay.delay;\r\n\t\t\t\t\tvar currentIndex = this.swiper.realIndex + 1;\r\n\t\t\t\t\tvar currentSlide = this.swiper.slides[currentIndex];\r\n\t\t\t\t\tvar currentSlideDelay = currentSlide.getAttribute('data-swiper-autoplay') || defaultSlideDelay;\r\n\t\t\t\t\t\r\n\t\t\t\t\tthis.moveProgressbar(currentSlideDelay);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tmoveProgressbar(currentSlideDelay) {\r\n\t\tvar width = 0;\r\n\t\tvar autoplayTime = currentSlideDelay / 100;\r\n\t\tif(this.idProgress > 0){\r\n\t\t\tclearInterval(this.idProgress);\r\n\t\t}\r\n\t\tthis.idProgress = setInterval(() => {\r\n\t\t\tif (width >= 100) {\r\n\t\t\t\tclearInterval(this.idProgress);\r\n\t\t\t} else {\r\n\t\t\t\twidth++; \r\n\t\t\t\tthis.progressBar.style.width = width + '%'; \r\n\t\t\t}\r\n\t\t}, autoplayTime);\r\n\r\n\t}\r\n\r\n}\r\n","export const MOBILE_WIDTH = 768;\r\nexport const TINY_MOBILE_WIDTH = 600;\r\nexport const PAD_WIDTH = 1200;\r\n\r\n// todo: something like Angular? Breakpoint detection?\r\nexport function isMobile() {\r\n return window.innerWidth < MOBILE_WIDTH;\r\n}\r\n\r\nexport function isNavigationMobile() {\r\n return window.innerWidth < 992;\r\n}\r\n\r\n// todo: something like Angular? Breakpoint detection?\r\nexport function isTinyMobile() {\r\n return window.innerWidth <= TINY_MOBILE_WIDTH;\r\n}\r\n\r\n// todo: something like Angular? Breakpoint detection?\r\nexport function isPad() {\r\n return window.innerWidth < PAD_WIDTH;\r\n}","import { getWindowScrollTop } from '@opten/dom/get-window-scroll-top';\r\nimport { parseCssUnit } from '@opten/number/parse-css-unit';\r\n\r\nimport { isPad, isTinyMobile } from './detection';\r\n\r\n// todo: @opten/typings?\r\n\r\nexport function lockScrollbar(\r\n\tcallback: () => void,\r\n\tbodyElement: HTMLElement = document.body\r\n) {\r\n\tif (!isPad()) {\r\n\t\tcallback();\r\n\t\treturn;\r\n\t}\r\n\r\n\t// preserve the current scrolling because `--navbar--expanded`\r\n\t// fixes the body, so iOS doesn't scroll in the background!\r\n\tconst scroll = getWindowScrollTop();\r\n\r\n\tif (scroll >= 0) {\r\n\t\trequestAnimationFrame(() => {\r\n\t\t\tif (!isTinyMobile()) {\r\n\t\t\t\tbodyElement.style.top = `${clampScroll(scroll)}px`;\r\n\r\n\t\t\t\t// todo: cache old values?\r\n\t\t\t\tdocument.body.style.height = '100%';\r\n\t\t\t\tdocument.documentElement.style.height = '100%';\r\n\r\n\t\t\t\tbodyElement.style.position = 'fixed';\r\n\t\t\t\tbodyElement.style.width = '100%';\r\n\t\t\t\tbodyElement.style.height = '100%';\r\n\t\t\t\tbodyElement.style.overflow = 'hidden';\r\n\t\t\t}\r\n\r\n\t\t\t// some weird behaviour in iOS if we set the element fixed\r\n\t\t\t// the navbar closes immediately, so we have a timeout...\r\n\t\t\tsetTimeout(() => callback(), 150);\r\n\t\t});\r\n\t}\r\n}\r\n\r\nexport function unlockScrollbar(bodyElement: HTMLElement = document.body) {\r\n\r\n\tif (!isTinyMobile()) {\r\n\t\t// preserve the cached scroll, so we can scroll\r\n\t\t// back to this state.\r\n\t\tconst scroll = clampScroll(parseCssUnit(bodyElement.style.top));\r\n\t\tconst paddingTop = parseCssUnit(bodyElement.style.paddingTop);\r\n\t\tbodyElement.style.top = null;\r\n\r\n\t\t// todo: reset old values?\r\n\t\tbodyElement.style.position = null;\r\n\t\tbodyElement.style.width = null;\r\n\t\tbodyElement.style.height = null;\r\n\t\tbodyElement.style.overflow = null;\r\n\t\tbodyElement.removeAttribute('style');\r\n\t\tbodyElement.style.paddingTop = paddingTop + 'px';\r\n\r\n\t\tif (scroll >= 0) {\r\n\t\t\tscrollTo(0, scroll);\r\n\t\t}\r\n\t}\r\n}\r\n\r\nexport function getStickyOffset() {\r\n\tconst elements: Array = [];\r\n\r\n\t// todo: better way?\r\n\tconst header = document.getElementsByClassName(\r\n\t\t'js-header'\r\n\t)[0] as HTMLElement;\r\n\tconst cookieConsent = document.getElementsByClassName(\r\n\t\t'js-cookie-consent'\r\n\t)[0] as HTMLElement;\r\n\r\n\tif (header) {\r\n\t\telements.push(header);\r\n\t}\r\n\tif (cookieConsent) {\r\n\t\telements.push(cookieConsent);\r\n\t}\r\n\r\n\treturn Math.round(\r\n\t\telements\r\n\t\t\t.map(o => o.getBoundingClientRect().height)\r\n\t\t\t.reduce((pv, cv) => pv + cv, 0)\r\n\t);\r\n}\r\n\r\nfunction clampScroll(scroll: number) {\r\n\treturn scroll === 0 ? scroll : scroll * -1;\r\n}","export function easeInOutQuad(\n\ttimeElapsed: number,\n\tstart: number,\n\tdistance: number,\n\tduration: number\n) {\n\ttimeElapsed /= duration / 2;\n\tif (timeElapsed < 1) {\n\t\treturn (distance / 2) * timeElapsed * timeElapsed + start;\n\t}\n\ttimeElapsed--;\n\treturn (-distance / 2) * (timeElapsed * (timeElapsed - 2) - 1) + start;\n}\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 { 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","export function newGuid(): string {\n\treturn 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\n\t\tconst r = (Math.random() * 16) | 0,\n\t\t\tv = c == 'x' ? r : (r & 0x3) | 0x8;\n\t\treturn v.toString(16);\n\t});\n}\n","export function wrapFunction(\r\n\tbaseFn: (this: HTMLElement, e: T) => void,\r\n\textendFn: (e: T) => void\r\n) {\r\n\treturn function (e: T) {\r\n\t\textendFn(e);\r\n\t\tbaseFn.apply(this, [e]);\r\n\t};\r\n}\r\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 { makePropDecorator } from '../util/decorators';\n\n// tslint:disable:variable-name\n\nexport interface Metadata extends Query {\n\tmetadataName: string;\n}\n\nexport interface Query {\n\tdescendants: boolean;\n\tfirst: boolean;\n\tselector: any;\n\tfilter: (e: Element) => boolean;\n}\n\nexport abstract class Query {}\n\nexport const ComponentRef = makePropDecorator(\n\t'ComponentRef',\n\t(selector?: any, data: any = {}) => ({\n\t\tselector,\n\t\tfirst: true,\n\t\tdescendants: false,\n\t\t...data,\n\t}),\n\tQuery\n);\n\nexport const ComponentRefs = makePropDecorator(\n\t'ComponentRefs',\n\t(selector?: any, data: any = {}) => ({\n\t\tselector,\n\t\tfirst: false,\n\t\tdescendants: false,\n\t\t...data,\n\t}),\n\tQuery\n);\n\nexport const ChildRef = makePropDecorator(\n\t'ChildRef',\n\t(selector?: any, data: any = {}) => ({\n\t\tselector,\n\t\tfirst: true,\n\t\tdescendants: true,\n\t\t...data,\n\t}),\n\tQuery\n);\n\nexport const ChildrenRef = makePropDecorator(\n\t'ChildrenRef',\n\t(selector?: any, data: any = {}) => ({\n\t\tselector,\n\t\tfirst: false,\n\t\tdescendants: true,\n\t\t...data,\n\t}),\n\tQuery\n);\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","import { overlay, Overlay, OverlayOptions } from '../overlay';\r\nimport { createNode } from '@opten/dom/create-node';\r\nimport { eventNamespaceFactory } from '@opten/events/event-namespace-factory';\r\nimport { KEYCODES } from '@opten/keycodes';\r\n\r\nimport { OverlayPositionBuilder } from '../overlay/position/overlay-position-builder';\r\nimport { DialogOptions } from './dialog-options';\r\n\r\n// todo: use position strategy from angular material\r\n// todo: create DialogRef\r\n\r\nexport class Dialog {\r\n\tprivate overlayRef: Overlay;\r\n\tprivate dialogOpen = false;\r\n\r\n\tprivate options: DialogOptions = {\r\n\t\thasBackdrop: true,\r\n\t\tdisableClose: false,\r\n\t\twidth: '',\r\n\t\theight: '',\r\n\t\tmaxWidth: '80vw',\r\n\t};\r\n\r\n\tprivate eventNamespaceFn = eventNamespaceFactory('opten.dialog');\r\n\r\n\tconstructor(private element: HTMLElement, options: DialogOptions = {}) {\r\n\t\t// todo: way to have data?\r\n\t\tthis.options = { ...this.options, ...options };\r\n\r\n\t\tthis.init();\r\n\t}\r\n\r\n\tprivate init() {\r\n\t\tArray.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).forEach((trigger) =>\r\n\t\t\ttrigger.addEventListener('click', (event) => {\r\n\t\t\t\tevent.preventDefault();\r\n\t\t\t\tthis.toggle();\r\n\t\t\t})\r\n\t\t);\r\n\t}\r\n\r\n\tprivate open(): void {\r\n\t\tif (this.dialogOpen) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.dialogOpen = true;\r\n\t\tthis.createOverlay().open();\r\n\r\n\t\tthis.eventNamespaceFn(this.element, 'open');\r\n\r\n\t\tthis.addListeners();\r\n\t}\r\n\r\n\tprivate close(): void {\r\n\t\tif (this.dialogOpen) {\r\n\t\t\tthis.dialogOpen = false;\r\n\r\n\t\t\tthis.overlayRef.close();\r\n\r\n\t\t\tthis.eventNamespaceFn(this.element, 'close');\r\n\t\t}\r\n\t}\r\n\r\n\tprivate toggle() {\r\n\t\tthis.dialogOpen ? this.close() : this.open();\r\n\t}\r\n\r\n\t/**\r\n\t * This method creates the overlay from the provided dialog's template and saves its\r\n\t * OverlayRef so that it can be attached to the DOM when open is called.\r\n\t */\r\n\tprivate createOverlay(): Overlay {\r\n\t\tif (!this.overlayRef) {\r\n\t\t\tconst portalElement = createNode(\r\n\t\t\t\t`
${this.element.innerHTML}
`\r\n\t\t\t);\r\n\r\n\t\t\tthis.overlayRef = overlay(\r\n\t\t\t\tportalElement,\r\n\t\t\t\tthis.getOverlayOptions(this.options)\r\n\t\t\t);\r\n\r\n\t\t\tthis.overlayRef.afterOpened = () =>\r\n\t\t\t\tthis.eventNamespaceFn(this.element, 'opened');\r\n\r\n\t\t\tthis.overlayRef.beforeClose = () => this.overlayRef.detachBackdrop();\r\n\r\n\t\t\tthis.overlayRef.afterClosed = () => {\r\n\t\t\t\tthis.eventNamespaceFn(this.element, 'closed');\r\n\t\t\t\tthis.overlayRef.dispose();\r\n\t\t\t\tthis.overlayRef = null;\r\n\t\t\t};\r\n\r\n\t\t\tif (!this.options.disableClose) {\r\n\t\t\t\tthis.overlayRef.backdropClick = () => this.close();\r\n\r\n\t\t\t\tthis.overlayRef.onKeyboardEvent = (event) => {\r\n\t\t\t\t\tif (event.keyCode === KEYCODES.ESCAPE) {\r\n\t\t\t\t\t\tthis.close();\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\treturn this.overlayRef;\r\n\t}\r\n\r\n\tprivate getOverlayOptions(dialogSettings: DialogOptions): OverlayOptions {\r\n\t\tconst state = new OverlayOptions({\r\n\t\t\t// todo: like angular material this._overlayRef.position()?;\r\n\t\t\tpositionStrategy: new OverlayPositionBuilder().global(),\r\n\t\t\thasBackdrop: dialogSettings.hasBackdrop,\r\n\t\t\tminWidth: dialogSettings.minWidth,\r\n\t\t\tminHeight: dialogSettings.minHeight,\r\n\t\t\tmaxWidth: dialogSettings.maxWidth,\r\n\t\t\tmaxHeight: dialogSettings.maxHeight,\r\n\t\t});\r\n\r\n\t\tif (dialogSettings.backdropClassName) {\r\n\t\t\tstate.backdropClassName = dialogSettings.backdropClassName;\r\n\t\t}\r\n\r\n\t\treturn state;\r\n\t}\r\n\r\n\tprivate addListeners() {\r\n\t\tif (this.overlayRef && this.overlayRef.portalElement) {\r\n\t\t\t// todo: we don't have to kill the events, right? because the html gets removed anyway?\r\n\t\t\tArray.from(\r\n\t\t\t\tthis.overlayRef.portalElement.querySelectorAll(\r\n\t\t\t\t\t'[data-dismiss=\"dialog\"]'\r\n\t\t\t\t)\r\n\t\t\t).forEach((button) =>\r\n\t\t\t\tbutton.addEventListener('click', (event) => {\r\n\t\t\t\t\tevent.preventDefault();\r\n\r\n\t\t\t\t\tthis.close();\r\n\t\t\t\t})\r\n\t\t\t);\r\n\t\t}\r\n\t}\r\n}\r\n\r\n// TODO: Should we deprecate this?\r\nexport function dialog(element: HTMLElement, options?: DialogOptions): Dialog {\r\n\treturn new Dialog(element, options);\r\n}\r\n","export * from './dialog-options';\r\nexport * from './dialog';\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 createNode(html: string): HTMLElement {\r\n\tlet element = document.createElement('div') as HTMLElement;\r\n\telement.innerHTML = html;\r\n\telement = element.firstElementChild as HTMLElement;\r\n\treturn element;\r\n}\r\n","import { hasClass } from '../has-class';\r\n\r\nexport function firstByClass(\r\n\telements: HTMLElement[],\r\n\tclassName: string\r\n): HTMLElement {\r\n\tfor (const parent of elements as HTMLElement[]) {\r\n\t\tif (hasClass(parent, className)) {\r\n\t\t\treturn parent;\r\n\t\t}\r\n\t}\r\n\r\n\treturn null;\r\n}\r\n","export function getClass(element: Element) {\r\n\treturn element.getAttribute('class') || '';\r\n}\r\n","import { getStyles } from '../get-styles';\r\n\r\nexport function getCss(\r\n\telement: Element,\r\n\tname: string,\r\n\tcomputed?: CSSStyleDeclaration\r\n): string {\r\n\tcomputed = computed || getStyles(element);\r\n\r\n\tif (computed) {\r\n\t\treturn computed.getPropertyValue(name) || computed[name];\r\n\t}\r\n\r\n\treturn undefined;\r\n}\r\n","export function getOffset(\r\n\telement: Element\r\n): { top: () => number; left: () => number } {\r\n\tconst clientRect = element.getBoundingClientRect();\r\n\r\n\treturn {\r\n\t\ttop: () => {\r\n\t\t\tconst ownerDocument = element.ownerDocument;\r\n\t\t\tconst documentTop = window.pageYOffset || ownerDocument.body.scrollTop;\r\n\t\t\treturn (\r\n\t\t\t\tclientRect.top + documentTop - ownerDocument.documentElement.clientTop\r\n\t\t\t);\r\n\t\t},\r\n\t\tleft: () => {\r\n\t\t\tconst ownerDocument = element.ownerDocument;\r\n\t\t\tconst documentLeft = window.pageXOffset || ownerDocument.body.scrollLeft;\r\n\t\t\treturn (\r\n\t\t\t\tclientRect.left +\r\n\t\t\t\tdocumentLeft -\r\n\t\t\t\townerDocument.documentElement.clientLeft\r\n\t\t\t);\r\n\t\t},\r\n\t};\r\n}\r\n","import { firstByClass } from '../first-by-class';\r\nimport { getParents } from '../get-parents';\r\n\r\nexport function getParentWithClass(\r\n\telement: HTMLElement,\r\n\tclassName: string\r\n): HTMLElement {\r\n\treturn firstByClass(getParents(element), className);\r\n}\r\n","import { isHTMLElement } from '../is-html-element';\r\n\r\nexport function getParentsOrSelf(element: HTMLElement): HTMLElement[] {\r\n\tconst parents: HTMLElement[] = [];\r\n\r\n\tif (element && isHTMLElement(element)) {\r\n\t\tparents.push(element);\r\n\r\n\t\tif (element.parentElement) {\r\n\t\t\tparents.push.apply(parents, getParentsOrSelf(element.parentElement));\r\n\t\t}\r\n\t}\r\n\r\n\treturn parents;\r\n}\r\n","import { getParentsOrSelf } from '../get-parents-or-self';\r\n\r\nexport function getParents(element: HTMLElement) {\r\n\treturn getParentsOrSelf(element.parentElement);\r\n}\r\n","import { getSelectorFromElement } from '../get-selector-from-element';\r\n\r\nexport function getSelectorElementFromElement(\r\n\telement: Element,\r\n\tattribute = 'data-target',\r\n\tfallbackHref = true\r\n): HTMLElement {\r\n\tconst selector = getSelectorFromElement(element, attribute, fallbackHref);\r\n\r\n\tif (selector && selector.indexOf('#') === 0) {\r\n\t\treturn document.getElementById(selector.substr(1, selector.length - 1));\r\n\t}\r\n\r\n\treturn null;\r\n}\r\n","export function getSelectorFromElement(\r\n\telement: Element,\r\n\tattribute = 'data-target',\r\n\tfallbackHref = true\r\n): string {\r\n\tlet selector = element.getAttribute(attribute);\r\n\r\n\tif (!selector && fallbackHref) {\r\n\t\tselector = element.getAttribute('href') || '';\r\n\t\tselector = /^#.*/i.test(selector) ? selector : null;\r\n\t}\r\n\r\n\treturn selector;\r\n}\r\n","export function getStyles(element: Element) {\r\n\tlet view = element.ownerDocument.defaultView;\r\n\r\n\tif (!view || !view.opener) {\r\n\t\tview = window;\r\n\t}\r\n\r\n\treturn view.getComputedStyle(element);\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","import { hasClass } from '../has-class';\r\n\r\nexport function isAncestorOfClass(\r\n\telement: Element,\r\n\tclassName: string,\r\n\tincludeSelf: boolean\r\n): boolean {\r\n\tlet parent = element.parentElement;\r\n\tif (includeSelf && hasClass(element, className)) {\r\n\t\treturn true;\r\n\t}\r\n\twhile (parent && parent.nodeType && parent.nodeType === 1) {\r\n\t\tif (hasClass(parent, className)) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tparent = parent.parentElement;\r\n\t}\r\n\treturn false;\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","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","export const KEYCODES = {\n\tDOWN: 40,\n\tENTER: 13,\n\tESCAPE: 27,\n\tSPACE: 32,\n\tUP: 38,\n};\n","export function parseCssUnit(unit: string): number {\n\tconst units = ['px', 'rem', 'em'];\n\n\tif (!unit || !units.filter((u) => unit.indexOf(u) !== -1).length) {\n\t\treturn 0;\n\t}\n\n\tlet parsed = unit.replace(',', '.');\n\tunits.forEach((u) => (parsed = parsed.replace(u, '')));\n\n\treturn Number(parsed);\n}\n","export * from './position/connected-position-strategy';\r\nexport * from './position/connected-position';\r\nexport * from './position/global-position-strategy';\r\nexport * from './position/overlay-position-builder';\r\nexport * from './position/position-strategy';\r\nexport * from './overlay-options';\r\nexport * from './overlay';\r\n","import { Overlay } from '../overlay';\r\n\r\nexport class OverlayKeyboardDispatcher {\r\n\t/** Currently attached overlays in the order they were attached. */\r\n\tprivate attachedOverlays: Overlay[] = [];\r\n\r\n\tprivate document: Document;\r\n\tprivate isAttached: boolean;\r\n\r\n\tconstructor(document: Document) {\r\n\t\tthis.document = document;\r\n\t}\r\n\r\n\t/** Add a new overlay to the list of attached overlay refs. */\r\n\tadd(overlayRef: Overlay): void {\r\n\t\t// Lazily start dispatcher once first overlay is added\r\n\t\tif (!this.isAttached) {\r\n\t\t\tthis.document.body.addEventListener(\r\n\t\t\t\t'keydown',\r\n\t\t\t\tthis.keydownListener,\r\n\t\t\t\ttrue\r\n\t\t\t);\r\n\t\t\tthis.isAttached = true;\r\n\t\t}\r\n\r\n\t\tthis.attachedOverlays.push(overlayRef);\r\n\t}\r\n\r\n\t/** Remove an overlay from the list of attached overlay refs. */\r\n\tremove(overlayRef: Overlay): void {\r\n\t\tconst index = this.attachedOverlays.indexOf(overlayRef);\r\n\r\n\t\tif (index > -1) {\r\n\t\t\tthis.attachedOverlays.splice(index, 1);\r\n\t\t}\r\n\r\n\t\t// Remove the global listener once there are no more overlays.\r\n\t\tif (this.attachedOverlays.length === 0) {\r\n\t\t\tthis._detach();\r\n\t\t}\r\n\t}\r\n\r\n\t/** Select the appropriate overlay from a keydown event. */\r\n\tprivate _selectOverlayFromEvent(event: KeyboardEvent): Overlay {\r\n\t\t// Check if any overlays contain the event\r\n\t\tconst targetedOverlay = this.attachedOverlays.find((overlay) => {\r\n\t\t\treturn (\r\n\t\t\t\toverlay.overlayElement === event.target ||\r\n\t\t\t\toverlay.overlayElement.contains(event.target as HTMLElement)\r\n\t\t\t);\r\n\t\t});\r\n\r\n\t\t// Use the overlay if it exists, otherwise choose the most recently attached one\r\n\t\treturn (\r\n\t\t\ttargetedOverlay || this.attachedOverlays[this.attachedOverlays.length - 1]\r\n\t\t);\r\n\t}\r\n\r\n\t/** Detaches the global keyboard event listener. */\r\n\tprivate _detach() {\r\n\t\tif (this.isAttached) {\r\n\t\t\tthis.document.body.removeEventListener(\r\n\t\t\t\t'keydown',\r\n\t\t\t\tthis.keydownListener,\r\n\t\t\t\ttrue\r\n\t\t\t);\r\n\t\t\tthis.isAttached = false;\r\n\t\t}\r\n\t}\r\n\r\n\t/** Keyboard event listener that will be attached to the body. */\r\n\tprivate keydownListener = (event: KeyboardEvent) => {\r\n\t\tif (this.attachedOverlays.length) {\r\n\t\t\t// Dispatch keydown event to the correct overlay.\r\n\t\t\tconst overlay = this._selectOverlayFromEvent(event);\r\n\r\n\t\t\tif (overlay.onKeyboardEvent) {\r\n\t\t\t\toverlay.onKeyboardEvent(event);\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n}\r\n","import { PositionStrategy } from './position/position-strategy';\r\nimport { ScrollStrategy } from './scroll/scroll-strategy';\r\n\r\nexport class OverlayOptions {\r\n\tpositionStrategy?: PositionStrategy;\r\n\tscrollStrategy?: ScrollStrategy;\r\n\tclassName? = 'c-overlay';\r\n\toverlayClassName?: string;\r\n\tbackdropClassName? = 'c-overlay-dark-backdrop';\r\n\thasBackdrop? = true;\r\n\twidth?: number | string;\r\n\theight?: number | string;\r\n\tminWidth?: number | string;\r\n\tminHeight?: number | string;\r\n\tmaxWidth?: number | string;\r\n\tmaxHeight?: number | string;\r\n\ttransitionDuration? = 300;\r\n\r\n\tconstructor(options?: OverlayOptions) {\r\n\t\tif (options) {\r\n\t\t\tObject.keys(options)\r\n\t\t\t\t.filter((key) => typeof options[key] !== 'undefined')\r\n\t\t\t\t.forEach((key) => (this[key] = options[key]));\r\n\t\t}\r\n\t}\r\n}\r\n","import { addClass } from '@opten/dom/add-class';\r\nimport { newGuid } from '@opten/common/new-guid';\r\nimport { createNode } from '@opten/dom/create-node';\r\nimport { isAncestorOfClass } from '@opten/dom/is-ancestor-of-class';\r\nimport { removeClass } from '@opten/dom/remove-class';\r\nimport { addTransitionEndListener } from '@opten/transition/add-transition-end-listener';\r\n\r\nimport { OverlayOptions } from './overlay-options';\r\nimport { OverlayKeyboardDispatcher } from './keyboard/overlay-keyboard-dispatcher';\r\n\r\n// todo: do it more like angular with backdrop configuration etc...\r\nexport class Overlay {\r\n\toverlayElement: HTMLElement;\r\n\tonAttached: () => void;\r\n\tonDetached: () => void;\r\n\tbeforeOpen: () => void;\r\n\tbeforeClose: () => void;\r\n\tafterOpened: () => void;\r\n\tafterClosed: () => void;\r\n\tonKeyboardEvent: (event: KeyboardEvent) => void;\r\n\tbackdropClick: (event: MouseEvent) => void;\r\n\r\n\tprivate uuid: string;\r\n\tprivate options: OverlayOptions;\r\n\tprivate overlayContainerElement: HTMLElement;\r\n\tprivate backdropElement: HTMLElement;\r\n\tprivate attached = false;\r\n\tprivate keyboardDispatcher = new OverlayKeyboardDispatcher(document);\r\n\r\n\tconstructor(public portalElement: HTMLElement, options?: OverlayOptions) {\r\n\t\tthis.options = new OverlayOptions(options);\r\n\r\n\t\tthis.uuid = newGuid();\r\n\r\n\t\tif (options.scrollStrategy) {\r\n\t\t\toptions.scrollStrategy.attach(this);\r\n\t\t}\r\n\t}\r\n\r\n\tcreate() {\r\n\t\t// we want to re-use existing containers\r\n\t\t// so search it in the dom before we create it again!\r\n\t\tconst overlayContainerElement = document.getElementsByClassName(\r\n\t\t\t`${this.options.className}__container`\r\n\t\t)[0] as HTMLElement;\r\n\r\n\t\tif (overlayContainerElement) {\r\n\t\t\tthis.overlayContainerElement = overlayContainerElement;\r\n\t\t} else {\r\n\t\t\tthis.overlayContainerElement = createNode(\r\n\t\t\t\t`
`\r\n\t\t\t);\r\n\r\n\t\t\tdocument.body.insertBefore(\r\n\t\t\t\tthis.overlayContainerElement,\r\n\t\t\t\tdocument.body.lastElementChild\r\n\t\t\t);\r\n\t\t}\r\n\r\n\t\tthis.overlayElement = createNode(\r\n\t\t\t`
`\r\n\t\t);\r\n\r\n\t\tif (this.options.overlayClassName) {\r\n\t\t\taddClass(this.overlayElement, this.options.overlayClassName);\r\n\t\t}\r\n\r\n\t\tthis.overlayContainerElement.appendChild(this.overlayElement);\r\n\t}\r\n\r\n\thasAttached() {\r\n\t\treturn this.attached;\r\n\t}\r\n\r\n\tdetachBackdrop() {\r\n\t\tconst backdropToDetach = this.backdropElement;\r\n\r\n\t\tif (backdropToDetach) {\r\n\t\t\tconst finishDetach = () => {\r\n\t\t\t\t// It may not be attached to anything in certain cases (e.g. unit tests).\r\n\t\t\t\tif (backdropToDetach && backdropToDetach.parentNode) {\r\n\t\t\t\t\tbackdropToDetach.parentNode.removeChild(backdropToDetach);\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// It is possible that a new portal has been attached to this overlay since we started\r\n\t\t\t\t// removing the backdrop. If that is the case, only clear the backdrop reference if it\r\n\t\t\t\t// is still the same instance that we started to remove.\r\n\t\t\t\tif (this.backdropElement === backdropToDetach) {\r\n\t\t\t\t\tthis.backdropElement = null;\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\t\tremoveClass(backdropToDetach, 'is-showing');\r\n\r\n\t\t\tif (this.options.backdropClassName) {\r\n\t\t\t\tremoveClass(backdropToDetach, this.options.backdropClassName);\r\n\t\t\t}\r\n\r\n\t\t\taddTransitionEndListener(backdropToDetach, finishDetach, 500);\r\n\r\n\t\t\t// If the backdrop doesn't have a transition, the `transitionend` event won't fire.\r\n\t\t\t// In this case we make it unclickable and we try to remove it after a delay.\r\n\t\t\tbackdropToDetach.style.pointerEvents = 'none';\r\n\t\t}\r\n\t}\r\n\r\n\t/** Updates the position of the overlay based on the position strategy. */\r\n\tupdatePosition() {\r\n\t\tif (this.options.positionStrategy) {\r\n\t\t\tthis.options.positionStrategy.apply();\r\n\t\t}\r\n\t}\r\n\r\n\tgetOptions() {\r\n\t\treturn this.options;\r\n\t}\r\n\r\n\t/** Update the size properties of the overlay. */\r\n\tupdateSize(sizeConfig: OverlaySizeConfig) {\r\n\t\tthis.options = { ...this.options, ...sizeConfig };\r\n\t\tthis._updateElementSize();\r\n\t}\r\n\r\n\topen() {\r\n\t\tthis._attach();\r\n\r\n\t\t// Update the position once, so that the overlay will be fully rendered\r\n\t\t// before attempting to position it, as the position may depend on the size of the rendered\r\n\t\t// content.\r\n\t\tthis.updatePosition();\r\n\r\n\t\t// animate\r\n\t\taddClass(this.portalElement, 'is-showing');\r\n\r\n\t\tif (this.beforeOpen) {\r\n\t\t\tthis.beforeOpen();\r\n\t\t}\r\n\r\n\t\t// todo: Aniamte like Angular Material?\r\n\t\taddTransitionEndListener(\r\n\t\t\tthis.portalElement,\r\n\t\t\t() => {\r\n\t\t\t\tremoveClass(this.portalElement, 'is-showing');\r\n\t\t\t\taddClass(this.portalElement, 'is-visible');\r\n\r\n\t\t\t\tif (this.afterOpened) {\r\n\t\t\t\t\tthis.afterOpened();\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tthis.options.transitionDuration\r\n\t\t);\r\n\t}\r\n\r\n\tclose() {\r\n\t\tthis._detach();\r\n\r\n\t\t// animate\r\n\t\taddClass(this.portalElement, 'is-fade-out');\r\n\r\n\t\tif (this.beforeClose) {\r\n\t\t\tthis.beforeClose();\r\n\t\t}\r\n\r\n\t\taddTransitionEndListener(\r\n\t\t\tthis.portalElement,\r\n\t\t\t() => {\r\n\t\t\t\tremoveClass(this.portalElement, 'is-fade-out');\r\n\t\t\t\t// todo: why?! otherwise animation only works once...\r\n\t\t\t\tremoveClass(this.portalElement, 'is-showing');\r\n\t\t\t\tremoveClass(this.portalElement, 'is-visible');\r\n\r\n\t\t\t\t// should be called by caller\r\n\t\t\t\t// this._dispose();\r\n\r\n\t\t\t\tif (this.afterClosed) {\r\n\t\t\t\t\tthis.afterClosed();\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tthis.options.transitionDuration\r\n\t\t);\r\n\t}\r\n\r\n\t/** Cleans up the overlay from the DOM. */\r\n\tdispose() {\r\n\t\tif (this.portalElement && this.portalElement.parentElement) {\r\n\t\t\tthis.portalElement.parentElement!.removeChild(this.portalElement);\r\n\t\t}\r\n\r\n\t\tif (\r\n\t\t\tthis.options.positionStrategy &&\r\n\t\t\tthis.options.positionStrategy.dispose\r\n\t\t) {\r\n\t\t\tthis.options.positionStrategy.dispose();\r\n\t\t}\r\n\r\n\t\tif (this.options.scrollStrategy) {\r\n\t\t\tthis.options.scrollStrategy.disable();\r\n\t\t}\r\n\r\n\t\tthis.detachBackdrop();\r\n\r\n\t\t// Remove this overlay from keyboard dispatcher tracking\r\n\t\tthis.keyboardDispatcher.remove(this);\r\n\t}\r\n\r\n\tprivate _attach() {\r\n\t\t// todo: do it like angular so we have this method public\r\n\t\t// and we transfer the portalElement over here?\r\n\t\t// it should work with referencing the portalElement in e.g. select.ts\r\n\t\t// to calculate stuff. Because it works in menu.ts too (this.menu.portalElement.parentElement is c-overlay)!\r\n\t\t// Maybe then we can use ._overlayRef.position()... instead of OverlayPositionBuilder\r\n\r\n\t\tif (this.options.positionStrategy) {\r\n\t\t\tthis.options.positionStrategy.attach(this);\r\n\t\t}\r\n\r\n\t\tif (this.options.scrollStrategy) {\r\n\t\t\tthis.options.scrollStrategy.enable();\r\n\t\t}\r\n\r\n\t\tthis.overlayElement.appendChild(this.portalElement);\r\n\r\n\t\tthis._updateElementSize();\r\n\r\n\t\tthis.overlayElement.style.pointerEvents = 'auto';\r\n\r\n\t\tif (this.options.hasBackdrop) {\r\n\t\t\tthis._attachBackdrop();\r\n\t\t}\r\n\r\n\t\tthis.attached = true;\r\n\r\n\t\t// Track this overlay by the keyboard dispatcher\r\n\t\tthis.keyboardDispatcher.add(this);\r\n\r\n\t\tif (this.onAttached) {\r\n\t\t\tthis.onAttached();\r\n\t\t}\r\n\t}\r\n\r\n\tprivate _detach() {\r\n\t\tif (!this.hasAttached()) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.detachBackdrop();\r\n\r\n\t\t// When the overlay is detached, the element should disable pointer events.\r\n\t\t// This is necessary because otherwise the element will cover the page and disable\r\n\t\t// pointer events therefore. Depends on the position strategy and the applied boundaries.\r\n\t\tthis.overlayElement.style.pointerEvents = 'none';\r\n\r\n\t\tif (this.options.positionStrategy && this.options.positionStrategy.detach) {\r\n\t\t\tthis.options.positionStrategy.detach();\r\n\t\t}\r\n\r\n\t\tif (this.options.scrollStrategy) {\r\n\t\t\tthis.options.scrollStrategy.disable();\r\n\t\t}\r\n\r\n\t\t// Remove this overlay from keyboard dispatcher tracking\r\n\t\tthis.keyboardDispatcher.remove(this);\r\n\r\n\t\tif (this.onDetached) {\r\n\t\t\tthis.onDetached();\r\n\t\t}\r\n\t}\r\n\r\n\t/** Attaches a backdrop for this overlay. */\r\n\tprivate _attachBackdrop() {\r\n\t\tthis.backdropElement = createNode(\r\n\t\t\t`
`\r\n\t\t);\r\n\r\n\t\tif (this.options.backdropClassName) {\r\n\t\t\taddClass(this.backdropElement, this.options.backdropClassName);\r\n\t\t}\r\n\r\n\t\t// Insert the backdrop before the overlay in the DOM order,\r\n\t\t// in order to handle stacked overlays properly.\r\n\t\tthis.overlayElement.parentElement!.insertBefore(\r\n\t\t\tthis.backdropElement,\r\n\t\t\tthis.overlayElement\r\n\t\t);\r\n\r\n\t\t// Forward backdrop clicks such that the consumer of the overlay can perform whatever\r\n\t\t// action desired when such a click occurs (usually closing the overlay).\r\n\t\tthis.backdropElement.addEventListener('click', (event: MouseEvent) =>\r\n\t\t\tthis._handleBackdropClick(event)\r\n\t\t);\r\n\r\n\t\t// Add class to fade-in the backdrop after one frame.\r\n\t\trequestAnimationFrame(() => {\r\n\t\t\tif (this.backdropElement) {\r\n\t\t\t\taddClass(this.backdropElement, 'is-showing');\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t/** Updates the size of the overlay element based on the overlay config. */\r\n\tprivate _updateElementSize() {\r\n\t\tif (this.options.width || this.options.width === 0) {\r\n\t\t\tthis.overlayElement.style.width = formatCssUnit(this.options.width);\r\n\t\t}\r\n\r\n\t\tif (this.options.height || this.options.height === 0) {\r\n\t\t\tthis.overlayElement.style.height = formatCssUnit(this.options.height);\r\n\t\t}\r\n\r\n\t\tif (this.options.minWidth || this.options.minWidth === 0) {\r\n\t\t\tthis.overlayElement.style.minWidth = formatCssUnit(this.options.minWidth);\r\n\t\t}\r\n\r\n\t\tif (this.options.minHeight || this.options.minHeight === 0) {\r\n\t\t\tthis.overlayElement.style.minHeight = formatCssUnit(\r\n\t\t\t\tthis.options.minHeight\r\n\t\t\t);\r\n\t\t}\r\n\r\n\t\tif (this.options.maxWidth || this.options.maxWidth === 0) {\r\n\t\t\tthis.overlayElement.style.maxWidth = formatCssUnit(this.options.maxWidth);\r\n\t\t}\r\n\r\n\t\tif (this.options.maxHeight || this.options.maxHeight === 0) {\r\n\t\t\tthis.overlayElement.style.maxHeight = formatCssUnit(\r\n\t\t\t\tthis.options.maxHeight\r\n\t\t\t);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate _handleBackdropClick(event: MouseEvent) {\r\n\t\tif (\r\n\t\t\t!isAncestorOfClass(event.target as Element, this.options.className, true)\r\n\t\t) {\r\n\t\t\tif (this.backdropClick) {\r\n\t\t\t\tthis.backdropClick(event);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\nexport function overlay(\r\n\telement: HTMLElement,\r\n\toptions?: OverlayOptions\r\n): Overlay {\r\n\tconst overlayRef = new Overlay(element, options);\r\n\r\n\toverlayRef.create();\r\n\r\n\treturn overlayRef;\r\n}\r\n\r\nfunction formatCssUnit(value: number | string) {\r\n\t// todo: @opten/typescript?\r\n\treturn typeof value === 'string' ? (value as string) : `${value}px`;\r\n}\r\n\r\n/** Size properties for an overlay. */\r\nexport interface OverlaySizeConfig {\r\n\twidth?: number | string;\r\n\theight?: number | string;\r\n\tminWidth?: number | string;\r\n\tminHeight?: number | string;\r\n\tmaxWidth?: number | string;\r\n\tmaxHeight?: number | string;\r\n}\r\n","import { isElementClippedByScrolling } from '@opten/viewport/is-element-clipped-by-scrolling';\r\nimport { isElementScrolledOutsideView } from '@opten/viewport/is-element-scrolled-outside-view';\r\n\r\nimport { PositionStrategy } from './position-strategy';\r\n\r\nimport {\r\n\tConnectionPositionPair,\r\n\tOriginConnectionPosition,\r\n\tOverlayConnectionPosition,\r\n\tScrollingVisibility,\r\n\tConnectedOverlayPositionChange,\r\n\tvalidateHorizontalPosition,\r\n\tvalidateVerticalPosition,\r\n} from './connected-position';\r\n\r\nimport { Overlay } from '../overlay';\r\n\r\nexport class ConnectedPositionStrategy implements PositionStrategy {\r\n\tonPositionChange: (change: ConnectedOverlayPositionChange) => void;\r\n\r\n\t/** The offset in pixels for the overlay connection point on the x-axis */\r\n\tprivate offsetX = 0;\r\n\r\n\t/** The offset in pixels for the overlay connection point on the y-axis */\r\n\tprivate offsetY = 0;\r\n\r\n\t/** The Scrollable containers used to check scrollable view properties on position change. */\r\n\tprivate scrollables: HTMLElement[] = [];\r\n\r\n\t/** Ordered list of preferred positions, from most to least desirable. */\r\n\tprivate preferredPositions: ConnectionPositionPair[] = [];\r\n\r\n\t/** The origin element against which the overlay will be positioned. */\r\n\tprivate origin: HTMLElement;\r\n\r\n\t/** The overlay pane element. */\r\n\tprivate pane: HTMLElement;\r\n\r\n\t/** The last position to have been calculated as the best fit position. */\r\n\tprivate lastConnectedPosition: ConnectionPositionPair;\r\n\r\n\t/** Whether the position strategy is applied currently. */\r\n\tprivate applied = false;\r\n\r\n\t/** Whether the overlay position is locked. */\r\n\tprivate positionLocked = false;\r\n\r\n\tprivate boundResizeChange = this._handleResizeChange.bind(this);\r\n\r\n\tconstructor(\r\n\t\toriginPos: OriginConnectionPosition,\r\n\t\toverlayPos: OverlayConnectionPosition,\r\n\t\tprivate connectedTo: HTMLElement,\r\n\t\tprivate document: Document\r\n\t) {\r\n\t\tthis.origin = this.connectedTo;\r\n\t\tthis.withFallbackPosition(originPos, overlayPos);\r\n\t}\r\n\r\n\t/** Ordered list of preferred positions, from most to least desirable. */\r\n\tget positions(): ConnectionPositionPair[] {\r\n\t\treturn this.preferredPositions;\r\n\t}\r\n\r\n\t/** Attach this position strategy to an overlay. */\r\n\tattach(overlayRef: Overlay): void {\r\n\t\tthis.pane = overlayRef.overlayElement;\r\n\r\n\t\twindow.addEventListener('resize', this.boundResizeChange);\r\n\t}\r\n\r\n\t/** @docs-private */\r\n\tdetach() {\r\n\t\tthis.applied = false;\r\n\t\twindow.removeEventListener('resize', this.boundResizeChange);\r\n\t}\r\n\r\n\t/** Disposes all resources used by the position strategy. */\r\n\tdispose() {\r\n\t\tthis.detach();\r\n\t}\r\n\r\n\t/**\r\n\t * Updates the position of the overlay element, using whichever preferred position relative\r\n\t * to the origin fits on-screen.\r\n\t * @docs-private\r\n\t */\r\n\tapply(): void {\r\n\t\t// If the position has been applied already (e.g. when the overlay was opened) and the\r\n\t\t// consumer opted into locking in the position, re-use the old position, in order to\r\n\t\t// prevent the overlay from jumping around.\r\n\t\tif (this.applied && this.positionLocked && this.lastConnectedPosition) {\r\n\t\t\tthis.recalculateLastPosition();\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis._validatePositions();\r\n\t\tthis.applied = true;\r\n\r\n\t\t// We need the bounding rects for the origin and the overlay to determine how to position\r\n\t\t// the overlay relative to the origin.\r\n\t\tconst element = this.pane;\r\n\t\tconst originRect = this.origin.getBoundingClientRect();\r\n\t\tconst overlayRect = element.getBoundingClientRect();\r\n\r\n\t\t// We use the viewport size to determine whether a position would go off-screen.\r\n\t\tconst viewportSize = {\r\n\t\t\twidth: window.innerWidth,\r\n\t\t\theight: window.innerHeight,\r\n\t\t};\r\n\r\n\t\t// Fallback point if none of the fallbacks fit into the viewport.\r\n\t\tlet fallbackPoint: OverlayPoint | undefined;\r\n\t\tlet fallbackPosition: ConnectionPositionPair | undefined;\r\n\r\n\t\t// We want to place the overlay in the first of the preferred positions such that the\r\n\t\t// overlay fits on-screen.\r\n\t\tfor (const pos of this.preferredPositions) {\r\n\t\t\t// Get the (x, y) point of connection on the origin, and then use that to get the\r\n\t\t\t// (top, left) coordinate for the overlay at `pos`.\r\n\t\t\tconst originPoint = this._getOriginConnectionPoint(originRect, pos);\r\n\t\t\tconst overlayPoint = this._getOverlayPoint(\r\n\t\t\t\toriginPoint,\r\n\t\t\t\toverlayRect,\r\n\t\t\t\tviewportSize,\r\n\t\t\t\tpos\r\n\t\t\t);\r\n\r\n\t\t\t// If the overlay in the calculated position fits on-screen, put it there and we're done.\r\n\t\t\tif (overlayPoint.fitsInViewport) {\r\n\t\t\t\tthis._setElementPosition(element, overlayRect, overlayPoint, pos);\r\n\r\n\t\t\t\t// Save the last connected position in case the position needs to be re-calculated.\r\n\t\t\t\tthis.lastConnectedPosition = pos;\r\n\r\n\t\t\t\treturn;\r\n\t\t\t} else if (\r\n\t\t\t\t!fallbackPoint ||\r\n\t\t\t\tfallbackPoint.visibleArea < overlayPoint.visibleArea\r\n\t\t\t) {\r\n\t\t\t\tfallbackPoint = overlayPoint;\r\n\t\t\t\tfallbackPosition = pos;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// If none of the preferred positions were in the viewport, take the one\r\n\t\t// with the largest visible area.\r\n\t\tthis._setElementPosition(\r\n\t\t\telement,\r\n\t\t\toverlayRect,\r\n\t\t\tfallbackPoint!,\r\n\t\t\tfallbackPosition!\r\n\t\t);\r\n\t}\r\n\r\n\t/**\r\n\t * Re-positions the overlay element with the trigger in its last calculated position,\r\n\t * even if a position higher in the \"preferred positions\" list would now fit. This\r\n\t * allows one to re-align the panel without changing the orientation of the panel.\r\n\t */\r\n\trecalculateLastPosition(): void {\r\n\t\t// If the overlay has never been positioned before, do nothing.\r\n\t\tif (!this.lastConnectedPosition) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis._validatePositions();\r\n\r\n\t\tconst originRect = this.origin.getBoundingClientRect();\r\n\t\tconst overlayRect = this.pane.getBoundingClientRect();\r\n\t\tconst viewportSize = {\r\n\t\t\twidth: window.innerWidth,\r\n\t\t\theight: window.innerHeight,\r\n\t\t};\r\n\t\tconst lastPosition =\r\n\t\t\tthis.lastConnectedPosition || this.preferredPositions[0];\r\n\r\n\t\tconst originPoint = this._getOriginConnectionPoint(\r\n\t\t\toriginRect,\r\n\t\t\tlastPosition\r\n\t\t);\r\n\t\tconst overlayPoint = this._getOverlayPoint(\r\n\t\t\toriginPoint,\r\n\t\t\toverlayRect,\r\n\t\t\tviewportSize,\r\n\t\t\tlastPosition\r\n\t\t);\r\n\t\tthis._setElementPosition(\r\n\t\t\tthis.pane,\r\n\t\t\toverlayRect,\r\n\t\t\toverlayPoint,\r\n\t\t\tlastPosition\r\n\t\t);\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the list of Scrollable containers that host the origin element so that\r\n\t * on reposition we can evaluate if it or the overlay has been clipped or outside view. Every\r\n\t * Scrollable must be an ancestor element of the strategy's origin element.\r\n\t */\r\n\twithScrollableContainers(scrollables: HTMLElement[]): this {\r\n\t\tthis.scrollables = scrollables;\r\n\t\treturn this;\r\n\t}\r\n\r\n\t/**\r\n\t * Adds a new preferred fallback position.\r\n\t * @param originPos\r\n\t * @param overlayPos\r\n\t */\r\n\twithFallbackPosition(\r\n\t\toriginPos: OriginConnectionPosition,\r\n\t\toverlayPos: OverlayConnectionPosition,\r\n\t\toffsetX?: number,\r\n\t\toffsetY?: number\r\n\t): this {\r\n\t\tconst position = new ConnectionPositionPair(\r\n\t\t\toriginPos,\r\n\t\t\toverlayPos,\r\n\t\t\toffsetX,\r\n\t\t\toffsetY\r\n\t\t);\r\n\t\tthis.preferredPositions.push(position);\r\n\t\treturn this;\r\n\t}\r\n\r\n\t/**\r\n\t * Sets an offset for the overlay's connection point on the x-axis\r\n\t * @param offset New offset in the X axis.\r\n\t */\r\n\twithOffsetX(offset: number): this {\r\n\t\tthis.offsetX = offset;\r\n\t\treturn this;\r\n\t}\r\n\r\n\t/**\r\n\t * Sets an offset for the overlay's connection point on the y-axis\r\n\t * @param offset New offset in the Y axis.\r\n\t */\r\n\twithOffsetY(offset: number): this {\r\n\t\tthis.offsetY = offset;\r\n\t\treturn this;\r\n\t}\r\n\r\n\t/**\r\n\t * Sets whether the overlay's position should be locked in after it is positioned\r\n\t * initially. When an overlay is locked in, it won't attempt to reposition itself\r\n\t * when the position is re-applied (e.g. when the user scrolls away).\r\n\t * @param isLocked Whether the overlay should locked in.\r\n\t */\r\n\twithLockedPosition(isLocked: boolean): this {\r\n\t\tthis.positionLocked = isLocked;\r\n\t\treturn this;\r\n\t}\r\n\r\n\t/**\r\n\t * Overwrites the current set of positions with an array of new ones.\r\n\t * @param positions Position pairs to be set on the strategy.\r\n\t */\r\n\twithPositions(positions: ConnectionPositionPair[]): this {\r\n\t\tthis.preferredPositions = positions.slice();\r\n\t\treturn this;\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the origin element, relative to which to position the overlay.\r\n\t * @param origin Reference to the new origin element.\r\n\t */\r\n\tsetOrigin(origin: HTMLElement): this {\r\n\t\tthis.origin = origin;\r\n\t\treturn this;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the horizontal (x) \"start\" dimension\r\n\t * @param rect\r\n\t */\r\n\tprivate _getStartX(rect: ClientRect): number {\r\n\t\treturn rect.left;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the horizontal (x) \"end\" dimension\r\n\t * @param rect\r\n\t */\r\n\tprivate _getEndX(rect: ClientRect): number {\r\n\t\treturn rect.right;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the (x, y) coordinate of a connection point on the origin based on a relative position.\r\n\t * @param originRect\r\n\t * @param pos\r\n\t */\r\n\tprivate _getOriginConnectionPoint(\r\n\t\toriginRect: ClientRect,\r\n\t\tpos: ConnectionPositionPair\r\n\t): Point {\r\n\t\tconst originStartX = this._getStartX(originRect);\r\n\t\tconst originEndX = this._getEndX(originRect);\r\n\r\n\t\tlet x: number;\r\n\t\tif (pos.originX === 'center') {\r\n\t\t\tx = originStartX + originRect.width / 2;\r\n\t\t} else {\r\n\t\t\tx = pos.originX === 'start' ? originStartX : originEndX;\r\n\t\t}\r\n\r\n\t\tlet y: number;\r\n\t\tif (pos.originY === 'center') {\r\n\t\t\ty = originRect.top + originRect.height / 2;\r\n\t\t} else {\r\n\t\t\ty = pos.originY === 'top' ? originRect.top : originRect.bottom;\r\n\t\t}\r\n\r\n\t\treturn { x, y };\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the (x, y) coordinate of the top-left corner of the overlay given a given position and\r\n\t * origin point to which the overlay should be connected, as well as how much of the element\r\n\t * would be inside the viewport at that position.\r\n\t */\r\n\tprivate _getOverlayPoint(\r\n\t\toriginPoint: Point,\r\n\t\toverlayRect: ClientRect,\r\n\t\tviewportSize: { width: number; height: number },\r\n\t\tpos: ConnectionPositionPair\r\n\t): OverlayPoint {\r\n\t\t// Calculate the (overlayStartX, overlayStartY), the start of the potential overlay position\r\n\t\t// relative to the origin point.\r\n\t\tlet overlayStartX: number;\r\n\t\tif (pos.overlayX === 'center') {\r\n\t\t\toverlayStartX = -overlayRect.width / 2;\r\n\t\t} else if (pos.overlayX === 'start') {\r\n\t\t\toverlayStartX = 0;\r\n\t\t} else {\r\n\t\t\toverlayStartX = -overlayRect.width;\r\n\t\t}\r\n\r\n\t\tlet overlayStartY: number;\r\n\t\tif (pos.overlayY === 'center') {\r\n\t\t\toverlayStartY = -overlayRect.height / 2;\r\n\t\t} else {\r\n\t\t\toverlayStartY = pos.overlayY === 'top' ? 0 : -overlayRect.height;\r\n\t\t}\r\n\r\n\t\t// The (x, y) offsets of the overlay based on the current position.\r\n\t\tconst offsetX =\r\n\t\t\ttypeof pos.offsetX === 'undefined' ? this.offsetX : pos.offsetX;\r\n\t\tconst offsetY =\r\n\t\t\ttypeof pos.offsetY === 'undefined' ? this.offsetY : pos.offsetY;\r\n\r\n\t\t// The (x, y) coordinates of the overlay.\r\n\t\tconst x = originPoint.x + overlayStartX + offsetX;\r\n\t\tconst y = originPoint.y + overlayStartY + offsetY;\r\n\r\n\t\t// How much the overlay would overflow at this position, on each side.\r\n\t\tconst leftOverflow = 0 - x;\r\n\t\tconst rightOverflow = x + overlayRect.width - viewportSize.width;\r\n\t\tconst topOverflow = 0 - y;\r\n\t\tconst bottomOverflow = y + overlayRect.height - viewportSize.height;\r\n\r\n\t\t// Visible parts of the element on each axis.\r\n\t\tconst visibleWidth = this._subtractOverflows(\r\n\t\t\toverlayRect.width,\r\n\t\t\tleftOverflow,\r\n\t\t\trightOverflow\r\n\t\t);\r\n\t\tconst visibleHeight = this._subtractOverflows(\r\n\t\t\toverlayRect.height,\r\n\t\t\ttopOverflow,\r\n\t\t\tbottomOverflow\r\n\t\t);\r\n\r\n\t\t// The area of the element that's within the viewport.\r\n\t\tconst visibleArea = visibleWidth * visibleHeight;\r\n\t\tconst fitsInViewport =\r\n\t\t\toverlayRect.width * overlayRect.height === visibleArea;\r\n\r\n\t\treturn { x, y, fitsInViewport, visibleArea };\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the view properties of the trigger and overlay, including whether they are clipped\r\n\t * or completely outside the view of any of the strategy's scrollables.\r\n\t */\r\n\tprivate _getScrollVisibility(overlay: HTMLElement): ScrollingVisibility {\r\n\t\tconst originBounds = this.origin.getBoundingClientRect();\r\n\t\tconst overlayBounds = overlay.getBoundingClientRect();\r\n\t\tconst scrollContainerBounds = this.scrollables.map((s) =>\r\n\t\t\ts.getBoundingClientRect()\r\n\t\t);\r\n\r\n\t\treturn {\r\n\t\t\tisOriginClipped: isElementClippedByScrolling(\r\n\t\t\t\toriginBounds,\r\n\t\t\t\tscrollContainerBounds\r\n\t\t\t),\r\n\t\t\tisOriginOutsideView: isElementScrolledOutsideView(\r\n\t\t\t\toriginBounds,\r\n\t\t\t\tscrollContainerBounds\r\n\t\t\t),\r\n\t\t\tisOverlayClipped: isElementClippedByScrolling(\r\n\t\t\t\toverlayBounds,\r\n\t\t\t\tscrollContainerBounds\r\n\t\t\t),\r\n\t\t\tisOverlayOutsideView: isElementScrolledOutsideView(\r\n\t\t\t\toverlayBounds,\r\n\t\t\t\tscrollContainerBounds\r\n\t\t\t),\r\n\t\t};\r\n\t}\r\n\r\n\t/** Physically positions the overlay element to the given coordinate. */\r\n\tprivate _setElementPosition(\r\n\t\telement: HTMLElement,\r\n\t\toverlayRect: ClientRect,\r\n\t\toverlayPoint: Point,\r\n\t\tpos: ConnectionPositionPair\r\n\t) {\r\n\t\t// We want to set either `top` or `bottom` based on whether the overlay wants to appear above\r\n\t\t// or below the origin and the direction in which the element will expand.\r\n\t\tconst verticalStyleProperty = pos.overlayY === 'bottom' ? 'bottom' : 'top';\r\n\r\n\t\t// When using `bottom`, we adjust the y position such that it is the distance\r\n\t\t// from the bottom of the viewport rather than the top.\r\n\t\tconst y =\r\n\t\t\tverticalStyleProperty === 'top'\r\n\t\t\t\t? overlayPoint.y\r\n\t\t\t\t: this.document.documentElement.clientHeight -\r\n\t\t\t\t (overlayPoint.y + overlayRect.height);\r\n\r\n\t\tconst horizontalStyleProperty = pos.overlayX === 'end' ? 'right' : 'left';\r\n\r\n\t\t// When we're setting `right`, we adjust the x position such that it is the distance\r\n\t\t// from the right edge of the viewport rather than the left edge.\r\n\t\tconst x =\r\n\t\t\thorizontalStyleProperty === 'left'\r\n\t\t\t\t? overlayPoint.x\r\n\t\t\t\t: this.document.documentElement.clientWidth -\r\n\t\t\t\t (overlayPoint.x + overlayRect.width);\r\n\r\n\t\t// Reset any existing styles. This is necessary in case the preferred position has\r\n\t\t// changed since the last `apply`.\r\n\t\t['top', 'bottom', 'left', 'right'].forEach(\r\n\t\t\t(p) => (element.style[p] = null)\r\n\t\t);\r\n\r\n\t\telement.style[verticalStyleProperty] = `${y}px`;\r\n\t\telement.style[horizontalStyleProperty] = `${x}px`;\r\n\r\n\t\t// Notify that the position has been changed along with its change properties.\r\n\t\tconst scrollableViewProperties = this._getScrollVisibility(element);\r\n\t\tconst positionChange = new ConnectedOverlayPositionChange(\r\n\t\t\tpos,\r\n\t\t\tscrollableViewProperties\r\n\t\t);\r\n\r\n\t\tif (this.onPositionChange) {\r\n\t\t\tthis.onPositionChange(positionChange);\r\n\t\t}\r\n\t}\r\n\r\n\t/** Subtracts the amount that an element is overflowing on an axis from it's length. */\r\n\tprivate _subtractOverflows(length: number, ...overflows: number[]): number {\r\n\t\treturn overflows.reduce((currentValue: number, currentOverflow: number) => {\r\n\t\t\treturn currentValue - Math.max(currentOverflow, 0);\r\n\t\t}, length);\r\n\t}\r\n\r\n\t/** Validates that the current position match the expected values. */\r\n\tprivate _validatePositions(): void {\r\n\t\tif (!this.preferredPositions.length) {\r\n\t\t\tthrow Error(\r\n\t\t\t\t'ConnectedPositionStrategy: At least one position is required.'\r\n\t\t\t);\r\n\t\t}\r\n\r\n\t\t// TODO(crisbeto): remove these once Angular's template type\r\n\t\t// checking is advanced enough to catch these cases.\r\n\t\tthis.preferredPositions.forEach((pair) => {\r\n\t\t\tvalidateHorizontalPosition('originX', pair.originX);\r\n\t\t\tvalidateVerticalPosition('originY', pair.originY);\r\n\t\t\tvalidateHorizontalPosition('overlayX', pair.overlayX);\r\n\t\t\tvalidateVerticalPosition('overlayY', pair.overlayY);\r\n\t\t});\r\n\t}\r\n\r\n\tprivate _handleResizeChange() {\r\n\t\tthis.apply();\r\n\t}\r\n}\r\n\r\n/** A simple (x, y) coordinate. */\r\n// tslint:disable-next-line:interface-name\r\ninterface Point {\r\n\tx: number;\r\n\ty: number;\r\n}\r\n\r\n/**\r\n * Expands the simple (x, y) coordinate by adding info about whether the\r\n * element would fit inside the viewport at that position, as well as\r\n * how much of the element would be visible.\r\n */\r\n// tslint:disable-next-line:interface-name\r\ninterface OverlayPoint extends Point {\r\n\tvisibleArea: number;\r\n\tfitsInViewport: boolean;\r\n}\r\n","/** Horizontal dimension of a connection point on the perimeter of the origin or overlay element. */\r\nexport type HorizontalConnectionPos = 'start' | 'center' | 'end';\r\n\r\n/** Vertical dimension of a connection point on the perimeter of the origin or overlay element. */\r\nexport type VerticalConnectionPos = 'top' | 'center' | 'bottom';\r\n\r\n/** A connection point on the origin element. */\r\n// tslint:disable-next-line:interface-name\r\nexport interface OriginConnectionPosition {\r\n\toriginX: HorizontalConnectionPos;\r\n\toriginY: VerticalConnectionPos;\r\n}\r\n\r\n/** A connection point on the overlay element. */\r\n// tslint:disable-next-line:interface-name\r\nexport interface OverlayConnectionPosition {\r\n\toverlayX: HorizontalConnectionPos;\r\n\toverlayY: VerticalConnectionPos;\r\n}\r\n\r\n/** The points of the origin element and the overlay element to connect. */\r\nexport class ConnectionPositionPair {\r\n\t/** X-axis attachment point for connected overlay origin. Can be 'start', 'end', or 'center'. */\r\n\toriginX: HorizontalConnectionPos;\r\n\t/** Y-axis attachment point for connected overlay origin. Can be 'top', 'bottom', or 'center'. */\r\n\toriginY: VerticalConnectionPos;\r\n\t/** X-axis attachment point for connected overlay. Can be 'start', 'end', or 'center'. */\r\n\toverlayX: HorizontalConnectionPos;\r\n\t/** Y-axis attachment point for connected overlay. Can be 'top', 'bottom', or 'center'. */\r\n\toverlayY: VerticalConnectionPos;\r\n\r\n\tconstructor(\r\n\t\torigin: OriginConnectionPosition,\r\n\t\toverlay: OverlayConnectionPosition,\r\n\t\tpublic offsetX?: number,\r\n\t\tpublic offsetY?: number\r\n\t) {\r\n\t\tthis.originX = origin.originX;\r\n\t\tthis.originY = origin.originY;\r\n\t\tthis.overlayX = overlay.overlayX;\r\n\t\tthis.overlayY = overlay.overlayY;\r\n\t}\r\n}\r\n\r\n/**\r\n * Set of properties regarding the position of the origin and overlay relative to the viewport\r\n * with respect to the containing Scrollable elements.\r\n *\r\n * The overlay and origin are clipped if any part of their bounding client rectangle exceeds the\r\n * bounds of any one of the strategy's Scrollable's bounding client rectangle.\r\n *\r\n * The overlay and origin are outside view if there is no overlap between their bounding client\r\n * rectangle and any one of the strategy's Scrollable's bounding client rectangle.\r\n *\r\n * ----------- -----------\r\n * | outside | | clipped |\r\n * | view | --------------------------\r\n * | | | | | |\r\n * ---------- | ----------- |\r\n * -------------------------- | |\r\n * | | | Scrollable |\r\n * | | | |\r\n * | | --------------------------\r\n * | Scrollable |\r\n * | |\r\n * --------------------------\r\n *\r\n * @docs-private\r\n */\r\nexport class ScrollingVisibility {\r\n\tisOriginClipped: boolean;\r\n\tisOriginOutsideView: boolean;\r\n\tisOverlayClipped: boolean;\r\n\tisOverlayOutsideView: boolean;\r\n}\r\n\r\n/** The change event emitted by the strategy when a fallback position is used. */\r\nexport class ConnectedOverlayPositionChange {\r\n\tconstructor(\r\n\t\t/** The position used as a result of this change. */\r\n\t\tpublic connectionPair: ConnectionPositionPair,\r\n\t\tpublic scrollableViewProperties?: ScrollingVisibility\r\n\t) {}\r\n}\r\n\r\n/**\r\n * Validates whether a vertical position property matches the expected values.\r\n * @param property Name of the property being validated.\r\n * @param value Value of the property being validated.\r\n * @docs-private\r\n */\r\nexport function validateVerticalPosition(\r\n\tproperty: string,\r\n\tvalue: VerticalConnectionPos\r\n) {\r\n\tif (value !== 'top' && value !== 'bottom' && value !== 'center') {\r\n\t\tthrow Error(\r\n\t\t\t`ConnectedPosition: Invalid ${property} '${value}'. ` +\r\n\t\t\t\t\"Expected 'top', 'bottom' or 'center'.\"\r\n\t\t);\r\n\t}\r\n}\r\n\r\n/**\r\n * Validates whether a horizontal position property matches the expected values.\r\n * @param property Name of the property being validated.\r\n * @param value Value of the property being validated.\r\n * @docs-private\r\n */\r\nexport function validateHorizontalPosition(\r\n\tproperty: string,\r\n\tvalue: HorizontalConnectionPos\r\n) {\r\n\tif (value !== 'start' && value !== 'end' && value !== 'center') {\r\n\t\tthrow Error(\r\n\t\t\t`ConnectedPosition: Invalid ${property} '${value}'. ` +\r\n\t\t\t\t\"Expected 'start', 'end' or 'center'.\"\r\n\t\t);\r\n\t}\r\n}\r\n","import { addClass } from '@opten/dom/add-class';\r\nimport { PositionStrategy } from './position-strategy';\r\nimport { Overlay } from '../overlay';\r\n\r\n/**\r\n * A strategy for positioning overlays. Using this strategy, an overlay is given an\r\n * explicit position relative to the browser's viewport. We use flexbox, instead of\r\n * transforms, in order to avoid issues with subpixel rendering which can cause the\r\n * element to become blurry.\r\n */\r\nexport class GlobalPositionStrategy implements PositionStrategy {\r\n\t/** The overlay to which this strategy is attached. */\r\n\tprivate overlayRef: Overlay;\r\n\r\n\tprivate cssPosition = 'static';\r\n\tprivate topOffset = '';\r\n\tprivate bottomOffset = '';\r\n\tprivate leftOffset = '';\r\n\tprivate rightOffset = '';\r\n\tprivate alignItems = '';\r\n\tprivate justifyContent = '';\r\n\tprivate width = '';\r\n\tprivate height = '';\r\n\r\n\t/** A lazily-created wrapper for the overlay element that is used as a flex container. */\r\n\tprivate wrapper: HTMLElement | null = null;\r\n\r\n\tconstructor(private document: Document) {}\r\n\r\n\tattach(overlayRef: Overlay): void {\r\n\t\tconst options = overlayRef.getOptions();\r\n\r\n\t\tthis.overlayRef = overlayRef;\r\n\r\n\t\tif (this.width && !options.width) {\r\n\t\t\toverlayRef.updateSize({ width: this.width });\r\n\t\t}\r\n\r\n\t\tif (this.height && !options.height) {\r\n\t\t\toverlayRef.updateSize({ height: this.height });\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the top position of the overlay. Clears any previously set vertical position.\r\n\t * @param value New top offset.\r\n\t */\r\n\ttop(value = ''): this {\r\n\t\tthis.bottomOffset = '';\r\n\t\tthis.topOffset = value;\r\n\t\tthis.alignItems = 'flex-start';\r\n\t\treturn this;\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the left position of the overlay. Clears any previously set horizontal position.\r\n\t * @param value New left offset.\r\n\t */\r\n\tleft(value = ''): this {\r\n\t\tthis.rightOffset = '';\r\n\t\tthis.leftOffset = value;\r\n\t\tthis.justifyContent = 'flex-start';\r\n\t\treturn this;\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the bottom position of the overlay. Clears any previously set vertical position.\r\n\t * @param value New bottom offset.\r\n\t */\r\n\tbottom(value = ''): this {\r\n\t\tthis.topOffset = '';\r\n\t\tthis.bottomOffset = value;\r\n\t\tthis.alignItems = 'flex-end';\r\n\t\treturn this;\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the right position of the overlay. Clears any previously set horizontal position.\r\n\t * @param value New right offset.\r\n\t */\r\n\tright(value = ''): this {\r\n\t\tthis.leftOffset = '';\r\n\t\tthis.rightOffset = value;\r\n\t\tthis.justifyContent = 'flex-end';\r\n\t\treturn this;\r\n\t}\r\n\r\n\t/**\r\n\t * Centers the overlay horizontally with an optional offset.\r\n\t * Clears any previously set horizontal position.\r\n\t *\r\n\t * @param offset Overlay offset from the horizontal center.\r\n\t */\r\n\tcenterHorizontally(offset = ''): this {\r\n\t\tthis.left(offset);\r\n\t\tthis.justifyContent = 'center';\r\n\t\treturn this;\r\n\t}\r\n\r\n\t/**\r\n\t * Centers the overlay vertically with an optional offset.\r\n\t * Clears any previously set vertical position.\r\n\t *\r\n\t * @param offset Overlay offset from the vertical center.\r\n\t */\r\n\tcenterVertically(offset = ''): this {\r\n\t\tthis.top(offset);\r\n\t\tthis.alignItems = 'center';\r\n\t\treturn this;\r\n\t}\r\n\r\n\t/**\r\n\t * Apply the position to the element.\r\n\t * @docs-private\r\n\t *\r\n\t * @returns Resolved when the styles have been applied.\r\n\t */\r\n\tapply() {\r\n\t\t// Since the overlay ref applies the strategy asynchronously, it could\r\n\t\t// have been disposed before it ends up being applied. If that is the\r\n\t\t// case, we shouldn't do anything.\r\n\t\tif (!this.overlayRef.hasAttached()) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst element = this.overlayRef.overlayElement;\r\n\r\n\t\tif (!this.wrapper && element.parentNode) {\r\n\t\t\tthis.wrapper = this.document.createElement('div');\r\n\t\t\taddClass(this.wrapper, 'c-overlay__global'); // todo: settings?\r\n\t\t\telement.parentNode.insertBefore(this.wrapper!, element);\r\n\t\t\tthis.wrapper!.appendChild(element);\r\n\t\t}\r\n\r\n\t\tconst parentStyles = (element.parentNode as HTMLElement).style;\r\n\t\tconst options = this.overlayRef.getOptions();\r\n\r\n\t\telement.style.position = this.cssPosition;\r\n\t\telement.style.marginLeft = options.width === '100%' ? '0' : this.leftOffset;\r\n\t\telement.style.marginTop = options.height === '100%' ? '0' : this.topOffset;\r\n\t\telement.style.marginBottom = this.bottomOffset;\r\n\t\telement.style.marginRight = this.rightOffset;\r\n\r\n\t\tparentStyles.justifyContent =\r\n\t\t\toptions.width === '100%' ? 'flex-start' : this.justifyContent;\r\n\t\tparentStyles.alignItems =\r\n\t\t\toptions.height === '100%' ? 'flex-start' : this.alignItems;\r\n\t}\r\n\r\n\t/** Removes the wrapper element from the DOM. */\r\n\tdispose() {\r\n\t\tif (this.wrapper && this.wrapper.parentNode) {\r\n\t\t\tthis.wrapper.parentNode.removeChild(this.wrapper);\r\n\t\t\tthis.wrapper = null;\r\n\t\t}\r\n\t}\r\n}\r\n","import {\r\n\tOriginConnectionPosition,\r\n\tOverlayConnectionPosition,\r\n} from './connected-position';\r\nimport { ConnectedPositionStrategy } from './connected-position-strategy';\r\nimport { GlobalPositionStrategy } from './global-position-strategy';\r\n\r\nexport class OverlayPositionBuilder {\r\n\t/**\r\n\t * Creates a global position strategy.\r\n\t */\r\n\tglobal(): GlobalPositionStrategy {\r\n\t\treturn new GlobalPositionStrategy(document);\r\n\t}\r\n\r\n\t/**\r\n\t * Creates a relative position strategy.\r\n\t * @param elementRef\r\n\t * @param originPos\r\n\t * @param overlayPos\r\n\t */\r\n\tconnectedTo(\r\n\t\telementRef: HTMLElement,\r\n\t\toriginPos: OriginConnectionPosition,\r\n\t\toverlayPos: OverlayConnectionPosition\r\n\t): ConnectedPositionStrategy {\r\n\t\treturn new ConnectedPositionStrategy(\r\n\t\t\toriginPos,\r\n\t\t\toverlayPos,\r\n\t\t\telementRef,\r\n\t\t\tdocument\r\n\t\t);\r\n\t}\r\n}\r\n","import { isElementScrolledOutsideView } from '@opten/viewport/is-element-scrolled-outside-view';\r\n\r\nimport { ScrollStrategy } from './scroll-strategy';\r\nimport { Overlay } from '../overlay';\r\n\r\n/**\r\n * Config options for the RepositionScrollStrategy.\r\n */\r\n// tslint:disable-next-line:interface-name\r\nexport interface RepositionScrollStrategyConfig {\r\n\t/** Time in milliseconds to throttle the scroll events. */\r\n\tscrollThrottle?: number;\r\n\r\n\t/** Whether to close the overlay once the user has scrolled away completely. */\r\n\tautoClose?: boolean;\r\n}\r\n\r\n/**\r\n * Strategy that will update the element position as the user is scrolling.\r\n */\r\nexport class RepositionScrollStrategy implements ScrollStrategy {\r\n\tprivate overlayRef: Overlay;\r\n\tprivate applied = false;\r\n\r\n\tconstructor(private config?: RepositionScrollStrategyConfig) {}\r\n\r\n\t/** Attaches this scroll strategy to an overlay. */\r\n\tattach(overlayRef: Overlay) {\r\n\t\tthis.overlayRef = overlayRef;\r\n\t}\r\n\r\n\t/** Enables repositioning of the attached overlay on scroll. */\r\n\tenable() {\r\n\t\tif (!this.applied) {\r\n\t\t\twindow.addEventListener('scroll', this.handleScroll);\r\n\t\t\tthis.applied = true;\r\n\t\t}\r\n\t}\r\n\r\n\t/** Disables repositioning of the attached overlay on scroll. */\r\n\tdisable() {\r\n\t\tif (this.applied) {\r\n\t\t\twindow.removeEventListener('scroll', this.handleScroll);\r\n\t\t\tthis.applied = false;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate handleScroll = () => {\r\n\t\tconst throttle = this.config ? this.config.scrollThrottle : 0;\r\n\t\tconst autoClose = this.config ? this.config.autoClose : true;\r\n\r\n\t\tconst update = () => {\r\n\t\t\tthis.overlayRef.updatePosition();\r\n\r\n\t\t\tif (autoClose) {\r\n\t\t\t\tconst overlayRect = this.overlayRef.overlayElement.getBoundingClientRect();\r\n\t\t\t\tconst { width, height } = {\r\n\t\t\t\t\twidth: window.innerWidth,\r\n\t\t\t\t\theight: window.innerHeight,\r\n\t\t\t\t};\r\n\r\n\t\t\t\t// todo: include all ancestor scroll containers here once\r\n\t\t\t\t// we have a way of exposing the trigger element to the scroll strategy.\r\n\t\t\t\tconst parentRects = [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\twidth,\r\n\t\t\t\t\t\theight,\r\n\t\t\t\t\t\tbottom: height,\r\n\t\t\t\t\t\tright: width,\r\n\t\t\t\t\t\ttop: 0,\r\n\t\t\t\t\t\tleft: 0,\r\n\t\t\t\t\t},\r\n\t\t\t\t];\r\n\r\n\t\t\t\tif (isElementScrolledOutsideView(overlayRect, parentRects)) {\r\n\t\t\t\t\tthis.disable();\r\n\t\t\t\t\tthis.overlayRef.close();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tif (throttle > 0) {\r\n\t\t\tsetTimeout(() => update(), throttle);\r\n\t\t} else {\r\n\t\t\tupdate();\r\n\t\t}\r\n\t};\r\n}\r\n","interface LoadingScriptWindow extends Window {\r\n\tloadingScripts: string[];\r\n}\r\n\r\nconst loadingScriptWindow = (window as unknown) as LoadingScriptWindow;\r\n\r\nloadingScriptWindow.loadingScripts = loadingScriptWindow.loadingScripts || [];\r\n\r\nexport function createScript(src: string, onerror: () => void = () => {}) {\r\n\tconst scriptElement = document.createElement('script');\r\n\tscriptElement.src = src;\r\n\tscriptElement.async = false;\r\n\tscriptElement.onload = (e) => {\r\n\t\tremoveLoadingScript(src);\r\n\t};\r\n\tscriptElement.onerror = (e) => {\r\n\t\tconsole.error(e);\r\n\t\tremoveLoadingScript(src);\r\n\t\tonerror();\r\n\t};\r\n\tloadingScriptWindow.loadingScripts.push(src);\r\n\treturn scriptElement;\r\n}\r\n\r\nfunction removeLoadingScript(src: string) {\r\n\tconst index = loadingScriptWindow.loadingScripts.indexOf(src);\r\n\tif (index > -1) {\r\n\t\tloadingScriptWindow.loadingScripts = loadingScriptWindow.loadingScripts.splice(\r\n\t\t\tindex,\r\n\t\t\t1\r\n\t\t);\r\n\t}\r\n}\r\n","import { removeDomain } from '@opten/url/remove-domain';\r\n\r\nexport function getScriptBySrc(src: string): HTMLScriptElement {\r\n\t// HINT: NEVER EVER change to Array.from() we need this code in load-polyfill\r\n\t// and IE doesn't understand this until the polyfills are obviously loaded!\r\n\tconst scripts = document.getElementsByTagName('script');\r\n\tfor (let i = 0; i < scripts.length; i++) {\r\n\t\tconst currentScriptElement = scripts.item(i);\r\n\t\tconst currentSrc = removeDomain(currentScriptElement.src);\r\n\t\tif (currentSrc === src) {\r\n\t\t\treturn currentScriptElement;\r\n\t\t}\r\n\t}\r\n\treturn null;\r\n}\r\n","import { removeDomain } from '@opten/url/remove-domain';\r\nimport { wrapFunction } from '@opten/common/wrap-function';\r\nimport { getScriptBySrc } from '../get-script-by-src';\r\nimport { createScript } from '../create-script';\r\n\r\n(window as any).loadingScripts = (window as any).loadingScripts || [];\r\n\r\nexport function loadScript(src: string) {\r\n\treturn new Promise(\r\n\t\t(resolve: (ev?: Event) => void, reject: (ev: ErrorEvent) => void) => {\r\n\t\t\tconst script = getScriptBySrc(src);\r\n\r\n\t\t\tif (script) {\r\n\t\t\t\tif (\r\n\t\t\t\t\t(window as any).loadingScripts.indexOf(removeDomain(script.src)) !==\r\n\t\t\t\t\t-1\r\n\t\t\t\t) {\r\n\t\t\t\t\tscript.onerror = wrapFunction(script.onerror, reject);\r\n\t\t\t\t\tscript.onload = wrapFunction(script.onload, resolve);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tresolve();\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tconst newScript = createScript(src);\r\n\t\t\t\tnewScript.onerror = reject;\r\n\t\t\t\tnewScript.onload = wrapFunction(newScript.onload, resolve);\r\n\t\t\t\tdocument.head.appendChild(newScript);\r\n\t\t\t}\r\n\t\t}\r\n\t);\r\n}\r\n","import { AnimationFunction } from '@opten/animation/animation-function';\r\nimport { linearTween } from '@opten/animation/linear-tween';\r\nimport { scrollToOffset } from '../scroll-to-offset';\r\n\r\nexport function scrollToElement(\r\n\ttarget: Element,\r\n\tanimation: AnimationFunction = linearTween,\r\n\tduration = 300,\r\n\toffset = 0,\r\n\twrapper: HTMLElement | Window = window\r\n) {\r\n\tconst top =\r\n\t\twrapper !== window\r\n\t\t\t? (target as HTMLElement).offsetTop - (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 { newGuid } from '@opten/common/new-guid';\nimport { addClass } from '@opten/dom/add-class';\nimport { removeClass } from '@opten/dom/remove-class';\nimport { createNode } from '@opten/dom/create-node';\nimport { KEYCODES } from '@opten/keycodes';\nimport {\n\toverlay,\n\tOverlay,\n\tOverlayOptions,\n\tConnectedPositionStrategy,\n\tOverlayPositionBuilder,\n\tOriginConnectionPosition,\n\tOverlayConnectionPosition,\n} from '../overlay';\nimport { parseCssUnit } from '@opten/number/parse-css-unit';\nimport { getCss } from '@opten/dom/get-css';\nimport { RepositionScrollStrategy } from '../overlay/scroll/reposition-scroll-strategy';\n\n/**\n * The following style constants are necessary to save here in order\n * to properly calculate the alignment of the selected option over\n * the trigger element.\n */\n\nexport class SelectOptions {\n\tclasses: {\n\t\tcomponent: string;\n\t\tactive: string;\n\t\thighlighted: string;\n\t\tdisabled: string;\n\t\ticonHtml?: string;\n\t};\n}\n\nexport class Option {\n\tconstructor(private element: HTMLOptionElement) {\n\t\t// this properties are cached\n\t\tthis.text = (this.element.textContent || '').trim();\n\t\tthis.disabled = this.element.disabled;\n\t}\n\n\tget disabled() {\n\t\treturn this._disabled;\n\t}\n\tset disabled(value: boolean) {\n\t\tthis._disabled = value;\n\t}\n\tprivate _disabled: boolean;\n\n\tget text() {\n\t\treturn this._text;\n\t}\n\tset text(value: string) {\n\t\tthis._text = value;\n\t}\n\tprivate _text: string;\n\n\tget value() {\n\t\t// don't cache value, might change!\n\t\treturn (this.element.value || '').trim();\n\t}\n}\n\nexport class Select {\n\tprivate overlayRef: Overlay;\n\tprivate position: ConnectedPositionStrategy;\n\n\tprivate select: HTMLElement;\n\tprivate options: Option[];\n\tprivate selectedIndex: number;\n\tprivate activeIndex: number;\n\tprivate uuid: string;\n\n\tprivate triggerElement: HTMLElement;\n\tprivate triggerRect: ClientRect;\n\tprivate optionElements: HTMLElement[];\n\n\tpublic name: string;\n\tpublic htmlSelectElement: HTMLSelectElement;\n\n\tget value() {\n\t\t// don't cache value, might change!\n\t\treturn (this.htmlSelectElement.value || '').trim();\n\t}\n\n\tprivate config: SelectOptions = {\n\t\tclasses: {\n\t\t\tcomponent: 'c-select',\n\t\t\tactive: 'is-active',\n\t\t\thighlighted: 'is-highlighted',\n\t\t\tdisabled: 'is-disabled',\n\t\t},\n\t};\n\n\t/** The scroll position of the overlay panel, calculated to center the selected option. */\n\tprivate scrollTop = 0;\n\n\t/**\n\t * The y-offset of the overlay panel in relation to the trigger's top start corner.\n\t * This must be adjusted to align the selected option text over the trigger text.\n\t * when the panel opens. Will change based on the y-position of the selected option.\n\t */\n\tprivate offsetY = 0;\n\n\t/**\n\t * This position config ensures that the top \"start\" corner of the overlay\n\t * is aligned with with the top \"start\" of the origin by default (overlapping\n\t * the trigger completely). If the panel cannot fit below the trigger, it\n\t * will fall back to a position above the trigger.\n\t */\n\tprivate positions = [\n\t\t{\n\t\t\toriginX: 'start',\n\t\t\toriginY: 'top',\n\t\t\toverlayX: 'start',\n\t\t\toverlayY: 'top',\n\t\t},\n\t\t{\n\t\t\toriginX: 'start',\n\t\t\toriginY: 'bottom',\n\t\t\toverlayX: 'start',\n\t\t\toverlayY: 'bottom',\n\t\t},\n\t];\n\n\t/** Whether or not the overlay panel is open. */\n\tprivate panelOpen = false;\n\n\tprivate panelHTML: string;\n\n\tconstructor(\n\t\tprivate selectElement: HTMLSelectElement,\n\t\toptions?: SelectOptions\n\t) {\n\t\tthis.name = this.selectElement.name;\n\t\tthis.htmlSelectElement = this.selectElement;\n\n\t\tthis.config = { ...this.config, ...options };\n\n\t\tthis.selectedIndex = this._getSelectedIndex();\n\n\t\tthis.activeIndex = !this.selectedIndex ? 0 : this.selectedIndex;\n\n\t\tthis.uuid = newGuid();\n\n\t\tthis._init();\n\t}\n\n\topen(): void {\n\t\t// todo: implement disabled?\n\t\tif (\n\t\t\t/*this.disabled ||*/ !this.options ||\n\t\t\t!this.options.length ||\n\t\t\tthis.panelOpen\n\t\t) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.triggerRect = this.triggerElement.getBoundingClientRect();\n\n\t\tthis.panelOpen = true;\n\t\tthis._createOverlay().open();\n\n\t\tthis._calculateOverlayPosition();\n\t\tthis._highlightCorrectOption();\n\t\tthis._scrollActiveOptionIntoView();\n\t}\n\n\tclose(): void {\n\t\tif (this.panelOpen) {\n\t\t\tthis.overlayRef.close();\n\n\t\t\t// todo: gets called twice?\n\t\t\t// todo: correct? forward events\n\t\t\tthis._shouldForward('blur');\n\t\t}\n\t}\n\n\ttoggle(): void {\n\t\tthis.panelOpen ? this.close() : this.open();\n\t}\n\n\tprivate _init() {\n\t\t// todo: set arias like Angular Material\n\t\tthis.options = Array.from(this.selectElement.children).map(\n\t\t\t(option: HTMLOptionElement) => new Option(option)\n\t\t);\n\n\t\tthis.selectElement.tabIndex = -1;\n\t\tthis.selectElement.setAttribute('aria-hidden', 'true');\n\t\tthis.selectElement.setAttribute('data-select', this.uuid);\n\t\tthis.selectElement.insertAdjacentHTML('afterend', this._render());\n\t\tthis.selectElement.addEventListener('focus', () => {\n\t\t\tthis.select.focus();\n\t\t\tthis.open();\n\t\t});\n\n\t\tthis.select = document.getElementById(this.uuid);\n\t\tthis.select.tabIndex = 0;\n\t\tthis.select.className += ' ' + this.selectElement.className;\n\n\t\tthis.triggerElement = this.select.getElementsByClassName(\n\t\t\t`${this.config.classes.component}__trigger`\n\t\t)[0] as HTMLElement;\n\n\t\tthis.triggerElement.addEventListener('click', (event) => {\n\t\t\tevent.preventDefault();\n\t\t\tevent.stopPropagation();\n\t\t\tthis.toggle();\n\t\t});\n\n\t\tthis.select.addEventListener('keydown', (event: KeyboardEvent) =>\n\t\t\tthis._handleKeydown(event)\n\t\t);\n\n\t\tthis.selectElement.addEventListener('change', () =>\n\t\t\tthis._emit(this.options[this.selectElement.selectedIndex], false)\n\t\t);\n\t}\n\n\tprivate _handleActiveIndex(event: KeyboardEvent) {\n\t\tconst delta = event.keyCode === KEYCODES.UP ? -1 : 1;\n\n\t\tif (this.activeIndex + delta <= 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.activeIndex + delta >= this.options.length) {\n\t\t\treturn;\n\t\t}\n\n\t\t// continue to move up/down the list until it finds an item that is not disabled\n\t\tfor (let i = 1; i <= this.options.length; i++) {\n\t\t\tconst index =\n\t\t\t\t(this.activeIndex + delta * i + this.options.length) %\n\t\t\t\tthis.options.length;\n\t\t\tconst item = this.options[index];\n\n\t\t\tif (!item.disabled) {\n\t\t\t\tthis._updateActiveItem(index);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate _updateActiveItem(index: number) {\n\t\tthis.activeIndex = index;\n\t}\n\n\tprivate _handleKeydown(event: KeyboardEvent) {\n\t\tswitch (event.keyCode) {\n\t\t\tcase KEYCODES.SPACE:\n\t\t\t\tthis.toggle();\n\t\t\t\tbreak;\n\t\t\tcase KEYCODES.DOWN:\n\t\t\tcase KEYCODES.UP:\n\t\t\t\tthis._handleActiveIndex(event);\n\n\t\t\t\t// todo: something like subscribe on selectedIndex change\n\t\t\t\t// so we can call this method there\n\t\t\t\tif (this.panelOpen) {\n\t\t\t\t\tthis._highlightCorrectOption();\n\t\t\t\t\tthis._scrollActiveOptionIntoView();\n\t\t\t\t} else {\n\t\t\t\t\tthis._emit(this.options[this.activeIndex]);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase KEYCODES.ESCAPE:\n\t\t\t\tif (this.panelOpen) {\n\t\t\t\t\tthis.close();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase KEYCODES.ENTER:\n\t\t\t\tif (!this.panelOpen) {\n\t\t\t\t\tthis.toggle();\n\t\t\t\t} else {\n\t\t\t\t\tthis._emit(this.options[this.activeIndex]);\n\n\t\t\t\t\t// todo: something like subscribe on activeIndex change\n\t\t\t\t\t// so we can call this method there\n\t\t\t\t\tthis._highlightCorrectOption();\n\t\t\t\t\tthis.close();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tbreak;\n\t\t}\n\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\t}\n\n\t/**\n\t * This method creates the overlay from the provided select's template and saves its\n\t * OverlayRef so that it can be attached to the DOM when open is called.\n\t */\n\tprivate _createOverlay(): Overlay {\n\t\tif (!this.overlayRef) {\n\t\t\tthis.overlayRef = overlay(\n\t\t\t\tcreateNode(this.panelHTML),\n\t\t\t\tthis._getOverlayOptions()\n\t\t\t);\n\n\t\t\tthis.overlayRef.backdropClick = () => this.close();\n\n\t\t\tthis.overlayRef.afterOpened = () => this._onPanelDone();\n\n\t\t\tthis.overlayRef.afterClosed = () => this.overlayRef.dispose();\n\n\t\t\tthis.overlayRef.onAttached = () => {\n\t\t\t\tthis.overlayRef.portalElement.style.transformOrigin = 'top'; // set initial origin\n\t\t\t\tthis._calculateOverlayOffsetX();\n\t\t\t\tthis.overlayRef.portalElement.scrollTop = this.scrollTop;\n\t\t\t};\n\n\t\t\t// todo: better way? we need that here because of the RepositionScrollStrategy\n\t\t\tthis.overlayRef.onDetached = () => (this.panelOpen = false);\n\n\t\t\tthis.optionElements = Array.from(\n\t\t\t\tthis.overlayRef.portalElement.getElementsByClassName(\n\t\t\t\t\t`${this.config.classes.component}__panel__option`\n\t\t\t\t)\n\t\t\t) as HTMLElement[];\n\n\t\t\tthis.optionElements.forEach((option, index) => {\n\t\t\t\toption.addEventListener('click', () => {\n\t\t\t\t\tconst option = this.options[index];\n\n\t\t\t\t\tif (option.disabled) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis._emit(option);\n\n\t\t\t\t\t// todo: something like subscribe on selectedIndex change\n\t\t\t\t\t// so we can call this method there\n\t\t\t\t\tthis._highlightCorrectOption();\n\t\t\t\t\tthis.close();\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\n\t\treturn this.overlayRef;\n\t}\n\n\tprivate _getOverlayOptions(): OverlayOptions {\n\t\treturn new OverlayOptions({\n\t\t\tscrollStrategy: new RepositionScrollStrategy(),\n\t\t\tpositionStrategy: this.position = this._createPositionStrategy(),\n\t\t\tbackdropClassName: 'c-overlay-transparent-backdrop',\n\t\t\thasBackdrop: true,\n\t\t});\n\t}\n\n\tprivate _createPositionStrategy(): ConnectedPositionStrategy {\n\t\tconst primaryPosition = this.positions[0];\n\t\tconst originPoint = {\n\t\t\toriginX: primaryPosition.originX,\n\t\t\toriginY: primaryPosition.originY,\n\t\t} as OriginConnectionPosition;\n\t\tconst overlayPoint = {\n\t\t\toverlayX: primaryPosition.overlayX,\n\t\t\toverlayY: primaryPosition.overlayY,\n\t\t} as OverlayConnectionPosition;\n\n\t\t// todo: like angular material this.overlayRef.position()?\n\t\tconst strategy = new OverlayPositionBuilder()\n\t\t\t.connectedTo(this.triggerElement, originPoint, overlayPoint)\n\t\t\t.withOffsetX(0)\n\t\t\t.withOffsetY(this.offsetY);\n\n\t\tfor (let i = 1; i < this.positions.length; i++) {\n\t\t\tstrategy.withFallbackPosition(\n\t\t\t\t{\n\t\t\t\t\toriginX: this.positions[i].originX,\n\t\t\t\t\toriginY: this.positions[i].originY,\n\t\t\t\t} as OriginConnectionPosition,\n\t\t\t\t{\n\t\t\t\t\toverlayX: this.positions[i].overlayX,\n\t\t\t\t\toverlayY: this.positions[i].overlayY,\n\t\t\t\t} as OverlayConnectionPosition\n\t\t\t);\n\t\t}\n\n\t\treturn strategy;\n\t}\n\n\tprivate _emit(option: Option, shouldForwardEvent: boolean = true) {\n\t\tconst newValue = option.value;\n\t\tconst newLabel = option.text;\n\n\t\tthis.triggerElement.getElementsByClassName(\n\t\t\t`${this.config.classes.component}__trigger__value-text`\n\t\t)[0].textContent = newLabel;\n\t\tthis.triggerElement.setAttribute('data-value', newValue);\n\n\t\tthis.selectElement.value = newValue;\n\t\tthis.selectedIndex = this._getOptionIndex(option);\n\t\tthis.activeIndex = this.selectedIndex;\n\t\tthis.selectElement.selectedIndex = this.selectedIndex;\n\n\t\tif (shouldForwardEvent) {\n\t\t\tthis._shouldForward('change');\n\t\t}\n\t}\n\n\tprivate _render(): string {\n\t\tconst options = this.options.reduce((value, option, index) => {\n\t\t\treturn `${value}
\n ${option.text}\n
`;\n\t\t}, '');\n\n\t\tconst arrowHtml =\n\t\t\tthis.config.classes.iconHtml !== undefined &&\n\t\t\tthis.config.classes.iconHtml !== null &&\n\t\t\tthis.config.classes.iconHtml.length > 0\n\t\t\t\t? this.config.classes.iconHtml\n\t\t\t\t: ``;\n\n\t\tconst trigger = this.options\n\t\t\t.filter((option, index) => {\n\t\t\t\treturn index === this.selectedIndex;\n\t\t\t})\n\t\t\t.reduce((value, option) => {\n\t\t\t\treturn `${value}
\n \n \n ${option.text}\n \n \n ${arrowHtml}\n
`;\n\t\t\t}, '');\n\n\t\tthis.panelHTML = `
${options}
`;\n\n\t\treturn `
${trigger}
`;\n\t}\n\n\t/** Gets the index of the provided option in the option list. */\n\tprivate _getOptionIndex(option: Option): number | undefined {\n\t\treturn this.options.reduce(\n\t\t\t(result: number, current: Option, index: number) => {\n\t\t\t\treturn result === undefined\n\t\t\t\t\t? option === current\n\t\t\t\t\t\t? index\n\t\t\t\t\t\t: undefined\n\t\t\t\t\t: result;\n\t\t\t},\n\t\t\tundefined\n\t\t);\n\t}\n\n\t/** Scrolls the active option into view. */\n\tprivate _scrollActiveOptionIntoView(): void {\n\t\tconst itemHeight = this._getItemHeight();\n\t\tconst activeOptionIndex = this.activeIndex || 0;\n\t\tconst scrollOffset = activeOptionIndex * itemHeight;\n\t\tconst panelTop = this.overlayRef.portalElement.scrollTop;\n\t\tconst maxHeight = this._getPanelMaxHeight();\n\n\t\tif (scrollOffset < panelTop) {\n\t\t\tthis.overlayRef.portalElement.scrollTop = scrollOffset;\n\t\t} else if (scrollOffset + itemHeight > panelTop + maxHeight) {\n\t\t\tthis.overlayRef.portalElement.scrollTop = Math.max(\n\t\t\t\t0,\n\t\t\t\tscrollOffset - maxHeight + itemHeight\n\t\t\t);\n\t\t}\n\t}\n\n\t/** Calculates the scroll position and x- and y-offsets of the overlay panel. */\n\tprivate _calculateOverlayPosition(): void {\n\t\tconst itemHeight = this._getItemHeight();\n\t\tconst items = this.options.length;\n\t\tconst panelHeight = Math.min(items * itemHeight, this._getPanelMaxHeight());\n\t\tconst scrollContainerHeight = items * itemHeight;\n\n\t\t// The farthest the panel can be scrolled before it hits the bottom\n\t\tconst maxScroll = scrollContainerHeight - panelHeight;\n\n\t\t// If no value is selected we open the popup to the first item.\n\t\tconst selectedOptionOffset = this.selectedIndex!;\n\n\t\t// We must maintain a scroll buffer so the selected option will be scrolled to the\n\t\t// center of the overlay panel rather than the top.\n\t\tconst scrollBuffer = panelHeight / 2;\n\t\tthis.scrollTop = this._calculateOverlayScroll(\n\t\t\tselectedOptionOffset,\n\t\t\tscrollBuffer,\n\t\t\tmaxScroll\n\t\t);\n\t\tthis.offsetY = this._calculateOverlayOffsetY(\n\t\t\tselectedOptionOffset,\n\t\t\tscrollBuffer,\n\t\t\tmaxScroll\n\t\t);\n\n\t\tthis._checkOverlayWithinViewport(maxScroll);\n\t\tthis.position.withOffsetY(this.offsetY);\n\t}\n\n\t/**\n\t * Checks that the attempted overlay position will fit within the viewport.\n\t * If it will not fit, tries to adjust the scroll position and the associated\n\t * y-offset so the panel can open fully on-screen. If it still won't fit,\n\t * sets the offset back to 0 to allow the fallback position to take over.\n\t */\n\tprivate _checkOverlayWithinViewport(maxScroll: number): void {\n\t\tconst itemHeight = this._getItemHeight();\n\t\tconst maxHeight = this._getPanelMaxHeight();\n\t\tconst viewportSize = {\n\t\t\twidth: window.innerWidth,\n\t\t\theight: window.innerHeight,\n\t\t};\n\t\tconst paddingWidth = this._getPanelToViewportPadding();\n\n\t\tconst topSpaceAvailable = this.triggerRect.top - paddingWidth;\n\t\tconst bottomSpaceAvailable =\n\t\t\tviewportSize.height - this.triggerRect.bottom - paddingWidth;\n\n\t\tconst panelHeightTop = Math.abs(this.offsetY);\n\t\tconst totalPanelHeight = Math.min(\n\t\t\tthis.options.length * itemHeight,\n\t\t\tmaxHeight\n\t\t);\n\t\tconst panelHeightBottom =\n\t\t\ttotalPanelHeight - panelHeightTop - this.triggerRect.height;\n\n\t\tif (panelHeightBottom > bottomSpaceAvailable) {\n\t\t\tthis._adjustPanelUp(panelHeightBottom, bottomSpaceAvailable);\n\t\t} else if (panelHeightTop > topSpaceAvailable) {\n\t\t\tthis._adjustPanelDown(panelHeightTop, topSpaceAvailable, maxScroll);\n\t\t} else {\n\t\t\tthis.overlayRef.portalElement.style.transformOrigin = this._getOriginBasedOnOption();\n\t\t}\n\t}\n\n\t/** Adjusts the overlay panel up to fit in the viewport. */\n\tprivate _adjustPanelUp(\n\t\tpanelHeightBottom: number,\n\t\tbottomSpaceAvailable: number\n\t) {\n\t\t// Browsers ignore fractional scroll offsets, so we need to round.\n\t\tconst distanceBelowViewport = Math.round(\n\t\t\tpanelHeightBottom - bottomSpaceAvailable\n\t\t);\n\n\t\t// Scrolls the panel up by the distance it was extending past the boundary, then\n\t\t// adjusts the offset by that amount to move the panel up into the viewport.\n\t\tthis.scrollTop -= distanceBelowViewport;\n\t\tthis.offsetY -= distanceBelowViewport;\n\t\tthis.overlayRef.portalElement.style.transformOrigin = this._getOriginBasedOnOption();\n\n\t\t// If the panel is scrolled to the very top, it won't be able to fit the panel\n\t\t// by scrolling, so set the offset to 0 to allow the fallback position to take\n\t\t// effect.\n\t\tif (this.triggerRect.top + this.scrollTop <= 0) {\n\t\t\tthis.scrollTop = 0;\n\t\t\tthis.offsetY = 0;\n\t\t\tthis.overlayRef.portalElement.style.transformOrigin = '50% bottom 0px';\n\t\t}\n\t}\n\n\t/** Adjusts the overlay panel down to fit in the viewport. */\n\tprivate _adjustPanelDown(\n\t\tpanelHeightTop: number,\n\t\ttopSpaceAvailable: number,\n\t\tmaxScroll: number\n\t) {\n\t\t// Browsers ignore fractional scroll offsets, so we need to round.\n\t\tconst distanceAboveViewport = Math.round(\n\t\t\tpanelHeightTop - topSpaceAvailable\n\t\t);\n\n\t\t// Scrolls the panel down by the distance it was extending past the boundary, then\n\t\t// adjusts the offset by that amount to move the panel down into the viewport.\n\t\tthis.scrollTop += distanceAboveViewport;\n\t\tthis.offsetY += distanceAboveViewport;\n\t\tthis.overlayRef.portalElement.style.transformOrigin = this._getOriginBasedOnOption();\n\n\t\t// If the panel is scrolled to the very bottom, it won't be able to fit the\n\t\t// panel by scrolling, so set the offset to 0 to allow the fallback position\n\t\t// to take effect.\n\t\tif (this.triggerRect.top + this.scrollTop >= maxScroll) {\n\t\t\tthis.scrollTop = maxScroll;\n\t\t\tthis.offsetY = 0;\n\t\t\tthis.overlayRef.portalElement.style.transformOrigin = '50% top 0px';\n\t\t\treturn;\n\t\t}\n\t}\n\n\t/** Sets the transform origin point based on the selected option. */\n\tprivate _getOriginBasedOnOption(): string {\n\t\tconst itemHeight = this._getItemHeight();\n\t\tconst optionHeightAdjustment = (itemHeight - this.triggerRect.height) / 2;\n\t\tconst originY =\n\t\t\tMath.abs(this.offsetY) - optionHeightAdjustment + itemHeight / 2;\n\t\treturn `50% ${originY}px 0px`;\n\t}\n\n\t/**\n\t * Calculates the scroll position of the select's overlay panel.\n\t *\n\t * Attempts to center the selected option in the panel. If the option is\n\t * too high or too low in the panel to be scrolled to the center, it clamps the\n\t * scroll position to the min or max scroll positions respectively.\n\t */\n\tprivate _calculateOverlayScroll(\n\t\tselectedIndex: number,\n\t\tscrollBuffer: number,\n\t\tmaxScroll: number\n\t): number {\n\t\tconst itemHeight = this._getItemHeight();\n\t\tconst optionOffsetFromScrollTop = itemHeight * selectedIndex;\n\t\tconst halfOptionHeight = itemHeight / 2;\n\n\t\t// Starts at the optionOffsetFromScrollTop, which scrolls the option to the top of the\n\t\t// scroll container, then subtracts the scroll buffer to scroll the option down to\n\t\t// the center of the overlay panel. Half the option height must be re-added to the\n\t\t// scrollTop so the option is centered based on its middle, not its top edge.\n\t\tconst optimalScrollPosition =\n\t\t\toptionOffsetFromScrollTop - scrollBuffer + halfOptionHeight;\n\t\treturn Math.min(Math.max(0, optimalScrollPosition), maxScroll);\n\t}\n\n\t/**\n\t * Sets the x-offset of the overlay panel in relation to the trigger's top start corner.\n\t * This must be adjusted to align the selected option text over the trigger text when\n\t * the panel opens. Will change based on LTR or RTL text direction. Note that the offset\n\t * can't be calculated until the panel has been attached, because we need to know the\n\t * content width in order to constrain the panel within the viewport.\n\t */\n\tprivate _calculateOverlayOffsetX(): void {\n\t\tconst overlayRect = this.overlayRef.overlayElement.getBoundingClientRect();\n\t\tconst viewportSize = {\n\t\t\twidth: window.innerWidth,\n\t\t\theight: window.innerHeight,\n\t\t};\n\t\tconst paddingWidth = this._getPanelToViewportPadding();\n\t\tlet offsetX = 0;\n\n\t\t// todo: multiple\n\t\t// Adjust the offset, depending on the option padding.\n\t\t// offsetX = this.selectedIndex ? padding.panel * 2 : padding.panel;\n\n\t\t// Invert the offset in LTR.\n\t\toffsetX *= -1;\n\n\t\t// Determine how much the select overflows on each side.\n\t\tconst leftOverflow = 0 - (overlayRect.left + offsetX);\n\t\tconst rightOverflow =\n\t\t\toverlayRect.right +\n\t\t\toffsetX -\n\t\t\tviewportSize.width; /* +\n padding.panel * 2*/\n\n\t\t// If the element overflows on either side, reduce the offset to allow it to fit.\n\t\tif (leftOverflow > 0) {\n\t\t\toffsetX += leftOverflow + paddingWidth;\n\t\t} else if (rightOverflow > 0) {\n\t\t\toffsetX -= rightOverflow + paddingWidth;\n\t\t}\n\n\t\t// Set the offset directly\n\t\tthis.position.withOffsetX(offsetX);\n\t\tthis.overlayRef.updatePosition();\n\t}\n\n\t/**\n\t * Calculates the y-offset of the select's overlay panel in relation to the\n\t * top start corner of the trigger. It has to be adjusted in order for the\n\t * selected option to be aligned over the trigger when the panel opens.\n\t */\n\tprivate _calculateOverlayOffsetY(\n\t\tselectedIndex: number,\n\t\tscrollBuffer: number,\n\t\tmaxScroll: number\n\t): number {\n\t\tconst itemHeight = this._getItemHeight();\n\t\tconst optionHeightAdjustment = (itemHeight - this.triggerRect.height) / 2;\n\t\tconst maxHeight = this._getPanelMaxHeight();\n\t\tconst maxOptionsDisplayed = Math.floor(maxHeight / itemHeight);\n\t\tconst items = this.options.length;\n\t\tlet optionOffsetFromPanelTop: number;\n\n\t\tif (this.scrollTop === 0) {\n\t\t\toptionOffsetFromPanelTop = selectedIndex * itemHeight;\n\t\t} else if (this.scrollTop === maxScroll) {\n\t\t\tconst firstDisplayedIndex = items - maxOptionsDisplayed;\n\t\t\tconst selectedDisplayIndex = selectedIndex - firstDisplayedIndex;\n\n\t\t\t// The first item is partially out of the viewport. Therefore we need to calculate what\n\t\t\t// portion of it is shown in the viewport and account for it in our offset.\n\t\t\tconst partialItemHeight =\n\t\t\t\titemHeight - ((items * itemHeight - maxHeight) % itemHeight);\n\n\t\t\t// Because the panel height is longer than the height of the options alone,\n\t\t\t// there is always extra padding at the top or bottom of the panel. When\n\t\t\t// scrolled to the very bottom, this padding is at the top of the panel and\n\t\t\t// must be added to the offset.\n\t\t\toptionOffsetFromPanelTop =\n\t\t\t\tselectedDisplayIndex * itemHeight + partialItemHeight;\n\t\t} else {\n\t\t\t// If the option was scrolled to the middle of the panel using a scroll buffer,\n\t\t\t// its offset will be the scroll buffer minus the half height that was added to\n\t\t\t// center it.\n\t\t\toptionOffsetFromPanelTop = scrollBuffer - itemHeight / 2;\n\t\t}\n\n\t\t// The final offset is the option's offset from the top, adjusted for the height\n\t\t// difference, multiplied by -1 to ensure that the overlay moves in the correct\n\t\t// direction up the page.\n\t\treturn optionOffsetFromPanelTop * -1 - optionHeightAdjustment;\n\t}\n\n\tprivate _highlightCorrectOption() {\n\t\tthis.optionElements.forEach((option) => {\n\t\t\tremoveClass(option, this.config.classes.active);\n\t\t\tremoveClass(option, this.config.classes.highlighted);\n\t\t});\n\n\t\taddClass(\n\t\t\tthis.optionElements[this.selectedIndex],\n\t\t\tthis.config.classes.active\n\t\t);\n\n\t\tif (this.selectedIndex !== this.activeIndex) {\n\t\t\taddClass(\n\t\t\t\tthis.optionElements[this.activeIndex],\n\t\t\t\tthis.config.classes.highlighted\n\t\t\t);\n\t\t}\n\t}\n\n\tprivate _getPanelToViewportPadding() {\n\t\tconst option = this.optionElements[0]!;\n\n\t\t// todo: cache?\n\t\tconst padding = parseCssUnit(getCss(option, 'padding-left'));\n\n\t\treturn Math.round(padding / 2);\n\t}\n\n\tprivate _getPanelMaxHeight(): number {\n\t\t// todo: cache?\n\t\treturn parseCssUnit(getCss(this.overlayRef.portalElement!, 'max-height'));\n\t}\n\n\tprivate _getItemHeight(): number {\n\t\treturn this.optionElements[0]!.offsetHeight!;\n\t}\n\n\t/**\n\t * When the panel element is finished transforming in (though not fading in), it\n\t * emits an event and focuses an option if the panel is open.\n\t */\n\tprivate _onPanelDone(): void {\n\t\tif (this.panelOpen) {\n\t\t\tthis.scrollTop = 0;\n\t\t} else {\n\t\t\tthis.position.withOffsetX(0);\n\t\t}\n\t}\n\n\t/**\n\t * Forward events to the