403Webshell
Server IP : 209.209.40.120  /  Your IP : 216.73.217.112
Web Server : Microsoft-IIS/10.0
System : Windows NT NEWWWW 10.0 build 17763 (Windows Server 2019) i586
User : NEWWWW$ ( 0)
PHP Version : 8.3.30
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : OFF  |  Perl : OFF  |  Python : OFF  |  Sudo : OFF  |  Pkexec : OFF
Directory :  C:/framework7/node_modules/framework7/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : C:/framework7/node_modules/framework7/framework7-bundle.min.js.map
{"version":3,"file":"framework7-bundle.min.js","names":["isObject","obj","constructor","Object","extend","target","src","keys","forEach","key","length","ssrDocument","body","addEventListener","removeEventListener","activeElement","blur","nodeName","querySelector","querySelectorAll","getElementById","createEvent","initEvent","createElement","children","childNodes","style","setAttribute","getElementsByTagName","createElementNS","importNode","location","hash","host","hostname","href","origin","pathname","protocol","search","getDocument","doc","document","ssrWindow","navigator","userAgent","history","replaceState","pushState","go","back","CustomEvent","this","getComputedStyle","getPropertyValue","Image","Date","screen","setTimeout","clearTimeout","matchMedia","requestAnimationFrame","callback","cancelAnimationFrame","id","getWindow","win","window","Dom7","Array","items","super","proto","__proto__","defineProperty","get","set","value","makeReactive","arrayFlat","arr","res","el","isArray","push","arrayFilter","prototype","filter","call","$","selector","context","html","trim","indexOf","toCreate","tempParent","innerHTML","i","a","qsa","nodeType","uniqueArray","arrayUnique","fn","noTrigger","split","shortcut","name","_len14","arguments","args","_key14","trigger","on","click","focus","focusin","focusout","keyup","keydown","keypress","submit","change","mousedown","mousemove","mouseup","mouseenter","mouseleave","mouseout","mouseover","touchstart","touchend","touchmove","resize","scroll","dom","j","_len10","els","_key10","toAdd","_len","classes","_key","classNames","map","c","classList","add","initialProps","initialParams","props","assign","params","duration","easing","elements","animating","que","easingProgress","progress","Math","cos","PI","stop","frameId","each","dom7AnimateInstance","done","complete","shift","animate","index","initialFullValue","initialValue","unit","finalValue","finalFullValue","container","prop","replace","parseFloat","currentValue","time","startTime","elementsDone","propsDone","began","render","easeProgress","getTime","begin","max","min","element","animateInstance","fireCallBack","e","off","newChild","k","undefined","tempDiv","firstChild","appendChild","parent","append","attrs","getAttribute","attrName","is","closest","parents","eq","dom7ElementDataStorage","dataKey","dataset","attributes","attr","string","toLowerCase","match","group","toUpperCase","remove","apply","parentNode","removeChild","textContent","returnIndex","foundElements","found","_len4","_key4","className","contains","innerHeight","css","display","child","previousSibling","after","insertBefore","nextSibling","cloneNode","before","compareWith","matches","webkitMatchesSelector","msMatchesSelector","nextElementSibling","nextEls","next","_len6","_key6","eventType","targetSelector","listener","capture","events","event","handlers","dom7Listeners","dom7LiveListeners","handler","dom7proxy","proxyListener","splice","box","getBoundingClientRect","clientTop","clientLeft","scrollTop","scrollY","scrollLeft","scrollX","top","left","_len5","_key5","handleLiveEvent","eventData","dom7EventData","unshift","handleEvent","_len7","_key7","eventName","onceHandler","_len8","eventArgs","_key8","includeMargins","styles","offsetHeight","offsetWidth","prepend","previousElementSibling","prevEls","prev","propName","removeAttribute","_len2","_key2","_len13","_key13","scrollTo","_len11","_key11","currentTop","currentLeft","maxTop","maxLeft","newTop","newLeft","animateTop","animateLeft","scrollHeight","scrollWidth","_len12","_key12","nextAll","prevAll","text","_len3","_key3","toggle","transform","transitionDuration","_len9","_key9","evt","detail","bubbles","cancelable","data","dataIndex","dispatchEvent","multiple","values","selectedOptions","options","selected","val","innerWidth","methods","methodName","signum","num","lerp","start","amount","clampDouble","input","sanitizeDegreesDouble","degrees","matrixMultiply","row","matrix","SRGB_TO_XYZ","XYZ_TO_SRGB","WHITE_POINT_D65","argbFromRgb","red","green","blue","argbFromLinrgb","linrgb","delinearized","redFromArgb","argb","greenFromArgb","blueFromArgb","lstarFromArgb","labF","linearized","xyzFromArgb","yFromLstar","lstar","ft","ft3","labInvf","lstarFromY","y","rgbComponent","normalized","pow","round","t","ViewingConditions","make","whitePoint","adaptingLuminance","backgroundLstar","surround","discountingIlluminant","xyz","rW","gW","bW","f","d","exp","nc","rgbD","k4","k4F","fl","cbrt","n","z","sqrt","nbb","ncb","rgbAFactors","rgbA","aw","fLRoot","DEFAULT","Cam16","hue","chroma","q","m","s","jstar","astar","bstar","distance","other","dJ","dA","dB","dEPrime","fromInt","fromIntInViewingConditions","viewingConditions","redL","greenL","blueL","x","rC","gC","bC","rD","gD","bD","rAF","abs","gAF","bAF","rA","gA","bA","b","u","p2","atanDegrees","atan2","hueRadians","ac","huePrime","alpha","mstar","log","sin","fromJch","h","fromJchInViewingConditions","fromUcs","fromUcsInViewingConditions","toInt","viewed","hRad","eHue","p1","hSin","hCos","gamma","rCBase","gCBase","bCBase","rF","gF","bF","linearR","linearG","linearB","argbFromXyz","fromXyzInViewingConditions","J","Q","C","M","xyzInViewingConditions","HctSolver","sanitizeRadians","angle","trueDelinearized","chromaticAdaptation","component","af","hueOf","scaledDiscount","SCALED_DISCOUNT_FROM_LINRGB","areInCyclicOrder","intercept","source","mid","lerpPoint","setCoordinate","coordinate","axis","isBounded","nthVertex","kR","Y_FROM_LINRGB","kG","kB","coordA","coordB","g","r","bisectToSegment","targetHue","right","leftHue","rightHue","initialized","uncut","midHue","midpoint","criticalPlaneBelow","floor","criticalPlaneAbove","ceil","bisectToLimit","segment","lPlane","rPlane","mPlane","midPlaneCoordinate","CRITICAL_PLANES","inverseChromaticAdaptation","adapted","adaptedAbs","base","findResultByJ","tInnerCoeff","iterationRound","jNormalized","LINRGB_FROM_SCALED_DISCOUNT","fnj","solveToInt","hueDegrees","argbFromLstar","exactAnswer","solveToCam","Hct","from","tone","internalHue","newHue","setInternalState","internalChroma","internalTone","newChroma","newTone","cam","inViewingConditions","vc","viewedInVc","recastInVc","Blend","harmonize","designColor","sourceColor","fromHct","toHct","differenceDegrees$1","rotationDegrees","outputHue","hctHue","to","ucs","cam16Ucs","ucsCam","fromCam","toCam","fromJ","fromA","fromB","Contrast","ratioOfTones","toneA","toneB","ratioOfYs","y1","y2","lighter","ratio","darkY","lightY","realContrast","delta","returnValue","darker","lighterUnsafe","lighterSafe","darkerUnsafe","darkerSafe","DislikeAnalyzer","isDisliked","hct","huePasses","chromaPasses","tonePasses","fixIfDisliked","DynamicColor","fromPalette","palette","isBackground","background","secondBackground","contrastCurve","toneDeltaPair","hctCache","Map","Error","getArgb","scheme","getHct","cachedAnswer","getTone","answer","size","clear","decreasingContrast","contrastLevel","roleA","roleB","polarity","stayTogether","bgTone","aIsNearer","isDark","nearer","farther","amNearer","expansionDir","nContrast","getContrast","fContrast","nInitialTone","nTone","foregroundTone","fInitialTone","fTone","desiredRatio","bg1","bg2","bgTone1","bgTone2","upper","lower","lightOption","darkOption","availables","tonePrefersLightForeground","lighterTone","darkerTone","lighterRatio","darkerRatio","negligibleDifference","toneAllowsLightForeground","enableLightForeground","Variant","MONOCHROME","NEUTRAL","TONAL_SPOT","VIBRANT","EXPRESSIVE","FIDELITY","CONTENT","RAINBOW","FRUIT_SALAD","ContrastCurve","low","normal","medium","high","ToneDeltaPair","isFidelity","variant","isMonochrome","performAlbers","prealbers","albersd","viewingConditionsForAlbers","MaterialDynamicColors","highestSurface","surfaceBright","surfaceDim","contentAccentToneDelta","primaryPaletteKeyColor","primaryPalette","keyColor","secondaryPaletteKeyColor","secondaryPalette","tertiaryPaletteKeyColor","tertiaryPalette","neutralPaletteKeyColor","neutralPalette","neutralVariantPaletteKeyColor","neutralVariantPalette","onBackground","surface","surfaceContainerLowest","surfaceContainerLow","surfaceContainer","surfaceContainerHigh","surfaceContainerHighest","onSurface","surfaceVariant","onSurfaceVariant","inverseSurface","inverseOnSurface","outline","outlineVariant","shadow","scrim","surfaceTint","primary","primaryContainer","onPrimary","sourceColorHct","onPrimaryContainer","inversePrimary","secondary","secondaryContainer","onSecondary","initialTone","byDecreasingTone","closestToChroma","chromaPeak","potentialSolution","findDesiredChromaByTone","onSecondaryContainer","tertiary","tertiaryContainer","onTertiary","albersTone","proposedHct","onTertiaryContainer","error","errorPalette","errorContainer","onError","onErrorContainer","primaryFixed","primaryFixedDim","onPrimaryFixed","onPrimaryFixedVariant","secondaryFixed","secondaryFixedDim","onSecondaryFixed","onSecondaryFixedVariant","tertiaryFixed","tertiaryFixedDim","onTertiaryFixed","onTertiaryFixedVariant","TonalPalette","fromHueAndChroma","createKeyColor","cache","smallestDeltaHct","smallestDelta","hctAdd","hctAddDelta","hctSubtract","hctSubtractDelta","CorePalette","of","contentOf","fromColors","colors","createPaletteFromColors","contentFromColors","content","p","a2","a1","a3","neutral","n1","neutralVariant","n2","isContent","Scheme","light","lightFromCorePalette","dark","darkFromCorePalette","lightContent","darkContent","core","toJSON","hexFromArgb","outParts","toString","part","entries","join","argbFromHex","hex","isThree","isSix","isEight","parseIntHex","slice","repeat","parseInt","themeFromSourceColor","customColors","schemes","palettes","color","blend","tones","onColor","colorContainer","onColorContainer","customColor","toRGBA","l","rgba","String","materialColors","hexColor","theme","char","shouldSkip","v","includes","uniqueNum","mask","random","mdPreloaderContent","iosPreloaderContent","eventNameToColonCase","hasColon","deleteProps","object","nextTick","delay","nextFrame","now","parseUrlQuery","url","query","param","urlToParse","paramsPart","decodeURIComponent","getTranslate","curTransform","transformMatrix","curStyle","WebKitCSSMatrix","webkitTransform","MozTransform","OTransform","MsTransform","msTransform","m41","m42","serializeObject","resultArray","newParents","varName","parentParts","encodeURIComponent","varValue","toPush","o","merge","nextSource","keysArray","nextIndex","len","nextKey","desc","getOwnPropertyDescriptor","enumerable","deep","colorHexToRgb","result","exec","colorRgbToHex","colorRgbToHsl","colorHslToRgb","hp","rgb1","Number","isNaN","colorHsbToHsl","HSL","HSB","colorHslToHsb","getShadeTintColors","rgb","hsl","hslShade","hslTint","shade","tint","colorThemeCSSProperties","shadeTintIos","shadeTintMdLight","shadeTintMdDark","ios","md","bindMethods","instance","subKey","bind","flattenArray","arg","stringifyObject","colorVars","colorName","restVars","colorValue","rest","whiteColorVars","blackColorVars","lightString","darkString","support","deviceCalculated","getSupport","touch","DocumentTouch","pointerEvents","PointerEvent","maxTouchPoints","passiveListener","supportsPassive","opts","intersectionObserver","calcSupport","IS_BROWSER","Boolean","width","getDevice","overrides","reset","_temp","platform","ua","device","android","androidChrome","desktop","iphone","ipod","ipad","edge","ie","firefox","macos","windows","cordova","electron","capacitor","Capacitor","nwjs","screenWidth","screenHeight","height","nw","process","versions","os","osVersion","webView","standalone","webview","pixelRatio","devicePixelRatio","prefersColorScheme","calcDevice","EventsClass","eventsParents","eventsListeners","priority","self","method","once","f7proxy","eventHandler","emit","local","eventsArray","localEvents","parentEvents","eventsParent","Framework7Class","useModuleParams","module","instanceParams","originalParams","paramKey","useModulesParams","modules","moduleName","useModule","moduleParams","modulePropName","moduleProp","moduleEventName","vnode","vnodeHooks","vnodeId","hookName","create","useModules","modulesParams","components","use","installModule","Class","static","install","ConstructorMethods","parameters","defaultSelector","Constructor","domProp","app","addMethods","$el","destroy","ModalMethods","open","targetEl","$targetPage","modalEl","$modalEl","f7Modal","close","$parentEl","$targetEl","fetchedModules","$jsx","tag","attrsString","Framework7","passedParams","w","defaults","routes","lazyModulesPath","initOnDeviceReady","init","darkMode","iosTranslucentBars","iosTranslucentModals","componentUrl","pink","yellow","orange","purple","deeppurple","lightblue","teal","lime","deeporange","white","black","online","onLine","store","f7","initStore","setColorTheme","setColors","colorsStyleEl","head","utils","colorThemeCSSStyles","mount","rootEl","$rootEl","rtl","DARK","LIGHT","mq","colorSchemeListener","_ref","media","__store","createStore","enableAutoDarkMode","disableAutoDarkMode","setDarkMode","mode","initAppComponent","router","componentLoader","componentOptions","$elComponent","f7Component","addClass","hasClass","removeClass","loadModule","loadModules","getVnodeHooks","hook","Events","moduleToLoad","Promise","resolve","reject","modulePath","moduleObj","moduleFunc","matchNamePattern","scriptLoad","resolveScript","rejectScript","fetch","then","scriptContent","callbackLoadName","scriptEl","catch","err","styleLoad","resolveStyle","styleContent","styleEl","all","DeviceModule","metaStatusbar","SupportModule","UtilsModule","ResizeModule","getSize","offset","orientationchange","TouchModule","touchClicksDistanceThreshold","disableContextMenu","tapHold","tapHoldDelay","tapHoldPreventClicks","activeState","activeStateElements","activeStateOnMouseMove","mdTouchRipple","iosTouchRipple","touchRippleElements","touchRippleInsetElements","touchEvents","move","end","useRipple","touchStartX","touchStartY","targetElement","isMoved","tapHoldFired","tapHoldTimeout","preventClick","activableElement","activeTimeout","rippleWave","rippleTarget","rippleTimeout","isScrolling","findActivableElement","activable","newActivable","preventPropagation","isInsideScrollableView","addActive","removeActive","createRipple","touchRipple","removeRipple","rippleTouchStart","rippleElements","rippleParent","findRippleElement","rippleTouchMove","rippleTouchEnd","handleMouseUp","isSegmentedStrong","segmentedStrongEl","touchMoveActivableIos","isTouchMoveActivable","touchmoveActivableEl","emitAppTouchEvent","appTouchStartActive","appTouchMoveActive","appTouchEndActive","appTouchStartPassive","appTouchMovePassive","appTouchEndPassive","passive","passiveListenerCapture","activeListener","activeListenerCapture","isOverswipe","isSegmented","localPreventClick","stopImmediatePropagation","stopPropagation","preventDefault","isTrusted","targetTouches","touches","pageX","pageY","shouldRemoveActive","type","touchCurrentX","touchCurrentY","buttonEl","elementFromPoint","clientX","clientY","$activableEl","which","isNative","parse","str","tokens","count","pattern","TypeError","concat","code","charCodeAt","lexer","_a","prefixes","defaultPattern","escapeString","delimiter","path","tryConsume","mustConsume","nextType","consumeText","prefix","suffix","modifier","name_1","pattern_1","compile","reFlags","flags","encode","_b","validate","token","RegExp","optional","test","typeOfMessage","tokensToFunction","sensitive","stringToRegexp","strict","_c","_d","_e","_f","endsWith","endsWithRe","delimiterRe","route","_i","tokens_1","mod","endToken","isEndDelimited","tokensToRegexp","pathToRegexp","groupsRegex","execResult","regexpToRegexp","paths","parts","arrayToRegexp","History","queue","clearQueue","currentQueue","routerQueue","clearRouterQueue","pop","stateUrl","action","browserHistoryAnimate","browserHistory","navigate","handle","blockPopstate","state","previousState","allowChange","views","view","viewState","allowPageChange","initViewState","viewId","newState","substr","readyState","SwipeBack","$navbarsEl","isTouched","touchesStart","viewContainerWidth","touchesDiff","touchStartTime","dynamicNavbar","$pageShadowEl","$pageOpacityEl","animatableNavEls","$currentPageEl","$previousPageEl","allowViewTouchMove","$currentNavbarEl","$previousNavbarEl","paramsSwipeBackAnimateShadow","paramsSwipeBackAnimateOpacity","paramsSwipeBackActiveArea","paramsSwipeBackThreshold","transformOrigin","transformOriginTitleLarge","setAnimatableNavElements","transition","reflow","_clientLeft","classNameSet","styleProp","handleTouchStart","swipeBackEnabled","swipeout","masterDetailBreakpoint","handleTouchMove","f7PreventSwipeBack","preventSwipeBack","cancel","find","notFromBorder","inverter","currentNavIsTransparent","currentNavIsLarge","currentNavIsCollapsed","currentNavIsLargeTransparent","previousNavIsTransparent","previousNavIsLarge","previousNavIsCollapsed","previousNavIsLargeTransparent","fromLarge","toLarge","$currentNavElements","$previousNavElements","activeNavBackIconText","previousNavBackIconText","iosAnimateNavbarBackIcon","f7NavbarLeftOffset","navEl","$navEl","isSubnavbar","isLeft","isTitle","isBg","overflow","subNavEl","opacity","isSliding","transformTarget","textEl","activeNavTranslate","f7NavbarRightOffset","previousNavTranslate","animatableNavElements","sheet","f7PreventSwipePanel","preventSwipePanelBySwipeBack","percentage","callbackData","currentPageEl","previousPageEl","currentNavbarEl","previousNavbarEl","currentPageTranslate","previousPageTranslate","swipeBackActive","handleTouchEnd","$pages","timeDiff","pageChanged","removeAttr","setNavbarPosition","currentRoute","f7Page","currentPage","pageCallback","swipeBack","transitionEnd","saveHistory","removePage","removeNavbar","previousRoute","preloadPreviousPage","preload","attachEvents","redirect","direction","initial","redirectUrl","redirectOptions","processQueue","routeQueue","processRouteQueue","enterNextRoute","routesBeforeEnter","beforeEnter","routesBeforeLeave","beforeLeave","appRouterCheck","asyncComponent","resolvePromise","componentPromise","default","_default","cause","asyncComponentResult","forward","forwardOptions","reloadCurrent","reloadPages","reloadPrevious","reloadAll","clearPreviousHistory","reloadDetail","masterDetailEnabled","isMaster","master","masterPageEl","otherDetailPageEl","modalType","detailsInBetweenRemoved","currentRouteIsModal","modal","modalLoadProp","modalToClose","modalInstance","previousUrl","findMatchingRoute","modalRemove","$viewEl","$newPage","reload","$oldPage","$newNavbarEl","$oldNavbarEl","removeThemeElements","$navbarEl","keepAlive","keepAliveData","pageEl","$pagesInView","pageInView","$navbarsInView","isDetail","isDetailRoot","navbarInView","newPagePosition","position","role","root","detailRoot","navbar","getElByPage","navbarEl","removedPageEls","removedNavbarEls","oldNavbarEl","browserHistoryRoot","browserHistorySeparator","propsHistory","newPageInDom","componentEl","f7PageMounted","$oldPageEl","$oldNavbarElEl","tab","tabLoad","checkMasterDetailBreakpoint","setPagePosition","afterAnimation","keepOldPage","setPositionClasses","f7PageTransition","load","loadParams","loadOptions","ignorePageChange","pageName","parentPath","sameParams","paramName","allowDuplicateUrls","parseRouteUrl","getPageEl","pageComponentLoader","routerEl","newOptions","xhrAbortController","abort","xhrRequest","pageContent","backward","backwardOptions","masterPageRemoved","initialPreload","currentIsMaster","backIndex","masterRoute","force","$pageToRemove","$navbarToRemove","insertPage","$previousPages","pageToRemove","loadBack","backParams","backOptions","Router","isAppRouter","routerId","scrollHistory","iosDynamicNavbar","initialPages","initialNavbars","configurable","newRoute","tempDom","navbarsEl","animateIcon","newNavEls","oldNavEls","animatableNavEl","$navbarInner","needsOpacityTransition","$iconEl","isIconLabel","leftOffset","rightOffset","navEls","otherEls","otherNavEl","iconTextEl","offsetLeft","$newPageEl","animateCustom","routerCustomTransitionClass","onCustomTransitionDone","animationEnd","routerTransitionClass","toDifferent","oldIsLarge","newIsLarge","animateNavbars","setProperty","removeModal","removeEl","removeTabContent","tabEl","tabChild","removeElements","removeElementsWithTimeout","removeElementsTimeout","findElement","stringSelector","$container","viewMainClass","flattenRoutes","flattenedRoutes","hasTabRoutes","tabs","mergedPathsRoutes","tabRoute","tRoute","detailRoutes","detailRoute","dRoute","masterRoutePath","childRoute","cRoute","generateUrl","findRouteByKey","constructRouteUrl","toUrl","findTabRouteUrl","$tabEl","tabId","foundTabRouteUrl","matchingRoute","pathsToMatch","matched","alias","aliasPath","pathToMatch","keyObj","paramValue","replaceRequestUrlParams","compiledUrl","regExp","removeFromXhrCache","xhrCache","xhr","requestUrl","ignoreCache","hasQuery","passRouteQueryToRequest","passRouteParamsToRequest","xhrCacheIgnoreGetParameters","xhrCacheIgnore","cachedUrl","xhrCacheDuration","fetchRes","AbortController","signal","responseText","status","ariaHidden","toRemove","getPageData","pageFromEl","$pageEl","pageFrom","fromPage","$pageFromEl","page","restoreScrollTopOnBack","camelName","colonName","f7RouteEventsAttached","f7RouteEventsOn","f7RouteEventsOnce","$pageContent","pageContentEl","f7PageInitialized","browserHistoryStoreHistory","localStorage","JSON","stringify","restoreHistory","clearHistory","updateCurrentUrl","newUrl","getInitialUrl","initialUrl","historyRestored","URL","documentUrl","browserHistoryOnLoad","console","warn","substring","iosSwipeBack","mdSwipeBack","browserHistoryAnimateOnLoad","browserHistoryInitialMatch","initUrl","loadInitialPage","modalOpen","pageAfterIn","hasTabRoute","initOptions","routerProp","navigateParams","navigateOptions","createRoute","navigateUrl","currentPath","viewName","anotherViewName","anotherView","openIn","ignoreOpenIn","routerLoaded","asyncResolve","resolveParams","resolveOptions","resolvedAsModal","modalRoute","modalLoad","asyncReject","pageLoadProp","async","preloadMaster","masterLoaded","refreshPage","parentPageEl","browserHistoryTabs","$parentPageEl","tabShowResult","show","$newTabEl","$oldTabEl","animated","onTabsChanged","tabParentPageData","f7RouterTabLoaded","loadTab","loadTabParams","loadTabOptions","contentEl","tabEventTarget","unloadTabContent","tabRemove","onTabLoaded","tabComponentLoader","tabContent","hasContentLoadProp","tabLoadProp","hasTabComponentChild","isPanel","modalOrPanel","modalParams","routeCallback","panelOpen","modalClose","panelClose","modalClosed","panelClosed","onModalLoaded","hasEl","closeOnSwipeBack","closeByRouter","modalComponent","loadModal","loadModalParams","loadModalOptions","modalComponentLoader","modalContent","foundLoadProp","navigateProps","prevOpenedModals","forceOtherUrl","isBrokenBrowserHistory","needHistoryBack","currentRouteWithoutBrowserHistory","skipMaster","$previousPage","$previousMaster","expectedPreviousPageUrl","expectedPreviousPageRoute","previousPageObj","previousPageRoute","panel","clearPreviousPages","RouterModule","templates","resizableView","resizableInitialized","resizable","resizableWidth","$htmlEl","$resizeHandlerEl","minWidth","maxWidth","transformCSSWidth","newV","$pageMasterEl","newWidth","handleResize","viewParams","message","routesAdd","main","f7View","viewProp","wasMasterDetail","isMasterDetail","initMasterDetail","masterDetailResizable","viewEl","initRouterOnTabShow","View","ClicksModule","clicks","externalLinks","$clickedEl","$clickedLinkEl","isLink","InAppBrowser","Plugins","Browser","moduleClicks","preventF7Router","clickSelector","matchingClickedElement","clickedLinkData","clickedEl","current","linksView","ViewClass","f7RouteProps","initClicks","RouterComponentLoaderModule","popup","loginScreen","popover","ctx","$h","$onMounted","$f7","side","effect","componentFunction","componentContext","f7route","f7router","componentProps","routeProps","componentRoot","createdComponent","cachedComponent","componentCache","cached","loadedComponent","parsedComponent","_temp2","_temp3","ignoreChildren","sel","elm","array","primitive","addNS","ns","childData","customComponents","SELF_CLOSING","PROPS_ATTRS","BOOLEAN_PROPS","getTagName","treeNode","propsFromAttrs","word","isCustomComponent","treeNodeType","getHooks","isRoot","hooks","insert","update","postpatch","isFakeElement","tagName","isCustom","__component__","createCustomComponent","destroyCustomComponent","oldVnode","newProps","updateCustomComponent","class","vn","getChildren","nodes","childNode","treeNodeToVNode","isTreeNode","getSlots","slotName","slotNodes","childTreeNode","childSlotName","slot","subTreeNode","getData","attrValue","prevent","eventNamePart","eventNameIndex","fired","getEventHandler","prepatch","vdom","tree","htmlDomApi","namespaceURI","qualifiedName","createTextNode","createComment","newNode","referenceNode","node","setTextContent","getTextContent","isElement","isText","isComment","isUndef","isDef","emptyNode","sameVnode","vnode1","vnode2","createKeyToOldIdx","beginIdx","endIdx","ch","updateAttrs","oldAttrs","cur","setAttributeNS","attributesModule","updateProps","oldProps","propsModule","raf","setNextFrame","updateStyle","oldStyle","oldHasDel","removeProperty","delayed","name2","styleModule","rm","applied","ev","updateEvents","oldOn","oldListener","oldElm","invokeHandler","patch","domApi","cbs","api","emptyNodeAt","createRmCb","childElm","listeners","parent_1","createElm","insertedVnodeQueue","hashIdx","dotIdx","dot","addVnodes","parentElm","vnodes","startIdx","invokeDestroyHook","removeVnodes","i_1","patchVnode","oldCh","newCh","oldKeyToIdx","idxInOld","elmToMove","oldStartIdx","newStartIdx","oldEndIdx","oldStartVnode","oldEndVnode","newEndIdx","newStartVnode","newEndVnode","updateChildren","pre","isVnode","post","types","flat","swap","fromTo","_","sort","every","getPrototypeOf","Component","generateId","__updateQueue","__eventHandlers","__onceEventHandlers","__onBeforeMount","__onMounted","__onBeforeUpdate","__onUpdated","__onBeforeUnmount","__onUnmounted","createComponent","getComponentContext","componentResult","getRenderFuncion","renderFunction","getComponentRef","getComponentStore","_gettersPlain","dispatch","$store","getters","Proxy","onUpdated","getUseState","_this","reduce","_x","Symbol","iterator","includeHooks","$f7route","$f7router","$id","$f7ready","f7ready","$theme","$tick","tick","$update","$emit","$ref","$useState","$on","$once","$onBeforeMount","$onBeforeUpdate","$onUpdated","$onBeforeUnmount","$onUnmounted","_ref2","detachEvents","_ref3","_ref4","startUpdateQueue","__requestAnimationFrameId","newVNode","__updateIsPending","resolvers","resolver","__destroyed","setState","mountMethod","parseComponent","componentString","componentId","callbackCreateName","template","item","scripts","registerComponent","unregisterComponent","flatChildren","ComponentModule","HistoryModule","SW","registrations","register","scope","serviceWorker","reg","unregister","registration","ServiceWorkerModule","storeParams","originalState","actions","propsQueue","gettersDependencies","gettersCallbacks","getterKey","getGetterValue","addGetterCallback","__removeCallback","stateKey","callbacks","removeGetterCallback","getterValue","addCallback","addGetterDependencies","deps","dep","__callback","actionName","StoreModule","isCapacitor","StatusBar","Statusbar","hide","onClick","setTextColor","styleLightContent","styleDefault","setStyle","setBackgroundColor","backgroundColorByHexString","isVisible","getInfo","info","visible","overlaysWebView","overlays","setOverlaysWebView","overlay","statusbar","enabled","isCordova","isCap","scrollTopOnClick","iosOverlaysWebView","iosTextColor","androidOverlaysWebView","androidTextColor","iosBackgroundColor","androidBackgroundColor","Statusbar$1","iosSwipeBackAnimateShadow","iosSwipeBackAnimateOpacity","iosSwipeBackActiveArea","iosSwipeBackThreshold","mdSwipeBackAnimateShadow","mdSwipeBackAnimateOpacity","mdSwipeBackActiveArea","mdSwipeBackThreshold","iosPageLoadDelay","mdPageLoadDelay","$popoverView","$popupView","$panelView","$viewsEl","getCurrentView","Navbar","$innerEl","needCenterTitle","needLeftTitle","iosCenterTitle","title","subnavbar","noLeft","noRight","leftWidth","outerWidth","rightWidth","titleWidth","navbarStyles","navbarInnerWidth","paddingLeft","paddingRight","isPrevious","sliding","currLeft","diff","requiredLeft","titleLeftOffset","titleRightOffset","activeNavbarBackLink","titleLeft","hideStatusbar","hideOnlyCurrent","isDynamic","subEl","pageData","getPageByEl","collapseLargeTitle","expandLargeTitle","toggleLargeTitle","initNavbarOnScroll","needHide","needCollapse","needTransparent","$titleLargeEl","isLarge","navbarHideHeight","snapPageScrollToLargeTitle","snapPageScrollToTransparentNavbar","previousScrollTop","currentScrollTop","reachEnd","navbarHidden","navbarCollapsed","navbarTitleLargeHeight","navbarOffsetHeight","scrollChanged","scrollContent","scrollTimeoutId","touchEndTimeoutId","calcScrollableDistance","f7ScrollableDistance","snapLargeNavbar","snapTransparentNavbar","previousCollapseProgress","collapseProgress","handleScroll","isLargeTransparent","scrollableDistance","previousCollapseWasInMiddle","$bgEl","handleLargeNavbarCollapse","isHidden","notTransparent","handleNavbarTransparent","showOnPageScrollEnd","showOnPageScrollTop","handeTouchStart","f7DetachNavbarScrollHandlers","Navbar$1","scrollTopOnTitleClick","mdCenterTitle","hideOnPageScroll","collapseLargeTitleOnScroll","pageBeforeRemove","pageBeforeIn","pageReinit","pageInit","needCollapseOnScrollHandler","needTransparentOnScroll","needHideOnScrollHandler","tabShow","clickedData","$pageContentEl","Toolbar","setHighlight","tabbarEl","$tabbarEl","$highlightEl","tabLinksCount","$activeLink","highlightWidth","highlightTranslate","activeIndex","toolbar","initToolbarOnScroll","toolbarHidden","$toolbarEl","f7ScrollToolbarHandler","Toolbar$1","tabbar","Subnavbar","subnavbarEl","ripple","center","diameter","isInset","insetElements","rippleTransform","scale","$rippleWaveEl","shouldBeRemoved","out","removeTimeout","TouchRipple","openedModals","dialogsQueue","opened","$containerEl","containerEl","onOpen","onOpened","onClose","onClosed","backdrop","backdropUnique","forceBackdropUnique","$backdropEl","animateModal","queueDialogs","pushToQueue","openedModal","$modalParentEl","wasInDom","needToHideBackdrop","popupEl","popupInstance","closeByBackdropClick","backdropEl","clearDialogsQueue","destroyed","CustomModal","Modal","extendedParams","customModal","handleClick","dialog","buttons","verticalButtons","cssClass","destroyOnClose","addKeyboardHander","dialogClasses","buttonsHTML","button","strong","dialogHtml","buttonOnClick","onKeyDown","keyCode","keyCodes","setProgress","progressbar","setText","newText","$textEl","insertAfter","setTitle","newTitle","$titleEl","Dialog","buttonOk","buttonCancel","usernamePlaceholder","passwordPlaceholder","preloaderTitle","progressTitle","destroyPredefinedDialogs","keyboardActions","autoFocus","defaultDialogTitle","autoFocusHandler","isIosTheme","alert","callbackOk","prompt","callbackCancel","defaultValue","inputValue","confirm","login","username","password","preloader","preloaderInner","infinite","pushOffset","isPush","$target","Keyboard","plugins","needToClose","closeOnEscape","pushViewScale","startTouch","currentTouch","pageContentScrollTop","pageContentOffsetHeight","pageContentScrollHeight","popupHeight","$pushEl","allowSwipeToClose","swipeToClose","swipeHandler","pushProgress","hasPreviousPushPopup","updatePushOffset","wasPush","setPushOffset","Popup","parentSelector","LoginScreen","anotherPopoverEl","$arrowEl","f7PopoverRef","arrow","originalOpen","arrowEl","touchStartTarget","closeByOutsideClick","isAnotherPopoverBackdrop","isAnotherPopoverTarget","targetX","targetY","verticalPosition","arrowLeft","arrowTop","arrowSize","hasArrow","arrowMin","targetWidth","targetHeight","targetOffsetLeft","targetOffsetTop","safeAreaTop","safeAreaLeft","safeAreaRight","outerHeight","targetOffset","targetParentPage","forcedPosition","hPosition","Popover","popoverEl","$popoverEl","groups","convertToPopover","popoverHtml","renderPopover","actionsHtml","originalClose","$buttonEl","buttonIndex","groupIndex","forceToPopover","closed","grid","buttonClasses","label","bg","disabled","icon","itemClasses","Actions","useBreakpoints","breakpoints","isTopSheetModal","swipeStepTranslate","startTranslate","currentTranslate","sheetElOffsetHeight","minTranslate","maxTranslate","$pushViewEl","pushBorderRadius","sheetPageContentEl","sheetPageContentScrollTop","sheetPageContentScrollHeight","sheetPageContentOffsetHeight","currentBreakpointIndex","breakpointsTranslate","backdropBreakpointSet","swipeToStep","setBackdropBreakpoint","setPushBreakpoint","openDirection","closeDirection","absCurrentTranslate","absSwipeStepTranslate","setBreakpoint","allBreakpoints","closestTranslate","curr","closestIndex","stepOpened","breakpoint","pushBreakpoint","pushBreakpoints","pushTransparentBreakpoint","backdropBreakpoint","backdropBreakpoints","backdropTransparentBreakpoint","calcBreakpoints","fullSize","onResize","setSwipeStep","byResize","$swipeStepEl","scrollToEl","$scrollEl","paddingTop","paddingBottom","pageHeight","pageScrollHeight","pageScroll","newPaddingBottom","scrollElTop","scrollToElementOnOpen","stepOpen","stepClose","stepToggle","toggleClass","Sheet","sheetInstance","toast","closeButton","closeTimeout","timeoutId","toastHtml","openedEl","toastInstance","horizontalPosition","closeButtonColor","closeButtonText","Toast","Preloader","preloaders","showIn","hideIn","Preloader$1","photoBrowserOpen","pb","preloaderEl","tabMounted","Progressbar","progressNormalized","$progressbarEl","$progressbarLine","removeAfterHide","Progressbar$1","progressbarEl","Sortable","$sortingEl","$sortingItems","$sortableContainer","sortingElHeight","minTop","$insertAfterEl","$insertBeforeEl","indexFrom","pageOffset","sortingElOffsetLocal","sortingElOffsetTop","initialScrollTop","wasTapHold","isTapHold","$listGroup","allowOpen","allow","offsetTop","translateScrollOffset","translate","scrollAddition","scrollDiff","allowScroll","$currentEl","currentElOffset","currentElHeight","sortingElOffset","prevTranslate","f7Translate","indexTo","moveElements","sortableMoveElements","sortable","f7VirtualListIndex","virtualList","f7VirtualList","moveItem","pointerEvent","enable","disable","Sortable$1","Swipeout","$swipeoutEl","$swipeoutContent","$actionsRight","$actionsLeft","actionsLeftWidth","actionsRightWidth","openedActionsSide","$leftButtons","$rightButtons","$overswipeLeftButton","$overswipeRightButton","overswipeLeft","overswipeRight","noFollow","buttonOffset","buttonTranslate","overswipeRatio","f7SwipeoutButtonOffset","$actions","actionsWidth","$buttons","newTranslate","$swipeoutActions","swipeoutActionsWidth","onSwipeoutClose","delete","virtualIndex","deleteItem","Swipeout$1","actionsNoFold","confirmTitle","Accordion","toggleClicked","$accordionItemEl","$accordionContent","accordion","prevented","$list","$contentEl","$openedItem","Accordion$1","vl","defaultHeight","cols","dynamicHeightBufferSize","showFilteredItemsOnly","renderExternal","setListHeight","searchByItem","searchAll","ul","createUl","scrollableParentEl","renderItem","filteredItems","$scrollableParentEl","updatableScroll","$itemsWrapEl","$ul","itemsWrapEl","domCache","tempDomElement","lastRepaintY","fragment","createDocumentFragment","rowsPerScreen","rowsBefore","rowsAfter","rowsToRender","maxBufferHeight","listHeight","dynamicHeight","autoHeight","handleScrollBound","handleResizeBound","$panelEl","$popupEl","setListSize","autoHeightRerender","heights","itemHeight","heightsCalculated","renderedItems","itemIndex","renderedItem","forceScrollTop","fromIndex","toIndex","topPosition","heightBeforeFirstItem","heightBeforeLastItem","itemTop","renderExternalItems","itemEl","currentFromIndex","currentToIndex","emptyTemplate","filterItems","indexes","resetScrollTop","resetFilter","scrollToItem","listTop","getClientRects","appendItems","appendItem","replaceAllItems","replaceItem","prependItems","newCache","prependItem","cachedIndex","leftIndex","rightIndex","indexShift","insertItemBefore","deleteItems","prevIndex","deletedItem","deleteAllItems","clearCache","deleteCache","VirtualList","listEl","iosItemHeight","mdItemHeight","scrollList","itemContent","renderSkipPlaceholder","$listEl","f7ListIndex","calcSize","$clickedLi","skipRate","siblings","scrollListToIndex","topPoint","bottomPoint","$labelEl","previousIndex","$children","ulHeight","bubbleBottom","$scrollToEl","parentTop","scrollToElTop","navbarInnerEl","wasSkipped","itemHtml","maxItems","calcIndexes","elContent","ListIndex","listIndex","listIndexEl","tabBeforeRemove","Tab","tabLinkEl","animatedInit","f7TabRoute","newTabEl","$tabLinkEl","$tabsEl","tabsChangedCallbacks","tabsChanged","swiper","tabsTranslate","newTabIndex","slides","slideTo","tabLinkElement","$oldTabLinkEl","oldTabId","oldTabEl","Tabs","pageOrTabEl","animatedTabEl","resizablePanel","panelWidth","panelMinWidth","panelMaxWidth","visibleByBreakpoint","isPushingPanel","getViewEl","newPanelWidth","f7Panel","setStateClasses","panelInView","enableVisibleBreakpoint","visibleBreakpointDisabled","setVisibleBreakpoint","disableVisibleBreakpoint","toggleVisibleBreakpoint","emitEvents","visibleBreakpointResizeHandler","visibleBreakpoint","wasVisible","allowPanelOpen","enableCollapsedBreakpoint","collapsedBreakpointDisabled","setCollapsedBreakpoint","disableCollapsedBreakpoint","toggleCollapsedBreakpoint","collapsedBreakpointResizeHandler","collapsedBreakpoint","collapsed","enableResizable","disableResizable","enableSwipe","swipeInitialized","swipeable","otherPanel","isGestureStarted","isInterrupted","backdropOpacity","touchMoves","swipe","swipeOnlyClose","otherPanelOpened","swipeActiveArea","preventSwipePanel","threshold","swipeThreshold","insertToRoot","noFollowProgress","swipeNoFollow","viewTranslate","isGesture","removePanelInClass","visibility","handleGestureStart","handleGestureEnd","swipePanel","disableSwipe","modifyHtmlClasses","_openTransitionStarted","$panelParentEl","otherOpenedPanel","transitionEndTarget","transitionStart","panelTransitionEnd","Panel","panelEl","CardExpandable","cardEl","$cardEl","cardParams","card","hideNavbarOnOpen","hideToolbarOnOpen","currTransform","hasTransform","$cardContentEl","$cardSizeEl","statusbarHeight","cardWidth","cardHeight","pageWidth","maxHeight","hideStatusbarOnOpen","cardLeftOffset","cardTopOffset","scaleX","scaleY","transformValues","cardRightOffset","cardScrollTop","touchEndX","touchEndY","isV","isH","$cardScrollableEl","cardBottomOffset","translateX","translateY","onTouchStart","scrollableEl","onTouchMove","onTouchEnd","f7KeepNavbarOnClose","f7KeepToolbarOnClose","detachEventHandlers","animateWidth","Card","$openedCardEl","FormData","form","formId","$formEl","removeItem","FormStorage","formEl","initialData","getFormData","fillFromData","convertToData","storeFormData","formToData","skipTypes","skipNames","inputEl","$inputEl","checked","formFromData","formData","selectEl","checkboxEl","radioEl","initAjaxForm","fromData","contentType","headers","response","Form","removeFormData","storage","Input","ignoreTypes","createTextareaResizableShadow","$shadowEl","readonly","textareaResizableShadow","resizeTextarea","textareaEl","$textareaEl","styleValue","currentHeight","clientHeight","initialHeight","$itemInputEl","$inputWrapEl","setReadonly","f7ValidateReadonly","readOnly","validity","validationMessage","errorMessage","valid","$errorEl","validateInputs","checkEmptyState","hasAttribute","scrollIntoView","centered","$scrollableEl","contentHeight","contentScrollTop","contentPaddingTop","contentPaddingBottom","contentOffsetTop","inputOffsetTop","centeredPosition","previousValue","isContentEditable","scrollIntoViewOnFocus","scrollIntoViewDuration","scrollIntoViewCentered","scrollIntoViewAlways","Input$1","itemInputEl","f7Toggle","toggleWidth","touchStartChecked","changed","handleInputChange","Toggle","toggleEl","range","dual","step","draggableBar","vertical","verticalReversed","formatLabel","scaleSteps","scaleSubSteps","formatScaleLabel","limitKnobPosition","f7Range","valueLeft","valueRight","$barEl","$barActiveEl","knobHTML","knobs","$knobEl","labels","$scaleEl","renderScale","rangeOffset","rangeOffsetLeft","rangeOffsetTop","$touchedKnobEl","dualValueIndex","valueChangedByTouch","targetTouchIdentifier","parentModals","parentPanel","parentPage","onTouchChange","identifier","rangeHeight","rangeWidth","newValue","setValue","leftValue","rightValue","touchEnded","changedTouches","layout","knobHeight","knobWidth","knobSize","rangeSize","positionProperty","knobIndex","startPos","realStartPos","byTouchMove","valueChanged","oldValue","newValues","valueIndex","getValue","labelEl","scaleEl","scaleStepValue","scaleValue","subStepEl","subIndex","subStep","subProgress","updateScale","Range","rangeEl","stepper","valueEl","formatValue","watchInput","autorepeat","autorepeatDynamic","wraps","manualInputMode","decimalPoint","buttonsEndInputMode","f7Stepper","$valueEl","$buttonPlusEl","$buttonMinusEl","buttonPlusEl","buttonMinusEl","typeModeChanged","preventButtonClick","intervalId","autorepeatAction","autorepeatInAction","manualInput","dynamicRepeat","progressions","startsIn","progressionStep","repeatEvery","clearInterval","setInterval","onMinusClick","endTypeMode","decrement","onPlusClick","increment","onInputClick","selectionStart","selectionEnd","onInputKey","onInputBlur","onInput","typeValue","sentByF7Stepper","minus","plus","forceUpdate","withWraps","formattedValue","noBlur","inputTxt","lastIndexOf","powVal","toFixed","Stepper","stepperEl","defaultDiacriticsRemovalap","letters","diacriticsMap","removeDiacritics","ss","smartSelect","f7SmartSelect","$selectEl","setValueText","inputType","selectId","onChange","optionEl","displayAs","optionText","maxLength","checkMaxLength","optEl","formatValueTextContent","closeOnSelect","inputName","selectName","attachInputsEvents","detachInputsEvents","unsetValue","valueFormatted","formatValueText","textValue","valueArray","$optionEl","getItemsData","previousGroupEl","optionData","optionImage","optionIcon","optionIconIos","optionIconMd","optionInputIconPosition","inputIconPosition","optionHasMedia","optionColor","optionClassName","optionClass","optionGroupEl","optionGroupLabel","optionIsLabel","groupLabel","isLabel","groupEl","image","iconIos","iconMd","hasMedia","checkbox","radio","renderSearchbar","spellcheck","searchbarSpellcheck","placeholder","searchbarPlaceholder","searchbarDisableButton","searchbarDisableText","ssValue","hasIcon","iconContent","iconValue","iconClass","getIconClass","_checked","renderItems","itemsHtml","renderPage","pageTitle","$itemTitleEl","navbarColorTheme","pageBackLinkText","searchbar","formColorTheme","renderPopup","popupTabletFullscreen","popupCloseLinkText","renderSheet","toolbarColorTheme","sheetCloseLinkText","scrollToSelectedItem","selectedIndex","$selectedItemEl","openedIn","virtualListHeight","$searchbarEl","appendSearchbarNotFound","$notFoundEl","searchbarParams","searchContainer","searchIn","openPage","pageHtml","pageBeforeOut","pageAfterOut","openPopup","popupParams","popupPush","popupSwipeToClose","popupOpen","popupOpened","popupClose","popupClosed","routableModals","openSheet","sheetParams","sheetBackdrop","sheetPush","sheetSwipeToClose","sheetOpen","sheetOpened","sheetClose","sheetClosed","openPopover","popoverParams","popoverOpen","popoverOpened","popoverClose","popoverClosed","SmartSelect","smartSelectEl","calendar","isHorizontal","inline","allowTouchMove","hasTimePicker","timePicker","rangePicker","dayFormatter","date","Intl","DateTimeFormat","locale","day","format","monthFormatter","month","yearFormatter","year","timeSelectorFormatter","timePickerFormat","timeFormatCheckDate","is12HoursFormat","monthNames","monthNamesShort","dayNames","dayNamesShort","monthNamesIntl","monthNamesShortIntl","dayNamesIntl","dayNamesShortIntl","getIntlNames","onInputFocus","onInputClear","onHtmlClick","isPopover","closing","monthPickerPopover","yearPickerPopover","timePickerPopover","attachInputEvents","inputReadOnly","detachInputEvents","attachHtmlEvents","detachHtmlEvents","attachCalendarEvents","touchEndTime","wrapperWidth","wrapperHeight","allowItemClick","$wrapperEl","monthsTranslate","resetMonth","nextMonth","prevMonth","handleDayClick","$dayEl","dateYear","dateMonth","dateDay","valueToAdd","setHours","getHours","getMinutes","addValue","onNextMonthClick","onPrevMonthClick","onNextYearClick","nextYear","onPrevYearClick","prevYear","onMonthSelectorClick","openMonthPicker","onYearSelectorClick","openYearPicker","onTimeSelectorClick","openTimePicker","monthPicker","yearPicker","touchMove","detachCalendarEvents","formatterMonthNames","formatterMonthNamesShort","formatterDayNames","weekday","formatterDayNamesShort","yearStarted","yearEnded","setMonth","currentYear","weekDay","getDay","normalizeDate","getFullYear","getMonth","getDate","normalizeValues","initInput","formatDate","month1","dateFormat","twoDigits","number","yyyy","yy","mm","MM","dd","DD","D","hours","minutes","seconds","getSeconds","hours12","HH","H","hh","A","regexp","rangePickerMinDays","rangePickerMaxDays","inValuesIndex","updateValue","equal","onlyHeader","valueDate","leftDate","rightDate","timePickerPlaceholder","header","updateCurrentMonthYear","dir","$months","currentLocaleMonth","currentLocaleYear","currentMonth","currentDate","prevMonthHtml","renderMonth","currentMonthHtml","nextMonthHtml","setMonthsTranslate","monthEl","onMonthChangeStart","currentIndex","onMonthChangeEnd","rebuildBoth","prevMonthTranslate","currentMonthTranslate","nextMonthTranslate","nextDateTime","transitionEndCallback","maxDate","prevDateTime","minDate","setYearMonth","targetDate","newMonthHTML","monthTranslate","wrapperTranslate","dateInRange","dayDate","daysInMonth","renderMonths","localeMonth","localeYear","currentValues","today","daysInPrevMonth","minDayNumber","firstDay","hasEvents","monthHtml","dayIndex","firstDayOfMonthIndex","rowHtml","col","dayNumber","weekDayIndex","weekendDays","eventsHtml","eventDots","rangesClasses","dayYear","dayMonth","renderWeekHeader","weekDaysHtml","renderMonthSelector","renderYearSelector","renderTimeSelector","timeString","timePickerLabel","renderHeader","headerPlaceholder","renderFooter","toolbarCloseText","renderToolbar","monthSelector","yearSelector","renderInline","footer","weekHeader","renderCustomModal","closeMonthPicker","monthPickerInstance","displayValues","picker","monthPickerToolbar","rotateEffect","monthPickerCloseText","diffIndex","closeYearPicker","yearPickerInstance","yearMin","yearPickerMin","yearMax","yearPickerMax","years","yearPickerToolbar","yearPickerCloseText","hoursArr","minutesArr","hoursMax","closeTimePicker","timePickerInstance","timePickerToolbar","timePickerCloseText","divider","timePickerValue","period","opening","required","f7Calendar","scrollToInput","Calendar","hour","minute","pickerColumn","colEl","updateItems","$colEl","colIndex","colHeight","$itemsEl","replaceValues","renderColumn","hadPadding","valueCallbacks","newActiveIndex","newScrollTop","previousActiveIndex","selectedItem","$itemEl","itemsFit","displayValue","freeMode","resizeCols","needsOriginFix","htmlTouchStartTarget","onHtmlTouchStart","attachResizeEvent","detachResizeEvent","forceValues","newDisplayValue","column","noDividerColumns","initColumn","destroyColumn","onlyItems","colClasses","textAlign","columnHtml","columnItemsHtml","f7Picker","Picker","InfiniteScroll","virtualListContainer","onTop","scrollHandler","infiniteScroll","f7InfiniteScrollHandler","InfiniteScroll$1","$isEls","ptr","$preloaderEl","bottom","isMaterial","isIos","touchId","$transitionTarget","onTranstionEnd","refresh","mousewheel","wasScrolled","triggerDistance","dynamicTriggerDistance","pullStarted","maxScrollTop","useTranslate","forceUseTranslate","hasNavbar","pageNavbarEl","$pageNavbarEl","isTransparent","setPreloaderProgress","$bars","perBarProgress","barEl","barIndex","barProgress","unsetPreloaderProgress","targetIsScrollable","$ptrWatchScrollable","ptrScrollableEl","mousewheelTimeout","mousewheelMoved","mousewheelAllow","mousewheelTranslate","handleMouseWheelRelease","handleMouseWheel","deltaX","deltaY","f7PullToRefresh","PullToRefresh","$ptrEls","table","f7DataTable","collapsible","$headerEl","$headerSelectedEl","handleChange","handleSortableClick","sentByF7DataTable","columnIndex","checkedRows","totalRows","$headCheckboxEl","checkSelectedHeader","$cellEl","isActive","currentSort","newSort","setCollapsibleLabels","elIndex","collapsibleTitle","checkedItems","DataTable","dataTable","tableEl","Fab","morphOpen","fabEl","$fabEl","borderRadius","zIndex","fab","f7FabMorphData","diffX","diffY","f7FabMorphResizeHandler","diffXNew","diffYNew","scaleXNew","scaleYNew","morphClose","morphData","$buttonsEl","Fab$1","FrameworkClass","sb","inputEvents","disableButton","disableButtonEl","searchItem","searchGroup","searchGroupTitle","ignore","foundEl","notFoundEl","hideOnEnableEl","hideOnSearchEl","customSearch","hideGroupTitles","hideGroups","disableOnBackdropClick","expandable","f7Searchbar","$foundEl","$hideOnEnableEl","$hideOnSearchEl","$searchContainer","$disableButtonEl","preventSubmit","onInputChange","isVirtualList","disableOnClick","onPageBeforeOut","onPageBeforeIn","disableButtonHasMargin","previousQuery","setDisableButtonMargin","setFocus","backdropShow","needsFocus","titleLargeHeight","backdropHide","internal","vlQuery","foundItems","compareWithText","$searchIn","searchInEl","itemText","wordsMatch","titleEl","$nextElements","$nextEl","$groupEl","Searchbar","searchbarEl","autoLayout","messages","newMessagesFirst","scrollMessages","scrollMessagesOnEdge","firstMessageRule","lastMessageRule","tailMessageRule","sameNameMessageRule","sameHeaderMessageRule","sameFooterMessageRule","sameAvatarMessageRule","customClassMessageRule","renderMessage","f7Messages","getMessageData","messageEl","$messageEl","textHeader","textFooter","imageSrc","typing","avatar","getMessagesData","messageToRender","_extends","isTyping","renderMessages","messagesToRender","isFirstMessage","isLastMessage","isTailMessage","isSameNameMessage","isSameHeaderMessage","isSameFooterMessage","isSameAvatarMessage","isCustomClassMessage","previousMessage","nextMessage","customMessageClasses","customClass","removeMessage","messageToRemove","removeMessages","messagesToRemove","messagesToRemoveEls","messageToRemoveIndex","addMessage","messageToAdd","addMessages","setScrollData","scrollHeightBefore","heightBefore","scrollBefore","scrollData","messagesToAdd","messagesHTML","typingMessage","$messagesEls","scrollWithEdgeCheck","showTyping","hideTyping","typingMessageIndex","typingFound","$typingMessageEl","onEdge","currentScroll","Messages","messagesEl","messagebar","topOffset","bottomOffset","attachments","renderAttachments","renderAttachment","resizePage","f7Messagebar","$areaEl","$attachmentsEl","$sheetEl","onAppResize","onSubmit","onAttachmentClick","onTextareaChange","onTextareaFocus","sheetHide","onTextareaBlur","areaEl","attachmentsEl","attachmentsVisible","sheetEl","sheetVisible","setPlaceholder","elHeight","currentPaddingBottom","requiredPaddingBottom","currentPaddingTop","pageOffsetHeight","scrollOnBottom","attachmentsCreate","attachmentsShow","attachmentsHide","attachmentsToggle","attachment","sheetCreate","sheetShow","sheetToggle","Messagebar","messagebarEl","currentStyle","noExtend","HTMLElement","__swiper__","setCSSProperty","animateCSSModeScroll","targetPosition","startPosition","speed","wrapperEl","scrollSnapType","cssModeFrameID","isOutOfBound","currentPosition","getSlideTransformEl","slideEl","shadowRoot","elementChildren","elementOffset","elementStyle","elementIndex","elementParents","parentElement","elementTransitionEnd","elementOuterSize","deviceCached","browser","smoothScroll","documentElement","getBrowser","needPerspectiveFix","isSafari","major","minor","isWebView","calcBrowser","eventsEmitter","__emitterProxy","onAny","eventsAnyListeners","offAny","processLazyPreloader","imageEl","slideClass","lazyEl","lazyPreloaderClass","unlazy","lazyPreloadPrevNext","slidesPerView","slidesPerViewDynamic","rows","activeColumn","preloadColumns","slideIndexLastInView","rewind","loop","realIndex","updateSize","clientWidth","isVertical","updateSlides","getDirectionLabel","property","marginRight","getDirectionPropertyValue","slidesEl","swiperSize","rtlTranslate","wrongRTL","isVirtual","virtual","previousSlidesLength","slidesLength","snapGrid","slidesGrid","slidesSizesGrid","offsetBefore","slidesOffsetBefore","offsetAfter","slidesOffsetAfter","previousSnapGridLength","previousSlidesGridLength","spaceBetween","slidePosition","prevSlideSize","virtualSize","marginLeft","marginBottom","marginTop","centeredSlides","cssMode","gridEnabled","slideSize","initSlides","shouldResetSlideSize","slide","updateSlide","slideStyles","currentTransform","currentWebKitTransform","roundLengths","boxSizing","swiperSlideSize","slidesPerGroup","slidesPerGroupSkip","setWrapperSize","updateWrapperSize","newSlidesGrid","slidesGridItem","slidesBefore","slidesAfter","groupSize","slideIndex","centeredSlidesBounds","allSlidesSize","slideSizeValue","maxSnap","snap","centerInsufficientSlides","allSlidesOffset","snapIndex","addToSnapGrid","addToSlidesGrid","watchOverflow","checkOverflow","watchSlidesProgress","updateSlidesOffset","backFaceHiddenClass","containerModifierClass","hasClassBackfaceClassAdded","maxBackfaceHiddenSlides","updateAutoHeight","activeSlides","newHeight","setTransition","getSlideByIndex","getSlideIndexByData","visibleSlides","minusOffset","swiperSlideOffset","cssOverflowAdjustment","updateSlidesProgress","offsetCenter","slideVisibleClass","visibleSlidesIndexes","slideOffset","slideProgress","originalSlideProgress","slideBefore","slideAfter","originalProgress","updateProgress","multiplier","translatesDiff","isBeginning","isEnd","progressLoop","wasBeginning","wasEnd","isBeginningRounded","isEndRounded","firstSlideIndex","lastSlideIndex","firstSlideTranslate","lastSlideTranslate","translateMax","translateAbs","updateSlidesClasses","getFilteredSlide","activeSlide","slideActiveClass","slideNextClass","slidePrevClass","nextSlide","elementNextAll","prevSlide","elementPrevAll","emitSlidesClasses","updateActiveIndex","previousRealIndex","previousSnapIndex","getVirtualRealIndex","aIndex","normalizeSlideIndex","getActiveIndexByTranslate","skip","runCallbacksOnInit","updateClickedSlide","slideFound","clickedSlide","clickedIndex","slideToClickedSlide","virtualTranslate","setTranslate","byController","newProgress","previousTranslate","translateTo","runCallbacks","translateBounds","preventInteractionOnTransition","behavior","onTranslateToWrapperTransitionEnd","transitionEmit","normalizedTranslate","normalizedGrid","normalizedGridNext","allowSlideNext","allowSlidePrev","_immediateVirtual","_cssModeVirtualInitialSet","initialSlide","onSlideToWrapperTransitionEnd","slideToLoop","newIndex","slideNext","perGroup","slidesPerGroupAuto","loopPreventsSliding","loopFix","slidePrev","normalize","normalizedSnapGrid","prevSnap","prevSnapIndex","lastIndex","slideReset","slideToClosest","currentSnap","slideToIndex","slideSelector","loopedSlides","getSlideIndex","loopCreate","slideRealIndex","activeSlideIndex","byMousewheel","prependSlidesIndexes","appendSlidesIndexes","isNext","isPrev","slidesPrepended","slidesAppended","swiperLoopMoveDOM","recalcSlides","currentSlideTranslate","touchEventsData","controller","control","loopParams","loopDestroy","newSlidesOrder","swiperSlideIndex","evCache","simulateTouch","pointerType","originalEvent","touchEventsTarget","swipingClassHasValue","noSwipingClass","eventPath","composedPath","noSwipingSelector","isTargetShadow","noSwiping","__closestFrom","assignedSlot","getRootNode","closestElement","allowClick","currentX","currentY","startX","startY","edgeSwipeDetection","iOSEdgeSwipeDetection","edgeSwipeThreshold","iOSEdgeSwipeThreshold","allowTouchCallbacks","startMoving","swipeDirection","allowThresholdMove","focusableElements","shouldPreventDefault","touchStartPreventDefault","touchStartForcePreventDefault","pointerIndex","findIndex","cachedEv","pointerId","targetTouch","preventedByNestedSwiper","prevX","prevY","touchReleaseOnEdges","touchAngle","zoom","touchMoveStopPropagation","nested","previousX","previousY","oneWayMovement","touchRatio","prevTouchesDirection","touchesDirection","isLoop","allowMomentumBounce","grabCursor","setGrabCursor","loopFixed","disableParentSwiper","resistanceRatio","resistance","followFinger","pathTree","lastClickTime","currentPos","stopIndex","rewindFirstIndex","rewindLastIndex","longSwipesMs","longSwipes","longSwipesRatio","shortSwipes","navigation","nextEl","prevEl","isVirtualLoop","autoplay","running","paused","resizeTimeout","resume","preventClicks","preventClicksPropagation","onScroll","onLoad","dummyEventAttached","dummyEventListener","domMethod","swiperMethod","updateOnWindowResize","isGridEnabled","getBreakpoint","breakpointsBase","currentBreakpoint","breakpointParams","wasMultiRow","isMultiRow","wasEnabled","emitContainerClasses","fill","wasModuleEnabled","isModuleEnabled","directionChanged","needsReLoop","changeDirection","isEnabled","points","point","minRatio","resizeObserver","createElements","uniqueNavElements","passiveListeners","wrapperClass","_emitClasses","moduleExtendParams","allModulesParams","moduleParamName","auto","prototypes","transitionDelay","moving","isLocked","__preventObserver__","cursor","unsetGrabCursor","wasLocked","lastSlideRightEdge","addClasses","suffixes","resultClasses","prepareClasses","autoheight","removeClasses","extendedDefaults","Swiper","swipers","newParams","__modules__","extendParams","swiperParams","velocity","trunc","clickTimeout","velocities","imagesToLoad","imagesLoaded","cls","getSlideClasses","updates","exact","spv","breakLoop","translateValue","translated","newDirection","needUpdate","currentDirection","changeLanguageDirection","mounted","getWrapperSelector","getWrapper","slideSlots","hostEl","lazyElements","deleteInstance","cleanStyles","extendDefaults","newDefaults","createElementIfNotDefined","checkProps","classesToSelector","appendSlide","appendElement","tempDOM","observer","prependSlide","prependElement","addSlide","activeIndexBuffer","baseLength","slidesBuffer","currentSlide","removeSlide","slidesIndexes","indexToRemove","removeAllSlides","effectInit","overwriteParams","perspective","recreateShadows","getEffectParams","requireUpdateOnVirtual","overwriteParamsResult","_s","slideShadows","shadowEl","effectTarget","effectParams","transformEl","backfaceVisibility","effectVirtualTransitionEnd","transformElements","allSlides","eventTriggered","getSlide","createShadow","shadowClass","shadowContainer","prototypeGroup","protoMethod","animationFrame","resizeHandler","orientationChangeHandler","ResizeObserver","contentBoxSize","contentRect","inlineSize","blockSize","observe","unobserve","observers","attach","MutationObserver","WebkitMutationObserver","mutations","observerUpdate","childList","characterData","observeParents","observeSlideChildren","containerParents","disconnect","cssModeTimeout","renderSlide","renderExternalUpdate","addSlidesBefore","addSlidesAfter","previousFrom","previousTo","previousSlidesGrid","previousOffset","offsetProp","onRendered","slidesToRender","prependIndexes","appendIndexes","loopFrom","loopTo","domSlidesAssigned","numberOfNewSlides","cachedEl","cachedElIndex","kc","charCode","pageUpDown","keyboard","isPageUp","isPageDown","isArrowLeft","isArrowRight","isArrowUp","isArrowDown","shiftKey","altKey","ctrlKey","metaKey","onlyInViewport","inView","swiperWidth","swiperHeight","windowWidth","windowHeight","swiperOffset","swiperCoord","timeout","releaseOnEdges","invert","forceToAxis","sensitivity","eventsTarget","thresholdDelta","thresholdTime","noMousewheelClass","lastEventBeforeSnap","lastScrollTime","recentWheelEvents","handleMouseEnter","mouseEntered","handleMouseLeave","animateSlider","newEvent","raw","targetElContainsTarget","rtlFactor","sX","sY","pX","pY","wheelDelta","wheelDeltaY","wheelDeltaX","HORIZONTAL_AXIS","deltaMode","spinX","spinY","pixelX","pixelY","positions","sign","ignoreWheelEvents","sticky","prevEvent","firstEvent","snapToThreshold","autoplayDisableOnInteraction","releaseScroll","hideOnClick","disabledClass","hiddenClass","lockClass","navigationDisabledClass","makeElementsArray","getEl","onPrevClick","onNextClick","initButton","destroyButton","pagination","clickable","pfx","bulletSize","bulletElement","renderBullet","renderProgressbar","renderFraction","renderCustom","progressbarOpposite","dynamicBullets","dynamicMainBullets","formatFractionCurrent","formatFractionTotal","bulletClass","bulletActiveClass","modifierClass","currentClass","totalClass","progressbarFillClass","progressbarOppositeClass","clickableClass","horizontalClass","verticalClass","paginationDisabledClass","bullets","dynamicBulletIndex","isPaginationDisabled","setSideBullets","bulletEl","onBulletClick","newSlideIndex","currentSlideIndex","indexBeforeLoopFix","total","firstIndex","midIndex","classesToRemove","bullet","bulletIndex","firstDisplayedBullet","lastDisplayedBullet","dynamicBulletsLength","bulletsOffset","subElIndex","fractionEl","totalEl","progressbarDirection","progressEl","paginationHTML","numberOfBullets","dragStartPos","dragSize","trackSize","dragTimeout","scrollbar","dragEl","newSize","newPos","getPointerPosition","setDragPosition","positionRatio","onDragStart","onDragMove","onDragEnd","snapOnRelease","eventMethod","swiperEl","dragClass","draggable","scrollbarDisabledClass","parallax","elementsSelector","setTransform","rotate","currentOpacity","_swiper","parallaxEl","parallaxDuration","maxRatio","containerClass","zoomedSlideClass","fakeGestureTouched","fakeGestureMoved","currentScale","isScaling","gesture","originX","originY","slideWidth","slideHeight","imageWrapEl","minX","minY","maxX","maxY","touchesCurrent","prevPositionX","prevPositionY","prevTime","getDistanceBetweenTouches","x1","x2","eventWithinSlide","onGestureStart","scaleStart","getScaleOrigin","onGestureChange","scaleMove","onGestureEnd","eventWithinZoomContainer","scaledWidth","scaledHeight","scaleRatio","onTransitionEnd","zoomIn","touchX","touchY","offsetX","offsetY","imageWidth","imageHeight","translateMinX","translateMinY","translateMaxX","translateMaxY","touchAction","forceZoomRatio","zoomOut","zoomToggle","getListeners","activeListenerWithCapture","momentumDurationX","momentumDurationY","momentumDistanceX","newPositionX","momentumDistanceY","newPositionY","momentumDuration","in","LinearSpline","binarySearch","maxIndex","minIndex","guess","i1","i3","interpolate","removeSpline","spline","inverse","by","controlElement","onControllerSwiper","_t","controlled","controlledTranslate","setControlledTranslate","getInterpolateFunction","isFinite","setControlledTransition","a11y","notificationClass","prevSlideMessage","nextSlideMessage","firstSlideMessage","lastSlideMessage","paginationBulletMessage","slideLabelMessage","containerMessage","containerRoleDescriptionMessage","itemRoleDescriptionMessage","slideRole","clicked","liveRegion","notify","notification","makeElFocusable","makeElNotFocusable","addElRole","addElRoleDescription","description","addElLabel","disableEl","enableEl","onEnterOrSpaceKey","hasPagination","hasClickablePagination","initNavEl","wrapperId","controls","addElControls","handlePointerDown","handlePointerUp","handleFocus","sourceCapabilities","firesTouchEvents","randomChar","live","addElId","addElLive","updateNavigation","updatePagination","keepQuery","slugify","getPathValues","urlOverride","pathArray","setHistory","currentState","scrollToSlide","setHistoryPopState","hashNavigation","watchState","slideWithHash","onHashChange","newHash","activeSlideEl","setHash","activeSlideHash","timeLeft","waitForTransition","disableOnInteraction","stopOnLastSlide","reverseDirection","pauseOnMouseEnter","autoplayTimeLeft","wasPaused","pausedByTouch","touchStartTimeout","slideChanged","pausedByInteraction","autoplayDelayTotal","autoplayDelayCurrent","autoplayStartTime","calcTimeLeft","run","delayForce","currentSlideDelay","getSlideDelay","proceed","pause","onVisibilityChange","visibilityState","onPointerEnter","onPointerLeave","thumbs","multipleActiveThumbs","autoScrollOffset","slideThumbActiveClass","thumbsContainerClass","swiperCreated","onThumbClick","thumbsSwiper","thumbsParams","SwiperClass","thumbsSwiperParams","thumbsToActivate","thumbActiveClass","useOffset","currentThumbsIndex","newThumbsIndex","newThumbsSlide","getThumbsElementAndInit","thumbsElement","onThumbsSwiper","watchForThumbsToAppear","momentum","momentumRatio","momentumBounce","momentumBounceRatio","momentumVelocityRatio","minimumVelocity","lastMoveEvent","velocityEvent","momentumDistance","newPosition","afterBouncePosition","doBounce","bounceAmount","needsLoopFix","moveDistance","currentSlideSize","slidesNumberEvenToRows","slidesPerRow","numFullColumns","getSpaceBetween","newSlideOrderIndex","slideIndexInGroup","columnsInGroup","order","fadeEffect","crossFade","tx","ty","slideOpacity","cubeEffect","shadowOffset","shadowScale","createSlideShadows","shadowBefore","shadowAfter","cubeShadowEl","wrapperRotate","slideAngle","tz","shadowAngle","scale1","scale2","zFactor","flipEffect","limitRotation","rotateY","rotateX","coverflowEffect","stretch","depth","centerOffset","offsetMultiplier","translateZ","slideTransform","shadowBeforeEl","shadowAfterEl","creativeEffect","limitProgress","shadowPerProgress","progressMultiplier","getTranslateValue","isCenteredSlides","margin","custom","translateString","rotateString","scaleString","opacityString","shadowOpacity","cardsEffect","perSlideRotate","perSlideOffset","tX","tY","tZ","tXAdd","isSwipeToNext","isSwipeToPrev","paramsList","attrToProp","modulesParamsList","getParams","propValue","localParamsList","allowedParams","attrsList","moduleParam","mParam","parentObjName","subObjName","SwiperCSS","ClassToExtend","arrowSvg","addStyle","CSSStyleSheet","adoptedStyleSheets","styleSheet","replaceSync","rel","SwiperContainer","attachShadow","nextButtonSvg","prevButtonSvg","cssStyles","injectStyles","cssLinks","injectStylesUrls","calcSlideSlots","currentSideSlots","slideSlotChildren","rendered","slotEl","localStyles","linkEl","needsPagination","needsScrollbar","initialize","eventsPrefix","connectedCallback","disconnectedCallback","updateSwiperOnPropChange","changedParams","scrollbarEl","paginationEl","updateParams","currentParams","needThumbsInit","needControllerInit","needPaginationInit","needScrollbarInit","needNavigationInit","loopNeedDestroy","loopNeedEnable","loopNeedReloop","destroyModule","updateSwiper","attributeChangedCallback","prevValue","observedAttributes","SwiperSlide","lazy","lazyDiv","initSwiper","$swiperEl","isTabs","isRoutableTabs","f7SwiperParams","tabRouteUrl","SwiperElementRegisterParams","customElements","define","pageMounted","photoBrowser","exposed","started","timeStart","onSlideChange","virtualSlides","photos","$activeSlideEl","$previousSlideEl","$totalEl","captions","captionIndex","$captionsContainerEl","previousSlideVideo","renderNavbar","iconsColor","renderNavbarCount","navbarShowCount","isPopup","navbarOfText","popupCloseLinkIcon","xmlns","viewBox","renderThumbs","thumb","renderThumb","renderCaption","caption","renderObject","photo","renderLazyPhoto","loading","renderPhoto","captionsTheme","renderStandalone","f7PhotoBrowser","$swiperContainerEl","$swiperWrapperEl","hasThumbs","preventThumbsSlide","preventMainSlide","exposition","expositionToggle","doubleClick","slideChange","slideChangeTransitionStart","slideChangeTransitionEnd","touchStart","touchMoveOpposite","touchEnd","openStandalone","expositionEnable","expositionHideCaptions","expositionDisable","PhotoBrowser","titleRightText","subtitle","closeOnClick","notificationHeight","notificationHtml","closeOnTimeout","notificationInstance","Notification","autocomplete","$openerEl","openerEl","f7Autocomplete","uniqueId","$dropdownEl","itemsHTML","limit","firstValue","firstItem","highlightMatches","itemValue","valueProperty","textProperty","dropdownPlaceholderText","typeahead","setSelectionRange","onPageInputChange","aValue","updateValues","onOpenerClick","positionDropdown","$selectedItemLabel","$selectedItem","$newItem","onDropdownClick","clickedItem","updateInputValueOnSelect","attachDropdownEvents","detachDropdownEvents","attachPageEvents","detachPageEvents","inputOffset","inputOffsetWidth","inputOffsetHeight","$listParent","parentEl","listOffset","listOffsetLeft","inputOffsetLeft","paddingProp","paddingValue","valuesHTML","preloaderHide","preloaderShow","renderPreloader","preloaderColor","inPopup","navbarLeft","navbarRight","renderDropdown","notFoundText","requestSourceOnOpen","openDropdown","dropdownContainerEl","Autocomplete","autocompleteEl","tooltip","delegated","f7Tooltip","handleClickOut","handleTransitionEnd","setTargetEl","hasContainerEl","tooltipOffset","boundaries","clientRect","aroundEl","$aroundEl","Tooltip","gauge","f7Gauge","calcRadius","borderWidth","calcBorderLength","radius","bgColor","borderBgColor","borderColor","valueText","valueTextColor","valueFontSize","valueFontWeight","labelText","labelTextColor","labelFontSize","labelFontWeight","semiCircle","stroke","cx","cy","dy","$svgEl","svgAttrs","backAttrs","frontAttrs","textAttrs","labelAttrs","svgEl","Gauge","moduleAlphaSlider","sliderLabel","sliderValue","sliderValueEditable","alphaLabelText","alphaRangeSlider","destroyAlphaSliderEvents","moduleCurrentColor","moduleHex","hexLabel","hexLabelText","hexValueEditable","destroyHexEvents","moduleHsbSliders","hueLabelText","saturationLabelText","brightnessLabelText","hsb","hueRangeSlider","saturationRangeSlider","brightnessRangeSlider","destroyHsbSlidersEvents","hslCurrent","hslLeft","hslRight","brightness","moduleHueSlider","moduleBrightnessSlider","modulePalette","handlePaletteClick","destroyPaletteEvents","moduleInitialCurrentColors","handleInitialColorClick","destroyInitialCurrentEvents","moduleRgbBars","barLabel","barValue","barValueEditable","redLabelText","greenLabelText","blueLabelText","redBar","greenBar","blueBar","destroyRgbBarsEvents","moduleRgbSliders","redRangeSlider","greenRangeSlider","blueRangeSlider","destroyRgbSlidersEvents","moduleSbSpectrum","specterRect","specterIsTouched","specterHandleIsTouched","setSBFromSpecterCoords","destroySpectrumEvents","specterWidth","specterHeight","moduleHsSpectrum","setHSFromSpecterCoords","hslBright","moduleWheel","circles","svgWheelCircles","wheelRect","wheelIsTouched","wheelHandleIsTouched","setHueFromWheelCoords","wheelCenterX","wheelCenterY","angleDeg","wheel","destroyWheelEvents","wheelSize","wheelHalfSize","angleRad","handleHalfSize","colorPicker","onTargetClick","$clickTargetEl","attachTargetEvents","detachTargetEvents","centerModules","getModalType","openInPhone","normalizeHsValues","updateModules","hsla","needChangeEvent","subV","fireEvents","targetElSetBackgroundColor","renderPicker","navbarTitleText","navbarBackLinkText","navbarCloseText","groupedModules","toolbarSheet","toolbarPopover","navbarPopup","f7ColorPicker","colorPickerContent","ColorPicker","sliderValueEdiable","barValueEdiable","Treeview","f7TreeviewChildrenLoaded","wasOpened","treeview","Treeview$1","$treeviewItemEl","textEditorButtonsMap","bold","italic","underline","strikeThrough","orderedList","unorderedList","link","paragraph","h1","h2","h3","alignLeft","alignCenter","alignRight","alignJustify","subscript","superscript","indent","outdent","textEditor","f7TextEditor","onButtonClick","onFocus","onBlur","onPaste","onSelectionChange","closeKeyboardToolbar","$keyboardToolbarEl","clearValue","insertPlaceholder","createLink","currentSelection","getSelection","selectedNodes","$selectedLinks","anchorNode","focusNode","selectedNodesLinks","$selectedNodes","linkNode","selection","createRange","selectNodeContents","removeAllRanges","addRange","execCommand","currentRange","getSelectionRange","linkUrlText","insertImage","imageUrlText","imageUrl","removePlaceholder","selectionIsInContent","selectionIsInPopover","closePopover","isCollapsed","rangeCount","rect","getRangeAt","openKeyboardToolbar","clearFormattingOnPaste","clipboardData","buttonData","customButtons","command","$anchorNode","select","renderButtons","renderButton","dividers","createToolbar","createKeyboardToolbar","createPopover","popoverTimeout","TextEditor","editorEl","pieChart","f7PieChart","showTooltip","hideTooltip","getSummValue","datasets","summ","getPaths","cumulativePercentage","getCoordinatesForPercentage","endX","endY","formatTooltipText","formatTooltip","setTooltip","setCurrentIndex","PieChart","areaChart","f7AreaChart","hiddenDatasets","linesOffsets","onMouseEnter","onMouseMove","onMouseLeave","onLegendClick","getVisibleLabels","maxAxisLabels","axisLabels","skipStep","filtered","getSummValues","summValues","getChartData","lineChart","lastValues","maxValue","datasetMaxValue","originalValue","reverse","getVerticalLines","lines","toggleDataset","toggleDatasets","$legendEl","formatAxisLabel","formatLegendLabel","calcLinesOffsets","formatTooltipTotal","formatTooltipAxisLabel","formatTooltipDataset","totalText","datasetsText","hasVisibleDataSets","distances","minDistance","legend","chartData","verticalLines","visibleLegends","LegendItemTag","preserveAspectRatio","line","_type","onlySvg","$axisEl","$rendered","AreaChart","Breadcrumbs","Breadcrumbs$1","breadrumbs"],"sources":["../../node_modules/ssr-window/ssr-window.esm.js","../../node_modules/dom7/dom7.esm.js","../../src/core/shared/dom7.js","../../src/core/shared/material-color-utils.js","../../src/core/shared/material-colors.js","../../src/core/shared/utils.js","../../src/core/shared/get-support.js","../../src/core/shared/get-device.js","../../src/core/shared/events-class.js","../../src/core/shared/class.js","../../src/core/shared/constructor-methods.js","../../src/core/shared/modal-methods.js","../../src/core/components/app/load-module.js","../../src/core/shared/$jsx.js","../../src/core/components/app/app-class.js","../../src/core/modules/device/device.js","../../src/core/modules/support/support.js","../../src/core/modules/utils/utils.js","../../src/core/modules/resize/resize.js","../../src/core/modules/touch/touch.js","../../node_modules/path-to-regexp/dist.es2015/index.js","../../src/core/shared/history.js","../../src/core/modules/router/swipe-back.js","../../src/core/modules/router/redirect.js","../../src/core/modules/router/process-route-queue.js","../../src/core/modules/router/app-router-check.js","../../src/core/modules/router/async-component.js","../../src/core/modules/router/navigate.js","../../src/core/modules/router/back.js","../../src/core/modules/router/router-class.js","../../src/core/modules/router/tab.js","../../src/core/modules/router/modal.js","../../src/core/modules/router/clear-previous-history.js","../../src/core/modules/router/router.js","../../src/core/components/view/resizable-view.js","../../src/core/components/view/view-class.js","../../src/core/modules/clicks/clicks.js","../../src/core/modules/router/component-loader.js","../../node_modules/htm/dist/htm.mjs","../../src/core/modules/component/$h.js","../../src/core/modules/component/snabbdom/vnode.js","../../src/core/modules/component/snabbdom/is.js","../../src/core/modules/component/snabbdom/h.js","../../src/core/modules/component/custom-components.js","../../src/core/modules/component/vdom.js","../../src/core/modules/component/snabbdom/htmldomapi.js","../../src/core/modules/component/snabbdom/snabbdom.js","../../src/core/modules/component/snabbdom/modules/attributes.js","../../src/core/modules/component/snabbdom/modules/props.js","../../src/core/modules/component/snabbdom/modules/style.js","../../src/core/modules/component/eventslisteners.js","../../src/core/modules/component/patch.js","../../src/core/modules/component/$jsx.js","../../src/core/modules/component/component-class.js","../../src/core/modules/component/parse-component.js","../../src/core/modules/component/component.js","../../src/core/modules/history/history.js","../../src/core/modules/service-worker/service-worker.js","../../src/core/modules/store/create-store.js","../../src/core/modules/store/store.js","../../src/core/components/statusbar/statusbar.js","../../src/core/components/view/view.js","../../src/core/components/navbar/navbar.js","../../src/core/components/toolbar/toolbar.js","../../src/core/components/subnavbar/subnavbar.js","../../src/core/components/touch-ripple/touch-ripple-class.js","../../src/core/components/touch-ripple/touch-ripple.js","../../src/core/components/modal/modal-class.js","../../src/core/components/modal/custom-modal-class.js","../../src/core/components/modal/modal.js","../../src/core/components/dialog/dialog-class.js","../../src/core/components/dialog/dialog.js","../../src/core/components/popup/popup-class.js","../../src/core/components/popup/popup.js","../../src/core/components/login-screen/login-screen-class.js","../../src/core/components/login-screen/login-screen.js","../../src/core/components/popover/popover-class.js","../../src/core/components/popover/popover.js","../../src/core/components/actions/actions-class.js","../../src/core/components/actions/actions.js","../../src/core/components/sheet/sheet-class.js","../../src/core/components/sheet/sheet.js","../../src/core/components/toast/toast-class.js","../../src/core/components/toast/toast.js","../../src/core/components/preloader/preloader.js","../../src/core/components/progressbar/progressbar.js","../../src/core/components/sortable/sortable.js","../../src/core/components/swipeout/swipeout.js","../../src/core/components/accordion/accordion.js","../../src/core/components/virtual-list/virtual-list-class.js","../../src/core/components/virtual-list/virtual-list.js","../../src/core/components/list-index/list-index-class.js","../../src/core/components/list-index/list-index.js","../../src/core/components/tabs/tabs.js","../../src/core/components/panel/resizable-panel.js","../../src/core/components/panel/panel-class.js","../../src/core/components/panel/swipe-panel.js","../../src/core/components/panel/panel.js","../../src/core/components/card/card.js","../../src/core/components/form/form.js","../../src/core/components/input/input.js","../../src/core/components/toggle/toggle-class.js","../../src/core/components/toggle/toggle.js","../../src/core/components/range/range-class.js","../../src/core/components/range/range.js","../../src/core/components/stepper/stepper-class.js","../../src/core/components/stepper/stepper.js","../../src/core/components/searchbar/remove-diacritics.js","../../src/core/components/smart-select/smart-select-class.js","../../src/core/components/smart-select/smart-select.js","../../src/core/components/calendar/calendar-class.js","../../src/core/components/calendar/calendar.js","../../src/core/components/picker/picker-column.js","../../src/core/components/picker/picker-class.js","../../src/core/components/picker/picker.js","../../src/core/components/infinite-scroll/infinite-scroll.js","../../src/core/components/pull-to-refresh/pull-to-refresh-class.js","../../src/core/components/pull-to-refresh/pull-to-refresh.js","../../src/core/components/data-table/data-table-class.js","../../src/core/components/data-table/data-table.js","../../src/core/components/fab/fab.js","../../src/core/components/searchbar/searchbar-class.js","../../src/core/components/searchbar/searchbar.js","../../src/core/components/messages/messages-class.js","../../src/core/components/messages/messages.js","../../src/core/components/messagebar/messagebar-class.js","../../src/core/components/messagebar/messagebar.js","../../node_modules/swiper/shared/ssr-window.esm.mjs","../../node_modules/swiper/shared/utils.mjs","../../node_modules/swiper/shared/swiper-core.mjs","../../node_modules/swiper/shared/create-element-if-not-defined.mjs","../../node_modules/swiper/shared/classes-to-selector.mjs","../../node_modules/swiper/modules/manipulation.mjs","../../node_modules/swiper/shared/effect-init.mjs","../../node_modules/swiper/shared/effect-target.mjs","../../node_modules/swiper/shared/effect-virtual-transition-end.mjs","../../node_modules/swiper/shared/create-shadow.mjs","../../node_modules/swiper/swiper-bundle.mjs","../../node_modules/swiper/modules/virtual.mjs","../../node_modules/swiper/modules/keyboard.mjs","../../node_modules/swiper/modules/mousewheel.mjs","../../node_modules/swiper/modules/navigation.mjs","../../node_modules/swiper/modules/pagination.mjs","../../node_modules/swiper/modules/scrollbar.mjs","../../node_modules/swiper/modules/parallax.mjs","../../node_modules/swiper/modules/zoom.mjs","../../node_modules/swiper/modules/controller.mjs","../../node_modules/swiper/modules/a11y.mjs","../../node_modules/swiper/modules/history.mjs","../../node_modules/swiper/modules/hash-navigation.mjs","../../node_modules/swiper/modules/autoplay.mjs","../../node_modules/swiper/modules/thumbs.mjs","../../node_modules/swiper/modules/free-mode.mjs","../../node_modules/swiper/modules/grid.mjs","../../node_modules/swiper/modules/effect-fade.mjs","../../node_modules/swiper/modules/effect-cube.mjs","../../node_modules/swiper/modules/effect-flip.mjs","../../node_modules/swiper/modules/effect-coverflow.mjs","../../node_modules/swiper/modules/effect-creative.mjs","../../node_modules/swiper/modules/effect-cards.mjs","../../node_modules/swiper/shared/update-swiper.mjs","../../node_modules/swiper/shared/get-element-params.mjs","../../node_modules/swiper/swiper-element-bundle.mjs","../../src/core/components/swiper/swiper.js","../../src/core/components/photo-browser/photo-browser-class.js","../../src/core/components/photo-browser/photo-browser.js","../../src/core/components/notification/notification-class.js","../../src/core/components/notification/notification.js","../../src/core/components/autocomplete/autocomplete-class.js","../../src/core/components/autocomplete/autocomplete.js","../../src/core/components/tooltip/tooltip-class.js","../../src/core/components/tooltip/tooltip.js","../../src/core/components/gauge/gauge-class.js","../../src/core/components/gauge/gauge.js","../../src/core/components/color-picker/modules/alpha-slider.js","../../src/core/components/color-picker/modules/current-color.js","../../src/core/components/color-picker/modules/hex.js","../../src/core/components/color-picker/modules/hsb-sliders.js","../../src/core/components/color-picker/modules/hue-slider.js","../../src/core/components/color-picker/modules/brightness-slider.js","../../src/core/components/color-picker/modules/palette.js","../../src/core/components/color-picker/modules/initial-current-colors.js","../../src/core/components/color-picker/modules/rgb-bars.js","../../src/core/components/color-picker/modules/rgb-sliders.js","../../src/core/components/color-picker/modules/sb-spectrum.js","../../src/core/components/color-picker/modules/hs-spectrum.js","../../src/core/components/color-picker/modules/wheel.js","../../src/core/components/color-picker/color-picker-class.js","../../src/core/components/color-picker/color-picker.js","../../src/core/components/treeview/treeview.js","../../src/core/components/text-editor/text-editor-class.js","../../src/core/components/text-editor/text-editor.js","../../src/core/components/pie-chart/pie-chart-class.js","../../src/core/components/pie-chart/pie-chart.js","../../src/core/components/area-chart/area-chart-class.js","../../src/core/components/area-chart/area-chart.js","../../src/core/components/breadcrumbs/breadcrumbs.js","../../src/core/framework7.js","../../src/core/components/contacts-list/contacts-list.js","../../src/core/components/timeline/timeline.js","../../src/core/components/chip/chip.js","../../src/core/components/checkbox/checkbox.js","../../src/core/components/radio/radio.js","../../src/core/components/grid/grid.js","../../src/core/components/skeleton/skeleton.js","../../src/core/components/typography/typography.js"],"sourcesContent":["/**\n * SSR Window 4.0.2\n * Better handling for window object in SSR environment\n * https://github.com/nolimits4web/ssr-window\n *\n * Copyright 2021, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: December 13, 2021\n */\n/* eslint-disable no-param-reassign */\nfunction isObject(obj) {\n    return (obj !== null &&\n        typeof obj === 'object' &&\n        'constructor' in obj &&\n        obj.constructor === Object);\n}\nfunction extend(target = {}, src = {}) {\n    Object.keys(src).forEach((key) => {\n        if (typeof target[key] === 'undefined')\n            target[key] = src[key];\n        else if (isObject(src[key]) &&\n            isObject(target[key]) &&\n            Object.keys(src[key]).length > 0) {\n            extend(target[key], src[key]);\n        }\n    });\n}\n\nconst ssrDocument = {\n    body: {},\n    addEventListener() { },\n    removeEventListener() { },\n    activeElement: {\n        blur() { },\n        nodeName: '',\n    },\n    querySelector() {\n        return null;\n    },\n    querySelectorAll() {\n        return [];\n    },\n    getElementById() {\n        return null;\n    },\n    createEvent() {\n        return {\n            initEvent() { },\n        };\n    },\n    createElement() {\n        return {\n            children: [],\n            childNodes: [],\n            style: {},\n            setAttribute() { },\n            getElementsByTagName() {\n                return [];\n            },\n        };\n    },\n    createElementNS() {\n        return {};\n    },\n    importNode() {\n        return null;\n    },\n    location: {\n        hash: '',\n        host: '',\n        hostname: '',\n        href: '',\n        origin: '',\n        pathname: '',\n        protocol: '',\n        search: '',\n    },\n};\nfunction getDocument() {\n    const doc = typeof document !== 'undefined' ? document : {};\n    extend(doc, ssrDocument);\n    return doc;\n}\n\nconst ssrWindow = {\n    document: ssrDocument,\n    navigator: {\n        userAgent: '',\n    },\n    location: {\n        hash: '',\n        host: '',\n        hostname: '',\n        href: '',\n        origin: '',\n        pathname: '',\n        protocol: '',\n        search: '',\n    },\n    history: {\n        replaceState() { },\n        pushState() { },\n        go() { },\n        back() { },\n    },\n    CustomEvent: function CustomEvent() {\n        return this;\n    },\n    addEventListener() { },\n    removeEventListener() { },\n    getComputedStyle() {\n        return {\n            getPropertyValue() {\n                return '';\n            },\n        };\n    },\n    Image() { },\n    Date() { },\n    screen: {},\n    setTimeout() { },\n    clearTimeout() { },\n    matchMedia() {\n        return {};\n    },\n    requestAnimationFrame(callback) {\n        if (typeof setTimeout === 'undefined') {\n            callback();\n            return null;\n        }\n        return setTimeout(callback, 0);\n    },\n    cancelAnimationFrame(id) {\n        if (typeof setTimeout === 'undefined') {\n            return;\n        }\n        clearTimeout(id);\n    },\n};\nfunction getWindow() {\n    const win = typeof window !== 'undefined' ? window : {};\n    extend(win, ssrWindow);\n    return win;\n}\n\nexport { extend, getDocument, getWindow, ssrDocument, ssrWindow };\n","/**\n * Dom7 4.0.6\n * Minimalistic JavaScript library for DOM manipulation, with a jQuery-compatible API\n * https://framework7.io/docs/dom7.html\n *\n * Copyright 2023, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: February 2, 2023\n */\nimport { getWindow, getDocument } from 'ssr-window';\n\n/* eslint-disable no-proto */\nfunction makeReactive(obj) {\n  const proto = obj.__proto__;\n  Object.defineProperty(obj, '__proto__', {\n    get() {\n      return proto;\n    },\n\n    set(value) {\n      proto.__proto__ = value;\n    }\n\n  });\n}\n\nclass Dom7 extends Array {\n  constructor(items) {\n    if (typeof items === 'number') {\n      super(items);\n    } else {\n      super(...(items || []));\n      makeReactive(this);\n    }\n  }\n\n}\n\nfunction arrayFlat(arr = []) {\n  const res = [];\n  arr.forEach(el => {\n    if (Array.isArray(el)) {\n      res.push(...arrayFlat(el));\n    } else {\n      res.push(el);\n    }\n  });\n  return res;\n}\nfunction arrayFilter(arr, callback) {\n  return Array.prototype.filter.call(arr, callback);\n}\nfunction arrayUnique(arr) {\n  const uniqueArray = [];\n\n  for (let i = 0; i < arr.length; i += 1) {\n    if (uniqueArray.indexOf(arr[i]) === -1) uniqueArray.push(arr[i]);\n  }\n\n  return uniqueArray;\n}\nfunction toCamelCase(string) {\n  return string.toLowerCase().replace(/-(.)/g, (match, group) => group.toUpperCase());\n}\n\n// eslint-disable-next-line\n\nfunction qsa(selector, context) {\n  if (typeof selector !== 'string') {\n    return [selector];\n  }\n\n  const a = [];\n  const res = context.querySelectorAll(selector);\n\n  for (let i = 0; i < res.length; i += 1) {\n    a.push(res[i]);\n  }\n\n  return a;\n}\n\nfunction $(selector, context) {\n  const window = getWindow();\n  const document = getDocument();\n  let arr = [];\n\n  if (!context && selector instanceof Dom7) {\n    return selector;\n  }\n\n  if (!selector) {\n    return new Dom7(arr);\n  }\n\n  if (typeof selector === 'string') {\n    const html = selector.trim();\n\n    if (html.indexOf('<') >= 0 && html.indexOf('>') >= 0) {\n      let toCreate = 'div';\n      if (html.indexOf('<li') === 0) toCreate = 'ul';\n      if (html.indexOf('<tr') === 0) toCreate = 'tbody';\n      if (html.indexOf('<td') === 0 || html.indexOf('<th') === 0) toCreate = 'tr';\n      if (html.indexOf('<tbody') === 0) toCreate = 'table';\n      if (html.indexOf('<option') === 0) toCreate = 'select';\n      const tempParent = document.createElement(toCreate);\n      tempParent.innerHTML = html;\n\n      for (let i = 0; i < tempParent.childNodes.length; i += 1) {\n        arr.push(tempParent.childNodes[i]);\n      }\n    } else {\n      arr = qsa(selector.trim(), context || document);\n    } // arr = qsa(selector, document);\n\n  } else if (selector.nodeType || selector === window || selector === document) {\n    arr.push(selector);\n  } else if (Array.isArray(selector)) {\n    if (selector instanceof Dom7) return selector;\n    arr = selector;\n  }\n\n  return new Dom7(arrayUnique(arr));\n}\n\n$.fn = Dom7.prototype;\n\n// eslint-disable-next-line\n\nfunction addClass(...classes) {\n  const classNames = arrayFlat(classes.map(c => c.split(' ')));\n  this.forEach(el => {\n    el.classList.add(...classNames);\n  });\n  return this;\n}\n\nfunction removeClass(...classes) {\n  const classNames = arrayFlat(classes.map(c => c.split(' ')));\n  this.forEach(el => {\n    el.classList.remove(...classNames);\n  });\n  return this;\n}\n\nfunction toggleClass(...classes) {\n  const classNames = arrayFlat(classes.map(c => c.split(' ')));\n  this.forEach(el => {\n    classNames.forEach(className => {\n      el.classList.toggle(className);\n    });\n  });\n}\n\nfunction hasClass(...classes) {\n  const classNames = arrayFlat(classes.map(c => c.split(' ')));\n  return arrayFilter(this, el => {\n    return classNames.filter(className => el.classList.contains(className)).length > 0;\n  }).length > 0;\n}\n\nfunction attr(attrs, value) {\n  if (arguments.length === 1 && typeof attrs === 'string') {\n    // Get attr\n    if (this[0]) return this[0].getAttribute(attrs);\n    return undefined;\n  } // Set attrs\n\n\n  for (let i = 0; i < this.length; i += 1) {\n    if (arguments.length === 2) {\n      // String\n      this[i].setAttribute(attrs, value);\n    } else {\n      // Object\n      for (const attrName in attrs) {\n        this[i][attrName] = attrs[attrName];\n        this[i].setAttribute(attrName, attrs[attrName]);\n      }\n    }\n  }\n\n  return this;\n}\n\nfunction removeAttr(attr) {\n  for (let i = 0; i < this.length; i += 1) {\n    this[i].removeAttribute(attr);\n  }\n\n  return this;\n}\n\nfunction prop(props, value) {\n  if (arguments.length === 1 && typeof props === 'string') {\n    // Get prop\n    if (this[0]) return this[0][props];\n  } else {\n    // Set props\n    for (let i = 0; i < this.length; i += 1) {\n      if (arguments.length === 2) {\n        // String\n        this[i][props] = value;\n      } else {\n        // Object\n        for (const propName in props) {\n          this[i][propName] = props[propName];\n        }\n      }\n    }\n\n    return this;\n  }\n\n  return this;\n}\n\nfunction data(key, value) {\n  let el;\n\n  if (typeof value === 'undefined') {\n    el = this[0];\n    if (!el) return undefined; // Get value\n\n    if (el.dom7ElementDataStorage && key in el.dom7ElementDataStorage) {\n      return el.dom7ElementDataStorage[key];\n    }\n\n    const dataKey = el.getAttribute(`data-${key}`);\n\n    if (dataKey) {\n      return dataKey;\n    }\n\n    return undefined;\n  } // Set value\n\n\n  for (let i = 0; i < this.length; i += 1) {\n    el = this[i];\n    if (!el.dom7ElementDataStorage) el.dom7ElementDataStorage = {};\n    el.dom7ElementDataStorage[key] = value;\n  }\n\n  return this;\n}\n\nfunction removeData(key) {\n  for (let i = 0; i < this.length; i += 1) {\n    const el = this[i];\n\n    if (el.dom7ElementDataStorage && el.dom7ElementDataStorage[key]) {\n      el.dom7ElementDataStorage[key] = null;\n      delete el.dom7ElementDataStorage[key];\n    }\n  }\n}\n\nfunction dataset() {\n  const el = this[0];\n  if (!el) return undefined;\n  const dataset = {}; // eslint-disable-line\n\n  if (el.dataset) {\n    for (const dataKey in el.dataset) {\n      dataset[dataKey] = el.dataset[dataKey];\n    }\n  } else {\n    for (let i = 0; i < el.attributes.length; i += 1) {\n      const attr = el.attributes[i];\n\n      if (attr.name.indexOf('data-') >= 0) {\n        dataset[toCamelCase(attr.name.split('data-')[1])] = attr.value;\n      }\n    }\n  }\n\n  for (const key in dataset) {\n    if (dataset[key] === 'false') dataset[key] = false;else if (dataset[key] === 'true') dataset[key] = true;else if (parseFloat(dataset[key]) === dataset[key] * 1) dataset[key] *= 1;\n  }\n\n  return dataset;\n}\n\nfunction val(value) {\n  if (typeof value === 'undefined') {\n    // get value\n    const el = this[0];\n    if (!el) return undefined;\n\n    if (el.multiple && el.nodeName.toLowerCase() === 'select') {\n      const values = [];\n\n      for (let i = 0; i < el.selectedOptions.length; i += 1) {\n        values.push(el.selectedOptions[i].value);\n      }\n\n      return values;\n    }\n\n    return el.value;\n  } // set value\n\n\n  for (let i = 0; i < this.length; i += 1) {\n    const el = this[i];\n\n    if (Array.isArray(value) && el.multiple && el.nodeName.toLowerCase() === 'select') {\n      for (let j = 0; j < el.options.length; j += 1) {\n        el.options[j].selected = value.indexOf(el.options[j].value) >= 0;\n      }\n    } else {\n      el.value = value;\n    }\n  }\n\n  return this;\n}\n\nfunction value(value) {\n  return this.val(value);\n}\n\nfunction transform(transform) {\n  for (let i = 0; i < this.length; i += 1) {\n    this[i].style.transform = transform;\n  }\n\n  return this;\n}\n\nfunction transition(duration) {\n  for (let i = 0; i < this.length; i += 1) {\n    this[i].style.transitionDuration = typeof duration !== 'string' ? `${duration}ms` : duration;\n  }\n\n  return this;\n}\n\nfunction on(...args) {\n  let [eventType, targetSelector, listener, capture] = args;\n\n  if (typeof args[1] === 'function') {\n    [eventType, listener, capture] = args;\n    targetSelector = undefined;\n  }\n\n  if (!capture) capture = false;\n\n  function handleLiveEvent(e) {\n    const target = e.target;\n    if (!target) return;\n    const eventData = e.target.dom7EventData || [];\n\n    if (eventData.indexOf(e) < 0) {\n      eventData.unshift(e);\n    }\n\n    if ($(target).is(targetSelector)) listener.apply(target, eventData);else {\n      const parents = $(target).parents(); // eslint-disable-line\n\n      for (let k = 0; k < parents.length; k += 1) {\n        if ($(parents[k]).is(targetSelector)) listener.apply(parents[k], eventData);\n      }\n    }\n  }\n\n  function handleEvent(e) {\n    const eventData = e && e.target ? e.target.dom7EventData || [] : [];\n\n    if (eventData.indexOf(e) < 0) {\n      eventData.unshift(e);\n    }\n\n    listener.apply(this, eventData);\n  }\n\n  const events = eventType.split(' ');\n  let j;\n\n  for (let i = 0; i < this.length; i += 1) {\n    const el = this[i];\n\n    if (!targetSelector) {\n      for (j = 0; j < events.length; j += 1) {\n        const event = events[j];\n        if (!el.dom7Listeners) el.dom7Listeners = {};\n        if (!el.dom7Listeners[event]) el.dom7Listeners[event] = [];\n        el.dom7Listeners[event].push({\n          listener,\n          proxyListener: handleEvent\n        });\n        el.addEventListener(event, handleEvent, capture);\n      }\n    } else {\n      // Live events\n      for (j = 0; j < events.length; j += 1) {\n        const event = events[j];\n        if (!el.dom7LiveListeners) el.dom7LiveListeners = {};\n        if (!el.dom7LiveListeners[event]) el.dom7LiveListeners[event] = [];\n        el.dom7LiveListeners[event].push({\n          listener,\n          proxyListener: handleLiveEvent\n        });\n        el.addEventListener(event, handleLiveEvent, capture);\n      }\n    }\n  }\n\n  return this;\n}\n\nfunction off(...args) {\n  let [eventType, targetSelector, listener, capture] = args;\n\n  if (typeof args[1] === 'function') {\n    [eventType, listener, capture] = args;\n    targetSelector = undefined;\n  }\n\n  if (!capture) capture = false;\n  const events = eventType.split(' ');\n\n  for (let i = 0; i < events.length; i += 1) {\n    const event = events[i];\n\n    for (let j = 0; j < this.length; j += 1) {\n      const el = this[j];\n      let handlers;\n\n      if (!targetSelector && el.dom7Listeners) {\n        handlers = el.dom7Listeners[event];\n      } else if (targetSelector && el.dom7LiveListeners) {\n        handlers = el.dom7LiveListeners[event];\n      }\n\n      if (handlers && handlers.length) {\n        for (let k = handlers.length - 1; k >= 0; k -= 1) {\n          const handler = handlers[k];\n\n          if (listener && handler.listener === listener) {\n            el.removeEventListener(event, handler.proxyListener, capture);\n            handlers.splice(k, 1);\n          } else if (listener && handler.listener && handler.listener.dom7proxy && handler.listener.dom7proxy === listener) {\n            el.removeEventListener(event, handler.proxyListener, capture);\n            handlers.splice(k, 1);\n          } else if (!listener) {\n            el.removeEventListener(event, handler.proxyListener, capture);\n            handlers.splice(k, 1);\n          }\n        }\n      }\n    }\n  }\n\n  return this;\n}\n\nfunction once(...args) {\n  const dom = this;\n  let [eventName, targetSelector, listener, capture] = args;\n\n  if (typeof args[1] === 'function') {\n    [eventName, listener, capture] = args;\n    targetSelector = undefined;\n  }\n\n  function onceHandler(...eventArgs) {\n    listener.apply(this, eventArgs);\n    dom.off(eventName, targetSelector, onceHandler, capture);\n\n    if (onceHandler.dom7proxy) {\n      delete onceHandler.dom7proxy;\n    }\n  }\n\n  onceHandler.dom7proxy = listener;\n  return dom.on(eventName, targetSelector, onceHandler, capture);\n}\n\nfunction trigger(...args) {\n  const window = getWindow();\n  const events = args[0].split(' ');\n  const eventData = args[1];\n\n  for (let i = 0; i < events.length; i += 1) {\n    const event = events[i];\n\n    for (let j = 0; j < this.length; j += 1) {\n      const el = this[j];\n\n      if (window.CustomEvent) {\n        const evt = new window.CustomEvent(event, {\n          detail: eventData,\n          bubbles: true,\n          cancelable: true\n        });\n        el.dom7EventData = args.filter((data, dataIndex) => dataIndex > 0);\n        el.dispatchEvent(evt);\n        el.dom7EventData = [];\n        delete el.dom7EventData;\n      }\n    }\n  }\n\n  return this;\n}\n\nfunction transitionStart(callback) {\n  const dom = this;\n\n  function fireCallBack(e) {\n    if (e.target !== this) return;\n    callback.call(this, e);\n    dom.off('transitionstart', fireCallBack);\n  }\n\n  if (callback) {\n    dom.on('transitionstart', fireCallBack);\n  }\n\n  return this;\n}\n\nfunction transitionEnd(callback) {\n  const dom = this;\n\n  function fireCallBack(e) {\n    if (e.target !== this) return;\n    callback.call(this, e);\n    dom.off('transitionend', fireCallBack);\n  }\n\n  if (callback) {\n    dom.on('transitionend', fireCallBack);\n  }\n\n  return this;\n}\n\nfunction animationEnd(callback) {\n  const dom = this;\n\n  function fireCallBack(e) {\n    if (e.target !== this) return;\n    callback.call(this, e);\n    dom.off('animationend', fireCallBack);\n  }\n\n  if (callback) {\n    dom.on('animationend', fireCallBack);\n  }\n\n  return this;\n}\n\nfunction width() {\n  const window = getWindow();\n\n  if (this[0] === window) {\n    return window.innerWidth;\n  }\n\n  if (this.length > 0) {\n    return parseFloat(this.css('width'));\n  }\n\n  return null;\n}\n\nfunction outerWidth(includeMargins) {\n  if (this.length > 0) {\n    if (includeMargins) {\n      const styles = this.styles();\n      return this[0].offsetWidth + parseFloat(styles.getPropertyValue('margin-right')) + parseFloat(styles.getPropertyValue('margin-left'));\n    }\n\n    return this[0].offsetWidth;\n  }\n\n  return null;\n}\n\nfunction height() {\n  const window = getWindow();\n\n  if (this[0] === window) {\n    return window.innerHeight;\n  }\n\n  if (this.length > 0) {\n    return parseFloat(this.css('height'));\n  }\n\n  return null;\n}\n\nfunction outerHeight(includeMargins) {\n  if (this.length > 0) {\n    if (includeMargins) {\n      const styles = this.styles();\n      return this[0].offsetHeight + parseFloat(styles.getPropertyValue('margin-top')) + parseFloat(styles.getPropertyValue('margin-bottom'));\n    }\n\n    return this[0].offsetHeight;\n  }\n\n  return null;\n}\n\nfunction offset() {\n  if (this.length > 0) {\n    const window = getWindow();\n    const document = getDocument();\n    const el = this[0];\n    const box = el.getBoundingClientRect();\n    const body = document.body;\n    const clientTop = el.clientTop || body.clientTop || 0;\n    const clientLeft = el.clientLeft || body.clientLeft || 0;\n    const scrollTop = el === window ? window.scrollY : el.scrollTop;\n    const scrollLeft = el === window ? window.scrollX : el.scrollLeft;\n    return {\n      top: box.top + scrollTop - clientTop,\n      left: box.left + scrollLeft - clientLeft\n    };\n  }\n\n  return null;\n}\n\nfunction hide() {\n  for (let i = 0; i < this.length; i += 1) {\n    this[i].style.display = 'none';\n  }\n\n  return this;\n}\n\nfunction show() {\n  const window = getWindow();\n\n  for (let i = 0; i < this.length; i += 1) {\n    const el = this[i];\n\n    if (el.style.display === 'none') {\n      el.style.display = '';\n    }\n\n    if (window.getComputedStyle(el, null).getPropertyValue('display') === 'none') {\n      // Still not visible\n      el.style.display = 'block';\n    }\n  }\n\n  return this;\n}\n\nfunction styles() {\n  const window = getWindow();\n  if (this[0]) return window.getComputedStyle(this[0], null);\n  return {};\n}\n\nfunction css(props, value) {\n  const window = getWindow();\n  let i;\n\n  if (arguments.length === 1) {\n    if (typeof props === 'string') {\n      // .css('width')\n      if (this[0]) return window.getComputedStyle(this[0], null).getPropertyValue(props);\n    } else {\n      // .css({ width: '100px' })\n      for (i = 0; i < this.length; i += 1) {\n        for (const prop in props) {\n          this[i].style[prop] = props[prop];\n        }\n      }\n\n      return this;\n    }\n  }\n\n  if (arguments.length === 2 && typeof props === 'string') {\n    // .css('width', '100px')\n    for (i = 0; i < this.length; i += 1) {\n      this[i].style[props] = value;\n    }\n\n    return this;\n  }\n\n  return this;\n}\n\nfunction each(callback) {\n  if (!callback) return this;\n  this.forEach((el, index) => {\n    callback.apply(el, [el, index]);\n  });\n  return this;\n}\n\nfunction filter(callback) {\n  const result = arrayFilter(this, callback);\n  return $(result);\n}\n\nfunction html(html) {\n  if (typeof html === 'undefined') {\n    return this[0] ? this[0].innerHTML : null;\n  }\n\n  for (let i = 0; i < this.length; i += 1) {\n    this[i].innerHTML = html;\n  }\n\n  return this;\n}\n\nfunction text(text) {\n  if (typeof text === 'undefined') {\n    return this[0] ? this[0].textContent.trim() : null;\n  }\n\n  for (let i = 0; i < this.length; i += 1) {\n    this[i].textContent = text;\n  }\n\n  return this;\n}\n\nfunction is(selector) {\n  const window = getWindow();\n  const document = getDocument();\n  const el = this[0];\n  let compareWith;\n  let i;\n  if (!el || typeof selector === 'undefined') return false;\n\n  if (typeof selector === 'string') {\n    if (el.matches) return el.matches(selector);\n    if (el.webkitMatchesSelector) return el.webkitMatchesSelector(selector);\n    if (el.msMatchesSelector) return el.msMatchesSelector(selector);\n    compareWith = $(selector);\n\n    for (i = 0; i < compareWith.length; i += 1) {\n      if (compareWith[i] === el) return true;\n    }\n\n    return false;\n  }\n\n  if (selector === document) {\n    return el === document;\n  }\n\n  if (selector === window) {\n    return el === window;\n  }\n\n  if (selector.nodeType || selector instanceof Dom7) {\n    compareWith = selector.nodeType ? [selector] : selector;\n\n    for (i = 0; i < compareWith.length; i += 1) {\n      if (compareWith[i] === el) return true;\n    }\n\n    return false;\n  }\n\n  return false;\n}\n\nfunction index() {\n  let child = this[0];\n  let i;\n\n  if (child) {\n    i = 0; // eslint-disable-next-line\n\n    while ((child = child.previousSibling) !== null) {\n      if (child.nodeType === 1) i += 1;\n    }\n\n    return i;\n  }\n\n  return undefined;\n}\n\nfunction eq(index) {\n  if (typeof index === 'undefined') return this;\n  const length = this.length;\n\n  if (index > length - 1) {\n    return $([]);\n  }\n\n  if (index < 0) {\n    const returnIndex = length + index;\n    if (returnIndex < 0) return $([]);\n    return $([this[returnIndex]]);\n  }\n\n  return $([this[index]]);\n}\n\nfunction append(...els) {\n  let newChild;\n  const document = getDocument();\n\n  for (let k = 0; k < els.length; k += 1) {\n    newChild = els[k];\n\n    for (let i = 0; i < this.length; i += 1) {\n      if (typeof newChild === 'string') {\n        const tempDiv = document.createElement('div');\n        tempDiv.innerHTML = newChild;\n\n        while (tempDiv.firstChild) {\n          this[i].appendChild(tempDiv.firstChild);\n        }\n      } else if (newChild instanceof Dom7) {\n        for (let j = 0; j < newChild.length; j += 1) {\n          this[i].appendChild(newChild[j]);\n        }\n      } else {\n        this[i].appendChild(newChild);\n      }\n    }\n  }\n\n  return this;\n}\n\nfunction appendTo(parent) {\n  $(parent).append(this);\n  return this;\n}\n\nfunction prepend(newChild) {\n  const document = getDocument();\n  let i;\n  let j;\n\n  for (i = 0; i < this.length; i += 1) {\n    if (typeof newChild === 'string') {\n      const tempDiv = document.createElement('div');\n      tempDiv.innerHTML = newChild;\n\n      for (j = tempDiv.childNodes.length - 1; j >= 0; j -= 1) {\n        this[i].insertBefore(tempDiv.childNodes[j], this[i].childNodes[0]);\n      }\n    } else if (newChild instanceof Dom7) {\n      for (j = 0; j < newChild.length; j += 1) {\n        this[i].insertBefore(newChild[j], this[i].childNodes[0]);\n      }\n    } else {\n      this[i].insertBefore(newChild, this[i].childNodes[0]);\n    }\n  }\n\n  return this;\n}\n\nfunction prependTo(parent) {\n  $(parent).prepend(this);\n  return this;\n}\n\nfunction insertBefore(selector) {\n  const before = $(selector);\n\n  for (let i = 0; i < this.length; i += 1) {\n    if (before.length === 1) {\n      before[0].parentNode.insertBefore(this[i], before[0]);\n    } else if (before.length > 1) {\n      for (let j = 0; j < before.length; j += 1) {\n        before[j].parentNode.insertBefore(this[i].cloneNode(true), before[j]);\n      }\n    }\n  }\n}\n\nfunction insertAfter(selector) {\n  const after = $(selector);\n\n  for (let i = 0; i < this.length; i += 1) {\n    if (after.length === 1) {\n      after[0].parentNode.insertBefore(this[i], after[0].nextSibling);\n    } else if (after.length > 1) {\n      for (let j = 0; j < after.length; j += 1) {\n        after[j].parentNode.insertBefore(this[i].cloneNode(true), after[j].nextSibling);\n      }\n    }\n  }\n}\n\nfunction next(selector) {\n  if (this.length > 0) {\n    if (selector) {\n      if (this[0].nextElementSibling && $(this[0].nextElementSibling).is(selector)) {\n        return $([this[0].nextElementSibling]);\n      }\n\n      return $([]);\n    }\n\n    if (this[0].nextElementSibling) return $([this[0].nextElementSibling]);\n    return $([]);\n  }\n\n  return $([]);\n}\n\nfunction nextAll(selector) {\n  const nextEls = [];\n  let el = this[0];\n  if (!el) return $([]);\n\n  while (el.nextElementSibling) {\n    const next = el.nextElementSibling; // eslint-disable-line\n\n    if (selector) {\n      if ($(next).is(selector)) nextEls.push(next);\n    } else nextEls.push(next);\n\n    el = next;\n  }\n\n  return $(nextEls);\n}\n\nfunction prev(selector) {\n  if (this.length > 0) {\n    const el = this[0];\n\n    if (selector) {\n      if (el.previousElementSibling && $(el.previousElementSibling).is(selector)) {\n        return $([el.previousElementSibling]);\n      }\n\n      return $([]);\n    }\n\n    if (el.previousElementSibling) return $([el.previousElementSibling]);\n    return $([]);\n  }\n\n  return $([]);\n}\n\nfunction prevAll(selector) {\n  const prevEls = [];\n  let el = this[0];\n  if (!el) return $([]);\n\n  while (el.previousElementSibling) {\n    const prev = el.previousElementSibling; // eslint-disable-line\n\n    if (selector) {\n      if ($(prev).is(selector)) prevEls.push(prev);\n    } else prevEls.push(prev);\n\n    el = prev;\n  }\n\n  return $(prevEls);\n}\n\nfunction siblings(selector) {\n  return this.nextAll(selector).add(this.prevAll(selector));\n}\n\nfunction parent(selector) {\n  const parents = []; // eslint-disable-line\n\n  for (let i = 0; i < this.length; i += 1) {\n    if (this[i].parentNode !== null) {\n      if (selector) {\n        if ($(this[i].parentNode).is(selector)) parents.push(this[i].parentNode);\n      } else {\n        parents.push(this[i].parentNode);\n      }\n    }\n  }\n\n  return $(parents);\n}\n\nfunction parents(selector) {\n  const parents = []; // eslint-disable-line\n\n  for (let i = 0; i < this.length; i += 1) {\n    let parent = this[i].parentNode; // eslint-disable-line\n\n    while (parent) {\n      if (selector) {\n        if ($(parent).is(selector)) parents.push(parent);\n      } else {\n        parents.push(parent);\n      }\n\n      parent = parent.parentNode;\n    }\n  }\n\n  return $(parents);\n}\n\nfunction closest(selector) {\n  let closest = this; // eslint-disable-line\n\n  if (typeof selector === 'undefined') {\n    return $([]);\n  }\n\n  if (!closest.is(selector)) {\n    closest = closest.parents(selector).eq(0);\n  }\n\n  return closest;\n}\n\nfunction find(selector) {\n  const foundElements = [];\n\n  for (let i = 0; i < this.length; i += 1) {\n    const found = this[i].querySelectorAll(selector);\n\n    for (let j = 0; j < found.length; j += 1) {\n      foundElements.push(found[j]);\n    }\n  }\n\n  return $(foundElements);\n}\n\nfunction children(selector) {\n  const children = []; // eslint-disable-line\n\n  for (let i = 0; i < this.length; i += 1) {\n    const childNodes = this[i].children;\n\n    for (let j = 0; j < childNodes.length; j += 1) {\n      if (!selector || $(childNodes[j]).is(selector)) {\n        children.push(childNodes[j]);\n      }\n    }\n  }\n\n  return $(children);\n}\n\nfunction remove() {\n  for (let i = 0; i < this.length; i += 1) {\n    if (this[i].parentNode) this[i].parentNode.removeChild(this[i]);\n  }\n\n  return this;\n}\n\nfunction detach() {\n  return this.remove();\n}\n\nfunction add(...els) {\n  const dom = this;\n  let i;\n  let j;\n\n  for (i = 0; i < els.length; i += 1) {\n    const toAdd = $(els[i]);\n\n    for (j = 0; j < toAdd.length; j += 1) {\n      dom.push(toAdd[j]);\n    }\n  }\n\n  return dom;\n}\n\nfunction empty() {\n  for (let i = 0; i < this.length; i += 1) {\n    const el = this[i];\n\n    if (el.nodeType === 1) {\n      for (let j = 0; j < el.childNodes.length; j += 1) {\n        if (el.childNodes[j].parentNode) {\n          el.childNodes[j].parentNode.removeChild(el.childNodes[j]);\n        }\n      }\n\n      el.textContent = '';\n    }\n  }\n\n  return this;\n}\n\n// eslint-disable-next-line\n\nfunction scrollTo(...args) {\n  const window = getWindow();\n  let [left, top, duration, easing, callback] = args;\n\n  if (args.length === 4 && typeof easing === 'function') {\n    callback = easing;\n    [left, top, duration, callback, easing] = args;\n  }\n\n  if (typeof easing === 'undefined') easing = 'swing';\n  return this.each(function animate() {\n    const el = this;\n    let currentTop;\n    let currentLeft;\n    let maxTop;\n    let maxLeft;\n    let newTop;\n    let newLeft;\n    let scrollTop; // eslint-disable-line\n\n    let scrollLeft; // eslint-disable-line\n\n    let animateTop = top > 0 || top === 0;\n    let animateLeft = left > 0 || left === 0;\n\n    if (typeof easing === 'undefined') {\n      easing = 'swing';\n    }\n\n    if (animateTop) {\n      currentTop = el.scrollTop;\n\n      if (!duration) {\n        el.scrollTop = top;\n      }\n    }\n\n    if (animateLeft) {\n      currentLeft = el.scrollLeft;\n\n      if (!duration) {\n        el.scrollLeft = left;\n      }\n    }\n\n    if (!duration) return;\n\n    if (animateTop) {\n      maxTop = el.scrollHeight - el.offsetHeight;\n      newTop = Math.max(Math.min(top, maxTop), 0);\n    }\n\n    if (animateLeft) {\n      maxLeft = el.scrollWidth - el.offsetWidth;\n      newLeft = Math.max(Math.min(left, maxLeft), 0);\n    }\n\n    let startTime = null;\n    if (animateTop && newTop === currentTop) animateTop = false;\n    if (animateLeft && newLeft === currentLeft) animateLeft = false;\n\n    function render(time = new Date().getTime()) {\n      if (startTime === null) {\n        startTime = time;\n      }\n\n      const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n      const easeProgress = easing === 'linear' ? progress : 0.5 - Math.cos(progress * Math.PI) / 2;\n      let done;\n      if (animateTop) scrollTop = currentTop + easeProgress * (newTop - currentTop);\n      if (animateLeft) scrollLeft = currentLeft + easeProgress * (newLeft - currentLeft);\n\n      if (animateTop && newTop > currentTop && scrollTop >= newTop) {\n        el.scrollTop = newTop;\n        done = true;\n      }\n\n      if (animateTop && newTop < currentTop && scrollTop <= newTop) {\n        el.scrollTop = newTop;\n        done = true;\n      }\n\n      if (animateLeft && newLeft > currentLeft && scrollLeft >= newLeft) {\n        el.scrollLeft = newLeft;\n        done = true;\n      }\n\n      if (animateLeft && newLeft < currentLeft && scrollLeft <= newLeft) {\n        el.scrollLeft = newLeft;\n        done = true;\n      }\n\n      if (done) {\n        if (callback) callback();\n        return;\n      }\n\n      if (animateTop) el.scrollTop = scrollTop;\n      if (animateLeft) el.scrollLeft = scrollLeft;\n      window.requestAnimationFrame(render);\n    }\n\n    window.requestAnimationFrame(render);\n  });\n} // scrollTop(top, duration, easing, callback) {\n\n\nfunction scrollTop(...args) {\n  let [top, duration, easing, callback] = args;\n\n  if (args.length === 3 && typeof easing === 'function') {\n    [top, duration, callback, easing] = args;\n  }\n\n  const dom = this;\n\n  if (typeof top === 'undefined') {\n    if (dom.length > 0) return dom[0].scrollTop;\n    return null;\n  }\n\n  return dom.scrollTo(undefined, top, duration, easing, callback);\n}\n\nfunction scrollLeft(...args) {\n  let [left, duration, easing, callback] = args;\n\n  if (args.length === 3 && typeof easing === 'function') {\n    [left, duration, callback, easing] = args;\n  }\n\n  const dom = this;\n\n  if (typeof left === 'undefined') {\n    if (dom.length > 0) return dom[0].scrollLeft;\n    return null;\n  }\n\n  return dom.scrollTo(left, undefined, duration, easing, callback);\n}\n\n// eslint-disable-next-line\n\nfunction animate(initialProps, initialParams) {\n  const window = getWindow();\n  const els = this;\n  const a = {\n    props: Object.assign({}, initialProps),\n    params: Object.assign({\n      duration: 300,\n      easing: 'swing' // or 'linear'\n\n      /* Callbacks\n      begin(elements)\n      complete(elements)\n      progress(elements, complete, remaining, start, tweenValue)\n      */\n\n    }, initialParams),\n    elements: els,\n    animating: false,\n    que: [],\n\n    easingProgress(easing, progress) {\n      if (easing === 'swing') {\n        return 0.5 - Math.cos(progress * Math.PI) / 2;\n      }\n\n      if (typeof easing === 'function') {\n        return easing(progress);\n      }\n\n      return progress;\n    },\n\n    stop() {\n      if (a.frameId) {\n        window.cancelAnimationFrame(a.frameId);\n      }\n\n      a.animating = false;\n      a.elements.each(el => {\n        const element = el;\n        delete element.dom7AnimateInstance;\n      });\n      a.que = [];\n    },\n\n    done(complete) {\n      a.animating = false;\n      a.elements.each(el => {\n        const element = el;\n        delete element.dom7AnimateInstance;\n      });\n      if (complete) complete(els);\n\n      if (a.que.length > 0) {\n        const que = a.que.shift();\n        a.animate(que[0], que[1]);\n      }\n    },\n\n    animate(props, params) {\n      if (a.animating) {\n        a.que.push([props, params]);\n        return a;\n      }\n\n      const elements = []; // Define & Cache Initials & Units\n\n      a.elements.each((el, index) => {\n        let initialFullValue;\n        let initialValue;\n        let unit;\n        let finalValue;\n        let finalFullValue;\n        if (!el.dom7AnimateInstance) a.elements[index].dom7AnimateInstance = a;\n        elements[index] = {\n          container: el\n        };\n        Object.keys(props).forEach(prop => {\n          initialFullValue = window.getComputedStyle(el, null).getPropertyValue(prop).replace(',', '.');\n          initialValue = parseFloat(initialFullValue);\n          unit = initialFullValue.replace(initialValue, '');\n          finalValue = parseFloat(props[prop]);\n          finalFullValue = props[prop] + unit;\n          elements[index][prop] = {\n            initialFullValue,\n            initialValue,\n            unit,\n            finalValue,\n            finalFullValue,\n            currentValue: initialValue\n          };\n        });\n      });\n      let startTime = null;\n      let time;\n      let elementsDone = 0;\n      let propsDone = 0;\n      let done;\n      let began = false;\n      a.animating = true;\n\n      function render() {\n        time = new Date().getTime();\n        let progress;\n        let easeProgress; // let el;\n\n        if (!began) {\n          began = true;\n          if (params.begin) params.begin(els);\n        }\n\n        if (startTime === null) {\n          startTime = time;\n        }\n\n        if (params.progress) {\n          // eslint-disable-next-line\n          params.progress(els, Math.max(Math.min((time - startTime) / params.duration, 1), 0), startTime + params.duration - time < 0 ? 0 : startTime + params.duration - time, startTime);\n        }\n\n        elements.forEach(element => {\n          const el = element;\n          if (done || el.done) return;\n          Object.keys(props).forEach(prop => {\n            if (done || el.done) return;\n            progress = Math.max(Math.min((time - startTime) / params.duration, 1), 0);\n            easeProgress = a.easingProgress(params.easing, progress);\n            const {\n              initialValue,\n              finalValue,\n              unit\n            } = el[prop];\n            el[prop].currentValue = initialValue + easeProgress * (finalValue - initialValue);\n            const currentValue = el[prop].currentValue;\n\n            if (finalValue > initialValue && currentValue >= finalValue || finalValue < initialValue && currentValue <= finalValue) {\n              el.container.style[prop] = finalValue + unit;\n              propsDone += 1;\n\n              if (propsDone === Object.keys(props).length) {\n                el.done = true;\n                elementsDone += 1;\n              }\n\n              if (elementsDone === elements.length) {\n                done = true;\n              }\n            }\n\n            if (done) {\n              a.done(params.complete);\n              return;\n            }\n\n            el.container.style[prop] = currentValue + unit;\n          });\n        });\n        if (done) return; // Then call\n\n        a.frameId = window.requestAnimationFrame(render);\n      }\n\n      a.frameId = window.requestAnimationFrame(render);\n      return a;\n    }\n\n  };\n\n  if (a.elements.length === 0) {\n    return els;\n  }\n\n  let animateInstance;\n\n  for (let i = 0; i < a.elements.length; i += 1) {\n    if (a.elements[i].dom7AnimateInstance) {\n      animateInstance = a.elements[i].dom7AnimateInstance;\n    } else a.elements[i].dom7AnimateInstance = a;\n  }\n\n  if (!animateInstance) {\n    animateInstance = a;\n  }\n\n  if (initialProps === 'stop') {\n    animateInstance.stop();\n  } else {\n    animateInstance.animate(a.props, a.params);\n  }\n\n  return els;\n}\n\nfunction stop() {\n  const els = this;\n\n  for (let i = 0; i < els.length; i += 1) {\n    if (els[i].dom7AnimateInstance) {\n      els[i].dom7AnimateInstance.stop();\n    }\n  }\n}\n\nconst noTrigger = 'resize scroll'.split(' ');\n\nfunction shortcut(name) {\n  function eventHandler(...args) {\n    if (typeof args[0] === 'undefined') {\n      for (let i = 0; i < this.length; i += 1) {\n        if (noTrigger.indexOf(name) < 0) {\n          if (name in this[i]) this[i][name]();else {\n            $(this[i]).trigger(name);\n          }\n        }\n      }\n\n      return this;\n    }\n\n    return this.on(name, ...args);\n  }\n\n  return eventHandler;\n}\n\nconst click = shortcut('click');\nconst blur = shortcut('blur');\nconst focus = shortcut('focus');\nconst focusin = shortcut('focusin');\nconst focusout = shortcut('focusout');\nconst keyup = shortcut('keyup');\nconst keydown = shortcut('keydown');\nconst keypress = shortcut('keypress');\nconst submit = shortcut('submit');\nconst change = shortcut('change');\nconst mousedown = shortcut('mousedown');\nconst mousemove = shortcut('mousemove');\nconst mouseup = shortcut('mouseup');\nconst mouseenter = shortcut('mouseenter');\nconst mouseleave = shortcut('mouseleave');\nconst mouseout = shortcut('mouseout');\nconst mouseover = shortcut('mouseover');\nconst touchstart = shortcut('touchstart');\nconst touchend = shortcut('touchend');\nconst touchmove = shortcut('touchmove');\nconst resize = shortcut('resize');\nconst scroll = shortcut('scroll');\n\nexport default $;\nexport { $, add, addClass, animate, animationEnd, append, appendTo, attr, blur, change, children, click, closest, css, data, dataset, detach, each, empty, eq, filter, find, focus, focusin, focusout, hasClass, height, hide, html, index, insertAfter, insertBefore, is, keydown, keypress, keyup, mousedown, mouseenter, mouseleave, mousemove, mouseout, mouseover, mouseup, next, nextAll, off, offset, on, once, outerHeight, outerWidth, parent, parents, prepend, prependTo, prev, prevAll, prop, remove, removeAttr, removeClass, removeData, resize, scroll, scrollLeft, scrollTo, scrollTop, show, siblings, stop, styles, submit, text, toggleClass, touchend, touchmove, touchstart, transform, transition, transitionEnd, transitionStart, trigger, val, value, width };\n","// eslint-disable-next-line\nimport * as methods from 'dom7';\n\nObject.keys(methods).forEach((methodName) => {\n  if (methodName === '$') return;\n  methods.$.fn[methodName] = methods[methodName];\n});\n\nexport default methods.$;\n","/* eslint-disable */\nfunction signum(num) {\n  return num < 0 ? -1 : 0 === num ? 0 : 1;\n}\n\nfunction lerp(start, stop, amount) {\n  return (1 - amount) * start + amount * stop;\n}\n\nfunction clampInt(min, max, input) {\n  return input < min ? min : input > max ? max : input;\n}\n\nfunction clampDouble(min, max, input) {\n  return input < min ? min : input > max ? max : input;\n}\n\nfunction sanitizeDegreesDouble(degrees) {\n  return (degrees %= 360) < 0 && (degrees += 360), degrees;\n}\n\nfunction rotationDirection(from, to) {\n  return sanitizeDegreesDouble(to - from) <= 180 ? 1 : -1;\n}\n\nfunction differenceDegrees(a, b) {\n  return 180 - Math.abs(Math.abs(a - b) - 180);\n}\n\nfunction matrixMultiply(row, matrix) {\n  return [ row[0] * matrix[0][0] + row[1] * matrix[0][1] + row[2] * matrix[0][2], row[0] * matrix[1][0] + row[1] * matrix[1][1] + row[2] * matrix[1][2], row[0] * matrix[2][0] + row[1] * matrix[2][1] + row[2] * matrix[2][2] ];\n}\n\nconst SRGB_TO_XYZ = [ [ .41233895, .35762064, .18051042 ], [ .2126, .7152, .0722 ], [ .01932141, .11916382, .95034478 ] ], XYZ_TO_SRGB = [ [ 3.2413774792388685, -1.5376652402851851, -.49885366846268053 ], [ -.9691452513005321, 1.8758853451067872, .04156585616912061 ], [ .05562093689691305, -.20395524564742123, 1.0571799111220335 ] ], WHITE_POINT_D65 = [ 95.047, 100, 108.883 ];\n\nfunction argbFromRgb(red, green, blue) {\n  return (255 << 24 | (255 & red) << 16 | (255 & green) << 8 | 255 & blue) >>> 0;\n}\n\nfunction argbFromLinrgb(linrgb) {\n  return argbFromRgb(delinearized(linrgb[0]), delinearized(linrgb[1]), delinearized(linrgb[2]));\n}\n\nfunction redFromArgb(argb) {\n  return argb >> 16 & 255;\n}\n\nfunction greenFromArgb(argb) {\n  return argb >> 8 & 255;\n}\n\nfunction blueFromArgb(argb) {\n  return 255 & argb;\n}\n\nfunction argbFromXyz(x, y, z) {\n  const matrix = XYZ_TO_SRGB, linearR = matrix[0][0] * x + matrix[0][1] * y + matrix[0][2] * z, linearG = matrix[1][0] * x + matrix[1][1] * y + matrix[1][2] * z, linearB = matrix[2][0] * x + matrix[2][1] * y + matrix[2][2] * z;\n  return argbFromRgb(delinearized(linearR), delinearized(linearG), delinearized(linearB));\n}\n\nfunction xyzFromArgb(argb) {\n  return matrixMultiply([ linearized(redFromArgb(argb)), linearized(greenFromArgb(argb)), linearized(blueFromArgb(argb)) ], SRGB_TO_XYZ);\n}\n\nfunction argbFromLstar(lstar) {\n  const component = delinearized(yFromLstar(lstar));\n  return argbFromRgb(component, component, component);\n}\n\nfunction lstarFromArgb(argb) {\n  return 116 * labF(xyzFromArgb(argb)[1] / 100) - 16;\n}\n\nfunction yFromLstar(lstar) {\n  return 100 * labInvf((lstar + 16) / 116);\n}\n\nfunction lstarFromY(y) {\n  return 116 * labF(y / 100) - 16;\n}\n\nfunction linearized(rgbComponent) {\n  const normalized = rgbComponent / 255;\n  return normalized <= .040449936 ? normalized / 12.92 * 100 : 100 * Math.pow((normalized + .055) / 1.055, 2.4);\n}\n\nfunction delinearized(rgbComponent) {\n  const normalized = rgbComponent / 100;\n  let delinearized = 0;\n  return delinearized = normalized <= .0031308 ? 12.92 * normalized : 1.055 * Math.pow(normalized, 1 / 2.4) - .055, \n  clampInt(0, 255, Math.round(255 * delinearized));\n}\n\nfunction whitePointD65() {\n  return WHITE_POINT_D65;\n}\n\nfunction labF(t) {\n  return t > 216 / 24389 ? Math.pow(t, 1 / 3) : (903.2962962962963 * t + 16) / 116;\n}\n\nfunction labInvf(ft) {\n  const ft3 = ft * ft * ft;\n  return ft3 > 216 / 24389 ? ft3 : (116 * ft - 16) / 903.2962962962963;\n}\n\nclass ViewingConditions {\n  static make(whitePoint = whitePointD65(), adaptingLuminance = 200 / Math.PI * yFromLstar(50) / 100, backgroundLstar = 50, surround = 2, discountingIlluminant = !1) {\n    const xyz = whitePoint, rW = .401288 * xyz[0] + .650173 * xyz[1] + -.051461 * xyz[2], gW = -.250268 * xyz[0] + 1.204414 * xyz[1] + .045854 * xyz[2], bW = -.002079 * xyz[0] + .048952 * xyz[1] + .953127 * xyz[2], f = .8 + surround / 10, c = f >= .9 ? lerp(.59, .69, 10 * (f - .9)) : lerp(.525, .59, 10 * (f - .8));\n    let d = discountingIlluminant ? 1 : f * (1 - 1 / 3.6 * Math.exp((-adaptingLuminance - 42) / 92));\n    d = d > 1 ? 1 : d < 0 ? 0 : d;\n    const nc = f, rgbD = [ d * (100 / rW) + 1 - d, d * (100 / gW) + 1 - d, d * (100 / bW) + 1 - d ], k = 1 / (5 * adaptingLuminance + 1), k4 = k * k * k * k, k4F = 1 - k4, fl = k4 * adaptingLuminance + .1 * k4F * k4F * Math.cbrt(5 * adaptingLuminance), n = yFromLstar(backgroundLstar) / whitePoint[1], z = 1.48 + Math.sqrt(n), nbb = .725 / Math.pow(n, .2), ncb = nbb, rgbAFactors = [ Math.pow(fl * rgbD[0] * rW / 100, .42), Math.pow(fl * rgbD[1] * gW / 100, .42), Math.pow(fl * rgbD[2] * bW / 100, .42) ], rgbA = [ 400 * rgbAFactors[0] / (rgbAFactors[0] + 27.13), 400 * rgbAFactors[1] / (rgbAFactors[1] + 27.13), 400 * rgbAFactors[2] / (rgbAFactors[2] + 27.13) ];\n    return new ViewingConditions(n, (2 * rgbA[0] + rgbA[1] + .05 * rgbA[2]) * nbb, nbb, ncb, c, nc, rgbD, fl, Math.pow(fl, .25), z);\n  }\n  constructor(n, aw, nbb, ncb, c, nc, rgbD, fl, fLRoot, z) {\n    this.n = n, this.aw = aw, this.nbb = nbb, this.ncb = ncb, this.c = c, this.nc = nc, \n    this.rgbD = rgbD, this.fl = fl, this.fLRoot = fLRoot, this.z = z;\n  }\n}\n\nViewingConditions.DEFAULT = ViewingConditions.make();\n\nclass Cam16 {\n  constructor(hue, chroma, j, q, m, s, jstar, astar, bstar) {\n    this.hue = hue, this.chroma = chroma, this.j = j, this.q = q, this.m = m, this.s = s, \n    this.jstar = jstar, this.astar = astar, this.bstar = bstar;\n  }\n  distance(other) {\n    const dJ = this.jstar - other.jstar, dA = this.astar - other.astar, dB = this.bstar - other.bstar, dEPrime = Math.sqrt(dJ * dJ + dA * dA + dB * dB);\n    return 1.41 * Math.pow(dEPrime, .63);\n  }\n  static fromInt(argb) {\n    return Cam16.fromIntInViewingConditions(argb, ViewingConditions.DEFAULT);\n  }\n  static fromIntInViewingConditions(argb, viewingConditions) {\n    const green = (65280 & argb) >> 8, blue = 255 & argb, redL = linearized((16711680 & argb) >> 16), greenL = linearized(green), blueL = linearized(blue), x = .41233895 * redL + .35762064 * greenL + .18051042 * blueL, y = .2126 * redL + .7152 * greenL + .0722 * blueL, z = .01932141 * redL + .11916382 * greenL + .95034478 * blueL, rC = .401288 * x + .650173 * y - .051461 * z, gC = -.250268 * x + 1.204414 * y + .045854 * z, bC = -.002079 * x + .048952 * y + .953127 * z, rD = viewingConditions.rgbD[0] * rC, gD = viewingConditions.rgbD[1] * gC, bD = viewingConditions.rgbD[2] * bC, rAF = Math.pow(viewingConditions.fl * Math.abs(rD) / 100, .42), gAF = Math.pow(viewingConditions.fl * Math.abs(gD) / 100, .42), bAF = Math.pow(viewingConditions.fl * Math.abs(bD) / 100, .42), rA = 400 * signum(rD) * rAF / (rAF + 27.13), gA = 400 * signum(gD) * gAF / (gAF + 27.13), bA = 400 * signum(bD) * bAF / (bAF + 27.13), a = (11 * rA + -12 * gA + bA) / 11, b = (rA + gA - 2 * bA) / 9, u = (20 * rA + 20 * gA + 21 * bA) / 20, p2 = (40 * rA + 20 * gA + bA) / 20, atanDegrees = 180 * Math.atan2(b, a) / Math.PI, hue = atanDegrees < 0 ? atanDegrees + 360 : atanDegrees >= 360 ? atanDegrees - 360 : atanDegrees, hueRadians = hue * Math.PI / 180, ac = p2 * viewingConditions.nbb, j = 100 * Math.pow(ac / viewingConditions.aw, viewingConditions.c * viewingConditions.z), q = 4 / viewingConditions.c * Math.sqrt(j / 100) * (viewingConditions.aw + 4) * viewingConditions.fLRoot, huePrime = hue < 20.14 ? hue + 360 : hue, t = 5e4 / 13 * (.25 * (Math.cos(huePrime * Math.PI / 180 + 2) + 3.8)) * viewingConditions.nc * viewingConditions.ncb * Math.sqrt(a * a + b * b) / (u + .305), alpha = Math.pow(t, .9) * Math.pow(1.64 - Math.pow(.29, viewingConditions.n), .73), c = alpha * Math.sqrt(j / 100), m = c * viewingConditions.fLRoot, s = 50 * Math.sqrt(alpha * viewingConditions.c / (viewingConditions.aw + 4)), jstar = (1 + 100 * .007) * j / (1 + .007 * j), mstar = 1 / .0228 * Math.log(1 + .0228 * m), astar = mstar * Math.cos(hueRadians), bstar = mstar * Math.sin(hueRadians);\n    return new Cam16(hue, c, j, q, m, s, jstar, astar, bstar);\n  }\n  static fromJch(j, c, h) {\n    return Cam16.fromJchInViewingConditions(j, c, h, ViewingConditions.DEFAULT);\n  }\n  static fromJchInViewingConditions(j, c, h, viewingConditions) {\n    const q = 4 / viewingConditions.c * Math.sqrt(j / 100) * (viewingConditions.aw + 4) * viewingConditions.fLRoot, m = c * viewingConditions.fLRoot, alpha = c / Math.sqrt(j / 100), s = 50 * Math.sqrt(alpha * viewingConditions.c / (viewingConditions.aw + 4)), hueRadians = h * Math.PI / 180, jstar = (1 + 100 * .007) * j / (1 + .007 * j), mstar = 1 / .0228 * Math.log(1 + .0228 * m), astar = mstar * Math.cos(hueRadians), bstar = mstar * Math.sin(hueRadians);\n    return new Cam16(h, c, j, q, m, s, jstar, astar, bstar);\n  }\n  static fromUcs(jstar, astar, bstar) {\n    return Cam16.fromUcsInViewingConditions(jstar, astar, bstar, ViewingConditions.DEFAULT);\n  }\n  static fromUcsInViewingConditions(jstar, astar, bstar, viewingConditions) {\n    const a = astar, b = bstar, m = Math.sqrt(a * a + b * b), c = (Math.exp(.0228 * m) - 1) / .0228 / viewingConditions.fLRoot;\n    let h = Math.atan2(b, a) * (180 / Math.PI);\n    h < 0 && (h += 360);\n    const j = jstar / (1 - .007 * (jstar - 100));\n    return Cam16.fromJchInViewingConditions(j, c, h, viewingConditions);\n  }\n  toInt() {\n    return this.viewed(ViewingConditions.DEFAULT);\n  }\n  viewed(viewingConditions) {\n    const alpha = 0 === this.chroma || 0 === this.j ? 0 : this.chroma / Math.sqrt(this.j / 100), t = Math.pow(alpha / Math.pow(1.64 - Math.pow(.29, viewingConditions.n), .73), 1 / .9), hRad = this.hue * Math.PI / 180, eHue = .25 * (Math.cos(hRad + 2) + 3.8), ac = viewingConditions.aw * Math.pow(this.j / 100, 1 / viewingConditions.c / viewingConditions.z), p1 = eHue * (5e4 / 13) * viewingConditions.nc * viewingConditions.ncb, p2 = ac / viewingConditions.nbb, hSin = Math.sin(hRad), hCos = Math.cos(hRad), gamma = 23 * (p2 + .305) * t / (23 * p1 + 11 * t * hCos + 108 * t * hSin), a = gamma * hCos, b = gamma * hSin, rA = (460 * p2 + 451 * a + 288 * b) / 1403, gA = (460 * p2 - 891 * a - 261 * b) / 1403, bA = (460 * p2 - 220 * a - 6300 * b) / 1403, rCBase = Math.max(0, 27.13 * Math.abs(rA) / (400 - Math.abs(rA))), rC = signum(rA) * (100 / viewingConditions.fl) * Math.pow(rCBase, 1 / .42), gCBase = Math.max(0, 27.13 * Math.abs(gA) / (400 - Math.abs(gA))), gC = signum(gA) * (100 / viewingConditions.fl) * Math.pow(gCBase, 1 / .42), bCBase = Math.max(0, 27.13 * Math.abs(bA) / (400 - Math.abs(bA))), bC = signum(bA) * (100 / viewingConditions.fl) * Math.pow(bCBase, 1 / .42), rF = rC / viewingConditions.rgbD[0], gF = gC / viewingConditions.rgbD[1], bF = bC / viewingConditions.rgbD[2];\n    return argbFromXyz(1.86206786 * rF - 1.01125463 * gF + .14918677 * bF, .38752654 * rF + .62144744 * gF - .00897398 * bF, -.0158415 * rF - .03412294 * gF + 1.04996444 * bF);\n  }\n  static fromXyzInViewingConditions(x, y, z, viewingConditions) {\n    const rC = .401288 * x + .650173 * y - .051461 * z, gC = -.250268 * x + 1.204414 * y + .045854 * z, bC = -.002079 * x + .048952 * y + .953127 * z, rD = viewingConditions.rgbD[0] * rC, gD = viewingConditions.rgbD[1] * gC, bD = viewingConditions.rgbD[2] * bC, rAF = Math.pow(viewingConditions.fl * Math.abs(rD) / 100, .42), gAF = Math.pow(viewingConditions.fl * Math.abs(gD) / 100, .42), bAF = Math.pow(viewingConditions.fl * Math.abs(bD) / 100, .42), rA = 400 * signum(rD) * rAF / (rAF + 27.13), gA = 400 * signum(gD) * gAF / (gAF + 27.13), bA = 400 * signum(bD) * bAF / (bAF + 27.13), a = (11 * rA + -12 * gA + bA) / 11, b = (rA + gA - 2 * bA) / 9, u = (20 * rA + 20 * gA + 21 * bA) / 20, p2 = (40 * rA + 20 * gA + bA) / 20, atanDegrees = 180 * Math.atan2(b, a) / Math.PI, hue = atanDegrees < 0 ? atanDegrees + 360 : atanDegrees >= 360 ? atanDegrees - 360 : atanDegrees, hueRadians = hue * Math.PI / 180, ac = p2 * viewingConditions.nbb, J = 100 * Math.pow(ac / viewingConditions.aw, viewingConditions.c * viewingConditions.z), Q = 4 / viewingConditions.c * Math.sqrt(J / 100) * (viewingConditions.aw + 4) * viewingConditions.fLRoot, huePrime = hue < 20.14 ? hue + 360 : hue, t = 5e4 / 13 * (1 / 4 * (Math.cos(huePrime * Math.PI / 180 + 2) + 3.8)) * viewingConditions.nc * viewingConditions.ncb * Math.sqrt(a * a + b * b) / (u + .305), alpha = Math.pow(t, .9) * Math.pow(1.64 - Math.pow(.29, viewingConditions.n), .73), C = alpha * Math.sqrt(J / 100), M = C * viewingConditions.fLRoot, s = 50 * Math.sqrt(alpha * viewingConditions.c / (viewingConditions.aw + 4)), jstar = (1 + 100 * .007) * J / (1 + .007 * J), mstar = Math.log(1 + .0228 * M) / .0228, astar = mstar * Math.cos(hueRadians), bstar = mstar * Math.sin(hueRadians);\n    return new Cam16(hue, C, J, Q, M, s, jstar, astar, bstar);\n  }\n  xyzInViewingConditions(viewingConditions) {\n    const alpha = 0 === this.chroma || 0 === this.j ? 0 : this.chroma / Math.sqrt(this.j / 100), t = Math.pow(alpha / Math.pow(1.64 - Math.pow(.29, viewingConditions.n), .73), 1 / .9), hRad = this.hue * Math.PI / 180, eHue = .25 * (Math.cos(hRad + 2) + 3.8), ac = viewingConditions.aw * Math.pow(this.j / 100, 1 / viewingConditions.c / viewingConditions.z), p1 = eHue * (5e4 / 13) * viewingConditions.nc * viewingConditions.ncb, p2 = ac / viewingConditions.nbb, hSin = Math.sin(hRad), hCos = Math.cos(hRad), gamma = 23 * (p2 + .305) * t / (23 * p1 + 11 * t * hCos + 108 * t * hSin), a = gamma * hCos, b = gamma * hSin, rA = (460 * p2 + 451 * a + 288 * b) / 1403, gA = (460 * p2 - 891 * a - 261 * b) / 1403, bA = (460 * p2 - 220 * a - 6300 * b) / 1403, rCBase = Math.max(0, 27.13 * Math.abs(rA) / (400 - Math.abs(rA))), rC = signum(rA) * (100 / viewingConditions.fl) * Math.pow(rCBase, 1 / .42), gCBase = Math.max(0, 27.13 * Math.abs(gA) / (400 - Math.abs(gA))), gC = signum(gA) * (100 / viewingConditions.fl) * Math.pow(gCBase, 1 / .42), bCBase = Math.max(0, 27.13 * Math.abs(bA) / (400 - Math.abs(bA))), bC = signum(bA) * (100 / viewingConditions.fl) * Math.pow(bCBase, 1 / .42), rF = rC / viewingConditions.rgbD[0], gF = gC / viewingConditions.rgbD[1], bF = bC / viewingConditions.rgbD[2];\n    return [ 1.86206786 * rF - 1.01125463 * gF + .14918677 * bF, .38752654 * rF + .62144744 * gF - .00897398 * bF, -.0158415 * rF - .03412294 * gF + 1.04996444 * bF ];\n  }\n}\n\nclass HctSolver {\n  static sanitizeRadians(angle) {\n    return (angle + 8 * Math.PI) % (2 * Math.PI);\n  }\n  static trueDelinearized(rgbComponent) {\n    const normalized = rgbComponent / 100;\n    let delinearized = 0;\n    return delinearized = normalized <= .0031308 ? 12.92 * normalized : 1.055 * Math.pow(normalized, 1 / 2.4) - .055, \n    255 * delinearized;\n  }\n  static chromaticAdaptation(component) {\n    const af = Math.pow(Math.abs(component), .42);\n    return 400 * signum(component) * af / (af + 27.13);\n  }\n  static hueOf(linrgb) {\n    const scaledDiscount = matrixMultiply(linrgb, HctSolver.SCALED_DISCOUNT_FROM_LINRGB), rA = HctSolver.chromaticAdaptation(scaledDiscount[0]), gA = HctSolver.chromaticAdaptation(scaledDiscount[1]), bA = HctSolver.chromaticAdaptation(scaledDiscount[2]), a = (11 * rA + -12 * gA + bA) / 11, b = (rA + gA - 2 * bA) / 9;\n    return Math.atan2(b, a);\n  }\n  static areInCyclicOrder(a, b, c) {\n    return HctSolver.sanitizeRadians(b - a) < HctSolver.sanitizeRadians(c - a);\n  }\n  static intercept(source, mid, target) {\n    return (mid - source) / (target - source);\n  }\n  static lerpPoint(source, t, target) {\n    return [ source[0] + (target[0] - source[0]) * t, source[1] + (target[1] - source[1]) * t, source[2] + (target[2] - source[2]) * t ];\n  }\n  static setCoordinate(source, coordinate, target, axis) {\n    const t = HctSolver.intercept(source[axis], coordinate, target[axis]);\n    return HctSolver.lerpPoint(source, t, target);\n  }\n  static isBounded(x) {\n    return 0 <= x && x <= 100;\n  }\n  static nthVertex(y, n) {\n    const kR = HctSolver.Y_FROM_LINRGB[0], kG = HctSolver.Y_FROM_LINRGB[1], kB = HctSolver.Y_FROM_LINRGB[2], coordA = n % 4 <= 1 ? 0 : 100, coordB = n % 2 == 0 ? 0 : 100;\n    if (n < 4) {\n      const g = coordA, b = coordB, r = (y - g * kG - b * kB) / kR;\n      return HctSolver.isBounded(r) ? [ r, g, b ] : [ -1, -1, -1 ];\n    }\n    if (n < 8) {\n      const b = coordA, r = coordB, g = (y - r * kR - b * kB) / kG;\n      return HctSolver.isBounded(g) ? [ r, g, b ] : [ -1, -1, -1 ];\n    }\n    {\n      const r = coordA, g = coordB, b = (y - r * kR - g * kG) / kB;\n      return HctSolver.isBounded(b) ? [ r, g, b ] : [ -1, -1, -1 ];\n    }\n  }\n  static bisectToSegment(y, targetHue) {\n    let left = [ -1, -1, -1 ], right = left, leftHue = 0, rightHue = 0, initialized = !1, uncut = !0;\n    for (let n = 0; n < 12; n++) {\n      const mid = HctSolver.nthVertex(y, n);\n      if (mid[0] < 0) continue;\n      const midHue = HctSolver.hueOf(mid);\n      initialized ? (uncut || HctSolver.areInCyclicOrder(leftHue, midHue, rightHue)) && (uncut = !1, \n      HctSolver.areInCyclicOrder(leftHue, targetHue, midHue) ? (right = mid, rightHue = midHue) : (left = mid, \n      leftHue = midHue)) : (left = mid, right = mid, leftHue = midHue, rightHue = midHue, \n      initialized = !0);\n    }\n    return [ left, right ];\n  }\n  static midpoint(a, b) {\n    return [ (a[0] + b[0]) / 2, (a[1] + b[1]) / 2, (a[2] + b[2]) / 2 ];\n  }\n  static criticalPlaneBelow(x) {\n    return Math.floor(x - .5);\n  }\n  static criticalPlaneAbove(x) {\n    return Math.ceil(x - .5);\n  }\n  static bisectToLimit(y, targetHue) {\n    const segment = HctSolver.bisectToSegment(y, targetHue);\n    let left = segment[0], leftHue = HctSolver.hueOf(left), right = segment[1];\n    for (let axis = 0; axis < 3; axis++) if (left[axis] !== right[axis]) {\n      let lPlane = -1, rPlane = 255;\n      left[axis] < right[axis] ? (lPlane = HctSolver.criticalPlaneBelow(HctSolver.trueDelinearized(left[axis])), \n      rPlane = HctSolver.criticalPlaneAbove(HctSolver.trueDelinearized(right[axis]))) : (lPlane = HctSolver.criticalPlaneAbove(HctSolver.trueDelinearized(left[axis])), \n      rPlane = HctSolver.criticalPlaneBelow(HctSolver.trueDelinearized(right[axis])));\n      for (let i = 0; i < 8 && !(Math.abs(rPlane - lPlane) <= 1); i++) {\n        const mPlane = Math.floor((lPlane + rPlane) / 2), midPlaneCoordinate = HctSolver.CRITICAL_PLANES[mPlane], mid = HctSolver.setCoordinate(left, midPlaneCoordinate, right, axis), midHue = HctSolver.hueOf(mid);\n        HctSolver.areInCyclicOrder(leftHue, targetHue, midHue) ? (right = mid, rPlane = mPlane) : (left = mid, \n        leftHue = midHue, lPlane = mPlane);\n      }\n    }\n    return HctSolver.midpoint(left, right);\n  }\n  static inverseChromaticAdaptation(adapted) {\n    const adaptedAbs = Math.abs(adapted), base = Math.max(0, 27.13 * adaptedAbs / (400 - adaptedAbs));\n    return signum(adapted) * Math.pow(base, 1 / .42);\n  }\n  static findResultByJ(hueRadians, chroma, y) {\n    let j = 11 * Math.sqrt(y);\n    const viewingConditions = ViewingConditions.DEFAULT, tInnerCoeff = 1 / Math.pow(1.64 - Math.pow(.29, viewingConditions.n), .73), p1 = .25 * (Math.cos(hueRadians + 2) + 3.8) * (5e4 / 13) * viewingConditions.nc * viewingConditions.ncb, hSin = Math.sin(hueRadians), hCos = Math.cos(hueRadians);\n    for (let iterationRound = 0; iterationRound < 5; iterationRound++) {\n      const jNormalized = j / 100, alpha = 0 === chroma || 0 === j ? 0 : chroma / Math.sqrt(jNormalized), t = Math.pow(alpha * tInnerCoeff, 1 / .9), p2 = viewingConditions.aw * Math.pow(jNormalized, 1 / viewingConditions.c / viewingConditions.z) / viewingConditions.nbb, gamma = 23 * (p2 + .305) * t / (23 * p1 + 11 * t * hCos + 108 * t * hSin), a = gamma * hCos, b = gamma * hSin, rA = (460 * p2 + 451 * a + 288 * b) / 1403, gA = (460 * p2 - 891 * a - 261 * b) / 1403, bA = (460 * p2 - 220 * a - 6300 * b) / 1403, linrgb = matrixMultiply([ HctSolver.inverseChromaticAdaptation(rA), HctSolver.inverseChromaticAdaptation(gA), HctSolver.inverseChromaticAdaptation(bA) ], HctSolver.LINRGB_FROM_SCALED_DISCOUNT);\n      if (linrgb[0] < 0 || linrgb[1] < 0 || linrgb[2] < 0) return 0;\n      const kR = HctSolver.Y_FROM_LINRGB[0], kG = HctSolver.Y_FROM_LINRGB[1], kB = HctSolver.Y_FROM_LINRGB[2], fnj = kR * linrgb[0] + kG * linrgb[1] + kB * linrgb[2];\n      if (fnj <= 0) return 0;\n      if (4 === iterationRound || Math.abs(fnj - y) < .002) return linrgb[0] > 100.01 || linrgb[1] > 100.01 || linrgb[2] > 100.01 ? 0 : argbFromLinrgb(linrgb);\n      j -= (fnj - y) * j / (2 * fnj);\n    }\n    return 0;\n  }\n  static solveToInt(hueDegrees, chroma, lstar) {\n    if (chroma < 1e-4 || lstar < 1e-4 || lstar > 99.9999) return argbFromLstar(lstar);\n    const hueRadians = (hueDegrees = sanitizeDegreesDouble(hueDegrees)) / 180 * Math.PI, y = yFromLstar(lstar), exactAnswer = HctSolver.findResultByJ(hueRadians, chroma, y);\n    if (0 !== exactAnswer) return exactAnswer;\n    return argbFromLinrgb(HctSolver.bisectToLimit(y, hueRadians));\n  }\n  static solveToCam(hueDegrees, chroma, lstar) {\n    return Cam16.fromInt(HctSolver.solveToInt(hueDegrees, chroma, lstar));\n  }\n}\n\nHctSolver.SCALED_DISCOUNT_FROM_LINRGB = [ [ .001200833568784504, .002389694492170889, .0002795742885861124 ], [ .0005891086651375999, .0029785502573438758, .0003270666104008398 ], [ .00010146692491640572, .0005364214359186694, .0032979401770712076 ] ], \nHctSolver.LINRGB_FROM_SCALED_DISCOUNT = [ [ 1373.2198709594231, -1100.4251190754821, -7.278681089101213 ], [ -271.815969077903, 559.6580465940733, -32.46047482791194 ], [ 1.9622899599665666, -57.173814538844006, 308.7233197812385 ] ], \nHctSolver.Y_FROM_LINRGB = [ .2126, .7152, .0722 ], HctSolver.CRITICAL_PLANES = [ .015176349177441876, .045529047532325624, .07588174588720938, .10623444424209313, .13658714259697685, .16693984095186062, .19729253930674434, .2276452376616281, .2579979360165119, .28835063437139563, .3188300904430532, .350925934958123, .3848314933096426, .42057480301049466, .458183274052838, .4976837250274023, .5391024159806381, .5824650784040898, .6277969426914107, .6751227633498623, .7244668422128921, .775853049866786, .829304845476233, .8848452951698498, .942497089126609, 1.0022825574869039, 1.0642236851973577, 1.1283421258858297, 1.1946592148522128, 1.2631959812511864, 1.3339731595349034, 1.407011200216447, 1.4823302800086415, 1.5599503113873272, 1.6398909516233677, 1.7221716113234105, 1.8068114625156377, 1.8938294463134073, 1.9832442801866852, 2.075074464868551, 2.1693382909216234, 2.2660538449872063, 2.36523901573795, 2.4669114995532007, 2.5710888059345764, 2.6777882626779785, 2.7870270208169257, 2.898822059350997, 3.0131901897720907, 3.1301480604002863, 3.2497121605402226, 3.3718988244681087, 3.4967242352587946, 3.624204428461639, 3.754355295633311, 3.887192587735158, 4.022731918402185, 4.160988767090289, 4.301978482107941, 4.445716283538092, 4.592217266055746, 4.741496401646282, 4.893568542229298, 5.048448422192488, 5.20615066083972, 5.3666897647573375, 5.5300801301023865, 5.696336044816294, 5.865471690767354, 6.037501145825082, 6.212438385869475, 6.390297286737924, 6.571091626112461, 6.7548350853498045, 6.941541251256611, 7.131223617812143, 7.323895587840543, 7.5195704746346665, 7.7182615035334345, 7.919981813454504, 8.124744458384042, 8.332562408825165, 8.543448553206703, 8.757415699253682, 8.974476575321063, 9.194643831691977, 9.417930041841839, 9.644347703669503, 9.873909240696694, 10.106627003236781, 10.342513269534024, 10.58158024687427, 10.8238400726681, 11.069304815507364, 11.317986476196008, 11.569896988756009, 11.825048221409341, 12.083451977536606, 12.345119996613247, 12.610063955123938, 12.878295467455942, 13.149826086772048, 13.42466730586372, 13.702830557985108, 13.984327217668513, 14.269168601521828, 14.55736596900856, 14.848930523210871, 15.143873411576273, 15.44220572664832, 15.743938506781891, 16.04908273684337, 16.35764934889634, 16.66964922287304, 16.985093187232053, 17.30399201960269, 17.62635644741625, 17.95219714852476, 18.281524751807332, 18.614349837764564, 18.95068293910138, 19.290534541298456, 19.633915083172692, 19.98083495742689, 20.331304511189067, 20.685334046541502, 21.042933821039977, 21.404114048223256, 21.76888489811322, 22.137256497705877, 22.50923893145328, 22.884842241736916, 23.264076429332462, 23.6469514538663, 24.033477234264016, 24.42366364919083, 24.817520537484558, 25.21505769858089, 25.61628489293138, 26.021211842414342, 26.429848230738664, 26.842203703840827, 27.258287870275353, 27.678110301598522, 28.10168053274597, 28.529008062403893, 28.96010235337422, 29.39497283293396, 29.83362889318845, 30.276079891419332, 30.722335150426627, 31.172403958865512, 31.62629557157785, 32.08401920991837, 32.54558406207592, 33.010999283389665, 33.4802739966603, 33.953417292456834, 34.430438229418264, 34.911345834551085, 35.39614910352207, 35.88485700094671, 36.37747846067349, 36.87402238606382, 37.37449765026789, 37.87891309649659, 38.38727753828926, 38.89959975977785, 39.41588851594697, 39.93615253289054, 40.460400508064545, 40.98864111053629, 41.520882981230194, 42.05713473317016, 42.597404951718396, 43.141702194811224, 43.6900349931913, 44.24241185063697, 44.798841244188324, 45.35933162437017, 45.92389141541209, 46.49252901546552, 47.065252796817916, 47.64207110610409, 48.22299226451468, 48.808024568002054, 49.3971762874833, 49.9904556690408, 50.587870934119984, 51.189430279724725, 51.79514187861014, 52.40501387947288, 53.0190544071392, 53.637271562750364, 54.259673423945976, 54.88626804504493, 55.517063457223934, 56.15206766869424, 56.79128866487574, 57.43473440856916, 58.08241284012621, 58.734331877617365, 59.39049941699807, 60.05092333227251, 60.715611475655585, 61.38457167773311, 62.057811747619894, 62.7353394731159, 63.417162620860914, 64.10328893648692, 64.79372614476921, 65.48848194977529, 66.18756403501224, 66.89098006357258, 67.59873767827808, 68.31084450182222, 69.02730813691093, 69.74813616640164, 70.47333615344107, 71.20291564160104, 71.93688215501312, 72.67524319850172, 73.41800625771542, 74.16517879925733, 74.9167682708136, 75.67278210128072, 76.43322770089146, 77.1981124613393, 77.96744375590167, 78.74122893956174, 79.51947534912904, 80.30219030335869, 81.08938110306934, 81.88105503125999, 82.67721935322541, 83.4778813166706, 84.28304815182372, 85.09272707154808, 85.90692527145302, 86.72564993000343, 87.54890820862819, 88.3767072518277, 89.2090541872801, 90.04595612594655, 90.88742016217518, 91.73345337380438, 92.58406282226491, 93.43925555268066, 94.29903859396902, 95.16341895893969, 96.03240364439274, 96.9059996312159, 97.78421388448044, 98.6670533535366, 99.55452497210776 ];\n\nclass Hct {\n  static from(hue, chroma, tone) {\n    return new Hct(HctSolver.solveToInt(hue, chroma, tone));\n  }\n  static fromInt(argb) {\n    return new Hct(argb);\n  }\n  toInt() {\n    return this.argb;\n  }\n  get hue() {\n    return this.internalHue;\n  }\n  set hue(newHue) {\n    this.setInternalState(HctSolver.solveToInt(newHue, this.internalChroma, this.internalTone));\n  }\n  get chroma() {\n    return this.internalChroma;\n  }\n  set chroma(newChroma) {\n    this.setInternalState(HctSolver.solveToInt(this.internalHue, newChroma, this.internalTone));\n  }\n  get tone() {\n    return this.internalTone;\n  }\n  set tone(newTone) {\n    this.setInternalState(HctSolver.solveToInt(this.internalHue, this.internalChroma, newTone));\n  }\n  constructor(argb) {\n    this.argb = argb;\n    const cam = Cam16.fromInt(argb);\n    this.internalHue = cam.hue, this.internalChroma = cam.chroma, this.internalTone = lstarFromArgb(argb), \n    this.argb = argb;\n  }\n  setInternalState(argb) {\n    const cam = Cam16.fromInt(argb);\n    this.internalHue = cam.hue, this.internalChroma = cam.chroma, this.internalTone = lstarFromArgb(argb), \n    this.argb = argb;\n  }\n  inViewingConditions(vc) {\n    const viewedInVc = Cam16.fromInt(this.toInt()).xyzInViewingConditions(vc), recastInVc = Cam16.fromXyzInViewingConditions(viewedInVc[0], viewedInVc[1], viewedInVc[2], ViewingConditions.make());\n    return Hct.from(recastInVc.hue, recastInVc.chroma, lstarFromY(viewedInVc[1]));\n  }\n}\n\nclass Blend {\n  static harmonize(designColor, sourceColor) {\n    const fromHct = Hct.fromInt(designColor), toHct = Hct.fromInt(sourceColor), differenceDegrees$1 = differenceDegrees(fromHct.hue, toHct.hue), rotationDegrees = Math.min(.5 * differenceDegrees$1, 15), outputHue = sanitizeDegreesDouble(fromHct.hue + rotationDegrees * rotationDirection(fromHct.hue, toHct.hue));\n    return Hct.from(outputHue, fromHct.chroma, fromHct.tone).toInt();\n  }\n  static hctHue(from, to, amount) {\n    const ucs = Blend.cam16Ucs(from, to, amount), ucsCam = Cam16.fromInt(ucs), fromCam = Cam16.fromInt(from);\n    return Hct.from(ucsCam.hue, fromCam.chroma, lstarFromArgb(from)).toInt();\n  }\n  static cam16Ucs(from, to, amount) {\n    const fromCam = Cam16.fromInt(from), toCam = Cam16.fromInt(to), fromJ = fromCam.jstar, fromA = fromCam.astar, fromB = fromCam.bstar, jstar = fromJ + (toCam.jstar - fromJ) * amount, astar = fromA + (toCam.astar - fromA) * amount, bstar = fromB + (toCam.bstar - fromB) * amount;\n    return Cam16.fromUcs(jstar, astar, bstar).toInt();\n  }\n}\n\nclass Contrast {\n  static ratioOfTones(toneA, toneB) {\n    return toneA = clampDouble(0, 100, toneA), toneB = clampDouble(0, 100, toneB), Contrast.ratioOfYs(yFromLstar(toneA), yFromLstar(toneB));\n  }\n  static ratioOfYs(y1, y2) {\n    const lighter = y1 > y2 ? y1 : y2;\n    return (lighter + 5) / ((lighter === y2 ? y1 : y2) + 5);\n  }\n  static lighter(tone, ratio) {\n    if (tone < 0 || tone > 100) return -1;\n    const darkY = yFromLstar(tone), lightY = ratio * (darkY + 5) - 5, realContrast = Contrast.ratioOfYs(lightY, darkY), delta = Math.abs(realContrast - ratio);\n    if (realContrast < ratio && delta > .04) return -1;\n    const returnValue = lstarFromY(lightY) + .4;\n    return returnValue < 0 || returnValue > 100 ? -1 : returnValue;\n  }\n  static darker(tone, ratio) {\n    if (tone < 0 || tone > 100) return -1;\n    const lightY = yFromLstar(tone), darkY = (lightY + 5) / ratio - 5, realContrast = Contrast.ratioOfYs(lightY, darkY), delta = Math.abs(realContrast - ratio);\n    if (realContrast < ratio && delta > .04) return -1;\n    const returnValue = lstarFromY(darkY) - .4;\n    return returnValue < 0 || returnValue > 100 ? -1 : returnValue;\n  }\n  static lighterUnsafe(tone, ratio) {\n    const lighterSafe = Contrast.lighter(tone, ratio);\n    return lighterSafe < 0 ? 100 : lighterSafe;\n  }\n  static darkerUnsafe(tone, ratio) {\n    const darkerSafe = Contrast.darker(tone, ratio);\n    return darkerSafe < 0 ? 0 : darkerSafe;\n  }\n}\n\nclass DislikeAnalyzer {\n  static isDisliked(hct) {\n    const huePasses = Math.round(hct.hue) >= 90 && Math.round(hct.hue) <= 111, chromaPasses = Math.round(hct.chroma) > 16, tonePasses = Math.round(hct.tone) < 65;\n    return huePasses && chromaPasses && tonePasses;\n  }\n  static fixIfDisliked(hct) {\n    return DislikeAnalyzer.isDisliked(hct) ? Hct.from(hct.hue, hct.chroma, 70) : hct;\n  }\n}\n\nclass DynamicColor {\n  static fromPalette(args) {\n    return new DynamicColor(args.name ?? \"\", args.palette, args.tone, args.isBackground ?? !1, args.background, args.secondBackground, args.contrastCurve, args.toneDeltaPair);\n  }\n  constructor(name, palette, tone, isBackground, background, secondBackground, contrastCurve, toneDeltaPair) {\n    if (this.name = name, this.palette = palette, this.tone = tone, this.isBackground = isBackground, \n    this.background = background, this.secondBackground = secondBackground, this.contrastCurve = contrastCurve, \n    this.toneDeltaPair = toneDeltaPair, this.hctCache = new Map, !background && secondBackground) throw new Error(`Color ${name} has secondBackgrounddefined, but background is not defined.`);\n    if (!background && contrastCurve) throw new Error(`Color ${name} has contrastCurvedefined, but background is not defined.`);\n    if (background && !contrastCurve) throw new Error(`Color ${name} has backgrounddefined, but contrastCurve is not defined.`);\n  }\n  getArgb(scheme) {\n    return this.getHct(scheme).toInt();\n  }\n  getHct(scheme) {\n    const cachedAnswer = this.hctCache.get(scheme);\n    if (null != cachedAnswer) return cachedAnswer;\n    const tone = this.getTone(scheme), answer = this.palette(scheme).getHct(tone);\n    return this.hctCache.size > 4 && this.hctCache.clear(), this.hctCache.set(scheme, answer), \n    answer;\n  }\n  getTone(scheme) {\n    const decreasingContrast = scheme.contrastLevel < 0;\n    if (this.toneDeltaPair) {\n      const toneDeltaPair = this.toneDeltaPair(scheme), roleA = toneDeltaPair.roleA, roleB = toneDeltaPair.roleB, delta = toneDeltaPair.delta, polarity = toneDeltaPair.polarity, stayTogether = toneDeltaPair.stayTogether, bgTone = this.background(scheme).getTone(scheme), aIsNearer = \"nearer\" === polarity || \"lighter\" === polarity && !scheme.isDark || \"darker\" === polarity && scheme.isDark, nearer = aIsNearer ? roleA : roleB, farther = aIsNearer ? roleB : roleA, amNearer = this.name === nearer.name, expansionDir = scheme.isDark ? 1 : -1, nContrast = nearer.contrastCurve.getContrast(scheme.contrastLevel), fContrast = farther.contrastCurve.getContrast(scheme.contrastLevel), nInitialTone = nearer.tone(scheme);\n      let nTone = Contrast.ratioOfTones(bgTone, nInitialTone) >= nContrast ? nInitialTone : DynamicColor.foregroundTone(bgTone, nContrast);\n      const fInitialTone = farther.tone(scheme);\n      let fTone = Contrast.ratioOfTones(bgTone, fInitialTone) >= fContrast ? fInitialTone : DynamicColor.foregroundTone(bgTone, fContrast);\n      return decreasingContrast && (nTone = DynamicColor.foregroundTone(bgTone, nContrast), \n      fTone = DynamicColor.foregroundTone(bgTone, fContrast)), (fTone - nTone) * expansionDir >= delta || (fTone = clampDouble(0, 100, nTone + delta * expansionDir), \n      (fTone - nTone) * expansionDir >= delta || (nTone = clampDouble(0, 100, fTone - delta * expansionDir))), \n      50 <= nTone && nTone < 60 ? expansionDir > 0 ? (nTone = 60, fTone = Math.max(fTone, nTone + delta * expansionDir)) : (nTone = 49, \n      fTone = Math.min(fTone, nTone + delta * expansionDir)) : 50 <= fTone && fTone < 60 && (stayTogether ? expansionDir > 0 ? (nTone = 60, \n      fTone = Math.max(fTone, nTone + delta * expansionDir)) : (nTone = 49, fTone = Math.min(fTone, nTone + delta * expansionDir)) : fTone = expansionDir > 0 ? 60 : 49), \n      amNearer ? nTone : fTone;\n    }\n    {\n      let answer = this.tone(scheme);\n      if (null == this.background) return answer;\n      const bgTone = this.background(scheme).getTone(scheme), desiredRatio = this.contrastCurve.getContrast(scheme.contrastLevel);\n      if (Contrast.ratioOfTones(bgTone, answer) >= desiredRatio || (answer = DynamicColor.foregroundTone(bgTone, desiredRatio)), \n      decreasingContrast && (answer = DynamicColor.foregroundTone(bgTone, desiredRatio)), \n      this.isBackground && 50 <= answer && answer < 60 && (answer = Contrast.ratioOfTones(49, bgTone) >= desiredRatio ? 49 : 60), \n      this.secondBackground) {\n        const [bg1, bg2] = [ this.background, this.secondBackground ], [bgTone1, bgTone2] = [ bg1(scheme).getTone(scheme), bg2(scheme).getTone(scheme) ], [upper, lower] = [ Math.max(bgTone1, bgTone2), Math.min(bgTone1, bgTone2) ];\n        if (Contrast.ratioOfTones(upper, answer) >= desiredRatio && Contrast.ratioOfTones(lower, answer) >= desiredRatio) return answer;\n        const lightOption = Contrast.lighter(upper, desiredRatio), darkOption = Contrast.darker(lower, desiredRatio), availables = [];\n        -1 !== lightOption && availables.push(lightOption), -1 !== darkOption && availables.push(darkOption);\n        return DynamicColor.tonePrefersLightForeground(bgTone1) || DynamicColor.tonePrefersLightForeground(bgTone2) ? lightOption < 0 ? 100 : lightOption : 1 === availables.length ? availables[0] : darkOption < 0 ? 0 : darkOption;\n      }\n      return answer;\n    }\n  }\n  static foregroundTone(bgTone, ratio) {\n    const lighterTone = Contrast.lighterUnsafe(bgTone, ratio), darkerTone = Contrast.darkerUnsafe(bgTone, ratio), lighterRatio = Contrast.ratioOfTones(lighterTone, bgTone), darkerRatio = Contrast.ratioOfTones(darkerTone, bgTone);\n    if (DynamicColor.tonePrefersLightForeground(bgTone)) {\n      const negligibleDifference = Math.abs(lighterRatio - darkerRatio) < .1 && lighterRatio < ratio && darkerRatio < ratio;\n      return lighterRatio >= ratio || lighterRatio >= darkerRatio || negligibleDifference ? lighterTone : darkerTone;\n    }\n    return darkerRatio >= ratio || darkerRatio >= lighterRatio ? darkerTone : lighterTone;\n  }\n  static tonePrefersLightForeground(tone) {\n    return Math.round(tone) < 60;\n  }\n  static toneAllowsLightForeground(tone) {\n    return Math.round(tone) <= 49;\n  }\n  static enableLightForeground(tone) {\n    return DynamicColor.tonePrefersLightForeground(tone) && !DynamicColor.toneAllowsLightForeground(tone) ? 49 : tone;\n  }\n}\n\nvar Variant;\n\n!function(Variant) {\n  Variant[Variant.MONOCHROME = 0] = \"MONOCHROME\", Variant[Variant.NEUTRAL = 1] = \"NEUTRAL\", \n  Variant[Variant.TONAL_SPOT = 2] = \"TONAL_SPOT\", Variant[Variant.VIBRANT = 3] = \"VIBRANT\", \n  Variant[Variant.EXPRESSIVE = 4] = \"EXPRESSIVE\", Variant[Variant.FIDELITY = 5] = \"FIDELITY\", \n  Variant[Variant.CONTENT = 6] = \"CONTENT\", Variant[Variant.RAINBOW = 7] = \"RAINBOW\", \n  Variant[Variant.FRUIT_SALAD = 8] = \"FRUIT_SALAD\";\n}(Variant || (Variant = {}));\n\nclass ContrastCurve {\n  constructor(low, normal, medium, high) {\n    this.low = low, this.normal = normal, this.medium = medium, this.high = high;\n  }\n  getContrast(contrastLevel) {\n    return contrastLevel <= -1 ? this.low : contrastLevel < 0 ? lerp(this.low, this.normal, (contrastLevel - -1) / 1) : contrastLevel < .5 ? lerp(this.normal, this.medium, (contrastLevel - 0) / .5) : contrastLevel < 1 ? lerp(this.medium, this.high, (contrastLevel - .5) / .5) : this.high;\n  }\n}\n\nclass ToneDeltaPair {\n  constructor(roleA, roleB, delta, polarity, stayTogether) {\n    this.roleA = roleA, this.roleB = roleB, this.delta = delta, this.polarity = polarity, \n    this.stayTogether = stayTogether;\n  }\n}\n\nfunction isFidelity(scheme) {\n  return scheme.variant === Variant.FIDELITY || scheme.variant === Variant.CONTENT;\n}\n\nfunction isMonochrome(scheme) {\n  return scheme.variant === Variant.MONOCHROME;\n}\n\nfunction findDesiredChromaByTone(hue, chroma, tone, byDecreasingTone) {\n  let answer = tone, closestToChroma = Hct.from(hue, chroma, tone);\n  if (closestToChroma.chroma < chroma) {\n    let chromaPeak = closestToChroma.chroma;\n    for (;closestToChroma.chroma < chroma; ) {\n      answer += byDecreasingTone ? -1 : 1;\n      const potentialSolution = Hct.from(hue, chroma, answer);\n      if (chromaPeak > potentialSolution.chroma) break;\n      if (Math.abs(potentialSolution.chroma - chroma) < .4) break;\n      Math.abs(potentialSolution.chroma - chroma) < Math.abs(closestToChroma.chroma - chroma) && (closestToChroma = potentialSolution), \n      chromaPeak = Math.max(chromaPeak, potentialSolution.chroma);\n    }\n  }\n  return answer;\n}\n\nfunction viewingConditionsForAlbers(scheme) {\n  return ViewingConditions.make(void 0, void 0, scheme.isDark ? 30 : 80, void 0, void 0);\n}\n\nfunction performAlbers(prealbers, scheme) {\n  const albersd = prealbers.inViewingConditions(viewingConditionsForAlbers(scheme));\n  return DynamicColor.tonePrefersLightForeground(prealbers.tone) && !DynamicColor.toneAllowsLightForeground(albersd.tone) ? DynamicColor.enableLightForeground(prealbers.tone) : DynamicColor.enableLightForeground(albersd.tone);\n}\n\nclass MaterialDynamicColors {\n  static highestSurface(s) {\n    return s.isDark ? MaterialDynamicColors.surfaceBright : MaterialDynamicColors.surfaceDim;\n  }\n}\n\nMaterialDynamicColors.contentAccentToneDelta = 15, MaterialDynamicColors.primaryPaletteKeyColor = DynamicColor.fromPalette({\n  name: \"primary_palette_key_color\",\n  palette: s => s.primaryPalette,\n  tone: s => s.primaryPalette.keyColor.tone\n}), MaterialDynamicColors.secondaryPaletteKeyColor = DynamicColor.fromPalette({\n  name: \"secondary_palette_key_color\",\n  palette: s => s.secondaryPalette,\n  tone: s => s.secondaryPalette.keyColor.tone\n}), MaterialDynamicColors.tertiaryPaletteKeyColor = DynamicColor.fromPalette({\n  name: \"tertiary_palette_key_color\",\n  palette: s => s.tertiaryPalette,\n  tone: s => s.tertiaryPalette.keyColor.tone\n}), MaterialDynamicColors.neutralPaletteKeyColor = DynamicColor.fromPalette({\n  name: \"neutral_palette_key_color\",\n  palette: s => s.neutralPalette,\n  tone: s => s.neutralPalette.keyColor.tone\n}), MaterialDynamicColors.neutralVariantPaletteKeyColor = DynamicColor.fromPalette({\n  name: \"neutral_variant_palette_key_color\",\n  palette: s => s.neutralVariantPalette,\n  tone: s => s.neutralVariantPalette.keyColor.tone\n}), MaterialDynamicColors.background = DynamicColor.fromPalette({\n  name: \"background\",\n  palette: s => s.neutralPalette,\n  tone: s => s.isDark ? 6 : 98,\n  isBackground: !0\n}), MaterialDynamicColors.onBackground = DynamicColor.fromPalette({\n  name: \"on_background\",\n  palette: s => s.neutralPalette,\n  tone: s => s.isDark ? 90 : 10,\n  background: s => MaterialDynamicColors.background,\n  contrastCurve: new ContrastCurve(3, 3, 4.5, 7)\n}), MaterialDynamicColors.surface = DynamicColor.fromPalette({\n  name: \"surface\",\n  palette: s => s.neutralPalette,\n  tone: s => s.isDark ? 6 : 98,\n  isBackground: !0\n}), MaterialDynamicColors.surfaceDim = DynamicColor.fromPalette({\n  name: \"surface_dim\",\n  palette: s => s.neutralPalette,\n  tone: s => s.isDark ? 6 : 87,\n  isBackground: !0\n}), MaterialDynamicColors.surfaceBright = DynamicColor.fromPalette({\n  name: \"surface_bright\",\n  palette: s => s.neutralPalette,\n  tone: s => s.isDark ? 24 : 98,\n  isBackground: !0\n}), MaterialDynamicColors.surfaceContainerLowest = DynamicColor.fromPalette({\n  name: \"surface_container_lowest\",\n  palette: s => s.neutralPalette,\n  tone: s => s.isDark ? 4 : 100,\n  isBackground: !0\n}), MaterialDynamicColors.surfaceContainerLow = DynamicColor.fromPalette({\n  name: \"surface_container_low\",\n  palette: s => s.neutralPalette,\n  tone: s => s.isDark ? 10 : 96,\n  isBackground: !0\n}), MaterialDynamicColors.surfaceContainer = DynamicColor.fromPalette({\n  name: \"surface_container\",\n  palette: s => s.neutralPalette,\n  tone: s => s.isDark ? 12 : 94,\n  isBackground: !0\n}), MaterialDynamicColors.surfaceContainerHigh = DynamicColor.fromPalette({\n  name: \"surface_container_high\",\n  palette: s => s.neutralPalette,\n  tone: s => s.isDark ? 17 : 92,\n  isBackground: !0\n}), MaterialDynamicColors.surfaceContainerHighest = DynamicColor.fromPalette({\n  name: \"surface_container_highest\",\n  palette: s => s.neutralPalette,\n  tone: s => s.isDark ? 22 : 90,\n  isBackground: !0\n}), MaterialDynamicColors.onSurface = DynamicColor.fromPalette({\n  name: \"on_surface\",\n  palette: s => s.neutralPalette,\n  tone: s => s.isDark ? 90 : 10,\n  background: s => MaterialDynamicColors.highestSurface(s),\n  contrastCurve: new ContrastCurve(4.5, 7, 11, 21)\n}), MaterialDynamicColors.surfaceVariant = DynamicColor.fromPalette({\n  name: \"surface_variant\",\n  palette: s => s.neutralVariantPalette,\n  tone: s => s.isDark ? 30 : 90,\n  isBackground: !0\n}), MaterialDynamicColors.onSurfaceVariant = DynamicColor.fromPalette({\n  name: \"on_surface_variant\",\n  palette: s => s.neutralVariantPalette,\n  tone: s => s.isDark ? 80 : 30,\n  background: s => MaterialDynamicColors.highestSurface(s),\n  contrastCurve: new ContrastCurve(3, 4.5, 7, 11)\n}), MaterialDynamicColors.inverseSurface = DynamicColor.fromPalette({\n  name: \"inverse_surface\",\n  palette: s => s.neutralPalette,\n  tone: s => s.isDark ? 90 : 20\n}), MaterialDynamicColors.inverseOnSurface = DynamicColor.fromPalette({\n  name: \"inverse_on_surface\",\n  palette: s => s.neutralPalette,\n  tone: s => s.isDark ? 20 : 95,\n  background: s => MaterialDynamicColors.inverseSurface,\n  contrastCurve: new ContrastCurve(4.5, 7, 11, 21)\n}), MaterialDynamicColors.outline = DynamicColor.fromPalette({\n  name: \"outline\",\n  palette: s => s.neutralVariantPalette,\n  tone: s => s.isDark ? 60 : 50,\n  background: s => MaterialDynamicColors.highestSurface(s),\n  contrastCurve: new ContrastCurve(1.5, 3, 4.5, 7)\n}), MaterialDynamicColors.outlineVariant = DynamicColor.fromPalette({\n  name: \"outline_variant\",\n  palette: s => s.neutralVariantPalette,\n  tone: s => s.isDark ? 30 : 80,\n  background: s => MaterialDynamicColors.highestSurface(s),\n  contrastCurve: new ContrastCurve(1, 1, 3, 7)\n}), MaterialDynamicColors.shadow = DynamicColor.fromPalette({\n  name: \"shadow\",\n  palette: s => s.neutralPalette,\n  tone: s => 0\n}), MaterialDynamicColors.scrim = DynamicColor.fromPalette({\n  name: \"scrim\",\n  palette: s => s.neutralPalette,\n  tone: s => 0\n}), MaterialDynamicColors.surfaceTint = DynamicColor.fromPalette({\n  name: \"surface_tint\",\n  palette: s => s.primaryPalette,\n  tone: s => s.isDark ? 80 : 40,\n  isBackground: !0\n}), MaterialDynamicColors.primary = DynamicColor.fromPalette({\n  name: \"primary\",\n  palette: s => s.primaryPalette,\n  tone: s => isMonochrome(s) ? s.isDark ? 100 : 0 : s.isDark ? 80 : 40,\n  isBackground: !0,\n  background: s => MaterialDynamicColors.highestSurface(s),\n  contrastCurve: new ContrastCurve(3, 4.5, 7, 11),\n  toneDeltaPair: s => new ToneDeltaPair(MaterialDynamicColors.primaryContainer, MaterialDynamicColors.primary, 15, \"nearer\", !1)\n}), MaterialDynamicColors.onPrimary = DynamicColor.fromPalette({\n  name: \"on_primary\",\n  palette: s => s.primaryPalette,\n  tone: s => isMonochrome(s) ? s.isDark ? 10 : 90 : s.isDark ? 20 : 100,\n  background: s => MaterialDynamicColors.primary,\n  contrastCurve: new ContrastCurve(4.5, 7, 11, 21)\n}), MaterialDynamicColors.primaryContainer = DynamicColor.fromPalette({\n  name: \"primary_container\",\n  palette: s => s.primaryPalette,\n  tone: s => isFidelity(s) ? performAlbers(s.sourceColorHct, s) : isMonochrome(s) ? s.isDark ? 85 : 25 : s.isDark ? 30 : 90,\n  isBackground: !0,\n  background: s => MaterialDynamicColors.highestSurface(s),\n  contrastCurve: new ContrastCurve(1, 1, 3, 7),\n  toneDeltaPair: s => new ToneDeltaPair(MaterialDynamicColors.primaryContainer, MaterialDynamicColors.primary, 15, \"nearer\", !1)\n}), MaterialDynamicColors.onPrimaryContainer = DynamicColor.fromPalette({\n  name: \"on_primary_container\",\n  palette: s => s.primaryPalette,\n  tone: s => isFidelity(s) ? DynamicColor.foregroundTone(MaterialDynamicColors.primaryContainer.tone(s), 4.5) : isMonochrome(s) ? s.isDark ? 0 : 100 : s.isDark ? 90 : 10,\n  background: s => MaterialDynamicColors.primaryContainer,\n  contrastCurve: new ContrastCurve(4.5, 7, 11, 21)\n}), MaterialDynamicColors.inversePrimary = DynamicColor.fromPalette({\n  name: \"inverse_primary\",\n  palette: s => s.primaryPalette,\n  tone: s => s.isDark ? 40 : 80,\n  background: s => MaterialDynamicColors.inverseSurface,\n  contrastCurve: new ContrastCurve(3, 4.5, 7, 11)\n}), MaterialDynamicColors.secondary = DynamicColor.fromPalette({\n  name: \"secondary\",\n  palette: s => s.secondaryPalette,\n  tone: s => s.isDark ? 80 : 40,\n  isBackground: !0,\n  background: s => MaterialDynamicColors.highestSurface(s),\n  contrastCurve: new ContrastCurve(3, 4.5, 7, 11),\n  toneDeltaPair: s => new ToneDeltaPair(MaterialDynamicColors.secondaryContainer, MaterialDynamicColors.secondary, 15, \"nearer\", !1)\n}), MaterialDynamicColors.onSecondary = DynamicColor.fromPalette({\n  name: \"on_secondary\",\n  palette: s => s.secondaryPalette,\n  tone: s => isMonochrome(s) ? s.isDark ? 10 : 100 : s.isDark ? 20 : 100,\n  background: s => MaterialDynamicColors.secondary,\n  contrastCurve: new ContrastCurve(4.5, 7, 11, 21)\n}), MaterialDynamicColors.secondaryContainer = DynamicColor.fromPalette({\n  name: \"secondary_container\",\n  palette: s => s.secondaryPalette,\n  tone: s => {\n    const initialTone = s.isDark ? 30 : 90;\n    if (isMonochrome(s)) return s.isDark ? 30 : 85;\n    if (!isFidelity(s)) return initialTone;\n    let answer = findDesiredChromaByTone(s.secondaryPalette.hue, s.secondaryPalette.chroma, initialTone, !s.isDark);\n    return answer = performAlbers(s.secondaryPalette.getHct(answer), s), answer;\n  },\n  isBackground: !0,\n  background: s => MaterialDynamicColors.highestSurface(s),\n  contrastCurve: new ContrastCurve(1, 1, 3, 7),\n  toneDeltaPair: s => new ToneDeltaPair(MaterialDynamicColors.secondaryContainer, MaterialDynamicColors.secondary, 15, \"nearer\", !1)\n}), MaterialDynamicColors.onSecondaryContainer = DynamicColor.fromPalette({\n  name: \"on_secondary_container\",\n  palette: s => s.secondaryPalette,\n  tone: s => isFidelity(s) ? DynamicColor.foregroundTone(MaterialDynamicColors.secondaryContainer.tone(s), 4.5) : s.isDark ? 90 : 10,\n  background: s => MaterialDynamicColors.secondaryContainer,\n  contrastCurve: new ContrastCurve(4.5, 7, 11, 21)\n}), MaterialDynamicColors.tertiary = DynamicColor.fromPalette({\n  name: \"tertiary\",\n  palette: s => s.tertiaryPalette,\n  tone: s => isMonochrome(s) ? s.isDark ? 90 : 25 : s.isDark ? 80 : 40,\n  isBackground: !0,\n  background: s => MaterialDynamicColors.highestSurface(s),\n  contrastCurve: new ContrastCurve(3, 4.5, 7, 11),\n  toneDeltaPair: s => new ToneDeltaPair(MaterialDynamicColors.tertiaryContainer, MaterialDynamicColors.tertiary, 15, \"nearer\", !1)\n}), MaterialDynamicColors.onTertiary = DynamicColor.fromPalette({\n  name: \"on_tertiary\",\n  palette: s => s.tertiaryPalette,\n  tone: s => isMonochrome(s) ? s.isDark ? 10 : 90 : s.isDark ? 20 : 100,\n  background: s => MaterialDynamicColors.tertiary,\n  contrastCurve: new ContrastCurve(4.5, 7, 11, 21)\n}), MaterialDynamicColors.tertiaryContainer = DynamicColor.fromPalette({\n  name: \"tertiary_container\",\n  palette: s => s.tertiaryPalette,\n  tone: s => {\n    if (isMonochrome(s)) return s.isDark ? 60 : 49;\n    if (!isFidelity(s)) return s.isDark ? 30 : 90;\n    const albersTone = performAlbers(s.tertiaryPalette.getHct(s.sourceColorHct.tone), s), proposedHct = s.tertiaryPalette.getHct(albersTone);\n    return DislikeAnalyzer.fixIfDisliked(proposedHct).tone;\n  },\n  isBackground: !0,\n  background: s => MaterialDynamicColors.highestSurface(s),\n  contrastCurve: new ContrastCurve(1, 1, 3, 7),\n  toneDeltaPair: s => new ToneDeltaPair(MaterialDynamicColors.tertiaryContainer, MaterialDynamicColors.tertiary, 15, \"nearer\", !1)\n}), MaterialDynamicColors.onTertiaryContainer = DynamicColor.fromPalette({\n  name: \"on_tertiary_container\",\n  palette: s => s.tertiaryPalette,\n  tone: s => isMonochrome(s) ? s.isDark ? 0 : 100 : isFidelity(s) ? DynamicColor.foregroundTone(MaterialDynamicColors.tertiaryContainer.tone(s), 4.5) : s.isDark ? 90 : 10,\n  background: s => MaterialDynamicColors.tertiaryContainer,\n  contrastCurve: new ContrastCurve(4.5, 7, 11, 21)\n}), MaterialDynamicColors.error = DynamicColor.fromPalette({\n  name: \"error\",\n  palette: s => s.errorPalette,\n  tone: s => s.isDark ? 80 : 40,\n  isBackground: !0,\n  background: s => MaterialDynamicColors.highestSurface(s),\n  contrastCurve: new ContrastCurve(3, 4.5, 7, 11),\n  toneDeltaPair: s => new ToneDeltaPair(MaterialDynamicColors.errorContainer, MaterialDynamicColors.error, 15, \"nearer\", !1)\n}), MaterialDynamicColors.onError = DynamicColor.fromPalette({\n  name: \"on_error\",\n  palette: s => s.errorPalette,\n  tone: s => s.isDark ? 20 : 100,\n  background: s => MaterialDynamicColors.error,\n  contrastCurve: new ContrastCurve(4.5, 7, 11, 21)\n}), MaterialDynamicColors.errorContainer = DynamicColor.fromPalette({\n  name: \"error_container\",\n  palette: s => s.errorPalette,\n  tone: s => s.isDark ? 30 : 90,\n  isBackground: !0,\n  background: s => MaterialDynamicColors.highestSurface(s),\n  contrastCurve: new ContrastCurve(1, 1, 3, 7),\n  toneDeltaPair: s => new ToneDeltaPair(MaterialDynamicColors.errorContainer, MaterialDynamicColors.error, 15, \"nearer\", !1)\n}), MaterialDynamicColors.onErrorContainer = DynamicColor.fromPalette({\n  name: \"on_error_container\",\n  palette: s => s.errorPalette,\n  tone: s => s.isDark ? 90 : 10,\n  background: s => MaterialDynamicColors.errorContainer,\n  contrastCurve: new ContrastCurve(4.5, 7, 11, 21)\n}), MaterialDynamicColors.primaryFixed = DynamicColor.fromPalette({\n  name: \"primary_fixed\",\n  palette: s => s.primaryPalette,\n  tone: s => isMonochrome(s) ? 40 : 90,\n  isBackground: !0,\n  background: s => MaterialDynamicColors.highestSurface(s),\n  contrastCurve: new ContrastCurve(1, 1, 3, 7),\n  toneDeltaPair: s => new ToneDeltaPair(MaterialDynamicColors.primaryFixed, MaterialDynamicColors.primaryFixedDim, 10, \"lighter\", !0)\n}), MaterialDynamicColors.primaryFixedDim = DynamicColor.fromPalette({\n  name: \"primary_fixed_dim\",\n  palette: s => s.primaryPalette,\n  tone: s => isMonochrome(s) ? 30 : 80,\n  isBackground: !0,\n  background: s => MaterialDynamicColors.highestSurface(s),\n  contrastCurve: new ContrastCurve(1, 1, 3, 7),\n  toneDeltaPair: s => new ToneDeltaPair(MaterialDynamicColors.primaryFixed, MaterialDynamicColors.primaryFixedDim, 10, \"lighter\", !0)\n}), MaterialDynamicColors.onPrimaryFixed = DynamicColor.fromPalette({\n  name: \"on_primary_fixed\",\n  palette: s => s.primaryPalette,\n  tone: s => isMonochrome(s) ? 100 : 10,\n  background: s => MaterialDynamicColors.primaryFixedDim,\n  secondBackground: s => MaterialDynamicColors.primaryFixed,\n  contrastCurve: new ContrastCurve(4.5, 7, 11, 21)\n}), MaterialDynamicColors.onPrimaryFixedVariant = DynamicColor.fromPalette({\n  name: \"on_primary_fixed_variant\",\n  palette: s => s.primaryPalette,\n  tone: s => isMonochrome(s) ? 90 : 30,\n  background: s => MaterialDynamicColors.primaryFixedDim,\n  secondBackground: s => MaterialDynamicColors.primaryFixed,\n  contrastCurve: new ContrastCurve(3, 4.5, 7, 11)\n}), MaterialDynamicColors.secondaryFixed = DynamicColor.fromPalette({\n  name: \"secondary_fixed\",\n  palette: s => s.secondaryPalette,\n  tone: s => isMonochrome(s) ? 80 : 90,\n  isBackground: !0,\n  background: s => MaterialDynamicColors.highestSurface(s),\n  contrastCurve: new ContrastCurve(1, 1, 3, 7),\n  toneDeltaPair: s => new ToneDeltaPair(MaterialDynamicColors.secondaryFixed, MaterialDynamicColors.secondaryFixedDim, 10, \"lighter\", !0)\n}), MaterialDynamicColors.secondaryFixedDim = DynamicColor.fromPalette({\n  name: \"secondary_fixed_dim\",\n  palette: s => s.secondaryPalette,\n  tone: s => isMonochrome(s) ? 70 : 80,\n  isBackground: !0,\n  background: s => MaterialDynamicColors.highestSurface(s),\n  contrastCurve: new ContrastCurve(1, 1, 3, 7),\n  toneDeltaPair: s => new ToneDeltaPair(MaterialDynamicColors.secondaryFixed, MaterialDynamicColors.secondaryFixedDim, 10, \"lighter\", !0)\n}), MaterialDynamicColors.onSecondaryFixed = DynamicColor.fromPalette({\n  name: \"on_secondary_fixed\",\n  palette: s => s.secondaryPalette,\n  tone: s => 10,\n  background: s => MaterialDynamicColors.secondaryFixedDim,\n  secondBackground: s => MaterialDynamicColors.secondaryFixed,\n  contrastCurve: new ContrastCurve(4.5, 7, 11, 21)\n}), MaterialDynamicColors.onSecondaryFixedVariant = DynamicColor.fromPalette({\n  name: \"on_secondary_fixed_variant\",\n  palette: s => s.secondaryPalette,\n  tone: s => isMonochrome(s) ? 25 : 30,\n  background: s => MaterialDynamicColors.secondaryFixedDim,\n  secondBackground: s => MaterialDynamicColors.secondaryFixed,\n  contrastCurve: new ContrastCurve(3, 4.5, 7, 11)\n}), MaterialDynamicColors.tertiaryFixed = DynamicColor.fromPalette({\n  name: \"tertiary_fixed\",\n  palette: s => s.tertiaryPalette,\n  tone: s => isMonochrome(s) ? 40 : 90,\n  isBackground: !0,\n  background: s => MaterialDynamicColors.highestSurface(s),\n  contrastCurve: new ContrastCurve(1, 1, 3, 7),\n  toneDeltaPair: s => new ToneDeltaPair(MaterialDynamicColors.tertiaryFixed, MaterialDynamicColors.tertiaryFixedDim, 10, \"lighter\", !0)\n}), MaterialDynamicColors.tertiaryFixedDim = DynamicColor.fromPalette({\n  name: \"tertiary_fixed_dim\",\n  palette: s => s.tertiaryPalette,\n  tone: s => isMonochrome(s) ? 30 : 80,\n  isBackground: !0,\n  background: s => MaterialDynamicColors.highestSurface(s),\n  contrastCurve: new ContrastCurve(1, 1, 3, 7),\n  toneDeltaPair: s => new ToneDeltaPair(MaterialDynamicColors.tertiaryFixed, MaterialDynamicColors.tertiaryFixedDim, 10, \"lighter\", !0)\n}), MaterialDynamicColors.onTertiaryFixed = DynamicColor.fromPalette({\n  name: \"on_tertiary_fixed\",\n  palette: s => s.tertiaryPalette,\n  tone: s => isMonochrome(s) ? 100 : 10,\n  background: s => MaterialDynamicColors.tertiaryFixedDim,\n  secondBackground: s => MaterialDynamicColors.tertiaryFixed,\n  contrastCurve: new ContrastCurve(4.5, 7, 11, 21)\n}), MaterialDynamicColors.onTertiaryFixedVariant = DynamicColor.fromPalette({\n  name: \"on_tertiary_fixed_variant\",\n  palette: s => s.tertiaryPalette,\n  tone: s => isMonochrome(s) ? 90 : 30,\n  background: s => MaterialDynamicColors.tertiaryFixedDim,\n  secondBackground: s => MaterialDynamicColors.tertiaryFixed,\n  contrastCurve: new ContrastCurve(3, 4.5, 7, 11)\n});\n\nclass TonalPalette {\n  static fromInt(argb) {\n    const hct = Hct.fromInt(argb);\n    return TonalPalette.fromHct(hct);\n  }\n  static fromHct(hct) {\n    return new TonalPalette(hct.hue, hct.chroma, hct);\n  }\n  static fromHueAndChroma(hue, chroma) {\n    return new TonalPalette(hue, chroma, TonalPalette.createKeyColor(hue, chroma));\n  }\n  constructor(hue, chroma, keyColor) {\n    this.hue = hue, this.chroma = chroma, this.keyColor = keyColor, this.cache = new Map;\n  }\n  static createKeyColor(hue, chroma) {\n    let smallestDeltaHct = Hct.from(hue, chroma, 50), smallestDelta = Math.abs(smallestDeltaHct.chroma - chroma);\n    for (let delta = 1; delta < 50; delta += 1) {\n      if (Math.round(chroma) === Math.round(smallestDeltaHct.chroma)) return smallestDeltaHct;\n      const hctAdd = Hct.from(hue, chroma, 50 + delta), hctAddDelta = Math.abs(hctAdd.chroma - chroma);\n      hctAddDelta < smallestDelta && (smallestDelta = hctAddDelta, smallestDeltaHct = hctAdd);\n      const hctSubtract = Hct.from(hue, chroma, 50 - delta), hctSubtractDelta = Math.abs(hctSubtract.chroma - chroma);\n      hctSubtractDelta < smallestDelta && (smallestDelta = hctSubtractDelta, smallestDeltaHct = hctSubtract);\n    }\n    return smallestDeltaHct;\n  }\n  tone(tone) {\n    let argb = this.cache.get(tone);\n    return void 0 === argb && (argb = Hct.from(this.hue, this.chroma, tone).toInt(), \n    this.cache.set(tone, argb)), argb;\n  }\n  getHct(tone) {\n    return Hct.fromInt(this.tone(tone));\n  }\n}\n\nclass CorePalette {\n  static of(argb) {\n    return new CorePalette(argb, !1);\n  }\n  static contentOf(argb) {\n    return new CorePalette(argb, !0);\n  }\n  static fromColors(colors) {\n    return CorePalette.createPaletteFromColors(!1, colors);\n  }\n  static contentFromColors(colors) {\n    return CorePalette.createPaletteFromColors(!0, colors);\n  }\n  static createPaletteFromColors(content, colors) {\n    const palette = new CorePalette(colors.primary, content);\n    if (colors.secondary) {\n      const p = new CorePalette(colors.secondary, content);\n      palette.a2 = p.a1;\n    }\n    if (colors.tertiary) {\n      const p = new CorePalette(colors.tertiary, content);\n      palette.a3 = p.a1;\n    }\n    if (colors.error) {\n      const p = new CorePalette(colors.error, content);\n      palette.error = p.a1;\n    }\n    if (colors.neutral) {\n      const p = new CorePalette(colors.neutral, content);\n      palette.n1 = p.n1;\n    }\n    if (colors.neutralVariant) {\n      const p = new CorePalette(colors.neutralVariant, content);\n      palette.n2 = p.n2;\n    }\n    return palette;\n  }\n  constructor(argb, isContent) {\n    const hct = Hct.fromInt(argb), hue = hct.hue, chroma = hct.chroma;\n    isContent ? (this.a1 = TonalPalette.fromHueAndChroma(hue, chroma), this.a2 = TonalPalette.fromHueAndChroma(hue, chroma / 3), \n    this.a3 = TonalPalette.fromHueAndChroma(hue + 60, chroma / 2), this.n1 = TonalPalette.fromHueAndChroma(hue, Math.min(chroma / 12, 4)), \n    this.n2 = TonalPalette.fromHueAndChroma(hue, Math.min(chroma / 6, 8))) : (this.a1 = TonalPalette.fromHueAndChroma(hue, Math.max(48, chroma)), \n    this.a2 = TonalPalette.fromHueAndChroma(hue, 16), this.a3 = TonalPalette.fromHueAndChroma(hue + 60, 24), \n    this.n1 = TonalPalette.fromHueAndChroma(hue, 4), this.n2 = TonalPalette.fromHueAndChroma(hue, 8)), \n    this.error = TonalPalette.fromHueAndChroma(25, 84);\n  }\n}\n\nclass Scheme {\n  get primary() {\n    return this.props.primary;\n  }\n  get onPrimary() {\n    return this.props.onPrimary;\n  }\n  get primaryContainer() {\n    return this.props.primaryContainer;\n  }\n  get onPrimaryContainer() {\n    return this.props.onPrimaryContainer;\n  }\n  get secondary() {\n    return this.props.secondary;\n  }\n  get onSecondary() {\n    return this.props.onSecondary;\n  }\n  get secondaryContainer() {\n    return this.props.secondaryContainer;\n  }\n  get onSecondaryContainer() {\n    return this.props.onSecondaryContainer;\n  }\n  get tertiary() {\n    return this.props.tertiary;\n  }\n  get onTertiary() {\n    return this.props.onTertiary;\n  }\n  get tertiaryContainer() {\n    return this.props.tertiaryContainer;\n  }\n  get onTertiaryContainer() {\n    return this.props.onTertiaryContainer;\n  }\n  get error() {\n    return this.props.error;\n  }\n  get onError() {\n    return this.props.onError;\n  }\n  get errorContainer() {\n    return this.props.errorContainer;\n  }\n  get onErrorContainer() {\n    return this.props.onErrorContainer;\n  }\n  get background() {\n    return this.props.background;\n  }\n  get onBackground() {\n    return this.props.onBackground;\n  }\n  get surface() {\n    return this.props.surface;\n  }\n  get onSurface() {\n    return this.props.onSurface;\n  }\n  get surfaceVariant() {\n    return this.props.surfaceVariant;\n  }\n  get onSurfaceVariant() {\n    return this.props.onSurfaceVariant;\n  }\n  get outline() {\n    return this.props.outline;\n  }\n  get outlineVariant() {\n    return this.props.outlineVariant;\n  }\n  get shadow() {\n    return this.props.shadow;\n  }\n  get scrim() {\n    return this.props.scrim;\n  }\n  get inverseSurface() {\n    return this.props.inverseSurface;\n  }\n  get inverseOnSurface() {\n    return this.props.inverseOnSurface;\n  }\n  get inversePrimary() {\n    return this.props.inversePrimary;\n  }\n  static light(argb) {\n    return Scheme.lightFromCorePalette(CorePalette.of(argb));\n  }\n  static dark(argb) {\n    return Scheme.darkFromCorePalette(CorePalette.of(argb));\n  }\n  static lightContent(argb) {\n    return Scheme.lightFromCorePalette(CorePalette.contentOf(argb));\n  }\n  static darkContent(argb) {\n    return Scheme.darkFromCorePalette(CorePalette.contentOf(argb));\n  }\n  static lightFromCorePalette(core) {\n    return new Scheme({\n      primary: core.a1.tone(40),\n      onPrimary: core.a1.tone(100),\n      primaryContainer: core.a1.tone(90),\n      onPrimaryContainer: core.a1.tone(10),\n      secondary: core.a2.tone(40),\n      onSecondary: core.a2.tone(100),\n      secondaryContainer: core.a2.tone(90),\n      onSecondaryContainer: core.a2.tone(10),\n      tertiary: core.a3.tone(40),\n      onTertiary: core.a3.tone(100),\n      tertiaryContainer: core.a3.tone(90),\n      onTertiaryContainer: core.a3.tone(10),\n      error: core.error.tone(40),\n      onError: core.error.tone(100),\n      errorContainer: core.error.tone(90),\n      onErrorContainer: core.error.tone(10),\n      background: core.n1.tone(99),\n      onBackground: core.n1.tone(10),\n      surface: core.n1.tone(99),\n      onSurface: core.n1.tone(10),\n      surfaceVariant: core.n2.tone(90),\n      onSurfaceVariant: core.n2.tone(30),\n      outline: core.n2.tone(50),\n      outlineVariant: core.n2.tone(80),\n      shadow: core.n1.tone(0),\n      scrim: core.n1.tone(0),\n      inverseSurface: core.n1.tone(20),\n      inverseOnSurface: core.n1.tone(95),\n      inversePrimary: core.a1.tone(80)\n    });\n  }\n  static darkFromCorePalette(core) {\n    return new Scheme({\n      primary: core.a1.tone(80),\n      onPrimary: core.a1.tone(20),\n      primaryContainer: core.a1.tone(30),\n      onPrimaryContainer: core.a1.tone(90),\n      secondary: core.a2.tone(80),\n      onSecondary: core.a2.tone(20),\n      secondaryContainer: core.a2.tone(30),\n      onSecondaryContainer: core.a2.tone(90),\n      tertiary: core.a3.tone(80),\n      onTertiary: core.a3.tone(20),\n      tertiaryContainer: core.a3.tone(30),\n      onTertiaryContainer: core.a3.tone(90),\n      error: core.error.tone(80),\n      onError: core.error.tone(20),\n      errorContainer: core.error.tone(30),\n      onErrorContainer: core.error.tone(80),\n      background: core.n1.tone(10),\n      onBackground: core.n1.tone(90),\n      surface: core.n1.tone(10),\n      onSurface: core.n1.tone(90),\n      surfaceVariant: core.n2.tone(30),\n      onSurfaceVariant: core.n2.tone(80),\n      outline: core.n2.tone(60),\n      outlineVariant: core.n2.tone(30),\n      shadow: core.n1.tone(0),\n      scrim: core.n1.tone(0),\n      inverseSurface: core.n1.tone(90),\n      inverseOnSurface: core.n1.tone(20),\n      inversePrimary: core.a1.tone(40)\n    });\n  }\n  constructor(props) {\n    this.props = props;\n  }\n  toJSON() {\n    return {\n      ...this.props\n    };\n  }\n}\n\nfunction hexFromArgb(argb) {\n  const r = redFromArgb(argb), g = greenFromArgb(argb), b = blueFromArgb(argb), outParts = [ r.toString(16), g.toString(16), b.toString(16) ];\n  for (const [i, part] of outParts.entries()) 1 === part.length && (outParts[i] = \"0\" + part);\n  return \"#\" + outParts.join(\"\");\n}\n\nfunction argbFromHex(hex) {\n  const isThree = 3 === (hex = hex.replace(\"#\", \"\")).length, isSix = 6 === hex.length, isEight = 8 === hex.length;\n  if (!isThree && !isSix && !isEight) throw new Error(\"unexpected hex \" + hex);\n  let r = 0, g = 0, b = 0;\n  return isThree ? (r = parseIntHex(hex.slice(0, 1).repeat(2)), g = parseIntHex(hex.slice(1, 2).repeat(2)), \n  b = parseIntHex(hex.slice(2, 3).repeat(2))) : isSix ? (r = parseIntHex(hex.slice(0, 2)), \n  g = parseIntHex(hex.slice(2, 4)), b = parseIntHex(hex.slice(4, 6))) : isEight && (r = parseIntHex(hex.slice(2, 4)), \n  g = parseIntHex(hex.slice(4, 6)), b = parseIntHex(hex.slice(6, 8))), (255 << 24 | (255 & r) << 16 | (255 & g) << 8 | 255 & b) >>> 0;\n}\n\nfunction parseIntHex(value) {\n  return parseInt(value, 16);\n}\n\nfunction themeFromSourceColor(source, customColors = []) {\n  const palette = CorePalette.of(source);\n  return {\n    source: source,\n    schemes: {\n      light: Scheme.light(source),\n      dark: Scheme.dark(source)\n    },\n    palettes: {\n      primary: palette.a1,\n      secondary: palette.a2,\n      tertiary: palette.a3,\n      neutral: palette.n1,\n      neutralVariant: palette.n2,\n      error: palette.error\n    },\n    customColors: customColors.map((c => customColor(source, c)))\n  };\n}\n\nfunction customColor(source, color) {\n  let value = color.value;\n  const from = value, to = source;\n  color.blend && (value = Blend.harmonize(from, to));\n  const tones = CorePalette.of(value).a1;\n  return {\n    color: color,\n    value: value,\n    light: {\n      color: tones.tone(40),\n      onColor: tones.tone(100),\n      colorContainer: tones.tone(90),\n      onColorContainer: tones.tone(10)\n    },\n    dark: {\n      color: tones.tone(80),\n      onColor: tones.tone(20),\n      colorContainer: tones.tone(30),\n      onColorContainer: tones.tone(90)\n    }\n  };\n}\n\nexport { argbFromHex, hexFromArgb, themeFromSourceColor };","// eslint-disable-next-line\nimport { argbFromHex, hexFromArgb, themeFromSourceColor } from './material-color-utils.js';\n\n/* eslint-disable */\n// prettier-ignore\nfunction toRGBA(d) {\n  const r = Math.round;\n  const l = d.length;\n\tconst rgba = {};\n\tif (d.slice(0, 3).toLowerCase() === 'rgb') {\n\t\td = d.replace(' ', '').split(',');\n\t\trgba[0] = parseInt(d[0].slice(d[3].toLowerCase() === 'a' ? 5 : 4), 10);\n\t\trgba[1] = parseInt(d[1], 10);\n\t\trgba[2] = parseInt(d[2], 10);\n\t\trgba[3] = d[3] ? parseFloat(d[3]) : -1;\n\t} else {\n\t\tif (l < 6) d = parseInt(String(d[1]) + d[1] + d[2] + d[2] + d[3] + d[3] + (l > 4 ? String(d[4]) + d[4] : ''), 16);\n\t\telse d = parseInt(d.slice(1), 16);\n\t\trgba[0] = (d >> 16) & 255;\n\t\trgba[1] = (d >> 8) & 255;\n\t\trgba[2] = d & 255;\n\t\trgba[3] = l === 9 || l === 5 ? r((((d >> 24) & 255) / 255) * 10000) / 10000 : -1;\n\t}\n\treturn rgba;\n}\n\n// prettier-ignore\nfunction blend(from, to, p = 0.5) {\n  const r = Math.round;\n  from = from.trim();\n\tto = to.trim();\n\tconst b = p < 0;\n\tp = b ? p * -1 : p;\n\tconst f = toRGBA(from);\n\tconst t = toRGBA(to);\n\tif (to[0] === 'r') {\n\t\treturn 'rgb' + (to[3] === 'a' ? 'a(' : '(') +\n\t\t\tr(((t[0] - f[0]) * p) + f[0]) + ',' +\n\t\t\tr(((t[1] - f[1]) * p) + f[1]) + ',' +\n\t\t\tr(((t[2] - f[2]) * p) + f[2]) + (\n\t\t\t\tf[3] < 0 && t[3] < 0 ? '' : ',' + (\n\t\t\t\t\tf[3] > -1 && t[3] > -1\n\t\t\t\t\t\t? r((((t[3] - f[3]) * p) + f[3]) * 10000) / 10000\n\t\t\t\t\t\t: t[3] < 0 ? f[3] : t[3]\n\t\t\t\t)\n\t\t\t) + ')';\n\t}\n\n\treturn '#' + (0x100000000 + ((\n\t\tf[3] > -1 && t[3] > -1\n\t\t\t? r((((t[3] - f[3]) * p) + f[3]) * 255)\n\t\t\t: t[3] > -1 ? r(t[3] * 255) : f[3] > -1 ? r(f[3] * 255) : 255\n\t\t) * 0x1000000) +\n\t\t(r(((t[0] - f[0]) * p) + f[0]) * 0x10000) +\n\t\t(r(((t[1] - f[1]) * p) + f[1]) * 0x100) +\n\t\tr(((t[2] - f[2]) * p) + f[2])\n\t).toString(16).slice(f[3] > -1 || t[3] > -1 ? 1 : 3);\n}\n/* eslint-enable */\n\nexport const materialColors = (hexColor = '') => {\n  const theme = themeFromSourceColor(argbFromHex(`#${hexColor.replace('#', '')}`));\n  [0.05, 0.08, 0.11, 0.12, 0.14].forEach((amount, index) => {\n    theme.schemes.light.props[`surface${index + 1}`] = argbFromHex(\n      blend(\n        hexFromArgb(theme.schemes.light.props.surface),\n        hexFromArgb(theme.schemes.light.props.primary),\n        amount,\n      ),\n    );\n    theme.schemes.dark.props[`surface${index + 1}`] = argbFromHex(\n      blend(\n        hexFromArgb(theme.schemes.dark.props.surface),\n        hexFromArgb(theme.schemes.dark.props.primary),\n        amount,\n      ),\n    );\n  });\n\n  const name = (n) => {\n    return n\n      .split('')\n      .map((char) =>\n        char.toUpperCase() === char && char !== '-' && char !== '7'\n          ? `-${char.toLowerCase()}`\n          : char,\n      )\n      .join('');\n  };\n\n  const shouldSkip = (prop) => {\n    const skip = ['tertiary', 'shadow', 'scrim', 'error', 'background'];\n    return skip.filter((v) => prop.toLowerCase().includes(v)).length > 0;\n  };\n\n  const light = {};\n  const dark = {};\n  Object.keys(theme.schemes.light.props).forEach((prop) => {\n    if (shouldSkip(prop)) return;\n    light[name(`--f7-md-${prop}`)] = hexFromArgb(theme.schemes.light.props[prop]);\n  });\n  Object.keys(theme.schemes.dark.props).forEach((prop) => {\n    if (shouldSkip(prop)) return;\n    dark[name(`--f7-md-${prop}`)] = hexFromArgb(theme.schemes.dark.props[prop]);\n  });\n\n  return { light, dark };\n};\n","import { getWindow } from 'ssr-window';\nimport { materialColors } from './material-colors.js';\n\nlet uniqueNum = 0;\nexport function uniqueNumber() {\n  uniqueNum += 1;\n  return uniqueNum;\n}\nexport function id(mask = 'xxxxxxxxxx', map = '0123456789abcdef') {\n  const length = map.length;\n  return mask.replace(/x/g, () => map[Math.floor(Math.random() * length)]);\n}\nexport const mdPreloaderContent = `\n  <span class=\"preloader-inner\">\n    <svg viewBox=\"0 0 36 36\">\n      <circle cx=\"18\" cy=\"18\" r=\"16\"></circle>\n    </svg>\n  </span>\n`.trim();\n\nexport const iosPreloaderContent = `\n  <span class=\"preloader-inner\">\n    ${[0, 1, 2, 3, 4, 5, 6, 7].map(() => '<span class=\"preloader-inner-line\"></span>').join('')}\n  </span>\n`.trim();\n\nexport function eventNameToColonCase(eventName) {\n  let hasColon;\n  return eventName\n    .split('')\n    .map((char, index) => {\n      if (char.match(/[A-Z]/) && index !== 0 && !hasColon) {\n        hasColon = true;\n        return `:${char.toLowerCase()}`;\n      }\n      return char.toLowerCase();\n    })\n    .join('');\n}\nexport function deleteProps(obj) {\n  const object = obj;\n  Object.keys(object).forEach((key) => {\n    try {\n      object[key] = null;\n    } catch (e) {\n      // no setter for object\n    }\n    try {\n      delete object[key];\n    } catch (e) {\n      // something got wrong\n    }\n  });\n}\nexport function requestAnimationFrame(callback) {\n  const window = getWindow();\n  return window.requestAnimationFrame(callback);\n}\nexport function cancelAnimationFrame(frameId) {\n  const window = getWindow();\n  return window.cancelAnimationFrame(frameId);\n}\nexport function nextTick(callback, delay = 0) {\n  return setTimeout(callback, delay);\n}\nexport function nextFrame(callback) {\n  return requestAnimationFrame(() => {\n    requestAnimationFrame(callback);\n  });\n}\nexport function now() {\n  return Date.now();\n}\n\nexport function parseUrlQuery(url) {\n  const window = getWindow();\n  const query = {};\n  let urlToParse = url || window.location.href;\n  let i;\n  let params;\n  let param;\n  let length;\n  if (typeof urlToParse === 'string' && urlToParse.length) {\n    urlToParse = urlToParse.indexOf('?') > -1 ? urlToParse.replace(/\\S*\\?/, '') : '';\n    params = urlToParse.split('&').filter((paramsPart) => paramsPart !== '');\n    length = params.length;\n\n    for (i = 0; i < length; i += 1) {\n      param = params[i].replace(/#\\S+/g, '').split('=');\n      query[decodeURIComponent(param[0])] =\n        typeof param[1] === 'undefined'\n          ? undefined\n          : decodeURIComponent(param.slice(1).join('=')) || '';\n    }\n  }\n  return query;\n}\nexport function getTranslate(el, axis = 'x') {\n  const window = getWindow();\n  let matrix;\n  let curTransform;\n  let transformMatrix;\n\n  const curStyle = window.getComputedStyle(el, null);\n\n  if (window.WebKitCSSMatrix) {\n    curTransform = curStyle.transform || curStyle.webkitTransform;\n    if (curTransform.split(',').length > 6) {\n      curTransform = curTransform\n        .split(', ')\n        .map((a) => a.replace(',', '.'))\n        .join(', ');\n    }\n    // Some old versions of Webkit choke when 'none' is passed; pass\n    // empty string instead in this case\n    transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);\n  } else {\n    transformMatrix =\n      curStyle.MozTransform ||\n      curStyle.OTransform ||\n      curStyle.MsTransform ||\n      curStyle.msTransform ||\n      curStyle.transform ||\n      curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');\n    matrix = transformMatrix.toString().split(',');\n  }\n\n  if (axis === 'x') {\n    // Latest Chrome and webkits Fix\n    if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41;\n    // Crazy IE10 Matrix\n    else if (matrix.length === 16) curTransform = parseFloat(matrix[12]);\n    // Normal Browsers\n    else curTransform = parseFloat(matrix[4]);\n  }\n  if (axis === 'y') {\n    // Latest Chrome and webkits Fix\n    if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42;\n    // Crazy IE10 Matrix\n    else if (matrix.length === 16) curTransform = parseFloat(matrix[13]);\n    // Normal Browsers\n    else curTransform = parseFloat(matrix[5]);\n  }\n  return curTransform || 0;\n}\nexport function serializeObject(obj, parents = []) {\n  if (typeof obj === 'string') return obj;\n  const resultArray = [];\n  const separator = '&';\n  let newParents;\n  function varName(name) {\n    if (parents.length > 0) {\n      let parentParts = '';\n      for (let j = 0; j < parents.length; j += 1) {\n        if (j === 0) parentParts += parents[j];\n        else parentParts += `[${encodeURIComponent(parents[j])}]`;\n      }\n      return `${parentParts}[${encodeURIComponent(name)}]`;\n    }\n    return encodeURIComponent(name);\n  }\n  function varValue(value) {\n    return encodeURIComponent(value);\n  }\n  Object.keys(obj).forEach((prop) => {\n    let toPush;\n    if (Array.isArray(obj[prop])) {\n      toPush = [];\n      for (let i = 0; i < obj[prop].length; i += 1) {\n        if (!Array.isArray(obj[prop][i]) && typeof obj[prop][i] === 'object') {\n          newParents = parents.slice();\n          newParents.push(prop);\n          newParents.push(String(i));\n          toPush.push(serializeObject(obj[prop][i], newParents));\n        } else {\n          toPush.push(`${varName(prop)}[]=${varValue(obj[prop][i])}`);\n        }\n      }\n      if (toPush.length > 0) resultArray.push(toPush.join(separator));\n    } else if (obj[prop] === null || obj[prop] === '') {\n      resultArray.push(`${varName(prop)}=`);\n    } else if (typeof obj[prop] === 'object') {\n      // Object, convert to named array\n      newParents = parents.slice();\n      newParents.push(prop);\n      toPush = serializeObject(obj[prop], newParents);\n      if (toPush !== '') resultArray.push(toPush);\n    } else if (typeof obj[prop] !== 'undefined' && obj[prop] !== '') {\n      // Should be string or plain value\n      resultArray.push(`${varName(prop)}=${varValue(obj[prop])}`);\n    } else if (obj[prop] === '') resultArray.push(varName(prop)); // eslint-disable-line\n  });\n  return resultArray.join(separator);\n}\nexport function isObject(o) {\n  return typeof o === 'object' && o !== null && o.constructor && o.constructor === Object;\n}\nexport function merge(...args) {\n  const to = args[0];\n  args.splice(0, 1);\n  const from = args;\n\n  for (let i = 0; i < from.length; i += 1) {\n    const nextSource = args[i];\n    if (nextSource !== undefined && nextSource !== null) {\n      const keysArray = Object.keys(Object(nextSource));\n      for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {\n        const nextKey = keysArray[nextIndex];\n        const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n        if (desc !== undefined && desc.enumerable) {\n          to[nextKey] = nextSource[nextKey];\n        }\n      }\n    }\n  }\n  return to;\n}\nexport function extend(...args) {\n  let deep = true;\n  let to;\n  let from;\n  if (typeof args[0] === 'boolean') {\n    deep = args[0];\n    to = args[1];\n    args.splice(0, 2);\n    from = args;\n  } else {\n    to = args[0];\n    args.splice(0, 1);\n    from = args;\n  }\n  for (let i = 0; i < from.length; i += 1) {\n    const nextSource = args[i];\n    if (nextSource !== undefined && nextSource !== null) {\n      const keysArray = Object.keys(Object(nextSource));\n      for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {\n        const nextKey = keysArray[nextIndex];\n        const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n        if (desc !== undefined && desc.enumerable) {\n          if (!deep) {\n            to[nextKey] = nextSource[nextKey];\n          } else if (isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n            extend(to[nextKey], nextSource[nextKey]);\n          } else if (!isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n            to[nextKey] = {};\n            extend(to[nextKey], nextSource[nextKey]);\n          } else {\n            to[nextKey] = nextSource[nextKey];\n          }\n        }\n      }\n    }\n  }\n  return to;\n}\nexport function colorHexToRgb(hex) {\n  const h = hex.replace(/^#?([a-f\\d])([a-f\\d])([a-f\\d])$/i, (m, r, g, b) => r + r + g + g + b + b);\n  const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(h);\n  return result ? result.slice(1).map((n) => parseInt(n, 16)) : null;\n}\nexport function colorRgbToHex(r, g, b) {\n  const result = [r, g, b]\n    .map((n) => {\n      const hex = n.toString(16);\n      return hex.length === 1 ? `0${hex}` : hex;\n    })\n    .join('');\n  return `#${result}`;\n}\nexport function colorRgbToHsl(r, g, b) {\n  r /= 255; // eslint-disable-line\n  g /= 255; // eslint-disable-line\n  b /= 255; // eslint-disable-line\n  const max = Math.max(r, g, b);\n  const min = Math.min(r, g, b);\n  const d = max - min;\n  let h;\n  if (d === 0) h = 0;\n  else if (max === r) h = ((g - b) / d) % 6;\n  else if (max === g) h = (b - r) / d + 2;\n  else if (max === b) h = (r - g) / d + 4;\n  const l = (min + max) / 2;\n  const s = d === 0 ? 0 : d / (1 - Math.abs(2 * l - 1));\n  if (h < 0) h = 360 / 60 + h;\n  return [h * 60, s, l];\n}\nexport function colorHslToRgb(h, s, l) {\n  const c = (1 - Math.abs(2 * l - 1)) * s;\n  const hp = h / 60;\n  const x = c * (1 - Math.abs((hp % 2) - 1));\n  let rgb1;\n  if (Number.isNaN(h) || typeof h === 'undefined') {\n    rgb1 = [0, 0, 0];\n  } else if (hp <= 1) rgb1 = [c, x, 0];\n  else if (hp <= 2) rgb1 = [x, c, 0];\n  else if (hp <= 3) rgb1 = [0, c, x];\n  else if (hp <= 4) rgb1 = [0, x, c];\n  else if (hp <= 5) rgb1 = [x, 0, c];\n  else if (hp <= 6) rgb1 = [c, 0, x];\n  const m = l - c / 2;\n  return rgb1.map((n) => Math.max(0, Math.min(255, Math.round(255 * (n + m)))));\n}\nexport function colorHsbToHsl(h, s, b) {\n  const HSL = {\n    h,\n    s: 0,\n    l: 0,\n  };\n  const HSB = { h, s, b };\n\n  HSL.l = ((2 - HSB.s) * HSB.b) / 2;\n  HSL.s = HSL.l && HSL.l < 1 ? (HSB.s * HSB.b) / (HSL.l < 0.5 ? HSL.l * 2 : 2 - HSL.l * 2) : HSL.s;\n\n  return [HSL.h, HSL.s, HSL.l];\n}\nexport function colorHslToHsb(h, s, l) {\n  const HSB = {\n    h,\n    s: 0,\n    b: 0,\n  };\n  const HSL = { h, s, l };\n\n  const t = HSL.s * (HSL.l < 0.5 ? HSL.l : 1 - HSL.l);\n  HSB.b = HSL.l + t;\n  HSB.s = HSL.l > 0 ? (2 * t) / HSB.b : HSB.s;\n\n  return [HSB.h, HSB.s, HSB.b];\n}\n\nconst getShadeTintColors = (rgb) => {\n  const hsl = colorRgbToHsl(...rgb);\n  const hslShade = [hsl[0], hsl[1], Math.max(0, hsl[2] - 0.08)];\n  const hslTint = [hsl[0], hsl[1], Math.max(0, hsl[2] + 0.08)];\n  const shade = colorRgbToHex(...colorHslToRgb(...hslShade));\n  const tint = colorRgbToHex(...colorHslToRgb(...hslTint));\n  return { shade, tint };\n};\nexport function colorThemeCSSProperties(...args) {\n  let hex;\n  let rgb;\n  if (args.length === 1) {\n    hex = args[0];\n    rgb = colorHexToRgb(hex);\n  } else if (args.length === 3) {\n    rgb = args;\n    hex = colorRgbToHex(...rgb);\n  }\n  if (!rgb) return {};\n  const { light, dark } = materialColors(hex);\n  const shadeTintIos = getShadeTintColors(rgb);\n  const shadeTintMdLight = getShadeTintColors(colorHexToRgb(light['--f7-md-primary']));\n  const shadeTintMdDark = getShadeTintColors(colorHexToRgb(dark['--f7-md-primary']));\n  Object.keys(light).forEach((key) => {\n    if (key.includes('surface-')) {\n      light[`${key}-rgb`] = colorHexToRgb(light[key]);\n    }\n  });\n  Object.keys(dark).forEach((key) => {\n    if (key.includes('surface-')) {\n      dark[`${key}-rgb`] = colorHexToRgb(dark[key]);\n    }\n  });\n  return {\n    ios: {\n      '--f7-theme-color': 'var(--f7-ios-primary)',\n      '--f7-theme-color-rgb': 'var(--f7-ios-primary-rgb)',\n      '--f7-theme-color-shade': 'var(--f7-ios-primary-shade)',\n      '--f7-theme-color-tint': 'var(--f7-ios-primary-tint)',\n    },\n    md: {\n      '--f7-theme-color': 'var(--f7-md-primary)',\n      '--f7-theme-color-rgb': 'var(--f7-md-primary-rgb)',\n      '--f7-theme-color-shade': 'var(--f7-md-primary-shade)',\n      '--f7-theme-color-tint': 'var(--f7-md-primary-tint)',\n    },\n    light: {\n      '--f7-ios-primary': hex,\n      '--f7-ios-primary-shade': shadeTintIos.shade,\n      '--f7-ios-primary-tint': shadeTintIos.tint,\n      '--f7-ios-primary-rgb': rgb.join(', '),\n      '--f7-md-primary-shade': shadeTintMdLight.shade,\n      '--f7-md-primary-tint': shadeTintMdLight.tint,\n      '--f7-md-primary-rgb': colorHexToRgb(light['--f7-md-primary']).join(', '),\n      ...light,\n    },\n    dark: {\n      '--f7-md-primary-shade': shadeTintMdDark.shade,\n      '--f7-md-primary-tint': shadeTintMdDark.tint,\n      '--f7-md-primary-rgb': colorHexToRgb(dark['--f7-md-primary']).join(', '),\n      ...dark,\n    },\n  };\n}\n\nexport function bindMethods(instance, obj) {\n  Object.keys(obj).forEach((key) => {\n    if (isObject(obj[key])) {\n      Object.keys(obj[key]).forEach((subKey) => {\n        if (typeof obj[key][subKey] === 'function') {\n          obj[key][subKey] = obj[key][subKey].bind(instance);\n        }\n      });\n    }\n    instance[key] = obj[key];\n  });\n}\n\nexport function flattenArray(...args) {\n  const arr = [];\n  args.forEach((arg) => {\n    if (Array.isArray(arg)) arr.push(...flattenArray(...arg));\n    else arr.push(arg);\n  });\n  return arr;\n}\n\nexport function colorThemeCSSStyles(colors = {}) {\n  const stringifyObject = (obj) => {\n    let res = '';\n    Object.keys(obj).forEach((key) => {\n      res += `${key}:${obj[key]};`;\n    });\n    return res;\n  };\n  const colorVars = colorThemeCSSProperties(colors.primary);\n\n  const primary = [\n    `:root{`,\n    stringifyObject(colorVars.light),\n    `--swiper-theme-color:var(--f7-theme-color);`,\n    ...Object.keys(colors).map((colorName) => `--f7-color-${colorName}: ${colors[colorName]};`),\n    `}`,\n    `.dark{`,\n    stringifyObject(colorVars.dark),\n    `}`,\n    `.ios, .ios .dark{`,\n    stringifyObject(colorVars.ios),\n    '}',\n    `.md, .md .dark{`,\n    stringifyObject(colorVars.md),\n    '}',\n  ].join('');\n\n  const restVars = {};\n\n  Object.keys(colors).forEach((colorName) => {\n    const colorValue = colors[colorName];\n    restVars[colorName] = colorThemeCSSProperties(colorValue);\n  });\n\n  // rest\n  let rest = '';\n\n  Object.keys(colors).forEach((colorName) => {\n    const { light, dark, ios, md } = restVars[colorName];\n\n    const whiteColorVars = `\n    --f7-ios-primary: #ffffff;\n    --f7-ios-primary-shade: #ebebeb;\n    --f7-ios-primary-tint: #ffffff;\n    --f7-ios-primary-rgb: 255, 255, 255;\n    --f7-md-primary-shade: #eee;\n    --f7-md-primary-tint: #fff;\n    --f7-md-primary-rgb: 255, 255, 255;\n    --f7-md-primary: #fff;\n    --f7-md-on-primary: #000;\n    --f7-md-primary-container: #fff;\n    --f7-md-on-primary-container: #000;\n    --f7-md-secondary: #fff;\n    --f7-md-on-secondary: #000;\n    --f7-md-secondary-container: #555;\n    --f7-md-on-secondary-container: #fff;\n    --f7-md-surface: #fff;\n    --f7-md-on-surface: #000;\n    --f7-md-surface-variant: #333;\n    --f7-md-on-surface-variant: #fff;\n    --f7-md-outline: #fff;\n    --f7-md-outline-variant: #fff;\n    --f7-md-inverse-surface: #000;\n    --f7-md-inverse-on-surface: #fff;\n    --f7-md-inverse-primary: #000;\n    --f7-md-surface-1: #f8f8f8;\n    --f7-md-surface-2: #f1f1f1;\n    --f7-md-surface-3: #e7e7e7;\n    --f7-md-surface-4: #e1e1e1;\n    --f7-md-surface-5: #d7d7d7;\n    --f7-md-surface-variant-rgb: 51, 51, 51;\n    --f7-md-on-surface-variant-rgb: 255, 255, 255;\n    --f7-md-surface-1-rgb: 248, 248, 248;\n    --f7-md-surface-2-rgb: 241, 241, 241;\n    --f7-md-surface-3-rgb: 231, 231, 231;\n    --f7-md-surface-4-rgb: 225, 225, 225;\n    --f7-md-surface-5-rgb: 215, 215, 215;\n    `;\n    const blackColorVars = `\n    --f7-ios-primary: #000;\n    --f7-ios-primary-shade: #000;\n    --f7-ios-primary-tint: #232323;\n    --f7-ios-primary-rgb: 0, 0, 0;\n    --f7-md-primary-shade: #000;\n    --f7-md-primary-tint: #232323;\n    --f7-md-primary-rgb: 0, 0, 0;\n    --f7-md-primary: #000;\n    --f7-md-on-primary: #fff;\n    --f7-md-primary-container: #000;\n    --f7-md-on-primary-container: #fff;\n    --f7-md-secondary: #000;\n    --f7-md-on-secondary: #fff;\n    --f7-md-secondary-container: #aaa;\n    --f7-md-on-secondary-container: #000;\n    --f7-md-surface: #000;\n    --f7-md-on-surface: #fff;\n    --f7-md-surface-variant: #ccc;\n    --f7-md-on-surface-variant: #000;\n    --f7-md-outline: #000;\n    --f7-md-outline-variant: #000;\n    --f7-md-inverse-surface: #fff;\n    --f7-md-inverse-on-surface: #000;\n    --f7-md-inverse-primary: #fff;\n    --f7-md-surface-1: #070707;\n    --f7-md-surface-2: #161616;\n    --f7-md-surface-3: #232323;\n    --f7-md-surface-4: #303030;\n    --f7-md-surface-5: #373737;\n    --f7-md-surface-variant-rgb: 204, 204, 204;\n    --f7-md-on-surface-variant-rgb: 0, 0, 0;\n    --f7-md-surface-1-rgb: 7, 7, 7;\n    --f7-md-surface-2-rgb: 22, 22, 22;\n    --f7-md-surface-3-rgb: 35, 35, 35;\n    --f7-md-surface-4-rgb: 48, 48, 48;\n    --f7-md-surface-5-rgb: 55, 55, 55;\n    `;\n    /* eslint-disable */\n    const lightString =\n      colorName === 'white'\n        ? whiteColorVars\n        : colorName === 'black'\n        ? blackColorVars\n        : stringifyObject(light);\n    const darkString =\n      colorName === 'white'\n        ? whiteColorVars\n        : colorName === 'black'\n        ? blackColorVars\n        : stringifyObject(dark);\n    /* eslint-enable */\n    rest += [\n      `.color-${colorName} {`,\n      lightString,\n      `--swiper-theme-color: var(--f7-theme-color);`,\n      `}`,\n      `.color-${colorName}.dark, .color-${colorName} .dark, .dark .color-${colorName} {`,\n      darkString,\n      `--swiper-theme-color: var(--f7-theme-color);`,\n      `}`,\n      `.ios .color-${colorName}, .ios.color-${colorName}, .ios .dark .color-${colorName}, .ios .dark.color-${colorName} {`,\n      stringifyObject(ios),\n      `}`,\n      `.md .color-${colorName}, .md.color-${colorName}, .md .dark .color-${colorName}, .md .dark.color-${colorName} {`,\n      stringifyObject(md),\n      `}`,\n\n      // text color\n      `.text-color-${colorName} {`,\n      `--f7-theme-color-text-color: ${colors[colorName]};`,\n      `}`,\n\n      // bg color\n      `.bg-color-${colorName} {`,\n      `--f7-theme-color-bg-color: ${colors[colorName]};`,\n      `}`,\n\n      // border color\n      `.border-color-${colorName} {`,\n      `--f7-theme-color-border-color: ${colors[colorName]};`,\n      `}`,\n\n      // ripple color\n      `.ripple-color-${colorName} {`,\n      `--f7-theme-color-ripple-color: rgba(${light['--f7-ios-primary-rgb']}, 0.3);`,\n      `}`,\n    ].join('');\n  });\n\n  return `${primary}${rest}`;\n}\n","import { getWindow, getDocument } from 'ssr-window';\n\nlet support;\n\nfunction calcSupport() {\n  const window = getWindow();\n  const document = getDocument();\n\n  return {\n    touch: !!(\n      'ontouchstart' in window ||\n      (window.DocumentTouch && document instanceof window.DocumentTouch)\n    ),\n\n    pointerEvents:\n      !!window.PointerEvent &&\n      'maxTouchPoints' in window.navigator &&\n      window.navigator.maxTouchPoints >= 0,\n\n    passiveListener: (function checkPassiveListener() {\n      let supportsPassive = false;\n      try {\n        const opts = Object.defineProperty({}, 'passive', {\n          // eslint-disable-next-line\n          get() {\n            supportsPassive = true;\n          },\n        });\n        window.addEventListener('testPassiveListener', null, opts);\n      } catch (e) {\n        // No support\n      }\n      return supportsPassive;\n    })(),\n\n    intersectionObserver: (function checkObserver() {\n      return 'IntersectionObserver' in window;\n    })(),\n  };\n}\n\nfunction getSupport() {\n  if (!support) {\n    support = calcSupport();\n  }\n  return support;\n}\n\nexport { getSupport };\n","import { getWindow, getDocument } from 'ssr-window';\nimport { getSupport } from './get-support.js';\n\nlet deviceCalculated;\n\nfunction calcDevice({ userAgent } = {}) {\n  const support = getSupport();\n  const window = getWindow();\n  const platform = window.navigator.platform;\n  const ua = userAgent || window.navigator.userAgent;\n\n  const device = {\n    ios: false,\n    android: false,\n    androidChrome: false,\n    desktop: false,\n    iphone: false,\n    ipod: false,\n    ipad: false,\n    edge: false,\n    ie: false,\n    firefox: false,\n    macos: false,\n    windows: false,\n    cordova: !!window.cordova,\n    electron: false,\n    capacitor: !!window.Capacitor,\n    nwjs: false,\n  };\n\n  const screenWidth = window.screen.width;\n  const screenHeight = window.screen.height;\n\n  const android = ua.match(/(Android);?[\\s\\/]+([\\d.]+)?/); // eslint-disable-line\n  let ipad = ua.match(/(iPad).*OS\\s([\\d_]+)/);\n  const ipod = ua.match(/(iPod)(.*OS\\s([\\d_]+))?/);\n  const iphone = !ipad && ua.match(/(iPhone\\sOS|iOS|iPhone;\\sCPU\\sOS)\\s([\\d_]+)/);\n  const ie = ua.indexOf('MSIE ') >= 0 || ua.indexOf('Trident/') >= 0;\n  const edge = ua.indexOf('Edge/') >= 0;\n  const firefox = ua.indexOf('Gecko/') >= 0 && ua.indexOf('Firefox/') >= 0;\n  const windows = platform === 'Win32';\n  const electron = ua.toLowerCase().indexOf('electron') >= 0;\n  const nwjs =\n    typeof nw !== 'undefined' &&\n    typeof process !== 'undefined' &&\n    typeof process.versions !== 'undefined' &&\n    typeof process.versions.nw !== 'undefined';\n  let macos = platform === 'MacIntel';\n\n  // iPadOs 13 fix\n  const iPadScreens = [\n    '1024x1366',\n    '1366x1024',\n    '834x1194',\n    '1194x834',\n    '834x1112',\n    '1112x834',\n    '768x1024',\n    '1024x768',\n    '820x1180',\n    '1180x820',\n    '810x1080',\n    '1080x810',\n  ];\n  if (\n    !ipad &&\n    macos &&\n    support.touch &&\n    iPadScreens.indexOf(`${screenWidth}x${screenHeight}`) >= 0\n  ) {\n    ipad = ua.match(/(Version)\\/([\\d.]+)/);\n    if (!ipad) ipad = [0, 1, '13_0_0'];\n    macos = false;\n  }\n\n  device.ie = ie;\n  device.edge = edge;\n  device.firefox = firefox;\n\n  // Android\n  if (android) {\n    device.os = 'android';\n    device.osVersion = android[2];\n    device.android = true;\n    device.androidChrome = ua.toLowerCase().indexOf('chrome') >= 0;\n  }\n  if (ipad || iphone || ipod) {\n    device.os = 'ios';\n    device.ios = true;\n  }\n  // iOS\n  if (iphone && !ipod) {\n    device.osVersion = iphone[2].replace(/_/g, '.');\n    device.iphone = true;\n  }\n  if (ipad) {\n    device.osVersion = ipad[2].replace(/_/g, '.');\n    device.ipad = true;\n  }\n  if (ipod) {\n    device.osVersion = ipod[3] ? ipod[3].replace(/_/g, '.') : null;\n    device.ipod = true;\n  }\n  // iOS 8+ changed UA\n  if (device.ios && device.osVersion && ua.indexOf('Version/') >= 0) {\n    if (device.osVersion.split('.')[0] === '10') {\n      device.osVersion = ua.toLowerCase().split('version/')[1].split(' ')[0];\n    }\n  }\n\n  // Webview\n  device.webView =\n    !!(\n      (iphone || ipad || ipod) &&\n      (ua.match(/.*AppleWebKit(?!.*Safari)/i) || window.navigator.standalone)\n    ) ||\n    (window.matchMedia && window.matchMedia('(display-mode: standalone)').matches);\n  device.webview = device.webView;\n  device.standalone = device.webView;\n\n  // Desktop\n  device.desktop = !(device.ios || device.android) || electron || nwjs;\n  if (device.desktop) {\n    device.electron = electron;\n    device.nwjs = nwjs;\n    device.macos = macos;\n    device.windows = windows;\n    if (device.macos) {\n      device.os = 'macos';\n    }\n    if (device.windows) {\n      device.os = 'windows';\n    }\n  }\n\n  // Pixel Ratio\n  device.pixelRatio = window.devicePixelRatio || 1;\n\n  // Color Scheme\n  const DARK = '(prefers-color-scheme: dark)';\n  const LIGHT = '(prefers-color-scheme: light)';\n  device.prefersColorScheme = function prefersColorTheme() {\n    let theme;\n    if (window.matchMedia && window.matchMedia(LIGHT).matches) {\n      theme = 'light';\n    }\n    if (window.matchMedia && window.matchMedia(DARK).matches) {\n      theme = 'dark';\n    }\n    return theme;\n  };\n\n  // Export object\n  return device;\n}\n\nconst IS_BROWSER = (() => {\n  const document = getDocument();\n  try {\n    // eslint-disable-next-line no-restricted-globals\n    return Boolean(\n      document &&\n        document.body &&\n        document.body.getBoundingClientRect &&\n        document.body.getBoundingClientRect().width > 0,\n    );\n  } catch (e) {\n    return false;\n  }\n})();\n\nfunction getDevice(overrides = {}, reset = IS_BROWSER) {\n  if (!deviceCalculated || reset) {\n    deviceCalculated = calcDevice(overrides);\n  }\n  return deviceCalculated;\n}\n\nexport { getDevice };\n","class EventsClass {\n  constructor(parents = []) {\n    const self = this;\n    self.eventsParents = parents;\n    self.eventsListeners = {};\n  }\n\n  on(events, handler, priority) {\n    const self = this;\n    if (typeof handler !== 'function') return self;\n    const method = priority ? 'unshift' : 'push';\n    events.split(' ').forEach((event) => {\n      if (!self.eventsListeners[event]) self.eventsListeners[event] = [];\n      self.eventsListeners[event][method](handler);\n    });\n    return self;\n  }\n\n  once(events, handler, priority) {\n    const self = this;\n    if (typeof handler !== 'function') return self;\n    function onceHandler(...args) {\n      self.off(events, onceHandler);\n      if (onceHandler.f7proxy) {\n        delete onceHandler.f7proxy;\n      }\n      handler.apply(self, args);\n    }\n    onceHandler.f7proxy = handler;\n    return self.on(events, onceHandler, priority);\n  }\n\n  off(events, handler) {\n    const self = this;\n    if (!self.eventsListeners) return self;\n    events.split(' ').forEach((event) => {\n      if (typeof handler === 'undefined') {\n        self.eventsListeners[event] = [];\n      } else if (self.eventsListeners[event]) {\n        self.eventsListeners[event].forEach((eventHandler, index) => {\n          if (\n            eventHandler === handler ||\n            (eventHandler.f7proxy && eventHandler.f7proxy === handler)\n          ) {\n            self.eventsListeners[event].splice(index, 1);\n          }\n        });\n      }\n    });\n    return self;\n  }\n\n  emit(...args) {\n    const self = this;\n    if (!self.eventsListeners) return self;\n    let events;\n    let data;\n    let context;\n    let eventsParents;\n    if (typeof args[0] === 'string' || Array.isArray(args[0])) {\n      events = args[0];\n      data = args.slice(1, args.length);\n      context = self;\n      eventsParents = self.eventsParents;\n    } else {\n      events = args[0].events;\n      data = args[0].data;\n      context = args[0].context || self;\n      eventsParents = args[0].local ? [] : args[0].parents || self.eventsParents;\n    }\n    const eventsArray = Array.isArray(events) ? events : events.split(' ');\n    const localEvents = eventsArray.map((eventName) => eventName.replace('local::', ''));\n    const parentEvents = eventsArray.filter((eventName) => eventName.indexOf('local::') < 0);\n\n    localEvents.forEach((event) => {\n      if (self.eventsListeners && self.eventsListeners[event]) {\n        const handlers = [];\n        self.eventsListeners[event].forEach((eventHandler) => {\n          handlers.push(eventHandler);\n        });\n        handlers.forEach((eventHandler) => {\n          eventHandler.apply(context, data);\n        });\n      }\n    });\n    if (eventsParents && eventsParents.length > 0) {\n      eventsParents.forEach((eventsParent) => {\n        eventsParent.emit(parentEvents, ...data);\n      });\n    }\n    return self;\n  }\n}\n\nexport default EventsClass;\n","import { extend, now } from './utils.js';\nimport EventsClass from './events-class.js';\n\nclass Framework7Class extends EventsClass {\n  constructor(params = {}, parents = []) {\n    super(parents);\n    const self = this;\n    self.params = params;\n\n    if (self.params && self.params.on) {\n      Object.keys(self.params.on).forEach((eventName) => {\n        self.on(eventName, self.params.on[eventName]);\n      });\n    }\n  }\n\n  // eslint-disable-next-line\n  useModuleParams(module, instanceParams) {\n    if (module.params) {\n      const originalParams = {};\n      Object.keys(module.params).forEach((paramKey) => {\n        if (typeof instanceParams[paramKey] === 'undefined') return;\n        originalParams[paramKey] = extend({}, instanceParams[paramKey]);\n      });\n      extend(instanceParams, module.params);\n      Object.keys(originalParams).forEach((paramKey) => {\n        extend(instanceParams[paramKey], originalParams[paramKey]);\n      });\n    }\n  }\n\n  useModulesParams(instanceParams) {\n    const instance = this;\n    if (!instance.modules) return;\n    Object.keys(instance.modules).forEach((moduleName) => {\n      const module = instance.modules[moduleName];\n      // Extend params\n      if (module.params) {\n        extend(instanceParams, module.params);\n      }\n    });\n  }\n\n  useModule(moduleName = '', moduleParams = {}) {\n    const instance = this;\n    if (!instance.modules) return;\n    const module = typeof moduleName === 'string' ? instance.modules[moduleName] : moduleName;\n    if (!module) return;\n\n    // Extend instance methods and props\n    if (module.instance) {\n      Object.keys(module.instance).forEach((modulePropName) => {\n        const moduleProp = module.instance[modulePropName];\n        if (typeof moduleProp === 'function') {\n          instance[modulePropName] = moduleProp.bind(instance);\n        } else {\n          instance[modulePropName] = moduleProp;\n        }\n      });\n    }\n    // Add event listeners\n    if (module.on && instance.on) {\n      Object.keys(module.on).forEach((moduleEventName) => {\n        instance.on(moduleEventName, module.on[moduleEventName]);\n      });\n    }\n    // Add vnode hooks\n    if (module.vnode) {\n      if (!instance.vnodeHooks) instance.vnodeHooks = {};\n      Object.keys(module.vnode).forEach((vnodeId) => {\n        Object.keys(module.vnode[vnodeId]).forEach((hookName) => {\n          const handler = module.vnode[vnodeId][hookName];\n          if (!instance.vnodeHooks[hookName]) instance.vnodeHooks[hookName] = {};\n          if (!instance.vnodeHooks[hookName][vnodeId]) instance.vnodeHooks[hookName][vnodeId] = [];\n          instance.vnodeHooks[hookName][vnodeId].push(handler.bind(instance));\n        });\n      });\n    }\n    // Module create callback\n    if (module.create) {\n      module.create.bind(instance)(moduleParams);\n    }\n  }\n\n  useModules(modulesParams = {}) {\n    const instance = this;\n    if (!instance.modules) return;\n    Object.keys(instance.modules).forEach((moduleName) => {\n      const moduleParams = modulesParams[moduleName] || {};\n      instance.useModule(moduleName, moduleParams);\n    });\n  }\n\n  static set components(components) {\n    const Class = this;\n    if (!Class.use) return;\n    Class.use(components);\n  }\n\n  static installModule(module, ...params) {\n    const Class = this;\n    if (!Class.prototype.modules) Class.prototype.modules = {};\n    const name = module.name || `${Object.keys(Class.prototype.modules).length}_${now()}`;\n    Class.prototype.modules[name] = module;\n    // Prototype\n    if (module.proto) {\n      Object.keys(module.proto).forEach((key) => {\n        Class.prototype[key] = module.proto[key];\n      });\n    }\n    // Class\n    if (module.static) {\n      Object.keys(module.static).forEach((key) => {\n        Class[key] = module.static[key];\n      });\n    }\n    // Callback\n    if (module.install) {\n      module.install.apply(Class, params);\n    }\n    return Class;\n  }\n\n  static use(module, ...params) {\n    const Class = this;\n    if (Array.isArray(module)) {\n      module.forEach((m) => Class.installModule(m));\n      return Class;\n    }\n    return Class.installModule(module, ...params);\n  }\n}\n\nexport default Framework7Class;\n","import $ from './dom7.js';\n\nexport default function ConstructorMethods(parameters = {}) {\n  const { defaultSelector, constructor: Constructor, domProp, app, addMethods } = parameters;\n  const methods = {\n    create(...args) {\n      if (app) return new Constructor(app, ...args);\n      return new Constructor(...args);\n    },\n    get(el = defaultSelector) {\n      if (el instanceof Constructor) return el;\n      const $el = $(el);\n      if ($el.length === 0) return undefined;\n      return $el[0][domProp];\n    },\n    destroy(el) {\n      const instance = methods.get(el);\n      if (instance && instance.destroy) return instance.destroy();\n      return undefined;\n    },\n  };\n  if (addMethods && Array.isArray(addMethods)) {\n    addMethods.forEach((methodName) => {\n      methods[methodName] = (el = defaultSelector, ...args) => {\n        const instance = methods.get(el);\n        if (instance && instance[methodName]) return instance[methodName](...args);\n        return undefined;\n      };\n    });\n  }\n  return methods;\n}\n","import $ from './dom7.js';\nimport { extend } from './utils.js';\nimport ConstructorMethods from './constructor-methods.js';\n\nexport default function ModalMethods(parameters = {}) {\n  const { defaultSelector, constructor: Constructor, app } = parameters;\n  const methods = extend(\n    ConstructorMethods({\n      defaultSelector,\n      constructor: Constructor,\n      app,\n      domProp: 'f7Modal',\n    }),\n    {\n      open(el, animate, targetEl) {\n        let $el = $(el);\n        if ($el.length > 1 && targetEl) {\n          // check if same modal in other page\n          const $targetPage = $(targetEl).parents('.page');\n          if ($targetPage.length) {\n            $el.each((modalEl) => {\n              const $modalEl = $(modalEl);\n              if ($modalEl.parents($targetPage)[0] === $targetPage[0]) {\n                $el = $modalEl;\n              }\n            });\n          }\n        }\n        if ($el.length > 1) {\n          $el = $el.eq($el.length - 1);\n        }\n        if (!$el.length) return undefined;\n        let instance = $el[0].f7Modal;\n        if (!instance) {\n          const params = $el.dataset();\n          instance = new Constructor(app, { el: $el, ...params });\n        }\n        return instance.open(animate);\n      },\n      close(el = defaultSelector, animate, targetEl) {\n        let $el = $(el);\n        if (!$el.length) return undefined;\n        if ($el.length > 1) {\n          // check if close link (targetEl) in this modal\n          let $parentEl;\n          if (targetEl) {\n            const $targetEl = $(targetEl);\n            if ($targetEl.length) {\n              $parentEl = $targetEl.parents($el);\n            }\n          }\n          if ($parentEl && $parentEl.length > 0) {\n            $el = $parentEl;\n          } else {\n            $el = $el.eq($el.length - 1);\n          }\n        }\n        let instance = $el[0].f7Modal;\n        if (!instance) {\n          const params = $el.dataset();\n          instance = new Constructor(app, { el: $el, ...params });\n        }\n        return instance.close(animate);\n      },\n    },\n  );\n  return methods;\n}\n","import { getWindow, getDocument } from 'ssr-window';\nimport { id } from '../../shared/utils.js';\nimport $ from '../../shared/dom7.js';\n\nconst fetchedModules = [];\nfunction loadModule(moduleToLoad) {\n  const Framework7 = this;\n  const window = getWindow();\n  const document = getDocument();\n  return new Promise((resolve, reject) => {\n    const app = Framework7.instance;\n    let modulePath;\n    let moduleObj;\n    let moduleFunc;\n    if (!moduleToLoad) {\n      reject(new Error('Framework7: Lazy module must be specified'));\n      return;\n    }\n\n    function install(module) {\n      Framework7.use(module);\n\n      if (app) {\n        app.useModuleParams(module, app.params);\n        app.useModule(module);\n      }\n    }\n\n    if (typeof moduleToLoad === 'string') {\n      const matchNamePattern = moduleToLoad.match(/([a-z0-9-]*)/i);\n      if (\n        moduleToLoad.indexOf('.') < 0 &&\n        matchNamePattern &&\n        matchNamePattern[0].length === moduleToLoad.length\n      ) {\n        if (!app || (app && !app.params.lazyModulesPath)) {\n          reject(\n            new Error(\n              'Framework7: \"lazyModulesPath\" app parameter must be specified to fetch module by name',\n            ),\n          );\n          return;\n        }\n        modulePath = `${app.params.lazyModulesPath}/${moduleToLoad}/${moduleToLoad}.lazy.js`;\n      } else {\n        modulePath = moduleToLoad;\n      }\n    } else if (typeof moduleToLoad === 'function') {\n      moduleFunc = moduleToLoad;\n    } else {\n      // considering F7-Plugin object\n      moduleObj = moduleToLoad;\n    }\n\n    if (moduleFunc) {\n      const module = moduleFunc(Framework7, false);\n      if (!module) {\n        reject(\n          new Error(\"Framework7: Can't find Framework7 component in specified component function\"),\n        );\n        return;\n      }\n      // Check if it was added\n      if (Framework7.prototype.modules && Framework7.prototype.modules[module.name]) {\n        resolve();\n        return;\n      }\n      // Install It\n      install(module);\n\n      resolve();\n    }\n    if (moduleObj) {\n      const module = moduleObj;\n      if (!module) {\n        reject(new Error(\"Framework7: Can't find Framework7 component in specified component\"));\n        return;\n      }\n      // Check if it was added\n      if (Framework7.prototype.modules && Framework7.prototype.modules[module.name]) {\n        resolve();\n        return;\n      }\n      // Install It\n      install(module);\n\n      resolve();\n    }\n    if (modulePath) {\n      if (fetchedModules.indexOf(modulePath) >= 0) {\n        resolve();\n        return;\n      }\n      fetchedModules.push(modulePath);\n      const scriptLoad = new Promise((resolveScript, rejectScript) => {\n        fetch(modulePath)\n          .then((res) => res.text())\n          .then((scriptContent) => {\n            const callbackId = id();\n            const callbackLoadName = `f7_component_loader_callback_${callbackId}`;\n\n            const scriptEl = document.createElement('script');\n            scriptEl.innerHTML = `window.${callbackLoadName} = function (Framework7, Framework7AutoInstallComponent) {return ${scriptContent.trim()}}`;\n            $('head').append(scriptEl);\n\n            const componentLoader = window[callbackLoadName];\n            delete window[callbackLoadName];\n            $(scriptEl).remove();\n\n            const module = componentLoader(Framework7, false);\n\n            if (!module) {\n              rejectScript(\n                new Error(`Framework7: Can't find Framework7 component in ${modulePath} file`),\n              );\n              return;\n            }\n\n            // Check if it was added\n            if (Framework7.prototype.modules && Framework7.prototype.modules[module.name]) {\n              resolveScript();\n              return;\n            }\n\n            // Install It\n            install(module);\n\n            resolveScript();\n          })\n          .catch((err) => {\n            rejectScript(err);\n          });\n      });\n      const styleLoad = new Promise((resolveStyle) => {\n        fetch(\n          modulePath\n            .replace('.lazy.js', app.rtl ? '.rtl.css' : '.css')\n            .replace('.js', app.rtl ? '.rtl.css' : '.css'),\n        )\n          .then((res) => res.text())\n          .then((styleContent) => {\n            const styleEl = document.createElement('style');\n            styleEl.innerHTML = styleContent;\n            $('head').append(styleEl);\n\n            resolveStyle();\n          })\n          .catch(() => {\n            resolveStyle();\n          });\n      });\n\n      Promise.all([scriptLoad, styleLoad])\n        .then(() => {\n          resolve();\n        })\n        .catch((err) => {\n          reject(err);\n        });\n    }\n  });\n}\n\nexport default loadModule;\n","/* eslint-disable prefer-rest-params */\nconst $jsx = (tag, props, ...args) => {\n  const attrs = props || {};\n  const children = args || [];\n\n  const attrsString = Object.keys(attrs)\n    .map((attr) => {\n      if (attr[0] === '_') {\n        if (attrs[attr]) return attr.replace('_', '');\n        return '';\n      }\n      return `${attr}=\"${attrs[attr]}\"`;\n    })\n    .filter((attr) => !!attr)\n    .join(' ');\n\n  if (['path', 'img', 'circle', 'polygon', 'line', 'input'].indexOf(tag) >= 0) {\n    return `<${tag} ${attrsString} />`.trim();\n  }\n  const childrenContent = children\n    .filter((c) => !!c)\n    .map((c) => (Array.isArray(c) ? c.join('') : c))\n    .join('');\n  return `<${tag} ${attrsString}>${childrenContent}</${tag}>`.trim();\n};\n\nexport default $jsx;\n","/* eslint-disable no-underscore-dangle */\n\nimport { getWindow, getDocument } from 'ssr-window';\nimport { extend, nextFrame } from '../../shared/utils.js';\nimport { getDevice } from '../../shared/get-device.js';\nimport { getSupport } from '../../shared/get-support.js';\nimport Framework7Class from '../../shared/class.js';\nimport EventsClass from '../../shared/events-class.js';\nimport ConstructorMethods from '../../shared/constructor-methods.js';\nimport ModalMethods from '../../shared/modal-methods.js';\nimport $ from '../../shared/dom7.js';\nimport loadModule from './load-module.js';\nimport $jsx from '../../shared/$jsx.js';\n\nclass Framework7 extends Framework7Class {\n  constructor(params = {}) {\n    super(params);\n    // eslint-disable-next-line\n    if (Framework7.instance && typeof window !== 'undefined') {\n      throw new Error(\"Framework7 is already initialized and can't be initialized more than once\");\n    }\n    const device = getDevice({ userAgent: params.userAgent || undefined });\n    const support = getSupport();\n\n    const passedParams = extend({}, params);\n\n    // App Instance\n    const app = this;\n\n    app.device = device;\n    app.support = support;\n\n    const w = getWindow();\n    const d = getDocument();\n\n    Framework7.instance = app;\n\n    // Default\n    const defaults = {\n      el: 'body',\n      theme: 'auto',\n      routes: [],\n      name: 'Framework7',\n      lazyModulesPath: null,\n      initOnDeviceReady: true,\n      init: true,\n      darkMode: undefined,\n      iosTranslucentBars: true,\n      iosTranslucentModals: true,\n      component: undefined,\n      componentUrl: undefined,\n      userAgent: null,\n      url: null,\n      colors: {\n        primary: '#007aff',\n        red: '#ff3b30',\n        green: '#4cd964',\n        blue: '#2196f3',\n        pink: '#ff2d55',\n        yellow: '#ffcc00',\n        orange: '#ff9500',\n        purple: '#9c27b0',\n        deeppurple: '#673ab7',\n        lightblue: '#5ac8fa',\n        teal: '#009688',\n        lime: '#cddc39',\n        deeporange: '#ff6b22',\n        white: '#ffffff',\n        black: '#000000',\n      },\n    };\n\n    // Extend defaults with modules params\n    app.useModulesParams(defaults);\n\n    // Extend defaults with passed params\n    app.params = extend(defaults, params);\n\n    extend(app, {\n      // App Name\n      name: app.params.name,\n      // Routes\n      routes: app.params.routes,\n\n      // Theme\n      theme: (function getTheme() {\n        if (app.params.theme === 'auto') {\n          if (device.ios) return 'ios';\n          return 'md';\n        }\n        return app.params.theme;\n      })(),\n\n      // Initially passed parameters\n      passedParams,\n      online: w.navigator.onLine,\n      colors: app.params.colors,\n      darkMode: app.params.darkMode,\n    });\n\n    if (params.store) app.params.store = params.store;\n\n    // Save Root\n    if (app.$el && app.$el[0]) {\n      app.$el[0].f7 = app;\n    }\n\n    // Install Modules\n    app.useModules();\n\n    // Init Store\n    app.initStore();\n\n    // Init\n    if (app.params.init) {\n      if (device.cordova && app.params.initOnDeviceReady) {\n        $(d).on('deviceready', () => {\n          app.init();\n        });\n      } else {\n        app.init();\n      }\n    }\n\n    // Return app instance\n    return app;\n  }\n\n  setColorTheme(color) {\n    if (!color) return;\n    const app = this;\n    app.colors.primary = color;\n    app.setColors();\n  }\n\n  setColors() {\n    const app = this;\n    const document = getDocument();\n    if (!app.colorsStyleEl) {\n      app.colorsStyleEl = document.createElement('style');\n      document.head.prepend(app.colorsStyleEl);\n    }\n\n    app.colorsStyleEl.textContent = app.utils.colorThemeCSSStyles(app.colors);\n  }\n\n  mount(rootEl) {\n    const app = this;\n    const window = getWindow();\n    const document = getDocument();\n    const $rootEl = $(rootEl || app.params.el).eq(0);\n    app.$el = $rootEl;\n    if (app.$el && app.$el[0]) {\n      app.el = app.$el[0];\n      app.el.f7 = app;\n      app.rtl = $rootEl.css('direction') === 'rtl';\n    }\n\n    // Auto Dark Mode\n    const DARK = '(prefers-color-scheme: dark)';\n    const LIGHT = '(prefers-color-scheme: light)';\n    app.mq = {};\n    if (window.matchMedia) {\n      app.mq.dark = window.matchMedia(DARK);\n      app.mq.light = window.matchMedia(LIGHT);\n    }\n    app.colorSchemeListener = function colorSchemeListener({ matches, media }) {\n      if (!matches) {\n        return;\n      }\n      const html = document.querySelector('html');\n      if (media === DARK) {\n        html.classList.add('dark');\n        app.darkMode = true;\n        app.emit('darkModeChange', true);\n      } else if (media === LIGHT) {\n        html.classList.remove('dark');\n        app.darkMode = false;\n        app.emit('darkModeChange', false);\n      }\n    };\n    app.emit('mount');\n  }\n\n  initStore() {\n    const app = this;\n    if (typeof app.params.store !== 'undefined' && app.params.store.__store) {\n      app.store = app.params.store;\n    } else {\n      app.store = app.createStore(app.params.store);\n    }\n  }\n\n  enableAutoDarkMode() {\n    const window = getWindow();\n    const document = getDocument();\n    if (!window.matchMedia) return;\n    const app = this;\n    const html = document.querySelector('html');\n    if (app.mq.dark && app.mq.light) {\n      app.mq.dark.addEventListener('change', app.colorSchemeListener);\n      app.mq.light.addEventListener('change', app.colorSchemeListener);\n    }\n    if (app.mq.dark && app.mq.dark.matches) {\n      html.classList.add('dark');\n      app.darkMode = true;\n      app.emit('darkModeChange', true);\n    } else if (app.mq.light && app.mq.light.matches) {\n      html.classList.remove('dark');\n      app.darkMode = false;\n      app.emit('darkModeChange', false);\n    }\n  }\n\n  disableAutoDarkMode() {\n    const window = getWindow();\n    if (!window.matchMedia) return;\n    const app = this;\n    if (app.mq.dark) app.mq.dark.removeEventListener('change', app.colorSchemeListener);\n    if (app.mq.light) app.mq.light.removeEventListener('change', app.colorSchemeListener);\n  }\n\n  setDarkMode(mode) {\n    const app = this;\n    if (mode === 'auto') {\n      app.enableAutoDarkMode();\n    } else {\n      app.disableAutoDarkMode();\n      $('html')[mode ? 'addClass' : 'removeClass']('dark');\n      app.darkMode = mode;\n    }\n  }\n\n  initAppComponent(callback) {\n    const app = this;\n    app.router.componentLoader(\n      app.params.component,\n      app.params.componentUrl,\n      { componentOptions: { el: app.$el[0] } },\n      (el) => {\n        app.$el = $(el);\n        app.$el[0].f7 = app;\n        app.$elComponent = el.f7Component;\n        app.el = app.$el[0];\n        if (callback) callback();\n      },\n      () => {},\n    );\n  }\n\n  init(rootEl) {\n    const app = this;\n\n    app.setColors();\n    app.mount(rootEl);\n\n    const init = () => {\n      if (app.initialized) return;\n\n      app.$el.addClass('framework7-initializing');\n\n      // RTL attr\n      if (app.rtl) {\n        $('html').attr('dir', 'rtl');\n      }\n\n      // Auto Dark Mode\n      if (typeof app.params.darkMode === 'undefined') {\n        app.darkMode = $('html').hasClass('dark');\n      } else {\n        app.setDarkMode(app.params.darkMode);\n      }\n\n      // Watch for online/offline state\n      const window = getWindow();\n      window.addEventListener('offline', () => {\n        app.online = false;\n        app.emit('offline');\n        app.emit('connection', false);\n      });\n      window.addEventListener('online', () => {\n        app.online = true;\n        app.emit('online');\n        app.emit('connection', true);\n      });\n\n      // Root class\n      app.$el.addClass('framework7-root');\n\n      // Theme class\n      $('html').removeClass('ios md').addClass(app.theme);\n\n      // iOS Translucent\n      if (app.params.iosTranslucentBars && app.theme === 'ios') {\n        $('html').addClass('ios-translucent-bars');\n      }\n      if (app.params.iosTranslucentModals && app.theme === 'ios') {\n        $('html').addClass('ios-translucent-modals');\n      }\n\n      // Init class\n      nextFrame(() => {\n        app.$el.removeClass('framework7-initializing');\n      });\n      // Emit, init other modules\n      app.initialized = true;\n      app.emit('init');\n    };\n    if (app.params.component || app.params.componentUrl) {\n      app.initAppComponent(() => {\n        init();\n      });\n    } else {\n      init();\n    }\n    return app;\n  }\n\n  // eslint-disable-next-line\n  loadModule(...args) {\n    return Framework7.loadModule(...args);\n  }\n\n  // eslint-disable-next-line\n  loadModules(...args) {\n    return Framework7.loadModules(...args);\n  }\n\n  getVnodeHooks(hook, id) {\n    const app = this;\n    if (!app.vnodeHooks || !app.vnodeHooks[hook]) return [];\n    return app.vnodeHooks[hook][id] || [];\n  }\n\n  // eslint-disable-next-line\n  get $() {\n    return $;\n  }\n\n  static get Dom7() {\n    return $;\n  }\n\n  static get $() {\n    return $;\n  }\n\n  static get device() {\n    return getDevice();\n  }\n\n  static get support() {\n    return getSupport();\n  }\n\n  static get Class() {\n    return Framework7Class;\n  }\n\n  static get Events() {\n    return EventsClass;\n  }\n}\n\nFramework7.$jsx = $jsx;\nFramework7.ModalMethods = ModalMethods;\nFramework7.ConstructorMethods = ConstructorMethods;\n\nFramework7.loadModule = loadModule;\nFramework7.loadModules = function loadModules(modules) {\n  return Promise.all(modules.map((module) => Framework7.loadModule(module)));\n};\n\nexport default Framework7;\n","import { getDocument } from 'ssr-window';\nimport { getDevice } from '../../shared/get-device.js';\n\nexport default {\n  name: 'device',\n  static: {\n    getDevice,\n  },\n  on: {\n    init() {\n      const document = getDocument();\n      const device = getDevice();\n      const classNames = [];\n      const html = document.querySelector('html');\n      const metaStatusbar = document.querySelector(\n        'meta[name=\"apple-mobile-web-app-status-bar-style\"]',\n      );\n      if (!html) return;\n      if (\n        device.standalone &&\n        device.ios &&\n        metaStatusbar &&\n        metaStatusbar.content === 'black-translucent'\n      ) {\n        classNames.push('device-full-viewport');\n      }\n\n      // Pixel Ratio\n      classNames.push(`device-pixel-ratio-${Math.floor(device.pixelRatio)}`);\n      // OS classes\n      if (device.os && !device.desktop) {\n        classNames.push(`device-${device.os}`);\n      } else if (device.desktop) {\n        classNames.push('device-desktop');\n        if (device.os) {\n          classNames.push(`device-${device.os}`);\n        }\n      }\n      if (device.cordova) {\n        classNames.push('device-cordova');\n      }\n      if (device.capacitor) {\n        classNames.push('device-capacitor');\n      }\n\n      // Add html classes\n      classNames.forEach((className) => {\n        html.classList.add(className);\n      });\n    },\n  },\n};\n","import { getSupport } from '../../shared/get-support.js';\n\nexport default {\n  name: 'support',\n  static: {\n    getSupport,\n  },\n};\n","import * as utils from '../../shared/utils.js';\n\nexport default {\n  name: 'utils',\n  proto: {\n    utils,\n  },\n  static: {\n    utils,\n  },\n};\n","import { getWindow, getDocument } from 'ssr-window';\nimport { getDevice } from '../../shared/get-device.js';\n\nexport default {\n  name: 'resize',\n  create() {\n    const app = this;\n    app.getSize = () => {\n      if (!app.el) return { width: 0, height: 0, left: 0, top: 0 };\n      const offset = app.$el.offset();\n      const [width, height, left, top] = [\n        app.el.offsetWidth,\n        app.el.offsetHeight,\n        offset.left,\n        offset.top,\n      ];\n      app.width = width;\n      app.height = height;\n      app.left = left;\n      app.top = top;\n      return { width, height, left, top };\n    };\n  },\n  on: {\n    init() {\n      const app = this;\n      const window = getWindow();\n\n      // Get Size\n      app.getSize();\n\n      // Emit resize\n      window.addEventListener(\n        'resize',\n        () => {\n          app.emit('resize');\n        },\n        false,\n      );\n\n      // Emit orientationchange\n      window.addEventListener('orientationchange', () => {\n        app.emit('orientationchange');\n      });\n    },\n    orientationchange() {\n      const document = getDocument();\n      const device = getDevice();\n      // Fix iPad weird body scroll\n      if (device.ipad) {\n        document.body.scrollLeft = 0;\n        setTimeout(() => {\n          document.body.scrollLeft = 0;\n        }, 0);\n      }\n    },\n    resize() {\n      const app = this;\n      app.getSize();\n    },\n  },\n};\n","/* eslint-disable no-nested-ternary */\nimport { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { getSupport } from '../../shared/get-support.js';\nimport { getDevice } from '../../shared/get-device.js';\nimport { extend } from '../../shared/utils.js';\n\nfunction initTouch() {\n  const app = this;\n  const device = getDevice();\n  const support = getSupport();\n  const window = getWindow();\n  const document = getDocument();\n  const params = app.params.touch;\n  const useRipple = params[`${app.theme}TouchRipple`];\n\n  if (device.ios && device.webView) {\n    // Strange hack required for iOS 8 webview to work on inputs\n    window.addEventListener('touchstart', () => {});\n  }\n\n  let touchStartX;\n  let touchStartY;\n  let targetElement;\n  let isMoved;\n  let tapHoldFired;\n  let tapHoldTimeout;\n  let preventClick;\n\n  let activableElement;\n  let activeTimeout;\n\n  let rippleWave;\n  let rippleTarget;\n  let rippleTimeout;\n\n  function findActivableElement(el) {\n    const target = $(el);\n    const parents = target.parents(params.activeStateElements);\n    if (target.closest('.no-active-state').length) {\n      return null;\n    }\n    let activable;\n    if (target.is(params.activeStateElements)) {\n      activable = target;\n    }\n    if (parents.length > 0) {\n      activable = activable ? activable.add(parents) : parents;\n    }\n    if (activable && activable.length > 1) {\n      const newActivable = [];\n      let preventPropagation;\n      for (let i = 0; i < activable.length; i += 1) {\n        if (!preventPropagation) {\n          newActivable.push(activable[i]);\n          if (\n            activable.eq(i).hasClass('prevent-active-state-propagation') ||\n            activable.eq(i).hasClass('no-active-state-propagation')\n          ) {\n            preventPropagation = true;\n          }\n        }\n      }\n      activable = $(newActivable);\n    }\n    return activable || target;\n  }\n\n  function isInsideScrollableView(el) {\n    const pageContent = el.parents('.page-content');\n    return pageContent.length > 0;\n  }\n\n  function addActive() {\n    if (!activableElement) return;\n    activableElement.addClass('active-state');\n  }\n  function removeActive() {\n    if (!activableElement) return;\n    activableElement.removeClass('active-state');\n    activableElement = null;\n  }\n\n  // Ripple handlers\n  function findRippleElement(el) {\n    const rippleElements = params.touchRippleElements;\n    const $el = $(el);\n    if ($el.is(rippleElements)) {\n      if ($el.hasClass('no-ripple')) {\n        return false;\n      }\n      return $el;\n    }\n    if ($el.parents(rippleElements).length > 0) {\n      const rippleParent = $el.parents(rippleElements).eq(0);\n      if (rippleParent.hasClass('no-ripple')) {\n        return false;\n      }\n      return rippleParent;\n    }\n    return false;\n  }\n  function createRipple($el, x, y) {\n    if (!$el) return;\n    rippleWave = app.touchRipple.create(app, $el, x, y);\n  }\n\n  function removeRipple() {\n    if (!rippleWave) return;\n    rippleWave.remove();\n    rippleWave = undefined;\n    rippleTarget = undefined;\n  }\n  function rippleTouchStart(el) {\n    rippleTarget = findRippleElement(el);\n    if (!rippleTarget || rippleTarget.length === 0) {\n      rippleTarget = undefined;\n      return;\n    }\n    const inScrollable = isInsideScrollableView(rippleTarget);\n\n    if (!inScrollable) {\n      removeRipple();\n      createRipple(rippleTarget, touchStartX, touchStartY);\n    } else {\n      clearTimeout(rippleTimeout);\n      rippleTimeout = setTimeout(() => {\n        removeRipple();\n        createRipple(rippleTarget, touchStartX, touchStartY);\n      }, 80);\n    }\n  }\n  function rippleTouchMove() {\n    clearTimeout(rippleTimeout);\n    removeRipple();\n  }\n  function rippleTouchEnd() {\n    if (!rippleWave && rippleTarget && !isMoved) {\n      clearTimeout(rippleTimeout);\n      createRipple(rippleTarget, touchStartX, touchStartY);\n      setTimeout(removeRipple, 0);\n    } else {\n      removeRipple();\n    }\n  }\n\n  // Mouse Handlers\n  function handleMouseDown(e) {\n    const $activableEl = findActivableElement(e.target);\n    if ($activableEl) {\n      $activableEl.addClass('active-state');\n      if ('which' in e && e.which === 3) {\n        setTimeout(() => {\n          $('.active-state').removeClass('active-state');\n        }, 0);\n      }\n    }\n\n    if (useRipple) {\n      touchStartX = e.pageX;\n      touchStartY = e.pageY;\n      rippleTouchStart(e.target, e.pageX, e.pageY);\n    }\n  }\n  function handleMouseMove() {\n    if (!params.activeStateOnMouseMove) {\n      $('.active-state').removeClass('active-state');\n    }\n    if (useRipple) {\n      rippleTouchMove();\n    }\n  }\n  function handleMouseUp() {\n    $('.active-state').removeClass('active-state');\n    if (useRipple) {\n      rippleTouchEnd();\n    }\n  }\n\n  function handleTouchCancel() {\n    targetElement = null;\n\n    // Remove Active State\n    clearTimeout(activeTimeout);\n    clearTimeout(tapHoldTimeout);\n    if (params.activeState) {\n      removeActive();\n    }\n\n    // Remove Ripple\n    if (useRipple) {\n      rippleTouchEnd();\n    }\n  }\n\n  let isScrolling;\n  let isSegmentedStrong = false;\n  let segmentedStrongEl = null;\n\n  const touchMoveActivableIos = '.dialog-button, .actions-button';\n  let isTouchMoveActivable = false;\n  let touchmoveActivableEl = null;\n\n  function handleTouchStart(e) {\n    if (!e.isTrusted) return true;\n    isMoved = false;\n    tapHoldFired = false;\n    preventClick = false;\n    isScrolling = undefined;\n    if (e.targetTouches.length > 1) {\n      if (activableElement) removeActive();\n      return true;\n    }\n    if (e.touches.length > 1 && activableElement) {\n      removeActive();\n    }\n    if (params.tapHold) {\n      if (tapHoldTimeout) clearTimeout(tapHoldTimeout);\n      tapHoldTimeout = setTimeout(() => {\n        if (e && e.touches && e.touches.length > 1) return;\n        tapHoldFired = true;\n        e.preventDefault();\n        preventClick = true;\n        $(e.target).trigger('taphold', e);\n        app.emit('taphold', e);\n      }, params.tapHoldDelay);\n    }\n    targetElement = e.target;\n    touchStartX = e.targetTouches[0].pageX;\n    touchStartY = e.targetTouches[0].pageY;\n    isSegmentedStrong = e.target.closest(\n      '.segmented-strong .button-active, .segmented-strong .tab-link-active',\n    );\n    isTouchMoveActivable = app.theme === 'ios' && e.target.closest(touchMoveActivableIos);\n    if (isSegmentedStrong) {\n      segmentedStrongEl = isSegmentedStrong.closest('.segmented-strong');\n    }\n\n    if (params.activeState) {\n      activableElement = findActivableElement(targetElement);\n      if (activableElement && !isInsideScrollableView(activableElement)) {\n        addActive();\n      } else if (activableElement) {\n        activeTimeout = setTimeout(addActive, 80);\n      }\n    }\n    if (useRipple) {\n      rippleTouchStart(targetElement, touchStartX, touchStartY);\n    }\n    return true;\n  }\n  function handleTouchMove(e) {\n    if (!e.isTrusted) return;\n    let touch;\n    let distance;\n    let shouldRemoveActive = true;\n\n    if (e.type === 'touchmove') {\n      touch = e.targetTouches[0];\n      distance = params.touchClicksDistanceThreshold;\n    }\n\n    const touchCurrentX = e.targetTouches[0].pageX;\n    const touchCurrentY = e.targetTouches[0].pageY;\n\n    if (typeof isScrolling === 'undefined') {\n      isScrolling = !!(\n        isScrolling || Math.abs(touchCurrentY - touchStartY) > Math.abs(touchCurrentX - touchStartX)\n      );\n    }\n\n    if (isTouchMoveActivable || (!isScrolling && isSegmentedStrong && segmentedStrongEl)) {\n      if (e.cancelable) e.preventDefault();\n    }\n\n    if (!isScrolling && isSegmentedStrong && segmentedStrongEl) {\n      const elementFromPoint = document.elementFromPoint(\n        e.targetTouches[0].clientX,\n        e.targetTouches[0].clientY,\n      );\n      const buttonEl = elementFromPoint.closest(\n        '.segmented-strong .button:not(.button-active):not(.tab-link-active)',\n      );\n      if (buttonEl && segmentedStrongEl.contains(buttonEl)) {\n        $(buttonEl).trigger('click', 'f7Segmented');\n        targetElement = buttonEl;\n      }\n    }\n\n    if (distance && touch) {\n      const pageX = touch.pageX;\n      const pageY = touch.pageY;\n      if (Math.abs(pageX - touchStartX) > distance || Math.abs(pageY - touchStartY) > distance) {\n        isMoved = true;\n      }\n    } else {\n      isMoved = true;\n    }\n    if (isMoved) {\n      preventClick = true;\n      // Keep active state on touchMove (for dialog and actions buttons)\n      if (isTouchMoveActivable) {\n        const elementFromPoint = document.elementFromPoint(\n          e.targetTouches[0].clientX,\n          e.targetTouches[0].clientY,\n        );\n        touchmoveActivableEl = elementFromPoint.closest(touchMoveActivableIos);\n        if (\n          touchmoveActivableEl &&\n          activableElement &&\n          activableElement[0] === touchmoveActivableEl\n        ) {\n          shouldRemoveActive = false;\n        } else if (touchmoveActivableEl) {\n          setTimeout(() => {\n            activableElement = findActivableElement(touchmoveActivableEl);\n            addActive();\n          });\n        }\n      }\n      if (params.tapHold) {\n        clearTimeout(tapHoldTimeout);\n      }\n      if (params.activeState && shouldRemoveActive) {\n        clearTimeout(activeTimeout);\n        removeActive();\n      }\n      if (useRipple) {\n        rippleTouchMove();\n      }\n    }\n  }\n  function handleTouchEnd(e) {\n    if (!e.isTrusted) return true;\n    isScrolling = undefined;\n    isSegmentedStrong = false;\n    segmentedStrongEl = null;\n    isTouchMoveActivable = false;\n    clearTimeout(activeTimeout);\n    clearTimeout(tapHoldTimeout);\n    if (touchmoveActivableEl) {\n      $(touchmoveActivableEl).trigger('click', 'f7TouchMoveActivable');\n      touchmoveActivableEl = null;\n    }\n    if (document.activeElement === e.target) {\n      if (params.activeState) removeActive();\n      if (useRipple) {\n        rippleTouchEnd();\n      }\n      return true;\n    }\n    if (params.activeState) {\n      addActive();\n      setTimeout(removeActive, 0);\n    }\n    if (useRipple) {\n      rippleTouchEnd();\n    }\n    if ((params.tapHoldPreventClicks && tapHoldFired) || preventClick) {\n      if (e.cancelable) e.preventDefault();\n      preventClick = true;\n      return false;\n    }\n    return true;\n  }\n  function handleClick(e) {\n    const isOverswipe = e && e.detail && e.detail === 'f7Overswipe';\n    const isSegmented = e && e.detail && e.detail === 'f7Segmented';\n    // eslint-disable-next-line\n    const isTouchMoveActivable = e && e.detail && e.detail === 'f7TouchMoveActivable';\n    let localPreventClick = preventClick;\n    if (targetElement && e.target !== targetElement) {\n      if (isOverswipe || isSegmented || isTouchMoveActivable) {\n        localPreventClick = false;\n      } else {\n        localPreventClick = true;\n      }\n    } else if (isTouchMoveActivable) {\n      localPreventClick = false;\n    }\n    if (params.tapHold && params.tapHoldPreventClicks && tapHoldFired) {\n      localPreventClick = true;\n    }\n    if (localPreventClick) {\n      e.stopImmediatePropagation();\n      e.stopPropagation();\n      e.preventDefault();\n    }\n\n    if (params.tapHold) {\n      tapHoldTimeout = setTimeout(\n        () => {\n          tapHoldFired = false;\n        },\n        device.ios || device.androidChrome ? 100 : 400,\n      );\n    }\n    preventClick = false;\n    targetElement = null;\n\n    return !localPreventClick;\n  }\n\n  function emitAppTouchEvent(name, e) {\n    app.emit({\n      events: name,\n      data: [e],\n    });\n  }\n  function appClick(e) {\n    emitAppTouchEvent('click', e);\n  }\n  function appTouchStartActive(e) {\n    emitAppTouchEvent('touchstart touchstart:active', e);\n  }\n  function appTouchMoveActive(e) {\n    emitAppTouchEvent('touchmove touchmove:active', e);\n  }\n  function appTouchEndActive(e) {\n    emitAppTouchEvent('touchend touchend:active', e);\n  }\n  function appTouchStartPassive(e) {\n    emitAppTouchEvent('touchstart:passive', e);\n  }\n  function appTouchMovePassive(e) {\n    emitAppTouchEvent('touchmove:passive', e);\n  }\n  function appTouchEndPassive(e) {\n    emitAppTouchEvent('touchend:passive', e);\n  }\n\n  const passiveListener = support.passiveListener ? { passive: true } : false;\n  const passiveListenerCapture = support.passiveListener ? { passive: true, capture: true } : true;\n  const activeListener = support.passiveListener ? { passive: false } : false;\n  const activeListenerCapture = support.passiveListener ? { passive: false, capture: true } : true;\n\n  document.addEventListener('click', appClick, true);\n\n  if (support.passiveListener) {\n    document.addEventListener(app.touchEvents.start, appTouchStartActive, activeListenerCapture);\n    document.addEventListener(app.touchEvents.move, appTouchMoveActive, activeListener);\n    document.addEventListener(app.touchEvents.end, appTouchEndActive, activeListener);\n\n    document.addEventListener(app.touchEvents.start, appTouchStartPassive, passiveListenerCapture);\n    document.addEventListener(app.touchEvents.move, appTouchMovePassive, passiveListener);\n    document.addEventListener(app.touchEvents.end, appTouchEndPassive, passiveListener);\n  } else {\n    document.addEventListener(\n      app.touchEvents.start,\n      (e) => {\n        appTouchStartActive(e);\n        appTouchStartPassive(e);\n      },\n      true,\n    );\n    document.addEventListener(\n      app.touchEvents.move,\n      (e) => {\n        appTouchMoveActive(e);\n        appTouchMovePassive(e);\n      },\n      false,\n    );\n    document.addEventListener(\n      app.touchEvents.end,\n      (e) => {\n        appTouchEndActive(e);\n        appTouchEndPassive(e);\n      },\n      false,\n    );\n  }\n\n  if (support.touch) {\n    app.on('click', handleClick);\n    app.on('touchstart', handleTouchStart);\n    app.on('touchmove', handleTouchMove);\n    app.on('touchend', handleTouchEnd);\n    document.addEventListener('touchcancel', handleTouchCancel, { passive: true });\n  } else if (params.activeState) {\n    app.on('touchstart', handleMouseDown);\n    app.on('touchmove', handleMouseMove);\n    app.on('touchend', handleMouseUp);\n    document.addEventListener('pointercancel', handleMouseUp, { passive: true });\n  }\n  document.addEventListener('contextmenu', (e) => {\n    if (\n      params.disableContextMenu &&\n      (device.ios ||\n        device.android ||\n        device.cordova ||\n        (window.Capacitor && window.Capacitor.isNative))\n    ) {\n      e.preventDefault();\n    }\n    if (useRipple) {\n      if (activableElement) removeActive();\n      rippleTouchEnd();\n    }\n  });\n}\n\nexport default {\n  name: 'touch',\n  params: {\n    touch: {\n      // Clicks\n      touchClicksDistanceThreshold: 5,\n      // ContextMenu\n      disableContextMenu: false,\n      // Tap Hold\n      tapHold: false,\n      tapHoldDelay: 750,\n      tapHoldPreventClicks: true,\n      // Active State\n      activeState: true,\n      activeStateElements:\n        'a, button, label, span, .actions-button, .stepper-button, .stepper-button-plus, .stepper-button-minus, .card-expandable, .link, .item-link, .accordion-item-toggle',\n      activeStateOnMouseMove: false,\n      mdTouchRipple: true,\n      iosTouchRipple: false,\n      touchRippleElements:\n        '.ripple, .link, .item-link, .list label.item-content, .list-button, .links-list a, .button, button, .input-clear-button, .dialog-button, .tab-link, .item-radio, .item-checkbox, .actions-button, .searchbar-disable-button, .fab a, .checkbox, .radio, .data-table .sortable-cell:not(.input-cell), .notification-close-button, .stepper-button, .stepper-button-minus, .stepper-button-plus, .list.accordion-list .accordion-item-toggle',\n      touchRippleInsetElements:\n        '.ripple-inset, .icon-only, .searchbar-disable-button, .input-clear-button, .notification-close-button, .md .navbar .link.back',\n    },\n  },\n  create() {\n    const app = this;\n    const support = getSupport();\n    extend(app, {\n      touchEvents: {\n        start: support.touch ? 'touchstart' : support.pointerEvents ? 'pointerdown' : 'mousedown',\n        move: support.touch ? 'touchmove' : support.pointerEvents ? 'pointermove' : 'mousemove',\n        end: support.touch ? 'touchend' : support.pointerEvents ? 'pointerup' : 'mouseup',\n      },\n    });\n  },\n  on: {\n    init: initTouch,\n  },\n};\n","/**\n * Tokenize input string.\n */\nfunction lexer(str) {\n    var tokens = [];\n    var i = 0;\n    while (i < str.length) {\n        var char = str[i];\n        if (char === \"*\" || char === \"+\" || char === \"?\") {\n            tokens.push({ type: \"MODIFIER\", index: i, value: str[i++] });\n            continue;\n        }\n        if (char === \"\\\\\") {\n            tokens.push({ type: \"ESCAPED_CHAR\", index: i++, value: str[i++] });\n            continue;\n        }\n        if (char === \"{\") {\n            tokens.push({ type: \"OPEN\", index: i, value: str[i++] });\n            continue;\n        }\n        if (char === \"}\") {\n            tokens.push({ type: \"CLOSE\", index: i, value: str[i++] });\n            continue;\n        }\n        if (char === \":\") {\n            var name = \"\";\n            var j = i + 1;\n            while (j < str.length) {\n                var code = str.charCodeAt(j);\n                if (\n                // `0-9`\n                (code >= 48 && code <= 57) ||\n                    // `A-Z`\n                    (code >= 65 && code <= 90) ||\n                    // `a-z`\n                    (code >= 97 && code <= 122) ||\n                    // `_`\n                    code === 95) {\n                    name += str[j++];\n                    continue;\n                }\n                break;\n            }\n            if (!name)\n                throw new TypeError(\"Missing parameter name at \".concat(i));\n            tokens.push({ type: \"NAME\", index: i, value: name });\n            i = j;\n            continue;\n        }\n        if (char === \"(\") {\n            var count = 1;\n            var pattern = \"\";\n            var j = i + 1;\n            if (str[j] === \"?\") {\n                throw new TypeError(\"Pattern cannot start with \\\"?\\\" at \".concat(j));\n            }\n            while (j < str.length) {\n                if (str[j] === \"\\\\\") {\n                    pattern += str[j++] + str[j++];\n                    continue;\n                }\n                if (str[j] === \")\") {\n                    count--;\n                    if (count === 0) {\n                        j++;\n                        break;\n                    }\n                }\n                else if (str[j] === \"(\") {\n                    count++;\n                    if (str[j + 1] !== \"?\") {\n                        throw new TypeError(\"Capturing groups are not allowed at \".concat(j));\n                    }\n                }\n                pattern += str[j++];\n            }\n            if (count)\n                throw new TypeError(\"Unbalanced pattern at \".concat(i));\n            if (!pattern)\n                throw new TypeError(\"Missing pattern at \".concat(i));\n            tokens.push({ type: \"PATTERN\", index: i, value: pattern });\n            i = j;\n            continue;\n        }\n        tokens.push({ type: \"CHAR\", index: i, value: str[i++] });\n    }\n    tokens.push({ type: \"END\", index: i, value: \"\" });\n    return tokens;\n}\n/**\n * Parse a string for the raw tokens.\n */\nexport function parse(str, options) {\n    if (options === void 0) { options = {}; }\n    var tokens = lexer(str);\n    var _a = options.prefixes, prefixes = _a === void 0 ? \"./\" : _a;\n    var defaultPattern = \"[^\".concat(escapeString(options.delimiter || \"/#?\"), \"]+?\");\n    var result = [];\n    var key = 0;\n    var i = 0;\n    var path = \"\";\n    var tryConsume = function (type) {\n        if (i < tokens.length && tokens[i].type === type)\n            return tokens[i++].value;\n    };\n    var mustConsume = function (type) {\n        var value = tryConsume(type);\n        if (value !== undefined)\n            return value;\n        var _a = tokens[i], nextType = _a.type, index = _a.index;\n        throw new TypeError(\"Unexpected \".concat(nextType, \" at \").concat(index, \", expected \").concat(type));\n    };\n    var consumeText = function () {\n        var result = \"\";\n        var value;\n        while ((value = tryConsume(\"CHAR\") || tryConsume(\"ESCAPED_CHAR\"))) {\n            result += value;\n        }\n        return result;\n    };\n    while (i < tokens.length) {\n        var char = tryConsume(\"CHAR\");\n        var name = tryConsume(\"NAME\");\n        var pattern = tryConsume(\"PATTERN\");\n        if (name || pattern) {\n            var prefix = char || \"\";\n            if (prefixes.indexOf(prefix) === -1) {\n                path += prefix;\n                prefix = \"\";\n            }\n            if (path) {\n                result.push(path);\n                path = \"\";\n            }\n            result.push({\n                name: name || key++,\n                prefix: prefix,\n                suffix: \"\",\n                pattern: pattern || defaultPattern,\n                modifier: tryConsume(\"MODIFIER\") || \"\",\n            });\n            continue;\n        }\n        var value = char || tryConsume(\"ESCAPED_CHAR\");\n        if (value) {\n            path += value;\n            continue;\n        }\n        if (path) {\n            result.push(path);\n            path = \"\";\n        }\n        var open = tryConsume(\"OPEN\");\n        if (open) {\n            var prefix = consumeText();\n            var name_1 = tryConsume(\"NAME\") || \"\";\n            var pattern_1 = tryConsume(\"PATTERN\") || \"\";\n            var suffix = consumeText();\n            mustConsume(\"CLOSE\");\n            result.push({\n                name: name_1 || (pattern_1 ? key++ : \"\"),\n                pattern: name_1 && !pattern_1 ? defaultPattern : pattern_1,\n                prefix: prefix,\n                suffix: suffix,\n                modifier: tryConsume(\"MODIFIER\") || \"\",\n            });\n            continue;\n        }\n        mustConsume(\"END\");\n    }\n    return result;\n}\n/**\n * Compile a string to a template function for the path.\n */\nexport function compile(str, options) {\n    return tokensToFunction(parse(str, options), options);\n}\n/**\n * Expose a method for transforming tokens into the path function.\n */\nexport function tokensToFunction(tokens, options) {\n    if (options === void 0) { options = {}; }\n    var reFlags = flags(options);\n    var _a = options.encode, encode = _a === void 0 ? function (x) { return x; } : _a, _b = options.validate, validate = _b === void 0 ? true : _b;\n    // Compile all the tokens into regexps.\n    var matches = tokens.map(function (token) {\n        if (typeof token === \"object\") {\n            return new RegExp(\"^(?:\".concat(token.pattern, \")$\"), reFlags);\n        }\n    });\n    return function (data) {\n        var path = \"\";\n        for (var i = 0; i < tokens.length; i++) {\n            var token = tokens[i];\n            if (typeof token === \"string\") {\n                path += token;\n                continue;\n            }\n            var value = data ? data[token.name] : undefined;\n            var optional = token.modifier === \"?\" || token.modifier === \"*\";\n            var repeat = token.modifier === \"*\" || token.modifier === \"+\";\n            if (Array.isArray(value)) {\n                if (!repeat) {\n                    throw new TypeError(\"Expected \\\"\".concat(token.name, \"\\\" to not repeat, but got an array\"));\n                }\n                if (value.length === 0) {\n                    if (optional)\n                        continue;\n                    throw new TypeError(\"Expected \\\"\".concat(token.name, \"\\\" to not be empty\"));\n                }\n                for (var j = 0; j < value.length; j++) {\n                    var segment = encode(value[j], token);\n                    if (validate && !matches[i].test(segment)) {\n                        throw new TypeError(\"Expected all \\\"\".concat(token.name, \"\\\" to match \\\"\").concat(token.pattern, \"\\\", but got \\\"\").concat(segment, \"\\\"\"));\n                    }\n                    path += token.prefix + segment + token.suffix;\n                }\n                continue;\n            }\n            if (typeof value === \"string\" || typeof value === \"number\") {\n                var segment = encode(String(value), token);\n                if (validate && !matches[i].test(segment)) {\n                    throw new TypeError(\"Expected \\\"\".concat(token.name, \"\\\" to match \\\"\").concat(token.pattern, \"\\\", but got \\\"\").concat(segment, \"\\\"\"));\n                }\n                path += token.prefix + segment + token.suffix;\n                continue;\n            }\n            if (optional)\n                continue;\n            var typeOfMessage = repeat ? \"an array\" : \"a string\";\n            throw new TypeError(\"Expected \\\"\".concat(token.name, \"\\\" to be \").concat(typeOfMessage));\n        }\n        return path;\n    };\n}\n/**\n * Create path match function from `path-to-regexp` spec.\n */\nexport function match(str, options) {\n    var keys = [];\n    var re = pathToRegexp(str, keys, options);\n    return regexpToFunction(re, keys, options);\n}\n/**\n * Create a path match function from `path-to-regexp` output.\n */\nexport function regexpToFunction(re, keys, options) {\n    if (options === void 0) { options = {}; }\n    var _a = options.decode, decode = _a === void 0 ? function (x) { return x; } : _a;\n    return function (pathname) {\n        var m = re.exec(pathname);\n        if (!m)\n            return false;\n        var path = m[0], index = m.index;\n        var params = Object.create(null);\n        var _loop_1 = function (i) {\n            if (m[i] === undefined)\n                return \"continue\";\n            var key = keys[i - 1];\n            if (key.modifier === \"*\" || key.modifier === \"+\") {\n                params[key.name] = m[i].split(key.prefix + key.suffix).map(function (value) {\n                    return decode(value, key);\n                });\n            }\n            else {\n                params[key.name] = decode(m[i], key);\n            }\n        };\n        for (var i = 1; i < m.length; i++) {\n            _loop_1(i);\n        }\n        return { path: path, index: index, params: params };\n    };\n}\n/**\n * Escape a regular expression string.\n */\nfunction escapeString(str) {\n    return str.replace(/([.+*?=^!:${}()[\\]|/\\\\])/g, \"\\\\$1\");\n}\n/**\n * Get the flags for a regexp from the options.\n */\nfunction flags(options) {\n    return options && options.sensitive ? \"\" : \"i\";\n}\n/**\n * Pull out keys from a regexp.\n */\nfunction regexpToRegexp(path, keys) {\n    if (!keys)\n        return path;\n    var groupsRegex = /\\((?:\\?<(.*?)>)?(?!\\?)/g;\n    var index = 0;\n    var execResult = groupsRegex.exec(path.source);\n    while (execResult) {\n        keys.push({\n            // Use parenthesized substring match if available, index otherwise\n            name: execResult[1] || index++,\n            prefix: \"\",\n            suffix: \"\",\n            modifier: \"\",\n            pattern: \"\",\n        });\n        execResult = groupsRegex.exec(path.source);\n    }\n    return path;\n}\n/**\n * Transform an array into a regexp.\n */\nfunction arrayToRegexp(paths, keys, options) {\n    var parts = paths.map(function (path) { return pathToRegexp(path, keys, options).source; });\n    return new RegExp(\"(?:\".concat(parts.join(\"|\"), \")\"), flags(options));\n}\n/**\n * Create a path regexp from string input.\n */\nfunction stringToRegexp(path, keys, options) {\n    return tokensToRegexp(parse(path, options), keys, options);\n}\n/**\n * Expose a function for taking tokens and returning a RegExp.\n */\nexport function tokensToRegexp(tokens, keys, options) {\n    if (options === void 0) { options = {}; }\n    var _a = options.strict, strict = _a === void 0 ? false : _a, _b = options.start, start = _b === void 0 ? true : _b, _c = options.end, end = _c === void 0 ? true : _c, _d = options.encode, encode = _d === void 0 ? function (x) { return x; } : _d, _e = options.delimiter, delimiter = _e === void 0 ? \"/#?\" : _e, _f = options.endsWith, endsWith = _f === void 0 ? \"\" : _f;\n    var endsWithRe = \"[\".concat(escapeString(endsWith), \"]|$\");\n    var delimiterRe = \"[\".concat(escapeString(delimiter), \"]\");\n    var route = start ? \"^\" : \"\";\n    // Iterate over the tokens and create our regexp string.\n    for (var _i = 0, tokens_1 = tokens; _i < tokens_1.length; _i++) {\n        var token = tokens_1[_i];\n        if (typeof token === \"string\") {\n            route += escapeString(encode(token));\n        }\n        else {\n            var prefix = escapeString(encode(token.prefix));\n            var suffix = escapeString(encode(token.suffix));\n            if (token.pattern) {\n                if (keys)\n                    keys.push(token);\n                if (prefix || suffix) {\n                    if (token.modifier === \"+\" || token.modifier === \"*\") {\n                        var mod = token.modifier === \"*\" ? \"?\" : \"\";\n                        route += \"(?:\".concat(prefix, \"((?:\").concat(token.pattern, \")(?:\").concat(suffix).concat(prefix, \"(?:\").concat(token.pattern, \"))*)\").concat(suffix, \")\").concat(mod);\n                    }\n                    else {\n                        route += \"(?:\".concat(prefix, \"(\").concat(token.pattern, \")\").concat(suffix, \")\").concat(token.modifier);\n                    }\n                }\n                else {\n                    if (token.modifier === \"+\" || token.modifier === \"*\") {\n                        route += \"((?:\".concat(token.pattern, \")\").concat(token.modifier, \")\");\n                    }\n                    else {\n                        route += \"(\".concat(token.pattern, \")\").concat(token.modifier);\n                    }\n                }\n            }\n            else {\n                route += \"(?:\".concat(prefix).concat(suffix, \")\").concat(token.modifier);\n            }\n        }\n    }\n    if (end) {\n        if (!strict)\n            route += \"\".concat(delimiterRe, \"?\");\n        route += !options.endsWith ? \"$\" : \"(?=\".concat(endsWithRe, \")\");\n    }\n    else {\n        var endToken = tokens[tokens.length - 1];\n        var isEndDelimited = typeof endToken === \"string\"\n            ? delimiterRe.indexOf(endToken[endToken.length - 1]) > -1\n            : endToken === undefined;\n        if (!strict) {\n            route += \"(?:\".concat(delimiterRe, \"(?=\").concat(endsWithRe, \"))?\");\n        }\n        if (!isEndDelimited) {\n            route += \"(?=\".concat(delimiterRe, \"|\").concat(endsWithRe, \")\");\n        }\n    }\n    return new RegExp(route, flags(options));\n}\n/**\n * Normalize the given path string, returning a regular expression.\n *\n * An empty array can be passed in for the keys, which will hold the\n * placeholder key descriptions. For example, using `/user/:id`, `keys` will\n * contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`.\n */\nexport function pathToRegexp(path, keys, options) {\n    if (path instanceof RegExp)\n        return regexpToRegexp(path, keys);\n    if (Array.isArray(path))\n        return arrayToRegexp(path, keys, options);\n    return stringToRegexp(path, keys, options);\n}\n//# sourceMappingURL=index.js.map","import { getWindow, getDocument } from 'ssr-window';\nimport $ from './dom7.js';\nimport { extend } from './utils.js';\n\nconst History = {\n  queue: [],\n  clearQueue() {\n    if (History.queue.length === 0) return;\n    const currentQueue = History.queue.shift();\n    currentQueue();\n  },\n  routerQueue: [],\n  clearRouterQueue() {\n    if (History.routerQueue.length === 0) return;\n    const currentQueue = History.routerQueue.pop();\n    const { router, stateUrl, action } = currentQueue;\n\n    let animate = router.params.animate;\n    if (router.params.browserHistoryAnimate === false) animate = false;\n\n    if (action === 'back') {\n      router.back({ animate, browserHistory: false });\n    }\n    if (action === 'load') {\n      router.navigate(stateUrl, { animate, browserHistory: false });\n    }\n  },\n  handle(e) {\n    if (History.blockPopstate) return;\n    const app = this;\n    // const mainView = app.views.main;\n    let state = e.state;\n    History.previousState = History.state;\n    History.state = state;\n\n    History.allowChange = true;\n    History.clearQueue();\n\n    state = History.state;\n    if (!state) state = {};\n\n    app.views.forEach((view) => {\n      const router = view.router;\n      let viewState = state[view.id];\n      if (!viewState && view.params.browserHistory) {\n        viewState = {\n          url: view.router.history[0],\n        };\n      }\n      if (!viewState) return;\n      const stateUrl = viewState.url || undefined;\n\n      let animate = router.params.animate;\n      if (router.params.browserHistoryAnimate === false) animate = false;\n\n      if (stateUrl !== router.url) {\n        if (router.history.indexOf(stateUrl) >= 0) {\n          // Go Back\n          if (router.allowPageChange) {\n            router.back({ animate, browserHistory: false });\n          } else {\n            History.routerQueue.push({\n              action: 'back',\n              router,\n            });\n          }\n        } else if (router.allowPageChange) {\n          // Load page\n          router.navigate(stateUrl, { animate, browserHistory: false });\n        } else {\n          History.routerQueue.unshift({\n            action: 'load',\n            stateUrl,\n            router,\n          });\n        }\n      }\n    });\n  },\n  initViewState(viewId, viewState) {\n    const window = getWindow();\n    const newState = extend({}, History.state || {}, {\n      [viewId]: viewState,\n    });\n    History.state = newState;\n    window.history.replaceState(newState, '');\n  },\n  push(viewId, viewState, url) {\n    const window = getWindow();\n    const document = getDocument();\n    /* eslint-disable no-param-reassign */\n    if (url.substr(-3) === '#!/') {\n      url = url.replace('#!/', '');\n      if (url === '') {\n        url = document.location.href;\n        if (url.includes('#!/')) {\n          url = document.location.href.split('#!/')[0];\n        }\n      }\n    }\n    /* eslint-enable no-param-reassign */\n    if (!History.allowChange) {\n      History.queue.push(() => {\n        History.push(viewId, viewState, url);\n      });\n      return;\n    }\n    History.previousState = History.state;\n    const newState = extend({}, History.previousState || {}, {\n      [viewId]: viewState,\n    });\n    History.state = newState;\n    window.history.pushState(newState, '', url);\n  },\n  replace(viewId, viewState, url) {\n    const window = getWindow();\n    if (url.substr(-3) === '#!/') {\n      // eslint-disable-next-line\n      url = url.replace('#!/', '');\n    }\n    if (!History.allowChange) {\n      History.queue.push(() => {\n        History.replace(viewId, viewState, url);\n      });\n      return;\n    }\n    History.previousState = History.state;\n    const newState = extend({}, History.previousState || {}, {\n      [viewId]: viewState,\n    });\n    History.state = newState;\n    window.history.replaceState(newState, '', url);\n  },\n  go(index) {\n    const window = getWindow();\n    History.allowChange = false;\n    window.history.go(index);\n  },\n  back() {\n    const window = getWindow();\n    History.allowChange = false;\n    window.history.back();\n  },\n  allowChange: true,\n  previousState: {},\n  state: {},\n  blockPopstate: true,\n  init(app) {\n    const window = getWindow();\n    const document = getDocument();\n    History.state = window.history.state;\n    $(window).on('load', () => {\n      setTimeout(() => {\n        History.blockPopstate = false;\n      }, 0);\n    });\n\n    if (document.readyState && document.readyState === 'complete') {\n      History.blockPopstate = false;\n    }\n\n    $(window).on('popstate', History.handle.bind(app));\n  },\n};\n\nexport default History;\n","import $ from '../../shared/dom7.js';\nimport History from '../../shared/history.js';\nimport { getSupport } from '../../shared/get-support.js';\nimport { getDevice } from '../../shared/get-device.js';\nimport { now } from '../../shared/utils.js';\n\nfunction SwipeBack(r) {\n  const router = r;\n  const { $el, $navbarsEl, app, params } = router;\n  const support = getSupport();\n  const device = getDevice();\n  let isTouched = false;\n  let isMoved = false;\n  const touchesStart = {};\n  let isScrolling;\n  let $currentPageEl = [];\n  let $previousPageEl = [];\n  let viewContainerWidth;\n  let touchesDiff;\n  let allowViewTouchMove = true;\n  let touchStartTime;\n  let $currentNavbarEl = [];\n  let $previousNavbarEl = [];\n  let dynamicNavbar;\n  let $pageShadowEl;\n  let $pageOpacityEl;\n\n  let animatableNavEls;\n\n  const paramsSwipeBackAnimateShadow = params[`${app.theme}SwipeBackAnimateShadow`];\n  const paramsSwipeBackAnimateOpacity = params[`${app.theme}SwipeBackAnimateOpacity`];\n  const paramsSwipeBackActiveArea = params[`${app.theme}SwipeBackActiveArea`];\n  const paramsSwipeBackThreshold = params[`${app.theme}SwipeBackThreshold`];\n\n  const transformOrigin = app.rtl ? 'right center' : 'left center';\n  const transformOriginTitleLarge = app.rtl\n    ? 'calc(100% - var(--f7-navbar-large-title-padding-left) - var(--f7-safe-area-left)) center'\n    : 'calc(var(--f7-navbar-large-title-padding-left) + var(--f7-safe-area-left)) center';\n\n  function animatableNavElements() {\n    const els = [];\n    const inverter = app.rtl ? -1 : 1;\n    const currentNavIsTransparent =\n      $currentNavbarEl.hasClass('navbar-transparent') &&\n      !$currentNavbarEl.hasClass('navbar-large') &&\n      !$currentNavbarEl.hasClass('navbar-transparent-visible');\n    const currentNavIsLarge = $currentNavbarEl.hasClass('navbar-large');\n    const currentNavIsCollapsed = $currentNavbarEl.hasClass('navbar-large-collapsed');\n    const currentNavIsLargeTransparent =\n      $currentNavbarEl.hasClass('navbar-large-transparent') ||\n      ($currentNavbarEl.hasClass('navbar-large') &&\n        $currentNavbarEl.hasClass('navbar-transparent'));\n    const previousNavIsTransparent =\n      $previousNavbarEl.hasClass('navbar-transparent') &&\n      !$previousNavbarEl.hasClass('navbar-large') &&\n      !$previousNavbarEl.hasClass('navbar-transparent-visible');\n    const previousNavIsLarge = $previousNavbarEl.hasClass('navbar-large');\n    const previousNavIsCollapsed = $previousNavbarEl.hasClass('navbar-large-collapsed');\n    const previousNavIsLargeTransparent =\n      $previousNavbarEl.hasClass('navbar-large-transparent') ||\n      ($previousNavbarEl.hasClass('navbar-large') &&\n        $previousNavbarEl.hasClass('navbar-transparent'));\n    const fromLarge = currentNavIsLarge && !currentNavIsCollapsed;\n    const toLarge = previousNavIsLarge && !previousNavIsCollapsed;\n    const $currentNavElements = $currentNavbarEl.find(\n      '.left, .title, .right, .subnavbar, .fading, .title-large, .navbar-bg',\n    );\n    const $previousNavElements = $previousNavbarEl.find(\n      '.left, .title, .right, .subnavbar, .fading, .title-large, .navbar-bg',\n    );\n    let activeNavBackIconText;\n    let previousNavBackIconText;\n\n    if (params.iosAnimateNavbarBackIcon) {\n      if (\n        $currentNavbarEl.hasClass('sliding') ||\n        $currentNavbarEl.find('.navbar-inner.sliding').length\n      ) {\n        activeNavBackIconText = $currentNavbarEl.find('.left').find('.back .icon + span').eq(0);\n      } else {\n        activeNavBackIconText = $currentNavbarEl\n          .find('.left.sliding')\n          .find('.back .icon + span')\n          .eq(0);\n      }\n      if (\n        $previousNavbarEl.hasClass('sliding') ||\n        $previousNavbarEl.find('.navbar-inner.sliding').length\n      ) {\n        previousNavBackIconText = $previousNavbarEl.find('.left').find('.back .icon + span').eq(0);\n      } else {\n        previousNavBackIconText = $previousNavbarEl\n          .find('.left.sliding')\n          .find('.back .icon + span')\n          .eq(0);\n      }\n      if (activeNavBackIconText.length) {\n        $previousNavElements.each((el) => {\n          if (!$(el).hasClass('title')) return;\n          el.f7NavbarLeftOffset += activeNavBackIconText.prev('.icon')[0].offsetWidth;\n        });\n      }\n    }\n    $currentNavElements.each((navEl) => {\n      const $navEl = $(navEl);\n      const isSubnavbar = $navEl.hasClass('subnavbar');\n      const isLeft = $navEl.hasClass('left');\n      const isTitle = $navEl.hasClass('title');\n      const isBg = $navEl.hasClass('navbar-bg');\n      if ((isTitle || isBg) && currentNavIsTransparent) return;\n      if (!fromLarge && $navEl.hasClass('.title-large')) return;\n      const el = {\n        el: navEl,\n      };\n      if (fromLarge) {\n        if (isTitle) return;\n        if ($navEl.hasClass('title-large')) {\n          if (els.indexOf(el) < 0) els.push(el);\n          el.overflow = 'visible';\n          $navEl.find('.title-large-text').each((subNavEl) => {\n            els.push({\n              el: subNavEl,\n              transform: (progress) => `translateX(${progress * 100 * inverter}%)`,\n            });\n          });\n          return;\n        }\n      }\n      if (toLarge) {\n        if (!fromLarge) {\n          if ($navEl.hasClass('title-large')) {\n            if (els.indexOf(el) < 0) els.push(el);\n            el.opacity = 0;\n          }\n        }\n        if (isLeft) {\n          if (els.indexOf(el) < 0) els.push(el);\n          el.opacity = (progress) => 1 - progress ** 0.33;\n          $navEl.find('.back span').each((subNavEl) => {\n            els.push({\n              el: subNavEl,\n              'transform-origin': transformOrigin,\n              transform: (progress) =>\n                `translateX(calc(${progress} * (var(--f7-navbarTitleLargeOffset) - var(--f7-navbarLeftTextOffset)))) translateY(calc(${progress} * (var(--f7-navbar-large-title-height) - var(--f7-navbar-large-title-padding-vertical) / 2))) scale(${\n                  1 + 1 * progress\n                })`,\n            });\n          });\n          return;\n        }\n      }\n      if (isBg) {\n        if (els.indexOf(el) < 0) els.push(el);\n        if (!fromLarge && !toLarge) {\n          if (currentNavIsCollapsed) {\n            if (currentNavIsLargeTransparent) {\n              el.className = 'ios-swipeback-navbar-bg-large';\n            }\n            el.transform = (progress) =>\n              `translateX(${\n                100 * progress * inverter\n              }%) translateY(calc(-1 * var(--f7-navbar-large-title-height)))`;\n          } else {\n            el.transform = (progress) => `translateX(${100 * progress * inverter}%)`;\n          }\n        }\n        if (!fromLarge && toLarge) {\n          el.className = 'ios-swipeback-navbar-bg-large';\n          el.transform = (progress) =>\n            `translateX(${100 * progress * inverter}%) translateY(calc(-1 * ${\n              1 - progress\n            } * var(--f7-navbar-large-title-height)))`;\n        }\n        if (fromLarge && toLarge) {\n          el.transform = (progress) => `translateX(${100 * progress * inverter}%)`;\n        }\n        if (fromLarge && !toLarge) {\n          el.transform = (progress) =>\n            `translateX(${\n              100 * progress * inverter\n            }%) translateY(calc(-${progress} * var(--f7-navbar-large-title-height)))`;\n        }\n        return;\n      }\n      if ($navEl.hasClass('title-large')) return;\n      const isSliding =\n        $navEl.hasClass('sliding') || $navEl.parents('.navbar-inner.sliding').length;\n      if (els.indexOf(el) < 0) els.push(el);\n      if (!isSubnavbar || (isSubnavbar && !isSliding)) {\n        el.opacity = (progress) => 1 - progress ** 0.33;\n      }\n      if (isSliding) {\n        let transformTarget = el;\n        if (isLeft && activeNavBackIconText.length && params.iosAnimateNavbarBackIcon) {\n          const textEl = { el: activeNavBackIconText[0] };\n          transformTarget = textEl;\n          els.push(textEl);\n        }\n        transformTarget.transform = (progress) => {\n          let activeNavTranslate = progress * transformTarget.el.f7NavbarRightOffset;\n          if (device.pixelRatio === 1) activeNavTranslate = Math.round(activeNavTranslate);\n          if (isSubnavbar && currentNavIsLarge) {\n            return `translate3d(${activeNavTranslate}px, calc(-1 * var(--f7-navbar-large-collapse-progress) * var(--f7-navbar-large-title-height)), 0)`;\n          }\n          return `translate3d(${activeNavTranslate}px,0,0)`;\n        };\n      }\n    });\n    $previousNavElements.each((navEl) => {\n      const $navEl = $(navEl);\n      const isSubnavbar = $navEl.hasClass('subnavbar');\n      const isLeft = $navEl.hasClass('left');\n      const isTitle = $navEl.hasClass('title');\n      const isBg = $navEl.hasClass('navbar-bg');\n      if ((isTitle || isBg) && previousNavIsTransparent) return;\n      const el = {\n        el: navEl,\n      };\n      if (toLarge) {\n        if (isTitle) return;\n        if (els.indexOf(el) < 0) els.push(el);\n\n        if ($navEl.hasClass('title-large')) {\n          el.opacity = 1;\n          el.overflow = 'visible';\n          $navEl.find('.title-large-text').each((subNavEl) => {\n            els.push({\n              el: subNavEl,\n              'transform-origin': transformOriginTitleLarge,\n              opacity: (progress) => progress ** 3,\n              transform: (progress) =>\n                `translateX(calc(${\n                  1 - progress\n                } * (var(--f7-navbarLeftTextOffset) - var(--f7-navbarTitleLargeOffset)))) translateY(calc(${\n                  progress - 1\n                } * var(--f7-navbar-large-title-height) + ${\n                  1 - progress\n                } * var(--f7-navbar-large-title-padding-vertical))) scale(${0.5 + progress * 0.5})`,\n            });\n          });\n          return;\n        }\n      }\n      if (isBg) {\n        if (els.indexOf(el) < 0) els.push(el);\n        if (!fromLarge && !toLarge) {\n          if (previousNavIsCollapsed) {\n            if (previousNavIsLargeTransparent) {\n              el.className = 'ios-swipeback-navbar-bg-large';\n            }\n            el.transform = (progress) =>\n              `translateX(${\n                (-100 + 100 * progress) * inverter\n              }%) translateY(calc(-1 * var(--f7-navbar-large-title-height)))`;\n          } else {\n            el.transform = (progress) => `translateX(${(-100 + 100 * progress) * inverter}%)`;\n          }\n        }\n        if (!fromLarge && toLarge) {\n          el.transform = (progress) =>\n            `translateX(${(-100 + 100 * progress) * inverter}%) translateY(calc(-1 * ${\n              1 - progress\n            } * var(--f7-navbar-large-title-height)))`;\n        }\n        if (fromLarge && !toLarge) {\n          el.className = 'ios-swipeback-navbar-bg-large';\n          el.transform = (progress) =>\n            `translateX(${\n              (-100 + 100 * progress) * inverter\n            }%) translateY(calc(-${progress} * var(--f7-navbar-large-title-height)))`;\n        }\n        if (fromLarge && toLarge) {\n          el.transform = (progress) => `translateX(${(-100 + 100 * progress) * inverter}%)`;\n        }\n\n        return;\n      }\n      if ($navEl.hasClass('title-large')) return;\n      const isSliding =\n        $navEl.hasClass('sliding') || $previousNavbarEl.children('.navbar-inner.sliding').length;\n      if (els.indexOf(el) < 0) els.push(el);\n      if (!isSubnavbar || (isSubnavbar && !isSliding)) {\n        el.opacity = (progress) => progress ** 3;\n      }\n      if (isSliding) {\n        let transformTarget = el;\n        if (isLeft && previousNavBackIconText.length && params.iosAnimateNavbarBackIcon) {\n          const textEl = { el: previousNavBackIconText[0] };\n          transformTarget = textEl;\n          els.push(textEl);\n        }\n        transformTarget.transform = (progress) => {\n          let previousNavTranslate = transformTarget.el.f7NavbarLeftOffset * (1 - progress);\n          if (device.pixelRatio === 1) previousNavTranslate = Math.round(previousNavTranslate);\n          if (isSubnavbar && previousNavIsLarge) {\n            return `translate3d(${previousNavTranslate}px, calc(-1 * var(--f7-navbar-large-collapse-progress) * var(--f7-navbar-large-title-height)), 0)`;\n          }\n          return `translate3d(${previousNavTranslate}px,0,0)`;\n        };\n      }\n    });\n    return els;\n  }\n\n  function setAnimatableNavElements({ progress, reset, transition, reflow } = {}) {\n    const styles = ['overflow', 'transform', 'transform-origin', 'opacity'];\n    if (transition === true || transition === false) {\n      for (let i = 0; i < animatableNavEls.length; i += 1) {\n        const el = animatableNavEls[i];\n        if (el && el.el) {\n          if (transition === true) el.el.classList.add('navbar-page-transitioning');\n          if (transition === false) el.el.classList.remove('navbar-page-transitioning');\n        }\n      }\n    }\n    if (reflow && animatableNavEls.length && animatableNavEls[0] && animatableNavEls[0].el) {\n      // eslint-disable-next-line\n      animatableNavEls[0].el._clientLeft = animatableNavEls[0].el.clientLeft;\n    }\n    for (let i = 0; i < animatableNavEls.length; i += 1) {\n      const el = animatableNavEls[i];\n      if (el && el.el) {\n        if (el.className && !el.classNameSet && !reset) {\n          el.el.classList.add(el.className);\n          el.classNameSet = true;\n        }\n        if (el.className && reset) {\n          el.el.classList.remove(el.className);\n        }\n        for (let j = 0; j < styles.length; j += 1) {\n          const styleProp = styles[j];\n          if (el[styleProp]) {\n            if (reset) {\n              el.el.style[styleProp] = '';\n            } else if (typeof el[styleProp] === 'function') {\n              el.el.style[styleProp] = el[styleProp](progress);\n            } else {\n              el.el.style[styleProp] = el[styleProp];\n            }\n          }\n        }\n      }\n    }\n  }\n\n  function handleTouchStart(e) {\n    if (!e.isTrusted) return;\n    const swipeBackEnabled = params[`${app.theme}SwipeBack`];\n    if (\n      !allowViewTouchMove ||\n      !swipeBackEnabled ||\n      isTouched ||\n      (app.swipeout && app.swipeout.el) ||\n      !router.allowPageChange\n    )\n      return;\n    if ($(e.target).closest('.range-slider, .calendar-months').length > 0) return;\n    if (\n      $(e.target).closest('.page-master, .page-master-detail').length > 0 &&\n      params.masterDetailBreakpoint > 0 &&\n      app.width >= params.masterDetailBreakpoint\n    )\n      return;\n    isMoved = false;\n    isTouched = true;\n    isScrolling = undefined;\n    touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n    touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n    touchStartTime = now();\n    dynamicNavbar = router.dynamicNavbar;\n  }\n  function handleTouchMove(e) {\n    if (!e.isTrusted) return;\n    if (!isTouched) return;\n    const pageX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n    const pageY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n    if (typeof isScrolling === 'undefined') {\n      isScrolling =\n        !!(isScrolling || Math.abs(pageY - touchesStart.y) > Math.abs(pageX - touchesStart.x)) ||\n        (pageX < touchesStart.x && !app.rtl) ||\n        (pageX > touchesStart.x && app.rtl);\n    }\n    if (isScrolling || e.f7PreventSwipeBack || app.preventSwipeBack) {\n      isTouched = false;\n      return;\n    }\n    if (!isMoved) {\n      // Calc values during first move fired\n      let cancel = false;\n      const target = $(e.target);\n\n      const swipeout = target.closest('.swipeout');\n      if (swipeout.length > 0) {\n        if (!app.rtl && swipeout.find('.swipeout-actions-left').length > 0) cancel = true;\n        if (app.rtl && swipeout.find('.swipeout-actions-right').length > 0) cancel = true;\n      }\n\n      $currentPageEl = target.closest('.page');\n      if (\n        $currentPageEl.hasClass('no-swipeback') ||\n        target.closest('.no-swipeback, .card-opened').length > 0\n      )\n        cancel = true;\n      $previousPageEl = $el.find('.page-previous');\n      if ($previousPageEl.length > 1) {\n        $previousPageEl = $previousPageEl.eq($previousPageEl.length - 1);\n      }\n      let notFromBorder = touchesStart.x - $el.offset().left > paramsSwipeBackActiveArea;\n      viewContainerWidth = $el.width();\n      if (app.rtl) {\n        notFromBorder =\n          touchesStart.x <\n          $el.offset().left - $el[0].scrollLeft + (viewContainerWidth - paramsSwipeBackActiveArea);\n      } else {\n        notFromBorder = touchesStart.x - $el.offset().left > paramsSwipeBackActiveArea;\n      }\n      if (notFromBorder) cancel = true;\n      if ($previousPageEl.length === 0 || $currentPageEl.length === 0) cancel = true;\n      if (cancel) {\n        isTouched = false;\n        return;\n      }\n\n      if (paramsSwipeBackAnimateShadow) {\n        $pageShadowEl = $currentPageEl.find('.page-shadow-effect');\n        if ($pageShadowEl.length === 0) {\n          $pageShadowEl = $('<div class=\"page-shadow-effect\"></div>');\n          $currentPageEl.append($pageShadowEl);\n        }\n      }\n      if (paramsSwipeBackAnimateOpacity) {\n        $pageOpacityEl = $previousPageEl.find('.page-opacity-effect');\n        if ($pageOpacityEl.length === 0) {\n          $pageOpacityEl = $('<div class=\"page-opacity-effect\"></div>');\n          $previousPageEl.append($pageOpacityEl);\n        }\n      }\n\n      if (dynamicNavbar) {\n        $currentNavbarEl = $navbarsEl.find('.navbar-current');\n        $previousNavbarEl = $navbarsEl.find('.navbar-previous');\n        if ($previousNavbarEl.length > 1) {\n          $previousNavbarEl = $previousNavbarEl.eq($previousNavbarEl.length - 1);\n        }\n\n        animatableNavEls = animatableNavElements($previousNavbarEl, $currentNavbarEl);\n      }\n\n      // Close/Hide Any Picker\n      if ($('.sheet.modal-in').length > 0 && app.sheet) {\n        app.sheet.close($('.sheet.modal-in'));\n      }\n    }\n    e.f7PreventSwipePanel = true;\n    isMoved = true;\n    app.preventSwipePanelBySwipeBack = true;\n    e.preventDefault();\n\n    // RTL inverter\n    const inverter = app.rtl ? -1 : 1;\n\n    // Touches diff\n    touchesDiff = (pageX - touchesStart.x - paramsSwipeBackThreshold) * inverter;\n    if (touchesDiff < 0) touchesDiff = 0;\n    const percentage = Math.min(Math.max(touchesDiff / viewContainerWidth, 0), 1);\n\n    // Swipe Back Callback\n    const callbackData = {\n      percentage,\n      progress: percentage,\n      currentPageEl: $currentPageEl[0],\n      previousPageEl: $previousPageEl[0],\n      currentNavbarEl: $currentNavbarEl[0],\n      previousNavbarEl: $previousNavbarEl[0],\n    };\n    $el.trigger('swipeback:move', callbackData);\n    router.emit('swipebackMove', callbackData);\n\n    // Transform pages\n    let currentPageTranslate = touchesDiff * inverter;\n    let previousPageTranslate = (touchesDiff / 5 - viewContainerWidth / 5) * inverter;\n    if (!app.rtl) {\n      currentPageTranslate = Math.min(currentPageTranslate, viewContainerWidth);\n      previousPageTranslate = Math.min(previousPageTranslate, 0);\n    } else {\n      currentPageTranslate = Math.max(currentPageTranslate, -viewContainerWidth);\n      previousPageTranslate = Math.max(previousPageTranslate, 0);\n    }\n    if (device.pixelRatio === 1) {\n      currentPageTranslate = Math.round(currentPageTranslate);\n      previousPageTranslate = Math.round(previousPageTranslate);\n    }\n\n    router.swipeBackActive = true;\n    $([$currentPageEl[0], $previousPageEl[0]]).addClass('page-swipeback-active');\n\n    $currentPageEl.transform(`translate3d(${currentPageTranslate}px,0,0)`);\n    if (paramsSwipeBackAnimateShadow) $pageShadowEl[0].style.opacity = 1 - 1 * percentage;\n\n    if (app.theme === 'ios') {\n      $previousPageEl.transform(`translate3d(${previousPageTranslate}px,0,0)`);\n    }\n    if (paramsSwipeBackAnimateOpacity) $pageOpacityEl[0].style.opacity = 1 - 1 * percentage;\n\n    // Dynamic Navbars Animation\n    if (!dynamicNavbar) return;\n\n    setAnimatableNavElements({ progress: percentage });\n  }\n  function handleTouchEnd(e) {\n    if (!e.isTrusted) return;\n    app.preventSwipePanelBySwipeBack = false;\n    if (!isTouched || !isMoved) {\n      isTouched = false;\n      isMoved = false;\n      return;\n    }\n    isTouched = false;\n    isMoved = false;\n    router.swipeBackActive = false;\n    const $pages = $([$currentPageEl[0], $previousPageEl[0]]);\n    $pages.removeClass('page-swipeback-active');\n    if (touchesDiff === 0) {\n      $pages.transform('');\n      if ($pageShadowEl && $pageShadowEl.length > 0) $pageShadowEl.remove();\n      if ($pageOpacityEl && $pageOpacityEl.length > 0) $pageOpacityEl.remove();\n      if (dynamicNavbar) {\n        setAnimatableNavElements({ reset: true });\n      }\n      return;\n    }\n    const timeDiff = now() - touchStartTime;\n    let pageChanged = false;\n    // Swipe back to previous page\n    if (\n      (timeDiff < 300 && touchesDiff > 10) ||\n      (timeDiff >= 300 && touchesDiff > viewContainerWidth / 2)\n    ) {\n      $currentPageEl\n        .removeClass('page-current')\n        .addClass(`page-next${app.theme !== 'ios' ? ' page-next-on-right' : ''}`);\n      $previousPageEl\n        .removeClass('page-previous')\n        .addClass('page-current')\n        .removeAttr('aria-hidden');\n      if ($pageShadowEl) $pageShadowEl[0].style.opacity = '';\n      if ($pageOpacityEl) $pageOpacityEl[0].style.opacity = '';\n      if (dynamicNavbar) {\n        router.setNavbarPosition($currentNavbarEl, 'next');\n        router.setNavbarPosition($previousNavbarEl, 'current', false);\n      }\n      pageChanged = true;\n    }\n    // Reset custom styles\n    // Add transitioning class for transition-duration\n    $pages.addClass('page-transitioning page-transitioning-swipeback');\n    if (device.ios) {\n      // eslint-disable-next-line\n      $currentPageEl[0]._clientLeft = $currentPageEl[0].clientLeft;\n    }\n    $pages.transform('');\n\n    if (dynamicNavbar) {\n      setAnimatableNavElements({\n        progress: pageChanged ? 1 : 0,\n        transition: true,\n        reflow: !!device.ios,\n      });\n    }\n    allowViewTouchMove = false;\n    router.allowPageChange = false;\n\n    // Swipe Back Callback\n    const callbackData = {\n      currentPageEl: $currentPageEl[0],\n      previousPageEl: $previousPageEl[0],\n      currentNavbarEl: $currentNavbarEl[0],\n      previousNavbarEl: $previousNavbarEl[0],\n    };\n\n    if (pageChanged) {\n      // Update Route\n      router.currentRoute = $previousPageEl[0].f7Page.route;\n      router.currentPage = $previousPageEl[0];\n\n      // Page before animation callback\n      router.pageCallback('beforeOut', $currentPageEl, $currentNavbarEl, 'current', 'next', {\n        route: $currentPageEl[0].f7Page.route,\n        swipeBack: true,\n      });\n      router.pageCallback(\n        'beforeIn',\n        $previousPageEl,\n        $previousNavbarEl,\n        'previous',\n        'current',\n        { route: $previousPageEl[0].f7Page.route, swipeBack: true },\n        $currentPageEl[0],\n      );\n\n      $el.trigger('swipeback:beforechange', callbackData);\n      router.emit('swipebackBeforeChange', callbackData);\n    } else {\n      $el.trigger('swipeback:beforereset', callbackData);\n      router.emit('swipebackBeforeReset', callbackData);\n    }\n\n    $currentPageEl.transitionEnd(() => {\n      $pages.removeClass('page-transitioning page-transitioning-swipeback');\n      if (dynamicNavbar) {\n        setAnimatableNavElements({ reset: true, transition: false });\n      }\n      allowViewTouchMove = true;\n      router.allowPageChange = true;\n      if (pageChanged) {\n        // Update History\n        if (router.history.length === 1) {\n          router.history.unshift(router.url);\n        }\n        router.history.pop();\n        router.saveHistory();\n\n        // Update push state\n        if (params.browserHistory) {\n          History.back();\n        }\n\n        // Page after animation callback\n        router.pageCallback('afterOut', $currentPageEl, $currentNavbarEl, 'current', 'next', {\n          route: $currentPageEl[0].f7Page.route,\n          swipeBack: true,\n        });\n        router.pageCallback('afterIn', $previousPageEl, $previousNavbarEl, 'previous', 'current', {\n          route: $previousPageEl[0].f7Page.route,\n          swipeBack: true,\n        });\n\n        // Remove Old Page\n\n        router.pageCallback('beforeRemove', $currentPageEl, $currentNavbarEl, 'next', {\n          swipeBack: true,\n        });\n        router.removePage($currentPageEl);\n        if (dynamicNavbar) {\n          router.removeNavbar($currentNavbarEl);\n        }\n\n        $el.trigger('swipeback:afterchange', callbackData);\n        router.emit('swipebackAfterChange', callbackData);\n\n        router.emit('routeChanged', router.currentRoute, router.previousRoute, router);\n\n        if (params.preloadPreviousPage) {\n          router.back(router.history[router.history.length - 2], { preload: true });\n        }\n      } else {\n        $el.trigger('swipeback:afterreset', callbackData);\n        router.emit('swipebackAfterReset', callbackData);\n      }\n      if ($pageShadowEl && $pageShadowEl.length > 0) $pageShadowEl.remove();\n      if ($pageOpacityEl && $pageOpacityEl.length > 0) $pageOpacityEl.remove();\n    });\n  }\n\n  function attachEvents() {\n    const passiveListener =\n      app.touchEvents.start === 'touchstart' && support.passiveListener\n        ? { passive: true, capture: false }\n        : false;\n    $el.on(app.touchEvents.start, handleTouchStart, passiveListener);\n    app.on('touchmove:active', handleTouchMove);\n    app.on('touchend:passive', handleTouchEnd);\n  }\n  function detachEvents() {\n    const passiveListener =\n      app.touchEvents.start === 'touchstart' && support.passiveListener\n        ? { passive: true, capture: false }\n        : false;\n    $el.off(app.touchEvents.start, handleTouchStart, passiveListener);\n    app.off('touchmove:active', handleTouchMove);\n    app.off('touchend:passive', handleTouchEnd);\n  }\n\n  attachEvents();\n\n  router.on('routerDestroy', detachEvents);\n}\n\nexport default SwipeBack;\n","import { extend } from '../../shared/utils.js';\n\nexport default function redirect(direction, route, options) {\n  const router = this;\n  const r = route.route.redirect;\n  const method = direction === 'forward' ? 'navigate' : 'back';\n  if (options.initial && router.params.browserHistory) {\n    options.replaceState = true; // eslint-disable-line\n    options.history = true; // eslint-disable-line\n  }\n  function redirectResolve(redirectUrl, redirectOptions = {}) {\n    router.allowPageChange = true;\n    router[method](redirectUrl, extend({}, options, redirectOptions));\n  }\n  function redirectReject() {\n    router.allowPageChange = true;\n  }\n  if (typeof r === 'function') {\n    router.allowPageChange = false;\n    const redirectUrl = r.call(router, {\n      router,\n      to: route,\n      resolve: redirectResolve,\n      reject: redirectReject,\n      direction,\n      app: router.app,\n    });\n    if (redirectUrl && typeof redirectUrl === 'string') {\n      router.allowPageChange = true;\n      return router[method](redirectUrl, options);\n    }\n    return router;\n  }\n  return router[method](r, options);\n}\n","function processQueue(router, routerQueue, routeQueue, to, from, resolve, reject, direction) {\n  const queue = [];\n\n  if (Array.isArray(routeQueue)) {\n    queue.push(...routeQueue);\n  } else if (routeQueue && typeof routeQueue === 'function') {\n    queue.push(routeQueue);\n  }\n  if (routerQueue) {\n    if (Array.isArray(routerQueue)) {\n      queue.push(...routerQueue);\n    } else {\n      queue.push(routerQueue);\n    }\n  }\n\n  function next() {\n    if (queue.length === 0) {\n      resolve();\n      return;\n    }\n    const queueItem = queue.shift();\n\n    queueItem.call(router, {\n      router,\n      to,\n      from,\n      resolve() {\n        next();\n      },\n      reject() {\n        reject();\n      },\n      direction,\n      app: router.app,\n    });\n  }\n  next();\n}\n\nexport default function processRouteQueue(to, from, resolve, reject, direction) {\n  const router = this;\n  function enterNextRoute() {\n    if (to && to.route && (router.params.routesBeforeEnter || to.route.beforeEnter)) {\n      router.allowPageChange = false;\n      processQueue(\n        router,\n        router.params.routesBeforeEnter,\n        to.route.beforeEnter,\n        to,\n        from,\n        () => {\n          router.allowPageChange = true;\n          resolve();\n        },\n        () => {\n          reject();\n        },\n        direction,\n      );\n    } else {\n      resolve();\n    }\n  }\n  function leaveCurrentRoute() {\n    if (from && from.route && (router.params.routesBeforeLeave || from.route.beforeLeave)) {\n      router.allowPageChange = false;\n      processQueue(\n        router,\n        router.params.routesBeforeLeave,\n        from.route.beforeLeave,\n        to,\n        from,\n        () => {\n          router.allowPageChange = true;\n          enterNextRoute();\n        },\n        () => {\n          reject();\n        },\n        direction,\n      );\n    } else {\n      enterNextRoute();\n    }\n  }\n  leaveCurrentRoute();\n}\n","export default function appRouterCheck(router, method) {\n  if (!router.view) {\n    throw new Error(\n      `Framework7: it is not allowed to use router methods on global app router. Use router methods only on related View, e.g. app.views.main.router.${method}(...)`,\n    );\n  }\n}\n","export default function asyncComponent(router, component, resolve, reject) {\n  function resolvePromise(componentPromise) {\n    componentPromise\n      .then((c) => {\n        // eslint-disable-next-line\n        resolve({ component: c.default || c._default || c });\n      })\n      .catch((err) => {\n        reject();\n        throw new Error(err, { cause: err });\n      });\n  }\n  if (component instanceof Promise) {\n    resolvePromise(component);\n    return;\n  }\n  const asyncComponentResult = component.call(router);\n  if (asyncComponentResult instanceof Promise) {\n    resolvePromise(asyncComponentResult);\n  } else {\n    resolve({ component: asyncComponentResult });\n  }\n}\n","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { extend, parseUrlQuery } from '../../shared/utils.js';\nimport History from '../../shared/history.js';\nimport redirect from './redirect.js';\nimport processRouteQueue from './process-route-queue.js';\nimport appRouterCheck from './app-router-check.js';\nimport asyncComponent from './async-component.js';\n\nfunction refreshPage(props = {}) {\n  const router = this;\n  appRouterCheck(router, 'refreshPage');\n  return router.navigate(router.currentRoute.url, {\n    ignoreCache: true,\n    reloadCurrent: true,\n    props,\n  });\n}\n\nfunction forward(router, el, forwardOptions = {}) {\n  const document = getDocument();\n  const $el = $(el);\n  const app = router.app;\n  const view = router.view;\n  const options = extend(\n    false,\n    {\n      animate: router.params.animate,\n      browserHistory: true,\n      replaceState: false,\n      history: true,\n      reloadCurrent: router.params.reloadPages,\n      reloadPrevious: false,\n      reloadAll: false,\n      clearPreviousHistory: false,\n      reloadDetail: router.params.reloadDetail,\n      on: {},\n    },\n    forwardOptions,\n  );\n\n  const masterDetailEnabled = router.params.masterDetailBreakpoint > 0;\n  const isMaster =\n    masterDetailEnabled &&\n    options.route &&\n    options.route.route &&\n    (options.route.route.master === true ||\n      (typeof options.route.route.master === 'function' &&\n        options.route.route.master(app, router)));\n\n  let masterPageEl;\n  let otherDetailPageEl;\n  let detailsInBetweenRemoved = 0;\n\n  let currentRouteIsModal = router.currentRoute.modal;\n  let modalType;\n  if (!currentRouteIsModal) {\n    'popup popover sheet loginScreen actions customModal panel'\n      .split(' ')\n      .forEach((modalLoadProp) => {\n        if (\n          router.currentRoute &&\n          router.currentRoute.route &&\n          router.currentRoute.route[modalLoadProp]\n        ) {\n          currentRouteIsModal = true;\n          modalType = modalLoadProp;\n        }\n      });\n  }\n\n  if (currentRouteIsModal) {\n    const modalToClose =\n      router.currentRoute.modal || router.currentRoute.route.modalInstance || app[modalType].get();\n    const previousUrl = router.history[router.history.length - 2];\n    let previousRoute = router.findMatchingRoute(previousUrl);\n    if (!previousRoute && previousUrl) {\n      previousRoute = {\n        url: previousUrl,\n        path: previousUrl.split('?')[0],\n        query: parseUrlQuery(previousUrl),\n        route: {\n          path: previousUrl.split('?')[0],\n          url: previousUrl,\n        },\n      };\n    }\n\n    router.modalRemove(modalToClose);\n  }\n\n  const dynamicNavbar = router.dynamicNavbar;\n\n  const $viewEl = router.$el;\n  const $newPage = $el;\n  const reload = options.reloadPrevious || options.reloadCurrent || options.reloadAll;\n  let $oldPage;\n\n  let $navbarsEl;\n  let $newNavbarEl;\n  let $oldNavbarEl;\n\n  router.allowPageChange = false;\n  if ($newPage.length === 0) {\n    router.allowPageChange = true;\n    return router;\n  }\n\n  if ($newPage.length) {\n    // Remove theme elements\n    router.removeThemeElements($newPage);\n  }\n\n  if (dynamicNavbar) {\n    $newNavbarEl = $newPage.children('.navbar');\n    $navbarsEl = router.$navbarsEl;\n    if ($newNavbarEl.length === 0 && $newPage[0] && $newPage[0].f7Page) {\n      // Try from pageData\n      $newNavbarEl = $newPage[0].f7Page.$navbarEl;\n    }\n  }\n\n  // Save Keep Alive Cache\n  if (\n    options.route &&\n    options.route.route &&\n    options.route.route.keepAlive &&\n    !options.route.route.keepAliveData\n  ) {\n    options.route.route.keepAliveData = {\n      pageEl: $el[0],\n    };\n  }\n\n  // Pages In View\n  const $pagesInView = $viewEl.children('.page').filter((pageInView) => pageInView !== $newPage[0]);\n\n  // Navbars In View\n  let $navbarsInView;\n  if (dynamicNavbar) {\n    $navbarsInView = $navbarsEl\n      .children('.navbar')\n      .filter((navbarInView) => navbarInView !== $newNavbarEl[0]);\n  }\n\n  // Exit when reload previous and only 1 page in view so nothing ro reload\n  if (options.reloadPrevious && $pagesInView.length < 2) {\n    router.allowPageChange = true;\n    return router;\n  }\n\n  // Find Detail' master page\n  let isDetail;\n  let reloadDetail;\n  let isDetailRoot;\n  if (masterDetailEnabled && !options.reloadAll) {\n    for (let i = 0; i < $pagesInView.length; i += 1) {\n      if (!masterPageEl && $pagesInView[i].classList.contains('page-master')) {\n        masterPageEl = $pagesInView[i];\n        continue; // eslint-disable-line\n      }\n    }\n    isDetail = !isMaster && masterPageEl;\n\n    if (isDetail) {\n      // Find Other Detail\n      if (masterPageEl) {\n        for (let i = 0; i < $pagesInView.length; i += 1) {\n          if ($pagesInView[i].classList.contains('page-master-detail')) {\n            otherDetailPageEl = $pagesInView[i];\n            continue; // eslint-disable-line\n          }\n        }\n      }\n    }\n    reloadDetail =\n      isDetail &&\n      options.reloadDetail &&\n      app.width >= router.params.masterDetailBreakpoint &&\n      masterPageEl;\n  }\n  if (isDetail) {\n    isDetailRoot = !otherDetailPageEl || reloadDetail || options.reloadAll || options.reloadCurrent;\n  }\n\n  // New Page\n  let newPagePosition = 'next';\n  if (options.reloadCurrent || options.reloadAll || reloadDetail) {\n    newPagePosition = 'current';\n  } else if (options.reloadPrevious) {\n    newPagePosition = 'previous';\n  }\n  $newPage\n    .removeClass('page-previous page-current page-next')\n    .addClass(\n      `page-${newPagePosition}${isMaster ? ' page-master' : ''}${\n        isDetail ? ' page-master-detail' : ''\n      }${isDetailRoot ? ' page-master-detail-root' : ''}`,\n    )\n    .trigger('page:unstack')\n    .trigger('page:position', { position: newPagePosition });\n  router.emit('pageUnstack', $newPage[0]);\n  router.emit('pagePosition', $newPage[0], newPagePosition);\n\n  if (isMaster || isDetail) {\n    $newPage.trigger('page:role', { role: isMaster ? 'master' : 'detail', root: !!isDetailRoot });\n    router.emit('pageRole', $newPage[0], {\n      role: isMaster ? 'master' : 'detail',\n      detailRoot: !!isDetailRoot,\n    });\n  }\n\n  if (dynamicNavbar && $newNavbarEl.length) {\n    $newNavbarEl\n      .removeClass('navbar-previous navbar-current navbar-next')\n      .addClass(\n        `navbar-${newPagePosition}${isMaster ? ' navbar-master' : ''}${\n          isDetail ? ' navbar-master-detail' : ''\n        }${isDetailRoot ? ' navbar-master-detail-root' : ''}`,\n      );\n    $newNavbarEl.trigger('navbar:position', { position: newPagePosition });\n    router.emit('navbarPosition', $newNavbarEl[0], newPagePosition);\n    if (isMaster || isDetail) {\n      router.emit('navbarRole', $newNavbarEl[0], {\n        role: isMaster ? 'master' : 'detail',\n        detailRoot: !!isDetailRoot,\n      });\n    }\n  }\n\n  // Find Old Page\n  if (options.reloadCurrent || reloadDetail) {\n    if (reloadDetail) {\n      $oldPage = $pagesInView.filter((pageEl) => !pageEl.classList.contains('page-master'));\n      if (dynamicNavbar) {\n        $oldNavbarEl = $($oldPage.map((pageEl) => app.navbar.getElByPage(pageEl)));\n      }\n      if ($oldPage.length > 1 && masterPageEl) {\n        detailsInBetweenRemoved = $oldPage.length - 1;\n        $(masterPageEl).removeClass('page-master-stacked').trigger('page:masterunstack');\n        router.emit('pageMasterUnstack', masterPageEl);\n        if (dynamicNavbar) {\n          $(app.navbar.getElByPage(masterPageEl)).removeClass('navbar-master-stacked');\n          router.emit('navbarMasterUnstack', app.navbar.getElByPage(masterPageEl));\n        }\n      }\n    } else {\n      $oldPage = $pagesInView.eq($pagesInView.length - 1);\n      if (dynamicNavbar) {\n        $oldNavbarEl = $(app.navbar.getElByPage($oldPage));\n      }\n    }\n  } else if (options.reloadPrevious) {\n    $oldPage = $pagesInView.eq($pagesInView.length - 2);\n    if (dynamicNavbar) {\n      // $oldNavbarEl = $navbarsInView.eq($pagesInView.length - 2);\n      $oldNavbarEl = $(app.navbar.getElByPage($oldPage));\n    }\n  } else if (options.reloadAll) {\n    $oldPage = $pagesInView.filter((pageEl) => pageEl !== $newPage[0]);\n    if (dynamicNavbar) {\n      $oldNavbarEl = $navbarsInView.filter((navbarEl) => navbarEl !== $newNavbarEl[0]);\n    }\n  } else {\n    let removedPageEls = [];\n    let removedNavbarEls = [];\n    if ($pagesInView.length > 1) {\n      let i = 0;\n      for (i = 0; i < $pagesInView.length - 1; i += 1) {\n        if (masterPageEl && $pagesInView[i] === masterPageEl) {\n          $pagesInView.eq(i).addClass('page-master-stacked');\n          $pagesInView.eq(i).trigger('page:masterstack');\n          router.emit('pageMasterStack', $pagesInView[i]);\n          if (dynamicNavbar) {\n            $(app.navbar.getElByPage(masterPageEl)).addClass('navbar-master-stacked');\n            router.emit('navbarMasterStack', app.navbar.getElByPage(masterPageEl));\n          }\n          continue; // eslint-disable-line\n        }\n        const oldNavbarEl = app.navbar.getElByPage($pagesInView.eq(i));\n\n        // Page remove event\n        removedPageEls.push($pagesInView[i]);\n        router.pageCallback(\n          'beforeRemove',\n          $pagesInView[i],\n          $navbarsInView && $navbarsInView[i],\n          'previous',\n          undefined,\n          options,\n        );\n        router.removePage($pagesInView[i]);\n        if (dynamicNavbar && oldNavbarEl) {\n          removedNavbarEls.push(oldNavbarEl);\n          router.removeNavbar(oldNavbarEl);\n        }\n      }\n    }\n    $oldPage = $viewEl\n      .children('.page')\n      .filter((pageEl) => pageEl !== $newPage[0] && removedPageEls.indexOf(pageEl) < 0);\n    if (dynamicNavbar) {\n      $oldNavbarEl = $navbarsEl\n        .children('.navbar')\n        .filter(\n          (navbarEl) =>\n            navbarEl !== $newNavbarEl[0] && removedNavbarEls.indexOf(removedNavbarEls) < 0,\n        );\n    }\n    removedPageEls = [];\n    removedNavbarEls = [];\n  }\n\n  if (isDetail && !options.reloadAll) {\n    if ($oldPage.length > 1 || reloadDetail) {\n      $oldPage = $oldPage.filter((pageEl) => !pageEl.classList.contains('page-master'));\n    }\n    if ($oldNavbarEl && ($oldNavbarEl.length > 1 || reloadDetail)) {\n      $oldNavbarEl = $oldNavbarEl.filter(\n        (navbarEl) => !navbarEl.classList.contains('navbar-master'),\n      );\n    }\n  }\n\n  // Push State\n  if (\n    router.params.browserHistory &&\n    (options.browserHistory || options.replaceState) &&\n    !options.reloadPrevious\n  ) {\n    const browserHistoryRoot = router.params.browserHistoryRoot || '';\n    History[\n      options.reloadCurrent ||\n      (reloadDetail && otherDetailPageEl) ||\n      options.reloadAll ||\n      options.replaceState\n        ? 'replace'\n        : 'push'\n    ](\n      view.id,\n      {\n        url: options.route.url,\n      },\n      browserHistoryRoot + router.params.browserHistorySeparator + options.route.url,\n    );\n  }\n\n  if (!options.reloadPrevious) {\n    // Current Page & Navbar\n    router.currentPageEl = $newPage[0];\n    if (dynamicNavbar && $newNavbarEl.length) {\n      router.currentNavbarEl = $newNavbarEl[0];\n    } else {\n      delete router.currentNavbarEl;\n    }\n\n    // Current Route\n    router.currentRoute = options.route;\n  }\n\n  // Update router history\n  const url = options.route.url;\n  if (options.history) {\n    if (\n      ((options.reloadCurrent || (reloadDetail && otherDetailPageEl)) && router.history.length) >\n        0 ||\n      options.replaceState\n    ) {\n      if (reloadDetail && detailsInBetweenRemoved > 0) {\n        router.history = router.history.slice(0, router.history.length - detailsInBetweenRemoved);\n        router.propsHistory = router.propsHistory.slice(\n          0,\n          router.propsHistory.length - detailsInBetweenRemoved,\n        );\n      }\n      router.history[router.history.length - (options.reloadPrevious ? 2 : 1)] = url;\n      router.propsHistory[router.propsHistory.length - (options.reloadPrevious ? 2 : 1)] =\n        options.props || {};\n    } else if (options.reloadPrevious) {\n      router.history[router.history.length - 2] = url;\n      router.propsHistory[router.propsHistory.length - 2] = options.props || {};\n    } else if (options.reloadAll) {\n      router.history = [url];\n      router.propsHistory = [options.props || {}];\n    } else {\n      router.history.push(url);\n      router.propsHistory.push(options.props || {});\n    }\n  }\n  router.saveHistory();\n\n  // Insert new page and navbar\n  const newPageInDom = $newPage.parents(document).length > 0;\n  const f7Component = $newPage[0].f7Component;\n  if (options.reloadPrevious) {\n    if (f7Component && !newPageInDom) {\n      f7Component.mount((componentEl) => {\n        $(componentEl).insertBefore($oldPage);\n      });\n    } else {\n      $newPage.insertBefore($oldPage);\n    }\n    if (dynamicNavbar && $newNavbarEl.length) {\n      if ($newNavbarEl.find('.title-large').length) {\n        $newNavbarEl.addClass('navbar-large');\n      }\n      if ($oldNavbarEl.length) {\n        $newNavbarEl.insertBefore($oldNavbarEl);\n      } else {\n        if (!router.$navbarsEl.parents(document).length) {\n          router.$el.prepend(router.$navbarsEl);\n        }\n        $navbarsEl.append($newNavbarEl);\n      }\n    }\n  } else {\n    if ($oldPage.next('.page')[0] !== $newPage[0]) {\n      if (f7Component && !newPageInDom) {\n        f7Component.mount((componentEl) => {\n          $viewEl.append(componentEl);\n        });\n      } else {\n        $viewEl.append($newPage[0]);\n      }\n    }\n    if (dynamicNavbar && $newNavbarEl.length) {\n      if ($newNavbarEl.find('.title-large').length) {\n        $newNavbarEl.addClass('navbar-large');\n      }\n      if (!router.$navbarsEl.parents(document).length) {\n        router.$el.prepend(router.$navbarsEl);\n      }\n      $navbarsEl.append($newNavbarEl[0]);\n    }\n  }\n  if (!newPageInDom) {\n    router.pageCallback(\n      'mounted',\n      $newPage,\n      $newNavbarEl,\n      newPagePosition,\n      reload ? newPagePosition : 'current',\n      options,\n      $oldPage,\n    );\n  } else if (\n    options.route &&\n    options.route.route &&\n    options.route.route.keepAlive &&\n    !$newPage[0].f7PageMounted\n  ) {\n    $newPage[0].f7PageMounted = true;\n    router.pageCallback(\n      'mounted',\n      $newPage,\n      $newNavbarEl,\n      newPagePosition,\n      reload ? newPagePosition : 'current',\n      options,\n      $oldPage,\n    );\n  }\n\n  // Remove old page\n  if ((options.reloadCurrent || reloadDetail) && $oldPage.length > 0) {\n    // Page remove event\n    router.pageCallback('beforeOut', $oldPage, $oldNavbarEl, 'current', undefined, options);\n    router.pageCallback('afterOut', $oldPage, $oldNavbarEl, 'current', undefined, options);\n    router.pageCallback('beforeRemove', $oldPage, $oldNavbarEl, 'current', undefined, options);\n    router.removePage($oldPage);\n    if (dynamicNavbar && $oldNavbarEl && $oldNavbarEl.length) {\n      router.removeNavbar($oldNavbarEl);\n    }\n  } else if (options.reloadAll) {\n    $oldPage.each((pageEl, index) => {\n      const $oldPageEl = $(pageEl);\n      const $oldNavbarElEl = $(app.navbar.getElByPage($oldPageEl));\n\n      // Page remove event\n      if ($oldPageEl.hasClass('page-current')) {\n        router.pageCallback('beforeOut', $oldPage, $oldNavbarEl, 'current', undefined, options);\n        router.pageCallback('afterOut', $oldPage, $oldNavbarEl, 'current', undefined, options);\n      }\n      router.pageCallback(\n        'beforeRemove',\n        $oldPageEl,\n        $oldNavbarEl && $oldNavbarEl.eq(index),\n        'previous',\n        undefined,\n        options,\n      );\n      router.removePage($oldPageEl);\n      if (dynamicNavbar && $oldNavbarElEl.length) {\n        router.removeNavbar($oldNavbarElEl);\n      }\n    });\n  } else if (options.reloadPrevious) {\n    // Page remove event\n    router.pageCallback('beforeRemove', $oldPage, $oldNavbarEl, 'previous', undefined, options);\n    router.removePage($oldPage);\n    if (dynamicNavbar && $oldNavbarEl && $oldNavbarEl.length) {\n      router.removeNavbar($oldNavbarEl);\n    }\n  }\n\n  // Load Tab\n  if (options.route.route.tab) {\n    router.tabLoad(\n      options.route.route.tab,\n      extend({}, options, {\n        history: false,\n        browserHistory: false,\n      }),\n    );\n  }\n\n  // Check master detail\n  if (masterDetailEnabled) {\n    view.checkMasterDetailBreakpoint();\n  }\n\n  // Page init and before init events\n  router.pageCallback(\n    'init',\n    $newPage,\n    $newNavbarEl,\n    newPagePosition,\n    reload ? newPagePosition : 'current',\n    options,\n    $oldPage,\n  );\n\n  if (options.reloadCurrent || options.reloadAll || reloadDetail) {\n    router.allowPageChange = true;\n    router.pageCallback('beforeIn', $newPage, $newNavbarEl, newPagePosition, 'current', options);\n    $newPage.removeAttr('aria-hidden');\n    if (dynamicNavbar && $newNavbarEl) {\n      $newNavbarEl.removeAttr('aria-hidden');\n    }\n    router.pageCallback('afterIn', $newPage, $newNavbarEl, newPagePosition, 'current', options);\n    if (options.reloadCurrent && options.clearPreviousHistory) router.clearPreviousHistory();\n    if (reloadDetail) {\n      router.setPagePosition($(masterPageEl), 'previous');\n      if (masterPageEl.f7Page && masterPageEl.f7Page.navbarEl) {\n        router.setNavbarPosition($(masterPageEl.f7Page.navbarEl), 'previous');\n      }\n    }\n    return router;\n  }\n  if (options.reloadPrevious) {\n    router.allowPageChange = true;\n    return router;\n  }\n\n  // Before animation event\n  router.pageCallback('beforeOut', $oldPage, $oldNavbarEl, 'current', 'previous', options);\n  router.pageCallback('beforeIn', $newPage, $newNavbarEl, 'next', 'current', options);\n\n  // Animation\n  function afterAnimation() {\n    router.setPagePosition($newPage, 'current', false);\n    router.setPagePosition($oldPage, 'previous', !$oldPage.hasClass('page-master'));\n    if (dynamicNavbar) {\n      router.setNavbarPosition($newNavbarEl, 'current', false);\n      router.setNavbarPosition($oldNavbarEl, 'previous', !$oldNavbarEl.hasClass('navbar-master'));\n    }\n    // After animation event\n    router.allowPageChange = true;\n    router.pageCallback('afterOut', $oldPage, $oldNavbarEl, 'current', 'previous', options);\n    router.pageCallback('afterIn', $newPage, $newNavbarEl, 'next', 'current', options);\n\n    let keepOldPage =\n      (router.params.preloadPreviousPage || router.params[`${app.theme}SwipeBack`]) && !isMaster;\n    if (!keepOldPage) {\n      if (\n        $newPage.hasClass('smart-select-page') ||\n        $newPage.hasClass('photo-browser-page') ||\n        $newPage.hasClass('autocomplete-page') ||\n        $newPage.hasClass('color-picker-page')\n      ) {\n        keepOldPage = true;\n      }\n    }\n    if (!keepOldPage) {\n      if (!($newPage.attr('data-name') && $newPage.attr('data-name') === 'smart-select-page')) {\n        // Remove event\n        router.pageCallback('beforeRemove', $oldPage, $oldNavbarEl, 'previous', undefined, options);\n        router.removePage($oldPage);\n        if (dynamicNavbar && $oldNavbarEl.length) {\n          router.removeNavbar($oldNavbarEl);\n        }\n      }\n    }\n    if (options.clearPreviousHistory) router.clearPreviousHistory();\n    router.emit('routeChanged', router.currentRoute, router.previousRoute, router);\n\n    if (router.params.browserHistory) {\n      History.clearRouterQueue();\n    }\n  }\n  function setPositionClasses() {\n    router.setPagePosition($oldPage, 'current', false);\n    router.setPagePosition($newPage, 'next', false);\n    if (dynamicNavbar) {\n      router.setNavbarPosition($oldNavbarEl, 'current', false);\n      router.setNavbarPosition($newNavbarEl, 'next', false);\n    }\n  }\n  if (options.animate && !(isMaster && app.width >= router.params.masterDetailBreakpoint)) {\n    const delay = router.params[`${router.app.theme}PageLoadDelay`];\n    let transition = router.params.transition;\n    if (options.transition) transition = options.transition;\n    if (!transition && router.currentRoute && router.currentRoute.route) {\n      transition = router.currentRoute.route.transition;\n    }\n    if (!transition && router.currentRoute && router.currentRoute.route.options) {\n      transition = router.currentRoute.route.options.transition;\n    }\n    if (transition) {\n      $newPage[0].f7PageTransition = transition;\n    }\n\n    if (delay) {\n      setTimeout(() => {\n        setPositionClasses();\n        router.animate(\n          $oldPage,\n          $newPage,\n          $oldNavbarEl,\n          $newNavbarEl,\n          'forward',\n          transition,\n          () => {\n            afterAnimation();\n          },\n        );\n      }, delay);\n    } else {\n      setPositionClasses();\n      router.animate($oldPage, $newPage, $oldNavbarEl, $newNavbarEl, 'forward', transition, () => {\n        afterAnimation();\n      });\n    }\n  } else {\n    afterAnimation();\n  }\n  return router;\n}\nfunction load(router, loadParams = {}, loadOptions = {}, ignorePageChange) {\n  if (!router.allowPageChange && !ignorePageChange) return router;\n  const params = loadParams;\n  const options = loadOptions;\n  const { url, content, el, pageName, component, componentUrl } = params;\n\n  if (\n    !options.reloadCurrent &&\n    options.route &&\n    options.route.route &&\n    options.route.route.parentPath &&\n    router.currentRoute.route &&\n    router.currentRoute.route.parentPath === options.route.route.parentPath\n  ) {\n    // Do something nested\n    if (options.route.url === router.url) {\n      router.allowPageChange = true;\n      return false;\n    }\n    // Check for same params\n    let sameParams =\n      Object.keys(options.route.params).length === Object.keys(router.currentRoute.params).length;\n    if (sameParams) {\n      // Check for equal params name\n      Object.keys(options.route.params).forEach((paramName) => {\n        if (\n          !(paramName in router.currentRoute.params) ||\n          router.currentRoute.params[paramName] !== options.route.params[paramName]\n        ) {\n          sameParams = false;\n        }\n      });\n    }\n    if (sameParams) {\n      if (options.route.route.tab) {\n        return router.tabLoad(options.route.route.tab, options);\n      }\n      return false;\n    }\n    if (\n      !sameParams &&\n      options.route.route.tab &&\n      router.currentRoute.route.tab &&\n      router.currentRoute.parentPath === options.route.parentPath\n    ) {\n      return router.tabLoad(options.route.route.tab, options);\n    }\n  }\n\n  if (\n    options.route &&\n    options.route.url &&\n    router.url === options.route.url &&\n    !(options.reloadCurrent || options.reloadPrevious) &&\n    !router.params.allowDuplicateUrls\n  ) {\n    router.allowPageChange = true;\n    return false;\n  }\n\n  if (!options.route && url) {\n    options.route = router.parseRouteUrl(url);\n    extend(options.route, { route: { url, path: url } });\n  }\n\n  // Component Callbacks\n  function resolve(pageEl, newOptions) {\n    return forward(router, pageEl, extend(options, newOptions));\n  }\n  function reject() {\n    router.allowPageChange = true;\n    return router;\n  }\n\n  if (url || componentUrl || component) {\n    router.allowPageChange = false;\n  }\n\n  // Proceed\n  if (content) {\n    forward(router, router.getPageEl(content), options);\n  } else if (el) {\n    // Load page from specified HTMLElement or by page name in pages container\n    forward(router, router.getPageEl(el), options);\n  } else if (pageName) {\n    // Load page by page name in pages container\n    forward(router, router.$el.children(`.page[data-name=\"${pageName}\"]`).eq(0), options);\n  } else if (component || componentUrl) {\n    // Load from component (F7/Vue/React/...)\n    try {\n      router.pageComponentLoader({\n        routerEl: router.el,\n        component,\n        componentUrl,\n        options,\n        resolve,\n        reject,\n      });\n    } catch (err) {\n      router.allowPageChange = true;\n      throw err;\n    }\n  } else if (url) {\n    // Load using XHR\n    if (router.xhrAbortController) {\n      router.xhrAbortController.abort();\n      router.xhrAbortController = false;\n    }\n    router\n      .xhrRequest(url, options)\n      .then((pageContent) => {\n        forward(router, router.getPageEl(pageContent), options);\n      })\n      .catch(() => {\n        router.allowPageChange = true;\n      });\n  }\n  return router;\n}\n\nfunction navigate(navigateParams, navigateOptions = {}) {\n  const router = this;\n\n  if (router.swipeBackActive) return router;\n  let url;\n  let createRoute;\n  let name;\n  let path;\n  let query;\n  let params;\n  let route;\n  if (typeof navigateParams === 'string') {\n    url = navigateParams;\n  } else {\n    url = navigateParams.url;\n    createRoute = navigateParams.route;\n    name = navigateParams.name;\n    path = navigateParams.path;\n    query = navigateParams.query;\n    params = navigateParams.params;\n  }\n  if (name || path) {\n    url = router.generateUrl({ path, name, params, query });\n    if (url) {\n      return router.navigate(url, navigateOptions);\n    }\n    return router;\n  }\n  const app = router.app;\n  appRouterCheck(router, 'navigate');\n  if (url === '#' || url === '') {\n    return router;\n  }\n\n  let navigateUrl = url.replace('./', '');\n  if (navigateUrl[0] !== '/' && navigateUrl.indexOf('#') !== 0) {\n    const currentPath = router.currentRoute.parentPath || router.currentRoute.path;\n    navigateUrl = ((currentPath ? `${currentPath}/` : '/') + navigateUrl)\n      .replace('///', '/')\n      .replace('//', '/');\n  }\n  if (createRoute) {\n    route = extend(router.parseRouteUrl(navigateUrl), {\n      route: extend({}, createRoute),\n    });\n  } else {\n    route = router.findMatchingRoute(navigateUrl);\n  }\n\n  if (!route) {\n    return router;\n  }\n  if (route.route && route.route.viewName) {\n    const anotherViewName = route.route.viewName;\n    const anotherView = app.views[anotherViewName];\n    if (!anotherView) {\n      throw new Error(\n        `Framework7: There is no View with \"${anotherViewName}\" name that was specified in this route`,\n      );\n    }\n    if (anotherView !== router.view) {\n      return anotherView.router.navigate(navigateParams, navigateOptions);\n    }\n  }\n\n  if (route.route.redirect) {\n    return redirect.call(router, 'forward', route, navigateOptions);\n  }\n\n  const options = {};\n  if (route.route.options) {\n    extend(options, route.route.options, navigateOptions);\n  } else {\n    extend(options, navigateOptions);\n  }\n\n  if (\n    options.openIn &&\n    (!router.params.ignoreOpenIn || (router.params.ignoreOpenIn && router.history.length > 0))\n  ) {\n    return router.openIn(router, navigateUrl, options);\n  }\n\n  options.route = route;\n\n  function resolve() {\n    let routerLoaded = false;\n    'popup popover sheet loginScreen actions customModal panel'\n      .split(' ')\n      .forEach((modalLoadProp) => {\n        if (route.route[modalLoadProp] && !routerLoaded) {\n          routerLoaded = true;\n          router.modalLoad(modalLoadProp, route, options, 'forward');\n        }\n      });\n    if (route.route.keepAlive && route.route.keepAliveData) {\n      load(router, { el: route.route.keepAliveData.pageEl }, options, false);\n      routerLoaded = true;\n    }\n    'url content component pageName el componentUrl'.split(' ').forEach((pageLoadProp) => {\n      if (route.route[pageLoadProp] && !routerLoaded) {\n        routerLoaded = true;\n        load(router, { [pageLoadProp]: route.route[pageLoadProp] }, options, false);\n      }\n    });\n    if (routerLoaded) return;\n    // Async\n    function asyncResolve(resolveParams, resolveOptions) {\n      router.allowPageChange = false;\n      let resolvedAsModal = false;\n\n      'popup popover sheet loginScreen actions customModal panel'\n        .split(' ')\n        .forEach((modalLoadProp) => {\n          if (resolveParams[modalLoadProp]) {\n            resolvedAsModal = true;\n            const modalRoute = extend({}, route, { route: resolveParams });\n            router.allowPageChange = true;\n            router.modalLoad(modalLoadProp, modalRoute, extend(options, resolveOptions), 'forward');\n          }\n        });\n      if (resolvedAsModal) return;\n      load(router, resolveParams, extend(options, resolveOptions), true);\n    }\n    function asyncReject() {\n      router.allowPageChange = true;\n    }\n    if (route.route.async) {\n      router.allowPageChange = false;\n      route.route.async.call(router, {\n        router,\n        to: options.route,\n        from: router.currentRoute,\n        resolve: asyncResolve,\n        reject: asyncReject,\n        direction: 'forward',\n        app,\n      });\n    }\n    if (route.route.asyncComponent) {\n      asyncComponent(router, route.route.asyncComponent, asyncResolve, asyncReject);\n    }\n  }\n  function reject() {\n    router.allowPageChange = true;\n  }\n\n  if (router.params.masterDetailBreakpoint > 0 && route.route.masterRoute) {\n    // load detail route\n    let preloadMaster = true;\n    let masterLoaded = false;\n    if (router.currentRoute && router.currentRoute.route) {\n      if (\n        (router.currentRoute.route.master === true ||\n          (typeof router.currentRoute.route.master === 'function' &&\n            router.currentRoute.route.master(app, router))) &&\n        (router.currentRoute.route === route.route.masterRoute ||\n          router.currentRoute.route.path === route.route.masterRoute.path)\n      ) {\n        preloadMaster = false;\n      }\n      if (\n        router.currentRoute.route.masterRoute &&\n        (router.currentRoute.route.masterRoute === route.route.masterRoute ||\n          router.currentRoute.route.masterRoute.path === route.route.masterRoute.path)\n      ) {\n        preloadMaster = false;\n        masterLoaded = true;\n      }\n    }\n    if (preloadMaster || (masterLoaded && navigateOptions.reloadAll)) {\n      router.navigate(\n        { path: route.route.masterRoute.path, params: route.params || {} },\n        {\n          animate: false,\n          reloadAll: navigateOptions.reloadAll,\n          reloadCurrent: navigateOptions.reloadCurrent,\n          reloadPrevious: navigateOptions.reloadPrevious,\n          browserHistory: !navigateOptions.initial,\n          history: !navigateOptions.initial,\n          once: {\n            pageAfterIn() {\n              router.navigate(\n                navigateParams,\n                extend({}, navigateOptions, {\n                  animate: false,\n                  reloadAll: false,\n                  reloadCurrent: false,\n                  reloadPrevious: false,\n                  history: !navigateOptions.initial,\n                  browserHistory: !navigateOptions.initial,\n                }),\n              );\n            },\n          },\n        },\n      );\n      return router;\n    }\n  }\n\n  processRouteQueue.call(\n    router,\n    route,\n    router.currentRoute,\n    () => {\n      if (route.route.modules) {\n        app\n          .loadModules(\n            Array.isArray(route.route.modules) ? route.route.modules : [route.route.modules],\n          )\n          .then(() => {\n            resolve();\n          })\n          .catch(() => {\n            reject();\n          });\n      } else {\n        resolve();\n      }\n    },\n    () => {\n      reject();\n    },\n    'forward',\n  );\n\n  // Return Router\n  return router;\n}\nexport { refreshPage, navigate };\n","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { extend, parseUrlQuery } from '../../shared/utils.js';\nimport { getDevice } from '../../shared/get-device.js';\nimport History from '../../shared/history.js';\nimport redirect from './redirect.js';\nimport processRouteQueue from './process-route-queue.js';\nimport appRouterCheck from './app-router-check.js';\nimport asyncComponent from './async-component.js';\n\nfunction backward(router, el, backwardOptions) {\n  const device = getDevice();\n  const document = getDocument();\n  const $el = $(el);\n  const app = router.app;\n  const view = router.view;\n\n  const options = extend(\n    false,\n    {\n      animate: router.params.animate,\n      browserHistory: true,\n      replaceState: false,\n    },\n    backwardOptions,\n  );\n\n  const masterDetailEnabled = router.params.masterDetailBreakpoint > 0;\n  const isMaster =\n    masterDetailEnabled &&\n    options.route &&\n    options.route.route &&\n    (options.route.route.master === true ||\n      (typeof options.route.route.master === 'function' &&\n        options.route.route.master(app, router)));\n  let masterPageEl;\n  let masterPageRemoved;\n\n  const dynamicNavbar = router.dynamicNavbar;\n\n  const $newPage = $el;\n  const $oldPage = router.$el.children('.page-current');\n  const initialPreload = $oldPage.length === 0 && options.preload;\n  const currentIsMaster = masterDetailEnabled && $oldPage.hasClass('page-master');\n\n  if ($newPage.length) {\n    // Remove theme elements\n    router.removeThemeElements($newPage);\n  }\n\n  let $navbarsEl;\n  let $newNavbarEl;\n  let $oldNavbarEl;\n\n  if (dynamicNavbar) {\n    $newNavbarEl = $newPage.children('.navbar');\n    $navbarsEl = router.$navbarsEl;\n    if ($newNavbarEl.length === 0 && $newPage[0] && $newPage[0].f7Page) {\n      // Try from pageData\n      $newNavbarEl = $newPage[0].f7Page.$navbarEl;\n    }\n    $oldNavbarEl = $navbarsEl.find('.navbar-current');\n  }\n\n  router.allowPageChange = false;\n  if ($newPage.length === 0 || ($oldPage.length === 0 && !options.preload)) {\n    router.allowPageChange = true;\n    return router;\n  }\n\n  // Remove theme elements\n  router.removeThemeElements($newPage);\n\n  // Save Keep Alive Cache\n  if (\n    options.route &&\n    options.route.route &&\n    options.route.route.keepAlive &&\n    !options.route.route.keepAliveData\n  ) {\n    options.route.route.keepAliveData = {\n      pageEl: $el[0],\n    };\n  }\n\n  // Pages In View\n  let isDetail;\n  let isDetailRoot;\n  if (masterDetailEnabled) {\n    const $pagesInView = router.$el\n      .children('.page')\n      .filter((pageInView) => pageInView !== $newPage[0]);\n\n    // Find Detail' master page\n    for (let i = 0; i < $pagesInView.length; i += 1) {\n      if (!masterPageEl && $pagesInView[i].classList.contains('page-master')) {\n        masterPageEl = $pagesInView[i];\n        continue; // eslint-disable-line\n      }\n    }\n\n    isDetail =\n      !isMaster &&\n      masterPageEl &&\n      router.history.indexOf(options.route.url) >\n        router.history.indexOf(masterPageEl.f7Page.route.url);\n\n    if (\n      !isDetail &&\n      !isMaster &&\n      masterPageEl &&\n      masterPageEl.f7Page &&\n      options.route.route.masterRoute\n    ) {\n      isDetail = options.route.route.masterRoute.path === masterPageEl.f7Page.route.route.path;\n    }\n  }\n  if (isDetail && masterPageEl && masterPageEl.f7Page) {\n    isDetailRoot =\n      router.history.indexOf(options.route.url) -\n        router.history.indexOf(masterPageEl.f7Page.route.url) ===\n      1;\n  }\n\n  // New Page\n  $newPage\n    .addClass(\n      `page-${initialPreload ? 'current' : 'previous'}${isMaster ? ' page-master' : ''}${\n        isDetail ? ' page-master-detail' : ''\n      }${isDetailRoot ? ' page-master-detail-root' : ''}`,\n    )\n    .removeAttr('aria-hidden')\n    .trigger('page:unstack')\n    .trigger('page:position', { position: initialPreload ? 'current' : 'previous' });\n  router.emit('pageUnstack', $newPage[0]);\n  router.emit('pagePosition', $newPage[0], initialPreload ? 'current' : 'previous');\n  if (isMaster || isDetail) {\n    $newPage.trigger('page:role', { role: isMaster ? 'master' : 'detail', root: !!isDetailRoot });\n    router.emit('pageRole', $newPage[0], {\n      role: isMaster ? 'master' : 'detail',\n      detailRoot: !!isDetailRoot,\n    });\n  }\n\n  if (dynamicNavbar && $newNavbarEl.length > 0) {\n    $newNavbarEl\n      .addClass(\n        `navbar-${initialPreload ? 'current' : 'previous'}${isMaster ? ' navbar-master' : ''}${\n          isDetail ? ' navbar-master-detail' : ''\n        }${isDetailRoot ? ' navbar-master-detail-root' : ''}`,\n      )\n      .removeAttr('aria-hidden');\n    $newNavbarEl.trigger('navbar:position', { position: initialPreload ? 'current' : 'previous' });\n    router.emit('navbarPosition', $newNavbarEl[0], initialPreload ? 'current' : 'previous');\n    if (isMaster || isDetailRoot) {\n      router.emit('navbarRole', $newNavbarEl[0], {\n        role: isMaster ? 'master' : 'detail',\n        detailRoot: !!isDetailRoot,\n      });\n    }\n  }\n\n  // Remove previous page in case of \"forced\"\n  let backIndex;\n  if (options.force) {\n    if ($oldPage.prev('.page-previous').length >= 0) {\n      if (router.history.indexOf(options.route.url) >= 0) {\n        backIndex = router.history.length - router.history.indexOf(options.route.url) - 1;\n        router.history = router.history.slice(0, router.history.indexOf(options.route.url) + 2);\n        router.propsHistory = router.propsHistory.slice(\n          0,\n          router.history.indexOf(options.route.url) + 2,\n        );\n        view.history = router.history;\n      } else if (router.history[[router.history.length - 2]]) {\n        router.propsHistory[router.propsHistory.length - 2] = options.props || {};\n      } else {\n        router.history.unshift(router.url);\n        router.propsHistory.unshift(options.props || {});\n      }\n\n      const $pageToRemove = $oldPage.prev('.page-previous');\n      let $navbarToRemove;\n      if (dynamicNavbar) {\n        $navbarToRemove = $(app.navbar.getElByPage($pageToRemove));\n      }\n      if ($pageToRemove.length > 0) {\n        router.pageCallback(\n          'beforeRemove',\n          $pageToRemove,\n          $navbarToRemove,\n          'previous',\n          undefined,\n          options,\n        );\n        if ($pageToRemove[0] === masterPageEl) {\n          masterPageRemoved = true;\n        }\n        router.removePage($pageToRemove);\n        if (dynamicNavbar && $navbarToRemove.length) {\n          router.removeNavbar($navbarToRemove);\n        }\n      }\n    }\n  }\n\n  // Insert new page\n  const newPageInDom = $newPage.parents(document).length > 0;\n  const f7Component = $newPage[0].f7Component;\n\n  function insertPage() {\n    if (initialPreload) {\n      if (!newPageInDom && f7Component) {\n        f7Component.mount((componentEl) => {\n          router.$el.append(componentEl);\n        });\n      } else {\n        router.$el.append($newPage);\n      }\n    }\n    if ($newPage.next($oldPage).length === 0) {\n      if (!newPageInDom && f7Component) {\n        f7Component.mount((componentEl) => {\n          $(componentEl).insertBefore($oldPage);\n        });\n      } else {\n        $newPage.insertBefore($oldPage);\n      }\n    }\n    if (dynamicNavbar && $newNavbarEl.length) {\n      if ($newNavbarEl.find('.title-large').length) {\n        $newNavbarEl.addClass('navbar-large');\n      }\n      $newNavbarEl.insertBefore($oldNavbarEl);\n      if ($oldNavbarEl.length > 0) {\n        $newNavbarEl.insertBefore($oldNavbarEl);\n      } else {\n        if (!router.$navbarsEl.parents(document).length) {\n          router.$el.prepend(router.$navbarsEl);\n        }\n        $navbarsEl.append($newNavbarEl);\n      }\n    }\n    if (!newPageInDom) {\n      router.pageCallback(\n        'mounted',\n        $newPage,\n        $newNavbarEl,\n        'previous',\n        'current',\n        options,\n        $oldPage,\n      );\n    } else if (\n      options.route &&\n      options.route.route &&\n      options.route.route.keepAlive &&\n      !$newPage[0].f7PageMounted\n    ) {\n      $newPage[0].f7PageMounted = true;\n      router.pageCallback(\n        'mounted',\n        $newPage,\n        $newNavbarEl,\n        'previous',\n        'current',\n        options,\n        $oldPage,\n      );\n    }\n  }\n\n  if (options.preload) {\n    // Insert Page\n    insertPage();\n    // Tab route\n    if (options.route.route.tab) {\n      router.tabLoad(\n        options.route.route.tab,\n        extend({}, options, {\n          history: false,\n          browserHistory: false,\n          preload: true,\n        }),\n      );\n    }\n    if (isMaster) {\n      $newPage.removeClass('page-master-stacked').trigger('page:masterunstack');\n      router.emit('pageMasterUnstack', $newPage[0]);\n      if (dynamicNavbar) {\n        $(app.navbar.getElByPage($newPage)).removeClass('navbar-master-stacked');\n        router.emit('navbarMasterUnstack', app.navbar.getElByPage($newPage));\n      }\n    }\n    // Page init and before init events\n    router.pageCallback('init', $newPage, $newNavbarEl, 'previous', 'current', options, $oldPage);\n    if (initialPreload) {\n      router.pageCallback('beforeIn', $newPage, $newNavbarEl, 'current', undefined, options);\n      router.pageCallback('afterIn', $newPage, $newNavbarEl, 'current', undefined, options);\n    }\n    const $previousPages = $newPage.prevAll('.page-previous:not(.page-master)');\n    if ($previousPages.length > 0) {\n      $previousPages.each((pageToRemove) => {\n        const $pageToRemove = $(pageToRemove);\n        let $navbarToRemove;\n        if (dynamicNavbar) {\n          $navbarToRemove = $(app.navbar.getElByPage($pageToRemove));\n        }\n\n        router.pageCallback('beforeRemove', $pageToRemove, $navbarToRemove, 'previous', undefined);\n        router.removePage($pageToRemove);\n        if (dynamicNavbar && $navbarToRemove.length) {\n          router.removeNavbar($navbarToRemove);\n        }\n      });\n    }\n    router.allowPageChange = true;\n    return router;\n  }\n\n  // History State\n  if (!(device.ie || device.edge || (device.firefox && !device.ios))) {\n    if (router.params.browserHistory && options.browserHistory) {\n      if (options.replaceState) {\n        const browserHistoryRoot = router.params.browserHistoryRoot || '';\n        History.replace(\n          view.id,\n          {\n            url: options.route.url,\n          },\n          browserHistoryRoot + router.params.browserHistorySeparator + options.route.url,\n        );\n      } else if (backIndex) {\n        History.go(-backIndex);\n      } else {\n        History.back();\n      }\n    }\n  }\n\n  // Update History\n  if (options.replaceState) {\n    router.history[router.history.length - 1] = options.route.url;\n    router.propsHistory[router.propsHistory.length - 1] = options.props || {};\n  } else {\n    if (router.history.length === 1) {\n      router.history.unshift(router.url);\n      router.propsHistory.unshift(options.props || {});\n    }\n    router.history.pop();\n    router.propsHistory.pop();\n  }\n  router.saveHistory();\n\n  // Current Page & Navbar\n  router.currentPageEl = $newPage[0];\n  if (dynamicNavbar && $newNavbarEl.length) {\n    router.currentNavbarEl = $newNavbarEl[0];\n  } else {\n    delete router.currentNavbarEl;\n  }\n\n  // Current Route\n  router.currentRoute = options.route;\n\n  // History State\n  if (device.ie || device.edge || (device.firefox && !device.ios)) {\n    if (router.params.browserHistory && options.browserHistory) {\n      if (options.replaceState) {\n        const browserHistoryRoot = router.params.browserHistoryRoot || '';\n        History.replace(\n          view.id,\n          {\n            url: options.route.url,\n          },\n          browserHistoryRoot + router.params.browserHistorySeparator + options.route.url,\n        );\n      } else if (backIndex) {\n        History.go(-backIndex);\n      } else {\n        History.back();\n      }\n    }\n  }\n\n  // Insert Page\n  insertPage();\n\n  // Load Tab\n  if (options.route.route.tab) {\n    router.tabLoad(\n      options.route.route.tab,\n      extend({}, options, {\n        history: false,\n        browserHistory: false,\n      }),\n    );\n  }\n\n  // Check master detail\n\n  if (masterDetailEnabled && (currentIsMaster || masterPageRemoved)) {\n    view.checkMasterDetailBreakpoint(false);\n  }\n\n  // Page init and before init events\n  router.pageCallback('init', $newPage, $newNavbarEl, 'previous', 'current', options, $oldPage);\n\n  // Before animation callback\n  router.pageCallback('beforeOut', $oldPage, $oldNavbarEl, 'current', 'next', options);\n  router.pageCallback('beforeIn', $newPage, $newNavbarEl, 'previous', 'current', options);\n\n  // Animation\n  function afterAnimation() {\n    // Set classes\n    router.setPagePosition($newPage, 'current', false);\n    router.setPagePosition($oldPage, 'next', true);\n    if (dynamicNavbar) {\n      router.setNavbarPosition($newNavbarEl, 'current', false);\n      router.setNavbarPosition($oldNavbarEl, 'next', true);\n    }\n\n    // After animation event\n    router.pageCallback('afterOut', $oldPage, $oldNavbarEl, 'current', 'next', options);\n    router.pageCallback('afterIn', $newPage, $newNavbarEl, 'previous', 'current', options);\n\n    // Remove Old Page\n\n    router.pageCallback('beforeRemove', $oldPage, $oldNavbarEl, 'next', undefined, options);\n    router.removePage($oldPage);\n    if (dynamicNavbar && $oldNavbarEl.length) {\n      router.removeNavbar($oldNavbarEl);\n    }\n\n    router.allowPageChange = true;\n    router.emit('routeChanged', router.currentRoute, router.previousRoute, router);\n\n    // Preload previous page\n    const preloadPreviousPage =\n      router.params.preloadPreviousPage || router.params[`${app.theme}SwipeBack`];\n    if (preloadPreviousPage && router.history[router.history.length - 2] && !isMaster) {\n      router.back(router.history[router.history.length - 2], {\n        preload: true,\n        props: router.propsHistory[router.propsHistory.length - 2] || {},\n      });\n    }\n    if (router.params.browserHistory) {\n      History.clearRouterQueue();\n    }\n  }\n\n  function setPositionClasses() {\n    router.setPagePosition($oldPage, 'current');\n    router.setPagePosition($newPage, 'previous', false);\n    if (dynamicNavbar) {\n      router.setNavbarPosition($oldNavbarEl, 'current');\n      router.setNavbarPosition($newNavbarEl, 'previous', false);\n    }\n  }\n\n  if (options.animate && !(currentIsMaster && app.width >= router.params.masterDetailBreakpoint)) {\n    let transition = router.params.transition;\n    if ($oldPage[0] && $oldPage[0].f7PageTransition) {\n      transition = $oldPage[0].f7PageTransition;\n      delete $oldPage[0].f7PageTransition;\n    }\n    if (options.transition) transition = options.transition;\n    if (!transition && router.previousRoute && router.previousRoute.route) {\n      transition = router.previousRoute.route.transition;\n    }\n    if (\n      !transition &&\n      router.previousRoute &&\n      router.previousRoute.route &&\n      router.previousRoute.route.options\n    ) {\n      transition = router.previousRoute.route.options.transition;\n    }\n    setPositionClasses();\n    router.animate($oldPage, $newPage, $oldNavbarEl, $newNavbarEl, 'backward', transition, () => {\n      afterAnimation();\n    });\n  } else {\n    afterAnimation();\n  }\n\n  return router;\n}\nfunction loadBack(router, backParams, backOptions, ignorePageChange) {\n  if (!router.allowPageChange && !ignorePageChange) return router;\n  const params = backParams;\n  const options = backOptions;\n  const { url, content, el, pageName, component, componentUrl } = params;\n\n  if (\n    options.route.url &&\n    router.url === options.route.url &&\n    !(options.reloadCurrent || options.reloadPrevious) &&\n    !router.params.allowDuplicateUrls\n  ) {\n    router.allowPageChange = true;\n    return false;\n  }\n\n  if (!options.route && url) {\n    options.route = router.parseRouteUrl(url);\n  }\n\n  // Component Callbacks\n  function resolve(pageEl, newOptions) {\n    return backward(router, pageEl, extend(options, newOptions));\n  }\n  function reject() {\n    router.allowPageChange = true;\n    return router;\n  }\n\n  if (url || componentUrl || component) {\n    router.allowPageChange = false;\n  }\n\n  // Proceed\n  if (content) {\n    backward(router, router.getPageEl(content), options);\n  } else if (el) {\n    // Load page from specified HTMLElement or by page name in pages container\n    backward(router, router.getPageEl(el), options);\n  } else if (pageName) {\n    // Load page by page name in pages container\n    backward(router, router.$el.children(`.page[data-name=\"${pageName}\"]`).eq(0), options);\n  } else if (component || componentUrl) {\n    // Load from component (F7/Vue/React/...)\n    try {\n      router.pageComponentLoader({\n        routerEl: router.el,\n        component,\n        componentUrl,\n        options,\n        resolve,\n        reject,\n      });\n    } catch (err) {\n      router.allowPageChange = true;\n      throw err;\n    }\n  } else if (url) {\n    // Load using XHR\n    if (router.xhrAbortController) {\n      router.xhrAbortController.abort();\n      router.xhrAbortController = false;\n    }\n    router\n      .xhrRequest(url, options)\n      .then((pageContent) => {\n        backward(router, router.getPageEl(pageContent), options);\n      })\n      .catch(() => {\n        router.allowPageChange = true;\n      });\n  }\n  return router;\n}\nfunction back(...args) {\n  const router = this;\n  const device = getDevice();\n  if (router.swipeBackActive) return router;\n  let navigateUrl;\n  let navigateOptions;\n  let navigateProps;\n  let route;\n  if (typeof args[0] === 'object') {\n    navigateOptions = args[0] || {};\n  } else {\n    navigateUrl = args[0];\n    navigateOptions = args[1] || {};\n  }\n\n  const { name, params, query } = navigateOptions;\n  if (name) {\n    navigateUrl = router.generateUrl({ name, params, query });\n    if (navigateUrl) {\n      return router.back(\n        navigateUrl,\n        extend({}, navigateOptions, {\n          name: null,\n          params: null,\n          query: null,\n        }),\n      );\n    }\n    return router;\n  }\n\n  const app = router.app;\n  appRouterCheck(router, 'back');\n\n  let currentRouteIsModal = router.currentRoute.modal;\n  let modalType;\n  if (!currentRouteIsModal) {\n    'popup popover sheet loginScreen actions customModal panel'\n      .split(' ')\n      .forEach((modalLoadProp) => {\n        if (router.currentRoute.route[modalLoadProp]) {\n          currentRouteIsModal = true;\n          modalType = modalLoadProp;\n        }\n      });\n  }\n  if (currentRouteIsModal && !navigateOptions.preload) {\n    const modalToClose =\n      router.currentRoute.modal || router.currentRoute.route.modalInstance || app[modalType].get();\n    const previousUrl = router.history[router.history.length - 2];\n    let previousRoute;\n    // check if previous route is modal too\n    if (modalToClose && modalToClose.$el) {\n      const prevOpenedModals = modalToClose.$el.prevAll('.modal-in');\n      if (prevOpenedModals.length && prevOpenedModals[0].f7Modal) {\n        const modalEl = prevOpenedModals[0];\n        // check if current router not inside of the modalEl\n        if (!router.$el.parents(modalEl).length) {\n          previousRoute = modalEl.f7Modal.route;\n        }\n      }\n    }\n    if (!previousRoute) {\n      previousRoute = router.findMatchingRoute(previousUrl);\n    }\n\n    if (!previousRoute && previousUrl) {\n      previousRoute = {\n        url: previousUrl,\n        path: previousUrl.split('?')[0],\n        query: parseUrlQuery(previousUrl),\n        route: {\n          path: previousUrl.split('?')[0],\n          url: previousUrl,\n        },\n      };\n    }\n    if (!navigateUrl || navigateUrl.replace(/[# ]/g, '').trim().length === 0) {\n      if (!previousRoute || !modalToClose) {\n        return router;\n      }\n    }\n    const forceOtherUrl = navigateOptions.force && previousRoute && navigateUrl;\n    if (previousRoute && modalToClose) {\n      const isBrokenBrowserHistory = device.ie || device.edge || (device.firefox && !device.ios);\n      const needHistoryBack =\n        router.params.browserHistory && navigateOptions.browserHistory !== false;\n      const currentRouteWithoutBrowserHistory =\n        router.currentRoute &&\n        router.currentRoute.route &&\n        router.currentRoute.route.options &&\n        router.currentRoute.route.options.browserHistory === false;\n      if (needHistoryBack && !isBrokenBrowserHistory && !currentRouteWithoutBrowserHistory) {\n        History.back();\n      }\n      router.currentRoute = previousRoute;\n      router.history.pop();\n      router.propsHistory.pop();\n      router.saveHistory();\n\n      if (needHistoryBack && isBrokenBrowserHistory && !currentRouteWithoutBrowserHistory) {\n        History.back();\n      }\n\n      router.modalRemove(modalToClose);\n      if (forceOtherUrl) {\n        router.navigate(navigateUrl, { reloadCurrent: true });\n      }\n    } else if (modalToClose) {\n      router.modalRemove(modalToClose);\n      if (navigateUrl) {\n        router.navigate(navigateUrl, { reloadCurrent: true });\n      }\n    }\n    return router;\n  }\n  let $previousPage = router.$el\n    .children('.page-current')\n    .prevAll('.page-previous:not(.page-master)')\n    .eq(0);\n\n  let skipMaster;\n  if (router.params.masterDetailBreakpoint > 0) {\n    const classes = [];\n    router.$el.children('.page').each((pageEl) => {\n      classes.push(pageEl.className);\n    });\n\n    const $previousMaster = router.$el.children('.page-current').prevAll('.page-master').eq(0);\n    if ($previousMaster.length) {\n      const expectedPreviousPageUrl = router.history[router.history.length - 2];\n      const expectedPreviousPageRoute = router.findMatchingRoute(expectedPreviousPageUrl);\n      if (\n        expectedPreviousPageRoute &&\n        $previousMaster[0].f7Page &&\n        expectedPreviousPageRoute.route === $previousMaster[0].f7Page.route.route\n      ) {\n        $previousPage = $previousMaster;\n        if (!navigateOptions.preload) {\n          skipMaster = app.width >= router.params.masterDetailBreakpoint;\n        }\n      }\n    }\n  }\n\n  if (!navigateOptions.force && $previousPage.length && !skipMaster) {\n    const previousPageObj = $previousPage[0].f7Page;\n    if (\n      router.params.browserHistory &&\n      previousPageObj &&\n      router.history[router.history.length - 2] !== previousPageObj.route.url\n    ) {\n      router.back(\n        router.history[router.history.length - 2],\n        extend(navigateOptions, {\n          force: true,\n          props: router.propsHistory[router.propsHistory.length - 2] || {},\n        }),\n      );\n      return router;\n    }\n    if (previousPageObj) {\n      const previousPageRoute = previousPageObj.route;\n\n      processRouteQueue.call(\n        router,\n        previousPageRoute,\n        router.currentRoute,\n        () => {\n          loadBack(\n            router,\n            { el: $previousPage },\n            extend(navigateOptions, {\n              route: previousPageRoute,\n            }),\n          );\n        },\n        () => {},\n        'backward',\n      );\n\n      return router;\n    }\n  }\n\n  // Navigate URL\n  if (navigateUrl === '#') {\n    navigateUrl = undefined;\n  }\n  if (navigateUrl && navigateUrl[0] !== '/' && navigateUrl.indexOf('#') !== 0) {\n    navigateUrl = ((router.path || '/') + navigateUrl).replace('//', '/');\n  }\n  if (!navigateUrl && router.history.length > 1) {\n    navigateUrl = router.history[router.history.length - 2];\n    navigateProps = router.propsHistory[router.propsHistory.length - 2] || {};\n  }\n  if (skipMaster && !navigateOptions.force && router.history[router.history.length - 3]) {\n    return router.back(\n      router.history[router.history.length - 3],\n      extend({}, navigateOptions || {}, {\n        force: true,\n        animate: false,\n        props: router.propsHistory[router.propsHistory.length - 3] || {},\n      }),\n    );\n  }\n  if (skipMaster && !navigateOptions.force) {\n    return router;\n  }\n\n  // Find route to load\n  route = router.findMatchingRoute(navigateUrl);\n  if (!route) {\n    if (navigateUrl) {\n      route = {\n        url: navigateUrl,\n        path: navigateUrl.split('?')[0],\n        query: parseUrlQuery(navigateUrl),\n        route: {\n          path: navigateUrl.split('?')[0],\n          url: navigateUrl,\n        },\n      };\n    }\n  }\n  if (!route) {\n    return router;\n  }\n\n  if (route.route.redirect) {\n    return redirect.call(router, 'backward', route, navigateOptions);\n  }\n\n  const options = {};\n  if (route.route.options) {\n    extend(options, route.route.options, navigateOptions, { props: navigateProps || {} });\n  } else {\n    extend(options, navigateOptions, { props: navigateProps || {} });\n  }\n  options.route = route;\n\n  function resolve() {\n    let routerLoaded = false;\n    if (route.route.keepAlive && route.route.keepAliveData) {\n      loadBack(router, { el: route.route.keepAliveData.pageEl }, options);\n      routerLoaded = true;\n    }\n    'url content component pageName el componentUrl'.split(' ').forEach((pageLoadProp) => {\n      if (route.route[pageLoadProp] && !routerLoaded) {\n        routerLoaded = true;\n        loadBack(router, { [pageLoadProp]: route.route[pageLoadProp] }, options);\n      }\n    });\n    if (routerLoaded) return;\n    // Async\n    function asyncResolve(resolveParams, resolveOptions) {\n      router.allowPageChange = false;\n      loadBack(router, resolveParams, extend(options, resolveOptions), true);\n    }\n    function asyncReject() {\n      router.allowPageChange = true;\n    }\n    if (route.route.async) {\n      router.allowPageChange = false;\n      route.route.async.call(router, {\n        router,\n        to: route,\n        from: router.currentRoute,\n        resolve: asyncResolve,\n        reject: asyncReject,\n        direction: 'backward',\n        app,\n      });\n    }\n    if (route.route.asyncComponent) {\n      asyncComponent(router, route.route.asyncComponent, asyncResolve, asyncReject);\n    }\n  }\n  function reject() {\n    router.allowPageChange = true;\n  }\n\n  if (options.preload) {\n    resolve();\n  } else {\n    processRouteQueue.call(\n      router,\n      route,\n      router.currentRoute,\n      () => {\n        if (route.route.modules) {\n          app\n            .loadModules(\n              Array.isArray(route.route.modules) ? route.route.modules : [route.route.modules],\n            )\n            .then(() => {\n              resolve();\n            })\n            .catch(() => {\n              reject();\n            });\n        } else {\n          resolve();\n        }\n      },\n      () => {\n        reject();\n      },\n      'backward',\n    );\n  }\n\n  // Return Router\n  return router;\n}\nexport { back };\n","import { getWindow, getDocument } from 'ssr-window';\nimport { pathToRegexp, compile } from 'path-to-regexp';\nimport $ from '../../shared/dom7.js';\nimport Framework7Class from '../../shared/class.js';\nimport {\n  extend,\n  nextFrame,\n  parseUrlQuery,\n  serializeObject,\n  now,\n  eventNameToColonCase,\n} from '../../shared/utils.js';\nimport History from '../../shared/history.js';\nimport SwipeBack from './swipe-back.js';\n\nimport { refreshPage, navigate } from './navigate.js';\nimport { tabLoad, tabRemove } from './tab.js';\nimport { modalLoad, modalRemove } from './modal.js';\nimport { back } from './back.js';\nimport { clearPreviousHistory } from './clear-previous-history.js';\nimport appRouterCheck from './app-router-check.js';\n\nclass Router extends Framework7Class {\n  constructor(app, view) {\n    super({}, [typeof view === 'undefined' ? app : view]);\n    const router = this;\n\n    // Is App Router\n    router.isAppRouter = typeof view === 'undefined';\n\n    if (router.isAppRouter) {\n      // App Router\n      extend(false, router, {\n        app,\n        params: app.params.view,\n        routes: app.routes || [],\n        cache: app.cache,\n      });\n    } else {\n      // View Router\n      extend(false, router, {\n        app,\n        view,\n        viewId: view.id,\n        id: view.params.routerId,\n        params: view.params,\n        routes: view.routes,\n        history: view.history,\n        propsHistory: [],\n        scrollHistory: view.scrollHistory,\n        cache: app.cache,\n        dynamicNavbar: app.theme === 'ios' && view.params.iosDynamicNavbar,\n        initialPages: [],\n        initialNavbars: [],\n      });\n    }\n\n    // Install Modules\n    router.useModules();\n\n    // AllowPageChage\n    router.allowPageChange = true;\n\n    // Current Route\n    let currentRoute = {};\n    let previousRoute = {};\n    Object.defineProperty(router, 'currentRoute', {\n      enumerable: true,\n      configurable: true,\n      set(newRoute = {}) {\n        previousRoute = extend({}, currentRoute);\n        currentRoute = newRoute;\n        if (!currentRoute) return;\n        router.url = currentRoute.url;\n        router.emit('routeChange', newRoute, previousRoute, router);\n      },\n      get() {\n        return currentRoute;\n      },\n    });\n    Object.defineProperty(router, 'previousRoute', {\n      enumerable: true,\n      configurable: true,\n      get() {\n        return previousRoute;\n      },\n      set(newRoute) {\n        previousRoute = newRoute;\n      },\n    });\n\n    return router;\n  }\n\n  mount() {\n    const router = this;\n    const view = router.view;\n    const document = getDocument();\n\n    extend(false, router, {\n      tempDom: document.createElement('div'),\n      $el: view.$el,\n      el: view.el,\n      $navbarsEl: view.$navbarsEl,\n      navbarsEl: view.navbarsEl,\n    });\n\n    router.emit('local::mount routerMount', router);\n  }\n\n  animatableNavElements($newNavbarEl, $oldNavbarEl, toLarge, fromLarge, direction) {\n    const router = this;\n    const dynamicNavbar = router.dynamicNavbar;\n    const animateIcon = router.params.iosAnimateNavbarBackIcon;\n\n    let newNavEls;\n    let oldNavEls;\n    function animatableNavEl($el, $navbarInner) {\n      const isSliding = $el.hasClass('sliding') || $navbarInner.hasClass('sliding');\n      const isSubnavbar = $el.hasClass('subnavbar');\n      const needsOpacityTransition = isSliding ? !isSubnavbar : true;\n      const $iconEl = $el.find('.back .icon');\n      let isIconLabel;\n      if (\n        isSliding &&\n        animateIcon &&\n        $el.hasClass('left') &&\n        $iconEl.length > 0 &&\n        $iconEl.next('span').length\n      ) {\n        $el = $iconEl.next('span'); // eslint-disable-line\n        isIconLabel = true;\n      }\n      return {\n        $el,\n        isIconLabel,\n        leftOffset: $el[0].f7NavbarLeftOffset,\n        rightOffset: $el[0].f7NavbarRightOffset,\n        isSliding,\n        isSubnavbar,\n        needsOpacityTransition,\n      };\n    }\n    if (dynamicNavbar) {\n      newNavEls = [];\n      oldNavEls = [];\n      $newNavbarEl\n        .children('.navbar-inner')\n        .children('.left, .right, .title, .subnavbar')\n        .each((navEl) => {\n          const $navEl = $(navEl);\n          if ($navEl.hasClass('left') && fromLarge && direction === 'forward') return;\n          if ($navEl.hasClass('title') && toLarge) return;\n          newNavEls.push(animatableNavEl($navEl, $newNavbarEl.children('.navbar-inner')));\n        });\n      if (\n        !(\n          $oldNavbarEl.hasClass('navbar-master') &&\n          router.params.masterDetailBreakpoint > 0 &&\n          router.app.width >= router.params.masterDetailBreakpoint\n        )\n      ) {\n        $oldNavbarEl\n          .children('.navbar-inner')\n          .children('.left, .right, .title, .subnavbar')\n          .each((navEl) => {\n            const $navEl = $(navEl);\n            if ($navEl.hasClass('left') && toLarge && !fromLarge && direction === 'forward') return;\n            if ($navEl.hasClass('left') && toLarge && direction === 'backward') return;\n            if ($navEl.hasClass('title') && fromLarge) {\n              return;\n            }\n            oldNavEls.push(animatableNavEl($navEl, $oldNavbarEl.children('.navbar-inner')));\n          });\n      }\n      [oldNavEls, newNavEls].forEach((navEls) => {\n        navEls.forEach((navEl) => {\n          const n = navEl;\n          const { isSliding, $el } = navEl;\n          const otherEls = navEls === oldNavEls ? newNavEls : oldNavEls;\n          if (!(isSliding && $el.hasClass('title') && otherEls)) return;\n          otherEls.forEach((otherNavEl) => {\n            if (otherNavEl.isIconLabel) {\n              const iconTextEl = otherNavEl.$el[0];\n              n.leftOffset += iconTextEl ? iconTextEl.offsetLeft || 0 : 0;\n            }\n          });\n        });\n      });\n    }\n\n    return { newNavEls, oldNavEls };\n  }\n\n  animate($oldPageEl, $newPageEl, $oldNavbarEl, $newNavbarEl, direction, transition, callback) {\n    const router = this;\n    if (router.params.animateCustom) {\n      router.params.animateCustom.apply(router, [\n        $oldPageEl,\n        $newPageEl,\n        $oldNavbarEl,\n        $newNavbarEl,\n        direction,\n        callback,\n      ]);\n      return;\n    }\n    const dynamicNavbar = router.dynamicNavbar;\n    const ios = router.app.theme === 'ios';\n    if (transition) {\n      const routerCustomTransitionClass = `router-transition-custom router-transition-${transition}-${direction}`;\n      // Animate\n      const onCustomTransitionDone = () => {\n        router.$el.removeClass(routerCustomTransitionClass);\n        if (dynamicNavbar && router.$navbarsEl.length) {\n          if ($newNavbarEl) {\n            router.$navbarsEl.prepend($newNavbarEl);\n          }\n          if ($oldNavbarEl) {\n            router.$navbarsEl.prepend($oldNavbarEl);\n          }\n        }\n        if (callback) callback();\n      };\n\n      (direction === 'forward' ? $newPageEl : $oldPageEl).animationEnd(onCustomTransitionDone);\n      if (dynamicNavbar) {\n        if ($newNavbarEl && $newPageEl) {\n          router.setNavbarPosition($newNavbarEl, '');\n          $newNavbarEl.removeClass('navbar-next navbar-previous navbar-current');\n          $newPageEl.prepend($newNavbarEl);\n        }\n        if ($oldNavbarEl && $oldPageEl) {\n          router.setNavbarPosition($oldNavbarEl, '');\n          $oldNavbarEl.removeClass('navbar-next navbar-previous navbar-current');\n          $oldPageEl.prepend($oldNavbarEl);\n        }\n      }\n\n      router.$el.addClass(routerCustomTransitionClass);\n      return;\n    }\n\n    // Router Animation class\n    const routerTransitionClass = `router-transition-${direction} router-transition`;\n\n    let newNavEls;\n    let oldNavEls;\n\n    let fromLarge;\n    let toLarge;\n    let toDifferent;\n\n    let oldIsLarge;\n    let newIsLarge;\n\n    if (ios && dynamicNavbar) {\n      const betweenMasterAndDetail =\n        router.params.masterDetailBreakpoint > 0 &&\n        router.app.width >= router.params.masterDetailBreakpoint &&\n        (($oldNavbarEl.hasClass('navbar-master') &&\n          $newNavbarEl.hasClass('navbar-master-detail')) ||\n          ($oldNavbarEl.hasClass('navbar-master-detail') &&\n            $newNavbarEl.hasClass('navbar-master')));\n      if (!betweenMasterAndDetail) {\n        oldIsLarge = $oldNavbarEl && $oldNavbarEl.hasClass('navbar-large');\n        newIsLarge = $newNavbarEl && $newNavbarEl.hasClass('navbar-large');\n        fromLarge = oldIsLarge && !$oldNavbarEl.hasClass('navbar-large-collapsed');\n        toLarge = newIsLarge && !$newNavbarEl.hasClass('navbar-large-collapsed');\n        toDifferent = (fromLarge && !toLarge) || (toLarge && !fromLarge);\n      }\n      const navEls = router.animatableNavElements(\n        $newNavbarEl,\n        $oldNavbarEl,\n        toLarge,\n        fromLarge,\n        direction,\n      );\n      newNavEls = navEls.newNavEls;\n      oldNavEls = navEls.oldNavEls;\n    }\n\n    function animateNavbars(progress) {\n      if (!(ios && dynamicNavbar)) return;\n      if (progress === 1) {\n        if (toLarge) {\n          $newNavbarEl.addClass('router-navbar-transition-to-large');\n          $oldNavbarEl.addClass('router-navbar-transition-to-large');\n        }\n        if (fromLarge) {\n          $newNavbarEl.addClass('router-navbar-transition-from-large');\n          $oldNavbarEl.addClass('router-navbar-transition-from-large');\n        }\n      }\n      newNavEls.forEach((navEl) => {\n        const $el = navEl.$el;\n        const offset = direction === 'forward' ? navEl.rightOffset : navEl.leftOffset;\n        if (navEl.isSliding) {\n          if (navEl.isSubnavbar && newIsLarge) {\n            // prettier-ignore\n            $el[0].style.setProperty(\n              'transform',\n              `translate3d(${offset * (1 - progress)}px, calc(-1 * var(--f7-navbar-large-collapse-progress) * var(--f7-navbar-large-title-height)), 0)`,\n              'important',\n            );\n          } else {\n            $el.transform(`translate3d(${offset * (1 - progress)}px,0,0)`);\n          }\n        }\n      });\n      oldNavEls.forEach((navEl) => {\n        const $el = navEl.$el;\n        const offset = direction === 'forward' ? navEl.leftOffset : navEl.rightOffset;\n        if (navEl.isSliding) {\n          if (navEl.isSubnavbar && oldIsLarge) {\n            $el.transform(\n              `translate3d(${\n                offset * progress\n              }px, calc(-1 * var(--f7-navbar-large-collapse-progress) * var(--f7-navbar-large-title-height)), 0)`,\n            );\n          } else {\n            $el.transform(`translate3d(${offset * progress}px,0,0)`);\n          }\n        }\n      });\n    }\n\n    // AnimationEnd Callback\n    function onDone() {\n      if (router.dynamicNavbar) {\n        if ($newNavbarEl) {\n          $newNavbarEl.removeClass(\n            'router-navbar-transition-to-large router-navbar-transition-from-large',\n          );\n          $newNavbarEl.addClass('navbar-no-title-large-transition');\n          nextFrame(() => {\n            $newNavbarEl.removeClass('navbar-no-title-large-transition');\n          });\n        }\n        if ($oldNavbarEl) {\n          $oldNavbarEl.removeClass(\n            'router-navbar-transition-to-large router-navbar-transition-from-large',\n          );\n        }\n        if (\n          $newNavbarEl.hasClass('sliding') ||\n          $newNavbarEl.children('.navbar-inner.sliding').length\n        ) {\n          $newNavbarEl.find('.title, .left, .right, .left .icon, .subnavbar').transform('');\n        } else {\n          $newNavbarEl.find('.sliding').transform('');\n        }\n        if (\n          $oldNavbarEl.hasClass('sliding') ||\n          $oldNavbarEl.children('.navbar-inner.sliding').length\n        ) {\n          $oldNavbarEl.find('.title, .left, .right, .left .icon, .subnavbar').transform('');\n        } else {\n          $oldNavbarEl.find('.sliding').transform('');\n        }\n      }\n      router.$el.removeClass(routerTransitionClass);\n      if (callback) callback();\n    }\n\n    // eslint-disable-next-line\n    (direction === 'forward' ? $newPageEl : ios ? $oldPageEl : $newPageEl).animationEnd(() => {\n      onDone();\n    });\n\n    // Animate\n    if (dynamicNavbar) {\n      // Prepare Navbars\n      animateNavbars(0);\n      nextFrame(() => {\n        // Add class, start animation\n        router.$el.addClass(routerTransitionClass);\n        if (toDifferent) {\n          // eslint-disable-next-line\n          router.el._clientLeft = router.el.clientLeft;\n        }\n        animateNavbars(1);\n      });\n    } else {\n      // Add class, start animation\n      router.$el.addClass(routerTransitionClass);\n    }\n  }\n\n  removeModal(modalEl) {\n    const router = this;\n    router.removeEl(modalEl);\n  }\n  // eslint-disable-next-line\n  removeTabContent(tabEl) {\n    const $tabEl = $(tabEl);\n    $tabEl.html('');\n  }\n\n  removeNavbar(el) {\n    const router = this;\n    router.removeEl(el);\n  }\n\n  removePage(el) {\n    const $el = $(el);\n    const f7Page = $el && $el[0] && $el[0].f7Page;\n    const router = this;\n    if (f7Page && f7Page.route && f7Page.route.route && f7Page.route.route.keepAlive) {\n      $el.remove();\n      return;\n    }\n    router.removeEl(el);\n  }\n\n  removeEl(el) {\n    if (!el) return;\n    const router = this;\n    const $el = $(el);\n    if ($el.length === 0) return;\n    $el.find('.tab').each((tabEl) => {\n      $(tabEl)\n        .children()\n        .each((tabChild) => {\n          if (tabChild.f7Component) {\n            $(tabChild).trigger('tab:beforeremove');\n            tabChild.f7Component.destroy();\n          }\n        });\n    });\n    if ($el[0].f7Component && $el[0].f7Component.destroy) {\n      $el[0].f7Component.destroy();\n    }\n    if (!router.params.removeElements) {\n      return;\n    }\n    if (router.params.removeElementsWithTimeout) {\n      setTimeout(() => {\n        $el.remove();\n      }, router.params.removeElementsTimeout);\n    } else {\n      $el.remove();\n    }\n  }\n\n  getPageEl(content) {\n    const router = this;\n    if (typeof content === 'string') {\n      router.tempDom.innerHTML = content;\n    } else {\n      if ($(content).hasClass('page')) {\n        return content;\n      }\n      router.tempDom.innerHTML = '';\n      $(router.tempDom).append(content);\n    }\n\n    return router.findElement('.page', router.tempDom);\n  }\n\n  findElement(stringSelector, container) {\n    const router = this;\n    const view = router.view;\n    const app = router.app;\n\n    // Modals Selector\n    const modalsSelector =\n      '.popup, .dialog, .popover, .actions-modal, .sheet-modal, .login-screen, .page';\n\n    const $container = $(container);\n    const selector = stringSelector;\n\n    let found = $container\n      .find(selector)\n      .filter((el) => $(el).parents(modalsSelector).length === 0);\n\n    if (found.length > 1) {\n      if (typeof view.selector === 'string') {\n        // Search in related view\n        found = $container.find(`${view.selector} ${selector}`);\n      }\n      if (found.length > 1) {\n        // Search in main view\n        found = $container.find(`.${app.params.viewMainClass} ${selector}`);\n      }\n    }\n    if (found.length === 1) return found;\n\n    found = router.findElement(selector, $container);\n    if (found && found.length === 1) return found;\n    if (found && found.length > 1) return $(found[0]);\n    return undefined;\n  }\n\n  flattenRoutes(routes = this.routes) {\n    const router = this;\n    let flattenedRoutes = [];\n    routes.forEach((route) => {\n      let hasTabRoutes = false;\n      if ('tabs' in route && route.tabs) {\n        const mergedPathsRoutes = route.tabs.map((tabRoute) => {\n          const tRoute = extend({}, route, {\n            path: `${route.path}/${tabRoute.path}`.replace('///', '/').replace('//', '/'),\n            parentPath: route.path,\n            tab: tabRoute,\n          });\n          delete tRoute.tabs;\n          delete tRoute.routes;\n          return tRoute;\n        });\n        hasTabRoutes = true;\n        flattenedRoutes = flattenedRoutes.concat(router.flattenRoutes(mergedPathsRoutes));\n      }\n      if ('detailRoutes' in route) {\n        const mergedPathsRoutes = route.detailRoutes.map((detailRoute) => {\n          const dRoute = extend({}, detailRoute);\n          dRoute.masterRoute = route;\n          dRoute.masterRoutePath = route.path;\n          return dRoute;\n        });\n        flattenedRoutes = flattenedRoutes.concat(route, router.flattenRoutes(mergedPathsRoutes));\n      }\n      if ('routes' in route) {\n        const mergedPathsRoutes = route.routes.map((childRoute) => {\n          const cRoute = extend({}, childRoute);\n          cRoute.path = `${route.path}/${cRoute.path}`.replace('///', '/').replace('//', '/');\n          return cRoute;\n        });\n        if (hasTabRoutes) {\n          flattenedRoutes = flattenedRoutes.concat(router.flattenRoutes(mergedPathsRoutes));\n        } else {\n          flattenedRoutes = flattenedRoutes.concat(route, router.flattenRoutes(mergedPathsRoutes));\n        }\n      }\n      if (!('routes' in route) && !('tabs' in route && route.tabs) && !('detailRoutes' in route)) {\n        flattenedRoutes.push(route);\n      }\n    });\n    return flattenedRoutes;\n  }\n\n  // eslint-disable-next-line\n  parseRouteUrl(url) {\n    if (!url) return {};\n    const query = parseUrlQuery(url);\n    const hash = url.split('#')[1];\n    const params = {};\n    const path = url.split('#')[0].split('?')[0];\n    return {\n      query,\n      hash,\n      params,\n      url,\n      path,\n    };\n  }\n\n  generateUrl(parameters = {}) {\n    if (typeof parameters === 'string') {\n      return parameters;\n    }\n    const { name, path, params, query } = parameters;\n    if (!name && !path) {\n      throw new Error('Framework7: \"name\" or \"path\" parameter is required');\n    }\n    const router = this;\n    const route = name ? router.findRouteByKey('name', name) : router.findRouteByKey('path', path);\n\n    if (!route) {\n      if (name) {\n        throw new Error(`Framework7: route with name \"${name}\" not found`);\n      } else {\n        throw new Error(`Framework7: route with path \"${path}\" not found`);\n      }\n    }\n    const url = router.constructRouteUrl(route, { params, query });\n\n    if (url === '') {\n      return '/';\n    }\n\n    if (!url) {\n      throw new Error(`Framework7: can't construct URL for route with name \"${name}\"`);\n    }\n    return url;\n  }\n\n  // eslint-disable-next-line\n  constructRouteUrl(route, { params, query } = {}) {\n    const { path } = route;\n    const toUrl = compile(path);\n    let url;\n    try {\n      url = toUrl(params || {});\n    } catch (error) {\n      throw new Error(\n        `Framework7: error constructing route URL from passed params:\\nRoute: ${path}\\n${error.toString()}`,\n      );\n    }\n\n    if (query) {\n      if (typeof query === 'string') url += `?${query}`;\n      else if (Object.keys(query).length) url += `?${serializeObject(query)}`;\n    }\n\n    return url;\n  }\n\n  findTabRouteUrl(tabEl) {\n    const router = this;\n    const $tabEl = $(tabEl);\n    const parentPath = router.currentRoute.route.parentPath;\n    const tabId = $tabEl.attr('id');\n    const flattenedRoutes = router.flattenRoutes(router.routes);\n    let foundTabRouteUrl;\n    flattenedRoutes.forEach((route) => {\n      if (route.parentPath === parentPath && route.tab && route.tab.id === tabId) {\n        if (router.currentRoute.params && Object.keys(router.currentRoute.params).length > 0) {\n          foundTabRouteUrl = router.constructRouteUrl(route, {\n            params: router.currentRoute.params,\n            query: router.currentRoute.query,\n          });\n        } else {\n          foundTabRouteUrl = route.path;\n        }\n      }\n    });\n    return foundTabRouteUrl;\n  }\n\n  findRouteByKey(key, value) {\n    const router = this;\n    const routes = router.routes;\n    const flattenedRoutes = router.flattenRoutes(routes);\n    let matchingRoute;\n\n    flattenedRoutes.forEach((route) => {\n      if (matchingRoute) return;\n      if (route[key] === value) {\n        matchingRoute = route;\n      }\n    });\n    return matchingRoute;\n  }\n\n  findMatchingRoute(url) {\n    if (!url) return undefined;\n    const router = this;\n    const routes = router.routes;\n    const flattenedRoutes = router.flattenRoutes(routes);\n    const { path, query, hash, params } = router.parseRouteUrl(url);\n    let matchingRoute;\n    flattenedRoutes.forEach((route) => {\n      if (matchingRoute) return;\n      const keys = [];\n\n      const pathsToMatch = [route.path || '/'];\n      if (route.alias) {\n        if (typeof route.alias === 'string') pathsToMatch.push(route.alias);\n        else if (Array.isArray(route.alias)) {\n          route.alias.forEach((aliasPath) => {\n            pathsToMatch.push(aliasPath);\n          });\n        }\n      }\n\n      let matched;\n      pathsToMatch.forEach((pathToMatch) => {\n        if (matched) return;\n        matched = pathToRegexp(pathToMatch, keys).exec(path || '/');\n      });\n\n      if (matched) {\n        keys.forEach((keyObj, index) => {\n          if (typeof keyObj.name === 'number') return;\n          const paramValue = matched[index + 1];\n          if (typeof paramValue === 'undefined' || paramValue === null) {\n            params[keyObj.name] = paramValue;\n          } else {\n            params[keyObj.name] = decodeURIComponent(paramValue);\n          }\n        });\n\n        let parentPath;\n        if (route.parentPath) {\n          parentPath = (path || '/')\n            .split('/')\n            .slice(0, route.parentPath.split('/').length - 1)\n            .join('/');\n        }\n\n        matchingRoute = {\n          query,\n          hash,\n          params,\n          url,\n          path: path || '/',\n          parentPath,\n          route,\n          name: route.name,\n        };\n      }\n    });\n    return matchingRoute;\n  }\n\n  // eslint-disable-next-line\n  replaceRequestUrlParams(url = '', options = {}) {\n    let compiledUrl = url;\n    if (\n      typeof compiledUrl === 'string' &&\n      compiledUrl.indexOf('{{') >= 0 &&\n      options &&\n      options.route &&\n      options.route.params &&\n      Object.keys(options.route.params).length\n    ) {\n      Object.keys(options.route.params).forEach((paramName) => {\n        const regExp = new RegExp(`{{${paramName}}}`, 'g');\n        compiledUrl = compiledUrl.replace(regExp, options.route.params[paramName] || '');\n      });\n    }\n    return compiledUrl;\n  }\n\n  removeFromXhrCache(url) {\n    const router = this;\n    const xhrCache = router.cache.xhr;\n    let index = false;\n    for (let i = 0; i < xhrCache.length; i += 1) {\n      if (xhrCache[i].url === url) index = i;\n    }\n    if (index !== false) xhrCache.splice(index, 1);\n  }\n\n  xhrRequest(requestUrl, options) {\n    const router = this;\n    const params = router.params;\n    const { ignoreCache } = options;\n    let url = requestUrl;\n\n    let hasQuery = url.indexOf('?') >= 0;\n    if (\n      params.passRouteQueryToRequest &&\n      options &&\n      options.route &&\n      options.route.query &&\n      Object.keys(options.route.query).length\n    ) {\n      url += `${hasQuery ? '&' : '?'}${serializeObject(options.route.query)}`;\n      hasQuery = true;\n    }\n\n    if (\n      params.passRouteParamsToRequest &&\n      options &&\n      options.route &&\n      options.route.params &&\n      Object.keys(options.route.params).length\n    ) {\n      url += `${hasQuery ? '&' : '?'}${serializeObject(options.route.params)}`;\n      hasQuery = true;\n    }\n\n    if (url.indexOf('{{') >= 0) {\n      url = router.replaceRequestUrlParams(url, options);\n    }\n    // should we ignore get params or not\n    if (params.xhrCacheIgnoreGetParameters && url.indexOf('?') >= 0) {\n      url = url.split('?')[0];\n    }\n    return new Promise((resolve, reject) => {\n      if (\n        params.xhrCache &&\n        !ignoreCache &&\n        url.indexOf('nocache') < 0 &&\n        params.xhrCacheIgnore.indexOf(url) < 0\n      ) {\n        for (let i = 0; i < router.cache.xhr.length; i += 1) {\n          const cachedUrl = router.cache.xhr[i];\n          if (cachedUrl.url === url) {\n            // Check expiration\n            if (now() - cachedUrl.time < params.xhrCacheDuration) {\n              // Load from cache\n              resolve(cachedUrl.content);\n              return;\n            }\n          }\n        }\n      }\n      router.xhrAbortController = new AbortController();\n      let fetchRes;\n      fetch(url, { signal: router.xhrAbortController.signal, method: 'GET' })\n        .then((res) => {\n          fetchRes = res;\n          return res.text();\n        })\n        .then((responseText) => {\n          const { status } = fetchRes;\n          router.emit('routerAjaxComplete', fetchRes);\n          if (\n            (status !== 'error' && status !== 'timeout' && status >= 200 && status < 300) ||\n            status === 0\n          ) {\n            if (params.xhrCache && responseText !== '') {\n              router.removeFromXhrCache(url);\n              router.cache.xhr.push({\n                url,\n                time: now(),\n                content: responseText,\n              });\n            }\n            router.emit('routerAjaxSuccess', fetchRes, options);\n            resolve(responseText);\n          } else {\n            router.emit('routerAjaxError', fetchRes, options);\n            reject(fetchRes);\n          }\n        })\n        .catch((err) => {\n          reject(err);\n        });\n    });\n  }\n\n  setNavbarPosition($el, position, ariaHidden) {\n    const router = this;\n    $el.removeClass('navbar-previous navbar-current navbar-next');\n    if (position) {\n      $el.addClass(`navbar-${position}`);\n    }\n\n    if (ariaHidden === false) {\n      $el.removeAttr('aria-hidden');\n    } else if (ariaHidden === true) {\n      $el.attr('aria-hidden', 'true');\n    }\n    $el.trigger('navbar:position', { position });\n    router.emit('navbarPosition', $el[0], position);\n  }\n\n  setPagePosition($el, position, ariaHidden) {\n    const router = this;\n    $el.removeClass('page-previous page-current page-next');\n    $el.addClass(`page-${position}`);\n    if (ariaHidden === false) {\n      $el.removeAttr('aria-hidden');\n    } else if (ariaHidden === true) {\n      $el.attr('aria-hidden', 'true');\n    }\n    $el.trigger('page:position', { position });\n    router.emit('pagePosition', $el[0], position);\n  }\n\n  // Remove theme elements\n  removeThemeElements(el) {\n    const router = this;\n    const theme = router.app.theme;\n    let toRemove;\n    if (theme === 'ios') {\n      toRemove = '.md-only, .if-md, .if-not-ios, .not-ios';\n    } else if (theme === 'md') {\n      toRemove = '.ios-only, .if-ios, .if-not-md, .not-md';\n    }\n    $(el).find(toRemove).remove();\n  }\n\n  getPageData(pageEl, navbarEl, from, to, route = {}, pageFromEl) {\n    const router = this;\n    const $pageEl = $(pageEl).eq(0);\n    const $navbarEl = $(navbarEl).eq(0);\n    const currentPage = $pageEl[0].f7Page || {};\n    let direction;\n    let pageFrom;\n    if ((from === 'next' && to === 'current') || (from === 'current' && to === 'previous'))\n      direction = 'forward';\n    if ((from === 'current' && to === 'next') || (from === 'previous' && to === 'current'))\n      direction = 'backward';\n    if (currentPage && !currentPage.fromPage) {\n      const $pageFromEl = $(pageFromEl);\n      if ($pageFromEl.length) {\n        pageFrom = $pageFromEl[0].f7Page;\n      }\n    }\n    pageFrom = currentPage.pageFrom || pageFrom;\n    if (pageFrom && pageFrom.pageFrom) {\n      pageFrom.pageFrom = null;\n    }\n    const page = {\n      app: router.app,\n      view: router.view,\n      router,\n      $el: $pageEl,\n      el: $pageEl[0],\n      $pageEl,\n      pageEl: $pageEl[0],\n      $navbarEl,\n      navbarEl: $navbarEl[0],\n      name: $pageEl.attr('data-name'),\n      position: from,\n      from,\n      to,\n      direction,\n      route: currentPage.route ? currentPage.route : route,\n      pageFrom,\n    };\n\n    $pageEl[0].f7Page = page;\n    return page;\n  }\n\n  // Callbacks\n  pageCallback(callback, pageEl, navbarEl, from, to, options = {}, pageFromEl) {\n    if (!pageEl) return;\n    const router = this;\n    const $pageEl = $(pageEl);\n    if (!$pageEl.length) return;\n    const $navbarEl = $(navbarEl);\n    const { route } = options;\n    const restoreScrollTopOnBack =\n      router.params.restoreScrollTopOnBack &&\n      !(\n        router.params.masterDetailBreakpoint > 0 &&\n        $pageEl.hasClass('page-master') &&\n        router.app.width >= router.params.masterDetailBreakpoint\n      );\n    const keepAlive =\n      $pageEl[0].f7Page &&\n      $pageEl[0].f7Page.route &&\n      $pageEl[0].f7Page.route.route &&\n      $pageEl[0].f7Page.route.route.keepAlive;\n\n    if (callback === 'beforeRemove' && keepAlive) {\n      callback = 'beforeUnmount'; // eslint-disable-line\n    }\n\n    const camelName = `page${callback[0].toUpperCase() + callback.slice(1, callback.length)}`;\n    const colonName = `page:${callback.toLowerCase()}`;\n\n    let page = {};\n    if (callback === 'beforeRemove' && $pageEl[0].f7Page) {\n      page = extend($pageEl[0].f7Page, { from, to, position: from });\n    } else {\n      page = router.getPageData($pageEl[0], $navbarEl[0], from, to, route, pageFromEl);\n    }\n    page.swipeBack = !!options.swipeBack;\n\n    const { on = {}, once = {} } = options.route ? options.route.route : {};\n    if (options.on) {\n      extend(on, options.on);\n    }\n    if (options.once) {\n      extend(once, options.once);\n    }\n\n    function attachEvents() {\n      if ($pageEl[0].f7RouteEventsAttached) return;\n      $pageEl[0].f7RouteEventsAttached = true;\n      if (on && Object.keys(on).length > 0) {\n        $pageEl[0].f7RouteEventsOn = on;\n        Object.keys(on).forEach((eventName) => {\n          on[eventName] = on[eventName].bind(router);\n          $pageEl.on(eventNameToColonCase(eventName), on[eventName]);\n        });\n      }\n      if (once && Object.keys(once).length > 0) {\n        $pageEl[0].f7RouteEventsOnce = once;\n        Object.keys(once).forEach((eventName) => {\n          once[eventName] = once[eventName].bind(router);\n          $pageEl.once(eventNameToColonCase(eventName), once[eventName]);\n        });\n      }\n    }\n\n    function detachEvents() {\n      if (!$pageEl[0].f7RouteEventsAttached) return;\n      if ($pageEl[0].f7RouteEventsOn) {\n        Object.keys($pageEl[0].f7RouteEventsOn).forEach((eventName) => {\n          $pageEl.off(eventNameToColonCase(eventName), $pageEl[0].f7RouteEventsOn[eventName]);\n        });\n      }\n      if ($pageEl[0].f7RouteEventsOnce) {\n        Object.keys($pageEl[0].f7RouteEventsOnce).forEach((eventName) => {\n          $pageEl.off(eventNameToColonCase(eventName), $pageEl[0].f7RouteEventsOnce[eventName]);\n        });\n      }\n      $pageEl[0].f7RouteEventsAttached = null;\n      $pageEl[0].f7RouteEventsOn = null;\n      $pageEl[0].f7RouteEventsOnce = null;\n      delete $pageEl[0].f7RouteEventsAttached;\n      delete $pageEl[0].f7RouteEventsOn;\n      delete $pageEl[0].f7RouteEventsOnce;\n    }\n\n    if (callback === 'mounted') {\n      attachEvents();\n    }\n    if (callback === 'init') {\n      if (\n        restoreScrollTopOnBack &&\n        (from === 'previous' || !from) &&\n        to === 'current' &&\n        router.scrollHistory[page.route.url] &&\n        !$pageEl.hasClass('no-restore-scroll')\n      ) {\n        let $pageContent = $pageEl.find('.page-content');\n        if ($pageContent.length > 0) {\n          // eslint-disable-next-line\n          $pageContent = $pageContent.filter((pageContentEl) => {\n            return (\n              $(pageContentEl).parents('.tab:not(.tab-active)').length === 0 &&\n              !$(pageContentEl).is('.tab:not(.tab-active)')\n            );\n          });\n        }\n        $pageContent.scrollTop(router.scrollHistory[page.route.url]);\n      }\n      attachEvents();\n      if ($pageEl[0].f7PageInitialized) {\n        $pageEl.trigger('page:reinit', page);\n        router.emit('pageReinit', page);\n        return;\n      }\n      $pageEl[0].f7PageInitialized = true;\n    }\n    if (\n      restoreScrollTopOnBack &&\n      callback === 'beforeOut' &&\n      from === 'current' &&\n      to === 'previous'\n    ) {\n      // Save scroll position\n      let $pageContent = $pageEl.find('.page-content');\n      if ($pageContent.length > 0) {\n        // eslint-disable-next-line\n        $pageContent = $pageContent.filter((pageContentEl) => {\n          return (\n            $(pageContentEl).parents('.tab:not(.tab-active)').length === 0 &&\n            !$(pageContentEl).is('.tab:not(.tab-active)')\n          );\n        });\n      }\n      router.scrollHistory[page.route.url] = $pageContent.scrollTop();\n    }\n    if (restoreScrollTopOnBack && callback === 'beforeOut' && from === 'current' && to === 'next') {\n      // Delete scroll position\n      delete router.scrollHistory[page.route.url];\n    }\n\n    $pageEl.trigger(colonName, page);\n    router.emit(camelName, page);\n\n    if (callback === 'beforeRemove' || callback === 'beforeUnmount') {\n      detachEvents();\n      if (!keepAlive) {\n        if ($pageEl[0].f7Page && $pageEl[0].f7Page.navbarEl) {\n          delete $pageEl[0].f7Page.navbarEl.f7Page;\n        }\n        $pageEl[0].f7Page = null;\n      }\n    }\n  }\n\n  saveHistory() {\n    const router = this;\n    const window = getWindow();\n    router.view.history = router.history;\n    if (\n      router.params.browserHistory &&\n      router.params.browserHistoryStoreHistory &&\n      window.localStorage\n    ) {\n      window.localStorage[`f7router-${router.view.id}-history`] = JSON.stringify(router.history);\n    }\n  }\n\n  restoreHistory() {\n    const router = this;\n    const window = getWindow();\n    if (\n      router.params.browserHistory &&\n      router.params.browserHistoryStoreHistory &&\n      window.localStorage &&\n      window.localStorage[`f7router-${router.view.id}-history`]\n    ) {\n      router.history = JSON.parse(window.localStorage[`f7router-${router.view.id}-history`]);\n      router.view.history = router.history;\n    }\n  }\n\n  clearHistory() {\n    const router = this;\n    router.history = [];\n    if (router.view) router.view.history = [];\n    router.saveHistory();\n  }\n\n  updateCurrentUrl(newUrl) {\n    const router = this;\n    appRouterCheck(router, 'updateCurrentUrl');\n    // Update history\n    if (router.history.length) {\n      router.history[router.history.length - 1] = newUrl;\n    } else {\n      router.history.push(newUrl);\n    }\n\n    // Update current route params\n    const { query, hash, params, url, path } = router.parseRouteUrl(newUrl);\n    if (router.currentRoute) {\n      extend(router.currentRoute, {\n        query,\n        hash,\n        params,\n        url,\n        path,\n      });\n    }\n\n    if (router.params.browserHistory) {\n      const browserHistoryRoot = router.params.browserHistoryRoot || '';\n      History.replace(\n        router.view.id,\n        {\n          url: newUrl,\n        },\n        browserHistoryRoot + router.params.browserHistorySeparator + newUrl,\n      );\n    }\n\n    // Save History\n    router.saveHistory();\n\n    router.emit('routeUrlUpdate', router.currentRoute, router);\n  }\n\n  getInitialUrl() {\n    const router = this;\n    if (router.initialUrl) {\n      return {\n        initialUrl: router.initialUrl,\n        historyRestored: router.historyRestored,\n      };\n    }\n    const { app, view } = router;\n    const document = getDocument();\n    const window = getWindow();\n\n    const location =\n      app.params.url && typeof app.params.url === 'string' && typeof URL !== 'undefined'\n        ? new URL(app.params.url)\n        : document.location;\n\n    let initialUrl = router.params.url;\n    let documentUrl = location.href.split(location.origin)[1];\n\n    let historyRestored;\n    const { browserHistory, browserHistoryOnLoad, browserHistorySeparator } = router.params;\n    let { browserHistoryRoot } = router.params;\n    if (\n      (window.cordova || (window.Capacitor && window.Capacitor.isNative)) &&\n      browserHistory &&\n      !browserHistorySeparator &&\n      !browserHistoryRoot &&\n      location.pathname.indexOf('index.html')\n    ) {\n      // eslint-disable-next-line\n      console.warn(\n        'Framework7: wrong or not complete browserHistory configuration, trying to guess browserHistoryRoot',\n      );\n      browserHistoryRoot = location.pathname.split('index.html')[0];\n    }\n    if (!browserHistory || !browserHistoryOnLoad) {\n      if (!initialUrl) {\n        initialUrl = documentUrl;\n      }\n      if (location.search && initialUrl.indexOf('?') < 0) {\n        initialUrl += location.search;\n      }\n      if (location.hash && initialUrl.indexOf('#') < 0) {\n        initialUrl += location.hash;\n      }\n    } else {\n      if (browserHistoryRoot && documentUrl.indexOf(browserHistoryRoot) >= 0) {\n        documentUrl = documentUrl.substring(\n          documentUrl.indexOf(browserHistoryRoot) + browserHistoryRoot.length,\n        );\n        if (documentUrl === '') documentUrl = '/';\n      }\n      if (browserHistorySeparator.length > 0 && documentUrl.indexOf(browserHistorySeparator) >= 0) {\n        initialUrl = documentUrl.substring(\n          documentUrl.indexOf(browserHistorySeparator) + browserHistorySeparator.length,\n        );\n      } else {\n        initialUrl = documentUrl;\n      }\n      router.restoreHistory();\n      if (router.history.indexOf(initialUrl) >= 0) {\n        router.history = router.history.slice(0, router.history.indexOf(initialUrl) + 1);\n      } else if (router.params.url === initialUrl) {\n        router.history = [initialUrl];\n      } else if (\n        History.state &&\n        History.state[view.id] &&\n        History.state[view.id].url === router.history[router.history.length - 1]\n      ) {\n        initialUrl = router.history[router.history.length - 1];\n      } else {\n        router.history = [documentUrl.split(browserHistorySeparator)[0] || '/', initialUrl];\n      }\n      if (router.history.length > 1) {\n        historyRestored = true;\n      } else {\n        router.history = [];\n      }\n      router.saveHistory();\n    }\n\n    router.initialUrl = initialUrl;\n    router.historyRestored = historyRestored;\n    return { initialUrl, historyRestored };\n  }\n\n  init() {\n    const router = this;\n    const { app, view } = router;\n    const document = getDocument();\n\n    router.mount();\n\n    const { initialUrl, historyRestored } = router.getInitialUrl();\n\n    // Init Swipeback\n    if (\n      (view && router.params.iosSwipeBack && app.theme === 'ios') ||\n      (view && router.params.mdSwipeBack && app.theme === 'md')\n    ) {\n      SwipeBack(router);\n    }\n\n    const {\n      browserHistory,\n      browserHistoryOnLoad,\n      browserHistoryAnimateOnLoad,\n      browserHistoryInitialMatch,\n    } = router.params;\n\n    let currentRoute;\n    if (router.history.length > 1) {\n      // Will load page\n      const initUrl = browserHistoryInitialMatch ? initialUrl : router.history[0];\n      currentRoute = router.findMatchingRoute(initUrl);\n      if (!currentRoute) {\n        currentRoute = extend(router.parseRouteUrl(initUrl), {\n          route: {\n            url: initUrl,\n            path: initUrl.split('?')[0],\n          },\n        });\n      }\n    } else {\n      // Don't load page\n      currentRoute = router.findMatchingRoute(initialUrl);\n      if (!currentRoute) {\n        currentRoute = extend(router.parseRouteUrl(initialUrl), {\n          route: {\n            url: initialUrl,\n            path: initialUrl.split('?')[0],\n          },\n        });\n      }\n    }\n\n    if (router.$el.children('.page').length === 0 && initialUrl && router.params.loadInitialPage) {\n      // No pages presented in DOM, reload new page\n      router.navigate(initialUrl, {\n        initial: true,\n        reloadCurrent: true,\n        browserHistory: false,\n        animate: false,\n        once: {\n          modalOpen() {\n            if (!historyRestored) return;\n            const preloadPreviousPage =\n              router.params.preloadPreviousPage || router.params[`${app.theme}SwipeBack`];\n            if (preloadPreviousPage && router.history.length > 1) {\n              router.back({ preload: true });\n            }\n          },\n          pageAfterIn() {\n            if (!historyRestored) return;\n            const preloadPreviousPage =\n              router.params.preloadPreviousPage || router.params[`${app.theme}SwipeBack`];\n            if (preloadPreviousPage && router.history.length > 1) {\n              router.back({ preload: true });\n            }\n          },\n        },\n      });\n    } else if (router.$el.children('.page').length) {\n      // Init current DOM page\n      let hasTabRoute;\n      router.currentRoute = currentRoute;\n      router.$el.children('.page').each((pageEl) => {\n        const $pageEl = $(pageEl);\n        let $navbarEl;\n        router.setPagePosition($pageEl, 'current');\n        if (router.dynamicNavbar) {\n          $navbarEl = $pageEl.children('.navbar');\n          if ($navbarEl.length > 0) {\n            if (!router.$navbarsEl.parents(document).length) {\n              router.$el.prepend(router.$navbarsEl);\n            }\n            router.setNavbarPosition($navbarEl, 'current');\n            router.$navbarsEl.append($navbarEl);\n            if ($navbarEl.children('.title-large').length) {\n              $navbarEl.addClass('navbar-large');\n            }\n            $pageEl.children('.navbar').remove();\n          } else {\n            router.$navbarsEl.addClass('navbar-hidden');\n            if ($navbarEl.children('.title-large').length) {\n              router.$navbarsEl.addClass('navbar-hidden navbar-large-hidden');\n            }\n          }\n        }\n        if (\n          router.currentRoute &&\n          router.currentRoute.route &&\n          (router.currentRoute.route.master === true ||\n            (typeof router.currentRoute.route.master === 'function' &&\n              router.currentRoute.route.master(app, router))) &&\n          router.params.masterDetailBreakpoint > 0\n        ) {\n          $pageEl.addClass('page-master');\n          $pageEl.trigger('page:role', { role: 'master' });\n          if ($navbarEl && $navbarEl.length) {\n            $navbarEl.addClass('navbar-master');\n          }\n          view.checkMasterDetailBreakpoint();\n        }\n        const initOptions = {\n          route: router.currentRoute,\n        };\n        if (router.currentRoute && router.currentRoute.route && router.currentRoute.route.options) {\n          extend(initOptions, router.currentRoute.route.options);\n        }\n        router.currentPageEl = $pageEl[0];\n        if (router.dynamicNavbar && $navbarEl.length) {\n          router.currentNavbarEl = $navbarEl[0];\n        }\n        router.removeThemeElements($pageEl);\n        if (router.dynamicNavbar && $navbarEl.length) {\n          router.removeThemeElements($navbarEl);\n        }\n        if (initOptions.route.route.tab) {\n          hasTabRoute = true;\n          router.tabLoad(initOptions.route.route.tab, extend({}, initOptions));\n        }\n        router.pageCallback('init', $pageEl, $navbarEl, 'current', undefined, initOptions);\n        router.pageCallback('beforeIn', $pageEl, $navbarEl, 'current', undefined, initOptions);\n        router.pageCallback('afterIn', $pageEl, $navbarEl, 'current', undefined, initOptions);\n      });\n      if (historyRestored) {\n        if (browserHistoryInitialMatch) {\n          const preloadPreviousPage =\n            router.params.preloadPreviousPage || router.params[`${app.theme}SwipeBack`];\n          if (preloadPreviousPage && router.history.length > 1) {\n            router.back({ preload: true });\n          }\n        } else {\n          router.navigate(initialUrl, {\n            initial: true,\n            browserHistory: false,\n            history: false,\n            animate: browserHistoryAnimateOnLoad,\n            once: {\n              pageAfterIn() {\n                const preloadPreviousPage =\n                  router.params.preloadPreviousPage || router.params[`${app.theme}SwipeBack`];\n                if (preloadPreviousPage && router.history.length > 2) {\n                  router.back({ preload: true });\n                }\n              },\n            },\n          });\n        }\n      }\n      if (!historyRestored && !hasTabRoute) {\n        router.history.push(initialUrl);\n        router.saveHistory();\n      }\n    }\n    if (\n      initialUrl &&\n      browserHistory &&\n      browserHistoryOnLoad &&\n      (!History.state || !History.state[view.id])\n    ) {\n      History.initViewState(view.id, {\n        url: initialUrl,\n      });\n    }\n    router.emit('local::init routerInit', router);\n  }\n\n  destroy() {\n    let router = this;\n\n    router.emit('local::destroy routerDestroy', router);\n\n    // Delete props & methods\n    Object.keys(router).forEach((routerProp) => {\n      router[routerProp] = null;\n      delete router[routerProp];\n    });\n\n    router = null;\n  }\n}\n\n// Load\nRouter.prototype.navigate = navigate;\nRouter.prototype.refreshPage = refreshPage;\n// Tab\nRouter.prototype.tabLoad = tabLoad;\nRouter.prototype.tabRemove = tabRemove;\n// Modal\nRouter.prototype.modalLoad = modalLoad;\nRouter.prototype.modalRemove = modalRemove;\n// Back\nRouter.prototype.back = back;\n// Clear history\nRouter.prototype.clearPreviousHistory = clearPreviousHistory;\n\nexport default Router;\n","import $ from '../../shared/dom7.js';\nimport { extend } from '../../shared/utils.js';\nimport History from '../../shared/history.js';\nimport asyncComponent from './async-component.js';\n\nfunction tabLoad(tabRoute, loadOptions = {}) {\n  const router = this;\n  const options = extend(\n    {\n      animate: router.params.animate,\n      browserHistory: true,\n      history: true,\n      parentPageEl: null,\n      preload: false,\n      on: {},\n    },\n    loadOptions,\n  );\n\n  let currentRoute;\n  let previousRoute;\n  if (options.route) {\n    // Set Route\n    if (!options.preload && options.route !== router.currentRoute) {\n      previousRoute = router.previousRoute;\n      router.currentRoute = options.route;\n    }\n    if (options.preload) {\n      currentRoute = options.route;\n      previousRoute = router.currentRoute;\n    } else {\n      currentRoute = router.currentRoute;\n      if (!previousRoute) previousRoute = router.previousRoute;\n    }\n\n    // Update Browser History\n    if (router.params.browserHistory && options.browserHistory && !options.reloadPrevious) {\n      History[router.params.browserHistoryTabs](\n        router.view.id,\n        {\n          url: options.route.url,\n        },\n        (router.params.browserHistoryRoot || '') +\n          router.params.browserHistorySeparator +\n          options.route.url,\n      );\n    }\n\n    // Update Router History\n    if (options.history) {\n      router.history[Math.max(router.history.length - 1, 0)] = options.route.url;\n      router.saveHistory();\n    }\n  }\n\n  // Show Tab\n  const $parentPageEl = $(options.parentPageEl || router.currentPageEl);\n  let tabEl;\n  if ($parentPageEl.length && $parentPageEl.find(`#${tabRoute.id}`).length) {\n    tabEl = $parentPageEl.find(`#${tabRoute.id}`).eq(0);\n  } else if (router.view.selector) {\n    tabEl = `${router.view.selector} #${tabRoute.id}`;\n  } else {\n    tabEl = `#${tabRoute.id}`;\n  }\n  const tabShowResult = router.app.tab.show({\n    tabEl,\n    animate: options.animate,\n    tabRoute: options.route,\n  });\n\n  const { $newTabEl, $oldTabEl, animated, onTabsChanged } = tabShowResult;\n\n  if ($newTabEl && $newTabEl.parents('.page').length > 0 && options.route) {\n    const tabParentPageData = $newTabEl.parents('.page')[0].f7Page;\n    if (tabParentPageData && options.route) {\n      tabParentPageData.route = options.route;\n    }\n  }\n\n  // Tab Content Loaded\n  function onTabLoaded(contentEl) {\n    // Remove theme elements\n    router.removeThemeElements($newTabEl);\n\n    let tabEventTarget = $newTabEl;\n    if (typeof contentEl !== 'string') tabEventTarget = $(contentEl);\n\n    tabEventTarget.trigger('tab:init tab:mounted', tabRoute);\n    router.emit('tabInit tabMounted', $newTabEl[0], tabRoute);\n\n    if ($oldTabEl && $oldTabEl.length) {\n      if (animated) {\n        onTabsChanged(() => {\n          router.emit('routeChanged', router.currentRoute, router.previousRoute, router);\n          if (router.params.unloadTabContent) {\n            router.tabRemove($oldTabEl, $newTabEl, tabRoute);\n          }\n        });\n      } else {\n        router.emit('routeChanged', router.currentRoute, router.previousRoute, router);\n        if (router.params.unloadTabContent) {\n          router.tabRemove($oldTabEl, $newTabEl, tabRoute);\n        }\n      }\n    }\n  }\n\n  if ($newTabEl[0].f7RouterTabLoaded) {\n    if (!$oldTabEl || !$oldTabEl.length) return router;\n    if (animated) {\n      onTabsChanged(() => {\n        router.emit('routeChanged', router.currentRoute, router.previousRoute, router);\n      });\n    } else {\n      router.emit('routeChanged', router.currentRoute, router.previousRoute, router);\n    }\n    return router;\n  }\n\n  // Load Tab Content\n  function loadTab(loadTabParams, loadTabOptions) {\n    // Load Tab Props\n    const { url, content, el, component, componentUrl } = loadTabParams;\n    // Component/Template Callbacks\n    function resolve(contentEl) {\n      router.allowPageChange = true;\n      if (!contentEl) return;\n      if (typeof contentEl === 'string') {\n        $newTabEl.html(contentEl);\n      } else {\n        $newTabEl.html('');\n        if (contentEl.f7Component) {\n          contentEl.f7Component.mount((componentEl) => {\n            $newTabEl.append(componentEl);\n          });\n        } else {\n          $newTabEl.append(contentEl);\n        }\n      }\n      $newTabEl[0].f7RouterTabLoaded = true;\n      onTabLoaded(contentEl);\n    }\n    function reject() {\n      router.allowPageChange = true;\n      return router;\n    }\n\n    if (content) {\n      resolve(content);\n    } else if (el) {\n      resolve(el);\n    } else if (component || componentUrl) {\n      // Load from component (F7/Vue/React/...)\n      try {\n        router.tabComponentLoader({\n          tabEl: $newTabEl[0],\n          component,\n          componentUrl,\n          options: loadTabOptions,\n          resolve,\n          reject,\n        });\n      } catch (err) {\n        router.allowPageChange = true;\n        throw err;\n      }\n    } else if (url) {\n      // Load using XHR\n      if (router.xhrAbortController) {\n        router.xhrAbortController.abort();\n        router.xhrAbortController = false;\n      }\n      router\n        .xhrRequest(url, loadTabOptions)\n        .then((tabContent) => {\n          resolve(tabContent);\n        })\n        .catch(() => {\n          router.allowPageChange = true;\n        });\n    }\n  }\n\n  let hasContentLoadProp;\n  'url content component el componentUrl'.split(' ').forEach((tabLoadProp) => {\n    if (tabRoute[tabLoadProp]) {\n      hasContentLoadProp = true;\n      loadTab({ [tabLoadProp]: tabRoute[tabLoadProp] }, options);\n    }\n  });\n\n  // Async\n  function asyncResolve(resolveParams, resolveOptions) {\n    loadTab(resolveParams, extend(options, resolveOptions));\n  }\n  function asyncReject() {\n    router.allowPageChange = true;\n  }\n  if (tabRoute.async) {\n    tabRoute.async.call(router, {\n      router,\n      to: currentRoute,\n      from: previousRoute,\n      resolve: asyncResolve,\n      reject: asyncReject,\n      app: router.app,\n    });\n  } else if (tabRoute.asyncComponent) {\n    asyncComponent(router, tabRoute.asyncComponent, asyncResolve, asyncReject);\n  } else if (!hasContentLoadProp) {\n    router.allowPageChange = true;\n  }\n\n  return router;\n}\nfunction tabRemove($oldTabEl, $newTabEl, tabRoute) {\n  const router = this;\n\n  let hasTabComponentChild;\n  if ($oldTabEl[0]) {\n    $oldTabEl[0].f7RouterTabLoaded = false;\n    delete $oldTabEl[0].f7RouterTabLoaded;\n  }\n  $oldTabEl.children().each((tabChild) => {\n    if (tabChild.f7Component) {\n      hasTabComponentChild = true;\n      $(tabChild).trigger('tab:beforeremove', tabRoute);\n      tabChild.f7Component.destroy();\n    }\n  });\n  if (!hasTabComponentChild) {\n    $oldTabEl.trigger('tab:beforeremove', tabRoute);\n  }\n  router.emit('tabBeforeRemove', $oldTabEl[0], $newTabEl[0], tabRoute);\n  router.removeTabContent($oldTabEl[0], tabRoute);\n}\n\nexport { tabLoad, tabRemove };\n","import { extend, nextTick } from '../../shared/utils.js';\nimport History from '../../shared/history.js';\nimport asyncComponent from './async-component.js';\n\nfunction modalLoad(modalType, route, loadOptions = {}, direction) {\n  const router = this;\n  const app = router.app;\n  const isPanel = modalType === 'panel';\n  const modalOrPanel = isPanel ? 'panel' : 'modal';\n\n  const options = extend(\n    {\n      animate: router.params.animate,\n      browserHistory: true,\n      history: true,\n      on: {},\n      once: {},\n    },\n    loadOptions,\n  );\n\n  const modalParams = extend({}, route.route[modalType]);\n  const modalRoute = route.route;\n\n  const routeCallback = (modal, name) => {\n    const { on, once } = options;\n    let callback;\n    if (name === 'open') {\n      callback = on.modalOpen || once.modalOpen || on.panelOpen || once.panelOpen;\n    }\n    if (name === 'close') {\n      callback = on.modalClose || once.modalClose || on.panelClose || once.panelClose;\n    }\n    if (name === 'closed') {\n      callback = on.modalClosed || once.modalClosed || on.panelClosed || once.panelClosed;\n    }\n    if (callback) callback(modal);\n  };\n\n  function onModalLoaded() {\n    // Create Modal\n    const modal = app[modalType].create(modalParams);\n    modalRoute.modalInstance = modal;\n\n    const hasEl = modal.el;\n\n    function closeOnSwipeBack() {\n      modal.close();\n    }\n    modal.on(`${modalOrPanel}Open`, () => {\n      if (!hasEl) {\n        // Remove theme elements\n        router.removeThemeElements(modal.el);\n\n        // Emit events\n        modal.$el.trigger(\n          `${modalType.toLowerCase()}:init ${modalType.toLowerCase()}:mounted`,\n          route,\n          modal,\n        );\n        router.emit(\n          `${!isPanel ? 'modalInit' : ''} ${modalType}Init ${modalType}Mounted`,\n          modal.el,\n          route,\n          modal,\n        );\n      }\n      router.once('swipeBackMove', closeOnSwipeBack);\n      routeCallback(modal, 'open');\n    });\n    modal.on(`${modalOrPanel}Close`, () => {\n      router.off('swipeBackMove', closeOnSwipeBack);\n      if (!modal.closeByRouter) {\n        router.back();\n      }\n      routeCallback(modal, 'close');\n    });\n\n    modal.on(`${modalOrPanel}Closed`, () => {\n      modal.$el.trigger(`${modalType.toLowerCase()}:beforeremove`, route, modal);\n      modal.emit(\n        `${!isPanel ? 'modalBeforeRemove ' : ''}${modalType}BeforeRemove`,\n        modal.el,\n        route,\n        modal,\n      );\n      const modalComponent = modal.el.f7Component;\n      routeCallback(modal, 'closed');\n      if (modalComponent) {\n        modalComponent.destroy();\n      }\n      nextTick(() => {\n        if (\n          modalComponent ||\n          modalParams.component ||\n          modalParams.asyncComponent ||\n          modalParams.async\n        ) {\n          router.removeModal(modal.el);\n        }\n        modal.destroy();\n        delete modal.route;\n        delete modalRoute.modalInstance;\n      });\n    });\n\n    if (options.route) {\n      // Update Browser History\n      if (router.params.browserHistory && options.browserHistory) {\n        History.push(\n          router.view.id,\n          {\n            url: options.route.url,\n            modal: modalType,\n          },\n          (router.params.browserHistoryRoot || '') +\n            router.params.browserHistorySeparator +\n            options.route.url,\n        );\n      }\n\n      // Set Route\n      if (options.route !== router.currentRoute) {\n        modal.route = extend(options.route, { modal });\n        router.currentRoute = modal.route;\n      }\n\n      // Update Router History\n      if (options.history && !options.reloadCurrent) {\n        router.history.push(options.route.url);\n        router.saveHistory();\n      }\n    }\n\n    if (hasEl) {\n      // Remove theme elements\n      router.removeThemeElements(modal.el);\n\n      // Emit events\n      modal.$el.trigger(\n        `${modalType.toLowerCase()}:init ${modalType.toLowerCase()}:mounted`,\n        route,\n        modal,\n      );\n      router.emit(\n        `${modalOrPanel}Init ${modalType}Init ${modalType}Mounted`,\n        modal.el,\n        route,\n        modal,\n      );\n    }\n\n    // Open\n    modal.open(options.animate === false || options.animate === true ? options.animate : undefined);\n  }\n\n  // Load Modal Content\n  function loadModal(loadModalParams, loadModalOptions) {\n    // Load Modal Props\n    const { url, content, component, componentUrl } = loadModalParams;\n\n    // Component/Template Callbacks\n    function resolve(contentEl) {\n      if (contentEl) {\n        if (typeof contentEl === 'string') {\n          modalParams.content = contentEl;\n        } else if (contentEl.f7Component) {\n          contentEl.f7Component.mount((componentEl) => {\n            modalParams.el = componentEl;\n            app.$el.append(componentEl);\n          });\n        } else {\n          modalParams.el = contentEl;\n        }\n        onModalLoaded();\n      }\n    }\n    function reject() {\n      router.allowPageChange = true;\n      return router;\n    }\n\n    if (content) {\n      resolve(content);\n    } else if (component || componentUrl) {\n      // Load from component (F7/Vue/React/...)\n      try {\n        router.modalComponentLoader({\n          rootEl: app.el,\n          component,\n          componentUrl,\n          options: loadModalOptions,\n          resolve,\n          reject,\n        });\n      } catch (err) {\n        router.allowPageChange = true;\n        throw err;\n      }\n    } else if (url) {\n      // Load using XHR\n      if (router.xhrAbortController) {\n        router.xhrAbortController.abort();\n        router.xhrAbortController = false;\n      }\n      router\n        .xhrRequest(url, loadModalOptions)\n        .then((modalContent) => {\n          modalParams.content = modalContent;\n          onModalLoaded();\n        })\n        .catch(() => {\n          router.allowPageChange = true;\n        });\n    } else {\n      onModalLoaded();\n    }\n  }\n\n  let foundLoadProp;\n  'url content component el componentUrl template'.split(' ').forEach((modalLoadProp) => {\n    if (modalParams[modalLoadProp] && !foundLoadProp) {\n      foundLoadProp = true;\n      loadModal({ [modalLoadProp]: modalParams[modalLoadProp] }, options);\n    }\n  });\n  if (!foundLoadProp && modalType === 'actions') {\n    onModalLoaded();\n  }\n\n  // Async\n  function asyncResolve(resolveParams, resolveOptions) {\n    loadModal(resolveParams, extend(options, resolveOptions));\n  }\n  function asyncReject() {\n    router.allowPageChange = true;\n  }\n  if (modalParams.async) {\n    modalParams.async.call(router, {\n      router,\n      to: options.route,\n      from: router.currentRoute,\n      resolve: asyncResolve,\n      reject: asyncReject,\n      direction,\n      app,\n    });\n  }\n  if (modalParams.asyncComponent) {\n    asyncComponent(router, modalParams.asyncComponent, asyncResolve, asyncReject);\n  }\n  return router;\n}\nfunction modalRemove(modal) {\n  extend(modal, { closeByRouter: true });\n  modal.close();\n}\n\nexport { modalLoad, modalRemove };\n","import $ from '../../shared/dom7.js';\nimport appRouterCheck from './app-router-check.js';\n\nfunction clearPreviousPages(router) {\n  appRouterCheck(router, 'clearPreviousPages');\n  const app = router.app;\n  const dynamicNavbar = router.dynamicNavbar;\n\n  const $pagesToRemove = router.$el.children('.page').filter((pageInView) => {\n    if (router.currentRoute && (router.currentRoute.modal || router.currentRoute.panel))\n      return true;\n    return pageInView !== router.currentPageEl;\n  });\n\n  $pagesToRemove.each((pageEl) => {\n    const $oldPageEl = $(pageEl);\n    const $oldNavbarEl = $(app.navbar.getElByPage($oldPageEl));\n    // Page remove event\n    router.pageCallback('beforeRemove', $oldPageEl, $oldNavbarEl, 'previous', undefined, {});\n    router.removePage($oldPageEl);\n    if (dynamicNavbar && $oldNavbarEl.length) {\n      router.removeNavbar($oldNavbarEl);\n    }\n  });\n}\n\nfunction clearPreviousHistory() {\n  const router = this;\n  appRouterCheck(router, 'clearPreviousHistory');\n  const url = router.history[router.history.length - 1];\n\n  clearPreviousPages(router);\n\n  router.history = [url];\n  router.view.history = [url];\n  router.saveHistory();\n}\n\nexport { clearPreviousHistory }; // eslint-disable-line\n","import Router from './router-class.js';\n\nexport default {\n  name: 'router',\n  static: {\n    Router,\n  },\n  instance: {\n    cache: {\n      xhr: [],\n      templates: [],\n      components: [],\n    },\n  },\n  create() {\n    const instance = this;\n    if (instance.app) {\n      // View Router\n      if (instance.params.router) {\n        instance.router = new Router(instance.app, instance);\n      }\n    } else {\n      // App Router\n      instance.router = new Router(instance);\n    }\n  },\n};\n","import $ from '../../shared/dom7.js';\nimport { extend } from '../../shared/utils.js';\nimport { getSupport } from '../../shared/get-support.js';\n\nfunction resizableView(view) {\n  const app = view.app;\n  const support = getSupport();\n  if (view.resizableInitialized) return;\n  extend(view, {\n    resizable: true,\n    resizableWidth: null,\n    resizableInitialized: true,\n  });\n  const $htmlEl = $('html');\n  const { $el } = view;\n  if (!$el) return;\n\n  let $resizeHandlerEl;\n\n  let isTouched;\n  let isMoved;\n  const touchesStart = {};\n  let touchesDiff;\n  let width;\n\n  let minWidth;\n  let maxWidth;\n\n  function transformCSSWidth(v) {\n    if (!v) return null;\n    if (v.indexOf('%') >= 0 || v.indexOf('vw') >= 0) {\n      return (parseInt(v, 10) / 100) * app.width;\n    }\n    const newV = parseInt(v, 10);\n    if (Number.isNaN(newV)) return null;\n    return newV;\n  }\n\n  function isResizable() {\n    return view.resizable && $el.hasClass('view-resizable') && $el.hasClass('view-master-detail');\n  }\n\n  function handleTouchStart(e) {\n    if (!isResizable()) return;\n    touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n    touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n    isMoved = false;\n    isTouched = true;\n    const $pageMasterEl = $el.children('.page-master');\n    minWidth = transformCSSWidth($pageMasterEl.css('min-width'));\n    maxWidth = transformCSSWidth($pageMasterEl.css('max-width'));\n  }\n  function handleTouchMove(e) {\n    if (!isTouched) return;\n    e.f7PreventSwipePanel = true;\n    const pageX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n\n    if (!isMoved) {\n      width = $resizeHandlerEl[0].offsetLeft + $resizeHandlerEl[0].offsetWidth;\n      $el.addClass('view-resizing');\n      $htmlEl.css('cursor', 'col-resize');\n    }\n\n    isMoved = true;\n\n    e.preventDefault();\n\n    touchesDiff = pageX - touchesStart.x;\n\n    let newWidth = width + touchesDiff;\n    if (minWidth && !Number.isNaN(minWidth)) {\n      newWidth = Math.max(newWidth, minWidth);\n    }\n    if (maxWidth && !Number.isNaN(maxWidth)) {\n      newWidth = Math.min(newWidth, maxWidth);\n    }\n    newWidth = Math.min(Math.max(newWidth, 0), app.width);\n\n    view.resizableWidth = newWidth;\n    $htmlEl[0].style.setProperty('--f7-page-master-width', `${newWidth}px`);\n\n    $el.trigger('view:resize', newWidth);\n    view.emit('local::resize viewResize', view, newWidth);\n  }\n  function handleTouchEnd() {\n    $('html').css('cursor', '');\n    if (!isTouched || !isMoved) {\n      isTouched = false;\n      isMoved = false;\n      return;\n    }\n    isTouched = false;\n    isMoved = false;\n\n    $htmlEl[0].style.setProperty('--f7-page-master-width', `${view.resizableWidth}px`);\n    $el.removeClass('view-resizing');\n  }\n\n  function handleResize() {\n    if (!view.resizableWidth) return;\n    minWidth = transformCSSWidth($resizeHandlerEl.css('min-width'));\n    maxWidth = transformCSSWidth($resizeHandlerEl.css('max-width'));\n\n    if (minWidth && !Number.isNaN(minWidth) && view.resizableWidth < minWidth) {\n      view.resizableWidth = Math.max(view.resizableWidth, minWidth);\n    }\n    if (maxWidth && !Number.isNaN(maxWidth) && view.resizableWidth > maxWidth) {\n      view.resizableWidth = Math.min(view.resizableWidth, maxWidth);\n    }\n    view.resizableWidth = Math.min(Math.max(view.resizableWidth, 0), app.width);\n\n    $htmlEl[0].style.setProperty('--f7-page-master-width', `${view.resizableWidth}px`);\n  }\n\n  $resizeHandlerEl = view.$el.children('.view-resize-handler');\n  if (!$resizeHandlerEl.length) {\n    view.$el.append('<div class=\"view-resize-handler\"></div>');\n    $resizeHandlerEl = view.$el.children('.view-resize-handler');\n  }\n  view.$resizeHandlerEl = $resizeHandlerEl;\n\n  $el.addClass('view-resizable');\n\n  // Add Events\n  const passive = support.passiveListener ? { passive: true } : false;\n\n  view.$el.on(app.touchEvents.start, '.view-resize-handler', handleTouchStart, passive);\n  app.on('touchmove:active', handleTouchMove);\n  app.on('touchend:passive', handleTouchEnd);\n  app.on('resize', handleResize);\n  view.on('beforeOpen', handleResize);\n\n  view.once('viewDestroy', () => {\n    $el.removeClass('view-resizable');\n    view.$resizeHandlerEl.remove();\n    view.$el.off(app.touchEvents.start, '.view-resize-handler', handleTouchStart, passive);\n    app.off('touchmove:active', handleTouchMove);\n    app.off('touchend:passive', handleTouchEnd);\n    app.off('resize', handleResize);\n    view.off('beforeOpen', handleResize);\n  });\n}\n\nexport default resizableView;\n","import $ from '../../shared/dom7.js';\nimport { extend } from '../../shared/utils.js';\nimport Router from '../../modules/router/router.js';\nimport Framework7Class from '../../shared/class.js';\nimport resizableView from './resizable-view.js';\n\nclass View extends Framework7Class {\n  constructor(app, el, viewParams = {}) {\n    super(viewParams, [app]);\n\n    const view = this;\n\n    const ssr = view.params.routerId;\n\n    const defaults = {\n      routes: [],\n      routesAdd: [],\n    };\n\n    if (!ssr) {\n      const $el = $(el);\n      if (!$el.length) {\n        let message = \"Framework7: can't create a View instance because \";\n        message +=\n          typeof el === 'string'\n            ? `the selector \"${el}\" didn't match any element`\n            : 'el must be an HTMLElement or Dom7 object';\n\n        throw new Error(message);\n      }\n    }\n\n    // Default View params\n    view.params = extend({ el }, defaults, app.params.view, viewParams);\n\n    // Routes\n    if (view.params.routes.length > 0) {\n      view.routes = view.params.routes;\n    } else {\n      view.routes = [].concat(app.routes, view.params.routesAdd);\n    }\n\n    // View Props\n    extend(false, view, {\n      app,\n      name: view.params.name,\n      main: view.params.main,\n      history: [],\n      scrollHistory: {},\n    });\n\n    // Install Modules\n    view.useModules();\n\n    // Add to app\n    app.views.push(view);\n    if (view.main) {\n      app.views.main = view;\n    }\n    if (view.name) {\n      app.views[view.name] = view;\n    }\n\n    // Index\n    view.index = app.views.indexOf(view);\n\n    // View ID\n    let viewId;\n    if (view.name) {\n      viewId = `view_${view.name}`;\n    } else if (view.main) {\n      viewId = 'view_main';\n    } else {\n      viewId = `view_${view.index}`;\n    }\n    view.id = viewId;\n\n    if (!view.params.init) {\n      return view;\n    }\n    // Init View\n    if (app.initialized) {\n      view.init();\n    } else {\n      app.on('init', () => {\n        view.init();\n      });\n    }\n\n    return view;\n  }\n\n  destroy() {\n    let view = this;\n    const app = view.app;\n\n    view.$el.trigger('view:beforedestroy');\n    view.emit('local::beforeDestroy viewBeforeDestroy', view);\n\n    app.off('resize', view.checkMasterDetailBreakpoint);\n\n    if (view.main) {\n      app.views.main = null;\n      delete app.views.main;\n    } else if (view.name) {\n      app.views[view.name] = null;\n      delete app.views[view.name];\n    }\n    view.$el[0].f7View = null;\n    delete view.$el[0].f7View;\n\n    app.views.splice(app.views.indexOf(view), 1);\n\n    // Destroy Router\n    if (view.params.router && view.router) {\n      view.router.destroy();\n    }\n\n    view.emit('local::destroy viewDestroy', view);\n\n    // Delete props & methods\n    Object.keys(view).forEach((viewProp) => {\n      view[viewProp] = null;\n      delete view[viewProp];\n    });\n\n    view = null;\n  }\n\n  checkMasterDetailBreakpoint(force) {\n    const view = this;\n    const app = view.app;\n    const wasMasterDetail = view.$el.hasClass('view-master-detail');\n    const isMasterDetail =\n      app.width >= view.params.masterDetailBreakpoint && view.$el.children('.page-master').length;\n    if ((typeof force === 'undefined' && isMasterDetail) || force === true) {\n      view.$el.addClass('view-master-detail');\n      if (!wasMasterDetail) {\n        view.emit('local::masterDetailBreakpoint viewMasterDetailBreakpoint', view);\n        view.$el.trigger('view:masterDetailBreakpoint');\n      }\n    } else {\n      view.$el.removeClass('view-master-detail');\n      if (wasMasterDetail) {\n        view.emit('local::masterDetailBreakpoint viewMasterDetailBreakpoint', view);\n        view.$el.trigger('view:masterDetailBreakpoint');\n      }\n    }\n  }\n\n  initMasterDetail() {\n    const view = this;\n    const app = view.app;\n    view.checkMasterDetailBreakpoint = view.checkMasterDetailBreakpoint.bind(view);\n    view.checkMasterDetailBreakpoint();\n    if (view.params.masterDetailResizable) {\n      resizableView(view);\n    }\n    app.on('resize', view.checkMasterDetailBreakpoint);\n  }\n\n  mount(viewEl) {\n    const view = this;\n    const app = view.app;\n    const el = view.params.el || viewEl;\n    const $el = $(el);\n\n    // Selector\n    let selector;\n    if (typeof el === 'string') selector = el;\n    else {\n      // Supposed to be HTMLElement or Dom7\n      selector =\n        ($el.attr('id') ? `#${$el.attr('id')}` : '') +\n        ($el.attr('class')\n          ? `.${$el.attr('class').replace(/ /g, '.').replace('.active', '')}`\n          : '');\n    }\n\n    // DynamicNavbar\n    let $navbarsEl;\n    if (app.theme === 'ios' && view.params.iosDynamicNavbar) {\n      $navbarsEl = $el.children('.navbars').eq(0);\n      if ($navbarsEl.length === 0) {\n        $navbarsEl = $('<div class=\"navbars\"></div>');\n      }\n    }\n\n    extend(view, {\n      $el,\n      el: $el[0],\n      main: view.main || $el.hasClass('view-main'),\n      $navbarsEl,\n      navbarsEl: $navbarsEl ? $navbarsEl[0] : undefined,\n      selector,\n    });\n\n    if (view.main) {\n      app.views.main = view;\n    }\n\n    // Save in DOM\n    if ($el && $el[0]) {\n      $el[0].f7View = view;\n    }\n\n    view.emit('local::mount viewMount', view);\n  }\n\n  init(viewEl) {\n    const view = this;\n    view.mount(viewEl);\n    if (view.params.router) {\n      if (view.params.masterDetailBreakpoint > 0) {\n        view.initMasterDetail();\n      }\n      if (\n        view.params.initRouterOnTabShow &&\n        view.$el.hasClass('tab') &&\n        !view.$el.hasClass('tab-active')\n      ) {\n        view.$el.once('tab:show', () => {\n          view.router.init();\n        });\n      } else {\n        view.router.init();\n      }\n\n      view.$el.trigger('view:init');\n      view.emit('local::init viewInit', view);\n    }\n  }\n}\n\n// Use Router\nView.use(Router);\n\nexport default View;\n","import { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport ViewClass from '../../components/view/view-class.js';\n\nfunction initClicks(app) {\n  function handleClicks(e) {\n    const window = getWindow();\n    const $clickedEl = $(e.target);\n    const $clickedLinkEl = $clickedEl.closest('a');\n    const isLink = $clickedLinkEl.length > 0;\n    const url = isLink && $clickedLinkEl.attr('href');\n\n    // Check if link is external\n    if (isLink) {\n      if (\n        $clickedLinkEl.is(app.params.clicks.externalLinks) ||\n        // eslint-disable-next-line\n        (url && url.indexOf('javascript:') >= 0)\n      ) {\n        const target = $clickedLinkEl.attr('target');\n        if (\n          url &&\n          window.cordova &&\n          window.cordova.InAppBrowser &&\n          (target === '_system' || target === '_blank')\n        ) {\n          e.preventDefault();\n          window.cordova.InAppBrowser.open(url, target);\n        } else if (\n          url &&\n          window.Capacitor &&\n          window.Capacitor.Plugins &&\n          window.Capacitor.Plugins.Browser &&\n          (target === '_system' || target === '_blank')\n        ) {\n          e.preventDefault();\n          window.Capacitor.Plugins.Browser.open({ url });\n        }\n        return;\n      }\n    }\n\n    // Modules Clicks\n    Object.keys(app.modules).forEach((moduleName) => {\n      const moduleClicks = app.modules[moduleName].clicks;\n      if (!moduleClicks) return;\n      if (e.preventF7Router) return;\n      Object.keys(moduleClicks).forEach((clickSelector) => {\n        const matchingClickedElement = $clickedEl.closest(clickSelector).eq(0);\n        if (matchingClickedElement.length > 0) {\n          moduleClicks[clickSelector].call(\n            app,\n            matchingClickedElement,\n            matchingClickedElement.dataset(),\n            e,\n          );\n        }\n      });\n    });\n\n    // Load Page\n    let clickedLinkData = {};\n    if (isLink) {\n      e.preventDefault();\n      clickedLinkData = $clickedLinkEl.dataset();\n    }\n    clickedLinkData.clickedEl = $clickedLinkEl[0];\n\n    // Prevent Router\n    if (e.preventF7Router) return;\n    if ($clickedLinkEl.hasClass('prevent-router') || $clickedLinkEl.hasClass('router-prevent'))\n      return;\n\n    const validUrl = url && url.length > 0 && url[0] !== '#';\n    if (validUrl || $clickedLinkEl.hasClass('back')) {\n      let view;\n      if (clickedLinkData.view && clickedLinkData.view === 'current') {\n        view = app.views.current;\n      } else if (clickedLinkData.view) {\n        view = $(clickedLinkData.view)[0].f7View;\n      } else {\n        view = $clickedEl.parents('.view')[0] && $clickedEl.parents('.view')[0].f7View;\n        if (\n          view &&\n          view.params.linksView &&\n          (!$clickedLinkEl.hasClass('back') ||\n            ($clickedLinkEl.hasClass('back') && view.router.history.length === 1))\n        ) {\n          if (typeof view.params.linksView === 'string') view = $(view.params.linksView)[0].f7View;\n          else if (view.params.linksView instanceof ViewClass) view = view.params.linksView;\n        }\n      }\n      if (!view) {\n        if (app.views.main) view = app.views.main;\n      }\n      if (!view || !view.router) return;\n      if ($clickedLinkEl[0].f7RouteProps) {\n        clickedLinkData.props = $clickedLinkEl[0].f7RouteProps;\n      }\n      if ($clickedLinkEl.hasClass('back')) view.router.back(url, clickedLinkData);\n      else view.router.navigate(url, clickedLinkData);\n    }\n  }\n\n  app.on('click', handleClicks);\n}\nexport default {\n  name: 'clicks',\n  params: {\n    clicks: {\n      // External Links\n      externalLinks: '.external',\n    },\n  },\n  on: {\n    init() {\n      const app = this;\n      initClicks(app);\n    },\n  },\n};\n","import { merge } from '../../shared/utils.js';\n\nexport default {\n  name: 'routerComponentLoader',\n  proto: {\n    openIn(router, url, options) {\n      const navigateOptions = {\n        url,\n        route: {\n          path: url,\n          options: {\n            ...options,\n            openIn: undefined,\n          },\n        },\n      };\n      const params = {\n        ...options,\n      };\n\n      const component = (props, ctx) => {\n        const { $h, $onMounted, $el, $f7 } = ctx;\n        $onMounted(() => {\n          const viewEl = $el.value.find('.view');\n          const view = $f7.view.create(viewEl, {\n            linksView: router.view.selector,\n            ignoreOpenIn: true,\n            loadInitialPage: false,\n          });\n          view.router.navigate(url, { props: options.props, reloadAll: true });\n        });\n        // eslint-disable-next-line\n        return () => {\n          if (options.openIn === 'popup') {\n            return $h`<div class=\"popup popup-router-open-in\" data-url=\"${url}\"><div class=\"view\"></div></div>`;\n          }\n          if (options.openIn === 'loginScreen') {\n            return $h`<div class=\"login-screen login-screen-router-open-in\" data-url=\"${url}\"><div class=\"view\"></div></div>`;\n          }\n          if (options.openIn === 'sheet') {\n            return $h`<div class=\"sheet-modal sheet-modal-router-open-in\" data-url=\"${url}\"><div class=\"sheet-modal-inner\"><div class=\"view\"></div></div></div>`;\n          }\n          if (options.openIn === 'popover') {\n            return $h`<div class=\"popover popover-router-open-in\" data-url=\"${url}\"><div class=\"popover-inner\"><div class=\"view\"></div></div></div>`;\n          }\n          if (options.openIn.indexOf('panel') >= 0) {\n            const parts = options.openIn.split(':');\n            const side = parts[1] || 'left';\n            const effect = parts[2] || 'cover';\n\n            return $h`<div class=\"panel panel-router-open-in panel-${side} panel-${effect}\" data-url=\"${url}\"><div class=\"view\"></div></div>`;\n          }\n        };\n      };\n      if (options.openIn === 'popup') {\n        navigateOptions.route.popup = params;\n      }\n      if (options.openIn === 'loginScreen') {\n        navigateOptions.route.loginScreen = params;\n      }\n      if (options.openIn === 'sheet') {\n        navigateOptions.route.sheet = params;\n      }\n      if (options.openIn === 'popover') {\n        params.targetEl = options.clickedEl || options.targetEl;\n        navigateOptions.route.popover = params;\n      }\n      if (options.openIn.indexOf('panel') >= 0) {\n        params.targetEl = options.clickedEl || options.targetEl;\n        navigateOptions.route.panel = params;\n      }\n      params.component = component;\n\n      return router.navigate(navigateOptions);\n    },\n    componentLoader(component, componentUrl, options = {}, resolve, reject) {\n      const router = this;\n      const { app } = router;\n      const url = typeof component === 'string' ? component : componentUrl;\n      const compiledUrl = router.replaceRequestUrlParams(url, options);\n      function compile(componentFunction) {\n        let context = options.context || {};\n        if (typeof context === 'function') context = context.call(router);\n        else if (typeof context === 'string') {\n          try {\n            context = JSON.parse(context);\n          } catch (err) {\n            reject(err);\n            throw err;\n          }\n        }\n        const componentContext = merge({}, context, {\n          f7route: options.route,\n          f7router: router,\n        });\n        const componentProps = merge(\n          options.route ? options.route.params || {} : {},\n          options.props || {},\n          options.routeProps || {},\n        );\n        let componentEl;\n        let componentRoot;\n        if (options.componentOptions && options.componentOptions.el) {\n          componentEl = options.componentOptions.el;\n        }\n        if (options.componentOptions && options.componentOptions.root) {\n          componentRoot = options.componentOptions.root;\n        }\n        app.component\n          .create(componentFunction, componentProps, {\n            context: componentContext,\n            el: componentEl,\n            root: componentRoot,\n          })\n          .then((createdComponent) => {\n            resolve(createdComponent.el);\n          })\n          .catch((err) => {\n            reject(err);\n            throw new Error(err, { cause: err });\n          });\n      }\n      let cachedComponent;\n      if (compiledUrl && router.params.componentCache) {\n        router.cache.components.forEach((cached) => {\n          if (cached.url === compiledUrl) cachedComponent = cached.component;\n        });\n      }\n      if (compiledUrl && cachedComponent) {\n        compile(cachedComponent);\n      } else if (compiledUrl && !cachedComponent) {\n        // Load via XHR\n        if (router.xhrAbortController) {\n          router.xhrAbortController.abort();\n          router.xhrAbortController = false;\n        }\n        router\n          .xhrRequest(url, options)\n          .then((loadedComponent) => {\n            const parsedComponent = app.component.parse(loadedComponent);\n            if (router.params.componentCache) {\n              router.cache.components.push({\n                url: compiledUrl,\n                component: parsedComponent,\n              });\n            }\n            compile(parsedComponent);\n          })\n          .catch((err) => {\n            reject();\n            throw err;\n          });\n      } else {\n        compile(component);\n      }\n    },\n\n    modalComponentLoader({ component, componentUrl, options, resolve, reject } = {}) {\n      const router = this;\n      router.componentLoader(\n        component,\n        componentUrl,\n        options,\n        (el) => {\n          resolve(el);\n        },\n        reject,\n      );\n    },\n\n    tabComponentLoader({ component, componentUrl, options, resolve, reject } = {}) {\n      const router = this;\n      router.componentLoader(\n        component,\n        componentUrl,\n        options,\n        (el) => {\n          resolve(el);\n        },\n        reject,\n      );\n    },\n\n    pageComponentLoader({ component, componentUrl, options, resolve, reject } = {}) {\n      const router = this;\n      router.componentLoader(\n        component,\n        componentUrl,\n        options,\n        (el, newOptions = {}) => {\n          resolve(el, newOptions);\n        },\n        reject,\n      );\n    },\n  },\n};\n","var n=function(t,s,r,e){var u;s[0]=0;for(var h=1;h<s.length;h++){var p=s[h++],a=s[h]?(s[0]|=p?1:2,r[s[h++]]):s[++h];3===p?e[0]=a:4===p?e[1]=Object.assign(e[1]||{},a):5===p?(e[1]=e[1]||{})[s[++h]]=a:6===p?e[1][s[++h]]+=a+\"\":p?(u=t.apply(a,n(t,a,r,[\"\",null])),e.push(u),a[0]?s[0]|=2:(s[h-2]=0,s[h]=u)):e.push(a)}return e},t=new Map;export default function(s){var r=t.get(this);return r||(r=new Map,t.set(this,r)),(r=n(this,r.get(s)||(r.set(s,r=function(n){for(var t,s,r=1,e=\"\",u=\"\",h=[0],p=function(n){1===r&&(n||(e=e.replace(/^\\s*\\n\\s*|\\s*\\n\\s*$/g,\"\")))?h.push(0,n,e):3===r&&(n||e)?(h.push(3,n,e),r=2):2===r&&\"...\"===e&&n?h.push(4,n,0):2===r&&e&&!n?h.push(5,0,!0,e):r>=5&&((e||!n&&5===r)&&(h.push(r,0,e,s),r=6),n&&(h.push(r,n,0,s),r=6)),e=\"\"},a=0;a<n.length;a++){a&&(1===r&&p(),p(a));for(var l=0;l<n[a].length;l++)t=n[a][l],1===r?\"<\"===t?(p(),h=[h],r=3):e+=t:4===r?\"--\"===e&&\">\"===t?(r=1,e=\"\"):e=t+e[0]:u?t===u?u=\"\":e+=t:'\"'===t||\"'\"===t?u=t:\">\"===t?(p(),r=1):r&&(\"=\"===t?(r=5,s=e,e=\"\"):\"/\"===t&&(r<5||\">\"===n[a][l+1])?(p(),3===r&&(h=h[0]),r=h,(h=h[0]).push(2,0,r),r=0):\" \"===t||\"\\t\"===t||\"\\n\"===t||\"\\r\"===t?(p(),r=2):e+=t),3===r&&\"!--\"===e&&(r=4,h=h[0])}return p(),h}(s)),r),arguments,[])).length>1?r:r[0]}\n","import htm from 'htm';\nimport { flattenArray } from '../../shared/utils.js';\n\nconst ignoreChildren = [false, null, '', undefined];\n\nconst h = (type, props, ...children) => {\n  return {\n    type,\n    props: props || {},\n    children: flattenArray(children.filter((child) => ignoreChildren.indexOf(child) < 0)),\n  };\n};\n\nconst $h = htm.bind(h);\n\nexport default $h;\n","export function vnode(sel, data, children, text, elm) {\n    var key = data === undefined ? undefined : data.key;\n    return { sel: sel, data: data, children: children,\n        text: text, elm: elm, key: key };\n}\nexport default vnode;\n//# sourceMappingURL=vnode.js.map","export var array = Array.isArray;\nexport function primitive(s) {\n    return typeof s === 'string' || typeof s === 'number';\n}\n//# sourceMappingURL=is.js.map","import { vnode } from './vnode.js';\nimport * as is from './is.js';\nfunction addNS(data, children, sel) {\n    data.ns = 'http://www.w3.org/2000/svg';\n    if (sel !== 'foreignObject' && children !== undefined) {\n        for (var i = 0; i < children.length; ++i) {\n            var childData = children[i].data;\n            if (childData !== undefined) {\n                addNS(childData, children[i].children, children[i].sel);\n            }\n        }\n    }\n}\nexport function h(sel, b, c) {\n    var data = {}, children, text, i;\n    if (c !== undefined) {\n        data = b;\n        if (is.array(c)) {\n            children = c;\n        }\n        else if (is.primitive(c)) {\n            text = c;\n        }\n        else if (c && c.sel) {\n            children = [c];\n        }\n    }\n    else if (b !== undefined) {\n        if (is.array(b)) {\n            children = b;\n        }\n        else if (is.primitive(b)) {\n            text = b;\n        }\n        else if (b && b.sel) {\n            children = [b];\n        }\n        else {\n            data = b;\n        }\n    }\n    if (is.array(children)) {\n        for (i = 0; i < children.length; ++i) {\n            if (is.primitive(children[i]))\n                children[i] = vnode(undefined, undefined, undefined, children[i], undefined);\n        }\n    }\n    if (sel[0] === 's' && sel[1] === 'v' && sel[2] === 'g' &&\n        (sel.length === 3 || sel[3] === '.' || sel[3] === '#')) {\n        addNS(data, children, sel);\n    }\n    return vnode(sel, data, children, text, undefined);\n}\n;\nexport default h;\n//# sourceMappingURL=h.js.map\n","export default {};\n","/* eslint no-use-before-define: \"off\" */\n/* eslint import/no-named-as-default: \"off\" */\nimport h from './snabbdom/h.js';\nimport customComponents from './custom-components.js';\nimport { isObject, eventNameToColonCase } from '../../shared/utils.js';\n\nconst SELF_CLOSING =\n  'area base br col command embed hr img input keygen link menuitem meta param source track wbr'.split(\n    ' ',\n  );\nconst PROPS_ATTRS =\n  'hidden checked disabled readonly selected autofocus autoplay required multiple value indeterminate routeProps innerHTML'.split(\n    ' ',\n  );\nconst BOOLEAN_PROPS =\n  'hidden checked disabled readonly selected autofocus autoplay required multiple readOnly indeterminate'.split(\n    ' ',\n  );\n\nconst getTagName = (treeNode) => {\n  return typeof treeNode.type === 'function'\n    ? treeNode.type.name || 'CustomComponent'\n    : treeNode.type;\n};\n\nconst toCamelCase = (name) => {\n  return name\n    .split('-')\n    .map((word, index) => {\n      if (index === 0) return word.toLowerCase();\n      return word[0].toUpperCase() + word.substr(1);\n    })\n    .join('');\n};\nconst propsFromAttrs = (...args) => {\n  const context = {};\n  args.forEach((obj = {}) => {\n    Object.keys(obj).forEach((key) => {\n      context[toCamelCase(key)] = obj[key];\n    });\n  });\n\n  return context;\n};\n\nconst createCustomComponent = ({ f7, treeNode, vnode, data }) => {\n  const component =\n    typeof treeNode.type === 'function' ? treeNode.type : customComponents[treeNode.type];\n  f7.component\n    .create(component, propsFromAttrs(data.attrs || {}, data.props || {}), {\n      el: vnode.elm,\n      children: treeNode.children,\n    })\n    .then((c) => {\n      if (vnode.data && vnode.data.on && c && c.$el) {\n        Object.keys(vnode.data.on).forEach((eventName) => {\n          c.$el.on(eventName, vnode.data.on[eventName]);\n        });\n      }\n      // eslint-disable-next-line\n      vnode.elm.__component__ = c;\n    });\n};\nconst updateCustomComponent = (vnode) => {\n  // eslint-disable-next-line\n  const component = vnode && vnode.elm && vnode.elm.__component__;\n  if (!component) return;\n  const newProps = propsFromAttrs(vnode.data.attrs || {}, vnode.data.props || {});\n  component.children = vnode.data.treeNode.children;\n  Object.assign(component.props, newProps);\n  component.update();\n};\nconst destroyCustomComponent = (vnode) => {\n  // eslint-disable-next-line\n  const component = vnode && vnode.elm && vnode.elm.__component__;\n\n  if (component) {\n    const { el, $el } = component;\n    if (vnode.data && vnode.data.on && $el) {\n      Object.keys(vnode.data.on).forEach((eventName) => {\n        $el.off(eventName, vnode.data.on[eventName]);\n      });\n    }\n    if (component.destroy) component.destroy();\n    if (el && el.parentNode) el.parentNode.removeChild(el);\n    delete vnode.elm.__component__; // eslint-disable-line\n  }\n};\n\nconst isCustomComponent = (treeNodeType) => {\n  return (\n    typeof treeNodeType === 'function' ||\n    (treeNodeType && treeNodeType.indexOf('-') > 0 && customComponents[treeNodeType])\n  );\n};\n\nfunction getHooks(treeNode, data, f7, initial, isRoot) {\n  const hooks = {};\n  const insert = [];\n  const destroy = [];\n  const update = [];\n  const postpatch = [];\n  let isFakeElement = false;\n  let tagName = getTagName(treeNode);\n  if (data && data.attrs && data.attrs.component) {\n    tagName = data.attrs.component;\n    delete data.attrs.component;\n    isFakeElement = true;\n  }\n\n  const isCustom = isCustomComponent(treeNode.type);\n\n  if (isCustom) {\n    insert.push((vnode) => {\n      if (vnode.sel !== tagName && !isFakeElement) return;\n      createCustomComponent({ f7, treeNode, vnode, data });\n    });\n    destroy.push((vnode) => {\n      destroyCustomComponent(vnode);\n    });\n    update.push((oldVnode, vnode) => {\n      updateCustomComponent(vnode);\n    });\n  }\n\n  if (!isCustom) {\n    if (!data || !data.attrs || !data.attrs.class) return hooks;\n\n    const classNames = data.attrs.class;\n    classNames.split(' ').forEach((className) => {\n      if (!initial) {\n        insert.push(...f7.getVnodeHooks('insert', className));\n      }\n      destroy.push(...f7.getVnodeHooks('destroy', className));\n      update.push(...f7.getVnodeHooks('update', className));\n      postpatch.push(...f7.getVnodeHooks('postpatch', className));\n    });\n  }\n\n  if (isRoot && !initial) {\n    postpatch.push((oldVnode, vnode) => {\n      const vn = vnode || oldVnode;\n      if (!vn) return;\n      if (vn.data && vn.data.component) {\n        vn.data.component.hook('onUpdated');\n      }\n    });\n  }\n  if (\n    insert.length === 0 &&\n    destroy.length === 0 &&\n    update.length === 0 &&\n    postpatch.length === 0\n  ) {\n    return hooks;\n  }\n\n  if (insert.length) {\n    hooks.insert = (vnode) => {\n      insert.forEach((f) => f(vnode));\n    };\n  }\n  if (destroy.length) {\n    hooks.destroy = (vnode) => {\n      destroy.forEach((f) => f(vnode));\n    };\n  }\n  if (update.length) {\n    hooks.update = (oldVnode, vnode) => {\n      update.forEach((f) => f(oldVnode, vnode));\n    };\n  }\n  if (postpatch.length) {\n    hooks.postpatch = (oldVnode, vnode) => {\n      postpatch.forEach((f) => f(oldVnode, vnode));\n    };\n  }\n\n  return hooks;\n}\nconst getEventHandler = (eventHandler, { stop, prevent, once } = {}) => {\n  let fired = false;\n\n  function handler(...args) {\n    const e = args[0];\n    if (once && fired) return;\n    if (stop) e.stopPropagation();\n    if (prevent) e.preventDefault();\n    fired = true;\n\n    eventHandler(...args);\n  }\n\n  return handler;\n};\n\nconst getData = (treeNode, component, f7, initial, isRoot) => {\n  const data = { component, treeNode };\n  const tagName = getTagName(treeNode);\n  Object.keys(treeNode.props).forEach((attrName) => {\n    const attrValue = treeNode.props[attrName];\n    if (typeof attrValue === 'undefined') return;\n    if (PROPS_ATTRS.indexOf(attrName) >= 0) {\n      // Props\n      if (!data.props) data.props = {};\n      if (attrName === 'readonly') {\n        // eslint-disable-next-line\n        attrName = 'readOnly';\n      }\n      if (attrName === 'routeProps') {\n        // eslint-disable-next-line\n        attrName = 'f7RouteProps';\n      }\n      if (tagName === 'option' && attrName === 'value') {\n        if (!data.attrs) data.attrs = {};\n        data.attrs.value = attrValue;\n      }\n      if (BOOLEAN_PROPS.indexOf(attrName) >= 0) {\n        // eslint-disable-next-line\n        data.props[attrName] = attrValue === false ? false : true;\n      } else {\n        data.props[attrName] = attrValue;\n      }\n    } else if (attrName === 'key') {\n      // Key\n      data.key = attrValue;\n    } else if (\n      attrName.indexOf('@') === 0 ||\n      (attrName.indexOf('on') === 0 && attrName.length > 2)\n    ) {\n      // Events\n      if (!data.on) data.on = {};\n      let eventName =\n        attrName.indexOf('@') === 0 ? attrName.substr(1) : eventNameToColonCase(attrName.substr(2));\n      let stop = false;\n      let prevent = false;\n      let once = false;\n      if (eventName.indexOf('.') >= 0) {\n        eventName.split('.').forEach((eventNamePart, eventNameIndex) => {\n          if (eventNameIndex === 0) eventName = eventNamePart;\n          else {\n            if (eventNamePart === 'stop') stop = true;\n            if (eventNamePart === 'prevent') prevent = true;\n            if (eventNamePart === 'once') once = true;\n          }\n        });\n      }\n      data.on[eventName] = getEventHandler(attrValue, { stop, prevent, once });\n    } else if (attrName === 'style') {\n      // Style\n      if (typeof attrValue !== 'string') {\n        data.style = attrValue;\n      } else {\n        if (!data.attrs) data.attrs = {};\n        data.attrs.style = attrValue;\n      }\n    } else {\n      // Rest of attribures\n      if (!data.attrs) data.attrs = {};\n      data.attrs[attrName] = attrValue;\n\n      // ID -> Key\n      if (attrName === 'id' && !data.key && !isRoot) {\n        data.key = attrValue;\n      }\n    }\n  });\n\n  const hooks = getHooks(treeNode, data, f7, initial, isRoot);\n\n  hooks.prepatch = (oldVnode, vnode) => {\n    if (!oldVnode || !vnode) return;\n    if (oldVnode && oldVnode.data && oldVnode.data.props) {\n      Object.keys(oldVnode.data.props).forEach((key) => {\n        if (BOOLEAN_PROPS.indexOf(key) < 0) return;\n        if (!vnode.data) vnode.data = {};\n        if (!vnode.data.props) vnode.data.props = {};\n        if (oldVnode.data.props[key] === true && !(key in vnode.data.props)) {\n          vnode.data.props[key] = false;\n        }\n      });\n    }\n  };\n\n  data.hook = hooks;\n\n  return data;\n};\n\nconst getChildren = (treeNode, component, f7, initial) => {\n  if (treeNode && treeNode.type && SELF_CLOSING.indexOf(treeNode.type) >= 0) {\n    return [];\n  }\n  const children = [];\n  const nodes = treeNode.children;\n  for (let i = 0; i < nodes.length; i += 1) {\n    const childNode = nodes[i];\n    const child = treeNodeToVNode(childNode, component, f7, initial, false);\n    if (Array.isArray(child)) {\n      children.push(...child);\n    } else if (child) {\n      children.push(child);\n    }\n  }\n  return children;\n};\n\nconst getSlots = (treeNode, component, f7, initial) => {\n  const slotName = treeNode.props.name || 'default';\n  const slotNodes = (component.children || []).filter((childTreeNode) => {\n    let childSlotName = 'default';\n    if (childTreeNode.props) {\n      childSlotName = childTreeNode.props.slot || 'default';\n    }\n    return childSlotName === slotName;\n  });\n  if (slotNodes.length === 0) {\n    return getChildren(treeNode, component, f7, initial);\n  }\n  return slotNodes.map((subTreeNode) => treeNodeToVNode(subTreeNode, component, f7, initial));\n};\n\nconst isTreeNode = (treeNode) => {\n  return isObject(treeNode) && 'props' in treeNode && 'type' in treeNode && 'children' in treeNode;\n};\n\nconst treeNodeToVNode = (treeNode, component, f7, initial, isRoot) => {\n  if (!isTreeNode(treeNode)) {\n    return String(treeNode);\n  }\n  if (treeNode.type === 'slot') {\n    return getSlots(treeNode, component, f7, initial);\n  }\n  const data = getData(treeNode, component, f7, initial, isRoot);\n  const children = isCustomComponent(treeNode.type)\n    ? []\n    : getChildren(treeNode, component, f7, initial);\n\n  return h(getTagName(treeNode), data, children);\n};\n\nexport default function vdom(tree = {}, component, initial) {\n  return treeNodeToVNode(tree, component, component.f7, initial, true);\n}\n","function createElement(tagName) {\n    return document.createElement(tagName);\n}\nfunction createElementNS(namespaceURI, qualifiedName) {\n    return document.createElementNS(namespaceURI, qualifiedName);\n}\nfunction createTextNode(text) {\n    return document.createTextNode(text);\n}\nfunction createComment(text) {\n    return document.createComment(text);\n}\nfunction insertBefore(parentNode, newNode, referenceNode) {\n    if (referenceNode && referenceNode.parentNode !== parentNode) {\n      if (referenceNode.__component__) referenceNode = referenceNode.__component__.el;\n    }\n    parentNode.insertBefore(newNode, referenceNode);\n}\nfunction removeChild(node, child) {\n    if (!node) return;\n    node.removeChild(child);\n}\nfunction appendChild(node, child) {\n    node.appendChild(child);\n}\nfunction parentNode(node) {\n    return node.parentNode;\n}\nfunction nextSibling(node) {\n    return node.nextSibling;\n}\nfunction tagName(elm) {\n    return elm.tagName;\n}\nfunction setTextContent(node, text) {\n    node.textContent = text;\n}\nfunction getTextContent(node) {\n    return node.textContent;\n}\nfunction isElement(node) {\n    return node.nodeType === 1;\n}\nfunction isText(node) {\n    return node.nodeType === 3;\n}\nfunction isComment(node) {\n    return node.nodeType === 8;\n}\nexport var htmlDomApi = {\n    createElement: createElement,\n    createElementNS: createElementNS,\n    createTextNode: createTextNode,\n    createComment: createComment,\n    insertBefore: insertBefore,\n    removeChild: removeChild,\n    appendChild: appendChild,\n    parentNode: parentNode,\n    nextSibling: nextSibling,\n    tagName: tagName,\n    setTextContent: setTextContent,\n    getTextContent: getTextContent,\n    isElement: isElement,\n    isText: isText,\n    isComment: isComment,\n};\nexport default htmlDomApi;\n//# sourceMappingURL=htmldomapi.js.map\n","import vnode from './vnode.js';\nimport * as is from './is.js';\nimport htmlDomApi from './htmldomapi.js';\nfunction isUndef(s) { return s === undefined; }\nfunction isDef(s) { return s !== undefined; }\nvar emptyNode = vnode('', {}, [], undefined, undefined);\nfunction sameVnode(vnode1, vnode2) {\n    return vnode1.key === vnode2.key && vnode1.sel === vnode2.sel;\n}\nfunction isVnode(vnode) {\n    return vnode.sel !== undefined;\n}\nfunction createKeyToOldIdx(children, beginIdx, endIdx) {\n    var i, map = {}, key, ch;\n    for (i = beginIdx; i <= endIdx; ++i) {\n        ch = children[i];\n        if (ch != null) {\n            key = ch.key;\n            if (key !== undefined)\n                map[key] = i;\n        }\n    }\n    return map;\n}\nvar hooks = ['create', 'update', 'remove', 'destroy', 'pre', 'post'];\nexport { h } from './h.js';\nexport { thunk } from './thunk.js';\nexport function init(modules, domApi) {\n    var i, j, cbs = {};\n    var api = domApi !== undefined ? domApi : htmlDomApi;\n    for (i = 0; i < hooks.length; ++i) {\n        cbs[hooks[i]] = [];\n        for (j = 0; j < modules.length; ++j) {\n            var hook = modules[j][hooks[i]];\n            if (hook !== undefined) {\n                cbs[hooks[i]].push(hook);\n            }\n        }\n    }\n    function emptyNodeAt(elm) {\n        var id = elm.id ? '#' + elm.id : '';\n        var c = elm.className ? '.' + elm.className.split(' ').join('.') : '';\n        return vnode(api.tagName(elm).toLowerCase() + id + c, {}, [], undefined, elm);\n    }\n    function createRmCb(childElm, listeners) {\n        return function rmCb() {\n            if (--listeners === 0) {\n                var parent_1 = api.parentNode(childElm);\n                api.removeChild(parent_1, childElm);\n            }\n        };\n    }\n    function createElm(vnode, insertedVnodeQueue) {\n        var i, data = vnode.data;\n        if (data !== undefined) {\n            if (isDef(i = data.hook) && isDef(i = i.init)) {\n                i(vnode);\n                data = vnode.data;\n            }\n        }\n        var children = vnode.children, sel = vnode.sel;\n        if (sel === '!') {\n            if (isUndef(vnode.text)) {\n                vnode.text = '';\n            }\n            vnode.elm = api.createComment(vnode.text);\n        }\n        else if (sel !== undefined) {\n            // Parse selector\n            var hashIdx = sel.indexOf('#');\n            var dotIdx = sel.indexOf('.', hashIdx);\n            var hash = hashIdx > 0 ? hashIdx : sel.length;\n            var dot = dotIdx > 0 ? dotIdx : sel.length;\n            var tag = hashIdx !== -1 || dotIdx !== -1 ? sel.slice(0, Math.min(hash, dot)) : sel;\n            var elm = vnode.elm = isDef(data) && isDef(i = data.ns) ? api.createElementNS(i, tag)\n                : api.createElement(tag);\n            if (hash < dot)\n                elm.setAttribute('id', sel.slice(hash + 1, dot));\n            if (dotIdx > 0)\n                elm.setAttribute('class', sel.slice(dot + 1).replace(/\\./g, ' '));\n            for (i = 0; i < cbs.create.length; ++i)\n                cbs.create[i](emptyNode, vnode);\n            if (is.array(children)) {\n                for (i = 0; i < children.length; ++i) {\n                    var ch = children[i];\n                    if (ch != null) {\n                        api.appendChild(elm, createElm(ch, insertedVnodeQueue));\n                    }\n                }\n            }\n            else if (is.primitive(vnode.text)) {\n                api.appendChild(elm, api.createTextNode(vnode.text));\n            }\n            i = vnode.data.hook; // Reuse variable\n            if (isDef(i)) {\n                if (i.create)\n                    i.create(emptyNode, vnode);\n                if (i.insert)\n                    insertedVnodeQueue.push(vnode);\n            }\n        }\n        else {\n            vnode.elm = api.createTextNode(vnode.text);\n        }\n        return vnode.elm;\n    }\n    function addVnodes(parentElm, before, vnodes, startIdx, endIdx, insertedVnodeQueue) {\n        for (; startIdx <= endIdx; ++startIdx) {\n            var ch = vnodes[startIdx];\n            if (ch != null) {\n                api.insertBefore(parentElm, createElm(ch, insertedVnodeQueue), before);\n            }\n        }\n    }\n    function invokeDestroyHook(vnode) {\n        var i, j, data = vnode.data;\n        if (data !== undefined) {\n            if (isDef(i = data.hook) && isDef(i = i.destroy))\n                i(vnode);\n            for (i = 0; i < cbs.destroy.length; ++i)\n                cbs.destroy[i](vnode);\n            if (vnode.children !== undefined) {\n                for (j = 0; j < vnode.children.length; ++j) {\n                    i = vnode.children[j];\n                    if (i != null && typeof i !== \"string\") {\n                        invokeDestroyHook(i);\n                    }\n                }\n            }\n        }\n    }\n    function removeVnodes(parentElm, vnodes, startIdx, endIdx) {\n        for (; startIdx <= endIdx; ++startIdx) {\n            var i_1 = void 0, listeners = void 0, rm = void 0, ch = vnodes[startIdx];\n            if (ch != null) {\n                if (isDef(ch.sel)) {\n                    invokeDestroyHook(ch);\n                    listeners = cbs.remove.length + 1;\n                    rm = createRmCb(ch.elm, listeners);\n                    for (i_1 = 0; i_1 < cbs.remove.length; ++i_1)\n                        cbs.remove[i_1](ch, rm);\n                    if (isDef(i_1 = ch.data) && isDef(i_1 = i_1.hook) && isDef(i_1 = i_1.remove)) {\n                        i_1(ch, rm);\n                    }\n                    else {\n                        rm();\n                    }\n                }\n                else {\n                    api.removeChild(parentElm, ch.elm);\n                }\n            }\n        }\n    }\n    function updateChildren(parentElm, oldCh, newCh, insertedVnodeQueue) {\n        var oldStartIdx = 0, newStartIdx = 0;\n        var oldEndIdx = oldCh.length - 1;\n        var oldStartVnode = oldCh[0];\n        var oldEndVnode = oldCh[oldEndIdx];\n        var newEndIdx = newCh.length - 1;\n        var newStartVnode = newCh[0];\n        var newEndVnode = newCh[newEndIdx];\n        var oldKeyToIdx;\n        var idxInOld;\n        var elmToMove;\n        var before;\n        while (oldStartIdx <= oldEndIdx && newStartIdx <= newEndIdx) {\n            if (oldStartVnode == null) {\n                oldStartVnode = oldCh[++oldStartIdx]; // Vnode might have been moved left\n            }\n            else if (oldEndVnode == null) {\n                oldEndVnode = oldCh[--oldEndIdx];\n            }\n            else if (newStartVnode == null) {\n                newStartVnode = newCh[++newStartIdx];\n            }\n            else if (newEndVnode == null) {\n                newEndVnode = newCh[--newEndIdx];\n            }\n            else if (sameVnode(oldStartVnode, newStartVnode)) {\n                patchVnode(oldStartVnode, newStartVnode, insertedVnodeQueue);\n                oldStartVnode = oldCh[++oldStartIdx];\n                newStartVnode = newCh[++newStartIdx];\n            }\n            else if (sameVnode(oldEndVnode, newEndVnode)) {\n                patchVnode(oldEndVnode, newEndVnode, insertedVnodeQueue);\n                oldEndVnode = oldCh[--oldEndIdx];\n                newEndVnode = newCh[--newEndIdx];\n            }\n            else if (sameVnode(oldStartVnode, newEndVnode)) {\n                patchVnode(oldStartVnode, newEndVnode, insertedVnodeQueue);\n                api.insertBefore(parentElm, oldStartVnode.elm, api.nextSibling(oldEndVnode.elm));\n                oldStartVnode = oldCh[++oldStartIdx];\n                newEndVnode = newCh[--newEndIdx];\n            }\n            else if (sameVnode(oldEndVnode, newStartVnode)) {\n                patchVnode(oldEndVnode, newStartVnode, insertedVnodeQueue);\n                api.insertBefore(parentElm, oldEndVnode.elm, oldStartVnode.elm);\n                oldEndVnode = oldCh[--oldEndIdx];\n                newStartVnode = newCh[++newStartIdx];\n            }\n            else {\n                if (oldKeyToIdx === undefined) {\n                    oldKeyToIdx = createKeyToOldIdx(oldCh, oldStartIdx, oldEndIdx);\n                }\n                idxInOld = oldKeyToIdx[newStartVnode.key];\n                if (isUndef(idxInOld)) {\n                    api.insertBefore(parentElm, createElm(newStartVnode, insertedVnodeQueue), oldStartVnode.elm);\n                    newStartVnode = newCh[++newStartIdx];\n                }\n                else {\n                    elmToMove = oldCh[idxInOld];\n                    if (elmToMove.sel !== newStartVnode.sel) {\n                        api.insertBefore(parentElm, createElm(newStartVnode, insertedVnodeQueue), oldStartVnode.elm);\n                    }\n                    else {\n                        patchVnode(elmToMove, newStartVnode, insertedVnodeQueue);\n                        oldCh[idxInOld] = undefined;\n                        api.insertBefore(parentElm, elmToMove.elm, oldStartVnode.elm);\n                    }\n                    newStartVnode = newCh[++newStartIdx];\n                }\n            }\n        }\n        if (oldStartIdx <= oldEndIdx || newStartIdx <= newEndIdx) {\n            if (oldStartIdx > oldEndIdx) {\n                before = newCh[newEndIdx + 1] == null ? null : newCh[newEndIdx + 1].elm;\n                addVnodes(parentElm, before, newCh, newStartIdx, newEndIdx, insertedVnodeQueue);\n            }\n            else {\n                removeVnodes(parentElm, oldCh, oldStartIdx, oldEndIdx);\n            }\n        }\n    }\n    function patchVnode(oldVnode, vnode, insertedVnodeQueue) {\n        var i, hook;\n        if (isDef(i = vnode.data) && isDef(hook = i.hook) && isDef(i = hook.prepatch)) {\n            i(oldVnode, vnode);\n        }\n        var elm = vnode.elm = oldVnode.elm;\n        var oldCh = oldVnode.children;\n        var ch = vnode.children;\n        if (oldVnode === vnode)\n            return;\n        if (vnode.data !== undefined) {\n            for (i = 0; i < cbs.update.length; ++i)\n                cbs.update[i](oldVnode, vnode);\n            i = vnode.data.hook;\n            if (isDef(i) && isDef(i = i.update))\n                i(oldVnode, vnode);\n        }\n        if (isUndef(vnode.text)) {\n            if (isDef(oldCh) && isDef(ch)) {\n                if (oldCh !== ch)\n                    updateChildren(elm, oldCh, ch, insertedVnodeQueue);\n            }\n            else if (isDef(ch)) {\n                if (isDef(oldVnode.text))\n                    api.setTextContent(elm, '');\n                addVnodes(elm, null, ch, 0, ch.length - 1, insertedVnodeQueue);\n            }\n            else if (isDef(oldCh)) {\n                removeVnodes(elm, oldCh, 0, oldCh.length - 1);\n            }\n            else if (isDef(oldVnode.text)) {\n                api.setTextContent(elm, '');\n            }\n        }\n        else if (oldVnode.text !== vnode.text) {\n            api.setTextContent(elm, vnode.text);\n        }\n        if (isDef(hook) && isDef(i = hook.postpatch)) {\n            i(oldVnode, vnode);\n        }\n    }\n    return function patch(oldVnode, vnode) {\n        var i, elm, parent;\n        var insertedVnodeQueue = [];\n        for (i = 0; i < cbs.pre.length; ++i)\n            cbs.pre[i]();\n        if (!isVnode(oldVnode)) {\n            oldVnode = emptyNodeAt(oldVnode);\n        }\n        if (sameVnode(oldVnode, vnode)) {\n            patchVnode(oldVnode, vnode, insertedVnodeQueue);\n        }\n        else {\n            elm = oldVnode.elm;\n            parent = api.parentNode(elm);\n            createElm(vnode, insertedVnodeQueue);\n            if (parent !== null) {\n                api.insertBefore(parent, vnode.elm, api.nextSibling(elm));\n                removeVnodes(parent, [oldVnode], 0, 0);\n            }\n        }\n        for (i = 0; i < insertedVnodeQueue.length; ++i) {\n            insertedVnodeQueue[i].data.hook.insert(insertedVnodeQueue[i]);\n        }\n        for (i = 0; i < cbs.post.length; ++i)\n            cbs.post[i]();\n        return vnode;\n    };\n}\n//# sourceMappingURL=snabbdom.js.map\n","var xlinkNS = 'http://www.w3.org/1999/xlink';\nvar xmlNS = 'http://www.w3.org/XML/1998/namespace';\nvar colonChar = 58;\nvar xChar = 120;\nfunction updateAttrs(oldVnode, vnode) {\n    var key, elm = vnode.elm, oldAttrs = oldVnode.data.attrs, attrs = vnode.data.attrs;\n    if (!oldAttrs && !attrs)\n        return;\n    if (oldAttrs === attrs)\n        return;\n    oldAttrs = oldAttrs || {};\n    attrs = attrs || {};\n    // update modified attributes, add new attributes\n    for (key in attrs) {\n        var cur = attrs[key];\n        var old = oldAttrs[key];\n        if (old !== cur) {\n            if (cur === true) {\n                elm.setAttribute(key, \"\");\n            }\n            else if (cur === false) {\n                elm.removeAttribute(key);\n            }\n            else {\n                if (key.charCodeAt(0) !== xChar) {\n                    elm.setAttribute(key, cur);\n                }\n                else if (key.charCodeAt(3) === colonChar) {\n                    // Assume xml namespace\n                    elm.setAttributeNS(xmlNS, key, cur);\n                }\n                else if (key.charCodeAt(5) === colonChar) {\n                    // Assume xlink namespace\n                    elm.setAttributeNS(xlinkNS, key, cur);\n                }\n                else {\n                    elm.setAttribute(key, cur);\n                }\n            }\n        }\n    }\n    // remove removed attributes\n    // use `in` operator since the previous `for` iteration uses it (.i.e. add even attributes with undefined value)\n    // the other option is to remove all attributes with value == undefined\n    for (key in oldAttrs) {\n        if (!(key in attrs)) {\n            elm.removeAttribute(key);\n        }\n    }\n}\nexport var attributesModule = { create: updateAttrs, update: updateAttrs };\nexport default attributesModule;\n//# sourceMappingURL=attributes.js.map","function updateProps(oldVnode, vnode) {\n    var key, cur, old, elm = vnode.elm, oldProps = oldVnode.data.props, props = vnode.data.props;\n    if (!oldProps && !props)\n        return;\n    if (oldProps === props)\n        return;\n    oldProps = oldProps || {};\n    props = props || {};\n    for (key in oldProps) {\n        if (!props[key]) {\n            delete elm[key];\n        }\n    }\n    for (key in props) {\n        cur = props[key];\n        old = oldProps[key];\n        if (old !== cur && (key !== 'value' || elm[key] !== cur)) {\n            elm[key] = cur;\n        }\n    }\n}\nexport var propsModule = { create: updateProps, update: updateProps };\nexport default propsModule;\n//# sourceMappingURL=props.js.map","var raf = (typeof window !== 'undefined' && window.requestAnimationFrame) || setTimeout;\nvar nextFrame = function (fn) { raf(function () { raf(fn); }); };\nfunction setNextFrame(obj, prop, val) {\n    nextFrame(function () { obj[prop] = val; });\n}\nfunction updateStyle(oldVnode, vnode) {\n    var cur, name, elm = vnode.elm, oldStyle = oldVnode.data.style, style = vnode.data.style;\n    if (!oldStyle && !style)\n        return;\n    if (oldStyle === style)\n        return;\n    oldStyle = oldStyle || {};\n    style = style || {};\n    var oldHasDel = 'delayed' in oldStyle;\n    for (name in oldStyle) {\n        if (!style[name]) {\n            if (name[0] === '-' && name[1] === '-') {\n                elm.style.removeProperty(name);\n            }\n            else {\n                elm.style[name] = '';\n            }\n        }\n    }\n    for (name in style) {\n        cur = style[name];\n        if (name === 'delayed' && style.delayed) {\n            for (var name2 in style.delayed) {\n                cur = style.delayed[name2];\n                if (!oldHasDel || cur !== oldStyle.delayed[name2]) {\n                    setNextFrame(elm.style, name2, cur);\n                }\n            }\n        }\n        else if (name !== 'remove' && cur !== oldStyle[name]) {\n            if (name[0] === '-' && name[1] === '-') {\n                elm.style.setProperty(name, cur);\n            }\n            else {\n                elm.style[name] = cur;\n            }\n        }\n    }\n}\nfunction applyDestroyStyle(vnode) {\n    var style, name, elm = vnode.elm, s = vnode.data.style;\n    if (!s || !(style = s.destroy))\n        return;\n    for (name in style) {\n        elm.style[name] = style[name];\n    }\n}\nfunction applyRemoveStyle(vnode, rm) {\n    var s = vnode.data.style;\n    if (!s || !s.remove) {\n        rm();\n        return;\n    }\n    var name, elm = vnode.elm, i = 0, compStyle, style = s.remove, amount = 0, applied = [];\n    for (name in style) {\n        applied.push(name);\n        elm.style[name] = style[name];\n    }\n    compStyle = getComputedStyle(elm);\n    var props = compStyle['transition-property'].split(', ');\n    for (; i < props.length; ++i) {\n        if (applied.indexOf(props[i]) !== -1)\n            amount++;\n    }\n    elm.addEventListener('transitionend', function (ev) {\n        if (ev.target === elm)\n            --amount;\n        if (amount === 0)\n            rm();\n    });\n}\nexport var styleModule = {\n    create: updateStyle,\n    update: updateStyle,\n    destroy: applyDestroyStyle,\n    remove: applyRemoveStyle\n};\nexport default styleModule;\n//# sourceMappingURL=style.js.map","import $ from '../../shared/dom7.js';\n\nfunction invokeHandler(handler, event, args) {\n  if (typeof handler === 'function') {\n    // call function handler\n    handler(event, ...args);\n  }\n}\nfunction handleEvent(event, args, vnode) {\n  const name = event.type;\n  const on = vnode.data.on;\n  // call event handler(s) if exists\n  if (on && on[name]) {\n    invokeHandler(on[name], event, args, vnode);\n  }\n}\nfunction createListener() {\n  return function handler(event, ...args) {\n    handleEvent(event, args, handler.vnode);\n  };\n}\nfunction updateEvents(oldVnode, vnode) {\n  const oldOn = oldVnode.data.on;\n  const oldListener = oldVnode.listener;\n  const oldElm = oldVnode.elm;\n  const on = vnode && vnode.data.on;\n  const elm = vnode && vnode.elm;\n  // optimization for reused immutable handlers\n  if (oldOn === on) {\n    return;\n  }\n  // remove existing listeners which no longer used\n  if (oldOn && oldListener) {\n    // if element changed or deleted we remove all existing listeners unconditionally\n    if (!on) {\n      Object.keys(oldOn).forEach((name) => {\n        $(oldElm).off(name, oldListener);\n      });\n    } else {\n      Object.keys(oldOn).forEach((name) => {\n        if (!on[name]) {\n          $(oldElm).off(name, oldListener);\n        }\n      });\n    }\n  }\n  // add new listeners which has not already attached\n  if (on) {\n    // reuse existing listener or create new\n    const listener = oldVnode.listener || createListener();\n    vnode.listener = listener;\n    // update vnode for listener\n    listener.vnode = vnode;\n    // if element changed or added we add all needed listeners unconditionally\n    if (!oldOn) {\n      Object.keys(on).forEach((name) => {\n        $(elm).on(name, listener);\n      });\n    } else {\n      Object.keys(on).forEach((name) => {\n        if (!oldOn[name]) {\n          $(elm).on(name, listener);\n        }\n      });\n    }\n  }\n}\n\nexport default {\n  create: updateEvents,\n  update: updateEvents,\n  destroy: updateEvents,\n};\n","/* eslint import/no-named-as-default: off */\nimport { init } from './snabbdom/snabbdom.js';\nimport attributesModule from './snabbdom/modules/attributes.js';\nimport propsModule from './snabbdom/modules/props.js';\nimport styleModule from './snabbdom/modules/style.js';\nimport eventListenersModule from './eventslisteners.js';\n\nconst patch = init([attributesModule, propsModule, styleModule, eventListenersModule]);\n\nexport default patch;\n","import { flattenArray } from '../../shared/utils.js';\n\nconst ignoreChildren = [false, null, '', undefined];\n\nconst $jsx = (type, props, ...children) => {\n  const flatChildren = flattenArray(\n    (children || []).filter((child) => ignoreChildren.indexOf(child) < 0),\n  );\n  if (type === 'Fragment') {\n    return flatChildren;\n  }\n  return {\n    type,\n    props: props || {},\n    children: flatChildren,\n  };\n};\n\nexport default $jsx;\n","/* eslint no-underscore-dangle: \"off\" */\nimport { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport $h from './$h.js';\nimport { id as generateId, merge, eventNameToColonCase, deleteProps } from '../../shared/utils.js';\nimport vdom from './vdom.js';\nimport patch from './patch.js';\nimport $jsx from './$jsx.js';\n\n/* eslint-disable no-shadow */\n/* eslint-disable no-return-assign */\n/* eslint-disable no-plusplus */\n/* eslint-disable no-param-reassign */\n/* eslint-disable no-sequences */\nconst types = [\n  {\n    name: 'array',\n    init: (i) => i,\n    type: (i) => [i].find(Array.isArray),\n    update: (i, o) => [o].filter(Array.isArray).find(() => ((i.length = 0), i.push(...o))),\n    insert: (i, x, o = []) => i.splice(Math.max(x, 0), 0, ...[o].flat()),\n    replace: (i, x, o = []) => i.splice(Math.max(x, 0), Math.min(++x, 1), ...[o].flat()),\n    append: (i, o = []) => i.push(...[o].flat()),\n    prepend: (i, o = []) => i.unshift(...[o].flat()),\n    swap: (i, a, b) => {\n      [i[a], i[b]] = [i[b], i[a]];\n    },\n    fromTo: (i, a, b = a) => i.splice(Math.max(b, 0), 0, ...i.splice(Math.max(a, 0), 1)),\n    remove: (i, o, a = i.map((_, x) => x)) =>\n      [o]\n        .flat()\n        .filter((i) => a.includes(i))\n        .sort((a, b) => b - a)\n        .forEach((x) => i.splice(x, 1)),\n    clear: (i) => (i.length = 0),\n  },\n  {\n    name: 'object',\n    init: (i) => i,\n    type: (i) =>\n      [i]\n        .filter((i) => [i !== null, i !== undefined].every((i) => i))\n        .find((i) => Object.getPrototypeOf(i) === Object.prototype),\n    update: (i, o) => Object.assign(i, o),\n    insert: () => {},\n    replace: () => {},\n    append: () => {},\n    prepend: () => {},\n    swap: () => ({}), // N/A\n    fromTo: () => ({}), // N/A\n    remove: (i, o) => [o].flat().forEach((k) => delete i[k]),\n    clear: (i) => Object.keys(i).forEach((k) => delete i[k]),\n  },\n  {\n    name: 'atoms',\n    type: () => true,\n    init: (i, o = {}) => (\n      Object.defineProperty(o, 'value', {\n        get: () => i,\n        set: (v) => {\n          // eslint-disable-next-line\n          i = v;\n        },\n      }),\n      o\n    ),\n    update: (i, v = i.value) => {\n      i.value = v;\n    },\n    insert: () => ({}), // N/A\n    replace: () => ({}), // N/A\n    append: () => ({}), // N/A\n    prepend: () => ({}), // N/A\n    swap: () => ({}), // N/A\n    fromTo: () => ({}), // N/A\n    remove: () => ({}), // N/A\n    clear: (i) => {\n      i.value = undefined;\n    },\n  },\n];\n\n/* eslint-enable no-shadow */\n/* eslint-enable no-return-assign */\n/* eslint-enable no-plusplus */\n/* eslint-enable no-param-reassign */\n/* eslint-enable no-sequences */\n\nclass Component {\n  constructor(app, component, props = {}, { el, context, children } = {}) {\n    const document = getDocument();\n    merge(this, {\n      f7: app,\n      props: props || {},\n      context: context || {},\n      id: component.id || generateId(),\n      children: children || [],\n      theme: {\n        ios: app.theme === 'ios',\n        md: app.theme === 'md',\n      },\n      style: component.style,\n      __updateQueue: [],\n      __eventHandlers: [],\n      __onceEventHandlers: [],\n      __onBeforeMount: [],\n      __onMounted: [],\n      __onBeforeUpdate: [],\n      __onUpdated: [],\n      __onBeforeUnmount: [],\n      __onUnmounted: [],\n    });\n\n    const createComponent = () => {\n      return component(this.props, this.getComponentContext(true));\n    };\n\n    const getRenderFuncion = (componentResult) =>\n      new Promise((resolve, reject) => {\n        if (typeof componentResult === 'function') {\n          resolve(componentResult);\n        } else if (componentResult instanceof Promise) {\n          componentResult\n            .then((render) => {\n              resolve(render);\n            })\n            .catch((err) => {\n              reject(err);\n            });\n        } else {\n          reject(\n            new Error(\n              'Framework7: Component render function is not a \"function\" type. Didn\\'t you forget to \"return $render\"?',\n            ),\n          );\n        }\n      });\n\n    return new Promise((resolve, reject) => {\n      const componentResult = createComponent();\n      getRenderFuncion(componentResult)\n        .then((render) => {\n          this.renderFunction = render;\n\n          const tree = this.render();\n\n          if (el) {\n            this.vnode = vdom(tree, this, true);\n            if (this.style) {\n              this.styleEl = document.createElement('style');\n              this.styleEl.innerHTML = this.style;\n            }\n            this.el = el;\n            patch(this.el, this.vnode);\n            this.el = this.vnode.elm;\n            this.$el = $(this.el);\n\n            this.attachEvents();\n            this.el.f7Component = this;\n            this.mount();\n            resolve(this);\n            return;\n          }\n          // Make Dom\n          if (tree) {\n            this.vnode = vdom(tree, this, true);\n            this.el = document.createElement(this.vnode.sel || 'div');\n            patch(this.el, this.vnode);\n            this.$el = $(this.el);\n          }\n          if (this.style) {\n            this.styleEl = document.createElement('style');\n            this.styleEl.innerHTML = this.style;\n          }\n\n          this.attachEvents();\n\n          if (this.el) {\n            this.el.f7Component = this;\n          }\n\n          resolve(this);\n        })\n        .catch((err) => {\n          reject(err);\n        });\n    });\n  }\n\n  on(eventName, handler) {\n    if (!this.__eventHandlers) return;\n    this.__eventHandlers.push({ eventName, handler });\n  }\n\n  once(eventName, handler) {\n    if (!this.__eventHandlers) return;\n    this.__onceEventHandlers.push({ eventName, handler });\n  }\n\n  getComponentRef() {\n    const self = this;\n    return (initialValue) => {\n      let value = initialValue;\n      const obj = {};\n      Object.defineProperty(obj, 'value', {\n        get() {\n          return value;\n        },\n        set(v) {\n          value = v;\n          self.update();\n        },\n      });\n      return obj;\n    };\n  }\n\n  getComponentStore() {\n    const { state, _gettersPlain, dispatch } = this.f7.store;\n    const $store = {\n      state,\n      dispatch,\n    };\n    $store.getters = new Proxy(_gettersPlain, {\n      get: (target, prop) => {\n        const obj = target[prop];\n        const callback = (v) => {\n          obj.value = v;\n          this.update();\n        };\n        obj.onUpdated(callback);\n        return obj;\n      },\n    });\n\n    return $store;\n  }\n\n  /* eslint-disable no-sequences */\n  getUseState() {\n    return (o) => {\n      const obj = [o].reduce(\n        (t, _i, _x, _a, i = t.init(_i)) => ({\n          state: i,\n          update: (v) => (t.update(i, v), this.update()),\n          remove: (v) => (t.remove(i, v), this.update()),\n          clear: () => (t.clear(i), this.update()),\n          insert: (x, v) => (t.insert(i, x, v), this.update()),\n          replace: (x, v) => (t.replace(i, x, v), this.update()),\n          append: (v) => (t.append(i, v), this.update()),\n          prepend: (v) => (t.prepend(i, v), this.update()),\n          swap: (a, b) => (t.swap(i, a, b), this.update()),\n          fromTo: (a, b) => (t.fromTo(i, a, b), this.update()),\n          method: (f = () => ({})) => (f(i), this.update()),\n          async: (f = () => Promise.reject(i)) => f(i).then(() => this.update()),\n        }),\n        types.find((i) => i.type(o)),\n      );\n      obj.length = 12;\n      obj[Symbol.iterator] = function Iterate() {\n        const values = Object.values(this);\n        values.splice(values.indexOf(12), 1);\n        let index = 0;\n        return {\n          next() {\n            if (index < values.length) {\n              const val = values[index];\n              index += 1;\n              return { value: val, done: false };\n            }\n            return { done: true };\n          },\n        };\n      };\n      return obj;\n    };\n  }\n  /* eslint-enable no-sequences */\n\n  getComponentContext(includeHooks) {\n    const ctx = {\n      $f7route: this.context.f7route,\n      $f7router: this.context.f7router,\n      $h,\n      $,\n      $id: this.id,\n      $f7: this.f7,\n      $f7ready: this.f7ready.bind(this),\n      $theme: this.theme,\n      $tick: this.tick.bind(this),\n      $update: this.update.bind(this),\n      $emit: this.emit.bind(this),\n      $store: this.getComponentStore(),\n      $ref: this.getComponentRef(),\n      $el: {},\n      $useState: this.getUseState(),\n    };\n    Object.defineProperty(ctx.$el, 'value', {\n      get: () => {\n        return this.$el;\n      },\n    });\n    if (includeHooks)\n      Object.assign(ctx, {\n        $on: this.on.bind(this),\n        $once: this.once.bind(this),\n        $onBeforeMount: (handler) => this.__onBeforeMount.push(handler),\n        $onMounted: (handler) => this.__onMounted.push(handler),\n        $onBeforeUpdate: (handler) => this.__onBeforeUpdate.push(handler),\n        $onUpdated: (handler) => this.__onUpdated.push(handler),\n        $onBeforeUnmount: (handler) => this.__onBeforeUnmount.push(handler),\n        $onUnmounted: (handler) => this.__onUnmounted.push(handler),\n      });\n\n    return ctx;\n  }\n\n  render() {\n    return this.renderFunction(this.getComponentContext());\n  }\n\n  emit(name, data) {\n    if (!this.el) return;\n    this.$el.trigger(name, data);\n  }\n\n  attachEvents() {\n    const { $el } = this;\n    if (!this.__eventHandlers) return;\n    this.__eventHandlers.forEach(({ eventName, handler }) => {\n      $el.on(eventNameToColonCase(eventName), handler);\n    });\n    this.__onceEventHandlers.forEach(({ eventName, handler }) => {\n      $el.once(eventNameToColonCase(eventName), handler);\n    });\n  }\n\n  detachEvents() {\n    const { $el } = this;\n    if (!this.__eventHandlers) return;\n    this.__eventHandlers.forEach(({ eventName, handler }) => {\n      $el.on(eventNameToColonCase(eventName), handler);\n    });\n    this.__onceEventHandlers.forEach(({ eventName, handler }) => {\n      $el.once(eventNameToColonCase(eventName), handler);\n    });\n  }\n\n  startUpdateQueue() {\n    const window = getWindow();\n    if (this.__requestAnimationFrameId) return;\n    const update = () => {\n      this.hook('onBeforeUpdate');\n      const tree = this.render();\n\n      // Make Dom\n      if (tree) {\n        const newVNode = vdom(tree, this, false);\n        this.vnode = patch(this.vnode, newVNode);\n      }\n    };\n    this.__requestAnimationFrameId = window.requestAnimationFrame(() => {\n      if (this.__updateIsPending) update();\n      let resolvers = [...this.__updateQueue];\n      this.__updateQueue = [];\n      this.__updateIsPending = false;\n      window.cancelAnimationFrame(this.__requestAnimationFrameId);\n      delete this.__requestAnimationFrameId;\n      delete this.__updateIsPending;\n      resolvers.forEach((resolver) => resolver());\n      resolvers = [];\n    });\n  }\n\n  tick(callback) {\n    return new Promise((resolve) => {\n      function resolver() {\n        resolve();\n        if (callback) callback();\n      }\n      this.__updateQueue.push(resolver);\n      this.startUpdateQueue();\n    });\n  }\n\n  update(callback) {\n    if (this.__destroyed) return new Promise(() => {});\n    return new Promise((resolve) => {\n      const resolver = () => {\n        resolve();\n        if (callback) callback();\n      };\n      this.__updateIsPending = true;\n      this.__updateQueue.push(resolver);\n      this.startUpdateQueue();\n    });\n  }\n\n  setState(callback) {\n    return this.update(callback);\n  }\n\n  f7ready(callback) {\n    if (this.f7.initialized) {\n      callback(this.f7);\n      return;\n    }\n    this.f7.once('init', () => {\n      callback(this.f7);\n    });\n  }\n\n  mount(mountMethod) {\n    this.hook('onBeforeMount', this.$el);\n    if (this.styleEl) $('head').append(this.styleEl);\n    if (mountMethod) mountMethod(this.el);\n    this.hook('onMounted', this.$el);\n  }\n\n  destroy() {\n    if (this.__destroyed) return;\n    const window = getWindow();\n    this.hook('onBeforeUnmount');\n\n    if (this.styleEl) $(this.styleEl).remove();\n\n    this.detachEvents();\n    this.hook('onUnmounted');\n    // Delete component instance\n    if (this.el && this.el.f7Component) {\n      this.el.f7Component = null;\n      delete this.el.f7Component;\n    }\n    // Patch with empty node\n    if (this.vnode) {\n      this.vnode = patch(this.vnode, { sel: this.vnode.sel, data: {} });\n    }\n    // Clear update queue\n    window.cancelAnimationFrame(this.__requestAnimationFrameId);\n    this.__updateQueue = [];\n    this.__eventHandlers = [];\n    this.__onceEventHandlers = [];\n    this.__onBeforeMount = [];\n    this.__onMounted = [];\n    this.__onBeforeUpdate = [];\n    this.__onUpdated = [];\n    this.__onBeforeUnmount = [];\n    this.__onUnmounted = [];\n    // Delete all props\n    deleteProps(this);\n    this.__destroyed = true;\n  }\n\n  hook(name, ...args) {\n    if (this.__destroyed) return;\n    this[`__${name}`].forEach((handler) => {\n      handler(...args);\n    });\n  }\n}\n\nComponent.$jsx = $jsx;\n\nexport default Component;\n","import { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { id } from '../../shared/utils.js';\n\nfunction parseComponent(componentString) {\n  const window = getWindow();\n  const document = getDocument();\n  const componentId = id();\n  const callbackCreateName = `f7_component_create_callback_${componentId}`;\n\n  // Template\n  let template;\n  const hasTemplate = componentString.match(/<template([ ]?)([a-z0-9-]*)>/);\n  if (hasTemplate) {\n    template = componentString\n      .split(/<template[ ]?[a-z0-9-]*>/)\n      .filter((item, index) => index > 0)\n      .join('<template>')\n      .split('</template>')\n      .filter((item, index, arr) => index < arr.length - 1)\n      .join('</template>')\n      .replace(/{{#raw}}([ \\n]*)<template/g, '{{#raw}}<template')\n      .replace(/\\/template>([ \\n]*){{\\/raw}}/g, '/template>{{/raw}}')\n      .replace(/([ \\n])<template/g, '$1{{#raw}}<template')\n      .replace(/\\/template>([ \\n])/g, '/template>{{/raw}}$1');\n  }\n\n  // Parse Styles\n  let style = null;\n\n  if (componentString.indexOf('<style>') >= 0) {\n    style = componentString.split('<style>')[1].split('</style>')[0];\n  }\n  if (componentString.indexOf('<style scoped>') >= 0) {\n    style = componentString.split('<style scoped>')[1].split('</style>')[0];\n  }\n\n  // Parse Script\n  let scriptContent;\n  if (componentString.indexOf('<script>') >= 0) {\n    const scripts = componentString.split('<script>');\n    scriptContent = scripts[scripts.length - 1].split('</script>')[0].trim();\n  } else {\n    scriptContent = 'return () => {return $render}';\n  }\n  if (!scriptContent || !scriptContent.trim()) scriptContent = 'return () => {return $render}';\n\n  // Parse Template\n  if (template) {\n    scriptContent = scriptContent\n      .replace(\n        '$render',\n        `function ($$ctx) {\n          var $ = $$ctx.$$;\n          var $h = $$ctx.$h;\n          var $root = $$ctx.$root;\n          var $f7 = $$ctx.$f7;\n          var $f7route = $$ctx.$f7route;\n          var $f7router = $$ctx.$f7router;\n          var $theme = $$ctx.$theme;\n          var $update = $$ctx.$update;\n          var $store = $$ctx.$store;\n          var $ref = $$ctx.$ref;\n          var $useState = $$ctx.$useState;\n\n          return $h\\`${template}\\`\n        }\n        `,\n      )\n      .replace(/export default/g, 'return');\n  }\n\n  // Execute Script\n  scriptContent = `window.${callbackCreateName} = function () {${scriptContent}}`;\n\n  // Insert Script El\n  const scriptEl = document.createElement('script');\n  scriptEl.innerHTML = scriptContent;\n  $('head').append(scriptEl);\n\n  const component = window[callbackCreateName]();\n\n  // Remove Script El\n  $(scriptEl).remove();\n  window[callbackCreateName] = null;\n  delete window[callbackCreateName];\n\n  // Assign Style\n  if (style) {\n    component.style = style;\n  }\n\n  // Component ID\n  component.id = componentId;\n  return component;\n}\n\nexport default parseComponent;\n","import Component from './component-class.js';\nimport parseComponent from './parse-component.js';\nimport customComponents from './custom-components.js';\nimport $jsx from './$jsx.js';\n\nfunction registerComponent(tagName, component) {\n  customComponents[tagName] = component;\n}\n\nfunction unregisterComponent(tagName) {\n  delete customComponents[tagName];\n}\n\nexport { Component, $jsx };\nexport default {\n  name: 'component',\n  static: {\n    Component,\n    parseComponent,\n    registerComponent,\n    unregisterComponent,\n  },\n  create() {\n    const app = this;\n    app.component = {\n      registerComponent,\n      unregisterComponent,\n      parse(componentString) {\n        return parseComponent(componentString);\n      },\n      create(component, props, { root, el, context, children }) {\n        return new Component(app, component, props, { root, el, context, children });\n      },\n    };\n  },\n};\n","import History from '../../shared/history.js';\n\nexport default {\n  name: 'history',\n  static: {\n    history: History,\n  },\n  on: {\n    init() {\n      History.init(this);\n    },\n  },\n};\n","import { getWindow } from 'ssr-window';\nimport { extend } from '../../shared/utils.js';\n\nconst SW = {\n  registrations: [],\n  register(path, scope) {\n    const app = this;\n    const window = getWindow();\n\n    if (!('serviceWorker' in window.navigator) || !app.serviceWorker.container) {\n      return new Promise((resolve, reject) => {\n        reject(new Error('Service worker is not supported'));\n      });\n    }\n    return new Promise((resolve, reject) => {\n      app.serviceWorker.container\n        .register(path, scope ? { scope } : {})\n        .then((reg) => {\n          SW.registrations.push(reg);\n          app.emit('serviceWorkerRegisterSuccess', reg);\n          resolve(reg);\n        })\n        .catch((error) => {\n          app.emit('serviceWorkerRegisterError', error);\n          reject(error);\n        });\n    });\n  },\n  unregister(registration) {\n    const app = this;\n    const window = getWindow();\n    if (!('serviceWorker' in window.navigator) || !app.serviceWorker.container) {\n      return new Promise((resolve, reject) => {\n        reject(new Error('Service worker is not supported'));\n      });\n    }\n    let registrations;\n    if (!registration) registrations = SW.registrations;\n    else if (Array.isArray(registration)) registrations = registration;\n    else registrations = [registration];\n    return Promise.all(\n      registrations.map(\n        (reg) =>\n          new Promise((resolve, reject) => {\n            reg\n              .unregister()\n              .then(() => {\n                if (SW.registrations.indexOf(reg) >= 0) {\n                  SW.registrations.splice(SW.registrations.indexOf(reg), 1);\n                }\n                app.emit('serviceWorkerUnregisterSuccess', reg);\n                resolve();\n              })\n              .catch((error) => {\n                app.emit('serviceWorkerUnregisterError', reg, error);\n                reject(error);\n              });\n          }),\n      ),\n    );\n  },\n};\n\nexport default {\n  name: 'sw',\n  params: {\n    serviceWorker: {\n      path: undefined,\n      scope: undefined,\n    },\n  },\n  create() {\n    const app = this;\n    const window = getWindow();\n    extend(app, {\n      serviceWorker: {\n        container: 'serviceWorker' in window.navigator ? window.navigator.serviceWorker : undefined,\n        registrations: SW.registrations,\n        register: SW.register.bind(app),\n        unregister: SW.unregister.bind(app),\n      },\n    });\n  },\n  on: {\n    init() {\n      const window = getWindow();\n      if (!('serviceWorker' in window.navigator)) return;\n      const app = this;\n      if (app.device.cordova || (window.Capacitor && window.Capacitor.isNative)) return;\n      if (!app.serviceWorker.container) return;\n      const paths = app.params.serviceWorker.path;\n      const scope = app.params.serviceWorker.scope;\n      if (!paths || (Array.isArray(paths) && !paths.length)) return;\n      const toRegister = Array.isArray(paths) ? paths : [paths];\n      toRegister.forEach((path) => {\n        app.serviceWorker.register(path, scope);\n      });\n    },\n  },\n};\n","/* eslint-disable no-underscore-dangle */\nimport { extend } from '../../shared/utils.js';\n\nfunction createStore(storeParams = {}) {\n  const store = {\n    __store: true,\n  };\n  const originalState = { ...(storeParams.state || {}) };\n  const actions = { ...(storeParams.actions || {}) };\n  const getters = { ...(storeParams.getters || {}) };\n  const state = extend({}, originalState);\n\n  let propsQueue = [];\n  const gettersDependencies = {};\n  const gettersCallbacks = {};\n\n  Object.keys(getters).forEach((getterKey) => {\n    gettersDependencies[getterKey] = [];\n    gettersCallbacks[getterKey] = [];\n  });\n\n  const getGetterValue = (getterKey) => {\n    return getters[getterKey]({ state: store.state });\n  };\n\n  const addGetterDependencies = (getterKey, deps) => {\n    if (!gettersDependencies[getterKey]) gettersDependencies[getterKey] = [];\n    deps.forEach((dep) => {\n      if (gettersDependencies[getterKey].indexOf(dep) < 0) {\n        gettersDependencies[getterKey].push(dep);\n      }\n    });\n  };\n\n  const addGetterCallback = (getterKey, callback) => {\n    if (!gettersCallbacks[getterKey]) gettersCallbacks[getterKey] = [];\n    gettersCallbacks[getterKey].push(callback);\n  };\n\n  const runGetterCallbacks = (stateKey) => {\n    const keys = Object.keys(gettersDependencies).filter((getterKey) => {\n      return gettersDependencies[getterKey].indexOf(stateKey) >= 0;\n    });\n    keys.forEach((getterKey) => {\n      if (!gettersCallbacks[getterKey] || !gettersCallbacks[getterKey].length) return;\n      gettersCallbacks[getterKey].forEach((callback) => {\n        callback(getGetterValue(getterKey));\n      });\n    });\n  };\n\n  const removeGetterCallback = (callback) => {\n    Object.keys(gettersCallbacks).forEach((stateKey) => {\n      const callbacks = gettersCallbacks[stateKey];\n\n      if (callbacks.indexOf(callback) >= 0) {\n        callbacks.splice(callbacks.indexOf(callback), 1);\n      }\n    });\n  };\n\n  // eslint-disable-next-line\n  store.__removeCallback = (callback) => {\n    removeGetterCallback(callback);\n  };\n\n  const getterValue = (getterKey, addCallback = true) => {\n    if (getterKey === 'constructor') return undefined;\n    propsQueue = [];\n    const value = getGetterValue(getterKey);\n    addGetterDependencies(getterKey, propsQueue);\n    const onUpdated = (callback) => {\n      addGetterCallback(getterKey, callback);\n    };\n\n    const obj = {\n      value,\n      onUpdated,\n    };\n\n    if (!addCallback) {\n      return obj;\n    }\n\n    const callback = (v) => {\n      obj.value = v;\n    };\n\n    obj.__callback = callback;\n    addGetterCallback(getterKey, callback);\n    // eslint-disable-next-line\n    return obj;\n  };\n\n  store.state = new Proxy(state, {\n    set: (target, prop, value) => {\n      target[prop] = value;\n      runGetterCallbacks(prop);\n      return true;\n    },\n    get: (target, prop) => {\n      propsQueue.push(prop);\n      return target[prop];\n    },\n  });\n\n  store.getters = new Proxy(getters, {\n    set: () => false,\n    get: (target, prop) => {\n      if (!target[prop]) {\n        return undefined;\n      }\n      return getterValue(prop, true);\n    },\n  });\n\n  store._gettersPlain = new Proxy(getters, {\n    set: () => false,\n    get: (target, prop) => {\n      if (!target[prop]) {\n        return undefined;\n      }\n      return getterValue(prop, false);\n    },\n  });\n\n  store.dispatch = (actionName, data) => {\n    return new Promise((resolve, reject) => {\n      if (!actions[actionName]) {\n        reject();\n        throw new Error(`Framework7: Store action \"${actionName}\" is not found`);\n      }\n      const result = actions[actionName]({ state: store.state, dispatch: store.dispatch }, data);\n      resolve(result);\n    });\n  };\n\n  return store;\n}\n\nexport default createStore;\n","import createStore from './create-store.js';\n\nexport { createStore };\nexport default {\n  name: 'store',\n  static: { createStore },\n  proto: { createStore },\n};\n","import { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { bindMethods } from '../../shared/utils.js';\nimport { getDevice } from '../../shared/get-device.js';\n\nconst isCapacitor = () => {\n  const window = getWindow();\n  return (\n    window.Capacitor &&\n    window.Capacitor.isNative &&\n    window.Capacitor.Plugins &&\n    window.Capacitor.Plugins.StatusBar\n  );\n};\n\nconst Statusbar = {\n  hide() {\n    const window = getWindow();\n    const device = getDevice();\n    if (device.cordova && window.StatusBar) {\n      window.StatusBar.hide();\n    }\n    if (isCapacitor()) {\n      window.Capacitor.Plugins.StatusBar.hide();\n    }\n  },\n  show() {\n    const window = getWindow();\n    const device = getDevice();\n    if (device.cordova && window.StatusBar) {\n      window.StatusBar.show();\n    }\n    if (isCapacitor()) {\n      window.Capacitor.Plugins.StatusBar.show();\n    }\n  },\n  onClick() {\n    const app = this;\n    let pageContent;\n    if ($('.popup.modal-in').length > 0) {\n      // Check for opened popup\n      pageContent = $('.popup.modal-in')\n        .find('.page:not(.page-previous):not(.page-next):not(.cached)')\n        .find('.page-content');\n    } else if ($('.panel.panel-in').length > 0) {\n      // Check for opened panel\n      pageContent = $('.panel.panel-in')\n        .find('.page:not(.page-previous):not(.page-next):not(.cached)')\n        .find('.page-content');\n    } else if ($('.views > .view.tab-active').length > 0) {\n      // View in tab bar app layout\n      pageContent = $('.views > .view.tab-active')\n        .find('.page:not(.page-previous):not(.page-next):not(.cached)')\n        .find('.page-content');\n    } else if ($('.views').length > 0) {\n      pageContent = $('.views')\n        .find('.page:not(.page-previous):not(.page-next):not(.cached)')\n        .find('.page-content');\n    } else {\n      pageContent = app.$el\n        .children('.view')\n        .find('.page:not(.page-previous):not(.page-next):not(.cached)')\n        .find('.page-content');\n    }\n\n    if (pageContent && pageContent.length > 0) {\n      // Check for tab\n      if (pageContent.hasClass('tab')) {\n        pageContent = pageContent.parent('.tabs').children('.page-content.tab-active');\n      }\n      if (pageContent.length > 0) pageContent.scrollTop(0, 300);\n    }\n  },\n  setTextColor(color) {\n    const window = getWindow();\n    const device = getDevice();\n    if (device.cordova && window.StatusBar) {\n      if (color === 'white') {\n        window.StatusBar.styleLightContent();\n      } else {\n        window.StatusBar.styleDefault();\n      }\n    }\n    if (isCapacitor()) {\n      if (color === 'white') {\n        window.Capacitor.Plugins.StatusBar.setStyle({ style: 'DARK' });\n      } else {\n        window.Capacitor.Plugins.StatusBar.setStyle({ style: 'LIGHT' });\n      }\n    }\n  },\n  setBackgroundColor(color) {\n    const window = getWindow();\n    const device = getDevice();\n    if (device.cordova && window.StatusBar) {\n      window.StatusBar.backgroundColorByHexString(color);\n    }\n    if (isCapacitor()) {\n      window.Capacitor.Plugins.StatusBar.setBackgroundColor({ color });\n    }\n  },\n  isVisible() {\n    const window = getWindow();\n    const device = getDevice();\n    return new Promise((resolve) => {\n      if (device.cordova && window.StatusBar) {\n        resolve(window.StatusBar.isVisible);\n      }\n      if (isCapacitor()) {\n        window.Capacitor.Plugins.StatusBar.getInfo().then((info) => {\n          resolve(info.visible);\n        });\n      }\n      resolve(false);\n    });\n  },\n  overlaysWebView(overlays = true) {\n    const window = getWindow();\n    const device = getDevice();\n    if (device.cordova && window.StatusBar) {\n      window.StatusBar.overlaysWebView(overlays);\n    }\n    if (isCapacitor()) {\n      window.Capacitor.Plugins.StatusBar.setOverlaysWebView({ overlay: overlays });\n    }\n  },\n  init() {\n    const app = this;\n    const window = getWindow();\n    const device = getDevice();\n    const params = app.params.statusbar;\n    if (!params.enabled) return;\n    const isCordova = device.cordova && window.StatusBar;\n    const isCap = isCapacitor();\n\n    if (isCordova || isCap) {\n      if (params.scrollTopOnClick) {\n        $(window).on('statusTap', Statusbar.onClick.bind(app));\n      }\n      if (device.ios) {\n        if (params.iosOverlaysWebView) {\n          Statusbar.overlaysWebView(true);\n        } else {\n          Statusbar.overlaysWebView(false);\n        }\n        if (params.iosTextColor === 'white') {\n          Statusbar.setTextColor('white');\n        } else {\n          Statusbar.setTextColor('black');\n        }\n      }\n      if (device.android) {\n        if (params.androidOverlaysWebView) {\n          Statusbar.overlaysWebView(true);\n        } else {\n          Statusbar.overlaysWebView(false);\n        }\n        if (params.androidTextColor === 'white') {\n          Statusbar.setTextColor('white');\n        } else {\n          Statusbar.setTextColor('black');\n        }\n      }\n    }\n    if (params.iosBackgroundColor && device.ios) {\n      Statusbar.setBackgroundColor(params.iosBackgroundColor);\n    }\n    if (params.androidBackgroundColor && device.android) {\n      Statusbar.setBackgroundColor(params.androidBackgroundColor);\n    }\n  },\n};\n\nexport default {\n  name: 'statusbar',\n  params: {\n    statusbar: {\n      enabled: true,\n\n      scrollTopOnClick: true,\n\n      iosOverlaysWebView: true,\n      iosTextColor: 'black',\n      iosBackgroundColor: null,\n\n      androidOverlaysWebView: false,\n      androidTextColor: 'black',\n      androidBackgroundColor: null,\n    },\n  },\n  create() {\n    const app = this;\n    bindMethods(app, {\n      statusbar: Statusbar,\n    });\n  },\n  on: {\n    init() {\n      const app = this;\n      Statusbar.init.call(app);\n    },\n  },\n};\n","import $ from '../../shared/dom7.js';\nimport { extend } from '../../shared/utils.js';\nimport View from './view-class.js';\n\nfunction getCurrentView(app) {\n  const $popoverView = $('.popover.modal-in .view');\n  const $popupView = $('.popup.modal-in .view');\n  const $panelView = $('.panel.panel-in .view');\n  let $viewsEl = $('.views');\n  if ($viewsEl.length === 0) $viewsEl = app.$el;\n  // Find active view as tab\n  let $viewEl = $viewsEl.children('.view');\n  if ($viewEl.length === 0) {\n    $viewEl = $viewsEl.children('.tabs').children('.view');\n  }\n  // Propably in tabs or split view\n  if ($viewEl.length > 1) {\n    if ($viewEl.hasClass('tab')) {\n      // Tabs\n      $viewEl = $viewsEl.children('.view.tab-active');\n      if ($viewEl.length === 0) {\n        $viewEl = $viewsEl.children('.tabs').children('.view.tab-active');\n      }\n    } else {\n      // Split View, leave appView intact\n    }\n  }\n  if ($popoverView.length > 0 && $popoverView[0].f7View) return $popoverView[0].f7View;\n  if ($popupView.length > 0 && $popupView[0].f7View) return $popupView[0].f7View;\n  if ($panelView.length > 0 && $panelView[0].f7View) return $panelView[0].f7View;\n  if ($viewEl.length > 0) {\n    if ($viewEl.length === 1 && $viewEl[0].f7View) return $viewEl[0].f7View;\n    if ($viewEl.length > 1) {\n      return app.views.main;\n    }\n  }\n  return undefined;\n}\n\nexport default {\n  name: 'view',\n  params: {\n    view: {\n      init: true,\n      initRouterOnTabShow: false,\n      name: undefined,\n      main: false,\n      router: true,\n      linksView: null,\n      xhrCache: true,\n      xhrCacheIgnore: [],\n      xhrCacheIgnoreGetParameters: false,\n      xhrCacheDuration: 1000 * 60 * 10, // Ten minutes\n      componentCache: true,\n      preloadPreviousPage: true,\n      allowDuplicateUrls: false,\n      reloadPages: false,\n      reloadDetail: false,\n      masterDetailBreakpoint: 0,\n      masterDetailResizable: false,\n      removeElements: true,\n      removeElementsWithTimeout: false,\n      removeElementsTimeout: 0,\n      restoreScrollTopOnBack: true,\n      unloadTabContent: true,\n      passRouteQueryToRequest: true,\n      passRouteParamsToRequest: false,\n      loadInitialPage: true,\n      // Swipe Back\n      iosSwipeBack: true,\n      iosSwipeBackAnimateShadow: true,\n      iosSwipeBackAnimateOpacity: true,\n      iosSwipeBackActiveArea: 30,\n      iosSwipeBackThreshold: 0,\n      mdSwipeBack: false,\n      mdSwipeBackAnimateShadow: true,\n      mdSwipeBackAnimateOpacity: false,\n      mdSwipeBackActiveArea: 30,\n      mdSwipeBackThreshold: 0,\n      // Push State\n      browserHistory: false,\n      browserHistoryRoot: undefined,\n      browserHistoryAnimate: true,\n      browserHistoryAnimateOnLoad: false,\n      browserHistorySeparator: '#!',\n      browserHistoryOnLoad: true,\n      browserHistoryInitialMatch: false,\n      browserHistoryStoreHistory: true,\n      browserHistoryTabs: 'replace',\n      // Animate Pages\n      animate: true,\n      // iOS Dynamic Navbar\n      iosDynamicNavbar: true,\n      // Animate iOS Navbar Back Icon\n      iosAnimateNavbarBackIcon: true,\n      // Delays\n      iosPageLoadDelay: 0,\n      mdPageLoadDelay: 0,\n      // Routes hooks\n      routesBeforeEnter: null,\n      routesBeforeLeave: null,\n    },\n  },\n  static: {\n    View,\n  },\n  create() {\n    const app = this;\n    extend(app, {\n      views: extend([], {\n        create(el, params) {\n          return new View(app, el, params);\n        },\n        get(viewEl) {\n          const $viewEl = $(viewEl);\n          if ($viewEl.length && $viewEl[0].f7View) return $viewEl[0].f7View;\n          return undefined;\n        },\n      }),\n    });\n    Object.defineProperty(app.views, 'current', {\n      enumerable: true,\n      configurable: true,\n      get() {\n        return getCurrentView(app);\n      },\n    });\n    // Alias\n    app.view = app.views;\n  },\n  on: {\n    init() {\n      const app = this;\n      $('.view-init').each((viewEl) => {\n        if (viewEl.f7View) return;\n        const viewParams = $(viewEl).dataset();\n        app.views.create(viewEl, viewParams);\n      });\n    },\n    'modalOpen panelOpen': function onOpen(instance) {\n      const app = this;\n      instance.$el.find('.view-init').each((viewEl) => {\n        if (viewEl.f7View) return;\n        const viewParams = $(viewEl).dataset();\n        app.views.create(viewEl, viewParams);\n      });\n    },\n    'modalBeforeDestroy panelBeforeDestroy': function onClose(instance) {\n      if (!instance || !instance.$el) return;\n      instance.$el.find('.view-init').each((viewEl) => {\n        const view = viewEl.f7View;\n        if (!view) return;\n        view.destroy();\n      });\n    },\n  },\n  vnode: {\n    'view-init': {\n      insert(vnode) {\n        const app = this;\n        const viewEl = vnode.elm;\n        if (viewEl.f7View) return;\n        const viewParams = $(viewEl).dataset();\n        app.views.create(viewEl, viewParams);\n      },\n      destroy(vnode) {\n        const viewEl = vnode.elm;\n        const view = viewEl.f7View;\n        if (!view) return;\n        view.destroy();\n      },\n    },\n  },\n};\n","import $ from '../../shared/dom7.js';\nimport { bindMethods } from '../../shared/utils.js';\nimport { getSupport } from '../../shared/get-support.js';\n\nconst Navbar = {\n  size(el) {\n    const app = this;\n\n    let $el = $(el);\n\n    if ($el.hasClass('navbars')) {\n      $el = $el.children('.navbar').each((navbarEl) => {\n        app.navbar.size(navbarEl);\n      });\n      return;\n    }\n\n    const $innerEl = $el.children('.navbar-inner');\n    if (!$innerEl.length) return;\n\n    const needCenterTitle =\n      $innerEl.hasClass('navbar-inner-centered-title') ||\n      app.params.navbar[`${app.theme}CenterTitle`];\n    const needLeftTitle = app.theme === 'ios' && !app.params.navbar[`${app.theme}CenterTitle`];\n\n    if (!needCenterTitle && !needLeftTitle) return;\n\n    if (\n      $el.parents('.tab:not(.tab-active)').length > 0 ||\n      $el.parents('.popup:not(.modal-in)').length > 0\n    ) {\n      return;\n    }\n\n    if (app.theme !== 'ios' && app.params.navbar[`${app.theme}CenterTitle`]) {\n      $innerEl.addClass('navbar-inner-centered-title');\n    }\n    if (app.theme === 'ios' && !app.params.navbar.iosCenterTitle) {\n      $innerEl.addClass('navbar-inner-left-title');\n    }\n\n    const $viewEl = $el.parents('.view').eq(0);\n    const left = app.rtl ? $innerEl.children('.right') : $innerEl.children('.left');\n    const right = app.rtl ? $innerEl.children('.left') : $innerEl.children('.right');\n    const title = $innerEl.children('.title');\n    const subnavbar = $innerEl.children('.subnavbar');\n    const noLeft = left.length === 0;\n    const noRight = right.length === 0;\n    const leftWidth = noLeft ? 0 : left.outerWidth(true);\n    const rightWidth = noRight ? 0 : right.outerWidth(true);\n    const titleWidth = title.outerWidth(true);\n    const navbarStyles = $innerEl.styles();\n    const navbarWidth = $innerEl[0].offsetWidth;\n    const navbarInnerWidth =\n      navbarWidth -\n      parseInt(navbarStyles.paddingLeft, 10) -\n      parseInt(navbarStyles.paddingRight, 10);\n    const isPrevious = $el.hasClass('navbar-previous');\n    const sliding = $innerEl.hasClass('sliding');\n\n    let router;\n    let dynamicNavbar;\n\n    if ($viewEl.length > 0 && $viewEl[0].f7View) {\n      router = $viewEl[0].f7View.router;\n      dynamicNavbar = router && router.dynamicNavbar;\n    }\n\n    let currLeft;\n    let diff;\n    if (noRight) {\n      currLeft = navbarInnerWidth - titleWidth;\n    }\n    if (noLeft) {\n      currLeft = 0;\n    }\n    if (!noLeft && !noRight) {\n      currLeft = (navbarInnerWidth - rightWidth - titleWidth + leftWidth) / 2;\n    }\n    let requiredLeft = (navbarInnerWidth - titleWidth) / 2;\n    if (navbarInnerWidth - leftWidth - rightWidth > titleWidth) {\n      if (requiredLeft < leftWidth) {\n        requiredLeft = leftWidth;\n      }\n      if (requiredLeft + titleWidth > navbarInnerWidth - rightWidth) {\n        requiredLeft = navbarInnerWidth - rightWidth - titleWidth;\n      }\n      diff = requiredLeft - currLeft;\n    } else {\n      diff = 0;\n    }\n\n    // RTL inverter\n    const inverter = app.rtl ? -1 : 1;\n\n    if (dynamicNavbar && app.theme === 'ios') {\n      if (title.hasClass('sliding') || (title.length > 0 && sliding)) {\n        let titleLeftOffset = -(currLeft + diff) * inverter;\n        const titleRightOffset = (navbarInnerWidth - currLeft - diff - titleWidth) * inverter;\n\n        if (isPrevious) {\n          if (router && router.params.iosAnimateNavbarBackIcon) {\n            const activeNavbarBackLink = $el\n              .parent()\n              .find('.navbar-current')\n              .children('.left.sliding')\n              .find('.back .icon ~ span');\n            if (activeNavbarBackLink.length > 0) {\n              titleLeftOffset += activeNavbarBackLink[0].offsetLeft;\n            }\n          }\n        }\n        title[0].f7NavbarLeftOffset = titleLeftOffset;\n        title[0].f7NavbarRightOffset = titleRightOffset;\n      }\n      if (!noLeft && (left.hasClass('sliding') || sliding)) {\n        if (app.rtl) {\n          left[0].f7NavbarLeftOffset = (-(navbarInnerWidth - left[0].offsetWidth) / 2) * inverter;\n          left[0].f7NavbarRightOffset = leftWidth * inverter;\n        } else {\n          left[0].f7NavbarLeftOffset = -leftWidth;\n          left[0].f7NavbarRightOffset = (navbarInnerWidth - left[0].offsetWidth) / 2;\n          if (\n            router &&\n            router.params.iosAnimateNavbarBackIcon &&\n            left.find('.back .icon').length > 0\n          ) {\n            if (left.find('.back .icon ~ span').length) {\n              const leftOffset = left[0].f7NavbarLeftOffset;\n              const rightOffset = left[0].f7NavbarRightOffset;\n              left[0].f7NavbarLeftOffset = 0;\n              left[0].f7NavbarRightOffset = 0;\n              left.find('.back .icon ~ span')[0].f7NavbarLeftOffset = leftOffset;\n              left.find('.back .icon ~ span')[0].f7NavbarRightOffset =\n                rightOffset - left.find('.back .icon')[0].offsetWidth;\n            }\n          }\n        }\n      }\n      if (!noRight && (right.hasClass('sliding') || sliding)) {\n        if (app.rtl) {\n          right[0].f7NavbarLeftOffset = -rightWidth * inverter;\n          right[0].f7NavbarRightOffset = ((navbarInnerWidth - right[0].offsetWidth) / 2) * inverter;\n        } else {\n          right[0].f7NavbarLeftOffset = -(navbarInnerWidth - right[0].offsetWidth) / 2;\n          right[0].f7NavbarRightOffset = rightWidth;\n        }\n      }\n      if (subnavbar.length && (subnavbar.hasClass('sliding') || sliding)) {\n        subnavbar[0].f7NavbarLeftOffset = app.rtl\n          ? subnavbar[0].offsetWidth\n          : -subnavbar[0].offsetWidth;\n        subnavbar[0].f7NavbarRightOffset = -subnavbar[0].f7NavbarLeftOffset;\n      }\n    }\n\n    // Center title\n    if (needCenterTitle) {\n      let titleLeft = diff;\n      if (app.rtl && noLeft && noRight && title.length > 0) titleLeft = -titleLeft;\n      title.css({ left: `${titleLeft}px` });\n    }\n  },\n  hide(el, animate = true, hideStatusbar = false, hideOnlyCurrent = false) {\n    const app = this;\n    let $el = $(el);\n    const isDynamic = $el.hasClass('navbar') && $el.parent('.navbars').length && !hideOnlyCurrent;\n    if (isDynamic) $el = $el.parents('.navbars');\n    if (!$el.length) return;\n    if ($el.hasClass('navbar-hidden')) return;\n    let className = `navbar-hidden${animate ? ' navbar-transitioning' : ''}`;\n    const currentIsLarge = isDynamic\n      ? $el.find('.navbar-current .title-large').length\n      : $el.find('.title-large').length;\n    if (currentIsLarge) {\n      className += ' navbar-large-hidden';\n    }\n    if (hideStatusbar) {\n      className += ' navbar-hidden-statusbar';\n    }\n    $el.transitionEnd(() => {\n      $el.removeClass('navbar-transitioning');\n    });\n    $el.addClass(className);\n    if (isDynamic) {\n      $el.children('.navbar').each((subEl) => {\n        $(subEl).trigger('navbar:hide');\n        app.emit('navbarHide', subEl);\n      });\n    } else {\n      $el.trigger('navbar:hide');\n      app.emit('navbarHide', $el[0]);\n    }\n  },\n  show(el = '.navbar-hidden', animate = true, hideOnlyCurrent = false) {\n    const app = this;\n    let $el = $(el);\n    const isDynamic = $el.hasClass('navbar') && $el.parent('.navbars').length && !hideOnlyCurrent;\n    if (isDynamic) $el = $el.parents('.navbars');\n    if (!$el.length) return;\n    if (!$el.hasClass('navbar-hidden')) return;\n    if (animate) {\n      $el.addClass('navbar-transitioning');\n      $el.transitionEnd(() => {\n        $el.removeClass('navbar-transitioning');\n      });\n    }\n    $el.removeClass('navbar-hidden navbar-large-hidden navbar-hidden-statusbar');\n    if (isDynamic) {\n      $el.children('.navbar').each((subEl) => {\n        $(subEl).trigger('navbar:show');\n        app.emit('navbarShow', subEl);\n      });\n    } else {\n      $el.trigger('navbar:show');\n      app.emit('navbarShow', $el[0]);\n    }\n  },\n  getElByPage(page) {\n    let $pageEl;\n    let $navbarEl;\n    let pageData;\n    if (page.$navbarEl || page.$el) {\n      pageData = page;\n      $pageEl = page.$el;\n    } else {\n      $pageEl = $(page);\n      if ($pageEl.length > 0) pageData = $pageEl[0].f7Page;\n    }\n    if (pageData && pageData.$navbarEl && pageData.$navbarEl.length > 0) {\n      $navbarEl = pageData.$navbarEl;\n    } else if ($pageEl) {\n      $navbarEl = $pageEl.children('.navbar');\n    }\n    if (!$navbarEl || ($navbarEl && $navbarEl.length === 0)) return undefined;\n    return $navbarEl[0];\n  },\n  getPageByEl(navbarEl) {\n    const $navbarEl = $(navbarEl);\n    if ($navbarEl.parents('.page').length) {\n      return $navbarEl.parents('.page')[0];\n    }\n    let pageEl;\n    $navbarEl\n      .parents('.view')\n      .find('.page')\n      .each((el) => {\n        if (el && el.f7Page && el.f7Page.navbarEl && $navbarEl[0] === el.f7Page.navbarEl) {\n          pageEl = el;\n        }\n      });\n    return pageEl;\n  },\n\n  collapseLargeTitle(navbarEl) {\n    const app = this;\n    let $navbarEl = $(navbarEl);\n    if ($navbarEl.hasClass('navbars')) {\n      $navbarEl = $navbarEl.find('.navbar');\n      if ($navbarEl.length > 1) {\n        $navbarEl = $(navbarEl).find('.navbar-large.navbar-current');\n      }\n      if ($navbarEl.length > 1 || !$navbarEl.length) {\n        return;\n      }\n    }\n    const $pageEl = $(app.navbar.getPageByEl($navbarEl));\n    $navbarEl.addClass('navbar-large-collapsed');\n    $pageEl.eq(0).addClass('page-with-navbar-large-collapsed').trigger('page:navbarlargecollapsed');\n    app.emit('pageNavbarLargeCollapsed', $pageEl[0]);\n    $navbarEl.trigger('navbar:collapse');\n    app.emit('navbarCollapse', $navbarEl[0]);\n  },\n  expandLargeTitle(navbarEl) {\n    const app = this;\n    let $navbarEl = $(navbarEl);\n    if ($navbarEl.hasClass('navbars')) {\n      $navbarEl = $navbarEl.find('.navbar-large');\n      if ($navbarEl.length > 1) {\n        $navbarEl = $(navbarEl).find('.navbar-large.navbar-current');\n      }\n      if ($navbarEl.length > 1 || !$navbarEl.length) {\n        return;\n      }\n    }\n    const $pageEl = $(app.navbar.getPageByEl($navbarEl));\n    $navbarEl.removeClass('navbar-large-collapsed');\n    $pageEl\n      .eq(0)\n      .removeClass('page-with-navbar-large-collapsed')\n      .trigger('page:navbarlargeexpanded');\n    app.emit('pageNavbarLargeExpanded', $pageEl[0]);\n    $navbarEl.trigger('navbar:expand');\n    app.emit('navbarExpand', $navbarEl[0]);\n  },\n  toggleLargeTitle(navbarEl) {\n    const app = this;\n    let $navbarEl = $(navbarEl);\n    if ($navbarEl.hasClass('navbars')) {\n      $navbarEl = $navbarEl.find('.navbar-large');\n      if ($navbarEl.length > 1) {\n        $navbarEl = $(navbarEl).find('.navbar-large.navbar-current');\n      }\n      if ($navbarEl.length > 1 || !$navbarEl.length) {\n        return;\n      }\n    }\n    if ($navbarEl.hasClass('navbar-large-collapsed')) {\n      app.navbar.expandLargeTitle($navbarEl);\n    } else {\n      app.navbar.collapseLargeTitle($navbarEl);\n    }\n  },\n  initNavbarOnScroll(pageEl, navbarEl, needHide, needCollapse, needTransparent) {\n    const app = this;\n    const support = getSupport();\n    const $pageEl = $(pageEl);\n    const $navbarEl = $(navbarEl);\n    const $titleLargeEl = $navbarEl.find('.title-large');\n    const isLarge = $titleLargeEl.length || $navbarEl.hasClass('.navbar-large');\n    let navbarHideHeight = 44;\n    const snapPageScrollToLargeTitle = app.params.navbar.snapPageScrollToLargeTitle;\n    const snapPageScrollToTransparentNavbar = app.params.navbar.snapPageScrollToTransparentNavbar;\n\n    let previousScrollTop;\n    let currentScrollTop;\n\n    let scrollHeight;\n    let offsetHeight;\n    let reachEnd;\n    let action;\n    let navbarHidden;\n\n    let navbarCollapsed;\n    let navbarTitleLargeHeight;\n\n    let navbarOffsetHeight;\n\n    if (needCollapse || (needHide && isLarge)) {\n      navbarTitleLargeHeight = $navbarEl.css('--f7-navbar-large-title-height');\n\n      if (navbarTitleLargeHeight && navbarTitleLargeHeight.indexOf('px') >= 0) {\n        navbarTitleLargeHeight = parseInt(navbarTitleLargeHeight, 10);\n        if (Number.isNaN(navbarTitleLargeHeight) && $titleLargeEl.length) {\n          navbarTitleLargeHeight = $titleLargeEl[0].offsetHeight;\n        } else if (Number.isNaN(navbarTitleLargeHeight)) {\n          if (app.theme === 'ios') navbarTitleLargeHeight = 52;\n          else if (app.theme === 'md') navbarTitleLargeHeight = 88;\n        }\n      } else if ($titleLargeEl.length) {\n        navbarTitleLargeHeight = $titleLargeEl[0].offsetHeight;\n      } else {\n        // eslint-disable-next-line\n        if (app.theme === 'ios') navbarTitleLargeHeight = 52;\n        else if (app.theme === 'md') navbarTitleLargeHeight = 88;\n      }\n    }\n\n    if (needHide && isLarge) {\n      navbarHideHeight += navbarTitleLargeHeight;\n    }\n\n    let scrollChanged;\n    let scrollContent;\n    let scrollTimeoutId;\n    let touchEndTimeoutId;\n    const touchSnapTimeout = 70;\n    const desktopSnapTimeout = 300;\n\n    function calcScrollableDistance() {\n      $pageEl.find('.page-content').each((pageContentEl) => {\n        pageContentEl.f7ScrollableDistance =\n          pageContentEl.scrollHeight - pageContentEl.offsetHeight;\n      });\n    }\n\n    function snapLargeNavbar() {\n      const inSearchbarExpanded = $navbarEl.hasClass('with-searchbar-expandable-enabled');\n      if (inSearchbarExpanded) return;\n      if (!scrollContent || currentScrollTop < 0) return;\n      if (\n        currentScrollTop >= navbarTitleLargeHeight / 2 &&\n        currentScrollTop < navbarTitleLargeHeight\n      ) {\n        $(scrollContent).scrollTop(navbarTitleLargeHeight, 100);\n      } else if (currentScrollTop < navbarTitleLargeHeight) {\n        $(scrollContent).scrollTop(0, 200);\n      }\n    }\n\n    function snapTransparentNavbar() {\n      const inSearchbarExpanded = $navbarEl.hasClass('with-searchbar-expandable-enabled');\n      if (inSearchbarExpanded) return;\n      if (!scrollContent || currentScrollTop < 0) return;\n      if (currentScrollTop >= navbarOffsetHeight / 2 && currentScrollTop < navbarOffsetHeight) {\n        $(scrollContent).scrollTop(navbarOffsetHeight, 100);\n      } else if (currentScrollTop < navbarOffsetHeight) {\n        $(scrollContent).scrollTop(0, 200);\n      }\n    }\n\n    function handleNavbarTransparent() {\n      const isHidden =\n        $navbarEl.hasClass('navbar-hidden') ||\n        $navbarEl.parent('.navbars').hasClass('navbar-hidden');\n      const inSearchbarExpanded = $navbarEl.hasClass('with-searchbar-expandable-enabled');\n      if (inSearchbarExpanded || isHidden) return;\n      if (!navbarOffsetHeight) {\n        navbarOffsetHeight = navbarEl.offsetHeight;\n      }\n      let opacity = currentScrollTop / navbarOffsetHeight;\n      const notTransparent = $navbarEl.hasClass('navbar-transparent-visible');\n      opacity = Math.max(Math.min(opacity, 1), 0);\n\n      if ((notTransparent && opacity === 1) || (!notTransparent && opacity === 0)) {\n        $navbarEl.find('.navbar-bg, .title').css('opacity', '');\n        return;\n      }\n      if (notTransparent && opacity === 0) {\n        $navbarEl.trigger('navbar:transparenthide');\n        app.emit('navbarTransparentHide', $navbarEl[0]);\n        $navbarEl.removeClass('navbar-transparent-visible');\n        $navbarEl.find('.navbar-bg, .title').css('opacity', '');\n        return;\n      }\n      if (!notTransparent && opacity === 1) {\n        $navbarEl.trigger('navbar:transparentshow');\n        app.emit('navbarTransparentShow', $navbarEl[0]);\n        $navbarEl.addClass('navbar-transparent-visible');\n        $navbarEl.find('.navbar-bg, .title').css('opacity', '');\n        return;\n      }\n\n      $navbarEl.find('.navbar-bg, .title').css('opacity', opacity);\n\n      if (snapPageScrollToTransparentNavbar) {\n        if (!support.touch) {\n          clearTimeout(scrollTimeoutId);\n          scrollTimeoutId = setTimeout(() => {\n            snapTransparentNavbar();\n          }, desktopSnapTimeout);\n        } else if (touchEndTimeoutId) {\n          clearTimeout(touchEndTimeoutId);\n          touchEndTimeoutId = null;\n          touchEndTimeoutId = setTimeout(() => {\n            snapTransparentNavbar();\n            clearTimeout(touchEndTimeoutId);\n            touchEndTimeoutId = null;\n          }, touchSnapTimeout);\n        }\n      }\n    }\n\n    let previousCollapseProgress = null;\n    let collapseProgress = null;\n    function handleLargeNavbarCollapse(pageContentEl) {\n      const isHidden =\n        $navbarEl.hasClass('navbar-hidden') ||\n        $navbarEl.parent('.navbars').hasClass('navbar-hidden');\n      if (isHidden) return;\n      const isLargeTransparent =\n        $navbarEl.hasClass('navbar-large-transparent') ||\n        ($navbarEl.hasClass('navbar-large') && $navbarEl.hasClass('navbar-transparent'));\n      previousCollapseProgress = collapseProgress;\n      const scrollableDistance = Math.min(\n        navbarTitleLargeHeight,\n        pageContentEl.f7ScrollableDistance || navbarTitleLargeHeight,\n      );\n      collapseProgress = Math.min(Math.max(currentScrollTop / scrollableDistance, 0), 1);\n      const previousCollapseWasInMiddle =\n        previousCollapseProgress > 0 && previousCollapseProgress < 1;\n      const inSearchbarExpanded = $navbarEl.hasClass('with-searchbar-expandable-enabled');\n      if (inSearchbarExpanded) return;\n      navbarCollapsed = $navbarEl.hasClass('navbar-large-collapsed');\n      const $bgEl = $navbarEl.find('.navbar-bg');\n      if (collapseProgress === 0 && navbarCollapsed) {\n        app.navbar.expandLargeTitle($navbarEl[0]);\n      } else if (collapseProgress === 1 && !navbarCollapsed) {\n        app.navbar.collapseLargeTitle($navbarEl[0]);\n      }\n      if (\n        (collapseProgress === 0 && navbarCollapsed) ||\n        (collapseProgress === 0 && previousCollapseWasInMiddle) ||\n        (collapseProgress === 1 && !navbarCollapsed) ||\n        (collapseProgress === 1 && previousCollapseWasInMiddle)\n      ) {\n        if (app.theme === 'md') {\n          $navbarEl.find('.navbar-inner').css('overflow', '');\n        }\n        $navbarEl.find('.title').css('opacity', '');\n        $navbarEl.find('.title-large-text, .subnavbar').css('transform', '');\n        $navbarEl.find('.title-large-text').css('opacity', '');\n        if (isLargeTransparent) {\n          $bgEl.css('opacity', '');\n        }\n        $bgEl.css('transform', '');\n      } else if (collapseProgress > 0 && collapseProgress < 1) {\n        if (app.theme === 'md') {\n          $navbarEl.find('.navbar-inner').css('overflow', 'visible');\n        }\n        $navbarEl.find('.title').css('opacity', -0.5 + collapseProgress * 1.5);\n        $navbarEl\n          .find('.title-large-text, .subnavbar')\n          .css(\n            'transform',\n            `translate3d(0px, ${-1 * collapseProgress * navbarTitleLargeHeight}px, 0)`,\n          );\n        $navbarEl.find('.title-large-text').css('opacity', 1 - collapseProgress * 2);\n\n        if (isLargeTransparent) {\n          $bgEl.css('opacity', collapseProgress);\n        }\n        $bgEl.css(\n          'transform',\n          `translate3d(0px, ${-1 * collapseProgress * navbarTitleLargeHeight}px, 0)`,\n        );\n      }\n\n      if (snapPageScrollToLargeTitle) {\n        if (!support.touch) {\n          clearTimeout(scrollTimeoutId);\n          scrollTimeoutId = setTimeout(() => {\n            snapLargeNavbar();\n          }, desktopSnapTimeout);\n        } else if (touchEndTimeoutId) {\n          clearTimeout(touchEndTimeoutId);\n          touchEndTimeoutId = null;\n          touchEndTimeoutId = setTimeout(() => {\n            snapLargeNavbar();\n            clearTimeout(touchEndTimeoutId);\n            touchEndTimeoutId = null;\n          }, touchSnapTimeout);\n        }\n      }\n    }\n\n    function handleTitleHideShow() {\n      if ($pageEl.hasClass('page-with-card-opened')) return;\n      scrollHeight = scrollContent.scrollHeight;\n      offsetHeight = scrollContent.offsetHeight;\n      reachEnd = currentScrollTop + offsetHeight >= scrollHeight;\n      navbarHidden =\n        $navbarEl.hasClass('navbar-hidden') ||\n        $navbarEl.parent('.navbars').hasClass('navbar-hidden');\n      if (reachEnd) {\n        if (app.params.navbar.showOnPageScrollEnd) {\n          action = 'show';\n        }\n      } else if (previousScrollTop > currentScrollTop) {\n        if (app.params.navbar.showOnPageScrollTop || currentScrollTop <= navbarHideHeight) {\n          action = 'show';\n        } else {\n          action = 'hide';\n        }\n      } else if (currentScrollTop > navbarHideHeight) {\n        action = 'hide';\n      } else {\n        action = 'show';\n      }\n\n      if (action === 'show' && navbarHidden) {\n        app.navbar.show($navbarEl, true, true);\n        navbarHidden = false;\n      } else if (action === 'hide' && !navbarHidden) {\n        app.navbar.hide($navbarEl, true, false, true);\n        navbarHidden = true;\n      }\n      previousScrollTop = currentScrollTop;\n    }\n\n    function handleScroll(e) {\n      scrollContent = this;\n      if (e && e.target && e.target !== scrollContent) {\n        return;\n      }\n      currentScrollTop = scrollContent.scrollTop;\n      scrollChanged = currentScrollTop;\n      if (needCollapse) {\n        handleLargeNavbarCollapse(scrollContent);\n      } else if (needTransparent) {\n        handleNavbarTransparent();\n      }\n      if ($pageEl.hasClass('page-previous')) return;\n      if (needHide) {\n        handleTitleHideShow();\n      }\n    }\n    function handeTouchStart() {\n      scrollChanged = false;\n    }\n    function handleTouchEnd() {\n      clearTimeout(touchEndTimeoutId);\n      touchEndTimeoutId = null;\n      touchEndTimeoutId = setTimeout(() => {\n        if (scrollChanged !== false) {\n          if (needTransparent && !needCollapse) {\n            snapTransparentNavbar();\n          } else {\n            snapLargeNavbar();\n          }\n          clearTimeout(touchEndTimeoutId);\n          touchEndTimeoutId = null;\n        }\n      }, touchSnapTimeout);\n    }\n    $pageEl.on('scroll', '.page-content', handleScroll, true);\n\n    if (\n      support.touch &&\n      ((needCollapse && snapPageScrollToLargeTitle) ||\n        (needTransparent && snapPageScrollToTransparentNavbar))\n    ) {\n      app.on('touchstart:passive', handeTouchStart);\n      app.on('touchend:passive', handleTouchEnd);\n    }\n    calcScrollableDistance();\n    if (needCollapse || needTransparent) {\n      $pageEl.find('.page-content').each((pageContentEl) => {\n        if (pageContentEl.scrollTop > 0) handleScroll.call(pageContentEl);\n      });\n    }\n    app.on('resize', calcScrollableDistance);\n    $pageEl[0].f7DetachNavbarScrollHandlers = function f7DetachNavbarScrollHandlers() {\n      app.off('resize', calcScrollableDistance);\n      delete $pageEl[0].f7DetachNavbarScrollHandlers;\n      $pageEl.off('scroll', '.page-content', handleScroll, true);\n      if (\n        support.touch &&\n        ((needCollapse && snapPageScrollToLargeTitle) ||\n          (needTransparent && snapPageScrollToTransparentNavbar))\n      ) {\n        app.off('touchstart:passive', handeTouchStart);\n        app.off('touchend:passive', handleTouchEnd);\n      }\n    };\n  },\n};\nexport default {\n  name: 'navbar',\n  create() {\n    const app = this;\n    bindMethods(app, {\n      navbar: Navbar,\n    });\n  },\n  params: {\n    navbar: {\n      scrollTopOnTitleClick: true,\n      iosCenterTitle: true,\n      mdCenterTitle: false,\n      hideOnPageScroll: false,\n      showOnPageScrollEnd: true,\n      showOnPageScrollTop: true,\n      collapseLargeTitleOnScroll: true,\n      snapPageScrollToLargeTitle: true,\n      snapPageScrollToTransparentNavbar: true,\n    },\n  },\n  on: {\n    'panelBreakpoint panelCollapsedBreakpoint panelResize viewResize resize viewMasterDetailBreakpoint':\n      function onPanelResize() {\n        const app = this;\n        $('.navbar').each((navbarEl) => {\n          app.navbar.size(navbarEl);\n        });\n      },\n    pageBeforeRemove(page) {\n      if (page.$el[0].f7DetachNavbarScrollHandlers) {\n        page.$el[0].f7DetachNavbarScrollHandlers();\n      }\n    },\n    pageBeforeIn(page) {\n      const app = this;\n      if (app.theme !== 'ios') return;\n      let $navbarsEl;\n      const view = page.$el.parents('.view')[0].f7View;\n      const navbarEl = app.navbar.getElByPage(page);\n      if (!navbarEl) {\n        $navbarsEl = page.$el.parents('.view').children('.navbars');\n      } else {\n        $navbarsEl = $(navbarEl).parents('.navbars');\n      }\n      if (page.$el.hasClass('no-navbar') || (view.router.dynamicNavbar && !navbarEl)) {\n        const animate = !!(page.pageFrom && page.router.history.length > 0);\n        app.navbar.hide($navbarsEl, animate);\n      } else {\n        app.navbar.show($navbarsEl);\n      }\n    },\n    pageReinit(page) {\n      const app = this;\n      const $navbarEl = $(app.navbar.getElByPage(page));\n      if (!$navbarEl || $navbarEl.length === 0) return;\n      app.navbar.size($navbarEl);\n    },\n    pageInit(page) {\n      const app = this;\n      const $navbarEl = $(app.navbar.getElByPage(page));\n      if (!$navbarEl || $navbarEl.length === 0) return;\n\n      // Size\n      app.navbar.size($navbarEl);\n\n      // Need Collapse On Scroll\n      let needCollapseOnScrollHandler;\n      if ($navbarEl.find('.title-large').length > 0) {\n        $navbarEl.addClass('navbar-large');\n      }\n      if ($navbarEl.hasClass('navbar-large')) {\n        if (app.params.navbar.collapseLargeTitleOnScroll) needCollapseOnScrollHandler = true;\n        page.$el.addClass('page-with-navbar-large');\n      }\n\n      // Need transparent on scroll\n      let needTransparentOnScroll;\n      if (!needCollapseOnScrollHandler && $navbarEl.hasClass('navbar-transparent')) {\n        needTransparentOnScroll = true;\n      }\n\n      // Need Hide On Scroll\n      let needHideOnScrollHandler;\n      if (\n        app.params.navbar.hideOnPageScroll ||\n        page.$el.find('.hide-navbar-on-scroll').length ||\n        page.$el.hasClass('hide-navbar-on-scroll') ||\n        page.$el.find('.hide-bars-on-scroll').length ||\n        page.$el.hasClass('hide-bars-on-scroll')\n      ) {\n        if (\n          page.$el.find('.keep-navbar-on-scroll').length ||\n          page.$el.hasClass('keep-navbar-on-scroll') ||\n          page.$el.find('.keep-bars-on-scroll').length ||\n          page.$el.hasClass('keep-bars-on-scroll')\n        ) {\n          needHideOnScrollHandler = false;\n        } else {\n          needHideOnScrollHandler = true;\n        }\n      }\n\n      if (needCollapseOnScrollHandler || needHideOnScrollHandler || needTransparentOnScroll) {\n        app.navbar.initNavbarOnScroll(\n          page.el,\n          $navbarEl[0],\n          needHideOnScrollHandler,\n          needCollapseOnScrollHandler,\n          needTransparentOnScroll,\n        );\n      }\n    },\n    'panelOpen panelSwipeOpen modalOpen': function onPanelModalOpen(instance) {\n      const app = this;\n      instance.$el.find('.navbar:not(.navbar-previous)').each((navbarEl) => {\n        app.navbar.size(navbarEl);\n      });\n    },\n    tabShow(tabEl) {\n      const app = this;\n      $(tabEl)\n        .find('.navbar:not(.navbar-previous)')\n        .each((navbarEl) => {\n          app.navbar.size(navbarEl);\n        });\n    },\n  },\n  clicks: {\n    '.navbar .title': function onTitleClick($clickedEl, clickedData, e) {\n      const app = this;\n      if (!app.params.navbar.scrollTopOnTitleClick) return;\n      if ($(e.target).closest('a, button').length > 0) {\n        return;\n      }\n      let $pageContentEl;\n\n      // Find active page\n      const $navbarEl = $clickedEl.parents('.navbar');\n      const $navbarsEl = $navbarEl.parents('.navbars');\n\n      // Static Layout\n      $pageContentEl = $navbarEl.parents('.page-content');\n\n      if ($pageContentEl.length === 0) {\n        // Fixed Layout\n        if ($navbarEl.parents('.page').length > 0) {\n          $pageContentEl = $navbarEl.parents('.page').find('.page-content');\n        }\n        // Through Layout iOS\n        if ($pageContentEl.length === 0 && $navbarsEl.length) {\n          if ($navbarsEl.nextAll('.page-current').length > 0) {\n            $pageContentEl = $navbarsEl.nextAll('.page-current').find('.page-content');\n          }\n        }\n        // Through Layout\n        if ($pageContentEl.length === 0) {\n          if ($navbarEl.nextAll('.page-current').length > 0) {\n            $pageContentEl = $navbarEl.nextAll('.page-current').find('.page-content');\n          }\n        }\n      }\n      if ($pageContentEl && $pageContentEl.length > 0) {\n        // Check for tab\n        if ($pageContentEl.hasClass('tab')) {\n          $pageContentEl = $pageContentEl.parent('.tabs').children('.page-content.tab-active');\n        }\n        if ($pageContentEl.length > 0) $pageContentEl.scrollTop(0, 300);\n      }\n    },\n  },\n  vnode: {\n    navbar: {\n      postpatch(vnode) {\n        const app = this;\n        app.navbar.size(vnode.elm);\n      },\n    },\n  },\n};\n","import $ from '../../shared/dom7.js';\nimport { nextFrame, bindMethods } from '../../shared/utils.js';\n\nconst Toolbar = {\n  setHighlight(tabbarEl) {\n    const app = this;\n    const $tabbarEl = $(tabbarEl);\n    if (app.theme === 'ios' && !$tabbarEl.hasClass('tabbar-highlight')) return;\n\n    if (\n      $tabbarEl.length === 0 ||\n      !($tabbarEl.hasClass('tabbar') || $tabbarEl.hasClass('tabbar-icons'))\n    )\n      return;\n\n    let $highlightEl = $tabbarEl.find('.tab-link-highlight');\n    const tabLinksCount = $tabbarEl.find('.tab-link').length;\n    if (tabLinksCount === 0) {\n      $highlightEl.remove();\n      return;\n    }\n\n    if ($highlightEl.length === 0) {\n      $tabbarEl.children('.toolbar-inner').append('<span class=\"tab-link-highlight\"></span>');\n      $highlightEl = $tabbarEl.find('.tab-link-highlight');\n    } else if ($highlightEl.next().length) {\n      $tabbarEl.children('.toolbar-inner').append($highlightEl);\n    }\n\n    const $activeLink = $tabbarEl.find('.tab-link-active');\n    let highlightWidth;\n    let highlightTranslate;\n\n    if ($tabbarEl.hasClass('tabbar-scrollable') && $activeLink && $activeLink[0]) {\n      highlightWidth = `${$activeLink[0].offsetWidth}px`;\n      highlightTranslate = `${$activeLink[0].offsetLeft}px`;\n    } else {\n      const activeIndex = $activeLink.index();\n      highlightWidth = `${100 / tabLinksCount}%`;\n      highlightTranslate = `${(app.rtl ? -activeIndex : activeIndex) * 100}%`;\n    }\n\n    nextFrame(() => {\n      $highlightEl.css('width', highlightWidth).transform(`translate3d(${highlightTranslate},0,0)`);\n    });\n  },\n  init(tabbarEl) {\n    const app = this;\n    app.toolbar.setHighlight(tabbarEl);\n  },\n  hide(el, animate = true) {\n    const app = this;\n    const $el = $(el);\n    if ($el.hasClass('toolbar-hidden')) return;\n    const className = `toolbar-hidden${animate ? ' toolbar-transitioning' : ''}`;\n    $el.transitionEnd(() => {\n      $el.removeClass('toolbar-transitioning');\n    });\n    $el.addClass(className);\n    $el.trigger('toolbar:hide');\n    app.emit('toolbarHide', $el[0]);\n  },\n  show(el, animate = true) {\n    const app = this;\n    const $el = $(el);\n    if (!$el.hasClass('toolbar-hidden')) return;\n    if (animate) {\n      $el.addClass('toolbar-transitioning');\n      $el.transitionEnd(() => {\n        $el.removeClass('toolbar-transitioning');\n      });\n    }\n    $el.removeClass('toolbar-hidden');\n    $el.trigger('toolbar:show');\n    app.emit('toolbarShow', $el[0]);\n  },\n  initToolbarOnScroll(pageEl) {\n    const app = this;\n    const $pageEl = $(pageEl);\n    let $toolbarEl = $pageEl.parents('.view').children('.toolbar');\n    if ($toolbarEl.length === 0) {\n      $toolbarEl = $pageEl.find('.toolbar');\n    }\n    if ($toolbarEl.length === 0) {\n      $toolbarEl = $pageEl.parents('.views').children('.tabbar, .tabbar-icons');\n    }\n    if ($toolbarEl.length === 0) {\n      return;\n    }\n\n    let previousScrollTop;\n    let currentScrollTop;\n\n    let scrollHeight;\n    let offsetHeight;\n    let reachEnd;\n    let action;\n    let toolbarHidden;\n    function handleScroll(e) {\n      if ($pageEl.hasClass('page-with-card-opened')) return;\n      if ($pageEl.hasClass('page-previous')) return;\n      const scrollContent = this;\n      if (e && e.target && e.target !== scrollContent) {\n        return;\n      }\n      currentScrollTop = scrollContent.scrollTop;\n      scrollHeight = scrollContent.scrollHeight;\n      offsetHeight = scrollContent.offsetHeight;\n      reachEnd = currentScrollTop + offsetHeight >= scrollHeight;\n      toolbarHidden = $toolbarEl.hasClass('toolbar-hidden');\n\n      if (reachEnd) {\n        if (app.params.toolbar.showOnPageScrollEnd) {\n          action = 'show';\n        }\n      } else if (previousScrollTop > currentScrollTop) {\n        if (app.params.toolbar.showOnPageScrollTop || currentScrollTop <= 44) {\n          action = 'show';\n        } else {\n          action = 'hide';\n        }\n      } else if (currentScrollTop > 44) {\n        action = 'hide';\n      } else {\n        action = 'show';\n      }\n\n      if (action === 'show' && toolbarHidden) {\n        app.toolbar.show($toolbarEl);\n        toolbarHidden = false;\n      } else if (action === 'hide' && !toolbarHidden) {\n        app.toolbar.hide($toolbarEl);\n        toolbarHidden = true;\n      }\n\n      previousScrollTop = currentScrollTop;\n    }\n    $pageEl.on('scroll', '.page-content', handleScroll, true);\n    $pageEl[0].f7ScrollToolbarHandler = handleScroll;\n  },\n};\nexport default {\n  name: 'toolbar',\n  create() {\n    const app = this;\n    bindMethods(app, {\n      toolbar: Toolbar,\n    });\n  },\n  params: {\n    toolbar: {\n      hideOnPageScroll: false,\n      showOnPageScrollEnd: true,\n      showOnPageScrollTop: true,\n    },\n  },\n  on: {\n    pageBeforeRemove(page) {\n      if (page.$el[0].f7ScrollToolbarHandler) {\n        page.$el.off('scroll', '.page-content', page.$el[0].f7ScrollToolbarHandler, true);\n      }\n    },\n    pageBeforeIn(page) {\n      const app = this;\n      let $toolbarEl = page.$el.parents('.view').children('.toolbar');\n      if ($toolbarEl.length === 0) {\n        $toolbarEl = page.$el.parents('.views').children('.tabbar, .tabbar-icons');\n      }\n      if ($toolbarEl.length === 0) {\n        $toolbarEl = page.$el.find('.toolbar');\n      }\n      if ($toolbarEl.length === 0) {\n        return;\n      }\n      if (page.$el.hasClass('no-toolbar')) {\n        app.toolbar.hide($toolbarEl);\n      } else {\n        app.toolbar.show($toolbarEl);\n      }\n    },\n    pageInit(page) {\n      const app = this;\n      page.$el.find('.tabbar, .tabbar-icons').each((tabbarEl) => {\n        app.toolbar.init(tabbarEl);\n      });\n      if (\n        app.params.toolbar.hideOnPageScroll ||\n        page.$el.find('.hide-toolbar-on-scroll').length ||\n        page.$el.hasClass('hide-toolbar-on-scroll') ||\n        page.$el.find('.hide-bars-on-scroll').length ||\n        page.$el.hasClass('hide-bars-on-scroll')\n      ) {\n        if (\n          page.$el.find('.keep-toolbar-on-scroll').length ||\n          page.$el.hasClass('keep-toolbar-on-scroll') ||\n          page.$el.find('.keep-bars-on-scroll').length ||\n          page.$el.hasClass('keep-bars-on-scroll')\n        ) {\n          return;\n        }\n        app.toolbar.initToolbarOnScroll(page.el);\n      }\n    },\n    init() {\n      const app = this;\n      app.$el.find('.tabbar, .tabbar-icons').each((tabbarEl) => {\n        app.toolbar.init(tabbarEl);\n      });\n    },\n  },\n  vnode: {\n    tabbar: {\n      insert(vnode) {\n        const app = this;\n        app.toolbar.init(vnode.elm);\n      },\n    },\n  },\n};\n","import $ from '../../shared/dom7.js';\n\nexport default {\n  name: 'subnavbar',\n  on: {\n    pageInit(page) {\n      if (page.$navbarEl && page.$navbarEl.length && page.$navbarEl.find('.subnavbar').length) {\n        page.$el.addClass('page-with-subnavbar');\n      }\n      const $innerSubnavbars = page.$el.find('.subnavbar').filter((subnavbarEl) => {\n        return $(subnavbarEl).parents('.page')[0] === page.$el[0];\n      });\n      if ($innerSubnavbars.length) {\n        page.$el.addClass('page-with-subnavbar');\n      }\n    },\n  },\n};\n","import $ from '../../shared/dom7.js';\n\nexport default class TouchRipple {\n  constructor(app, $el, x, y) {\n    const ripple = this;\n\n    if (!$el) return undefined;\n\n    const { left, top, width, height } = $el[0].getBoundingClientRect();\n    const center = {\n      x: x - left,\n      y: y - top,\n    };\n    let diameter = Math.max((height ** 2 + width ** 2) ** 0.5, 48);\n\n    let isInset = false;\n    const insetElements = app.params.touch.touchRippleInsetElements || '';\n    if (insetElements && $el.is(insetElements)) {\n      isInset = true;\n    }\n    if (isInset) {\n      diameter = Math.max(Math.min(width, height), 48);\n    }\n\n    if (!isInset && $el.css('overflow') === 'hidden') {\n      const distanceFromCenter =\n        ((center.x - width / 2) ** 2 + (center.y - height / 2) ** 2) ** 0.5;\n      const scale = (diameter / 2 + distanceFromCenter) / (diameter / 2);\n      ripple.rippleTransform = `translate3d(0px, 0px, 0) scale(${scale * 2})`;\n    } else {\n      // prettier-ignore\n      ripple.rippleTransform = `translate3d(${-center.x + width / 2}px, ${-center.y + height / 2}px, 0) scale(1)`;\n    }\n    if (isInset) {\n      $el.addClass('ripple-inset');\n    }\n\n    ripple.$rippleWaveEl = $(\n      `<div class=\"ripple-wave${\n        isInset ? ' ripple-wave-inset' : ''\n      }\" style=\"width: ${diameter}px; height: ${diameter}px; margin-top:-${\n        diameter / 2\n      }px; margin-left:-${diameter / 2}px; left:${center.x}px; top:${\n        center.y\n      }px; --f7-ripple-transform: ${ripple.rippleTransform}\"></div>`,\n    );\n\n    $el.prepend(ripple.$rippleWaveEl);\n\n    ripple.$rippleWaveEl.animationEnd(() => {\n      if (!ripple.$rippleWaveEl) return;\n      if (ripple.$rippleWaveEl.hasClass('ripple-wave-out')) return;\n      ripple.$rippleWaveEl.addClass('ripple-wave-in');\n      if (ripple.shouldBeRemoved) {\n        ripple.out();\n      }\n    });\n\n    return ripple;\n  }\n\n  destroy() {\n    let ripple = this;\n    if (ripple.$rippleWaveEl) {\n      ripple.$rippleWaveEl.remove();\n    }\n    Object.keys(ripple).forEach((key) => {\n      ripple[key] = null;\n      delete ripple[key];\n    });\n    ripple = null;\n  }\n\n  out() {\n    const ripple = this;\n    const { $rippleWaveEl } = this;\n    clearTimeout(ripple.removeTimeout);\n    $rippleWaveEl.addClass('ripple-wave-out');\n\n    ripple.removeTimeout = setTimeout(() => {\n      ripple.destroy();\n    }, 300);\n\n    $rippleWaveEl.animationEnd(() => {\n      clearTimeout(ripple.removeTimeout);\n      ripple.destroy();\n    });\n  }\n\n  remove() {\n    const ripple = this;\n    if (ripple.shouldBeRemoved) return;\n    ripple.removeTimeout = setTimeout(() => {\n      ripple.destroy();\n    }, 400);\n    ripple.shouldBeRemoved = true;\n    if (ripple.$rippleWaveEl.hasClass('ripple-wave-in')) {\n      ripple.out();\n    }\n  }\n}\n","import TouchRipple from './touch-ripple-class.js';\n\nexport default {\n  name: 'touch-ripple',\n  static: {\n    TouchRipple,\n  },\n  create() {\n    const app = this;\n    app.touchRipple = {\n      create(...args) {\n        return new TouchRipple(...args);\n      },\n    };\n  },\n};\n","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { extend, deleteProps } from '../../shared/utils.js';\nimport Framework7Class from '../../shared/class.js';\n\nconst openedModals = [];\nconst dialogsQueue = [];\nfunction clearDialogsQueue() {\n  if (dialogsQueue.length === 0) return;\n  const dialog = dialogsQueue.shift();\n  dialog.open();\n}\nclass Modal extends Framework7Class {\n  constructor(app, params) {\n    super(params, [app]);\n\n    const modal = this;\n\n    const defaults = {};\n\n    // Extend defaults with modules params\n    modal.useModulesParams(defaults);\n\n    modal.params = extend(defaults, params);\n    modal.opened = false;\n\n    let $containerEl = modal.params.containerEl ? $(modal.params.containerEl).eq(0) : app.$el;\n    if (!$containerEl.length) $containerEl = app.$el;\n\n    modal.$containerEl = $containerEl;\n    modal.containerEl = $containerEl[0];\n\n    // Install Modules\n    modal.useModules();\n\n    return this;\n  }\n\n  onOpen() {\n    const modal = this;\n    modal.opened = true;\n    openedModals.push(modal);\n    $('html').addClass(`with-modal-${modal.type.toLowerCase()}`);\n    modal.$el.trigger(`modal:open ${modal.type.toLowerCase()}:open`);\n    modal.emit(`local::open modalOpen ${modal.type}Open`, modal);\n  }\n\n  onOpened() {\n    const modal = this;\n    modal.$el.trigger(`modal:opened ${modal.type.toLowerCase()}:opened`);\n    modal.emit(`local::opened modalOpened ${modal.type}Opened`, modal);\n  }\n\n  onClose() {\n    const modal = this;\n    modal.opened = false;\n    if (!modal.type || !modal.$el) return;\n    openedModals.splice(openedModals.indexOf(modal), 1);\n    $('html').removeClass(`with-modal-${modal.type.toLowerCase()}`);\n    modal.$el.trigger(`modal:close ${modal.type.toLowerCase()}:close`);\n    modal.emit(`local::close modalClose ${modal.type}Close`, modal);\n  }\n\n  onClosed() {\n    const modal = this;\n    if (!modal.type || !modal.$el) return;\n    modal.$el.removeClass('modal-out');\n    modal.$el.hide();\n    if (\n      modal.params.backdrop &&\n      (modal.params.backdropUnique || modal.forceBackdropUnique) &&\n      modal.$backdropEl\n    ) {\n      modal.$backdropEl.remove();\n    }\n    modal.$el.trigger(`modal:closed ${modal.type.toLowerCase()}:closed`);\n    modal.emit(`local::closed modalClosed ${modal.type}Closed`, modal);\n  }\n\n  open(animateModal, force) {\n    const modal = this;\n    const document = getDocument();\n    const app = modal.app;\n    const $el = modal.$el;\n    const $backdropEl = modal.$backdropEl;\n    const type = modal.type;\n    let animate = true;\n    if (typeof animateModal !== 'undefined') animate = animateModal;\n    else if (typeof modal.params.animate !== 'undefined') {\n      animate = modal.params.animate;\n    }\n\n    if (!$el || $el.hasClass('modal-in')) {\n      if (animateModal === false && $el[0] && type !== 'dialog') {\n        $el[0].style.display = 'block';\n      }\n      if (!force) return modal;\n    }\n\n    if (type === 'dialog' && app.params.modal.queueDialogs) {\n      let pushToQueue;\n      if ($('.dialog.modal-in').length > 0) {\n        pushToQueue = true;\n      } else if (openedModals.length > 0) {\n        openedModals.forEach((openedModal) => {\n          if (openedModal.type === 'dialog') pushToQueue = true;\n        });\n      }\n      if (pushToQueue) {\n        dialogsQueue.push(modal);\n        return modal;\n      }\n    }\n\n    const $modalParentEl = $el.parent();\n    const wasInDom = $el.parents(document).length > 0;\n    if (!$modalParentEl.is(modal.$containerEl)) {\n      modal.$containerEl.append($el);\n      modal.once(`${type}Closed`, () => {\n        if (wasInDom) {\n          $modalParentEl.append($el);\n        } else {\n          $el.remove();\n        }\n      });\n    }\n    // Show Modal\n    $el.show();\n\n    if (\n      modal.params.backdrop &&\n      (modal.params.backdropUnique || modal.forceBackdropUnique) &&\n      modal.$backdropEl\n    ) {\n      modal.$backdropEl.insertBefore($el);\n    }\n\n    /* eslint no-underscore-dangle: [\"error\", { \"allow\": [\"_clientLeft\"] }] */\n    modal._clientLeft = $el[0].clientLeft;\n\n    // Modal\n    function transitionEnd() {\n      if ($el.hasClass('modal-out')) {\n        modal.onClosed();\n      } else if ($el.hasClass('modal-in')) {\n        modal.onOpened();\n      }\n    }\n    if (animate) {\n      if ($backdropEl) {\n        $backdropEl.removeClass('not-animated');\n        $backdropEl.addClass('backdrop-in');\n      }\n      $el.animationEnd(() => {\n        transitionEnd();\n      });\n      $el.transitionEnd(() => {\n        transitionEnd();\n      });\n      $el.removeClass('modal-out not-animated').addClass('modal-in');\n      modal.onOpen();\n    } else {\n      if ($backdropEl) {\n        $backdropEl.addClass('backdrop-in not-animated');\n      }\n      $el.removeClass('modal-out').addClass('modal-in not-animated');\n      modal.onOpen();\n      modal.onOpened();\n    }\n\n    return modal;\n  }\n\n  close(animateModal) {\n    const modal = this;\n    const $el = modal.$el;\n    const $backdropEl = modal.$backdropEl;\n\n    let animate = true;\n    if (typeof animateModal !== 'undefined') animate = animateModal;\n    else if (typeof modal.params.animate !== 'undefined') {\n      animate = modal.params.animate;\n    }\n\n    if (!$el || !$el.hasClass('modal-in')) {\n      if (dialogsQueue.indexOf(modal) >= 0) {\n        dialogsQueue.splice(dialogsQueue.indexOf(modal), 1);\n      }\n      return modal;\n    }\n\n    // backdrop\n    if ($backdropEl) {\n      let needToHideBackdrop = true;\n      if (modal.type === 'popup') {\n        modal.$el\n          .prevAll('.popup.modal-in')\n          .add(modal.$el.nextAll('.popup.modal-in'))\n          .each((popupEl) => {\n            const popupInstance = popupEl.f7Modal;\n            if (!popupInstance) return;\n            if (\n              popupInstance.params.closeByBackdropClick &&\n              popupInstance.params.backdrop &&\n              popupInstance.backdropEl === modal.backdropEl\n            ) {\n              needToHideBackdrop = false;\n            }\n          });\n      }\n      if (needToHideBackdrop) {\n        $backdropEl[animate ? 'removeClass' : 'addClass']('not-animated');\n        $backdropEl.removeClass('backdrop-in');\n      }\n    }\n\n    // Modal\n    $el[animate ? 'removeClass' : 'addClass']('not-animated');\n\n    function transitionEnd() {\n      if ($el.hasClass('modal-out')) {\n        modal.onClosed();\n      } else if ($el.hasClass('modal-in')) {\n        modal.onOpened();\n      }\n    }\n    if (animate) {\n      $el.animationEnd(() => {\n        transitionEnd();\n      });\n      $el.transitionEnd(() => {\n        transitionEnd();\n      });\n      $el.removeClass('modal-in').addClass('modal-out');\n      // Emit close\n      modal.onClose();\n    } else {\n      $el.addClass('not-animated').removeClass('modal-in').addClass('modal-out');\n      // Emit close\n      modal.onClose();\n      modal.onClosed();\n    }\n\n    if (modal.type === 'dialog') {\n      clearDialogsQueue();\n    }\n\n    return modal;\n  }\n\n  destroy() {\n    const modal = this;\n    if (modal.destroyed) return;\n    modal.emit(`local::beforeDestroy modalBeforeDestroy ${modal.type}BeforeDestroy`, modal);\n    if (modal.$el) {\n      modal.$el.trigger(`modal:beforedestroy ${modal.type.toLowerCase()}:beforedestroy`);\n      if (modal.$el.length && modal.$el[0].f7Modal) {\n        delete modal.$el[0].f7Modal;\n      }\n    }\n    deleteProps(modal);\n    modal.destroyed = true;\n  }\n}\n\nexport default Modal;\n","import $ from '../../shared/dom7.js';\nimport { extend } from '../../shared/utils.js';\nimport Modal from './modal-class.js';\n\nclass CustomModal extends Modal {\n  constructor(app, params) {\n    const extendedParams = extend(\n      {\n        backdrop: true,\n        closeByBackdropClick: true,\n        on: {},\n      },\n      params,\n    );\n\n    // Extends with open/close Modal methods;\n    super(app, extendedParams);\n\n    const customModal = this;\n\n    customModal.params = extendedParams;\n\n    // Find Element\n    let $el;\n    if (!customModal.params.el) {\n      $el = $(customModal.params.content);\n    } else {\n      $el = $(customModal.params.el);\n    }\n\n    if ($el && $el.length > 0 && $el[0].f7Modal) {\n      return $el[0].f7Modal;\n    }\n\n    if ($el.length === 0) {\n      return customModal.destroy();\n    }\n    let $backdropEl;\n    if (customModal.params.backdrop) {\n      $backdropEl = app.$el.children('.custom-modal-backdrop');\n      if ($backdropEl.length === 0) {\n        $backdropEl = $('<div class=\"custom-modal-backdrop\"></div>');\n        app.$el.append($backdropEl);\n      }\n    }\n\n    function handleClick(e) {\n      if (!customModal || customModal.destroyed) return;\n      if ($backdropEl && e.target === $backdropEl[0]) {\n        customModal.close();\n      }\n    }\n\n    customModal.on('customModalOpened', () => {\n      if (customModal.params.closeByBackdropClick && customModal.params.backdrop) {\n        app.on('click', handleClick);\n      }\n    });\n    customModal.on('customModalClose', () => {\n      if (customModal.params.closeByBackdropClick && customModal.params.backdrop) {\n        app.off('click', handleClick);\n      }\n    });\n\n    extend(customModal, {\n      app,\n      $el,\n      el: $el[0],\n      $backdropEl,\n      backdropEl: $backdropEl && $backdropEl[0],\n      type: 'customModal',\n    });\n\n    $el[0].f7Modal = customModal;\n\n    return customModal;\n  }\n}\nexport default CustomModal;\n","import Modal from './modal-class.js';\nimport CustomModal from './custom-modal-class.js';\n\nexport default {\n  name: 'modal',\n  static: {\n    Modal,\n    CustomModal,\n  },\n  create() {\n    const app = this;\n    app.customModal = {\n      create(params) {\n        return new CustomModal(app, params);\n      },\n    };\n  },\n  params: {\n    modal: {\n      queueDialogs: true,\n    },\n  },\n};\n","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { extend } from '../../shared/utils.js';\nimport { getDevice } from '../../shared/get-device.js';\nimport Modal from '../modal/modal-class.js';\n/** @jsx $jsx */\nimport $jsx from '../../shared/$jsx.js';\n\nclass Dialog extends Modal {\n  constructor(app, params) {\n    const extendedParams = extend(\n      {\n        title: app.params.dialog.title,\n        text: undefined,\n        content: '',\n        buttons: [],\n        verticalButtons: false,\n        onClick: undefined,\n        cssClass: undefined,\n        destroyOnClose: false,\n        on: {},\n      },\n      params,\n    );\n    if (typeof extendedParams.closeByBackdropClick === 'undefined') {\n      extendedParams.closeByBackdropClick = app.params.dialog.closeByBackdropClick;\n    }\n    if (typeof extendedParams.backdrop === 'undefined') {\n      extendedParams.backdrop = app.params.dialog.backdrop;\n    }\n\n    // Extends with open/close Modal methods;\n    super(app, extendedParams);\n\n    const dialog = this;\n\n    const device = getDevice();\n    const document = getDocument();\n\n    const { title, text, content, buttons, verticalButtons, cssClass, backdrop } = extendedParams;\n\n    dialog.params = extendedParams;\n\n    // Find Element\n    let $el;\n    if (!dialog.params.el) {\n      const dialogClasses = ['dialog'];\n      if (buttons.length === 0) dialogClasses.push('dialog-no-buttons');\n      if (buttons.length > 0) dialogClasses.push(`dialog-buttons-${buttons.length}`);\n      if (verticalButtons) dialogClasses.push('dialog-buttons-vertical');\n      if (cssClass) dialogClasses.push(cssClass);\n\n      let buttonsHTML = '';\n      if (buttons.length > 0) {\n        buttonsHTML = (\n          <div class=\"dialog-buttons\">\n            {buttons.map((button) => (\n              <span\n                class={`dialog-button${button.strong ? ' dialog-button-strong' : ''}${\n                  button.color ? ` color-${button.color}` : ''\n                }${button.cssClass ? ` ${button.cssClass}` : ''}`}\n              >\n                {button.text}\n              </span>\n            ))}\n          </div>\n        );\n      }\n\n      const dialogHtml = (\n        <div class={dialogClasses.join(' ')}>\n          <div class=\"dialog-inner\">\n            {title && <div class=\"dialog-title\">{title}</div>}\n            {text && <div class=\"dialog-text\">{text}</div>}\n            {content}\n          </div>\n          {buttonsHTML}\n        </div>\n      );\n      $el = $(dialogHtml);\n    } else {\n      $el = $(dialog.params.el);\n    }\n\n    if ($el && $el.length > 0 && $el[0].f7Modal) {\n      return $el[0].f7Modal;\n    }\n\n    if ($el.length === 0) {\n      return dialog.destroy();\n    }\n\n    let $backdropEl;\n    if (backdrop) {\n      $backdropEl = app.$el.children('.dialog-backdrop');\n      if ($backdropEl.length === 0) {\n        $backdropEl = $('<div class=\"dialog-backdrop\"></div>');\n        app.$el.append($backdropEl);\n      }\n    }\n\n    // Assign events\n    function buttonOnClick(e) {\n      const buttonEl = this;\n      const index = $(buttonEl).index();\n      const button = buttons[index];\n      if (button.onClick) button.onClick(dialog, e);\n      if (dialog.params.onClick) dialog.params.onClick(dialog, index);\n      if (button.close !== false) dialog.close();\n    }\n    let addKeyboardHander;\n    function onKeyDown(e) {\n      const keyCode = e.keyCode;\n      buttons.forEach((button, index) => {\n        if (button.keyCodes && button.keyCodes.indexOf(keyCode) >= 0) {\n          if (document.activeElement) document.activeElement.blur();\n          if (button.onClick) button.onClick(dialog, e);\n          if (dialog.params.onClick) dialog.params.onClick(dialog, index);\n          if (button.close !== false) dialog.close();\n        }\n      });\n    }\n    if (buttons && buttons.length > 0) {\n      dialog.on('open', () => {\n        $el.find('.dialog-button').each((buttonEl, index) => {\n          const button = buttons[index];\n          if (button.keyCodes) addKeyboardHander = true;\n          $(buttonEl).on('click', buttonOnClick);\n        });\n        if (\n          addKeyboardHander &&\n          !device.ios &&\n          !device.android &&\n          !device.cordova &&\n          !device.capacitor\n        ) {\n          $(document).on('keydown', onKeyDown);\n        }\n      });\n      dialog.on('close', () => {\n        $el.find('.dialog-button').each((buttonEl) => {\n          $(buttonEl).off('click', buttonOnClick);\n        });\n        if (\n          addKeyboardHander &&\n          !device.ios &&\n          !device.android &&\n          !device.cordova &&\n          !device.capacitor\n        ) {\n          $(document).off('keydown', onKeyDown);\n        }\n        addKeyboardHander = false;\n      });\n    }\n    extend(dialog, {\n      app,\n      $el,\n      el: $el[0],\n      $backdropEl,\n      backdropEl: $backdropEl && $backdropEl[0],\n      type: 'dialog',\n      setProgress(progress, duration) {\n        app.progressbar.set($el.find('.progressbar'), progress, duration);\n        return dialog;\n      },\n      setText(newText) {\n        let $textEl = $el.find('.dialog-text');\n        if ($textEl.length === 0) {\n          $textEl = $('<div class=\"dialog-text\"></div>');\n          if (typeof title !== 'undefined') {\n            $textEl.insertAfter($el.find('.dialog-title'));\n          } else {\n            $el.find('.dialog-inner').prepend($textEl);\n          }\n        }\n        $textEl.html(newText);\n        dialog.params.text = newText;\n        return dialog;\n      },\n      setTitle(newTitle) {\n        let $titleEl = $el.find('.dialog-title');\n        if ($titleEl.length === 0) {\n          $titleEl = $('<div class=\"dialog-title\"></div>');\n          $el.find('.dialog-inner').prepend($titleEl);\n        }\n        $titleEl.html(newTitle);\n        dialog.params.title = newTitle;\n        return dialog;\n      },\n    });\n\n    function handleClick(e) {\n      const target = e.target;\n      const $target = $(target);\n      if ($target.closest(dialog.el).length === 0) {\n        if (\n          dialog.params.closeByBackdropClick &&\n          dialog.backdropEl &&\n          dialog.backdropEl === target\n        ) {\n          dialog.close();\n        }\n      }\n    }\n\n    dialog.on('opened', () => {\n      if (dialog.params.closeByBackdropClick) {\n        app.on('click', handleClick);\n      }\n    });\n    dialog.on('close', () => {\n      if (dialog.params.closeByBackdropClick) {\n        app.off('click', handleClick);\n      }\n    });\n\n    $el[0].f7Modal = dialog;\n\n    if (dialog.params.destroyOnClose) {\n      dialog.once('closed', () => {\n        setTimeout(() => {\n          dialog.destroy();\n        }, 0);\n      });\n    }\n\n    return dialog;\n  }\n}\nexport default Dialog;\n","import { extend, iosPreloaderContent, mdPreloaderContent } from '../../shared/utils.js';\nimport Dialog from './dialog-class.js';\nimport ModalMethods from '../../shared/modal-methods.js';\n\nexport default {\n  name: 'dialog',\n  params: {\n    dialog: {\n      title: undefined,\n      buttonOk: 'OK',\n      buttonCancel: 'Cancel',\n      usernamePlaceholder: 'Username',\n      passwordPlaceholder: 'Password',\n      preloaderTitle: 'Loading... ',\n      progressTitle: 'Loading... ',\n      backdrop: true,\n      closeByBackdropClick: false,\n      destroyPredefinedDialogs: true,\n      keyboardActions: true,\n      autoFocus: true,\n    },\n  },\n  static: {\n    Dialog,\n  },\n  create() {\n    const app = this;\n    function defaultDialogTitle() {\n      return app.params.dialog.title || app.name;\n    }\n    const destroyOnClose = app.params.dialog.destroyPredefinedDialogs;\n    const keyboardActions = app.params.dialog.keyboardActions;\n    const autoFocus = app.params.dialog.autoFocus;\n    const autoFocusHandler = autoFocus\n      ? {\n          on: {\n            opened(dialog) {\n              dialog.$el.find('input').eq(0).focus();\n            },\n          },\n        }\n      : {};\n    const isIosTheme = app.theme === 'ios';\n\n    app.dialog = extend(\n      ModalMethods({\n        app,\n        constructor: Dialog,\n        defaultSelector: '.dialog.modal-in',\n      }),\n      {\n        // Shortcuts\n        alert(...args) {\n          let [text, title, callbackOk] = args;\n          if (args.length === 2 && typeof args[1] === 'function') {\n            [text, callbackOk, title] = args;\n          }\n          return new Dialog(app, {\n            title: typeof title === 'undefined' ? defaultDialogTitle() : title,\n            text,\n            buttons: [\n              {\n                text: app.params.dialog.buttonOk,\n                strong: isIosTheme,\n                onClick: callbackOk,\n                keyCodes: keyboardActions ? [13, 27] : null,\n              },\n            ],\n            destroyOnClose,\n          }).open();\n        },\n        prompt(...args) {\n          let [text, title, callbackOk, callbackCancel, defaultValue] = args;\n          if (typeof args[1] === 'function') {\n            [text, callbackOk, callbackCancel, defaultValue, title] = args;\n          }\n          defaultValue =\n            typeof defaultValue === 'undefined' || defaultValue === null ? '' : defaultValue;\n          return new Dialog(app, {\n            title: typeof title === 'undefined' ? defaultDialogTitle() : title,\n            text,\n            content: `<div class=\"dialog-input-field input\"><input type=\"text\" class=\"dialog-input\" value=\"${defaultValue}\"></div>`,\n            buttons: [\n              {\n                text: app.params.dialog.buttonCancel,\n                keyCodes: keyboardActions ? [27] : null,\n                color: null,\n              },\n              {\n                text: app.params.dialog.buttonOk,\n                strong: isIosTheme,\n                keyCodes: keyboardActions ? [13] : null,\n              },\n            ],\n            onClick(dialog, index) {\n              const inputValue = dialog.$el.find('.dialog-input').val();\n              if (index === 0 && callbackCancel) callbackCancel(inputValue);\n              if (index === 1 && callbackOk) callbackOk(inputValue);\n            },\n            destroyOnClose,\n            ...autoFocusHandler,\n          }).open();\n        },\n        confirm(...args) {\n          let [text, title, callbackOk, callbackCancel] = args;\n          if (typeof args[1] === 'function') {\n            [text, callbackOk, callbackCancel, title] = args;\n          }\n          return new Dialog(app, {\n            title: typeof title === 'undefined' ? defaultDialogTitle() : title,\n            text,\n            buttons: [\n              {\n                text: app.params.dialog.buttonCancel,\n                onClick: callbackCancel,\n                keyCodes: keyboardActions ? [27] : null,\n                color: null,\n              },\n              {\n                text: app.params.dialog.buttonOk,\n                strong: isIosTheme,\n                onClick: callbackOk,\n                keyCodes: keyboardActions ? [13] : null,\n              },\n            ],\n            destroyOnClose,\n          }).open();\n        },\n        login(...args) {\n          let [text, title, callbackOk, callbackCancel] = args;\n          if (typeof args[1] === 'function') {\n            [text, callbackOk, callbackCancel, title] = args;\n          }\n          return new Dialog(app, {\n            title: typeof title === 'undefined' ? defaultDialogTitle() : title,\n            text,\n            // prettier-ignore\n            content: `\n              <div class=\"dialog-input-field dialog-input-double input\">\n                <input type=\"text\" name=\"dialog-username\" placeholder=\"${app.params.dialog.usernamePlaceholder}\" class=\"dialog-input\">\n              </div>\n              <div class=\"dialog-input-field dialog-input-double input\">\n                <input type=\"password\" name=\"dialog-password\" placeholder=\"${app.params.dialog.passwordPlaceholder}\" class=\"dialog-input\">\n              </div>`,\n            buttons: [\n              {\n                text: app.params.dialog.buttonCancel,\n                keyCodes: keyboardActions ? [27] : null,\n                color: null,\n              },\n              {\n                text: app.params.dialog.buttonOk,\n                strong: isIosTheme,\n                keyCodes: keyboardActions ? [13] : null,\n              },\n            ],\n            onClick(dialog, index) {\n              const username = dialog.$el.find('[name=\"dialog-username\"]').val();\n              const password = dialog.$el.find('[name=\"dialog-password\"]').val();\n              if (index === 0 && callbackCancel) callbackCancel(username, password);\n              if (index === 1 && callbackOk) callbackOk(username, password);\n            },\n            destroyOnClose,\n            ...autoFocusHandler,\n          }).open();\n        },\n        password(...args) {\n          let [text, title, callbackOk, callbackCancel] = args;\n          if (typeof args[1] === 'function') {\n            [text, callbackOk, callbackCancel, title] = args;\n          }\n          return new Dialog(app, {\n            title: typeof title === 'undefined' ? defaultDialogTitle() : title,\n            text,\n            // prettier-ignore\n            content: `\n              <div class=\"dialog-input-field input\">\n                <input type=\"password\" name=\"dialog-password\" placeholder=\"${app.params.dialog.passwordPlaceholder}\" class=\"dialog-input\">\n              </div>`,\n            buttons: [\n              {\n                text: app.params.dialog.buttonCancel,\n                keyCodes: keyboardActions ? [27] : null,\n                color: null,\n              },\n              {\n                text: app.params.dialog.buttonOk,\n                strong: isIosTheme,\n                keyCodes: keyboardActions ? [13] : null,\n              },\n            ],\n            onClick(dialog, index) {\n              const password = dialog.$el.find('[name=\"dialog-password\"]').val();\n              if (index === 0 && callbackCancel) callbackCancel(password);\n              if (index === 1 && callbackOk) callbackOk(password);\n            },\n            destroyOnClose,\n            ...autoFocusHandler,\n          }).open();\n        },\n        preloader(title, color) {\n          const preloaders = {\n            iosPreloaderContent,\n            mdPreloaderContent,\n          };\n          const preloaderInner = preloaders[`${app.theme}PreloaderContent`] || '';\n          return new Dialog(app, {\n            title:\n              typeof title === 'undefined' || title === null\n                ? app.params.dialog.preloaderTitle\n                : title,\n            // prettier-ignore\n            content: `<div class=\"preloader${color ? ` color-${color}` : ''}\">${preloaderInner}</div>`,\n            cssClass: 'dialog-preloader',\n            destroyOnClose,\n          }).open();\n        },\n        progress(...args) {\n          let [title, progress, color] = args;\n          if (args.length === 2) {\n            if (typeof args[0] === 'number') {\n              [progress, color, title] = args;\n            } else if (typeof args[0] === 'string' && typeof args[1] === 'string') {\n              [title, color, progress] = args;\n            }\n          } else if (args.length === 1) {\n            if (typeof args[0] === 'number') {\n              [progress, title, color] = args;\n            }\n          }\n          const infinite = typeof progress === 'undefined';\n          const dialog = new Dialog(app, {\n            title: typeof title === 'undefined' ? app.params.dialog.progressTitle : title,\n            cssClass: 'dialog-progress',\n            // prettier-ignore\n            content: `\n              <div class=\"progressbar${infinite ? '-infinite' : ''}${color ? ` color-${color}` : ''}\">\n                ${!infinite ? '<span></span>' : ''}\n              </div>\n            `,\n            destroyOnClose,\n          });\n          if (!infinite) dialog.setProgress(progress);\n          return dialog.open();\n        },\n      },\n    );\n  },\n};\n","import { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { extend, now, nextTick } from '../../shared/utils.js';\nimport { getSupport } from '../../shared/get-support.js';\nimport { getDevice } from '../../shared/get-device.js';\nimport Modal from '../modal/modal-class.js';\n\nclass Popup extends Modal {\n  constructor(app, params) {\n    const extendedParams = extend({ on: {} }, app.params.popup, params);\n\n    // Extends with open/close Modal methods;\n    super(app, extendedParams);\n\n    const popup = this;\n    const window = getWindow();\n    const document = getDocument();\n    const support = getSupport();\n    const device = getDevice();\n\n    popup.params = extendedParams;\n\n    // Find Element\n    let $el;\n    if (!popup.params.el) {\n      $el = $(popup.params.content)\n        .filter((node) => node.nodeType === 1)\n        .eq(0);\n    } else {\n      $el = $(popup.params.el).eq(0);\n    }\n\n    if ($el && $el.length > 0 && $el[0].f7Modal) {\n      return $el[0].f7Modal;\n    }\n\n    if ($el.length === 0) {\n      return popup.destroy();\n    }\n\n    let $backdropEl;\n    if (popup.params.backdrop && popup.params.backdropEl) {\n      $backdropEl = $(popup.params.backdropEl);\n    } else if (popup.params.backdrop) {\n      if (popup.params.backdropUnique) {\n        $backdropEl = $('<div class=\"popup-backdrop popup-backdrop-unique\"></div>');\n        popup.$containerEl.append($backdropEl);\n      } else {\n        $backdropEl = popup.$containerEl.children('.popup-backdrop');\n      }\n      if ($backdropEl.length === 0) {\n        $backdropEl = $('<div class=\"popup-backdrop\"></div>');\n        popup.$containerEl.append($backdropEl);\n      }\n    }\n\n    extend(popup, {\n      app,\n      push: $el.hasClass('popup-push') || popup.params.push,\n      $el,\n      el: $el[0],\n      $backdropEl,\n      backdropEl: $backdropEl && $backdropEl[0],\n      type: 'popup',\n      $htmlEl: $('html'),\n    });\n\n    if (popup.params.push) {\n      $el.addClass('popup-push');\n    }\n\n    function handleClick(e) {\n      const target = e.target;\n      const $target = $(target);\n      const keyboardOpened =\n        !device.desktop &&\n        device.cordova &&\n        ((window.Keyboard && window.Keyboard.isVisible) ||\n          (window.cordova.plugins &&\n            window.cordova.plugins.Keyboard &&\n            window.cordova.plugins.Keyboard.isVisible));\n      if (keyboardOpened) return;\n      if ($target.closest(popup.el).length === 0) {\n        if (\n          popup.params &&\n          popup.params.closeByBackdropClick &&\n          popup.params.backdrop &&\n          popup.backdropEl &&\n          popup.backdropEl === target\n        ) {\n          let needToClose = true;\n          popup.$el.nextAll('.popup.modal-in').each((popupEl) => {\n            const popupInstance = popupEl.f7Modal;\n            if (!popupInstance) return;\n            if (\n              popupInstance.params.closeByBackdropClick &&\n              popupInstance.params.backdrop &&\n              popupInstance.backdropEl === popup.backdropEl\n            ) {\n              needToClose = false;\n            }\n          });\n          if (needToClose) {\n            popup.close();\n          }\n        }\n      }\n    }\n\n    function onKeyDown(e) {\n      const keyCode = e.keyCode;\n      if (keyCode === 27 && popup.params.closeOnEscape) {\n        popup.close();\n      }\n    }\n\n    let pushOffset;\n    let isPush;\n\n    function pushViewScale(offset) {\n      return (app.height - offset * 2) / app.height;\n    }\n\n    let allowSwipeToClose = true;\n    let isTouched = false;\n    let startTouch;\n    let currentTouch;\n    let isScrolling;\n    let touchStartTime;\n    let touchesDiff;\n    let isMoved = false;\n    let pageContentEl;\n    let pageContentScrollTop;\n    let pageContentOffsetHeight;\n    let pageContentScrollHeight;\n    let popupHeight;\n    let $pushEl;\n\n    function handleTouchStart(e) {\n      if (isTouched || !allowSwipeToClose || !popup.params.swipeToClose || !e.isTrusted) return;\n      if (\n        popup.params.swipeHandler &&\n        $(e.target).closest(popup.params.swipeHandler).length === 0\n      ) {\n        return;\n      }\n      if ($(e.target).closest('.sortable-handler').length > 0) return;\n      isTouched = true;\n      isMoved = false;\n      startTouch = {\n        x: e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX,\n        y: e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY,\n      };\n      touchStartTime = now();\n      isScrolling = undefined;\n      if (!popup.params.swipeHandler && e.type === 'touchstart') {\n        pageContentEl = $(e.target).closest('.page-content')[0];\n      }\n    }\n    function handleTouchMove(e) {\n      if (!isTouched || !e.isTrusted) return;\n      currentTouch = {\n        x: e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX,\n        y: e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY,\n      };\n\n      if (typeof isScrolling === 'undefined') {\n        isScrolling = !!(\n          isScrolling ||\n          Math.abs(currentTouch.x - startTouch.x) > Math.abs(currentTouch.y - startTouch.y)\n        );\n      }\n      if (isScrolling) {\n        isTouched = false;\n        isMoved = false;\n        return;\n      }\n\n      touchesDiff = startTouch.y - currentTouch.y;\n      if (isPush && pushOffset && touchesDiff > 0) {\n        touchesDiff = 0;\n      }\n      const direction = touchesDiff < 0 ? 'to-bottom' : 'to-top';\n      $el.transition(0);\n\n      if (\n        typeof popup.params.swipeToClose === 'string' &&\n        direction !== popup.params.swipeToClose\n      ) {\n        $el.transform('');\n        $el.transition('');\n        return;\n      }\n\n      if (!isMoved) {\n        if (isPush && pushOffset) {\n          popupHeight = $el[0].offsetHeight;\n          $pushEl = $el.prevAll('.popup.modal-in').eq(0);\n          if ($pushEl.length === 0) {\n            $pushEl = app.$el.children('.view, .views');\n          }\n        }\n        if (pageContentEl) {\n          pageContentScrollTop = pageContentEl.scrollTop;\n          pageContentScrollHeight = pageContentEl.scrollHeight;\n          pageContentOffsetHeight = pageContentEl.offsetHeight;\n          if (\n            !(pageContentScrollHeight === pageContentOffsetHeight) &&\n            !(direction === 'to-bottom' && pageContentScrollTop === 0) &&\n            !(\n              direction === 'to-top' &&\n              pageContentScrollTop === pageContentScrollHeight - pageContentOffsetHeight\n            )\n          ) {\n            $el.transform('');\n            $el.transition('');\n            isTouched = false;\n            isMoved = false;\n            return;\n          }\n        }\n        isMoved = true;\n        popup.emit('local::swipeStart popupSwipeStart', popup);\n        popup.$el.trigger('popup:swipestart');\n      } else {\n        popup.emit('local::swipeMove popupSwipeMove', popup);\n        popup.$el.trigger('popup:swipemove');\n      }\n\n      e.preventDefault();\n      if (isPush && pushOffset) {\n        const pushProgress = 1 - Math.abs(touchesDiff / popupHeight);\n        const scale = 1 - (1 - pushViewScale(pushOffset)) * pushProgress;\n        if ($pushEl.hasClass('popup')) {\n          if ($pushEl.hasClass('popup-push')) {\n            $pushEl.transition(0).forEach((el) => {\n              el.style.setProperty(\n                'transform',\n                `translate3d(0, calc(-1 * ${pushProgress} * (var(--f7-popup-push-offset) + 10px)) , 0px) scale(${scale})`,\n                'important',\n              );\n            });\n          } else {\n            $pushEl.transition(0).forEach((el) => {\n              el.style.setProperty(\n                'transform',\n                `translate3d(0, 0px , 0px) scale(${scale})`,\n                'important',\n              );\n            });\n          }\n        } else {\n          $pushEl.transition(0).forEach((el) => {\n            el.style.setProperty('transform', `translate3d(0,0,0) scale(${scale})`, 'important');\n          });\n        }\n      }\n      $el.transition(0).transform(`translate3d(0,${-touchesDiff}px,0)`);\n    }\n    function handleTouchEnd(e) {\n      if (!e.isTrusted) return;\n      isTouched = false;\n      if (!isMoved) {\n        return;\n      }\n      popup.emit('local::swipeEnd popupSwipeEnd', popup);\n      popup.$el.trigger('popup:swipeend');\n      isMoved = false;\n      allowSwipeToClose = false;\n      $el.transition('');\n      if (isPush && pushOffset) {\n        $pushEl.transition('').transform('');\n      }\n      const direction = touchesDiff <= 0 ? 'to-bottom' : 'to-top';\n      if (\n        typeof popup.params.swipeToClose === 'string' &&\n        direction !== popup.params.swipeToClose\n      ) {\n        $el.transform('');\n        allowSwipeToClose = true;\n        return;\n      }\n      const diff = Math.abs(touchesDiff);\n      const timeDiff = new Date().getTime() - touchStartTime;\n      if ((timeDiff < 300 && diff > 20) || (timeDiff >= 300 && diff > 100)) {\n        nextTick(() => {\n          if (direction === 'to-bottom') {\n            $el.addClass('swipe-close-to-bottom');\n          } else {\n            $el.addClass('swipe-close-to-top');\n          }\n          $el.transform('');\n          popup.emit('local::swipeclose popupSwipeClose', popup);\n          popup.$el.trigger('popup:swipeclose');\n          popup.close();\n          allowSwipeToClose = true;\n        });\n        return;\n      }\n      allowSwipeToClose = true;\n      $el.transform('');\n    }\n\n    const passive = support.passiveListener ? { passive: true } : false;\n    if (popup.params.swipeToClose) {\n      $el.on(app.touchEvents.start, handleTouchStart, passive);\n      app.on('touchmove', handleTouchMove);\n      app.on('touchend:passive', handleTouchEnd);\n      popup.once('popupDestroy', () => {\n        $el.off(app.touchEvents.start, handleTouchStart, passive);\n        app.off('touchmove', handleTouchMove);\n        app.off('touchend:passive', handleTouchEnd);\n      });\n    }\n\n    let hasPreviousPushPopup;\n\n    const updatePushOffset = () => {\n      const wasPush = isPush;\n      if (popup.push) {\n        isPush =\n          popup.push &&\n          (app.width < 630 || app.height < 630 || $el.hasClass('popup-tablet-fullscreen'));\n      }\n      if (isPush && !wasPush) {\n        // eslint-disable-next-line\n        setPushOffset();\n      } else if (isPush && wasPush) {\n        popup.$htmlEl[0].style.setProperty('--f7-popup-push-scale', pushViewScale(pushOffset));\n      } else if (!isPush && wasPush) {\n        popup.$htmlEl.removeClass('with-modal-popup-push');\n        popup.$htmlEl[0].style.removeProperty('--f7-popup-push-scale');\n      }\n    };\n\n    const setPushOffset = () => {\n      app.off('resize', updatePushOffset);\n      if (popup.push) {\n        isPush =\n          popup.push &&\n          (app.width < 630 || app.height < 630 || $el.hasClass('popup-tablet-fullscreen'));\n      }\n      if (isPush) {\n        pushOffset = parseInt($el.css('--f7-popup-push-offset'), 10);\n        if (Number.isNaN(pushOffset)) {\n          pushOffset = 0;\n        }\n        if (!pushOffset) pushOffset = app.theme === 'ios' ? 44 : 48;\n        popup.$htmlEl[0].style.setProperty('--f7-popup-push-offset', `${pushOffset}px`);\n        $el.addClass('popup-push');\n        popup.$htmlEl.addClass('with-modal-popup-push');\n        popup.$htmlEl[0].style.setProperty('--f7-popup-push-scale', pushViewScale(pushOffset));\n      }\n      app.on('resize', updatePushOffset);\n    };\n\n    popup.on('open', () => {\n      hasPreviousPushPopup = false;\n      if (popup.params.closeOnEscape) {\n        $(document).on('keydown', onKeyDown);\n      }\n      $el.prevAll('.popup.modal-in').addClass('popup-behind');\n      setPushOffset();\n    });\n    popup.on('opened', () => {\n      $el.removeClass('swipe-close-to-bottom swipe-close-to-top');\n      if (popup.params.closeByBackdropClick) {\n        app.on('click', handleClick);\n      }\n    });\n    popup.on('close', () => {\n      hasPreviousPushPopup = popup.$el.prevAll('.popup-push.modal-in').length > 0;\n      if (popup.params.closeOnEscape) {\n        $(document).off('keydown', onKeyDown);\n      }\n      if (popup.params.closeByBackdropClick) {\n        app.off('click', handleClick);\n      }\n      $el.prevAll('.popup.modal-in').eq(0).removeClass('popup-behind');\n      if (isPush && pushOffset && !hasPreviousPushPopup) {\n        popup.$htmlEl.removeClass('with-modal-popup-push');\n        popup.$htmlEl.addClass('with-modal-popup-push-closing');\n      }\n      app.off('resize', updatePushOffset);\n    });\n    popup.on('closed', () => {\n      $el.removeClass('popup-behind');\n      if (isPush && pushOffset && !hasPreviousPushPopup) {\n        popup.$htmlEl.removeClass('with-modal-popup-push-closing');\n        popup.$htmlEl[0].style.removeProperty('--f7-popup-push-scale');\n        popup.$htmlEl[0].style.removeProperty('--f7-popup-push-offset');\n      }\n    });\n\n    $el[0].f7Modal = popup;\n\n    return popup;\n  }\n}\nexport default Popup;\n","import Popup from './popup-class.js';\nimport ModalMethods from '../../shared/modal-methods.js';\n\nexport default {\n  name: 'popup',\n  params: {\n    popup: {\n      backdrop: true,\n      backdropEl: undefined,\n      backdropUnique: false,\n      closeByBackdropClick: true,\n      closeOnEscape: false,\n      swipeToClose: false,\n      swipeHandler: null,\n      push: false,\n      containerEl: null,\n    },\n  },\n  static: {\n    Popup,\n  },\n  create() {\n    const app = this;\n    app.popup = ModalMethods({\n      app,\n      constructor: Popup,\n      defaultSelector: '.popup.modal-in',\n      parentSelector: '.popup',\n    });\n  },\n  clicks: {\n    '.popup-open': function openPopup($clickedEl, data = {}) {\n      const app = this;\n      app.popup.open(data.popup, data.animate, $clickedEl);\n    },\n    '.popup-close': function closePopup($clickedEl, data = {}) {\n      const app = this;\n      app.popup.close(data.popup, data.animate, $clickedEl);\n    },\n  },\n};\n","import $ from '../../shared/dom7.js';\nimport { extend } from '../../shared/utils.js';\nimport Modal from '../modal/modal-class.js';\n\nclass LoginScreen extends Modal {\n  constructor(app, params) {\n    const extendedParams = extend(\n      {\n        on: {},\n      },\n      params,\n    );\n\n    // Extends with open/close Modal methods;\n    super(app, extendedParams);\n\n    const loginScreen = this;\n\n    loginScreen.params = extendedParams;\n\n    // Find Element\n    let $el;\n    if (!loginScreen.params.el) {\n      $el = $(loginScreen.params.content)\n        .filter((node) => node.nodeType === 1)\n        .eq(0);\n    } else {\n      $el = $(loginScreen.params.el).eq(0);\n    }\n\n    if ($el && $el.length > 0 && $el[0].f7Modal) {\n      return $el[0].f7Modal;\n    }\n\n    if ($el.length === 0) {\n      return loginScreen.destroy();\n    }\n\n    extend(loginScreen, {\n      app,\n      $el,\n      el: $el[0],\n      type: 'loginScreen',\n    });\n\n    $el[0].f7Modal = loginScreen;\n\n    return loginScreen;\n  }\n}\nexport default LoginScreen;\n","import LoginScreen from './login-screen-class.js';\nimport ModalMethods from '../../shared/modal-methods.js';\n\nexport default {\n  name: 'loginScreen',\n  static: {\n    LoginScreen,\n  },\n  create() {\n    const app = this;\n    app.loginScreen = ModalMethods({\n      app,\n      constructor: LoginScreen,\n      defaultSelector: '.login-screen.modal-in',\n    });\n  },\n  clicks: {\n    '.login-screen-open': function openLoginScreen($clickedEl, data = {}) {\n      const app = this;\n      app.loginScreen.open(data.loginScreen, data.animate, $clickedEl);\n    },\n    '.login-screen-close': function closeLoginScreen($clickedEl, data = {}) {\n      const app = this;\n      app.loginScreen.close(data.loginScreen, data.animate, $clickedEl);\n    },\n  },\n};\n","import { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { extend } from '../../shared/utils.js';\nimport { getDevice } from '../../shared/get-device.js';\nimport Modal from '../modal/modal-class.js';\n\nclass Popover extends Modal {\n  constructor(app, params) {\n    const extendedParams = extend({ on: {} }, app.params.popover, params);\n\n    // Extends with open/close Modal methods;\n    super(app, extendedParams);\n\n    const popover = this;\n\n    const device = getDevice();\n    const window = getWindow();\n    const document = getDocument();\n\n    popover.params = extendedParams;\n\n    // Find Element\n    let $el;\n    if (!popover.params.el) {\n      $el = $(popover.params.content)\n        .filter((node) => node.nodeType === 1)\n        .eq(0);\n    } else {\n      $el = $(popover.params.el).eq(0);\n    }\n\n    if ($el && $el.length > 0 && $el[0].f7Modal) {\n      return $el[0].f7Modal;\n    }\n\n    // Find Target\n    const $targetEl = $(popover.params.targetEl).eq(0);\n\n    if ($el.length === 0) {\n      return popover.destroy();\n    }\n\n    // Backdrop\n    let $backdropEl;\n    const forceBackdropUnique =\n      popover.params.backdrop &&\n      app.$el.find('.popover.modal-in').filter((anotherPopoverEl) => anotherPopoverEl !== $el[0])\n        .length > 0;\n    if (popover.params.backdrop && popover.params.backdropEl) {\n      $backdropEl = $(popover.params.backdropEl);\n    } else if (popover.params.backdrop) {\n      if (popover.params.backdropUnique || forceBackdropUnique) {\n        $backdropEl = $('<div class=\"popover-backdrop popover-backdrop-unique\"></div>');\n        $backdropEl[0].f7PopoverRef = popover;\n        popover.$containerEl.append($backdropEl);\n      } else {\n        $backdropEl = popover.$containerEl.children('.popover-backdrop');\n      }\n      if ($backdropEl.length === 0) {\n        $backdropEl = $('<div class=\"popover-backdrop\"></div>');\n        popover.$containerEl.append($backdropEl);\n      }\n    }\n\n    // Find Arrow\n    let $arrowEl;\n    if ($el.find('.popover-arrow').length === 0 && popover.params.arrow) {\n      $arrowEl = $('<div class=\"popover-arrow\"></div>');\n      $el.prepend($arrowEl);\n    } else {\n      $arrowEl = $el.find('.popover-arrow');\n    }\n\n    // Open\n    const originalOpen = popover.open;\n\n    extend(popover, {\n      app,\n      $el,\n      el: $el[0],\n      $targetEl,\n      targetEl: $targetEl[0],\n      $arrowEl,\n      arrowEl: $arrowEl[0],\n      $backdropEl,\n      backdropEl: $backdropEl && $backdropEl[0],\n      type: 'popover',\n      forceBackdropUnique,\n      open(...args) {\n        let [targetEl, animate] = args;\n        if (typeof args[0] === 'boolean') [animate, targetEl] = args;\n        if (targetEl) {\n          popover.$targetEl = $(targetEl);\n          popover.targetEl = popover.$targetEl[0];\n        }\n        return originalOpen.call(popover, animate);\n      },\n    });\n\n    function handleResize() {\n      popover.resize();\n    }\n    popover.on('popoverOpen', () => {\n      popover.resize();\n      app.on('resize', handleResize);\n      $(window).on('keyboardDidShow keyboardDidHide', handleResize);\n      popover.on('popoverClose popoverBeforeDestroy', () => {\n        app.off('resize', handleResize);\n        $(window).off('keyboardDidShow keyboardDidHide', handleResize);\n      });\n    });\n\n    let touchStartTarget = null;\n    function handleTouchStart(e) {\n      touchStartTarget = e.target;\n    }\n\n    function handleClick(e) {\n      const target = e.target;\n      const $target = $(target);\n      const keyboardOpened =\n        !device.desktop &&\n        device.cordova &&\n        ((window.Keyboard && window.Keyboard.isVisible) ||\n          (window.cordova.plugins &&\n            window.cordova.plugins.Keyboard &&\n            window.cordova.plugins.Keyboard.isVisible));\n      if (keyboardOpened) return;\n      if ($target.closest(popover.el).length === 0) {\n        if (\n          popover.params.closeByBackdropClick &&\n          popover.params.backdrop &&\n          popover.backdropEl &&\n          popover.backdropEl === target &&\n          touchStartTarget === target\n        ) {\n          popover.close();\n        } else if (popover.params.closeByOutsideClick && touchStartTarget === target) {\n          const isAnotherPopoverBackdrop =\n            ($target.hasClass('popover-backdrop-unique') && target.f7PopoverRef !== popover) ||\n            ($target.hasClass('popover-backdrop') && target !== popover.backdropEl);\n          const isAnotherPopoverTarget =\n            target.closest('.popover') && target.closest('.popover') !== popover.$el[0];\n          if (!isAnotherPopoverBackdrop && !isAnotherPopoverTarget) {\n            popover.close();\n          }\n        }\n      }\n    }\n\n    function onKeyDown(e) {\n      const keyCode = e.keyCode;\n      if (keyCode === 27 && popover.params.closeOnEscape) {\n        popover.close();\n      }\n    }\n\n    if (popover.params.closeOnEscape) {\n      popover.on('popoverOpen', () => {\n        $(document).on('keydown', onKeyDown);\n      });\n      popover.on('popoverClose', () => {\n        $(document).off('keydown', onKeyDown);\n      });\n    }\n\n    popover.on('popoverOpened', () => {\n      if (popover.params.closeByOutsideClick || popover.params.closeByBackdropClick) {\n        app.on('touchstart', handleTouchStart);\n        app.on('click', handleClick);\n      }\n    });\n    popover.on('popoverClose', () => {\n      if (popover.params.closeByOutsideClick || popover.params.closeByBackdropClick) {\n        app.off('touchstart', handleTouchStart);\n        app.off('click', handleClick);\n      }\n    });\n\n    $el[0].f7Modal = popover;\n\n    return popover;\n  }\n\n  resize() {\n    const popover = this;\n    const { app, $el, $targetEl, $arrowEl } = popover;\n    const { targetX, targetY, verticalPosition } = popover.params;\n    $el.css({ left: '', top: '' });\n    const [width, height] = [$el.width(), $el.height()];\n    let arrowSize = 0;\n    let arrowLeft;\n    let arrowTop;\n    const hasArrow = $arrowEl.length > 0;\n    const arrowMin = app.theme === 'ios' ? 13 : 24;\n    if (hasArrow) {\n      $arrowEl.removeClass('on-left on-right on-top on-bottom').css({ left: '', top: '' });\n      arrowSize = $arrowEl.width() / 2;\n    }\n    $el\n      .removeClass(\n        'popover-on-left popover-on-right popover-on-top popover-on-bottom popover-on-middle',\n      )\n      .css({ left: '', top: '' });\n\n    let targetWidth;\n    let targetHeight;\n    let targetOffsetLeft;\n    let targetOffsetTop;\n    let safeAreaTop = parseInt($('html').css('--f7-safe-area-top'), 10);\n    let safeAreaLeft = parseInt($('html').css('--f7-safe-area-left'), 10);\n    let safeAreaRight = parseInt($('html').css('--f7-safe-area-right'), 10);\n    if (Number.isNaN(safeAreaTop)) safeAreaTop = 0;\n    if (Number.isNaN(safeAreaLeft)) safeAreaLeft = 0;\n    if (Number.isNaN(safeAreaRight)) safeAreaRight = 0;\n    if ($targetEl && $targetEl.length > 0) {\n      targetWidth = $targetEl.outerWidth();\n      targetHeight = $targetEl.outerHeight();\n\n      const targetOffset = $targetEl.offset();\n      targetOffsetLeft = targetOffset.left - app.left;\n      targetOffsetTop = targetOffset.top - app.top;\n\n      const targetParentPage = $targetEl.parents('.page');\n      if (targetParentPage.length > 0) {\n        targetOffsetTop -= targetParentPage[0].scrollTop;\n      }\n    } else if (typeof targetX !== 'undefined' && targetY !== 'undefined') {\n      targetOffsetLeft = targetX;\n      targetOffsetTop = targetY;\n      targetWidth = popover.params.targetWidth || 0;\n      targetHeight = popover.params.targetHeight || 0;\n    }\n\n    let [left, top, diff] = [0, 0, 0];\n    // Top Position\n    const forcedPosition = verticalPosition === 'auto' ? false : verticalPosition;\n    let position = forcedPosition || 'top';\n\n    if (\n      forcedPosition === 'top' ||\n      (!forcedPosition && height + arrowSize < targetOffsetTop - safeAreaTop)\n    ) {\n      // On top\n      top = targetOffsetTop - height - arrowSize;\n    } else if (\n      forcedPosition === 'bottom' ||\n      (!forcedPosition && height + arrowSize < app.height - targetOffsetTop - targetHeight)\n    ) {\n      // On bottom\n      position = 'bottom';\n      top = targetOffsetTop + targetHeight + arrowSize;\n    } else {\n      // On middle\n      position = 'middle';\n      top = targetHeight / 2 + targetOffsetTop - height / 2;\n      diff = top;\n      top = Math.max(5, Math.min(top, app.height - height - 5));\n      diff -= top;\n    }\n\n    // Horizontal Position\n    if (position === 'top' || position === 'bottom') {\n      left = targetWidth / 2 + targetOffsetLeft - width / 2;\n      diff = left;\n      left = Math.max(5, Math.min(left, app.width - width - 5));\n      if (safeAreaLeft) {\n        left = Math.max(left, safeAreaLeft);\n      }\n      if (safeAreaRight && left + width > app.width - 5 - safeAreaRight) {\n        left = app.width - 5 - safeAreaRight - width;\n      }\n\n      diff -= left;\n      if (hasArrow) {\n        if (position === 'top') {\n          $arrowEl.addClass('on-bottom');\n        }\n        if (position === 'bottom') {\n          $arrowEl.addClass('on-top');\n        }\n        arrowLeft = width / 2 - arrowSize + diff;\n        arrowLeft = Math.max(Math.min(arrowLeft, width - arrowSize * 2 - arrowMin), arrowMin);\n        $arrowEl.css({ left: `${arrowLeft}px` });\n      }\n    } else if (position === 'middle') {\n      left = targetOffsetLeft - width - arrowSize;\n      if (hasArrow) $arrowEl.addClass('on-right');\n      if (left < 5 || left + width + safeAreaRight > app.width || left < safeAreaLeft) {\n        if (left < 5) left = targetOffsetLeft + targetWidth + arrowSize;\n        if (left + width + safeAreaRight > app.width) left = app.width - width - 5 - safeAreaRight;\n        if (left < safeAreaLeft) left = safeAreaLeft;\n        if (hasArrow) $arrowEl.removeClass('on-right').addClass('on-left');\n      }\n      if (hasArrow) {\n        arrowTop = height / 2 - arrowSize + diff;\n        arrowTop = Math.max(Math.min(arrowTop, height - arrowSize * 2 - arrowMin), arrowMin);\n        $arrowEl.css({ top: `${arrowTop}px` });\n      }\n    }\n\n    // Horizontal Position\n    let hPosition;\n    if (targetOffsetLeft < app.width / 2) {\n      hPosition = 'right';\n    } else {\n      hPosition = 'left';\n    }\n    $el.addClass(`popover-on-${position} popover-on-${hPosition}`);\n\n    // Apply Styles\n    $el.css({ top: `${top}px`, left: `${left}px` });\n  }\n}\n\nexport default Popover;\n","import $ from '../../shared/dom7.js';\nimport { extend } from '../../shared/utils.js';\nimport Popover from './popover-class.js';\nimport ModalMethods from '../../shared/modal-methods.js';\n\nexport default {\n  name: 'popover',\n  params: {\n    popover: {\n      verticalPosition: 'auto',\n      arrow: true,\n      backdrop: true,\n      backdropEl: undefined,\n      backdropUnique: false,\n      closeByBackdropClick: true,\n      closeByOutsideClick: true,\n      closeOnEscape: false,\n      containerEl: null,\n    },\n  },\n  static: {\n    Popover,\n  },\n  create() {\n    const app = this;\n    app.popover = extend(\n      ModalMethods({\n        app,\n        constructor: Popover,\n        defaultSelector: '.popover.modal-in',\n      }),\n      {\n        open(popoverEl, targetEl, animate) {\n          let $popoverEl = $(popoverEl);\n          if ($popoverEl.length > 1) {\n            // check if same popover in other page\n            const $targetPage = $(targetEl).parents('.page');\n            if ($targetPage.length) {\n              $popoverEl.each((el) => {\n                const $el = $(el);\n                if ($el.parents($targetPage)[0] === $targetPage[0]) {\n                  $popoverEl = $el;\n                }\n              });\n            }\n          }\n          if ($popoverEl.length > 1) {\n            $popoverEl = $popoverEl.eq($popoverEl.length - 1);\n          }\n          let popover = $popoverEl[0].f7Modal;\n          const data = $popoverEl.dataset();\n          if (!popover) {\n            popover = new Popover(\n              app,\n              Object.assign(\n                {\n                  el: $popoverEl,\n                  targetEl,\n                },\n                data,\n              ),\n            );\n          }\n          return popover.open(targetEl, animate);\n        },\n      },\n    );\n  },\n  clicks: {\n    '.popover-open': function openPopover($clickedEl, data = {}) {\n      const app = this;\n      app.popover.open(data.popover, $clickedEl, data.animate);\n    },\n    '.popover-close': function closePopover($clickedEl, data = {}) {\n      const app = this;\n      app.popover.close(data.popover, data.animate, $clickedEl);\n    },\n  },\n};\n","/* eslint indent: [\"off\"] */\nimport { getWindow, getDocument } from 'ssr-window';\nimport { getDevice } from '../../shared/get-device.js';\nimport { extend, nextTick } from '../../shared/utils.js';\nimport Modal from '../modal/modal-class.js';\nimport $ from '../../shared/dom7.js';\n/** @jsx $jsx */\nimport $jsx from '../../shared/$jsx.js';\n\nclass Actions extends Modal {\n  constructor(app, params) {\n    const extendedParams = extend({ on: {} }, app.params.actions, params);\n\n    // Extends with open/close Modal methods;\n    super(app, extendedParams);\n\n    const actions = this;\n\n    const device = getDevice();\n    const window = getWindow();\n    const document = getDocument();\n\n    actions.params = extendedParams;\n\n    // Buttons\n    let groups;\n    if (actions.params.buttons) {\n      groups = actions.params.buttons;\n      if (!Array.isArray(groups[0])) groups = [groups];\n    }\n    actions.groups = groups;\n\n    // Find Element\n    let $el;\n    if (actions.params.el) {\n      $el = $(actions.params.el).eq(0);\n    } else if (actions.params.content) {\n      $el = $(actions.params.content)\n        .filter((node) => node.nodeType === 1)\n        .eq(0);\n    } else if (actions.params.buttons) {\n      if (actions.params.convertToPopover) {\n        actions.popoverHtml = actions.renderPopover();\n      }\n      actions.actionsHtml = actions.render();\n    }\n\n    if ($el && $el.length > 0 && $el[0].f7Modal) {\n      return $el[0].f7Modal;\n    }\n\n    if ($el && $el.length === 0 && !(actions.actionsHtml || actions.popoverHtml)) {\n      return actions.destroy();\n    }\n\n    // Backdrop\n    let $backdropEl;\n    if (actions.params.backdrop && actions.params.backdropEl) {\n      $backdropEl = $(actions.params.backdropEl);\n    } else if (actions.params.backdrop) {\n      if (actions.params.backdropUnique) {\n        $backdropEl = $('<div class=\"popup-backdrop popup-backdrop-unique\"></div>');\n        actions.$containerEl.append($backdropEl);\n      } else {\n        $backdropEl = actions.$containerEl.children('.actions-backdrop');\n      }\n      if ($backdropEl.length === 0) {\n        $backdropEl = $('<div class=\"actions-backdrop\"></div>');\n        actions.$containerEl.append($backdropEl);\n      }\n    }\n\n    const originalOpen = actions.open;\n    const originalClose = actions.close;\n\n    let popover;\n    function buttonOnClick(e) {\n      const $buttonEl = $(this);\n      let buttonIndex;\n      let groupIndex;\n      if ($buttonEl.hasClass('list-button') || $buttonEl.hasClass('item-link')) {\n        buttonIndex = $buttonEl.parents('li').index();\n        groupIndex = $buttonEl.parents('.list').index();\n      } else {\n        buttonIndex = $buttonEl.index();\n        groupIndex = $buttonEl.parents('.actions-group').index();\n      }\n      if (typeof groups !== 'undefined') {\n        const button = groups[groupIndex][buttonIndex];\n        if (button.onClick) button.onClick(actions, e);\n        if (actions.params.onClick) actions.params.onClick(actions, e);\n        if (button.close !== false) actions.close();\n      }\n    }\n    actions.open = function open(animate) {\n      let convertToPopover = false;\n      const { targetEl, targetX, targetY, targetWidth, targetHeight } = actions.params;\n      if (\n        actions.params.convertToPopover &&\n        (targetEl || (targetX !== undefined && targetY !== undefined))\n      ) {\n        // Popover\n        if (\n          actions.params.forceToPopover ||\n          (device.ios && device.ipad) ||\n          app.width >= 768 ||\n          device.desktop\n        ) {\n          convertToPopover = true;\n        }\n      }\n      if (convertToPopover && actions.popoverHtml) {\n        popover = app.popover.create({\n          containerEl: actions.params.containerEl,\n          content: actions.popoverHtml,\n          backdrop: actions.params.backdrop,\n          targetEl,\n          targetX,\n          targetY,\n          targetWidth,\n          targetHeight,\n          on: {\n            open() {\n              if (!actions.$el) {\n                actions.$el = popover.$el;\n              }\n              actions.$el.trigger(`modal:open ${actions.type.toLowerCase()}:open`);\n              actions.emit(`local::open modalOpen ${actions.type}Open`, actions);\n            },\n            opened() {\n              if (!actions.$el) {\n                actions.$el = popover.$el;\n              }\n              actions.$el.trigger(`modal:opened ${actions.type.toLowerCase()}:opened`);\n              actions.emit(`local::opened modalOpened ${actions.type}Opened`, actions);\n            },\n            close() {\n              if (!actions.$el) {\n                actions.$el = popover.$el;\n              }\n              actions.$el.trigger(`modal:close ${actions.type.toLowerCase()}:close`);\n              actions.emit(`local::close modalClose ${actions.type}Close`, actions);\n            },\n            closed() {\n              if (!actions.$el) {\n                actions.$el = popover.$el;\n              }\n              actions.$el.trigger(`modal:closed ${actions.type.toLowerCase()}:closed`);\n              actions.emit(`local::closed modalClosed ${actions.type}Closed`, actions);\n            },\n          },\n        });\n        popover.open(animate);\n        popover.once('popoverOpened', () => {\n          popover.$el.find('.list-button, .item-link').each((buttonEl) => {\n            $(buttonEl).on('click', buttonOnClick);\n          });\n        });\n        popover.once('popoverClosed', () => {\n          popover.$el.find('.list-button, .item-link').each((buttonEl) => {\n            $(buttonEl).off('click', buttonOnClick);\n          });\n          nextTick(() => {\n            popover.destroy();\n            popover = undefined;\n          });\n        });\n      } else {\n        actions.$el = actions.actionsHtml ? $(actions.actionsHtml) : actions.$el;\n        actions.$el[0].f7Modal = actions;\n        if (actions.groups) {\n          actions.$el.find('.actions-button').each((buttonEl) => {\n            $(buttonEl).on('click', buttonOnClick);\n          });\n          actions.once('actionsClosed', () => {\n            actions.$el.find('.actions-button').each((buttonEl) => {\n              $(buttonEl).off('click', buttonOnClick);\n            });\n          });\n        }\n        actions.el = actions.$el[0];\n        originalOpen.call(actions, animate);\n      }\n      return actions;\n    };\n\n    actions.close = function close(animate) {\n      if (popover) {\n        popover.close(animate);\n      } else {\n        originalClose.call(actions, animate);\n      }\n      return actions;\n    };\n\n    extend(actions, {\n      app,\n      $el,\n      el: $el ? $el[0] : undefined,\n      $backdropEl,\n      backdropEl: $backdropEl && $backdropEl[0],\n      type: 'actions',\n    });\n\n    function handleClick(e) {\n      const target = e.target;\n      const $target = $(target);\n      const keyboardOpened =\n        !device.desktop &&\n        device.cordova &&\n        ((window.Keyboard && window.Keyboard.isVisible) ||\n          (window.cordova.plugins &&\n            window.cordova.plugins.Keyboard &&\n            window.cordova.plugins.Keyboard.isVisible));\n      if (keyboardOpened) return;\n      if ($target.closest(actions.el).length === 0) {\n        if (\n          actions.params.closeByBackdropClick &&\n          actions.params.backdrop &&\n          actions.backdropEl &&\n          actions.backdropEl === target\n        ) {\n          actions.close();\n        } else if (actions.params.closeByOutsideClick) {\n          actions.close();\n        }\n      }\n    }\n\n    function onKeyDown(e) {\n      const keyCode = e.keyCode;\n      if (keyCode === 27 && actions.params.closeOnEscape) {\n        actions.close();\n      }\n    }\n\n    if (actions.params.closeOnEscape) {\n      actions.on('open', () => {\n        $(document).on('keydown', onKeyDown);\n      });\n      actions.on('close', () => {\n        $(document).off('keydown', onKeyDown);\n      });\n    }\n\n    actions.on('opened', () => {\n      if (actions.params.closeByBackdropClick || actions.params.closeByOutsideClick) {\n        app.on('click', handleClick);\n      }\n    });\n    actions.on('close', () => {\n      if (actions.params.closeByBackdropClick || actions.params.closeByOutsideClick) {\n        app.off('click', handleClick);\n      }\n    });\n\n    if ($el) {\n      $el[0].f7Modal = actions;\n    }\n\n    return actions;\n  }\n\n  render() {\n    const actions = this;\n    if (actions.params.render) return actions.params.render.call(actions, actions);\n    const { groups } = actions;\n    const cssClass = actions.params.cssClass;\n    return (\n      <div class={`actions-modal${actions.params.grid ? ' actions-grid' : ''} ${cssClass || ''}`}>\n        {groups.map((group) => (\n          <div class=\"actions-group\">\n            {group.map((button) => {\n              const buttonClasses = [`actions-${button.label ? 'label' : 'button'}`];\n              const { color, bg, strong, disabled, label, text, icon } = button;\n              if (color) buttonClasses.push(`color-${color}`);\n              if (bg) buttonClasses.push(`bg-color-${bg}`);\n              if (strong) buttonClasses.push('actions-button-strong');\n              if (disabled) buttonClasses.push('disabled');\n              if (label) {\n                return <div class={buttonClasses.join(' ')}>{text}</div>;\n              }\n              return (\n                <div class={buttonClasses.join(' ')}>\n                  {icon && <div class=\"actions-button-media\">{icon}</div>}\n                  <div class=\"actions-button-text\">{text}</div>\n                </div>\n              );\n            })}\n          </div>\n        ))}\n      </div>\n    );\n  }\n\n  renderPopover() {\n    const actions = this;\n    if (actions.params.renderPopover) return actions.params.renderPopover.call(actions, actions);\n    const { groups } = actions;\n    const cssClass = actions.params.cssClass;\n    return (\n      <div class={`popover popover-from-actions ${cssClass || ''}`}>\n        <div class=\"popover-inner\">\n          {groups.map((group) => (\n            <div class=\"list\">\n              <ul>\n                {group.map((button) => {\n                  const itemClasses = [];\n                  const { color, bg, strong, disabled, label, text, icon } = button;\n                  if (color) itemClasses.push(`color-${color}`);\n                  if (bg) itemClasses.push(`bg-color-${bg}`);\n                  if (strong) itemClasses.push('popover-from-actions-strong');\n                  if (disabled) itemClasses.push('disabled');\n                  if (label) {\n                    itemClasses.push('popover-from-actions-label');\n                    return `<li class=\"${itemClasses.join(' ')}\">${text}</li>`;\n                  }\n                  if (icon) {\n                    itemClasses.push('item-link item-content');\n                    return (\n                      <li>\n                        <a class={itemClasses.join(' ')}>\n                          <div class=\"item-media\">{icon}</div>\n                          <div class=\"item-inner\">\n                            <div class=\"item-title\">{text}</div>\n                          </div>\n                        </a>\n                      </li>\n                    );\n                  }\n                  itemClasses.push('list-button');\n                  return (\n                    <li>\n                      <a class={itemClasses.join(' ')}>{text}</a>\n                    </li>\n                  );\n                })}\n              </ul>\n            </div>\n          ))}\n        </div>\n      </div>\n    );\n  }\n}\n\nexport default Actions;\n","import Actions from './actions-class.js';\nimport ModalMethods from '../../shared/modal-methods.js';\n\nexport default {\n  name: 'actions',\n  params: {\n    actions: {\n      convertToPopover: true,\n      forceToPopover: false,\n      backdrop: true,\n      backdropEl: undefined,\n      backdropUnique: false,\n      cssClass: null,\n      closeByBackdropClick: true,\n      closeOnEscape: false,\n      render: null,\n      renderPopover: null,\n      containerEl: null,\n    },\n  },\n  static: {\n    Actions,\n  },\n  create() {\n    const app = this;\n    app.actions = ModalMethods({\n      app,\n      constructor: Actions,\n      defaultSelector: '.actions-modal.modal-in',\n    });\n  },\n  clicks: {\n    '.actions-open': function openActions($clickedEl, data = {}) {\n      const app = this;\n      app.actions.open(data.actions, data.animate, $clickedEl);\n    },\n    '.actions-close': function closeActions($clickedEl, data = {}) {\n      const app = this;\n      app.actions.close(data.actions, data.animate, $clickedEl);\n    },\n  },\n};\n","import { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { extend, now, getTranslate } from '../../shared/utils.js';\nimport { getSupport } from '../../shared/get-support.js';\nimport { getDevice } from '../../shared/get-device.js';\nimport Modal from '../modal/modal-class.js';\n\nclass Sheet extends Modal {\n  constructor(app, params) {\n    const extendedParams = extend({ on: {} }, app.params.sheet, params);\n\n    // Extends with open/close Modal methods;\n    super(app, extendedParams);\n\n    const sheet = this;\n    const window = getWindow();\n    const document = getDocument();\n    const support = getSupport();\n    const device = getDevice();\n\n    sheet.params = extendedParams;\n    if (typeof sheet.params.backdrop === 'undefined') {\n      sheet.params.backdrop = app.theme !== 'ios';\n    }\n\n    // Find Element\n    let $el;\n    if (!sheet.params.el) {\n      $el = $(sheet.params.content)\n        .filter((node) => node.nodeType === 1)\n        .eq(0);\n    } else {\n      $el = $(sheet.params.el).eq(0);\n    }\n\n    if ($el && $el.length > 0 && $el[0].f7Modal) {\n      return $el[0].f7Modal;\n    }\n\n    if ($el.length === 0) {\n      return sheet.destroy();\n    }\n    let $backdropEl;\n\n    if (sheet.params.backdrop && sheet.params.backdropEl) {\n      $backdropEl = $(sheet.params.backdropEl);\n    } else if (sheet.params.backdrop) {\n      if (sheet.params.backdropUnique) {\n        $backdropEl = $('<div class=\"sheet-backdrop sheet-backdrop-unique\"></div>');\n        sheet.$containerEl.append($backdropEl);\n      } else {\n        $backdropEl = sheet.$containerEl.children('.sheet-backdrop');\n      }\n      if ($backdropEl.length === 0) {\n        $backdropEl = $('<div class=\"sheet-backdrop\"></div>');\n        sheet.$containerEl.append($backdropEl);\n      }\n    }\n\n    extend(sheet, {\n      app,\n      push: $el.hasClass('sheet-modal-push') || sheet.params.push,\n      $el,\n      el: $el[0],\n      $backdropEl,\n      backdropEl: $backdropEl && $backdropEl[0],\n      type: 'sheet',\n      $htmlEl: $('html'),\n    });\n\n    if (sheet.params.push) {\n      $el.addClass('sheet-modal-push');\n    }\n\n    let $pageContentEl;\n    function scrollToElementOnOpen() {\n      const $scrollEl = $(sheet.params.scrollToEl).eq(0);\n      if ($scrollEl.length === 0) return;\n      $pageContentEl = $scrollEl.parents('.page-content');\n      if ($pageContentEl.length === 0) return;\n\n      const paddingTop = parseInt($pageContentEl.css('padding-top'), 10);\n      const paddingBottom = parseInt($pageContentEl.css('padding-bottom'), 10);\n      const pageHeight = $pageContentEl[0].offsetHeight - paddingTop - $el.height();\n      const pageScrollHeight = $pageContentEl[0].scrollHeight - paddingTop - $el.height();\n      const pageScroll = $pageContentEl.scrollTop();\n\n      let newPaddingBottom;\n\n      const scrollElTop = $scrollEl.offset().top - paddingTop + $scrollEl[0].offsetHeight;\n      if (scrollElTop > pageHeight) {\n        const scrollTop = pageScroll + scrollElTop - pageHeight;\n        if (scrollTop + pageHeight > pageScrollHeight) {\n          newPaddingBottom = scrollTop + pageHeight - pageScrollHeight + paddingBottom;\n          if (pageHeight === pageScrollHeight) {\n            newPaddingBottom = $el.height();\n          }\n          $pageContentEl.css({\n            'padding-bottom': `${newPaddingBottom}px`,\n          });\n        }\n        $pageContentEl.scrollTop(scrollTop, 300);\n      }\n    }\n\n    function scrollToElementOnClose() {\n      if ($pageContentEl && $pageContentEl.length > 0) {\n        $pageContentEl.css({\n          'padding-bottom': '',\n        });\n      }\n    }\n    function handleClick(e) {\n      const target = e.target;\n      const $target = $(target);\n      const keyboardOpened =\n        !device.desktop &&\n        device.cordova &&\n        ((window.Keyboard && window.Keyboard.isVisible) ||\n          (window.cordova.plugins &&\n            window.cordova.plugins.Keyboard &&\n            window.cordova.plugins.Keyboard.isVisible));\n      if (keyboardOpened) return;\n      if ($target.closest(sheet.el).length === 0) {\n        if (\n          sheet.params.closeByBackdropClick &&\n          sheet.params.backdrop &&\n          sheet.backdropEl &&\n          sheet.backdropEl === target\n        ) {\n          sheet.close();\n        } else if (sheet.params.closeByOutsideClick) {\n          sheet.close();\n        }\n      }\n    }\n\n    function onKeyDown(e) {\n      const keyCode = e.keyCode;\n      if (keyCode === 27 && sheet.params.closeOnEscape) {\n        sheet.close();\n      }\n    }\n\n    let pushOffset;\n\n    function pushViewScale(offset) {\n      return (app.height - offset * 2) / app.height;\n    }\n\n    const useBreakpoints = sheet.params.breakpoints && sheet.params.breakpoints.length > 0;\n    let isTouched = false;\n    let startTouch;\n    let currentTouch;\n    let isScrolling;\n    let touchStartTime;\n    let touchesDiff;\n    let isMoved = false;\n    let isTopSheetModal;\n    let swipeStepTranslate;\n    let startTranslate;\n    let currentTranslate;\n    let sheetElOffsetHeight;\n    let minTranslate;\n    let maxTranslate;\n    let $pushViewEl;\n    let pushBorderRadius;\n    let sheetPageContentEl;\n    let sheetPageContentScrollTop;\n    let sheetPageContentScrollHeight;\n    let sheetPageContentOffsetHeight;\n    let breakpointsTranslate = [];\n    let currentBreakpointIndex;\n    let backdropBreakpointSet = true;\n\n    function handleTouchStart(e) {\n      if (isTouched || !(sheet.params.swipeToClose || sheet.params.swipeToStep) || !e.isTrusted)\n        return;\n      if (\n        sheet.params.swipeHandler &&\n        $(e.target).closest(sheet.params.swipeHandler).length === 0\n      ) {\n        return;\n      }\n      if ($(e.target).closest('.sortable-handler').length > 0) return;\n\n      isTouched = true;\n      isMoved = false;\n      startTouch = {\n        x: e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX,\n        y: e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY,\n      };\n      touchStartTime = now();\n      isScrolling = undefined;\n      isTopSheetModal = $el.hasClass('sheet-modal-top');\n      if (!sheet.params.swipeHandler && e.type === 'touchstart') {\n        sheetPageContentEl = $(e.target).closest('.page-content')[0];\n      }\n    }\n    function handleTouchMove(e) {\n      if (!isTouched || !e.isTrusted) return;\n      currentTouch = {\n        x: e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX,\n        y: e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY,\n      };\n\n      if (typeof isScrolling === 'undefined') {\n        isScrolling = !!(\n          isScrolling ||\n          Math.abs(currentTouch.x - startTouch.x) > Math.abs(currentTouch.y - startTouch.y)\n        );\n      }\n      if (isScrolling) {\n        isTouched = false;\n        isMoved = false;\n        return;\n      }\n\n      touchesDiff = startTouch.y - currentTouch.y;\n\n      const direction = touchesDiff < 0 ? 'to-bottom' : 'to-top';\n\n      if (!isMoved) {\n        if (sheetPageContentEl && !$el.hasClass('modal-in-swipe-step')) {\n          sheetPageContentScrollTop = sheetPageContentEl.scrollTop;\n          sheetPageContentScrollHeight = sheetPageContentEl.scrollHeight;\n          sheetPageContentOffsetHeight = sheetPageContentEl.offsetHeight;\n          if (\n            !(sheetPageContentScrollHeight === sheetPageContentOffsetHeight) &&\n            !(direction === 'to-bottom' && sheetPageContentScrollTop === 0) &&\n            !(\n              direction === 'to-top' &&\n              sheetPageContentScrollTop ===\n                sheetPageContentScrollHeight - sheetPageContentOffsetHeight\n            )\n          ) {\n            $el.transform('');\n            isTouched = false;\n            isMoved = false;\n            return;\n          }\n        }\n        if (sheet.push && pushOffset) {\n          $pushViewEl = app.$el.children('.view, .views');\n        }\n        sheetElOffsetHeight = $el[0].offsetHeight;\n        startTranslate = getTranslate($el[0], 'y');\n        if (isTopSheetModal) {\n          minTranslate = sheet.params.swipeToClose ? -sheetElOffsetHeight : -swipeStepTranslate;\n          maxTranslate = 0;\n        } else {\n          minTranslate = 0;\n          maxTranslate = sheet.params.swipeToClose\n            ? sheetElOffsetHeight\n            : useBreakpoints\n            ? breakpointsTranslate[0]\n            : swipeStepTranslate;\n        }\n        isMoved = true;\n      }\n      currentTranslate = startTranslate - touchesDiff;\n      currentTranslate = Math.min(Math.max(currentTranslate, minTranslate), maxTranslate);\n      e.preventDefault();\n      if (useBreakpoints) {\n        let progress = isTopSheetModal\n          ? 1 + currentTranslate / sheetElOffsetHeight\n          : 1 - currentTranslate / sheetElOffsetHeight;\n        progress = Math.abs(progress);\n        progress = Math.min(Math.max(progress, 0), 1);\n        // eslint-disable-next-line\n        setBackdropBreakpoint(progress);\n        // eslint-disable-next-line\n        setPushBreakpoint(progress);\n      }\n      if (sheet.push && pushOffset && !useBreakpoints) {\n        let progress = (currentTranslate - startTranslate) / sheetElOffsetHeight;\n        if (sheet.params.swipeToStep) {\n          if (isTopSheetModal) {\n            progress = currentTranslate / swipeStepTranslate;\n          } else {\n            progress = 1 - (swipeStepTranslate - currentTranslate) / swipeStepTranslate;\n          }\n        }\n        progress = Math.abs(progress);\n        progress = Math.min(Math.max(progress, 0), 1);\n        const pushProgress = 1 - progress;\n        const scale = 1 - (1 - pushViewScale(pushOffset)) * pushProgress;\n        $pushViewEl.transition(0).forEach((el) => {\n          el.style.setProperty('transform', `translate3d(0,0,0) scale(${scale})`, 'important');\n        });\n        if (sheet.params.swipeToStep) {\n          $pushViewEl.css('border-radius', `${pushBorderRadius * pushProgress}px`);\n        }\n      }\n      $el.transition(0).transform(`translate3d(0,${currentTranslate}px,0)`);\n      if (sheet.params.swipeToStep) {\n        let progress;\n        if (isTopSheetModal) {\n          progress = 1 - currentTranslate / swipeStepTranslate;\n        } else {\n          progress = (swipeStepTranslate - currentTranslate) / swipeStepTranslate;\n        }\n        progress = Math.min(Math.max(progress, 0), 1);\n        $el.trigger('sheet:stepprogress', progress);\n        sheet.emit('local::stepProgress sheetStepProgress', sheet, progress);\n      }\n    }\n    function handleTouchEnd() {\n      isTouched = false;\n      if (!isMoved) {\n        return;\n      }\n      isMoved = false;\n      $el.transform('').transition('');\n      if (sheet.push && pushOffset) {\n        $pushViewEl.transition('');\n        if (!useBreakpoints) {\n          $pushViewEl.transform('');\n          $pushViewEl.css('border-radius', '');\n        }\n      }\n\n      const direction = touchesDiff < 0 ? 'to-bottom' : 'to-top';\n\n      const diff = Math.abs(touchesDiff);\n      if (diff === 0 || currentTranslate === startTranslate) return;\n\n      const timeDiff = new Date().getTime() - touchStartTime;\n\n      if (!sheet.params.swipeToStep && !useBreakpoints) {\n        if (direction !== (isTopSheetModal ? 'to-top' : 'to-bottom')) {\n          return;\n        }\n        if ((timeDiff < 300 && diff > 20) || (timeDiff >= 300 && diff > sheetElOffsetHeight / 2)) {\n          sheet.close();\n        }\n        return;\n      }\n\n      const openDirection = isTopSheetModal ? 'to-bottom' : 'to-top';\n      const closeDirection = isTopSheetModal ? 'to-top' : 'to-bottom';\n      const absCurrentTranslate = Math.abs(currentTranslate);\n      const absSwipeStepTranslate = Math.abs(swipeStepTranslate);\n      if (timeDiff < 300 && diff > 10 && useBreakpoints) {\n        // SHORT SWIPES BREAKPOINTS\n        if (direction === openDirection && typeof currentBreakpointIndex !== 'undefined') {\n          if (currentBreakpointIndex === params.breakpoints.length - 1) {\n            // open\n            sheet.setBreakpoint(1);\n          } else {\n            // move to next breakpoint\n            currentBreakpointIndex = Math.min(\n              breakpointsTranslate.length - 1,\n              currentBreakpointIndex + 1,\n            );\n            sheet.setBreakpoint(params.breakpoints[currentBreakpointIndex]);\n          }\n        }\n        if (direction === closeDirection) {\n          if (currentBreakpointIndex === 0) {\n            // close\n            sheet.close();\n          } else {\n            // move to prev breakpoint\n            if (typeof currentBreakpointIndex === 'undefined') {\n              currentBreakpointIndex = params.breakpoints.length - 1;\n            } else {\n              currentBreakpointIndex = Math.max(0, currentBreakpointIndex - 1);\n            }\n            sheet.setBreakpoint(params.breakpoints[currentBreakpointIndex]);\n          }\n        }\n      } else if (timeDiff < 300 && diff > 10) {\n        // SHORT SWIPES SWIPE STEP\n        if (direction === openDirection && absCurrentTranslate < absSwipeStepTranslate) {\n          // open step\n          $el.removeClass('modal-in-swipe-step');\n          $el.trigger('sheet:stepprogress', 1);\n          sheet.emit('local::stepProgress sheetStepProgress', sheet, 1);\n          sheet.emit('local::_swipeStep', false);\n          $el.trigger('sheet:stepopen');\n          sheet.emit('local::stepOpen sheetStepOpen', sheet);\n          if (sheet.push && pushOffset) {\n            sheet.$htmlEl[0].style.setProperty('--f7-sheet-push-scale', pushViewScale(pushOffset));\n            $pushViewEl.css('border-radius', '');\n          }\n        }\n        if (direction === closeDirection && absCurrentTranslate > absSwipeStepTranslate) {\n          // close sheet\n          if (sheet.params.swipeToClose) {\n            sheet.close();\n          } else {\n            // close step\n            $el.addClass('modal-in-swipe-step');\n            $el.trigger('sheet:stepprogress', 0);\n            sheet.emit('local::stepProgress sheetStepProgress', sheet, 0);\n            sheet.emit('local::_swipeStep', true);\n            $el.trigger('sheet:stepclose');\n            sheet.emit('local::stepClose sheetStepClose', sheet);\n            if (sheet.push && pushOffset) {\n              sheet.$htmlEl[0].style.removeProperty('--f7-sheet-push-scale');\n              $pushViewEl.css('border-radius', '0px');\n            }\n          }\n        }\n        if (direction === closeDirection && absCurrentTranslate <= absSwipeStepTranslate) {\n          // close step\n          $el.addClass('modal-in-swipe-step');\n          $el.trigger('sheet:stepprogress', 0);\n          sheet.emit('local::stepProgress sheetStepProgress', sheet, 0);\n          sheet.emit('local::_swipeStep', true);\n          $el.trigger('sheet:stepclose');\n          sheet.emit('local::stepClose sheetStepClose', sheet);\n          if (sheet.push && pushOffset) {\n            sheet.$htmlEl[0].style.removeProperty('--f7-sheet-push-scale');\n            $pushViewEl.css('border-radius', '0px');\n          }\n        }\n        return;\n      }\n      if (timeDiff >= 300 && useBreakpoints) {\n        // LONG SWIPES BREAKPOINTS\n        const allBreakpoints = [sheetElOffsetHeight, ...breakpointsTranslate, 0];\n        const closestTranslate = allBreakpoints.reduce((prev, curr) => {\n          return Math.abs(curr - currentTranslate) < Math.abs(prev - currentTranslate)\n            ? curr\n            : prev;\n        });\n        const closestIndex = allBreakpoints.indexOf(closestTranslate);\n        if (closestTranslate === 0) {\n          // open\n          sheet.setBreakpoint(1);\n        } else if (closestIndex === 0) {\n          // close\n          sheet.close();\n        } else {\n          // set bp\n          currentBreakpointIndex = closestIndex - 1;\n          sheet.setBreakpoint(params.breakpoints[currentBreakpointIndex]);\n        }\n      } else if (timeDiff >= 300) {\n        // LONG SWIPES SWIPE STEP\n        const stepOpened = !$el.hasClass('modal-in-swipe-step');\n        if (!stepOpened) {\n          if (absCurrentTranslate < absSwipeStepTranslate / 2) {\n            // open step\n            $el.removeClass('modal-in-swipe-step');\n            $el.trigger('sheet:stepprogress', 1);\n            sheet.emit('local::stepProgress sheetStepProgress', sheet, 1);\n            sheet.emit('local::_swipeStep', false);\n            $el.trigger('sheet:stepopen');\n            sheet.emit('local::stepOpen sheetStepOpen', sheet);\n            if (sheet.push && pushOffset) {\n              sheet.$htmlEl[0].style.setProperty(\n                '--f7-sheet-push-scale',\n                pushViewScale(pushOffset),\n              );\n              $pushViewEl.css('border-radius', '');\n            }\n          } else if (\n            absCurrentTranslate - absSwipeStepTranslate >\n            (sheetElOffsetHeight - absSwipeStepTranslate) / 2\n          ) {\n            // close sheet\n            if (sheet.params.swipeToClose) sheet.close();\n          }\n        } else if (stepOpened) {\n          if (\n            absCurrentTranslate >\n            absSwipeStepTranslate + (sheetElOffsetHeight - absSwipeStepTranslate) / 2\n          ) {\n            // close sheet\n            if (sheet.params.swipeToClose) sheet.close();\n          } else if (absCurrentTranslate > absSwipeStepTranslate / 2) {\n            // close step\n            $el.addClass('modal-in-swipe-step');\n            $el.trigger('sheet:stepprogress', 0);\n            sheet.emit('local::stepProgress sheetStepProgress', sheet, 0);\n            sheet.emit('local::_swipeStep', true);\n            $el.trigger('sheet:stepclose');\n            sheet.emit('local::stepClose sheetStepClose', sheet);\n            if (sheet.push && pushOffset) {\n              sheet.$htmlEl[0].style.removeProperty('--f7-sheet-push-scale');\n              $pushViewEl.css('border-radius', '0px');\n            }\n          }\n        }\n      }\n    }\n\n    const setPushBreakpoint = (breakpoint) => {\n      const { pushBreakpoint } = params;\n      if (\n        pushBreakpoint === null ||\n        typeof pushBreakpoint === 'undefined' ||\n        !sheet.push ||\n        !pushOffset\n      )\n        return;\n      if (breakpoint >= pushBreakpoint) {\n        sheet.$htmlEl\n          .addClass('with-modal-sheet-push')\n          .removeClass('with-modal-sheet-push-closing');\n        $pushViewEl.transition('').forEach((el) => {\n          el.style.setProperty(\n            'transform',\n            `translate3d(0,0,0) scale(${pushViewScale(pushOffset)})`,\n            'important',\n          );\n        });\n        $pushViewEl.css('border-radius', `${pushBorderRadius * 1}px`);\n      } else {\n        const pushBreakpoints = [0, ...params.breakpoints, 1];\n        const pushTransparentBreakpoint =\n          pushBreakpoints[pushBreakpoints.indexOf(pushBreakpoint) - 1];\n        if (breakpoint <= pushTransparentBreakpoint) {\n          $pushViewEl.transition('').css('transform', '');\n          $pushViewEl.css('border-radius', '');\n          sheet.$htmlEl.removeClass('with-modal-sheet-push');\n          if (breakpoint === pushTransparentBreakpoint) {\n            sheet.$htmlEl.addClass('with-modal-sheet-push-closing');\n          }\n        } else {\n          const progress =\n            (breakpoint - pushTransparentBreakpoint) / (pushBreakpoint - pushTransparentBreakpoint);\n          sheet.$htmlEl\n            .addClass('with-modal-sheet-push')\n            .removeClass('with-modal-sheet-push-closing');\n          $pushViewEl.transition(0).forEach((el) => {\n            el.style.setProperty(\n              'transform',\n              `translate3d(0,0,0) scale(${1 - (1 - pushViewScale(pushOffset)) * progress})`,\n              'important',\n            );\n          });\n          $pushViewEl.css('border-radius', `${pushBorderRadius * progress}px`);\n        }\n      }\n    };\n    const setBackdropBreakpoint = (breakpoint) => {\n      const { backdrop, backdropBreakpoint } = params;\n      if (!backdropBreakpoint || !backdrop || !$backdropEl.length) return;\n\n      if (breakpoint >= backdropBreakpoint) {\n        if (!backdropBreakpointSet) {\n          $backdropEl.transition('').css({ opacity: '', pointerEvents: '' });\n        }\n        backdropBreakpointSet = true;\n      } else {\n        const backdropBreakpoints = [0, ...params.breakpoints, 1];\n        const backdropTransparentBreakpoint =\n          backdropBreakpoints[backdropBreakpoints.indexOf(backdropBreakpoint) - 1];\n        if (breakpoint <= backdropTransparentBreakpoint) {\n          if (backdropBreakpointSet) {\n            $backdropEl.transition('').css({ opacity: 0, pointerEvents: 'none' });\n          }\n          backdropBreakpointSet = false;\n        } else {\n          const progress =\n            (breakpoint - backdropTransparentBreakpoint) /\n            (backdropBreakpoint - backdropTransparentBreakpoint);\n          $backdropEl.transition(0).css({ opacity: progress, pointerEvents: 'auto' });\n        }\n      }\n    };\n\n    sheet.calcBreakpoints = () => {\n      if (!useBreakpoints) {\n        return;\n      }\n      const fullSize = $el[0].offsetHeight;\n      // eslint-disable-next-line\n      const isTopSheetModal = $el.hasClass('sheet-modal-top');\n      breakpointsTranslate = [];\n      sheet.params.breakpoints.forEach((ratio) => {\n        breakpointsTranslate.push((fullSize - fullSize * ratio) * (isTopSheetModal ? -1 : 1));\n      });\n    };\n\n    sheet.setBreakpoint = (value) => {\n      if (!useBreakpoints) {\n        return sheet;\n      }\n      if (value === 1) {\n        // open\n        if (!sheet.opened) {\n          sheet.open();\n        }\n        $el.removeClass('modal-in-breakpoint');\n        currentBreakpointIndex = undefined;\n        setBackdropBreakpoint(value);\n        setPushBreakpoint(value);\n        $el.trigger('sheet:breakpoint', value);\n        sheet.emit('local::breakpoint sheetBreakpoint', sheet, value);\n      } else if (value === 0) {\n        // close\n        $el.trigger('sheet:breakpoint', value);\n        sheet.emit('local::breakpoint sheetBreakpoint', sheet, value);\n        sheet.close();\n      } else {\n        const index = params.breakpoints.indexOf(value);\n        if (index < 0) return sheet;\n        if (!sheet.opened) {\n          sheet.open();\n        }\n        setBackdropBreakpoint(value);\n        setPushBreakpoint(value);\n        $el.trigger('sheet:breakpoint', value);\n        sheet.emit('local::breakpoint sheetBreakpoint', sheet, value);\n        currentBreakpointIndex = index;\n        $el[0].style.setProperty('--f7-sheet-breakpoint', `${breakpointsTranslate[index]}px`);\n        $el.addClass('modal-in-breakpoint');\n      }\n      return sheet;\n    };\n\n    const setBreakpointsOnResize = () => {\n      sheet.calcBreakpoints();\n      if (typeof currentBreakpointIndex !== 'undefined') {\n        sheet.setBreakpoint(params.breakpoints[currentBreakpointIndex]);\n      }\n    };\n\n    sheet.setSwipeStep = function setSwipeStep(byResize = true) {\n      const $swipeStepEl = $el.find('.sheet-modal-swipe-step').eq(0);\n      if (!$swipeStepEl.length) return;\n\n      // eslint-disable-next-line\n      if ($el.hasClass('sheet-modal-top')) {\n        swipeStepTranslate = -(\n          $swipeStepEl.offset().top -\n          $el.offset().top +\n          $swipeStepEl[0].offsetHeight\n        );\n      } else {\n        swipeStepTranslate =\n          $el[0].offsetHeight -\n          ($swipeStepEl.offset().top - $el.offset().top + $swipeStepEl[0].offsetHeight);\n      }\n      $el[0].style.setProperty('--f7-sheet-swipe-step', `${swipeStepTranslate}px`);\n      if (!byResize) {\n        $el.addClass('modal-in-swipe-step');\n        sheet.emit('local::_swipeStep', true);\n      }\n    };\n\n    function onResize() {\n      if (useBreakpoints) {\n        setBreakpointsOnResize();\n      } else {\n        sheet.setSwipeStep(true);\n      }\n    }\n\n    const passive = support.passiveListener ? { passive: true } : false;\n    if (sheet.params.swipeToClose || sheet.params.swipeToStep || useBreakpoints) {\n      $el.on(app.touchEvents.start, handleTouchStart, passive);\n      app.on('touchmove', handleTouchMove);\n      app.on('touchend:passive', handleTouchEnd);\n      sheet.once('sheetDestroy', () => {\n        $el.off(app.touchEvents.start, handleTouchStart, passive);\n        app.off('touchmove', handleTouchMove);\n        app.off('touchend:passive', handleTouchEnd);\n      });\n    }\n\n    sheet.on('open', () => {\n      if (sheet.params.closeOnEscape) {\n        $(document).on('keydown', onKeyDown);\n      }\n      $el.prevAll('.popup.modal-in').addClass('popup-behind');\n      app.on('resize', onResize);\n      if (sheet.params.scrollToEl) {\n        scrollToElementOnOpen();\n      }\n\n      if (sheet.push) {\n        pushOffset = parseInt($el.css('--f7-sheet-push-offset'), 10);\n        if (Number.isNaN(pushOffset)) pushOffset = 0;\n        if (!pushOffset) pushOffset = app.theme === 'ios' ? 44 : 48;\n        sheet.$htmlEl[0].style.setProperty('--f7-sheet-push-offset', `${pushOffset}px`);\n        $el.addClass('sheet-modal-push');\n        if (!useBreakpoints) {\n          sheet.$htmlEl.addClass('with-modal-sheet-push');\n        }\n        if (!sheet.params.swipeToStep && !useBreakpoints) {\n          sheet.$htmlEl[0].style.setProperty('--f7-sheet-push-scale', pushViewScale(pushOffset));\n        } else {\n          $pushViewEl = app.$el.children('.view, .views');\n          pushBorderRadius = app.theme === 'ios' ? 10 : 16;\n          $pushViewEl.css('border-radius', '0px');\n        }\n      }\n\n      if (useBreakpoints) {\n        sheet.calcBreakpoints();\n        sheet.setBreakpoint(params.breakpoints[0]);\n      } else if (sheet.params.swipeToStep) {\n        sheet.setSwipeStep(false);\n      }\n    });\n    sheet.on('opened', () => {\n      if (sheet.params.closeByOutsideClick || sheet.params.closeByBackdropClick) {\n        app.on('click', handleClick);\n      }\n    });\n    sheet.on('close', () => {\n      currentBreakpointIndex = undefined;\n      if (sheet.params.swipeToStep || useBreakpoints) {\n        $el.removeClass('modal-in-swipe-step modal-in-breakpoint');\n        sheet.emit('local::_swipeStep', false);\n      }\n      app.off('resize', onResize);\n      if (sheet.params.closeOnEscape) {\n        $(document).off('keydown', onKeyDown);\n      }\n      if (sheet.params.scrollToEl) {\n        scrollToElementOnClose();\n      }\n      if (sheet.params.closeByOutsideClick || sheet.params.closeByBackdropClick) {\n        app.off('click', handleClick);\n      }\n      $el.prevAll('.popup.modal-in').eq(0).removeClass('popup-behind');\n      if (sheet.push && pushOffset) {\n        sheet.$htmlEl.removeClass('with-modal-sheet-push');\n        sheet.$htmlEl.addClass('with-modal-sheet-push-closing');\n        if ($pushViewEl) {\n          $pushViewEl.transform('');\n          $pushViewEl.css('border-radius', '');\n        }\n      }\n    });\n    sheet.on('closed', () => {\n      if (sheet.push && pushOffset) {\n        sheet.$htmlEl.removeClass('with-modal-sheet-push-closing');\n        sheet.$htmlEl[0].style.removeProperty('--f7-sheet-push-scale');\n        sheet.$htmlEl[0].style.removeProperty('--f7-sheet-push-offset');\n      }\n    });\n\n    sheet.stepOpen = function stepOpen() {\n      $el.removeClass('modal-in-swipe-step');\n      sheet.emit('local::_swipeStep', false);\n      if (sheet.push) {\n        if (!pushOffset) {\n          pushOffset = parseInt($el.css('--f7-sheet-push-offset'), 10);\n          if (Number.isNaN(pushOffset)) pushOffset = 0;\n        }\n        if (pushOffset) {\n          sheet.$htmlEl[0].style.setProperty('--f7-sheet-push-scale', pushViewScale(pushOffset));\n        }\n      }\n    };\n    sheet.stepClose = function stepClose() {\n      $el.addClass('modal-in-swipe-step');\n      sheet.emit('local::_swipeStep', true);\n      if (sheet.push) {\n        sheet.$htmlEl[0].style.removeProperty('--f7-sheet-push-scale');\n      }\n    };\n    sheet.stepToggle = function stepToggle() {\n      $el.toggleClass('modal-in-swipe-step');\n      sheet.emit('local::_swipeStep', $el.hasClass('modal-in-swipe-step'));\n    };\n\n    $el[0].f7Modal = sheet;\n\n    return sheet;\n  }\n}\nexport default Sheet;\n","import $ from '../../shared/dom7.js';\nimport { extend } from '../../shared/utils.js';\nimport Sheet from './sheet-class.js';\nimport ModalMethods from '../../shared/modal-methods.js';\n\nexport default {\n  name: 'sheet',\n  params: {\n    sheet: {\n      push: false,\n      backdrop: undefined,\n      backdropEl: undefined,\n      backdropUnique: false,\n      closeByBackdropClick: true,\n      closeByOutsideClick: false,\n      closeOnEscape: false,\n      swipeToClose: false,\n      swipeToStep: false,\n      breakpoints: [],\n      backdropBreakpoint: 0,\n      pushBreakpoint: 0,\n      swipeHandler: null,\n      containerEl: null,\n    },\n  },\n  static: {\n    Sheet,\n  },\n  create() {\n    const app = this;\n    app.sheet = extend(\n      {},\n      ModalMethods({\n        app,\n        constructor: Sheet,\n        defaultSelector: '.sheet-modal.modal-in',\n      }),\n      {\n        stepOpen(sheet) {\n          const sheetInstance = app.sheet.get(sheet);\n          if (sheetInstance && sheetInstance.stepOpen) return sheetInstance.stepOpen();\n          return undefined;\n        },\n        stepClose(sheet) {\n          const sheetInstance = app.sheet.get(sheet);\n          if (sheetInstance && sheetInstance.stepClose) return sheetInstance.stepClose();\n          return undefined;\n        },\n        stepToggle(sheet) {\n          const sheetInstance = app.sheet.get(sheet);\n          if (sheetInstance && sheetInstance.stepToggle) return sheetInstance.stepToggle();\n          return undefined;\n        },\n        setBreakpoint(sheet, breakpoint) {\n          const sheetInstance = app.sheet.get(sheet);\n          if (sheetInstance && sheetInstance.setBreakpoint)\n            return sheetInstance.setBreakpoint(breakpoint);\n          return undefined;\n        },\n      },\n    );\n  },\n  clicks: {\n    '.sheet-open': function openSheet($clickedEl, data = {}) {\n      const app = this;\n      if (\n        $('.sheet-modal.modal-in').length > 0 &&\n        data.sheet &&\n        $(data.sheet)[0] !== $('.sheet-modal.modal-in')[0]\n      ) {\n        app.sheet.close('.sheet-modal.modal-in');\n      }\n      app.sheet.open(data.sheet, data.animate, $clickedEl);\n    },\n    '.sheet-close': function closeSheet($clickedEl, data = {}) {\n      const app = this;\n      app.sheet.close(data.sheet, data.animate, $clickedEl);\n    },\n  },\n};\n","import { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { extend, nextTick } from '../../shared/utils.js';\nimport Modal from '../modal/modal-class.js';\n/** @jsx $jsx */\nimport $jsx from '../../shared/$jsx.js';\n\nclass Toast extends Modal {\n  constructor(app, params) {\n    const extendedParams = extend(\n      {\n        on: {},\n      },\n      app.params.toast,\n      params,\n    );\n\n    // Extends with open/close Modal methods;\n    super(app, extendedParams);\n\n    const toast = this;\n    const window = getWindow();\n\n    toast.app = app;\n\n    toast.params = extendedParams;\n\n    const { closeButton, closeTimeout } = toast.params;\n\n    let $el;\n    if (!toast.params.el) {\n      // Find Element\n      const toastHtml = toast.render();\n\n      $el = $(toastHtml);\n    } else {\n      $el = $(toast.params.el);\n    }\n\n    if ($el && $el.length > 0 && $el[0].f7Modal) {\n      return $el[0].f7Modal;\n    }\n\n    if ($el.length === 0) {\n      return toast.destroy();\n    }\n\n    extend(toast, {\n      $el,\n      el: $el[0],\n      type: 'toast',\n    });\n\n    $el[0].f7Modal = toast;\n\n    if (closeButton) {\n      $el.find('.toast-button').on('click', () => {\n        toast.emit('local::closeButtonClick toastCloseButtonClick', toast);\n        toast.close();\n      });\n\n      toast.on('beforeDestroy', () => {\n        $el.find('.toast-button').off('click');\n      });\n    }\n\n    let timeoutId;\n    toast.on('open', () => {\n      $('.toast.modal-in').each((openedEl) => {\n        const toastInstance = app.toast.get(openedEl);\n        if (openedEl !== toast.el && toastInstance) {\n          toastInstance.close();\n        }\n      });\n      if (closeTimeout) {\n        timeoutId = nextTick(() => {\n          toast.close();\n        }, closeTimeout);\n      }\n    });\n    toast.on('close', () => {\n      window.clearTimeout(timeoutId);\n    });\n\n    if (toast.params.destroyOnClose) {\n      toast.once('closed', () => {\n        setTimeout(() => {\n          toast.destroy();\n        }, 0);\n      });\n    }\n\n    return toast;\n  }\n\n  render() {\n    const toast = this;\n    if (toast.params.render) return toast.params.render.call(toast, toast);\n    const {\n      position,\n      horizontalPosition,\n      cssClass,\n      icon,\n      text,\n      closeButton,\n      closeButtonColor,\n      closeButtonText,\n    } = toast.params;\n    const horizontalClass =\n      position === 'top' || position === 'bottom' ? `toast-horizontal-${horizontalPosition}` : '';\n    return (\n      <div\n        class={`toast toast-${position} ${horizontalClass} ${cssClass || ''} ${\n          icon ? 'toast-with-icon' : ''\n        }`}\n      >\n        <div class=\"toast-content\">\n          {icon && <div class=\"toast-icon\">{icon}</div>}\n          <div class=\"toast-text\">{text}</div>\n          {closeButton && !icon && (\n            <a class={`toast-button button ${closeButtonColor ? `color-${closeButtonColor}` : ''}`}>\n              {closeButtonText}\n            </a>\n          )}\n        </div>\n      </div>\n    );\n  }\n}\nexport default Toast;\n","import { extend } from '../../shared/utils.js';\nimport Toast from './toast-class.js';\nimport ModalMethods from '../../shared/modal-methods.js';\n\nexport default {\n  name: 'toast',\n  static: {\n    Toast,\n  },\n  create() {\n    const app = this;\n    app.toast = extend(\n      {},\n      ModalMethods({\n        app,\n        constructor: Toast,\n        defaultSelector: '.toast.modal-in',\n      }),\n      {\n        // Shortcuts\n        show(params) {\n          extend(params, {\n            destroyOnClose: true,\n          });\n          return new Toast(app, params).open();\n        },\n      },\n    );\n  },\n  params: {\n    toast: {\n      icon: null,\n      text: null,\n      position: 'bottom',\n      horizontalPosition: 'left',\n      closeButton: false,\n      closeButtonColor: null,\n      closeButtonText: 'Ok',\n      closeTimeout: null,\n      cssClass: null,\n      render: null,\n      containerEl: null,\n    },\n  },\n};\n","import $ from '../../shared/dom7.js';\nimport { bindMethods, iosPreloaderContent, mdPreloaderContent } from '../../shared/utils.js';\n\nconst Preloader = {\n  init(el) {\n    const app = this;\n    const preloaders = {\n      iosPreloaderContent,\n      mdPreloaderContent,\n    };\n    const $el = $(el);\n    if (\n      $el.length === 0 ||\n      $el.children('.preloader-inner').length > 0 ||\n      $el.children('.preloader-inner-line').length > 0\n    )\n      return;\n    $el.append(preloaders[`${app.theme}PreloaderContent`]);\n  },\n  // Modal\n  visible: false,\n  show(color = 'white') {\n    const app = this;\n    if (Preloader.visible) return;\n    const preloaders = {\n      iosPreloaderContent,\n      mdPreloaderContent,\n    };\n    const preloaderInner = preloaders[`${app.theme}PreloaderContent`] || '';\n    $('html').addClass('with-modal-preloader');\n    // prettier-ignore\n    app.$el.append(`\n      <div class=\"preloader-backdrop\"></div>\n      <div class=\"preloader-modal\">\n        <div class=\"preloader color-${color}\">${preloaderInner}</div>\n      </div>\n    `);\n    Preloader.visible = true;\n  },\n  showIn(el, color = 'white') {\n    const app = this;\n    const preloaders = {\n      iosPreloaderContent,\n      mdPreloaderContent,\n    };\n    const preloaderInner = preloaders[`${app.theme}PreloaderContent`] || '';\n    $(el || 'html').addClass('with-modal-preloader');\n    // prettier-ignore\n    $(el || app.$el).append(`\n      <div class=\"preloader-backdrop\"></div>\n      <div class=\"preloader-modal\">\n        <div class=\"preloader color-${color}\">${preloaderInner}</div>\n      </div>\n    `);\n  },\n  hide() {\n    const app = this;\n    if (!Preloader.visible) return;\n    $('html').removeClass('with-modal-preloader');\n    app.$el.find('.preloader-backdrop, .preloader-modal').remove();\n    Preloader.visible = false;\n  },\n  hideIn(el) {\n    const app = this;\n    $(el || 'html').removeClass('with-modal-preloader');\n    $(el || app.$el)\n      .find('.preloader-backdrop, .preloader-modal')\n      .remove();\n  },\n};\nexport default {\n  name: 'preloader',\n  create() {\n    const app = this;\n    bindMethods(app, {\n      preloader: Preloader,\n    });\n  },\n  on: {\n    photoBrowserOpen(pb) {\n      const app = this;\n      pb.$el.find('.preloader').each((preloaderEl) => {\n        app.preloader.init(preloaderEl);\n      });\n    },\n    tabMounted(tabEl) {\n      const app = this;\n      $(tabEl)\n        .find('.preloader')\n        .each((preloaderEl) => {\n          app.preloader.init(preloaderEl);\n        });\n    },\n    pageInit(page) {\n      const app = this;\n      page.$el.find('.preloader').each((preloaderEl) => {\n        app.preloader.init(preloaderEl);\n      });\n    },\n  },\n  vnode: {\n    preloader: {\n      insert(vnode) {\n        const app = this;\n        const preloaderEl = vnode.elm;\n        app.preloader.init(preloaderEl);\n      },\n    },\n  },\n};\n","import $ from '../../shared/dom7.js';\nimport { bindMethods } from '../../shared/utils.js';\n\nconst Progressbar = {\n  set(...args) {\n    const app = this;\n    let [el, progress, duration] = args;\n    if (typeof args[0] === 'number') {\n      [progress, duration] = args;\n      el = app.$el;\n    }\n    if (typeof progress === 'undefined' || progress === null) return el;\n    if (!progress) progress = 0;\n\n    const $el = $(el || app.$el);\n    if ($el.length === 0) {\n      return el;\n    }\n    const progressNormalized = Math.min(Math.max(progress, 0), 100);\n    let $progressbarEl;\n    if ($el.hasClass('progressbar')) $progressbarEl = $el.eq(0);\n    else {\n      $progressbarEl = $el.children('.progressbar');\n    }\n    if ($progressbarEl.length === 0 || $progressbarEl.hasClass('progressbar-infinite')) {\n      return $progressbarEl;\n    }\n    let $progressbarLine = $progressbarEl.children('span');\n    if ($progressbarLine.length === 0) {\n      $progressbarLine = $('<span></span>');\n      $progressbarEl.append($progressbarLine);\n    }\n    $progressbarLine\n      .transition(typeof duration !== 'undefined' ? duration : '')\n      .transform(`translate3d(${(-100 + progressNormalized) * (app.rtl ? -1 : 1)}%,0,0)`);\n\n    return $progressbarEl[0];\n  },\n  show(...args) {\n    const app = this;\n\n    // '.page', 50, 'multi'\n    let [el, progress, color] = args;\n    let type = 'determined';\n\n    if (args.length === 2) {\n      if (\n        (typeof args[0] === 'string' || typeof args[0] === 'object') &&\n        typeof args[1] === 'string'\n      ) {\n        // '.page', 'multi'\n        [el, color, progress] = args;\n        type = 'infinite';\n      } else if (typeof args[0] === 'number' && typeof args[1] === 'string') {\n        // 50, 'multi'\n        [progress, color] = args;\n        el = app.$el;\n      }\n    } else if (args.length === 1) {\n      if (typeof args[0] === 'number') {\n        el = app.$el;\n        progress = args[0];\n      } else if (typeof args[0] === 'string') {\n        type = 'infinite';\n        el = app.$el;\n        color = args[0];\n      }\n    } else if (args.length === 0) {\n      type = 'infinite';\n      el = app.$el;\n    }\n\n    const $el = $(el);\n    if ($el.length === 0) return undefined;\n\n    let $progressbarEl;\n    if ($el.hasClass('progressbar') || $el.hasClass('progressbar-infinite')) {\n      $progressbarEl = $el;\n    } else {\n      $progressbarEl = $el.children(\n        '.progressbar:not(.progressbar-out), .progressbar-infinite:not(.progressbar-out)',\n      );\n      if ($progressbarEl.length === 0) {\n        $progressbarEl = $(`\n          <span class=\"progressbar${type === 'infinite' ? '-infinite' : ''}${\n            color ? ` color-${color}` : ''\n          } progressbar-in\">\n            ${type === 'infinite' ? '' : '<span></span>'}\n          </span>`);\n        $el.append($progressbarEl);\n      }\n    }\n\n    if (typeof progress !== 'undefined') {\n      app.progressbar.set($progressbarEl, progress);\n    }\n\n    return $progressbarEl[0];\n  },\n  hide(el, removeAfterHide = true) {\n    const app = this;\n    const $el = $(el || app.$el);\n    if ($el.length === 0) return undefined;\n    let $progressbarEl;\n    if ($el.hasClass('progressbar') || $el.hasClass('progressbar-infinite')) {\n      $progressbarEl = $el;\n    } else {\n      $progressbarEl = $el.children('.progressbar, .progressbar-infinite');\n    }\n    if (\n      $progressbarEl.length === 0 ||\n      !$progressbarEl.hasClass('progressbar-in') ||\n      $progressbarEl.hasClass('progressbar-out')\n    ) {\n      return $progressbarEl;\n    }\n    $progressbarEl\n      .removeClass('progressbar-in')\n      .addClass('progressbar-out')\n      .animationEnd(() => {\n        if (removeAfterHide) {\n          $progressbarEl.remove();\n        }\n      });\n    return $progressbarEl;\n  },\n};\n\nexport default {\n  name: 'progressbar',\n  create() {\n    const app = this;\n    bindMethods(app, {\n      progressbar: Progressbar,\n    });\n  },\n  on: {\n    tabMounted(tabEl) {\n      const app = this;\n      $(tabEl)\n        .find('.progressbar')\n        .each((progressbarEl) => {\n          const $progressbarEl = $(progressbarEl);\n          app.progressbar.set($progressbarEl, $progressbarEl.attr('data-progress'));\n        });\n    },\n    pageInit(page) {\n      const app = this;\n      page.$el.find('.progressbar').each((progressbarEl) => {\n        const $progressbarEl = $(progressbarEl);\n        app.progressbar.set($progressbarEl, $progressbarEl.attr('data-progress'));\n      });\n    },\n  },\n  vnode: {\n    progressbar: {\n      insert(vnode) {\n        const app = this;\n        const el = vnode.elm;\n        app.progressbar.set(el, el.getAttribute('data-progress'));\n      },\n      update(vnode) {\n        const app = this;\n        const el = vnode.elm;\n        app.progressbar.set(el, el.getAttribute('data-progress'));\n      },\n    },\n  },\n};\n","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { bindMethods } from '../../shared/utils.js';\nimport { getSupport } from '../../shared/get-support.js';\n\nconst Sortable = {\n  init() {\n    const app = this;\n    const document = getDocument();\n    let isTouched;\n    let isMoved;\n    let touchStartY;\n    let touchesDiff;\n    let $sortingEl;\n    let $sortingItems;\n    let $sortableContainer;\n    let sortingElHeight;\n    let minTop;\n    let maxTop;\n    let $insertAfterEl;\n    let $insertBeforeEl;\n    let indexFrom;\n    let $pageEl;\n    let $pageContentEl;\n    let pageHeight;\n    let pageOffset;\n    let sortingElOffsetLocal;\n    let sortingElOffsetTop;\n    let initialScrollTop;\n    let wasTapHold;\n\n    function handleTouchStart(e, isTapHold) {\n      isMoved = false;\n      isTouched = true;\n      wasTapHold = false;\n      touchStartY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n      $sortingEl = $(e.target).closest('li').eq(0);\n      indexFrom = $sortingEl.index();\n      $sortableContainer = $sortingEl.parents('.sortable');\n      const $listGroup = $sortingEl.parents('.list-group');\n      if ($listGroup.length && $listGroup.parents($sortableContainer).length) {\n        $sortableContainer = $listGroup;\n      }\n      $sortingItems = $sortableContainer\n        .children('ul')\n        .children('li:not(.disallow-sorting):not(.no-sorting)');\n      if (app.panel) app.panel.allowOpen = false;\n      if (app.swipeout) app.swipeout.allow = false;\n      if (isTapHold) {\n        $sortingEl.addClass('sorting');\n        $sortableContainer.addClass('sortable-sorting');\n        wasTapHold = true;\n      }\n    }\n    function handleTouchMove(e) {\n      if (!isTouched || !$sortingEl) return;\n      const pageY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n      if (!isMoved) {\n        $pageEl = $sortingEl.parents('.page');\n        $pageContentEl = $sortingEl.parents('.page-content');\n        const paddingTop = parseInt($pageContentEl.css('padding-top'), 10);\n        const paddingBottom = parseInt($pageContentEl.css('padding-bottom'), 10);\n        initialScrollTop = $pageContentEl[0].scrollTop;\n        pageOffset = $pageEl.offset().top + paddingTop;\n        pageHeight = $pageEl.height() - paddingTop - paddingBottom;\n        $sortingEl.addClass('sorting');\n        $sortableContainer.addClass('sortable-sorting');\n        sortingElOffsetLocal = $sortingEl[0].offsetTop;\n        minTop = $sortingEl[0].offsetTop;\n        maxTop = $sortingEl.parent().height() - sortingElOffsetLocal - $sortingEl.height();\n        sortingElHeight = $sortingEl[0].offsetHeight;\n        sortingElOffsetTop = $sortingEl.offset().top;\n      }\n      isMoved = true;\n\n      e.preventDefault();\n      e.f7PreventSwipePanel = true;\n\n      touchesDiff = pageY - touchStartY;\n\n      const translateScrollOffset = $pageContentEl[0].scrollTop - initialScrollTop;\n      const translate = Math.min(Math.max(touchesDiff + translateScrollOffset, -minTop), maxTop);\n      $sortingEl.transform(`translate3d(0,${translate}px,0)`);\n\n      const scrollAddition = 44;\n      let allowScroll = true;\n      if (touchesDiff + translateScrollOffset + scrollAddition < -minTop) {\n        allowScroll = false;\n      }\n      if (touchesDiff + translateScrollOffset - scrollAddition > maxTop) {\n        allowScroll = false;\n      }\n\n      $insertBeforeEl = undefined;\n      $insertAfterEl = undefined;\n\n      let scrollDiff;\n      if (allowScroll) {\n        if (\n          sortingElOffsetTop + touchesDiff + sortingElHeight + scrollAddition >\n          pageOffset + pageHeight\n        ) {\n          // To Bottom\n          scrollDiff =\n            sortingElOffsetTop +\n            touchesDiff +\n            sortingElHeight +\n            scrollAddition -\n            (pageOffset + pageHeight);\n        }\n        if (sortingElOffsetTop + touchesDiff < pageOffset + scrollAddition) {\n          // To Top\n          scrollDiff = sortingElOffsetTop + touchesDiff - pageOffset - scrollAddition;\n        }\n        if (scrollDiff) {\n          $pageContentEl[0].scrollTop += scrollDiff;\n        }\n      }\n\n      $sortingItems.each((el) => {\n        const $currentEl = $(el);\n        if ($currentEl[0] === $sortingEl[0]) return;\n        const currentElOffset = $currentEl[0].offsetTop;\n        const currentElHeight = $currentEl.height();\n        const sortingElOffset = sortingElOffsetLocal + translate;\n\n        let currentTranslate;\n        const prevTranslate = $currentEl[0].f7Translate;\n\n        if (\n          sortingElOffset >= currentElOffset - currentElHeight / 2 &&\n          $sortingEl.index() < $currentEl.index()\n        ) {\n          currentTranslate = -sortingElHeight;\n          $currentEl.transform(`translate3d(0, ${currentTranslate}px,0)`);\n          $insertAfterEl = $currentEl;\n          $insertBeforeEl = undefined;\n        } else if (\n          sortingElOffset <= currentElOffset + currentElHeight / 2 &&\n          $sortingEl.index() > $currentEl.index()\n        ) {\n          currentTranslate = sortingElHeight;\n          $currentEl[0].f7Translate = currentTranslate;\n          $currentEl.transform(`translate3d(0, ${currentTranslate}px,0)`);\n          $insertAfterEl = undefined;\n          if (!$insertBeforeEl) $insertBeforeEl = $currentEl;\n        } else {\n          currentTranslate = undefined;\n          $currentEl.transform('translate3d(0, 0%,0)');\n        }\n\n        if (prevTranslate !== currentTranslate) {\n          $currentEl.trigger('sortable:move');\n          app.emit('sortableMove', $currentEl[0], $sortableContainer[0]);\n        }\n\n        $currentEl[0].f7Translate = currentTranslate;\n      });\n    }\n    function handleTouchEnd() {\n      if (!isTouched || !isMoved) {\n        if (isTouched && !isMoved) {\n          if (app.panel) app.panel.allowOpen = true;\n          if (app.swipeout) app.swipeout.allow = true;\n          if (wasTapHold) {\n            $sortingEl.removeClass('sorting');\n            $sortableContainer.removeClass('sortable-sorting');\n          }\n        }\n        isTouched = false;\n        isMoved = false;\n        return;\n      }\n      if (app.panel) app.panel.allowOpen = true;\n      if (app.swipeout) app.swipeout.allow = true;\n\n      $sortingItems.transform('');\n      $sortingEl.removeClass('sorting');\n      $sortableContainer.removeClass('sortable-sorting');\n\n      let indexTo;\n      if ($insertAfterEl) indexTo = $insertAfterEl.index();\n      else if ($insertBeforeEl) indexTo = $insertBeforeEl.index();\n\n      let moveElements = $sortableContainer.dataset().sortableMoveElements;\n      if (typeof moveElements === 'undefined') {\n        moveElements = app.params.sortable.moveElements;\n      }\n\n      if (moveElements) {\n        if ($insertAfterEl) {\n          $sortingEl.insertAfter($insertAfterEl);\n        }\n        if ($insertBeforeEl) {\n          $sortingEl.insertBefore($insertBeforeEl);\n        }\n      }\n\n      if (($insertAfterEl || $insertBeforeEl) && $sortableContainer.hasClass('virtual-list')) {\n        indexFrom = $sortingEl[0].f7VirtualListIndex;\n        if (typeof indexFrom === 'undefined')\n          indexFrom = $sortingEl.attr('data-virtual-list-index');\n        if ($insertBeforeEl) {\n          indexTo = $insertBeforeEl[0].f7VirtualListIndex;\n          if (typeof indexTo === 'undefined')\n            indexTo = $insertBeforeEl.attr('data-virtual-list-index');\n        } else {\n          indexTo = $insertAfterEl[0].f7VirtualListIndex;\n          if (typeof indexTo === 'undefined')\n            indexTo = $insertAfterEl.attr('data-virtual-list-index');\n        }\n        if (indexTo !== null) indexTo = parseInt(indexTo, 10);\n        else indexTo = undefined;\n\n        const virtualList = $sortableContainer[0].f7VirtualList;\n\n        if (indexFrom) indexFrom = parseInt(indexFrom, 10);\n        if (indexTo) indexTo = parseInt(indexTo, 10);\n        if (virtualList) virtualList.moveItem(indexFrom, indexTo);\n      }\n      if (typeof indexTo !== 'undefined' && !Number.isNaN(indexTo) && indexTo !== indexFrom) {\n        $sortingEl.trigger('sortable:sort', { from: indexFrom, to: indexTo });\n        app.emit(\n          'sortableSort',\n          $sortingEl[0],\n          { from: indexFrom, to: indexTo, el: $sortingEl[0] },\n          $sortableContainer[0],\n        );\n      }\n\n      $insertBeforeEl = undefined;\n      $insertAfterEl = undefined;\n      isTouched = false;\n      isMoved = false;\n    }\n\n    const activeListener = getSupport().passiveListener\n      ? { passive: false, capture: false }\n      : false;\n\n    $(document).on(\n      app.touchEvents.start,\n      '.list.sortable .sortable-handler',\n      handleTouchStart,\n      activeListener,\n    );\n    app.on('touchmove:active', handleTouchMove);\n    app.on('touchend:passive', handleTouchEnd);\n\n    $(document).on('taphold', '.sortable-tap-hold', (e, pointerEvent) => {\n      handleTouchStart(pointerEvent, true);\n    });\n  },\n  enable(el = '.list.sortable') {\n    const app = this;\n    const $el = $(el);\n    if ($el.length === 0) return;\n    $el.addClass('sortable-enabled');\n    $el.trigger('sortable:enable');\n    app.emit('sortableEnable', $el[0]);\n  },\n  disable(el = '.list.sortable') {\n    const app = this;\n    const $el = $(el);\n    if ($el.length === 0) return;\n    $el.removeClass('sortable-enabled');\n    $el.trigger('sortable:disable');\n    app.emit('sortableDisable', $el[0]);\n  },\n  toggle(el = '.list.sortable') {\n    const app = this;\n    const $el = $(el);\n    if ($el.length === 0) return;\n    if ($el.hasClass('sortable-enabled')) {\n      app.sortable.disable($el);\n    } else {\n      app.sortable.enable($el);\n    }\n  },\n};\nexport default {\n  name: 'sortable',\n  params: {\n    sortable: {\n      moveElements: true,\n    },\n  },\n  create() {\n    const app = this;\n    bindMethods(app, {\n      sortable: Sortable,\n    });\n  },\n  on: {\n    init() {\n      const app = this;\n      if (!app.params.sortable) return;\n      app.sortable.init();\n    },\n  },\n  clicks: {\n    '.sortable-enable': function enable($clickedEl, data = {}) {\n      const app = this;\n      app.sortable.enable(data.sortable);\n    },\n    '.sortable-disable': function disable($clickedEl, data = {}) {\n      const app = this;\n      app.sortable.disable(data.sortable);\n    },\n    '.sortable-toggle': function toggle($clickedEl, data = {}) {\n      const app = this;\n      app.sortable.toggle(data.sortable);\n    },\n  },\n};\n","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { nextFrame, bindMethods } from '../../shared/utils.js';\nimport { getSupport } from '../../shared/get-support.js';\n\nconst Swipeout = {\n  init() {\n    const app = this;\n    const document = getDocument();\n    const touchesStart = {};\n    let isTouched;\n    let isMoved;\n    let isScrolling;\n    let touchStartTime;\n    let touchesDiff;\n    let $swipeoutEl;\n    let $swipeoutContent;\n    let $actionsRight;\n    let $actionsLeft;\n    let actionsLeftWidth;\n    let actionsRightWidth;\n    let translate;\n    let opened;\n    let openedActionsSide;\n    let $leftButtons;\n    let $rightButtons;\n    let direction;\n    let $overswipeLeftButton;\n    let $overswipeRightButton;\n    let overswipeLeft;\n    let overswipeRight;\n\n    function handleTouchStart(e) {\n      if (!app.swipeout.allow) return;\n      isMoved = false;\n      isTouched = true;\n      isScrolling = undefined;\n      touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n      touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n      touchStartTime = new Date().getTime();\n      $swipeoutEl = $(this);\n    }\n    function handleTouchMove(e) {\n      if (!isTouched) return;\n      const pageX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n      const pageY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n      if (typeof isScrolling === 'undefined') {\n        isScrolling = !!(\n          isScrolling || Math.abs(pageY - touchesStart.y) > Math.abs(pageX - touchesStart.x)\n        );\n      }\n      if (isScrolling) {\n        isTouched = false;\n        return;\n      }\n\n      if (!isMoved) {\n        if ($('.list.sortable-opened').length > 0) return;\n        $swipeoutContent = $swipeoutEl.find('.swipeout-content');\n        $actionsRight = $swipeoutEl.find('.swipeout-actions-right');\n        $actionsLeft = $swipeoutEl.find('.swipeout-actions-left');\n        actionsLeftWidth = null;\n        actionsRightWidth = null;\n        $leftButtons = null;\n        $rightButtons = null;\n        $overswipeRightButton = null;\n        $overswipeLeftButton = null;\n        if ($actionsLeft.length > 0) {\n          actionsLeftWidth = $actionsLeft.outerWidth();\n          $leftButtons = $actionsLeft.children('a');\n          $overswipeLeftButton = $actionsLeft.find('.swipeout-overswipe');\n        }\n        if ($actionsRight.length > 0) {\n          actionsRightWidth = $actionsRight.outerWidth();\n          $rightButtons = $actionsRight.children('a');\n          $overswipeRightButton = $actionsRight.find('.swipeout-overswipe');\n        }\n        opened = $swipeoutEl.hasClass('swipeout-opened');\n        if (opened) {\n          openedActionsSide =\n            $swipeoutEl.find('.swipeout-actions-left.swipeout-actions-opened').length > 0\n              ? 'left'\n              : 'right';\n        }\n        $swipeoutEl.removeClass('swipeout-transitioning');\n        if (!app.params.swipeout.noFollow) {\n          $swipeoutEl.find('.swipeout-actions-opened').removeClass('swipeout-actions-opened');\n          $swipeoutEl.removeClass('swipeout-opened');\n        }\n      }\n      isMoved = true;\n      if (e.cancelable) {\n        e.preventDefault();\n      }\n\n      touchesDiff = pageX - touchesStart.x;\n      translate = touchesDiff;\n\n      if (opened) {\n        if (openedActionsSide === 'right') translate -= actionsRightWidth;\n        else translate += actionsLeftWidth;\n      }\n\n      if (\n        (translate > 0 && $actionsLeft.length === 0) ||\n        (translate < 0 && $actionsRight.length === 0)\n      ) {\n        if (!opened) {\n          isTouched = false;\n          isMoved = false;\n          $swipeoutContent.transform('');\n          if ($rightButtons && $rightButtons.length > 0) {\n            $rightButtons.transform('');\n          }\n          if ($leftButtons && $leftButtons.length > 0) {\n            $leftButtons.transform('');\n          }\n          return;\n        }\n        translate = 0;\n      }\n\n      if (translate < 0) direction = 'to-left';\n      else if (translate > 0) direction = 'to-right';\n      else if (!direction) direction = 'to-left';\n\n      let buttonOffset;\n      let progress;\n\n      e.f7PreventSwipePanel = true;\n      if (app.params.swipeout.noFollow) {\n        if (opened) {\n          if (openedActionsSide === 'right' && touchesDiff > 0) {\n            app.swipeout.close($swipeoutEl);\n          }\n          if (openedActionsSide === 'left' && touchesDiff < 0) {\n            app.swipeout.close($swipeoutEl);\n          }\n        } else {\n          if (touchesDiff < 0 && $actionsRight.length > 0) {\n            app.swipeout.open($swipeoutEl, 'right');\n          }\n          if (touchesDiff > 0 && $actionsLeft.length > 0) {\n            app.swipeout.open($swipeoutEl, 'left');\n          }\n        }\n        isTouched = false;\n        isMoved = false;\n        return;\n      }\n      overswipeLeft = false;\n      overswipeRight = false;\n      if ($actionsRight.length > 0) {\n        // Show right actions\n        let buttonTranslate = translate;\n        progress = buttonTranslate / actionsRightWidth;\n        if (buttonTranslate < -actionsRightWidth) {\n          const ratio = buttonTranslate / -actionsRightWidth;\n          buttonTranslate = -actionsRightWidth - (-buttonTranslate - actionsRightWidth) ** 0.8;\n          translate = buttonTranslate;\n          if ($overswipeRightButton.length > 0 && ratio > app.params.swipeout.overswipeRatio) {\n            overswipeRight = true;\n          }\n        }\n        if (direction !== 'to-left') {\n          progress = 0;\n          buttonTranslate = 0;\n        }\n        $rightButtons.each((buttonEl) => {\n          const $buttonEl = $(buttonEl);\n          if (typeof buttonEl.f7SwipeoutButtonOffset === 'undefined') {\n            $buttonEl[0].f7SwipeoutButtonOffset = buttonEl.offsetLeft;\n          }\n          buttonOffset = buttonEl.f7SwipeoutButtonOffset;\n          if (\n            $overswipeRightButton.length > 0 &&\n            $buttonEl.hasClass('swipeout-overswipe') &&\n            direction === 'to-left'\n          ) {\n            $buttonEl.css({ left: `${overswipeRight ? -buttonOffset : 0}px` });\n            if (overswipeRight) {\n              if (!$buttonEl.hasClass('swipeout-overswipe-active')) {\n                $swipeoutEl.trigger('swipeout:overswipeenter');\n                app.emit('swipeoutOverswipeEnter', $swipeoutEl[0]);\n              }\n              $buttonEl.addClass('swipeout-overswipe-active');\n            } else {\n              if ($buttonEl.hasClass('swipeout-overswipe-active')) {\n                $swipeoutEl.trigger('swipeout:overswipeexit');\n                app.emit('swipeoutOverswipeExit', $swipeoutEl[0]);\n              }\n              $buttonEl.removeClass('swipeout-overswipe-active');\n            }\n          }\n          $buttonEl.transform(\n            `translate3d(${buttonTranslate - buttonOffset * (1 + Math.max(progress, -1))}px,0,0)`,\n          );\n        });\n      }\n      if ($actionsLeft.length > 0) {\n        // Show left actions\n        let buttonTranslate = translate;\n        progress = buttonTranslate / actionsLeftWidth;\n        if (buttonTranslate > actionsLeftWidth) {\n          const ratio = buttonTranslate / actionsRightWidth;\n          buttonTranslate = actionsLeftWidth + (buttonTranslate - actionsLeftWidth) ** 0.8;\n          translate = buttonTranslate;\n          if ($overswipeLeftButton.length > 0 && ratio > app.params.swipeout.overswipeRatio) {\n            overswipeLeft = true;\n          }\n        }\n        if (direction !== 'to-right') {\n          buttonTranslate = 0;\n          progress = 0;\n        }\n        $leftButtons.each((buttonEl, index) => {\n          const $buttonEl = $(buttonEl);\n          if (typeof buttonEl.f7SwipeoutButtonOffset === 'undefined') {\n            $buttonEl[0].f7SwipeoutButtonOffset =\n              actionsLeftWidth - buttonEl.offsetLeft - buttonEl.offsetWidth;\n          }\n          buttonOffset = buttonEl.f7SwipeoutButtonOffset;\n          if (\n            $overswipeLeftButton.length > 0 &&\n            $buttonEl.hasClass('swipeout-overswipe') &&\n            direction === 'to-right'\n          ) {\n            $buttonEl.css({ left: `${overswipeLeft ? buttonOffset : 0}px` });\n            if (overswipeLeft) {\n              if (!$buttonEl.hasClass('swipeout-overswipe-active')) {\n                $swipeoutEl.trigger('swipeout:overswipeenter');\n                app.emit('swipeoutOverswipeEnter', $swipeoutEl[0]);\n              }\n              $buttonEl.addClass('swipeout-overswipe-active');\n            } else {\n              if ($buttonEl.hasClass('swipeout-overswipe-active')) {\n                $swipeoutEl.trigger('swipeout:overswipeexit');\n                app.emit('swipeoutOverswipeExit', $swipeoutEl[0]);\n              }\n              $buttonEl.removeClass('swipeout-overswipe-active');\n            }\n          }\n          if ($leftButtons.length > 1) {\n            $buttonEl.css('z-index', $leftButtons.length - index);\n          }\n          $buttonEl.transform(\n            `translate3d(${buttonTranslate + buttonOffset * (1 - Math.min(progress, 1))}px,0,0)`,\n          );\n        });\n      }\n      $swipeoutEl.trigger('swipeout', progress);\n      app.emit('swipeout', $swipeoutEl[0], progress);\n      $swipeoutContent.transform(`translate3d(${translate}px,0,0)`);\n    }\n    function handleTouchEnd() {\n      if (!isTouched || !isMoved) {\n        isTouched = false;\n        isMoved = false;\n        return;\n      }\n\n      isTouched = false;\n      isMoved = false;\n      const timeDiff = new Date().getTime() - touchStartTime;\n      const $actions = direction === 'to-left' ? $actionsRight : $actionsLeft;\n      const actionsWidth = direction === 'to-left' ? actionsRightWidth : actionsLeftWidth;\n      let action;\n      let $buttons;\n      let i;\n\n      if (\n        (timeDiff < 300 &&\n          ((touchesDiff < -10 && direction === 'to-left') ||\n            (touchesDiff > 10 && direction === 'to-right'))) ||\n        (timeDiff >= 300 && Math.abs(translate) > actionsWidth / 2)\n      ) {\n        action = 'open';\n      } else {\n        action = 'close';\n      }\n      if (timeDiff < 300) {\n        if (Math.abs(translate) === 0) action = 'close';\n        if (Math.abs(translate) === actionsWidth) action = 'open';\n      }\n\n      if (action === 'open') {\n        Swipeout.el = $swipeoutEl[0];\n        $swipeoutEl.trigger('swipeout:open');\n        app.emit('swipeoutOpen', $swipeoutEl[0]);\n        $swipeoutEl.addClass('swipeout-opened swipeout-transitioning');\n        const newTranslate = direction === 'to-left' ? -actionsWidth : actionsWidth;\n        $swipeoutContent.transform(`translate3d(${newTranslate}px,0,0)`);\n        $actions.addClass('swipeout-actions-opened');\n        $buttons = direction === 'to-left' ? $rightButtons : $leftButtons;\n        if ($buttons) {\n          for (i = 0; i < $buttons.length; i += 1) {\n            $($buttons[i]).transform(`translate3d(${newTranslate}px,0,0)`);\n          }\n        }\n        if (overswipeRight) {\n          $actionsRight.find('.swipeout-overswipe').trigger('click', 'f7Overswipe');\n        }\n        if (overswipeLeft) {\n          $actionsLeft.find('.swipeout-overswipe').trigger('click', 'f7Overswipe');\n        }\n      } else {\n        $swipeoutEl.trigger('swipeout:close');\n        app.emit('swipeoutClose', $swipeoutEl[0]);\n        Swipeout.el = undefined;\n        $swipeoutEl.addClass('swipeout-transitioning').removeClass('swipeout-opened');\n        $swipeoutContent.transform('');\n        $actions.removeClass('swipeout-actions-opened');\n      }\n\n      let buttonOffset;\n      if ($leftButtons && $leftButtons.length > 0 && $leftButtons !== $buttons) {\n        $leftButtons.each((buttonEl) => {\n          const $buttonEl = $(buttonEl);\n          buttonOffset = buttonEl.f7SwipeoutButtonOffset;\n          if (typeof buttonOffset === 'undefined') {\n            $buttonEl[0].f7SwipeoutButtonOffset =\n              actionsLeftWidth - buttonEl.offsetLeft - buttonEl.offsetWidth;\n          }\n          $buttonEl.transform(`translate3d(${buttonOffset}px,0,0)`);\n        });\n      }\n      if ($rightButtons && $rightButtons.length > 0 && $rightButtons !== $buttons) {\n        $rightButtons.each((buttonEl) => {\n          const $buttonEl = $(buttonEl);\n          buttonOffset = buttonEl.f7SwipeoutButtonOffset;\n          if (typeof buttonOffset === 'undefined') {\n            $buttonEl[0].f7SwipeoutButtonOffset = buttonEl.offsetLeft;\n          }\n          $buttonEl.transform(`translate3d(${-buttonOffset}px,0,0)`);\n        });\n      }\n      $swipeoutContent.transitionEnd(() => {\n        if ((opened && action === 'open') || (!opened && action === 'close')) return;\n        $swipeoutEl.trigger(action === 'open' ? 'swipeout:opened' : 'swipeout:closed');\n        app.emit(action === 'open' ? 'swipeoutOpened' : 'swipeoutClosed', $swipeoutEl[0]);\n        $swipeoutEl.removeClass('swipeout-transitioning');\n        if (opened && action === 'close') {\n          if ($actionsRight.length > 0) {\n            $rightButtons.transform('');\n          }\n          if ($actionsLeft.length > 0) {\n            $leftButtons.transform('');\n          }\n        }\n      });\n    }\n\n    const passiveListener = getSupport().passiveListener ? { passive: true } : false;\n\n    app.on('touchstart', (e) => {\n      if (Swipeout.el) {\n        const $targetEl = $(e.target);\n        if (\n          !(\n            $(Swipeout.el).is($targetEl[0]) ||\n            $targetEl.parents('.swipeout').is(Swipeout.el) ||\n            $targetEl.hasClass('modal-in') ||\n            ($targetEl.attr('class') || '').indexOf('-backdrop') > 0 ||\n            $targetEl.hasClass('actions-modal') ||\n            $targetEl.parents('.actions-modal.modal-in, .dialog.modal-in').length > 0\n          )\n        ) {\n          app.swipeout.close(Swipeout.el);\n        }\n      }\n    });\n    $(document).on(app.touchEvents.start, 'li.swipeout', handleTouchStart, passiveListener);\n    app.on('touchmove:active', handleTouchMove);\n    app.on('touchend:passive', handleTouchEnd);\n  },\n  allow: true,\n  el: undefined,\n  open(...args) {\n    const app = this;\n    let [el, side, callback] = args;\n    if (typeof args[1] === 'function') {\n      [el, callback, side] = args;\n    }\n    const $el = $(el).eq(0);\n\n    if ($el.length === 0) return;\n    if (!$el.hasClass('swipeout') || $el.hasClass('swipeout-opened')) return;\n    if (!side) {\n      if ($el.find('.swipeout-actions-right').length > 0) side = 'right';\n      else side = 'left';\n    }\n    const $swipeoutActions = $el.find(`.swipeout-actions-${side}`);\n    const $swipeoutContent = $el.find('.swipeout-content');\n    if ($swipeoutActions.length === 0) return;\n    $el.trigger('swipeout:open').addClass('swipeout-opened').removeClass('swipeout-transitioning');\n    app.emit('swipeoutOpen', $el[0]);\n    $swipeoutActions.addClass('swipeout-actions-opened');\n    const $buttons = $swipeoutActions.children('a');\n    const swipeoutActionsWidth = $swipeoutActions.outerWidth();\n    const translate = side === 'right' ? -swipeoutActionsWidth : swipeoutActionsWidth;\n    if ($buttons.length > 1) {\n      $buttons.each((buttonEl, buttonIndex) => {\n        const $buttonEl = $(buttonEl);\n        if (side === 'right') {\n          $buttonEl.transform(`translate3d(${-buttonEl.offsetLeft}px,0,0)`);\n        } else {\n          $buttonEl\n            .css('z-index', $buttons.length - buttonIndex)\n            .transform(\n              `translate3d(${\n                swipeoutActionsWidth - buttonEl.offsetWidth - buttonEl.offsetLeft\n              }px,0,0)`,\n            );\n        }\n      });\n    }\n    $el.addClass('swipeout-transitioning');\n    $swipeoutContent.transitionEnd(() => {\n      $el.trigger('swipeout:opened');\n      app.emit('swipeoutOpened', $el[0]);\n      if (callback) callback.call($el[0]);\n    });\n    nextFrame(() => {\n      $buttons.transform(`translate3d(${translate}px,0,0)`);\n      $swipeoutContent.transform(`translate3d(${translate}px,0,0)`);\n    });\n    Swipeout.el = $el[0];\n  },\n  close(el, callback) {\n    const app = this;\n    const $el = $(el).eq(0);\n    if ($el.length === 0) return;\n    if (!$el.hasClass('swipeout-opened')) return;\n    const side = $el.find('.swipeout-actions-opened').hasClass('swipeout-actions-right')\n      ? 'right'\n      : 'left';\n    const $swipeoutActions = $el\n      .find('.swipeout-actions-opened')\n      .removeClass('swipeout-actions-opened');\n    const $buttons = $swipeoutActions.children('a');\n    const swipeoutActionsWidth = $swipeoutActions.outerWidth();\n    app.swipeout.allow = false;\n    $el.trigger('swipeout:close');\n    app.emit('swipeoutClose', $el[0]);\n    $el.removeClass('swipeout-opened').addClass('swipeout-transitioning');\n\n    let closeTimeout;\n    function onSwipeoutClose() {\n      app.swipeout.allow = true;\n      if ($el.hasClass('swipeout-opened')) return;\n      $el.removeClass('swipeout-transitioning');\n      $buttons.transform('');\n      $el.trigger('swipeout:closed');\n      app.emit('swipeoutClosed', $el[0]);\n      if (callback) callback.call($el[0]);\n      if (closeTimeout) clearTimeout(closeTimeout);\n    }\n    $el.find('.swipeout-content').transform('').transitionEnd(onSwipeoutClose);\n    closeTimeout = setTimeout(onSwipeoutClose, 500);\n\n    $buttons.each((buttonEl) => {\n      const $buttonEl = $(buttonEl);\n      if (side === 'right') {\n        $buttonEl.transform(`translate3d(${-buttonEl.offsetLeft}px,0,0)`);\n      } else {\n        $buttonEl.transform(\n          `translate3d(${swipeoutActionsWidth - buttonEl.offsetWidth - buttonEl.offsetLeft}px,0,0)`,\n        );\n      }\n      $buttonEl.css({ left: '0px' }).removeClass('swipeout-overswipe-active');\n    });\n    if (Swipeout.el && Swipeout.el === $el[0]) Swipeout.el = undefined;\n  },\n  delete(el, callback) {\n    const app = this;\n    const $el = $(el).eq(0);\n    if ($el.length === 0) return;\n    Swipeout.el = undefined;\n    $el.trigger('swipeout:delete');\n    app.emit('swipeoutDelete', $el[0]);\n    $el.css({ height: `${$el.outerHeight()}px` });\n    $el.transitionEnd(() => {\n      $el.trigger('swipeout:deleted');\n      app.emit('swipeoutDeleted', $el[0]);\n      if (callback) callback.call($el[0]);\n      if ($el.parents('.virtual-list').length > 0) {\n        const virtualList = $el.parents('.virtual-list')[0].f7VirtualList;\n        const virtualIndex = $el[0].f7VirtualListIndex;\n        if (virtualList && typeof virtualIndex !== 'undefined')\n          virtualList.deleteItem(virtualIndex);\n      } else if (app.params.swipeout.removeElements) {\n        if (app.params.swipeout.removeElementsWithTimeout) {\n          setTimeout(() => {\n            $el.remove();\n          }, app.params.swipeout.removeElementsTimeout);\n        } else {\n          $el.remove();\n        }\n      } else {\n        $el.removeClass('swipeout-deleting swipeout-transitioning');\n      }\n    });\n    // eslint-disable-next-line\n    // $el[0]._clientLeft = $el[0].clientLeft;\n    nextFrame(() => {\n      $el\n        .addClass('swipeout-deleting swipeout-transitioning')\n        .css({ height: '0px' })\n        .find('.swipeout-content')\n        .transform('translate3d(-100%,0,0)');\n    });\n  },\n};\nexport default {\n  name: 'swipeout',\n  params: {\n    swipeout: {\n      actionsNoFold: false,\n      noFollow: false,\n      removeElements: true,\n      removeElementsWithTimeout: false,\n      removeElementsTimeout: 0,\n      overswipeRatio: 1.2,\n    },\n  },\n  create() {\n    const app = this;\n    bindMethods(app, {\n      swipeout: Swipeout,\n    });\n  },\n  clicks: {\n    '.swipeout-open': function openSwipeout($clickedEl, data = {}) {\n      const app = this;\n      app.swipeout.open(data.swipeout, data.side);\n    },\n    '.swipeout-close': function closeSwipeout($clickedEl) {\n      const app = this;\n      const $swipeoutEl = $clickedEl.closest('.swipeout');\n      if ($swipeoutEl.length === 0) return;\n      app.swipeout.close($swipeoutEl);\n    },\n    '.swipeout-delete': function deleteSwipeout($clickedEl, data = {}) {\n      const app = this;\n      const $swipeoutEl = $clickedEl.closest('.swipeout');\n      if ($swipeoutEl.length === 0) return;\n      const { confirm, confirmTitle } = data;\n      if (data.confirm) {\n        app.dialog.confirm(confirm, confirmTitle, () => {\n          app.swipeout.delete($swipeoutEl);\n        });\n      } else {\n        app.swipeout.delete($swipeoutEl);\n      }\n    },\n  },\n  on: {\n    init() {\n      const app = this;\n      if (!app.params.swipeout) return;\n      app.swipeout.init();\n    },\n  },\n};\n","import $ from '../../shared/dom7.js';\nimport { nextFrame, bindMethods } from '../../shared/utils.js';\n\nconst Accordion = {\n  toggleClicked($clickedEl) {\n    const app = this;\n    let $accordionItemEl = $clickedEl.closest('.accordion-item').eq(0);\n    if (!$accordionItemEl.length) $accordionItemEl = $clickedEl.parents('li').eq(0);\n\n    const $accordionContent = $clickedEl.parents('.accordion-item-content').eq(0);\n    if ($accordionContent.length) {\n      if ($accordionContent.parents($accordionItemEl).length) return;\n    }\n\n    if ($clickedEl.parents('li').length > 1 && $clickedEl.parents('li')[0] !== $accordionItemEl[0])\n      return;\n    app.accordion.toggle($accordionItemEl);\n  },\n  open(el) {\n    const app = this;\n    const $el = $(el);\n    let prevented = false;\n    function prevent() {\n      prevented = true;\n    }\n    $el.trigger('accordion:beforeopen', { prevent }, prevent);\n    app.emit('accordionBeforeOpen', $el[0], prevent);\n    if (prevented) return;\n    const $list = $el.parents('.accordion-list').eq(0);\n    let $contentEl = $el.children('.accordion-item-content');\n    $contentEl.removeAttr('aria-hidden');\n    if ($contentEl.length === 0) $contentEl = $el.find('.accordion-item-content');\n    if ($contentEl.length === 0) return;\n    const $openedItem = $list.length > 0 && $el.parent().children('.accordion-item-opened');\n    if ($openedItem.length > 0) {\n      app.accordion.close($openedItem);\n    }\n    $contentEl.transitionEnd(() => {\n      if ($el.hasClass('accordion-item-opened')) {\n        $contentEl.transition(0);\n        $contentEl.css('height', 'auto');\n        nextFrame(() => {\n          $contentEl.transition('');\n          $el.trigger('accordion:opened');\n          app.emit('accordionOpened', $el[0]);\n        });\n      } else {\n        $contentEl.css('height', '');\n        $el.trigger('accordion:closed');\n        app.emit('accordionClosed', $el[0]);\n      }\n    });\n    $contentEl.css('height', `${$contentEl[0].scrollHeight}px`);\n    $el.trigger('accordion:open');\n    $el.addClass('accordion-item-opened');\n    app.emit('accordionOpen', $el[0]);\n  },\n  close(el) {\n    const app = this;\n    const $el = $(el);\n    let prevented = false;\n    function prevent() {\n      prevented = true;\n    }\n    $el.trigger('accordion:beforeclose', { prevent }, prevent);\n    app.emit('accordionBeforeClose', $el[0], prevent);\n    if (prevented) return;\n    let $contentEl = $el.children('.accordion-item-content');\n    if ($contentEl.length === 0) $contentEl = $el.find('.accordion-item-content');\n    $el.removeClass('accordion-item-opened');\n    $contentEl.attr('aria-hidden', true);\n    $contentEl.transition(0);\n    $contentEl.css('height', `${$contentEl[0].scrollHeight}px`);\n    // Close\n    $contentEl.transitionEnd(() => {\n      if ($el.hasClass('accordion-item-opened')) {\n        $contentEl.transition(0);\n        $contentEl.css('height', 'auto');\n        nextFrame(() => {\n          $contentEl.transition('');\n          $el.trigger('accordion:opened');\n          app.emit('accordionOpened', $el[0]);\n        });\n      } else {\n        $contentEl.css('height', '');\n        $el.trigger('accordion:closed');\n        app.emit('accordionClosed', $el[0]);\n      }\n    });\n    nextFrame(() => {\n      $contentEl.transition('');\n      $contentEl.css('height', '');\n      $el.trigger('accordion:close');\n      app.emit('accordionClose', $el[0]);\n    });\n  },\n  toggle(el) {\n    const app = this;\n    const $el = $(el);\n    if ($el.length === 0) return;\n    if ($el.hasClass('accordion-item-opened')) app.accordion.close(el);\n    else app.accordion.open(el);\n  },\n};\n\nexport default {\n  name: 'accordion',\n  create() {\n    const app = this;\n    bindMethods(app, {\n      accordion: Accordion,\n    });\n  },\n  clicks: {\n    '.accordion-item .item-link, .accordion-item-toggle, .links-list.accordion-list > ul > li > a':\n      function open($clickedEl) {\n        const app = this;\n        Accordion.toggleClicked.call(app, $clickedEl);\n      },\n  },\n};\n","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { extend, deleteProps } from '../../shared/utils.js';\nimport Framework7Class from '../../shared/class.js';\nimport { getDevice } from '../../shared/get-device.js';\n\nclass VirtualList extends Framework7Class {\n  constructor(app, params = {}) {\n    super(params, [app]);\n    const vl = this;\n    const device = getDevice();\n    const document = getDocument();\n\n    let defaultHeight;\n    if (app.theme === 'md') {\n      defaultHeight = 48;\n    } else if (app.theme === 'ios') {\n      defaultHeight = 44;\n    }\n\n    const defaults = {\n      cols: 1,\n      height: defaultHeight,\n      cache: true,\n      dynamicHeightBufferSize: 1,\n      showFilteredItemsOnly: false,\n      renderExternal: undefined,\n      setListHeight: true,\n      searchByItem: undefined,\n      searchAll: undefined,\n      ul: null,\n      createUl: true,\n      scrollableParentEl: undefined,\n      renderItem(item) {\n        return `\n          <li>\n            <div class=\"item-content\">\n              <div class=\"item-inner\">\n                <div class=\"item-title\">${item}</div>\n              </div>\n            </div>\n          </li>\n        `.trim();\n      },\n      on: {},\n    };\n\n    // Extend defaults with modules params\n    vl.useModulesParams(defaults);\n\n    vl.params = extend(defaults, params);\n    if (vl.params.height === undefined || !vl.params.height) {\n      vl.params.height = defaultHeight;\n    }\n\n    vl.$el = $(params.el);\n    vl.el = vl.$el[0];\n\n    if (vl.$el.length === 0) return undefined;\n    vl.$el[0].f7VirtualList = vl;\n\n    vl.items = vl.params.items;\n    if (vl.params.showFilteredItemsOnly) {\n      vl.filteredItems = [];\n    }\n    if (vl.params.renderItem) {\n      vl.renderItem = vl.params.renderItem;\n    }\n    vl.$pageContentEl = vl.$el.parents('.page-content');\n    vl.pageContentEl = vl.$pageContentEl[0];\n\n    vl.$scrollableParentEl = vl.params.scrollableParentEl\n      ? $(vl.params.scrollableParentEl).eq(0)\n      : vl.$pageContentEl;\n    if (!vl.$scrollableParentEl.length && vl.$pageContentEl.length) {\n      vl.$scrollableParentEl = vl.$pageContentEl;\n    }\n    vl.scrollableParentEl = vl.$scrollableParentEl[0];\n\n    // Bad scroll\n    if (typeof vl.params.updatableScroll !== 'undefined') {\n      vl.updatableScroll = vl.params.updatableScroll;\n    } else {\n      vl.updatableScroll = true;\n      if (device.ios && device.osVersion.split('.')[0] < 8) {\n        vl.updatableScroll = false;\n      }\n    }\n\n    // Append <ul>\n    const ul = vl.params.ul;\n    vl.$ul = ul ? $(vl.params.ul) : vl.$el.children('ul');\n    if (vl.$ul.length === 0 && vl.params.createUl) {\n      vl.$el.append('<ul></ul>');\n      vl.$ul = vl.$el.children('ul');\n    }\n    vl.ul = vl.$ul[0];\n\n    let $itemsWrapEl;\n    if (!vl.ul && !vl.params.createUl) $itemsWrapEl = vl.$el;\n    else $itemsWrapEl = vl.$ul;\n\n    extend(vl, {\n      $itemsWrapEl,\n      itemsWrapEl: $itemsWrapEl[0],\n      // DOM cached items\n      domCache: {},\n      // Temporary DOM Element\n      tempDomElement: document.createElement('ul'),\n      // Last repain position\n      lastRepaintY: null,\n      // Fragment\n      fragment: document.createDocumentFragment(),\n      // Props\n      pageHeight: undefined,\n      rowsPerScreen: undefined,\n      rowsBefore: undefined,\n      rowsAfter: undefined,\n      rowsToRender: undefined,\n      maxBufferHeight: 0,\n      listHeight: undefined,\n      dynamicHeight: typeof vl.params.height === 'function',\n      autoHeight: vl.params.height === 'auto',\n    });\n\n    // Install Modules\n    vl.useModules();\n\n    // Attach events\n    const handleScrollBound = vl.handleScroll.bind(vl);\n    const handleResizeBound = vl.handleResize.bind(vl);\n    let $pageEl;\n    let $tabEl;\n    let $panelEl;\n    let $popupEl;\n    vl.attachEvents = function attachEvents() {\n      $pageEl = vl.$el.parents('.page').eq(0);\n      $tabEl = vl.$el\n        .parents('.tab')\n        .filter((tabEl) => {\n          return (\n            $(tabEl).parent('.tabs').parent('.tabs-animated-wrap, swiper-container.tabs').length ===\n            0\n          );\n        })\n        .eq(0);\n      $panelEl = vl.$el.parents('.panel').eq(0);\n      $popupEl = vl.$el.parents('.popup').eq(0);\n\n      vl.$scrollableParentEl.on('scroll', handleScrollBound);\n      if ($pageEl.length) $pageEl.on('page:reinit', handleResizeBound);\n      if ($tabEl.length) $tabEl.on('tab:show', handleResizeBound);\n      if ($panelEl.length) $panelEl.on('panel:open', handleResizeBound);\n      if ($popupEl.length) $popupEl.on('popup:open', handleResizeBound);\n      app.on('resize', handleResizeBound);\n    };\n    vl.detachEvents = function attachEvents() {\n      vl.$scrollableParentEl.off('scroll', handleScrollBound);\n      if ($pageEl.length) $pageEl.off('page:reinit', handleResizeBound);\n      if ($tabEl.length) $tabEl.off('tab:show', handleResizeBound);\n      if ($panelEl.length) $panelEl.off('panel:open', handleResizeBound);\n      if ($popupEl.length) $popupEl.off('popup:open', handleResizeBound);\n      app.off('resize', handleResizeBound);\n    };\n    // Init\n    vl.init();\n\n    return vl;\n  }\n\n  setListSize(autoHeightRerender) {\n    const vl = this;\n    const items = vl.filteredItems || vl.items;\n    if (!autoHeightRerender) {\n      vl.pageHeight = vl.$scrollableParentEl[0].offsetHeight;\n    }\n    if (vl.dynamicHeight) {\n      vl.listHeight = 0;\n      vl.heights = [];\n      for (let i = 0; i < items.length; i += 1) {\n        const itemHeight = vl.params.height(items[i]);\n        vl.listHeight += itemHeight;\n        vl.heights.push(itemHeight);\n      }\n    } else if (vl.autoHeight) {\n      vl.listHeight = 0;\n      if (!vl.heights) vl.heights = [];\n      if (!vl.heightsCalculated) vl.heightsCalculated = [];\n      const renderedItems = {};\n      vl.$itemsWrapEl.find(`[data-virtual-list-index]`).forEach((el) => {\n        renderedItems[parseInt(el.getAttribute('data-virtual-list-index'), 10)] = el;\n      });\n      for (let i = 0; i < items.length; i += 1) {\n        const itemIndex = vl.items.indexOf(items[i]);\n        const renderedItem = renderedItems[itemIndex];\n        if (renderedItem) {\n          if (!vl.heightsCalculated.includes(itemIndex)) {\n            vl.heights[itemIndex] = renderedItem.offsetHeight;\n            vl.heightsCalculated.push(itemIndex);\n          }\n        }\n        if (typeof vl.heights[i] === 'undefined') {\n          vl.heights[itemIndex] = 40;\n        }\n        vl.listHeight += vl.heights[itemIndex];\n      }\n    } else {\n      vl.listHeight = Math.ceil(items.length / vl.params.cols) * vl.params.height;\n      vl.rowsPerScreen = Math.ceil(vl.pageHeight / vl.params.height);\n      vl.rowsBefore = vl.params.rowsBefore || vl.rowsPerScreen * 2;\n      vl.rowsAfter = vl.params.rowsAfter || vl.rowsPerScreen;\n      vl.rowsToRender = vl.rowsPerScreen + vl.rowsBefore + vl.rowsAfter;\n      vl.maxBufferHeight = (vl.rowsBefore / 2) * vl.params.height;\n    }\n\n    if (vl.updatableScroll || vl.params.setListHeight) {\n      vl.$itemsWrapEl.css({ height: `${vl.listHeight}px` });\n    }\n  }\n\n  render(force, forceScrollTop) {\n    const vl = this;\n    if (force) vl.lastRepaintY = null;\n\n    let scrollTop = -(\n      vl.$el[0].getBoundingClientRect().top - vl.$scrollableParentEl[0].getBoundingClientRect().top\n    );\n\n    if (typeof forceScrollTop !== 'undefined') scrollTop = forceScrollTop;\n    if (\n      vl.lastRepaintY === null ||\n      Math.abs(scrollTop - vl.lastRepaintY) > vl.maxBufferHeight ||\n      (!vl.updatableScroll &&\n        vl.$scrollableParentEl[0].scrollTop + vl.pageHeight >=\n          vl.$scrollableParentEl[0].scrollHeight)\n    ) {\n      vl.lastRepaintY = scrollTop;\n    } else {\n      return;\n    }\n\n    const items = vl.filteredItems || vl.items;\n    let fromIndex;\n    let toIndex;\n    let heightBeforeFirstItem = 0;\n    let heightBeforeLastItem = 0;\n    if (vl.dynamicHeight || vl.autoHeight) {\n      let itemTop = 0;\n      let itemHeight;\n      vl.maxBufferHeight = vl.pageHeight;\n\n      for (let j = 0; j < vl.heights.length; j += 1) {\n        itemHeight = vl.heights[j];\n        if (typeof fromIndex === 'undefined') {\n          if (\n            itemTop + itemHeight >=\n            scrollTop - vl.pageHeight * 2 * vl.params.dynamicHeightBufferSize\n          )\n            fromIndex = j;\n          else heightBeforeFirstItem += itemHeight;\n        }\n\n        if (typeof toIndex === 'undefined') {\n          if (\n            itemTop + itemHeight >=\n              scrollTop + vl.pageHeight * 2 * vl.params.dynamicHeightBufferSize ||\n            j === vl.heights.length - 1\n          )\n            toIndex = j + 1;\n          heightBeforeLastItem += itemHeight;\n        }\n        itemTop += itemHeight;\n      }\n      toIndex = Math.min(toIndex, items.length);\n    } else {\n      fromIndex = (parseInt(scrollTop / vl.params.height, 10) - vl.rowsBefore) * vl.params.cols;\n      if (fromIndex < 0) {\n        fromIndex = 0;\n      }\n      toIndex = Math.min(fromIndex + vl.rowsToRender * vl.params.cols, items.length);\n    }\n\n    let topPosition;\n    const renderExternalItems = [];\n    vl.reachEnd = false;\n    let i;\n    for (i = fromIndex; i < toIndex; i += 1) {\n      let itemEl;\n      // Define real item index\n      const index = vl.items.indexOf(items[i]);\n\n      if (i === fromIndex) vl.currentFromIndex = index;\n      if (i === toIndex - 1) vl.currentToIndex = index;\n      if (vl.filteredItems) {\n        if (vl.items[index] === vl.filteredItems[vl.filteredItems.length - 1]) vl.reachEnd = true;\n      } else if (index === vl.items.length - 1) vl.reachEnd = true;\n\n      // Find items\n      if (vl.params.renderExternal) {\n        renderExternalItems.push(items[i]);\n      } else if (vl.domCache[index]) {\n        itemEl = vl.domCache[index];\n        itemEl.f7VirtualListIndex = index;\n      } else {\n        if (vl.renderItem) {\n          vl.tempDomElement.innerHTML = vl.renderItem(items[i], index).trim();\n        } else {\n          vl.tempDomElement.innerHTML = items[i].toString().trim();\n        }\n        itemEl = vl.tempDomElement.childNodes[0];\n        if (vl.params.cache) vl.domCache[index] = itemEl;\n        itemEl.f7VirtualListIndex = index;\n      }\n\n      // Set item top position\n      if (i === fromIndex) {\n        if (vl.dynamicHeight || vl.autoHeight) {\n          topPosition = heightBeforeFirstItem;\n        } else {\n          topPosition = (i * vl.params.height) / vl.params.cols;\n        }\n      }\n      if (!vl.params.renderExternal) {\n        itemEl.style.top = `${topPosition}px`;\n\n        // Before item insert\n        vl.emit('local::itemBeforeInsert vlItemBeforeInsert', vl, itemEl, items[i]);\n\n        // Append item to fragment\n        vl.fragment.appendChild(itemEl);\n      }\n    }\n\n    // Update list height with not updatable scroll\n    if (!vl.updatableScroll) {\n      if (vl.dynamicHeight || vl.autoHeight) {\n        vl.itemsWrapEl.style.height = `${heightBeforeLastItem}px`;\n      } else {\n        vl.itemsWrapEl.style.height = `${(i * vl.params.height) / vl.params.cols}px`;\n      }\n    }\n\n    // Update list html\n    if (vl.params.renderExternal) {\n      if (items && items.length === 0) {\n        vl.reachEnd = true;\n      }\n    } else {\n      vl.emit('local::beforeClear vlBeforeClear', vl, vl.fragment);\n      vl.itemsWrapEl.innerHTML = '';\n\n      vl.emit('local::itemsBeforeInsert vlItemsBeforeInsert', vl, vl.fragment);\n\n      if (items && items.length === 0) {\n        vl.reachEnd = true;\n        if (vl.params.emptyTemplate) vl.itemsWrapEl.innerHTML = vl.params.emptyTemplate;\n      } else {\n        vl.itemsWrapEl.appendChild(vl.fragment);\n      }\n\n      vl.emit('local::itemsAfterInsert vlItemsAfterInsert', vl, vl.fragment);\n    }\n\n    if (typeof forceScrollTop !== 'undefined' && force) {\n      vl.$scrollableParentEl.scrollTop(forceScrollTop, 0);\n    }\n    if (vl.params.renderExternal) {\n      vl.params.renderExternal(vl, {\n        fromIndex,\n        toIndex,\n        listHeight: vl.listHeight,\n        topPosition,\n        items: renderExternalItems,\n      });\n    }\n    if (vl.autoHeight) {\n      requestAnimationFrame(() => {\n        vl.setListSize(true);\n      });\n    }\n  }\n\n  // Filter\n  filterItems(indexes, resetScrollTop = true) {\n    const vl = this;\n    vl.filteredItems = [];\n    for (let i = 0; i < indexes.length; i += 1) {\n      vl.filteredItems.push(vl.items[indexes[i]]);\n    }\n    if (resetScrollTop) {\n      vl.$scrollableParentEl[0].scrollTop = 0;\n    }\n    vl.update();\n  }\n\n  resetFilter() {\n    const vl = this;\n    if (vl.params.showFilteredItemsOnly) {\n      vl.filteredItems = [];\n    } else {\n      vl.filteredItems = null;\n      delete vl.filteredItems;\n    }\n    vl.update();\n  }\n\n  scrollToItem(index) {\n    const vl = this;\n    if (index > vl.items.length) return false;\n    let itemTop = 0;\n    if (vl.dynamicHeight || vl.autoHeight) {\n      for (let i = 0; i < index; i += 1) {\n        itemTop += vl.heights[i];\n      }\n    } else {\n      itemTop = index * vl.params.height;\n    }\n    const listTop = vl.$el[0].offsetTop;\n    vl.render(true, listTop + itemTop - parseInt(vl.$scrollableParentEl.css('padding-top'), 10));\n    return true;\n  }\n\n  handleScroll() {\n    const vl = this;\n    vl.render();\n  }\n\n  // Handle resize event\n  isVisible() {\n    const vl = this;\n    return !!(vl.el.offsetWidth || vl.el.offsetHeight || vl.el.getClientRects().length);\n  }\n\n  handleResize() {\n    const vl = this;\n    if (vl.isVisible()) {\n      vl.heightsCalculated = [];\n      vl.setListSize();\n      vl.render(true);\n    }\n  }\n\n  // Append\n  appendItems(items) {\n    const vl = this;\n    for (let i = 0; i < items.length; i += 1) {\n      vl.items.push(items[i]);\n    }\n    vl.update();\n  }\n\n  appendItem(item) {\n    const vl = this;\n    vl.appendItems([item]);\n  }\n\n  // Replace\n  replaceAllItems(items) {\n    const vl = this;\n    vl.items = items;\n    delete vl.filteredItems;\n    vl.domCache = {};\n    vl.update();\n  }\n\n  replaceItem(index, item) {\n    const vl = this;\n    vl.items[index] = item;\n    if (vl.params.cache) delete vl.domCache[index];\n    vl.update();\n  }\n\n  // Prepend\n  prependItems(items) {\n    const vl = this;\n    for (let i = items.length - 1; i >= 0; i -= 1) {\n      vl.items.unshift(items[i]);\n    }\n    if (vl.params.cache) {\n      const newCache = {};\n      Object.keys(vl.domCache).forEach((cached) => {\n        newCache[parseInt(cached, 10) + items.length] = vl.domCache[cached];\n      });\n      vl.domCache = newCache;\n    }\n    vl.update();\n  }\n\n  prependItem(item) {\n    const vl = this;\n    vl.prependItems([item]);\n  }\n\n  // Move\n  moveItem(from, to) {\n    const vl = this;\n    const fromIndex = from;\n    let toIndex = to;\n    if (fromIndex === toIndex) return;\n    // remove item from array\n    const item = vl.items.splice(fromIndex, 1)[0];\n    if (toIndex >= vl.items.length) {\n      // Add item to the end\n      vl.items.push(item);\n      toIndex = vl.items.length - 1;\n    } else {\n      // Add item to new index\n      vl.items.splice(toIndex, 0, item);\n    }\n    // Update cache\n    if (vl.params.cache) {\n      const newCache = {};\n      Object.keys(vl.domCache).forEach((cached) => {\n        const cachedIndex = parseInt(cached, 10);\n        const leftIndex = fromIndex < toIndex ? fromIndex : toIndex;\n        const rightIndex = fromIndex < toIndex ? toIndex : fromIndex;\n        const indexShift = fromIndex < toIndex ? -1 : 1;\n        if (cachedIndex < leftIndex || cachedIndex > rightIndex)\n          newCache[cachedIndex] = vl.domCache[cachedIndex];\n        if (cachedIndex === leftIndex) newCache[rightIndex] = vl.domCache[cachedIndex];\n        if (cachedIndex > leftIndex && cachedIndex <= rightIndex)\n          newCache[cachedIndex + indexShift] = vl.domCache[cachedIndex];\n      });\n      vl.domCache = newCache;\n    }\n    vl.update();\n  }\n\n  // Insert before\n  insertItemBefore(index, item) {\n    const vl = this;\n    if (index === 0) {\n      vl.prependItem(item);\n      return;\n    }\n    if (index >= vl.items.length) {\n      vl.appendItem(item);\n      return;\n    }\n    vl.items.splice(index, 0, item);\n    // Update cache\n    if (vl.params.cache) {\n      const newCache = {};\n      Object.keys(vl.domCache).forEach((cached) => {\n        const cachedIndex = parseInt(cached, 10);\n        if (cachedIndex >= index) {\n          newCache[cachedIndex + 1] = vl.domCache[cachedIndex];\n        }\n      });\n      vl.domCache = newCache;\n    }\n    vl.update();\n  }\n\n  // Delete\n  deleteItems(indexes) {\n    const vl = this;\n    let prevIndex;\n    let indexShift = 0;\n    for (let i = 0; i < indexes.length; i += 1) {\n      let index = indexes[i];\n      if (typeof prevIndex !== 'undefined') {\n        if (index > prevIndex) {\n          indexShift = -i;\n        }\n      }\n      index += indexShift;\n      prevIndex = indexes[i];\n      // Delete item\n      const deletedItem = vl.items.splice(index, 1)[0];\n\n      // Delete from filtered\n      if (vl.filteredItems && vl.filteredItems.indexOf(deletedItem) >= 0) {\n        vl.filteredItems.splice(vl.filteredItems.indexOf(deletedItem), 1);\n      }\n      // Update cache\n      if (vl.params.cache) {\n        const newCache = {};\n        Object.keys(vl.domCache).forEach((cached) => {\n          const cachedIndex = parseInt(cached, 10);\n          if (cachedIndex === index) {\n            delete vl.domCache[index];\n          } else if (parseInt(cached, 10) > index) {\n            newCache[cachedIndex - 1] = vl.domCache[cached];\n          } else {\n            newCache[cachedIndex] = vl.domCache[cached];\n          }\n        });\n        vl.domCache = newCache;\n      }\n    }\n    vl.update();\n  }\n\n  deleteAllItems() {\n    const vl = this;\n    vl.items = [];\n    delete vl.filteredItems;\n    if (vl.params.cache) vl.domCache = {};\n    vl.update();\n  }\n\n  deleteItem(index) {\n    const vl = this;\n    vl.deleteItems([index]);\n  }\n\n  // Clear cache\n  clearCache() {\n    const vl = this;\n    vl.domCache = {};\n  }\n\n  // Update Virtual List\n  update(deleteCache) {\n    const vl = this;\n    if (deleteCache && vl.params.cache) {\n      vl.domCache = {};\n    }\n    vl.heightsCalculated = [];\n    vl.setListSize();\n    vl.render(true);\n  }\n\n  init() {\n    const vl = this;\n    vl.attachEvents();\n    vl.setListSize();\n    vl.render();\n  }\n\n  destroy() {\n    let vl = this;\n    vl.detachEvents();\n    vl.$el[0].f7VirtualList = null;\n    delete vl.$el[0].f7VirtualList;\n    deleteProps(vl);\n    vl = null;\n  }\n}\n\nexport default VirtualList;\n","import VirtualList from './virtual-list-class.js';\nimport ConstructorMethods from '../../shared/constructor-methods.js';\n\nexport default {\n  name: 'virtualList',\n  static: {\n    VirtualList,\n  },\n  create() {\n    const app = this;\n    app.virtualList = ConstructorMethods({\n      defaultSelector: '.virtual-list',\n      constructor: VirtualList,\n      app,\n      domProp: 'f7VirtualList',\n    });\n  },\n};\n","import $ from '../../shared/dom7.js';\nimport { extend, deleteProps } from '../../shared/utils.js';\nimport Framework7Class from '../../shared/class.js';\nimport { getSupport } from '../../shared/get-support.js';\n\nclass ListIndex extends Framework7Class {\n  constructor(app, params = {}) {\n    super(params, [app]);\n    const index = this;\n\n    const defaults = {\n      el: null, // where to render indexes\n      listEl: null, // list el to generate indexes\n      indexes: 'auto', // or array of indexes\n      iosItemHeight: 14,\n      mdItemHeight: 14,\n      scrollList: true,\n      label: false,\n      // eslint-disable-next-line\n      renderItem(itemContent, itemIndex) {\n        return `\n          <li>${itemContent}</li>\n        `.trim();\n      },\n      renderSkipPlaceholder() {\n        return '<li class=\"list-index-skip-placeholder\"></li>';\n      },\n      on: {},\n    };\n\n    // Extend defaults with modules params\n    index.useModulesParams(defaults);\n\n    index.params = extend(defaults, params);\n\n    let $el;\n    let $listEl;\n    let $pageContentEl;\n    let $ul;\n\n    if (index.params.el) {\n      $el = $(index.params.el);\n    } else {\n      return index;\n    }\n\n    if ($el[0].f7ListIndex) {\n      return $el[0].f7ListIndex;\n    }\n\n    $ul = $el.find('ul');\n    if ($ul.length === 0) {\n      $ul = $('<ul></ul>');\n      $el.append($ul);\n    }\n\n    if (index.params.listEl) {\n      $listEl = $(index.params.listEl);\n    }\n\n    if (index.params.indexes === 'auto' && !$listEl) {\n      return index;\n    }\n\n    if ($listEl) {\n      $pageContentEl = $listEl.parents('.page-content').eq(0);\n    } else {\n      $pageContentEl = $el.siblings('.page-content').eq(0);\n      if ($pageContentEl.length === 0) {\n        $pageContentEl = $el.parents('.page').eq(0).find('.page-content').eq(0);\n      }\n    }\n\n    $el[0].f7ListIndex = index;\n\n    extend(index, {\n      app,\n      $el,\n      el: $el && $el[0],\n      $ul,\n      ul: $ul && $ul[0],\n      $listEl,\n      listEl: $listEl && $listEl[0],\n      $pageContentEl,\n      pageContentEl: $pageContentEl && $pageContentEl[0],\n      indexes: params.indexes,\n      height: 0,\n      skipRate: 0,\n    });\n\n    // Install Modules\n    index.useModules();\n\n    // Attach events\n    function handleResize() {\n      const height = { index };\n      index.calcSize();\n      if (height !== index.height) {\n        index.render();\n      }\n    }\n\n    function handleClick(e) {\n      const $clickedLi = $(e.target).closest('li');\n      if (!$clickedLi.length) return;\n\n      let itemIndex = $clickedLi.index();\n      if (index.skipRate > 0) {\n        const percentage = itemIndex / ($clickedLi.siblings('li').length - 1);\n        itemIndex = Math.round((index.indexes.length - 1) * percentage);\n      }\n      const itemContent = index.indexes[itemIndex];\n\n      index.$el.trigger('listindex:click', { content: itemContent, index: itemIndex });\n      index.emit('local::click listIndexClick', index, itemContent, itemIndex);\n      index.$el.trigger('listindex:select', { content: itemContent, index: itemIndex });\n      index.emit('local::select listIndexSelect', index, itemContent, itemIndex);\n\n      if (index.$listEl && index.params.scrollList) {\n        index.scrollListToIndex(itemContent, itemIndex);\n      }\n    }\n\n    const touchesStart = {};\n    let isTouched;\n    let isMoved;\n    let topPoint;\n    let bottomPoint;\n    let $labelEl;\n    let previousIndex = null;\n    function handleTouchStart(e) {\n      const $children = $ul.children();\n      if (!$children.length) return;\n      topPoint = $children[0].getBoundingClientRect().top;\n      bottomPoint =\n        $children[$children.length - 1].getBoundingClientRect().top + $children[0].offsetHeight;\n\n      touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n      touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n      isTouched = true;\n      isMoved = false;\n      previousIndex = null;\n    }\n    function handleTouchMove(e) {\n      if (!isTouched) return;\n      if (!isMoved && index.params.label) {\n        $labelEl = $('<span class=\"list-index-label\"></span>');\n        $el.append($labelEl);\n      }\n      isMoved = true;\n      const pageY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n      e.preventDefault();\n\n      let percentage = (pageY - topPoint) / (bottomPoint - topPoint);\n      percentage = Math.min(Math.max(percentage, 0), 1);\n\n      const itemIndex = Math.round((index.indexes.length - 1) * percentage);\n      const itemContent = index.indexes[itemIndex];\n\n      const ulHeight = bottomPoint - topPoint;\n      const bubbleBottom = (index.height - ulHeight) / 2 + (1 - percentage) * ulHeight;\n\n      if (itemIndex !== previousIndex) {\n        if (index.params.label) {\n          $labelEl.html(itemContent).transform(`translateY(-${bubbleBottom}px)`);\n        }\n\n        if (index.$listEl && index.params.scrollList) {\n          index.scrollListToIndex(itemContent, itemIndex);\n        }\n      }\n\n      previousIndex = itemIndex;\n\n      index.$el.trigger('listindex:select');\n      index.emit('local::select listIndexSelect', index, itemContent, itemIndex);\n    }\n    function handleTouchEnd() {\n      if (!isTouched) return;\n      isTouched = false;\n      isMoved = false;\n      if (index.params.label) {\n        if ($labelEl) $labelEl.remove();\n        $labelEl = undefined;\n      }\n    }\n    const passiveListener = getSupport().passiveListener ? { passive: true } : false;\n    index.attachEvents = function attachEvents() {\n      $el.parents('.tab').on('tab:show', handleResize);\n      $el.parents('.page').on('page:reinit', handleResize);\n      $el.parents('.panel').on('panel:open', handleResize);\n      $el\n        .parents('.sheet-modal, .actions-modal, .popup, .popover, .login-screen, .dialog, .toast')\n        .on('modal:open', handleResize);\n      app.on('resize', handleResize);\n\n      $el.on('click', handleClick);\n      $el.on(app.touchEvents.start, handleTouchStart, passiveListener);\n      app.on('touchmove:active', handleTouchMove);\n      app.on('touchend:passive', handleTouchEnd);\n    };\n    index.detachEvents = function attachEvents() {\n      $el.parents('.tab').off('tab:show', handleResize);\n      $el.parents('.page').off('page:reinit', handleResize);\n      $el.parents('.panel').off('panel:open', handleResize);\n      $el\n        .parents('.sheet-modal, .actions-modal, .popup, .popover, .login-screen, .dialog, .toast')\n        .off('modal:open', handleResize);\n      app.off('resize', handleResize);\n\n      $el.off('click', handleClick);\n      $el.off(app.touchEvents.start, handleTouchStart, passiveListener);\n      app.off('touchmove:active', handleTouchMove);\n      app.off('touchend:passive', handleTouchEnd);\n    };\n    // Init\n    index.init();\n\n    return index;\n  }\n  // eslint-disable-next-line\n  scrollListToIndex(itemContent, itemIndex) {\n    const index = this;\n    const { $listEl, $pageContentEl, app } = index;\n    if (!$listEl || !$pageContentEl || $pageContentEl.length === 0) return index;\n\n    let $scrollToEl;\n    $listEl.find('.list-group-title').each((el) => {\n      if ($scrollToEl) return;\n      const $el = $(el);\n      if ($el.text() === itemContent) {\n        $scrollToEl = $el;\n      }\n    });\n    if (!$scrollToEl || $scrollToEl.length === 0) return index;\n\n    const parentTop = $scrollToEl.parent().offset().top;\n    let paddingTop = parseInt($pageContentEl.css('padding-top'), 10);\n    const scrollTop = $pageContentEl[0].scrollTop;\n    const scrollToElTop = $scrollToEl.offset().top;\n    if ($pageContentEl.parents('.page-with-navbar-large').length) {\n      const navbarInnerEl = app.navbar.getElByPage(\n        $pageContentEl.parents('.page-with-navbar-large').eq(0),\n      );\n      const $titleLargeEl = $(navbarInnerEl).find('.title-large');\n      if ($titleLargeEl.length) {\n        paddingTop -= $titleLargeEl[0].offsetHeight || 0;\n      }\n    }\n\n    if (parentTop <= paddingTop) {\n      $pageContentEl.scrollTop(parentTop + scrollTop - paddingTop);\n    } else {\n      $pageContentEl.scrollTop(scrollToElTop + scrollTop - paddingTop);\n    }\n    return index;\n  }\n\n  renderSkipPlaceholder() {\n    const index = this;\n    return index.params.renderSkipPlaceholder.call(index);\n  }\n\n  renderItem(itemContent, itemIndex) {\n    const index = this;\n    return index.params.renderItem.call(index, itemContent, itemIndex);\n  }\n\n  render() {\n    const index = this;\n    const { $ul, indexes, skipRate } = index;\n    let wasSkipped;\n\n    const html = indexes\n      .map((itemContent, itemIndex) => {\n        if (itemIndex % skipRate !== 0 && skipRate > 0) {\n          wasSkipped = true;\n          return '';\n        }\n        let itemHtml = index.renderItem(itemContent, itemIndex);\n        if (wasSkipped) {\n          itemHtml = index.renderSkipPlaceholder() + itemHtml;\n        }\n        wasSkipped = false;\n        return itemHtml;\n      })\n      .join('');\n\n    $ul.html(html);\n\n    return index;\n  }\n\n  calcSize() {\n    const index = this;\n    const { app, params, el, indexes } = index;\n    const height = el.offsetHeight;\n    const itemHeight = params[`${app.theme}ItemHeight`];\n    const maxItems = Math.floor(height / itemHeight);\n    const items = indexes.length;\n    let skipRate = 0;\n    if (items > maxItems) {\n      skipRate = Math.ceil((items * 2 - 1) / maxItems);\n    }\n\n    index.height = height;\n    index.skipRate = skipRate;\n\n    return index;\n  }\n\n  calcIndexes() {\n    const index = this;\n    if (index.params.indexes === 'auto') {\n      index.indexes = [];\n\n      index.$listEl.find('.list-group-title').each((el) => {\n        const elContent = $(el).text();\n        if (index.indexes.indexOf(elContent) < 0) {\n          index.indexes.push(elContent);\n        }\n      });\n    } else {\n      index.indexes = index.params.indexes;\n    }\n    return index;\n  }\n\n  update() {\n    const index = this;\n    index.calcIndexes();\n    index.calcSize();\n    index.render();\n\n    return index;\n  }\n\n  init() {\n    const index = this;\n    index.calcIndexes();\n    index.calcSize();\n    index.render();\n    index.attachEvents();\n  }\n\n  destroy() {\n    let index = this;\n    index.$el.trigger('listindex:beforedestroy', index);\n    index.emit('local::beforeDestroy listIndexBeforeDestroy');\n    index.detachEvents();\n    if (index.$el[0]) {\n      index.$el[0].f7ListIndex = null;\n      delete index.$el[0].f7ListIndex;\n    }\n    deleteProps(index);\n    index = null;\n  }\n}\n\nexport default ListIndex;\n","import $ from '../../shared/dom7.js';\nimport { extend } from '../../shared/utils.js';\nimport ListIndex from './list-index-class.js';\nimport ConstructorMethods from '../../shared/constructor-methods.js';\n\nexport default {\n  name: 'listIndex',\n  static: {\n    ListIndex,\n  },\n  create() {\n    const app = this;\n    app.listIndex = ConstructorMethods({\n      defaultSelector: '.list-index',\n      constructor: ListIndex,\n      app,\n      domProp: 'f7ListIndex',\n    });\n  },\n  on: {\n    tabMounted(tabEl) {\n      const app = this;\n      $(tabEl)\n        .find('.list-index-init')\n        .each((listIndexEl) => {\n          const params = extend($(listIndexEl).dataset(), { el: listIndexEl });\n          app.listIndex.create(params);\n        });\n    },\n    tabBeforeRemove(tabEl) {\n      $(tabEl)\n        .find('.list-index-init')\n        .each((listIndexEl) => {\n          if (listIndexEl.f7ListIndex) listIndexEl.f7ListIndex.destroy();\n        });\n    },\n    pageInit(page) {\n      const app = this;\n      page.$el.find('.list-index-init').each((listIndexEl) => {\n        const params = extend($(listIndexEl).dataset(), { el: listIndexEl });\n        app.listIndex.create(params);\n      });\n    },\n    pageBeforeRemove(page) {\n      page.$el.find('.list-index-init').each((listIndexEl) => {\n        if (listIndexEl.f7ListIndex) listIndexEl.f7ListIndex.destroy();\n      });\n    },\n  },\n  vnode: {\n    'list-index-init': {\n      insert(vnode) {\n        const app = this;\n        const listIndexEl = vnode.elm;\n        const params = extend($(listIndexEl).dataset(), { el: listIndexEl });\n        app.listIndex.create(params);\n      },\n      destroy(vnode) {\n        const listIndexEl = vnode.elm;\n        if (listIndexEl.f7ListIndex) listIndexEl.f7ListIndex.destroy();\n      },\n    },\n  },\n};\n","import $ from '../../shared/dom7.js';\nimport { extend } from '../../shared/utils.js';\n\nconst Tab = {\n  show(...args) {\n    const app = this;\n\n    let tabEl;\n    let tabLinkEl;\n    let animate;\n    let tabRoute;\n    let animatedInit;\n    if (args.length === 1 && args[0] && args[0].constructor === Object) {\n      tabEl = args[0].tabEl;\n      tabLinkEl = args[0].tabLinkEl;\n      animate = args[0].animate;\n      tabRoute = args[0].tabRoute;\n      animatedInit = args[0].animatedInit;\n    } else {\n      [tabEl, tabLinkEl, animate, tabRoute] = args;\n      if (typeof args[1] === 'boolean') {\n        [tabEl, animate, tabLinkEl, tabRoute] = args;\n        if (args.length > 2 && tabLinkEl.constructor === Object) {\n          [tabEl, animate, tabRoute, tabLinkEl] = args;\n        }\n      }\n    }\n    if (typeof animate === 'undefined') animate = true;\n\n    const $newTabEl = $(tabEl);\n    if (tabRoute && $newTabEl[0]) {\n      $newTabEl[0].f7TabRoute = tabRoute;\n    }\n\n    if (!animatedInit && ($newTabEl.length === 0 || $newTabEl.hasClass('tab-active'))) {\n      return {\n        $newTabEl,\n        newTabEl: $newTabEl[0],\n      };\n    }\n\n    let $tabLinkEl;\n    if (tabLinkEl) $tabLinkEl = $(tabLinkEl);\n\n    const $tabsEl = $newTabEl.parent('.tabs');\n    if ($tabsEl.length === 0) {\n      return {\n        $newTabEl,\n        newTabEl: $newTabEl[0],\n      };\n    }\n\n    // Release swipeouts in hidden tabs\n    if (app.swipeout) app.swipeout.allowOpen = true;\n\n    // Animated tabs\n    const tabsChangedCallbacks = [];\n\n    function onTabsChanged(callback) {\n      tabsChangedCallbacks.push(callback);\n    }\n    function tabsChanged() {\n      tabsChangedCallbacks.forEach((callback) => {\n        callback();\n      });\n    }\n\n    let animated = false;\n\n    if ($tabsEl.parent().hasClass('tabs-animated-wrap')) {\n      $tabsEl.parent()[animate ? 'removeClass' : 'addClass']('not-animated');\n\n      const transitionDuration = parseFloat($tabsEl.css('transition-duration').replace(',', '.'));\n      if (animate && transitionDuration) {\n        $tabsEl.transitionEnd(tabsChanged);\n        animated = true;\n      }\n\n      const tabsTranslate = (app.rtl ? $newTabEl.index() : -$newTabEl.index()) * 100;\n      $tabsEl.transform(`translate3d(${tabsTranslate}%,0,0)`);\n    }\n\n    // Swipeable tabs\n    let swiper;\n    if ($tabsEl[0].nodeName.toLowerCase() === 'swiper-container' && app.swiper) {\n      swiper = $tabsEl[0].swiper;\n      const newTabIndex = swiper.slides.indexOf($newTabEl[0]);\n      if (swiper && swiper.activeIndex !== newTabIndex) {\n        animated = true;\n        swiper\n          .once('slideChangeTransitionEnd', () => {\n            tabsChanged();\n          })\n          .slideTo(newTabIndex, animate ? undefined : 0);\n      } else if (swiper && swiper.animating) {\n        animated = true;\n        swiper.once('slideChangeTransitionEnd', () => {\n          tabsChanged();\n        });\n      }\n    }\n\n    // Remove active class from old tabs\n    const $oldTabEl = $tabsEl.children('.tab-active');\n    $oldTabEl.removeClass('tab-active');\n    if (!animatedInit && (!swiper || (swiper && !swiper.animating) || (swiper && tabRoute))) {\n      if ($oldTabEl.hasClass('view') && $oldTabEl.children('.page').length) {\n        $oldTabEl.children('.page').each((pageEl) => {\n          $(pageEl).trigger('page:tabhide');\n          app.emit('pageTabHide', pageEl);\n        });\n      }\n      $oldTabEl.trigger('tab:hide');\n      app.emit('tabHide', $oldTabEl[0]);\n    }\n\n    // Trigger 'show' event on new tab\n    $newTabEl.addClass('tab-active');\n    if (!animatedInit && (!swiper || (swiper && !swiper.animating) || (swiper && tabRoute))) {\n      if ($newTabEl.hasClass('view') && $newTabEl.children('.page').length) {\n        $newTabEl.children('.page').each((pageEl) => {\n          $(pageEl).trigger('page:tabshow');\n          app.emit('pageTabShow', pageEl);\n        });\n      }\n      $newTabEl.trigger('tab:show');\n      app.emit('tabShow', $newTabEl[0]);\n    }\n\n    // Find related link for new tab\n    if (!$tabLinkEl) {\n      // Search by id\n      if (typeof tabEl === 'string') $tabLinkEl = $(`.tab-link[href=\"${tabEl}\"]`);\n      else $tabLinkEl = $(`.tab-link[href=\"#${$newTabEl.attr('id')}\"]`);\n      // Search by data-tab\n      if (!$tabLinkEl || ($tabLinkEl && $tabLinkEl.length === 0)) {\n        $('[data-tab]').each((el) => {\n          if ($newTabEl.is($(el).attr('data-tab'))) $tabLinkEl = $(el);\n        });\n      }\n      if (tabRoute && (!$tabLinkEl || ($tabLinkEl && $tabLinkEl.length === 0))) {\n        $tabLinkEl = $(`[data-route-tab-id=\"${tabRoute.route.tab.id}\"]`);\n        if ($tabLinkEl.length === 0) {\n          $tabLinkEl = $(`.tab-link[href=\"${tabRoute.url}\"]`);\n        }\n      }\n      if ($tabLinkEl.length > 1 && $newTabEl.parents('.page').length) {\n        // eslint-disable-next-line\n        $tabLinkEl = $tabLinkEl.filter((tabLinkElement) => {\n          return $(tabLinkElement).parents('.page')[0] === $newTabEl.parents('.page')[0];\n        });\n        if (app.theme === 'ios' && $tabLinkEl.length === 0 && tabRoute) {\n          const $pageEl = $newTabEl.parents('.page');\n          const $navbarEl = $(app.navbar.getElByPage($pageEl));\n          $tabLinkEl = $navbarEl.find(`[data-route-tab-id=\"${tabRoute.route.tab.id}\"]`);\n          if ($tabLinkEl.length === 0) {\n            $tabLinkEl = $navbarEl.find(`.tab-link[href=\"${tabRoute.url}\"]`);\n          }\n        }\n      }\n    }\n    if ($tabLinkEl.length > 0) {\n      // Find related link for old tab\n      let $oldTabLinkEl;\n      if ($oldTabEl && $oldTabEl.length > 0) {\n        // Search by id\n        const oldTabId = $oldTabEl.attr('id');\n        if (oldTabId) {\n          $oldTabLinkEl = $(`.tab-link[href=\"#${oldTabId}\"]`);\n          // Search by data-route-tab-id\n          if (!$oldTabLinkEl || ($oldTabLinkEl && $oldTabLinkEl.length === 0)) {\n            $oldTabLinkEl = $(`.tab-link[data-route-tab-id=\"${oldTabId}\"]`);\n          }\n        }\n        // Search by data-tab\n        if (!$oldTabLinkEl || ($oldTabLinkEl && $oldTabLinkEl.length === 0)) {\n          $('[data-tab]').each((tabLinkElement) => {\n            if ($oldTabEl.is($(tabLinkElement).attr('data-tab'))) $oldTabLinkEl = $(tabLinkElement);\n          });\n        }\n        if (!$oldTabLinkEl || ($oldTabLinkEl && $oldTabLinkEl.length === 0)) {\n          $oldTabLinkEl = $tabLinkEl.siblings('.tab-link-active');\n        }\n      } else if (tabRoute) {\n        $oldTabLinkEl = $tabLinkEl.siblings('.tab-link-active');\n      }\n\n      if (\n        $oldTabLinkEl &&\n        $oldTabLinkEl.length > 1 &&\n        $oldTabEl &&\n        $oldTabEl.parents('.page').length\n      ) {\n        // eslint-disable-next-line\n        $oldTabLinkEl = $oldTabLinkEl.filter((tabLinkElement) => {\n          return $(tabLinkElement).parents('.page')[0] === $oldTabEl.parents('.page')[0];\n        });\n      }\n\n      if ($oldTabLinkEl && $oldTabLinkEl.length > 0) $oldTabLinkEl.removeClass('tab-link-active');\n\n      // Update links' classes\n      if ($tabLinkEl && $tabLinkEl.length > 0) {\n        $tabLinkEl.addClass('tab-link-active');\n        // Material Highlight\n        const $tabbarEl = $tabLinkEl.parents('.tabbar, .tabbar-icons');\n        const hasHighlight =\n          app.toolbar &&\n          $tabbarEl.length > 0 &&\n          ($tabbarEl.hasClass('tabbar-highlight') || app.theme !== 'ios');\n        if (hasHighlight) {\n          app.toolbar.setHighlight($tabbarEl);\n        }\n      }\n    }\n    return {\n      $newTabEl,\n      newTabEl: $newTabEl[0],\n      $oldTabEl,\n      oldTabEl: $oldTabEl[0],\n      onTabsChanged,\n      animated,\n    };\n  },\n};\nexport default {\n  name: 'tabs',\n  create() {\n    const app = this;\n    extend(app, {\n      tab: {\n        show: Tab.show.bind(app),\n      },\n    });\n  },\n  on: {\n    'pageInit tabMounted': function onInit(pageOrTabEl) {\n      const $el = $(pageOrTabEl.el || pageOrTabEl);\n      const animatedTabEl = $el.find('.tabs-animated-wrap > .tabs > .tab-active')[0];\n      if (!animatedTabEl) return;\n      const app = this;\n      app.tab.show({ tabEl: animatedTabEl, animatedInit: true, animate: false });\n    },\n  },\n  clicks: {\n    '.tab-link': function tabLinkClick($clickedEl, data = {}) {\n      if (\n        ($clickedEl.attr('href') && $clickedEl.attr('href').indexOf('#') === 0) ||\n        $clickedEl.attr('data-tab')\n      ) {\n        const app = this;\n        app.tab.show({\n          tabEl: data.tab || $clickedEl.attr('href'),\n          tabLinkEl: $clickedEl,\n          animate: data.animate,\n        });\n      }\n    },\n  },\n};\n","import $ from '../../shared/dom7.js';\nimport { extend, nextFrame } from '../../shared/utils.js';\nimport { getSupport } from '../../shared/get-support.js';\n\nfunction resizablePanel(panel) {\n  const app = panel.app;\n  const support = getSupport();\n  if (panel.resizableInitialized) return;\n  extend(panel, {\n    resizable: true,\n    resizableWidth: null,\n    resizableInitialized: true,\n  });\n  const $htmlEl = $('html');\n  const { $el, $backdropEl, side, effect } = panel;\n  if (!$el) return;\n\n  let isTouched;\n  let isMoved;\n  const touchesStart = {};\n  let touchesDiff;\n  let panelWidth;\n\n  let $viewEl;\n\n  let panelMinWidth;\n  let panelMaxWidth;\n  let visibleByBreakpoint;\n\n  const isPushingPanel = effect !== 'cover' && effect !== 'floating';\n\n  function transformCSSWidth(v) {\n    if (!v) return null;\n    if (v.indexOf('%') >= 0 || v.indexOf('vw') >= 0) {\n      return (parseInt(v, 10) / 100) * app.width;\n    }\n    const newV = parseInt(v, 10);\n    if (Number.isNaN(newV)) return null;\n    return newV;\n  }\n\n  function isResizable() {\n    return panel.resizable && $el.hasClass('panel-resizable');\n  }\n\n  function handleTouchStart(e) {\n    if (!isResizable()) return;\n    touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n    touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n    isMoved = false;\n    isTouched = true;\n    panelMinWidth = transformCSSWidth($el.css('min-width'));\n    panelMaxWidth = transformCSSWidth($el.css('max-width'));\n    visibleByBreakpoint = $el.hasClass('panel-in-breakpoint');\n  }\n  function handleTouchMove(e) {\n    if (!isTouched) return;\n    const pageX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n\n    if (!isMoved) {\n      panelWidth = $el[0].offsetWidth;\n      $el.transition(0);\n      $el.addClass('panel-resizing');\n      $htmlEl.css('cursor', 'col-resize');\n      if (isPushingPanel || visibleByBreakpoint) {\n        $viewEl = $(panel.getViewEl());\n        if (panel.$containerEl && panel.$containerEl.hasClass('page')) {\n          $viewEl.add(panel.$containerEl.children('.page-content, .tabs, .fab'));\n        }\n      }\n      if (isPushingPanel && !visibleByBreakpoint) {\n        $backdropEl.transition(0);\n        $viewEl.transition(0);\n      }\n    }\n\n    isMoved = true;\n\n    e.preventDefault();\n\n    touchesDiff = pageX - touchesStart.x;\n\n    let newPanelWidth = side === 'left' ? panelWidth + touchesDiff : panelWidth - touchesDiff;\n    if (panelMinWidth && !Number.isNaN(panelMinWidth)) {\n      newPanelWidth = Math.max(newPanelWidth, panelMinWidth);\n    }\n    if (panelMaxWidth && !Number.isNaN(panelMaxWidth)) {\n      newPanelWidth = Math.min(newPanelWidth, panelMaxWidth);\n    }\n    newPanelWidth = Math.min(Math.max(newPanelWidth, 0), app.width);\n\n    panel.resizableWidth = newPanelWidth;\n    $el[0].style.width = `${newPanelWidth}px`;\n    if (isPushingPanel && !visibleByBreakpoint) {\n      if ($viewEl) {\n        $viewEl.transform(\n          `translate3d(${side === 'left' ? newPanelWidth : -newPanelWidth}px, 0, 0)`,\n        );\n      }\n      if ($backdropEl) {\n        $backdropEl.transform(\n          `translate3d(${side === 'left' ? newPanelWidth : -newPanelWidth}px, 0, 0)`,\n        );\n      }\n    } else if (visibleByBreakpoint && $viewEl) {\n      $viewEl.css(`margin-${side}`, `${newPanelWidth}px`);\n    }\n\n    $el.trigger('panel:resize', newPanelWidth);\n    panel.emit('local::resize panelResize', panel, newPanelWidth);\n  }\n  function handleTouchEnd() {\n    $('html').css('cursor', '');\n    if (!isTouched || !isMoved) {\n      isTouched = false;\n      isMoved = false;\n      return;\n    }\n    isTouched = false;\n    isMoved = false;\n\n    $htmlEl[0].style.setProperty(`--f7-panel-${side}-width`, `${panel.resizableWidth}px`);\n    $el[0].style.width = '';\n    if (isPushingPanel && !visibleByBreakpoint) {\n      $viewEl.transform('');\n      $backdropEl.transform('');\n    }\n    $el.removeClass('panel-resizing');\n    nextFrame(() => {\n      $el.transition('');\n      if (isPushingPanel) {\n        $backdropEl.transition('');\n        if ($viewEl) $viewEl.transition('');\n      }\n    });\n  }\n\n  function handleResize() {\n    if (!panel.opened || !panel.resizableWidth) return;\n    panelMinWidth = transformCSSWidth($el.css('min-width'));\n    panelMaxWidth = transformCSSWidth($el.css('max-width'));\n\n    if (panelMinWidth && !Number.isNaN(panelMinWidth) && panel.resizableWidth < panelMinWidth) {\n      panel.resizableWidth = Math.max(panel.resizableWidth, panelMinWidth);\n    }\n    if (panelMaxWidth && !Number.isNaN(panelMaxWidth) && panel.resizableWidth > panelMaxWidth) {\n      panel.resizableWidth = Math.min(panel.resizableWidth, panelMaxWidth);\n    }\n    panel.resizableWidth = Math.min(Math.max(panel.resizableWidth, 0), app.width);\n\n    $htmlEl[0].style.setProperty(`--f7-panel-${side}-width`, `${panel.resizableWidth}px`);\n  }\n\n  if (panel.$el.find('.panel-resize-handler').length === 0) {\n    panel.$el.append('<div class=\"panel-resize-handler\"></div>');\n  }\n  panel.$resizeHandlerEl = panel.$el.children('.panel-resize-handler');\n\n  $el.addClass('panel-resizable');\n\n  // Add Events\n  const passive = support.passiveListener ? { passive: true } : false;\n\n  panel.$el.on(app.touchEvents.start, '.panel-resize-handler', handleTouchStart, passive);\n  app.on('touchmove:active', handleTouchMove);\n  app.on('touchend:passive', handleTouchEnd);\n  app.on('resize', handleResize);\n  panel.on('beforeOpen', handleResize);\n\n  panel.once('panelDestroy', () => {\n    $el.removeClass('panel-resizable');\n    panel.$resizeHandlerEl.remove();\n    panel.$el.off(app.touchEvents.start, '.panel-resize-handler', handleTouchStart, passive);\n    app.off('touchmove:active', handleTouchMove);\n    app.off('touchend:passive', handleTouchEnd);\n    app.off('resize', handleResize);\n    panel.off('beforeOpen', handleResize);\n  });\n}\n\nexport default resizablePanel;\n","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { extend, deleteProps } from '../../shared/utils.js';\nimport Framework7Class from '../../shared/class.js';\nimport swipePanel from './swipe-panel.js';\nimport resizablePanel from './resizable-panel.js';\n\nclass Panel extends Framework7Class {\n  constructor(app, params = {}) {\n    const extendedParams = extend({ on: {} }, app.params.panel, params);\n    super(extendedParams, [app]);\n\n    const panel = this;\n\n    panel.params = extendedParams;\n    panel.$containerEl = panel.params.containerEl ? $(panel.params.containerEl).eq(0) : app.$el;\n    panel.containerEl = panel.$containerEl[0];\n    if (!panel.containerEl) {\n      panel.$containerEl = app.$el;\n      panel.containerEl = app.$el[0];\n    }\n\n    let $el;\n    if (panel.params.el) {\n      $el = $(panel.params.el).eq(0);\n    } else if (panel.params.content) {\n      $el = $(panel.params.content)\n        .filter((node) => node.nodeType === 1)\n        .eq(0);\n    }\n\n    if ($el.length === 0) return panel;\n    if ($el[0].f7Panel) return $el[0].f7Panel;\n\n    $el[0].f7Panel = panel;\n\n    let { side, effect, resizable } = panel.params;\n    if (typeof side === 'undefined') side = $el.hasClass('panel-left') ? 'left' : 'right';\n    if (typeof effect === 'undefined')\n      // eslint-disable-next-line\n      effect = $el.hasClass('panel-cover')\n        ? 'cover'\n        : $el.hasClass('panel-push')\n        ? 'push'\n        : $el.hasClass('panel-floating')\n        ? 'floating'\n        : 'reveal';\n    if (typeof resizable === 'undefined') resizable = $el.hasClass('panel-resizable');\n\n    let $backdropEl;\n    if (panel.params.backdrop && panel.params.backdropEl) {\n      $backdropEl = $(panel.params.backdropEl);\n    } else if (panel.params.backdrop) {\n      $backdropEl = panel.$containerEl.children('.panel-backdrop');\n      if ($backdropEl.length === 0) {\n        $backdropEl = $('<div class=\"panel-backdrop\"></div>');\n        panel.$containerEl.prepend($backdropEl);\n      }\n    }\n\n    extend(panel, {\n      app,\n      side,\n      effect,\n      resizable,\n      $el,\n      el: $el[0],\n      opened: false,\n      $backdropEl,\n      backdropEl: $backdropEl && $backdropEl[0],\n    });\n\n    // Install Modules\n    panel.useModules();\n\n    // Init\n    panel.init();\n\n    return panel;\n  }\n\n  getViewEl() {\n    const panel = this;\n    let viewEl;\n    if (panel.$containerEl.children('.views').length > 0) {\n      viewEl = panel.$containerEl.children('.views')[0];\n    } else {\n      viewEl = panel.$containerEl.children('.view')[0];\n    }\n    return viewEl;\n  }\n\n  setStateClasses(state) {\n    const panel = this;\n    const { side, el, effect } = panel;\n\n    const viewEl = panel.getViewEl();\n    const panelInView = viewEl && viewEl.contains(el);\n    const $targetEl = !viewEl || panelInView ? panel.$containerEl : $('html');\n    if (state === 'open') {\n      $targetEl.addClass(`with-panel with-panel-${panel.side}-${panel.effect}`);\n    }\n    if (state === 'before-closing') {\n      $targetEl.addClass('with-panel-closing');\n    }\n    if (state === 'closing') {\n      $targetEl.addClass('with-panel-closing');\n      $targetEl.removeClass(`with-panel with-panel-${panel.side}-${panel.effect}`);\n    }\n    if (state === 'after-closing') {\n      $targetEl.removeClass('with-panel-closing');\n    }\n    if (state === 'closed') {\n      $targetEl.removeClass(`with-panel-${side}-${effect}`);\n    }\n  }\n\n  enableVisibleBreakpoint() {\n    const panel = this;\n    panel.visibleBreakpointDisabled = false;\n    panel.setVisibleBreakpoint();\n    return panel;\n  }\n\n  disableVisibleBreakpoint() {\n    const panel = this;\n    panel.visibleBreakpointDisabled = true;\n    panel.setVisibleBreakpoint();\n    return panel;\n  }\n\n  toggleVisibleBreakpoint() {\n    const panel = this;\n    panel.visibleBreakpointDisabled = !panel.visibleBreakpointDisabled;\n    panel.setVisibleBreakpoint();\n    return panel;\n  }\n\n  setVisibleBreakpoint(emitEvents = true) {\n    const panel = this;\n    const app = panel.app;\n    if (!panel.visibleBreakpointResizeHandler) {\n      panel.visibleBreakpointResizeHandler = function visibleBreakpointResizeHandler() {\n        panel.setVisibleBreakpoint();\n      };\n      app.on('resize', panel.visibleBreakpointResizeHandler);\n    }\n    const { side, $el, $containerEl, params, visibleBreakpointDisabled } = panel;\n    const breakpoint = params.visibleBreakpoint;\n    const $viewEl = $(panel.getViewEl());\n    const wasVisible = $el.hasClass('panel-in-breakpoint');\n    if ($containerEl && $containerEl.hasClass('page')) {\n      $viewEl.add($containerEl.children('.page-content, .tabs, .fab'));\n    }\n\n    if (\n      app.width >= breakpoint &&\n      typeof breakpoint !== 'undefined' &&\n      breakpoint !== null &&\n      !visibleBreakpointDisabled\n    ) {\n      if (!wasVisible) {\n        panel.setStateClasses('closed');\n        $el.addClass('panel-in-breakpoint').removeClass('panel-in panel-in-collapsed');\n        panel.onOpen(false);\n        panel.onOpened();\n        $viewEl.css({\n          [`margin-${side}`]: `${$el.width()}px`,\n        });\n        app.allowPanelOpen = true;\n        if (emitEvents) {\n          panel.emit('local::breakpoint panelBreakpoint', panel);\n          panel.$el.trigger('panel:breakpoint');\n        }\n      } else {\n        $viewEl.css({\n          [`margin-${side}`]: `${$el.width()}px`,\n        });\n      }\n    } else if (wasVisible) {\n      $el.removeClass('panel-in-breakpoint panel-in');\n      panel.onClose();\n      panel.onClosed();\n      $viewEl.css({\n        [`margin-${side}`]: '',\n      });\n      if (emitEvents) {\n        panel.emit('local::breakpoint panelBreakpoint', panel);\n        panel.$el.trigger('panel:breakpoint');\n      }\n    }\n  }\n\n  enableCollapsedBreakpoint() {\n    const panel = this;\n    panel.collapsedBreakpointDisabled = false;\n    panel.setCollapsedBreakpoint();\n    return panel;\n  }\n\n  disableCollapsedBreakpoint() {\n    const panel = this;\n    panel.collapsedBreakpointDisabled = true;\n    panel.setCollapsedBreakpoint();\n    return panel;\n  }\n\n  toggleCollapsedBreakpoint() {\n    const panel = this;\n    panel.collapsedBreakpointDisabled = !panel.collapsedBreakpointDisabled;\n    panel.setCollapsedBreakpoint();\n    return panel;\n  }\n\n  setCollapsedBreakpoint(emitEvents = true) {\n    const panel = this;\n    const app = panel.app;\n    if (!panel.collapsedBreakpointResizeHandler) {\n      panel.collapsedBreakpointResizeHandler = function collapsedBreakpointResizeHandler() {\n        panel.setCollapsedBreakpoint();\n      };\n      app.on('resize', panel.collapsedBreakpointResizeHandler);\n    }\n    const { $el, params, collapsedBreakpointDisabled } = panel;\n    if ($el.hasClass('panel-in-breakpoint')) return;\n    const breakpoint = params.collapsedBreakpoint;\n    const wasVisible = $el.hasClass('panel-in-collapsed');\n\n    if (\n      app.width >= breakpoint &&\n      typeof breakpoint !== 'undefined' &&\n      breakpoint !== null &&\n      !collapsedBreakpointDisabled\n    ) {\n      if (!wasVisible) {\n        panel.setStateClasses('closed');\n        $el.addClass('panel-in-collapsed').removeClass('panel-in');\n        panel.collapsed = true;\n        app.allowPanelOpen = true;\n        if (emitEvents) {\n          panel.emit('local::collapsedBreakpoint panelCollapsedBreakpoint', panel);\n          panel.$el.trigger('panel:collapsedbreakpoint');\n        }\n      }\n    } else if (wasVisible) {\n      $el.removeClass('panel-in-collapsed panel-in');\n      panel.collapsed = false;\n      if (emitEvents) {\n        panel.emit('local::collapsedBreakpoint panelCollapsedBreakpoint', panel);\n        panel.$el.trigger('panel:collapsedbreakpoint');\n      }\n    }\n  }\n\n  enableResizable() {\n    const panel = this;\n    if (panel.resizableInitialized) {\n      panel.resizable = true;\n      panel.$el.addClass('panel-resizable');\n    } else {\n      resizablePanel(panel);\n    }\n    return panel;\n  }\n\n  disableResizable() {\n    const panel = this;\n    panel.resizable = false;\n    panel.$el.removeClass('panel-resizable');\n    return panel;\n  }\n\n  enableSwipe() {\n    const panel = this;\n    if (panel.swipeInitialized) {\n      panel.swipeable = true;\n    } else {\n      swipePanel(panel);\n    }\n    return panel;\n  }\n\n  disableSwipe() {\n    const panel = this;\n    panel.swipeable = false;\n    return panel;\n  }\n\n  onOpen(modifyHtmlClasses = true) {\n    const panel = this;\n    // eslint-disable-next-line\n    panel._openTransitionStarted = false;\n    const app = panel.app;\n\n    panel.opened = true;\n    app.panel.allowOpen = false;\n\n    panel.$el.trigger('panel:beforeopen');\n    panel.emit('local::beforeOpen panelBeforeOpen', panel);\n\n    if (modifyHtmlClasses) {\n      panel.setStateClasses('open');\n    }\n\n    panel.$el.trigger('panel:open');\n    panel.emit('local::open panelOpen', panel);\n  }\n\n  onOpened() {\n    const panel = this;\n    const app = panel.app;\n\n    app.panel.allowOpen = true;\n\n    panel.$el.trigger('panel:opened');\n    panel.emit('local::opened panelOpened', panel);\n  }\n\n  onClose() {\n    const panel = this;\n    const app = panel.app;\n\n    panel.opened = false;\n    app.panel.allowOpen = false;\n\n    panel.$el.trigger('panel:beforeclose');\n    panel.emit('local::beforeClose panelBeforeClose', panel);\n\n    panel.setStateClasses('closing');\n\n    panel.$el.trigger('panel:close');\n    panel.emit('local::close panelClose', panel);\n  }\n\n  onClosed() {\n    const panel = this;\n    const app = panel.app;\n    app.panel.allowOpen = true;\n    panel.setStateClasses('after-closing');\n    panel.$el.removeClass('panel-out');\n    if (panel.$backdropEl) {\n      const otherPanel = app.panel.get('.panel-in');\n      const shouldHideBackdrop = !otherPanel || (otherPanel && !otherPanel.$backdropEl);\n      if (shouldHideBackdrop) {\n        panel.$backdropEl.removeClass('panel-backdrop-in');\n      }\n    }\n    panel.$el.trigger('panel:closed');\n    panel.emit('local::closed panelClosed', panel);\n  }\n\n  toggle(animate = true) {\n    const panel = this;\n    const breakpoint = panel.params.visibleBreakpoint;\n    const app = panel.app;\n    if (app.width >= breakpoint && typeof breakpoint !== 'undefined' && breakpoint !== null) {\n      return panel.toggleVisibleBreakpoint();\n    }\n    if (panel.opened) panel.close(animate);\n    else panel.open(animate);\n    return panel;\n  }\n\n  insertToRoot() {\n    const panel = this;\n    const document = getDocument();\n    const { $el, $backdropEl, $containerEl } = panel;\n    const $panelParentEl = $el.parent();\n    const wasInDom = $el.parents(document).length > 0;\n\n    if (!$panelParentEl.is($containerEl) || $el.prevAll('.views, .view').length) {\n      const $insertBeforeEl = $containerEl.children('.panel, .views, .view').eq(0);\n      const $insertAfterEl = $containerEl.children('.panel-backdrop').eq(0);\n\n      if ($insertBeforeEl.length) {\n        $el.insertBefore($insertBeforeEl);\n      } else if ($insertAfterEl) {\n        $el.insertBefore($insertAfterEl);\n      } else {\n        $containerEl.prepend($el);\n      }\n\n      if (\n        $backdropEl &&\n        $backdropEl.length &&\n        ((!$backdropEl.parent().is($containerEl) && $backdropEl.nextAll('.panel').length === 0) ||\n          ($backdropEl.parent().is($containerEl) && $backdropEl.nextAll('.panel').length === 0))\n      ) {\n        $backdropEl.insertBefore($el);\n      }\n\n      panel.once('panelClosed', () => {\n        if (wasInDom) {\n          $panelParentEl.append($el);\n        } else {\n          $el.remove();\n        }\n      });\n    }\n  }\n\n  open(animate = true) {\n    const panel = this;\n    const app = panel.app;\n\n    if (!app.panel.allowOpen) return false;\n\n    const { effect, $el, $backdropEl, opened, $containerEl } = panel;\n\n    if (!$el || $el.hasClass('panel-in')) {\n      return panel;\n    }\n\n    panel.insertToRoot();\n\n    // Ignore if opened\n    if (opened || $el.hasClass('panel-in-breakpoint') || $el.hasClass('panel-in')) return false;\n\n    // Close if some panel is opened\n    const otherOpenedPanel = app.panel.get('.panel-in');\n    if (otherOpenedPanel && otherOpenedPanel !== panel) {\n      otherOpenedPanel.close(animate);\n    }\n\n    $el[animate ? 'removeClass' : 'addClass']('not-animated');\n    $el.addClass('panel-in');\n\n    if ($backdropEl) {\n      $backdropEl.addClass('panel-backdrop-in');\n      $backdropEl[animate ? 'removeClass' : 'addClass']('not-animated');\n    }\n\n    if (['cover', 'push', 'floating'].includes(panel.effect)) {\n      /* eslint no-underscore-dangle: [\"error\", { \"allow\": [\"_clientLeft\"] }] */\n      panel._clientLeft = $el[0].clientLeft;\n    }\n\n    // Transitionend\n    const $viewEl = $(panel.getViewEl());\n    if ($containerEl && $containerEl.hasClass('page')) {\n      $viewEl.add($containerEl.children('.page-content, .tabs'));\n    }\n    const transitionEndTarget = effect === 'reveal' ? $viewEl : $el;\n\n    function panelTransitionStart() {\n      transitionEndTarget.transitionStart(() => {\n        // eslint-disable-next-line\n        panel._openTransitionStarted = true;\n      });\n    }\n\n    function panelTransitionEnd() {\n      transitionEndTarget.transitionEnd((e) => {\n        if ($(e.target).is(transitionEndTarget)) {\n          if ($el.hasClass('panel-out')) {\n            panel.onClosed();\n          } else {\n            panel.onOpened();\n          }\n        } else panelTransitionEnd();\n      });\n    }\n    if (animate) {\n      if ($backdropEl) {\n        $backdropEl.removeClass('not-animated');\n      }\n      panelTransitionStart();\n      panelTransitionEnd();\n      $el.removeClass('panel-out not-animated').addClass('panel-in');\n      panel.onOpen();\n    } else {\n      if ($backdropEl) {\n        $backdropEl.addClass('not-animated');\n      }\n      $el.removeClass('panel-out').addClass('panel-in not-animated');\n      panel.onOpen();\n      panel.onOpened();\n      // eslint-disable-next-line\n      panel._openTransitionStarted = true;\n    }\n\n    return true;\n  }\n\n  close(animate = true) {\n    const panel = this;\n    const { effect, $el, $backdropEl, opened, $containerEl } = panel;\n    if (!opened || $el.hasClass('panel-in-breakpoint') || !$el.hasClass('panel-in')) return panel;\n\n    $el[animate ? 'removeClass' : 'addClass']('not-animated');\n    if ($backdropEl) {\n      $backdropEl[animate ? 'removeClass' : 'addClass']('not-animated');\n    }\n\n    const $viewEl = $(panel.getViewEl());\n    if ($containerEl && $containerEl.hasClass('page')) {\n      $viewEl.add($containerEl.children('.page-content, .tabs'));\n    }\n    const transitionEndTarget = effect === 'reveal' ? $viewEl : $el;\n    // eslint-disable-next-line\n    if (!panel._openTransitionStarted) {\n      // eslint-disable-next-line\n      animate = false;\n    }\n\n    function transitionEnd() {\n      if ($el.hasClass('panel-out')) {\n        panel.onClosed();\n      } else if ($el.hasClass('panel-in')) {\n        panel.onOpened();\n      }\n      panel.setStateClasses('after-closing');\n    }\n    if (animate) {\n      transitionEndTarget.transitionEnd(() => {\n        transitionEnd();\n      });\n      $el.removeClass('panel-in').addClass('panel-out');\n      // Emit close\n      panel.onClose();\n    } else {\n      $el.addClass('not-animated').removeClass('panel-in').addClass('panel-out');\n      // Emit close\n      panel.onClose();\n      panel.onClosed();\n    }\n\n    return panel;\n  }\n\n  init() {\n    const panel = this;\n    // const app = panel.app;\n    if (typeof panel.params.visibleBreakpoint !== 'undefined') {\n      panel.setVisibleBreakpoint();\n    }\n    if (typeof panel.params.collapsedBreakpoint !== 'undefined') {\n      panel.setCollapsedBreakpoint();\n    }\n    if (panel.params.swipe) {\n      panel.enableSwipe();\n    }\n    if (panel.resizable) {\n      panel.enableResizable();\n    }\n  }\n\n  destroy() {\n    let panel = this;\n    const app = panel.app;\n    const { $containerEl } = panel;\n\n    if (!panel.$el) {\n      // Panel already destroyed\n      return;\n    }\n\n    panel.emit('local::beforeDestroy panelBeforeDestroy', panel);\n    panel.$el.trigger('panel:beforedestroy');\n\n    if (panel.visibleBreakpointResizeHandler) {\n      app.off('resize', panel.visibleBreakpointResizeHandler);\n    }\n    if (panel.collapsedBreakpointResizeHandler) {\n      app.off('resize', panel.collapsedBreakpointResizeHandler);\n    }\n    if (panel.$el.hasClass('panel-in-breakpoint') || panel.$el.hasClass('panel-in-collapsed')) {\n      const $viewEl = $(panel.getViewEl());\n      if ($containerEl && $containerEl.hasClass('page')) {\n        $viewEl.add($containerEl.children('.page-content, .tabs'));\n      }\n      panel.$el.removeClass('panel-in-breakpoint panel-in-collapsed panel-in');\n      $viewEl.css({\n        [`margin-${panel.side}`]: '',\n      });\n      panel.emit('local::breakpoint panelBreakpoint', panel);\n      panel.$el.trigger('panel:breakpoint');\n    }\n\n    panel.$el.trigger('panel:destroy');\n    panel.emit('local::destroy panelDestroy', panel);\n    if (panel.el) {\n      panel.el.f7Panel = null;\n      delete panel.el.f7Panel;\n    }\n    deleteProps(panel);\n\n    panel = null;\n  }\n}\n\nexport default Panel;\n","import $ from '../../shared/dom7.js';\nimport { extend, now, nextFrame } from '../../shared/utils.js';\n\nfunction swipePanel(panel) {\n  const app = panel.app;\n  if (panel.swipeInitialized) {\n    return;\n  }\n  extend(panel, {\n    swipeable: true,\n    swipeInitialized: true,\n  });\n  const params = panel.params;\n  const { $el, $backdropEl, side, effect } = panel;\n  let otherPanel;\n\n  let isTouched;\n  let isGestureStarted;\n  let isMoved;\n  let isScrolling;\n  let isInterrupted;\n  const touchesStart = {};\n  let touchStartTime;\n  let touchesDiff;\n  let translate;\n  let backdropOpacity;\n  let panelWidth;\n  let direction;\n\n  let $viewEl;\n\n  let touchMoves = 0;\n  function handleTouchStart(e) {\n    if (!panel.swipeable || isGestureStarted) return;\n    if (!app.panel.allowOpen || (!params.swipe && !params.swipeOnlyClose) || isTouched) return;\n    if ($('.modal-in:not(.toast):not(.notification), .photo-browser-in').length > 0) return;\n    otherPanel = app.panel.get(side === 'left' ? 'right' : 'left') || {};\n    const otherPanelOpened =\n      otherPanel.opened && otherPanel.$el && !otherPanel.$el.hasClass('panel-in-breakpoint');\n    if (!panel.opened && otherPanelOpened) {\n      return;\n    }\n    if (!params.swipeOnlyClose) {\n      if (otherPanelOpened) return;\n    }\n    if (e.target && e.target.nodeName.toLowerCase() === 'input' && e.target.type === 'range')\n      return;\n    if (\n      $(e.target).closest(\n        '.range-slider, swiper-container.tabs, .calendar-months, .no-swipe-panel, .card-opened',\n      ).length > 0\n    )\n      return;\n    touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n    touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n    if (params.swipeOnlyClose && !panel.opened) {\n      return;\n    }\n    if (params.swipeActiveArea && !panel.opened) {\n      if (side === 'left') {\n        if (touchesStart.x > params.swipeActiveArea) return;\n      }\n      if (side === 'right') {\n        if (touchesStart.x < app.width - params.swipeActiveArea) return;\n      }\n    }\n    touchMoves = 0;\n    $viewEl = $(panel.getViewEl());\n    isMoved = false;\n    isTouched = true;\n    isScrolling = undefined;\n    isInterrupted = false;\n\n    touchStartTime = now();\n    direction = undefined;\n  }\n  function handleTouchMove(e) {\n    if (!isTouched || isGestureStarted || isInterrupted) return;\n    touchMoves += 1;\n    if (touchMoves < 2) return;\n    if (e.f7PreventSwipePanel || app.preventSwipePanelBySwipeBack || app.preventSwipePanel) {\n      isTouched = false;\n      return;\n    }\n    const pageX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n    const pageY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n    if (typeof isScrolling === 'undefined') {\n      isScrolling = !!(\n        isScrolling || Math.abs(pageY - touchesStart.y) > Math.abs(pageX - touchesStart.x)\n      );\n    }\n    if (isScrolling) {\n      isTouched = false;\n      return;\n    }\n    if (!direction) {\n      if (pageX > touchesStart.x) {\n        direction = 'to-right';\n      } else {\n        direction = 'to-left';\n      }\n\n      if (params.swipeActiveArea > 0 && !panel.opened) {\n        if (side === 'left' && touchesStart.x > params.swipeActiveArea) {\n          isTouched = false;\n          return;\n        }\n        if (side === 'right' && touchesStart.x < app.width - params.swipeActiveArea) {\n          isTouched = false;\n          return;\n        }\n      }\n      if ($el.hasClass('panel-in-breakpoint')) {\n        isTouched = false;\n        return;\n      }\n\n      if (\n        (side === 'left' && direction === 'to-left' && !$el.hasClass('panel-in')) ||\n        (side === 'right' && direction === 'to-right' && !$el.hasClass('panel-in'))\n      ) {\n        isTouched = false;\n        return;\n      }\n    }\n\n    let threshold = panel.opened ? 0 : -params.swipeThreshold;\n    if (side === 'right') threshold = -threshold;\n\n    if (!isMoved) {\n      if (!panel.opened) {\n        panel.insertToRoot();\n        $el.addClass('panel-in-swipe');\n        if ($backdropEl) $backdropEl.css('visibility', 'visible');\n        $el.trigger('panel:swipeopen');\n        panel.emit('local::swipeOpen panelSwipeOpen', panel);\n      }\n      panelWidth = $el[0].offsetWidth;\n      if (effect === 'reveal' && $el.hasClass('panel-in-collapsed')) {\n        panelWidth -= parseFloat($viewEl.css(`margin-${side}`));\n      }\n      $el.transition(0);\n    }\n\n    isMoved = true;\n    if (e.cancelable) {\n      e.preventDefault();\n    }\n\n    touchesDiff = pageX - touchesStart.x + threshold;\n\n    const startTranslate = effect === 'floating' ? 8 : 0;\n    if (side === 'right') {\n      if (effect === 'cover' || effect === 'push' || effect === 'floating') {\n        translate = touchesDiff + (panel.opened ? startTranslate : panelWidth);\n        if (translate < 0 - startTranslate) translate = -startTranslate;\n        if (translate > panelWidth) {\n          translate = panelWidth;\n        }\n      } else {\n        translate = touchesDiff - (panel.opened ? panelWidth : 0);\n        if (translate > 0) translate = 0;\n        if (translate < -panelWidth) {\n          translate = -panelWidth;\n        }\n      }\n    } else {\n      translate = touchesDiff + (panel.opened ? panelWidth : startTranslate);\n      if (translate < 0) translate = 0;\n      if (translate > panelWidth + startTranslate) {\n        translate = panelWidth + startTranslate;\n      }\n    }\n    const noFollowProgress = Math.abs(translate / panelWidth);\n    if (effect === 'reveal') {\n      if (!params.swipeNoFollow) {\n        $viewEl.transform(`translate3d(${translate}px,0,0)`).transition(0);\n        if ($backdropEl) $backdropEl.transform(`translate3d(${translate}px,0,0)`).transition(0);\n      }\n\n      $el.trigger('panel:swipe', Math.abs(translate / panelWidth));\n      panel.emit('local::swipe panelSwipe', panel, Math.abs(translate / panelWidth));\n    } else {\n      if (side === 'left') translate -= panelWidth;\n      if (!params.swipeNoFollow) {\n        backdropOpacity = 1 - Math.abs(translate / panelWidth);\n        if ($backdropEl) {\n          $backdropEl.transition(0);\n          $backdropEl.css({ opacity: backdropOpacity });\n        }\n\n        $el.transform(`translate3d(${translate}px,0,0)`).transition(0);\n        if (effect === 'push') {\n          const viewTranslate = side === 'left' ? translate + panelWidth : translate - panelWidth;\n          $viewEl.transform(`translate3d(${viewTranslate}px,0,0)`).transition(0);\n          if ($backdropEl) {\n            $backdropEl.transform(`translate3d(${viewTranslate}px,0,0)`).transition(0);\n          }\n        }\n      }\n\n      $el.trigger('panel:swipe', Math.abs(translate / panelWidth));\n      panel.emit('local::swipe panelSwipe', panel, Math.abs(translate / panelWidth));\n    }\n\n    if (params.swipeNoFollow) {\n      const stateChanged =\n        (panel.opened && noFollowProgress === 0) || (!panel.opened && noFollowProgress === 1);\n      if (stateChanged) {\n        isInterrupted = true;\n        // eslint-disable-next-line\n        handleTouchEnd(e);\n      }\n    }\n  }\n  function handleTouchEnd(e) {\n    if (!isTouched || !isMoved) {\n      isTouched = false;\n      isMoved = false;\n      return;\n    }\n    const isGesture = e.type === 'gesturestart' || isGestureStarted;\n    isTouched = false;\n    isMoved = false;\n    const timeDiff = new Date().getTime() - touchStartTime;\n    let action;\n    const startTranslate = effect === 'floating' ? (side === 'left' ? 8 : -8) : 0;\n    const edge =\n      (translate === startTranslate || Math.abs(translate) === panelWidth) && !params.swipeNoFollow;\n    const threshold = params.swipeThreshold || 0;\n    if (isGesture) {\n      action = 'reset';\n    } else if (!panel.opened) {\n      if (Math.abs(touchesDiff) < threshold) {\n        action = 'reset';\n      } else if (effect === 'cover' || effect === 'push' || effect === 'floating') {\n        if (translate === 0 + startTranslate) {\n          action = 'swap'; // open\n        } else if (timeDiff < 300 && Math.abs(translate) > 0) {\n          action = 'swap'; // open\n        } else if (timeDiff >= 300 && Math.abs(translate) < panelWidth / 2) {\n          action = 'swap'; // open\n        } else {\n          action = 'reset'; // close\n        }\n      } else if (translate === 0) {\n        action = 'reset';\n      } else if (\n        (timeDiff < 300 && Math.abs(translate) > 0) ||\n        (timeDiff >= 300 && Math.abs(translate) >= panelWidth / 2)\n      ) {\n        action = 'swap';\n      } else {\n        action = 'reset';\n      }\n    } else if (effect === 'cover' || effect === 'push' || effect === 'floating') {\n      if (translate === 0) {\n        action = 'reset'; // open\n      } else if (timeDiff < 300 && Math.abs(translate) > 0) {\n        action = 'swap'; // open\n      } else if (timeDiff >= 300 && Math.abs(translate) < panelWidth / 2) {\n        action = 'reset'; // open\n      } else {\n        action = 'swap'; // close\n      }\n    } else if (translate === -panelWidth) {\n      action = 'reset';\n    } else if (\n      (timeDiff < 300 && Math.abs(translate) >= 0) ||\n      (timeDiff >= 300 && Math.abs(translate) <= panelWidth / 2)\n    ) {\n      if (side === 'left' && translate === panelWidth) action = 'reset';\n      else action = 'swap';\n    } else {\n      action = 'reset';\n    }\n    if (action === 'swap') {\n      if (panel.opened) {\n        panel.close(!edge);\n      } else {\n        panel.open(!edge);\n      }\n    }\n    let removePanelInClass = true;\n    if (action === 'reset') {\n      if (!panel.opened) {\n        if (edge) {\n          // edge position\n          $el.removeClass('panel-in-swipe');\n        } else {\n          removePanelInClass = false;\n          const target = effect === 'reveal' ? $viewEl : $el;\n          panel.setStateClasses('before-closing');\n          target.transitionEnd(() => {\n            if ($el.hasClass('panel-in')) return;\n            $el.removeClass('panel-in-swipe');\n            panel.setStateClasses('after-closing');\n          });\n        }\n      }\n    }\n    if (effect === 'reveal' || effect === 'push') {\n      nextFrame(() => {\n        $viewEl.transition('');\n        $viewEl.transform('');\n      });\n    }\n    if (removePanelInClass) {\n      $el.removeClass('panel-in-swipe');\n    }\n    $el.transition('').transform('');\n    if ($backdropEl) {\n      $backdropEl.transform('').transition('').css({ opacity: '', visibility: '' });\n    }\n  }\n  function handleGestureStart(e) {\n    isGestureStarted = true;\n    handleTouchEnd(e);\n  }\n  function handleGestureEnd() {\n    isGestureStarted = false;\n  }\n\n  // Add Events\n  app.on('touchstart:passive', handleTouchStart);\n  app.on('touchmove:active', handleTouchMove);\n  app.on('touchend:passive', handleTouchEnd);\n  app.on('gesturestart', handleGestureStart);\n  app.on('gestureend', handleGestureEnd);\n  panel.on('panelDestroy', () => {\n    app.off('touchstart:passive', handleTouchStart);\n    app.off('touchmove:active', handleTouchMove);\n    app.off('touchend:passive', handleTouchEnd);\n    app.off('gesturestart', handleGestureStart);\n    app.off('gestureend', handleGestureEnd);\n  });\n}\n\nexport default swipePanel;\n","import $ from '../../shared/dom7.js';\nimport { extend } from '../../shared/utils.js';\nimport Panel from './panel-class.js';\n\nexport default {\n  name: 'panel',\n  params: {\n    panel: {\n      opened: undefined, // default based on panel-in class\n      side: undefined, // default based on panel class\n      effect: undefined, // default based on panel class\n      resizable: undefined, // default based on panel-resizable class\n      backdrop: true,\n      backdropEl: undefined,\n      visibleBreakpoint: undefined,\n      collapsedBreakpoint: undefined,\n      swipe: false, // or true\n      swipeNoFollow: false, // or true\n      swipeOnlyClose: false,\n      swipeActiveArea: 0,\n      swipeThreshold: 0,\n      closeByBackdropClick: true,\n      containerEl: undefined,\n    },\n  },\n  static: {\n    Panel,\n  },\n  create() {\n    const app = this;\n    extend(app, {\n      panel: {\n        allowOpen: true,\n        create(params) {\n          return new Panel(app, params);\n        },\n        get(el = '.panel') {\n          if (el instanceof Panel) return el;\n          if (el === 'left' || el === 'right') el = `.panel-${el}`; // eslint-disable-line\n          const $el = $(el);\n          if ($el.length === 0 || $el.length > 1) return undefined;\n          return $el[0].f7Panel;\n        },\n        destroy(el = '.panel') {\n          const panel = app.panel.get(el);\n          if (panel && panel.destroy) return panel.destroy();\n          return undefined;\n        },\n        open(el = '.panel', animate) {\n          if (el === 'left' || el === 'right') el = `.panel-${el}`; // eslint-disable-line\n          let panel = app.panel.get(el);\n          if (panel && panel.open) return panel.open(animate);\n          if (!panel) {\n            panel = app.panel.create({ el });\n            return panel.open(animate);\n          }\n          return undefined;\n        },\n        close(el = '.panel-in', animate) {\n          if (el === 'left' || el === 'right') el = `.panel-${el}`; // eslint-disable-line\n          let panel = app.panel.get(el);\n          if (panel && panel.open) return panel.close(animate);\n          if (!panel) {\n            panel = app.panel.create({ el });\n            return panel.close(animate);\n          }\n          return undefined;\n        },\n        toggle(el = '.panel', animate) {\n          if (el === 'left' || el === 'right') el = `.panel-${el}`; // eslint-disable-line\n          let panel = app.panel.get(el);\n          if (panel && panel.toggle) return panel.toggle(animate);\n          if (!panel) {\n            panel = app.panel.create({ el });\n            return panel.toggle(animate);\n          }\n          return undefined;\n        },\n      },\n    });\n  },\n  on: {\n    init() {\n      const app = this;\n      $('.panel-init').each((panelEl) => {\n        const params = Object.assign({ el: panelEl }, $(panelEl).dataset() || {});\n        app.panel.create(params);\n      });\n    },\n    pageInit(page) {\n      const app = this;\n      page.$el.find('.panel-init').each((panelEl) => {\n        const params = Object.assign({ el: panelEl }, $(panelEl).dataset() || {});\n        app.panel.create(params);\n      });\n    },\n    pageBeforeRemove(page) {\n      const app = this;\n      page.$el.find('.panel-init').each((panelEl) => {\n        const panel = app.panel.get(panelEl);\n        if (panel && panel.destroy) panel.destroy();\n      });\n    },\n  },\n  vnode: {\n    'panel-init': {\n      insert(vnode) {\n        const app = this;\n        const panelEl = vnode.elm;\n        const params = Object.assign({ el: panelEl }, $(panelEl).dataset() || {});\n        app.panel.create(params);\n      },\n      destroy(vnode) {\n        const app = this;\n        const panelEl = vnode.elm;\n        const panel = app.panel.get(panelEl);\n        if (panel && panel.destroy) panel.destroy();\n      },\n    },\n  },\n  clicks: {\n    '.panel-open': function open(clickedEl, data = {}) {\n      const app = this;\n      app.panel.open(data.panel, data.animate);\n    },\n    '.panel-close': function close(clickedEl, data = {}) {\n      const app = this;\n      app.panel.close(data.panel, data.animate);\n    },\n    '.panel-toggle': function close(clickedEl, data = {}) {\n      const app = this;\n      app.panel.toggle(data.panel, data.animate);\n    },\n    '.panel-backdrop': function close() {\n      const app = this;\n      const $panelEl = $('.panel-in:not(.panel-out)');\n      if (!$panelEl.length) return;\n      const instance = $panelEl[0] && $panelEl[0].f7Panel;\n      $panelEl.trigger('panel:backdrop-click');\n      if (instance) {\n        instance.emit('backdropClick', instance);\n      }\n      app.emit('panelBackdropClick', instance || $panelEl[0]);\n      if (instance && instance.params.closeByBackdropClick === false) return;\n      if (app.params.panel.closeByBackdropClick) app.panel.close();\n    },\n  },\n};\n","/* eslint no-param-reassign: \"off\" */\nimport { getDocument } from 'ssr-window';\nimport { bindMethods } from '../../shared/utils.js';\nimport { getSupport } from '../../shared/get-support.js';\nimport { getDevice } from '../../shared/get-device.js';\nimport $ from '../../shared/dom7.js';\n\nconst CardExpandable = {\n  open(cardEl = '.card-expandable', animate = true) {\n    const app = this;\n    const device = getDevice();\n    const document = getDocument();\n    const support = getSupport();\n\n    const $cardEl = $(cardEl).eq(0);\n    if (!$cardEl || !$cardEl.length) return;\n    if (\n      $cardEl.hasClass('card-opened') ||\n      $cardEl.hasClass('card-opening') ||\n      $cardEl.hasClass('card-closing')\n    )\n      return;\n\n    const $pageEl = $cardEl.parents('.page').eq(0);\n    if (!$pageEl.length) return;\n\n    if ($pageEl.find('.card-opened').length) {\n      return;\n    }\n\n    let prevented;\n\n    function prevent() {\n      prevented = true;\n    }\n\n    $cardEl.trigger('card:beforeopen', { prevent });\n    app.emit('cardBeforeOpen', $cardEl[0], prevent);\n\n    if (prevented) return;\n\n    const cardParams = Object.assign({ animate }, app.params.card, $cardEl.dataset());\n\n    const $pageContentEl = $cardEl.parents('.page-content');\n\n    let $backdropEl;\n    if ($cardEl.attr('data-backdrop-el')) {\n      $backdropEl = $($cardEl.attr('data-backdrop-el'));\n    }\n    if (!$backdropEl && cardParams.backdrop) {\n      $backdropEl = $pageContentEl.find('.card-backdrop');\n      if (!$backdropEl.length) {\n        $backdropEl = $('<div class=\"card-backdrop\"></div>');\n        $pageContentEl.append($backdropEl);\n      }\n    }\n\n    let $navbarEl;\n    let $toolbarEl;\n    if (cardParams.hideNavbarOnOpen) {\n      $navbarEl = $pageEl.children('.navbar');\n      if (!$navbarEl.length) {\n        if ($pageEl[0].f7Page) $navbarEl = $pageEl[0].f7Page.$navbarEl;\n      }\n    }\n    if (cardParams.hideToolbarOnOpen) {\n      $toolbarEl = $pageEl.children('.toolbar');\n      if (!$toolbarEl.length) {\n        $toolbarEl = $pageEl.parents('.view').children('.toolbar');\n      }\n      if (!$toolbarEl.length) {\n        $toolbarEl = $pageEl.parents('.views').children('.toolbar');\n      }\n    }\n\n    const currTransform = $cardEl.css('transform');\n    let hasTransform;\n    if (currTransform && currTransform.match(/[2-9]/)) {\n      hasTransform = true;\n    }\n    const $cardContentEl = $cardEl.children('.card-content');\n\n    const $cardSizeEl = $(document.createElement('div')).addClass('card-expandable-size');\n    $cardEl.append($cardSizeEl);\n\n    let cardWidth = $cardEl[0].offsetWidth;\n    let cardHeight = $cardEl[0].offsetHeight;\n    let pageWidth = $pageEl[0].offsetWidth;\n    let pageHeight = $pageEl[0].offsetHeight;\n\n    let maxWidth = $cardSizeEl[0].offsetWidth || pageWidth;\n    let maxHeight = $cardSizeEl[0].offsetHeight || pageHeight;\n\n    let statusbarHeight;\n    if ($navbarEl && !cardParams.hideStatusbarOnOpen && maxHeight === pageHeight) {\n      statusbarHeight = parseInt($navbarEl.css('--f7-safe-area-top'), 10);\n      if (Number.isNaN(statusbarHeight)) statusbarHeight = 0;\n    }\n    if (statusbarHeight) {\n      maxHeight -= statusbarHeight;\n    }\n\n    let scaleX = maxWidth / cardWidth;\n    let scaleY = maxHeight / cardHeight;\n\n    let offset = $cardEl.offset();\n    let pageOffset = $pageEl.offset();\n    if (statusbarHeight) {\n      pageOffset.top += statusbarHeight / 2;\n    }\n    offset.left -= pageOffset.left;\n\n    let cardLeftOffset;\n    let cardTopOffset;\n\n    if (hasTransform) {\n      const transformValues = currTransform\n        .replace(/matrix\\(|\\)/g, '')\n        .split(',')\n        .map((el) => el.trim());\n      if (transformValues && transformValues.length > 1) {\n        const scale = parseFloat(transformValues[0]);\n        cardLeftOffset = offset.left - (cardWidth * (1 - scale)) / 2;\n        cardTopOffset = offset.top - pageOffset.top - (cardHeight * (1 - scale)) / 2;\n        if (app.rtl) cardLeftOffset -= $cardEl[0].scrollLeft;\n      } else {\n        cardLeftOffset = $cardEl[0].offsetLeft;\n        cardTopOffset =\n          $cardEl[0].offsetTop - ($pageContentEl.length ? $pageContentEl[0].scrollTop : 0);\n      }\n    } else {\n      cardLeftOffset = offset.left;\n      cardTopOffset = offset.top - pageOffset.top;\n      if (app.rtl) cardLeftOffset -= $cardEl[0].scrollLeft;\n    }\n\n    cardLeftOffset -= (pageWidth - maxWidth) / 2;\n    cardTopOffset -= (pageHeight - maxHeight) / 2;\n\n    let cardRightOffset = maxWidth - cardWidth - cardLeftOffset;\n    if (app.rtl) {\n      [cardLeftOffset, cardRightOffset] = [cardRightOffset, cardLeftOffset];\n    }\n    let cardBottomOffset = maxHeight - cardHeight - cardTopOffset;\n    let translateX = (cardRightOffset - cardLeftOffset) / 2;\n    let translateY = (cardBottomOffset - cardTopOffset) / 2;\n    if (cardParams.hideNavbarOnOpen && $navbarEl && $navbarEl.length) {\n      if ($navbarEl.closest('.navbar-hidden').length) {\n        // Was hidden\n        $cardEl[0].f7KeepNavbarOnClose = true;\n      } else {\n        delete $cardEl[0].f7KeepNavbarOnClose;\n        app.navbar.hide($navbarEl, cardParams.animate, cardParams.hideStatusbarOnOpen, true);\n      }\n    }\n    if (cardParams.hideToolbarOnOpen && $toolbarEl && $toolbarEl.length) {\n      if ($toolbarEl.closest('.toolbar-hidden').length) {\n        // Was hidden\n        $cardEl[0].f7KeepToolbarOnClose = true;\n      } else {\n        delete $cardEl[0].f7KeepToolbarOnClose;\n        app.toolbar.hide($toolbarEl, cardParams.animate);\n      }\n    }\n    if ($backdropEl) {\n      $backdropEl.removeClass('card-backdrop-out').addClass('card-backdrop-in');\n    }\n    $cardEl.removeClass('card-transitioning');\n    if (cardParams.animate) {\n      $cardEl.addClass('card-opening');\n    }\n    $cardEl.trigger('card:open');\n    app.emit('cardOpen', $cardEl[0]);\n    function transitionEnd() {\n      $pageEl.addClass('page-with-card-opened');\n      if (device.ios && $pageContentEl.length) {\n        $pageContentEl.css('height', `${$pageContentEl[0].offsetHeight + 1}px`);\n        setTimeout(() => {\n          $pageContentEl.css('height', '');\n        });\n      }\n      $cardEl.addClass('card-opened');\n      $cardEl.removeClass('card-opening');\n      $cardEl.trigger('card:opened');\n      app.emit('cardOpened', $cardEl[0], $pageEl[0]);\n    }\n    $cardContentEl\n      .css({\n        width: `${maxWidth}px`,\n        height: `${maxHeight}px`,\n      })\n      .transform(\n        `translate3d(${\n          app.rtl ? cardLeftOffset + translateX : -cardLeftOffset - translateX\n        }px, 0px, 0) scale(${1 / scaleX}, ${1 / scaleY})`,\n      );\n\n    $cardEl.transform(\n      `translate3d(${\n        app.rtl ? -translateX : translateX\n      }px, ${translateY}px, 0) scale(${scaleX}, ${scaleY})`,\n    );\n    if (cardParams.animate) {\n      $cardEl.transitionEnd(() => {\n        transitionEnd();\n      });\n    } else {\n      transitionEnd();\n    }\n\n    function onResize() {\n      $cardEl.removeClass('card-transitioning');\n      cardWidth = $cardEl[0].offsetWidth;\n      cardHeight = $cardEl[0].offsetHeight;\n      pageWidth = $pageEl[0].offsetWidth;\n      pageHeight = $pageEl[0].offsetHeight;\n      maxWidth = $cardSizeEl[0].offsetWidth || pageWidth;\n      maxHeight = $cardSizeEl[0].offsetHeight || pageHeight;\n\n      statusbarHeight = 0;\n      if ($navbarEl && !cardParams.hideStatusbarOnOpen && maxHeight === pageHeight) {\n        statusbarHeight = parseInt($navbarEl.css('--f7-safe-area-top'), 10);\n        if (Number.isNaN(statusbarHeight)) statusbarHeight = 0;\n      }\n      if (statusbarHeight) {\n        maxHeight -= statusbarHeight;\n      }\n\n      scaleX = maxWidth / cardWidth;\n      scaleY = maxHeight / cardHeight;\n\n      $cardEl.transform('translate3d(0px, 0px, 0) scale(1)');\n      offset = $cardEl.offset();\n      pageOffset = $pageEl.offset();\n      if (statusbarHeight) {\n        pageOffset.top += statusbarHeight / 2;\n      }\n      offset.left -= pageOffset.left;\n      offset.top -= pageOffset.top;\n\n      cardLeftOffset = offset.left - (pageWidth - maxWidth) / 2;\n      if (app.rtl) cardLeftOffset -= $cardEl[0].scrollLeft;\n      cardTopOffset = offset.top - (pageHeight - maxHeight) / 2;\n\n      cardRightOffset = maxWidth - cardWidth - cardLeftOffset;\n      cardBottomOffset = maxHeight - cardHeight - cardTopOffset;\n      if (app.rtl) {\n        [cardLeftOffset, cardRightOffset] = [cardRightOffset, cardLeftOffset];\n      }\n      translateX = (cardRightOffset - cardLeftOffset) / 2;\n      translateY = (cardBottomOffset - cardTopOffset) / 2;\n\n      $cardEl.transform(\n        `translate3d(${\n          app.rtl ? -translateX : translateX\n        }px, ${translateY}px, 0) scale(${scaleX}, ${scaleY})`,\n      );\n      $cardContentEl\n        .css({\n          width: `${maxWidth}px`,\n          height: `${maxHeight}px`,\n        })\n        .transform(\n          `translate3d(${\n            app.rtl ? cardLeftOffset + translateX : -cardLeftOffset - translateX\n          }px, 0px, 0) scale(${1 / scaleX}, ${1 / scaleY})`,\n        );\n    }\n\n    let cardScrollTop;\n    let isTouched;\n    let isMoved;\n    let touchStartX;\n    let touchStartY;\n    let touchEndX;\n    let touchEndY;\n    let isScrolling;\n    let progress;\n    let isV;\n    let isH;\n    let $cardScrollableEl;\n    function onTouchStart(e) {\n      if (!$(e.target).closest($cardEl).length || !e.isTrusted) return;\n      if (!$cardEl.hasClass('card-opened')) return;\n      $cardScrollableEl = $cardEl.find(cardParams.scrollableEl);\n\n      if (\n        $cardScrollableEl[0] &&\n        $cardScrollableEl[0] !== $cardContentEl[0] &&\n        !$cardScrollableEl[0].contains(e.target)\n      ) {\n        cardScrollTop = 0;\n      } else {\n        cardScrollTop = $cardScrollableEl.scrollTop();\n      }\n      isTouched = true;\n      touchStartX = e.targetTouches[0].pageX;\n      touchStartY = e.targetTouches[0].pageY;\n      isScrolling = undefined;\n      isV = false;\n      isH = false;\n    }\n    function onTouchMove(e) {\n      if (!isTouched || !e.isTrusted) return;\n      touchEndX = e.targetTouches[0].pageX;\n      touchEndY = e.targetTouches[0].pageY;\n      if (typeof isScrolling === 'undefined') {\n        isScrolling = !!(\n          isScrolling || Math.abs(touchEndY - touchStartY) > Math.abs(touchEndX - touchStartX)\n        );\n      }\n      if (!isH && !isV) {\n        if (!isScrolling && e.targetTouches[0].clientX <= 50) {\n          isH = true;\n        } else {\n          isV = true;\n        }\n      }\n\n      if (!(isH || isV) || (isV && cardScrollTop !== 0)) {\n        isTouched = true;\n        isMoved = true;\n        return;\n      }\n      if (!isMoved) {\n        $cardEl.removeClass('card-transitioning');\n      }\n\n      isMoved = true;\n      progress = isV\n        ? Math.max((touchEndY - touchStartY) / 150, 0)\n        : Math.max((touchEndX - touchStartX) / (cardWidth / 2), 0);\n      if ((progress > 0 && isV) || isH) {\n        if (isV && device.ios && $cardScrollableEl[0] === $cardContentEl[0]) {\n          $cardScrollableEl.css('-webkit-overflow-scrolling', 'auto');\n          $cardScrollableEl.scrollTop(0);\n        }\n        e.preventDefault();\n      }\n\n      if (progress > 1) progress **= 0.3;\n      if (progress > (isV ? 1.3 : 1.1)) {\n        isTouched = false;\n        isMoved = false;\n        app.card.close($cardEl);\n      } else {\n        $cardEl.transform(\n          `translate3d(${app.rtl ? -translateX : translateX}px, ${translateY}px, 0) scale(${\n            scaleX * (1 - progress * 0.2)\n          }, ${scaleY * (1 - progress * 0.2)})`,\n        );\n      }\n    }\n    function onTouchEnd(e) {\n      if (!isTouched || !isMoved || !e.isTrusted) return;\n      isTouched = false;\n      isMoved = false;\n      if (device.ios) {\n        $cardScrollableEl.css('-webkit-overflow-scrolling', '');\n      }\n      if (progress >= 0.8) {\n        app.card.close($cardEl);\n      } else {\n        $cardEl\n          .addClass('card-transitioning')\n          .transform(\n            `translate3d(${\n              app.rtl ? -translateX : translateX\n            }px, ${translateY}px, 0) scale(${scaleX}, ${scaleY})`,\n          );\n      }\n    }\n\n    $cardEl[0].detachEventHandlers = function detachEventHandlers() {\n      app.off('resize', onResize);\n      if (support.touch && cardParams.swipeToClose) {\n        app.off('touchstart:passive', onTouchStart);\n        app.off('touchmove:active', onTouchMove);\n        app.off('touchend:passive', onTouchEnd);\n      }\n    };\n\n    app.on('resize', onResize);\n    if (support.touch && cardParams.swipeToClose) {\n      app.on('touchstart:passive', onTouchStart);\n      app.on('touchmove:active', onTouchMove);\n      app.on('touchend:passive', onTouchEnd);\n    }\n  },\n  close(cardEl = '.card-expandable.card-opened', animate = true) {\n    const app = this;\n    const device = getDevice();\n    const $cardEl = $(cardEl).eq(0);\n    if (!$cardEl || !$cardEl.length) return;\n    if (\n      !$cardEl.hasClass('card-opened') ||\n      $cardEl.hasClass('card-opening') ||\n      $cardEl.hasClass('card-closing')\n    )\n      return;\n\n    const $cardContentEl = $cardEl.children('.card-content');\n    const $pageContentEl = $cardEl.parents('.page-content');\n\n    const $pageEl = $cardEl.parents('.page').eq(0);\n    if (!$pageEl.length) return;\n\n    const cardParams = Object.assign({ animate }, app.params.card, $cardEl.dataset());\n    const $cardScrollableEl = $cardEl.find(cardParams.scrollableEl);\n\n    let $navbarEl;\n    let $toolbarEl;\n\n    let $backdropEl;\n    if ($cardEl.attr('data-backdrop-el')) {\n      $backdropEl = $($cardEl.attr('data-backdrop-el'));\n    }\n    if (cardParams.backdrop) {\n      $backdropEl = $cardEl.parents('.page-content').find('.card-backdrop');\n    }\n\n    if (cardParams.hideNavbarOnOpen) {\n      $navbarEl = $pageEl.children('.navbar');\n      if (!$navbarEl.length) {\n        if ($pageEl[0].f7Page) $navbarEl = $pageEl[0].f7Page.$navbarEl;\n      }\n      if ($navbarEl && $navbarEl.length && !$cardEl[0].f7KeepNavbarOnClose) {\n        app.navbar.show($navbarEl, cardParams.animate, true);\n      }\n    }\n    if (cardParams.hideToolbarOnOpen) {\n      $toolbarEl = $pageEl.children('.toolbar');\n      if (!$toolbarEl.length) {\n        $toolbarEl = $pageEl.parents('.view').children('.toolbar');\n      }\n      if (!$toolbarEl.length) {\n        $toolbarEl = $pageEl.parents('.views').children('.toolbar');\n      }\n      if ($toolbarEl && $toolbarEl.length && !$cardEl[0].f7KeepToolbarOnClose) {\n        app.toolbar.show($toolbarEl, cardParams.animate);\n      }\n    }\n\n    $pageEl.removeClass('page-with-card-opened');\n\n    if (device.ios && $pageContentEl.length) {\n      $pageContentEl.css('height', `${$pageContentEl[0].offsetHeight + 1}px`);\n      setTimeout(() => {\n        $pageContentEl.css('height', '');\n      });\n    }\n\n    if ($backdropEl && $backdropEl.length) {\n      $backdropEl.removeClass('card-backdrop-in').addClass('card-backdrop-out');\n    }\n\n    $cardEl.removeClass('card-opened card-transitioning');\n    if (cardParams.animate) {\n      $cardEl.addClass('card-closing');\n    } else {\n      $cardEl.addClass('card-no-transition');\n    }\n    $cardEl.transform('');\n    $cardEl.trigger('card:close');\n    app.emit('cardClose', $cardEl[0], $pageEl[0]);\n\n    const animateWidth = $cardEl.hasClass('card-expandable-animate-width');\n\n    function transitionEnd() {\n      if (!animateWidth) {\n        $cardContentEl.css({\n          width: '',\n          height: '',\n        });\n      }\n      if ($backdropEl && $backdropEl.length) {\n        $backdropEl.removeClass('card-backdrop-in card-backdrop-out');\n      }\n      $cardEl.removeClass('card-closing card-no-transition');\n      $cardEl.trigger('card:closed');\n      $cardEl.find('.card-expandable-size').remove();\n      app.emit('cardClosed', $cardEl[0], $pageEl[0]);\n    }\n    if (animateWidth) {\n      $cardContentEl.css({\n        width: '',\n        height: '',\n      });\n    }\n\n    $cardContentEl.transform('').scrollTop(0, animate ? 300 : 0);\n    if ($cardScrollableEl.length && $cardScrollableEl[0] !== $cardContentEl[0]) {\n      $cardScrollableEl.scrollTop(0, animate ? 300 : 0);\n    }\n    if (animate) {\n      $cardContentEl.transitionEnd(() => {\n        transitionEnd();\n      });\n    } else {\n      transitionEnd();\n    }\n\n    if ($cardEl[0].detachEventHandlers) {\n      $cardEl[0].detachEventHandlers();\n      delete $cardEl[0].detachEventHandlers;\n    }\n  },\n  toggle(cardEl = '.card-expandable', animate) {\n    const app = this;\n    const $cardEl = $(cardEl).eq(0);\n    if (!$cardEl.length) return;\n    if ($cardEl.hasClass('card-opened')) {\n      app.card.close($cardEl, animate);\n    } else {\n      app.card.open($cardEl, animate);\n    }\n  },\n};\n\nexport default {\n  name: 'card',\n  params: {\n    card: {\n      hideNavbarOnOpen: true,\n      hideStatusbarOnOpen: true,\n      hideToolbarOnOpen: true,\n      scrollableEl: '.card-content',\n      swipeToClose: true,\n      closeByBackdropClick: true,\n      backdrop: true,\n    },\n  },\n  create() {\n    const app = this;\n    bindMethods(app, {\n      card: CardExpandable,\n    });\n  },\n  on: {\n    pageBeforeIn(page) {\n      const app = this;\n      if (\n        app.params.card.hideNavbarOnOpen &&\n        page.navbarEl &&\n        page.$el.find('.card-opened.card-expandable').length\n      ) {\n        app.navbar.hide(page.navbarEl, true, app.params.card.hideStatusbarOnOpen, true);\n      }\n\n      if (\n        app.params.card.hideToolbarOnOpen &&\n        page.$el.find('.card-opened.card-expandable').length\n      ) {\n        let $toolbarEl = page.$el.children('.toolbar');\n        if (!$toolbarEl.length) {\n          $toolbarEl = page.$el.parents('.view').children('.toolbar');\n        }\n        if (!$toolbarEl.length) {\n          $toolbarEl = page.$el.parents('.views').children('.toolbar');\n        }\n        if ($toolbarEl && $toolbarEl.length) {\n          app.toolbar.hide($toolbarEl);\n        }\n      }\n    },\n  },\n  clicks: {\n    '.card-close': function closeCard($clickedEl, data) {\n      const app = this;\n      app.card.close(data.card, data.animate);\n    },\n    '.card-open': function closeCard($clickedEl, data) {\n      const app = this;\n      app.card.open(data.card, data.animate);\n    },\n    '.card-expandable': function toggleExpandableCard($clickedEl, data, e) {\n      const app = this;\n      if (\n        $clickedEl.hasClass('card-opened') ||\n        $clickedEl.hasClass('card-opening') ||\n        $clickedEl.hasClass('card-closing')\n      )\n        return;\n      if ($(e.target).closest('.card-prevent-open, .card-close').length) return;\n      app.card.open($clickedEl);\n    },\n    '.card-backdrop-in': function onBackdropClick() {\n      const app = this;\n      let needToClose = false;\n      if (app.params.card.closeByBackdropClick) needToClose = true;\n      const $openedCardEl = $('.card-opened');\n      if (!$openedCardEl.length) return;\n      if ($openedCardEl.attr('data-close-by-backdrop-click') === 'true') {\n        needToClose = true;\n      } else if ($openedCardEl.attr('data-close-by-backdrop-click') === 'false') {\n        needToClose = false;\n      }\n      if (needToClose) app.card.close($openedCardEl);\n    },\n  },\n};\n","import { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { extend, serializeObject } from '../../shared/utils.js';\n\n// Form Data\nconst FormData = {\n  store(form, data) {\n    const app = this;\n    const window = getWindow();\n    let formId = form;\n\n    const $formEl = $(form);\n    if ($formEl.length && $formEl.is('form') && $formEl.attr('id')) {\n      formId = $formEl.attr('id');\n    }\n    // Store form data in app.formsData\n    app.form.data[`form-${formId}`] = data;\n\n    // Store form data in local storage also\n    window.localStorage[`f7form-${formId}`] = JSON.stringify(data);\n  },\n  get(form) {\n    const app = this;\n    const window = getWindow();\n    let formId = form;\n\n    const $formEl = $(form);\n    if ($formEl.length && $formEl.is('form') && $formEl.attr('id')) {\n      formId = $formEl.attr('id');\n    }\n\n    if (window.localStorage[`f7form-${formId}`]) {\n      return JSON.parse(window.localStorage[`f7form-${formId}`]);\n    }\n    if (app.form.data[`form-${formId}`]) {\n      return app.form.data[`form-${formId}`];\n    }\n    return undefined;\n  },\n  remove(form) {\n    const app = this;\n    const window = getWindow();\n    let formId = form;\n\n    const $formEl = $(form);\n    if ($formEl.length && $formEl.is('form') && $formEl.attr('id')) {\n      formId = $formEl.attr('id');\n    }\n\n    // Delete form data from app.formsData\n    if (app.form.data[`form-${formId}`]) {\n      app.form.data[`form-${formId}`] = '';\n      delete app.form.data[`form-${formId}`];\n    }\n\n    // Delete form data from local storage also\n    if (window.localStorage[`f7form-${formId}`]) {\n      window.localStorage[`f7form-${formId}`] = '';\n      window.localStorage.removeItem(`f7form-${formId}`);\n    }\n  },\n};\n\n// Form Storage\nconst FormStorage = {\n  init(formEl) {\n    const app = this;\n    const $formEl = $(formEl);\n    const formId = $formEl.attr('id');\n    if (!formId) return;\n    const initialData = app.form.getFormData(formId);\n    if (initialData) {\n      app.form.fillFromData($formEl, initialData);\n    }\n    function store() {\n      const data = app.form.convertToData($formEl);\n      if (!data) return;\n      app.form.storeFormData(formId, data);\n      $formEl.trigger('form:storedata', data);\n      app.emit('formStoreData', $formEl[0], data);\n    }\n    $formEl.on('change submit', store);\n  },\n  destroy(formEl) {\n    const $formEl = $(formEl);\n    $formEl.off('change submit');\n  },\n};\n\n// Form To/From Data\nfunction formToData(formEl) {\n  const app = this;\n  const $formEl = $(formEl).eq(0);\n  if ($formEl.length === 0) return undefined;\n\n  // Form data\n  const data = {};\n\n  // Skip input types\n  const skipTypes = ['submit', 'image', 'button', 'file'];\n  const skipNames = [];\n  $formEl.find('input, select, textarea').each((inputEl) => {\n    const $inputEl = $(inputEl);\n    if ($inputEl.hasClass('ignore-store-data') || $inputEl.hasClass('no-store-data')) {\n      return;\n    }\n    const name = $inputEl.attr('name');\n    const type = $inputEl.attr('type');\n    const tag = inputEl.nodeName.toLowerCase();\n    if (skipTypes.indexOf(type) >= 0) return;\n    if (skipNames.indexOf(name) >= 0 || !name) return;\n    if (tag === 'select' && $inputEl.prop('multiple')) {\n      skipNames.push(name);\n      data[name] = [];\n      $formEl.find(`select[name=\"${name}\"] option`).each((el) => {\n        if (el.selected) data[name].push(el.value);\n      });\n    } else {\n      switch (type) {\n        case 'checkbox':\n          skipNames.push(name);\n          data[name] = [];\n          $formEl.find(`input[name=\"${name}\"]`).each((el) => {\n            if (el.checked) data[name].push(el.value);\n          });\n          break;\n        case 'radio':\n          skipNames.push(name);\n          $formEl.find(`input[name=\"${name}\"]`).each((el) => {\n            if (el.checked) data[name] = el.value;\n          });\n          break;\n        default:\n          data[name] = $inputEl.val();\n          break;\n      }\n    }\n  });\n  $formEl.trigger('form:todata', data);\n  app.emit('formToData', $formEl[0], data);\n\n  return data;\n}\nfunction formFromData(formEl, formData) {\n  const app = this;\n  const $formEl = $(formEl).eq(0);\n  if (!$formEl.length) return;\n\n  let data = formData;\n  const formId = $formEl.attr('id');\n\n  if (!data && formId) {\n    data = app.form.getFormData(formId);\n  }\n\n  if (!data) return;\n\n  // Skip input types\n  const skipTypes = ['submit', 'image', 'button', 'file'];\n  const skipNames = [];\n\n  $formEl.find('input, select, textarea').each((inputEl) => {\n    const $inputEl = $(inputEl);\n    if ($inputEl.hasClass('ignore-store-data') || $inputEl.hasClass('no-store-data')) {\n      return;\n    }\n    const name = $inputEl.attr('name');\n    const type = $inputEl.attr('type');\n    const tag = inputEl.nodeName.toLowerCase();\n    if (typeof data[name] === 'undefined' || data[name] === null) return;\n    if (skipTypes.indexOf(type) >= 0) return;\n    if (skipNames.indexOf(name) >= 0 || !name) return;\n    if (tag === 'select' && $inputEl.prop('multiple')) {\n      skipNames.push(name);\n      $formEl.find(`select[name=\"${name}\"] option`).each((el) => {\n        const selectEl = el;\n        if (data[name].indexOf(el.value) >= 0) selectEl.selected = true;\n        else selectEl.selected = false;\n      });\n    } else {\n      switch (type) {\n        case 'checkbox':\n          skipNames.push(name);\n          $formEl.find(`input[name=\"${name}\"]`).each((el) => {\n            const checkboxEl = el;\n            if (data[name].indexOf(el.value) >= 0) checkboxEl.checked = true;\n            else checkboxEl.checked = false;\n          });\n          break;\n        case 'radio':\n          skipNames.push(name);\n          $formEl.find(`input[name=\"${name}\"]`).each((el) => {\n            const radioEl = el;\n            if (data[name] === el.value) radioEl.checked = true;\n            else radioEl.checked = false;\n          });\n          break;\n        default:\n          $inputEl.val(data[name]);\n          break;\n      }\n    }\n    if (tag === 'select' || tag === 'input' || tag === 'textarea') {\n      $inputEl.trigger('change', 'fromdata');\n    }\n  });\n  $formEl.trigger('form:fromdata', data);\n  app.emit('formFromData', $formEl[0], data);\n}\n\nfunction initAjaxForm() {\n  const app = this;\n  const window = getWindow();\n  const document = getDocument();\n\n  function onSubmitChange(e, fromData) {\n    const $formEl = $(this);\n    if (e.type === 'change' && !$formEl.hasClass('form-ajax-submit-onchange')) return;\n    if (e.type === 'submit') e.preventDefault();\n\n    if (e.type === 'change' && fromData === 'fromdata') return;\n\n    const method = ($formEl.attr('method') || 'GET').toUpperCase();\n    const contentType = $formEl.attr('enctype') || $formEl.prop('enctype');\n\n    let url = $formEl.attr('action');\n    if (!url) return;\n\n    let data;\n    if (method === 'POST') {\n      if (\n        contentType === 'application/x-www-form-urlencoded' ||\n        contentType === 'application/json'\n      ) {\n        data = app.form.convertToData($formEl[0]);\n        if (contentType === 'application/json') {\n          data = JSON.stringify(data);\n        }\n      } else {\n        data = new window.FormData($formEl[0]);\n      }\n    } else {\n      data = serializeObject(app.form.convertToData($formEl[0]));\n      if (url.includes('?')) {\n        url += `&${data}`;\n      } else {\n        url += `?${data}`;\n      }\n    }\n\n    $formEl.trigger('formajax:beforesend', { data });\n    app.emit('formAjaxBeforeSend', $formEl[0], data);\n\n    fetch(url, {\n      method,\n      headers: { 'Content-Type': contentType || 'application/x-www-form-urlencoded' },\n      ...(method === 'POST' || method === 'PUT' ? { body: data } : {}),\n    })\n      .then((response) => {\n        $formEl.trigger('formajax:complete', { data, response });\n        app.emit('formAjaxComplete', $formEl[0], data, response);\n\n        $formEl.trigger('formajax:success', { data, response });\n        app.emit('formAjaxSuccess', $formEl[0], data, response);\n      })\n      .catch((error) => {\n        $formEl.trigger('formajax:error', { data, error });\n        app.emit('formAjaxError', $formEl[0], data, error);\n      });\n  }\n  $(document).on(\n    'submit change',\n    'form.form-ajax-submit, form.form-ajax-submit-onchange',\n    onSubmitChange,\n  );\n}\n\nexport default {\n  name: 'form',\n  create() {\n    const app = this;\n    extend(app, {\n      form: {\n        data: {},\n        storeFormData: FormData.store.bind(app),\n        getFormData: FormData.get.bind(app),\n        removeFormData: FormData.remove.bind(app),\n        convertToData: formToData.bind(app),\n        fillFromData: formFromData.bind(app),\n        storage: {\n          init: FormStorage.init.bind(app),\n          destroy: FormStorage.destroy.bind(app),\n        },\n      },\n    });\n  },\n  on: {\n    init() {\n      const app = this;\n      initAjaxForm.call(app);\n    },\n    tabBeforeRemove(tabEl) {\n      const app = this;\n      $(tabEl)\n        .find('.form-store-data')\n        .each((formEl) => {\n          app.form.storage.destroy(formEl);\n        });\n    },\n    tabMounted(tabEl) {\n      const app = this;\n      $(tabEl)\n        .find('.form-store-data')\n        .each((formEl) => {\n          app.form.storage.init(formEl);\n        });\n    },\n    pageBeforeRemove(page) {\n      const app = this;\n      page.$el.find('.form-store-data').each((formEl) => {\n        app.form.storage.destroy(formEl);\n      });\n    },\n    pageInit(page) {\n      const app = this;\n      page.$el.find('.form-store-data').each((formEl) => {\n        app.form.storage.init(formEl);\n      });\n    },\n  },\n};\n","import { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { bindMethods } from '../../shared/utils.js';\nimport { getDevice } from '../../shared/get-device.js';\n\nconst Input = {\n  ignoreTypes: ['checkbox', 'button', 'submit', 'range', 'radio', 'image'],\n  createTextareaResizableShadow() {\n    const document = getDocument();\n    const $shadowEl = $(document.createElement('textarea'));\n    $shadowEl.addClass('textarea-resizable-shadow');\n    $shadowEl.prop({\n      disabled: true,\n      readonly: true,\n    });\n    Input.textareaResizableShadow = $shadowEl;\n  },\n  textareaResizableShadow: undefined,\n  resizeTextarea(textareaEl) {\n    const app = this;\n    const window = getWindow();\n    const $textareaEl = $(textareaEl);\n    if (!Input.textareaResizableShadow) {\n      Input.createTextareaResizableShadow();\n    }\n    const $shadowEl = Input.textareaResizableShadow;\n    if (!$textareaEl.length) return;\n    if (!$textareaEl.hasClass('resizable')) return;\n    if (Input.textareaResizableShadow.parents().length === 0) {\n      app.$el.append($shadowEl);\n    }\n\n    const styles = window.getComputedStyle($textareaEl[0]);\n    'padding-top padding-bottom padding-left padding-right margin-left margin-right margin-top margin-bottom width font-size font-family font-style font-weight line-height font-variant text-transform letter-spacing border box-sizing display'\n      .split(' ')\n      .forEach((style) => {\n        let styleValue = styles[style];\n        if ('font-size line-height letter-spacing width'.split(' ').indexOf(style) >= 0) {\n          styleValue = styleValue.replace(',', '.');\n        }\n        $shadowEl.css(style, styleValue);\n      });\n    const currentHeight = $textareaEl[0].clientHeight;\n\n    $shadowEl.val('');\n    const initialHeight = $shadowEl[0].scrollHeight;\n\n    $shadowEl.val($textareaEl.val());\n    $shadowEl.css('height', 0);\n    const scrollHeight = $shadowEl[0].scrollHeight;\n\n    if (currentHeight !== scrollHeight) {\n      if (scrollHeight > initialHeight) {\n        $textareaEl.css('height', `${scrollHeight}px`);\n      } else if (scrollHeight < currentHeight) {\n        $textareaEl.css('height', '');\n      }\n      if (scrollHeight > initialHeight || scrollHeight < currentHeight) {\n        $textareaEl.trigger('textarea:resize', { initialHeight, currentHeight, scrollHeight });\n        app.emit('textareaResize', { initialHeight, currentHeight, scrollHeight });\n      }\n    }\n  },\n  validate(inputEl) {\n    const $inputEl = $(inputEl);\n    if (!$inputEl.length) return true;\n    const $itemInputEl = $inputEl.parents('.item-input');\n    const $inputWrapEl = $inputEl.parents('.input');\n    function unsetReadonly() {\n      if ($inputEl[0].f7ValidateReadonly) {\n        $inputEl[0].readOnly = false;\n      }\n    }\n    function setReadonly() {\n      if ($inputEl[0].f7ValidateReadonly) {\n        $inputEl[0].readOnly = true;\n      }\n    }\n    unsetReadonly();\n    const validity = $inputEl[0].validity;\n    const validationMessage =\n      $inputEl.dataset().errorMessage || $inputEl[0].validationMessage || '';\n    if (!validity) {\n      setReadonly();\n      return true;\n    }\n    if (!validity.valid) {\n      let $errorEl = $inputEl.nextAll('.item-input-error-message, .input-error-message');\n      if (validationMessage) {\n        if ($errorEl.length === 0) {\n          $errorEl = $(\n            `<div class=\"${\n              $inputWrapEl.length ? 'input-error-message' : 'item-input-error-message'\n            }\"></div>`,\n          );\n          $errorEl.insertAfter($inputEl);\n        }\n        $errorEl.text(validationMessage);\n      }\n      if ($errorEl.length > 0) {\n        $itemInputEl.addClass('item-input-with-error-message');\n        $inputWrapEl.addClass('input-with-error-message');\n      }\n      $itemInputEl.addClass('item-input-invalid');\n      $inputWrapEl.addClass('input-invalid');\n      $inputEl.addClass('input-invalid');\n      setReadonly();\n      return false;\n    }\n    $itemInputEl.removeClass('item-input-invalid item-input-with-error-message');\n    $inputWrapEl.removeClass('input-invalid input-with-error-message');\n    $inputEl.removeClass('input-invalid');\n    setReadonly();\n    return true;\n  },\n  validateInputs(el) {\n    const app = this;\n    const validates = $(el)\n      .find('input, textarea, select')\n      .map((inputEl) => app.input.validate(inputEl));\n    return validates.indexOf(false) < 0;\n  },\n  focus(inputEl) {\n    const $inputEl = $(inputEl);\n    const type = $inputEl.attr('type');\n    if (Input.ignoreTypes.indexOf(type) >= 0) return;\n    $inputEl.parents('.item-input').addClass('item-input-focused');\n    $inputEl.parents('.input').addClass('input-focused');\n    $inputEl.addClass('input-focused');\n  },\n  blur(inputEl) {\n    const $inputEl = $(inputEl);\n    $inputEl.parents('.item-input').removeClass('item-input-focused');\n    $inputEl.parents('.input').removeClass('input-focused');\n    $inputEl.removeClass('input-focused');\n  },\n  checkEmptyState(inputEl) {\n    const app = this;\n    let $inputEl = $(inputEl);\n    if (!$inputEl.is('input, select, textarea, .item-input [contenteditable]')) {\n      $inputEl = $inputEl.find('input, select, textarea, .item-input [contenteditable]').eq(0);\n    }\n    if (!$inputEl.length) return;\n    const isContentEditable = $inputEl[0].hasAttribute('contenteditable');\n    let value;\n    if (isContentEditable) {\n      if ($inputEl.find('.text-editor-placeholder').length) value = '';\n      else value = $inputEl.html();\n    } else {\n      value = $inputEl.val();\n    }\n    const $itemInputEl = $inputEl.parents('.item-input');\n    const $inputWrapEl = $inputEl.parents('.input');\n    if (\n      (value && typeof value === 'string' && value.trim() !== '') ||\n      (Array.isArray(value) && value.length > 0)\n    ) {\n      $itemInputEl.addClass('item-input-with-value');\n      $inputWrapEl.addClass('input-with-value');\n      $inputEl.addClass('input-with-value');\n      $inputEl.trigger('input:notempty');\n      app.emit('inputNotEmpty', $inputEl[0]);\n    } else {\n      $itemInputEl.removeClass('item-input-with-value');\n      $inputWrapEl.removeClass('input-with-value');\n      $inputEl.removeClass('input-with-value');\n      $inputEl.trigger('input:empty');\n      app.emit('inputEmpty', $inputEl[0]);\n    }\n  },\n  scrollIntoView(inputEl, duration = 0, centered, force) {\n    const $inputEl = $(inputEl);\n    const $scrollableEl = $inputEl\n      .parents('.page-content, .panel, .card-expandable .card-content')\n      .eq(0);\n    if (!$scrollableEl.length) {\n      return false;\n    }\n    const contentHeight = $scrollableEl[0].offsetHeight;\n    const contentScrollTop = $scrollableEl[0].scrollTop;\n    const contentPaddingTop = parseInt($scrollableEl.css('padding-top'), 10);\n    const contentPaddingBottom = parseInt($scrollableEl.css('padding-bottom'), 10);\n    const contentOffsetTop = $scrollableEl.offset().top - contentScrollTop;\n\n    const inputOffsetTop = $inputEl.offset().top - contentOffsetTop;\n    const inputHeight = $inputEl[0].offsetHeight;\n\n    const min = inputOffsetTop + contentScrollTop - contentPaddingTop;\n    const max =\n      inputOffsetTop + contentScrollTop - contentHeight + contentPaddingBottom + inputHeight;\n    const centeredPosition = min + (max - min) / 2;\n\n    if (contentScrollTop > min) {\n      $scrollableEl.scrollTop(centered ? centeredPosition : min, duration);\n      return true;\n    }\n    if (contentScrollTop < max) {\n      $scrollableEl.scrollTop(centered ? centeredPosition : max, duration);\n      return true;\n    }\n    if (force) {\n      $scrollableEl.scrollTop(centered ? centeredPosition : max, duration);\n    }\n    return false;\n  },\n  init() {\n    const app = this;\n    const device = getDevice();\n    const window = getWindow();\n    const document = getDocument();\n    Input.createTextareaResizableShadow();\n    function onFocus() {\n      const inputEl = this;\n      if (app.params.input.scrollIntoViewOnFocus) {\n        if (device.android) {\n          $(window).once('resize', () => {\n            if (document && document.activeElement === inputEl) {\n              app.input.scrollIntoView(\n                inputEl,\n                app.params.input.scrollIntoViewDuration,\n                app.params.input.scrollIntoViewCentered,\n                app.params.input.scrollIntoViewAlways,\n              );\n            }\n          });\n        } else {\n          app.input.scrollIntoView(\n            inputEl,\n            app.params.input.scrollIntoViewDuration,\n            app.params.input.scrollIntoViewCentered,\n            app.params.input.scrollIntoViewAlways,\n          );\n        }\n      }\n      app.input.focus(inputEl);\n    }\n    function onBlur() {\n      const $inputEl = $(this);\n      const tag = $inputEl[0].nodeName.toLowerCase();\n      app.input.blur($inputEl);\n      if (\n        $inputEl.dataset().validate ||\n        $inputEl.attr('validate') !== null ||\n        $inputEl.attr('data-validate-on-blur') !== null\n      ) {\n        app.input.validate($inputEl);\n      }\n      // Resize textarea\n      if (tag === 'textarea' && $inputEl.hasClass('resizable')) {\n        if (Input.textareaResizableShadow) Input.textareaResizableShadow.remove();\n      }\n    }\n    function onChange() {\n      const $inputEl = $(this);\n      const type = $inputEl.attr('type');\n      const tag = $inputEl[0].nodeName.toLowerCase();\n      const isContentEditable = $inputEl[0].hasAttribute('contenteditable');\n      if (Input.ignoreTypes.indexOf(type) >= 0) return;\n\n      // Check Empty State\n      app.input.checkEmptyState($inputEl);\n      if (isContentEditable) return;\n\n      // Check validation\n      if (\n        $inputEl.attr('data-validate-on-blur') === null &&\n        ($inputEl.dataset().validate || $inputEl.attr('validate') !== null)\n      ) {\n        app.input.validate($inputEl);\n      }\n\n      // Resize textarea\n      if (tag === 'textarea' && $inputEl.hasClass('resizable')) {\n        app.input.resizeTextarea($inputEl);\n      }\n    }\n    function onInvalid(e) {\n      const $inputEl = $(this);\n      if (\n        $inputEl.attr('data-validate-on-blur') === null &&\n        ($inputEl.dataset().validate || $inputEl.attr('validate') !== null)\n      ) {\n        e.preventDefault();\n        app.input.validate($inputEl);\n      }\n    }\n    function clearInput() {\n      const $clicked = $(this);\n      const $inputEl = $clicked.siblings('input, textarea').eq(0);\n      const previousValue = $inputEl.val();\n      $inputEl.val('').trigger('input change').focus().trigger('input:clear', previousValue);\n      app.emit('inputClear', previousValue);\n    }\n    function preventDefault(e) {\n      e.preventDefault();\n    }\n    $(document).on('click', '.input-clear-button', clearInput);\n    $(document).on('mousedown', '.input-clear-button', preventDefault);\n    $(document).on(\n      'change input',\n      'input, textarea, select, .item-input [contenteditable]',\n      onChange,\n      true,\n    );\n    $(document).on(\n      'focus',\n      'input, textarea, select, .item-input [contenteditable]',\n      onFocus,\n      true,\n    );\n    $(document).on('blur', 'input, textarea, select, .item-input [contenteditable]', onBlur, true);\n    $(document).on('invalid', 'input, textarea, select', onInvalid, true);\n  },\n};\n\nexport default {\n  name: 'input',\n  params: {\n    input: {\n      scrollIntoViewOnFocus: undefined,\n      scrollIntoViewCentered: false,\n      scrollIntoViewDuration: 0,\n      scrollIntoViewAlways: false,\n    },\n  },\n  create() {\n    const app = this;\n    if (typeof app.params.input.scrollIntoViewOnFocus === 'undefined') {\n      app.params.input.scrollIntoViewOnFocus = getDevice().android;\n    }\n    bindMethods(app, {\n      input: Input,\n    });\n  },\n  on: {\n    init() {\n      const app = this;\n      app.input.init();\n    },\n    tabMounted(tabEl) {\n      const app = this;\n      const $tabEl = $(tabEl);\n      $tabEl.find('.item-input, .input').each((itemInputEl) => {\n        const $itemInputEl = $(itemInputEl);\n        $itemInputEl.find('input, select, textarea, [contenteditable]').each((inputEl) => {\n          const $inputEl = $(inputEl);\n          if (Input.ignoreTypes.indexOf($inputEl.attr('type')) >= 0) return;\n          app.input.checkEmptyState($inputEl);\n        });\n      });\n      $tabEl.find('textarea.resizable').each((textareaEl) => {\n        app.input.resizeTextarea(textareaEl);\n      });\n    },\n    pageInit(page) {\n      const app = this;\n      const $pageEl = page.$el;\n      $pageEl.find('.item-input, .input').each((itemInputEl) => {\n        const $itemInputEl = $(itemInputEl);\n        $itemInputEl.find('input, select, textarea, [contenteditable]').each((inputEl) => {\n          const $inputEl = $(inputEl);\n          if (Input.ignoreTypes.indexOf($inputEl.attr('type')) >= 0) return;\n          app.input.checkEmptyState($inputEl);\n        });\n      });\n      $pageEl.find('textarea.resizable').each((textareaEl) => {\n        app.input.resizeTextarea(textareaEl);\n      });\n    },\n    'panelBreakpoint panelCollapsedBreakpoint panelResize panelOpen panelSwipeOpen resize viewMasterDetailBreakpoint':\n      function onPanelOpen(instance) {\n        const app = this;\n        if (instance && instance.$el) {\n          instance.$el.find('textarea.resizable').each((textareaEl) => {\n            app.input.resizeTextarea(textareaEl);\n          });\n        } else {\n          $('textarea.resizable').each((textareaEl) => {\n            app.input.resizeTextarea(textareaEl);\n          });\n        }\n      },\n  },\n};\n","import $ from '../../shared/dom7.js';\nimport { extend, now, nextTick, deleteProps } from '../../shared/utils.js';\nimport Framework7Class from '../../shared/class.js';\nimport { getSupport } from '../../shared/get-support.js';\n\nclass Toggle extends Framework7Class {\n  constructor(app, params = {}) {\n    super(params, [app]);\n    const toggle = this;\n    const support = getSupport();\n\n    const defaults = {};\n\n    // Extend defaults with modules params\n    toggle.useModulesParams(defaults);\n\n    toggle.params = extend(defaults, params);\n\n    const el = toggle.params.el;\n    if (!el) return toggle;\n\n    const $el = $(el);\n    if ($el.length === 0) return toggle;\n\n    if ($el[0].f7Toggle) return $el[0].f7Toggle;\n\n    const $inputEl = $el.children('input[type=\"checkbox\"]');\n\n    extend(toggle, {\n      app,\n      $el,\n      el: $el[0],\n      $inputEl,\n      inputEl: $inputEl[0],\n      disabled:\n        $el.hasClass('disabled') ||\n        $inputEl.hasClass('disabled') ||\n        $inputEl.attr('disabled') ||\n        $inputEl[0].disabled,\n    });\n\n    Object.defineProperty(toggle, 'checked', {\n      enumerable: true,\n      configurable: true,\n      set(checked) {\n        if (!toggle || typeof toggle.$inputEl === 'undefined') return;\n        if (toggle.checked === checked) return;\n        $inputEl[0].checked = checked;\n        toggle.$inputEl.trigger('change');\n      },\n      get() {\n        return $inputEl[0].checked;\n      },\n    });\n\n    $el[0].f7Toggle = toggle;\n\n    let isTouched;\n    const touchesStart = {};\n    let isScrolling;\n    let touchesDiff;\n    let toggleWidth;\n    let touchStartTime;\n    let touchStartChecked;\n    function handleTouchStart(e) {\n      if (isTouched || toggle.disabled) return;\n      touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n      touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n      touchesDiff = 0;\n\n      isTouched = true;\n      isScrolling = undefined;\n      touchStartTime = now();\n      touchStartChecked = toggle.checked;\n\n      toggleWidth = $el[0].offsetWidth;\n      nextTick(() => {\n        if (isTouched) {\n          $el.addClass('toggle-active-state');\n        }\n      });\n    }\n    function handleTouchMove(e) {\n      if (!isTouched || toggle.disabled) return;\n      const pageX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n      const pageY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n      const inverter = app.rtl ? -1 : 1;\n\n      if (typeof isScrolling === 'undefined') {\n        isScrolling = !!(\n          isScrolling || Math.abs(pageY - touchesStart.y) > Math.abs(pageX - touchesStart.x)\n        );\n      }\n      if (isScrolling) {\n        isTouched = false;\n        return;\n      }\n      e.preventDefault();\n\n      touchesDiff = pageX - touchesStart.x;\n\n      let changed;\n      if (\n        touchesDiff * inverter < 0 &&\n        Math.abs(touchesDiff) > toggleWidth / 3 &&\n        touchStartChecked\n      ) {\n        changed = true;\n      }\n      if (\n        touchesDiff * inverter > 0 &&\n        Math.abs(touchesDiff) > toggleWidth / 3 &&\n        !touchStartChecked\n      ) {\n        changed = true;\n      }\n      if (changed) {\n        touchesStart.x = pageX;\n        toggle.checked = !touchStartChecked;\n        touchStartChecked = !touchStartChecked;\n      }\n    }\n    function handleTouchEnd() {\n      if (!isTouched || toggle.disabled) {\n        if (isScrolling) $el.removeClass('toggle-active-state');\n        isTouched = false;\n        return;\n      }\n      const inverter = app.rtl ? -1 : 1;\n      isTouched = false;\n\n      $el.removeClass('toggle-active-state');\n\n      let changed;\n      if (now() - touchStartTime < 300) {\n        if (touchesDiff * inverter < 0 && touchStartChecked) {\n          changed = true;\n        }\n        if (touchesDiff * inverter > 0 && !touchStartChecked) {\n          changed = true;\n        }\n        if (changed) {\n          toggle.checked = !touchStartChecked;\n        }\n      }\n    }\n    function handleInputChange() {\n      toggle.$el.trigger('toggle:change');\n      toggle.emit('local::change toggleChange', toggle);\n    }\n    toggle.attachEvents = function attachEvents() {\n      const passive = support.passiveListener ? { passive: true } : false;\n      $el.on(app.touchEvents.start, handleTouchStart, passive);\n      app.on('touchmove', handleTouchMove);\n      app.on('touchend:passive', handleTouchEnd);\n      toggle.$inputEl.on('change', handleInputChange);\n    };\n    toggle.detachEvents = function detachEvents() {\n      const passive = support.passiveListener ? { passive: true } : false;\n      $el.off(app.touchEvents.start, handleTouchStart, passive);\n      app.off('touchmove', handleTouchMove);\n      app.off('touchend:passive', handleTouchEnd);\n      toggle.$inputEl.off('change', handleInputChange);\n    };\n\n    // Install Modules\n    toggle.useModules();\n\n    // Init\n    toggle.init();\n  }\n\n  toggle() {\n    const toggle = this;\n    toggle.checked = !toggle.checked;\n  }\n\n  init() {\n    const toggle = this;\n    toggle.attachEvents();\n  }\n\n  destroy() {\n    let toggle = this;\n    toggle.$el.trigger('toggle:beforedestroy');\n    toggle.emit('local::beforeDestroy toggleBeforeDestroy', toggle);\n    delete toggle.$el[0].f7Toggle;\n    toggle.detachEvents();\n    deleteProps(toggle);\n    toggle = null;\n  }\n}\n\nexport default Toggle;\n","import $ from '../../shared/dom7.js';\nimport ConstructorMethods from '../../shared/constructor-methods.js';\nimport Toggle from './toggle-class.js';\n\nexport default {\n  name: 'toggle',\n  create() {\n    const app = this;\n    app.toggle = ConstructorMethods({\n      defaultSelector: '.toggle',\n      constructor: Toggle,\n      app,\n      domProp: 'f7Toggle',\n    });\n  },\n  static: {\n    Toggle,\n  },\n  on: {\n    tabMounted(tabEl) {\n      const app = this;\n      $(tabEl)\n        .find('.toggle-init')\n        .each((toggleEl) => app.toggle.create({ el: toggleEl }));\n    },\n    tabBeforeRemove(tabEl) {\n      $(tabEl)\n        .find('.toggle-init')\n        .each((toggleEl) => {\n          if (toggleEl.f7Toggle) toggleEl.f7Toggle.destroy();\n        });\n    },\n    pageInit(page) {\n      const app = this;\n      page.$el.find('.toggle-init').each((toggleEl) => app.toggle.create({ el: toggleEl }));\n    },\n    pageBeforeRemove(page) {\n      page.$el.find('.toggle-init').each((toggleEl) => {\n        if (toggleEl.f7Toggle) toggleEl.f7Toggle.destroy();\n      });\n    },\n  },\n  vnode: {\n    'toggle-init': {\n      insert(vnode) {\n        const app = this;\n        const toggleEl = vnode.elm;\n        app.toggle.create({ el: toggleEl });\n      },\n      destroy(vnode) {\n        const toggleEl = vnode.elm;\n        if (toggleEl.f7Toggle) toggleEl.f7Toggle.destroy();\n      },\n    },\n  },\n};\n","import $ from '../../shared/dom7.js';\nimport { extend, nextTick, deleteProps } from '../../shared/utils.js';\nimport Framework7Class from '../../shared/class.js';\nimport { getSupport } from '../../shared/get-support.js';\n\nclass Range extends Framework7Class {\n  constructor(app, params) {\n    super(params, [app]);\n\n    const range = this;\n    const support = getSupport();\n\n    const defaults = {\n      el: null,\n      inputEl: null,\n      dual: false,\n      step: 1,\n      label: false,\n      min: 0,\n      max: 100,\n      value: 0,\n      draggableBar: true,\n      vertical: false,\n      verticalReversed: false,\n      formatLabel: null,\n      scale: false,\n      scaleSteps: 5,\n      scaleSubSteps: 0,\n      formatScaleLabel: null,\n      limitKnobPosition: app.theme === 'ios',\n    };\n\n    // Extend defaults with modules params\n    range.useModulesParams(defaults);\n\n    range.params = extend(defaults, params);\n\n    const el = range.params.el;\n    if (!el) return range;\n\n    const $el = $(el);\n    if ($el.length === 0) return range;\n\n    if ($el[0].f7Range) return $el[0].f7Range;\n\n    const dataset = $el.dataset();\n\n    'step min max value scaleSteps scaleSubSteps'.split(' ').forEach((paramName) => {\n      if (typeof params[paramName] === 'undefined' && typeof dataset[paramName] !== 'undefined') {\n        range.params[paramName] = parseFloat(dataset[paramName]);\n      }\n    });\n    'dual label vertical verticalReversed scale'.split(' ').forEach((paramName) => {\n      if (typeof params[paramName] === 'undefined' && typeof dataset[paramName] !== 'undefined') {\n        range.params[paramName] = dataset[paramName];\n      }\n    });\n\n    if (!range.params.value) {\n      if (typeof dataset.value !== 'undefined') range.params.value = dataset.value;\n      if (typeof dataset.valueLeft !== 'undefined' && typeof dataset.valueRight !== 'undefined') {\n        range.params.value = [parseFloat(dataset.valueLeft), parseFloat(dataset.valueRight)];\n      }\n    }\n\n    let $inputEl;\n    if (!range.params.dual) {\n      if (range.params.inputEl) {\n        $inputEl = $(range.params.inputEl);\n      } else if ($el.find('input[type=\"range\"]').length) {\n        $inputEl = $el.find('input[type=\"range\"]').eq(0);\n      }\n    }\n\n    const {\n      dual,\n      step,\n      label,\n      min,\n      max,\n      value,\n      vertical,\n      verticalReversed,\n      scale,\n      scaleSteps,\n      scaleSubSteps,\n      limitKnobPosition,\n    } = range.params;\n\n    extend(range, {\n      app,\n      $el,\n      el: $el[0],\n      $inputEl,\n      inputEl: $inputEl ? $inputEl[0] : undefined,\n      dual,\n      step,\n      label,\n      min,\n      max,\n      value,\n      previousValue: value,\n      vertical,\n      verticalReversed,\n      scale,\n      scaleSteps,\n      scaleSubSteps,\n      limitKnobPosition,\n    });\n\n    if ($inputEl) {\n      'step min max'.split(' ').forEach((paramName) => {\n        if (!params[paramName] && $inputEl.attr(paramName)) {\n          range.params[paramName] = parseFloat($inputEl.attr(paramName));\n          range[paramName] = parseFloat($inputEl.attr(paramName));\n        }\n      });\n      if (typeof $inputEl.val() !== 'undefined') {\n        range.params.value = parseFloat($inputEl.val());\n        range.value = parseFloat($inputEl.val());\n      }\n    }\n\n    // Dual\n    if (range.dual) {\n      $el.addClass('range-slider-dual');\n    }\n    if (range.label) {\n      $el.addClass('range-slider-label');\n    }\n\n    // Vertical\n    if (range.vertical) {\n      $el.addClass('range-slider-vertical');\n      if (range.verticalReversed) {\n        $el.addClass('range-slider-vertical-reversed');\n      }\n    } else {\n      $el.addClass('range-slider-horizontal');\n    }\n\n    // Check for layout\n    const $barEl = $('<div class=\"range-bar\"></div>');\n    const $barActiveEl = $('<div class=\"range-bar-active\"></div>');\n    $barEl.append($barActiveEl);\n\n    // Create Knobs\n    // prettier-ignore\n    const knobHTML = `\n      <div class=\"range-knob-wrap\">\n        <div class=\"range-knob\"></div>\n        ${range.label ? '<div class=\"range-knob-label\"></div>' : ''}\n      </div>\n    `;\n    const knobs = [$(knobHTML)];\n\n    if (range.dual) {\n      knobs.push($(knobHTML));\n    }\n\n    $el.append($barEl);\n    knobs.forEach(($knobEl) => {\n      $el.append($knobEl);\n    });\n\n    // Labels\n    const labels = [];\n    if (range.label) {\n      labels.push(knobs[0].find('.range-knob-label'));\n      if (range.dual) {\n        labels.push(knobs[1].find('.range-knob-label'));\n      }\n    }\n\n    // Scale\n    let $scaleEl;\n    if (range.scale && range.scaleSteps >= 1) {\n      $scaleEl = $(`\n        <div class=\"range-scale\">\n          ${range.renderScale()}\n        </div>\n      `);\n      $el.append($scaleEl);\n    }\n\n    extend(range, {\n      knobs,\n      labels,\n      $barEl,\n      $barActiveEl,\n      $scaleEl,\n    });\n\n    $el[0].f7Range = range;\n\n    // Touch Events\n    let isTouched;\n    const touchesStart = {};\n    let isScrolling;\n    let rangeOffset;\n    let rangeOffsetLeft;\n    let rangeOffsetTop;\n    let $touchedKnobEl;\n    let dualValueIndex;\n    let valueChangedByTouch;\n    let targetTouchIdentifier;\n    function onTouchChange() {\n      valueChangedByTouch = true;\n    }\n    function handleTouchStart(e) {\n      if (isTouched) return;\n      if (!range.params.draggableBar) {\n        if ($(e.target).closest('.range-knob').length === 0) {\n          return;\n        }\n      }\n      valueChangedByTouch = false;\n      touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n      touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n      if (e.type === 'touchstart') {\n        targetTouchIdentifier = e.targetTouches[0].identifier;\n      }\n\n      isTouched = true;\n      isScrolling = undefined;\n      rangeOffset = $el.offset();\n      rangeOffsetLeft = rangeOffset.left;\n      rangeOffsetTop = rangeOffset.top;\n\n      let progress;\n      if (range.vertical) {\n        progress = (touchesStart.y - rangeOffsetTop) / range.rangeHeight;\n        if (!range.verticalReversed) progress = 1 - progress;\n      } else if (range.app.rtl) {\n        progress = (rangeOffsetLeft + range.rangeWidth - touchesStart.x) / range.rangeWidth;\n      } else {\n        progress = (touchesStart.x - rangeOffsetLeft) / range.rangeWidth;\n      }\n\n      let newValue = progress * (range.max - range.min) + range.min;\n      if (range.dual) {\n        if (Math.abs(range.value[0] - newValue) < Math.abs(range.value[1] - newValue)) {\n          dualValueIndex = 0;\n          $touchedKnobEl = range.knobs[0];\n          newValue = [newValue, range.value[1]];\n        } else {\n          dualValueIndex = 1;\n          $touchedKnobEl = range.knobs[1];\n          newValue = [range.value[0], newValue];\n        }\n      } else {\n        $touchedKnobEl = range.knobs[0];\n        newValue = progress * (range.max - range.min) + range.min;\n      }\n      nextTick(() => {\n        if (isTouched) $touchedKnobEl.addClass('range-knob-active-state');\n      }, 70);\n      range.on('change', onTouchChange);\n      range.setValue(newValue, true);\n    }\n    function handleTouchMove(e) {\n      if (!isTouched) return;\n      let pageX;\n      let pageY;\n      if (e.type === 'touchmove') {\n        for (let i = 0; i < e.targetTouches.length; i += 1) {\n          if (e.targetTouches[i].identifier === targetTouchIdentifier) {\n            pageX = e.targetTouches[i].pageX;\n            pageY = e.targetTouches[i].pageY;\n          }\n        }\n      } else {\n        pageX = e.pageX;\n        pageY = e.pageY;\n      }\n      if (typeof pageX === 'undefined' && typeof pageY === 'undefined') return;\n\n      if (typeof isScrolling === 'undefined' && !range.vertical) {\n        isScrolling = !!(\n          isScrolling || Math.abs(pageY - touchesStart.y) > Math.abs(pageX - touchesStart.x)\n        );\n      }\n      if (isScrolling) {\n        isTouched = false;\n        return;\n      }\n      e.preventDefault();\n\n      let progress;\n      if (range.vertical) {\n        progress = (pageY - rangeOffsetTop) / range.rangeHeight;\n        if (!range.verticalReversed) progress = 1 - progress;\n      } else if (range.app.rtl) {\n        progress = (rangeOffsetLeft + range.rangeWidth - pageX) / range.rangeWidth;\n      } else {\n        progress = (pageX - rangeOffsetLeft) / range.rangeWidth;\n      }\n\n      let newValue = progress * (range.max - range.min) + range.min;\n      if (range.dual) {\n        let leftValue;\n        let rightValue;\n        if (dualValueIndex === 0) {\n          leftValue = newValue;\n          rightValue = range.value[1];\n          if (leftValue > rightValue) {\n            rightValue = leftValue;\n          }\n        } else {\n          leftValue = range.value[0];\n          rightValue = newValue;\n          if (rightValue < leftValue) {\n            leftValue = rightValue;\n          }\n        }\n        newValue = [leftValue, rightValue];\n      }\n      range.setValue(newValue, true);\n    }\n    function handleTouchEnd(e) {\n      if (e.type === 'touchend') {\n        let touchEnded;\n        for (let i = 0; i < e.changedTouches.length; i += 1) {\n          if (e.changedTouches[i].identifier === targetTouchIdentifier) touchEnded = true;\n        }\n        if (!touchEnded) return;\n      }\n      if (!isTouched) {\n        if (isScrolling) $touchedKnobEl.removeClass('range-knob-active-state');\n        isTouched = false;\n        return;\n      }\n      range.off('change', onTouchChange);\n      isTouched = false;\n      $touchedKnobEl.removeClass('range-knob-active-state');\n      if (valueChangedByTouch && range.$inputEl && !range.dual) {\n        range.$inputEl.trigger('change');\n      }\n      valueChangedByTouch = false;\n      if (typeof range.previousValue !== 'undefined') {\n        if (\n          (range.dual &&\n            (range.previousValue[0] !== range.value[0] ||\n              range.previousValue[1] !== range.value[1])) ||\n          (!range.dual && range.previousValue !== range.value)\n        ) {\n          range.$el.trigger('range:changed', range.value);\n          range.emit('local::changed rangeChanged', range, range.value);\n        }\n      }\n    }\n\n    function handleResize() {\n      range.calcSize();\n      range.layout();\n    }\n    let parentModals;\n    let parentPanel;\n    let parentPage;\n    range.attachEvents = function attachEvents() {\n      const passive = support.passiveListener ? { passive: true } : false;\n      range.$el.on(app.touchEvents.start, handleTouchStart, passive);\n      app.on('touchmove', handleTouchMove);\n      app.on('touchend:passive', handleTouchEnd);\n      app.on('tabShow', handleResize);\n      app.on('resize', handleResize);\n      parentModals = range.$el.parents(\n        '.sheet-modal, .actions-modal, .popup, .popover, .login-screen, .dialog, .toast',\n      );\n      parentModals.on('modal:open', handleResize);\n      parentPanel = range.$el.parents('.panel');\n      parentPanel.on('panel:open panel:resize', handleResize);\n      parentPage = range.$el.parents('.page').eq(0);\n      parentPage.on('page:reinit', handleResize);\n    };\n    range.detachEvents = function detachEvents() {\n      const passive = support.passiveListener ? { passive: true } : false;\n      range.$el.off(app.touchEvents.start, handleTouchStart, passive);\n      app.off('touchmove', handleTouchMove);\n      app.off('touchend:passive', handleTouchEnd);\n      app.off('tabShow', handleResize);\n      app.off('resize', handleResize);\n      if (parentModals) {\n        parentModals.off('modal:open', handleResize);\n      }\n      if (parentPanel) {\n        parentPanel.off('panel:open panel:resize', handleResize);\n      }\n      if (parentPage) {\n        parentPage.off('page:reinit', handleResize);\n      }\n      parentModals = null;\n      parentPanel = null;\n      parentPage = null;\n    };\n\n    // Install Modules\n    range.useModules();\n\n    // Init\n    range.init();\n\n    return range;\n  }\n\n  calcSize() {\n    const range = this;\n    if (range.vertical) {\n      const height = range.$el.outerHeight();\n      if (height === 0) return;\n      range.rangeHeight = height;\n      range.knobHeight = range.knobs[0].outerHeight();\n    } else {\n      const width = range.$el.outerWidth();\n      if (width === 0) return;\n      range.rangeWidth = width;\n      range.knobWidth = range.knobs[0].outerWidth();\n    }\n  }\n\n  layout() {\n    const range = this;\n    const {\n      app,\n      knobWidth,\n      knobHeight,\n      rangeWidth,\n      rangeHeight,\n      min,\n      max,\n      knobs,\n      $barActiveEl,\n      value,\n      label,\n      labels,\n      vertical,\n      verticalReversed,\n      limitKnobPosition,\n    } = range;\n    const knobSize = vertical ? knobHeight : knobWidth;\n    const rangeSize = vertical ? rangeHeight : rangeWidth;\n    // eslint-disable-next-line\n    const positionProperty = vertical\n      ? verticalReversed\n        ? 'top'\n        : 'bottom'\n      : app.rtl\n      ? 'right'\n      : 'left';\n    if (range.dual) {\n      const progress = [(value[0] - min) / (max - min), (value[1] - min) / (max - min)];\n      $barActiveEl.css({\n        [positionProperty]: `${progress[0] * 100}%`,\n        [vertical ? 'height' : 'width']: `${(progress[1] - progress[0]) * 100}%`,\n      });\n      knobs.forEach(($knobEl, knobIndex) => {\n        let startPos = rangeSize * progress[knobIndex];\n        if (limitKnobPosition) {\n          const realStartPos = rangeSize * progress[knobIndex] - knobSize / 2;\n          if (realStartPos < 0) startPos = knobSize / 2;\n          if (realStartPos + knobSize > rangeSize) startPos = rangeSize - knobSize / 2;\n        }\n        $knobEl.css(positionProperty, `${startPos}px`);\n        if (label)\n          labels[knobIndex].text(range.formatLabel(value[knobIndex], labels[knobIndex][0]));\n      });\n    } else {\n      const progress = (value - min) / (max - min);\n      $barActiveEl.css(vertical ? 'height' : 'width', `${progress * 100}%`);\n\n      let startPos = rangeSize * progress;\n      if (limitKnobPosition) {\n        const realStartPos = rangeSize * progress - knobSize / 2;\n        if (realStartPos < 0) startPos = knobSize / 2;\n        if (realStartPos + knobSize > rangeSize) startPos = rangeSize - knobSize / 2;\n      }\n      knobs[0].css(positionProperty, `${startPos}px`);\n      if (label) labels[0].text(range.formatLabel(value, labels[0][0]));\n    }\n    if ((range.dual && value.indexOf(min) >= 0) || (!range.dual && value === min)) {\n      range.$el.addClass('range-slider-min');\n    } else {\n      range.$el.removeClass('range-slider-min');\n    }\n    if ((range.dual && value.indexOf(max) >= 0) || (!range.dual && value === max)) {\n      range.$el.addClass('range-slider-max');\n    } else {\n      range.$el.removeClass('range-slider-max');\n    }\n  }\n\n  setValue(newValue, byTouchMove) {\n    const range = this;\n    const { step, min, max } = range;\n    let valueChanged;\n    let oldValue;\n    if (range.dual) {\n      oldValue = [range.value[0], range.value[1]];\n      let newValues = newValue;\n      if (!Array.isArray(newValues)) newValues = [newValue, newValue];\n      if (newValue[0] > newValue[1]) {\n        newValues = [newValues[0], newValues[0]];\n      }\n      newValues = newValues.map((value) =>\n        Math.max(Math.min(Math.round(value / step) * step, max), min),\n      );\n      if (newValues[0] === range.value[0] && newValues[1] === range.value[1]) {\n        return range;\n      }\n      newValues.forEach((value, valueIndex) => {\n        range.value[valueIndex] = value;\n      });\n      valueChanged = oldValue[0] !== newValues[0] || oldValue[1] !== newValues[1];\n      range.layout();\n    } else {\n      oldValue = range.value;\n      const value = Math.max(Math.min(Math.round(newValue / step) * step, max), min);\n      range.value = value;\n      range.layout();\n      valueChanged = oldValue !== value;\n    }\n\n    if (valueChanged) {\n      range.previousValue = oldValue;\n    }\n    // Events\n    if (!valueChanged) return range;\n    range.$el.trigger('range:change', range.value);\n    if (range.$inputEl && !range.dual) {\n      range.$inputEl.val(range.value);\n      if (!byTouchMove) {\n        range.$inputEl.trigger('input change');\n      } else {\n        range.$inputEl.trigger('input');\n      }\n    }\n    if (!byTouchMove) {\n      range.$el.trigger('range:changed', range.value);\n      range.emit('local::changed rangeChanged', range, range.value);\n    }\n    range.emit('local::change rangeChange', range, range.value);\n    return range;\n  }\n\n  getValue() {\n    return this.value;\n  }\n\n  formatLabel(value, labelEl) {\n    const range = this;\n    if (range.params.formatLabel) return range.params.formatLabel.call(range, value, labelEl);\n    return value;\n  }\n\n  formatScaleLabel(value) {\n    const range = this;\n    if (range.params.formatScaleLabel) return range.params.formatScaleLabel.call(range, value);\n    return value;\n  }\n\n  renderScale() {\n    const range = this;\n    const { app, verticalReversed, vertical } = range;\n\n    // eslint-disable-next-line\n    const positionProperty = vertical\n      ? verticalReversed\n        ? 'top'\n        : 'bottom'\n      : app.rtl\n      ? 'right'\n      : 'left';\n\n    let html = '';\n    Array.from({ length: range.scaleSteps + 1 }).forEach((scaleEl, index) => {\n      const scaleStepValue = (range.max - range.min) / range.scaleSteps;\n      const scaleValue = range.min + scaleStepValue * index;\n      const progress = (scaleValue - range.min) / (range.max - range.min);\n      html += `<div class=\"range-scale-step\" style=\"${positionProperty}: ${\n        progress * 100\n      }%\">${range.formatScaleLabel(scaleValue)}</div>`;\n\n      if (range.scaleSubSteps && range.scaleSubSteps > 1 && index < range.scaleSteps) {\n        Array.from({ length: range.scaleSubSteps - 1 }).forEach((subStepEl, subIndex) => {\n          const subStep = scaleStepValue / range.scaleSubSteps;\n          const scaleSubValue = scaleValue + subStep * (subIndex + 1);\n          const subProgress = (scaleSubValue - range.min) / (range.max - range.min);\n          html += `<div class=\"range-scale-step range-scale-substep\" style=\"${positionProperty}: ${\n            subProgress * 100\n          }%\"></div>`;\n        });\n      }\n    });\n\n    return html;\n  }\n\n  updateScale() {\n    const range = this;\n    if (!range.scale || range.scaleSteps < 1) {\n      if (range.$scaleEl) range.$scaleEl.remove();\n      delete range.$scaleEl;\n      return;\n    }\n    if (!range.$scaleEl) {\n      range.$scaleEl = $('<div class=\"range-scale\"></div>');\n      range.$el.append(range.$scaleEl);\n    }\n\n    range.$scaleEl.html(range.renderScale());\n  }\n\n  init() {\n    const range = this;\n    range.calcSize();\n    range.layout();\n    range.attachEvents();\n    return range;\n  }\n\n  destroy() {\n    let range = this;\n    range.$el.trigger('range:beforedestroy');\n    range.emit('local::beforeDestroy rangeBeforeDestroy', range);\n    delete range.$el[0].f7Range;\n    range.detachEvents();\n    deleteProps(range);\n    range = null;\n  }\n}\n\nexport default Range;\n","import $ from '../../shared/dom7.js';\nimport { extend } from '../../shared/utils.js';\nimport Range from './range-class.js';\nimport ConstructorMethods from '../../shared/constructor-methods.js';\n\nexport default {\n  name: 'range',\n  create() {\n    const app = this;\n    app.range = extend(\n      ConstructorMethods({\n        defaultSelector: '.range-slider',\n        constructor: Range,\n        app,\n        domProp: 'f7Range',\n      }),\n      {\n        getValue(el = '.range-slider') {\n          const range = app.range.get(el);\n          if (range) return range.getValue();\n          return undefined;\n        },\n        setValue(el = '.range-slider', value) {\n          const range = app.range.get(el);\n          if (range) return range.setValue(value);\n          return undefined;\n        },\n      },\n    );\n  },\n  static: {\n    Range,\n  },\n  on: {\n    tabMounted(tabEl) {\n      const app = this;\n      $(tabEl)\n        .find('.range-slider-init')\n        .each(\n          (rangeEl) =>\n            new Range(app, {\n              el: rangeEl,\n            }),\n        );\n    },\n    tabBeforeRemove(tabEl) {\n      $(tabEl)\n        .find('.range-slider-init')\n        .each((rangeEl) => {\n          if (rangeEl.f7Range) rangeEl.f7Range.destroy();\n        });\n    },\n    pageInit(page) {\n      const app = this;\n      page.$el.find('.range-slider-init').each(\n        (rangeEl) =>\n          new Range(app, {\n            el: rangeEl,\n          }),\n      );\n    },\n    pageBeforeRemove(page) {\n      page.$el.find('.range-slider-init').each((rangeEl) => {\n        if (rangeEl.f7Range) rangeEl.f7Range.destroy();\n      });\n    },\n  },\n  vnode: {\n    'range-slider-init': {\n      insert(vnode) {\n        const rangeEl = vnode.elm;\n        const app = this;\n        app.range.create({ el: rangeEl });\n      },\n      destroy(vnode) {\n        const rangeEl = vnode.elm;\n        if (rangeEl.f7Range) rangeEl.f7Range.destroy();\n      },\n    },\n  },\n};\n","import $ from '../../shared/dom7.js';\nimport { extend, deleteProps } from '../../shared/utils.js';\nimport Framework7Class from '../../shared/class.js';\n\nclass Stepper extends Framework7Class {\n  constructor(app, params) {\n    super(params, [app]);\n    const stepper = this;\n\n    const defaults = {\n      el: null,\n      inputEl: null,\n      valueEl: null,\n      value: 0,\n      formatValue: null,\n      step: 1,\n      min: 0,\n      max: 100,\n      watchInput: true,\n      autorepeat: false,\n      autorepeatDynamic: false,\n      wraps: false,\n      manualInputMode: false,\n      decimalPoint: 4,\n      buttonsEndInputMode: true,\n    };\n\n    // Extend defaults with modules params\n    stepper.useModulesParams(defaults);\n\n    stepper.params = extend(defaults, params);\n    if (stepper.params.value < stepper.params.min) {\n      stepper.params.value = stepper.params.min;\n    }\n    if (stepper.params.value > stepper.params.max) {\n      stepper.params.value = stepper.params.max;\n    }\n\n    const el = stepper.params.el;\n    if (!el) return stepper;\n\n    const $el = $(el);\n    if ($el.length === 0) return stepper;\n\n    if ($el[0].f7Stepper) return $el[0].f7Stepper;\n\n    let $inputEl;\n    if (stepper.params.inputEl) {\n      $inputEl = $(stepper.params.inputEl);\n    } else if ($el.find('.stepper-input-wrap').find('input, textarea').length) {\n      $inputEl = $el.find('.stepper-input-wrap').find('input, textarea').eq(0);\n    }\n\n    if ($inputEl && $inputEl.length) {\n      'step min max'.split(' ').forEach((paramName) => {\n        if (!params[paramName] && $inputEl.attr(paramName)) {\n          stepper.params[paramName] = parseFloat($inputEl.attr(paramName));\n        }\n      });\n\n      const decimalPoint = parseInt(stepper.params.decimalPoint, 10);\n      if (Number.isNaN(decimalPoint)) {\n        stepper.params.decimalPoint = 0;\n      } else {\n        stepper.params.decimalPoint = decimalPoint;\n      }\n\n      const inputValue = parseFloat($inputEl.val());\n      if (\n        typeof params.value === 'undefined' &&\n        !Number.isNaN(inputValue) &&\n        (inputValue || inputValue === 0)\n      ) {\n        stepper.params.value = inputValue;\n      }\n    }\n\n    let $valueEl;\n    if (stepper.params.valueEl) {\n      $valueEl = $(stepper.params.valueEl);\n    } else if ($el.find('.stepper-value').length) {\n      $valueEl = $el.find('.stepper-value').eq(0);\n    }\n\n    const $buttonPlusEl = $el.find('.stepper-button-plus');\n    const $buttonMinusEl = $el.find('.stepper-button-minus');\n\n    const { step, min, max, value, decimalPoint } = stepper.params;\n\n    extend(stepper, {\n      app,\n      $el,\n      el: $el[0],\n      $buttonPlusEl,\n      buttonPlusEl: $buttonPlusEl[0],\n      $buttonMinusEl,\n      buttonMinusEl: $buttonMinusEl[0],\n      $inputEl,\n      inputEl: $inputEl ? $inputEl[0] : undefined,\n      $valueEl,\n      valueEl: $valueEl ? $valueEl[0] : undefined,\n      step,\n      min,\n      max,\n      value,\n      decimalPoint,\n      typeModeChanged: false,\n    });\n\n    $el[0].f7Stepper = stepper;\n\n    // Handle Events\n    const touchesStart = {};\n    let isTouched;\n    let isScrolling;\n    let preventButtonClick;\n    let intervalId;\n    let timeoutId;\n    let autorepeatAction = null;\n    let autorepeatInAction = false;\n    let manualInput = false;\n\n    function dynamicRepeat(current, progressions, startsIn, progressionStep, repeatEvery, action) {\n      clearTimeout(timeoutId);\n      timeoutId = setTimeout(\n        () => {\n          if (current === 1) {\n            preventButtonClick = true;\n            autorepeatInAction = true;\n          }\n          clearInterval(intervalId);\n          action();\n          intervalId = setInterval(() => {\n            action();\n          }, repeatEvery);\n          if (current < progressions) {\n            dynamicRepeat(\n              current + 1,\n              progressions,\n              startsIn,\n              progressionStep,\n              repeatEvery / 2,\n              action,\n            );\n          }\n        },\n        current === 1 ? startsIn : progressionStep,\n      );\n    }\n\n    function onTouchStart(e) {\n      if (isTouched) return;\n      if (manualInput) {\n        return;\n      }\n      if ($(e.target).closest($buttonPlusEl).length) {\n        autorepeatAction = 'increment';\n      } else if ($(e.target).closest($buttonMinusEl).length) {\n        autorepeatAction = 'decrement';\n      }\n      if (!autorepeatAction) return;\n\n      touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n      touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n      isTouched = true;\n      isScrolling = undefined;\n\n      const progressions = stepper.params.autorepeatDynamic ? 4 : 1;\n      dynamicRepeat(1, progressions, 500, 1000, 300, () => {\n        stepper[autorepeatAction]();\n      });\n    }\n    function onTouchMove(e) {\n      if (!isTouched) return;\n      if (manualInput) {\n        return;\n      }\n      const pageX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n      const pageY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n\n      if (typeof isScrolling === 'undefined' && !autorepeatInAction) {\n        isScrolling = !!(\n          isScrolling || Math.abs(pageY - touchesStart.y) > Math.abs(pageX - touchesStart.x)\n        );\n      }\n      const distance = ((pageX - touchesStart.x) ** 2 + (pageY - touchesStart.y) ** 2) ** 0.5;\n\n      if (isScrolling || distance > 20) {\n        isTouched = false;\n        clearTimeout(timeoutId);\n        clearInterval(intervalId);\n      }\n    }\n    function onTouchEnd() {\n      clearTimeout(timeoutId);\n      clearInterval(intervalId);\n      autorepeatAction = null;\n      autorepeatInAction = false;\n      isTouched = false;\n    }\n\n    function onMinusClick() {\n      if (manualInput) {\n        if (stepper.params.buttonsEndInputMode) {\n          manualInput = false;\n          stepper.endTypeMode(true);\n        }\n        return;\n      }\n      if (preventButtonClick) {\n        preventButtonClick = false;\n        return;\n      }\n      stepper.decrement(true);\n    }\n    function onPlusClick() {\n      if (manualInput) {\n        if (stepper.params.buttonsEndInputMode) {\n          manualInput = false;\n          stepper.endTypeMode(true);\n        }\n        return;\n      }\n      if (preventButtonClick) {\n        preventButtonClick = false;\n        return;\n      }\n      stepper.increment(true);\n    }\n    function onInputClick(e) {\n      if (!e.target.readOnly && stepper.params.manualInputMode) {\n        manualInput = true;\n        if (typeof e.target.selectionStart === 'number') {\n          e.target.selectionStart = e.target.value.length;\n          e.target.selectionEnd = e.target.value.length;\n        }\n      }\n    }\n    function onInputKey(e) {\n      if (e.keyCode === 13 || e.which === 13) {\n        e.preventDefault();\n        manualInput = false;\n        stepper.endTypeMode();\n      }\n    }\n    function onInputBlur() {\n      manualInput = false;\n      stepper.endTypeMode(true);\n    }\n    function onInput(e) {\n      if (manualInput) {\n        stepper.typeValue(e.target.value);\n        return;\n      }\n      if (e.detail && e.detail.sentByF7Stepper) return;\n      stepper.setValue(e.target.value, true);\n    }\n    stepper.attachEvents = function attachEvents() {\n      $buttonMinusEl.on('click', onMinusClick);\n      $buttonPlusEl.on('click', onPlusClick);\n      if (stepper.params.watchInput && $inputEl && $inputEl.length) {\n        $inputEl.on('input', onInput);\n        $inputEl.on('click', onInputClick);\n        $inputEl.on('blur', onInputBlur);\n        $inputEl.on('keyup', onInputKey);\n      }\n      if (stepper.params.autorepeat) {\n        app.on('touchstart:passive', onTouchStart);\n        app.on('touchmove:active', onTouchMove);\n        app.on('touchend:passive', onTouchEnd);\n      }\n    };\n    stepper.detachEvents = function detachEvents() {\n      $buttonMinusEl.off('click', onMinusClick);\n      $buttonPlusEl.off('click', onPlusClick);\n      if (stepper.params.watchInput && $inputEl && $inputEl.length) {\n        $inputEl.off('input', onInput);\n        $inputEl.off('click', onInputClick);\n        $inputEl.off('blur', onInputBlur);\n        $inputEl.off('keyup', onInputKey);\n      }\n    };\n\n    // Install Modules\n    stepper.useModules();\n\n    // Init\n    stepper.init();\n\n    return stepper;\n  }\n\n  minus() {\n    return this.decrement();\n  }\n\n  plus() {\n    return this.increment();\n  }\n\n  decrement() {\n    const stepper = this;\n    return stepper.setValue(stepper.value - stepper.step, false, true);\n  }\n\n  increment() {\n    const stepper = this;\n    return stepper.setValue(stepper.value + stepper.step, false, true);\n  }\n\n  setValue(newValue, forceUpdate, withWraps) {\n    const stepper = this;\n    const { step, min, max } = stepper;\n\n    const oldValue = stepper.value;\n\n    let value = Math.round(newValue / step) * step;\n    if (stepper.params.wraps && withWraps) {\n      if (value > max) value = min;\n      if (value < min) value = max;\n    } else {\n      value = Math.max(Math.min(value, max), min);\n    }\n\n    if (Number.isNaN(value)) {\n      value = oldValue;\n    }\n    stepper.value = value;\n\n    const valueChanged = oldValue !== value;\n\n    // Events\n    if (!valueChanged && !forceUpdate) return stepper;\n\n    stepper.$el.trigger('stepper:change', stepper.value);\n    const formattedValue = stepper.formatValue(stepper.value);\n    if (stepper.$inputEl && stepper.$inputEl.length) {\n      stepper.$inputEl.val(formattedValue);\n      stepper.$inputEl.trigger('input change', { sentByF7Stepper: true });\n    }\n    if (stepper.$valueEl && stepper.$valueEl.length) {\n      stepper.$valueEl.html(formattedValue);\n    }\n    stepper.emit('local::change stepperChange', stepper, stepper.value);\n    return stepper;\n  }\n\n  endTypeMode(noBlur) {\n    const stepper = this;\n    const { min, max } = stepper;\n    let value = parseFloat(stepper.value);\n\n    if (Number.isNaN(value)) value = 0;\n\n    value = Math.max(Math.min(value, max), min);\n\n    stepper.value = value;\n    if (!stepper.typeModeChanged) {\n      if (stepper.$inputEl && stepper.$inputEl.length && !noBlur) {\n        stepper.$inputEl.blur();\n      }\n      return stepper;\n    }\n    stepper.typeModeChanged = false;\n\n    stepper.$el.trigger('stepper:change', stepper.value);\n    const formattedValue = stepper.formatValue(stepper.value);\n    if (stepper.$inputEl && stepper.$inputEl.length) {\n      stepper.$inputEl.val(formattedValue);\n      stepper.$inputEl.trigger('input change', { sentByF7Stepper: true });\n      if (!noBlur) stepper.$inputEl.blur();\n    }\n    if (stepper.$valueEl && stepper.$valueEl.length) {\n      stepper.$valueEl.html(formattedValue);\n    }\n    stepper.emit('local::change stepperChange', stepper, stepper.value);\n    return stepper;\n  }\n\n  typeValue(value) {\n    const stepper = this;\n    stepper.typeModeChanged = true;\n    let inputTxt = String(value);\n    if (inputTxt.length === 1 && inputTxt === '-') return stepper;\n    if (\n      inputTxt.lastIndexOf('.') + 1 === inputTxt.length ||\n      inputTxt.lastIndexOf(',') + 1 === inputTxt.length\n    ) {\n      if (\n        inputTxt.lastIndexOf('.') !== inputTxt.indexOf('.') ||\n        inputTxt.lastIndexOf(',') !== inputTxt.indexOf(',')\n      ) {\n        inputTxt = inputTxt.slice(0, -1);\n        stepper.value = inputTxt;\n        stepper.$inputEl.val(stepper.value);\n        return stepper;\n      }\n    } else {\n      let newValue = parseFloat(inputTxt.replace(',', '.'));\n      if (newValue === 0) {\n        stepper.value = inputTxt.replace(',', '.');\n        stepper.$inputEl.val(stepper.value);\n        return stepper;\n      }\n      if (Number.isNaN(newValue)) {\n        stepper.value = 0;\n        stepper.$inputEl.val(stepper.value);\n        return stepper;\n      }\n      const powVal = 10 ** stepper.params.decimalPoint;\n      newValue = Math.round(newValue * powVal).toFixed(stepper.params.decimalPoint + 1) / powVal;\n      stepper.value = parseFloat(String(newValue).replace(',', '.'));\n      stepper.$inputEl.val(stepper.value);\n      return stepper;\n    }\n    stepper.value = inputTxt;\n    stepper.$inputEl.val(inputTxt);\n    return stepper;\n  }\n\n  getValue() {\n    return this.value;\n  }\n\n  formatValue(value) {\n    const stepper = this;\n    if (!stepper.params.formatValue) return value;\n    return stepper.params.formatValue.call(stepper, value);\n  }\n\n  init() {\n    const stepper = this;\n    stepper.attachEvents();\n    if (stepper.$valueEl && stepper.$valueEl.length) {\n      const formattedValue = stepper.formatValue(stepper.value);\n      stepper.$valueEl.html(formattedValue);\n    }\n    return stepper;\n  }\n\n  destroy() {\n    let stepper = this;\n    stepper.$el.trigger('stepper:beforedestroy');\n    stepper.emit('local::beforeDestroy stepperBeforeDestroy', stepper);\n    delete stepper.$el[0].f7Stepper;\n    stepper.detachEvents();\n    deleteProps(stepper);\n    stepper = null;\n  }\n}\n\nexport default Stepper;\n","import $ from '../../shared/dom7.js';\nimport { extend } from '../../shared/utils.js';\nimport Stepper from './stepper-class.js';\nimport ConstructorMethods from '../../shared/constructor-methods.js';\n\nexport default {\n  name: 'stepper',\n  create() {\n    const app = this;\n    app.stepper = extend(\n      ConstructorMethods({\n        defaultSelector: '.stepper',\n        constructor: Stepper,\n        app,\n        domProp: 'f7Stepper',\n      }),\n      {\n        getValue(el = '.stepper') {\n          const stepper = app.stepper.get(el);\n          if (stepper) return stepper.getValue();\n          return undefined;\n        },\n        setValue(el = '.stepper', value) {\n          const stepper = app.stepper.get(el);\n          if (stepper) return stepper.setValue(value);\n          return undefined;\n        },\n      },\n    );\n  },\n  static: {\n    Stepper,\n  },\n  on: {\n    tabMounted(tabEl) {\n      const app = this;\n      $(tabEl)\n        .find('.stepper-init')\n        .each((stepperEl) => {\n          const dataset = $(stepperEl).dataset();\n          app.stepper.create(extend({ el: stepperEl }, dataset || {}));\n        });\n    },\n    tabBeforeRemove(tabEl) {\n      $(tabEl)\n        .find('.stepper-init')\n        .each((stepperEl) => {\n          if (stepperEl.f7Stepper) stepperEl.f7Stepper.destroy();\n        });\n    },\n    pageInit(page) {\n      const app = this;\n      page.$el.find('.stepper-init').each((stepperEl) => {\n        const dataset = $(stepperEl).dataset();\n        app.stepper.create(extend({ el: stepperEl }, dataset || {}));\n      });\n    },\n    pageBeforeRemove(page) {\n      page.$el.find('.stepper-init').each((stepperEl) => {\n        if (stepperEl.f7Stepper) stepperEl.f7Stepper.destroy();\n      });\n    },\n  },\n  vnode: {\n    'stepper-init': {\n      insert(vnode) {\n        const app = this;\n        const stepperEl = vnode.elm;\n        const dataset = $(stepperEl).dataset();\n        app.stepper.create(extend({ el: stepperEl }, dataset || {}));\n      },\n      destroy(vnode) {\n        const stepperEl = vnode.elm;\n        if (stepperEl.f7Stepper) stepperEl.f7Stepper.destroy();\n      },\n    },\n  },\n};\n","/* eslint no-control-regex: \"off\" */\nconst defaultDiacriticsRemovalap = [\n  {\n    base: 'A',\n    letters:\n      '\\u0041\\u24B6\\uFF21\\u00C0\\u00C1\\u00C2\\u1EA6\\u1EA4\\u1EAA\\u1EA8\\u00C3\\u0100\\u0102\\u1EB0\\u1EAE\\u1EB4\\u1EB2\\u0226\\u01E0\\u00C4\\u01DE\\u1EA2\\u00C5\\u01FA\\u01CD\\u0200\\u0202\\u1EA0\\u1EAC\\u1EB6\\u1E00\\u0104\\u023A\\u2C6F',\n  },\n  { base: 'AA', letters: '\\uA732' },\n  { base: 'AE', letters: '\\u00C6\\u01FC\\u01E2' },\n  { base: 'AO', letters: '\\uA734' },\n  { base: 'AU', letters: '\\uA736' },\n  { base: 'AV', letters: '\\uA738\\uA73A' },\n  { base: 'AY', letters: '\\uA73C' },\n  { base: 'B', letters: '\\u0042\\u24B7\\uFF22\\u1E02\\u1E04\\u1E06\\u0243\\u0182\\u0181' },\n  {\n    base: 'C',\n    letters: '\\u0043\\u24B8\\uFF23\\u0106\\u0108\\u010A\\u010C\\u00C7\\u1E08\\u0187\\u023B\\uA73E',\n  },\n  {\n    base: 'D',\n    letters: '\\u0044\\u24B9\\uFF24\\u1E0A\\u010E\\u1E0C\\u1E10\\u1E12\\u1E0E\\u0110\\u018B\\u018A\\u0189\\uA779',\n  },\n  { base: 'DZ', letters: '\\u01F1\\u01C4' },\n  { base: 'Dz', letters: '\\u01F2\\u01C5' },\n  {\n    base: 'E',\n    letters:\n      '\\u0045\\u24BA\\uFF25\\u00C8\\u00C9\\u00CA\\u1EC0\\u1EBE\\u1EC4\\u1EC2\\u1EBC\\u0112\\u1E14\\u1E16\\u0114\\u0116\\u00CB\\u1EBA\\u011A\\u0204\\u0206\\u1EB8\\u1EC6\\u0228\\u1E1C\\u0118\\u1E18\\u1E1A\\u0190\\u018E',\n  },\n  { base: 'F', letters: '\\u0046\\u24BB\\uFF26\\u1E1E\\u0191\\uA77B' },\n  {\n    base: 'G',\n    letters:\n      '\\u0047\\u24BC\\uFF27\\u01F4\\u011C\\u1E20\\u011E\\u0120\\u01E6\\u0122\\u01E4\\u0193\\uA7A0\\uA77D\\uA77E',\n  },\n  {\n    base: 'H',\n    letters: '\\u0048\\u24BD\\uFF28\\u0124\\u1E22\\u1E26\\u021E\\u1E24\\u1E28\\u1E2A\\u0126\\u2C67\\u2C75\\uA78D',\n  },\n  {\n    base: 'I',\n    letters:\n      '\\u0049\\u24BE\\uFF29\\u00CC\\u00CD\\u00CE\\u0128\\u012A\\u012C\\u0130\\u00CF\\u1E2E\\u1EC8\\u01CF\\u0208\\u020A\\u1ECA\\u012E\\u1E2C\\u0197',\n  },\n  { base: 'J', letters: '\\u004A\\u24BF\\uFF2A\\u0134\\u0248' },\n  {\n    base: 'K',\n    letters: '\\u004B\\u24C0\\uFF2B\\u1E30\\u01E8\\u1E32\\u0136\\u1E34\\u0198\\u2C69\\uA740\\uA742\\uA744\\uA7A2',\n  },\n  {\n    base: 'L',\n    letters:\n      '\\u004C\\u24C1\\uFF2C\\u013F\\u0139\\u013D\\u1E36\\u1E38\\u013B\\u1E3C\\u1E3A\\u0141\\u023D\\u2C62\\u2C60\\uA748\\uA746\\uA780',\n  },\n  { base: 'LJ', letters: '\\u01C7' },\n  { base: 'Lj', letters: '\\u01C8' },\n  { base: 'M', letters: '\\u004D\\u24C2\\uFF2D\\u1E3E\\u1E40\\u1E42\\u2C6E\\u019C' },\n  {\n    base: 'N',\n    letters:\n      '\\u004E\\u24C3\\uFF2E\\u01F8\\u0143\\u00D1\\u1E44\\u0147\\u1E46\\u0145\\u1E4A\\u1E48\\u0220\\u019D\\uA790\\uA7A4',\n  },\n  { base: 'NJ', letters: '\\u01CA' },\n  { base: 'Nj', letters: '\\u01CB' },\n  {\n    base: 'O',\n    letters:\n      '\\u004F\\u24C4\\uFF2F\\u00D2\\u00D3\\u00D4\\u1ED2\\u1ED0\\u1ED6\\u1ED4\\u00D5\\u1E4C\\u022C\\u1E4E\\u014C\\u1E50\\u1E52\\u014E\\u022E\\u0230\\u00D6\\u022A\\u1ECE\\u0150\\u01D1\\u020C\\u020E\\u01A0\\u1EDC\\u1EDA\\u1EE0\\u1EDE\\u1EE2\\u1ECC\\u1ED8\\u01EA\\u01EC\\u00D8\\u01FE\\u0186\\u019F\\uA74A\\uA74C',\n  },\n  { base: 'OI', letters: '\\u01A2' },\n  { base: 'OO', letters: '\\uA74E' },\n  { base: 'OU', letters: '\\u0222' },\n  { base: 'OE', letters: '\\u008C\\u0152' },\n  { base: 'oe', letters: '\\u009C\\u0153' },\n  { base: 'P', letters: '\\u0050\\u24C5\\uFF30\\u1E54\\u1E56\\u01A4\\u2C63\\uA750\\uA752\\uA754' },\n  { base: 'Q', letters: '\\u0051\\u24C6\\uFF31\\uA756\\uA758\\u024A' },\n  {\n    base: 'R',\n    letters:\n      '\\u0052\\u24C7\\uFF32\\u0154\\u1E58\\u0158\\u0210\\u0212\\u1E5A\\u1E5C\\u0156\\u1E5E\\u024C\\u2C64\\uA75A\\uA7A6\\uA782',\n  },\n  {\n    base: 'S',\n    letters:\n      '\\u0053\\u24C8\\uFF33\\u1E9E\\u015A\\u1E64\\u015C\\u1E60\\u0160\\u1E66\\u1E62\\u1E68\\u0218\\u015E\\u2C7E\\uA7A8\\uA784',\n  },\n  {\n    base: 'T',\n    letters:\n      '\\u0054\\u24C9\\uFF34\\u1E6A\\u0164\\u1E6C\\u021A\\u0162\\u1E70\\u1E6E\\u0166\\u01AC\\u01AE\\u023E\\uA786',\n  },\n  { base: 'TZ', letters: '\\uA728' },\n  {\n    base: 'U',\n    letters:\n      '\\u0055\\u24CA\\uFF35\\u00D9\\u00DA\\u00DB\\u0168\\u1E78\\u016A\\u1E7A\\u016C\\u00DC\\u01DB\\u01D7\\u01D5\\u01D9\\u1EE6\\u016E\\u0170\\u01D3\\u0214\\u0216\\u01AF\\u1EEA\\u1EE8\\u1EEE\\u1EEC\\u1EF0\\u1EE4\\u1E72\\u0172\\u1E76\\u1E74\\u0244',\n  },\n  { base: 'V', letters: '\\u0056\\u24CB\\uFF36\\u1E7C\\u1E7E\\u01B2\\uA75E\\u0245' },\n  { base: 'VY', letters: '\\uA760' },\n  { base: 'W', letters: '\\u0057\\u24CC\\uFF37\\u1E80\\u1E82\\u0174\\u1E86\\u1E84\\u1E88\\u2C72' },\n  { base: 'X', letters: '\\u0058\\u24CD\\uFF38\\u1E8A\\u1E8C' },\n  {\n    base: 'Y',\n    letters:\n      '\\u0059\\u24CE\\uFF39\\u1EF2\\u00DD\\u0176\\u1EF8\\u0232\\u1E8E\\u0178\\u1EF6\\u1EF4\\u01B3\\u024E\\u1EFE',\n  },\n  {\n    base: 'Z',\n    letters: '\\u005A\\u24CF\\uFF3A\\u0179\\u1E90\\u017B\\u017D\\u1E92\\u1E94\\u01B5\\u0224\\u2C7F\\u2C6B\\uA762',\n  },\n  {\n    base: 'a',\n    letters:\n      '\\u0061\\u24D0\\uFF41\\u1E9A\\u00E0\\u00E1\\u00E2\\u1EA7\\u1EA5\\u1EAB\\u1EA9\\u00E3\\u0101\\u0103\\u1EB1\\u1EAF\\u1EB5\\u1EB3\\u0227\\u01E1\\u00E4\\u01DF\\u1EA3\\u00E5\\u01FB\\u01CE\\u0201\\u0203\\u1EA1\\u1EAD\\u1EB7\\u1E01\\u0105\\u2C65\\u0250',\n  },\n  { base: 'aa', letters: '\\uA733' },\n  { base: 'ae', letters: '\\u00E6\\u01FD\\u01E3' },\n  { base: 'ao', letters: '\\uA735' },\n  { base: 'au', letters: '\\uA737' },\n  { base: 'av', letters: '\\uA739\\uA73B' },\n  { base: 'ay', letters: '\\uA73D' },\n  { base: 'b', letters: '\\u0062\\u24D1\\uFF42\\u1E03\\u1E05\\u1E07\\u0180\\u0183\\u0253' },\n  {\n    base: 'c',\n    letters: '\\u0063\\u24D2\\uFF43\\u0107\\u0109\\u010B\\u010D\\u00E7\\u1E09\\u0188\\u023C\\uA73F\\u2184',\n  },\n  {\n    base: 'd',\n    letters: '\\u0064\\u24D3\\uFF44\\u1E0B\\u010F\\u1E0D\\u1E11\\u1E13\\u1E0F\\u0111\\u018C\\u0256\\u0257\\uA77A',\n  },\n  { base: 'dz', letters: '\\u01F3\\u01C6' },\n  {\n    base: 'e',\n    letters:\n      '\\u0065\\u24D4\\uFF45\\u00E8\\u00E9\\u00EA\\u1EC1\\u1EBF\\u1EC5\\u1EC3\\u1EBD\\u0113\\u1E15\\u1E17\\u0115\\u0117\\u00EB\\u1EBB\\u011B\\u0205\\u0207\\u1EB9\\u1EC7\\u0229\\u1E1D\\u0119\\u1E19\\u1E1B\\u0247\\u025B\\u01DD',\n  },\n  { base: 'f', letters: '\\u0066\\u24D5\\uFF46\\u1E1F\\u0192\\uA77C' },\n  {\n    base: 'g',\n    letters:\n      '\\u0067\\u24D6\\uFF47\\u01F5\\u011D\\u1E21\\u011F\\u0121\\u01E7\\u0123\\u01E5\\u0260\\uA7A1\\u1D79\\uA77F',\n  },\n  {\n    base: 'h',\n    letters:\n      '\\u0068\\u24D7\\uFF48\\u0125\\u1E23\\u1E27\\u021F\\u1E25\\u1E29\\u1E2B\\u1E96\\u0127\\u2C68\\u2C76\\u0265',\n  },\n  { base: 'hv', letters: '\\u0195' },\n  {\n    base: 'i',\n    letters:\n      '\\u0069\\u24D8\\uFF49\\u00EC\\u00ED\\u00EE\\u0129\\u012B\\u012D\\u00EF\\u1E2F\\u1EC9\\u01D0\\u0209\\u020B\\u1ECB\\u012F\\u1E2D\\u0268\\u0131',\n  },\n  { base: 'j', letters: '\\u006A\\u24D9\\uFF4A\\u0135\\u01F0\\u0249' },\n  {\n    base: 'k',\n    letters: '\\u006B\\u24DA\\uFF4B\\u1E31\\u01E9\\u1E33\\u0137\\u1E35\\u0199\\u2C6A\\uA741\\uA743\\uA745\\uA7A3',\n  },\n  {\n    base: 'l',\n    letters:\n      '\\u006C\\u24DB\\uFF4C\\u0140\\u013A\\u013E\\u1E37\\u1E39\\u013C\\u1E3D\\u1E3B\\u017F\\u0142\\u019A\\u026B\\u2C61\\uA749\\uA781\\uA747',\n  },\n  { base: 'lj', letters: '\\u01C9' },\n  { base: 'm', letters: '\\u006D\\u24DC\\uFF4D\\u1E3F\\u1E41\\u1E43\\u0271\\u026F' },\n  {\n    base: 'n',\n    letters:\n      '\\u006E\\u24DD\\uFF4E\\u01F9\\u0144\\u00F1\\u1E45\\u0148\\u1E47\\u0146\\u1E4B\\u1E49\\u019E\\u0272\\u0149\\uA791\\uA7A5',\n  },\n  { base: 'nj', letters: '\\u01CC' },\n  {\n    base: 'o',\n    letters:\n      '\\u006F\\u24DE\\uFF4F\\u00F2\\u00F3\\u00F4\\u1ED3\\u1ED1\\u1ED7\\u1ED5\\u00F5\\u1E4D\\u022D\\u1E4F\\u014D\\u1E51\\u1E53\\u014F\\u022F\\u0231\\u00F6\\u022B\\u1ECF\\u0151\\u01D2\\u020D\\u020F\\u01A1\\u1EDD\\u1EDB\\u1EE1\\u1EDF\\u1EE3\\u1ECD\\u1ED9\\u01EB\\u01ED\\u00F8\\u01FF\\u0254\\uA74B\\uA74D\\u0275',\n  },\n  { base: 'oi', letters: '\\u01A3' },\n  { base: 'ou', letters: '\\u0223' },\n  { base: 'oo', letters: '\\uA74F' },\n  { base: 'p', letters: '\\u0070\\u24DF\\uFF50\\u1E55\\u1E57\\u01A5\\u1D7D\\uA751\\uA753\\uA755' },\n  { base: 'q', letters: '\\u0071\\u24E0\\uFF51\\u024B\\uA757\\uA759' },\n  {\n    base: 'r',\n    letters:\n      '\\u0072\\u24E1\\uFF52\\u0155\\u1E59\\u0159\\u0211\\u0213\\u1E5B\\u1E5D\\u0157\\u1E5F\\u024D\\u027D\\uA75B\\uA7A7\\uA783',\n  },\n  {\n    base: 's',\n    letters:\n      '\\u0073\\u24E2\\uFF53\\u00DF\\u015B\\u1E65\\u015D\\u1E61\\u0161\\u1E67\\u1E63\\u1E69\\u0219\\u015F\\u023F\\uA7A9\\uA785\\u1E9B',\n  },\n  {\n    base: 't',\n    letters:\n      '\\u0074\\u24E3\\uFF54\\u1E6B\\u1E97\\u0165\\u1E6D\\u021B\\u0163\\u1E71\\u1E6F\\u0167\\u01AD\\u0288\\u2C66\\uA787',\n  },\n  { base: 'tz', letters: '\\uA729' },\n  {\n    base: 'u',\n    letters:\n      '\\u0075\\u24E4\\uFF55\\u00F9\\u00FA\\u00FB\\u0169\\u1E79\\u016B\\u1E7B\\u016D\\u00FC\\u01DC\\u01D8\\u01D6\\u01DA\\u1EE7\\u016F\\u0171\\u01D4\\u0215\\u0217\\u01B0\\u1EEB\\u1EE9\\u1EEF\\u1EED\\u1EF1\\u1EE5\\u1E73\\u0173\\u1E77\\u1E75\\u0289',\n  },\n  { base: 'v', letters: '\\u0076\\u24E5\\uFF56\\u1E7D\\u1E7F\\u028B\\uA75F\\u028C' },\n  { base: 'vy', letters: '\\uA761' },\n  { base: 'w', letters: '\\u0077\\u24E6\\uFF57\\u1E81\\u1E83\\u0175\\u1E87\\u1E85\\u1E98\\u1E89\\u2C73' },\n  { base: 'x', letters: '\\u0078\\u24E7\\uFF58\\u1E8B\\u1E8D' },\n  {\n    base: 'y',\n    letters:\n      '\\u0079\\u24E8\\uFF59\\u1EF3\\u00FD\\u0177\\u1EF9\\u0233\\u1E8F\\u00FF\\u1EF7\\u1E99\\u1EF5\\u01B4\\u024F\\u1EFF',\n  },\n  {\n    base: 'z',\n    letters: '\\u007A\\u24E9\\uFF5A\\u017A\\u1E91\\u017C\\u017E\\u1E93\\u1E95\\u01B6\\u0225\\u0240\\u2C6C\\uA763',\n  },\n];\n\nconst diacriticsMap = {};\nfor (let i = 0; i < defaultDiacriticsRemovalap.length; i += 1) {\n  const letters = defaultDiacriticsRemovalap[i].letters;\n  for (let j = 0; j < letters.length; j += 1) {\n    diacriticsMap[letters[j]] = defaultDiacriticsRemovalap[i].base;\n  }\n}\n\nfunction removeDiacritics(str) {\n  return str.replace(/[^\\u0000-\\u007E]/g, (a) => diacriticsMap[a] || a);\n}\n\nexport default removeDiacritics;\n","import $ from '../../shared/dom7.js';\nimport { extend, deleteProps, id, nextTick } from '../../shared/utils.js';\nimport Framework7Class from '../../shared/class.js';\nimport removeDiacritics from '../searchbar/remove-diacritics.js';\n\n/** @jsx $jsx */\nimport $jsx from '../../shared/$jsx.js';\n\nclass SmartSelect extends Framework7Class {\n  constructor(app, params = {}) {\n    super(params, [app]);\n    const ss = this;\n\n    const defaults = extend(\n      {\n        on: {},\n      },\n      app.params.smartSelect,\n    );\n\n    // Extend defaults with modules params\n    ss.useModulesParams(defaults);\n\n    ss.params = extend({}, defaults, params);\n\n    ss.app = app;\n\n    const $el = $(ss.params.el).eq(0);\n    if ($el.length === 0) return ss;\n\n    if ($el[0].f7SmartSelect) return $el[0].f7SmartSelect;\n\n    const $selectEl = $el.find('select').eq(0);\n    if ($selectEl.length === 0) return ss;\n\n    let $valueEl;\n    if (ss.params.setValueText) {\n      $valueEl = $(ss.params.valueEl);\n      if ($valueEl.length === 0) {\n        $valueEl = $el.find('.item-after');\n      }\n      if ($valueEl.length === 0) {\n        $valueEl = $('<div class=\"item-after\"></div>');\n        $valueEl.insertAfter($el.find('.item-title'));\n      }\n    }\n\n    // Url\n    let url = params.url;\n    if (!url) {\n      if ($el.attr('href') && $el.attr('href') !== '#') url = $el.attr('href');\n      else if ($selectEl.attr('name')) url = `${$selectEl.attr('name').toLowerCase()}-select/`;\n    }\n    if (!url) url = ss.params.url;\n\n    const multiple = $selectEl[0].multiple;\n    const inputType = multiple ? 'checkbox' : 'radio';\n    const selectId = id();\n\n    extend(ss, {\n      $el,\n      el: $el[0],\n      $selectEl,\n      selectEl: $selectEl[0],\n      $valueEl,\n      valueEl: $valueEl && $valueEl[0],\n      url,\n      multiple,\n      inputType,\n      id: selectId,\n      inputName: `${inputType}-${selectId}`,\n      selectName: $selectEl.attr('name'),\n      maxLength: $selectEl.attr('maxlength') || params.maxLength,\n    });\n\n    $el[0].f7SmartSelect = ss;\n\n    // Events\n    function onClick() {\n      ss.open();\n    }\n    function onChange() {\n      const value = ss.$selectEl.val();\n      ss.$el.trigger('smartselect:change', value);\n      ss.emit('local::change smartSelectChange', ss, value);\n      if (ss.vl) {\n        ss.vl.clearCache();\n      }\n      ss.setValueText();\n    }\n    ss.attachEvents = function attachEvents() {\n      $el.on('click', onClick);\n      $el.on('change', 'select', onChange);\n    };\n    ss.detachEvents = function detachEvents() {\n      $el.off('click', onClick);\n      $el.off('change', 'select', onChange);\n    };\n\n    function handleInputChange() {\n      let optionEl;\n      let text;\n      const inputEl = this;\n      const value = inputEl.value;\n      let optionText = [];\n      let displayAs;\n      if (inputEl.type === 'checkbox') {\n        for (let i = 0; i < ss.selectEl.options.length; i += 1) {\n          optionEl = ss.selectEl.options[i];\n          if (optionEl.value === value) {\n            optionEl.selected = inputEl.checked;\n          }\n          if (optionEl.selected) {\n            displayAs = optionEl.dataset\n              ? optionEl.dataset.displayAs\n              : $(optionEl).data('display-value-as');\n            text = displayAs && typeof displayAs !== 'undefined' ? displayAs : optionEl.textContent;\n            optionText.push(text.trim());\n          }\n        }\n        if (ss.maxLength) {\n          ss.checkMaxLength();\n        }\n      } else {\n        optionEl = ss.$selectEl.find(`option[value=\"${value}\"]`)[0];\n        if (!optionEl) {\n          optionEl = ss.$selectEl.find('option').filter((optEl) => optEl.value === value)[0];\n        }\n        displayAs = optionEl.dataset ? optionEl.dataset.displayAs : $(optionEl).data('display-as');\n        text = displayAs && typeof displayAs !== 'undefined' ? displayAs : optionEl.textContent;\n        optionText = [text];\n        ss.selectEl.value = value;\n      }\n\n      ss.$selectEl.trigger('change');\n      if (ss.params.setValueText) {\n        ss.formatValueTextContent(optionText);\n      }\n      if (ss.params.closeOnSelect && ss.inputType === 'radio') {\n        ss.close();\n      }\n    }\n\n    ss.attachInputsEvents = function attachInputsEvents() {\n      ss.$containerEl.on(\n        'change',\n        'input[type=\"checkbox\"], input[type=\"radio\"]',\n        handleInputChange,\n      );\n    };\n    ss.detachInputsEvents = function detachInputsEvents() {\n      ss.$containerEl.off(\n        'change',\n        'input[type=\"checkbox\"], input[type=\"radio\"]',\n        handleInputChange,\n      );\n    };\n\n    // Install Modules\n    ss.useModules();\n\n    // Init\n    ss.init();\n\n    return ss;\n  }\n\n  setValue(value) {\n    const ss = this;\n    let newValue = value;\n    let optionText = [];\n    let optionEl;\n    let displayAs;\n    let text;\n    if (ss.multiple) {\n      if (!Array.isArray(newValue)) newValue = [newValue];\n      for (let i = 0; i < ss.selectEl.options.length; i += 1) {\n        optionEl = ss.selectEl.options[i];\n        if (newValue.indexOf(optionEl.value) >= 0) {\n          optionEl.selected = true;\n        } else {\n          optionEl.selected = false;\n        }\n        if (optionEl.selected) {\n          displayAs = optionEl.dataset\n            ? optionEl.dataset.displayAs\n            : $(optionEl).data('display-value-as');\n          text = displayAs && typeof displayAs !== 'undefined' ? displayAs : optionEl.textContent;\n          optionText.push(text.trim());\n        }\n      }\n    } else {\n      optionEl = ss.$selectEl.find(`option[value=\"${newValue}\"]`)[0];\n      if (optionEl) {\n        displayAs = optionEl.dataset ? optionEl.dataset.displayAs : $(optionEl).data('display-as');\n        text = displayAs && typeof displayAs !== 'undefined' ? displayAs : optionEl.textContent;\n        optionText = [text];\n      }\n      ss.selectEl.value = newValue;\n    }\n    if (ss.params.setValueText) {\n      ss.formatValueTextContent(optionText);\n    }\n    ss.$selectEl.trigger('change');\n    return ss;\n  }\n\n  unsetValue() {\n    const ss = this;\n    if (ss.params.setValueText) {\n      ss.formatValueTextContent([]);\n    }\n    ss.$selectEl.find('option').each((optionEl) => {\n      optionEl.selected = false;\n      optionEl.checked = false;\n    });\n    ss.$selectEl[0].value = null;\n\n    if (ss.$containerEl) {\n      ss.$containerEl\n        .find(\n          `input[name=\"${ss.inputName}\"][type=\"checkbox\"], input[name=\"${ss.inputName}\"][type=\"radio\"]`,\n        )\n        .prop('checked', false);\n    }\n    ss.$selectEl.trigger('change');\n  }\n\n  getValue() {\n    const ss = this;\n    return ss.$selectEl.val();\n  }\n\n  get view() {\n    const { params, $el } = this;\n    let view;\n    if (params.view) {\n      view = params.view;\n    }\n    if (!view) {\n      view = $el.parents('.view').length && $el.parents('.view')[0].f7View;\n    }\n    if (!view && params.openIn === 'page') {\n      throw Error('Smart Select requires initialized View');\n    }\n    return view;\n  }\n\n  checkMaxLength() {\n    const ss = this;\n    const $containerEl = ss.$containerEl;\n    if (ss.selectEl.selectedOptions.length >= ss.maxLength) {\n      $containerEl.find('input[type=\"checkbox\"]').each((inputEl) => {\n        if (!inputEl.checked) {\n          $(inputEl).parents('li').addClass('disabled');\n        } else {\n          $(inputEl).parents('li').removeClass('disabled');\n        }\n      });\n    } else {\n      $containerEl.find('.disabled').removeClass('disabled');\n    }\n  }\n\n  formatValueTextContent(values) {\n    const ss = this;\n    const valueFormatted = ss.formatValueText(values);\n    if (valueFormatted.includes('<') && valueFormatted.includes('>')) {\n      ss.$valueEl.html(valueFormatted);\n    } else {\n      ss.$valueEl.text(valueFormatted);\n    }\n  }\n\n  formatValueText(values) {\n    const ss = this;\n    let textValue;\n    if (ss.params.formatValueText) {\n      textValue = ss.params.formatValueText.call(ss, values, ss);\n    } else {\n      textValue = values.join(', ');\n    }\n    return textValue;\n  }\n\n  setValueText(value) {\n    const ss = this;\n    let valueArray = [];\n    if (typeof value !== 'undefined') {\n      if (Array.isArray(value)) {\n        valueArray = value;\n      } else {\n        valueArray = [value];\n      }\n    } else {\n      ss.$selectEl.find('option').each((optionEl) => {\n        const $optionEl = $(optionEl);\n        if (optionEl.selected) {\n          const displayAs = optionEl.dataset\n            ? optionEl.dataset.displayAs\n            : $optionEl.data('display-value-as');\n          if (displayAs && typeof displayAs !== 'undefined') {\n            valueArray.push(displayAs);\n          } else {\n            valueArray.push(optionEl.textContent.trim());\n          }\n        }\n      });\n    }\n    if (ss.params.setValueText) {\n      ss.formatValueTextContent(valueArray);\n    }\n  }\n\n  getItemsData() {\n    const ss = this;\n    const theme = ss.app.theme;\n    const items = [];\n    let previousGroupEl;\n    ss.$selectEl.find('option').each((optionEl) => {\n      const $optionEl = $(optionEl);\n      const optionData = $optionEl.dataset();\n      const optionImage = optionData.optionImage || ss.params.optionImage;\n      const optionIcon = optionData.optionIcon || ss.params.optionIcon;\n      const optionIconIos =\n        theme === 'ios' && (optionData.optionIconIos || ss.params.optionIconIos);\n      const optionIconMd = theme === 'md' && (optionData.optionIconMd || ss.params.optionIconMd);\n      const optionInputIconPosition =\n        optionData.inputIconPosition || ss.params.inputIconPosition || '';\n\n      const optionHasMedia = optionImage || optionIcon || optionIconIos || optionIconMd;\n      const optionColor = optionData.optionColor;\n\n      let optionClassName = optionData.optionClass || '';\n      if ($optionEl[0].disabled) optionClassName += ' disabled';\n\n      const optionGroupEl = $optionEl.parent('optgroup')[0];\n      const optionGroupLabel = optionGroupEl && optionGroupEl.label;\n      let optionIsLabel = false;\n      if (optionGroupEl && optionGroupEl !== previousGroupEl) {\n        optionIsLabel = true;\n        previousGroupEl = optionGroupEl;\n        items.push({\n          groupLabel: optionGroupLabel,\n          isLabel: optionIsLabel,\n        });\n      }\n      items.push({\n        value: $optionEl[0].value,\n        text: $optionEl[0].textContent.trim(),\n        selected: $optionEl[0].selected,\n        groupEl: optionGroupEl,\n        groupLabel: optionGroupLabel,\n        image: optionImage,\n        icon: optionIcon,\n        iconIos: optionIconIos,\n        iconMd: optionIconMd,\n        inputIconPosition: optionInputIconPosition,\n        color: optionColor,\n        className: optionClassName,\n        disabled: $optionEl[0].disabled,\n        id: ss.id,\n        hasMedia: optionHasMedia,\n        checkbox: ss.inputType === 'checkbox',\n        radio: ss.inputType === 'radio',\n        inputName: ss.inputName,\n        inputType: ss.inputType,\n      });\n    });\n    ss.items = items;\n    return items;\n  }\n\n  renderSearchbar() {\n    const ss = this;\n    if (ss.params.renderSearchbar) return ss.params.renderSearchbar.call(ss);\n    return (\n      <form class=\"searchbar\">\n        <div class=\"searchbar-inner\">\n          <div class=\"searchbar-input-wrap\">\n            <input\n              type=\"search\"\n              spellcheck={ss.params.searchbarSpellcheck || 'false'}\n              placeholder={ss.params.searchbarPlaceholder}\n            />\n            <i class=\"searchbar-icon\"></i>\n            <span class=\"input-clear-button\"></span>\n          </div>\n          {ss.params.searchbarDisableButton && (\n            <span class=\"searchbar-disable-button\">{ss.params.searchbarDisableText}</span>\n          )}\n        </div>\n      </form>\n    );\n  }\n\n  renderItem(item, index) {\n    const ss = this;\n    if (ss.params.renderItem) return ss.params.renderItem.call(ss, item, index);\n\n    function getIconContent(iconValue = '') {\n      if (iconValue.indexOf(':') >= 0) {\n        return iconValue.split(':')[1];\n      }\n      return '';\n    }\n    function getIconClass(iconValue = '') {\n      if (iconValue.indexOf(':') >= 0) {\n        let className = iconValue.split(':')[0];\n        if (className === 'f7') className = 'f7-icons';\n        if (className === 'material') className = 'material-icons';\n        return className;\n      }\n      return iconValue;\n    }\n\n    let itemHtml;\n    if (item.isLabel) {\n      itemHtml = `<li class=\"list-group-title\">${item.groupLabel}</li>`;\n    } else {\n      let selected = item.selected;\n      let disabled;\n      if (ss.params.virtualList) {\n        const ssValue = ss.getValue();\n        selected = ss.multiple ? ssValue.indexOf(item.value) >= 0 : ssValue === item.value;\n        if (ss.multiple) {\n          disabled = ss.multiple && !selected && ssValue.length === parseInt(ss.maxLength, 10);\n        }\n      }\n\n      const { icon, iconIos, iconMd } = item;\n      const hasIcon = icon || iconIos || iconMd;\n      const iconContent = getIconContent(icon || iconIos || iconMd || '');\n      const iconClass = getIconClass(icon || iconIos || iconMd || '');\n\n      itemHtml = (\n        <li class={`${item.className || ''}${disabled ? ' disabled' : ''}`}>\n          <label\n            class={`item-${item.inputType} ${\n              item.inputIconPosition ? `item-${item.inputType}-icon-${item.inputIconPosition}` : ''\n            } item-content`}\n          >\n            <input\n              type={item.inputType}\n              name={item.inputName}\n              value={item.value}\n              _checked={selected}\n            />\n            <i class={`icon icon-${item.inputType}`}></i>\n            {item.hasMedia && (\n              <div class=\"item-media\">\n                {hasIcon && <i class={`icon ${iconClass}`}>{iconContent}</i>}\n                {item.image && <img src={item.image} />}\n              </div>\n            )}\n            <div class=\"item-inner\">\n              <div class={`item-title${item.color ? ` text-color-${item.color}` : ''}`}>\n                {item.text}\n              </div>\n            </div>\n          </label>\n        </li>\n      );\n    }\n    return itemHtml;\n  }\n\n  renderItems() {\n    const ss = this;\n    if (ss.params.renderItems) return ss.params.renderItems.call(ss, ss.items);\n    const itemsHtml = `\n      ${ss.items.map((item, index) => `${ss.renderItem(item, index)}`).join('')}\n    `;\n    return itemsHtml;\n  }\n\n  renderPage() {\n    const ss = this;\n    if (ss.params.renderPage) return ss.params.renderPage.call(ss, ss.items);\n    let pageTitle = ss.params.pageTitle;\n    if (typeof pageTitle === 'undefined') {\n      const $itemTitleEl = ss.$el.find('.item-title');\n      pageTitle = $itemTitleEl.length ? $itemTitleEl.text().trim() : '';\n    }\n    const cssClass = ss.params.cssClass;\n    return (\n      <div\n        class={`page smart-select-page ${cssClass}`}\n        data-name=\"smart-select-page\"\n        data-select-name={ss.selectName}\n      >\n        <div\n          class={`navbar ${\n            ss.params.navbarColorTheme ? `color-${ss.params.navbarColorTheme}` : ''\n          }`}\n        >\n          <div class=\"navbar-bg\"></div>\n          <div\n            class={`navbar-inner sliding ${\n              ss.params.navbarColorTheme ? `color-${ss.params.navbarColorTheme}` : ''\n            }`}\n          >\n            <div class=\"left\">\n              <a class=\"link back\">\n                <i class=\"icon icon-back\"></i>\n                <span class=\"if-not-md\">{ss.params.pageBackLinkText}</span>\n              </a>\n            </div>\n            {pageTitle && <div class=\"title\">{pageTitle}</div>}\n            {ss.params.searchbar && <div class=\"subnavbar\">{ss.renderSearchbar()}</div>}\n          </div>\n        </div>\n        {ss.params.searchbar && <div class=\"searchbar-backdrop\"></div>}\n        <div class=\"page-content\">\n          <div\n            class={`list list-outline-ios list-strong-ios list-dividers-ios smart-select-list-${\n              ss.id\n            } ${ss.params.virtualList ? ' virtual-list' : ''} ${\n              ss.params.formColorTheme ? `color-${ss.params.formColorTheme}` : ''\n            }`}\n          >\n            <ul>{!ss.params.virtualList && ss.renderItems(ss.items)}</ul>\n          </div>\n        </div>\n      </div>\n    );\n  }\n\n  renderPopup() {\n    const ss = this;\n    if (ss.params.renderPopup) return ss.params.renderPopup.call(ss, ss.items);\n    let pageTitle = ss.params.pageTitle;\n    if (typeof pageTitle === 'undefined') {\n      const $itemTitleEl = ss.$el.find('.item-title');\n      pageTitle = $itemTitleEl.length ? $itemTitleEl.text().trim() : '';\n    }\n    const cssClass = ss.params.cssClass || '';\n    return (\n      <div\n        class={`popup smart-select-popup ${cssClass} ${\n          ss.params.popupTabletFullscreen ? 'popup-tablet-fullscreen' : ''\n        }`}\n        data-select-name={ss.selectName}\n      >\n        <div class=\"view\">\n          <div\n            class={`page smart-select-page ${ss.params.searchbar ? 'page-with-subnavbar' : ''}`}\n            data-name=\"smart-select-page\"\n          >\n            <div\n              class={`navbar ${\n                ss.params.navbarColorTheme ? `color-${ss.params.navbarColorTheme}` : ''\n              }`}\n            >\n              <div class=\"navbar-bg\"></div>\n              <div class=\"navbar-inner sliding\">\n                {pageTitle && <div class=\"title\">{pageTitle}</div>}\n                <div class=\"right\">\n                  <a\n                    class=\"link popup-close\"\n                    data-popup={`.smart-select-popup[data-select-name='${ss.selectName}']`}\n                  >\n                    {ss.params.popupCloseLinkText}\n                  </a>\n                </div>\n                {ss.params.searchbar && <div class=\"subnavbar\">{ss.renderSearchbar()}</div>}\n              </div>\n            </div>\n            {ss.params.searchbar && <div class=\"searchbar-backdrop\"></div>}\n            <div class=\"page-content\">\n              <div\n                class={`list list-outline-ios list-strong-ios list-dividers-ios smart-select-list-${\n                  ss.id\n                } ${ss.params.virtualList ? ' virtual-list' : ''} ${\n                  ss.params.formColorTheme ? `color-${ss.params.formColorTheme}` : ''\n                }`}\n              >\n                <ul>{!ss.params.virtualList && ss.renderItems(ss.items)}</ul>\n              </div>\n            </div>\n          </div>\n        </div>\n      </div>\n    );\n  }\n\n  renderSheet() {\n    const ss = this;\n    if (ss.params.renderSheet) return ss.params.renderSheet.call(ss, ss.items);\n    const cssClass = ss.params.cssClass;\n    // prettier-ignore\n    return (\n      <div class={`sheet-modal smart-select-sheet ${cssClass}`} data-select-name={ss.selectName}>\n        <div class={`toolbar toolbar-top ${ss.params.toolbarColorTheme ? `color-${ss.params.toolbarColorTheme}` : ''}`}>\n          <div class=\"toolbar-inner\">\n            <div class=\"left\"></div>\n            <div class=\"right\">\n              <a class=\"link sheet-close\">{ss.params.sheetCloseLinkText}</a>\n            </div>\n          </div>\n        </div>\n        <div class=\"sheet-modal-inner\">\n          <div class=\"page-content\">\n            <div class={`list list-strong-ios list-dividers-ios smart-select-list-${ss.id} ${ss.params.virtualList ? ' virtual-list' : ''} ${ss.params.formColorTheme ? `color-${ss.params.formColorTheme}` : ''}`}>\n              <ul>{!ss.params.virtualList && ss.renderItems(ss.items)}</ul>\n            </div>\n          </div>\n        </div>\n      </div>\n    )\n  }\n\n  renderPopover() {\n    const ss = this;\n    if (ss.params.renderPopover) return ss.params.renderPopover.call(ss, ss.items);\n    const cssClass = ss.params.cssClass;\n    // prettier-ignore\n    return (\n      <div class={`popover smart-select-popover ${cssClass}`} data-select-name={ss.selectName}>\n        <div class=\"popover-inner\">\n          <div class={`list list-strong-ios list-dividers-ios smart-select-list-${ss.id} ${ss.params.virtualList ? ' virtual-list' : ''} ${ss.params.formColorTheme ? `color-${ss.params.formColorTheme}` : ''}`}>\n            <ul>{!ss.params.virtualList && ss.renderItems(ss.items)}</ul>\n          </div>\n        </div>\n      </div>\n\n    )\n  }\n\n  scrollToSelectedItem() {\n    const ss = this;\n    const { params, $containerEl } = ss;\n    if (!ss.opened) return ss;\n    if (params.virtualList) {\n      let selectedIndex;\n      ss.vl.items.forEach((item, index) => {\n        if (typeof selectedIndex === 'undefined' && item.selected) {\n          selectedIndex = index;\n        }\n      });\n      if (typeof selectedIndex !== 'undefined') {\n        ss.vl.scrollToItem(selectedIndex);\n      }\n    } else {\n      const $selectedItemEl = $containerEl.find('input:checked').parents('li');\n      if (!$selectedItemEl.length) return ss;\n      const $scrollableEl = $containerEl.find('.page-content, .popover-inner');\n      if (!$scrollableEl.length) return ss;\n      $scrollableEl.scrollTop(\n        $selectedItemEl.offset().top -\n          $scrollableEl.offset().top -\n          parseInt($scrollableEl.css('padding-top'), 10),\n      );\n    }\n    return ss;\n  }\n\n  onOpen(type, containerEl) {\n    const ss = this;\n    const app = ss.app;\n    const $containerEl = $(containerEl);\n    ss.$containerEl = $containerEl;\n    ss.openedIn = type;\n    ss.opened = true;\n\n    // Init VL\n    if (ss.params.virtualList) {\n      ss.vl = app.virtualList.create({\n        el: $containerEl.find('.virtual-list'),\n        items: ss.items,\n        renderItem: ss.renderItem.bind(ss),\n        height: ss.params.virtualListHeight,\n        searchByItem(query, item) {\n          if (\n            item.text &&\n            removeDiacritics(item.text).toLowerCase().indexOf(query.trim().toLowerCase()) >= 0\n          )\n            return true;\n          return false;\n        },\n      });\n    }\n    if (ss.params.scrollToSelectedItem) {\n      ss.scrollToSelectedItem();\n    }\n\n    // Init SB\n    if (ss.params.searchbar) {\n      let $searchbarEl = $containerEl.find('.searchbar');\n      if (type === 'page' && app.theme === 'ios') {\n        $searchbarEl = $(app.navbar.getElByPage($containerEl)).find('.searchbar');\n      }\n\n      if (ss.params.appendSearchbarNotFound && (type === 'page' || type === 'popup')) {\n        let $notFoundEl = null;\n\n        if (typeof ss.params.appendSearchbarNotFound === 'string') {\n          $notFoundEl = $(\n            `<div class=\"block searchbar-not-found\">${ss.params.appendSearchbarNotFound}</div>`,\n          );\n        } else if (typeof ss.params.appendSearchbarNotFound === 'boolean') {\n          $notFoundEl = $('<div class=\"block searchbar-not-found\">Nothing found</div>');\n        } else {\n          $notFoundEl = ss.params.appendSearchbarNotFound;\n        }\n\n        if ($notFoundEl) {\n          $containerEl.find('.page-content').append($notFoundEl[0]);\n        }\n      }\n\n      const searchbarParams = extend(\n        {\n          el: $searchbarEl,\n          backdropEl: $containerEl.find('.searchbar-backdrop'),\n          searchContainer: `.smart-select-list-${ss.id}`,\n          searchIn: '.item-title',\n        },\n        typeof ss.params.searchbar === 'object' ? ss.params.searchbar : {},\n      );\n\n      ss.searchbar = app.searchbar.create(searchbarParams);\n    }\n\n    // Check for max length\n    if (ss.maxLength) {\n      ss.checkMaxLength();\n    }\n\n    // Close on select\n    if (ss.params.closeOnSelect) {\n      ss.$containerEl\n        .find(`input[type=\"radio\"][name=\"${ss.inputName}\"]:checked`)\n        .parents('label')\n        .once('click', () => {\n          ss.close();\n        });\n    }\n\n    // Attach input events\n    ss.attachInputsEvents();\n\n    ss.$el.trigger('smartselect:open');\n    ss.emit('local::open smartSelectOpen', ss);\n  }\n\n  onOpened() {\n    const ss = this;\n\n    ss.$el.trigger('smartselect:opened');\n    ss.emit('local::opened smartSelectOpened', ss);\n  }\n\n  onClose() {\n    const ss = this;\n    if (ss.destroyed) return;\n\n    // Destroy VL\n    if (ss.vl && ss.vl.destroy) {\n      ss.vl.destroy();\n      ss.vl = null;\n      delete ss.vl;\n    }\n\n    // Destroy SB\n    if (ss.searchbar && ss.searchbar.destroy) {\n      ss.searchbar.destroy();\n      ss.searchbar = null;\n      delete ss.searchbar;\n    }\n    // Detach events\n    ss.detachInputsEvents();\n\n    ss.$el.trigger('smartselect:close');\n    ss.emit('local::close smartSelectClose', ss);\n  }\n\n  onClosed() {\n    const ss = this;\n    if (ss.destroyed) return;\n    ss.opened = false;\n    ss.$containerEl = null;\n    delete ss.$containerEl;\n\n    ss.$el.trigger('smartselect:closed');\n    ss.emit('local::closed smartSelectClosed', ss);\n  }\n\n  openPage() {\n    const ss = this;\n    if (ss.opened) return ss;\n    ss.getItemsData();\n    const pageHtml = ss.renderPage(ss.items);\n\n    ss.view.router.navigate({\n      url: ss.url,\n      route: {\n        content: pageHtml,\n        path: ss.url,\n        on: {\n          pageBeforeIn(e, page) {\n            ss.onOpen('page', page.el);\n          },\n          pageAfterIn(e, page) {\n            ss.onOpened('page', page.el);\n          },\n          pageBeforeOut(e, page) {\n            ss.onClose('page', page.el);\n          },\n          pageAfterOut(e, page) {\n            ss.onClosed('page', page.el);\n          },\n        },\n      },\n    });\n    return ss;\n  }\n\n  openPopup() {\n    const ss = this;\n    if (ss.opened) return ss;\n    ss.getItemsData();\n    const popupHtml = ss.renderPopup(ss.items);\n\n    const popupParams = {\n      content: popupHtml,\n      push: ss.params.popupPush,\n      swipeToClose: ss.params.popupSwipeToClose,\n      closeByBackdropClick: ss.params.closeByBackdropClick,\n      on: {\n        popupOpen(popup) {\n          ss.onOpen('popup', popup.el);\n        },\n        popupOpened(popup) {\n          ss.onOpened('popup', popup.el);\n        },\n        popupClose(popup) {\n          ss.onClose('popup', popup.el);\n        },\n        popupClosed(popup) {\n          ss.onClosed('popup', popup.el);\n        },\n      },\n    };\n\n    if (ss.params.routableModals && ss.view) {\n      ss.view.router.navigate({\n        url: ss.url,\n        route: {\n          path: ss.url,\n          popup: popupParams,\n        },\n      });\n    } else {\n      ss.modal = ss.app.popup.create(popupParams).open();\n    }\n    return ss;\n  }\n\n  openSheet() {\n    const ss = this;\n    if (ss.opened) return ss;\n    ss.getItemsData();\n    const sheetHtml = ss.renderSheet(ss.items);\n\n    const sheetParams = {\n      content: sheetHtml,\n      backdrop: ss.params.sheetBackdrop,\n      scrollToEl: ss.$el,\n      closeByOutsideClick: true,\n      push: ss.params.sheetPush,\n      swipeToClose: ss.params.sheetSwipeToClose,\n      closeByBackdropClick: ss.params.closeByBackdropClick,\n      on: {\n        sheetOpen(sheet) {\n          ss.onOpen('sheet', sheet.el);\n        },\n        sheetOpened(sheet) {\n          ss.onOpened('sheet', sheet.el);\n        },\n        sheetClose(sheet) {\n          ss.onClose('sheet', sheet.el);\n        },\n        sheetClosed(sheet) {\n          ss.onClosed('sheet', sheet.el);\n        },\n      },\n    };\n\n    if (ss.params.routableModals && ss.view) {\n      ss.view.router.navigate({\n        url: ss.url,\n        route: {\n          path: ss.url,\n          sheet: sheetParams,\n        },\n      });\n    } else {\n      ss.modal = ss.app.sheet.create(sheetParams).open();\n    }\n    return ss;\n  }\n\n  openPopover() {\n    const ss = this;\n    if (ss.opened) return ss;\n    ss.getItemsData();\n    const popoverHtml = ss.renderPopover(ss.items);\n    const popoverParams = {\n      content: popoverHtml,\n      targetEl: ss.$el,\n      closeByBackdropClick: ss.params.closeByBackdropClick,\n      on: {\n        popoverOpen(popover) {\n          ss.onOpen('popover', popover.el);\n        },\n        popoverOpened(popover) {\n          ss.onOpened('popover', popover.el);\n        },\n        popoverClose(popover) {\n          ss.onClose('popover', popover.el);\n        },\n        popoverClosed(popover) {\n          ss.onClosed('popover', popover.el);\n        },\n      },\n    };\n    if (ss.params.routableModals && ss.view) {\n      ss.view.router.navigate({\n        url: ss.url,\n        route: {\n          path: ss.url,\n          popover: popoverParams,\n        },\n      });\n    } else {\n      ss.modal = ss.app.popover.create(popoverParams).open();\n    }\n    return ss;\n  }\n\n  open(type) {\n    const ss = this;\n    if (ss.opened) return ss;\n    let prevented = false;\n    function prevent() {\n      prevented = true;\n    }\n    if (ss.$el) {\n      ss.$el.trigger('smartselect:beforeopen', { prevent });\n    }\n    ss.emit('local::beforeOpen smartSelectBeforeOpen', ss, prevent);\n    if (prevented) return ss;\n    const openIn = type || ss.params.openIn;\n    ss[\n      `open${openIn\n        .split('')\n        .map((el, index) => {\n          if (index === 0) return el.toUpperCase();\n          return el;\n        })\n        .join('')}`\n    ]();\n    return ss;\n  }\n\n  close() {\n    const ss = this;\n    if (!ss.opened) return ss;\n    if ((ss.params.routableModals && ss.view) || ss.openedIn === 'page') {\n      ss.view.router.back();\n    } else {\n      ss.modal.once('modalClosed', () => {\n        nextTick(() => {\n          if (ss.destroyed) return;\n          ss.modal.destroy();\n          delete ss.modal;\n        });\n      });\n      ss.modal.close();\n    }\n    return ss;\n  }\n\n  init() {\n    const ss = this;\n    ss.attachEvents();\n    ss.setValueText();\n  }\n\n  destroy() {\n    const ss = this;\n    ss.emit('local::beforeDestroy smartSelectBeforeDestroy', ss);\n    ss.$el.trigger('smartselect:beforedestroy');\n    ss.detachEvents();\n    delete ss.$el[0].f7SmartSelect;\n    deleteProps(ss);\n    ss.destroyed = true;\n  }\n}\n\nexport default SmartSelect;\n","import $ from '../../shared/dom7.js';\nimport { extend } from '../../shared/utils.js';\nimport SmartSelect from './smart-select-class.js';\nimport ConstructorMethods from '../../shared/constructor-methods.js';\n\nexport default {\n  name: 'smartSelect',\n  params: {\n    smartSelect: {\n      el: undefined,\n      valueEl: undefined,\n      setValueText: true,\n      formatValueText: null,\n      openIn: 'page', // or 'popup' or 'sheet' or 'popover'\n      popupPush: false,\n      popupSwipeToClose: undefined, // defaults to app\n      sheetPush: false,\n      sheetSwipeToClose: undefined, // defaults to app\n      sheetBackdrop: false,\n      pageTitle: undefined,\n      pageBackLinkText: 'Back',\n      popupCloseLinkText: 'Close',\n      popupTabletFullscreen: false,\n      closeByBackdropClick: true,\n      sheetCloseLinkText: 'Done',\n      searchbar: false,\n      searchbarPlaceholder: 'Search',\n      searchbarDisableText: 'Cancel',\n      searchbarDisableButton: true,\n      searchbarSpellcheck: false,\n      closeOnSelect: false,\n      virtualList: false,\n      virtualListHeight: undefined,\n      scrollToSelectedItem: false,\n      formColorTheme: undefined,\n      navbarColorTheme: undefined,\n      routableModals: false,\n      url: 'select/',\n      inputIconPosition: 'start',\n      cssClass: '',\n      /*\n        Custom render functions\n      */\n      renderPage: undefined,\n      renderPopup: undefined,\n      renderSheet: undefined,\n      renderPopover: undefined,\n      renderItems: undefined,\n      renderItem: undefined,\n      renderSearchbar: undefined,\n    },\n  },\n  static: {\n    SmartSelect,\n  },\n  create() {\n    const app = this;\n    app.smartSelect = extend(\n      ConstructorMethods({\n        defaultSelector: '.smart-select',\n        constructor: SmartSelect,\n        app,\n        domProp: 'f7SmartSelect',\n      }),\n      {\n        open(smartSelectEl) {\n          const ss = app.smartSelect.get(smartSelectEl);\n          if (ss && ss.open) return ss.open();\n          return undefined;\n        },\n        close(smartSelectEl) {\n          const ss = app.smartSelect.get(smartSelectEl);\n          if (ss && ss.close) return ss.close();\n          return undefined;\n        },\n      },\n    );\n  },\n\n  on: {\n    tabMounted(tabEl) {\n      const app = this;\n      $(tabEl)\n        .find('.smart-select-init')\n        .each((smartSelectEl) => {\n          app.smartSelect.create(extend({ el: smartSelectEl }, $(smartSelectEl).dataset()));\n        });\n    },\n    tabBeforeRemove(tabEl) {\n      $(tabEl)\n        .find('.smart-select-init')\n        .each((smartSelectEl) => {\n          if (smartSelectEl.f7SmartSelect && smartSelectEl.f7SmartSelect.destroy) {\n            smartSelectEl.f7SmartSelect.destroy();\n          }\n        });\n    },\n    pageInit(page) {\n      const app = this;\n      page.$el.find('.smart-select-init').each((smartSelectEl) => {\n        app.smartSelect.create(extend({ el: smartSelectEl }, $(smartSelectEl).dataset()));\n      });\n    },\n    pageBeforeRemove(page) {\n      page.$el.find('.smart-select-init').each((smartSelectEl) => {\n        if (smartSelectEl.f7SmartSelect && smartSelectEl.f7SmartSelect.destroy) {\n          smartSelectEl.f7SmartSelect.destroy();\n        }\n      });\n    },\n  },\n  clicks: {\n    '.smart-select': function open($clickedEl, data) {\n      const app = this;\n      if (!$clickedEl[0].f7SmartSelect) {\n        const ss = app.smartSelect.create(extend({ el: $clickedEl }, data));\n        ss.open();\n      }\n    },\n  },\n  vnode: {\n    'smart-select-init': {\n      insert(vnode) {\n        const app = this;\n        const smartSelectEl = vnode.elm;\n        app.smartSelect.create(extend({ el: smartSelectEl }, $(smartSelectEl).dataset()));\n      },\n      destroy(vnode) {\n        const smartSelectEl = vnode.elm;\n        if (smartSelectEl.f7SmartSelect && smartSelectEl.f7SmartSelect.destroy) {\n          smartSelectEl.f7SmartSelect.destroy();\n        }\n      },\n    },\n  },\n};\n","import { extend, nextTick, deleteProps } from '../../shared/utils.js';\nimport Framework7Class from '../../shared/class.js';\nimport $ from '../../shared/dom7.js';\nimport { getDevice } from '../../shared/get-device.js';\nimport { getSupport } from '../../shared/get-support.js';\n/** @jsx $jsx */\nimport $jsx from '../../shared/$jsx.js';\n\nclass Calendar extends Framework7Class {\n  constructor(app, params = {}) {\n    super(params, [app]);\n    const calendar = this;\n\n    calendar.params = extend({}, app.params.calendar, params);\n\n    let $containerEl;\n    if (calendar.params.containerEl) {\n      $containerEl = $(calendar.params.containerEl);\n      if ($containerEl.length === 0) return calendar;\n    }\n\n    let $inputEl;\n    if (calendar.params.inputEl) {\n      $inputEl = $(calendar.params.inputEl);\n    }\n\n    const isHorizontal = calendar.params.direction === 'horizontal';\n\n    let inverter = 1;\n    if (isHorizontal) {\n      inverter = app.rtl ? -1 : 1;\n    }\n\n    extend(calendar, {\n      app,\n      $containerEl,\n      containerEl: $containerEl && $containerEl[0],\n      inline: $containerEl && $containerEl.length > 0,\n      $inputEl,\n      inputEl: $inputEl && $inputEl[0],\n      initialized: false,\n      opened: false,\n      url: calendar.params.url,\n      isHorizontal,\n      inverter,\n      animating: false,\n      allowTouchMove: true,\n      hasTimePicker:\n        calendar.params.timePicker && !calendar.params.rangePicker && !calendar.params.multiple,\n    });\n    calendar.dayFormatter = (date) => {\n      const formatter = new Intl.DateTimeFormat(calendar.params.locale, { day: 'numeric' });\n      return formatter.format(date).replace(/æ—¥/, '');\n    };\n    calendar.monthFormatter = (date) => {\n      const formatter = new Intl.DateTimeFormat(calendar.params.locale, { month: 'long' });\n      return formatter.format(date);\n    };\n    calendar.yearFormatter = (date) => {\n      const formatter = new Intl.DateTimeFormat(calendar.params.locale, { year: 'numeric' });\n      return formatter.format(date);\n    };\n    calendar.timeSelectorFormatter = (date) => {\n      const formatter = new Intl.DateTimeFormat(\n        calendar.params.locale,\n        calendar.params.timePickerFormat,\n      );\n      return formatter.format(date);\n    };\n    const timeFormatCheckDate = calendar.timeSelectorFormatter(new Date()).toLowerCase();\n    calendar.is12HoursFormat =\n      timeFormatCheckDate.indexOf('pm') >= 0 || timeFormatCheckDate.indexOf('am') >= 0;\n\n    // Auto names\n    let { monthNames, monthNamesShort, dayNames, dayNamesShort } = calendar.params;\n    const { monthNamesIntl, monthNamesShortIntl, dayNamesIntl, dayNamesShortIntl } =\n      calendar.getIntlNames();\n    if (monthNames === 'auto') monthNames = monthNamesIntl;\n    if (monthNamesShort === 'auto') monthNamesShort = monthNamesShortIntl;\n    if (dayNames === 'auto') dayNames = dayNamesIntl;\n    if (dayNamesShort === 'auto') dayNamesShort = dayNamesShortIntl;\n\n    extend(calendar, {\n      monthNames,\n      monthNamesShort,\n      dayNames,\n      dayNamesShort,\n    });\n\n    function onInputClick() {\n      calendar.open();\n    }\n    function onInputFocus(e) {\n      e.preventDefault();\n    }\n    function onInputClear() {\n      calendar.setValue([]);\n      if (calendar.opened) {\n        calendar.update();\n      }\n    }\n    function onHtmlClick(e) {\n      const $targetEl = $(e.target);\n      if (calendar.destroyed || !calendar.params) return;\n      if (calendar.isPopover()) return;\n      if (!calendar.opened || calendar.closing) return;\n      if ($targetEl.closest('[class*=\"backdrop\"]').length) return;\n      if (calendar.monthPickerPopover || calendar.yearPickerPopover || calendar.timePickerPopover)\n        return;\n      if ($inputEl && $inputEl.length > 0) {\n        if (\n          $targetEl[0] !== $inputEl[0] &&\n          $targetEl.closest('.sheet-modal, .calendar-modal').length === 0\n        ) {\n          calendar.close();\n        }\n      } else if ($(e.target).closest('.sheet-modal, .calendar-modal').length === 0) {\n        calendar.close();\n      }\n    }\n\n    // Events\n    extend(calendar, {\n      attachInputEvents() {\n        calendar.$inputEl.on('click', onInputClick);\n        calendar.$inputEl.on('input:clear', onInputClear);\n        if (calendar.params.inputReadOnly) {\n          calendar.$inputEl.on('focus mousedown', onInputFocus);\n          if (calendar.$inputEl[0]) {\n            calendar.$inputEl[0].f7ValidateReadonly = true;\n          }\n        }\n      },\n      detachInputEvents() {\n        calendar.$inputEl.off('click', onInputClick);\n        calendar.$inputEl.off('input:clear', onInputClear);\n        if (calendar.params.inputReadOnly) {\n          calendar.$inputEl.off('focus mousedown', onInputFocus);\n          if (calendar.$inputEl[0]) {\n            delete calendar.$inputEl[0].f7ValidateReadonly;\n          }\n        }\n      },\n      attachHtmlEvents() {\n        app.on('click', onHtmlClick);\n      },\n      detachHtmlEvents() {\n        app.off('click', onHtmlClick);\n      },\n    });\n    calendar.attachCalendarEvents = function attachCalendarEvents() {\n      let allowItemClick = true;\n      let isTouched;\n      let isMoved;\n      let touchStartX;\n      let touchStartY;\n      let touchCurrentX;\n      let touchCurrentY;\n      let touchStartTime;\n      let touchEndTime;\n      let currentTranslate;\n      let wrapperWidth;\n      let wrapperHeight;\n      let percentage;\n      let touchesDiff;\n      let isScrolling;\n\n      const { $el, $wrapperEl } = calendar;\n\n      function handleTouchStart(e) {\n        if (isMoved || isTouched || !e.isTrusted) return;\n        isTouched = true;\n        touchStartX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n        touchCurrentX = touchStartX;\n        touchStartY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n        touchCurrentY = touchStartY;\n        touchStartTime = new Date().getTime();\n        percentage = 0;\n        allowItemClick = true;\n        isScrolling = undefined;\n        currentTranslate = calendar.monthsTranslate;\n      }\n      function handleTouchMove(e) {\n        if (!isTouched || !e.isTrusted) return;\n        const { isHorizontal: isH } = calendar;\n\n        touchCurrentX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n        touchCurrentY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n        if (typeof isScrolling === 'undefined') {\n          isScrolling = !!(\n            isScrolling ||\n            Math.abs(touchCurrentY - touchStartY) > Math.abs(touchCurrentX - touchStartX)\n          );\n        }\n        if ((isH && isScrolling) || !calendar.allowTouchMove) {\n          isTouched = false;\n          return;\n        }\n        e.preventDefault();\n        if (calendar.animating) {\n          isTouched = false;\n          return;\n        }\n        allowItemClick = false;\n        if (!isMoved) {\n          // First move\n          isMoved = true;\n          wrapperWidth = $wrapperEl[0].offsetWidth;\n          wrapperHeight = $wrapperEl[0].offsetHeight;\n          $wrapperEl.transition(0);\n        }\n\n        touchesDiff = isH ? touchCurrentX - touchStartX : touchCurrentY - touchStartY;\n        percentage = touchesDiff / (isH ? wrapperWidth : wrapperHeight);\n        currentTranslate = (calendar.monthsTranslate * calendar.inverter + percentage) * 100;\n\n        // Transform wrapper\n        $wrapperEl.transform(\n          `translate3d(${isH ? currentTranslate : 0}%, ${isH ? 0 : currentTranslate}%, 0)`,\n        );\n      }\n      function handleTouchEnd(e) {\n        if (!isTouched || !isMoved || !e.isTrusted) {\n          isTouched = false;\n          isMoved = false;\n          return;\n        }\n        isTouched = false;\n        isMoved = false;\n\n        touchEndTime = new Date().getTime();\n        if (touchEndTime - touchStartTime < 300) {\n          if (Math.abs(touchesDiff) < 10) {\n            calendar.resetMonth();\n          } else if (touchesDiff >= 10) {\n            if (app.rtl) calendar.nextMonth();\n            else calendar.prevMonth();\n          } else if (app.rtl) calendar.prevMonth();\n          else calendar.nextMonth();\n        } else if (percentage <= -0.5) {\n          if (app.rtl) calendar.prevMonth();\n          else calendar.nextMonth();\n        } else if (percentage >= 0.5) {\n          if (app.rtl) calendar.nextMonth();\n          else calendar.prevMonth();\n        } else {\n          calendar.resetMonth();\n        }\n\n        // Allow click\n        setTimeout(() => {\n          allowItemClick = true;\n        }, 100);\n      }\n\n      function handleDayClick(e) {\n        if (!allowItemClick) return;\n        let $dayEl = $(e.target).parents('.calendar-day');\n        if ($dayEl.length === 0 && $(e.target).hasClass('calendar-day')) {\n          $dayEl = $(e.target);\n        }\n        if ($dayEl.length === 0) return;\n        if ($dayEl.hasClass('calendar-day-disabled')) return;\n        if (!calendar.params.rangePicker) {\n          if ($dayEl.hasClass('calendar-day-next')) calendar.nextMonth();\n          if ($dayEl.hasClass('calendar-day-prev')) calendar.prevMonth();\n        }\n        const dateYear = parseInt($dayEl.attr('data-year'), 10);\n        const dateMonth = parseInt($dayEl.attr('data-month'), 10);\n        const dateDay = parseInt($dayEl.attr('data-day'), 10);\n        calendar.emit(\n          'local::dayClick calendarDayClick',\n          calendar,\n          $dayEl[0],\n          dateYear,\n          dateMonth,\n          dateDay,\n        );\n        if (\n          !$dayEl.hasClass('calendar-day-selected') ||\n          calendar.params.multiple ||\n          calendar.params.rangePicker\n        ) {\n          const valueToAdd = new Date(dateYear, dateMonth, dateDay, 0, 0, 0);\n          if (calendar.hasTimePicker) {\n            if (calendar.value && calendar.value[0]) {\n              valueToAdd.setHours(calendar.value[0].getHours(), calendar.value[0].getMinutes());\n            } else {\n              valueToAdd.setHours(new Date().getHours(), new Date().getMinutes());\n            }\n          }\n          calendar.addValue(valueToAdd);\n        }\n        if (calendar.params.closeOnSelect) {\n          if (\n            (calendar.params.rangePicker && calendar.value.length === 2) ||\n            !calendar.params.rangePicker\n          ) {\n            calendar.close();\n          }\n        }\n      }\n\n      function onNextMonthClick() {\n        calendar.nextMonth();\n      }\n\n      function onPrevMonthClick() {\n        calendar.prevMonth();\n      }\n\n      function onNextYearClick() {\n        calendar.nextYear();\n      }\n\n      function onPrevYearClick() {\n        calendar.prevYear();\n      }\n\n      function onMonthSelectorClick() {\n        calendar.openMonthPicker();\n      }\n\n      function onYearSelectorClick() {\n        calendar.openYearPicker();\n      }\n\n      function onTimeSelectorClick() {\n        calendar.openTimePicker();\n      }\n\n      const passiveListener =\n        app.touchEvents.start === 'touchstart' && getSupport().passiveListener\n          ? { passive: true, capture: false }\n          : false;\n      // Selectors clicks\n      $el.find('.calendar-prev-month-button').on('click', onPrevMonthClick);\n      $el.find('.calendar-next-month-button').on('click', onNextMonthClick);\n      $el.find('.calendar-prev-year-button').on('click', onPrevYearClick);\n      $el.find('.calendar-next-year-button').on('click', onNextYearClick);\n      if (calendar.params.monthPicker) {\n        $el.find('.current-month-value').on('click', onMonthSelectorClick);\n      }\n      if (calendar.params.yearPicker) {\n        $el.find('.current-year-value').on('click', onYearSelectorClick);\n      }\n      if (calendar.hasTimePicker) {\n        $el.find('.calendar-time-selector a').on('click', onTimeSelectorClick);\n      }\n      // Day clicks\n      $wrapperEl.on('click', handleDayClick);\n      // Touch events\n      if (calendar.params.touchMove) {\n        $wrapperEl.on(app.touchEvents.start, handleTouchStart, passiveListener);\n        app.on('touchmove:active', handleTouchMove);\n        app.on('touchend:passive', handleTouchEnd);\n      }\n\n      calendar.detachCalendarEvents = function detachCalendarEvents() {\n        $el.find('.calendar-prev-month-button').off('click', onPrevMonthClick);\n        $el.find('.calendar-next-month-button').off('click', onNextMonthClick);\n        $el.find('.calendar-prev-year-button').off('click', onPrevYearClick);\n        $el.find('.calendar-next-year-button').off('click', onNextYearClick);\n        if (calendar.params.monthPicker) {\n          $el.find('.current-month-value').off('click', onMonthSelectorClick);\n        }\n        if (calendar.params.yearPicker) {\n          $el.find('.current-year-value').off('click', onYearSelectorClick);\n        }\n        if (calendar.hasTimePicker) {\n          $el.find('.calendar-time-selector a').off('click', onTimeSelectorClick);\n        }\n        $wrapperEl.off('click', handleDayClick);\n        if (calendar.params.touchMove) {\n          $wrapperEl.off(app.touchEvents.start, handleTouchStart, passiveListener);\n          app.off('touchmove:active', handleTouchMove);\n          app.off('touchend:passive', handleTouchEnd);\n        }\n      };\n    };\n\n    calendar.init();\n\n    return calendar;\n  }\n\n  get view() {\n    const { $inputEl, app, params } = this;\n    let view;\n    if (params.view) {\n      view = params.view;\n    } else if ($inputEl) {\n      view = $inputEl.parents('.view').length && $inputEl.parents('.view')[0].f7View;\n    }\n    if (!view) view = app.views.main;\n    return view;\n  }\n\n  getIntlNames() {\n    const calendar = this;\n    const locale = calendar.params.locale;\n\n    const monthNamesIntl = [];\n    const monthNamesShortIntl = [];\n    const dayNamesIntl = [];\n    const dayNamesShortIntl = [];\n    const formatterMonthNames = new Intl.DateTimeFormat(locale, { month: 'long' });\n    const formatterMonthNamesShort = new Intl.DateTimeFormat(locale, { month: 'short' });\n    const formatterDayNames = new Intl.DateTimeFormat(locale, { weekday: 'long' });\n    const formatterDayNamesShort = new Intl.DateTimeFormat(locale, { weekday: 'short' });\n    let year;\n    let yearStarted;\n    let yearEnded;\n    for (let i = 0; i < 24; i += 1) {\n      const date = new Date().setMonth(i, 1);\n      const currentYear = calendar.yearFormatter(date);\n\n      if (year && currentYear !== year) {\n        if (yearStarted) yearEnded = true;\n        yearStarted = true;\n        year = currentYear;\n      }\n      if (!year) {\n        year = currentYear;\n      }\n      if (yearStarted && year === currentYear && !yearEnded) {\n        monthNamesIntl.push(formatterMonthNames.format(date));\n        monthNamesShortIntl.push(formatterMonthNamesShort.format(date));\n      }\n    }\n    const weekDay = new Date().getDay();\n    for (let i = 0; i < 7; i += 1) {\n      const date = new Date().getTime() + (i - weekDay) * 24 * 60 * 60 * 1000;\n      dayNamesIntl.push(formatterDayNames.format(date));\n      dayNamesShortIntl.push(formatterDayNamesShort.format(date));\n    }\n\n    return {\n      monthNamesIntl,\n      monthNamesShortIntl,\n      dayNamesIntl,\n      dayNamesShortIntl,\n    };\n  }\n\n  normalizeDate(date) {\n    const calendar = this;\n    const d = new Date(date);\n    if (calendar.hasTimePicker) {\n      return new Date(d.getFullYear(), d.getMonth(), d.getDate(), d.getHours(), d.getMinutes());\n    }\n    return new Date(d.getFullYear(), d.getMonth(), d.getDate());\n  }\n\n  normalizeValues(values) {\n    const calendar = this;\n    let newValues = [];\n    if (values && Array.isArray(values)) {\n      newValues = values.map((val) => calendar.normalizeDate(val));\n    }\n    return newValues;\n  }\n\n  initInput() {\n    const calendar = this;\n    if (!calendar.$inputEl) return;\n    if (calendar.params.inputReadOnly) calendar.$inputEl.prop('readOnly', true);\n  }\n\n  isPopover() {\n    const calendar = this;\n    const { app, modal, params } = calendar;\n    const device = getDevice();\n    if (params.openIn === 'sheet') return false;\n    if (modal && modal.type !== 'popover') return false;\n\n    if (!calendar.inline && calendar.inputEl) {\n      if (params.openIn === 'popover') return true;\n      if (device.ios) {\n        return !!device.ipad;\n      }\n      if (app.width >= 768) {\n        return true;\n      }\n    }\n    return false;\n  }\n\n  formatDate(d) {\n    const calendar = this;\n    const date = new Date(d);\n    const year = date.getFullYear();\n    const month = date.getMonth();\n    const month1 = month + 1;\n    const day = date.getDate();\n    const weekDay = date.getDay();\n    const { monthNames, monthNamesShort, dayNames, dayNamesShort } = calendar;\n    const { dateFormat, locale } = calendar.params;\n\n    function twoDigits(number) {\n      return number < 10 ? `0${number}` : number;\n    }\n    if (typeof dateFormat === 'string') {\n      const tokens = {\n        yyyy: year,\n        yy: String(year).substring(2),\n        mm: twoDigits(month1),\n        m: month1,\n        MM: monthNames[month],\n        M: monthNamesShort[month],\n        dd: twoDigits(day),\n        d: day,\n        DD: dayNames[weekDay],\n        D: dayNamesShort[weekDay],\n      };\n      if (calendar.params.timePicker) {\n        const hours = date.getHours();\n        const minutes = date.getMinutes();\n        const seconds = date.getSeconds();\n        let hours12 = hours;\n        if (hours > 12) hours12 = hours - 12;\n        if (hours === 0) hours12 = 12;\n        const a = hours >= 12 && hours !== 0 ? 'pm' : 'am';\n\n        Object.assign(tokens, {\n          HH: twoDigits(hours),\n          H: hours,\n          hh: twoDigits(hours12),\n          h: hours12,\n          ss: twoDigits(seconds),\n          s: seconds,\n          ':mm': twoDigits(minutes),\n          ':m': minutes,\n          a,\n          A: a.toUpperCase(),\n        });\n      }\n      const regexp = new RegExp(\n        Object.keys(tokens)\n          .map((t) => `(${t})`)\n          .join('|'),\n        'g',\n      );\n      return dateFormat.replace(regexp, (token) => {\n        if (token in tokens) return tokens[token];\n        return token;\n      });\n    }\n    if (typeof dateFormat === 'function') {\n      return dateFormat(date);\n    }\n    // Intl Object\n    const formatter = new Intl.DateTimeFormat(locale, dateFormat);\n    return formatter.format(date);\n  }\n\n  formatValue() {\n    const calendar = this;\n    const { value } = calendar;\n    if (calendar.params.formatValue) {\n      return calendar.params.formatValue.call(calendar, value);\n    }\n    return value\n      .map((v) => calendar.formatDate(v))\n      .join(calendar.params.rangePicker ? ' - ' : ', ');\n  }\n\n  addValue(newValue) {\n    const calendar = this;\n    const { multiple, rangePicker, rangePickerMinDays, rangePickerMaxDays } = calendar.params;\n    if (multiple) {\n      if (!calendar.value) calendar.value = [];\n      let inValuesIndex;\n      for (let i = 0; i < calendar.value.length; i += 1) {\n        if (new Date(newValue).getTime() === new Date(calendar.value[i]).getTime()) {\n          inValuesIndex = i;\n        }\n      }\n      if (typeof inValuesIndex === 'undefined') {\n        calendar.value.push(newValue);\n      } else {\n        calendar.value.splice(inValuesIndex, 1);\n      }\n      calendar.updateValue();\n    } else if (rangePicker) {\n      if (!calendar.value) calendar.value = [];\n      if (calendar.value.length === 2 || calendar.value.length === 0) {\n        calendar.value = [];\n      }\n\n      if (\n        calendar.value.length === 0 ||\n        (Math.abs(calendar.value[0].getTime() - newValue.getTime()) >=\n          (rangePickerMinDays - 1) * 60 * 60 * 24 * 1000 &&\n          (rangePickerMaxDays === 0 ||\n            Math.abs(calendar.value[0].getTime() - newValue.getTime()) <=\n              (rangePickerMaxDays - 1) * 60 * 60 * 24 * 1000))\n      )\n        calendar.value.push(newValue);\n      else calendar.value = [];\n\n      calendar.value.sort((a, b) => a - b);\n      calendar.updateValue();\n    } else {\n      calendar.value = [newValue];\n      calendar.updateValue();\n    }\n  }\n\n  setValue(values) {\n    const calendar = this;\n    const currentValue = calendar.value;\n    if (\n      Array.isArray(currentValue) &&\n      Array.isArray(values) &&\n      currentValue.length === values.length\n    ) {\n      let equal = true;\n      currentValue.forEach((v, index) => {\n        if (v !== values[index]) equal = false;\n      });\n      if (equal) return;\n    }\n    calendar.value = values;\n    calendar.updateValue();\n  }\n\n  getValue() {\n    const calendar = this;\n    return calendar.value;\n  }\n\n  updateValue(onlyHeader) {\n    const calendar = this;\n    const { $el, $wrapperEl, $inputEl, value, params } = calendar;\n    let i;\n    if ($el && $el.length > 0) {\n      $wrapperEl\n        .find('.calendar-day-selected')\n        .removeClass(\n          'calendar-day-selected calendar-day-selected-range calendar-day-selected-left calendar-day-selected-right',\n        );\n      let valueDate;\n\n      if (params.rangePicker && value.length === 2) {\n        const leftDate = new Date(value[0]).getTime();\n        const rightDate = new Date(value[1]).getTime();\n        for (i = leftDate; i <= rightDate; i += 24 * 60 * 60 * 1000) {\n          valueDate = new Date(i);\n          let addClass = 'calendar-day-selected';\n          if (leftDate !== rightDate) {\n            if (i !== leftDate && i !== rightDate) {\n              addClass += ' calendar-day-selected-range';\n            }\n            if (i === leftDate) {\n              addClass += ' calendar-day-selected-left';\n            }\n            if (i === rightDate) {\n              addClass += ' calendar-day-selected-right';\n            }\n          }\n          $wrapperEl\n            .find(\n              `.calendar-day[data-date=\"${valueDate.getFullYear()}-${valueDate.getMonth()}-${valueDate.getDate()}\"]`,\n            )\n            .addClass(addClass);\n        }\n        valueDate = new Date(leftDate);\n        $wrapperEl\n          .find(\n            `.calendar-day[data-date=\"${valueDate.getFullYear()}-${valueDate.getMonth()}-${valueDate.getDate()}\"]`,\n          )\n          .removeClass('calendar-day-selected-range')\n          .addClass('calendar-day-selected calendar-day-selected-left');\n        valueDate = new Date(rightDate);\n        $wrapperEl\n          .find(\n            `.calendar-day[data-date=\"${valueDate.getFullYear()}-${valueDate.getMonth()}-${valueDate.getDate()}\"]`,\n          )\n          .removeClass('calendar-day-selected-range')\n          .addClass('calendar-day-selected calendar-day-selected-right');\n      } else {\n        for (i = 0; i < calendar.value.length; i += 1) {\n          valueDate = new Date(value[i]);\n          $wrapperEl\n            .find(\n              `.calendar-day[data-date=\"${valueDate.getFullYear()}-${valueDate.getMonth()}-${valueDate.getDate()}\"]`,\n            )\n            .addClass('calendar-day-selected');\n        }\n      }\n    }\n    if (!onlyHeader) {\n      calendar.emit('local::change calendarChange', calendar, value);\n    }\n\n    if ($el && $el.length > 0 && calendar.hasTimePicker) {\n      $el\n        .find('.calendar-time-selector a')\n        .text(\n          value && value.length\n            ? calendar.timeSelectorFormatter(value[0])\n            : calendar.params.timePickerPlaceholder,\n        );\n    }\n\n    if (($inputEl && $inputEl.length) || params.header) {\n      const inputValue = calendar.formatValue(value);\n      if (params.header && $el && $el.length) {\n        $el.find('.calendar-selected-date').text(inputValue);\n      }\n      if ($inputEl && $inputEl.length && !onlyHeader) {\n        $inputEl.val(inputValue);\n        $inputEl.trigger('change');\n      }\n    }\n  }\n\n  updateCurrentMonthYear(dir) {\n    const calendar = this;\n    const { $months, $el, monthNames } = calendar;\n    let currentLocaleMonth;\n    let currentLocaleYear;\n    if (typeof dir === 'undefined') {\n      calendar.currentMonth = parseInt($months.eq(1).attr('data-month'), 10);\n      calendar.currentYear = parseInt($months.eq(1).attr('data-year'), 10);\n      currentLocaleMonth = $months.eq(1).attr('data-locale-month');\n      currentLocaleYear = $months.eq(1).attr('data-locale-year');\n    } else {\n      calendar.currentMonth = parseInt(\n        $months.eq(dir === 'next' ? $months.length - 1 : 0).attr('data-month'),\n        10,\n      );\n      calendar.currentYear = parseInt(\n        $months.eq(dir === 'next' ? $months.length - 1 : 0).attr('data-year'),\n        10,\n      );\n      currentLocaleMonth = $months\n        .eq(dir === 'next' ? $months.length - 1 : 0)\n        .attr('data-locale-month');\n      currentLocaleYear = $months\n        .eq(dir === 'next' ? $months.length - 1 : 0)\n        .attr('data-locale-year');\n    }\n    $el.find('.current-month-value').text(monthNames[currentLocaleMonth]);\n    $el.find('.current-year-value').text(currentLocaleYear);\n  }\n\n  update() {\n    const calendar = this;\n    const { currentYear, currentMonth, $wrapperEl } = calendar;\n    const currentDate = new Date(currentYear, currentMonth);\n    const prevMonthHtml = calendar.renderMonth(currentDate, 'prev');\n    const currentMonthHtml = calendar.renderMonth(currentDate);\n    const nextMonthHtml = calendar.renderMonth(currentDate, 'next');\n\n    $wrapperEl\n      .transition(0)\n      .html(`${prevMonthHtml}${currentMonthHtml}${nextMonthHtml}`)\n      .transform('translate3d(0,0,0)');\n    calendar.$months = $wrapperEl.find('.calendar-month');\n    calendar.monthsTranslate = 0;\n    calendar.setMonthsTranslate();\n    calendar.$months.each((monthEl) => {\n      calendar.emit('local::monthAdd calendarMonthAdd', monthEl);\n    });\n  }\n\n  onMonthChangeStart(dir) {\n    const calendar = this;\n    const { $months, currentYear, currentMonth } = calendar;\n    calendar.updateCurrentMonthYear(dir);\n    $months.removeClass('calendar-month-current calendar-month-prev calendar-month-next');\n    const currentIndex = dir === 'next' ? $months.length - 1 : 0;\n\n    $months.eq(currentIndex).addClass('calendar-month-current');\n    $months\n      .eq(dir === 'next' ? currentIndex - 1 : currentIndex + 1)\n      .addClass(dir === 'next' ? 'calendar-month-prev' : 'calendar-month-next');\n\n    calendar.emit(\n      'local::monthYearChangeStart calendarMonthYearChangeStart',\n      calendar,\n      currentYear,\n      currentMonth,\n    );\n  }\n\n  onMonthChangeEnd(dir, rebuildBoth) {\n    const calendar = this;\n    const { currentYear, currentMonth, $wrapperEl, monthsTranslate } = calendar;\n    calendar.animating = false;\n    let nextMonthHtml;\n    let prevMonthHtml;\n    let currentMonthHtml;\n    $wrapperEl\n      .find(\n        '.calendar-month:not(.calendar-month-prev):not(.calendar-month-current):not(.calendar-month-next)',\n      )\n      .remove();\n\n    if (typeof dir === 'undefined') {\n      dir = 'next'; // eslint-disable-line\n      rebuildBoth = true; // eslint-disable-line\n    }\n    if (!rebuildBoth) {\n      currentMonthHtml = calendar.renderMonth(new Date(currentYear, currentMonth), dir);\n    } else {\n      $wrapperEl.find('.calendar-month-next, .calendar-month-prev').remove();\n      prevMonthHtml = calendar.renderMonth(new Date(currentYear, currentMonth), 'prev');\n      nextMonthHtml = calendar.renderMonth(new Date(currentYear, currentMonth), 'next');\n    }\n    if (dir === 'next' || rebuildBoth) {\n      $wrapperEl.append(currentMonthHtml || nextMonthHtml);\n    }\n    if (dir === 'prev' || rebuildBoth) {\n      $wrapperEl.prepend(currentMonthHtml || prevMonthHtml);\n    }\n    const $months = $wrapperEl.find('.calendar-month');\n    calendar.$months = $months;\n    calendar.setMonthsTranslate(monthsTranslate);\n    calendar.emit(\n      'local::monthAdd calendarMonthAdd',\n      calendar,\n      dir === 'next' ? $months.eq($months.length - 1)[0] : $months.eq(0)[0],\n    );\n    calendar.emit(\n      'local::monthYearChangeEnd calendarMonthYearChangeEnd',\n      calendar,\n      currentYear,\n      currentMonth,\n    );\n  }\n\n  setMonthsTranslate(translate) {\n    const calendar = this;\n    const { $months, isHorizontal: isH, inverter } = calendar;\n    // eslint-disable-next-line\n    translate = translate || calendar.monthsTranslate || 0;\n    if (typeof calendar.monthsTranslate === 'undefined') {\n      calendar.monthsTranslate = translate;\n    }\n    $months.removeClass('calendar-month-current calendar-month-prev calendar-month-next');\n    const prevMonthTranslate = -(translate + 1) * 100 * inverter;\n    const currentMonthTranslate = -translate * 100 * inverter;\n    const nextMonthTranslate = -(translate - 1) * 100 * inverter;\n    $months\n      .eq(0)\n      .transform(\n        `translate3d(${isH ? prevMonthTranslate : 0}%, ${isH ? 0 : prevMonthTranslate}%, 0)`,\n      )\n      .addClass('calendar-month-prev');\n    $months\n      .eq(1)\n      .transform(\n        `translate3d(${isH ? currentMonthTranslate : 0}%, ${isH ? 0 : currentMonthTranslate}%, 0)`,\n      )\n      .addClass('calendar-month-current');\n    $months\n      .eq(2)\n      .transform(\n        `translate3d(${isH ? nextMonthTranslate : 0}%, ${isH ? 0 : nextMonthTranslate}%, 0)`,\n      )\n      .addClass('calendar-month-next');\n  }\n\n  nextMonth(transition) {\n    const calendar = this;\n    const { params, $wrapperEl, inverter, isHorizontal: isH } = calendar;\n    if (typeof transition === 'undefined' || typeof transition === 'object') {\n      transition = ''; // eslint-disable-line\n      if (!params.animate) transition = 0; // eslint-disable-line\n    }\n    const nextMonth = parseInt(\n      calendar.$months.eq(calendar.$months.length - 1).attr('data-month'),\n      10,\n    );\n    const nextYear = parseInt(\n      calendar.$months.eq(calendar.$months.length - 1).attr('data-year'),\n      10,\n    );\n    const nextDate = new Date(nextYear, nextMonth);\n    const nextDateTime = nextDate.getTime();\n    const transitionEndCallback = !calendar.animating;\n    if (params.maxDate) {\n      if (nextDateTime > new Date(params.maxDate).getTime()) {\n        calendar.resetMonth();\n        return;\n      }\n    }\n    calendar.monthsTranslate -= 1;\n    if (nextMonth === calendar.currentMonth) {\n      const nextMonthTranslate = -calendar.monthsTranslate * 100 * inverter;\n      const nextMonthHtml = $(calendar.renderMonth(nextDateTime, 'next'))\n        .transform(\n          `translate3d(${isH ? nextMonthTranslate : 0}%, ${isH ? 0 : nextMonthTranslate}%, 0)`,\n        )\n        .addClass('calendar-month-next');\n      $wrapperEl.append(nextMonthHtml[0]);\n      calendar.$months = $wrapperEl.find('.calendar-month');\n      calendar.emit(\n        'local::monthAdd calendarMonthAdd',\n        calendar.$months.eq(calendar.$months.length - 1)[0],\n      );\n    }\n    calendar.animating = true;\n    calendar.onMonthChangeStart('next');\n    const translate = calendar.monthsTranslate * 100 * inverter;\n\n    $wrapperEl\n      .transition(transition)\n      .transform(`translate3d(${isH ? translate : 0}%, ${isH ? 0 : translate}%, 0)`);\n    if (transitionEndCallback) {\n      $wrapperEl.transitionEnd(() => {\n        calendar.onMonthChangeEnd('next');\n      });\n    }\n    if (!params.animate) {\n      calendar.onMonthChangeEnd('next');\n    }\n  }\n\n  prevMonth(transition) {\n    const calendar = this;\n    const { params, $wrapperEl, inverter, isHorizontal: isH } = calendar;\n    if (typeof transition === 'undefined' || typeof transition === 'object') {\n      transition = ''; // eslint-disable-line\n      if (!params.animate) transition = 0; // eslint-disable-line\n    }\n    const prevMonth = parseInt(calendar.$months.eq(0).attr('data-month'), 10);\n    const prevYear = parseInt(calendar.$months.eq(0).attr('data-year'), 10);\n    const prevDate = new Date(prevYear, prevMonth + 1, -1);\n    const prevDateTime = prevDate.getTime();\n    const transitionEndCallback = !calendar.animating;\n    if (params.minDate) {\n      let minDate = new Date(params.minDate);\n      minDate = new Date(minDate.getFullYear(), minDate.getMonth(), 1);\n      if (prevDateTime < minDate.getTime()) {\n        calendar.resetMonth();\n        return;\n      }\n    }\n    calendar.monthsTranslate += 1;\n    if (prevMonth === calendar.currentMonth) {\n      const prevMonthTranslate = -calendar.monthsTranslate * 100 * inverter;\n      const prevMonthHtml = $(calendar.renderMonth(prevDateTime, 'prev'))\n        .transform(\n          `translate3d(${isH ? prevMonthTranslate : 0}%, ${isH ? 0 : prevMonthTranslate}%, 0)`,\n        )\n        .addClass('calendar-month-prev');\n      $wrapperEl.prepend(prevMonthHtml[0]);\n      calendar.$months = $wrapperEl.find('.calendar-month');\n      calendar.emit('local::monthAdd calendarMonthAdd', calendar.$months.eq(0)[0]);\n    }\n    calendar.animating = true;\n    calendar.onMonthChangeStart('prev');\n    const translate = calendar.monthsTranslate * 100 * inverter;\n    $wrapperEl\n      .transition(transition)\n      .transform(`translate3d(${isH ? translate : 0}%, ${isH ? 0 : translate}%, 0)`);\n    if (transitionEndCallback) {\n      $wrapperEl.transitionEnd(() => {\n        calendar.onMonthChangeEnd('prev');\n      });\n    }\n    if (!params.animate) {\n      calendar.onMonthChangeEnd('prev');\n    }\n  }\n\n  resetMonth(transition = '') {\n    const calendar = this;\n    const { $wrapperEl, inverter, isHorizontal: isH, monthsTranslate } = calendar;\n    const translate = monthsTranslate * 100 * inverter;\n    $wrapperEl\n      .transition(transition)\n      .transform(`translate3d(${isH ? translate : 0}%, ${isH ? 0 : translate}%, 0)`);\n  }\n  // eslint-disable-next-line\n  setYearMonth(year, month, transition) {\n    const calendar = this;\n    const { params, isHorizontal: isH, $wrapperEl, inverter } = calendar;\n    // eslint-disable-next-line\n    if (typeof year === 'undefined') year = calendar.currentYear;\n    // eslint-disable-next-line\n    if (typeof month === 'undefined') month = calendar.currentMonth;\n    if (typeof transition === 'undefined' || typeof transition === 'object') {\n      // eslint-disable-next-line\n      transition = '';\n      // eslint-disable-next-line\n      if (!params.animate) transition = 0;\n    }\n    let targetDate;\n    if (year < calendar.currentYear) {\n      targetDate = new Date(year, month + 1, -1).getTime();\n    } else {\n      targetDate = new Date(year, month).getTime();\n    }\n    if (params.maxDate && targetDate > new Date(params.maxDate).getTime()) {\n      return false;\n    }\n    if (params.minDate) {\n      let minDate = new Date(params.minDate);\n      minDate = new Date(minDate.getFullYear(), minDate.getMonth(), 1);\n      if (targetDate < minDate.getTime()) {\n        return false;\n      }\n    }\n    const currentDate = new Date(calendar.currentYear, calendar.currentMonth).getTime();\n    const dir = targetDate > currentDate ? 'next' : 'prev';\n    const newMonthHTML = calendar.renderMonth(new Date(year, month));\n    calendar.monthsTranslate = calendar.monthsTranslate || 0;\n    const prevTranslate = calendar.monthsTranslate;\n    let monthTranslate;\n    const transitionEndCallback = !calendar.animating && transition !== 0;\n    if (targetDate > currentDate) {\n      // To next\n      calendar.monthsTranslate -= 1;\n      if (!calendar.animating) calendar.$months.eq(calendar.$months.length - 1).remove();\n      $wrapperEl.append(newMonthHTML);\n      calendar.$months = $wrapperEl.find('.calendar-month');\n      monthTranslate = -(prevTranslate - 1) * 100 * inverter;\n      calendar.$months\n        .eq(calendar.$months.length - 1)\n        .transform(`translate3d(${isH ? monthTranslate : 0}%, ${isH ? 0 : monthTranslate}%, 0)`)\n        .addClass('calendar-month-next');\n    } else {\n      // To prev\n      calendar.monthsTranslate += 1;\n      if (!calendar.animating) calendar.$months.eq(0).remove();\n      $wrapperEl.prepend(newMonthHTML);\n      calendar.$months = $wrapperEl.find('.calendar-month');\n      monthTranslate = -(prevTranslate + 1) * 100 * inverter;\n      calendar.$months\n        .eq(0)\n        .transform(`translate3d(${isH ? monthTranslate : 0}%, ${isH ? 0 : monthTranslate}%, 0)`)\n        .addClass('calendar-month-prev');\n    }\n    calendar.emit(\n      'local::monthAdd calendarMonthAdd',\n      dir === 'next'\n        ? calendar.$months.eq(calendar.$months.length - 1)[0]\n        : calendar.$months.eq(0)[0],\n    );\n\n    calendar.animating = true;\n    calendar.onMonthChangeStart(dir);\n    const wrapperTranslate = calendar.monthsTranslate * 100 * inverter;\n    $wrapperEl\n      .transition(transition)\n      .transform(`translate3d(${isH ? wrapperTranslate : 0}%, ${isH ? 0 : wrapperTranslate}%, 0)`);\n    if (transitionEndCallback) {\n      $wrapperEl.transitionEnd(() => {\n        calendar.onMonthChangeEnd(dir, true);\n      });\n    }\n    if (!params.animate || transition === 0) {\n      calendar.onMonthChangeEnd(dir, true);\n    }\n  }\n\n  nextYear() {\n    const calendar = this;\n    calendar.setYearMonth(calendar.currentYear + 1);\n  }\n\n  prevYear() {\n    const calendar = this;\n    calendar.setYearMonth(calendar.currentYear - 1);\n  }\n  // eslint-disable-next-line\n  dateInRange(dayDate, range) {\n    let match = false;\n    let i;\n    if (!range) return false;\n    if (Array.isArray(range)) {\n      for (i = 0; i < range.length; i += 1) {\n        if (range[i].from || range[i].to) {\n          if (range[i].from && range[i].to) {\n            if (\n              dayDate <= new Date(range[i].to).getTime() &&\n              dayDate >= new Date(range[i].from).getTime()\n            ) {\n              match = true;\n            }\n          } else if (range[i].from) {\n            if (dayDate >= new Date(range[i].from).getTime()) {\n              match = true;\n            }\n          } else if (range[i].to) {\n            if (dayDate <= new Date(range[i].to).getTime()) {\n              match = true;\n            }\n          }\n        } else if (range[i].date) {\n          if (dayDate === new Date(range[i].date).getTime()) {\n            match = true;\n          }\n        } else if (dayDate === new Date(range[i]).getTime()) {\n          match = true;\n        }\n      }\n    } else if (range.from || range.to) {\n      if (range.from && range.to) {\n        if (dayDate <= new Date(range.to).getTime() && dayDate >= new Date(range.from).getTime()) {\n          match = true;\n        }\n      } else if (range.from) {\n        if (dayDate >= new Date(range.from).getTime()) {\n          match = true;\n        }\n      } else if (range.to) {\n        if (dayDate <= new Date(range.to).getTime()) {\n          match = true;\n        }\n      }\n    } else if (range.date) {\n      match = dayDate === new Date(range.date).getTime();\n    } else if (typeof range === 'function') {\n      match = range(new Date(dayDate));\n    }\n    return match;\n  }\n  // eslint-disable-next-line\n  daysInMonth(date) {\n    const d = new Date(date);\n    return new Date(d.getFullYear(), d.getMonth() + 1, 0).getDate();\n  }\n\n  renderMonths(date) {\n    const calendar = this;\n    if (calendar.params.renderMonths) {\n      return calendar.params.renderMonths.call(calendar, date);\n    }\n    return (\n      <div class=\"calendar-months-wrapper\">\n        {calendar.renderMonth(date, 'prev')}\n        {calendar.renderMonth(date)}\n        {calendar.renderMonth(date, 'next')}\n      </div>\n    );\n  }\n\n  renderMonth(d, offset) {\n    const calendar = this;\n    const { params, value } = calendar;\n    if (params.renderMonth) {\n      return params.renderMonth.call(calendar, d, offset);\n    }\n    let date = new Date(d);\n    let year = date.getFullYear();\n    let month = date.getMonth();\n    let localeMonth = calendar.monthNames.indexOf(calendar.monthFormatter(date));\n    if (localeMonth < 0) localeMonth = month;\n    let localeYear = calendar.yearFormatter(date);\n\n    if (offset === 'next') {\n      if (month === 11) date = new Date(year + 1, 0);\n      else date = new Date(year, month + 1, 1);\n    }\n    if (offset === 'prev') {\n      if (month === 0) date = new Date(year - 1, 11);\n      else date = new Date(year, month - 1, 1);\n    }\n    if (offset === 'next' || offset === 'prev') {\n      month = date.getMonth();\n      year = date.getFullYear();\n      localeMonth = calendar.monthNames.indexOf(calendar.monthFormatter(date));\n      if (localeMonth < 0) localeMonth = month;\n      localeYear = calendar.yearFormatter(date);\n    }\n\n    const currentValues = [];\n    const today = new Date().setHours(0, 0, 0, 0);\n    const minDate = params.minDate ? new Date(params.minDate).getTime() : null;\n    const maxDate = params.maxDate ? new Date(params.maxDate).getTime() : null;\n    const rows = 6;\n    const cols = 7;\n    const daysInPrevMonth = calendar.daysInMonth(\n      new Date(date.getFullYear(), date.getMonth()).getTime() - 10 * 24 * 60 * 60 * 1000,\n    );\n    const daysInMonth = calendar.daysInMonth(date);\n    const minDayNumber = params.firstDay === 6 ? 0 : 1;\n\n    let monthHtml = '';\n    let dayIndex = 0 + (params.firstDay - 1);\n    let disabled;\n    let hasEvents;\n    let firstDayOfMonthIndex = new Date(date.getFullYear(), date.getMonth()).getDay();\n    if (firstDayOfMonthIndex === 0) firstDayOfMonthIndex = 7;\n\n    if (value && value.length) {\n      for (let i = 0; i < value.length; i += 1) {\n        currentValues.push(new Date(value[i]).setHours(0, 0, 0, 0));\n      }\n    }\n\n    for (let row = 1; row <= rows; row += 1) {\n      let rowHtml = '';\n      for (let col = 1; col <= cols; col += 1) {\n        dayIndex += 1;\n        let dayDate;\n        let dayNumber = dayIndex - firstDayOfMonthIndex;\n        let addClass = '';\n        if (row === 1 && col === 1 && dayNumber > minDayNumber && params.firstDay !== 1) {\n          dayIndex -= 7;\n          dayNumber = dayIndex - firstDayOfMonthIndex;\n        }\n\n        const weekDayIndex =\n          col - 1 + params.firstDay > 6 ? col - 1 - 7 + params.firstDay : col - 1 + params.firstDay;\n\n        if (dayNumber < 0) {\n          dayNumber = daysInPrevMonth + dayNumber + 1;\n          addClass += ' calendar-day-prev';\n          dayDate = new Date(\n            month - 1 < 0 ? year - 1 : year,\n            month - 1 < 0 ? 11 : month - 1,\n            dayNumber,\n          ).getTime();\n        } else {\n          dayNumber += 1;\n          if (dayNumber > daysInMonth) {\n            dayNumber -= daysInMonth;\n            addClass += ' calendar-day-next';\n            dayDate = new Date(\n              month + 1 > 11 ? year + 1 : year,\n              month + 1 > 11 ? 0 : month + 1,\n              dayNumber,\n            ).getTime();\n          } else {\n            dayDate = new Date(year, month, dayNumber).getTime();\n          }\n        }\n        // Today\n        if (dayDate === today) addClass += ' calendar-day-today';\n\n        // Selected\n        if (params.rangePicker && currentValues.length === 2) {\n          if (dayDate >= currentValues[0] && dayDate <= currentValues[1]) {\n            addClass += ' calendar-day-selected';\n          }\n          if (currentValues[0] !== currentValues[1]) {\n            if (dayDate > currentValues[0] && dayDate < currentValues[1]) {\n              addClass += ' calendar-day-selected-range';\n            }\n            if (dayDate === currentValues[0]) {\n              addClass += ' calendar-day-selected-left';\n            }\n            if (dayDate === currentValues[1]) {\n              addClass += ' calendar-day-selected-right';\n            }\n          }\n        } else if (currentValues.indexOf(dayDate) >= 0) addClass += ' calendar-day-selected';\n        // Weekend\n        if (params.weekendDays.indexOf(weekDayIndex) >= 0) {\n          addClass += ' calendar-day-weekend';\n        }\n        // Events\n        let eventsHtml = '';\n        hasEvents = false;\n        if (params.events) {\n          if (calendar.dateInRange(dayDate, params.events)) {\n            hasEvents = true;\n          }\n        }\n        if (hasEvents) {\n          addClass += ' calendar-day-has-events';\n          // prettier-ignore\n          eventsHtml = `\n            <span class=\"calendar-day-events\">\n              <span class=\"calendar-day-event\"></span>\n            </span>\n          `;\n          if (Array.isArray(params.events)) {\n            const eventDots = [];\n            params.events.forEach((ev) => {\n              const color = ev.color || '';\n              if (eventDots.indexOf(color) < 0 && calendar.dateInRange(dayDate, ev)) {\n                eventDots.push(color);\n              }\n            });\n            // prettier-ignore\n            eventsHtml = `\n              <span class=\"calendar-day-events\">\n                ${eventDots.map(color => `\n                  <span class=\"calendar-day-event\" style=\"${color ? `background-color: ${color}` : ''}\"></span>\n                `.trim()).join('')}\n              </span>\n            `;\n          }\n        }\n        // Custom Ranges\n        if (params.rangesClasses) {\n          for (let k = 0; k < params.rangesClasses.length; k += 1) {\n            if (calendar.dateInRange(dayDate, params.rangesClasses[k].range)) {\n              addClass += ` ${params.rangesClasses[k].cssClass}`;\n            }\n          }\n        }\n        // Disabled\n        disabled = false;\n        if ((minDate && dayDate < minDate) || (maxDate && dayDate > maxDate)) {\n          disabled = true;\n        }\n        if (params.disabled) {\n          if (calendar.dateInRange(dayDate, params.disabled)) {\n            disabled = true;\n          }\n        }\n        if (disabled) {\n          addClass += ' calendar-day-disabled';\n        }\n\n        dayDate = new Date(dayDate);\n        const dayYear = dayDate.getFullYear();\n        const dayMonth = dayDate.getMonth();\n        const dayNumberDisplay = calendar.dayFormatter(dayDate);\n        // prettier-ignore\n        rowHtml += `\n          <div data-year=\"${dayYear}\" data-month=\"${dayMonth}\" data-day=\"${dayNumber}\" class=\"calendar-day${addClass}\" data-date=\"${dayYear}-${dayMonth}-${dayNumber}\">\n            <span class=\"calendar-day-number\">${dayNumberDisplay}${eventsHtml}</span>\n          </div>`.trim();\n      }\n      monthHtml += `<div class=\"calendar-row\">${rowHtml}</div>`;\n    }\n    monthHtml = `<div class=\"calendar-month\" data-year=\"${year}\" data-month=\"${month}\" data-locale-year=\"${localeYear}\" data-locale-month=\"${localeMonth}\">${monthHtml}</div>`;\n    return monthHtml;\n  }\n\n  renderWeekHeader() {\n    const calendar = this;\n    if (calendar.params.renderWeekHeader) {\n      return calendar.params.renderWeekHeader.call(calendar);\n    }\n    const { params } = calendar;\n    let weekDaysHtml = '';\n    for (let i = 0; i < 7; i += 1) {\n      const dayIndex = i + params.firstDay > 6 ? i - 7 + params.firstDay : i + params.firstDay;\n      const dayName = calendar.dayNamesShort[dayIndex];\n      weekDaysHtml += `<div class=\"calendar-week-day\">${dayName}</div>`;\n    }\n    return <div class=\"calendar-week-header\">{weekDaysHtml}</div>;\n  }\n\n  renderMonthSelector() {\n    const calendar = this;\n    if (calendar.params.renderMonthSelector) {\n      return calendar.params.renderMonthSelector.call(calendar);\n    }\n    return (\n      <div class=\"calendar-month-selector\">\n        <a class=\"link icon-only calendar-prev-month-button\">\n          <i class=\"icon icon-prev\"></i>\n        </a>\n        {calendar.params.monthPicker ? (\n          <a class=\"current-month-value link\"></a>\n        ) : (\n          <span class=\"current-month-value\"></span>\n        )}\n        <a class=\"link icon-only calendar-next-month-button\">\n          <i class=\"icon icon-next\"></i>\n        </a>\n      </div>\n    );\n  }\n\n  renderYearSelector() {\n    const calendar = this;\n    if (calendar.params.renderYearSelector) {\n      return calendar.params.renderYearSelector.call(calendar);\n    }\n    return (\n      <div class=\"calendar-year-selector\">\n        <a class=\"link icon-only calendar-prev-year-button\">\n          <i class=\"icon icon-prev\"></i>\n        </a>\n        {calendar.params.yearPicker ? (\n          <a class=\"current-year-value link\"></a>\n        ) : (\n          <span class=\"current-year-value\"></span>\n        )}\n        <a class=\"link icon-only calendar-next-year-button\">\n          <i class=\"icon icon-next\"></i>\n        </a>\n      </div>\n    );\n  }\n\n  // eslint-disable-next-line\n  renderTimeSelector() {\n    const calendar = this;\n    const value = calendar.value && calendar.value[0];\n    let timeString;\n    if (value) timeString = calendar.timeSelectorFormatter(value);\n    return (\n      <div class=\"calendar-time-selector\">\n        <span>{calendar.params.timePickerLabel}</span>\n        <a class=\"link\">{timeString || calendar.params.timePickerPlaceholder}</a>\n      </div>\n    );\n  }\n\n  renderHeader() {\n    const calendar = this;\n    if (calendar.params.renderHeader) {\n      return calendar.params.renderHeader.call(calendar);\n    }\n    return (\n      <div class=\"calendar-header\">\n        <div class=\"calendar-selected-date\">{calendar.params.headerPlaceholder}</div>\n      </div>\n    );\n  }\n\n  renderFooter() {\n    const calendar = this;\n    const app = calendar.app;\n    if (calendar.params.renderFooter) {\n      return calendar.params.renderFooter.call(calendar);\n    }\n    return (\n      <div class=\"calendar-footer\">\n        <a\n          class={`${\n            app.theme === 'md' ? 'button button-round' : 'link'\n          } calendar-close sheet-close popover-close`}\n        >\n          {calendar.params.toolbarCloseText}\n        </a>\n      </div>\n    );\n  }\n\n  renderToolbar() {\n    const calendar = this;\n    if (calendar.params.renderToolbar) {\n      return calendar.params.renderToolbar.call(calendar, calendar);\n    }\n    // prettier-ignore\n    return (\n    <div class=\"toolbar toolbar-top\">\n      <div class=\"toolbar-inner\">\n        {calendar.params.monthSelector ? calendar.renderMonthSelector() : ''}\n        {calendar.params.yearSelector ? calendar.renderYearSelector() : ''}\n      </div>\n    </div>\n    );\n  }\n  // eslint-disable-next-line\n  renderInline() {\n    const calendar = this;\n    const { cssClass, toolbar, header, footer, rangePicker, weekHeader } = calendar.params;\n    const { value, hasTimePicker } = calendar;\n    const date = value && value.length ? value[0] : new Date().setHours(0, 0, 0);\n    return (\n      <div\n        class={`calendar calendar-inline ${rangePicker ? 'calendar-range' : ''} ${cssClass || ''}`}\n      >\n        {header && calendar.renderHeader()}\n        {toolbar && calendar.renderToolbar()}\n        {weekHeader && calendar.renderWeekHeader()}\n        <div class=\"calendar-months\">{calendar.renderMonths(date)}</div>\n        {hasTimePicker && calendar.renderTimeSelector()}\n        {footer && calendar.renderFooter()}\n      </div>\n    );\n  }\n\n  renderCustomModal() {\n    const calendar = this;\n    const { cssClass, toolbar, header, footer, rangePicker, weekHeader } = calendar.params;\n    const { value, hasTimePicker } = calendar;\n    const date = value && value.length ? value[0] : new Date().setHours(0, 0, 0);\n    return (\n      <div\n        class={`calendar calendar-modal ${rangePicker ? 'calendar-range' : ''} ${cssClass || ''}`}\n      >\n        {header && calendar.renderHeader()}\n        {toolbar && calendar.renderToolbar()}\n        {weekHeader && calendar.renderWeekHeader()}\n        <div class=\"calendar-months\">{calendar.renderMonths(date)}</div>\n        {hasTimePicker && calendar.renderTimeSelector()}\n        {footer && calendar.renderFooter()}\n      </div>\n    );\n  }\n\n  renderSheet() {\n    const calendar = this;\n    const { cssClass, toolbar, header, footer, rangePicker, weekHeader } = calendar.params;\n    const { value, hasTimePicker } = calendar;\n    const date = value && value.length ? value[0] : new Date().setHours(0, 0, 0);\n    return (\n      <div\n        class={`sheet-modal calendar calendar-sheet ${rangePicker ? 'calendar-range' : ''} ${\n          cssClass || ''\n        }`}\n      >\n        {header && calendar.renderHeader()}\n        {toolbar && calendar.renderToolbar()}\n        {weekHeader && calendar.renderWeekHeader()}\n        <div class=\"sheet-modal-inner calendar-months\">{calendar.renderMonths(date)}</div>\n        {hasTimePicker && calendar.renderTimeSelector()}\n        {footer && calendar.renderFooter()}\n      </div>\n    );\n  }\n\n  renderPopover() {\n    const calendar = this;\n    const { cssClass, toolbar, header, footer, rangePicker, weekHeader } = calendar.params;\n    const { value, hasTimePicker } = calendar;\n    const date = value && value.length ? value[0] : new Date().setHours(0, 0, 0);\n    return (\n      <div class=\"popover calendar-popover\">\n        <div class=\"popover-inner\">\n          <div class={`calendar ${rangePicker ? 'calendar-range' : ''} ${cssClass || ''}`}>\n            {header && calendar.renderHeader()}\n            {toolbar && calendar.renderToolbar()}\n            {weekHeader && calendar.renderWeekHeader()}\n            <div class=\"calendar-months\">{calendar.renderMonths(date)}</div>\n            {hasTimePicker && calendar.renderTimeSelector()}\n            {footer && calendar.renderFooter()}\n          </div>\n        </div>\n      </div>\n    );\n  }\n\n  render() {\n    const calendar = this;\n    const { params } = calendar;\n    if (params.render) return params.render.call(calendar);\n    if (!calendar.inline) {\n      let modalType = params.openIn;\n      if (modalType === 'auto') modalType = calendar.isPopover() ? 'popover' : 'sheet';\n\n      if (modalType === 'popover') return calendar.renderPopover();\n      if (modalType === 'sheet') return calendar.renderSheet();\n      return calendar.renderCustomModal();\n    }\n    return calendar.renderInline();\n  }\n\n  openMonthPicker() {\n    const calendar = this;\n    const { $el, app } = calendar;\n    if (!$el || !$el.length) return;\n\n    $el.append(\n      '<div class=\"popover calendar-popover calendar-month-picker-popover\"><div class=\"popover-inner\"><div class=\"calendar-month-picker\"></div></div></div>',\n    );\n\n    calendar.monthPickerPopover = app.popover.create({\n      el: $el.find('.calendar-month-picker-popover'),\n      targetEl: $el.find('.calendar-month-selector'),\n      backdrop: true,\n      backdropUnique: true,\n      on: {\n        close() {\n          calendar.closeMonthPicker();\n        },\n        closed() {\n          if (calendar.monthPickerPopover.$el) calendar.monthPickerPopover.$el.remove();\n          calendar.monthPickerPopover.destroy();\n          if (calendar.monthPickerInstance) {\n            calendar.monthPickerInstance.close();\n            calendar.monthPickerInstance.destroy();\n          }\n          delete calendar.monthPickerInstance;\n          delete calendar.monthPickerPopover;\n        },\n      },\n    });\n    calendar.monthPickerPopover.open();\n\n    const localeMonth = parseInt(\n      calendar.$el.find('.calendar-month-current').attr('data-locale-month'),\n      10,\n    );\n\n    const values = [];\n    const displayValues = [];\n    calendar.monthNames.forEach((m, index) => {\n      values.push(index);\n      displayValues.push(m);\n    });\n\n    calendar.monthPickerInstance = app.picker.create({\n      containerEl: calendar.monthPickerPopover.$el.find('.calendar-month-picker'),\n      value: [localeMonth],\n      toolbar: calendar.params.monthPickerToolbar,\n      rotateEffect: false,\n      toolbarCloseText: calendar.params.monthPickerCloseText,\n      cols: [\n        {\n          values,\n          displayValues,\n        },\n      ],\n    });\n  }\n\n  closeMonthPicker() {\n    const calendar = this;\n    if (calendar.monthPickerPopover && calendar.monthPickerPopover.opened)\n      calendar.monthPickerPopover.close();\n\n    const index = calendar.monthPickerInstance.value[0];\n    const localeMonthIndex = parseInt(\n      calendar.$el.find('.calendar-month-current').attr('data-locale-month'),\n      10,\n    );\n    const monthIndex = calendar.currentMonth;\n    const diff = localeMonthIndex - monthIndex;\n    const diffIndex = index - diff;\n    calendar.setYearMonth(calendar.currentYear, diffIndex, 0);\n  }\n\n  openYearPicker() {\n    const calendar = this;\n    const { $el, app } = calendar;\n    if (!$el || !$el.length) return;\n\n    $el.append(\n      '<div class=\"popover calendar-popover calendar-year-picker-popover\"><div class=\"popover-inner\"><div class=\"calendar-year-picker\"></div></div></div>',\n    );\n\n    calendar.yearPickerPopover = app.popover.create({\n      el: $el.find('.calendar-year-picker-popover'),\n      targetEl: $el.find('.calendar-year-selector'),\n      backdrop: true,\n      backdropUnique: true,\n      on: {\n        close() {\n          calendar.closeYearPicker();\n        },\n        closed() {\n          if (calendar.yearPickerPopover.$el) calendar.yearPickerPopover.$el.remove();\n          calendar.yearPickerPopover.destroy();\n          if (calendar.yearPickerInstance) {\n            calendar.yearPickerInstance.close();\n            calendar.yearPickerInstance.destroy();\n          }\n          delete calendar.yearPickerInstance;\n          delete calendar.yearPickerPopover;\n        },\n      },\n    });\n    calendar.yearPickerPopover.open();\n\n    const currentYear = calendar.currentYear;\n    let yearMin = calendar.params.yearPickerMin || new Date().getFullYear() - 100;\n    if (calendar.params.minDate) {\n      yearMin = Math.max(yearMin, new Date(calendar.params.minDate).getFullYear());\n    }\n    let yearMax = calendar.params.yearPickerMax || new Date().getFullYear() + 100;\n    if (calendar.params.maxDate) {\n      yearMax = Math.min(yearMax, new Date(calendar.params.maxDate).getFullYear());\n    }\n    const years = [];\n    for (let i = yearMin; i <= yearMax; i += 1) {\n      years.push(i);\n    }\n\n    calendar.yearPickerInstance = app.picker.create({\n      containerEl: calendar.yearPickerPopover.$el.find('.calendar-year-picker'),\n      value: [currentYear],\n      toolbar: calendar.params.yearPickerToolbar,\n      rotateEffect: false,\n      toolbarCloseText: calendar.params.yearPickerCloseText,\n      cols: [\n        {\n          values: years,\n        },\n      ],\n    });\n  }\n\n  closeYearPicker() {\n    const calendar = this;\n    if (calendar.yearPickerPopover && calendar.yearPickerPopover.opened)\n      calendar.yearPickerPopover.close();\n    calendar.setYearMonth(calendar.yearPickerInstance.value[0], undefined, 0);\n  }\n\n  openTimePicker() {\n    const calendar = this;\n    const { $el, app, is12HoursFormat } = calendar;\n    if (!$el || !$el.length) return;\n    $el.append(\n      '<div class=\"popover calendar-popover calendar-time-picker-popover\"><div class=\"popover-inner\"><div class=\"calendar-time-picker\"></div></div></div>',\n    );\n    const hoursArr = [];\n    const minutesArr = [];\n    const hoursMin = is12HoursFormat ? 1 : 0;\n    const hoursMax = is12HoursFormat ? 12 : 23;\n    for (let i = hoursMin; i <= hoursMax; i += 1) {\n      hoursArr.push(i);\n    }\n    for (let i = 0; i <= 59; i += 1) {\n      minutesArr.push(i);\n    }\n    let value;\n    if (calendar.value && calendar.value.length) {\n      value = [calendar.value[0].getHours(), calendar.value[0].getMinutes()];\n    } else {\n      value = [new Date().getHours(), new Date().getMinutes()];\n    }\n    if (is12HoursFormat) {\n      value.push(value[0] < 12 ? 'AM' : 'PM');\n      if (value[0] > 12) value[0] -= 12;\n      if (value[0] === 0) value[0] = 12;\n    }\n    calendar.timePickerPopover = app.popover.create({\n      el: $el.find('.calendar-time-picker-popover'),\n      targetEl: $el.find('.calendar-time-selector .link'),\n      backdrop: true,\n      backdropUnique: true,\n      on: {\n        close() {\n          calendar.closeTimePicker();\n        },\n        closed() {\n          if (calendar.timePickerPopover.$el) calendar.timePickerPopover.$el.remove();\n          calendar.timePickerPopover.destroy();\n          if (calendar.timePickerInstance) {\n            calendar.timePickerInstance.close();\n            calendar.timePickerInstance.destroy();\n          }\n          delete calendar.timePickerInstance;\n          delete calendar.timePickerPopover;\n        },\n      },\n    });\n    calendar.timePickerPopover.open();\n    calendar.timePickerInstance = app.picker.create({\n      containerEl: calendar.timePickerPopover.$el.find('.calendar-time-picker'),\n      value,\n      toolbar: calendar.params.timePickerToolbar,\n      rotateEffect: false,\n      toolbarCloseText: calendar.params.timePickerCloseText,\n      cols: [\n        {\n          values: hoursArr,\n        },\n        {\n          divider: true,\n          content: ':',\n        },\n        {\n          values: minutesArr,\n          displayValues: minutesArr.map((m) => (m < 10 ? `0${m}` : m)),\n        },\n        ...(is12HoursFormat\n          ? [\n              {\n                values: ['AM', 'PM'],\n              },\n            ]\n          : []),\n      ],\n    });\n  }\n\n  closeTimePicker() {\n    const calendar = this;\n    const { is12HoursFormat } = calendar;\n    if (calendar.timePickerInstance) {\n      const timePickerValue = calendar.timePickerInstance.value;\n      let hours = parseInt(timePickerValue[0], 10);\n      const minutes = parseInt(timePickerValue[1], 10);\n      const period = calendar.timePickerInstance.value[2];\n      if (is12HoursFormat) {\n        if (period === 'AM' && hours === 12) {\n          hours = 0;\n        } else if (period === 'PM' && hours !== 12) {\n          hours += 12;\n        }\n      }\n\n      let value = calendar.value && calendar.value.length && calendar.value[0];\n      if (!value) {\n        value = new Date();\n        value.setHours(hours, minutes, 0, 0);\n      } else {\n        value = new Date(value);\n        value.setHours(hours, minutes);\n      }\n      calendar.setValue([value]);\n      if (calendar.timePickerPopover && calendar.timePickerPopover.opened)\n        calendar.timePickerPopover.close();\n    }\n  }\n\n  onOpen() {\n    const calendar = this;\n    const { initialized, $el, app, $inputEl, inline, value, params } = calendar;\n    calendar.closing = false;\n    calendar.opened = true;\n    calendar.opening = true;\n\n    // Init main events\n    calendar.attachCalendarEvents();\n\n    const updateValue = !value && params.value;\n\n    // Set value\n    if (!initialized) {\n      if (value) calendar.setValue(value, 0);\n      else if (params.value) {\n        calendar.setValue(calendar.normalizeValues(params.value), 0);\n      }\n    } else if (value) {\n      calendar.setValue(value, 0);\n    }\n\n    // Update current month and year\n    calendar.updateCurrentMonthYear();\n\n    // Set initial translate\n    calendar.monthsTranslate = 0;\n    calendar.setMonthsTranslate();\n\n    // Update input value\n    if (updateValue) calendar.updateValue();\n    else if (params.header && value) {\n      calendar.updateValue(true);\n    }\n\n    // Extra focus\n    if (!inline && $inputEl && $inputEl.length && app.theme === 'md') {\n      $inputEl.trigger('focus');\n    }\n\n    calendar.initialized = true;\n\n    calendar.$months.each((monthEl) => {\n      calendar.emit('local::monthAdd calendarMonthAdd', monthEl);\n    });\n\n    // Trigger events\n    if ($el) {\n      $el.trigger('calendar:open');\n    }\n    if ($inputEl) {\n      $inputEl.trigger('calendar:open');\n    }\n    calendar.emit('local::open calendarOpen', calendar);\n  }\n\n  onOpened() {\n    const calendar = this;\n    calendar.opening = false;\n    if (calendar.$el) {\n      calendar.$el.trigger('calendar:opened');\n    }\n    if (calendar.$inputEl) {\n      calendar.$inputEl.trigger('calendar:opened');\n    }\n    calendar.emit('local::opened calendarOpened', calendar);\n  }\n\n  onClose() {\n    const calendar = this;\n    const app = calendar.app;\n    calendar.opening = false;\n    calendar.closing = true;\n\n    if (calendar.$inputEl) {\n      if (app.theme === 'md') {\n        calendar.$inputEl.trigger('blur');\n      } else {\n        const validate = calendar.$inputEl.attr('validate');\n        const required = calendar.$inputEl.attr('required');\n        if (validate && required) {\n          app.input.validate(calendar.$inputEl);\n        }\n      }\n    }\n    if (calendar.detachCalendarEvents) {\n      calendar.detachCalendarEvents();\n    }\n\n    if (calendar.$el) {\n      calendar.$el.trigger('calendar:close');\n    }\n    if (calendar.$inputEl) {\n      calendar.$inputEl.trigger('calendar:close');\n    }\n    calendar.emit('local::close calendarClose', calendar);\n  }\n\n  onClosed() {\n    const calendar = this;\n    calendar.opened = false;\n    calendar.closing = false;\n\n    if (!calendar.inline) {\n      nextTick(() => {\n        if (calendar.modal && calendar.modal.el && calendar.modal.destroy) {\n          if (!calendar.params.routableModals) {\n            calendar.modal.destroy();\n          }\n        }\n        delete calendar.modal;\n      });\n    }\n    if (calendar.timePickerInstance) {\n      if (calendar.timePickerInstance.destroy) calendar.timePickerInstance.destroy();\n      delete calendar.timePickerInstance;\n    }\n    if (calendar.$el) {\n      calendar.$el.trigger('calendar:closed');\n    }\n    if (calendar.$inputEl) {\n      calendar.$inputEl.trigger('calendar:closed');\n    }\n    calendar.emit('local::closed calendarClosed', calendar);\n  }\n\n  open() {\n    const calendar = this;\n    const { app, opened, inline, $inputEl, params } = calendar;\n    if (opened) return;\n\n    if (inline) {\n      calendar.$el = $(calendar.render());\n      calendar.$el[0].f7Calendar = calendar;\n      calendar.$wrapperEl = calendar.$el.find('.calendar-months-wrapper');\n      calendar.$months = calendar.$wrapperEl.find('.calendar-month');\n      calendar.$containerEl.append(calendar.$el);\n      calendar.onOpen();\n      calendar.onOpened();\n      return;\n    }\n    let modalType = params.openIn;\n    if (modalType === 'auto') {\n      modalType = calendar.isPopover() ? 'popover' : 'sheet';\n    }\n    const modalContent = calendar.render();\n\n    const modalParams = {\n      targetEl: $inputEl,\n      scrollToEl: params.scrollToInput ? $inputEl : undefined,\n      content: modalContent,\n      backdrop:\n        params.backdrop === true ||\n        ((modalType === 'popover' || modalType === 'customModal') &&\n          app.params.popover.backdrop !== false &&\n          params.backdrop !== false),\n      closeByBackdropClick: params.closeByBackdropClick,\n      on: {\n        open() {\n          const modal = this;\n          calendar.modal = modal;\n          calendar.$el = modalType === 'popover' ? modal.$el.find('.calendar') : modal.$el;\n          calendar.$wrapperEl = calendar.$el.find('.calendar-months-wrapper');\n          calendar.$months = calendar.$wrapperEl.find('.calendar-month');\n          calendar.$el[0].f7Calendar = calendar;\n          if (modalType === 'customModal') {\n            $(calendar.$el)\n              .find('.calendar-close')\n              .once('click', () => {\n                calendar.close();\n              });\n          }\n          calendar.onOpen();\n        },\n        opened() {\n          calendar.onOpened();\n        },\n        close() {\n          calendar.onClose();\n        },\n        closed() {\n          calendar.onClosed();\n        },\n      },\n    };\n    if (modalType === 'sheet') {\n      modalParams.push = params.sheetPush;\n      modalParams.swipeToClose = params.sheetSwipeToClose;\n    }\n    if (params.routableModals && calendar.view) {\n      calendar.view.router.navigate({\n        url: calendar.url,\n        route: {\n          path: calendar.url,\n          [modalType]: modalParams,\n        },\n      });\n    } else {\n      calendar.modal = app[modalType].create(modalParams);\n      calendar.modal.open();\n    }\n  }\n\n  close() {\n    const calendar = this;\n    const { opened, inline } = calendar;\n    if (!opened) return;\n    if (inline) {\n      calendar.onClose();\n      calendar.onClosed();\n      return;\n    }\n    if (calendar.params.routableModals && calendar.view) {\n      calendar.view.router.back();\n    } else {\n      calendar.modal.close();\n    }\n  }\n\n  init() {\n    const calendar = this;\n\n    calendar.initInput();\n\n    if (calendar.inline) {\n      calendar.open();\n      calendar.emit('local::init calendarInit', calendar);\n      return;\n    }\n\n    if (!calendar.initialized && calendar.params.value) {\n      calendar.setValue(calendar.normalizeValues(calendar.params.value));\n    }\n\n    // Attach input Events\n    if (calendar.$inputEl) {\n      calendar.attachInputEvents();\n    }\n    if (calendar.params.closeByOutsideClick) {\n      calendar.attachHtmlEvents();\n    }\n    calendar.emit('local::init calendarInit', calendar);\n  }\n\n  destroy() {\n    const calendar = this;\n    if (calendar.destroyed) return;\n    const { $el } = calendar;\n    calendar.emit('local::beforeDestroy calendarBeforeDestroy', calendar);\n    if ($el) $el.trigger('calendar:beforedestroy');\n\n    calendar.close();\n\n    // Detach Events\n    if (calendar.$inputEl) {\n      calendar.detachInputEvents();\n    }\n    if (calendar.params.closeByOutsideClick) {\n      calendar.detachHtmlEvents();\n    }\n\n    if (calendar.timePickerInstance) {\n      if (calendar.timePickerInstance.destroy) calendar.timePickerInstance.destroy();\n      delete calendar.timePickerInstance;\n    }\n\n    if ($el && $el.length) delete calendar.$el[0].f7Calendar;\n    deleteProps(calendar);\n    calendar.destroyed = true;\n  }\n}\n\nexport default Calendar;\n","import ConstructorMethods from '../../shared/constructor-methods.js';\nimport Calendar from './calendar-class.js';\nimport $ from '../../shared/dom7.js';\n\nexport default {\n  name: 'calendar',\n  static: {\n    Calendar,\n  },\n  create() {\n    const app = this;\n    app.calendar = ConstructorMethods({\n      defaultSelector: '.calendar',\n      constructor: Calendar,\n      app,\n      domProp: 'f7Calendar',\n    });\n    app.calendar.close = function close(el = '.calendar') {\n      const $el = $(el);\n      if ($el.length === 0) return;\n      const calendar = $el[0].f7Calendar;\n      if (!calendar || (calendar && !calendar.opened)) return;\n      calendar.close();\n    };\n  },\n  params: {\n    calendar: {\n      // Calendar settings\n      dateFormat: undefined,\n      monthNames: 'auto',\n      monthNamesShort: 'auto',\n      dayNames: 'auto',\n      dayNamesShort: 'auto',\n      locale: undefined,\n      firstDay: 1, // First day of the week, Monday\n      weekendDays: [0, 6], // Sunday and Saturday\n      multiple: false,\n      rangePicker: false,\n      rangePickerMinDays: 1, // when calendar is used as rangePicker\n      rangePickerMaxDays: 0, // when calendar is used as rangePicker, 0 means unlimited\n      direction: 'horizontal', // or 'vertical'\n      minDate: null,\n      maxDate: null,\n      disabled: null, // dates range of disabled days\n      events: null, // dates range of days with events\n      rangesClasses: null, // array with custom classes date ranges\n      touchMove: true,\n      animate: true,\n      closeOnSelect: false,\n      monthSelector: true,\n      monthPicker: true,\n      monthPickerToolbar: true,\n      monthPickerCloseText: 'Done',\n      yearSelector: true,\n      yearPicker: true,\n      yearPickerToolbar: true,\n      yearPickerMin: undefined,\n      yearPickerMax: undefined,\n      yearPickerCloseText: 'Done',\n      timePicker: false,\n      timePickerToolbar: true,\n      timePickerLabel: 'Time',\n      timePickerFormat: { hour: 'numeric', minute: 'numeric' },\n      timePickerPlaceholder: 'Select time',\n      timePickerCloseText: 'Done',\n      weekHeader: true,\n      value: null,\n      // Common opener settings\n      containerEl: null,\n      openIn: 'auto', // or 'popover' or 'sheet' or 'customModal'\n      sheetPush: false,\n      sheetSwipeToClose: undefined,\n      formatValue: null,\n      inputEl: null,\n      inputReadOnly: true,\n      closeByOutsideClick: true,\n      scrollToInput: true,\n      header: false,\n      headerPlaceholder: 'Select date',\n      toolbar: true,\n      toolbarCloseText: 'Done',\n      footer: false,\n      cssClass: null,\n      routableModals: false,\n      view: null,\n      url: 'date/',\n      backdrop: null,\n      closeByBackdropClick: true,\n      // Render functions\n      renderWeekHeader: null,\n      renderMonths: null,\n      renderMonth: null,\n      renderMonthSelector: null,\n      renderYearSelector: null,\n      renderHeader: null,\n      renderFooter: null,\n      renderToolbar: null,\n      renderInline: null,\n      renderPopover: null,\n      renderSheet: null,\n      render: null,\n    },\n  },\n};\n","import $ from '../../shared/dom7.js';\n\nexport default function pickerColumn(colEl, updateItems) {\n  const picker = this;\n  // const app = picker.app;\n  const $colEl = $(colEl);\n  const colIndex = $colEl.index();\n  const col = picker.cols[colIndex];\n  if (col.divider) return;\n\n  col.$el = $colEl;\n  col.el = $colEl[0];\n  col.$itemsEl = col.$el.find('.picker-items');\n  col.items = col.$itemsEl.find('.picker-item');\n\n  let itemHeight;\n  let colHeight;\n\n  col.replaceValues = function replaceColValues(values, displayValues) {\n    col.detachEvents();\n    col.values = values;\n    col.displayValues = displayValues;\n    col.$itemsEl.html(picker.renderColumn(col, true));\n    col.items = col.$itemsEl.find('.picker-item');\n    col.calcSize();\n    col.setValue(col.values[0], true);\n    col.attachEvents();\n  };\n  col.calcSize = function calcColSize() {\n    colHeight = col.$el[0].offsetHeight;\n    itemHeight = col.items[0].offsetHeight;\n\n    const hadPadding = col.el.style.getPropertyValue('--f7-picker-scroll-padding');\n    col.el.style.setProperty('--f7-picker-scroll-padding', `${(colHeight - itemHeight) / 2}px`);\n    if (!hadPadding) {\n      col.$itemsEl[0].scrollTop = 0;\n    }\n  };\n\n  col.setValue = function setColValue(newValue, valueCallbacks) {\n    const newActiveIndex = col.$itemsEl\n      .find(`.picker-item[data-picker-value=\"${newValue}\"]`)\n      .index();\n    if (typeof newActiveIndex === 'undefined' || newActiveIndex === -1) {\n      return;\n    }\n    const newScrollTop = newActiveIndex * itemHeight;\n    col.$itemsEl[0].scrollTop = newScrollTop;\n\n    // Update items\n    col.updateItems(newActiveIndex, newScrollTop, valueCallbacks);\n  };\n\n  col.updateItems = function updateColItems(activeIndex, scrollTop, valueCallbacks) {\n    if (typeof scrollTop === 'undefined') {\n      // eslint-disable-next-line\n      scrollTop = col.$itemsEl[0].scrollTop;\n    }\n\n    /* eslint-disable no-param-reassign */\n    if (typeof activeIndex === 'undefined') {\n      activeIndex = Math.round(scrollTop / itemHeight);\n    }\n    if (activeIndex < 0) activeIndex = 0;\n    if (activeIndex >= col.items.length) activeIndex = col.items.length - 1;\n    /* eslint-enable no-param-reassign */\n    const previousActiveIndex = col.activeIndex;\n    col.activeIndex = activeIndex;\n    col.$itemsEl.find('.picker-item-selected').removeClass('picker-item-selected');\n\n    const selectedItem = col.items.eq(activeIndex);\n    selectedItem.addClass('picker-item-selected').children().transform('');\n    // Set 3D rotate effect\n    if (picker.params.rotateEffect) {\n      col.items.each((itemEl) => {\n        const $itemEl = $(itemEl);\n\n        const itemOffset = itemEl.offsetTop - (colHeight - itemHeight) / 2 - scrollTop;\n        const percentage = itemOffset / itemHeight;\n        const itemsFit = Math.ceil(col.height / itemHeight / 2) + 1;\n\n        let angle = -24 * percentage;\n        if (angle > 180) angle = 180;\n        if (angle < -180) angle = -180;\n        if (Math.abs(percentage) > itemsFit) {\n          $itemEl.addClass('picker-item-far');\n        } else {\n          $itemEl.removeClass('picker-item-far');\n        }\n        $itemEl\n          .children('span')\n          .transform(`translate3d(0, ${-percentage * itemHeight}px, -100px) rotateX(${angle}deg)`);\n      });\n    }\n\n    if (valueCallbacks || typeof valueCallbacks === 'undefined') {\n      // Update values\n      col.value = selectedItem.attr('data-picker-value');\n      col.displayValue = col.displayValues ? col.displayValues[activeIndex] : col.value;\n      // On change callback\n      if (previousActiveIndex !== activeIndex) {\n        if (col.onChange) {\n          col.onChange(picker, col.value, col.displayValue);\n        }\n        picker.updateValue();\n      }\n    }\n  };\n\n  function handleScroll() {\n    col.updateItems();\n  }\n\n  function handleClick() {\n    const value = $(this).attr('data-picker-value');\n    col.setValue(value);\n  }\n\n  col.attachEvents = function attachColEvents() {\n    col.$itemsEl.on('scroll', handleScroll);\n    col.items.on('click', handleClick);\n  };\n  col.detachEvents = function detachColEvents() {\n    col.items.off('click', handleClick);\n  };\n\n  col.init = function initCol() {\n    col.calcSize();\n    if (colIndex === 0) col.$el.addClass('picker-column-first');\n    if (colIndex === picker.cols.length - 1) col.$el.addClass('picker-column-last');\n    if (picker.params.freeMode) col.$el.addClass('picker-column-free-mode');\n    // Update items on init\n    if (updateItems) col.updateItems(0);\n\n    col.attachEvents();\n  };\n\n  col.destroy = function destroyCol() {\n    col.detachEvents();\n  };\n\n  col.init();\n}\n","import { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { extend, nextTick, deleteProps } from '../../shared/utils.js';\nimport Framework7Class from '../../shared/class.js';\nimport { getDevice } from '../../shared/get-device.js';\n\nimport pickerColumn from './picker-column.js';\n\n/** @jsx $jsx */\nimport $jsx from '../../shared/$jsx.js';\n\nclass Picker extends Framework7Class {\n  constructor(app, params = {}) {\n    super(params, [app]);\n    const picker = this;\n    const device = getDevice();\n    const window = getWindow();\n    picker.params = extend({}, app.params.picker, params);\n\n    let $containerEl;\n    if (picker.params.containerEl) {\n      $containerEl = $(picker.params.containerEl);\n      if ($containerEl.length === 0) return picker;\n    }\n\n    let $inputEl;\n    if (picker.params.inputEl) {\n      $inputEl = $(picker.params.inputEl);\n    }\n\n    let $scrollToEl = picker.params.scrollToInput ? $inputEl : undefined;\n    if (picker.params.scrollToEl) {\n      const scrollToEl = $(picker.params.scrollToEl);\n      if (scrollToEl.length > 0) {\n        $scrollToEl = scrollToEl;\n      }\n    }\n\n    extend(picker, {\n      app,\n      $containerEl,\n      containerEl: $containerEl && $containerEl[0],\n      inline: $containerEl && $containerEl.length > 0,\n      needsOriginFix:\n        device.ios ||\n        (window.navigator.userAgent.toLowerCase().indexOf('safari') >= 0 &&\n          window.navigator.userAgent.toLowerCase().indexOf('chrome') < 0 &&\n          !device.android),\n      cols: [],\n      $inputEl,\n      inputEl: $inputEl && $inputEl[0],\n      $scrollToEl,\n      initialized: false,\n      opened: false,\n      url: picker.params.url,\n    });\n\n    function onResize() {\n      picker.resizeCols();\n    }\n    function onInputClick() {\n      picker.open();\n    }\n    function onInputFocus(e) {\n      e.preventDefault();\n    }\n    let htmlTouchStartTarget = null;\n    function onHtmlTouchStart(e) {\n      htmlTouchStartTarget = e.target;\n    }\n    function onHtmlClick(e) {\n      if (picker.destroyed || !picker.params) return;\n      const $targetEl = $(e.target);\n      if (picker.isPopover()) return;\n      if (!picker.opened || picker.closing) return;\n      if ($targetEl.closest('[class*=\"backdrop\"]').length) return;\n      if ($inputEl && $inputEl.length > 0) {\n        if (\n          htmlTouchStartTarget === e.target &&\n          $targetEl[0] !== $inputEl[0] &&\n          $targetEl.closest('.sheet-modal').length === 0\n        ) {\n          picker.close();\n        }\n      } else if ($(e.target).closest('.sheet-modal').length === 0) {\n        picker.close();\n      }\n    }\n\n    // Events\n    extend(picker, {\n      attachResizeEvent() {\n        app.on('resize', onResize);\n      },\n      detachResizeEvent() {\n        app.off('resize', onResize);\n      },\n      attachInputEvents() {\n        picker.$inputEl.on('click', onInputClick);\n        if (picker.params.inputReadOnly) {\n          picker.$inputEl.on('focus mousedown', onInputFocus);\n          if (picker.$inputEl[0]) {\n            picker.$inputEl[0].f7ValidateReadonly = true;\n          }\n        }\n      },\n      detachInputEvents() {\n        picker.$inputEl.off('click', onInputClick);\n        if (picker.params.inputReadOnly) {\n          picker.$inputEl.off('focus mousedown', onInputFocus);\n          if (picker.$inputEl[0]) {\n            delete picker.$inputEl[0].f7ValidateReadonly;\n          }\n        }\n      },\n      attachHtmlEvents() {\n        app.on('click', onHtmlClick);\n        app.on('touchstart', onHtmlTouchStart);\n      },\n      detachHtmlEvents() {\n        app.off('click', onHtmlClick);\n        app.off('touchstart', onHtmlTouchStart);\n      },\n    });\n\n    picker.init();\n\n    return picker;\n  }\n\n  get view() {\n    const { app, params, $inputEl } = this;\n    let view;\n    if (params.view) {\n      view = params.view;\n    } else if ($inputEl) {\n      view = $inputEl.parents('.view').length && $inputEl.parents('.view')[0].f7View;\n    }\n    if (!view) view = app.views.main;\n    return view;\n  }\n\n  initInput() {\n    const picker = this;\n    if (!picker.$inputEl) return;\n    if (picker.params.inputReadOnly) picker.$inputEl.prop('readOnly', true);\n  }\n\n  resizeCols() {\n    const picker = this;\n    if (!picker.opened) return;\n    for (let i = 0; i < picker.cols.length; i += 1) {\n      if (!picker.cols[i].divider) {\n        picker.cols[i].calcSize();\n        picker.cols[i].setValue(picker.cols[i].value, false);\n      }\n    }\n  }\n\n  isPopover() {\n    const picker = this;\n    const { app, modal, params } = picker;\n    const device = getDevice();\n    if (params.openIn === 'sheet') return false;\n    if (modal && modal.type !== 'popover') return false;\n\n    if (!picker.inline && picker.inputEl) {\n      if (params.openIn === 'popover') return true;\n      if (device.ios) {\n        return !!device.ipad;\n      }\n      if (app.width >= 768) {\n        return true;\n      }\n    }\n    return false;\n  }\n\n  formatValue() {\n    const picker = this;\n    const { value, displayValue } = picker;\n    if (picker.params.formatValue) {\n      return picker.params.formatValue.call(picker, value, displayValue);\n    }\n    return value.join(' ');\n  }\n\n  setValue(values) {\n    const picker = this;\n    let valueIndex = 0;\n    if (picker.cols.length === 0) {\n      picker.value = values;\n      picker.updateValue(values);\n      return;\n    }\n    for (let i = 0; i < picker.cols.length; i += 1) {\n      if (picker.cols[i] && !picker.cols[i].divider) {\n        picker.cols[i].setValue(values[valueIndex]);\n        valueIndex += 1;\n      }\n    }\n  }\n\n  getValue() {\n    const picker = this;\n    return picker.value;\n  }\n\n  updateValue(forceValues) {\n    const picker = this;\n    const newValue = forceValues || [];\n    const newDisplayValue = [];\n    let column;\n    if (picker.cols.length === 0) {\n      const noDividerColumns = picker.params.cols.filter((c) => !c.divider);\n      for (let i = 0; i < noDividerColumns.length; i += 1) {\n        column = noDividerColumns[i];\n        if (\n          column.displayValues !== undefined &&\n          column.values !== undefined &&\n          column.values.indexOf(newValue[i]) !== -1\n        ) {\n          newDisplayValue.push(column.displayValues[column.values.indexOf(newValue[i])]);\n        } else {\n          newDisplayValue.push(newValue[i]);\n        }\n      }\n    } else {\n      for (let i = 0; i < picker.cols.length; i += 1) {\n        if (!picker.cols[i].divider) {\n          newValue.push(picker.cols[i].value);\n          newDisplayValue.push(picker.cols[i].displayValue);\n        }\n      }\n    }\n\n    if (newValue.indexOf(undefined) >= 0) {\n      return;\n    }\n    picker.value = newValue;\n    picker.displayValue = newDisplayValue;\n    picker.emit('local::change pickerChange', picker, picker.value, picker.displayValue);\n    if (picker.inputEl) {\n      picker.$inputEl.val(picker.formatValue());\n      picker.$inputEl.trigger('change');\n    }\n  }\n\n  initColumn(colEl, updateItems) {\n    const picker = this;\n    pickerColumn.call(picker, colEl, updateItems);\n  }\n  // eslint-disable-next-line\n  destroyColumn(colEl) {\n    const picker = this;\n    const $colEl = $(colEl);\n    const index = $colEl.index();\n    if (picker.cols[index] && picker.cols[index].destroy) {\n      picker.cols[index].destroy();\n    }\n  }\n\n  renderToolbar() {\n    const picker = this;\n    if (picker.params.renderToolbar) return picker.params.renderToolbar.call(picker, picker);\n    return (\n      <div class=\"toolbar toolbar-top\">\n        <div class=\"toolbar-inner\">\n          <div class=\"left\"></div>\n          <div class=\"right\">\n            <a class=\"link sheet-close popover-close\">{picker.params.toolbarCloseText}</a>\n          </div>\n        </div>\n      </div>\n    );\n  }\n  // eslint-disable-next-line\n  renderColumn(col, onlyItems) {\n    const colClasses = `picker-column ${col.textAlign ? `picker-column-${col.textAlign}` : ''} ${\n      col.cssClass || ''\n    }`;\n    let columnHtml;\n    let columnItemsHtml;\n\n    if (col.divider) {\n      // prettier-ignore\n      columnHtml = `\n        <div class=\"${colClasses} picker-column-divider\">${col.content}</div>\n      `;\n    } else {\n      // prettier-ignore\n      columnItemsHtml = col.values.map((value, index) => `\n        <div class=\"picker-item\" data-picker-value=\"${value}\">\n          <span>${col.displayValues ? col.displayValues[index] : value}</span>\n        </div>\n      `).join('');\n      // prettier-ignore\n      columnHtml = `\n        <div class=\"${colClasses}\">\n          <div class=\"picker-items\">${columnItemsHtml}</div>\n        </div>\n      `;\n    }\n\n    return onlyItems ? columnItemsHtml.trim() : columnHtml.trim();\n  }\n\n  renderInline() {\n    const picker = this;\n    const { rotateEffect, cssClass, toolbar } = picker.params;\n    const inlineHtml = (\n      <div class={`picker picker-inline ${rotateEffect ? 'picker-3d' : ''} ${cssClass || ''}`}>\n        {toolbar && picker.renderToolbar()}\n        <div class=\"picker-columns\">\n          {picker.cols.map((col) => picker.renderColumn(col))}\n          <div class=\"picker-center-highlight\"></div>\n        </div>\n      </div>\n    );\n\n    return inlineHtml;\n  }\n\n  renderSheet() {\n    const picker = this;\n    const { rotateEffect, cssClass, toolbar } = picker.params;\n    const sheetHtml = (\n      <div\n        class={`sheet-modal picker picker-sheet ${rotateEffect ? 'picker-3d' : ''} ${\n          cssClass || ''\n        }`}\n      >\n        {toolbar && picker.renderToolbar()}\n        <div class=\"sheet-modal-inner picker-columns\">\n          {picker.cols.map((col) => picker.renderColumn(col))}\n          <div class=\"picker-center-highlight\"></div>\n        </div>\n      </div>\n    );\n\n    return sheetHtml;\n  }\n\n  renderPopover() {\n    const picker = this;\n    const { rotateEffect, cssClass, toolbar } = picker.params;\n    const popoverHtml = (\n      <div class=\"popover picker-popover\">\n        <div class=\"popover-inner\">\n          <div class={`picker ${rotateEffect ? 'picker-3d' : ''} ${cssClass || ''}`}>\n            {toolbar && picker.renderToolbar()}\n            <div class=\"picker-columns\">\n              {picker.cols.map((col) => picker.renderColumn(col))}\n              <div class=\"picker-center-highlight\"></div>\n            </div>\n          </div>\n        </div>\n      </div>\n    );\n\n    return popoverHtml;\n  }\n\n  render() {\n    const picker = this;\n    if (picker.params.render) return picker.params.render.call(picker);\n    if (!picker.inline) {\n      if (picker.isPopover()) return picker.renderPopover();\n      return picker.renderSheet();\n    }\n    return picker.renderInline();\n  }\n\n  onOpen() {\n    const picker = this;\n    const { initialized, $el, app, $inputEl, inline, value, params } = picker;\n    picker.opened = true;\n    picker.closing = false;\n    picker.opening = true;\n\n    // Init main events\n    picker.attachResizeEvent();\n\n    // Init cols\n    $el.find('.picker-column').each((colEl) => {\n      let updateItems = true;\n      if ((!initialized && params.value) || (initialized && value)) {\n        updateItems = false;\n      }\n      picker.initColumn(colEl, updateItems);\n    });\n\n    // Set value\n    if (!initialized) {\n      if (value) picker.setValue(value);\n      else if (params.value) {\n        picker.setValue(params.value);\n      }\n    } else if (value) {\n      picker.setValue(value);\n    }\n\n    // Extra focus\n    if (!inline && $inputEl && $inputEl.length && app.theme === 'md') {\n      $inputEl.trigger('focus');\n    }\n\n    picker.initialized = true;\n\n    // Trigger events\n    if ($el) {\n      $el.trigger('picker:open');\n    }\n    if ($inputEl) {\n      $inputEl.trigger('picker:open');\n    }\n    picker.emit('local::open pickerOpen', picker);\n  }\n\n  onOpened() {\n    const picker = this;\n    picker.opening = false;\n\n    if (picker.$el) {\n      picker.$el.trigger('picker:opened');\n    }\n    if (picker.$inputEl) {\n      picker.$inputEl.trigger('picker:opened');\n    }\n    picker.emit('local::opened pickerOpened', picker);\n  }\n\n  onClose() {\n    const picker = this;\n    const app = picker.app;\n    picker.opening = false;\n    picker.closing = true;\n\n    // Detach events\n    picker.detachResizeEvent();\n\n    picker.cols.forEach((col) => {\n      if (col.destroy) col.destroy();\n    });\n\n    if (picker.$inputEl) {\n      if (app.theme === 'md') {\n        picker.$inputEl.trigger('blur');\n      } else {\n        const validate = picker.$inputEl.attr('validate');\n        const required = picker.$inputEl.attr('required');\n        if (validate && required) {\n          app.input.validate(picker.$inputEl);\n        }\n      }\n    }\n\n    if (picker.$el) {\n      picker.$el.trigger('picker:close');\n    }\n    if (picker.$inputEl) {\n      picker.$inputEl.trigger('picker:close');\n    }\n    picker.emit('local::close pickerClose', picker);\n  }\n\n  onClosed() {\n    const picker = this;\n    picker.opened = false;\n    picker.closing = false;\n\n    if (!picker.inline) {\n      nextTick(() => {\n        if (picker.modal && picker.modal.el && picker.modal.destroy) {\n          if (!picker.params.routableModals) {\n            picker.modal.destroy();\n          }\n        }\n        delete picker.modal;\n      });\n    }\n\n    if (picker.$el) {\n      picker.$el.trigger('picker:closed');\n    }\n    if (picker.$inputEl) {\n      picker.$inputEl.trigger('picker:closed');\n    }\n    picker.emit('local::closed pickerClosed', picker);\n  }\n\n  open() {\n    const picker = this;\n    const { app, opened, inline, $inputEl, $scrollToEl, params } = picker;\n    if (opened) return;\n    if (picker.cols.length === 0 && params.cols.length) {\n      params.cols.forEach((col) => {\n        picker.cols.push(col);\n      });\n    }\n    if (inline) {\n      picker.$el = $(picker.render());\n      picker.$el[0].f7Picker = picker;\n      picker.$containerEl.append(picker.$el);\n      picker.onOpen();\n      picker.onOpened();\n      return;\n    }\n    const isPopover = picker.isPopover();\n    const modalType = isPopover ? 'popover' : 'sheet';\n    const modalParams = {\n      targetEl: $inputEl,\n      scrollToEl: $scrollToEl,\n      content: picker.render(),\n      backdrop: typeof params.backdrop !== 'undefined' ? params.backdrop : isPopover,\n      on: {\n        open() {\n          const modal = this;\n          picker.modal = modal;\n          picker.$el = isPopover ? modal.$el.find('.picker') : modal.$el;\n          picker.$el[0].f7Picker = picker;\n          picker.onOpen();\n        },\n        opened() {\n          picker.onOpened();\n        },\n        close() {\n          picker.onClose();\n        },\n        closed() {\n          picker.onClosed();\n        },\n      },\n    };\n    if (modalType === 'sheet') {\n      modalParams.push = params.sheetPush;\n      modalParams.swipeToClose = params.sheetSwipeToClose;\n    }\n    if (params.routableModals && picker.view) {\n      picker.view.router.navigate({\n        url: picker.url,\n        route: {\n          path: picker.url,\n          [modalType]: modalParams,\n        },\n      });\n    } else {\n      picker.modal = app[modalType].create(modalParams);\n      picker.modal.open();\n    }\n  }\n\n  close() {\n    const picker = this;\n    const { opened, inline } = picker;\n    if (!opened) return;\n    if (inline) {\n      picker.onClose();\n      picker.onClosed();\n      return;\n    }\n    if (picker.params.routableModals && picker.view) {\n      picker.view.router.back();\n    } else {\n      picker.modal.close();\n    }\n  }\n\n  init() {\n    const picker = this;\n\n    picker.initInput();\n\n    if (picker.inline) {\n      picker.open();\n      picker.emit('local::init pickerInit', picker);\n      return;\n    }\n\n    if (!picker.initialized && picker.params.value) {\n      picker.setValue(picker.params.value);\n    }\n\n    // Attach input Events\n    if (picker.$inputEl) {\n      picker.attachInputEvents();\n    }\n    if (picker.params.closeByOutsideClick) {\n      picker.attachHtmlEvents();\n    }\n    picker.emit('local::init pickerInit', picker);\n  }\n\n  destroy() {\n    const picker = this;\n    if (picker.destroyed) return;\n    const { $el } = picker;\n    picker.emit('local::beforeDestroy pickerBeforeDestroy', picker);\n    if ($el) $el.trigger('picker:beforedestroy');\n\n    picker.close();\n\n    // Detach Events\n    if (picker.$inputEl) {\n      picker.detachInputEvents();\n    }\n    if (picker.params.closeByOutsideClick) {\n      picker.detachHtmlEvents();\n    }\n\n    if ($el && $el.length) delete picker.$el[0].f7Picker;\n    deleteProps(picker);\n    picker.destroyed = true;\n  }\n}\n\nexport default Picker;\n","import $ from '../../shared/dom7.js';\nimport ConstructorMethods from '../../shared/constructor-methods.js';\nimport Picker from './picker-class.js';\n\nexport default {\n  name: 'picker',\n  static: {\n    Picker,\n  },\n  create() {\n    const app = this;\n    app.picker = ConstructorMethods({\n      defaultSelector: '.picker',\n      constructor: Picker,\n      app,\n      domProp: 'f7Picker',\n    });\n    app.picker.close = function close(el = '.picker') {\n      const $el = $(el);\n      if ($el.length === 0) return;\n      const picker = $el[0].f7Picker;\n      if (!picker || (picker && !picker.opened)) return;\n      picker.close();\n    };\n  },\n  params: {\n    picker: {\n      // Picker settings\n      rotateEffect: false,\n      freeMode: false,\n      cols: [],\n      // Common opener settings\n      containerEl: null,\n      openIn: 'auto', // or 'popover' or 'sheet'\n      sheetPush: false,\n      sheetSwipeToClose: undefined,\n      backdrop: undefined, // uses Popover or Sheet defaults\n      formatValue: null,\n      inputEl: null,\n      inputReadOnly: true,\n      closeByOutsideClick: true,\n      scrollToInput: true,\n      scrollToEl: undefined,\n      toolbar: true,\n      toolbarCloseText: 'Done',\n      cssClass: null,\n      routableModals: false,\n      view: null,\n      url: 'select/',\n      // Render functions\n      renderToolbar: null,\n      render: null,\n    },\n  },\n};\n","import $ from '../../shared/dom7.js';\nimport { bindMethods } from '../../shared/utils.js';\n\nconst InfiniteScroll = {\n  handle(el, e) {\n    const app = this;\n    const $el = $(el);\n    const scrollTop = $el[0].scrollTop;\n    const scrollHeight = $el[0].scrollHeight;\n    const height = $el[0].offsetHeight;\n    let distance = $el[0].getAttribute('data-infinite-distance');\n\n    const virtualListContainer = $el.find('.virtual-list');\n    let virtualList;\n\n    const onTop = $el.hasClass('infinite-scroll-top');\n    if (!distance) distance = 50;\n    if (typeof distance === 'string' && distance.indexOf('%') >= 0) {\n      distance = (parseInt(distance, 10) / 100) * height;\n    }\n    if (distance > height) distance = height;\n    if (onTop) {\n      if (scrollTop < distance) {\n        $el.trigger('infinite', e);\n        app.emit('infinite', $el[0], e);\n      }\n    } else if (scrollTop + height >= scrollHeight - distance) {\n      if (virtualListContainer.length > 0) {\n        virtualList = virtualListContainer.eq(-1)[0].f7VirtualList;\n        if (virtualList && !virtualList.reachEnd && !virtualList.params.updatableScroll) {\n          return;\n        }\n      }\n      $el.trigger('infinite', e);\n      app.emit('infinite', $el[0], e);\n    }\n  },\n  create(el) {\n    const $el = $(el);\n    const app = this;\n    function scrollHandler(e) {\n      app.infiniteScroll.handle(this, e);\n    }\n    $el.each((element) => {\n      element.f7InfiniteScrollHandler = scrollHandler;\n      element.addEventListener('scroll', element.f7InfiniteScrollHandler);\n    });\n  },\n  destroy(el) {\n    const $el = $(el);\n    $el.each((element) => {\n      element.removeEventListener('scroll', element.f7InfiniteScrollHandler);\n      delete element.f7InfiniteScrollHandler;\n    });\n  },\n};\nexport default {\n  name: 'infiniteScroll',\n  create() {\n    const app = this;\n    bindMethods(app, {\n      infiniteScroll: InfiniteScroll,\n    });\n  },\n  on: {\n    tabMounted(tabEl) {\n      const app = this;\n      const $tabEl = $(tabEl);\n      const $isEls = $tabEl.find('.infinite-scroll-content');\n      if ($tabEl.is('.infinite-scroll-content')) $isEls.add($tabEl);\n      $isEls.each((el) => {\n        app.infiniteScroll.create(el);\n      });\n    },\n    tabBeforeRemove(tabEl) {\n      const $tabEl = $(tabEl);\n      const app = this;\n      const $isEls = $tabEl.find('.infinite-scroll-content');\n      if ($tabEl.is('.infinite-scroll-content')) $isEls.add($tabEl);\n      $isEls.each((el) => {\n        app.infiniteScroll.destroy(el);\n      });\n    },\n    pageInit(page) {\n      const app = this;\n      page.$el.find('.infinite-scroll-content').each((el) => {\n        app.infiniteScroll.create(el);\n      });\n    },\n    pageBeforeRemove(page) {\n      const app = this;\n      page.$el.find('.infinite-scroll-content').each((el) => {\n        app.infiniteScroll.destroy(el);\n      });\n    },\n  },\n};\n","import $ from '../../shared/dom7.js';\nimport { deleteProps } from '../../shared/utils.js';\nimport Framework7Class from '../../shared/class.js';\nimport { getSupport } from '../../shared/get-support.js';\nimport { getDevice } from '../../shared/get-device.js';\n\nclass PullToRefresh extends Framework7Class {\n  constructor(app, el) {\n    super({}, [app]);\n    const ptr = this;\n    const device = getDevice();\n    const support = getSupport();\n    const $el = $(el);\n    const $preloaderEl = $el.find('.ptr-preloader');\n\n    ptr.$el = $el;\n    ptr.el = $el[0];\n    ptr.app = app;\n\n    ptr.bottom = ptr.$el.hasClass('ptr-bottom');\n\n    // Extend defaults with modules params\n    ptr.useModulesParams({});\n\n    const isMaterial = app.theme === 'md';\n    const isIos = app.theme === 'ios';\n\n    // Done\n    ptr.done = function done() {\n      const $transitionTarget = isMaterial ? $preloaderEl : $el;\n      const onTranstionEnd = (e) => {\n        if ($(e.target).closest($preloaderEl).length) return;\n        $el.removeClass('ptr-transitioning ptr-pull-up ptr-pull-down ptr-closing');\n        $el.trigger('ptr:done');\n        ptr.emit('local::done ptrDone', $el[0]);\n        $transitionTarget.off('transitionend', onTranstionEnd);\n      };\n      $transitionTarget.on('transitionend', onTranstionEnd);\n      $el.removeClass('ptr-refreshing').addClass('ptr-transitioning ptr-closing');\n      return ptr;\n    };\n\n    ptr.refresh = function refresh() {\n      if ($el.hasClass('ptr-refreshing')) return ptr;\n      $el.addClass('ptr-transitioning ptr-refreshing');\n      $el.trigger('ptr:refresh', ptr.done);\n      ptr.emit('local::refresh ptrRefresh', $el[0], ptr.done);\n      return ptr;\n    };\n\n    // Mousewheel\n    ptr.mousewheel = $el.attr('data-ptr-mousewheel') === 'true';\n\n    // Events handling\n    let touchId;\n    let isTouched;\n    let isMoved;\n    const touchesStart = {};\n    let isScrolling;\n    let touchesDiff;\n    let refresh = false;\n    let useTranslate = false;\n    let forceUseTranslate = false;\n    let startTranslate = 0;\n    let translate;\n    let scrollTop;\n    let wasScrolled;\n    let triggerDistance;\n    let dynamicTriggerDistance;\n    let pullStarted;\n    let hasNavbar = false;\n    let scrollHeight;\n    let offsetHeight;\n    let maxScrollTop;\n    const $pageEl = $el.parents('.page');\n\n    if (\n      $pageEl.find('.navbar').length > 0 ||\n      $pageEl.parents('.view').children('.navbars').length > 0\n    )\n      hasNavbar = true;\n    if ($pageEl.hasClass('no-navbar')) hasNavbar = false;\n    if (!ptr.bottom) {\n      const pageNavbarEl = app.navbar.getElByPage($pageEl[0]);\n      if (pageNavbarEl) {\n        const $pageNavbarEl = $(pageNavbarEl);\n        const isLargeTransparent =\n          $pageNavbarEl.hasClass('navbar-large-transparent') ||\n          ($pageNavbarEl.hasClass('navbar-large') && $pageNavbarEl.hasClass('navbar-transparent'));\n        const isTransparent =\n          $pageNavbarEl.hasClass('navbar-transparent') && !$pageNavbarEl.hasClass('navbar-large');\n        if (isLargeTransparent) {\n          $el.addClass('ptr-with-navbar-large-transparent');\n        } else if (isTransparent) {\n          $el.addClass('ptr-with-navbar-transparent');\n        }\n      }\n    }\n    if (!hasNavbar && !ptr.bottom) $el.addClass('ptr-no-navbar');\n\n    // Define trigger distance\n    if ($el.attr('data-ptr-distance')) {\n      dynamicTriggerDistance = true;\n    } else if (isMaterial) {\n      triggerDistance = 66;\n    } else if (isIos) {\n      triggerDistance = 44;\n    }\n\n    function setPreloaderProgress(progress = 0) {\n      const $bars = $preloaderEl.find('.preloader-inner-line');\n      const perBarProgress = 1 / $bars.length;\n\n      $bars.forEach((barEl, barIndex) => {\n        const barProgress = (progress - barIndex * perBarProgress) / perBarProgress;\n        barEl.style.opacity = Math.max(Math.min(barProgress, 1), 0) * 0.27;\n      });\n    }\n\n    function unsetPreloaderProgress() {\n      $preloaderEl.find('.preloader-inner-line').css('opacity', '');\n    }\n\n    function handleTouchStart(e) {\n      if (!e.isTrusted) return;\n      if (isTouched) {\n        if (device.os === 'android') {\n          if ('targetTouches' in e && e.targetTouches.length > 1) return;\n        } else return;\n      }\n\n      if ($el.hasClass('ptr-refreshing')) {\n        return;\n      }\n      if (\n        $(e.target).closest('.sortable-handler, .ptr-ignore, .card-expandable.card-opened').length\n      )\n        return;\n\n      isMoved = false;\n      pullStarted = false;\n      isTouched = true;\n      isScrolling = undefined;\n      wasScrolled = undefined;\n      if (e.type === 'touchstart') touchId = e.targetTouches[0].identifier;\n      touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n      touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n    }\n\n    function handleTouchMove(e) {\n      if (!isTouched || !e.isTrusted) return;\n      let pageX;\n      let pageY;\n      let touch;\n      if (e.type === 'touchmove') {\n        if (touchId && e.touches) {\n          for (let i = 0; i < e.touches.length; i += 1) {\n            if (e.touches[i].identifier === touchId) {\n              touch = e.touches[i];\n            }\n          }\n        }\n        if (!touch) touch = e.targetTouches[0];\n        pageX = touch.pageX;\n        pageY = touch.pageY;\n      } else {\n        pageX = e.pageX;\n        pageY = e.pageY;\n      }\n      if (!pageX || !pageY) return;\n\n      if (typeof isScrolling === 'undefined') {\n        isScrolling = !!(\n          isScrolling || Math.abs(pageY - touchesStart.y) > Math.abs(pageX - touchesStart.x)\n        );\n      }\n      if (!isScrolling) {\n        isTouched = false;\n        return;\n      }\n\n      scrollTop = $el[0].scrollTop;\n\n      if (!isMoved) {\n        $el.removeClass('ptr-transitioning');\n        if (isIos) {\n          setPreloaderProgress(0);\n        }\n        let targetIsScrollable;\n        scrollHeight = $el[0].scrollHeight;\n        offsetHeight = $el[0].offsetHeight;\n        if (ptr.bottom) {\n          maxScrollTop = scrollHeight - offsetHeight;\n        }\n        if (scrollTop > scrollHeight) {\n          isTouched = false;\n          return;\n        }\n        const $ptrWatchScrollable = $(e.target).closest('.ptr-watch-scroll');\n        if ($ptrWatchScrollable.length) {\n          $ptrWatchScrollable.each((ptrScrollableEl) => {\n            if (ptrScrollableEl === el) return;\n            if (\n              ptrScrollableEl.scrollHeight > ptrScrollableEl.offsetHeight &&\n              $(ptrScrollableEl).css('overflow') === 'auto' &&\n              ((!ptr.bottom && ptrScrollableEl.scrollTop > 0) ||\n                (ptr.bottom &&\n                  ptrScrollableEl.scrollTop <\n                    ptrScrollableEl.scrollHeight - ptrScrollableEl.offsetHeight))\n            ) {\n              targetIsScrollable = true;\n            }\n          });\n        }\n        if (targetIsScrollable) {\n          isTouched = false;\n          return;\n        }\n        if (dynamicTriggerDistance) {\n          triggerDistance = $el.attr('data-ptr-distance');\n          if (triggerDistance.indexOf('%') >= 0)\n            triggerDistance = (scrollHeight * parseInt(triggerDistance, 10)) / 100;\n        }\n        startTranslate = $el.hasClass('ptr-refreshing') ? triggerDistance : 0;\n        if (scrollHeight === offsetHeight || device.os !== 'ios' || isMaterial) {\n          useTranslate = true;\n        } else {\n          useTranslate = false;\n        }\n        forceUseTranslate = false;\n      }\n      isMoved = true;\n      touchesDiff = pageY - touchesStart.y;\n\n      if (\n        typeof wasScrolled === 'undefined' &&\n        (ptr.bottom ? scrollTop !== maxScrollTop : scrollTop !== 0)\n      )\n        wasScrolled = true;\n\n      const ptrStarted = ptr.bottom\n        ? (touchesDiff < 0 && scrollTop >= maxScrollTop) || scrollTop > maxScrollTop\n        : (touchesDiff > 0 && scrollTop <= 0) || scrollTop < 0;\n\n      if (ptrStarted) {\n        // iOS 8 fix\n        if (device.os === 'ios' && parseInt(device.osVersion.split('.')[0], 10) > 7) {\n          if (!ptr.bottom && scrollTop === 0 && !wasScrolled) useTranslate = true;\n          if (ptr.bottom && scrollTop === maxScrollTop && !wasScrolled) useTranslate = true;\n        }\n\n        if (!useTranslate && ptr.bottom && !isMaterial) {\n          $el.css('-webkit-overflow-scrolling', 'auto');\n          $el.scrollTop(maxScrollTop);\n          forceUseTranslate = true;\n        }\n\n        if (useTranslate || forceUseTranslate) {\n          if (e.cancelable) {\n            e.preventDefault();\n          }\n          translate =\n            (ptr.bottom ? -1 * Math.abs(touchesDiff) ** 0.85 : touchesDiff ** 0.85) +\n            startTranslate;\n          if (isMaterial) {\n            $preloaderEl\n              .transform(`translate3d(0,${translate}px,0)`)\n              .find('.ptr-arrow')\n              .transform(`rotate(${180 * (Math.abs(touchesDiff) / 66) + 100}deg)`);\n          } else {\n            // eslint-disable-next-line\n            if (ptr.bottom || isIos) {\n              $el.children().transform(`translate3d(0,${translate}px,0)`);\n            } else {\n              // eslint-disable-next-line\n              $el.transform(`translate3d(0,${translate}px,0)`);\n            }\n            if (isIos) {\n              $preloaderEl.transform(`translate3d(0,0px,0)`);\n            }\n          }\n        } else if (isIos && !ptr.bottom) {\n          $preloaderEl.transform(`translate3d(0,${scrollTop}px,0)`);\n        }\n\n        let progress;\n        if (isIos && !refresh) {\n          progress =\n            useTranslate || forceUseTranslate\n              ? Math.abs(touchesDiff) ** 0.85 / triggerDistance\n              : Math.abs(touchesDiff) / (triggerDistance * 2);\n          setPreloaderProgress(progress);\n        }\n\n        if (\n          ((useTranslate || forceUseTranslate) &&\n            Math.abs(touchesDiff) ** 0.85 > triggerDistance) ||\n          (!useTranslate && Math.abs(touchesDiff) >= triggerDistance * 2)\n        ) {\n          refresh = true;\n          $el.addClass('ptr-pull-up').removeClass('ptr-pull-down');\n          unsetPreloaderProgress();\n        } else {\n          refresh = false;\n          $el.removeClass('ptr-pull-up').addClass('ptr-pull-down');\n        }\n        if (!pullStarted) {\n          $el.trigger('ptr:pullstart');\n          ptr.emit('local::pullStart ptrPullStart', $el[0]);\n          pullStarted = true;\n        }\n        $el.trigger('ptr:pullmove', {\n          event: e,\n          scrollTop,\n          translate,\n          touchesDiff,\n        });\n        ptr.emit('local::pullMove ptrPullMove', $el[0], {\n          event: e,\n          scrollTop,\n          translate,\n          touchesDiff,\n        });\n      } else {\n        pullStarted = false;\n        $el.removeClass('ptr-pull-up ptr-pull-down');\n        refresh = false;\n      }\n    }\n    function handleTouchEnd(e) {\n      if (!e.isTrusted) return;\n\n      if (e.type === 'touchend' && e.changedTouches && e.changedTouches.length > 0 && touchId) {\n        if (e.changedTouches[0].identifier !== touchId) {\n          isTouched = false;\n          isScrolling = false;\n          isMoved = false;\n          touchId = null;\n          return;\n        }\n      }\n      if (!isTouched || !isMoved) {\n        isTouched = false;\n        isMoved = false;\n        return;\n      }\n      if (translate) {\n        $el.addClass('ptr-transitioning');\n        translate = 0;\n      }\n      if (isMaterial) {\n        $preloaderEl.transform('').find('.ptr-arrow').transform('');\n      } else {\n        $preloaderEl.transform('');\n        if (ptr.bottom || isIos) {\n          $el.children().transform('');\n        } else {\n          $el.transform('');\n        }\n      }\n\n      if (!useTranslate && ptr.bottom && !isMaterial) {\n        $el.css('-webkit-overflow-scrolling', '');\n      }\n\n      if (refresh) {\n        $el.addClass('ptr-refreshing');\n        $el.trigger('ptr:refresh', ptr.done);\n        ptr.emit('local::refresh ptrRefresh', $el[0], ptr.done);\n      } else {\n        $el.removeClass('ptr-pull-down');\n      }\n      isTouched = false;\n      isMoved = false;\n      if (pullStarted) {\n        $el.trigger('ptr:pullend');\n        ptr.emit('local::pullEnd ptrPullEnd', $el[0]);\n      }\n    }\n\n    let mousewheelTimeout;\n    let mousewheelMoved;\n    let mousewheelAllow = true;\n    let mousewheelTranslate = 0;\n\n    function handleMouseWheelRelease() {\n      mousewheelAllow = true;\n      mousewheelMoved = false;\n      mousewheelTranslate = 0;\n      if (translate) {\n        $el.addClass('ptr-transitioning');\n        translate = 0;\n      }\n      if (isMaterial) {\n        $preloaderEl.transform('').find('.ptr-arrow').transform('');\n      } else {\n        $preloaderEl.transform('');\n        if (ptr.bottom) {\n          $el.children().transform('');\n        } else {\n          $el.transform('');\n        }\n      }\n\n      if (refresh) {\n        $el.addClass('ptr-refreshing');\n        $el.trigger('ptr:refresh', ptr.done);\n        ptr.emit('local::refresh ptrRefresh', $el[0], ptr.done);\n      } else {\n        $el.removeClass('ptr-pull-down');\n      }\n      if (pullStarted) {\n        $el.trigger('ptr:pullend');\n        ptr.emit('local::pullEnd ptrPullEnd', $el[0]);\n      }\n    }\n    function handleMouseWheel(e) {\n      if (!mousewheelAllow) return;\n      const { deltaX, deltaY } = e;\n      if (Math.abs(deltaX) > Math.abs(deltaY)) return;\n      if ($el.hasClass('ptr-refreshing')) {\n        return;\n      }\n      if (\n        $(e.target).closest('.sortable-handler, .ptr-ignore, .card-expandable.card-opened').length\n      )\n        return;\n\n      clearTimeout(mousewheelTimeout);\n\n      scrollTop = $el[0].scrollTop;\n\n      if (!mousewheelMoved) {\n        $el.removeClass('ptr-transitioning');\n        if (isIos) {\n          setPreloaderProgress(0);\n        }\n        let targetIsScrollable;\n        scrollHeight = $el[0].scrollHeight;\n        offsetHeight = $el[0].offsetHeight;\n        if (ptr.bottom) {\n          maxScrollTop = scrollHeight - offsetHeight;\n        }\n        if (scrollTop > scrollHeight) {\n          mousewheelAllow = false;\n          return;\n        }\n        const $ptrWatchScrollable = $(e.target).closest('.ptr-watch-scroll');\n        if ($ptrWatchScrollable.length) {\n          $ptrWatchScrollable.each((ptrScrollableEl) => {\n            if (ptrScrollableEl === el) return;\n            if (\n              ptrScrollableEl.scrollHeight > ptrScrollableEl.offsetHeight &&\n              $(ptrScrollableEl).css('overflow') === 'auto' &&\n              ((!ptr.bottom && ptrScrollableEl.scrollTop > 0) ||\n                (ptr.bottom &&\n                  ptrScrollableEl.scrollTop <\n                    ptrScrollableEl.scrollHeight - ptrScrollableEl.offsetHeight))\n            ) {\n              targetIsScrollable = true;\n            }\n          });\n        }\n        if (targetIsScrollable) {\n          mousewheelAllow = false;\n          return;\n        }\n        if (dynamicTriggerDistance) {\n          triggerDistance = $el.attr('data-ptr-distance');\n          if (triggerDistance.indexOf('%') >= 0)\n            triggerDistance = (scrollHeight * parseInt(triggerDistance, 10)) / 100;\n        }\n      }\n      isMoved = true;\n      mousewheelTranslate -= deltaY;\n      touchesDiff = mousewheelTranslate; // pageY - touchesStart.y;\n\n      if (\n        typeof wasScrolled === 'undefined' &&\n        (ptr.bottom ? scrollTop !== maxScrollTop : scrollTop !== 0)\n      )\n        wasScrolled = true;\n\n      const ptrStarted = ptr.bottom\n        ? (touchesDiff < 0 && scrollTop >= maxScrollTop) || scrollTop > maxScrollTop\n        : (touchesDiff > 0 && scrollTop <= 0) || scrollTop < 0;\n\n      if (ptrStarted) {\n        if (e.cancelable) {\n          e.preventDefault();\n        }\n\n        translate = touchesDiff;\n        if (Math.abs(translate) > triggerDistance) {\n          translate = triggerDistance + (Math.abs(translate) - triggerDistance) ** 0.7;\n          if (ptr.bottom) translate = -translate;\n        }\n\n        if (isMaterial) {\n          $preloaderEl\n            .transform(`translate3d(0,${translate}px,0)`)\n            .find('.ptr-arrow')\n            .transform(`rotate(${180 * (Math.abs(touchesDiff) / 66) + 100}deg)`);\n        } else {\n          // eslint-disable-next-line\n          if (ptr.bottom) {\n            $el.children().transform(`translate3d(0,${translate}px,0)`);\n          } else {\n            $el.transform(`translate3d(0,${translate}px,0)`);\n            if (isIos) {\n              $preloaderEl.transform(`translate3d(0,${-translate}px,0)`);\n            }\n          }\n        }\n\n        let progress;\n        if (isIos && !refresh) {\n          progress = Math.abs(translate) / triggerDistance;\n          setPreloaderProgress(progress);\n        }\n\n        if (Math.abs(translate) > triggerDistance) {\n          refresh = true;\n          $el.addClass('ptr-pull-up').removeClass('ptr-pull-down');\n          unsetPreloaderProgress();\n        } else {\n          refresh = false;\n          $el.removeClass('ptr-pull-up').addClass('ptr-pull-down');\n        }\n        if (!pullStarted) {\n          $el.trigger('ptr:pullstart');\n          ptr.emit('local::pullStart ptrPullStart', $el[0]);\n          pullStarted = true;\n        }\n        $el.trigger('ptr:pullmove', {\n          event: e,\n          scrollTop,\n          translate,\n          touchesDiff,\n        });\n        ptr.emit('local::pullMove ptrPullMove', $el[0], {\n          event: e,\n          scrollTop,\n          translate,\n          touchesDiff,\n        });\n      } else {\n        pullStarted = false;\n        $el.removeClass('ptr-pull-up ptr-pull-down');\n        refresh = false;\n      }\n\n      mousewheelTimeout = setTimeout(handleMouseWheelRelease, 300);\n    }\n\n    if (!$pageEl.length || !$el.length) return ptr;\n\n    $el[0].f7PullToRefresh = ptr;\n\n    // Events\n    ptr.attachEvents = function attachEvents() {\n      const passive = support.passiveListener ? { passive: true } : false;\n      $el.on(app.touchEvents.start, handleTouchStart, passive);\n      app.on('touchmove:active', handleTouchMove);\n      app.on('touchend:passive', handleTouchEnd);\n      if (ptr.mousewheel && !ptr.bottom) {\n        $el.on('wheel', handleMouseWheel);\n      }\n    };\n    ptr.detachEvents = function detachEvents() {\n      const passive = support.passiveListener ? { passive: true } : false;\n      $el.off(app.touchEvents.start, handleTouchStart, passive);\n      app.off('touchmove:active', handleTouchMove);\n      app.off('touchend:passive', handleTouchEnd);\n      if (ptr.mousewheel && !ptr.bottom) {\n        $el.off('wheel', handleMouseWheel);\n      }\n    };\n\n    // Install Modules\n    ptr.useModules();\n\n    // Init\n    ptr.init();\n\n    return ptr;\n  }\n\n  init() {\n    const ptr = this;\n    ptr.attachEvents();\n  }\n\n  destroy() {\n    let ptr = this;\n    ptr.emit('local::beforeDestroy ptrBeforeDestroy', ptr);\n    ptr.$el.trigger('ptr:beforedestroy');\n    delete ptr.el.f7PullToRefresh;\n    ptr.detachEvents();\n    deleteProps(ptr);\n    ptr = null;\n  }\n}\n\nexport default PullToRefresh;\n","import $ from '../../shared/dom7.js';\nimport { extend } from '../../shared/utils.js';\nimport PullToRefresh from './pull-to-refresh-class.js';\nimport ConstructorMethods from '../../shared/constructor-methods.js';\n\nexport default {\n  name: 'pullToRefresh',\n  create() {\n    const app = this;\n    app.ptr = extend(\n      ConstructorMethods({\n        defaultSelector: '.ptr-content',\n        constructor: PullToRefresh,\n        app,\n        domProp: 'f7PullToRefresh',\n      }),\n      {\n        done(el) {\n          const ptr = app.ptr.get(el);\n          if (ptr) return ptr.done();\n          return undefined;\n        },\n        refresh(el) {\n          const ptr = app.ptr.get(el);\n          if (ptr) return ptr.refresh();\n          return undefined;\n        },\n      },\n    );\n  },\n  static: {\n    PullToRefresh,\n  },\n  on: {\n    tabMounted(tabEl) {\n      const app = this;\n      const $tabEl = $(tabEl);\n      const $ptrEls = $tabEl.find('.ptr-content');\n      if ($tabEl.is('.ptr-content')) $ptrEls.add($tabEl);\n      $ptrEls.each((el) => {\n        app.ptr.create(el);\n      });\n    },\n    tabBeforeRemove(tabEl) {\n      const $tabEl = $(tabEl);\n      const app = this;\n      const $ptrEls = $tabEl.find('.ptr-content');\n      if ($tabEl.is('.ptr-content')) $ptrEls.add($tabEl);\n      $ptrEls.each((el) => {\n        app.ptr.destroy(el);\n      });\n    },\n    pageInit(page) {\n      const app = this;\n      page.$el.find('.ptr-content').each((el) => {\n        app.ptr.create(el);\n      });\n    },\n    pageBeforeRemove(page) {\n      const app = this;\n      page.$el.find('.ptr-content').each((el) => {\n        app.ptr.destroy(el);\n      });\n    },\n  },\n};\n","import $ from '../../shared/dom7.js';\nimport { extend, deleteProps } from '../../shared/utils.js';\nimport Framework7Class from '../../shared/class.js';\n\nclass DataTable extends Framework7Class {\n  constructor(app, params = {}) {\n    super(params, [app]);\n\n    const table = this;\n\n    const defaults = {};\n\n    // Extend defaults with modules params\n    table.useModulesParams(defaults);\n\n    table.params = extend(defaults, params);\n\n    // El\n    const $el = $(table.params.el);\n    if ($el.length === 0) return undefined;\n\n    table.$el = $el;\n    table.el = $el[0];\n\n    if (table.$el[0].f7DataTable) {\n      const instance = table.$el[0].f7DataTable;\n      table.destroy();\n      return instance;\n    }\n\n    table.$el[0].f7DataTable = table;\n\n    extend(table, {\n      collapsible: $el.hasClass('data-table-collapsible'),\n      // Headers\n      $headerEl: $el.find('.data-table-header'),\n      $headerSelectedEl: $el.find('.data-table-header-selected'),\n    });\n\n    // Events\n    function handleChange(e) {\n      if (e.detail && e.detail.sentByF7DataTable) {\n        // Scripted event, don't do anything\n        return;\n      }\n      const $inputEl = $(this);\n      const checked = $inputEl[0].checked;\n      const columnIndex = $inputEl.parents('td,th').index();\n\n      if ($inputEl.parents('thead').length > 0) {\n        if (columnIndex === 0) {\n          $el.find('tbody tr')[checked ? 'addClass' : 'removeClass']('data-table-row-selected');\n        }\n        $el\n          .find(`tbody tr td:nth-child(${columnIndex + 1}) input`)\n          .prop('checked', checked)\n          .trigger('change', { sentByF7DataTable: true });\n        $inputEl.prop('indeterminate', false);\n      } else {\n        if (columnIndex === 0) {\n          $inputEl.parents('tr')[checked ? 'addClass' : 'removeClass']('data-table-row-selected');\n        }\n        const checkedRows = $el.find(\n          `tbody .checkbox-cell:nth-child(${columnIndex + 1}) input[type=\"checkbox\"]:checked`,\n        ).length;\n        const totalRows = $el.find('tbody tr').length;\n        const $headCheckboxEl = $el.find(\n          `thead .checkbox-cell:nth-child(${columnIndex + 1}) input[type=\"checkbox\"]`,\n        );\n        if (!checked) {\n          $headCheckboxEl.prop('checked', false);\n        } else if (checkedRows === totalRows) {\n          $headCheckboxEl.prop('checked', true).trigger('change', { sentByF7DataTable: true });\n        }\n        $headCheckboxEl.prop('indeterminate', checkedRows > 0 && checkedRows < totalRows);\n      }\n      table.checkSelectedHeader();\n    }\n    function handleSortableClick() {\n      const $cellEl = $(this);\n      const isActive = $cellEl.hasClass('sortable-cell-active');\n      const currentSort = $cellEl.hasClass('sortable-desc') ? 'desc' : 'asc';\n      let newSort;\n      if (isActive) {\n        newSort = currentSort === 'desc' ? 'asc' : 'desc';\n        $cellEl.removeClass('sortable-desc sortable-asc').addClass(`sortable-${newSort}`);\n      } else {\n        $el.find('thead .sortable-cell-active').removeClass('sortable-cell-active');\n        $cellEl.addClass('sortable-cell-active');\n        newSort = currentSort;\n      }\n      $cellEl.trigger('datatable:sort', newSort);\n      table.emit('local::sort dataTableSort', table, newSort);\n    }\n    table.attachEvents = function attachEvents() {\n      table.$el.on('change', '.checkbox-cell input[type=\"checkbox\"]', handleChange);\n      table.$el.find('thead .sortable-cell').on('click', handleSortableClick);\n    };\n    table.detachEvents = function detachEvents() {\n      table.$el.off('change', '.checkbox-cell input[type=\"checkbox\"]', handleChange);\n      table.$el.find('thead .sortable-cell').off('click', handleSortableClick);\n    };\n\n    // Install Modules\n    table.useModules();\n\n    // Init\n    table.init();\n\n    return table;\n  }\n\n  setCollapsibleLabels() {\n    const table = this;\n    if (!table.collapsible) return;\n    table.$el.find('tbody td:not(.checkbox-cell)').each((el) => {\n      const $el = $(el);\n      const elIndex = $el.index();\n      const collapsibleTitle = $el.attr('data-collapsible-title');\n      if (!collapsibleTitle && collapsibleTitle !== '') {\n        $el.attr('data-collapsible-title', table.$el.find('thead th').eq(elIndex).text());\n      }\n    });\n  }\n\n  checkSelectedHeader() {\n    const table = this;\n    if (table.$headerEl.length > 0 && table.$headerSelectedEl.length > 0) {\n      const checkedItems = table.$el.find('tbody .checkbox-cell input:checked').length;\n      table.$el[checkedItems > 0 ? 'addClass' : 'removeClass']('data-table-has-checked');\n      table.$headerSelectedEl.find('.data-table-selected-count').text(checkedItems);\n    }\n  }\n\n  init() {\n    const table = this;\n    table.attachEvents();\n    table.setCollapsibleLabels();\n    table.checkSelectedHeader();\n  }\n\n  destroy() {\n    let table = this;\n\n    table.$el.trigger('datatable:beforedestroy');\n    table.emit('local::beforeDestroy dataTableBeforeDestroy', table);\n\n    table.detachEvents();\n\n    if (table.$el[0]) {\n      table.$el[0].f7DataTable = null;\n      delete table.$el[0].f7DataTable;\n    }\n    deleteProps(table);\n    table = null;\n  }\n}\n\nexport default DataTable;\n","import $ from '../../shared/dom7.js';\nimport DataTable from './data-table-class.js';\nimport ConstructorMethods from '../../shared/constructor-methods.js';\n\nexport default {\n  name: 'dataTable',\n  static: {\n    DataTable,\n  },\n  create() {\n    const app = this;\n    app.dataTable = ConstructorMethods({\n      defaultSelector: '.data-table',\n      constructor: DataTable,\n      app,\n      domProp: 'f7DataTable',\n    });\n  },\n  on: {\n    tabBeforeRemove(tabEl) {\n      const app = this;\n      $(tabEl)\n        .find('.data-table-init')\n        .each((tableEl) => {\n          app.dataTable.destroy(tableEl);\n        });\n    },\n    tabMounted(tabEl) {\n      const app = this;\n      $(tabEl)\n        .find('.data-table-init')\n        .each((tableEl) => {\n          app.dataTable.create({ el: tableEl });\n        });\n    },\n    pageBeforeRemove(page) {\n      const app = this;\n      page.$el.find('.data-table-init').each((tableEl) => {\n        app.dataTable.destroy(tableEl);\n      });\n    },\n    pageInit(page) {\n      const app = this;\n      page.$el.find('.data-table-init').each((tableEl) => {\n        app.dataTable.create({ el: tableEl });\n      });\n    },\n  },\n  vnode: {\n    'data-table-init': {\n      insert(vnode) {\n        const app = this;\n        const tableEl = vnode.elm;\n        app.dataTable.create({ el: tableEl });\n      },\n      destroy(vnode) {\n        const app = this;\n        const tableEl = vnode.elm;\n        app.dataTable.destroy(tableEl);\n      },\n    },\n  },\n};\n","import $ from '../../shared/dom7.js';\nimport { bindMethods, getTranslate, nextFrame } from '../../shared/utils.js';\n\nconst Fab = {\n  morphOpen(fabEl, targetEl) {\n    const app = this;\n    const $fabEl = $(fabEl);\n    const $targetEl = $(targetEl);\n    if ($targetEl.length === 0) return;\n\n    $targetEl.transition(0).addClass('fab-morph-target-visible');\n    const target = {\n      width: $targetEl[0].offsetWidth,\n      height: $targetEl[0].offsetHeight,\n      offset: $targetEl.offset(),\n      borderRadius: $targetEl.css('border-radius'),\n      zIndex: $targetEl.css('z-index'),\n    };\n    const fab = {\n      width: $fabEl[0].offsetWidth,\n      height: $fabEl[0].offsetHeight,\n      offset: $fabEl.offset(),\n      translateX: getTranslate($fabEl[0], 'x'),\n      translateY: getTranslate($fabEl[0], 'y'),\n    };\n\n    $fabEl[0].f7FabMorphData = {\n      $targetEl,\n      target,\n      fab,\n    };\n\n    const diffX =\n      fab.offset.left + fab.width / 2 - (target.offset.left + target.width / 2) - fab.translateX;\n    const diffY =\n      fab.offset.top + fab.height / 2 - (target.offset.top + target.height / 2) - fab.translateY;\n    const scaleX = target.width / fab.width;\n    const scaleY = target.height / fab.height;\n\n    let borderRadius = Math.ceil(parseInt(target.borderRadius, 10) / Math.max(scaleX, scaleY));\n    if (borderRadius > 0) borderRadius += 2;\n\n    $fabEl[0].f7FabMorphResizeHandler = function resizeHandler() {\n      $fabEl.transition(0).transform('');\n      $targetEl.transition(0);\n      target.width = $targetEl[0].offsetWidth;\n      target.height = $targetEl[0].offsetHeight;\n      target.offset = $targetEl.offset();\n      fab.offset = $fabEl.offset();\n\n      const diffXNew =\n        fab.offset.left + fab.width / 2 - (target.offset.left + target.width / 2) - fab.translateX;\n      const diffYNew =\n        fab.offset.top + fab.height / 2 - (target.offset.top + target.height / 2) - fab.translateY;\n      const scaleXNew = target.width / fab.width;\n      const scaleYNew = target.height / fab.height;\n\n      $fabEl.transform(\n        `translate3d(${-diffXNew}px, ${-diffYNew}px, 0) scale(${scaleXNew}, ${scaleYNew})`,\n      );\n    };\n\n    $targetEl.css('opacity', 0).transform(`scale(${1 / scaleX}, ${1 / scaleY})`);\n    $fabEl\n      .addClass('fab-opened')\n      .css('z-index', target.zIndex - 1)\n      .transform(`translate3d(${-diffX}px, ${-diffY}px, 0)`);\n    $fabEl.transitionEnd(() => {\n      $targetEl.transition('');\n      nextFrame(() => {\n        $targetEl.css('opacity', 1).transform('scale(1,1)');\n        $fabEl\n          .transform(`translate3d(${-diffX}px, ${-diffY}px, 0) scale(${scaleX}, ${scaleY})`)\n          .css('border-radius', `${borderRadius}px`)\n          .css('box-shadow', 'none')\n          .css('opacity', '0');\n      });\n      app.on('resize', $fabEl[0].f7FabMorphResizeHandler);\n      if ($targetEl.parents('.page-content').length > 0) {\n        $targetEl.parents('.page-content').on('scroll', $fabEl[0].f7FabMorphResizeHandler);\n      }\n    });\n  },\n  morphClose(fabEl) {\n    const app = this;\n    const $fabEl = $(fabEl);\n    const morphData = $fabEl[0].f7FabMorphData;\n    if (!morphData) return;\n    const { $targetEl, target, fab } = morphData;\n    if ($targetEl.length === 0) return;\n\n    const diffX =\n      fab.offset.left + fab.width / 2 - (target.offset.left + target.width / 2) - fab.translateX;\n    const diffY =\n      fab.offset.top + fab.height / 2 - (target.offset.top + target.height / 2) - fab.translateY;\n    const scaleX = target.width / fab.width;\n    const scaleY = target.height / fab.height;\n\n    app.off('resize', $fabEl[0].f7FabMorphResizeHandler);\n    if ($targetEl.parents('.page-content').length > 0) {\n      $targetEl.parents('.page-content').off('scroll', $fabEl[0].f7FabMorphResizeHandler);\n    }\n\n    $targetEl.css('opacity', 0).transform(`scale(${1 / scaleX}, ${1 / scaleY})`);\n    $fabEl\n      .transition('')\n      .css('box-shadow', '')\n      .css('border-radius', '')\n      .css('opacity', '1')\n      .transform(`translate3d(${-diffX}px, ${-diffY}px, 0)`);\n    $fabEl.transitionEnd(() => {\n      $fabEl.css('z-index', '').removeClass('fab-opened').transform('');\n      nextFrame(() => {\n        $fabEl.transitionEnd(() => {\n          $targetEl\n            .removeClass('fab-morph-target-visible')\n            .css('opacity', '')\n            .transform('')\n            .transition('');\n        });\n      });\n    });\n  },\n  open(fabEl, targetEl) {\n    const app = this;\n    const $fabEl = $(fabEl).eq(0);\n    const $buttonsEl = $fabEl.find('.fab-buttons');\n    if (!$fabEl.length) return;\n    if ($fabEl.hasClass('fab-opened')) return;\n    if (!$buttonsEl.length && !$fabEl.hasClass('fab-morph')) return;\n\n    if (app.fab.openedEl) {\n      if (app.fab.openedEl === $fabEl[0]) return;\n      app.fab.close(app.fab.openedEl);\n    }\n    app.fab.openedEl = $fabEl[0];\n    if ($fabEl.hasClass('fab-morph')) {\n      app.fab.morphOpen($fabEl, targetEl || $fabEl.attr('data-morph-to'));\n    } else {\n      $fabEl.addClass('fab-opened');\n    }\n    $fabEl.siblings('.fab-backdrop').addClass('backdrop-in');\n    $fabEl.trigger('fab:open');\n  },\n  close(fabEl = '.fab-opened') {\n    const app = this;\n    const $fabEl = $(fabEl).eq(0);\n    const $buttonsEl = $fabEl.find('.fab-buttons');\n    if (!$fabEl.length) return;\n    if (!$fabEl.hasClass('fab-opened')) return;\n    if (!$buttonsEl.length && !$fabEl.hasClass('fab-morph')) return;\n    app.fab.openedEl = null;\n    if ($fabEl.hasClass('fab-morph')) {\n      app.fab.morphClose($fabEl);\n    } else {\n      $fabEl.removeClass('fab-opened');\n    }\n    $fabEl.siblings('.fab-backdrop').removeClass('backdrop-in');\n    $fabEl.trigger('fab:close');\n  },\n  toggle(fabEl) {\n    const app = this;\n    const $fabEl = $(fabEl);\n    if (!$fabEl.hasClass('fab-opened')) app.fab.open(fabEl);\n    else app.fab.close(fabEl);\n  },\n};\n\nexport default {\n  name: 'fab',\n  create() {\n    const app = this;\n    bindMethods(app, {\n      fab: {\n        openedEl: null,\n        ...Fab,\n      },\n    });\n  },\n  clicks: {\n    '.fab > a': function open($clickedEl) {\n      const app = this;\n      app.fab.toggle($clickedEl.parents('.fab'));\n    },\n    '.fab-open': function open($clickedEl, data = {}) {\n      const app = this;\n      app.fab.open(data.fab);\n    },\n    '.fab-close': function close($clickedEl, data = {}) {\n      const app = this;\n      app.fab.close(data.fab);\n    },\n    '.fab-backdrop': function close() {\n      const app = this;\n      app.fab.close();\n    },\n  },\n};\n","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { extend, nextTick, deleteProps } from '../../shared/utils.js';\nimport FrameworkClass from '../../shared/class.js';\nimport { getDevice } from '../../shared/get-device.js';\nimport removeDiacritics from './remove-diacritics.js';\n\nclass Searchbar extends FrameworkClass {\n  constructor(app, params = {}) {\n    super(params, [app]);\n\n    const sb = this;\n\n    const defaults = {\n      el: undefined,\n      inputEl: undefined,\n      inputEvents: 'change input compositionend',\n      disableButton: true,\n      disableButtonEl: undefined,\n      backdropEl: undefined,\n      searchContainer: undefined, // container to search, HTMLElement or CSS selector\n      searchItem: 'li', // single item selector, CSS selector\n      searchIn: undefined, // where to search in item, CSS selector\n      searchGroup: '.list-group',\n      searchGroupTitle: '.list-group-title',\n      ignore: '.searchbar-ignore',\n      foundEl: '.searchbar-found',\n      notFoundEl: '.searchbar-not-found',\n      hideOnEnableEl: '.searchbar-hide-on-enable',\n      hideOnSearchEl: '.searchbar-hide-on-search',\n      backdrop: true,\n      removeDiacritics: true,\n      customSearch: false,\n      hideGroupTitles: true,\n      hideGroups: true,\n      disableOnBackdropClick: true,\n      expandable: false,\n      inline: false,\n    };\n\n    // Extend defaults with modules params\n    sb.useModulesParams(defaults);\n\n    sb.params = extend(defaults, params);\n\n    const $el = $(sb.params.el);\n    if ($el.length === 0) return sb;\n\n    if ($el[0].f7Searchbar) return $el[0].f7Searchbar;\n\n    $el[0].f7Searchbar = sb;\n\n    let $pageEl;\n    const $navbarEl = $el.parents('.navbar');\n    if ($el.parents('.page').length > 0) {\n      $pageEl = $el.parents('.page');\n    } else if ($navbarEl.length > 0) {\n      $pageEl = $(app.navbar.getPageByEl($navbarEl[0]));\n      if (!$pageEl.length) {\n        const $currentPageEl = $el.parents('.view').find('.page-current');\n        if (\n          $currentPageEl[0] &&\n          $currentPageEl[0].f7Page &&\n          $currentPageEl[0].f7Page.navbarEl === $navbarEl[0]\n        ) {\n          $pageEl = $currentPageEl;\n        }\n      }\n    }\n\n    let $foundEl;\n    if (params.foundEl) {\n      $foundEl = $(params.foundEl);\n    } else if (typeof sb.params.foundEl === 'string' && $pageEl) {\n      $foundEl = $pageEl.find(sb.params.foundEl);\n    }\n\n    let $notFoundEl;\n    if (params.notFoundEl) {\n      $notFoundEl = $(params.notFoundEl);\n    } else if (typeof sb.params.notFoundEl === 'string' && $pageEl) {\n      $notFoundEl = $pageEl.find(sb.params.notFoundEl);\n    }\n\n    let $hideOnEnableEl;\n    if (params.hideOnEnableEl) {\n      $hideOnEnableEl = $(params.hideOnEnableEl);\n    } else if (typeof sb.params.hideOnEnableEl === 'string' && $pageEl) {\n      $hideOnEnableEl = $pageEl.find(sb.params.hideOnEnableEl);\n    }\n\n    let $hideOnSearchEl;\n    if (params.hideOnSearchEl) {\n      $hideOnSearchEl = $(params.hideOnSearchEl);\n    } else if (typeof sb.params.hideOnSearchEl === 'string' && $pageEl) {\n      $hideOnSearchEl = $pageEl.find(sb.params.hideOnSearchEl);\n    }\n\n    const expandable = sb.params.expandable || $el.hasClass('searchbar-expandable');\n    const inline = sb.params.inline || $el.hasClass('searchbar-inline');\n\n    if (typeof sb.params.backdrop === 'undefined') {\n      sb.params.backdrop = !inline;\n    }\n\n    let $backdropEl;\n    if (sb.params.backdrop) {\n      if (sb.params.backdropEl) {\n        $backdropEl = $(sb.params.backdropEl);\n      } else if ($pageEl && $pageEl.length > 0) {\n        $backdropEl = $pageEl.find('.searchbar-backdrop');\n      } else {\n        $backdropEl = $el.siblings('.searchbar-backdrop');\n      }\n      if ($backdropEl.length === 0) {\n        $backdropEl = $('<div class=\"searchbar-backdrop\"></div>');\n        if ($pageEl && $pageEl.length) {\n          if ($el.parents($pageEl).length > 0 && $navbarEl && $el.parents($navbarEl).length === 0) {\n            $backdropEl.insertBefore($el);\n          } else {\n            $backdropEl.insertBefore($pageEl.find('.page-content').eq(0));\n          }\n        } else {\n          $backdropEl.insertBefore($el);\n        }\n      }\n    }\n\n    let $searchContainer;\n    if (sb.params.searchContainer) {\n      $searchContainer = $(sb.params.searchContainer);\n    }\n\n    let $inputEl;\n    if (sb.params.inputEl) {\n      $inputEl = $(sb.params.inputEl);\n    } else {\n      $inputEl = $el.find('input[type=\"search\"]').eq(0);\n    }\n\n    let $disableButtonEl;\n    if (sb.params.disableButton) {\n      if (sb.params.disableButtonEl) {\n        $disableButtonEl = $(sb.params.disableButtonEl);\n      } else {\n        $disableButtonEl = $el.find('.searchbar-disable-button');\n      }\n    }\n\n    extend(sb, {\n      app,\n      view: app.views.get($el.parents('.view')),\n      $el,\n      el: $el[0],\n      $backdropEl,\n      backdropEl: $backdropEl && $backdropEl[0],\n      $searchContainer,\n      searchContainer: $searchContainer && $searchContainer[0],\n      $inputEl,\n      inputEl: $inputEl[0],\n      $disableButtonEl,\n      disableButtonEl: $disableButtonEl && $disableButtonEl[0],\n      disableButtonHasMargin: false,\n      $pageEl,\n      pageEl: $pageEl && $pageEl[0],\n      $navbarEl,\n      navbarEl: $navbarEl && $navbarEl[0],\n      $foundEl,\n      foundEl: $foundEl && $foundEl[0],\n      $notFoundEl,\n      notFoundEl: $notFoundEl && $notFoundEl[0],\n      $hideOnEnableEl,\n      hideOnEnableEl: $hideOnEnableEl && $hideOnEnableEl[0],\n      $hideOnSearchEl,\n      hideOnSearchEl: $hideOnSearchEl && $hideOnSearchEl[0],\n      previousQuery: '',\n      query: '',\n      isVirtualList: $searchContainer && $searchContainer.hasClass('virtual-list'),\n      virtualList: undefined,\n      enabled: false,\n      expandable,\n      inline,\n    });\n\n    // Events\n    function preventSubmit(e) {\n      e.preventDefault();\n    }\n    function onInputFocus(e) {\n      sb.enable(e);\n      sb.$el.addClass('searchbar-focused');\n    }\n    function onInputBlur() {\n      sb.$el.removeClass('searchbar-focused');\n    }\n    function onInputChange() {\n      const value = sb.$inputEl.val().trim();\n      if (\n        (sb.$searchContainer &&\n          sb.$searchContainer.length > 0 &&\n          (sb.params.searchIn ||\n            sb.isVirtualList ||\n            sb.params.searchIn === sb.params.searchItem)) ||\n        sb.params.customSearch\n      ) {\n        sb.search(value, true);\n      }\n    }\n    function onInputClear(e, previousValue) {\n      sb.$el.trigger('searchbar:clear', previousValue);\n      sb.emit('local::clear searchbarClear', sb, previousValue);\n    }\n    function disableOnClick(e) {\n      sb.disable(e);\n    }\n    function onPageBeforeOut() {\n      if (!sb || (sb && !sb.$el)) return;\n      if (sb.enabled) {\n        sb.$el.removeClass('searchbar-enabled');\n        if (sb.expandable) {\n          sb.$el\n            .parents('.navbar')\n            .removeClass(\n              'with-searchbar-expandable-enabled with-searchbar-expandable-enabled-no-transition',\n            );\n        }\n      }\n    }\n    function onPageBeforeIn() {\n      if (!sb || (sb && !sb.$el)) return;\n      if (sb.enabled) {\n        sb.$el.addClass('searchbar-enabled');\n        if (sb.expandable) {\n          sb.$el.parents('.navbar').addClass('with-searchbar-expandable-enabled-no-transition');\n        }\n      }\n    }\n    sb.attachEvents = function attachEvents() {\n      $el.on('submit', preventSubmit);\n      if (sb.params.disableButton) {\n        sb.$disableButtonEl.on('click', disableOnClick);\n      }\n      if (sb.params.disableOnBackdropClick && sb.$backdropEl) {\n        sb.$backdropEl.on('click', disableOnClick);\n      }\n      if (sb.expandable && app.theme === 'ios' && sb.view && $navbarEl.length && sb.$pageEl) {\n        sb.$pageEl.on('page:beforeout', onPageBeforeOut);\n        sb.$pageEl.on('page:beforein', onPageBeforeIn);\n      }\n      sb.$inputEl.on('focus', onInputFocus);\n      sb.$inputEl.on('blur', onInputBlur);\n      sb.$inputEl.on(sb.params.inputEvents, onInputChange);\n      sb.$inputEl.on('input:clear', onInputClear);\n    };\n    sb.detachEvents = function detachEvents() {\n      $el.off('submit', preventSubmit);\n      if (sb.params.disableButton) {\n        sb.$disableButtonEl.off('click', disableOnClick);\n      }\n      if (sb.params.disableOnBackdropClick && sb.$backdropEl) {\n        sb.$backdropEl.off('click', disableOnClick);\n      }\n      if (sb.expandable && app.theme === 'ios' && sb.view && $navbarEl.length && sb.$pageEl) {\n        sb.$pageEl.off('page:beforeout', onPageBeforeOut);\n        sb.$pageEl.off('page:beforein', onPageBeforeIn);\n      }\n      sb.$inputEl.off('focus', onInputFocus);\n      sb.$inputEl.off('blur', onInputBlur);\n      sb.$inputEl.off(sb.params.inputEvents, onInputChange);\n      sb.$inputEl.off('input:clear', onInputClear);\n    };\n\n    // Install Modules\n    sb.useModules();\n\n    // Init\n    sb.init();\n\n    return sb;\n  }\n\n  clear(e) {\n    const sb = this;\n    if (!sb.query && e && $(e.target).hasClass('searchbar-clear')) {\n      sb.disable();\n      return sb;\n    }\n    const previousQuery = sb.value;\n    sb.$inputEl.val('').trigger('change').focus();\n    sb.$el.trigger('searchbar:clear', previousQuery);\n    sb.emit('local::clear searchbarClear', sb, previousQuery);\n    return sb;\n  }\n\n  setDisableButtonMargin() {\n    const sb = this;\n    if (sb.expandable) return;\n    const app = sb.app;\n    sb.$disableButtonEl.transition(0).show();\n    sb.$disableButtonEl.css(\n      `margin-${app.rtl ? 'left' : 'right'}`,\n      `${-sb.disableButtonEl.offsetWidth}px`,\n    );\n    /* eslint no-underscore-dangle: [\"error\", { \"allow\": [\"_clientLeft\"] }] */\n    sb._clientLeft = sb.$disableButtonEl[0].clientLeft;\n    sb.$disableButtonEl.transition('');\n    sb.disableButtonHasMargin = true;\n  }\n\n  enable(setFocus) {\n    const sb = this;\n    if (sb.enabled) return sb;\n    const app = sb.app;\n    const document = getDocument();\n    const device = getDevice();\n\n    sb.enabled = true;\n    function enable() {\n      if (\n        sb.$backdropEl &&\n        ((sb.$searchContainer && sb.$searchContainer.length) || sb.params.customSearch) &&\n        !sb.$el.hasClass('searchbar-enabled') &&\n        !sb.query\n      ) {\n        sb.backdropShow();\n      }\n      sb.$el.addClass('searchbar-enabled');\n      if (!sb.$disableButtonEl || (sb.$disableButtonEl && sb.$disableButtonEl.length === 0)) {\n        sb.$el.addClass('searchbar-enabled-no-disable-button');\n      }\n      if (\n        !sb.expandable &&\n        sb.$disableButtonEl &&\n        sb.$disableButtonEl.length > 0 &&\n        app.theme !== 'md'\n      ) {\n        if (!sb.disableButtonHasMargin) {\n          sb.setDisableButtonMargin();\n        }\n        sb.$disableButtonEl.css(`margin-${app.rtl ? 'left' : 'right'}`, '0px');\n      }\n      if (sb.expandable) {\n        const $navbarEl = sb.$el.parents('.navbar');\n        if ($navbarEl.hasClass('navbar-large') && sb.$pageEl) {\n          const $pageContentEl = sb.$pageEl.find('.page-content');\n          const $titleLargeEl = $navbarEl.find('.title-large');\n          $pageContentEl.addClass('with-searchbar-expandable-enabled');\n          if (\n            $navbarEl.hasClass('navbar-large') &&\n            $navbarEl.hasClass('navbar-large-collapsed') &&\n            $titleLargeEl.length &&\n            $pageContentEl.length\n          ) {\n            $pageContentEl.transition(0);\n            $pageContentEl[0].scrollTop -= $titleLargeEl[0].offsetHeight;\n            setTimeout(() => {\n              $pageContentEl.transition('');\n            }, 200);\n          }\n        }\n        if (app.theme === 'md' && $navbarEl.length) {\n          $navbarEl.addClass('with-searchbar-expandable-enabled');\n        } else {\n          $navbarEl.addClass('with-searchbar-expandable-enabled');\n          if ($navbarEl.hasClass('navbar-large')) {\n            $navbarEl.addClass('navbar-large-collapsed');\n          }\n        }\n      }\n      if (sb.$hideOnEnableEl) sb.$hideOnEnableEl.addClass('hidden-by-searchbar');\n      sb.$el.trigger('searchbar:enable');\n      sb.emit('local::enable searchbarEnable', sb);\n    }\n    let needsFocus = false;\n    if (setFocus === true) {\n      if (document.activeElement !== sb.inputEl) {\n        needsFocus = true;\n      }\n    }\n    const isIos = device.ios && app.theme === 'ios';\n    if (isIos) {\n      if (sb.expandable) {\n        if (needsFocus) sb.$inputEl.focus();\n        enable();\n      } else {\n        if (needsFocus) sb.$inputEl.focus();\n        if (setFocus && (setFocus.type === 'focus' || setFocus === true)) {\n          nextTick(() => {\n            enable();\n          }, 400);\n        } else {\n          enable();\n        }\n      }\n    } else {\n      if (needsFocus) sb.$inputEl.focus();\n      if (app.theme === 'md' && sb.expandable) {\n        sb.$el.parents('.page, .view, .navbar-inner, .navbar').scrollLeft(app.rtl ? 100 : 0);\n      }\n      enable();\n    }\n    return sb;\n  }\n\n  disable() {\n    const sb = this;\n    if (!sb.enabled) return sb;\n    const app = sb.app;\n    sb.$inputEl.val('').trigger('change');\n    sb.$el.removeClass('searchbar-enabled searchbar-focused searchbar-enabled-no-disable-button');\n    if (sb.expandable) {\n      const $navbarEl = sb.$el.parents('.navbar');\n      const $pageContentEl = sb.$pageEl && sb.$pageEl.find('.page-content');\n\n      if ($navbarEl.hasClass('navbar-large') && $pageContentEl.length) {\n        const $titleLargeEl = $navbarEl.find('.title-large');\n        sb.$el.transitionEnd(() => {\n          $pageContentEl.removeClass('with-searchbar-expandable-closing');\n        });\n        if (\n          $navbarEl.hasClass('navbar-large') &&\n          $navbarEl.hasClass('navbar-large-collapsed') &&\n          $titleLargeEl.length\n        ) {\n          const scrollTop = $pageContentEl[0].scrollTop;\n          const titleLargeHeight = $titleLargeEl[0].offsetHeight;\n          if (scrollTop > titleLargeHeight) {\n            $pageContentEl.transition(0);\n            $pageContentEl[0].scrollTop = scrollTop + titleLargeHeight;\n            setTimeout(() => {\n              $pageContentEl.transition('');\n            }, 200);\n          }\n        }\n        $pageContentEl\n          .removeClass('with-searchbar-expandable-enabled')\n          .addClass('with-searchbar-expandable-closing');\n      }\n      if (app.theme === 'md' && $navbarEl.length) {\n        $navbarEl\n          .removeClass(\n            'with-searchbar-expandable-enabled with-searchbar-expandable-enabled-no-transition',\n          )\n          .addClass('with-searchbar-expandable-closing');\n        sb.$el.transitionEnd(() => {\n          $navbarEl.removeClass('with-searchbar-expandable-closing');\n        });\n      } else {\n        $navbarEl\n          .removeClass(\n            'with-searchbar-expandable-enabled with-searchbar-expandable-enabled-no-transition',\n          )\n          .addClass('with-searchbar-expandable-closing');\n        sb.$el.transitionEnd(() => {\n          $navbarEl.removeClass('with-searchbar-expandable-closing');\n        });\n        if (sb.$pageEl) {\n          sb.$pageEl.find('.page-content').trigger('scroll');\n        }\n      }\n    }\n    if (\n      !sb.expandable &&\n      sb.$disableButtonEl &&\n      sb.$disableButtonEl.length > 0 &&\n      app.theme !== 'md'\n    ) {\n      sb.$disableButtonEl.css(\n        `margin-${app.rtl ? 'left' : 'right'}`,\n        `${-sb.disableButtonEl.offsetWidth}px`,\n      );\n    }\n    if (\n      sb.$backdropEl &&\n      ((sb.$searchContainer && sb.$searchContainer.length) || sb.params.customSearch)\n    ) {\n      sb.backdropHide();\n    }\n\n    sb.enabled = false;\n\n    sb.$inputEl.blur();\n\n    if (sb.$hideOnEnableEl) sb.$hideOnEnableEl.removeClass('hidden-by-searchbar');\n\n    sb.$el.trigger('searchbar:disable');\n    sb.emit('local::disable searchbarDisable', sb);\n    return sb;\n  }\n\n  toggle() {\n    const sb = this;\n    if (sb.enabled) sb.disable();\n    else sb.enable(true);\n    return sb;\n  }\n\n  backdropShow() {\n    const sb = this;\n    if (sb.$backdropEl) {\n      sb.$backdropEl.addClass('searchbar-backdrop-in');\n    }\n    return sb;\n  }\n\n  backdropHide() {\n    const sb = this;\n    if (sb.$backdropEl) {\n      sb.$backdropEl.removeClass('searchbar-backdrop-in');\n    }\n    return sb;\n  }\n\n  search(query, internal) {\n    const sb = this;\n    sb.previousQuery = sb.query || '';\n    if (query === sb.previousQuery) return sb;\n\n    if (!internal) {\n      if (!sb.enabled) {\n        sb.enable();\n      }\n      sb.$inputEl.val(query);\n      sb.$inputEl.trigger('input');\n    }\n    sb.query = query;\n    sb.value = query;\n\n    const { $searchContainer, $el, $foundEl, $notFoundEl, $hideOnSearchEl, isVirtualList } = sb;\n\n    // Hide on search element\n    if (query.length > 0 && $hideOnSearchEl) {\n      $hideOnSearchEl.addClass('hidden-by-searchbar');\n    } else if ($hideOnSearchEl) {\n      $hideOnSearchEl.removeClass('hidden-by-searchbar');\n    }\n    // Add active/inactive classes on overlay\n    if (\n      ($searchContainer && $searchContainer.length && $el.hasClass('searchbar-enabled')) ||\n      (sb.params.customSearch && $el.hasClass('searchbar-enabled'))\n    ) {\n      if (query.length === 0) {\n        sb.backdropShow();\n      } else {\n        sb.backdropHide();\n      }\n    }\n\n    if (sb.params.customSearch) {\n      $el.trigger('searchbar:search', { query, previousQuery: sb.previousQuery });\n      sb.emit('local::search searchbarSearch', sb, query, sb.previousQuery);\n      return sb;\n    }\n\n    let foundItems = [];\n    let vlQuery;\n    if (isVirtualList) {\n      sb.virtualList = $searchContainer[0].f7VirtualList;\n      if (query.trim() === '') {\n        sb.virtualList.resetFilter();\n        if ($notFoundEl) $notFoundEl.hide();\n        if ($foundEl) $foundEl.show();\n        $el.trigger('searchbar:search', { query, previousQuery: sb.previousQuery });\n        sb.emit('local::search searchbarSearch', sb, query, sb.previousQuery);\n        return sb;\n      }\n      vlQuery = sb.params.removeDiacritics ? removeDiacritics(query) : query;\n      if (sb.virtualList.params.searchAll) {\n        foundItems = sb.virtualList.params.searchAll(vlQuery, sb.virtualList.items) || [];\n      } else if (sb.virtualList.params.searchByItem) {\n        for (let i = 0; i < sb.virtualList.items.length; i += 1) {\n          if (sb.virtualList.params.searchByItem(vlQuery, sb.virtualList.items[i], i)) {\n            foundItems.push(i);\n          }\n        }\n      }\n    } else {\n      let values;\n      if (sb.params.removeDiacritics)\n        values = removeDiacritics(query.trim().toLowerCase()).split(' ');\n      else {\n        values = query.trim().toLowerCase().split(' ');\n      }\n      $searchContainer\n        .find(sb.params.searchItem)\n        .removeClass('hidden-by-searchbar')\n        .each((itemEl) => {\n          const $itemEl = $(itemEl);\n          let compareWithText = [];\n          let $searchIn = sb.params.searchIn ? $itemEl.find(sb.params.searchIn) : $itemEl;\n          if (sb.params.searchIn === sb.params.searchItem) {\n            $searchIn = $itemEl;\n          }\n          $searchIn.each((searchInEl) => {\n            let itemText = $(searchInEl).text().trim().toLowerCase();\n            if (sb.params.removeDiacritics) itemText = removeDiacritics(itemText);\n            compareWithText.push(itemText);\n          });\n          compareWithText = compareWithText.join(' ');\n          let wordsMatch = 0;\n          for (let i = 0; i < values.length; i += 1) {\n            if (compareWithText.indexOf(values[i]) >= 0) wordsMatch += 1;\n          }\n          if (wordsMatch !== values.length && !(sb.params.ignore && $itemEl.is(sb.params.ignore))) {\n            $itemEl.addClass('hidden-by-searchbar');\n          } else {\n            foundItems.push($itemEl[0]);\n          }\n        });\n\n      if (sb.params.hideGroupTitles) {\n        $searchContainer.find(sb.params.searchGroupTitle).each((titleEl) => {\n          const $titleEl = $(titleEl);\n          const $nextElements = $titleEl.nextAll(sb.params.searchItem);\n          let hide = true;\n          for (let i = 0; i < $nextElements.length; i += 1) {\n            const $nextEl = $nextElements.eq(i);\n            if ($nextEl.is(sb.params.searchGroupTitle)) break;\n            if (!$nextEl.hasClass('hidden-by-searchbar')) {\n              hide = false;\n            }\n          }\n          const ignore = sb.params.ignore && $titleEl.is(sb.params.ignore);\n          if (hide && !ignore) $titleEl.addClass('hidden-by-searchbar');\n          else $titleEl.removeClass('hidden-by-searchbar');\n        });\n      }\n      if (sb.params.hideGroups) {\n        $searchContainer.find(sb.params.searchGroup).each((groupEl) => {\n          const $groupEl = $(groupEl);\n          const ignore = sb.params.ignore && $groupEl.is(sb.params.ignore);\n          // eslint-disable-next-line\n          const notHidden = $groupEl.find(sb.params.searchItem).filter((el) => {\n            return !$(el).hasClass('hidden-by-searchbar');\n          });\n          if (notHidden.length === 0 && !ignore) {\n            $groupEl.addClass('hidden-by-searchbar');\n          } else {\n            $groupEl.removeClass('hidden-by-searchbar');\n          }\n        });\n      }\n    }\n\n    if (foundItems.length === 0) {\n      if ($notFoundEl) $notFoundEl.show();\n      if ($foundEl) $foundEl.hide();\n    } else {\n      if ($notFoundEl) $notFoundEl.hide();\n      if ($foundEl) $foundEl.show();\n    }\n    if (isVirtualList && sb.virtualList) {\n      sb.virtualList.filterItems(foundItems);\n    }\n\n    $el.trigger('searchbar:search', { query, previousQuery: sb.previousQuery, foundItems });\n    sb.emit('local::search searchbarSearch', sb, query, sb.previousQuery, foundItems);\n\n    return sb;\n  }\n\n  init() {\n    const sb = this;\n    if (sb.expandable && sb.$el) sb.$el.addClass('searchbar-expandable');\n    if (sb.inline && sb.$el) sb.$el.addClass('searchbar-inline');\n    sb.attachEvents();\n  }\n\n  destroy() {\n    const sb = this;\n    sb.emit('local::beforeDestroy searchbarBeforeDestroy', sb);\n    sb.$el.trigger('searchbar:beforedestroy');\n    sb.detachEvents();\n    if (sb.$el[0]) {\n      sb.$el[0].f7Searchbar = null;\n      delete sb.$el[0].f7Searchbar;\n    }\n    deleteProps(sb);\n  }\n}\n\nexport default Searchbar;\n","import $ from '../../shared/dom7.js';\nimport { extend } from '../../shared/utils.js';\nimport Searchbar from './searchbar-class.js';\nimport ConstructorMethods from '../../shared/constructor-methods.js';\n\nexport default {\n  name: 'searchbar',\n  static: {\n    Searchbar,\n  },\n  create() {\n    const app = this;\n    app.searchbar = ConstructorMethods({\n      defaultSelector: '.searchbar',\n      constructor: Searchbar,\n      app,\n      domProp: 'f7Searchbar',\n      addMethods: 'clear enable disable toggle search'.split(' '),\n    });\n  },\n  on: {\n    tabMounted(tabEl) {\n      const app = this;\n      $(tabEl)\n        .find('.searchbar-init')\n        .each((searchbarEl) => {\n          const $searchbarEl = $(searchbarEl);\n          app.searchbar.create(extend($searchbarEl.dataset(), { el: searchbarEl }));\n        });\n    },\n    tabBeforeRemove(tabEl) {\n      $(tabEl)\n        .find('.searchbar-init')\n        .each((searchbarEl) => {\n          if (searchbarEl.f7Searchbar && searchbarEl.f7Searchbar.destroy) {\n            searchbarEl.f7Searchbar.destroy();\n          }\n        });\n    },\n    pageInit(page) {\n      const app = this;\n      page.$el.find('.searchbar-init').each((searchbarEl) => {\n        const $searchbarEl = $(searchbarEl);\n        app.searchbar.create(extend($searchbarEl.dataset(), { el: searchbarEl }));\n      });\n      if (\n        app.theme === 'ios' &&\n        page.view &&\n        page.view.router.dynamicNavbar &&\n        page.$navbarEl &&\n        page.$navbarEl.length > 0\n      ) {\n        page.$navbarEl.find('.searchbar-init').each((searchbarEl) => {\n          const $searchbarEl = $(searchbarEl);\n          app.searchbar.create(extend($searchbarEl.dataset(), { el: searchbarEl }));\n        });\n      }\n    },\n    pageBeforeRemove(page) {\n      const app = this;\n      page.$el.find('.searchbar-init').each((searchbarEl) => {\n        if (searchbarEl.f7Searchbar && searchbarEl.f7Searchbar.destroy) {\n          searchbarEl.f7Searchbar.destroy();\n        }\n      });\n      if (\n        app.theme === 'ios' &&\n        page.view &&\n        page.view.router.dynamicNavbar &&\n        page.$navbarEl &&\n        page.$navbarEl.length > 0\n      ) {\n        page.$navbarEl.find('.searchbar-init').each((searchbarEl) => {\n          if (searchbarEl.f7Searchbar && searchbarEl.f7Searchbar.destroy) {\n            searchbarEl.f7Searchbar.destroy();\n          }\n        });\n      }\n    },\n  },\n  clicks: {\n    '.searchbar-clear': function clear($clickedEl, data = {}) {\n      const app = this;\n      const sb = app.searchbar.get(data.searchbar);\n      if (sb) sb.clear();\n    },\n    '.searchbar-enable': function enable($clickedEl, data = {}) {\n      const app = this;\n      const sb = app.searchbar.get(data.searchbar);\n      if (sb) sb.enable(true);\n    },\n    '.searchbar-disable': function disable($clickedEl, data = {}) {\n      const app = this;\n      const sb = app.searchbar.get(data.searchbar);\n      if (sb) sb.disable();\n    },\n    '.searchbar-toggle': function toggle($clickedEl, data = {}) {\n      const app = this;\n      const sb = app.searchbar.get(data.searchbar);\n      if (sb) sb.toggle();\n    },\n  },\n  vnode: {\n    'searchbar-init': {\n      insert(vnode) {\n        const app = this;\n        const searchbarEl = vnode.elm;\n        const $searchbarEl = $(searchbarEl);\n        app.searchbar.create(extend($searchbarEl.dataset(), { el: searchbarEl }));\n      },\n      destroy(vnode) {\n        const searchbarEl = vnode.elm;\n        if (searchbarEl.f7Searchbar && searchbarEl.f7Searchbar.destroy) {\n          searchbarEl.f7Searchbar.destroy();\n        }\n      },\n    },\n  },\n};\n","import $ from '../../shared/dom7.js';\nimport { extend, deleteProps } from '../../shared/utils.js';\nimport Framework7Class from '../../shared/class.js';\n/** @jsx $jsx */\nimport $jsx from '../../shared/$jsx.js';\n\nclass Messages extends Framework7Class {\n  constructor(app, params = {}) {\n    super(params, [app]);\n\n    const m = this;\n\n    const defaults = {\n      autoLayout: true,\n      messages: [],\n      newMessagesFirst: false,\n      scrollMessages: true,\n      scrollMessagesOnEdge: true,\n      firstMessageRule: undefined,\n      lastMessageRule: undefined,\n      tailMessageRule: undefined,\n      sameNameMessageRule: undefined,\n      sameHeaderMessageRule: undefined,\n      sameFooterMessageRule: undefined,\n      sameAvatarMessageRule: undefined,\n      customClassMessageRule: undefined,\n      renderMessage: undefined,\n    };\n\n    // Extend defaults with modules params\n    m.useModulesParams(defaults);\n\n    m.params = extend(defaults, params);\n\n    const $el = $(params.el).eq(0);\n    if ($el.length === 0) return m;\n\n    if ($el[0].f7Messages) return $el[0].f7Messages;\n\n    $el[0].f7Messages = m;\n\n    const $pageContentEl = $el.closest('.page-content').eq(0);\n\n    extend(m, {\n      messages: m.params.messages,\n      $el,\n      el: $el[0],\n      $pageContentEl,\n      pageContentEl: $pageContentEl[0],\n    });\n    // Install Modules\n    m.useModules();\n\n    // Init\n    m.init();\n\n    return m;\n  }\n  // eslint-disable-next-line\n  getMessageData(messageEl) {\n    const $messageEl = $(messageEl);\n    const data = {\n      name: $messageEl.find('.message-name').html(),\n      header: $messageEl.find('.message-header').html(),\n      textHeader: $messageEl.find('.message-text-header').html(),\n      textFooter: $messageEl.find('.message-text-footer').html(),\n      footer: $messageEl.find('.message-footer').html(),\n      isTitle: $messageEl.hasClass('messages-title'),\n      type: $messageEl.hasClass('message-sent') ? 'sent' : 'received',\n      text: $messageEl.find('.message-text').html(),\n      image: $messageEl.find('.message-image').html(),\n      imageSrc: $messageEl.find('.message-image img').attr('src'),\n      typing: $messageEl.hasClass('message-typing'),\n    };\n    if (data.isTitle) {\n      data.text = $messageEl.html();\n    }\n    if (data.text && data.textHeader) {\n      data.text = data.text.replace(\n        `<div class=\"message-text-header\">${data.textHeader}</div>`,\n        '',\n      );\n    }\n    if (data.text && data.textFooter) {\n      data.text = data.text.replace(\n        `<div class=\"message-text-footer\">${data.textFooter}</div>`,\n        '',\n      );\n    }\n    let avatar = $messageEl.find('.message-avatar').css('background-image');\n    if (avatar === 'none' || avatar === '') avatar = undefined;\n    if (avatar && typeof avatar === 'string') {\n      avatar = avatar.replace('url(', '').replace(')', '').replace(/\"/g, '').replace(/'/g, '');\n    } else {\n      avatar = undefined;\n    }\n    data.avatar = avatar;\n\n    return data;\n  }\n\n  getMessagesData() {\n    const m = this;\n    const data = [];\n    m.$el.find('.message, .messages-title').each((messageEl) => {\n      data.push(m.getMessageData(messageEl));\n    });\n    return data;\n  }\n\n  renderMessage(messageToRender) {\n    const m = this;\n    const message = extend(\n      {\n        type: 'sent',\n        attrs: {},\n      },\n      messageToRender,\n    );\n    if (m.params.renderMessage) {\n      return m.params.renderMessage.call(m, message);\n    }\n    if (message.isTitle) {\n      return `<div class=\"messages-title\">${message.text}</div>`;\n    }\n    return (\n      <div\n        class={`message message-${message.type} ${message.isTyping ? 'message-typing' : ''} ${\n          message.cssClass || ''\n        }`}\n        {...message.attrs}\n      >\n        {message.avatar && (\n          <div class=\"message-avatar\" style={`background-image:url(${message.avatar})`}></div>\n        )}\n        <div class=\"message-content\">\n          {message.name && <div class=\"message-name\">{message.name}</div>}\n          {message.header && <div class=\"message-header\">{message.header}</div>}\n          <div class=\"message-bubble\">\n            {message.textHeader && <div class=\"message-text-header\">{message.textHeader}</div>}\n            {message.image && <div class=\"message-image\">{message.image}</div>}\n            {message.imageSrc && !message.image && (\n              <div class=\"message-image\">\n                <img src={message.imageSrc} />\n              </div>\n            )}\n            {(message.text || message.isTyping) && (\n              <div class=\"message-text\">\n                {message.text || ''}\n                {message.isTyping && (\n                  <div class=\"message-typing-indicator\">\n                    <div></div>\n                    <div></div>\n                    <div></div>\n                  </div>\n                )}\n              </div>\n            )}\n            {message.textFooter && <div class=\"message-text-footer\">{message.textFooter}</div>}\n          </div>\n          {message.footer && <div class=\"message-footer\">{message.footer}</div>}\n        </div>\n      </div>\n    );\n  }\n\n  renderMessages(\n    messagesToRender = this.messages,\n    method = this.params.newMessagesFirst ? 'prepend' : 'append',\n  ) {\n    const m = this;\n    const html = messagesToRender.map((message) => m.renderMessage(message)).join('');\n    m.$el[method](html);\n  }\n\n  isFirstMessage(...args) {\n    const m = this;\n    if (m.params.firstMessageRule) return m.params.firstMessageRule(...args);\n    return false;\n  }\n\n  isLastMessage(...args) {\n    const m = this;\n    if (m.params.lastMessageRule) return m.params.lastMessageRule(...args);\n    return false;\n  }\n\n  isTailMessage(...args) {\n    const m = this;\n    if (m.params.tailMessageRule) return m.params.tailMessageRule(...args);\n    return false;\n  }\n\n  isSameNameMessage(...args) {\n    const m = this;\n    if (m.params.sameNameMessageRule) return m.params.sameNameMessageRule(...args);\n    return false;\n  }\n\n  isSameHeaderMessage(...args) {\n    const m = this;\n    if (m.params.sameHeaderMessageRule) return m.params.sameHeaderMessageRule(...args);\n    return false;\n  }\n\n  isSameFooterMessage(...args) {\n    const m = this;\n    if (m.params.sameFooterMessageRule) return m.params.sameFooterMessageRule(...args);\n    return false;\n  }\n\n  isSameAvatarMessage(...args) {\n    const m = this;\n    if (m.params.sameAvatarMessageRule) return m.params.sameAvatarMessageRule(...args);\n    return false;\n  }\n\n  isCustomClassMessage(...args) {\n    const m = this;\n    if (m.params.customClassMessageRule) return m.params.customClassMessageRule(...args);\n    return undefined;\n  }\n\n  layout() {\n    const m = this;\n    m.$el.find('.message, .messages-title').each((messageEl, index) => {\n      const $messageEl = $(messageEl);\n      if (!m.messages) {\n        m.messages = m.getMessagesData();\n      }\n      const classes = [];\n      const message = m.messages[index];\n      const previousMessage = m.messages[index - 1];\n      const nextMessage = m.messages[index + 1];\n      if (m.isFirstMessage(message, previousMessage, nextMessage)) {\n        classes.push('message-first');\n      }\n      if (m.isLastMessage(message, previousMessage, nextMessage)) {\n        classes.push('message-last');\n      }\n      if (m.isTailMessage(message, previousMessage, nextMessage)) {\n        classes.push('message-tail');\n      }\n      if (m.isSameNameMessage(message, previousMessage, nextMessage)) {\n        classes.push('message-same-name');\n      }\n      if (m.isSameHeaderMessage(message, previousMessage, nextMessage)) {\n        classes.push('message-same-header');\n      }\n      if (m.isSameFooterMessage(message, previousMessage, nextMessage)) {\n        classes.push('message-same-footer');\n      }\n      if (m.isSameAvatarMessage(message, previousMessage, nextMessage)) {\n        classes.push('message-same-avatar');\n      }\n      let customMessageClasses = m.isCustomClassMessage(message, previousMessage, nextMessage);\n      if (customMessageClasses && customMessageClasses.length) {\n        if (typeof customMessageClasses === 'string') {\n          customMessageClasses = customMessageClasses.split(' ');\n        }\n        customMessageClasses.forEach((customClass) => {\n          classes.push(customClass);\n        });\n      }\n      $messageEl.removeClass(\n        'message-first message-last message-tail message-same-name message-same-header message-same-footer message-same-avatar',\n      );\n      classes.forEach((className) => {\n        $messageEl.addClass(className);\n      });\n    });\n  }\n\n  clear() {\n    const m = this;\n    m.messages = [];\n    m.$el.html('');\n  }\n\n  removeMessage(messageToRemove, layout = true) {\n    const m = this;\n    // Index or El\n    let index;\n    let $el;\n    if (typeof messageToRemove === 'number') {\n      index = messageToRemove;\n      $el = m.$el.find('.message, .messages-title').eq(index);\n    } else if (m.messages && m.messages.indexOf(messageToRemove) >= 0) {\n      index = m.messages.indexOf(messageToRemove);\n      $el = m.$el.children().eq(index);\n    } else {\n      $el = $(messageToRemove);\n      index = $el.index();\n    }\n    if ($el.length === 0) {\n      return m;\n    }\n    $el.remove();\n    m.messages.splice(index, 1);\n    if (m.params.autoLayout && layout) m.layout();\n    return m;\n  }\n\n  removeMessages(messagesToRemove, layout = true) {\n    const m = this;\n    if (Array.isArray(messagesToRemove)) {\n      const messagesToRemoveEls = [];\n      messagesToRemove.forEach((messageToRemoveIndex) => {\n        messagesToRemoveEls.push(m.$el.find('.message, .messages-title').eq(messageToRemoveIndex));\n      });\n      messagesToRemoveEls.forEach((messageToRemove) => {\n        m.removeMessage(messageToRemove, false);\n      });\n    } else {\n      $(messagesToRemove).each((messageToRemove) => {\n        m.removeMessage(messageToRemove, false);\n      });\n    }\n    if (m.params.autoLayout && layout) m.layout();\n    return m;\n  }\n\n  addMessage(...args) {\n    const m = this;\n    let messageToAdd;\n    let animate;\n    let method;\n    if (typeof args[1] === 'boolean') {\n      [messageToAdd, animate, method] = args;\n    } else {\n      [messageToAdd, method, animate] = args;\n    }\n    if (typeof animate === 'undefined') {\n      animate = true;\n    }\n    if (typeof method === 'undefined') {\n      method = m.params.newMessagesFirst ? 'prepend' : 'append';\n    }\n\n    return m.addMessages([messageToAdd], animate, method);\n  }\n\n  setScrollData() {\n    const m = this;\n    // Define scroll positions before new messages added\n    const scrollHeightBefore = m.pageContentEl.scrollHeight;\n    const heightBefore = m.pageContentEl.offsetHeight;\n    const scrollBefore = m.pageContentEl.scrollTop;\n    m.scrollData = {\n      scrollHeightBefore,\n      heightBefore,\n      scrollBefore,\n    };\n    return {\n      scrollHeightBefore,\n      heightBefore,\n      scrollBefore,\n    };\n  }\n\n  addMessages(...args) {\n    const m = this;\n    let messagesToAdd;\n    let animate;\n    let method;\n    if (typeof args[1] === 'boolean') {\n      [messagesToAdd, animate, method] = args;\n    } else {\n      [messagesToAdd, method, animate] = args;\n    }\n    if (typeof animate === 'undefined') {\n      animate = true;\n    }\n    if (typeof method === 'undefined') {\n      method = m.params.newMessagesFirst ? 'prepend' : 'append';\n    }\n\n    const { scrollHeightBefore, scrollBefore } = m.setScrollData();\n\n    // Add message to DOM and data\n    let messagesHTML = '';\n    const typingMessage = m.messages.filter((el) => el.isTyping)[0];\n    messagesToAdd.forEach((messageToAdd) => {\n      if (typingMessage) {\n        if (method === 'append') {\n          m.messages.splice(m.messages.indexOf(typingMessage), 0, messageToAdd);\n        } else {\n          m.messages.splice(m.messages.indexOf(typingMessage) + 1, 0, messageToAdd);\n        }\n      } else {\n        m.messages[method === 'append' ? 'push' : 'unshift'](messageToAdd);\n      }\n      messagesHTML += m.renderMessage(messageToAdd);\n    });\n    const $messagesEls = $(messagesHTML);\n    if (animate) {\n      if (method === 'append' && !m.params.newMessagesFirst) {\n        $messagesEls.addClass('message-appear-from-bottom');\n      }\n      if (method === 'prepend' && m.params.newMessagesFirst) {\n        $messagesEls.addClass('message-appear-from-top');\n      }\n    }\n    if (typingMessage) {\n      if (method === 'append') {\n        $messagesEls.insertBefore(m.$el.find('.message-typing'));\n      } else {\n        $messagesEls.insertAfter(m.$el.find('.message-typing'));\n      }\n    } else {\n      m.$el[method]($messagesEls);\n    }\n\n    // Layout\n    if (m.params.autoLayout) m.layout();\n\n    if (method === 'prepend' && !typingMessage) {\n      m.pageContentEl.scrollTop =\n        scrollBefore + (m.pageContentEl.scrollHeight - scrollHeightBefore);\n    }\n\n    if (\n      m.params.scrollMessages &&\n      ((method === 'append' && !m.params.newMessagesFirst) ||\n        (method === 'prepend' && m.params.newMessagesFirst && !typingMessage))\n    ) {\n      m.scrollWithEdgeCheck(animate);\n    }\n\n    return m;\n  }\n\n  showTyping(message = {}) {\n    const m = this;\n    const typingMessage = m.messages.filter((el) => el.isTyping)[0];\n    if (typingMessage) {\n      m.removeMessage(m.messages.indexOf(typingMessage));\n    }\n    m.addMessage(\n      extend(\n        {\n          type: 'received',\n          isTyping: true,\n        },\n        message,\n      ),\n    );\n    return m;\n  }\n\n  hideTyping() {\n    const m = this;\n    let typingMessageIndex;\n    let typingFound;\n    m.messages.forEach((message, index) => {\n      if (message.isTyping) typingMessageIndex = index;\n    });\n    if (typeof typingMessageIndex !== 'undefined') {\n      if (m.$el.find('.message').eq(typingMessageIndex).hasClass('message-typing')) {\n        typingFound = true;\n        m.removeMessage(typingMessageIndex);\n      }\n    }\n    if (!typingFound) {\n      const $typingMessageEl = m.$el.find('.message-typing');\n      if ($typingMessageEl.length) {\n        m.removeMessage($typingMessageEl);\n      }\n    }\n    return m;\n  }\n\n  scrollWithEdgeCheck(animate) {\n    const m = this;\n    const { scrollBefore, scrollHeightBefore, heightBefore } = m.scrollData;\n    if (m.params.scrollMessagesOnEdge) {\n      let onEdge = false;\n      if (m.params.newMessagesFirst && scrollBefore === 0) {\n        onEdge = true;\n      }\n      if (!m.params.newMessagesFirst && scrollBefore - (scrollHeightBefore - heightBefore) >= -10) {\n        onEdge = true;\n      }\n      if (onEdge) m.scroll(animate ? undefined : 0);\n    } else {\n      m.scroll(animate ? undefined : 0);\n    }\n  }\n\n  scroll(duration = 300, scrollTop) {\n    const m = this;\n    const currentScroll = m.pageContentEl.scrollTop;\n    let newScrollTop;\n    if (typeof scrollTop !== 'undefined') newScrollTop = scrollTop;\n    else {\n      newScrollTop = m.params.newMessagesFirst\n        ? 0\n        : m.pageContentEl.scrollHeight - m.pageContentEl.offsetHeight;\n      if (newScrollTop === currentScroll) return m;\n    }\n    m.$pageContentEl.scrollTop(newScrollTop, duration);\n    return m;\n  }\n\n  init() {\n    const m = this;\n    if (!m.messages || m.messages.length === 0) {\n      m.messages = m.getMessagesData();\n    }\n    if (m.params.messages && m.params.messages.length) {\n      m.renderMessages();\n    }\n    if (m.params.autoLayout) m.layout();\n    if (m.params.scrollMessages) m.scroll(0);\n  }\n\n  destroy() {\n    const m = this;\n    m.emit('local::beforeDestroy messagesBeforeDestroy', m);\n    m.$el.trigger('messages:beforedestroy');\n    if (m.$el[0]) {\n      m.$el[0].f7Messages = null;\n      delete m.$el[0].f7Messages;\n    }\n    deleteProps(m);\n  }\n}\n\nexport default Messages;\n","import $ from '../../shared/dom7.js';\nimport Messages from './messages-class.js';\nimport ConstructorMethods from '../../shared/constructor-methods.js';\n\nexport default {\n  name: 'messages',\n  static: {\n    Messages,\n  },\n  create() {\n    const app = this;\n    app.messages = ConstructorMethods({\n      defaultSelector: '.messages',\n      constructor: Messages,\n      app,\n      domProp: 'f7Messages',\n      addMethods:\n        'renderMessages layout scroll clear removeMessage removeMessages addMessage addMessages'.split(\n          ' ',\n        ),\n    });\n  },\n  on: {\n    tabBeforeRemove(tabEl) {\n      const app = this;\n      $(tabEl)\n        .find('.messages-init')\n        .each((messagesEl) => {\n          app.messages.destroy(messagesEl);\n        });\n    },\n    tabMounted(tabEl) {\n      const app = this;\n      $(tabEl)\n        .find('.messages-init')\n        .each((messagesEl) => {\n          app.messages.create({ el: messagesEl });\n        });\n    },\n    pageBeforeRemove(page) {\n      const app = this;\n      page.$el.find('.messages-init').each((messagesEl) => {\n        app.messages.destroy(messagesEl);\n      });\n    },\n    pageInit(page) {\n      const app = this;\n      page.$el.find('.messages-init').each((messagesEl) => {\n        app.messages.create({ el: messagesEl });\n      });\n    },\n  },\n  vnode: {\n    'messages-init': {\n      insert(vnode) {\n        const app = this;\n        const messagesEl = vnode.elm;\n        app.messages.create({ el: messagesEl });\n      },\n      destroy(vnode) {\n        const app = this;\n        const messagesEl = vnode.elm;\n        app.messages.destroy(messagesEl);\n      },\n    },\n  },\n};\n","import $ from '../../shared/dom7.js';\nimport { extend, deleteProps } from '../../shared/utils.js';\nimport Framework7Class from '../../shared/class.js';\n\nclass Messagebar extends Framework7Class {\n  constructor(app, params = {}) {\n    super(params, [app]);\n\n    const messagebar = this;\n\n    const defaults = {\n      top: false,\n      topOffset: 0,\n      bottomOffset: 0,\n      attachments: [],\n      renderAttachments: undefined,\n      renderAttachment: undefined,\n      maxHeight: null,\n      resizePage: true,\n    };\n\n    // Extend defaults with modules params\n    messagebar.useModulesParams(defaults);\n\n    messagebar.params = extend(defaults, params);\n\n    // El\n    const $el = $(messagebar.params.el);\n    if ($el.length === 0) return messagebar;\n\n    if ($el[0].f7Messagebar) return $el[0].f7Messagebar;\n\n    $el[0].f7Messagebar = messagebar;\n\n    // Page and PageContent\n    const $pageEl = $el.parents('.page').eq(0);\n    const $pageContentEl = $pageEl.find('.page-content').eq(0);\n\n    // Area\n    const $areaEl = $el.find('.messagebar-area');\n\n    // Textarea\n    let $textareaEl;\n    if (messagebar.params.textareaEl) {\n      $textareaEl = $(messagebar.params.textareaEl);\n    } else {\n      $textareaEl = $el.find('textarea');\n    }\n\n    // Attachments & Library\n    const $attachmentsEl = $el.find('.messagebar-attachments');\n    const $sheetEl = $el.find('.messagebar-sheet');\n\n    if (messagebar.params.top) {\n      $el.addClass('messagebar-top');\n    }\n\n    extend(messagebar, {\n      $el,\n      el: $el[0],\n      $areaEl,\n      areaEl: $areaEl[0],\n      $textareaEl,\n      textareaEl: $textareaEl[0],\n      $attachmentsEl,\n      attachmentsEl: $attachmentsEl[0],\n      attachmentsVisible: $attachmentsEl.hasClass('messagebar-attachments-visible'),\n      $sheetEl,\n      sheetEl: $sheetEl[0],\n      sheetVisible: $sheetEl.hasClass('messagebar-sheet-visible'),\n      $pageEl,\n      pageEl: $pageEl[0],\n      $pageContentEl,\n      pageContentEl: $pageContentEl,\n      top: $el.hasClass('messagebar-top') || messagebar.params.top,\n      attachments: [],\n    });\n\n    // Events\n    function onAppResize() {\n      if (messagebar.params.resizePage) {\n        messagebar.resizePage();\n      }\n    }\n    function onSubmit(e) {\n      e.preventDefault();\n    }\n    function onAttachmentClick(e) {\n      const index = $(this).index();\n      if ($(e.target).closest('.messagebar-attachment-delete').length) {\n        $(this).trigger('messagebar:attachmentdelete', index);\n        messagebar.emit(\n          'local::attachmentDelete messagebarAttachmentDelete',\n          messagebar,\n          this,\n          index,\n        );\n      } else {\n        $(this).trigger('messagebar:attachmentclick', index);\n        messagebar.emit(\n          'local::attachmentClick messagebarAttachmentClick',\n          messagebar,\n          this,\n          index,\n        );\n      }\n    }\n    function onTextareaChange() {\n      messagebar.checkEmptyState();\n      messagebar.$el.trigger('messagebar:change');\n      messagebar.emit('local::change messagebarChange', messagebar);\n    }\n    function onTextareaFocus() {\n      messagebar.sheetHide();\n      messagebar.$el.addClass('messagebar-focused');\n      messagebar.$el.trigger('messagebar:focus');\n      messagebar.emit('local::focus messagebarFocus', messagebar);\n    }\n    function onTextareaBlur() {\n      messagebar.$el.removeClass('messagebar-focused');\n      messagebar.$el.trigger('messagebar:blur');\n      messagebar.emit('local::blur messagebarBlur', messagebar);\n    }\n\n    messagebar.attachEvents = function attachEvents() {\n      $el.on('textarea:resize', onAppResize);\n      $el.on('submit', onSubmit);\n      $el.on('click', '.messagebar-attachment', onAttachmentClick);\n      $textareaEl.on('change input', onTextareaChange);\n      $textareaEl.on('focus', onTextareaFocus);\n      $textareaEl.on('blur', onTextareaBlur);\n      app.on('resize', onAppResize);\n    };\n    messagebar.detachEvents = function detachEvents() {\n      $el.off('textarea:resize', onAppResize);\n      $el.off('submit', onSubmit);\n      $el.off('click', '.messagebar-attachment', onAttachmentClick);\n      $textareaEl.off('change input', onTextareaChange);\n      $textareaEl.off('focus', onTextareaFocus);\n      $textareaEl.off('blur', onTextareaBlur);\n      app.off('resize', onAppResize);\n    };\n\n    // Install Modules\n    messagebar.useModules();\n\n    // Init\n    messagebar.init();\n\n    return messagebar;\n  }\n\n  focus() {\n    const messagebar = this;\n    messagebar.$textareaEl.focus();\n    return messagebar;\n  }\n\n  blur() {\n    const messagebar = this;\n    messagebar.$textareaEl.blur();\n    return messagebar;\n  }\n\n  clear() {\n    const messagebar = this;\n    messagebar.$textareaEl.val('').trigger('change');\n    return messagebar;\n  }\n\n  getValue() {\n    const messagebar = this;\n    return messagebar.$textareaEl.val().trim();\n  }\n\n  setValue(value) {\n    const messagebar = this;\n    messagebar.$textareaEl.val(value).trigger('change');\n    return messagebar;\n  }\n\n  setPlaceholder(placeholder) {\n    const messagebar = this;\n    messagebar.$textareaEl.attr('placeholder', placeholder);\n    return messagebar;\n  }\n\n  resizePage() {\n    const messagebar = this;\n    const {\n      params,\n      $el,\n      top,\n      $pageEl,\n      $pageContentEl,\n      $areaEl,\n      $textareaEl,\n      $sheetEl,\n      $attachmentsEl,\n    } = messagebar;\n    const elHeight = $el[0].offsetHeight;\n    let maxHeight = params.maxHeight;\n    if (top) {\n      /*\n      Disable at the moment\n      const requiredPaddingTop = elHeight + params.topOffset;\n      const currentPaddingTop = parseInt($pageContentEl.css('padding-top'), 10);\n      if (requiredPaddingTop !== currentPaddingTop) {\n        if (!maxHeight) {\n          maxHeight = $pageEl[0].offsetHeight - currentPaddingTop - $sheetEl.outerHeight() - $attachmentsEl.outerHeight() - parseInt($areaEl.css('margin-top'), 10) - parseInt($areaEl.css('margin-bottom'), 10);\n        }\n        $textareaEl.css('max-height', `${maxHeight}px`);\n        $pageContentEl.css('padding-top', `${requiredPaddingTop}px`);\n        $el.trigger('messagebar:resizePage');\n        messagebar.emit('local::resizepage messagebarResizePage');\n      }\n      */\n    } else {\n      const currentPaddingBottom = parseInt($pageContentEl.css('padding-bottom'), 10);\n      const requiredPaddingBottom = elHeight + params.bottomOffset;\n      if (requiredPaddingBottom !== currentPaddingBottom && $pageContentEl.length) {\n        const currentPaddingTop = parseInt($pageContentEl.css('padding-top'), 10);\n        const pageScrollHeight = $pageContentEl[0].scrollHeight;\n        const pageOffsetHeight = $pageContentEl[0].offsetHeight;\n        const pageScrollTop = $pageContentEl[0].scrollTop;\n        const scrollOnBottom = pageScrollTop === pageScrollHeight - pageOffsetHeight;\n        if (!maxHeight) {\n          maxHeight =\n            $pageEl[0].offsetHeight -\n            currentPaddingTop -\n            $sheetEl.outerHeight() -\n            $attachmentsEl.outerHeight() -\n            parseInt($areaEl.css('margin-top'), 10) -\n            parseInt($areaEl.css('margin-bottom'), 10);\n        }\n        $textareaEl.css('max-height', `${maxHeight}px`);\n        $pageContentEl.css('padding-bottom', `${requiredPaddingBottom}px`);\n        if (scrollOnBottom) {\n          $pageContentEl.scrollTop($pageContentEl[0].scrollHeight - pageOffsetHeight);\n        }\n        $el.trigger('messagebar:resizepage');\n        messagebar.emit('local::resizePage messagebarResizePage', messagebar);\n      }\n    }\n  }\n\n  checkEmptyState() {\n    const messagebar = this;\n    const { $el, $textareaEl } = messagebar;\n    const value = $textareaEl.val().trim();\n    if (value && value.length) {\n      $el.addClass('messagebar-with-value');\n    } else {\n      $el.removeClass('messagebar-with-value');\n    }\n  }\n\n  attachmentsCreate(innerHTML = '') {\n    const messagebar = this;\n    const $attachmentsEl = $(`<div class=\"messagebar-attachments\">${innerHTML}</div>`);\n    $attachmentsEl.insertBefore(messagebar.$textareaEl);\n    extend(messagebar, {\n      $attachmentsEl,\n      attachmentsEl: $attachmentsEl[0],\n    });\n    return messagebar;\n  }\n\n  attachmentsShow(innerHTML = '') {\n    const messagebar = this;\n    messagebar.$attachmentsEl = messagebar.$el.find('.messagebar-attachments');\n    if (messagebar.$attachmentsEl.length === 0) {\n      messagebar.attachmentsCreate(innerHTML);\n    }\n    messagebar.$el.addClass('messagebar-attachments-visible');\n    messagebar.attachmentsVisible = true;\n    if (messagebar.params.resizePage) {\n      messagebar.resizePage();\n    }\n    return messagebar;\n  }\n\n  attachmentsHide() {\n    const messagebar = this;\n    messagebar.$el.removeClass('messagebar-attachments-visible');\n    messagebar.attachmentsVisible = false;\n    if (messagebar.params.resizePage) {\n      messagebar.resizePage();\n    }\n    return messagebar;\n  }\n\n  attachmentsToggle() {\n    const messagebar = this;\n    if (messagebar.attachmentsVisible) {\n      messagebar.attachmentsHide();\n    } else {\n      messagebar.attachmentsShow();\n    }\n    return messagebar;\n  }\n\n  renderAttachment(attachment) {\n    const messagebar = this;\n    if (messagebar.params.renderAttachment) {\n      return messagebar.params.renderAttachment.call(messagebar, attachment);\n    }\n    return `\n      <div class=\"messagebar-attachment\">\n        <img src=\"${attachment}\">\n        <span class=\"messagebar-attachment-delete\"></span>\n      </div>\n    `;\n  }\n\n  renderAttachments() {\n    const messagebar = this;\n    let html;\n    if (messagebar.params.renderAttachments) {\n      html = messagebar.params.renderAttachments.call(messagebar, messagebar.attachments);\n    } else {\n      html = `${messagebar.attachments\n        .map((attachment) => messagebar.renderAttachment(attachment))\n        .join('')}`;\n    }\n    if (messagebar.$attachmentsEl.length === 0) {\n      messagebar.attachmentsCreate(html);\n    } else {\n      messagebar.$attachmentsEl.html(html);\n    }\n  }\n\n  sheetCreate(innerHTML = '') {\n    const messagebar = this;\n    const $sheetEl = $(`<div class=\"messagebar-sheet\">${innerHTML}</div>`);\n    messagebar.$el.append($sheetEl);\n    extend(messagebar, {\n      $sheetEl,\n      sheetEl: $sheetEl[0],\n    });\n    return messagebar;\n  }\n\n  sheetShow(innerHTML = '') {\n    const messagebar = this;\n    messagebar.$sheetEl = messagebar.$el.find('.messagebar-sheet');\n    if (messagebar.$sheetEl.length === 0) {\n      messagebar.sheetCreate(innerHTML);\n    }\n    messagebar.$el.addClass('messagebar-sheet-visible');\n    messagebar.sheetVisible = true;\n    if (messagebar.params.resizePage) {\n      messagebar.resizePage();\n    }\n    return messagebar;\n  }\n\n  sheetHide() {\n    const messagebar = this;\n    messagebar.$el.removeClass('messagebar-sheet-visible');\n    messagebar.sheetVisible = false;\n    if (messagebar.params.resizePage) {\n      messagebar.resizePage();\n    }\n    return messagebar;\n  }\n\n  sheetToggle() {\n    const messagebar = this;\n    if (messagebar.sheetVisible) {\n      messagebar.sheetHide();\n    } else {\n      messagebar.sheetShow();\n    }\n    return messagebar;\n  }\n\n  init() {\n    const messagebar = this;\n    messagebar.attachEvents();\n    messagebar.checkEmptyState();\n    return messagebar;\n  }\n\n  destroy() {\n    const messagebar = this;\n    messagebar.emit('local::beforeDestroy messagebarBeforeDestroy', messagebar);\n    messagebar.$el.trigger('messagebar:beforedestroy');\n    messagebar.detachEvents();\n    if (messagebar.$el[0]) {\n      messagebar.$el[0].f7Messagebar = null;\n      delete messagebar.$el[0].f7Messagebar;\n    }\n    deleteProps(messagebar);\n  }\n}\n\nexport default Messagebar;\n","import $ from '../../shared/dom7.js';\nimport { extend } from '../../shared/utils.js';\nimport Messagebar from './messagebar-class.js';\nimport ConstructorMethods from '../../shared/constructor-methods.js';\n\nexport default {\n  name: 'messagebar',\n  static: {\n    Messagebar,\n  },\n  create() {\n    const app = this;\n    app.messagebar = ConstructorMethods({\n      defaultSelector: '.messagebar',\n      constructor: Messagebar,\n      app,\n      domProp: 'f7Messagebar',\n      addMethods:\n        'clear getValue setValue setPlaceholder resizePage focus blur attachmentsCreate attachmentsShow attachmentsHide attachmentsToggle renderAttachments sheetCreate sheetShow sheetHide sheetToggle'.split(\n          ' ',\n        ),\n    });\n  },\n  on: {\n    tabBeforeRemove(tabEl) {\n      const app = this;\n      $(tabEl)\n        .find('.messagebar-init')\n        .each((messagebarEl) => {\n          app.messagebar.destroy(messagebarEl);\n        });\n    },\n    tabMounted(tabEl) {\n      const app = this;\n      $(tabEl)\n        .find('.messagebar-init')\n        .each((messagebarEl) => {\n          app.messagebar.create(extend({ el: messagebarEl }, $(messagebarEl).dataset()));\n        });\n    },\n    pageBeforeRemove(page) {\n      const app = this;\n      page.$el.find('.messagebar-init').each((messagebarEl) => {\n        app.messagebar.destroy(messagebarEl);\n      });\n    },\n    pageInit(page) {\n      const app = this;\n      page.$el.find('.messagebar-init').each((messagebarEl) => {\n        app.messagebar.create(extend({ el: messagebarEl }, $(messagebarEl).dataset()));\n      });\n    },\n  },\n  vnode: {\n    'messagebar-init': {\n      insert(vnode) {\n        const app = this;\n        const messagebarEl = vnode.elm;\n        app.messagebar.create(extend({ el: messagebarEl }, $(messagebarEl).dataset()));\n      },\n      destroy(vnode) {\n        const app = this;\n        const messagebarEl = vnode.elm;\n        app.messagebar.destroy(messagebarEl);\n      },\n    },\n  },\n};\n","/**\n * SSR Window 4.0.2\n * Better handling for window object in SSR environment\n * https://github.com/nolimits4web/ssr-window\n *\n * Copyright 2021, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: December 13, 2021\n */\n/* eslint-disable no-param-reassign */\nfunction isObject(obj) {\n  return obj !== null && typeof obj === 'object' && 'constructor' in obj && obj.constructor === Object;\n}\nfunction extend(target, src) {\n  if (target === void 0) {\n    target = {};\n  }\n  if (src === void 0) {\n    src = {};\n  }\n  Object.keys(src).forEach(key => {\n    if (typeof target[key] === 'undefined') target[key] = src[key];else if (isObject(src[key]) && isObject(target[key]) && Object.keys(src[key]).length > 0) {\n      extend(target[key], src[key]);\n    }\n  });\n}\nconst ssrDocument = {\n  body: {},\n  addEventListener() {},\n  removeEventListener() {},\n  activeElement: {\n    blur() {},\n    nodeName: ''\n  },\n  querySelector() {\n    return null;\n  },\n  querySelectorAll() {\n    return [];\n  },\n  getElementById() {\n    return null;\n  },\n  createEvent() {\n    return {\n      initEvent() {}\n    };\n  },\n  createElement() {\n    return {\n      children: [],\n      childNodes: [],\n      style: {},\n      setAttribute() {},\n      getElementsByTagName() {\n        return [];\n      }\n    };\n  },\n  createElementNS() {\n    return {};\n  },\n  importNode() {\n    return null;\n  },\n  location: {\n    hash: '',\n    host: '',\n    hostname: '',\n    href: '',\n    origin: '',\n    pathname: '',\n    protocol: '',\n    search: ''\n  }\n};\nfunction getDocument() {\n  const doc = typeof document !== 'undefined' ? document : {};\n  extend(doc, ssrDocument);\n  return doc;\n}\nconst ssrWindow = {\n  document: ssrDocument,\n  navigator: {\n    userAgent: ''\n  },\n  location: {\n    hash: '',\n    host: '',\n    hostname: '',\n    href: '',\n    origin: '',\n    pathname: '',\n    protocol: '',\n    search: ''\n  },\n  history: {\n    replaceState() {},\n    pushState() {},\n    go() {},\n    back() {}\n  },\n  CustomEvent: function CustomEvent() {\n    return this;\n  },\n  addEventListener() {},\n  removeEventListener() {},\n  getComputedStyle() {\n    return {\n      getPropertyValue() {\n        return '';\n      }\n    };\n  },\n  Image() {},\n  Date() {},\n  screen: {},\n  setTimeout() {},\n  clearTimeout() {},\n  matchMedia() {\n    return {};\n  },\n  requestAnimationFrame(callback) {\n    if (typeof setTimeout === 'undefined') {\n      callback();\n      return null;\n    }\n    return setTimeout(callback, 0);\n  },\n  cancelAnimationFrame(id) {\n    if (typeof setTimeout === 'undefined') {\n      return;\n    }\n    clearTimeout(id);\n  }\n};\nfunction getWindow() {\n  const win = typeof window !== 'undefined' ? window : {};\n  extend(win, ssrWindow);\n  return win;\n}\n\nexport { getWindow as a, getDocument as g };\n","import { a as getWindow, g as getDocument } from './ssr-window.esm.mjs';\n\nfunction deleteProps(obj) {\n  const object = obj;\n  Object.keys(object).forEach(key => {\n    try {\n      object[key] = null;\n    } catch (e) {\n      // no getter for object\n    }\n    try {\n      delete object[key];\n    } catch (e) {\n      // something got wrong\n    }\n  });\n}\nfunction nextTick(callback, delay) {\n  if (delay === void 0) {\n    delay = 0;\n  }\n  return setTimeout(callback, delay);\n}\nfunction now() {\n  return Date.now();\n}\nfunction getComputedStyle(el) {\n  const window = getWindow();\n  let style;\n  if (window.getComputedStyle) {\n    style = window.getComputedStyle(el, null);\n  }\n  if (!style && el.currentStyle) {\n    style = el.currentStyle;\n  }\n  if (!style) {\n    style = el.style;\n  }\n  return style;\n}\nfunction getTranslate(el, axis) {\n  if (axis === void 0) {\n    axis = 'x';\n  }\n  const window = getWindow();\n  let matrix;\n  let curTransform;\n  let transformMatrix;\n  const curStyle = getComputedStyle(el);\n  if (window.WebKitCSSMatrix) {\n    curTransform = curStyle.transform || curStyle.webkitTransform;\n    if (curTransform.split(',').length > 6) {\n      curTransform = curTransform.split(', ').map(a => a.replace(',', '.')).join(', ');\n    }\n    // Some old versions of Webkit choke when 'none' is passed; pass\n    // empty string instead in this case\n    transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);\n  } else {\n    transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');\n    matrix = transformMatrix.toString().split(',');\n  }\n  if (axis === 'x') {\n    // Latest Chrome and webkits Fix\n    if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41;\n    // Crazy IE10 Matrix\n    else if (matrix.length === 16) curTransform = parseFloat(matrix[12]);\n    // Normal Browsers\n    else curTransform = parseFloat(matrix[4]);\n  }\n  if (axis === 'y') {\n    // Latest Chrome and webkits Fix\n    if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42;\n    // Crazy IE10 Matrix\n    else if (matrix.length === 16) curTransform = parseFloat(matrix[13]);\n    // Normal Browsers\n    else curTransform = parseFloat(matrix[5]);\n  }\n  return curTransform || 0;\n}\nfunction isObject(o) {\n  return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object';\n}\nfunction isNode(node) {\n  // eslint-disable-next-line\n  if (typeof window !== 'undefined' && typeof window.HTMLElement !== 'undefined') {\n    return node instanceof HTMLElement;\n  }\n  return node && (node.nodeType === 1 || node.nodeType === 11);\n}\nfunction extend() {\n  const to = Object(arguments.length <= 0 ? undefined : arguments[0]);\n  const noExtend = ['__proto__', 'constructor', 'prototype'];\n  for (let i = 1; i < arguments.length; i += 1) {\n    const nextSource = i < 0 || arguments.length <= i ? undefined : arguments[i];\n    if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) {\n      const keysArray = Object.keys(Object(nextSource)).filter(key => noExtend.indexOf(key) < 0);\n      for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {\n        const nextKey = keysArray[nextIndex];\n        const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n        if (desc !== undefined && desc.enumerable) {\n          if (isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n            if (nextSource[nextKey].__swiper__) {\n              to[nextKey] = nextSource[nextKey];\n            } else {\n              extend(to[nextKey], nextSource[nextKey]);\n            }\n          } else if (!isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n            to[nextKey] = {};\n            if (nextSource[nextKey].__swiper__) {\n              to[nextKey] = nextSource[nextKey];\n            } else {\n              extend(to[nextKey], nextSource[nextKey]);\n            }\n          } else {\n            to[nextKey] = nextSource[nextKey];\n          }\n        }\n      }\n    }\n  }\n  return to;\n}\nfunction setCSSProperty(el, varName, varValue) {\n  el.style.setProperty(varName, varValue);\n}\nfunction animateCSSModeScroll(_ref) {\n  let {\n    swiper,\n    targetPosition,\n    side\n  } = _ref;\n  const window = getWindow();\n  const startPosition = -swiper.translate;\n  let startTime = null;\n  let time;\n  const duration = swiper.params.speed;\n  swiper.wrapperEl.style.scrollSnapType = 'none';\n  window.cancelAnimationFrame(swiper.cssModeFrameID);\n  const dir = targetPosition > startPosition ? 'next' : 'prev';\n  const isOutOfBound = (current, target) => {\n    return dir === 'next' && current >= target || dir === 'prev' && current <= target;\n  };\n  const animate = () => {\n    time = new Date().getTime();\n    if (startTime === null) {\n      startTime = time;\n    }\n    const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n    const easeProgress = 0.5 - Math.cos(progress * Math.PI) / 2;\n    let currentPosition = startPosition + easeProgress * (targetPosition - startPosition);\n    if (isOutOfBound(currentPosition, targetPosition)) {\n      currentPosition = targetPosition;\n    }\n    swiper.wrapperEl.scrollTo({\n      [side]: currentPosition\n    });\n    if (isOutOfBound(currentPosition, targetPosition)) {\n      swiper.wrapperEl.style.overflow = 'hidden';\n      swiper.wrapperEl.style.scrollSnapType = '';\n      setTimeout(() => {\n        swiper.wrapperEl.style.overflow = '';\n        swiper.wrapperEl.scrollTo({\n          [side]: currentPosition\n        });\n      });\n      window.cancelAnimationFrame(swiper.cssModeFrameID);\n      return;\n    }\n    swiper.cssModeFrameID = window.requestAnimationFrame(animate);\n  };\n  animate();\n}\nfunction getSlideTransformEl(slideEl) {\n  return slideEl.querySelector('.swiper-slide-transform') || slideEl.shadowRoot && slideEl.shadowRoot.querySelector('.swiper-slide-transform') || slideEl;\n}\nfunction elementChildren(element, selector) {\n  if (selector === void 0) {\n    selector = '';\n  }\n  return [...element.children].filter(el => el.matches(selector));\n}\nfunction createElement(tag, classes) {\n  if (classes === void 0) {\n    classes = [];\n  }\n  const el = document.createElement(tag);\n  el.classList.add(...(Array.isArray(classes) ? classes : [classes]));\n  return el;\n}\nfunction elementOffset(el) {\n  const window = getWindow();\n  const document = getDocument();\n  const box = el.getBoundingClientRect();\n  const body = document.body;\n  const clientTop = el.clientTop || body.clientTop || 0;\n  const clientLeft = el.clientLeft || body.clientLeft || 0;\n  const scrollTop = el === window ? window.scrollY : el.scrollTop;\n  const scrollLeft = el === window ? window.scrollX : el.scrollLeft;\n  return {\n    top: box.top + scrollTop - clientTop,\n    left: box.left + scrollLeft - clientLeft\n  };\n}\nfunction elementPrevAll(el, selector) {\n  const prevEls = [];\n  while (el.previousElementSibling) {\n    const prev = el.previousElementSibling; // eslint-disable-line\n    if (selector) {\n      if (prev.matches(selector)) prevEls.push(prev);\n    } else prevEls.push(prev);\n    el = prev;\n  }\n  return prevEls;\n}\nfunction elementNextAll(el, selector) {\n  const nextEls = [];\n  while (el.nextElementSibling) {\n    const next = el.nextElementSibling; // eslint-disable-line\n    if (selector) {\n      if (next.matches(selector)) nextEls.push(next);\n    } else nextEls.push(next);\n    el = next;\n  }\n  return nextEls;\n}\nfunction elementStyle(el, prop) {\n  const window = getWindow();\n  return window.getComputedStyle(el, null).getPropertyValue(prop);\n}\nfunction elementIndex(el) {\n  let child = el;\n  let i;\n  if (child) {\n    i = 0;\n    // eslint-disable-next-line\n    while ((child = child.previousSibling) !== null) {\n      if (child.nodeType === 1) i += 1;\n    }\n    return i;\n  }\n  return undefined;\n}\nfunction elementParents(el, selector) {\n  const parents = []; // eslint-disable-line\n  let parent = el.parentElement; // eslint-disable-line\n  while (parent) {\n    if (selector) {\n      if (parent.matches(selector)) parents.push(parent);\n    } else {\n      parents.push(parent);\n    }\n    parent = parent.parentElement;\n  }\n  return parents;\n}\nfunction elementTransitionEnd(el, callback) {\n  function fireCallBack(e) {\n    if (e.target !== el) return;\n    callback.call(el, e);\n    el.removeEventListener('transitionend', fireCallBack);\n  }\n  if (callback) {\n    el.addEventListener('transitionend', fireCallBack);\n  }\n}\nfunction elementOuterSize(el, size, includeMargins) {\n  const window = getWindow();\n  if (includeMargins) {\n    return el[size === 'width' ? 'offsetWidth' : 'offsetHeight'] + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-right' : 'margin-top')) + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-left' : 'margin-bottom'));\n  }\n  return el.offsetWidth;\n}\n\nexport { elementParents as a, elementOffset as b, createElement as c, now as d, elementChildren as e, elementOuterSize as f, elementIndex as g, getTranslate as h, elementTransitionEnd as i, isObject as j, getSlideTransformEl as k, elementStyle as l, elementNextAll as m, nextTick as n, elementPrevAll as o, animateCSSModeScroll as p, extend as q, deleteProps as r, setCSSProperty as s };\n","import { a as getWindow, g as getDocument } from './ssr-window.esm.mjs';\nimport { a as elementParents, l as elementStyle, e as elementChildren, s as setCSSProperty, f as elementOuterSize, m as elementNextAll, o as elementPrevAll, h as getTranslate, p as animateCSSModeScroll, n as nextTick, d as now, q as extend, g as elementIndex, c as createElement, r as deleteProps } from './utils.mjs';\n\nlet support;\nfunction calcSupport() {\n  const window = getWindow();\n  const document = getDocument();\n  return {\n    smoothScroll: document.documentElement && document.documentElement.style && 'scrollBehavior' in document.documentElement.style,\n    touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch)\n  };\n}\nfunction getSupport() {\n  if (!support) {\n    support = calcSupport();\n  }\n  return support;\n}\n\nlet deviceCached;\nfunction calcDevice(_temp) {\n  let {\n    userAgent\n  } = _temp === void 0 ? {} : _temp;\n  const support = getSupport();\n  const window = getWindow();\n  const platform = window.navigator.platform;\n  const ua = userAgent || window.navigator.userAgent;\n  const device = {\n    ios: false,\n    android: false\n  };\n  const screenWidth = window.screen.width;\n  const screenHeight = window.screen.height;\n  const android = ua.match(/(Android);?[\\s\\/]+([\\d.]+)?/); // eslint-disable-line\n  let ipad = ua.match(/(iPad).*OS\\s([\\d_]+)/);\n  const ipod = ua.match(/(iPod)(.*OS\\s([\\d_]+))?/);\n  const iphone = !ipad && ua.match(/(iPhone\\sOS|iOS)\\s([\\d_]+)/);\n  const windows = platform === 'Win32';\n  let macos = platform === 'MacIntel';\n\n  // iPadOs 13 fix\n  const iPadScreens = ['1024x1366', '1366x1024', '834x1194', '1194x834', '834x1112', '1112x834', '768x1024', '1024x768', '820x1180', '1180x820', '810x1080', '1080x810'];\n  if (!ipad && macos && support.touch && iPadScreens.indexOf(`${screenWidth}x${screenHeight}`) >= 0) {\n    ipad = ua.match(/(Version)\\/([\\d.]+)/);\n    if (!ipad) ipad = [0, 1, '13_0_0'];\n    macos = false;\n  }\n\n  // Android\n  if (android && !windows) {\n    device.os = 'android';\n    device.android = true;\n  }\n  if (ipad || iphone || ipod) {\n    device.os = 'ios';\n    device.ios = true;\n  }\n\n  // Export object\n  return device;\n}\nfunction getDevice(overrides) {\n  if (overrides === void 0) {\n    overrides = {};\n  }\n  if (!deviceCached) {\n    deviceCached = calcDevice(overrides);\n  }\n  return deviceCached;\n}\n\nlet browser;\nfunction calcBrowser() {\n  const window = getWindow();\n  let needPerspectiveFix = false;\n  function isSafari() {\n    const ua = window.navigator.userAgent.toLowerCase();\n    return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0;\n  }\n  if (isSafari()) {\n    const ua = String(window.navigator.userAgent);\n    if (ua.includes('Version/')) {\n      const [major, minor] = ua.split('Version/')[1].split(' ')[0].split('.').map(num => Number(num));\n      needPerspectiveFix = major < 16 || major === 16 && minor < 2;\n    }\n  }\n  return {\n    isSafari: needPerspectiveFix || isSafari(),\n    needPerspectiveFix,\n    isWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent)\n  };\n}\nfunction getBrowser() {\n  if (!browser) {\n    browser = calcBrowser();\n  }\n  return browser;\n}\n\nfunction Resize(_ref) {\n  let {\n    swiper,\n    on,\n    emit\n  } = _ref;\n  const window = getWindow();\n  let observer = null;\n  let animationFrame = null;\n  const resizeHandler = () => {\n    if (!swiper || swiper.destroyed || !swiper.initialized) return;\n    emit('beforeResize');\n    emit('resize');\n  };\n  const createObserver = () => {\n    if (!swiper || swiper.destroyed || !swiper.initialized) return;\n    observer = new ResizeObserver(entries => {\n      animationFrame = window.requestAnimationFrame(() => {\n        const {\n          width,\n          height\n        } = swiper;\n        let newWidth = width;\n        let newHeight = height;\n        entries.forEach(_ref2 => {\n          let {\n            contentBoxSize,\n            contentRect,\n            target\n          } = _ref2;\n          if (target && target !== swiper.el) return;\n          newWidth = contentRect ? contentRect.width : (contentBoxSize[0] || contentBoxSize).inlineSize;\n          newHeight = contentRect ? contentRect.height : (contentBoxSize[0] || contentBoxSize).blockSize;\n        });\n        if (newWidth !== width || newHeight !== height) {\n          resizeHandler();\n        }\n      });\n    });\n    observer.observe(swiper.el);\n  };\n  const removeObserver = () => {\n    if (animationFrame) {\n      window.cancelAnimationFrame(animationFrame);\n    }\n    if (observer && observer.unobserve && swiper.el) {\n      observer.unobserve(swiper.el);\n      observer = null;\n    }\n  };\n  const orientationChangeHandler = () => {\n    if (!swiper || swiper.destroyed || !swiper.initialized) return;\n    emit('orientationchange');\n  };\n  on('init', () => {\n    if (swiper.params.resizeObserver && typeof window.ResizeObserver !== 'undefined') {\n      createObserver();\n      return;\n    }\n    window.addEventListener('resize', resizeHandler);\n    window.addEventListener('orientationchange', orientationChangeHandler);\n  });\n  on('destroy', () => {\n    removeObserver();\n    window.removeEventListener('resize', resizeHandler);\n    window.removeEventListener('orientationchange', orientationChangeHandler);\n  });\n}\n\nfunction Observer(_ref) {\n  let {\n    swiper,\n    extendParams,\n    on,\n    emit\n  } = _ref;\n  const observers = [];\n  const window = getWindow();\n  const attach = function (target, options) {\n    if (options === void 0) {\n      options = {};\n    }\n    const ObserverFunc = window.MutationObserver || window.WebkitMutationObserver;\n    const observer = new ObserverFunc(mutations => {\n      // The observerUpdate event should only be triggered\n      // once despite the number of mutations.  Additional\n      // triggers are redundant and are very costly\n      if (swiper.__preventObserver__) return;\n      if (mutations.length === 1) {\n        emit('observerUpdate', mutations[0]);\n        return;\n      }\n      const observerUpdate = function observerUpdate() {\n        emit('observerUpdate', mutations[0]);\n      };\n      if (window.requestAnimationFrame) {\n        window.requestAnimationFrame(observerUpdate);\n      } else {\n        window.setTimeout(observerUpdate, 0);\n      }\n    });\n    observer.observe(target, {\n      attributes: typeof options.attributes === 'undefined' ? true : options.attributes,\n      childList: typeof options.childList === 'undefined' ? true : options.childList,\n      characterData: typeof options.characterData === 'undefined' ? true : options.characterData\n    });\n    observers.push(observer);\n  };\n  const init = () => {\n    if (!swiper.params.observer) return;\n    if (swiper.params.observeParents) {\n      const containerParents = elementParents(swiper.hostEl);\n      for (let i = 0; i < containerParents.length; i += 1) {\n        attach(containerParents[i]);\n      }\n    }\n    // Observe container\n    attach(swiper.hostEl, {\n      childList: swiper.params.observeSlideChildren\n    });\n\n    // Observe wrapper\n    attach(swiper.wrapperEl, {\n      attributes: false\n    });\n  };\n  const destroy = () => {\n    observers.forEach(observer => {\n      observer.disconnect();\n    });\n    observers.splice(0, observers.length);\n  };\n  extendParams({\n    observer: false,\n    observeParents: false,\n    observeSlideChildren: false\n  });\n  on('init', init);\n  on('destroy', destroy);\n}\n\n/* eslint-disable no-underscore-dangle */\n\nvar eventsEmitter = {\n  on(events, handler, priority) {\n    const self = this;\n    if (!self.eventsListeners || self.destroyed) return self;\n    if (typeof handler !== 'function') return self;\n    const method = priority ? 'unshift' : 'push';\n    events.split(' ').forEach(event => {\n      if (!self.eventsListeners[event]) self.eventsListeners[event] = [];\n      self.eventsListeners[event][method](handler);\n    });\n    return self;\n  },\n  once(events, handler, priority) {\n    const self = this;\n    if (!self.eventsListeners || self.destroyed) return self;\n    if (typeof handler !== 'function') return self;\n    function onceHandler() {\n      self.off(events, onceHandler);\n      if (onceHandler.__emitterProxy) {\n        delete onceHandler.__emitterProxy;\n      }\n      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n        args[_key] = arguments[_key];\n      }\n      handler.apply(self, args);\n    }\n    onceHandler.__emitterProxy = handler;\n    return self.on(events, onceHandler, priority);\n  },\n  onAny(handler, priority) {\n    const self = this;\n    if (!self.eventsListeners || self.destroyed) return self;\n    if (typeof handler !== 'function') return self;\n    const method = priority ? 'unshift' : 'push';\n    if (self.eventsAnyListeners.indexOf(handler) < 0) {\n      self.eventsAnyListeners[method](handler);\n    }\n    return self;\n  },\n  offAny(handler) {\n    const self = this;\n    if (!self.eventsListeners || self.destroyed) return self;\n    if (!self.eventsAnyListeners) return self;\n    const index = self.eventsAnyListeners.indexOf(handler);\n    if (index >= 0) {\n      self.eventsAnyListeners.splice(index, 1);\n    }\n    return self;\n  },\n  off(events, handler) {\n    const self = this;\n    if (!self.eventsListeners || self.destroyed) return self;\n    if (!self.eventsListeners) return self;\n    events.split(' ').forEach(event => {\n      if (typeof handler === 'undefined') {\n        self.eventsListeners[event] = [];\n      } else if (self.eventsListeners[event]) {\n        self.eventsListeners[event].forEach((eventHandler, index) => {\n          if (eventHandler === handler || eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler) {\n            self.eventsListeners[event].splice(index, 1);\n          }\n        });\n      }\n    });\n    return self;\n  },\n  emit() {\n    const self = this;\n    if (!self.eventsListeners || self.destroyed) return self;\n    if (!self.eventsListeners) return self;\n    let events;\n    let data;\n    let context;\n    for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n      args[_key2] = arguments[_key2];\n    }\n    if (typeof args[0] === 'string' || Array.isArray(args[0])) {\n      events = args[0];\n      data = args.slice(1, args.length);\n      context = self;\n    } else {\n      events = args[0].events;\n      data = args[0].data;\n      context = args[0].context || self;\n    }\n    data.unshift(context);\n    const eventsArray = Array.isArray(events) ? events : events.split(' ');\n    eventsArray.forEach(event => {\n      if (self.eventsAnyListeners && self.eventsAnyListeners.length) {\n        self.eventsAnyListeners.forEach(eventHandler => {\n          eventHandler.apply(context, [event, ...data]);\n        });\n      }\n      if (self.eventsListeners && self.eventsListeners[event]) {\n        self.eventsListeners[event].forEach(eventHandler => {\n          eventHandler.apply(context, data);\n        });\n      }\n    });\n    return self;\n  }\n};\n\nfunction updateSize() {\n  const swiper = this;\n  let width;\n  let height;\n  const el = swiper.el;\n  if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) {\n    width = swiper.params.width;\n  } else {\n    width = el.clientWidth;\n  }\n  if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) {\n    height = swiper.params.height;\n  } else {\n    height = el.clientHeight;\n  }\n  if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) {\n    return;\n  }\n\n  // Subtract paddings\n  width = width - parseInt(elementStyle(el, 'padding-left') || 0, 10) - parseInt(elementStyle(el, 'padding-right') || 0, 10);\n  height = height - parseInt(elementStyle(el, 'padding-top') || 0, 10) - parseInt(elementStyle(el, 'padding-bottom') || 0, 10);\n  if (Number.isNaN(width)) width = 0;\n  if (Number.isNaN(height)) height = 0;\n  Object.assign(swiper, {\n    width,\n    height,\n    size: swiper.isHorizontal() ? width : height\n  });\n}\n\nfunction updateSlides() {\n  const swiper = this;\n  function getDirectionLabel(property) {\n    if (swiper.isHorizontal()) {\n      return property;\n    }\n    // prettier-ignore\n    return {\n      'width': 'height',\n      'margin-top': 'margin-left',\n      'margin-bottom ': 'margin-right',\n      'margin-left': 'margin-top',\n      'margin-right': 'margin-bottom',\n      'padding-left': 'padding-top',\n      'padding-right': 'padding-bottom',\n      'marginRight': 'marginBottom'\n    }[property];\n  }\n  function getDirectionPropertyValue(node, label) {\n    return parseFloat(node.getPropertyValue(getDirectionLabel(label)) || 0);\n  }\n  const params = swiper.params;\n  const {\n    wrapperEl,\n    slidesEl,\n    size: swiperSize,\n    rtlTranslate: rtl,\n    wrongRTL\n  } = swiper;\n  const isVirtual = swiper.virtual && params.virtual.enabled;\n  const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length;\n  const slides = elementChildren(slidesEl, `.${swiper.params.slideClass}, swiper-slide`);\n  const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length;\n  let snapGrid = [];\n  const slidesGrid = [];\n  const slidesSizesGrid = [];\n  let offsetBefore = params.slidesOffsetBefore;\n  if (typeof offsetBefore === 'function') {\n    offsetBefore = params.slidesOffsetBefore.call(swiper);\n  }\n  let offsetAfter = params.slidesOffsetAfter;\n  if (typeof offsetAfter === 'function') {\n    offsetAfter = params.slidesOffsetAfter.call(swiper);\n  }\n  const previousSnapGridLength = swiper.snapGrid.length;\n  const previousSlidesGridLength = swiper.slidesGrid.length;\n  let spaceBetween = params.spaceBetween;\n  let slidePosition = -offsetBefore;\n  let prevSlideSize = 0;\n  let index = 0;\n  if (typeof swiperSize === 'undefined') {\n    return;\n  }\n  if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n    spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiperSize;\n  } else if (typeof spaceBetween === 'string') {\n    spaceBetween = parseFloat(spaceBetween);\n  }\n  swiper.virtualSize = -spaceBetween;\n\n  // reset margins\n  slides.forEach(slideEl => {\n    if (rtl) {\n      slideEl.style.marginLeft = '';\n    } else {\n      slideEl.style.marginRight = '';\n    }\n    slideEl.style.marginBottom = '';\n    slideEl.style.marginTop = '';\n  });\n\n  // reset cssMode offsets\n  if (params.centeredSlides && params.cssMode) {\n    setCSSProperty(wrapperEl, '--swiper-centered-offset-before', '');\n    setCSSProperty(wrapperEl, '--swiper-centered-offset-after', '');\n  }\n  const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid;\n  if (gridEnabled) {\n    swiper.grid.initSlides(slidesLength);\n  }\n\n  // Calc slides\n  let slideSize;\n  const shouldResetSlideSize = params.slidesPerView === 'auto' && params.breakpoints && Object.keys(params.breakpoints).filter(key => {\n    return typeof params.breakpoints[key].slidesPerView !== 'undefined';\n  }).length > 0;\n  for (let i = 0; i < slidesLength; i += 1) {\n    slideSize = 0;\n    let slide;\n    if (slides[i]) slide = slides[i];\n    if (gridEnabled) {\n      swiper.grid.updateSlide(i, slide, slidesLength, getDirectionLabel);\n    }\n    if (slides[i] && elementStyle(slide, 'display') === 'none') continue; // eslint-disable-line\n\n    if (params.slidesPerView === 'auto') {\n      if (shouldResetSlideSize) {\n        slides[i].style[getDirectionLabel('width')] = ``;\n      }\n      const slideStyles = getComputedStyle(slide);\n      const currentTransform = slide.style.transform;\n      const currentWebKitTransform = slide.style.webkitTransform;\n      if (currentTransform) {\n        slide.style.transform = 'none';\n      }\n      if (currentWebKitTransform) {\n        slide.style.webkitTransform = 'none';\n      }\n      if (params.roundLengths) {\n        slideSize = swiper.isHorizontal() ? elementOuterSize(slide, 'width', true) : elementOuterSize(slide, 'height', true);\n      } else {\n        // eslint-disable-next-line\n        const width = getDirectionPropertyValue(slideStyles, 'width');\n        const paddingLeft = getDirectionPropertyValue(slideStyles, 'padding-left');\n        const paddingRight = getDirectionPropertyValue(slideStyles, 'padding-right');\n        const marginLeft = getDirectionPropertyValue(slideStyles, 'margin-left');\n        const marginRight = getDirectionPropertyValue(slideStyles, 'margin-right');\n        const boxSizing = slideStyles.getPropertyValue('box-sizing');\n        if (boxSizing && boxSizing === 'border-box') {\n          slideSize = width + marginLeft + marginRight;\n        } else {\n          const {\n            clientWidth,\n            offsetWidth\n          } = slide;\n          slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth);\n        }\n      }\n      if (currentTransform) {\n        slide.style.transform = currentTransform;\n      }\n      if (currentWebKitTransform) {\n        slide.style.webkitTransform = currentWebKitTransform;\n      }\n      if (params.roundLengths) slideSize = Math.floor(slideSize);\n    } else {\n      slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView;\n      if (params.roundLengths) slideSize = Math.floor(slideSize);\n      if (slides[i]) {\n        slides[i].style[getDirectionLabel('width')] = `${slideSize}px`;\n      }\n    }\n    if (slides[i]) {\n      slides[i].swiperSlideSize = slideSize;\n    }\n    slidesSizesGrid.push(slideSize);\n    if (params.centeredSlides) {\n      slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween;\n      if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n      if (i === 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n      if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0;\n      if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n      if (index % params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n      slidesGrid.push(slidePosition);\n    } else {\n      if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n      if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n      slidesGrid.push(slidePosition);\n      slidePosition = slidePosition + slideSize + spaceBetween;\n    }\n    swiper.virtualSize += slideSize + spaceBetween;\n    prevSlideSize = slideSize;\n    index += 1;\n  }\n  swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;\n  if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {\n    wrapperEl.style.width = `${swiper.virtualSize + spaceBetween}px`;\n  }\n  if (params.setWrapperSize) {\n    wrapperEl.style[getDirectionLabel('width')] = `${swiper.virtualSize + spaceBetween}px`;\n  }\n  if (gridEnabled) {\n    swiper.grid.updateWrapperSize(slideSize, snapGrid, getDirectionLabel);\n  }\n\n  // Remove last grid elements depending on width\n  if (!params.centeredSlides) {\n    const newSlidesGrid = [];\n    for (let i = 0; i < snapGrid.length; i += 1) {\n      let slidesGridItem = snapGrid[i];\n      if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n      if (snapGrid[i] <= swiper.virtualSize - swiperSize) {\n        newSlidesGrid.push(slidesGridItem);\n      }\n    }\n    snapGrid = newSlidesGrid;\n    if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) {\n      snapGrid.push(swiper.virtualSize - swiperSize);\n    }\n  }\n  if (isVirtual && params.loop) {\n    const size = slidesSizesGrid[0] + spaceBetween;\n    if (params.slidesPerGroup > 1) {\n      const groups = Math.ceil((swiper.virtual.slidesBefore + swiper.virtual.slidesAfter) / params.slidesPerGroup);\n      const groupSize = size * params.slidesPerGroup;\n      for (let i = 0; i < groups; i += 1) {\n        snapGrid.push(snapGrid[snapGrid.length - 1] + groupSize);\n      }\n    }\n    for (let i = 0; i < swiper.virtual.slidesBefore + swiper.virtual.slidesAfter; i += 1) {\n      if (params.slidesPerGroup === 1) {\n        snapGrid.push(snapGrid[snapGrid.length - 1] + size);\n      }\n      slidesGrid.push(slidesGrid[slidesGrid.length - 1] + size);\n      swiper.virtualSize += size;\n    }\n  }\n  if (snapGrid.length === 0) snapGrid = [0];\n  if (spaceBetween !== 0) {\n    const key = swiper.isHorizontal() && rtl ? 'marginLeft' : getDirectionLabel('marginRight');\n    slides.filter((_, slideIndex) => {\n      if (!params.cssMode || params.loop) return true;\n      if (slideIndex === slides.length - 1) {\n        return false;\n      }\n      return true;\n    }).forEach(slideEl => {\n      slideEl.style[key] = `${spaceBetween}px`;\n    });\n  }\n  if (params.centeredSlides && params.centeredSlidesBounds) {\n    let allSlidesSize = 0;\n    slidesSizesGrid.forEach(slideSizeValue => {\n      allSlidesSize += slideSizeValue + (spaceBetween || 0);\n    });\n    allSlidesSize -= spaceBetween;\n    const maxSnap = allSlidesSize - swiperSize;\n    snapGrid = snapGrid.map(snap => {\n      if (snap <= 0) return -offsetBefore;\n      if (snap > maxSnap) return maxSnap + offsetAfter;\n      return snap;\n    });\n  }\n  if (params.centerInsufficientSlides) {\n    let allSlidesSize = 0;\n    slidesSizesGrid.forEach(slideSizeValue => {\n      allSlidesSize += slideSizeValue + (spaceBetween || 0);\n    });\n    allSlidesSize -= spaceBetween;\n    if (allSlidesSize < swiperSize) {\n      const allSlidesOffset = (swiperSize - allSlidesSize) / 2;\n      snapGrid.forEach((snap, snapIndex) => {\n        snapGrid[snapIndex] = snap - allSlidesOffset;\n      });\n      slidesGrid.forEach((snap, snapIndex) => {\n        slidesGrid[snapIndex] = snap + allSlidesOffset;\n      });\n    }\n  }\n  Object.assign(swiper, {\n    slides,\n    snapGrid,\n    slidesGrid,\n    slidesSizesGrid\n  });\n  if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) {\n    setCSSProperty(wrapperEl, '--swiper-centered-offset-before', `${-snapGrid[0]}px`);\n    setCSSProperty(wrapperEl, '--swiper-centered-offset-after', `${swiper.size / 2 - slidesSizesGrid[slidesSizesGrid.length - 1] / 2}px`);\n    const addToSnapGrid = -swiper.snapGrid[0];\n    const addToSlidesGrid = -swiper.slidesGrid[0];\n    swiper.snapGrid = swiper.snapGrid.map(v => v + addToSnapGrid);\n    swiper.slidesGrid = swiper.slidesGrid.map(v => v + addToSlidesGrid);\n  }\n  if (slidesLength !== previousSlidesLength) {\n    swiper.emit('slidesLengthChange');\n  }\n  if (snapGrid.length !== previousSnapGridLength) {\n    if (swiper.params.watchOverflow) swiper.checkOverflow();\n    swiper.emit('snapGridLengthChange');\n  }\n  if (slidesGrid.length !== previousSlidesGridLength) {\n    swiper.emit('slidesGridLengthChange');\n  }\n  if (params.watchSlidesProgress) {\n    swiper.updateSlidesOffset();\n  }\n  if (!isVirtual && !params.cssMode && (params.effect === 'slide' || params.effect === 'fade')) {\n    const backFaceHiddenClass = `${params.containerModifierClass}backface-hidden`;\n    const hasClassBackfaceClassAdded = swiper.el.classList.contains(backFaceHiddenClass);\n    if (slidesLength <= params.maxBackfaceHiddenSlides) {\n      if (!hasClassBackfaceClassAdded) swiper.el.classList.add(backFaceHiddenClass);\n    } else if (hasClassBackfaceClassAdded) {\n      swiper.el.classList.remove(backFaceHiddenClass);\n    }\n  }\n}\n\nfunction updateAutoHeight(speed) {\n  const swiper = this;\n  const activeSlides = [];\n  const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n  let newHeight = 0;\n  let i;\n  if (typeof speed === 'number') {\n    swiper.setTransition(speed);\n  } else if (speed === true) {\n    swiper.setTransition(swiper.params.speed);\n  }\n  const getSlideByIndex = index => {\n    if (isVirtual) {\n      return swiper.slides[swiper.getSlideIndexByData(index)];\n    }\n    return swiper.slides[index];\n  };\n  // Find slides currently in view\n  if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {\n    if (swiper.params.centeredSlides) {\n      (swiper.visibleSlides || []).forEach(slide => {\n        activeSlides.push(slide);\n      });\n    } else {\n      for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) {\n        const index = swiper.activeIndex + i;\n        if (index > swiper.slides.length && !isVirtual) break;\n        activeSlides.push(getSlideByIndex(index));\n      }\n    }\n  } else {\n    activeSlides.push(getSlideByIndex(swiper.activeIndex));\n  }\n\n  // Find new height from highest slide in view\n  for (i = 0; i < activeSlides.length; i += 1) {\n    if (typeof activeSlides[i] !== 'undefined') {\n      const height = activeSlides[i].offsetHeight;\n      newHeight = height > newHeight ? height : newHeight;\n    }\n  }\n\n  // Update Height\n  if (newHeight || newHeight === 0) swiper.wrapperEl.style.height = `${newHeight}px`;\n}\n\nfunction updateSlidesOffset() {\n  const swiper = this;\n  const slides = swiper.slides;\n  // eslint-disable-next-line\n  const minusOffset = swiper.isElement ? swiper.isHorizontal() ? swiper.wrapperEl.offsetLeft : swiper.wrapperEl.offsetTop : 0;\n  for (let i = 0; i < slides.length; i += 1) {\n    slides[i].swiperSlideOffset = (swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop) - minusOffset - swiper.cssOverflowAdjustment();\n  }\n}\n\nfunction updateSlidesProgress(translate) {\n  if (translate === void 0) {\n    translate = this && this.translate || 0;\n  }\n  const swiper = this;\n  const params = swiper.params;\n  const {\n    slides,\n    rtlTranslate: rtl,\n    snapGrid\n  } = swiper;\n  if (slides.length === 0) return;\n  if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset();\n  let offsetCenter = -translate;\n  if (rtl) offsetCenter = translate;\n\n  // Visible Slides\n  slides.forEach(slideEl => {\n    slideEl.classList.remove(params.slideVisibleClass);\n  });\n  swiper.visibleSlidesIndexes = [];\n  swiper.visibleSlides = [];\n  let spaceBetween = params.spaceBetween;\n  if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n    spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiper.size;\n  } else if (typeof spaceBetween === 'string') {\n    spaceBetween = parseFloat(spaceBetween);\n  }\n  for (let i = 0; i < slides.length; i += 1) {\n    const slide = slides[i];\n    let slideOffset = slide.swiperSlideOffset;\n    if (params.cssMode && params.centeredSlides) {\n      slideOffset -= slides[0].swiperSlideOffset;\n    }\n    const slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween);\n    const originalSlideProgress = (offsetCenter - snapGrid[0] + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween);\n    const slideBefore = -(offsetCenter - slideOffset);\n    const slideAfter = slideBefore + swiper.slidesSizesGrid[i];\n    const isVisible = slideBefore >= 0 && slideBefore < swiper.size - 1 || slideAfter > 1 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size;\n    if (isVisible) {\n      swiper.visibleSlides.push(slide);\n      swiper.visibleSlidesIndexes.push(i);\n      slides[i].classList.add(params.slideVisibleClass);\n    }\n    slide.progress = rtl ? -slideProgress : slideProgress;\n    slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress;\n  }\n}\n\nfunction updateProgress(translate) {\n  const swiper = this;\n  if (typeof translate === 'undefined') {\n    const multiplier = swiper.rtlTranslate ? -1 : 1;\n    // eslint-disable-next-line\n    translate = swiper && swiper.translate && swiper.translate * multiplier || 0;\n  }\n  const params = swiper.params;\n  const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n  let {\n    progress,\n    isBeginning,\n    isEnd,\n    progressLoop\n  } = swiper;\n  const wasBeginning = isBeginning;\n  const wasEnd = isEnd;\n  if (translatesDiff === 0) {\n    progress = 0;\n    isBeginning = true;\n    isEnd = true;\n  } else {\n    progress = (translate - swiper.minTranslate()) / translatesDiff;\n    const isBeginningRounded = Math.abs(translate - swiper.minTranslate()) < 1;\n    const isEndRounded = Math.abs(translate - swiper.maxTranslate()) < 1;\n    isBeginning = isBeginningRounded || progress <= 0;\n    isEnd = isEndRounded || progress >= 1;\n    if (isBeginningRounded) progress = 0;\n    if (isEndRounded) progress = 1;\n  }\n  if (params.loop) {\n    const firstSlideIndex = swiper.getSlideIndexByData(0);\n    const lastSlideIndex = swiper.getSlideIndexByData(swiper.slides.length - 1);\n    const firstSlideTranslate = swiper.slidesGrid[firstSlideIndex];\n    const lastSlideTranslate = swiper.slidesGrid[lastSlideIndex];\n    const translateMax = swiper.slidesGrid[swiper.slidesGrid.length - 1];\n    const translateAbs = Math.abs(translate);\n    if (translateAbs >= firstSlideTranslate) {\n      progressLoop = (translateAbs - firstSlideTranslate) / translateMax;\n    } else {\n      progressLoop = (translateAbs + translateMax - lastSlideTranslate) / translateMax;\n    }\n    if (progressLoop > 1) progressLoop -= 1;\n  }\n  Object.assign(swiper, {\n    progress,\n    progressLoop,\n    isBeginning,\n    isEnd\n  });\n  if (params.watchSlidesProgress || params.centeredSlides && params.autoHeight) swiper.updateSlidesProgress(translate);\n  if (isBeginning && !wasBeginning) {\n    swiper.emit('reachBeginning toEdge');\n  }\n  if (isEnd && !wasEnd) {\n    swiper.emit('reachEnd toEdge');\n  }\n  if (wasBeginning && !isBeginning || wasEnd && !isEnd) {\n    swiper.emit('fromEdge');\n  }\n  swiper.emit('progress', progress);\n}\n\nfunction updateSlidesClasses() {\n  const swiper = this;\n  const {\n    slides,\n    params,\n    slidesEl,\n    activeIndex\n  } = swiper;\n  const isVirtual = swiper.virtual && params.virtual.enabled;\n  const getFilteredSlide = selector => {\n    return elementChildren(slidesEl, `.${params.slideClass}${selector}, swiper-slide${selector}`)[0];\n  };\n  slides.forEach(slideEl => {\n    slideEl.classList.remove(params.slideActiveClass, params.slideNextClass, params.slidePrevClass);\n  });\n  let activeSlide;\n  if (isVirtual) {\n    if (params.loop) {\n      let slideIndex = activeIndex - swiper.virtual.slidesBefore;\n      if (slideIndex < 0) slideIndex = swiper.virtual.slides.length + slideIndex;\n      if (slideIndex >= swiper.virtual.slides.length) slideIndex -= swiper.virtual.slides.length;\n      activeSlide = getFilteredSlide(`[data-swiper-slide-index=\"${slideIndex}\"]`);\n    } else {\n      activeSlide = getFilteredSlide(`[data-swiper-slide-index=\"${activeIndex}\"]`);\n    }\n  } else {\n    activeSlide = slides[activeIndex];\n  }\n  if (activeSlide) {\n    // Active classes\n    activeSlide.classList.add(params.slideActiveClass);\n\n    // Next Slide\n    let nextSlide = elementNextAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0];\n    if (params.loop && !nextSlide) {\n      nextSlide = slides[0];\n    }\n    if (nextSlide) {\n      nextSlide.classList.add(params.slideNextClass);\n    }\n    // Prev Slide\n    let prevSlide = elementPrevAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0];\n    if (params.loop && !prevSlide === 0) {\n      prevSlide = slides[slides.length - 1];\n    }\n    if (prevSlide) {\n      prevSlide.classList.add(params.slidePrevClass);\n    }\n  }\n  swiper.emitSlidesClasses();\n}\n\nconst processLazyPreloader = (swiper, imageEl) => {\n  if (!swiper || swiper.destroyed || !swiper.params) return;\n  const slideSelector = () => swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`;\n  const slideEl = imageEl.closest(slideSelector());\n  if (slideEl) {\n    let lazyEl = slideEl.querySelector(`.${swiper.params.lazyPreloaderClass}`);\n    if (!lazyEl && swiper.isElement) {\n      lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`);\n    }\n    if (lazyEl) lazyEl.remove();\n  }\n};\nconst unlazy = (swiper, index) => {\n  if (!swiper.slides[index]) return;\n  const imageEl = swiper.slides[index].querySelector('[loading=\"lazy\"]');\n  if (imageEl) imageEl.removeAttribute('loading');\n};\nconst preload = swiper => {\n  if (!swiper || swiper.destroyed || !swiper.params) return;\n  let amount = swiper.params.lazyPreloadPrevNext;\n  const len = swiper.slides.length;\n  if (!len || !amount || amount < 0) return;\n  amount = Math.min(amount, len);\n  const slidesPerView = swiper.params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(swiper.params.slidesPerView);\n  const activeIndex = swiper.activeIndex;\n  if (swiper.params.grid && swiper.params.grid.rows > 1) {\n    const activeColumn = activeIndex;\n    const preloadColumns = [activeColumn - amount];\n    preloadColumns.push(...Array.from({\n      length: amount\n    }).map((_, i) => {\n      return activeColumn + slidesPerView + i;\n    }));\n    swiper.slides.forEach((slideEl, i) => {\n      if (preloadColumns.includes(slideEl.column)) unlazy(swiper, i);\n    });\n    return;\n  }\n  const slideIndexLastInView = activeIndex + slidesPerView - 1;\n  if (swiper.params.rewind || swiper.params.loop) {\n    for (let i = activeIndex - amount; i <= slideIndexLastInView + amount; i += 1) {\n      const realIndex = (i % len + len) % len;\n      if (realIndex < activeIndex || realIndex > slideIndexLastInView) unlazy(swiper, realIndex);\n    }\n  } else {\n    for (let i = Math.max(activeIndex - amount, 0); i <= Math.min(slideIndexLastInView + amount, len - 1); i += 1) {\n      if (i !== activeIndex && (i > slideIndexLastInView || i < activeIndex)) {\n        unlazy(swiper, i);\n      }\n    }\n  }\n};\n\nfunction getActiveIndexByTranslate(swiper) {\n  const {\n    slidesGrid,\n    params\n  } = swiper;\n  const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n  let activeIndex;\n  for (let i = 0; i < slidesGrid.length; i += 1) {\n    if (typeof slidesGrid[i + 1] !== 'undefined') {\n      if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2) {\n        activeIndex = i;\n      } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) {\n        activeIndex = i + 1;\n      }\n    } else if (translate >= slidesGrid[i]) {\n      activeIndex = i;\n    }\n  }\n  // Normalize slideIndex\n  if (params.normalizeSlideIndex) {\n    if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0;\n  }\n  return activeIndex;\n}\nfunction updateActiveIndex(newActiveIndex) {\n  const swiper = this;\n  const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n  const {\n    snapGrid,\n    params,\n    activeIndex: previousIndex,\n    realIndex: previousRealIndex,\n    snapIndex: previousSnapIndex\n  } = swiper;\n  let activeIndex = newActiveIndex;\n  let snapIndex;\n  const getVirtualRealIndex = aIndex => {\n    let realIndex = aIndex - swiper.virtual.slidesBefore;\n    if (realIndex < 0) {\n      realIndex = swiper.virtual.slides.length + realIndex;\n    }\n    if (realIndex >= swiper.virtual.slides.length) {\n      realIndex -= swiper.virtual.slides.length;\n    }\n    return realIndex;\n  };\n  if (typeof activeIndex === 'undefined') {\n    activeIndex = getActiveIndexByTranslate(swiper);\n  }\n  if (snapGrid.indexOf(translate) >= 0) {\n    snapIndex = snapGrid.indexOf(translate);\n  } else {\n    const skip = Math.min(params.slidesPerGroupSkip, activeIndex);\n    snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup);\n  }\n  if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n  if (activeIndex === previousIndex) {\n    if (snapIndex !== previousSnapIndex) {\n      swiper.snapIndex = snapIndex;\n      swiper.emit('snapIndexChange');\n    }\n    if (swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) {\n      swiper.realIndex = getVirtualRealIndex(activeIndex);\n    }\n    return;\n  }\n  // Get real index\n  let realIndex;\n  if (swiper.virtual && params.virtual.enabled && params.loop) {\n    realIndex = getVirtualRealIndex(activeIndex);\n  } else if (swiper.slides[activeIndex]) {\n    realIndex = parseInt(swiper.slides[activeIndex].getAttribute('data-swiper-slide-index') || activeIndex, 10);\n  } else {\n    realIndex = activeIndex;\n  }\n  Object.assign(swiper, {\n    previousSnapIndex,\n    snapIndex,\n    previousRealIndex,\n    realIndex,\n    previousIndex,\n    activeIndex\n  });\n  if (swiper.initialized) {\n    preload(swiper);\n  }\n  swiper.emit('activeIndexChange');\n  swiper.emit('snapIndexChange');\n  if (previousRealIndex !== realIndex) {\n    swiper.emit('realIndexChange');\n  }\n  if (swiper.initialized || swiper.params.runCallbacksOnInit) {\n    swiper.emit('slideChange');\n  }\n}\n\nfunction updateClickedSlide(e) {\n  const swiper = this;\n  const params = swiper.params;\n  const slide = e.closest(`.${params.slideClass}, swiper-slide`);\n  let slideFound = false;\n  let slideIndex;\n  if (slide) {\n    for (let i = 0; i < swiper.slides.length; i += 1) {\n      if (swiper.slides[i] === slide) {\n        slideFound = true;\n        slideIndex = i;\n        break;\n      }\n    }\n  }\n  if (slide && slideFound) {\n    swiper.clickedSlide = slide;\n    if (swiper.virtual && swiper.params.virtual.enabled) {\n      swiper.clickedIndex = parseInt(slide.getAttribute('data-swiper-slide-index'), 10);\n    } else {\n      swiper.clickedIndex = slideIndex;\n    }\n  } else {\n    swiper.clickedSlide = undefined;\n    swiper.clickedIndex = undefined;\n    return;\n  }\n  if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) {\n    swiper.slideToClickedSlide();\n  }\n}\n\nvar update = {\n  updateSize,\n  updateSlides,\n  updateAutoHeight,\n  updateSlidesOffset,\n  updateSlidesProgress,\n  updateProgress,\n  updateSlidesClasses,\n  updateActiveIndex,\n  updateClickedSlide\n};\n\nfunction getSwiperTranslate(axis) {\n  if (axis === void 0) {\n    axis = this.isHorizontal() ? 'x' : 'y';\n  }\n  const swiper = this;\n  const {\n    params,\n    rtlTranslate: rtl,\n    translate,\n    wrapperEl\n  } = swiper;\n  if (params.virtualTranslate) {\n    return rtl ? -translate : translate;\n  }\n  if (params.cssMode) {\n    return translate;\n  }\n  let currentTranslate = getTranslate(wrapperEl, axis);\n  currentTranslate += swiper.cssOverflowAdjustment();\n  if (rtl) currentTranslate = -currentTranslate;\n  return currentTranslate || 0;\n}\n\nfunction setTranslate(translate, byController) {\n  const swiper = this;\n  const {\n    rtlTranslate: rtl,\n    params,\n    wrapperEl,\n    progress\n  } = swiper;\n  let x = 0;\n  let y = 0;\n  const z = 0;\n  if (swiper.isHorizontal()) {\n    x = rtl ? -translate : translate;\n  } else {\n    y = translate;\n  }\n  if (params.roundLengths) {\n    x = Math.floor(x);\n    y = Math.floor(y);\n  }\n  swiper.previousTranslate = swiper.translate;\n  swiper.translate = swiper.isHorizontal() ? x : y;\n  if (params.cssMode) {\n    wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y;\n  } else if (!params.virtualTranslate) {\n    if (swiper.isHorizontal()) {\n      x -= swiper.cssOverflowAdjustment();\n    } else {\n      y -= swiper.cssOverflowAdjustment();\n    }\n    wrapperEl.style.transform = `translate3d(${x}px, ${y}px, ${z}px)`;\n  }\n\n  // Check if we need to update progress\n  let newProgress;\n  const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n  if (translatesDiff === 0) {\n    newProgress = 0;\n  } else {\n    newProgress = (translate - swiper.minTranslate()) / translatesDiff;\n  }\n  if (newProgress !== progress) {\n    swiper.updateProgress(translate);\n  }\n  swiper.emit('setTranslate', swiper.translate, byController);\n}\n\nfunction minTranslate() {\n  return -this.snapGrid[0];\n}\n\nfunction maxTranslate() {\n  return -this.snapGrid[this.snapGrid.length - 1];\n}\n\nfunction translateTo(translate, speed, runCallbacks, translateBounds, internal) {\n  if (translate === void 0) {\n    translate = 0;\n  }\n  if (speed === void 0) {\n    speed = this.params.speed;\n  }\n  if (runCallbacks === void 0) {\n    runCallbacks = true;\n  }\n  if (translateBounds === void 0) {\n    translateBounds = true;\n  }\n  const swiper = this;\n  const {\n    params,\n    wrapperEl\n  } = swiper;\n  if (swiper.animating && params.preventInteractionOnTransition) {\n    return false;\n  }\n  const minTranslate = swiper.minTranslate();\n  const maxTranslate = swiper.maxTranslate();\n  let newTranslate;\n  if (translateBounds && translate > minTranslate) newTranslate = minTranslate;else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;else newTranslate = translate;\n\n  // Update progress\n  swiper.updateProgress(newTranslate);\n  if (params.cssMode) {\n    const isH = swiper.isHorizontal();\n    if (speed === 0) {\n      wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;\n    } else {\n      if (!swiper.support.smoothScroll) {\n        animateCSSModeScroll({\n          swiper,\n          targetPosition: -newTranslate,\n          side: isH ? 'left' : 'top'\n        });\n        return true;\n      }\n      wrapperEl.scrollTo({\n        [isH ? 'left' : 'top']: -newTranslate,\n        behavior: 'smooth'\n      });\n    }\n    return true;\n  }\n  if (speed === 0) {\n    swiper.setTransition(0);\n    swiper.setTranslate(newTranslate);\n    if (runCallbacks) {\n      swiper.emit('beforeTransitionStart', speed, internal);\n      swiper.emit('transitionEnd');\n    }\n  } else {\n    swiper.setTransition(speed);\n    swiper.setTranslate(newTranslate);\n    if (runCallbacks) {\n      swiper.emit('beforeTransitionStart', speed, internal);\n      swiper.emit('transitionStart');\n    }\n    if (!swiper.animating) {\n      swiper.animating = true;\n      if (!swiper.onTranslateToWrapperTransitionEnd) {\n        swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) {\n          if (!swiper || swiper.destroyed) return;\n          if (e.target !== this) return;\n          swiper.wrapperEl.removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n          swiper.onTranslateToWrapperTransitionEnd = null;\n          delete swiper.onTranslateToWrapperTransitionEnd;\n          if (runCallbacks) {\n            swiper.emit('transitionEnd');\n          }\n        };\n      }\n      swiper.wrapperEl.addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n    }\n  }\n  return true;\n}\n\nvar translate = {\n  getTranslate: getSwiperTranslate,\n  setTranslate,\n  minTranslate,\n  maxTranslate,\n  translateTo\n};\n\nfunction setTransition(duration, byController) {\n  const swiper = this;\n  if (!swiper.params.cssMode) {\n    swiper.wrapperEl.style.transitionDuration = `${duration}ms`;\n    swiper.wrapperEl.style.transitionDelay = duration === 0 ? `0ms` : '';\n  }\n  swiper.emit('setTransition', duration, byController);\n}\n\nfunction transitionEmit(_ref) {\n  let {\n    swiper,\n    runCallbacks,\n    direction,\n    step\n  } = _ref;\n  const {\n    activeIndex,\n    previousIndex\n  } = swiper;\n  let dir = direction;\n  if (!dir) {\n    if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset';\n  }\n  swiper.emit(`transition${step}`);\n  if (runCallbacks && activeIndex !== previousIndex) {\n    if (dir === 'reset') {\n      swiper.emit(`slideResetTransition${step}`);\n      return;\n    }\n    swiper.emit(`slideChangeTransition${step}`);\n    if (dir === 'next') {\n      swiper.emit(`slideNextTransition${step}`);\n    } else {\n      swiper.emit(`slidePrevTransition${step}`);\n    }\n  }\n}\n\nfunction transitionStart(runCallbacks, direction) {\n  if (runCallbacks === void 0) {\n    runCallbacks = true;\n  }\n  const swiper = this;\n  const {\n    params\n  } = swiper;\n  if (params.cssMode) return;\n  if (params.autoHeight) {\n    swiper.updateAutoHeight();\n  }\n  transitionEmit({\n    swiper,\n    runCallbacks,\n    direction,\n    step: 'Start'\n  });\n}\n\nfunction transitionEnd(runCallbacks, direction) {\n  if (runCallbacks === void 0) {\n    runCallbacks = true;\n  }\n  const swiper = this;\n  const {\n    params\n  } = swiper;\n  swiper.animating = false;\n  if (params.cssMode) return;\n  swiper.setTransition(0);\n  transitionEmit({\n    swiper,\n    runCallbacks,\n    direction,\n    step: 'End'\n  });\n}\n\nvar transition = {\n  setTransition,\n  transitionStart,\n  transitionEnd\n};\n\nfunction slideTo(index, speed, runCallbacks, internal, initial) {\n  if (index === void 0) {\n    index = 0;\n  }\n  if (speed === void 0) {\n    speed = this.params.speed;\n  }\n  if (runCallbacks === void 0) {\n    runCallbacks = true;\n  }\n  if (typeof index === 'string') {\n    index = parseInt(index, 10);\n  }\n  const swiper = this;\n  let slideIndex = index;\n  if (slideIndex < 0) slideIndex = 0;\n  const {\n    params,\n    snapGrid,\n    slidesGrid,\n    previousIndex,\n    activeIndex,\n    rtlTranslate: rtl,\n    wrapperEl,\n    enabled\n  } = swiper;\n  if (swiper.animating && params.preventInteractionOnTransition || !enabled && !internal && !initial) {\n    return false;\n  }\n  const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex);\n  let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup);\n  if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n  const translate = -snapGrid[snapIndex];\n  // Normalize slideIndex\n  if (params.normalizeSlideIndex) {\n    for (let i = 0; i < slidesGrid.length; i += 1) {\n      const normalizedTranslate = -Math.floor(translate * 100);\n      const normalizedGrid = Math.floor(slidesGrid[i] * 100);\n      const normalizedGridNext = Math.floor(slidesGrid[i + 1] * 100);\n      if (typeof slidesGrid[i + 1] !== 'undefined') {\n        if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGrid) / 2) {\n          slideIndex = i;\n        } else if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext) {\n          slideIndex = i + 1;\n        }\n      } else if (normalizedTranslate >= normalizedGrid) {\n        slideIndex = i;\n      }\n    }\n  }\n  // Directions locks\n  if (swiper.initialized && slideIndex !== activeIndex) {\n    if (!swiper.allowSlideNext && (rtl ? translate > swiper.translate && translate > swiper.minTranslate() : translate < swiper.translate && translate < swiper.minTranslate())) {\n      return false;\n    }\n    if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) {\n      if ((activeIndex || 0) !== slideIndex) {\n        return false;\n      }\n    }\n  }\n  if (slideIndex !== (previousIndex || 0) && runCallbacks) {\n    swiper.emit('beforeSlideChangeStart');\n  }\n\n  // Update progress\n  swiper.updateProgress(translate);\n  let direction;\n  if (slideIndex > activeIndex) direction = 'next';else if (slideIndex < activeIndex) direction = 'prev';else direction = 'reset';\n\n  // Update Index\n  if (rtl && -translate === swiper.translate || !rtl && translate === swiper.translate) {\n    swiper.updateActiveIndex(slideIndex);\n    // Update Height\n    if (params.autoHeight) {\n      swiper.updateAutoHeight();\n    }\n    swiper.updateSlidesClasses();\n    if (params.effect !== 'slide') {\n      swiper.setTranslate(translate);\n    }\n    if (direction !== 'reset') {\n      swiper.transitionStart(runCallbacks, direction);\n      swiper.transitionEnd(runCallbacks, direction);\n    }\n    return false;\n  }\n  if (params.cssMode) {\n    const isH = swiper.isHorizontal();\n    const t = rtl ? translate : -translate;\n    if (speed === 0) {\n      const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n      if (isVirtual) {\n        swiper.wrapperEl.style.scrollSnapType = 'none';\n        swiper._immediateVirtual = true;\n      }\n      if (isVirtual && !swiper._cssModeVirtualInitialSet && swiper.params.initialSlide > 0) {\n        swiper._cssModeVirtualInitialSet = true;\n        requestAnimationFrame(() => {\n          wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n        });\n      } else {\n        wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n      }\n      if (isVirtual) {\n        requestAnimationFrame(() => {\n          swiper.wrapperEl.style.scrollSnapType = '';\n          swiper._immediateVirtual = false;\n        });\n      }\n    } else {\n      if (!swiper.support.smoothScroll) {\n        animateCSSModeScroll({\n          swiper,\n          targetPosition: t,\n          side: isH ? 'left' : 'top'\n        });\n        return true;\n      }\n      wrapperEl.scrollTo({\n        [isH ? 'left' : 'top']: t,\n        behavior: 'smooth'\n      });\n    }\n    return true;\n  }\n  swiper.setTransition(speed);\n  swiper.setTranslate(translate);\n  swiper.updateActiveIndex(slideIndex);\n  swiper.updateSlidesClasses();\n  swiper.emit('beforeTransitionStart', speed, internal);\n  swiper.transitionStart(runCallbacks, direction);\n  if (speed === 0) {\n    swiper.transitionEnd(runCallbacks, direction);\n  } else if (!swiper.animating) {\n    swiper.animating = true;\n    if (!swiper.onSlideToWrapperTransitionEnd) {\n      swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) {\n        if (!swiper || swiper.destroyed) return;\n        if (e.target !== this) return;\n        swiper.wrapperEl.removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n        swiper.onSlideToWrapperTransitionEnd = null;\n        delete swiper.onSlideToWrapperTransitionEnd;\n        swiper.transitionEnd(runCallbacks, direction);\n      };\n    }\n    swiper.wrapperEl.addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n  }\n  return true;\n}\n\nfunction slideToLoop(index, speed, runCallbacks, internal) {\n  if (index === void 0) {\n    index = 0;\n  }\n  if (speed === void 0) {\n    speed = this.params.speed;\n  }\n  if (runCallbacks === void 0) {\n    runCallbacks = true;\n  }\n  if (typeof index === 'string') {\n    const indexAsNumber = parseInt(index, 10);\n    index = indexAsNumber;\n  }\n  const swiper = this;\n  let newIndex = index;\n  if (swiper.params.loop) {\n    if (swiper.virtual && swiper.params.virtual.enabled) {\n      // eslint-disable-next-line\n      newIndex = newIndex + swiper.virtual.slidesBefore;\n    } else {\n      newIndex = swiper.getSlideIndexByData(newIndex);\n    }\n  }\n  return swiper.slideTo(newIndex, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideNext(speed, runCallbacks, internal) {\n  if (speed === void 0) {\n    speed = this.params.speed;\n  }\n  if (runCallbacks === void 0) {\n    runCallbacks = true;\n  }\n  const swiper = this;\n  const {\n    enabled,\n    params,\n    animating\n  } = swiper;\n  if (!enabled) return swiper;\n  let perGroup = params.slidesPerGroup;\n  if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n    perGroup = Math.max(swiper.slidesPerViewDynamic('current', true), 1);\n  }\n  const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : perGroup;\n  const isVirtual = swiper.virtual && params.virtual.enabled;\n  if (params.loop) {\n    if (animating && !isVirtual && params.loopPreventsSliding) return false;\n    swiper.loopFix({\n      direction: 'next'\n    });\n    // eslint-disable-next-line\n    swiper._clientLeft = swiper.wrapperEl.clientLeft;\n  }\n  if (params.rewind && swiper.isEnd) {\n    return swiper.slideTo(0, speed, runCallbacks, internal);\n  }\n  return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slidePrev(speed, runCallbacks, internal) {\n  if (speed === void 0) {\n    speed = this.params.speed;\n  }\n  if (runCallbacks === void 0) {\n    runCallbacks = true;\n  }\n  const swiper = this;\n  const {\n    params,\n    snapGrid,\n    slidesGrid,\n    rtlTranslate,\n    enabled,\n    animating\n  } = swiper;\n  if (!enabled) return swiper;\n  const isVirtual = swiper.virtual && params.virtual.enabled;\n  if (params.loop) {\n    if (animating && !isVirtual && params.loopPreventsSliding) return false;\n    swiper.loopFix({\n      direction: 'prev'\n    });\n    // eslint-disable-next-line\n    swiper._clientLeft = swiper.wrapperEl.clientLeft;\n  }\n  const translate = rtlTranslate ? swiper.translate : -swiper.translate;\n  function normalize(val) {\n    if (val < 0) return -Math.floor(Math.abs(val));\n    return Math.floor(val);\n  }\n  const normalizedTranslate = normalize(translate);\n  const normalizedSnapGrid = snapGrid.map(val => normalize(val));\n  let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];\n  if (typeof prevSnap === 'undefined' && params.cssMode) {\n    let prevSnapIndex;\n    snapGrid.forEach((snap, snapIndex) => {\n      if (normalizedTranslate >= snap) {\n        // prevSnap = snap;\n        prevSnapIndex = snapIndex;\n      }\n    });\n    if (typeof prevSnapIndex !== 'undefined') {\n      prevSnap = snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex];\n    }\n  }\n  let prevIndex = 0;\n  if (typeof prevSnap !== 'undefined') {\n    prevIndex = slidesGrid.indexOf(prevSnap);\n    if (prevIndex < 0) prevIndex = swiper.activeIndex - 1;\n    if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n      prevIndex = prevIndex - swiper.slidesPerViewDynamic('previous', true) + 1;\n      prevIndex = Math.max(prevIndex, 0);\n    }\n  }\n  if (params.rewind && swiper.isBeginning) {\n    const lastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;\n    return swiper.slideTo(lastIndex, speed, runCallbacks, internal);\n  }\n  return swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideReset(speed, runCallbacks, internal) {\n  if (speed === void 0) {\n    speed = this.params.speed;\n  }\n  if (runCallbacks === void 0) {\n    runCallbacks = true;\n  }\n  const swiper = this;\n  return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideToClosest(speed, runCallbacks, internal, threshold) {\n  if (speed === void 0) {\n    speed = this.params.speed;\n  }\n  if (runCallbacks === void 0) {\n    runCallbacks = true;\n  }\n  if (threshold === void 0) {\n    threshold = 0.5;\n  }\n  const swiper = this;\n  let index = swiper.activeIndex;\n  const skip = Math.min(swiper.params.slidesPerGroupSkip, index);\n  const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup);\n  const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n  if (translate >= swiper.snapGrid[snapIndex]) {\n    // The current translate is on or after the current snap index, so the choice\n    // is between the current index and the one after it.\n    const currentSnap = swiper.snapGrid[snapIndex];\n    const nextSnap = swiper.snapGrid[snapIndex + 1];\n    if (translate - currentSnap > (nextSnap - currentSnap) * threshold) {\n      index += swiper.params.slidesPerGroup;\n    }\n  } else {\n    // The current translate is before the current snap index, so the choice\n    // is between the current index and the one before it.\n    const prevSnap = swiper.snapGrid[snapIndex - 1];\n    const currentSnap = swiper.snapGrid[snapIndex];\n    if (translate - prevSnap <= (currentSnap - prevSnap) * threshold) {\n      index -= swiper.params.slidesPerGroup;\n    }\n  }\n  index = Math.max(index, 0);\n  index = Math.min(index, swiper.slidesGrid.length - 1);\n  return swiper.slideTo(index, speed, runCallbacks, internal);\n}\n\nfunction slideToClickedSlide() {\n  const swiper = this;\n  const {\n    params,\n    slidesEl\n  } = swiper;\n  const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;\n  let slideToIndex = swiper.clickedIndex;\n  let realIndex;\n  const slideSelector = swiper.isElement ? `swiper-slide` : `.${params.slideClass}`;\n  if (params.loop) {\n    if (swiper.animating) return;\n    realIndex = parseInt(swiper.clickedSlide.getAttribute('data-swiper-slide-index'), 10);\n    if (params.centeredSlides) {\n      if (slideToIndex < swiper.loopedSlides - slidesPerView / 2 || slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2) {\n        swiper.loopFix();\n        slideToIndex = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index=\"${realIndex}\"]`)[0]);\n        nextTick(() => {\n          swiper.slideTo(slideToIndex);\n        });\n      } else {\n        swiper.slideTo(slideToIndex);\n      }\n    } else if (slideToIndex > swiper.slides.length - slidesPerView) {\n      swiper.loopFix();\n      slideToIndex = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index=\"${realIndex}\"]`)[0]);\n      nextTick(() => {\n        swiper.slideTo(slideToIndex);\n      });\n    } else {\n      swiper.slideTo(slideToIndex);\n    }\n  } else {\n    swiper.slideTo(slideToIndex);\n  }\n}\n\nvar slide = {\n  slideTo,\n  slideToLoop,\n  slideNext,\n  slidePrev,\n  slideReset,\n  slideToClosest,\n  slideToClickedSlide\n};\n\nfunction loopCreate(slideRealIndex) {\n  const swiper = this;\n  const {\n    params,\n    slidesEl\n  } = swiper;\n  if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return;\n  const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);\n  slides.forEach((el, index) => {\n    el.setAttribute('data-swiper-slide-index', index);\n  });\n  swiper.loopFix({\n    slideRealIndex,\n    direction: params.centeredSlides ? undefined : 'next'\n  });\n}\n\nfunction loopFix(_temp) {\n  let {\n    slideRealIndex,\n    slideTo = true,\n    direction,\n    setTranslate,\n    activeSlideIndex,\n    byController,\n    byMousewheel\n  } = _temp === void 0 ? {} : _temp;\n  const swiper = this;\n  if (!swiper.params.loop) return;\n  swiper.emit('beforeLoopFix');\n  const {\n    slides,\n    allowSlidePrev,\n    allowSlideNext,\n    slidesEl,\n    params\n  } = swiper;\n  swiper.allowSlidePrev = true;\n  swiper.allowSlideNext = true;\n  if (swiper.virtual && params.virtual.enabled) {\n    if (slideTo) {\n      if (!params.centeredSlides && swiper.snapIndex === 0) {\n        swiper.slideTo(swiper.virtual.slides.length, 0, false, true);\n      } else if (params.centeredSlides && swiper.snapIndex < params.slidesPerView) {\n        swiper.slideTo(swiper.virtual.slides.length + swiper.snapIndex, 0, false, true);\n      } else if (swiper.snapIndex === swiper.snapGrid.length - 1) {\n        swiper.slideTo(swiper.virtual.slidesBefore, 0, false, true);\n      }\n    }\n    swiper.allowSlidePrev = allowSlidePrev;\n    swiper.allowSlideNext = allowSlideNext;\n    swiper.emit('loopFix');\n    return;\n  }\n  const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(parseFloat(params.slidesPerView, 10));\n  let loopedSlides = params.loopedSlides || slidesPerView;\n  if (loopedSlides % params.slidesPerGroup !== 0) {\n    loopedSlides += params.slidesPerGroup - loopedSlides % params.slidesPerGroup;\n  }\n  swiper.loopedSlides = loopedSlides;\n  const prependSlidesIndexes = [];\n  const appendSlidesIndexes = [];\n  let activeIndex = swiper.activeIndex;\n  if (typeof activeSlideIndex === 'undefined') {\n    activeSlideIndex = swiper.getSlideIndex(swiper.slides.filter(el => el.classList.contains(params.slideActiveClass))[0]);\n  } else {\n    activeIndex = activeSlideIndex;\n  }\n  const isNext = direction === 'next' || !direction;\n  const isPrev = direction === 'prev' || !direction;\n  let slidesPrepended = 0;\n  let slidesAppended = 0;\n  // prepend last slides before start\n  if (activeSlideIndex < loopedSlides) {\n    slidesPrepended = Math.max(loopedSlides - activeSlideIndex, params.slidesPerGroup);\n    for (let i = 0; i < loopedSlides - activeSlideIndex; i += 1) {\n      const index = i - Math.floor(i / slides.length) * slides.length;\n      prependSlidesIndexes.push(slides.length - index - 1);\n    }\n  } else if (activeSlideIndex /* + slidesPerView */ > swiper.slides.length - loopedSlides * 2) {\n    slidesAppended = Math.max(activeSlideIndex - (swiper.slides.length - loopedSlides * 2), params.slidesPerGroup);\n    for (let i = 0; i < slidesAppended; i += 1) {\n      const index = i - Math.floor(i / slides.length) * slides.length;\n      appendSlidesIndexes.push(index);\n    }\n  }\n  if (isPrev) {\n    prependSlidesIndexes.forEach(index => {\n      swiper.slides[index].swiperLoopMoveDOM = true;\n      slidesEl.prepend(swiper.slides[index]);\n      swiper.slides[index].swiperLoopMoveDOM = false;\n    });\n  }\n  if (isNext) {\n    appendSlidesIndexes.forEach(index => {\n      swiper.slides[index].swiperLoopMoveDOM = true;\n      slidesEl.append(swiper.slides[index]);\n      swiper.slides[index].swiperLoopMoveDOM = false;\n    });\n  }\n  swiper.recalcSlides();\n  if (params.slidesPerView === 'auto') {\n    swiper.updateSlides();\n  }\n  if (params.watchSlidesProgress) {\n    swiper.updateSlidesOffset();\n  }\n  if (slideTo) {\n    if (prependSlidesIndexes.length > 0 && isPrev) {\n      if (typeof slideRealIndex === 'undefined') {\n        const currentSlideTranslate = swiper.slidesGrid[activeIndex];\n        const newSlideTranslate = swiper.slidesGrid[activeIndex + slidesPrepended];\n        const diff = newSlideTranslate - currentSlideTranslate;\n        if (byMousewheel) {\n          swiper.setTranslate(swiper.translate - diff);\n        } else {\n          swiper.slideTo(activeIndex + slidesPrepended, 0, false, true);\n          if (setTranslate) {\n            swiper.touches[swiper.isHorizontal() ? 'startX' : 'startY'] += diff;\n            swiper.touchEventsData.currentTranslate = swiper.translate;\n          }\n        }\n      } else {\n        if (setTranslate) {\n          swiper.slideToLoop(slideRealIndex, 0, false, true);\n          swiper.touchEventsData.currentTranslate = swiper.translate;\n        }\n      }\n    } else if (appendSlidesIndexes.length > 0 && isNext) {\n      if (typeof slideRealIndex === 'undefined') {\n        const currentSlideTranslate = swiper.slidesGrid[activeIndex];\n        const newSlideTranslate = swiper.slidesGrid[activeIndex - slidesAppended];\n        const diff = newSlideTranslate - currentSlideTranslate;\n        if (byMousewheel) {\n          swiper.setTranslate(swiper.translate - diff);\n        } else {\n          swiper.slideTo(activeIndex - slidesAppended, 0, false, true);\n          if (setTranslate) {\n            swiper.touches[swiper.isHorizontal() ? 'startX' : 'startY'] += diff;\n            swiper.touchEventsData.currentTranslate = swiper.translate;\n          }\n        }\n      } else {\n        swiper.slideToLoop(slideRealIndex, 0, false, true);\n      }\n    }\n  }\n  swiper.allowSlidePrev = allowSlidePrev;\n  swiper.allowSlideNext = allowSlideNext;\n  if (swiper.controller && swiper.controller.control && !byController) {\n    const loopParams = {\n      slideRealIndex,\n      direction,\n      setTranslate,\n      activeSlideIndex,\n      byController: true\n    };\n    if (Array.isArray(swiper.controller.control)) {\n      swiper.controller.control.forEach(c => {\n        if (!c.destroyed && c.params.loop) c.loopFix({\n          ...loopParams,\n          slideTo: c.params.slidesPerView === params.slidesPerView ? slideTo : false\n        });\n      });\n    } else if (swiper.controller.control instanceof swiper.constructor && swiper.controller.control.params.loop) {\n      swiper.controller.control.loopFix({\n        ...loopParams,\n        slideTo: swiper.controller.control.params.slidesPerView === params.slidesPerView ? slideTo : false\n      });\n    }\n  }\n  swiper.emit('loopFix');\n}\n\nfunction loopDestroy() {\n  const swiper = this;\n  const {\n    params,\n    slidesEl\n  } = swiper;\n  if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return;\n  swiper.recalcSlides();\n  const newSlidesOrder = [];\n  swiper.slides.forEach(slideEl => {\n    const index = typeof slideEl.swiperSlideIndex === 'undefined' ? slideEl.getAttribute('data-swiper-slide-index') * 1 : slideEl.swiperSlideIndex;\n    newSlidesOrder[index] = slideEl;\n  });\n  swiper.slides.forEach(slideEl => {\n    slideEl.removeAttribute('data-swiper-slide-index');\n  });\n  newSlidesOrder.forEach(slideEl => {\n    slidesEl.append(slideEl);\n  });\n  swiper.recalcSlides();\n  swiper.slideTo(swiper.realIndex, 0);\n}\n\nvar loop = {\n  loopCreate,\n  loopFix,\n  loopDestroy\n};\n\nfunction setGrabCursor(moving) {\n  const swiper = this;\n  if (!swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return;\n  const el = swiper.params.touchEventsTarget === 'container' ? swiper.el : swiper.wrapperEl;\n  if (swiper.isElement) {\n    swiper.__preventObserver__ = true;\n  }\n  el.style.cursor = 'move';\n  el.style.cursor = moving ? 'grabbing' : 'grab';\n  if (swiper.isElement) {\n    requestAnimationFrame(() => {\n      swiper.__preventObserver__ = false;\n    });\n  }\n}\n\nfunction unsetGrabCursor() {\n  const swiper = this;\n  if (swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) {\n    return;\n  }\n  if (swiper.isElement) {\n    swiper.__preventObserver__ = true;\n  }\n  swiper[swiper.params.touchEventsTarget === 'container' ? 'el' : 'wrapperEl'].style.cursor = '';\n  if (swiper.isElement) {\n    requestAnimationFrame(() => {\n      swiper.__preventObserver__ = false;\n    });\n  }\n}\n\nvar grabCursor = {\n  setGrabCursor,\n  unsetGrabCursor\n};\n\n// Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd\nfunction closestElement(selector, base) {\n  if (base === void 0) {\n    base = this;\n  }\n  function __closestFrom(el) {\n    if (!el || el === getDocument() || el === getWindow()) return null;\n    if (el.assignedSlot) el = el.assignedSlot;\n    const found = el.closest(selector);\n    if (!found && !el.getRootNode) {\n      return null;\n    }\n    return found || __closestFrom(el.getRootNode().host);\n  }\n  return __closestFrom(base);\n}\nfunction onTouchStart(event) {\n  const swiper = this;\n  const document = getDocument();\n  const window = getWindow();\n  const data = swiper.touchEventsData;\n  data.evCache.push(event);\n  const {\n    params,\n    touches,\n    enabled\n  } = swiper;\n  if (!enabled) return;\n  if (!params.simulateTouch && event.pointerType === 'mouse') return;\n  if (swiper.animating && params.preventInteractionOnTransition) {\n    return;\n  }\n  if (!swiper.animating && params.cssMode && params.loop) {\n    swiper.loopFix();\n  }\n  let e = event;\n  if (e.originalEvent) e = e.originalEvent;\n  let targetEl = e.target;\n  if (params.touchEventsTarget === 'wrapper') {\n    if (!swiper.wrapperEl.contains(targetEl)) return;\n  }\n  if ('which' in e && e.which === 3) return;\n  if ('button' in e && e.button > 0) return;\n  if (data.isTouched && data.isMoved) return;\n\n  // change target el for shadow root component\n  const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== '';\n  // eslint-disable-next-line\n  const eventPath = event.composedPath ? event.composedPath() : event.path;\n  if (swipingClassHasValue && e.target && e.target.shadowRoot && eventPath) {\n    targetEl = eventPath[0];\n  }\n  const noSwipingSelector = params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`;\n  const isTargetShadow = !!(e.target && e.target.shadowRoot);\n\n  // use closestElement for shadow root element to get the actual closest for nested shadow root element\n  if (params.noSwiping && (isTargetShadow ? closestElement(noSwipingSelector, targetEl) : targetEl.closest(noSwipingSelector))) {\n    swiper.allowClick = true;\n    return;\n  }\n  if (params.swipeHandler) {\n    if (!targetEl.closest(params.swipeHandler)) return;\n  }\n  touches.currentX = e.pageX;\n  touches.currentY = e.pageY;\n  const startX = touches.currentX;\n  const startY = touches.currentY;\n\n  // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore\n\n  const edgeSwipeDetection = params.edgeSwipeDetection || params.iOSEdgeSwipeDetection;\n  const edgeSwipeThreshold = params.edgeSwipeThreshold || params.iOSEdgeSwipeThreshold;\n  if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)) {\n    if (edgeSwipeDetection === 'prevent') {\n      event.preventDefault();\n    } else {\n      return;\n    }\n  }\n  Object.assign(data, {\n    isTouched: true,\n    isMoved: false,\n    allowTouchCallbacks: true,\n    isScrolling: undefined,\n    startMoving: undefined\n  });\n  touches.startX = startX;\n  touches.startY = startY;\n  data.touchStartTime = now();\n  swiper.allowClick = true;\n  swiper.updateSize();\n  swiper.swipeDirection = undefined;\n  if (params.threshold > 0) data.allowThresholdMove = false;\n  let preventDefault = true;\n  if (targetEl.matches(data.focusableElements)) {\n    preventDefault = false;\n    if (targetEl.nodeName === 'SELECT') {\n      data.isTouched = false;\n    }\n  }\n  if (document.activeElement && document.activeElement.matches(data.focusableElements) && document.activeElement !== targetEl) {\n    document.activeElement.blur();\n  }\n  const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;\n  if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !targetEl.isContentEditable) {\n    e.preventDefault();\n  }\n  if (params.freeMode && params.freeMode.enabled && swiper.freeMode && swiper.animating && !params.cssMode) {\n    swiper.freeMode.onTouchStart();\n  }\n  swiper.emit('touchStart', e);\n}\n\nfunction onTouchMove(event) {\n  const document = getDocument();\n  const swiper = this;\n  const data = swiper.touchEventsData;\n  const {\n    params,\n    touches,\n    rtlTranslate: rtl,\n    enabled\n  } = swiper;\n  if (!enabled) return;\n  if (!params.simulateTouch && event.pointerType === 'mouse') return;\n  let e = event;\n  if (e.originalEvent) e = e.originalEvent;\n  if (!data.isTouched) {\n    if (data.startMoving && data.isScrolling) {\n      swiper.emit('touchMoveOpposite', e);\n    }\n    return;\n  }\n  const pointerIndex = data.evCache.findIndex(cachedEv => cachedEv.pointerId === e.pointerId);\n  if (pointerIndex >= 0) data.evCache[pointerIndex] = e;\n  const targetTouch = data.evCache.length > 1 ? data.evCache[0] : e;\n  const pageX = targetTouch.pageX;\n  const pageY = targetTouch.pageY;\n  if (e.preventedByNestedSwiper) {\n    touches.startX = pageX;\n    touches.startY = pageY;\n    return;\n  }\n  if (!swiper.allowTouchMove) {\n    if (!e.target.matches(data.focusableElements)) {\n      swiper.allowClick = false;\n    }\n    if (data.isTouched) {\n      Object.assign(touches, {\n        startX: pageX,\n        startY: pageY,\n        prevX: swiper.touches.currentX,\n        prevY: swiper.touches.currentY,\n        currentX: pageX,\n        currentY: pageY\n      });\n      data.touchStartTime = now();\n    }\n    return;\n  }\n  if (params.touchReleaseOnEdges && !params.loop) {\n    if (swiper.isVertical()) {\n      // Vertical\n      if (pageY < touches.startY && swiper.translate <= swiper.maxTranslate() || pageY > touches.startY && swiper.translate >= swiper.minTranslate()) {\n        data.isTouched = false;\n        data.isMoved = false;\n        return;\n      }\n    } else if (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate()) {\n      return;\n    }\n  }\n  if (document.activeElement) {\n    if (e.target === document.activeElement && e.target.matches(data.focusableElements)) {\n      data.isMoved = true;\n      swiper.allowClick = false;\n      return;\n    }\n  }\n  if (data.allowTouchCallbacks) {\n    swiper.emit('touchMove', e);\n  }\n  if (e.targetTouches && e.targetTouches.length > 1) return;\n  touches.currentX = pageX;\n  touches.currentY = pageY;\n  const diffX = touches.currentX - touches.startX;\n  const diffY = touches.currentY - touches.startY;\n  if (swiper.params.threshold && Math.sqrt(diffX ** 2 + diffY ** 2) < swiper.params.threshold) return;\n  if (typeof data.isScrolling === 'undefined') {\n    let touchAngle;\n    if (swiper.isHorizontal() && touches.currentY === touches.startY || swiper.isVertical() && touches.currentX === touches.startX) {\n      data.isScrolling = false;\n    } else {\n      // eslint-disable-next-line\n      if (diffX * diffX + diffY * diffY >= 25) {\n        touchAngle = Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180 / Math.PI;\n        data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : 90 - touchAngle > params.touchAngle;\n      }\n    }\n  }\n  if (data.isScrolling) {\n    swiper.emit('touchMoveOpposite', e);\n  }\n  if (typeof data.startMoving === 'undefined') {\n    if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {\n      data.startMoving = true;\n    }\n  }\n  if (data.isScrolling || swiper.zoom && swiper.params.zoom && swiper.params.zoom.enabled && data.evCache.length > 1) {\n    data.isTouched = false;\n    return;\n  }\n  if (!data.startMoving) {\n    return;\n  }\n  swiper.allowClick = false;\n  if (!params.cssMode && e.cancelable) {\n    e.preventDefault();\n  }\n  if (params.touchMoveStopPropagation && !params.nested) {\n    e.stopPropagation();\n  }\n  let diff = swiper.isHorizontal() ? diffX : diffY;\n  let touchesDiff = swiper.isHorizontal() ? touches.currentX - touches.previousX : touches.currentY - touches.previousY;\n  if (params.oneWayMovement) {\n    diff = Math.abs(diff) * (rtl ? 1 : -1);\n    touchesDiff = Math.abs(touchesDiff) * (rtl ? 1 : -1);\n  }\n  touches.diff = diff;\n  diff *= params.touchRatio;\n  if (rtl) {\n    diff = -diff;\n    touchesDiff = -touchesDiff;\n  }\n  const prevTouchesDirection = swiper.touchesDirection;\n  swiper.swipeDirection = diff > 0 ? 'prev' : 'next';\n  swiper.touchesDirection = touchesDiff > 0 ? 'prev' : 'next';\n  const isLoop = swiper.params.loop && !params.cssMode;\n  if (!data.isMoved) {\n    if (isLoop) {\n      swiper.loopFix({\n        direction: swiper.swipeDirection\n      });\n    }\n    data.startTranslate = swiper.getTranslate();\n    swiper.setTransition(0);\n    if (swiper.animating) {\n      const evt = new window.CustomEvent('transitionend', {\n        bubbles: true,\n        cancelable: true\n      });\n      swiper.wrapperEl.dispatchEvent(evt);\n    }\n    data.allowMomentumBounce = false;\n    // Grab Cursor\n    if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n      swiper.setGrabCursor(true);\n    }\n    swiper.emit('sliderFirstMove', e);\n  }\n  let loopFixed;\n  if (data.isMoved && prevTouchesDirection !== swiper.touchesDirection && isLoop && Math.abs(diff) >= 1) {\n    // need another loop fix\n    swiper.loopFix({\n      direction: swiper.swipeDirection,\n      setTranslate: true\n    });\n    loopFixed = true;\n  }\n  swiper.emit('sliderMove', e);\n  data.isMoved = true;\n  data.currentTranslate = diff + data.startTranslate;\n  let disableParentSwiper = true;\n  let resistanceRatio = params.resistanceRatio;\n  if (params.touchReleaseOnEdges) {\n    resistanceRatio = 0;\n  }\n  if (diff > 0) {\n    if (isLoop && !loopFixed && data.currentTranslate > (params.centeredSlides ? swiper.minTranslate() - swiper.size / 2 : swiper.minTranslate())) {\n      swiper.loopFix({\n        direction: 'prev',\n        setTranslate: true,\n        activeSlideIndex: 0\n      });\n    }\n    if (data.currentTranslate > swiper.minTranslate()) {\n      disableParentSwiper = false;\n      if (params.resistance) {\n        data.currentTranslate = swiper.minTranslate() - 1 + (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio;\n      }\n    }\n  } else if (diff < 0) {\n    if (isLoop && !loopFixed && data.currentTranslate < (params.centeredSlides ? swiper.maxTranslate() + swiper.size / 2 : swiper.maxTranslate())) {\n      swiper.loopFix({\n        direction: 'next',\n        setTranslate: true,\n        activeSlideIndex: swiper.slides.length - (params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(parseFloat(params.slidesPerView, 10)))\n      });\n    }\n    if (data.currentTranslate < swiper.maxTranslate()) {\n      disableParentSwiper = false;\n      if (params.resistance) {\n        data.currentTranslate = swiper.maxTranslate() + 1 - (swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio;\n      }\n    }\n  }\n  if (disableParentSwiper) {\n    e.preventedByNestedSwiper = true;\n  }\n\n  // Directions locks\n  if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) {\n    data.currentTranslate = data.startTranslate;\n  }\n  if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) {\n    data.currentTranslate = data.startTranslate;\n  }\n  if (!swiper.allowSlidePrev && !swiper.allowSlideNext) {\n    data.currentTranslate = data.startTranslate;\n  }\n\n  // Threshold\n  if (params.threshold > 0) {\n    if (Math.abs(diff) > params.threshold || data.allowThresholdMove) {\n      if (!data.allowThresholdMove) {\n        data.allowThresholdMove = true;\n        touches.startX = touches.currentX;\n        touches.startY = touches.currentY;\n        data.currentTranslate = data.startTranslate;\n        touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY;\n        return;\n      }\n    } else {\n      data.currentTranslate = data.startTranslate;\n      return;\n    }\n  }\n  if (!params.followFinger || params.cssMode) return;\n\n  // Update active index in free mode\n  if (params.freeMode && params.freeMode.enabled && swiper.freeMode || params.watchSlidesProgress) {\n    swiper.updateActiveIndex();\n    swiper.updateSlidesClasses();\n  }\n  if (params.freeMode && params.freeMode.enabled && swiper.freeMode) {\n    swiper.freeMode.onTouchMove();\n  }\n  // Update progress\n  swiper.updateProgress(data.currentTranslate);\n  // Update translate\n  swiper.setTranslate(data.currentTranslate);\n}\n\nfunction onTouchEnd(event) {\n  const swiper = this;\n  const data = swiper.touchEventsData;\n  const pointerIndex = data.evCache.findIndex(cachedEv => cachedEv.pointerId === event.pointerId);\n  if (pointerIndex >= 0) {\n    data.evCache.splice(pointerIndex, 1);\n  }\n  if (['pointercancel', 'pointerout', 'pointerleave', 'contextmenu'].includes(event.type)) {\n    const proceed = ['pointercancel', 'contextmenu'].includes(event.type) && (swiper.browser.isSafari || swiper.browser.isWebView);\n    if (!proceed) {\n      return;\n    }\n  }\n  const {\n    params,\n    touches,\n    rtlTranslate: rtl,\n    slidesGrid,\n    enabled\n  } = swiper;\n  if (!enabled) return;\n  if (!params.simulateTouch && event.pointerType === 'mouse') return;\n  let e = event;\n  if (e.originalEvent) e = e.originalEvent;\n  if (data.allowTouchCallbacks) {\n    swiper.emit('touchEnd', e);\n  }\n  data.allowTouchCallbacks = false;\n  if (!data.isTouched) {\n    if (data.isMoved && params.grabCursor) {\n      swiper.setGrabCursor(false);\n    }\n    data.isMoved = false;\n    data.startMoving = false;\n    return;\n  }\n  // Return Grab Cursor\n  if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n    swiper.setGrabCursor(false);\n  }\n\n  // Time diff\n  const touchEndTime = now();\n  const timeDiff = touchEndTime - data.touchStartTime;\n\n  // Tap, doubleTap, Click\n  if (swiper.allowClick) {\n    const pathTree = e.path || e.composedPath && e.composedPath();\n    swiper.updateClickedSlide(pathTree && pathTree[0] || e.target);\n    swiper.emit('tap click', e);\n    if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) {\n      swiper.emit('doubleTap doubleClick', e);\n    }\n  }\n  data.lastClickTime = now();\n  nextTick(() => {\n    if (!swiper.destroyed) swiper.allowClick = true;\n  });\n  if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 || data.currentTranslate === data.startTranslate) {\n    data.isTouched = false;\n    data.isMoved = false;\n    data.startMoving = false;\n    return;\n  }\n  data.isTouched = false;\n  data.isMoved = false;\n  data.startMoving = false;\n  let currentPos;\n  if (params.followFinger) {\n    currentPos = rtl ? swiper.translate : -swiper.translate;\n  } else {\n    currentPos = -data.currentTranslate;\n  }\n  if (params.cssMode) {\n    return;\n  }\n  if (params.freeMode && params.freeMode.enabled) {\n    swiper.freeMode.onTouchEnd({\n      currentPos\n    });\n    return;\n  }\n\n  // Find current slide\n  let stopIndex = 0;\n  let groupSize = swiper.slidesSizesGrid[0];\n  for (let i = 0; i < slidesGrid.length; i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup) {\n    const increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n    if (typeof slidesGrid[i + increment] !== 'undefined') {\n      if (currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) {\n        stopIndex = i;\n        groupSize = slidesGrid[i + increment] - slidesGrid[i];\n      }\n    } else if (currentPos >= slidesGrid[i]) {\n      stopIndex = i;\n      groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];\n    }\n  }\n  let rewindFirstIndex = null;\n  let rewindLastIndex = null;\n  if (params.rewind) {\n    if (swiper.isBeginning) {\n      rewindLastIndex = params.virtual && params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;\n    } else if (swiper.isEnd) {\n      rewindFirstIndex = 0;\n    }\n  }\n  // Find current slide size\n  const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;\n  const increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n  if (timeDiff > params.longSwipesMs) {\n    // Long touches\n    if (!params.longSwipes) {\n      swiper.slideTo(swiper.activeIndex);\n      return;\n    }\n    if (swiper.swipeDirection === 'next') {\n      if (ratio >= params.longSwipesRatio) swiper.slideTo(params.rewind && swiper.isEnd ? rewindFirstIndex : stopIndex + increment);else swiper.slideTo(stopIndex);\n    }\n    if (swiper.swipeDirection === 'prev') {\n      if (ratio > 1 - params.longSwipesRatio) {\n        swiper.slideTo(stopIndex + increment);\n      } else if (rewindLastIndex !== null && ratio < 0 && Math.abs(ratio) > params.longSwipesRatio) {\n        swiper.slideTo(rewindLastIndex);\n      } else {\n        swiper.slideTo(stopIndex);\n      }\n    }\n  } else {\n    // Short swipes\n    if (!params.shortSwipes) {\n      swiper.slideTo(swiper.activeIndex);\n      return;\n    }\n    const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl);\n    if (!isNavButtonTarget) {\n      if (swiper.swipeDirection === 'next') {\n        swiper.slideTo(rewindFirstIndex !== null ? rewindFirstIndex : stopIndex + increment);\n      }\n      if (swiper.swipeDirection === 'prev') {\n        swiper.slideTo(rewindLastIndex !== null ? rewindLastIndex : stopIndex);\n      }\n    } else if (e.target === swiper.navigation.nextEl) {\n      swiper.slideTo(stopIndex + increment);\n    } else {\n      swiper.slideTo(stopIndex);\n    }\n  }\n}\n\nfunction onResize() {\n  const swiper = this;\n  const {\n    params,\n    el\n  } = swiper;\n  if (el && el.offsetWidth === 0) return;\n\n  // Breakpoints\n  if (params.breakpoints) {\n    swiper.setBreakpoint();\n  }\n\n  // Save locks\n  const {\n    allowSlideNext,\n    allowSlidePrev,\n    snapGrid\n  } = swiper;\n  const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n\n  // Disable locks on resize\n  swiper.allowSlideNext = true;\n  swiper.allowSlidePrev = true;\n  swiper.updateSize();\n  swiper.updateSlides();\n  swiper.updateSlidesClasses();\n  const isVirtualLoop = isVirtual && params.loop;\n  if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides && !isVirtualLoop) {\n    swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n  } else {\n    if (swiper.params.loop && !isVirtual) {\n      swiper.slideToLoop(swiper.realIndex, 0, false, true);\n    } else {\n      swiper.slideTo(swiper.activeIndex, 0, false, true);\n    }\n  }\n  if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n    clearTimeout(swiper.autoplay.resizeTimeout);\n    swiper.autoplay.resizeTimeout = setTimeout(() => {\n      if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n        swiper.autoplay.resume();\n      }\n    }, 500);\n  }\n  // Return locks after resize\n  swiper.allowSlidePrev = allowSlidePrev;\n  swiper.allowSlideNext = allowSlideNext;\n  if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) {\n    swiper.checkOverflow();\n  }\n}\n\nfunction onClick(e) {\n  const swiper = this;\n  if (!swiper.enabled) return;\n  if (!swiper.allowClick) {\n    if (swiper.params.preventClicks) e.preventDefault();\n    if (swiper.params.preventClicksPropagation && swiper.animating) {\n      e.stopPropagation();\n      e.stopImmediatePropagation();\n    }\n  }\n}\n\nfunction onScroll() {\n  const swiper = this;\n  const {\n    wrapperEl,\n    rtlTranslate,\n    enabled\n  } = swiper;\n  if (!enabled) return;\n  swiper.previousTranslate = swiper.translate;\n  if (swiper.isHorizontal()) {\n    swiper.translate = -wrapperEl.scrollLeft;\n  } else {\n    swiper.translate = -wrapperEl.scrollTop;\n  }\n  // eslint-disable-next-line\n  if (swiper.translate === 0) swiper.translate = 0;\n  swiper.updateActiveIndex();\n  swiper.updateSlidesClasses();\n  let newProgress;\n  const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n  if (translatesDiff === 0) {\n    newProgress = 0;\n  } else {\n    newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff;\n  }\n  if (newProgress !== swiper.progress) {\n    swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate);\n  }\n  swiper.emit('setTranslate', swiper.translate, false);\n}\n\nfunction onLoad(e) {\n  const swiper = this;\n  processLazyPreloader(swiper, e.target);\n  if (swiper.params.cssMode || swiper.params.slidesPerView !== 'auto' && !swiper.params.autoHeight) {\n    return;\n  }\n  swiper.update();\n}\n\nlet dummyEventAttached = false;\nfunction dummyEventListener() {}\nconst events = (swiper, method) => {\n  const document = getDocument();\n  const {\n    params,\n    el,\n    wrapperEl,\n    device\n  } = swiper;\n  const capture = !!params.nested;\n  const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n  const swiperMethod = method;\n\n  // Touch Events\n  el[domMethod]('pointerdown', swiper.onTouchStart, {\n    passive: false\n  });\n  document[domMethod]('pointermove', swiper.onTouchMove, {\n    passive: false,\n    capture\n  });\n  document[domMethod]('pointerup', swiper.onTouchEnd, {\n    passive: true\n  });\n  document[domMethod]('pointercancel', swiper.onTouchEnd, {\n    passive: true\n  });\n  document[domMethod]('pointerout', swiper.onTouchEnd, {\n    passive: true\n  });\n  document[domMethod]('pointerleave', swiper.onTouchEnd, {\n    passive: true\n  });\n  document[domMethod]('contextmenu', swiper.onTouchEnd, {\n    passive: true\n  });\n\n  // Prevent Links Clicks\n  if (params.preventClicks || params.preventClicksPropagation) {\n    el[domMethod]('click', swiper.onClick, true);\n  }\n  if (params.cssMode) {\n    wrapperEl[domMethod]('scroll', swiper.onScroll);\n  }\n\n  // Resize handler\n  if (params.updateOnWindowResize) {\n    swiper[swiperMethod](device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', onResize, true);\n  } else {\n    swiper[swiperMethod]('observerUpdate', onResize, true);\n  }\n\n  // Images loader\n  el[domMethod]('load', swiper.onLoad, {\n    capture: true\n  });\n};\nfunction attachEvents() {\n  const swiper = this;\n  const document = getDocument();\n  const {\n    params\n  } = swiper;\n  swiper.onTouchStart = onTouchStart.bind(swiper);\n  swiper.onTouchMove = onTouchMove.bind(swiper);\n  swiper.onTouchEnd = onTouchEnd.bind(swiper);\n  if (params.cssMode) {\n    swiper.onScroll = onScroll.bind(swiper);\n  }\n  swiper.onClick = onClick.bind(swiper);\n  swiper.onLoad = onLoad.bind(swiper);\n  if (!dummyEventAttached) {\n    document.addEventListener('touchstart', dummyEventListener);\n    dummyEventAttached = true;\n  }\n  events(swiper, 'on');\n}\nfunction detachEvents() {\n  const swiper = this;\n  events(swiper, 'off');\n}\nvar events$1 = {\n  attachEvents,\n  detachEvents\n};\n\nconst isGridEnabled = (swiper, params) => {\n  return swiper.grid && params.grid && params.grid.rows > 1;\n};\nfunction setBreakpoint() {\n  const swiper = this;\n  const {\n    realIndex,\n    initialized,\n    params,\n    el\n  } = swiper;\n  const breakpoints = params.breakpoints;\n  if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return;\n\n  // Get breakpoint for window width and update parameters\n  const breakpoint = swiper.getBreakpoint(breakpoints, swiper.params.breakpointsBase, swiper.el);\n  if (!breakpoint || swiper.currentBreakpoint === breakpoint) return;\n  const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;\n  const breakpointParams = breakpointOnlyParams || swiper.originalParams;\n  const wasMultiRow = isGridEnabled(swiper, params);\n  const isMultiRow = isGridEnabled(swiper, breakpointParams);\n  const wasEnabled = params.enabled;\n  if (wasMultiRow && !isMultiRow) {\n    el.classList.remove(`${params.containerModifierClass}grid`, `${params.containerModifierClass}grid-column`);\n    swiper.emitContainerClasses();\n  } else if (!wasMultiRow && isMultiRow) {\n    el.classList.add(`${params.containerModifierClass}grid`);\n    if (breakpointParams.grid.fill && breakpointParams.grid.fill === 'column' || !breakpointParams.grid.fill && params.grid.fill === 'column') {\n      el.classList.add(`${params.containerModifierClass}grid-column`);\n    }\n    swiper.emitContainerClasses();\n  }\n\n  // Toggle navigation, pagination, scrollbar\n  ['navigation', 'pagination', 'scrollbar'].forEach(prop => {\n    if (typeof breakpointParams[prop] === 'undefined') return;\n    const wasModuleEnabled = params[prop] && params[prop].enabled;\n    const isModuleEnabled = breakpointParams[prop] && breakpointParams[prop].enabled;\n    if (wasModuleEnabled && !isModuleEnabled) {\n      swiper[prop].disable();\n    }\n    if (!wasModuleEnabled && isModuleEnabled) {\n      swiper[prop].enable();\n    }\n  });\n  const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction;\n  const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);\n  if (directionChanged && initialized) {\n    swiper.changeDirection();\n  }\n  extend(swiper.params, breakpointParams);\n  const isEnabled = swiper.params.enabled;\n  Object.assign(swiper, {\n    allowTouchMove: swiper.params.allowTouchMove,\n    allowSlideNext: swiper.params.allowSlideNext,\n    allowSlidePrev: swiper.params.allowSlidePrev\n  });\n  if (wasEnabled && !isEnabled) {\n    swiper.disable();\n  } else if (!wasEnabled && isEnabled) {\n    swiper.enable();\n  }\n  swiper.currentBreakpoint = breakpoint;\n  swiper.emit('_beforeBreakpoint', breakpointParams);\n  if (needsReLoop && initialized) {\n    swiper.loopDestroy();\n    swiper.loopCreate(realIndex);\n    swiper.updateSlides();\n  }\n  swiper.emit('breakpoint', breakpointParams);\n}\n\nfunction getBreakpoint(breakpoints, base, containerEl) {\n  if (base === void 0) {\n    base = 'window';\n  }\n  if (!breakpoints || base === 'container' && !containerEl) return undefined;\n  let breakpoint = false;\n  const window = getWindow();\n  const currentHeight = base === 'window' ? window.innerHeight : containerEl.clientHeight;\n  const points = Object.keys(breakpoints).map(point => {\n    if (typeof point === 'string' && point.indexOf('@') === 0) {\n      const minRatio = parseFloat(point.substr(1));\n      const value = currentHeight * minRatio;\n      return {\n        value,\n        point\n      };\n    }\n    return {\n      value: point,\n      point\n    };\n  });\n  points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10));\n  for (let i = 0; i < points.length; i += 1) {\n    const {\n      point,\n      value\n    } = points[i];\n    if (base === 'window') {\n      if (window.matchMedia(`(min-width: ${value}px)`).matches) {\n        breakpoint = point;\n      }\n    } else if (value <= containerEl.clientWidth) {\n      breakpoint = point;\n    }\n  }\n  return breakpoint || 'max';\n}\n\nvar breakpoints = {\n  setBreakpoint,\n  getBreakpoint\n};\n\nfunction prepareClasses(entries, prefix) {\n  const resultClasses = [];\n  entries.forEach(item => {\n    if (typeof item === 'object') {\n      Object.keys(item).forEach(classNames => {\n        if (item[classNames]) {\n          resultClasses.push(prefix + classNames);\n        }\n      });\n    } else if (typeof item === 'string') {\n      resultClasses.push(prefix + item);\n    }\n  });\n  return resultClasses;\n}\nfunction addClasses() {\n  const swiper = this;\n  const {\n    classNames,\n    params,\n    rtl,\n    el,\n    device\n  } = swiper;\n  // prettier-ignore\n  const suffixes = prepareClasses(['initialized', params.direction, {\n    'free-mode': swiper.params.freeMode && params.freeMode.enabled\n  }, {\n    'autoheight': params.autoHeight\n  }, {\n    'rtl': rtl\n  }, {\n    'grid': params.grid && params.grid.rows > 1\n  }, {\n    'grid-column': params.grid && params.grid.rows > 1 && params.grid.fill === 'column'\n  }, {\n    'android': device.android\n  }, {\n    'ios': device.ios\n  }, {\n    'css-mode': params.cssMode\n  }, {\n    'centered': params.cssMode && params.centeredSlides\n  }, {\n    'watch-progress': params.watchSlidesProgress\n  }], params.containerModifierClass);\n  classNames.push(...suffixes);\n  el.classList.add(...classNames);\n  swiper.emitContainerClasses();\n}\n\nfunction removeClasses() {\n  const swiper = this;\n  const {\n    el,\n    classNames\n  } = swiper;\n  el.classList.remove(...classNames);\n  swiper.emitContainerClasses();\n}\n\nvar classes = {\n  addClasses,\n  removeClasses\n};\n\nfunction checkOverflow() {\n  const swiper = this;\n  const {\n    isLocked: wasLocked,\n    params\n  } = swiper;\n  const {\n    slidesOffsetBefore\n  } = params;\n  if (slidesOffsetBefore) {\n    const lastSlideIndex = swiper.slides.length - 1;\n    const lastSlideRightEdge = swiper.slidesGrid[lastSlideIndex] + swiper.slidesSizesGrid[lastSlideIndex] + slidesOffsetBefore * 2;\n    swiper.isLocked = swiper.size > lastSlideRightEdge;\n  } else {\n    swiper.isLocked = swiper.snapGrid.length === 1;\n  }\n  if (params.allowSlideNext === true) {\n    swiper.allowSlideNext = !swiper.isLocked;\n  }\n  if (params.allowSlidePrev === true) {\n    swiper.allowSlidePrev = !swiper.isLocked;\n  }\n  if (wasLocked && wasLocked !== swiper.isLocked) {\n    swiper.isEnd = false;\n  }\n  if (wasLocked !== swiper.isLocked) {\n    swiper.emit(swiper.isLocked ? 'lock' : 'unlock');\n  }\n}\nvar checkOverflow$1 = {\n  checkOverflow\n};\n\nvar defaults = {\n  init: true,\n  direction: 'horizontal',\n  oneWayMovement: false,\n  touchEventsTarget: 'wrapper',\n  initialSlide: 0,\n  speed: 300,\n  cssMode: false,\n  updateOnWindowResize: true,\n  resizeObserver: true,\n  nested: false,\n  createElements: false,\n  enabled: true,\n  focusableElements: 'input, select, option, textarea, button, video, label',\n  // Overrides\n  width: null,\n  height: null,\n  //\n  preventInteractionOnTransition: false,\n  // ssr\n  userAgent: null,\n  url: null,\n  // To support iOS's swipe-to-go-back gesture (when being used in-app).\n  edgeSwipeDetection: false,\n  edgeSwipeThreshold: 20,\n  // Autoheight\n  autoHeight: false,\n  // Set wrapper width\n  setWrapperSize: false,\n  // Virtual Translate\n  virtualTranslate: false,\n  // Effects\n  effect: 'slide',\n  // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'\n\n  // Breakpoints\n  breakpoints: undefined,\n  breakpointsBase: 'window',\n  // Slides grid\n  spaceBetween: 0,\n  slidesPerView: 1,\n  slidesPerGroup: 1,\n  slidesPerGroupSkip: 0,\n  slidesPerGroupAuto: false,\n  centeredSlides: false,\n  centeredSlidesBounds: false,\n  slidesOffsetBefore: 0,\n  // in px\n  slidesOffsetAfter: 0,\n  // in px\n  normalizeSlideIndex: true,\n  centerInsufficientSlides: false,\n  // Disable swiper and hide navigation when container not overflow\n  watchOverflow: true,\n  // Round length\n  roundLengths: false,\n  // Touches\n  touchRatio: 1,\n  touchAngle: 45,\n  simulateTouch: true,\n  shortSwipes: true,\n  longSwipes: true,\n  longSwipesRatio: 0.5,\n  longSwipesMs: 300,\n  followFinger: true,\n  allowTouchMove: true,\n  threshold: 5,\n  touchMoveStopPropagation: false,\n  touchStartPreventDefault: true,\n  touchStartForcePreventDefault: false,\n  touchReleaseOnEdges: false,\n  // Unique Navigation Elements\n  uniqueNavElements: true,\n  // Resistance\n  resistance: true,\n  resistanceRatio: 0.85,\n  // Progress\n  watchSlidesProgress: false,\n  // Cursor\n  grabCursor: false,\n  // Clicks\n  preventClicks: true,\n  preventClicksPropagation: true,\n  slideToClickedSlide: false,\n  // loop\n  loop: false,\n  loopedSlides: null,\n  loopPreventsSliding: true,\n  // rewind\n  rewind: false,\n  // Swiping/no swiping\n  allowSlidePrev: true,\n  allowSlideNext: true,\n  swipeHandler: null,\n  // '.swipe-handler',\n  noSwiping: true,\n  noSwipingClass: 'swiper-no-swiping',\n  noSwipingSelector: null,\n  // Passive Listeners\n  passiveListeners: true,\n  maxBackfaceHiddenSlides: 10,\n  // NS\n  containerModifierClass: 'swiper-',\n  // NEW\n  slideClass: 'swiper-slide',\n  slideActiveClass: 'swiper-slide-active',\n  slideVisibleClass: 'swiper-slide-visible',\n  slideNextClass: 'swiper-slide-next',\n  slidePrevClass: 'swiper-slide-prev',\n  wrapperClass: 'swiper-wrapper',\n  lazyPreloaderClass: 'swiper-lazy-preloader',\n  lazyPreloadPrevNext: 0,\n  // Callbacks\n  runCallbacksOnInit: true,\n  // Internals\n  _emitClasses: false\n};\n\nfunction moduleExtendParams(params, allModulesParams) {\n  return function extendParams(obj) {\n    if (obj === void 0) {\n      obj = {};\n    }\n    const moduleParamName = Object.keys(obj)[0];\n    const moduleParams = obj[moduleParamName];\n    if (typeof moduleParams !== 'object' || moduleParams === null) {\n      extend(allModulesParams, obj);\n      return;\n    }\n    if (['navigation', 'pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 && params[moduleParamName] === true) {\n      params[moduleParamName] = {\n        auto: true\n      };\n    }\n    if (!(moduleParamName in params && 'enabled' in moduleParams)) {\n      extend(allModulesParams, obj);\n      return;\n    }\n    if (params[moduleParamName] === true) {\n      params[moduleParamName] = {\n        enabled: true\n      };\n    }\n    if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) {\n      params[moduleParamName].enabled = true;\n    }\n    if (!params[moduleParamName]) params[moduleParamName] = {\n      enabled: false\n    };\n    extend(allModulesParams, obj);\n  };\n}\n\n/* eslint no-param-reassign: \"off\" */\nconst prototypes = {\n  eventsEmitter,\n  update,\n  translate,\n  transition,\n  slide,\n  loop,\n  grabCursor,\n  events: events$1,\n  breakpoints,\n  checkOverflow: checkOverflow$1,\n  classes\n};\nconst extendedDefaults = {};\nclass Swiper {\n  constructor() {\n    let el;\n    let params;\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    if (args.length === 1 && args[0].constructor && Object.prototype.toString.call(args[0]).slice(8, -1) === 'Object') {\n      params = args[0];\n    } else {\n      [el, params] = args;\n    }\n    if (!params) params = {};\n    params = extend({}, params);\n    if (el && !params.el) params.el = el;\n    const document = getDocument();\n    if (params.el && typeof params.el === 'string' && document.querySelectorAll(params.el).length > 1) {\n      const swipers = [];\n      document.querySelectorAll(params.el).forEach(containerEl => {\n        const newParams = extend({}, params, {\n          el: containerEl\n        });\n        swipers.push(new Swiper(newParams));\n      });\n      // eslint-disable-next-line no-constructor-return\n      return swipers;\n    }\n\n    // Swiper Instance\n    const swiper = this;\n    swiper.__swiper__ = true;\n    swiper.support = getSupport();\n    swiper.device = getDevice({\n      userAgent: params.userAgent\n    });\n    swiper.browser = getBrowser();\n    swiper.eventsListeners = {};\n    swiper.eventsAnyListeners = [];\n    swiper.modules = [...swiper.__modules__];\n    if (params.modules && Array.isArray(params.modules)) {\n      swiper.modules.push(...params.modules);\n    }\n    const allModulesParams = {};\n    swiper.modules.forEach(mod => {\n      mod({\n        params,\n        swiper,\n        extendParams: moduleExtendParams(params, allModulesParams),\n        on: swiper.on.bind(swiper),\n        once: swiper.once.bind(swiper),\n        off: swiper.off.bind(swiper),\n        emit: swiper.emit.bind(swiper)\n      });\n    });\n\n    // Extend defaults with modules params\n    const swiperParams = extend({}, defaults, allModulesParams);\n\n    // Extend defaults with passed params\n    swiper.params = extend({}, swiperParams, extendedDefaults, params);\n    swiper.originalParams = extend({}, swiper.params);\n    swiper.passedParams = extend({}, params);\n\n    // add event listeners\n    if (swiper.params && swiper.params.on) {\n      Object.keys(swiper.params.on).forEach(eventName => {\n        swiper.on(eventName, swiper.params.on[eventName]);\n      });\n    }\n    if (swiper.params && swiper.params.onAny) {\n      swiper.onAny(swiper.params.onAny);\n    }\n\n    // Extend Swiper\n    Object.assign(swiper, {\n      enabled: swiper.params.enabled,\n      el,\n      // Classes\n      classNames: [],\n      // Slides\n      slides: [],\n      slidesGrid: [],\n      snapGrid: [],\n      slidesSizesGrid: [],\n      // isDirection\n      isHorizontal() {\n        return swiper.params.direction === 'horizontal';\n      },\n      isVertical() {\n        return swiper.params.direction === 'vertical';\n      },\n      // Indexes\n      activeIndex: 0,\n      realIndex: 0,\n      //\n      isBeginning: true,\n      isEnd: false,\n      // Props\n      translate: 0,\n      previousTranslate: 0,\n      progress: 0,\n      velocity: 0,\n      animating: false,\n      cssOverflowAdjustment() {\n        // Returns 0 unless `translate` is > 2**23\n        // Should be subtracted from css values to prevent overflow\n        return Math.trunc(this.translate / 2 ** 23) * 2 ** 23;\n      },\n      // Locks\n      allowSlideNext: swiper.params.allowSlideNext,\n      allowSlidePrev: swiper.params.allowSlidePrev,\n      // Touch Events\n      touchEventsData: {\n        isTouched: undefined,\n        isMoved: undefined,\n        allowTouchCallbacks: undefined,\n        touchStartTime: undefined,\n        isScrolling: undefined,\n        currentTranslate: undefined,\n        startTranslate: undefined,\n        allowThresholdMove: undefined,\n        // Form elements to match\n        focusableElements: swiper.params.focusableElements,\n        // Last click time\n        lastClickTime: 0,\n        clickTimeout: undefined,\n        // Velocities\n        velocities: [],\n        allowMomentumBounce: undefined,\n        startMoving: undefined,\n        evCache: []\n      },\n      // Clicks\n      allowClick: true,\n      // Touches\n      allowTouchMove: swiper.params.allowTouchMove,\n      touches: {\n        startX: 0,\n        startY: 0,\n        currentX: 0,\n        currentY: 0,\n        diff: 0\n      },\n      // Images\n      imagesToLoad: [],\n      imagesLoaded: 0\n    });\n    swiper.emit('_swiper');\n\n    // Init\n    if (swiper.params.init) {\n      swiper.init();\n    }\n\n    // Return app instance\n    // eslint-disable-next-line no-constructor-return\n    return swiper;\n  }\n  getSlideIndex(slideEl) {\n    const {\n      slidesEl,\n      params\n    } = this;\n    const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);\n    const firstSlideIndex = elementIndex(slides[0]);\n    return elementIndex(slideEl) - firstSlideIndex;\n  }\n  getSlideIndexByData(index) {\n    return this.getSlideIndex(this.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === index)[0]);\n  }\n  recalcSlides() {\n    const swiper = this;\n    const {\n      slidesEl,\n      params\n    } = swiper;\n    swiper.slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);\n  }\n  enable() {\n    const swiper = this;\n    if (swiper.enabled) return;\n    swiper.enabled = true;\n    if (swiper.params.grabCursor) {\n      swiper.setGrabCursor();\n    }\n    swiper.emit('enable');\n  }\n  disable() {\n    const swiper = this;\n    if (!swiper.enabled) return;\n    swiper.enabled = false;\n    if (swiper.params.grabCursor) {\n      swiper.unsetGrabCursor();\n    }\n    swiper.emit('disable');\n  }\n  setProgress(progress, speed) {\n    const swiper = this;\n    progress = Math.min(Math.max(progress, 0), 1);\n    const min = swiper.minTranslate();\n    const max = swiper.maxTranslate();\n    const current = (max - min) * progress + min;\n    swiper.translateTo(current, typeof speed === 'undefined' ? 0 : speed);\n    swiper.updateActiveIndex();\n    swiper.updateSlidesClasses();\n  }\n  emitContainerClasses() {\n    const swiper = this;\n    if (!swiper.params._emitClasses || !swiper.el) return;\n    const cls = swiper.el.className.split(' ').filter(className => {\n      return className.indexOf('swiper') === 0 || className.indexOf(swiper.params.containerModifierClass) === 0;\n    });\n    swiper.emit('_containerClasses', cls.join(' '));\n  }\n  getSlideClasses(slideEl) {\n    const swiper = this;\n    if (swiper.destroyed) return '';\n    return slideEl.className.split(' ').filter(className => {\n      return className.indexOf('swiper-slide') === 0 || className.indexOf(swiper.params.slideClass) === 0;\n    }).join(' ');\n  }\n  emitSlidesClasses() {\n    const swiper = this;\n    if (!swiper.params._emitClasses || !swiper.el) return;\n    const updates = [];\n    swiper.slides.forEach(slideEl => {\n      const classNames = swiper.getSlideClasses(slideEl);\n      updates.push({\n        slideEl,\n        classNames\n      });\n      swiper.emit('_slideClass', slideEl, classNames);\n    });\n    swiper.emit('_slideClasses', updates);\n  }\n  slidesPerViewDynamic(view, exact) {\n    if (view === void 0) {\n      view = 'current';\n    }\n    if (exact === void 0) {\n      exact = false;\n    }\n    const swiper = this;\n    const {\n      params,\n      slides,\n      slidesGrid,\n      slidesSizesGrid,\n      size: swiperSize,\n      activeIndex\n    } = swiper;\n    let spv = 1;\n    if (params.centeredSlides) {\n      let slideSize = slides[activeIndex] ? slides[activeIndex].swiperSlideSize : 0;\n      let breakLoop;\n      for (let i = activeIndex + 1; i < slides.length; i += 1) {\n        if (slides[i] && !breakLoop) {\n          slideSize += slides[i].swiperSlideSize;\n          spv += 1;\n          if (slideSize > swiperSize) breakLoop = true;\n        }\n      }\n      for (let i = activeIndex - 1; i >= 0; i -= 1) {\n        if (slides[i] && !breakLoop) {\n          slideSize += slides[i].swiperSlideSize;\n          spv += 1;\n          if (slideSize > swiperSize) breakLoop = true;\n        }\n      }\n    } else {\n      // eslint-disable-next-line\n      if (view === 'current') {\n        for (let i = activeIndex + 1; i < slides.length; i += 1) {\n          const slideInView = exact ? slidesGrid[i] + slidesSizesGrid[i] - slidesGrid[activeIndex] < swiperSize : slidesGrid[i] - slidesGrid[activeIndex] < swiperSize;\n          if (slideInView) {\n            spv += 1;\n          }\n        }\n      } else {\n        // previous\n        for (let i = activeIndex - 1; i >= 0; i -= 1) {\n          const slideInView = slidesGrid[activeIndex] - slidesGrid[i] < swiperSize;\n          if (slideInView) {\n            spv += 1;\n          }\n        }\n      }\n    }\n    return spv;\n  }\n  update() {\n    const swiper = this;\n    if (!swiper || swiper.destroyed) return;\n    const {\n      snapGrid,\n      params\n    } = swiper;\n    // Breakpoints\n    if (params.breakpoints) {\n      swiper.setBreakpoint();\n    }\n    [...swiper.el.querySelectorAll('[loading=\"lazy\"]')].forEach(imageEl => {\n      if (imageEl.complete) {\n        processLazyPreloader(swiper, imageEl);\n      }\n    });\n    swiper.updateSize();\n    swiper.updateSlides();\n    swiper.updateProgress();\n    swiper.updateSlidesClasses();\n    function setTranslate() {\n      const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate;\n      const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate());\n      swiper.setTranslate(newTranslate);\n      swiper.updateActiveIndex();\n      swiper.updateSlidesClasses();\n    }\n    let translated;\n    if (params.freeMode && params.freeMode.enabled && !params.cssMode) {\n      setTranslate();\n      if (params.autoHeight) {\n        swiper.updateAutoHeight();\n      }\n    } else {\n      if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !params.centeredSlides) {\n        const slides = swiper.virtual && params.virtual.enabled ? swiper.virtual.slides : swiper.slides;\n        translated = swiper.slideTo(slides.length - 1, 0, false, true);\n      } else {\n        translated = swiper.slideTo(swiper.activeIndex, 0, false, true);\n      }\n      if (!translated) {\n        setTranslate();\n      }\n    }\n    if (params.watchOverflow && snapGrid !== swiper.snapGrid) {\n      swiper.checkOverflow();\n    }\n    swiper.emit('update');\n  }\n  changeDirection(newDirection, needUpdate) {\n    if (needUpdate === void 0) {\n      needUpdate = true;\n    }\n    const swiper = this;\n    const currentDirection = swiper.params.direction;\n    if (!newDirection) {\n      // eslint-disable-next-line\n      newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal';\n    }\n    if (newDirection === currentDirection || newDirection !== 'horizontal' && newDirection !== 'vertical') {\n      return swiper;\n    }\n    swiper.el.classList.remove(`${swiper.params.containerModifierClass}${currentDirection}`);\n    swiper.el.classList.add(`${swiper.params.containerModifierClass}${newDirection}`);\n    swiper.emitContainerClasses();\n    swiper.params.direction = newDirection;\n    swiper.slides.forEach(slideEl => {\n      if (newDirection === 'vertical') {\n        slideEl.style.width = '';\n      } else {\n        slideEl.style.height = '';\n      }\n    });\n    swiper.emit('changeDirection');\n    if (needUpdate) swiper.update();\n    return swiper;\n  }\n  changeLanguageDirection(direction) {\n    const swiper = this;\n    if (swiper.rtl && direction === 'rtl' || !swiper.rtl && direction === 'ltr') return;\n    swiper.rtl = direction === 'rtl';\n    swiper.rtlTranslate = swiper.params.direction === 'horizontal' && swiper.rtl;\n    if (swiper.rtl) {\n      swiper.el.classList.add(`${swiper.params.containerModifierClass}rtl`);\n      swiper.el.dir = 'rtl';\n    } else {\n      swiper.el.classList.remove(`${swiper.params.containerModifierClass}rtl`);\n      swiper.el.dir = 'ltr';\n    }\n    swiper.update();\n  }\n  mount(element) {\n    const swiper = this;\n    if (swiper.mounted) return true;\n\n    // Find el\n    let el = element || swiper.params.el;\n    if (typeof el === 'string') {\n      el = document.querySelector(el);\n    }\n    if (!el) {\n      return false;\n    }\n    el.swiper = swiper;\n    if (el.parentNode && el.parentNode.host && el.parentNode.host.nodeName === 'SWIPER-CONTAINER') {\n      swiper.isElement = true;\n    }\n    const getWrapperSelector = () => {\n      return `.${(swiper.params.wrapperClass || '').trim().split(' ').join('.')}`;\n    };\n    const getWrapper = () => {\n      if (el && el.shadowRoot && el.shadowRoot.querySelector) {\n        const res = el.shadowRoot.querySelector(getWrapperSelector());\n        // Children needs to return slot items\n        return res;\n      }\n      return elementChildren(el, getWrapperSelector())[0];\n    };\n    // Find Wrapper\n    let wrapperEl = getWrapper();\n    if (!wrapperEl && swiper.params.createElements) {\n      wrapperEl = createElement('div', swiper.params.wrapperClass);\n      el.append(wrapperEl);\n      elementChildren(el, `.${swiper.params.slideClass}`).forEach(slideEl => {\n        wrapperEl.append(slideEl);\n      });\n    }\n    Object.assign(swiper, {\n      el,\n      wrapperEl,\n      slidesEl: swiper.isElement && !el.parentNode.host.slideSlots ? el.parentNode.host : wrapperEl,\n      hostEl: swiper.isElement ? el.parentNode.host : el,\n      mounted: true,\n      // RTL\n      rtl: el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl',\n      rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl'),\n      wrongRTL: elementStyle(wrapperEl, 'display') === '-webkit-box'\n    });\n    return true;\n  }\n  init(el) {\n    const swiper = this;\n    if (swiper.initialized) return swiper;\n    const mounted = swiper.mount(el);\n    if (mounted === false) return swiper;\n    swiper.emit('beforeInit');\n\n    // Set breakpoint\n    if (swiper.params.breakpoints) {\n      swiper.setBreakpoint();\n    }\n\n    // Add Classes\n    swiper.addClasses();\n\n    // Update size\n    swiper.updateSize();\n\n    // Update slides\n    swiper.updateSlides();\n    if (swiper.params.watchOverflow) {\n      swiper.checkOverflow();\n    }\n\n    // Set Grab Cursor\n    if (swiper.params.grabCursor && swiper.enabled) {\n      swiper.setGrabCursor();\n    }\n\n    // Slide To Initial Slide\n    if (swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) {\n      swiper.slideTo(swiper.params.initialSlide + swiper.virtual.slidesBefore, 0, swiper.params.runCallbacksOnInit, false, true);\n    } else {\n      swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true);\n    }\n\n    // Create loop\n    if (swiper.params.loop) {\n      swiper.loopCreate();\n    }\n\n    // Attach events\n    swiper.attachEvents();\n    const lazyElements = [...swiper.el.querySelectorAll('[loading=\"lazy\"]')];\n    if (swiper.isElement) {\n      lazyElements.push(...swiper.hostEl.querySelectorAll('[loading=\"lazy\"]'));\n    }\n    lazyElements.forEach(imageEl => {\n      if (imageEl.complete) {\n        processLazyPreloader(swiper, imageEl);\n      } else {\n        imageEl.addEventListener('load', e => {\n          processLazyPreloader(swiper, e.target);\n        });\n      }\n    });\n    preload(swiper);\n\n    // Init Flag\n    swiper.initialized = true;\n    preload(swiper);\n\n    // Emit\n    swiper.emit('init');\n    swiper.emit('afterInit');\n    return swiper;\n  }\n  destroy(deleteInstance, cleanStyles) {\n    if (deleteInstance === void 0) {\n      deleteInstance = true;\n    }\n    if (cleanStyles === void 0) {\n      cleanStyles = true;\n    }\n    const swiper = this;\n    const {\n      params,\n      el,\n      wrapperEl,\n      slides\n    } = swiper;\n    if (typeof swiper.params === 'undefined' || swiper.destroyed) {\n      return null;\n    }\n    swiper.emit('beforeDestroy');\n\n    // Init Flag\n    swiper.initialized = false;\n\n    // Detach events\n    swiper.detachEvents();\n\n    // Destroy loop\n    if (params.loop) {\n      swiper.loopDestroy();\n    }\n\n    // Cleanup styles\n    if (cleanStyles) {\n      swiper.removeClasses();\n      el.removeAttribute('style');\n      wrapperEl.removeAttribute('style');\n      if (slides && slides.length) {\n        slides.forEach(slideEl => {\n          slideEl.classList.remove(params.slideVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass);\n          slideEl.removeAttribute('style');\n          slideEl.removeAttribute('data-swiper-slide-index');\n        });\n      }\n    }\n    swiper.emit('destroy');\n\n    // Detach emitter events\n    Object.keys(swiper.eventsListeners).forEach(eventName => {\n      swiper.off(eventName);\n    });\n    if (deleteInstance !== false) {\n      swiper.el.swiper = null;\n      deleteProps(swiper);\n    }\n    swiper.destroyed = true;\n    return null;\n  }\n  static extendDefaults(newDefaults) {\n    extend(extendedDefaults, newDefaults);\n  }\n  static get extendedDefaults() {\n    return extendedDefaults;\n  }\n  static get defaults() {\n    return defaults;\n  }\n  static installModule(mod) {\n    if (!Swiper.prototype.__modules__) Swiper.prototype.__modules__ = [];\n    const modules = Swiper.prototype.__modules__;\n    if (typeof mod === 'function' && modules.indexOf(mod) < 0) {\n      modules.push(mod);\n    }\n  }\n  static use(module) {\n    if (Array.isArray(module)) {\n      module.forEach(m => Swiper.installModule(m));\n      return Swiper;\n    }\n    Swiper.installModule(module);\n    return Swiper;\n  }\n}\nObject.keys(prototypes).forEach(prototypeGroup => {\n  Object.keys(prototypes[prototypeGroup]).forEach(protoMethod => {\n    Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];\n  });\n});\nSwiper.use([Resize, Observer]);\n\nexport { Swiper as S, defaults as d };\n","import { e as elementChildren, c as createElement } from './utils.mjs';\n\nfunction createElementIfNotDefined(swiper, originalParams, params, checkProps) {\n  if (swiper.params.createElements) {\n    Object.keys(checkProps).forEach(key => {\n      if (!params[key] && params.auto === true) {\n        let element = elementChildren(swiper.el, `.${checkProps[key]}`)[0];\n        if (!element) {\n          element = createElement('div', checkProps[key]);\n          element.className = checkProps[key];\n          swiper.el.append(element);\n        }\n        params[key] = element;\n        originalParams[key] = element;\n      }\n    });\n  }\n  return params;\n}\n\nexport { createElementIfNotDefined as c };\n","function classesToSelector(classes) {\n  if (classes === void 0) {\n    classes = '';\n  }\n  return `.${classes.trim().replace(/([\\.:!+\\/])/g, '\\\\$1') // eslint-disable-line\n  .replace(/ /g, '.')}`;\n}\n\nexport { classesToSelector as c };\n","function appendSlide(slides) {\n  const swiper = this;\n  const {\n    params,\n    slidesEl\n  } = swiper;\n  if (params.loop) {\n    swiper.loopDestroy();\n  }\n  const appendElement = slideEl => {\n    if (typeof slideEl === 'string') {\n      const tempDOM = document.createElement('div');\n      tempDOM.innerHTML = slideEl;\n      slidesEl.append(tempDOM.children[0]);\n      tempDOM.innerHTML = '';\n    } else {\n      slidesEl.append(slideEl);\n    }\n  };\n  if (typeof slides === 'object' && 'length' in slides) {\n    for (let i = 0; i < slides.length; i += 1) {\n      if (slides[i]) appendElement(slides[i]);\n    }\n  } else {\n    appendElement(slides);\n  }\n  swiper.recalcSlides();\n  if (params.loop) {\n    swiper.loopCreate();\n  }\n  if (!params.observer || swiper.isElement) {\n    swiper.update();\n  }\n}\n\nfunction prependSlide(slides) {\n  const swiper = this;\n  const {\n    params,\n    activeIndex,\n    slidesEl\n  } = swiper;\n  if (params.loop) {\n    swiper.loopDestroy();\n  }\n  let newActiveIndex = activeIndex + 1;\n  const prependElement = slideEl => {\n    if (typeof slideEl === 'string') {\n      const tempDOM = document.createElement('div');\n      tempDOM.innerHTML = slideEl;\n      slidesEl.prepend(tempDOM.children[0]);\n      tempDOM.innerHTML = '';\n    } else {\n      slidesEl.prepend(slideEl);\n    }\n  };\n  if (typeof slides === 'object' && 'length' in slides) {\n    for (let i = 0; i < slides.length; i += 1) {\n      if (slides[i]) prependElement(slides[i]);\n    }\n    newActiveIndex = activeIndex + slides.length;\n  } else {\n    prependElement(slides);\n  }\n  swiper.recalcSlides();\n  if (params.loop) {\n    swiper.loopCreate();\n  }\n  if (!params.observer || swiper.isElement) {\n    swiper.update();\n  }\n  swiper.slideTo(newActiveIndex, 0, false);\n}\n\nfunction addSlide(index, slides) {\n  const swiper = this;\n  const {\n    params,\n    activeIndex,\n    slidesEl\n  } = swiper;\n  let activeIndexBuffer = activeIndex;\n  if (params.loop) {\n    activeIndexBuffer -= swiper.loopedSlides;\n    swiper.loopDestroy();\n    swiper.recalcSlides();\n  }\n  const baseLength = swiper.slides.length;\n  if (index <= 0) {\n    swiper.prependSlide(slides);\n    return;\n  }\n  if (index >= baseLength) {\n    swiper.appendSlide(slides);\n    return;\n  }\n  let newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + 1 : activeIndexBuffer;\n  const slidesBuffer = [];\n  for (let i = baseLength - 1; i >= index; i -= 1) {\n    const currentSlide = swiper.slides[i];\n    currentSlide.remove();\n    slidesBuffer.unshift(currentSlide);\n  }\n  if (typeof slides === 'object' && 'length' in slides) {\n    for (let i = 0; i < slides.length; i += 1) {\n      if (slides[i]) slidesEl.append(slides[i]);\n    }\n    newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + slides.length : activeIndexBuffer;\n  } else {\n    slidesEl.append(slides);\n  }\n  for (let i = 0; i < slidesBuffer.length; i += 1) {\n    slidesEl.append(slidesBuffer[i]);\n  }\n  swiper.recalcSlides();\n  if (params.loop) {\n    swiper.loopCreate();\n  }\n  if (!params.observer || swiper.isElement) {\n    swiper.update();\n  }\n  if (params.loop) {\n    swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n  } else {\n    swiper.slideTo(newActiveIndex, 0, false);\n  }\n}\n\nfunction removeSlide(slidesIndexes) {\n  const swiper = this;\n  const {\n    params,\n    activeIndex\n  } = swiper;\n  let activeIndexBuffer = activeIndex;\n  if (params.loop) {\n    activeIndexBuffer -= swiper.loopedSlides;\n    swiper.loopDestroy();\n  }\n  let newActiveIndex = activeIndexBuffer;\n  let indexToRemove;\n  if (typeof slidesIndexes === 'object' && 'length' in slidesIndexes) {\n    for (let i = 0; i < slidesIndexes.length; i += 1) {\n      indexToRemove = slidesIndexes[i];\n      if (swiper.slides[indexToRemove]) swiper.slides[indexToRemove].remove();\n      if (indexToRemove < newActiveIndex) newActiveIndex -= 1;\n    }\n    newActiveIndex = Math.max(newActiveIndex, 0);\n  } else {\n    indexToRemove = slidesIndexes;\n    if (swiper.slides[indexToRemove]) swiper.slides[indexToRemove].remove();\n    if (indexToRemove < newActiveIndex) newActiveIndex -= 1;\n    newActiveIndex = Math.max(newActiveIndex, 0);\n  }\n  swiper.recalcSlides();\n  if (params.loop) {\n    swiper.loopCreate();\n  }\n  if (!params.observer || swiper.isElement) {\n    swiper.update();\n  }\n  if (params.loop) {\n    swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n  } else {\n    swiper.slideTo(newActiveIndex, 0, false);\n  }\n}\n\nfunction removeAllSlides() {\n  const swiper = this;\n  const slidesIndexes = [];\n  for (let i = 0; i < swiper.slides.length; i += 1) {\n    slidesIndexes.push(i);\n  }\n  swiper.removeSlide(slidesIndexes);\n}\n\nfunction Manipulation(_ref) {\n  let {\n    swiper\n  } = _ref;\n  Object.assign(swiper, {\n    appendSlide: appendSlide.bind(swiper),\n    prependSlide: prependSlide.bind(swiper),\n    addSlide: addSlide.bind(swiper),\n    removeSlide: removeSlide.bind(swiper),\n    removeAllSlides: removeAllSlides.bind(swiper)\n  });\n}\n\nexport { Manipulation as default };\n","function effectInit(params) {\n  const {\n    effect,\n    swiper,\n    on,\n    setTranslate,\n    setTransition,\n    overwriteParams,\n    perspective,\n    recreateShadows,\n    getEffectParams\n  } = params;\n  on('beforeInit', () => {\n    if (swiper.params.effect !== effect) return;\n    swiper.classNames.push(`${swiper.params.containerModifierClass}${effect}`);\n    if (perspective && perspective()) {\n      swiper.classNames.push(`${swiper.params.containerModifierClass}3d`);\n    }\n    const overwriteParamsResult = overwriteParams ? overwriteParams() : {};\n    Object.assign(swiper.params, overwriteParamsResult);\n    Object.assign(swiper.originalParams, overwriteParamsResult);\n  });\n  on('setTranslate', () => {\n    if (swiper.params.effect !== effect) return;\n    setTranslate();\n  });\n  on('setTransition', (_s, duration) => {\n    if (swiper.params.effect !== effect) return;\n    setTransition(duration);\n  });\n  on('transitionEnd', () => {\n    if (swiper.params.effect !== effect) return;\n    if (recreateShadows) {\n      if (!getEffectParams || !getEffectParams().slideShadows) return;\n      // remove shadows\n      swiper.slides.forEach(slideEl => {\n        slideEl.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => shadowEl.remove());\n      });\n      // create new one\n      recreateShadows();\n    }\n  });\n  let requireUpdateOnVirtual;\n  on('virtualUpdate', () => {\n    if (swiper.params.effect !== effect) return;\n    if (!swiper.slides.length) {\n      requireUpdateOnVirtual = true;\n    }\n    requestAnimationFrame(() => {\n      if (requireUpdateOnVirtual && swiper.slides && swiper.slides.length) {\n        setTranslate();\n        requireUpdateOnVirtual = false;\n      }\n    });\n  });\n}\n\nexport { effectInit as e };\n","import { k as getSlideTransformEl } from './utils.mjs';\n\nfunction effectTarget(effectParams, slideEl) {\n  const transformEl = getSlideTransformEl(slideEl);\n  if (transformEl !== slideEl) {\n    transformEl.style.backfaceVisibility = 'hidden';\n    transformEl.style['-webkit-backface-visibility'] = 'hidden';\n  }\n  return transformEl;\n}\n\nexport { effectTarget as e };\n","import { i as elementTransitionEnd } from './utils.mjs';\n\nfunction effectVirtualTransitionEnd(_ref) {\n  let {\n    swiper,\n    duration,\n    transformElements,\n    allSlides\n  } = _ref;\n  const {\n    activeIndex\n  } = swiper;\n  const getSlide = el => {\n    if (!el.parentElement) {\n      // assume shadow root\n      const slide = swiper.slides.filter(slideEl => slideEl.shadowRoot && slideEl.shadowRoot === el.parentNode)[0];\n      return slide;\n    }\n    return el.parentElement;\n  };\n  if (swiper.params.virtualTranslate && duration !== 0) {\n    let eventTriggered = false;\n    let transitionEndTarget;\n    if (allSlides) {\n      transitionEndTarget = transformElements;\n    } else {\n      transitionEndTarget = transformElements.filter(transformEl => {\n        const el = transformEl.classList.contains('swiper-slide-transform') ? getSlide(transformEl) : transformEl;\n        return swiper.getSlideIndex(el) === activeIndex;\n      });\n    }\n    transitionEndTarget.forEach(el => {\n      elementTransitionEnd(el, () => {\n        if (eventTriggered) return;\n        if (!swiper || swiper.destroyed) return;\n        eventTriggered = true;\n        swiper.animating = false;\n        const evt = new window.CustomEvent('transitionend', {\n          bubbles: true,\n          cancelable: true\n        });\n        swiper.wrapperEl.dispatchEvent(evt);\n      });\n    });\n  }\n}\n\nexport { effectVirtualTransitionEnd as e };\n","import { k as getSlideTransformEl, c as createElement } from './utils.mjs';\n\nfunction createShadow(suffix, slideEl, side) {\n  const shadowClass = `swiper-slide-shadow${side ? `-${side}` : ''}${suffix ? ` swiper-slide-shadow-${suffix}` : ''}`;\n  const shadowContainer = getSlideTransformEl(slideEl);\n  let shadowEl = shadowContainer.querySelector(`.${shadowClass.split(' ').join('.')}`);\n  if (!shadowEl) {\n    shadowEl = createElement('div', shadowClass.split(' '));\n    shadowContainer.append(shadowEl);\n  }\n  return shadowEl;\n}\n\nexport { createShadow as c };\n","/**\n * Swiper 10.2.0\n * Most modern mobile touch slider and framework with hardware accelerated transitions\n * https://swiperjs.com\n *\n * Copyright 2014-2023 Vladimir Kharlampidi\n *\n * Released under the MIT License\n *\n * Released on: August 17, 2023\n */\n\nimport { S as Swiper } from './shared/swiper-core.mjs';\nimport Virtual from './modules/virtual.mjs';\nimport Keyboard from './modules/keyboard.mjs';\nimport Mousewheel from './modules/mousewheel.mjs';\nimport Navigation from './modules/navigation.mjs';\nimport Pagination from './modules/pagination.mjs';\nimport Scrollbar from './modules/scrollbar.mjs';\nimport Parallax from './modules/parallax.mjs';\nimport Zoom from './modules/zoom.mjs';\nimport Controller from './modules/controller.mjs';\nimport A11y from './modules/a11y.mjs';\nimport History from './modules/history.mjs';\nimport HashNavigation from './modules/hash-navigation.mjs';\nimport Autoplay from './modules/autoplay.mjs';\nimport Thumb from './modules/thumbs.mjs';\nimport freeMode from './modules/free-mode.mjs';\nimport Grid from './modules/grid.mjs';\nimport Manipulation from './modules/manipulation.mjs';\nimport EffectFade from './modules/effect-fade.mjs';\nimport EffectCube from './modules/effect-cube.mjs';\nimport EffectFlip from './modules/effect-flip.mjs';\nimport EffectCoverflow from './modules/effect-coverflow.mjs';\nimport EffectCreative from './modules/effect-creative.mjs';\nimport EffectCards from './modules/effect-cards.mjs';\n\n// Swiper Class\nconst modules = [Virtual, Keyboard, Mousewheel, Navigation, Pagination, Scrollbar, Parallax, Zoom, Controller, A11y, History, HashNavigation, Autoplay, Thumb, freeMode, Grid, Manipulation, EffectFade, EffectCube, EffectFlip, EffectCoverflow, EffectCreative, EffectCards];\nSwiper.use(modules);\n\nexport { Swiper, Swiper as default };\n","import { g as getDocument } from '../shared/ssr-window.esm.mjs';\nimport { s as setCSSProperty, e as elementChildren, c as createElement } from '../shared/utils.mjs';\n\nfunction Virtual(_ref) {\n  let {\n    swiper,\n    extendParams,\n    on,\n    emit\n  } = _ref;\n  extendParams({\n    virtual: {\n      enabled: false,\n      slides: [],\n      cache: true,\n      renderSlide: null,\n      renderExternal: null,\n      renderExternalUpdate: true,\n      addSlidesBefore: 0,\n      addSlidesAfter: 0\n    }\n  });\n  let cssModeTimeout;\n  const document = getDocument();\n  swiper.virtual = {\n    cache: {},\n    from: undefined,\n    to: undefined,\n    slides: [],\n    offset: 0,\n    slidesGrid: []\n  };\n  const tempDOM = document.createElement('div');\n  function renderSlide(slide, index) {\n    const params = swiper.params.virtual;\n    if (params.cache && swiper.virtual.cache[index]) {\n      return swiper.virtual.cache[index];\n    }\n    // eslint-disable-next-line\n    let slideEl;\n    if (params.renderSlide) {\n      slideEl = params.renderSlide.call(swiper, slide, index);\n      if (typeof slideEl === 'string') {\n        tempDOM.innerHTML = slideEl;\n        slideEl = tempDOM.children[0];\n      }\n    } else if (swiper.isElement) {\n      slideEl = createElement('swiper-slide');\n    } else {\n      slideEl = createElement('div', swiper.params.slideClass);\n    }\n    slideEl.setAttribute('data-swiper-slide-index', index);\n    if (!params.renderSlide) {\n      slideEl.innerHTML = slide;\n    }\n    if (params.cache) swiper.virtual.cache[index] = slideEl;\n    return slideEl;\n  }\n  function update(force) {\n    const {\n      slidesPerView,\n      slidesPerGroup,\n      centeredSlides,\n      loop: isLoop\n    } = swiper.params;\n    const {\n      addSlidesBefore,\n      addSlidesAfter\n    } = swiper.params.virtual;\n    const {\n      from: previousFrom,\n      to: previousTo,\n      slides,\n      slidesGrid: previousSlidesGrid,\n      offset: previousOffset\n    } = swiper.virtual;\n    if (!swiper.params.cssMode) {\n      swiper.updateActiveIndex();\n    }\n    const activeIndex = swiper.activeIndex || 0;\n    let offsetProp;\n    if (swiper.rtlTranslate) offsetProp = 'right';else offsetProp = swiper.isHorizontal() ? 'left' : 'top';\n    let slidesAfter;\n    let slidesBefore;\n    if (centeredSlides) {\n      slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesAfter;\n      slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesBefore;\n    } else {\n      slidesAfter = slidesPerView + (slidesPerGroup - 1) + addSlidesAfter;\n      slidesBefore = (isLoop ? slidesPerView : slidesPerGroup) + addSlidesBefore;\n    }\n    let from = activeIndex - slidesBefore;\n    let to = activeIndex + slidesAfter;\n    if (!isLoop) {\n      from = Math.max(from, 0);\n      to = Math.min(to, slides.length - 1);\n    }\n    let offset = (swiper.slidesGrid[from] || 0) - (swiper.slidesGrid[0] || 0);\n    if (isLoop && activeIndex >= slidesBefore) {\n      from -= slidesBefore;\n      if (!centeredSlides) offset += swiper.slidesGrid[0];\n    } else if (isLoop && activeIndex < slidesBefore) {\n      from = -slidesBefore;\n      if (centeredSlides) offset += swiper.slidesGrid[0];\n    }\n    Object.assign(swiper.virtual, {\n      from,\n      to,\n      offset,\n      slidesGrid: swiper.slidesGrid,\n      slidesBefore,\n      slidesAfter\n    });\n    function onRendered() {\n      swiper.updateSlides();\n      swiper.updateProgress();\n      swiper.updateSlidesClasses();\n      emit('virtualUpdate');\n    }\n    if (previousFrom === from && previousTo === to && !force) {\n      if (swiper.slidesGrid !== previousSlidesGrid && offset !== previousOffset) {\n        swiper.slides.forEach(slideEl => {\n          slideEl.style[offsetProp] = `${offset - Math.abs(swiper.cssOverflowAdjustment())}px`;\n        });\n      }\n      swiper.updateProgress();\n      emit('virtualUpdate');\n      return;\n    }\n    if (swiper.params.virtual.renderExternal) {\n      swiper.params.virtual.renderExternal.call(swiper, {\n        offset,\n        from,\n        to,\n        slides: function getSlides() {\n          const slidesToRender = [];\n          for (let i = from; i <= to; i += 1) {\n            slidesToRender.push(slides[i]);\n          }\n          return slidesToRender;\n        }()\n      });\n      if (swiper.params.virtual.renderExternalUpdate) {\n        onRendered();\n      } else {\n        emit('virtualUpdate');\n      }\n      return;\n    }\n    const prependIndexes = [];\n    const appendIndexes = [];\n    const getSlideIndex = index => {\n      let slideIndex = index;\n      if (index < 0) {\n        slideIndex = slides.length + index;\n      } else if (slideIndex >= slides.length) {\n        // eslint-disable-next-line\n        slideIndex = slideIndex - slides.length;\n      }\n      return slideIndex;\n    };\n    if (force) {\n      swiper.slidesEl.querySelectorAll(`.${swiper.params.slideClass}, swiper-slide`).forEach(slideEl => {\n        slideEl.remove();\n      });\n    } else {\n      for (let i = previousFrom; i <= previousTo; i += 1) {\n        if (i < from || i > to) {\n          const slideIndex = getSlideIndex(i);\n          swiper.slidesEl.querySelectorAll(`.${swiper.params.slideClass}[data-swiper-slide-index=\"${slideIndex}\"], swiper-slide[data-swiper-slide-index=\"${slideIndex}\"]`).forEach(slideEl => {\n            slideEl.remove();\n          });\n        }\n      }\n    }\n    const loopFrom = isLoop ? -slides.length : 0;\n    const loopTo = isLoop ? slides.length * 2 : slides.length;\n    for (let i = loopFrom; i < loopTo; i += 1) {\n      if (i >= from && i <= to) {\n        const slideIndex = getSlideIndex(i);\n        if (typeof previousTo === 'undefined' || force) {\n          appendIndexes.push(slideIndex);\n        } else {\n          if (i > previousTo) appendIndexes.push(slideIndex);\n          if (i < previousFrom) prependIndexes.push(slideIndex);\n        }\n      }\n    }\n    appendIndexes.forEach(index => {\n      swiper.slidesEl.append(renderSlide(slides[index], index));\n    });\n    if (isLoop) {\n      for (let i = prependIndexes.length - 1; i >= 0; i -= 1) {\n        const index = prependIndexes[i];\n        swiper.slidesEl.prepend(renderSlide(slides[index], index));\n      }\n    } else {\n      prependIndexes.sort((a, b) => b - a);\n      prependIndexes.forEach(index => {\n        swiper.slidesEl.prepend(renderSlide(slides[index], index));\n      });\n    }\n    elementChildren(swiper.slidesEl, '.swiper-slide, swiper-slide').forEach(slideEl => {\n      slideEl.style[offsetProp] = `${offset - Math.abs(swiper.cssOverflowAdjustment())}px`;\n    });\n    onRendered();\n  }\n  function appendSlide(slides) {\n    if (typeof slides === 'object' && 'length' in slides) {\n      for (let i = 0; i < slides.length; i += 1) {\n        if (slides[i]) swiper.virtual.slides.push(slides[i]);\n      }\n    } else {\n      swiper.virtual.slides.push(slides);\n    }\n    update(true);\n  }\n  function prependSlide(slides) {\n    const activeIndex = swiper.activeIndex;\n    let newActiveIndex = activeIndex + 1;\n    let numberOfNewSlides = 1;\n    if (Array.isArray(slides)) {\n      for (let i = 0; i < slides.length; i += 1) {\n        if (slides[i]) swiper.virtual.slides.unshift(slides[i]);\n      }\n      newActiveIndex = activeIndex + slides.length;\n      numberOfNewSlides = slides.length;\n    } else {\n      swiper.virtual.slides.unshift(slides);\n    }\n    if (swiper.params.virtual.cache) {\n      const cache = swiper.virtual.cache;\n      const newCache = {};\n      Object.keys(cache).forEach(cachedIndex => {\n        const cachedEl = cache[cachedIndex];\n        const cachedElIndex = cachedEl.getAttribute('data-swiper-slide-index');\n        if (cachedElIndex) {\n          cachedEl.setAttribute('data-swiper-slide-index', parseInt(cachedElIndex, 10) + numberOfNewSlides);\n        }\n        newCache[parseInt(cachedIndex, 10) + numberOfNewSlides] = cachedEl;\n      });\n      swiper.virtual.cache = newCache;\n    }\n    update(true);\n    swiper.slideTo(newActiveIndex, 0);\n  }\n  function removeSlide(slidesIndexes) {\n    if (typeof slidesIndexes === 'undefined' || slidesIndexes === null) return;\n    let activeIndex = swiper.activeIndex;\n    if (Array.isArray(slidesIndexes)) {\n      for (let i = slidesIndexes.length - 1; i >= 0; i -= 1) {\n        swiper.virtual.slides.splice(slidesIndexes[i], 1);\n        if (swiper.params.virtual.cache) {\n          delete swiper.virtual.cache[slidesIndexes[i]];\n        }\n        if (slidesIndexes[i] < activeIndex) activeIndex -= 1;\n        activeIndex = Math.max(activeIndex, 0);\n      }\n    } else {\n      swiper.virtual.slides.splice(slidesIndexes, 1);\n      if (swiper.params.virtual.cache) {\n        delete swiper.virtual.cache[slidesIndexes];\n      }\n      if (slidesIndexes < activeIndex) activeIndex -= 1;\n      activeIndex = Math.max(activeIndex, 0);\n    }\n    update(true);\n    swiper.slideTo(activeIndex, 0);\n  }\n  function removeAllSlides() {\n    swiper.virtual.slides = [];\n    if (swiper.params.virtual.cache) {\n      swiper.virtual.cache = {};\n    }\n    update(true);\n    swiper.slideTo(0, 0);\n  }\n  on('beforeInit', () => {\n    if (!swiper.params.virtual.enabled) return;\n    let domSlidesAssigned;\n    if (typeof swiper.passedParams.virtual.slides === 'undefined') {\n      const slides = [...swiper.slidesEl.children].filter(el => el.matches(`.${swiper.params.slideClass}, swiper-slide`));\n      if (slides && slides.length) {\n        swiper.virtual.slides = [...slides];\n        domSlidesAssigned = true;\n        slides.forEach((slideEl, slideIndex) => {\n          slideEl.setAttribute('data-swiper-slide-index', slideIndex);\n          swiper.virtual.cache[slideIndex] = slideEl;\n          slideEl.remove();\n        });\n      }\n    }\n    if (!domSlidesAssigned) {\n      swiper.virtual.slides = swiper.params.virtual.slides;\n    }\n    swiper.classNames.push(`${swiper.params.containerModifierClass}virtual`);\n    swiper.params.watchSlidesProgress = true;\n    swiper.originalParams.watchSlidesProgress = true;\n    if (!swiper.params.initialSlide) {\n      update();\n    }\n  });\n  on('setTranslate', () => {\n    if (!swiper.params.virtual.enabled) return;\n    if (swiper.params.cssMode && !swiper._immediateVirtual) {\n      clearTimeout(cssModeTimeout);\n      cssModeTimeout = setTimeout(() => {\n        update();\n      }, 100);\n    } else {\n      update();\n    }\n  });\n  on('init update resize', () => {\n    if (!swiper.params.virtual.enabled) return;\n    if (swiper.params.cssMode) {\n      setCSSProperty(swiper.wrapperEl, '--swiper-virtual-size', `${swiper.virtualSize}px`);\n    }\n  });\n  Object.assign(swiper.virtual, {\n    appendSlide,\n    prependSlide,\n    removeSlide,\n    removeAllSlides,\n    update\n  });\n}\n\nexport { Virtual as default };\n","import { g as getDocument, a as getWindow } from '../shared/ssr-window.esm.mjs';\nimport { a as elementParents, b as elementOffset } from '../shared/utils.mjs';\n\n/* eslint-disable consistent-return */\nfunction Keyboard(_ref) {\n  let {\n    swiper,\n    extendParams,\n    on,\n    emit\n  } = _ref;\n  const document = getDocument();\n  const window = getWindow();\n  swiper.keyboard = {\n    enabled: false\n  };\n  extendParams({\n    keyboard: {\n      enabled: false,\n      onlyInViewport: true,\n      pageUpDown: true\n    }\n  });\n  function handle(event) {\n    if (!swiper.enabled) return;\n    const {\n      rtlTranslate: rtl\n    } = swiper;\n    let e = event;\n    if (e.originalEvent) e = e.originalEvent; // jquery fix\n    const kc = e.keyCode || e.charCode;\n    const pageUpDown = swiper.params.keyboard.pageUpDown;\n    const isPageUp = pageUpDown && kc === 33;\n    const isPageDown = pageUpDown && kc === 34;\n    const isArrowLeft = kc === 37;\n    const isArrowRight = kc === 39;\n    const isArrowUp = kc === 38;\n    const isArrowDown = kc === 40;\n    // Directions locks\n    if (!swiper.allowSlideNext && (swiper.isHorizontal() && isArrowRight || swiper.isVertical() && isArrowDown || isPageDown)) {\n      return false;\n    }\n    if (!swiper.allowSlidePrev && (swiper.isHorizontal() && isArrowLeft || swiper.isVertical() && isArrowUp || isPageUp)) {\n      return false;\n    }\n    if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) {\n      return undefined;\n    }\n    if (document.activeElement && document.activeElement.nodeName && (document.activeElement.nodeName.toLowerCase() === 'input' || document.activeElement.nodeName.toLowerCase() === 'textarea')) {\n      return undefined;\n    }\n    if (swiper.params.keyboard.onlyInViewport && (isPageUp || isPageDown || isArrowLeft || isArrowRight || isArrowUp || isArrowDown)) {\n      let inView = false;\n      // Check that swiper should be inside of visible area of window\n      if (elementParents(swiper.el, `.${swiper.params.slideClass}, swiper-slide`).length > 0 && elementParents(swiper.el, `.${swiper.params.slideActiveClass}`).length === 0) {\n        return undefined;\n      }\n      const el = swiper.el;\n      const swiperWidth = el.clientWidth;\n      const swiperHeight = el.clientHeight;\n      const windowWidth = window.innerWidth;\n      const windowHeight = window.innerHeight;\n      const swiperOffset = elementOffset(el);\n      if (rtl) swiperOffset.left -= el.scrollLeft;\n      const swiperCoord = [[swiperOffset.left, swiperOffset.top], [swiperOffset.left + swiperWidth, swiperOffset.top], [swiperOffset.left, swiperOffset.top + swiperHeight], [swiperOffset.left + swiperWidth, swiperOffset.top + swiperHeight]];\n      for (let i = 0; i < swiperCoord.length; i += 1) {\n        const point = swiperCoord[i];\n        if (point[0] >= 0 && point[0] <= windowWidth && point[1] >= 0 && point[1] <= windowHeight) {\n          if (point[0] === 0 && point[1] === 0) continue; // eslint-disable-line\n          inView = true;\n        }\n      }\n      if (!inView) return undefined;\n    }\n    if (swiper.isHorizontal()) {\n      if (isPageUp || isPageDown || isArrowLeft || isArrowRight) {\n        if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n      }\n      if ((isPageDown || isArrowRight) && !rtl || (isPageUp || isArrowLeft) && rtl) swiper.slideNext();\n      if ((isPageUp || isArrowLeft) && !rtl || (isPageDown || isArrowRight) && rtl) swiper.slidePrev();\n    } else {\n      if (isPageUp || isPageDown || isArrowUp || isArrowDown) {\n        if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n      }\n      if (isPageDown || isArrowDown) swiper.slideNext();\n      if (isPageUp || isArrowUp) swiper.slidePrev();\n    }\n    emit('keyPress', kc);\n    return undefined;\n  }\n  function enable() {\n    if (swiper.keyboard.enabled) return;\n    document.addEventListener('keydown', handle);\n    swiper.keyboard.enabled = true;\n  }\n  function disable() {\n    if (!swiper.keyboard.enabled) return;\n    document.removeEventListener('keydown', handle);\n    swiper.keyboard.enabled = false;\n  }\n  on('init', () => {\n    if (swiper.params.keyboard.enabled) {\n      enable();\n    }\n  });\n  on('destroy', () => {\n    if (swiper.keyboard.enabled) {\n      disable();\n    }\n  });\n  Object.assign(swiper.keyboard, {\n    enable,\n    disable\n  });\n}\n\nexport { Keyboard as default };\n","import { a as getWindow } from '../shared/ssr-window.esm.mjs';\nimport { n as nextTick, d as now } from '../shared/utils.mjs';\n\n/* eslint-disable consistent-return */\nfunction Mousewheel(_ref) {\n  let {\n    swiper,\n    extendParams,\n    on,\n    emit\n  } = _ref;\n  const window = getWindow();\n  extendParams({\n    mousewheel: {\n      enabled: false,\n      releaseOnEdges: false,\n      invert: false,\n      forceToAxis: false,\n      sensitivity: 1,\n      eventsTarget: 'container',\n      thresholdDelta: null,\n      thresholdTime: null,\n      noMousewheelClass: 'swiper-no-mousewheel'\n    }\n  });\n  swiper.mousewheel = {\n    enabled: false\n  };\n  let timeout;\n  let lastScrollTime = now();\n  let lastEventBeforeSnap;\n  const recentWheelEvents = [];\n  function normalize(e) {\n    // Reasonable defaults\n    const PIXEL_STEP = 10;\n    const LINE_HEIGHT = 40;\n    const PAGE_HEIGHT = 800;\n    let sX = 0;\n    let sY = 0; // spinX, spinY\n    let pX = 0;\n    let pY = 0; // pixelX, pixelY\n\n    // Legacy\n    if ('detail' in e) {\n      sY = e.detail;\n    }\n    if ('wheelDelta' in e) {\n      sY = -e.wheelDelta / 120;\n    }\n    if ('wheelDeltaY' in e) {\n      sY = -e.wheelDeltaY / 120;\n    }\n    if ('wheelDeltaX' in e) {\n      sX = -e.wheelDeltaX / 120;\n    }\n\n    // side scrolling on FF with DOMMouseScroll\n    if ('axis' in e && e.axis === e.HORIZONTAL_AXIS) {\n      sX = sY;\n      sY = 0;\n    }\n    pX = sX * PIXEL_STEP;\n    pY = sY * PIXEL_STEP;\n    if ('deltaY' in e) {\n      pY = e.deltaY;\n    }\n    if ('deltaX' in e) {\n      pX = e.deltaX;\n    }\n    if (e.shiftKey && !pX) {\n      // if user scrolls with shift he wants horizontal scroll\n      pX = pY;\n      pY = 0;\n    }\n    if ((pX || pY) && e.deltaMode) {\n      if (e.deltaMode === 1) {\n        // delta in LINE units\n        pX *= LINE_HEIGHT;\n        pY *= LINE_HEIGHT;\n      } else {\n        // delta in PAGE units\n        pX *= PAGE_HEIGHT;\n        pY *= PAGE_HEIGHT;\n      }\n    }\n\n    // Fall-back if spin cannot be determined\n    if (pX && !sX) {\n      sX = pX < 1 ? -1 : 1;\n    }\n    if (pY && !sY) {\n      sY = pY < 1 ? -1 : 1;\n    }\n    return {\n      spinX: sX,\n      spinY: sY,\n      pixelX: pX,\n      pixelY: pY\n    };\n  }\n  function handleMouseEnter() {\n    if (!swiper.enabled) return;\n    swiper.mouseEntered = true;\n  }\n  function handleMouseLeave() {\n    if (!swiper.enabled) return;\n    swiper.mouseEntered = false;\n  }\n  function animateSlider(newEvent) {\n    if (swiper.params.mousewheel.thresholdDelta && newEvent.delta < swiper.params.mousewheel.thresholdDelta) {\n      // Prevent if delta of wheel scroll delta is below configured threshold\n      return false;\n    }\n    if (swiper.params.mousewheel.thresholdTime && now() - lastScrollTime < swiper.params.mousewheel.thresholdTime) {\n      // Prevent if time between scrolls is below configured threshold\n      return false;\n    }\n\n    // If the movement is NOT big enough and\n    // if the last time the user scrolled was too close to the current one (avoid continuously triggering the slider):\n    //   Don't go any further (avoid insignificant scroll movement).\n    if (newEvent.delta >= 6 && now() - lastScrollTime < 60) {\n      // Return false as a default\n      return true;\n    }\n    // If user is scrolling towards the end:\n    //   If the slider hasn't hit the latest slide or\n    //   if the slider is a loop and\n    //   if the slider isn't moving right now:\n    //     Go to next slide and\n    //     emit a scroll event.\n    // Else (the user is scrolling towards the beginning) and\n    // if the slider hasn't hit the first slide or\n    // if the slider is a loop and\n    // if the slider isn't moving right now:\n    //   Go to prev slide and\n    //   emit a scroll event.\n    if (newEvent.direction < 0) {\n      if ((!swiper.isEnd || swiper.params.loop) && !swiper.animating) {\n        swiper.slideNext();\n        emit('scroll', newEvent.raw);\n      }\n    } else if ((!swiper.isBeginning || swiper.params.loop) && !swiper.animating) {\n      swiper.slidePrev();\n      emit('scroll', newEvent.raw);\n    }\n    // If you got here is because an animation has been triggered so store the current time\n    lastScrollTime = new window.Date().getTime();\n    // Return false as a default\n    return false;\n  }\n  function releaseScroll(newEvent) {\n    const params = swiper.params.mousewheel;\n    if (newEvent.direction < 0) {\n      if (swiper.isEnd && !swiper.params.loop && params.releaseOnEdges) {\n        // Return true to animate scroll on edges\n        return true;\n      }\n    } else if (swiper.isBeginning && !swiper.params.loop && params.releaseOnEdges) {\n      // Return true to animate scroll on edges\n      return true;\n    }\n    return false;\n  }\n  function handle(event) {\n    let e = event;\n    let disableParentSwiper = true;\n    if (!swiper.enabled) return;\n\n    // Ignore event if the target or its parents have the swiper-no-mousewheel class\n    if (event.target.closest(`.${swiper.params.mousewheel.noMousewheelClass}`)) return;\n    const params = swiper.params.mousewheel;\n    if (swiper.params.cssMode) {\n      e.preventDefault();\n    }\n    let targetEl = swiper.el;\n    if (swiper.params.mousewheel.eventsTarget !== 'container') {\n      targetEl = document.querySelector(swiper.params.mousewheel.eventsTarget);\n    }\n    const targetElContainsTarget = targetEl && targetEl.contains(e.target);\n    if (!swiper.mouseEntered && !targetElContainsTarget && !params.releaseOnEdges) return true;\n    if (e.originalEvent) e = e.originalEvent; // jquery fix\n    let delta = 0;\n    const rtlFactor = swiper.rtlTranslate ? -1 : 1;\n    const data = normalize(e);\n    if (params.forceToAxis) {\n      if (swiper.isHorizontal()) {\n        if (Math.abs(data.pixelX) > Math.abs(data.pixelY)) delta = -data.pixelX * rtlFactor;else return true;\n      } else if (Math.abs(data.pixelY) > Math.abs(data.pixelX)) delta = -data.pixelY;else return true;\n    } else {\n      delta = Math.abs(data.pixelX) > Math.abs(data.pixelY) ? -data.pixelX * rtlFactor : -data.pixelY;\n    }\n    if (delta === 0) return true;\n    if (params.invert) delta = -delta;\n\n    // Get the scroll positions\n    let positions = swiper.getTranslate() + delta * params.sensitivity;\n    if (positions >= swiper.minTranslate()) positions = swiper.minTranslate();\n    if (positions <= swiper.maxTranslate()) positions = swiper.maxTranslate();\n\n    // When loop is true:\n    //     the disableParentSwiper will be true.\n    // When loop is false:\n    //     if the scroll positions is not on edge,\n    //     then the disableParentSwiper will be true.\n    //     if the scroll on edge positions,\n    //     then the disableParentSwiper will be false.\n    disableParentSwiper = swiper.params.loop ? true : !(positions === swiper.minTranslate() || positions === swiper.maxTranslate());\n    if (disableParentSwiper && swiper.params.nested) e.stopPropagation();\n    if (!swiper.params.freeMode || !swiper.params.freeMode.enabled) {\n      // Register the new event in a variable which stores the relevant data\n      const newEvent = {\n        time: now(),\n        delta: Math.abs(delta),\n        direction: Math.sign(delta),\n        raw: event\n      };\n\n      // Keep the most recent events\n      if (recentWheelEvents.length >= 2) {\n        recentWheelEvents.shift(); // only store the last N events\n      }\n\n      const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;\n      recentWheelEvents.push(newEvent);\n\n      // If there is at least one previous recorded event:\n      //   If direction has changed or\n      //   if the scroll is quicker than the previous one:\n      //     Animate the slider.\n      // Else (this is the first time the wheel is moved):\n      //     Animate the slider.\n      if (prevEvent) {\n        if (newEvent.direction !== prevEvent.direction || newEvent.delta > prevEvent.delta || newEvent.time > prevEvent.time + 150) {\n          animateSlider(newEvent);\n        }\n      } else {\n        animateSlider(newEvent);\n      }\n\n      // If it's time to release the scroll:\n      //   Return now so you don't hit the preventDefault.\n      if (releaseScroll(newEvent)) {\n        return true;\n      }\n    } else {\n      // Freemode or scrollContainer:\n\n      // If we recently snapped after a momentum scroll, then ignore wheel events\n      // to give time for the deceleration to finish. Stop ignoring after 500 msecs\n      // or if it's a new scroll (larger delta or inverse sign as last event before\n      // an end-of-momentum snap).\n      const newEvent = {\n        time: now(),\n        delta: Math.abs(delta),\n        direction: Math.sign(delta)\n      };\n      const ignoreWheelEvents = lastEventBeforeSnap && newEvent.time < lastEventBeforeSnap.time + 500 && newEvent.delta <= lastEventBeforeSnap.delta && newEvent.direction === lastEventBeforeSnap.direction;\n      if (!ignoreWheelEvents) {\n        lastEventBeforeSnap = undefined;\n        let position = swiper.getTranslate() + delta * params.sensitivity;\n        const wasBeginning = swiper.isBeginning;\n        const wasEnd = swiper.isEnd;\n        if (position >= swiper.minTranslate()) position = swiper.minTranslate();\n        if (position <= swiper.maxTranslate()) position = swiper.maxTranslate();\n        swiper.setTransition(0);\n        swiper.setTranslate(position);\n        swiper.updateProgress();\n        swiper.updateActiveIndex();\n        swiper.updateSlidesClasses();\n        if (!wasBeginning && swiper.isBeginning || !wasEnd && swiper.isEnd) {\n          swiper.updateSlidesClasses();\n        }\n        if (swiper.params.loop) {\n          swiper.loopFix({\n            direction: newEvent.direction < 0 ? 'next' : 'prev',\n            byMousewheel: true\n          });\n        }\n        if (swiper.params.freeMode.sticky) {\n          // When wheel scrolling starts with sticky (aka snap) enabled, then detect\n          // the end of a momentum scroll by storing recent (N=15?) wheel events.\n          // 1. do all N events have decreasing or same (absolute value) delta?\n          // 2. did all N events arrive in the last M (M=500?) msecs?\n          // 3. does the earliest event have an (absolute value) delta that's\n          //    at least P (P=1?) larger than the most recent event's delta?\n          // 4. does the latest event have a delta that's smaller than Q (Q=6?) pixels?\n          // If 1-4 are \"yes\" then we're near the end of a momentum scroll deceleration.\n          // Snap immediately and ignore remaining wheel events in this scroll.\n          // See comment above for \"remaining wheel events in this scroll\" determination.\n          // If 1-4 aren't satisfied, then wait to snap until 500ms after the last event.\n          clearTimeout(timeout);\n          timeout = undefined;\n          if (recentWheelEvents.length >= 15) {\n            recentWheelEvents.shift(); // only store the last N events\n          }\n\n          const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;\n          const firstEvent = recentWheelEvents[0];\n          recentWheelEvents.push(newEvent);\n          if (prevEvent && (newEvent.delta > prevEvent.delta || newEvent.direction !== prevEvent.direction)) {\n            // Increasing or reverse-sign delta means the user started scrolling again. Clear the wheel event log.\n            recentWheelEvents.splice(0);\n          } else if (recentWheelEvents.length >= 15 && newEvent.time - firstEvent.time < 500 && firstEvent.delta - newEvent.delta >= 1 && newEvent.delta <= 6) {\n            // We're at the end of the deceleration of a momentum scroll, so there's no need\n            // to wait for more events. Snap ASAP on the next tick.\n            // Also, because there's some remaining momentum we'll bias the snap in the\n            // direction of the ongoing scroll because it's better UX for the scroll to snap\n            // in the same direction as the scroll instead of reversing to snap.  Therefore,\n            // if it's already scrolled more than 20% in the current direction, keep going.\n            const snapToThreshold = delta > 0 ? 0.8 : 0.2;\n            lastEventBeforeSnap = newEvent;\n            recentWheelEvents.splice(0);\n            timeout = nextTick(() => {\n              swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\n            }, 0); // no delay; move on next tick\n          }\n\n          if (!timeout) {\n            // if we get here, then we haven't detected the end of a momentum scroll, so\n            // we'll consider a scroll \"complete\" when there haven't been any wheel events\n            // for 500ms.\n            timeout = nextTick(() => {\n              const snapToThreshold = 0.5;\n              lastEventBeforeSnap = newEvent;\n              recentWheelEvents.splice(0);\n              swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\n            }, 500);\n          }\n        }\n\n        // Emit event\n        if (!ignoreWheelEvents) emit('scroll', e);\n\n        // Stop autoplay\n        if (swiper.params.autoplay && swiper.params.autoplayDisableOnInteraction) swiper.autoplay.stop();\n        // Return page scroll on edge positions\n        if (params.releaseOnEdges && (position === swiper.minTranslate() || position === swiper.maxTranslate())) {\n          return true;\n        }\n      }\n    }\n    if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n    return false;\n  }\n  function events(method) {\n    let targetEl = swiper.el;\n    if (swiper.params.mousewheel.eventsTarget !== 'container') {\n      targetEl = document.querySelector(swiper.params.mousewheel.eventsTarget);\n    }\n    targetEl[method]('mouseenter', handleMouseEnter);\n    targetEl[method]('mouseleave', handleMouseLeave);\n    targetEl[method]('wheel', handle);\n  }\n  function enable() {\n    if (swiper.params.cssMode) {\n      swiper.wrapperEl.removeEventListener('wheel', handle);\n      return true;\n    }\n    if (swiper.mousewheel.enabled) return false;\n    events('addEventListener');\n    swiper.mousewheel.enabled = true;\n    return true;\n  }\n  function disable() {\n    if (swiper.params.cssMode) {\n      swiper.wrapperEl.addEventListener(event, handle);\n      return true;\n    }\n    if (!swiper.mousewheel.enabled) return false;\n    events('removeEventListener');\n    swiper.mousewheel.enabled = false;\n    return true;\n  }\n  on('init', () => {\n    if (!swiper.params.mousewheel.enabled && swiper.params.cssMode) {\n      disable();\n    }\n    if (swiper.params.mousewheel.enabled) enable();\n  });\n  on('destroy', () => {\n    if (swiper.params.cssMode) {\n      enable();\n    }\n    if (swiper.mousewheel.enabled) disable();\n  });\n  Object.assign(swiper.mousewheel, {\n    enable,\n    disable\n  });\n}\n\nexport { Mousewheel as default };\n","import { c as createElementIfNotDefined } from '../shared/create-element-if-not-defined.mjs';\n\nfunction Navigation(_ref) {\n  let {\n    swiper,\n    extendParams,\n    on,\n    emit\n  } = _ref;\n  extendParams({\n    navigation: {\n      nextEl: null,\n      prevEl: null,\n      hideOnClick: false,\n      disabledClass: 'swiper-button-disabled',\n      hiddenClass: 'swiper-button-hidden',\n      lockClass: 'swiper-button-lock',\n      navigationDisabledClass: 'swiper-navigation-disabled'\n    }\n  });\n  swiper.navigation = {\n    nextEl: null,\n    prevEl: null\n  };\n  const makeElementsArray = el => (Array.isArray(el) ? el : [el]).filter(e => !!e);\n  function getEl(el) {\n    let res;\n    if (el && typeof el === 'string' && swiper.isElement) {\n      res = swiper.el.querySelector(el);\n      if (res) return res;\n    }\n    if (el) {\n      if (typeof el === 'string') res = [...document.querySelectorAll(el)];\n      if (swiper.params.uniqueNavElements && typeof el === 'string' && res.length > 1 && swiper.el.querySelectorAll(el).length === 1) {\n        res = swiper.el.querySelector(el);\n      }\n    }\n    if (el && !res) return el;\n    // if (Array.isArray(res) && res.length === 1) res = res[0];\n    return res;\n  }\n  function toggleEl(el, disabled) {\n    const params = swiper.params.navigation;\n    el = makeElementsArray(el);\n    el.forEach(subEl => {\n      if (subEl) {\n        subEl.classList[disabled ? 'add' : 'remove'](...params.disabledClass.split(' '));\n        if (subEl.tagName === 'BUTTON') subEl.disabled = disabled;\n        if (swiper.params.watchOverflow && swiper.enabled) {\n          subEl.classList[swiper.isLocked ? 'add' : 'remove'](params.lockClass);\n        }\n      }\n    });\n  }\n  function update() {\n    // Update Navigation Buttons\n    const {\n      nextEl,\n      prevEl\n    } = swiper.navigation;\n    if (swiper.params.loop) {\n      toggleEl(prevEl, false);\n      toggleEl(nextEl, false);\n      return;\n    }\n    toggleEl(prevEl, swiper.isBeginning && !swiper.params.rewind);\n    toggleEl(nextEl, swiper.isEnd && !swiper.params.rewind);\n  }\n  function onPrevClick(e) {\n    e.preventDefault();\n    if (swiper.isBeginning && !swiper.params.loop && !swiper.params.rewind) return;\n    swiper.slidePrev();\n    emit('navigationPrev');\n  }\n  function onNextClick(e) {\n    e.preventDefault();\n    if (swiper.isEnd && !swiper.params.loop && !swiper.params.rewind) return;\n    swiper.slideNext();\n    emit('navigationNext');\n  }\n  function init() {\n    const params = swiper.params.navigation;\n    swiper.params.navigation = createElementIfNotDefined(swiper, swiper.originalParams.navigation, swiper.params.navigation, {\n      nextEl: 'swiper-button-next',\n      prevEl: 'swiper-button-prev'\n    });\n    if (!(params.nextEl || params.prevEl)) return;\n    let nextEl = getEl(params.nextEl);\n    let prevEl = getEl(params.prevEl);\n    Object.assign(swiper.navigation, {\n      nextEl,\n      prevEl\n    });\n    nextEl = makeElementsArray(nextEl);\n    prevEl = makeElementsArray(prevEl);\n    const initButton = (el, dir) => {\n      if (el) {\n        el.addEventListener('click', dir === 'next' ? onNextClick : onPrevClick);\n      }\n      if (!swiper.enabled && el) {\n        el.classList.add(...params.lockClass.split(' '));\n      }\n    };\n    nextEl.forEach(el => initButton(el, 'next'));\n    prevEl.forEach(el => initButton(el, 'prev'));\n  }\n  function destroy() {\n    let {\n      nextEl,\n      prevEl\n    } = swiper.navigation;\n    nextEl = makeElementsArray(nextEl);\n    prevEl = makeElementsArray(prevEl);\n    const destroyButton = (el, dir) => {\n      el.removeEventListener('click', dir === 'next' ? onNextClick : onPrevClick);\n      el.classList.remove(...swiper.params.navigation.disabledClass.split(' '));\n    };\n    nextEl.forEach(el => destroyButton(el, 'next'));\n    prevEl.forEach(el => destroyButton(el, 'prev'));\n  }\n  on('init', () => {\n    if (swiper.params.navigation.enabled === false) {\n      // eslint-disable-next-line\n      disable();\n    } else {\n      init();\n      update();\n    }\n  });\n  on('toEdge fromEdge lock unlock', () => {\n    update();\n  });\n  on('destroy', () => {\n    destroy();\n  });\n  on('enable disable', () => {\n    let {\n      nextEl,\n      prevEl\n    } = swiper.navigation;\n    nextEl = makeElementsArray(nextEl);\n    prevEl = makeElementsArray(prevEl);\n    [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList[swiper.enabled ? 'remove' : 'add'](swiper.params.navigation.lockClass));\n  });\n  on('click', (_s, e) => {\n    let {\n      nextEl,\n      prevEl\n    } = swiper.navigation;\n    nextEl = makeElementsArray(nextEl);\n    prevEl = makeElementsArray(prevEl);\n    const targetEl = e.target;\n    if (swiper.params.navigation.hideOnClick && !prevEl.includes(targetEl) && !nextEl.includes(targetEl)) {\n      if (swiper.pagination && swiper.params.pagination && swiper.params.pagination.clickable && (swiper.pagination.el === targetEl || swiper.pagination.el.contains(targetEl))) return;\n      let isHidden;\n      if (nextEl.length) {\n        isHidden = nextEl[0].classList.contains(swiper.params.navigation.hiddenClass);\n      } else if (prevEl.length) {\n        isHidden = prevEl[0].classList.contains(swiper.params.navigation.hiddenClass);\n      }\n      if (isHidden === true) {\n        emit('navigationShow');\n      } else {\n        emit('navigationHide');\n      }\n      [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList.toggle(swiper.params.navigation.hiddenClass));\n    }\n  });\n  const enable = () => {\n    swiper.el.classList.remove(...swiper.params.navigation.navigationDisabledClass.split(' '));\n    init();\n    update();\n  };\n  const disable = () => {\n    swiper.el.classList.add(...swiper.params.navigation.navigationDisabledClass.split(' '));\n    destroy();\n  };\n  Object.assign(swiper.navigation, {\n    enable,\n    disable,\n    update,\n    init,\n    destroy\n  });\n}\n\nexport { Navigation as default };\n","import { c as classesToSelector } from '../shared/classes-to-selector.mjs';\nimport { c as createElementIfNotDefined } from '../shared/create-element-if-not-defined.mjs';\nimport { f as elementOuterSize, g as elementIndex, a as elementParents } from '../shared/utils.mjs';\n\nfunction Pagination(_ref) {\n  let {\n    swiper,\n    extendParams,\n    on,\n    emit\n  } = _ref;\n  const pfx = 'swiper-pagination';\n  extendParams({\n    pagination: {\n      el: null,\n      bulletElement: 'span',\n      clickable: false,\n      hideOnClick: false,\n      renderBullet: null,\n      renderProgressbar: null,\n      renderFraction: null,\n      renderCustom: null,\n      progressbarOpposite: false,\n      type: 'bullets',\n      // 'bullets' or 'progressbar' or 'fraction' or 'custom'\n      dynamicBullets: false,\n      dynamicMainBullets: 1,\n      formatFractionCurrent: number => number,\n      formatFractionTotal: number => number,\n      bulletClass: `${pfx}-bullet`,\n      bulletActiveClass: `${pfx}-bullet-active`,\n      modifierClass: `${pfx}-`,\n      currentClass: `${pfx}-current`,\n      totalClass: `${pfx}-total`,\n      hiddenClass: `${pfx}-hidden`,\n      progressbarFillClass: `${pfx}-progressbar-fill`,\n      progressbarOppositeClass: `${pfx}-progressbar-opposite`,\n      clickableClass: `${pfx}-clickable`,\n      lockClass: `${pfx}-lock`,\n      horizontalClass: `${pfx}-horizontal`,\n      verticalClass: `${pfx}-vertical`,\n      paginationDisabledClass: `${pfx}-disabled`\n    }\n  });\n  swiper.pagination = {\n    el: null,\n    bullets: []\n  };\n  let bulletSize;\n  let dynamicBulletIndex = 0;\n  const makeElementsArray = el => (Array.isArray(el) ? el : [el]).filter(e => !!e);\n  function isPaginationDisabled() {\n    return !swiper.params.pagination.el || !swiper.pagination.el || Array.isArray(swiper.pagination.el) && swiper.pagination.el.length === 0;\n  }\n  function setSideBullets(bulletEl, position) {\n    const {\n      bulletActiveClass\n    } = swiper.params.pagination;\n    if (!bulletEl) return;\n    bulletEl = bulletEl[`${position === 'prev' ? 'previous' : 'next'}ElementSibling`];\n    if (bulletEl) {\n      bulletEl.classList.add(`${bulletActiveClass}-${position}`);\n      bulletEl = bulletEl[`${position === 'prev' ? 'previous' : 'next'}ElementSibling`];\n      if (bulletEl) {\n        bulletEl.classList.add(`${bulletActiveClass}-${position}-${position}`);\n      }\n    }\n  }\n  function onBulletClick(e) {\n    const bulletEl = e.target.closest(classesToSelector(swiper.params.pagination.bulletClass));\n    if (!bulletEl) {\n      return;\n    }\n    e.preventDefault();\n    const index = elementIndex(bulletEl) * swiper.params.slidesPerGroup;\n    if (swiper.params.loop) {\n      if (swiper.realIndex === index) return;\n      const realIndex = swiper.realIndex;\n      const newSlideIndex = swiper.getSlideIndexByData(index);\n      const currentSlideIndex = swiper.getSlideIndexByData(swiper.realIndex);\n      if (newSlideIndex > swiper.slides.length - swiper.loopedSlides) {\n        const indexBeforeLoopFix = swiper.activeIndex;\n        swiper.loopFix({\n          direction: newSlideIndex > currentSlideIndex ? 'next' : 'prev',\n          activeSlideIndex: newSlideIndex,\n          slideTo: false\n        });\n        const indexAfterFix = swiper.activeIndex;\n        if (indexBeforeLoopFix === indexAfterFix) {\n          swiper.slideToLoop(realIndex, 0, false, true);\n        }\n      }\n      swiper.slideToLoop(index);\n    } else {\n      swiper.slideTo(index);\n    }\n  }\n  function update() {\n    // Render || Update Pagination bullets/items\n    const rtl = swiper.rtl;\n    const params = swiper.params.pagination;\n    if (isPaginationDisabled()) return;\n    let el = swiper.pagination.el;\n    el = makeElementsArray(el);\n    // Current/Total\n    let current;\n    let previousIndex;\n    const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n    const total = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n    if (swiper.params.loop) {\n      previousIndex = swiper.previousRealIndex || 0;\n      current = swiper.params.slidesPerGroup > 1 ? Math.floor(swiper.realIndex / swiper.params.slidesPerGroup) : swiper.realIndex;\n    } else if (typeof swiper.snapIndex !== 'undefined') {\n      current = swiper.snapIndex;\n      previousIndex = swiper.previousSnapIndex;\n    } else {\n      previousIndex = swiper.previousIndex || 0;\n      current = swiper.activeIndex || 0;\n    }\n    // Types\n    if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) {\n      const bullets = swiper.pagination.bullets;\n      let firstIndex;\n      let lastIndex;\n      let midIndex;\n      if (params.dynamicBullets) {\n        bulletSize = elementOuterSize(bullets[0], swiper.isHorizontal() ? 'width' : 'height', true);\n        el.forEach(subEl => {\n          subEl.style[swiper.isHorizontal() ? 'width' : 'height'] = `${bulletSize * (params.dynamicMainBullets + 4)}px`;\n        });\n        if (params.dynamicMainBullets > 1 && previousIndex !== undefined) {\n          dynamicBulletIndex += current - (previousIndex || 0);\n          if (dynamicBulletIndex > params.dynamicMainBullets - 1) {\n            dynamicBulletIndex = params.dynamicMainBullets - 1;\n          } else if (dynamicBulletIndex < 0) {\n            dynamicBulletIndex = 0;\n          }\n        }\n        firstIndex = Math.max(current - dynamicBulletIndex, 0);\n        lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1);\n        midIndex = (lastIndex + firstIndex) / 2;\n      }\n      bullets.forEach(bulletEl => {\n        const classesToRemove = [...['', '-next', '-next-next', '-prev', '-prev-prev', '-main'].map(suffix => `${params.bulletActiveClass}${suffix}`)].map(s => typeof s === 'string' && s.includes(' ') ? s.split(' ') : s).flat();\n        bulletEl.classList.remove(...classesToRemove);\n      });\n      if (el.length > 1) {\n        bullets.forEach(bullet => {\n          const bulletIndex = elementIndex(bullet);\n          if (bulletIndex === current) {\n            bullet.classList.add(...params.bulletActiveClass.split(' '));\n          } else if (swiper.isElement) {\n            bullet.setAttribute('part', 'bullet');\n          }\n          if (params.dynamicBullets) {\n            if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) {\n              bullet.classList.add(...`${params.bulletActiveClass}-main`.split(' '));\n            }\n            if (bulletIndex === firstIndex) {\n              setSideBullets(bullet, 'prev');\n            }\n            if (bulletIndex === lastIndex) {\n              setSideBullets(bullet, 'next');\n            }\n          }\n        });\n      } else {\n        const bullet = bullets[current];\n        if (bullet) {\n          bullet.classList.add(...params.bulletActiveClass.split(' '));\n        }\n        if (swiper.isElement) {\n          bullets.forEach((bulletEl, bulletIndex) => {\n            bulletEl.setAttribute('part', bulletIndex === current ? 'bullet-active' : 'bullet');\n          });\n        }\n        if (params.dynamicBullets) {\n          const firstDisplayedBullet = bullets[firstIndex];\n          const lastDisplayedBullet = bullets[lastIndex];\n          for (let i = firstIndex; i <= lastIndex; i += 1) {\n            if (bullets[i]) {\n              bullets[i].classList.add(...`${params.bulletActiveClass}-main`.split(' '));\n            }\n          }\n          setSideBullets(firstDisplayedBullet, 'prev');\n          setSideBullets(lastDisplayedBullet, 'next');\n        }\n      }\n      if (params.dynamicBullets) {\n        const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4);\n        const bulletsOffset = (bulletSize * dynamicBulletsLength - bulletSize) / 2 - midIndex * bulletSize;\n        const offsetProp = rtl ? 'right' : 'left';\n        bullets.forEach(bullet => {\n          bullet.style[swiper.isHorizontal() ? offsetProp : 'top'] = `${bulletsOffset}px`;\n        });\n      }\n    }\n    el.forEach((subEl, subElIndex) => {\n      if (params.type === 'fraction') {\n        subEl.querySelectorAll(classesToSelector(params.currentClass)).forEach(fractionEl => {\n          fractionEl.textContent = params.formatFractionCurrent(current + 1);\n        });\n        subEl.querySelectorAll(classesToSelector(params.totalClass)).forEach(totalEl => {\n          totalEl.textContent = params.formatFractionTotal(total);\n        });\n      }\n      if (params.type === 'progressbar') {\n        let progressbarDirection;\n        if (params.progressbarOpposite) {\n          progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal';\n        } else {\n          progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical';\n        }\n        const scale = (current + 1) / total;\n        let scaleX = 1;\n        let scaleY = 1;\n        if (progressbarDirection === 'horizontal') {\n          scaleX = scale;\n        } else {\n          scaleY = scale;\n        }\n        subEl.querySelectorAll(classesToSelector(params.progressbarFillClass)).forEach(progressEl => {\n          progressEl.style.transform = `translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`;\n          progressEl.style.transitionDuration = `${swiper.params.speed}ms`;\n        });\n      }\n      if (params.type === 'custom' && params.renderCustom) {\n        subEl.innerHTML = params.renderCustom(swiper, current + 1, total);\n        if (subElIndex === 0) emit('paginationRender', subEl);\n      } else {\n        if (subElIndex === 0) emit('paginationRender', subEl);\n        emit('paginationUpdate', subEl);\n      }\n      if (swiper.params.watchOverflow && swiper.enabled) {\n        subEl.classList[swiper.isLocked ? 'add' : 'remove'](params.lockClass);\n      }\n    });\n  }\n  function render() {\n    // Render Container\n    const params = swiper.params.pagination;\n    if (isPaginationDisabled()) return;\n    const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n    let el = swiper.pagination.el;\n    el = makeElementsArray(el);\n    let paginationHTML = '';\n    if (params.type === 'bullets') {\n      let numberOfBullets = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n      if (swiper.params.freeMode && swiper.params.freeMode.enabled && numberOfBullets > slidesLength) {\n        numberOfBullets = slidesLength;\n      }\n      for (let i = 0; i < numberOfBullets; i += 1) {\n        if (params.renderBullet) {\n          paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass);\n        } else {\n          // prettier-ignore\n          paginationHTML += `<${params.bulletElement} ${swiper.isElement ? 'part=\"bullet\"' : ''} class=\"${params.bulletClass}\"></${params.bulletElement}>`;\n        }\n      }\n    }\n    if (params.type === 'fraction') {\n      if (params.renderFraction) {\n        paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass);\n      } else {\n        paginationHTML = `<span class=\"${params.currentClass}\"></span>` + ' / ' + `<span class=\"${params.totalClass}\"></span>`;\n      }\n    }\n    if (params.type === 'progressbar') {\n      if (params.renderProgressbar) {\n        paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass);\n      } else {\n        paginationHTML = `<span class=\"${params.progressbarFillClass}\"></span>`;\n      }\n    }\n    swiper.pagination.bullets = [];\n    el.forEach(subEl => {\n      if (params.type !== 'custom') {\n        subEl.innerHTML = paginationHTML || '';\n      }\n      if (params.type === 'bullets') {\n        swiper.pagination.bullets.push(...subEl.querySelectorAll(classesToSelector(params.bulletClass)));\n      }\n    });\n    if (params.type !== 'custom') {\n      emit('paginationRender', el[0]);\n    }\n  }\n  function init() {\n    swiper.params.pagination = createElementIfNotDefined(swiper, swiper.originalParams.pagination, swiper.params.pagination, {\n      el: 'swiper-pagination'\n    });\n    const params = swiper.params.pagination;\n    if (!params.el) return;\n    let el;\n    if (typeof params.el === 'string' && swiper.isElement) {\n      el = swiper.el.querySelector(params.el);\n    }\n    if (!el && typeof params.el === 'string') {\n      el = [...document.querySelectorAll(params.el)];\n    }\n    if (!el) {\n      el = params.el;\n    }\n    if (!el || el.length === 0) return;\n    if (swiper.params.uniqueNavElements && typeof params.el === 'string' && Array.isArray(el) && el.length > 1) {\n      el = [...swiper.el.querySelectorAll(params.el)];\n      // check if it belongs to another nested Swiper\n      if (el.length > 1) {\n        el = el.filter(subEl => {\n          if (elementParents(subEl, '.swiper')[0] !== swiper.el) return false;\n          return true;\n        })[0];\n      }\n    }\n    if (Array.isArray(el) && el.length === 1) el = el[0];\n    Object.assign(swiper.pagination, {\n      el\n    });\n    el = makeElementsArray(el);\n    el.forEach(subEl => {\n      if (params.type === 'bullets' && params.clickable) {\n        subEl.classList.add(...(params.clickableClass || '').split(' '));\n      }\n      subEl.classList.add(params.modifierClass + params.type);\n      subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n      if (params.type === 'bullets' && params.dynamicBullets) {\n        subEl.classList.add(`${params.modifierClass}${params.type}-dynamic`);\n        dynamicBulletIndex = 0;\n        if (params.dynamicMainBullets < 1) {\n          params.dynamicMainBullets = 1;\n        }\n      }\n      if (params.type === 'progressbar' && params.progressbarOpposite) {\n        subEl.classList.add(params.progressbarOppositeClass);\n      }\n      if (params.clickable) {\n        subEl.addEventListener('click', onBulletClick);\n      }\n      if (!swiper.enabled) {\n        subEl.classList.add(params.lockClass);\n      }\n    });\n  }\n  function destroy() {\n    const params = swiper.params.pagination;\n    if (isPaginationDisabled()) return;\n    let el = swiper.pagination.el;\n    if (el) {\n      el = makeElementsArray(el);\n      el.forEach(subEl => {\n        subEl.classList.remove(params.hiddenClass);\n        subEl.classList.remove(params.modifierClass + params.type);\n        subEl.classList.remove(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n        if (params.clickable) {\n          subEl.classList.remove(...(params.clickableClass || '').split(' '));\n          subEl.removeEventListener('click', onBulletClick);\n        }\n      });\n    }\n    if (swiper.pagination.bullets) swiper.pagination.bullets.forEach(subEl => subEl.classList.remove(...params.bulletActiveClass.split(' ')));\n  }\n  on('changeDirection', () => {\n    if (!swiper.pagination || !swiper.pagination.el) return;\n    const params = swiper.params.pagination;\n    let {\n      el\n    } = swiper.pagination;\n    el = makeElementsArray(el);\n    el.forEach(subEl => {\n      subEl.classList.remove(params.horizontalClass, params.verticalClass);\n      subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n    });\n  });\n  on('init', () => {\n    if (swiper.params.pagination.enabled === false) {\n      // eslint-disable-next-line\n      disable();\n    } else {\n      init();\n      render();\n      update();\n    }\n  });\n  on('activeIndexChange', () => {\n    if (typeof swiper.snapIndex === 'undefined') {\n      update();\n    }\n  });\n  on('snapIndexChange', () => {\n    update();\n  });\n  on('snapGridLengthChange', () => {\n    render();\n    update();\n  });\n  on('destroy', () => {\n    destroy();\n  });\n  on('enable disable', () => {\n    let {\n      el\n    } = swiper.pagination;\n    if (el) {\n      el = makeElementsArray(el);\n      el.forEach(subEl => subEl.classList[swiper.enabled ? 'remove' : 'add'](swiper.params.pagination.lockClass));\n    }\n  });\n  on('lock unlock', () => {\n    update();\n  });\n  on('click', (_s, e) => {\n    const targetEl = e.target;\n    const el = makeElementsArray(swiper.pagination.el);\n    if (swiper.params.pagination.el && swiper.params.pagination.hideOnClick && el && el.length > 0 && !targetEl.classList.contains(swiper.params.pagination.bulletClass)) {\n      if (swiper.navigation && (swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl || swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl)) return;\n      const isHidden = el[0].classList.contains(swiper.params.pagination.hiddenClass);\n      if (isHidden === true) {\n        emit('paginationShow');\n      } else {\n        emit('paginationHide');\n      }\n      el.forEach(subEl => subEl.classList.toggle(swiper.params.pagination.hiddenClass));\n    }\n  });\n  const enable = () => {\n    swiper.el.classList.remove(swiper.params.pagination.paginationDisabledClass);\n    let {\n      el\n    } = swiper.pagination;\n    if (el) {\n      el = makeElementsArray(el);\n      el.forEach(subEl => subEl.classList.remove(swiper.params.pagination.paginationDisabledClass));\n    }\n    init();\n    render();\n    update();\n  };\n  const disable = () => {\n    swiper.el.classList.add(swiper.params.pagination.paginationDisabledClass);\n    let {\n      el\n    } = swiper.pagination;\n    if (el) {\n      el = makeElementsArray(el);\n      el.forEach(subEl => subEl.classList.add(swiper.params.pagination.paginationDisabledClass));\n    }\n    destroy();\n  };\n  Object.assign(swiper.pagination, {\n    enable,\n    disable,\n    render,\n    update,\n    init,\n    destroy\n  });\n}\n\nexport { Pagination as default };\n","import { g as getDocument } from '../shared/ssr-window.esm.mjs';\nimport { c as createElement, n as nextTick, b as elementOffset } from '../shared/utils.mjs';\nimport { c as createElementIfNotDefined } from '../shared/create-element-if-not-defined.mjs';\n\nfunction Scrollbar(_ref) {\n  let {\n    swiper,\n    extendParams,\n    on,\n    emit\n  } = _ref;\n  const document = getDocument();\n  let isTouched = false;\n  let timeout = null;\n  let dragTimeout = null;\n  let dragStartPos;\n  let dragSize;\n  let trackSize;\n  let divider;\n  extendParams({\n    scrollbar: {\n      el: null,\n      dragSize: 'auto',\n      hide: false,\n      draggable: false,\n      snapOnRelease: true,\n      lockClass: 'swiper-scrollbar-lock',\n      dragClass: 'swiper-scrollbar-drag',\n      scrollbarDisabledClass: 'swiper-scrollbar-disabled',\n      horizontalClass: `swiper-scrollbar-horizontal`,\n      verticalClass: `swiper-scrollbar-vertical`\n    }\n  });\n  swiper.scrollbar = {\n    el: null,\n    dragEl: null\n  };\n  function setTranslate() {\n    if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n    const {\n      scrollbar,\n      rtlTranslate: rtl\n    } = swiper;\n    const {\n      dragEl,\n      el\n    } = scrollbar;\n    const params = swiper.params.scrollbar;\n    const progress = swiper.params.loop ? swiper.progressLoop : swiper.progress;\n    let newSize = dragSize;\n    let newPos = (trackSize - dragSize) * progress;\n    if (rtl) {\n      newPos = -newPos;\n      if (newPos > 0) {\n        newSize = dragSize - newPos;\n        newPos = 0;\n      } else if (-newPos + dragSize > trackSize) {\n        newSize = trackSize + newPos;\n      }\n    } else if (newPos < 0) {\n      newSize = dragSize + newPos;\n      newPos = 0;\n    } else if (newPos + dragSize > trackSize) {\n      newSize = trackSize - newPos;\n    }\n    if (swiper.isHorizontal()) {\n      dragEl.style.transform = `translate3d(${newPos}px, 0, 0)`;\n      dragEl.style.width = `${newSize}px`;\n    } else {\n      dragEl.style.transform = `translate3d(0px, ${newPos}px, 0)`;\n      dragEl.style.height = `${newSize}px`;\n    }\n    if (params.hide) {\n      clearTimeout(timeout);\n      el.style.opacity = 1;\n      timeout = setTimeout(() => {\n        el.style.opacity = 0;\n        el.style.transitionDuration = '400ms';\n      }, 1000);\n    }\n  }\n  function setTransition(duration) {\n    if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n    swiper.scrollbar.dragEl.style.transitionDuration = `${duration}ms`;\n  }\n  function updateSize() {\n    if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n    const {\n      scrollbar\n    } = swiper;\n    const {\n      dragEl,\n      el\n    } = scrollbar;\n    dragEl.style.width = '';\n    dragEl.style.height = '';\n    trackSize = swiper.isHorizontal() ? el.offsetWidth : el.offsetHeight;\n    divider = swiper.size / (swiper.virtualSize + swiper.params.slidesOffsetBefore - (swiper.params.centeredSlides ? swiper.snapGrid[0] : 0));\n    if (swiper.params.scrollbar.dragSize === 'auto') {\n      dragSize = trackSize * divider;\n    } else {\n      dragSize = parseInt(swiper.params.scrollbar.dragSize, 10);\n    }\n    if (swiper.isHorizontal()) {\n      dragEl.style.width = `${dragSize}px`;\n    } else {\n      dragEl.style.height = `${dragSize}px`;\n    }\n    if (divider >= 1) {\n      el.style.display = 'none';\n    } else {\n      el.style.display = '';\n    }\n    if (swiper.params.scrollbar.hide) {\n      el.style.opacity = 0;\n    }\n    if (swiper.params.watchOverflow && swiper.enabled) {\n      scrollbar.el.classList[swiper.isLocked ? 'add' : 'remove'](swiper.params.scrollbar.lockClass);\n    }\n  }\n  function getPointerPosition(e) {\n    return swiper.isHorizontal() ? e.clientX : e.clientY;\n  }\n  function setDragPosition(e) {\n    const {\n      scrollbar,\n      rtlTranslate: rtl\n    } = swiper;\n    const {\n      el\n    } = scrollbar;\n    let positionRatio;\n    positionRatio = (getPointerPosition(e) - elementOffset(el)[swiper.isHorizontal() ? 'left' : 'top'] - (dragStartPos !== null ? dragStartPos : dragSize / 2)) / (trackSize - dragSize);\n    positionRatio = Math.max(Math.min(positionRatio, 1), 0);\n    if (rtl) {\n      positionRatio = 1 - positionRatio;\n    }\n    const position = swiper.minTranslate() + (swiper.maxTranslate() - swiper.minTranslate()) * positionRatio;\n    swiper.updateProgress(position);\n    swiper.setTranslate(position);\n    swiper.updateActiveIndex();\n    swiper.updateSlidesClasses();\n  }\n  function onDragStart(e) {\n    const params = swiper.params.scrollbar;\n    const {\n      scrollbar,\n      wrapperEl\n    } = swiper;\n    const {\n      el,\n      dragEl\n    } = scrollbar;\n    isTouched = true;\n    dragStartPos = e.target === dragEl ? getPointerPosition(e) - e.target.getBoundingClientRect()[swiper.isHorizontal() ? 'left' : 'top'] : null;\n    e.preventDefault();\n    e.stopPropagation();\n    wrapperEl.style.transitionDuration = '100ms';\n    dragEl.style.transitionDuration = '100ms';\n    setDragPosition(e);\n    clearTimeout(dragTimeout);\n    el.style.transitionDuration = '0ms';\n    if (params.hide) {\n      el.style.opacity = 1;\n    }\n    if (swiper.params.cssMode) {\n      swiper.wrapperEl.style['scroll-snap-type'] = 'none';\n    }\n    emit('scrollbarDragStart', e);\n  }\n  function onDragMove(e) {\n    const {\n      scrollbar,\n      wrapperEl\n    } = swiper;\n    const {\n      el,\n      dragEl\n    } = scrollbar;\n    if (!isTouched) return;\n    if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n    setDragPosition(e);\n    wrapperEl.style.transitionDuration = '0ms';\n    el.style.transitionDuration = '0ms';\n    dragEl.style.transitionDuration = '0ms';\n    emit('scrollbarDragMove', e);\n  }\n  function onDragEnd(e) {\n    const params = swiper.params.scrollbar;\n    const {\n      scrollbar,\n      wrapperEl\n    } = swiper;\n    const {\n      el\n    } = scrollbar;\n    if (!isTouched) return;\n    isTouched = false;\n    if (swiper.params.cssMode) {\n      swiper.wrapperEl.style['scroll-snap-type'] = '';\n      wrapperEl.style.transitionDuration = '';\n    }\n    if (params.hide) {\n      clearTimeout(dragTimeout);\n      dragTimeout = nextTick(() => {\n        el.style.opacity = 0;\n        el.style.transitionDuration = '400ms';\n      }, 1000);\n    }\n    emit('scrollbarDragEnd', e);\n    if (params.snapOnRelease) {\n      swiper.slideToClosest();\n    }\n  }\n  function events(method) {\n    const {\n      scrollbar,\n      params\n    } = swiper;\n    const el = scrollbar.el;\n    if (!el) return;\n    const target = el;\n    const activeListener = params.passiveListeners ? {\n      passive: false,\n      capture: false\n    } : false;\n    const passiveListener = params.passiveListeners ? {\n      passive: true,\n      capture: false\n    } : false;\n    if (!target) return;\n    const eventMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n    target[eventMethod]('pointerdown', onDragStart, activeListener);\n    document[eventMethod]('pointermove', onDragMove, activeListener);\n    document[eventMethod]('pointerup', onDragEnd, passiveListener);\n  }\n  function enableDraggable() {\n    if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n    events('on');\n  }\n  function disableDraggable() {\n    if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n    events('off');\n  }\n  function init() {\n    const {\n      scrollbar,\n      el: swiperEl\n    } = swiper;\n    swiper.params.scrollbar = createElementIfNotDefined(swiper, swiper.originalParams.scrollbar, swiper.params.scrollbar, {\n      el: 'swiper-scrollbar'\n    });\n    const params = swiper.params.scrollbar;\n    if (!params.el) return;\n    let el;\n    if (typeof params.el === 'string' && swiper.isElement) {\n      el = swiper.el.querySelector(params.el);\n    }\n    if (!el && typeof params.el === 'string') {\n      el = document.querySelectorAll(params.el);\n    } else if (!el) {\n      el = params.el;\n    }\n    if (swiper.params.uniqueNavElements && typeof params.el === 'string' && el.length > 1 && swiperEl.querySelectorAll(params.el).length === 1) {\n      el = swiperEl.querySelector(params.el);\n    }\n    if (el.length > 0) el = el[0];\n    el.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n    let dragEl;\n    if (el) {\n      dragEl = el.querySelector(`.${swiper.params.scrollbar.dragClass}`);\n      if (!dragEl) {\n        dragEl = createElement('div', swiper.params.scrollbar.dragClass);\n        el.append(dragEl);\n      }\n    }\n    Object.assign(scrollbar, {\n      el,\n      dragEl\n    });\n    if (params.draggable) {\n      enableDraggable();\n    }\n    if (el) {\n      el.classList[swiper.enabled ? 'remove' : 'add'](swiper.params.scrollbar.lockClass);\n    }\n  }\n  function destroy() {\n    const params = swiper.params.scrollbar;\n    const el = swiper.scrollbar.el;\n    if (el) {\n      el.classList.remove(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n    }\n    disableDraggable();\n  }\n  on('init', () => {\n    if (swiper.params.scrollbar.enabled === false) {\n      // eslint-disable-next-line\n      disable();\n    } else {\n      init();\n      updateSize();\n      setTranslate();\n    }\n  });\n  on('update resize observerUpdate lock unlock', () => {\n    updateSize();\n  });\n  on('setTranslate', () => {\n    setTranslate();\n  });\n  on('setTransition', (_s, duration) => {\n    setTransition(duration);\n  });\n  on('enable disable', () => {\n    const {\n      el\n    } = swiper.scrollbar;\n    if (el) {\n      el.classList[swiper.enabled ? 'remove' : 'add'](swiper.params.scrollbar.lockClass);\n    }\n  });\n  on('destroy', () => {\n    destroy();\n  });\n  const enable = () => {\n    swiper.el.classList.remove(swiper.params.scrollbar.scrollbarDisabledClass);\n    if (swiper.scrollbar.el) {\n      swiper.scrollbar.el.classList.remove(swiper.params.scrollbar.scrollbarDisabledClass);\n    }\n    init();\n    updateSize();\n    setTranslate();\n  };\n  const disable = () => {\n    swiper.el.classList.add(swiper.params.scrollbar.scrollbarDisabledClass);\n    if (swiper.scrollbar.el) {\n      swiper.scrollbar.el.classList.add(swiper.params.scrollbar.scrollbarDisabledClass);\n    }\n    destroy();\n  };\n  Object.assign(swiper.scrollbar, {\n    enable,\n    disable,\n    updateSize,\n    setTranslate,\n    init,\n    destroy\n  });\n}\n\nexport { Scrollbar as default };\n","import { e as elementChildren } from '../shared/utils.mjs';\n\nfunction Parallax(_ref) {\n  let {\n    swiper,\n    extendParams,\n    on\n  } = _ref;\n  extendParams({\n    parallax: {\n      enabled: false\n    }\n  });\n  const elementsSelector = '[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]';\n  const setTransform = (el, progress) => {\n    const {\n      rtl\n    } = swiper;\n    const rtlFactor = rtl ? -1 : 1;\n    const p = el.getAttribute('data-swiper-parallax') || '0';\n    let x = el.getAttribute('data-swiper-parallax-x');\n    let y = el.getAttribute('data-swiper-parallax-y');\n    const scale = el.getAttribute('data-swiper-parallax-scale');\n    const opacity = el.getAttribute('data-swiper-parallax-opacity');\n    const rotate = el.getAttribute('data-swiper-parallax-rotate');\n    if (x || y) {\n      x = x || '0';\n      y = y || '0';\n    } else if (swiper.isHorizontal()) {\n      x = p;\n      y = '0';\n    } else {\n      y = p;\n      x = '0';\n    }\n    if (x.indexOf('%') >= 0) {\n      x = `${parseInt(x, 10) * progress * rtlFactor}%`;\n    } else {\n      x = `${x * progress * rtlFactor}px`;\n    }\n    if (y.indexOf('%') >= 0) {\n      y = `${parseInt(y, 10) * progress}%`;\n    } else {\n      y = `${y * progress}px`;\n    }\n    if (typeof opacity !== 'undefined' && opacity !== null) {\n      const currentOpacity = opacity - (opacity - 1) * (1 - Math.abs(progress));\n      el.style.opacity = currentOpacity;\n    }\n    let transform = `translate3d(${x}, ${y}, 0px)`;\n    if (typeof scale !== 'undefined' && scale !== null) {\n      const currentScale = scale - (scale - 1) * (1 - Math.abs(progress));\n      transform += ` scale(${currentScale})`;\n    }\n    if (rotate && typeof rotate !== 'undefined' && rotate !== null) {\n      const currentRotate = rotate * progress * -1;\n      transform += ` rotate(${currentRotate}deg)`;\n    }\n    el.style.transform = transform;\n  };\n  const setTranslate = () => {\n    const {\n      el,\n      slides,\n      progress,\n      snapGrid,\n      isElement\n    } = swiper;\n    const elements = elementChildren(el, elementsSelector);\n    if (swiper.isElement) {\n      elements.push(...elementChildren(swiper.hostEl, elementsSelector));\n    }\n    elements.forEach(subEl => {\n      setTransform(subEl, progress);\n    });\n    slides.forEach((slideEl, slideIndex) => {\n      let slideProgress = slideEl.progress;\n      if (swiper.params.slidesPerGroup > 1 && swiper.params.slidesPerView !== 'auto') {\n        slideProgress += Math.ceil(slideIndex / 2) - progress * (snapGrid.length - 1);\n      }\n      slideProgress = Math.min(Math.max(slideProgress, -1), 1);\n      slideEl.querySelectorAll(`${elementsSelector}, [data-swiper-parallax-rotate]`).forEach(subEl => {\n        setTransform(subEl, slideProgress);\n      });\n    });\n  };\n  const setTransition = function (duration) {\n    if (duration === void 0) {\n      duration = swiper.params.speed;\n    }\n    const {\n      el,\n      hostEl\n    } = swiper;\n    const elements = [...el.querySelectorAll(elementsSelector)];\n    if (swiper.isElement) {\n      elements.push(...hostEl.querySelectorAll(elementsSelector));\n    }\n    elements.forEach(parallaxEl => {\n      let parallaxDuration = parseInt(parallaxEl.getAttribute('data-swiper-parallax-duration'), 10) || duration;\n      if (duration === 0) parallaxDuration = 0;\n      parallaxEl.style.transitionDuration = `${parallaxDuration}ms`;\n    });\n  };\n  on('beforeInit', () => {\n    if (!swiper.params.parallax.enabled) return;\n    swiper.params.watchSlidesProgress = true;\n    swiper.originalParams.watchSlidesProgress = true;\n  });\n  on('init', () => {\n    if (!swiper.params.parallax.enabled) return;\n    setTranslate();\n  });\n  on('setTranslate', () => {\n    if (!swiper.params.parallax.enabled) return;\n    setTranslate();\n  });\n  on('setTransition', (_swiper, duration) => {\n    if (!swiper.params.parallax.enabled) return;\n    setTransition(duration);\n  });\n}\n\nexport { Parallax as default };\n","import { a as getWindow } from '../shared/ssr-window.esm.mjs';\nimport { e as elementChildren, a as elementParents, b as elementOffset, h as getTranslate } from '../shared/utils.mjs';\n\nfunction Zoom(_ref) {\n  let {\n    swiper,\n    extendParams,\n    on,\n    emit\n  } = _ref;\n  const window = getWindow();\n  extendParams({\n    zoom: {\n      enabled: false,\n      maxRatio: 3,\n      minRatio: 1,\n      toggle: true,\n      containerClass: 'swiper-zoom-container',\n      zoomedSlideClass: 'swiper-slide-zoomed'\n    }\n  });\n  swiper.zoom = {\n    enabled: false\n  };\n  let currentScale = 1;\n  let isScaling = false;\n  let fakeGestureTouched;\n  let fakeGestureMoved;\n  const evCache = [];\n  const gesture = {\n    originX: 0,\n    originY: 0,\n    slideEl: undefined,\n    slideWidth: undefined,\n    slideHeight: undefined,\n    imageEl: undefined,\n    imageWrapEl: undefined,\n    maxRatio: 3\n  };\n  const image = {\n    isTouched: undefined,\n    isMoved: undefined,\n    currentX: undefined,\n    currentY: undefined,\n    minX: undefined,\n    minY: undefined,\n    maxX: undefined,\n    maxY: undefined,\n    width: undefined,\n    height: undefined,\n    startX: undefined,\n    startY: undefined,\n    touchesStart: {},\n    touchesCurrent: {}\n  };\n  const velocity = {\n    x: undefined,\n    y: undefined,\n    prevPositionX: undefined,\n    prevPositionY: undefined,\n    prevTime: undefined\n  };\n  let scale = 1;\n  Object.defineProperty(swiper.zoom, 'scale', {\n    get() {\n      return scale;\n    },\n    set(value) {\n      if (scale !== value) {\n        const imageEl = gesture.imageEl;\n        const slideEl = gesture.slideEl;\n        emit('zoomChange', value, imageEl, slideEl);\n      }\n      scale = value;\n    }\n  });\n  function getDistanceBetweenTouches() {\n    if (evCache.length < 2) return 1;\n    const x1 = evCache[0].pageX;\n    const y1 = evCache[0].pageY;\n    const x2 = evCache[1].pageX;\n    const y2 = evCache[1].pageY;\n    const distance = Math.sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2);\n    return distance;\n  }\n  function getScaleOrigin() {\n    if (evCache.length < 2) return {\n      x: null,\n      y: null\n    };\n    const box = gesture.imageEl.getBoundingClientRect();\n    return [(evCache[0].pageX + (evCache[1].pageX - evCache[0].pageX) / 2 - box.x) / currentScale, (evCache[0].pageY + (evCache[1].pageY - evCache[0].pageY) / 2 - box.y) / currentScale];\n  }\n  function getSlideSelector() {\n    return swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`;\n  }\n  function eventWithinSlide(e) {\n    const slideSelector = getSlideSelector();\n    if (e.target.matches(slideSelector)) return true;\n    if (swiper.slides.filter(slideEl => slideEl.contains(e.target)).length > 0) return true;\n    return false;\n  }\n  function eventWithinZoomContainer(e) {\n    const selector = `.${swiper.params.zoom.containerClass}`;\n    if (e.target.matches(selector)) return true;\n    if ([...swiper.hostEl.querySelectorAll(selector)].filter(containerEl => containerEl.contains(e.target)).length > 0) return true;\n    return false;\n  }\n\n  // Events\n  function onGestureStart(e) {\n    if (e.pointerType === 'mouse') {\n      evCache.splice(0, evCache.length);\n    }\n    if (!eventWithinSlide(e)) return;\n    const params = swiper.params.zoom;\n    fakeGestureTouched = false;\n    fakeGestureMoved = false;\n    evCache.push(e);\n    if (evCache.length < 2) {\n      return;\n    }\n    fakeGestureTouched = true;\n    gesture.scaleStart = getDistanceBetweenTouches();\n    if (!gesture.slideEl) {\n      gesture.slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`);\n      if (!gesture.slideEl) gesture.slideEl = swiper.slides[swiper.activeIndex];\n      let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`);\n      if (imageEl) {\n        imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0];\n      }\n      gesture.imageEl = imageEl;\n      if (imageEl) {\n        gesture.imageWrapEl = elementParents(gesture.imageEl, `.${params.containerClass}`)[0];\n      } else {\n        gesture.imageWrapEl = undefined;\n      }\n      if (!gesture.imageWrapEl) {\n        gesture.imageEl = undefined;\n        return;\n      }\n      gesture.maxRatio = gesture.imageWrapEl.getAttribute('data-swiper-zoom') || params.maxRatio;\n    }\n    if (gesture.imageEl) {\n      const [originX, originY] = getScaleOrigin();\n      gesture.originX = originX;\n      gesture.originY = originY;\n      gesture.imageEl.style.transitionDuration = '0ms';\n    }\n    isScaling = true;\n  }\n  function onGestureChange(e) {\n    if (!eventWithinSlide(e)) return;\n    const params = swiper.params.zoom;\n    const zoom = swiper.zoom;\n    const pointerIndex = evCache.findIndex(cachedEv => cachedEv.pointerId === e.pointerId);\n    if (pointerIndex >= 0) evCache[pointerIndex] = e;\n    if (evCache.length < 2) {\n      return;\n    }\n    fakeGestureMoved = true;\n    gesture.scaleMove = getDistanceBetweenTouches();\n    if (!gesture.imageEl) {\n      return;\n    }\n    zoom.scale = gesture.scaleMove / gesture.scaleStart * currentScale;\n    if (zoom.scale > gesture.maxRatio) {\n      zoom.scale = gesture.maxRatio - 1 + (zoom.scale - gesture.maxRatio + 1) ** 0.5;\n    }\n    if (zoom.scale < params.minRatio) {\n      zoom.scale = params.minRatio + 1 - (params.minRatio - zoom.scale + 1) ** 0.5;\n    }\n    gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`;\n  }\n  function onGestureEnd(e) {\n    if (!eventWithinSlide(e)) return;\n    if (e.pointerType === 'mouse' && e.type === 'pointerout') return;\n    const params = swiper.params.zoom;\n    const zoom = swiper.zoom;\n    const pointerIndex = evCache.findIndex(cachedEv => cachedEv.pointerId === e.pointerId);\n    if (pointerIndex >= 0) evCache.splice(pointerIndex, 1);\n    if (!fakeGestureTouched || !fakeGestureMoved) {\n      return;\n    }\n    fakeGestureTouched = false;\n    fakeGestureMoved = false;\n    if (!gesture.imageEl) return;\n    zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio);\n    gesture.imageEl.style.transitionDuration = `${swiper.params.speed}ms`;\n    gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`;\n    currentScale = zoom.scale;\n    isScaling = false;\n    if (zoom.scale > 1 && gesture.slideEl) {\n      gesture.slideEl.classList.add(`${params.zoomedSlideClass}`);\n    } else if (zoom.scale <= 1 && gesture.slideEl) {\n      gesture.slideEl.classList.remove(`${params.zoomedSlideClass}`);\n    }\n    if (zoom.scale === 1) {\n      gesture.originX = 0;\n      gesture.originY = 0;\n      gesture.slideEl = undefined;\n    }\n  }\n  function onTouchStart(e) {\n    const device = swiper.device;\n    if (!gesture.imageEl) return;\n    if (image.isTouched) return;\n    if (device.android && e.cancelable) e.preventDefault();\n    image.isTouched = true;\n    const event = evCache.length > 0 ? evCache[0] : e;\n    image.touchesStart.x = event.pageX;\n    image.touchesStart.y = event.pageY;\n  }\n  function onTouchMove(e) {\n    if (!eventWithinSlide(e) || !eventWithinZoomContainer(e)) return;\n    const zoom = swiper.zoom;\n    if (!gesture.imageEl) return;\n    if (!image.isTouched || !gesture.slideEl) return;\n    if (!image.isMoved) {\n      image.width = gesture.imageEl.offsetWidth;\n      image.height = gesture.imageEl.offsetHeight;\n      image.startX = getTranslate(gesture.imageWrapEl, 'x') || 0;\n      image.startY = getTranslate(gesture.imageWrapEl, 'y') || 0;\n      gesture.slideWidth = gesture.slideEl.offsetWidth;\n      gesture.slideHeight = gesture.slideEl.offsetHeight;\n      gesture.imageWrapEl.style.transitionDuration = '0ms';\n    }\n    // Define if we need image drag\n    const scaledWidth = image.width * zoom.scale;\n    const scaledHeight = image.height * zoom.scale;\n    if (scaledWidth < gesture.slideWidth && scaledHeight < gesture.slideHeight) return;\n    image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);\n    image.maxX = -image.minX;\n    image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);\n    image.maxY = -image.minY;\n    image.touchesCurrent.x = evCache.length > 0 ? evCache[0].pageX : e.pageX;\n    image.touchesCurrent.y = evCache.length > 0 ? evCache[0].pageY : e.pageY;\n    const touchesDiff = Math.max(Math.abs(image.touchesCurrent.x - image.touchesStart.x), Math.abs(image.touchesCurrent.y - image.touchesStart.y));\n    if (touchesDiff > 5) {\n      swiper.allowClick = false;\n    }\n    if (!image.isMoved && !isScaling) {\n      if (swiper.isHorizontal() && (Math.floor(image.minX) === Math.floor(image.startX) && image.touchesCurrent.x < image.touchesStart.x || Math.floor(image.maxX) === Math.floor(image.startX) && image.touchesCurrent.x > image.touchesStart.x)) {\n        image.isTouched = false;\n        return;\n      }\n      if (!swiper.isHorizontal() && (Math.floor(image.minY) === Math.floor(image.startY) && image.touchesCurrent.y < image.touchesStart.y || Math.floor(image.maxY) === Math.floor(image.startY) && image.touchesCurrent.y > image.touchesStart.y)) {\n        image.isTouched = false;\n        return;\n      }\n    }\n    if (e.cancelable) {\n      e.preventDefault();\n    }\n    e.stopPropagation();\n    image.isMoved = true;\n    const scaleRatio = (zoom.scale - currentScale) / (gesture.maxRatio - swiper.params.zoom.minRatio);\n    const {\n      originX,\n      originY\n    } = gesture;\n    image.currentX = image.touchesCurrent.x - image.touchesStart.x + image.startX + scaleRatio * (image.width - originX * 2);\n    image.currentY = image.touchesCurrent.y - image.touchesStart.y + image.startY + scaleRatio * (image.height - originY * 2);\n    if (image.currentX < image.minX) {\n      image.currentX = image.minX + 1 - (image.minX - image.currentX + 1) ** 0.8;\n    }\n    if (image.currentX > image.maxX) {\n      image.currentX = image.maxX - 1 + (image.currentX - image.maxX + 1) ** 0.8;\n    }\n    if (image.currentY < image.minY) {\n      image.currentY = image.minY + 1 - (image.minY - image.currentY + 1) ** 0.8;\n    }\n    if (image.currentY > image.maxY) {\n      image.currentY = image.maxY - 1 + (image.currentY - image.maxY + 1) ** 0.8;\n    }\n\n    // Velocity\n    if (!velocity.prevPositionX) velocity.prevPositionX = image.touchesCurrent.x;\n    if (!velocity.prevPositionY) velocity.prevPositionY = image.touchesCurrent.y;\n    if (!velocity.prevTime) velocity.prevTime = Date.now();\n    velocity.x = (image.touchesCurrent.x - velocity.prevPositionX) / (Date.now() - velocity.prevTime) / 2;\n    velocity.y = (image.touchesCurrent.y - velocity.prevPositionY) / (Date.now() - velocity.prevTime) / 2;\n    if (Math.abs(image.touchesCurrent.x - velocity.prevPositionX) < 2) velocity.x = 0;\n    if (Math.abs(image.touchesCurrent.y - velocity.prevPositionY) < 2) velocity.y = 0;\n    velocity.prevPositionX = image.touchesCurrent.x;\n    velocity.prevPositionY = image.touchesCurrent.y;\n    velocity.prevTime = Date.now();\n    gesture.imageWrapEl.style.transform = `translate3d(${image.currentX}px, ${image.currentY}px,0)`;\n  }\n  function onTouchEnd() {\n    const zoom = swiper.zoom;\n    if (!gesture.imageEl) return;\n    if (!image.isTouched || !image.isMoved) {\n      image.isTouched = false;\n      image.isMoved = false;\n      return;\n    }\n    image.isTouched = false;\n    image.isMoved = false;\n    let momentumDurationX = 300;\n    let momentumDurationY = 300;\n    const momentumDistanceX = velocity.x * momentumDurationX;\n    const newPositionX = image.currentX + momentumDistanceX;\n    const momentumDistanceY = velocity.y * momentumDurationY;\n    const newPositionY = image.currentY + momentumDistanceY;\n\n    // Fix duration\n    if (velocity.x !== 0) momentumDurationX = Math.abs((newPositionX - image.currentX) / velocity.x);\n    if (velocity.y !== 0) momentumDurationY = Math.abs((newPositionY - image.currentY) / velocity.y);\n    const momentumDuration = Math.max(momentumDurationX, momentumDurationY);\n    image.currentX = newPositionX;\n    image.currentY = newPositionY;\n    // Define if we need image drag\n    const scaledWidth = image.width * zoom.scale;\n    const scaledHeight = image.height * zoom.scale;\n    image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);\n    image.maxX = -image.minX;\n    image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);\n    image.maxY = -image.minY;\n    image.currentX = Math.max(Math.min(image.currentX, image.maxX), image.minX);\n    image.currentY = Math.max(Math.min(image.currentY, image.maxY), image.minY);\n    gesture.imageWrapEl.style.transitionDuration = `${momentumDuration}ms`;\n    gesture.imageWrapEl.style.transform = `translate3d(${image.currentX}px, ${image.currentY}px,0)`;\n  }\n  function onTransitionEnd() {\n    const zoom = swiper.zoom;\n    if (gesture.slideEl && swiper.activeIndex !== swiper.slides.indexOf(gesture.slideEl)) {\n      if (gesture.imageEl) {\n        gesture.imageEl.style.transform = 'translate3d(0,0,0) scale(1)';\n      }\n      if (gesture.imageWrapEl) {\n        gesture.imageWrapEl.style.transform = 'translate3d(0,0,0)';\n      }\n      gesture.slideEl.classList.remove(`${swiper.params.zoom.zoomedSlideClass}`);\n      zoom.scale = 1;\n      currentScale = 1;\n      gesture.slideEl = undefined;\n      gesture.imageEl = undefined;\n      gesture.imageWrapEl = undefined;\n      gesture.originX = 0;\n      gesture.originY = 0;\n    }\n  }\n  function zoomIn(e) {\n    const zoom = swiper.zoom;\n    const params = swiper.params.zoom;\n    if (!gesture.slideEl) {\n      if (e && e.target) {\n        gesture.slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`);\n      }\n      if (!gesture.slideEl) {\n        if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {\n          gesture.slideEl = elementChildren(swiper.slidesEl, `.${swiper.params.slideActiveClass}`)[0];\n        } else {\n          gesture.slideEl = swiper.slides[swiper.activeIndex];\n        }\n      }\n      let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`);\n      if (imageEl) {\n        imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0];\n      }\n      gesture.imageEl = imageEl;\n      if (imageEl) {\n        gesture.imageWrapEl = elementParents(gesture.imageEl, `.${params.containerClass}`)[0];\n      } else {\n        gesture.imageWrapEl = undefined;\n      }\n    }\n    if (!gesture.imageEl || !gesture.imageWrapEl) return;\n    if (swiper.params.cssMode) {\n      swiper.wrapperEl.style.overflow = 'hidden';\n      swiper.wrapperEl.style.touchAction = 'none';\n    }\n    gesture.slideEl.classList.add(`${params.zoomedSlideClass}`);\n    let touchX;\n    let touchY;\n    let offsetX;\n    let offsetY;\n    let diffX;\n    let diffY;\n    let translateX;\n    let translateY;\n    let imageWidth;\n    let imageHeight;\n    let scaledWidth;\n    let scaledHeight;\n    let translateMinX;\n    let translateMinY;\n    let translateMaxX;\n    let translateMaxY;\n    let slideWidth;\n    let slideHeight;\n    if (typeof image.touchesStart.x === 'undefined' && e) {\n      touchX = e.pageX;\n      touchY = e.pageY;\n    } else {\n      touchX = image.touchesStart.x;\n      touchY = image.touchesStart.y;\n    }\n    const forceZoomRatio = typeof e === 'number' ? e : null;\n    if (currentScale === 1 && forceZoomRatio) {\n      touchX = undefined;\n      touchY = undefined;\n    }\n    zoom.scale = forceZoomRatio || gesture.imageWrapEl.getAttribute('data-swiper-zoom') || params.maxRatio;\n    currentScale = forceZoomRatio || gesture.imageWrapEl.getAttribute('data-swiper-zoom') || params.maxRatio;\n    if (e && !(currentScale === 1 && forceZoomRatio)) {\n      slideWidth = gesture.slideEl.offsetWidth;\n      slideHeight = gesture.slideEl.offsetHeight;\n      offsetX = elementOffset(gesture.slideEl).left + window.scrollX;\n      offsetY = elementOffset(gesture.slideEl).top + window.scrollY;\n      diffX = offsetX + slideWidth / 2 - touchX;\n      diffY = offsetY + slideHeight / 2 - touchY;\n      imageWidth = gesture.imageEl.offsetWidth;\n      imageHeight = gesture.imageEl.offsetHeight;\n      scaledWidth = imageWidth * zoom.scale;\n      scaledHeight = imageHeight * zoom.scale;\n      translateMinX = Math.min(slideWidth / 2 - scaledWidth / 2, 0);\n      translateMinY = Math.min(slideHeight / 2 - scaledHeight / 2, 0);\n      translateMaxX = -translateMinX;\n      translateMaxY = -translateMinY;\n      translateX = diffX * zoom.scale;\n      translateY = diffY * zoom.scale;\n      if (translateX < translateMinX) {\n        translateX = translateMinX;\n      }\n      if (translateX > translateMaxX) {\n        translateX = translateMaxX;\n      }\n      if (translateY < translateMinY) {\n        translateY = translateMinY;\n      }\n      if (translateY > translateMaxY) {\n        translateY = translateMaxY;\n      }\n    } else {\n      translateX = 0;\n      translateY = 0;\n    }\n    if (forceZoomRatio && zoom.scale === 1) {\n      gesture.originX = 0;\n      gesture.originY = 0;\n    }\n    gesture.imageWrapEl.style.transitionDuration = '300ms';\n    gesture.imageWrapEl.style.transform = `translate3d(${translateX}px, ${translateY}px,0)`;\n    gesture.imageEl.style.transitionDuration = '300ms';\n    gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`;\n  }\n  function zoomOut() {\n    const zoom = swiper.zoom;\n    const params = swiper.params.zoom;\n    if (!gesture.slideEl) {\n      if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {\n        gesture.slideEl = elementChildren(swiper.slidesEl, `.${swiper.params.slideActiveClass}`)[0];\n      } else {\n        gesture.slideEl = swiper.slides[swiper.activeIndex];\n      }\n      let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`);\n      if (imageEl) {\n        imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0];\n      }\n      gesture.imageEl = imageEl;\n      if (imageEl) {\n        gesture.imageWrapEl = elementParents(gesture.imageEl, `.${params.containerClass}`)[0];\n      } else {\n        gesture.imageWrapEl = undefined;\n      }\n    }\n    if (!gesture.imageEl || !gesture.imageWrapEl) return;\n    if (swiper.params.cssMode) {\n      swiper.wrapperEl.style.overflow = '';\n      swiper.wrapperEl.style.touchAction = '';\n    }\n    zoom.scale = 1;\n    currentScale = 1;\n    gesture.imageWrapEl.style.transitionDuration = '300ms';\n    gesture.imageWrapEl.style.transform = 'translate3d(0,0,0)';\n    gesture.imageEl.style.transitionDuration = '300ms';\n    gesture.imageEl.style.transform = 'translate3d(0,0,0) scale(1)';\n    gesture.slideEl.classList.remove(`${params.zoomedSlideClass}`);\n    gesture.slideEl = undefined;\n    gesture.originX = 0;\n    gesture.originY = 0;\n  }\n\n  // Toggle Zoom\n  function zoomToggle(e) {\n    const zoom = swiper.zoom;\n    if (zoom.scale && zoom.scale !== 1) {\n      // Zoom Out\n      zoomOut();\n    } else {\n      // Zoom In\n      zoomIn(e);\n    }\n  }\n  function getListeners() {\n    const passiveListener = swiper.params.passiveListeners ? {\n      passive: true,\n      capture: false\n    } : false;\n    const activeListenerWithCapture = swiper.params.passiveListeners ? {\n      passive: false,\n      capture: true\n    } : true;\n    return {\n      passiveListener,\n      activeListenerWithCapture\n    };\n  }\n\n  // Attach/Detach Events\n  function enable() {\n    const zoom = swiper.zoom;\n    if (zoom.enabled) return;\n    zoom.enabled = true;\n    const {\n      passiveListener,\n      activeListenerWithCapture\n    } = getListeners();\n\n    // Scale image\n    swiper.wrapperEl.addEventListener('pointerdown', onGestureStart, passiveListener);\n    swiper.wrapperEl.addEventListener('pointermove', onGestureChange, activeListenerWithCapture);\n    ['pointerup', 'pointercancel', 'pointerout'].forEach(eventName => {\n      swiper.wrapperEl.addEventListener(eventName, onGestureEnd, passiveListener);\n    });\n\n    // Move image\n    swiper.wrapperEl.addEventListener('pointermove', onTouchMove, activeListenerWithCapture);\n  }\n  function disable() {\n    const zoom = swiper.zoom;\n    if (!zoom.enabled) return;\n    zoom.enabled = false;\n    const {\n      passiveListener,\n      activeListenerWithCapture\n    } = getListeners();\n\n    // Scale image\n    swiper.wrapperEl.removeEventListener('pointerdown', onGestureStart, passiveListener);\n    swiper.wrapperEl.removeEventListener('pointermove', onGestureChange, activeListenerWithCapture);\n    ['pointerup', 'pointercancel', 'pointerout'].forEach(eventName => {\n      swiper.wrapperEl.removeEventListener(eventName, onGestureEnd, passiveListener);\n    });\n\n    // Move image\n    swiper.wrapperEl.removeEventListener('pointermove', onTouchMove, activeListenerWithCapture);\n  }\n  on('init', () => {\n    if (swiper.params.zoom.enabled) {\n      enable();\n    }\n  });\n  on('destroy', () => {\n    disable();\n  });\n  on('touchStart', (_s, e) => {\n    if (!swiper.zoom.enabled) return;\n    onTouchStart(e);\n  });\n  on('touchEnd', (_s, e) => {\n    if (!swiper.zoom.enabled) return;\n    onTouchEnd();\n  });\n  on('doubleTap', (_s, e) => {\n    if (!swiper.animating && swiper.params.zoom.enabled && swiper.zoom.enabled && swiper.params.zoom.toggle) {\n      zoomToggle(e);\n    }\n  });\n  on('transitionEnd', () => {\n    if (swiper.zoom.enabled && swiper.params.zoom.enabled) {\n      onTransitionEnd();\n    }\n  });\n  on('slideChange', () => {\n    if (swiper.zoom.enabled && swiper.params.zoom.enabled && swiper.params.cssMode) {\n      onTransitionEnd();\n    }\n  });\n  Object.assign(swiper.zoom, {\n    enable,\n    disable,\n    in: zoomIn,\n    out: zoomOut,\n    toggle: zoomToggle\n  });\n}\n\nexport { Zoom as default };\n","import { n as nextTick, i as elementTransitionEnd } from '../shared/utils.mjs';\n\n/* eslint no-bitwise: [\"error\", { \"allow\": [\">>\"] }] */\nfunction Controller(_ref) {\n  let {\n    swiper,\n    extendParams,\n    on\n  } = _ref;\n  extendParams({\n    controller: {\n      control: undefined,\n      inverse: false,\n      by: 'slide' // or 'container'\n    }\n  });\n\n  swiper.controller = {\n    control: undefined\n  };\n  function LinearSpline(x, y) {\n    const binarySearch = function search() {\n      let maxIndex;\n      let minIndex;\n      let guess;\n      return (array, val) => {\n        minIndex = -1;\n        maxIndex = array.length;\n        while (maxIndex - minIndex > 1) {\n          guess = maxIndex + minIndex >> 1;\n          if (array[guess] <= val) {\n            minIndex = guess;\n          } else {\n            maxIndex = guess;\n          }\n        }\n        return maxIndex;\n      };\n    }();\n    this.x = x;\n    this.y = y;\n    this.lastIndex = x.length - 1;\n    // Given an x value (x2), return the expected y2 value:\n    // (x1,y1) is the known point before given value,\n    // (x3,y3) is the known point after given value.\n    let i1;\n    let i3;\n    this.interpolate = function interpolate(x2) {\n      if (!x2) return 0;\n\n      // Get the indexes of x1 and x3 (the array indexes before and after given x2):\n      i3 = binarySearch(this.x, x2);\n      i1 = i3 - 1;\n\n      // We have our indexes i1 & i3, so we can calculate already:\n      // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1\n      return (x2 - this.x[i1]) * (this.y[i3] - this.y[i1]) / (this.x[i3] - this.x[i1]) + this.y[i1];\n    };\n    return this;\n  }\n  function getInterpolateFunction(c) {\n    swiper.controller.spline = swiper.params.loop ? new LinearSpline(swiper.slidesGrid, c.slidesGrid) : new LinearSpline(swiper.snapGrid, c.snapGrid);\n  }\n  function setTranslate(_t, byController) {\n    const controlled = swiper.controller.control;\n    let multiplier;\n    let controlledTranslate;\n    const Swiper = swiper.constructor;\n    function setControlledTranslate(c) {\n      if (c.destroyed) return;\n\n      // this will create an Interpolate function based on the snapGrids\n      // x is the Grid of the scrolled scroller and y will be the controlled scroller\n      // it makes sense to create this only once and recall it for the interpolation\n      // the function does a lot of value caching for performance\n      const translate = swiper.rtlTranslate ? -swiper.translate : swiper.translate;\n      if (swiper.params.controller.by === 'slide') {\n        getInterpolateFunction(c);\n        // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid\n        // but it did not work out\n        controlledTranslate = -swiper.controller.spline.interpolate(-translate);\n      }\n      if (!controlledTranslate || swiper.params.controller.by === 'container') {\n        multiplier = (c.maxTranslate() - c.minTranslate()) / (swiper.maxTranslate() - swiper.minTranslate());\n        if (Number.isNaN(multiplier) || !Number.isFinite(multiplier)) {\n          multiplier = 1;\n        }\n        controlledTranslate = (translate - swiper.minTranslate()) * multiplier + c.minTranslate();\n      }\n      if (swiper.params.controller.inverse) {\n        controlledTranslate = c.maxTranslate() - controlledTranslate;\n      }\n      c.updateProgress(controlledTranslate);\n      c.setTranslate(controlledTranslate, swiper);\n      c.updateActiveIndex();\n      c.updateSlidesClasses();\n    }\n    if (Array.isArray(controlled)) {\n      for (let i = 0; i < controlled.length; i += 1) {\n        if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n          setControlledTranslate(controlled[i]);\n        }\n      }\n    } else if (controlled instanceof Swiper && byController !== controlled) {\n      setControlledTranslate(controlled);\n    }\n  }\n  function setTransition(duration, byController) {\n    const Swiper = swiper.constructor;\n    const controlled = swiper.controller.control;\n    let i;\n    function setControlledTransition(c) {\n      if (c.destroyed) return;\n      c.setTransition(duration, swiper);\n      if (duration !== 0) {\n        c.transitionStart();\n        if (c.params.autoHeight) {\n          nextTick(() => {\n            c.updateAutoHeight();\n          });\n        }\n        elementTransitionEnd(c.wrapperEl, () => {\n          if (!controlled) return;\n          c.transitionEnd();\n        });\n      }\n    }\n    if (Array.isArray(controlled)) {\n      for (i = 0; i < controlled.length; i += 1) {\n        if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n          setControlledTransition(controlled[i]);\n        }\n      }\n    } else if (controlled instanceof Swiper && byController !== controlled) {\n      setControlledTransition(controlled);\n    }\n  }\n  function removeSpline() {\n    if (!swiper.controller.control) return;\n    if (swiper.controller.spline) {\n      swiper.controller.spline = undefined;\n      delete swiper.controller.spline;\n    }\n  }\n  on('beforeInit', () => {\n    if (typeof window !== 'undefined' && (\n    // eslint-disable-line\n    typeof swiper.params.controller.control === 'string' || swiper.params.controller.control instanceof HTMLElement)) {\n      const controlElement = document.querySelector(swiper.params.controller.control);\n      if (controlElement && controlElement.swiper) {\n        swiper.controller.control = controlElement.swiper;\n      } else if (controlElement) {\n        const onControllerSwiper = e => {\n          swiper.controller.control = e.detail[0];\n          swiper.update();\n          controlElement.removeEventListener('init', onControllerSwiper);\n        };\n        controlElement.addEventListener('init', onControllerSwiper);\n      }\n      return;\n    }\n    swiper.controller.control = swiper.params.controller.control;\n  });\n  on('update', () => {\n    removeSpline();\n  });\n  on('resize', () => {\n    removeSpline();\n  });\n  on('observerUpdate', () => {\n    removeSpline();\n  });\n  on('setTranslate', (_s, translate, byController) => {\n    if (!swiper.controller.control || swiper.controller.control.destroyed) return;\n    swiper.controller.setTranslate(translate, byController);\n  });\n  on('setTransition', (_s, duration, byController) => {\n    if (!swiper.controller.control || swiper.controller.control.destroyed) return;\n    swiper.controller.setTransition(duration, byController);\n  });\n  Object.assign(swiper.controller, {\n    setTranslate,\n    setTransition\n  });\n}\n\nexport { Controller as default };\n","import { c as classesToSelector } from '../shared/classes-to-selector.mjs';\nimport { c as createElement, g as elementIndex } from '../shared/utils.mjs';\n\nfunction A11y(_ref) {\n  let {\n    swiper,\n    extendParams,\n    on\n  } = _ref;\n  extendParams({\n    a11y: {\n      enabled: true,\n      notificationClass: 'swiper-notification',\n      prevSlideMessage: 'Previous slide',\n      nextSlideMessage: 'Next slide',\n      firstSlideMessage: 'This is the first slide',\n      lastSlideMessage: 'This is the last slide',\n      paginationBulletMessage: 'Go to slide {{index}}',\n      slideLabelMessage: '{{index}} / {{slidesLength}}',\n      containerMessage: null,\n      containerRoleDescriptionMessage: null,\n      itemRoleDescriptionMessage: null,\n      slideRole: 'group',\n      id: null\n    }\n  });\n  swiper.a11y = {\n    clicked: false\n  };\n  let liveRegion = null;\n  function notify(message) {\n    const notification = liveRegion;\n    if (notification.length === 0) return;\n    notification.innerHTML = '';\n    notification.innerHTML = message;\n  }\n  const makeElementsArray = el => (Array.isArray(el) ? el : [el]).filter(e => !!e);\n  function getRandomNumber(size) {\n    if (size === void 0) {\n      size = 16;\n    }\n    const randomChar = () => Math.round(16 * Math.random()).toString(16);\n    return 'x'.repeat(size).replace(/x/g, randomChar);\n  }\n  function makeElFocusable(el) {\n    el = makeElementsArray(el);\n    el.forEach(subEl => {\n      subEl.setAttribute('tabIndex', '0');\n    });\n  }\n  function makeElNotFocusable(el) {\n    el = makeElementsArray(el);\n    el.forEach(subEl => {\n      subEl.setAttribute('tabIndex', '-1');\n    });\n  }\n  function addElRole(el, role) {\n    el = makeElementsArray(el);\n    el.forEach(subEl => {\n      subEl.setAttribute('role', role);\n    });\n  }\n  function addElRoleDescription(el, description) {\n    el = makeElementsArray(el);\n    el.forEach(subEl => {\n      subEl.setAttribute('aria-roledescription', description);\n    });\n  }\n  function addElControls(el, controls) {\n    el = makeElementsArray(el);\n    el.forEach(subEl => {\n      subEl.setAttribute('aria-controls', controls);\n    });\n  }\n  function addElLabel(el, label) {\n    el = makeElementsArray(el);\n    el.forEach(subEl => {\n      subEl.setAttribute('aria-label', label);\n    });\n  }\n  function addElId(el, id) {\n    el = makeElementsArray(el);\n    el.forEach(subEl => {\n      subEl.setAttribute('id', id);\n    });\n  }\n  function addElLive(el, live) {\n    el = makeElementsArray(el);\n    el.forEach(subEl => {\n      subEl.setAttribute('aria-live', live);\n    });\n  }\n  function disableEl(el) {\n    el = makeElementsArray(el);\n    el.forEach(subEl => {\n      subEl.setAttribute('aria-disabled', true);\n    });\n  }\n  function enableEl(el) {\n    el = makeElementsArray(el);\n    el.forEach(subEl => {\n      subEl.setAttribute('aria-disabled', false);\n    });\n  }\n  function onEnterOrSpaceKey(e) {\n    if (e.keyCode !== 13 && e.keyCode !== 32) return;\n    const params = swiper.params.a11y;\n    const targetEl = e.target;\n    if (swiper.pagination && swiper.pagination.el && (targetEl === swiper.pagination.el || swiper.pagination.el.contains(e.target))) {\n      if (!e.target.matches(classesToSelector(swiper.params.pagination.bulletClass))) return;\n    }\n    if (swiper.navigation && swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl) {\n      if (!(swiper.isEnd && !swiper.params.loop)) {\n        swiper.slideNext();\n      }\n      if (swiper.isEnd) {\n        notify(params.lastSlideMessage);\n      } else {\n        notify(params.nextSlideMessage);\n      }\n    }\n    if (swiper.navigation && swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl) {\n      if (!(swiper.isBeginning && !swiper.params.loop)) {\n        swiper.slidePrev();\n      }\n      if (swiper.isBeginning) {\n        notify(params.firstSlideMessage);\n      } else {\n        notify(params.prevSlideMessage);\n      }\n    }\n    if (swiper.pagination && targetEl.matches(classesToSelector(swiper.params.pagination.bulletClass))) {\n      targetEl.click();\n    }\n  }\n  function updateNavigation() {\n    if (swiper.params.loop || swiper.params.rewind || !swiper.navigation) return;\n    const {\n      nextEl,\n      prevEl\n    } = swiper.navigation;\n    if (prevEl) {\n      if (swiper.isBeginning) {\n        disableEl(prevEl);\n        makeElNotFocusable(prevEl);\n      } else {\n        enableEl(prevEl);\n        makeElFocusable(prevEl);\n      }\n    }\n    if (nextEl) {\n      if (swiper.isEnd) {\n        disableEl(nextEl);\n        makeElNotFocusable(nextEl);\n      } else {\n        enableEl(nextEl);\n        makeElFocusable(nextEl);\n      }\n    }\n  }\n  function hasPagination() {\n    return swiper.pagination && swiper.pagination.bullets && swiper.pagination.bullets.length;\n  }\n  function hasClickablePagination() {\n    return hasPagination() && swiper.params.pagination.clickable;\n  }\n  function updatePagination() {\n    const params = swiper.params.a11y;\n    if (!hasPagination()) return;\n    swiper.pagination.bullets.forEach(bulletEl => {\n      if (swiper.params.pagination.clickable) {\n        makeElFocusable(bulletEl);\n        if (!swiper.params.pagination.renderBullet) {\n          addElRole(bulletEl, 'button');\n          addElLabel(bulletEl, params.paginationBulletMessage.replace(/\\{\\{index\\}\\}/, elementIndex(bulletEl) + 1));\n        }\n      }\n      if (bulletEl.matches(classesToSelector(swiper.params.pagination.bulletActiveClass))) {\n        bulletEl.setAttribute('aria-current', 'true');\n      } else {\n        bulletEl.removeAttribute('aria-current');\n      }\n    });\n  }\n  const initNavEl = (el, wrapperId, message) => {\n    makeElFocusable(el);\n    if (el.tagName !== 'BUTTON') {\n      addElRole(el, 'button');\n      el.addEventListener('keydown', onEnterOrSpaceKey);\n    }\n    addElLabel(el, message);\n    addElControls(el, wrapperId);\n  };\n  const handlePointerDown = () => {\n    swiper.a11y.clicked = true;\n  };\n  const handlePointerUp = () => {\n    requestAnimationFrame(() => {\n      requestAnimationFrame(() => {\n        if (!swiper.destroyed) {\n          swiper.a11y.clicked = false;\n        }\n      });\n    });\n  };\n  const handleFocus = e => {\n    if (swiper.a11y.clicked) return;\n    const slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`);\n    if (!slideEl || !swiper.slides.includes(slideEl)) return;\n    const isActive = swiper.slides.indexOf(slideEl) === swiper.activeIndex;\n    const isVisible = swiper.params.watchSlidesProgress && swiper.visibleSlides && swiper.visibleSlides.includes(slideEl);\n    if (isActive || isVisible) return;\n    if (e.sourceCapabilities && e.sourceCapabilities.firesTouchEvents) return;\n    if (swiper.isHorizontal()) {\n      swiper.el.scrollLeft = 0;\n    } else {\n      swiper.el.scrollTop = 0;\n    }\n    swiper.slideTo(swiper.slides.indexOf(slideEl), 0);\n  };\n  const initSlides = () => {\n    const params = swiper.params.a11y;\n    if (params.itemRoleDescriptionMessage) {\n      addElRoleDescription(swiper.slides, params.itemRoleDescriptionMessage);\n    }\n    if (params.slideRole) {\n      addElRole(swiper.slides, params.slideRole);\n    }\n    const slidesLength = swiper.slides.length;\n    if (params.slideLabelMessage) {\n      swiper.slides.forEach((slideEl, index) => {\n        const slideIndex = swiper.params.loop ? parseInt(slideEl.getAttribute('data-swiper-slide-index'), 10) : index;\n        const ariaLabelMessage = params.slideLabelMessage.replace(/\\{\\{index\\}\\}/, slideIndex + 1).replace(/\\{\\{slidesLength\\}\\}/, slidesLength);\n        addElLabel(slideEl, ariaLabelMessage);\n      });\n    }\n  };\n  const init = () => {\n    const params = swiper.params.a11y;\n    swiper.el.append(liveRegion);\n\n    // Container\n    const containerEl = swiper.el;\n    if (params.containerRoleDescriptionMessage) {\n      addElRoleDescription(containerEl, params.containerRoleDescriptionMessage);\n    }\n    if (params.containerMessage) {\n      addElLabel(containerEl, params.containerMessage);\n    }\n\n    // Wrapper\n    const wrapperEl = swiper.wrapperEl;\n    const wrapperId = params.id || wrapperEl.getAttribute('id') || `swiper-wrapper-${getRandomNumber(16)}`;\n    const live = swiper.params.autoplay && swiper.params.autoplay.enabled ? 'off' : 'polite';\n    addElId(wrapperEl, wrapperId);\n    addElLive(wrapperEl, live);\n\n    // Slide\n    initSlides();\n\n    // Navigation\n    let {\n      nextEl,\n      prevEl\n    } = swiper.navigation ? swiper.navigation : {};\n    nextEl = makeElementsArray(nextEl);\n    prevEl = makeElementsArray(prevEl);\n    if (nextEl) {\n      nextEl.forEach(el => initNavEl(el, wrapperId, params.nextSlideMessage));\n    }\n    if (prevEl) {\n      prevEl.forEach(el => initNavEl(el, wrapperId, params.prevSlideMessage));\n    }\n\n    // Pagination\n    if (hasClickablePagination()) {\n      const paginationEl = Array.isArray(swiper.pagination.el) ? swiper.pagination.el : [swiper.pagination.el];\n      paginationEl.forEach(el => {\n        el.addEventListener('keydown', onEnterOrSpaceKey);\n      });\n    }\n\n    // Tab focus\n    swiper.el.addEventListener('focus', handleFocus, true);\n    swiper.el.addEventListener('pointerdown', handlePointerDown, true);\n    swiper.el.addEventListener('pointerup', handlePointerUp, true);\n  };\n  function destroy() {\n    if (liveRegion) liveRegion.remove();\n    let {\n      nextEl,\n      prevEl\n    } = swiper.navigation ? swiper.navigation : {};\n    nextEl = makeElementsArray(nextEl);\n    prevEl = makeElementsArray(prevEl);\n    if (nextEl) {\n      nextEl.forEach(el => el.removeEventListener('keydown', onEnterOrSpaceKey));\n    }\n    if (prevEl) {\n      prevEl.forEach(el => el.removeEventListener('keydown', onEnterOrSpaceKey));\n    }\n\n    // Pagination\n    if (hasClickablePagination()) {\n      const paginationEl = Array.isArray(swiper.pagination.el) ? swiper.pagination.el : [swiper.pagination.el];\n      paginationEl.forEach(el => {\n        el.removeEventListener('keydown', onEnterOrSpaceKey);\n      });\n    }\n\n    // Tab focus\n    swiper.el.removeEventListener('focus', handleFocus, true);\n    swiper.el.removeEventListener('pointerdown', handlePointerDown, true);\n    swiper.el.removeEventListener('pointerup', handlePointerUp, true);\n  }\n  on('beforeInit', () => {\n    liveRegion = createElement('span', swiper.params.a11y.notificationClass);\n    liveRegion.setAttribute('aria-live', 'assertive');\n    liveRegion.setAttribute('aria-atomic', 'true');\n  });\n  on('afterInit', () => {\n    if (!swiper.params.a11y.enabled) return;\n    init();\n  });\n  on('slidesLengthChange snapGridLengthChange slidesGridLengthChange', () => {\n    if (!swiper.params.a11y.enabled) return;\n    initSlides();\n  });\n  on('fromEdge toEdge afterInit lock unlock', () => {\n    if (!swiper.params.a11y.enabled) return;\n    updateNavigation();\n  });\n  on('paginationUpdate', () => {\n    if (!swiper.params.a11y.enabled) return;\n    updatePagination();\n  });\n  on('destroy', () => {\n    if (!swiper.params.a11y.enabled) return;\n    destroy();\n  });\n}\n\nexport { A11y as default };\n","import { a as getWindow } from '../shared/ssr-window.esm.mjs';\n\nfunction History(_ref) {\n  let {\n    swiper,\n    extendParams,\n    on\n  } = _ref;\n  extendParams({\n    history: {\n      enabled: false,\n      root: '',\n      replaceState: false,\n      key: 'slides',\n      keepQuery: false\n    }\n  });\n  let initialized = false;\n  let paths = {};\n  const slugify = text => {\n    return text.toString().replace(/\\s+/g, '-').replace(/[^\\w-]+/g, '').replace(/--+/g, '-').replace(/^-+/, '').replace(/-+$/, '');\n  };\n  const getPathValues = urlOverride => {\n    const window = getWindow();\n    let location;\n    if (urlOverride) {\n      location = new URL(urlOverride);\n    } else {\n      location = window.location;\n    }\n    const pathArray = location.pathname.slice(1).split('/').filter(part => part !== '');\n    const total = pathArray.length;\n    const key = pathArray[total - 2];\n    const value = pathArray[total - 1];\n    return {\n      key,\n      value\n    };\n  };\n  const setHistory = (key, index) => {\n    const window = getWindow();\n    if (!initialized || !swiper.params.history.enabled) return;\n    let location;\n    if (swiper.params.url) {\n      location = new URL(swiper.params.url);\n    } else {\n      location = window.location;\n    }\n    const slide = swiper.slides[index];\n    let value = slugify(slide.getAttribute('data-history'));\n    if (swiper.params.history.root.length > 0) {\n      let root = swiper.params.history.root;\n      if (root[root.length - 1] === '/') root = root.slice(0, root.length - 1);\n      value = `${root}/${key ? `${key}/` : ''}${value}`;\n    } else if (!location.pathname.includes(key)) {\n      value = `${key ? `${key}/` : ''}${value}`;\n    }\n    if (swiper.params.history.keepQuery) {\n      value += location.search;\n    }\n    const currentState = window.history.state;\n    if (currentState && currentState.value === value) {\n      return;\n    }\n    if (swiper.params.history.replaceState) {\n      window.history.replaceState({\n        value\n      }, null, value);\n    } else {\n      window.history.pushState({\n        value\n      }, null, value);\n    }\n  };\n  const scrollToSlide = (speed, value, runCallbacks) => {\n    if (value) {\n      for (let i = 0, length = swiper.slides.length; i < length; i += 1) {\n        const slide = swiper.slides[i];\n        const slideHistory = slugify(slide.getAttribute('data-history'));\n        if (slideHistory === value) {\n          const index = swiper.getSlideIndex(slide);\n          swiper.slideTo(index, speed, runCallbacks);\n        }\n      }\n    } else {\n      swiper.slideTo(0, speed, runCallbacks);\n    }\n  };\n  const setHistoryPopState = () => {\n    paths = getPathValues(swiper.params.url);\n    scrollToSlide(swiper.params.speed, paths.value, false);\n  };\n  const init = () => {\n    const window = getWindow();\n    if (!swiper.params.history) return;\n    if (!window.history || !window.history.pushState) {\n      swiper.params.history.enabled = false;\n      swiper.params.hashNavigation.enabled = true;\n      return;\n    }\n    initialized = true;\n    paths = getPathValues(swiper.params.url);\n    if (!paths.key && !paths.value) {\n      if (!swiper.params.history.replaceState) {\n        window.addEventListener('popstate', setHistoryPopState);\n      }\n      return;\n    }\n    scrollToSlide(0, paths.value, swiper.params.runCallbacksOnInit);\n    if (!swiper.params.history.replaceState) {\n      window.addEventListener('popstate', setHistoryPopState);\n    }\n  };\n  const destroy = () => {\n    const window = getWindow();\n    if (!swiper.params.history.replaceState) {\n      window.removeEventListener('popstate', setHistoryPopState);\n    }\n  };\n  on('init', () => {\n    if (swiper.params.history.enabled) {\n      init();\n    }\n  });\n  on('destroy', () => {\n    if (swiper.params.history.enabled) {\n      destroy();\n    }\n  });\n  on('transitionEnd _freeModeNoMomentumRelease', () => {\n    if (initialized) {\n      setHistory(swiper.params.history.key, swiper.activeIndex);\n    }\n  });\n  on('slideChange', () => {\n    if (initialized && swiper.params.cssMode) {\n      setHistory(swiper.params.history.key, swiper.activeIndex);\n    }\n  });\n}\n\nexport { History as default };\n","import { g as getDocument, a as getWindow } from '../shared/ssr-window.esm.mjs';\nimport { e as elementChildren } from '../shared/utils.mjs';\n\nfunction HashNavigation(_ref) {\n  let {\n    swiper,\n    extendParams,\n    emit,\n    on\n  } = _ref;\n  let initialized = false;\n  const document = getDocument();\n  const window = getWindow();\n  extendParams({\n    hashNavigation: {\n      enabled: false,\n      replaceState: false,\n      watchState: false,\n      getSlideIndex(_s, hash) {\n        if (swiper.virtual && swiper.params.virtual.enabled) {\n          const slideWithHash = swiper.slides.filter(slideEl => slideEl.getAttribute('data-hash') === hash)[0];\n          if (!slideWithHash) return 0;\n          const index = parseInt(slideWithHash.getAttribute('data-swiper-slide-index'), 10);\n          return index;\n        }\n        return swiper.getSlideIndex(elementChildren(swiper.slidesEl, `.${swiper.params.slideClass}[data-hash=\"${hash}\"], swiper-slide[data-hash=\"${hash}\"]`)[0]);\n      }\n    }\n  });\n  const onHashChange = () => {\n    emit('hashChange');\n    const newHash = document.location.hash.replace('#', '');\n    const activeSlideEl = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index=\"${swiper.activeIndex}\"]`) : swiper.slides[swiper.activeIndex];\n    const activeSlideHash = activeSlideEl ? activeSlideEl.getAttribute('data-hash') : '';\n    if (newHash !== activeSlideHash) {\n      const newIndex = swiper.params.hashNavigation.getSlideIndex(swiper, newHash);\n      if (typeof newIndex === 'undefined' || Number.isNaN(newIndex)) return;\n      swiper.slideTo(newIndex);\n    }\n  };\n  const setHash = () => {\n    if (!initialized || !swiper.params.hashNavigation.enabled) return;\n    const activeSlideEl = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index=\"${swiper.activeIndex}\"]`) : swiper.slides[swiper.activeIndex];\n    const activeSlideHash = activeSlideEl ? activeSlideEl.getAttribute('data-hash') || activeSlideEl.getAttribute('data-history') : '';\n    if (swiper.params.hashNavigation.replaceState && window.history && window.history.replaceState) {\n      window.history.replaceState(null, null, `#${activeSlideHash}` || '');\n      emit('hashSet');\n    } else {\n      document.location.hash = activeSlideHash || '';\n      emit('hashSet');\n    }\n  };\n  const init = () => {\n    if (!swiper.params.hashNavigation.enabled || swiper.params.history && swiper.params.history.enabled) return;\n    initialized = true;\n    const hash = document.location.hash.replace('#', '');\n    if (hash) {\n      const speed = 0;\n      const index = swiper.params.hashNavigation.getSlideIndex(swiper, hash);\n      swiper.slideTo(index || 0, speed, swiper.params.runCallbacksOnInit, true);\n    }\n    if (swiper.params.hashNavigation.watchState) {\n      window.addEventListener('hashchange', onHashChange);\n    }\n  };\n  const destroy = () => {\n    if (swiper.params.hashNavigation.watchState) {\n      window.removeEventListener('hashchange', onHashChange);\n    }\n  };\n  on('init', () => {\n    if (swiper.params.hashNavigation.enabled) {\n      init();\n    }\n  });\n  on('destroy', () => {\n    if (swiper.params.hashNavigation.enabled) {\n      destroy();\n    }\n  });\n  on('transitionEnd _freeModeNoMomentumRelease', () => {\n    if (initialized) {\n      setHash();\n    }\n  });\n  on('slideChange', () => {\n    if (initialized && swiper.params.cssMode) {\n      setHash();\n    }\n  });\n}\n\nexport { HashNavigation as default };\n","import { g as getDocument } from '../shared/ssr-window.esm.mjs';\n\n/* eslint no-underscore-dangle: \"off\" */\n/* eslint no-use-before-define: \"off\" */\nfunction Autoplay(_ref) {\n  let {\n    swiper,\n    extendParams,\n    on,\n    emit,\n    params\n  } = _ref;\n  swiper.autoplay = {\n    running: false,\n    paused: false,\n    timeLeft: 0\n  };\n  extendParams({\n    autoplay: {\n      enabled: false,\n      delay: 3000,\n      waitForTransition: true,\n      disableOnInteraction: true,\n      stopOnLastSlide: false,\n      reverseDirection: false,\n      pauseOnMouseEnter: false\n    }\n  });\n  let timeout;\n  let raf;\n  let autoplayDelayTotal = params && params.autoplay ? params.autoplay.delay : 3000;\n  let autoplayDelayCurrent = params && params.autoplay ? params.autoplay.delay : 3000;\n  let autoplayTimeLeft;\n  let autoplayStartTime = new Date().getTime;\n  let wasPaused;\n  let isTouched;\n  let pausedByTouch;\n  let touchStartTimeout;\n  let slideChanged;\n  let pausedByInteraction;\n  function onTransitionEnd(e) {\n    if (!swiper || swiper.destroyed || !swiper.wrapperEl) return;\n    if (e.target !== swiper.wrapperEl) return;\n    swiper.wrapperEl.removeEventListener('transitionend', onTransitionEnd);\n    resume();\n  }\n  const calcTimeLeft = () => {\n    if (swiper.destroyed || !swiper.autoplay.running) return;\n    if (swiper.autoplay.paused) {\n      wasPaused = true;\n    } else if (wasPaused) {\n      autoplayDelayCurrent = autoplayTimeLeft;\n      wasPaused = false;\n    }\n    const timeLeft = swiper.autoplay.paused ? autoplayTimeLeft : autoplayStartTime + autoplayDelayCurrent - new Date().getTime();\n    swiper.autoplay.timeLeft = timeLeft;\n    emit('autoplayTimeLeft', timeLeft, timeLeft / autoplayDelayTotal);\n    raf = requestAnimationFrame(() => {\n      calcTimeLeft();\n    });\n  };\n  const getSlideDelay = () => {\n    let activeSlideEl;\n    if (swiper.virtual && swiper.params.virtual.enabled) {\n      activeSlideEl = swiper.slides.filter(slideEl => slideEl.classList.contains('swiper-slide-active'))[0];\n    } else {\n      activeSlideEl = swiper.slides[swiper.activeIndex];\n    }\n    if (!activeSlideEl) return undefined;\n    const currentSlideDelay = parseInt(activeSlideEl.getAttribute('data-swiper-autoplay'), 10);\n    return currentSlideDelay;\n  };\n  const run = delayForce => {\n    if (swiper.destroyed || !swiper.autoplay.running) return;\n    cancelAnimationFrame(raf);\n    calcTimeLeft();\n    let delay = typeof delayForce === 'undefined' ? swiper.params.autoplay.delay : delayForce;\n    autoplayDelayTotal = swiper.params.autoplay.delay;\n    autoplayDelayCurrent = swiper.params.autoplay.delay;\n    const currentSlideDelay = getSlideDelay();\n    if (!Number.isNaN(currentSlideDelay) && currentSlideDelay > 0 && typeof delayForce === 'undefined') {\n      delay = currentSlideDelay;\n      autoplayDelayTotal = currentSlideDelay;\n      autoplayDelayCurrent = currentSlideDelay;\n    }\n    autoplayTimeLeft = delay;\n    const speed = swiper.params.speed;\n    const proceed = () => {\n      if (!swiper || swiper.destroyed) return;\n      if (swiper.params.autoplay.reverseDirection) {\n        if (!swiper.isBeginning || swiper.params.loop || swiper.params.rewind) {\n          swiper.slidePrev(speed, true, true);\n          emit('autoplay');\n        } else if (!swiper.params.autoplay.stopOnLastSlide) {\n          swiper.slideTo(swiper.slides.length - 1, speed, true, true);\n          emit('autoplay');\n        }\n      } else {\n        if (!swiper.isEnd || swiper.params.loop || swiper.params.rewind) {\n          swiper.slideNext(speed, true, true);\n          emit('autoplay');\n        } else if (!swiper.params.autoplay.stopOnLastSlide) {\n          swiper.slideTo(0, speed, true, true);\n          emit('autoplay');\n        }\n      }\n      if (swiper.params.cssMode) {\n        autoplayStartTime = new Date().getTime();\n        requestAnimationFrame(() => {\n          run();\n        });\n      }\n    };\n    if (delay > 0) {\n      clearTimeout(timeout);\n      timeout = setTimeout(() => {\n        proceed();\n      }, delay);\n    } else {\n      requestAnimationFrame(() => {\n        proceed();\n      });\n    }\n\n    // eslint-disable-next-line\n    return delay;\n  };\n  const start = () => {\n    swiper.autoplay.running = true;\n    run();\n    emit('autoplayStart');\n  };\n  const stop = () => {\n    swiper.autoplay.running = false;\n    clearTimeout(timeout);\n    cancelAnimationFrame(raf);\n    emit('autoplayStop');\n  };\n  const pause = (internal, reset) => {\n    if (swiper.destroyed || !swiper.autoplay.running) return;\n    clearTimeout(timeout);\n    if (!internal) {\n      pausedByInteraction = true;\n    }\n    const proceed = () => {\n      emit('autoplayPause');\n      if (swiper.params.autoplay.waitForTransition) {\n        swiper.wrapperEl.addEventListener('transitionend', onTransitionEnd);\n      } else {\n        resume();\n      }\n    };\n    swiper.autoplay.paused = true;\n    if (reset) {\n      if (slideChanged) {\n        autoplayTimeLeft = swiper.params.autoplay.delay;\n      }\n      slideChanged = false;\n      proceed();\n      return;\n    }\n    const delay = autoplayTimeLeft || swiper.params.autoplay.delay;\n    autoplayTimeLeft = delay - (new Date().getTime() - autoplayStartTime);\n    if (swiper.isEnd && autoplayTimeLeft < 0 && !swiper.params.loop) return;\n    if (autoplayTimeLeft < 0) autoplayTimeLeft = 0;\n    proceed();\n  };\n  const resume = () => {\n    if (swiper.isEnd && autoplayTimeLeft < 0 && !swiper.params.loop || swiper.destroyed || !swiper.autoplay.running) return;\n    autoplayStartTime = new Date().getTime();\n    if (pausedByInteraction) {\n      pausedByInteraction = false;\n      run(autoplayTimeLeft);\n    } else {\n      run();\n    }\n    swiper.autoplay.paused = false;\n    emit('autoplayResume');\n  };\n  const onVisibilityChange = () => {\n    if (swiper.destroyed || !swiper.autoplay.running) return;\n    const document = getDocument();\n    if (document.visibilityState === 'hidden') {\n      pausedByInteraction = true;\n      pause(true);\n    }\n    if (document.visibilityState === 'visible') {\n      resume();\n    }\n  };\n  const onPointerEnter = e => {\n    if (e.pointerType !== 'mouse') return;\n    pausedByInteraction = true;\n    if (swiper.animating || swiper.autoplay.paused) return;\n    pause(true);\n  };\n  const onPointerLeave = e => {\n    if (e.pointerType !== 'mouse') return;\n    if (swiper.autoplay.paused) {\n      resume();\n    }\n  };\n  const attachMouseEvents = () => {\n    if (swiper.params.autoplay.pauseOnMouseEnter) {\n      swiper.el.addEventListener('pointerenter', onPointerEnter);\n      swiper.el.addEventListener('pointerleave', onPointerLeave);\n    }\n  };\n  const detachMouseEvents = () => {\n    swiper.el.removeEventListener('pointerenter', onPointerEnter);\n    swiper.el.removeEventListener('pointerleave', onPointerLeave);\n  };\n  const attachDocumentEvents = () => {\n    const document = getDocument();\n    document.addEventListener('visibilitychange', onVisibilityChange);\n  };\n  const detachDocumentEvents = () => {\n    const document = getDocument();\n    document.removeEventListener('visibilitychange', onVisibilityChange);\n  };\n  on('init', () => {\n    if (swiper.params.autoplay.enabled) {\n      attachMouseEvents();\n      attachDocumentEvents();\n      autoplayStartTime = new Date().getTime();\n      start();\n    }\n  });\n  on('destroy', () => {\n    detachMouseEvents();\n    detachDocumentEvents();\n    if (swiper.autoplay.running) {\n      stop();\n    }\n  });\n  on('beforeTransitionStart', (_s, speed, internal) => {\n    if (swiper.destroyed || !swiper.autoplay.running) return;\n    if (internal || !swiper.params.autoplay.disableOnInteraction) {\n      pause(true, true);\n    } else {\n      stop();\n    }\n  });\n  on('sliderFirstMove', () => {\n    if (swiper.destroyed || !swiper.autoplay.running) return;\n    if (swiper.params.autoplay.disableOnInteraction) {\n      stop();\n      return;\n    }\n    isTouched = true;\n    pausedByTouch = false;\n    pausedByInteraction = false;\n    touchStartTimeout = setTimeout(() => {\n      pausedByInteraction = true;\n      pausedByTouch = true;\n      pause(true);\n    }, 200);\n  });\n  on('touchEnd', () => {\n    if (swiper.destroyed || !swiper.autoplay.running || !isTouched) return;\n    clearTimeout(touchStartTimeout);\n    clearTimeout(timeout);\n    if (swiper.params.autoplay.disableOnInteraction) {\n      pausedByTouch = false;\n      isTouched = false;\n      return;\n    }\n    if (pausedByTouch && swiper.params.cssMode) resume();\n    pausedByTouch = false;\n    isTouched = false;\n  });\n  on('slideChange', () => {\n    if (swiper.destroyed || !swiper.autoplay.running) return;\n    slideChanged = true;\n  });\n  Object.assign(swiper.autoplay, {\n    start,\n    stop,\n    pause,\n    resume\n  });\n}\n\nexport { Autoplay as default };\n","import { g as getDocument } from '../shared/ssr-window.esm.mjs';\nimport { j as isObject, e as elementChildren } from '../shared/utils.mjs';\n\nfunction Thumb(_ref) {\n  let {\n    swiper,\n    extendParams,\n    on\n  } = _ref;\n  extendParams({\n    thumbs: {\n      swiper: null,\n      multipleActiveThumbs: true,\n      autoScrollOffset: 0,\n      slideThumbActiveClass: 'swiper-slide-thumb-active',\n      thumbsContainerClass: 'swiper-thumbs'\n    }\n  });\n  let initialized = false;\n  let swiperCreated = false;\n  swiper.thumbs = {\n    swiper: null\n  };\n  function onThumbClick() {\n    const thumbsSwiper = swiper.thumbs.swiper;\n    if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n    const clickedIndex = thumbsSwiper.clickedIndex;\n    const clickedSlide = thumbsSwiper.clickedSlide;\n    if (clickedSlide && clickedSlide.classList.contains(swiper.params.thumbs.slideThumbActiveClass)) return;\n    if (typeof clickedIndex === 'undefined' || clickedIndex === null) return;\n    let slideToIndex;\n    if (thumbsSwiper.params.loop) {\n      slideToIndex = parseInt(thumbsSwiper.clickedSlide.getAttribute('data-swiper-slide-index'), 10);\n    } else {\n      slideToIndex = clickedIndex;\n    }\n    if (swiper.params.loop) {\n      swiper.slideToLoop(slideToIndex);\n    } else {\n      swiper.slideTo(slideToIndex);\n    }\n  }\n  function init() {\n    const {\n      thumbs: thumbsParams\n    } = swiper.params;\n    if (initialized) return false;\n    initialized = true;\n    const SwiperClass = swiper.constructor;\n    if (thumbsParams.swiper instanceof SwiperClass) {\n      swiper.thumbs.swiper = thumbsParams.swiper;\n      Object.assign(swiper.thumbs.swiper.originalParams, {\n        watchSlidesProgress: true,\n        slideToClickedSlide: false\n      });\n      Object.assign(swiper.thumbs.swiper.params, {\n        watchSlidesProgress: true,\n        slideToClickedSlide: false\n      });\n      swiper.thumbs.swiper.update();\n    } else if (isObject(thumbsParams.swiper)) {\n      const thumbsSwiperParams = Object.assign({}, thumbsParams.swiper);\n      Object.assign(thumbsSwiperParams, {\n        watchSlidesProgress: true,\n        slideToClickedSlide: false\n      });\n      swiper.thumbs.swiper = new SwiperClass(thumbsSwiperParams);\n      swiperCreated = true;\n    }\n    swiper.thumbs.swiper.el.classList.add(swiper.params.thumbs.thumbsContainerClass);\n    swiper.thumbs.swiper.on('tap', onThumbClick);\n    return true;\n  }\n  function update(initial) {\n    const thumbsSwiper = swiper.thumbs.swiper;\n    if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n    const slidesPerView = thumbsSwiper.params.slidesPerView === 'auto' ? thumbsSwiper.slidesPerViewDynamic() : thumbsSwiper.params.slidesPerView;\n\n    // Activate thumbs\n    let thumbsToActivate = 1;\n    const thumbActiveClass = swiper.params.thumbs.slideThumbActiveClass;\n    if (swiper.params.slidesPerView > 1 && !swiper.params.centeredSlides) {\n      thumbsToActivate = swiper.params.slidesPerView;\n    }\n    if (!swiper.params.thumbs.multipleActiveThumbs) {\n      thumbsToActivate = 1;\n    }\n    thumbsToActivate = Math.floor(thumbsToActivate);\n    thumbsSwiper.slides.forEach(slideEl => slideEl.classList.remove(thumbActiveClass));\n    if (thumbsSwiper.params.loop || thumbsSwiper.params.virtual && thumbsSwiper.params.virtual.enabled) {\n      for (let i = 0; i < thumbsToActivate; i += 1) {\n        elementChildren(thumbsSwiper.slidesEl, `[data-swiper-slide-index=\"${swiper.realIndex + i}\"]`).forEach(slideEl => {\n          slideEl.classList.add(thumbActiveClass);\n        });\n      }\n    } else {\n      for (let i = 0; i < thumbsToActivate; i += 1) {\n        if (thumbsSwiper.slides[swiper.realIndex + i]) {\n          thumbsSwiper.slides[swiper.realIndex + i].classList.add(thumbActiveClass);\n        }\n      }\n    }\n    const autoScrollOffset = swiper.params.thumbs.autoScrollOffset;\n    const useOffset = autoScrollOffset && !thumbsSwiper.params.loop;\n    if (swiper.realIndex !== thumbsSwiper.realIndex || useOffset) {\n      const currentThumbsIndex = thumbsSwiper.activeIndex;\n      let newThumbsIndex;\n      let direction;\n      if (thumbsSwiper.params.loop) {\n        const newThumbsSlide = thumbsSwiper.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') === `${swiper.realIndex}`)[0];\n        newThumbsIndex = thumbsSwiper.slides.indexOf(newThumbsSlide);\n        direction = swiper.activeIndex > swiper.previousIndex ? 'next' : 'prev';\n      } else {\n        newThumbsIndex = swiper.realIndex;\n        direction = newThumbsIndex > swiper.previousIndex ? 'next' : 'prev';\n      }\n      if (useOffset) {\n        newThumbsIndex += direction === 'next' ? autoScrollOffset : -1 * autoScrollOffset;\n      }\n      if (thumbsSwiper.visibleSlidesIndexes && thumbsSwiper.visibleSlidesIndexes.indexOf(newThumbsIndex) < 0) {\n        if (thumbsSwiper.params.centeredSlides) {\n          if (newThumbsIndex > currentThumbsIndex) {\n            newThumbsIndex = newThumbsIndex - Math.floor(slidesPerView / 2) + 1;\n          } else {\n            newThumbsIndex = newThumbsIndex + Math.floor(slidesPerView / 2) - 1;\n          }\n        } else if (newThumbsIndex > currentThumbsIndex && thumbsSwiper.params.slidesPerGroup === 1) ;\n        thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined);\n      }\n    }\n  }\n  on('beforeInit', () => {\n    const {\n      thumbs\n    } = swiper.params;\n    if (!thumbs || !thumbs.swiper) return;\n    if (typeof thumbs.swiper === 'string' || thumbs.swiper instanceof HTMLElement) {\n      const document = getDocument();\n      const getThumbsElementAndInit = () => {\n        const thumbsElement = typeof thumbs.swiper === 'string' ? document.querySelector(thumbs.swiper) : thumbs.swiper;\n        if (thumbsElement && thumbsElement.swiper) {\n          thumbs.swiper = thumbsElement.swiper;\n          init();\n          update(true);\n        } else if (thumbsElement) {\n          const onThumbsSwiper = e => {\n            thumbs.swiper = e.detail[0];\n            thumbsElement.removeEventListener('init', onThumbsSwiper);\n            init();\n            update(true);\n            thumbs.swiper.update();\n            swiper.update();\n          };\n          thumbsElement.addEventListener('init', onThumbsSwiper);\n        }\n        return thumbsElement;\n      };\n      const watchForThumbsToAppear = () => {\n        if (swiper.destroyed) return;\n        const thumbsElement = getThumbsElementAndInit();\n        if (!thumbsElement) {\n          requestAnimationFrame(watchForThumbsToAppear);\n        }\n      };\n      requestAnimationFrame(watchForThumbsToAppear);\n    } else {\n      init();\n      update(true);\n    }\n  });\n  on('slideChange update resize observerUpdate', () => {\n    update();\n  });\n  on('setTransition', (_s, duration) => {\n    const thumbsSwiper = swiper.thumbs.swiper;\n    if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n    thumbsSwiper.setTransition(duration);\n  });\n  on('beforeDestroy', () => {\n    const thumbsSwiper = swiper.thumbs.swiper;\n    if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n    if (swiperCreated) {\n      thumbsSwiper.destroy();\n    }\n  });\n  Object.assign(swiper.thumbs, {\n    init,\n    update\n  });\n}\n\nexport { Thumb as default };\n","import { d as now, i as elementTransitionEnd } from '../shared/utils.mjs';\n\nfunction freeMode(_ref) {\n  let {\n    swiper,\n    extendParams,\n    emit,\n    once\n  } = _ref;\n  extendParams({\n    freeMode: {\n      enabled: false,\n      momentum: true,\n      momentumRatio: 1,\n      momentumBounce: true,\n      momentumBounceRatio: 1,\n      momentumVelocityRatio: 1,\n      sticky: false,\n      minimumVelocity: 0.02\n    }\n  });\n  function onTouchStart() {\n    if (swiper.params.cssMode) return;\n    const translate = swiper.getTranslate();\n    swiper.setTranslate(translate);\n    swiper.setTransition(0);\n    swiper.touchEventsData.velocities.length = 0;\n    swiper.freeMode.onTouchEnd({\n      currentPos: swiper.rtl ? swiper.translate : -swiper.translate\n    });\n  }\n  function onTouchMove() {\n    if (swiper.params.cssMode) return;\n    const {\n      touchEventsData: data,\n      touches\n    } = swiper;\n    // Velocity\n    if (data.velocities.length === 0) {\n      data.velocities.push({\n        position: touches[swiper.isHorizontal() ? 'startX' : 'startY'],\n        time: data.touchStartTime\n      });\n    }\n    data.velocities.push({\n      position: touches[swiper.isHorizontal() ? 'currentX' : 'currentY'],\n      time: now()\n    });\n  }\n  function onTouchEnd(_ref2) {\n    let {\n      currentPos\n    } = _ref2;\n    if (swiper.params.cssMode) return;\n    const {\n      params,\n      wrapperEl,\n      rtlTranslate: rtl,\n      snapGrid,\n      touchEventsData: data\n    } = swiper;\n    // Time diff\n    const touchEndTime = now();\n    const timeDiff = touchEndTime - data.touchStartTime;\n    if (currentPos < -swiper.minTranslate()) {\n      swiper.slideTo(swiper.activeIndex);\n      return;\n    }\n    if (currentPos > -swiper.maxTranslate()) {\n      if (swiper.slides.length < snapGrid.length) {\n        swiper.slideTo(snapGrid.length - 1);\n      } else {\n        swiper.slideTo(swiper.slides.length - 1);\n      }\n      return;\n    }\n    if (params.freeMode.momentum) {\n      if (data.velocities.length > 1) {\n        const lastMoveEvent = data.velocities.pop();\n        const velocityEvent = data.velocities.pop();\n        const distance = lastMoveEvent.position - velocityEvent.position;\n        const time = lastMoveEvent.time - velocityEvent.time;\n        swiper.velocity = distance / time;\n        swiper.velocity /= 2;\n        if (Math.abs(swiper.velocity) < params.freeMode.minimumVelocity) {\n          swiper.velocity = 0;\n        }\n        // this implies that the user stopped moving a finger then released.\n        // There would be no events with distance zero, so the last event is stale.\n        if (time > 150 || now() - lastMoveEvent.time > 300) {\n          swiper.velocity = 0;\n        }\n      } else {\n        swiper.velocity = 0;\n      }\n      swiper.velocity *= params.freeMode.momentumVelocityRatio;\n      data.velocities.length = 0;\n      let momentumDuration = 1000 * params.freeMode.momentumRatio;\n      const momentumDistance = swiper.velocity * momentumDuration;\n      let newPosition = swiper.translate + momentumDistance;\n      if (rtl) newPosition = -newPosition;\n      let doBounce = false;\n      let afterBouncePosition;\n      const bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeMode.momentumBounceRatio;\n      let needsLoopFix;\n      if (newPosition < swiper.maxTranslate()) {\n        if (params.freeMode.momentumBounce) {\n          if (newPosition + swiper.maxTranslate() < -bounceAmount) {\n            newPosition = swiper.maxTranslate() - bounceAmount;\n          }\n          afterBouncePosition = swiper.maxTranslate();\n          doBounce = true;\n          data.allowMomentumBounce = true;\n        } else {\n          newPosition = swiper.maxTranslate();\n        }\n        if (params.loop && params.centeredSlides) needsLoopFix = true;\n      } else if (newPosition > swiper.minTranslate()) {\n        if (params.freeMode.momentumBounce) {\n          if (newPosition - swiper.minTranslate() > bounceAmount) {\n            newPosition = swiper.minTranslate() + bounceAmount;\n          }\n          afterBouncePosition = swiper.minTranslate();\n          doBounce = true;\n          data.allowMomentumBounce = true;\n        } else {\n          newPosition = swiper.minTranslate();\n        }\n        if (params.loop && params.centeredSlides) needsLoopFix = true;\n      } else if (params.freeMode.sticky) {\n        let nextSlide;\n        for (let j = 0; j < snapGrid.length; j += 1) {\n          if (snapGrid[j] > -newPosition) {\n            nextSlide = j;\n            break;\n          }\n        }\n        if (Math.abs(snapGrid[nextSlide] - newPosition) < Math.abs(snapGrid[nextSlide - 1] - newPosition) || swiper.swipeDirection === 'next') {\n          newPosition = snapGrid[nextSlide];\n        } else {\n          newPosition = snapGrid[nextSlide - 1];\n        }\n        newPosition = -newPosition;\n      }\n      if (needsLoopFix) {\n        once('transitionEnd', () => {\n          swiper.loopFix();\n        });\n      }\n      // Fix duration\n      if (swiper.velocity !== 0) {\n        if (rtl) {\n          momentumDuration = Math.abs((-newPosition - swiper.translate) / swiper.velocity);\n        } else {\n          momentumDuration = Math.abs((newPosition - swiper.translate) / swiper.velocity);\n        }\n        if (params.freeMode.sticky) {\n          // If freeMode.sticky is active and the user ends a swipe with a slow-velocity\n          // event, then durations can be 20+ seconds to slide one (or zero!) slides.\n          // It's easy to see this when simulating touch with mouse events. To fix this,\n          // limit single-slide swipes to the default slide duration. This also has the\n          // nice side effect of matching slide speed if the user stopped moving before\n          // lifting finger or mouse vs. moving slowly before lifting the finger/mouse.\n          // For faster swipes, also apply limits (albeit higher ones).\n          const moveDistance = Math.abs((rtl ? -newPosition : newPosition) - swiper.translate);\n          const currentSlideSize = swiper.slidesSizesGrid[swiper.activeIndex];\n          if (moveDistance < currentSlideSize) {\n            momentumDuration = params.speed;\n          } else if (moveDistance < 2 * currentSlideSize) {\n            momentumDuration = params.speed * 1.5;\n          } else {\n            momentumDuration = params.speed * 2.5;\n          }\n        }\n      } else if (params.freeMode.sticky) {\n        swiper.slideToClosest();\n        return;\n      }\n      if (params.freeMode.momentumBounce && doBounce) {\n        swiper.updateProgress(afterBouncePosition);\n        swiper.setTransition(momentumDuration);\n        swiper.setTranslate(newPosition);\n        swiper.transitionStart(true, swiper.swipeDirection);\n        swiper.animating = true;\n        elementTransitionEnd(wrapperEl, () => {\n          if (!swiper || swiper.destroyed || !data.allowMomentumBounce) return;\n          emit('momentumBounce');\n          swiper.setTransition(params.speed);\n          setTimeout(() => {\n            swiper.setTranslate(afterBouncePosition);\n            elementTransitionEnd(wrapperEl, () => {\n              if (!swiper || swiper.destroyed) return;\n              swiper.transitionEnd();\n            });\n          }, 0);\n        });\n      } else if (swiper.velocity) {\n        emit('_freeModeNoMomentumRelease');\n        swiper.updateProgress(newPosition);\n        swiper.setTransition(momentumDuration);\n        swiper.setTranslate(newPosition);\n        swiper.transitionStart(true, swiper.swipeDirection);\n        if (!swiper.animating) {\n          swiper.animating = true;\n          elementTransitionEnd(wrapperEl, () => {\n            if (!swiper || swiper.destroyed) return;\n            swiper.transitionEnd();\n          });\n        }\n      } else {\n        swiper.updateProgress(newPosition);\n      }\n      swiper.updateActiveIndex();\n      swiper.updateSlidesClasses();\n    } else if (params.freeMode.sticky) {\n      swiper.slideToClosest();\n      return;\n    } else if (params.freeMode) {\n      emit('_freeModeNoMomentumRelease');\n    }\n    if (!params.freeMode.momentum || timeDiff >= params.longSwipesMs) {\n      swiper.updateProgress();\n      swiper.updateActiveIndex();\n      swiper.updateSlidesClasses();\n    }\n  }\n  Object.assign(swiper, {\n    freeMode: {\n      onTouchStart,\n      onTouchMove,\n      onTouchEnd\n    }\n  });\n}\n\nexport { freeMode as default };\n","function Grid(_ref) {\n  let {\n    swiper,\n    extendParams\n  } = _ref;\n  extendParams({\n    grid: {\n      rows: 1,\n      fill: 'column'\n    }\n  });\n  let slidesNumberEvenToRows;\n  let slidesPerRow;\n  let numFullColumns;\n  const getSpaceBetween = () => {\n    let spaceBetween = swiper.params.spaceBetween;\n    if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n      spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiper.size;\n    } else if (typeof spaceBetween === 'string') {\n      spaceBetween = parseFloat(spaceBetween);\n    }\n    return spaceBetween;\n  };\n  const initSlides = slidesLength => {\n    const {\n      slidesPerView\n    } = swiper.params;\n    const {\n      rows,\n      fill\n    } = swiper.params.grid;\n    numFullColumns = Math.floor(slidesLength / rows);\n    if (Math.floor(slidesLength / rows) === slidesLength / rows) {\n      slidesNumberEvenToRows = slidesLength;\n    } else {\n      slidesNumberEvenToRows = Math.ceil(slidesLength / rows) * rows;\n    }\n    if (slidesPerView !== 'auto' && fill === 'row') {\n      slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, slidesPerView * rows);\n    }\n    slidesPerRow = slidesNumberEvenToRows / rows;\n  };\n  const updateSlide = (i, slide, slidesLength, getDirectionLabel) => {\n    const {\n      slidesPerGroup\n    } = swiper.params;\n    const spaceBetween = getSpaceBetween();\n    const {\n      rows,\n      fill\n    } = swiper.params.grid;\n    // Set slides order\n    let newSlideOrderIndex;\n    let column;\n    let row;\n    if (fill === 'row' && slidesPerGroup > 1) {\n      const groupIndex = Math.floor(i / (slidesPerGroup * rows));\n      const slideIndexInGroup = i - rows * slidesPerGroup * groupIndex;\n      const columnsInGroup = groupIndex === 0 ? slidesPerGroup : Math.min(Math.ceil((slidesLength - groupIndex * rows * slidesPerGroup) / rows), slidesPerGroup);\n      row = Math.floor(slideIndexInGroup / columnsInGroup);\n      column = slideIndexInGroup - row * columnsInGroup + groupIndex * slidesPerGroup;\n      newSlideOrderIndex = column + row * slidesNumberEvenToRows / rows;\n      slide.style.order = newSlideOrderIndex;\n    } else if (fill === 'column') {\n      column = Math.floor(i / rows);\n      row = i - column * rows;\n      if (column > numFullColumns || column === numFullColumns && row === rows - 1) {\n        row += 1;\n        if (row >= rows) {\n          row = 0;\n          column += 1;\n        }\n      }\n    } else {\n      row = Math.floor(i / slidesPerRow);\n      column = i - row * slidesPerRow;\n    }\n    slide.row = row;\n    slide.column = column;\n    slide.style[getDirectionLabel('margin-top')] = row !== 0 ? spaceBetween && `${spaceBetween}px` : '';\n  };\n  const updateWrapperSize = (slideSize, snapGrid, getDirectionLabel) => {\n    const {\n      centeredSlides,\n      roundLengths\n    } = swiper.params;\n    const spaceBetween = getSpaceBetween();\n    const {\n      rows\n    } = swiper.params.grid;\n    swiper.virtualSize = (slideSize + spaceBetween) * slidesNumberEvenToRows;\n    swiper.virtualSize = Math.ceil(swiper.virtualSize / rows) - spaceBetween;\n    swiper.wrapperEl.style[getDirectionLabel('width')] = `${swiper.virtualSize + spaceBetween}px`;\n    if (centeredSlides) {\n      const newSlidesGrid = [];\n      for (let i = 0; i < snapGrid.length; i += 1) {\n        let slidesGridItem = snapGrid[i];\n        if (roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n        if (snapGrid[i] < swiper.virtualSize + snapGrid[0]) newSlidesGrid.push(slidesGridItem);\n      }\n      snapGrid.splice(0, snapGrid.length);\n      snapGrid.push(...newSlidesGrid);\n    }\n  };\n  swiper.grid = {\n    initSlides,\n    updateSlide,\n    updateWrapperSize\n  };\n}\n\nexport { Grid as default };\n","import { e as effectInit } from '../shared/effect-init.mjs';\nimport { e as effectTarget } from '../shared/effect-target.mjs';\nimport { e as effectVirtualTransitionEnd } from '../shared/effect-virtual-transition-end.mjs';\nimport { k as getSlideTransformEl } from '../shared/utils.mjs';\n\nfunction EffectFade(_ref) {\n  let {\n    swiper,\n    extendParams,\n    on\n  } = _ref;\n  extendParams({\n    fadeEffect: {\n      crossFade: false\n    }\n  });\n  const setTranslate = () => {\n    const {\n      slides\n    } = swiper;\n    const params = swiper.params.fadeEffect;\n    for (let i = 0; i < slides.length; i += 1) {\n      const slideEl = swiper.slides[i];\n      const offset = slideEl.swiperSlideOffset;\n      let tx = -offset;\n      if (!swiper.params.virtualTranslate) tx -= swiper.translate;\n      let ty = 0;\n      if (!swiper.isHorizontal()) {\n        ty = tx;\n        tx = 0;\n      }\n      const slideOpacity = swiper.params.fadeEffect.crossFade ? Math.max(1 - Math.abs(slideEl.progress), 0) : 1 + Math.min(Math.max(slideEl.progress, -1), 0);\n      const targetEl = effectTarget(params, slideEl);\n      targetEl.style.opacity = slideOpacity;\n      targetEl.style.transform = `translate3d(${tx}px, ${ty}px, 0px)`;\n    }\n  };\n  const setTransition = duration => {\n    const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl));\n    transformElements.forEach(el => {\n      el.style.transitionDuration = `${duration}ms`;\n    });\n    effectVirtualTransitionEnd({\n      swiper,\n      duration,\n      transformElements,\n      allSlides: true\n    });\n  };\n  effectInit({\n    effect: 'fade',\n    swiper,\n    on,\n    setTranslate,\n    setTransition,\n    overwriteParams: () => ({\n      slidesPerView: 1,\n      slidesPerGroup: 1,\n      watchSlidesProgress: true,\n      spaceBetween: 0,\n      virtualTranslate: !swiper.params.cssMode\n    })\n  });\n}\n\nexport { EffectFade as default };\n","import { e as effectInit } from '../shared/effect-init.mjs';\nimport { c as createElement } from '../shared/utils.mjs';\n\nfunction EffectCube(_ref) {\n  let {\n    swiper,\n    extendParams,\n    on\n  } = _ref;\n  extendParams({\n    cubeEffect: {\n      slideShadows: true,\n      shadow: true,\n      shadowOffset: 20,\n      shadowScale: 0.94\n    }\n  });\n  const createSlideShadows = (slideEl, progress, isHorizontal) => {\n    let shadowBefore = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top');\n    let shadowAfter = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom');\n    if (!shadowBefore) {\n      shadowBefore = createElement('div', `swiper-slide-shadow-cube swiper-slide-shadow-${isHorizontal ? 'left' : 'top'}`.split(' '));\n      slideEl.append(shadowBefore);\n    }\n    if (!shadowAfter) {\n      shadowAfter = createElement('div', `swiper-slide-shadow-cube swiper-slide-shadow-${isHorizontal ? 'right' : 'bottom'}`.split(' '));\n      slideEl.append(shadowAfter);\n    }\n    if (shadowBefore) shadowBefore.style.opacity = Math.max(-progress, 0);\n    if (shadowAfter) shadowAfter.style.opacity = Math.max(progress, 0);\n  };\n  const recreateShadows = () => {\n    // create new ones\n    const isHorizontal = swiper.isHorizontal();\n    swiper.slides.forEach(slideEl => {\n      const progress = Math.max(Math.min(slideEl.progress, 1), -1);\n      createSlideShadows(slideEl, progress, isHorizontal);\n    });\n  };\n  const setTranslate = () => {\n    const {\n      el,\n      wrapperEl,\n      slides,\n      width: swiperWidth,\n      height: swiperHeight,\n      rtlTranslate: rtl,\n      size: swiperSize,\n      browser\n    } = swiper;\n    const params = swiper.params.cubeEffect;\n    const isHorizontal = swiper.isHorizontal();\n    const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n    let wrapperRotate = 0;\n    let cubeShadowEl;\n    if (params.shadow) {\n      if (isHorizontal) {\n        cubeShadowEl = swiper.wrapperEl.querySelector('.swiper-cube-shadow');\n        if (!cubeShadowEl) {\n          cubeShadowEl = createElement('div', 'swiper-cube-shadow');\n          swiper.wrapperEl.append(cubeShadowEl);\n        }\n        cubeShadowEl.style.height = `${swiperWidth}px`;\n      } else {\n        cubeShadowEl = el.querySelector('.swiper-cube-shadow');\n        if (!cubeShadowEl) {\n          cubeShadowEl = createElement('div', 'swiper-cube-shadow');\n          el.append(cubeShadowEl);\n        }\n      }\n    }\n    for (let i = 0; i < slides.length; i += 1) {\n      const slideEl = slides[i];\n      let slideIndex = i;\n      if (isVirtual) {\n        slideIndex = parseInt(slideEl.getAttribute('data-swiper-slide-index'), 10);\n      }\n      let slideAngle = slideIndex * 90;\n      let round = Math.floor(slideAngle / 360);\n      if (rtl) {\n        slideAngle = -slideAngle;\n        round = Math.floor(-slideAngle / 360);\n      }\n      const progress = Math.max(Math.min(slideEl.progress, 1), -1);\n      let tx = 0;\n      let ty = 0;\n      let tz = 0;\n      if (slideIndex % 4 === 0) {\n        tx = -round * 4 * swiperSize;\n        tz = 0;\n      } else if ((slideIndex - 1) % 4 === 0) {\n        tx = 0;\n        tz = -round * 4 * swiperSize;\n      } else if ((slideIndex - 2) % 4 === 0) {\n        tx = swiperSize + round * 4 * swiperSize;\n        tz = swiperSize;\n      } else if ((slideIndex - 3) % 4 === 0) {\n        tx = -swiperSize;\n        tz = 3 * swiperSize + swiperSize * 4 * round;\n      }\n      if (rtl) {\n        tx = -tx;\n      }\n      if (!isHorizontal) {\n        ty = tx;\n        tx = 0;\n      }\n      const transform = `rotateX(${isHorizontal ? 0 : -slideAngle}deg) rotateY(${isHorizontal ? slideAngle : 0}deg) translate3d(${tx}px, ${ty}px, ${tz}px)`;\n      if (progress <= 1 && progress > -1) {\n        wrapperRotate = slideIndex * 90 + progress * 90;\n        if (rtl) wrapperRotate = -slideIndex * 90 - progress * 90;\n      }\n      slideEl.style.transform = transform;\n      if (params.slideShadows) {\n        createSlideShadows(slideEl, progress, isHorizontal);\n      }\n    }\n    wrapperEl.style.transformOrigin = `50% 50% -${swiperSize / 2}px`;\n    wrapperEl.style['-webkit-transform-origin'] = `50% 50% -${swiperSize / 2}px`;\n    if (params.shadow) {\n      if (isHorizontal) {\n        cubeShadowEl.style.transform = `translate3d(0px, ${swiperWidth / 2 + params.shadowOffset}px, ${-swiperWidth / 2}px) rotateX(90deg) rotateZ(0deg) scale(${params.shadowScale})`;\n      } else {\n        const shadowAngle = Math.abs(wrapperRotate) - Math.floor(Math.abs(wrapperRotate) / 90) * 90;\n        const multiplier = 1.5 - (Math.sin(shadowAngle * 2 * Math.PI / 360) / 2 + Math.cos(shadowAngle * 2 * Math.PI / 360) / 2);\n        const scale1 = params.shadowScale;\n        const scale2 = params.shadowScale / multiplier;\n        const offset = params.shadowOffset;\n        cubeShadowEl.style.transform = `scale3d(${scale1}, 1, ${scale2}) translate3d(0px, ${swiperHeight / 2 + offset}px, ${-swiperHeight / 2 / scale2}px) rotateX(-90deg)`;\n      }\n    }\n    const zFactor = (browser.isSafari || browser.isWebView) && browser.needPerspectiveFix ? -swiperSize / 2 : 0;\n    wrapperEl.style.transform = `translate3d(0px,0,${zFactor}px) rotateX(${swiper.isHorizontal() ? 0 : wrapperRotate}deg) rotateY(${swiper.isHorizontal() ? -wrapperRotate : 0}deg)`;\n    wrapperEl.style.setProperty('--swiper-cube-translate-z', `${zFactor}px`);\n  };\n  const setTransition = duration => {\n    const {\n      el,\n      slides\n    } = swiper;\n    slides.forEach(slideEl => {\n      slideEl.style.transitionDuration = `${duration}ms`;\n      slideEl.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(subEl => {\n        subEl.style.transitionDuration = `${duration}ms`;\n      });\n    });\n    if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) {\n      const shadowEl = el.querySelector('.swiper-cube-shadow');\n      if (shadowEl) shadowEl.style.transitionDuration = `${duration}ms`;\n    }\n  };\n  effectInit({\n    effect: 'cube',\n    swiper,\n    on,\n    setTranslate,\n    setTransition,\n    recreateShadows,\n    getEffectParams: () => swiper.params.cubeEffect,\n    perspective: () => true,\n    overwriteParams: () => ({\n      slidesPerView: 1,\n      slidesPerGroup: 1,\n      watchSlidesProgress: true,\n      resistanceRatio: 0,\n      spaceBetween: 0,\n      centeredSlides: false,\n      virtualTranslate: true\n    })\n  });\n}\n\nexport { EffectCube as default };\n","import { c as createShadow } from '../shared/create-shadow.mjs';\nimport { e as effectInit } from '../shared/effect-init.mjs';\nimport { e as effectTarget } from '../shared/effect-target.mjs';\nimport { e as effectVirtualTransitionEnd } from '../shared/effect-virtual-transition-end.mjs';\nimport { k as getSlideTransformEl } from '../shared/utils.mjs';\n\nfunction EffectFlip(_ref) {\n  let {\n    swiper,\n    extendParams,\n    on\n  } = _ref;\n  extendParams({\n    flipEffect: {\n      slideShadows: true,\n      limitRotation: true\n    }\n  });\n  const createSlideShadows = (slideEl, progress) => {\n    let shadowBefore = swiper.isHorizontal() ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top');\n    let shadowAfter = swiper.isHorizontal() ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom');\n    if (!shadowBefore) {\n      shadowBefore = createShadow('flip', slideEl, swiper.isHorizontal() ? 'left' : 'top');\n    }\n    if (!shadowAfter) {\n      shadowAfter = createShadow('flip', slideEl, swiper.isHorizontal() ? 'right' : 'bottom');\n    }\n    if (shadowBefore) shadowBefore.style.opacity = Math.max(-progress, 0);\n    if (shadowAfter) shadowAfter.style.opacity = Math.max(progress, 0);\n  };\n  const recreateShadows = () => {\n    // Set shadows\n    swiper.params.flipEffect;\n    swiper.slides.forEach(slideEl => {\n      let progress = slideEl.progress;\n      if (swiper.params.flipEffect.limitRotation) {\n        progress = Math.max(Math.min(slideEl.progress, 1), -1);\n      }\n      createSlideShadows(slideEl, progress);\n    });\n  };\n  const setTranslate = () => {\n    const {\n      slides,\n      rtlTranslate: rtl\n    } = swiper;\n    const params = swiper.params.flipEffect;\n    for (let i = 0; i < slides.length; i += 1) {\n      const slideEl = slides[i];\n      let progress = slideEl.progress;\n      if (swiper.params.flipEffect.limitRotation) {\n        progress = Math.max(Math.min(slideEl.progress, 1), -1);\n      }\n      const offset = slideEl.swiperSlideOffset;\n      const rotate = -180 * progress;\n      let rotateY = rotate;\n      let rotateX = 0;\n      let tx = swiper.params.cssMode ? -offset - swiper.translate : -offset;\n      let ty = 0;\n      if (!swiper.isHorizontal()) {\n        ty = tx;\n        tx = 0;\n        rotateX = -rotateY;\n        rotateY = 0;\n      } else if (rtl) {\n        rotateY = -rotateY;\n      }\n      slideEl.style.zIndex = -Math.abs(Math.round(progress)) + slides.length;\n      if (params.slideShadows) {\n        createSlideShadows(slideEl, progress);\n      }\n      const transform = `translate3d(${tx}px, ${ty}px, 0px) rotateX(${rotateX}deg) rotateY(${rotateY}deg)`;\n      const targetEl = effectTarget(params, slideEl);\n      targetEl.style.transform = transform;\n    }\n  };\n  const setTransition = duration => {\n    const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl));\n    transformElements.forEach(el => {\n      el.style.transitionDuration = `${duration}ms`;\n      el.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => {\n        shadowEl.style.transitionDuration = `${duration}ms`;\n      });\n    });\n    effectVirtualTransitionEnd({\n      swiper,\n      duration,\n      transformElements\n    });\n  };\n  effectInit({\n    effect: 'flip',\n    swiper,\n    on,\n    setTranslate,\n    setTransition,\n    recreateShadows,\n    getEffectParams: () => swiper.params.flipEffect,\n    perspective: () => true,\n    overwriteParams: () => ({\n      slidesPerView: 1,\n      slidesPerGroup: 1,\n      watchSlidesProgress: true,\n      spaceBetween: 0,\n      virtualTranslate: !swiper.params.cssMode\n    })\n  });\n}\n\nexport { EffectFlip as default };\n","import { c as createShadow } from '../shared/create-shadow.mjs';\nimport { e as effectInit } from '../shared/effect-init.mjs';\nimport { e as effectTarget } from '../shared/effect-target.mjs';\nimport { k as getSlideTransformEl } from '../shared/utils.mjs';\n\nfunction EffectCoverflow(_ref) {\n  let {\n    swiper,\n    extendParams,\n    on\n  } = _ref;\n  extendParams({\n    coverflowEffect: {\n      rotate: 50,\n      stretch: 0,\n      depth: 100,\n      scale: 1,\n      modifier: 1,\n      slideShadows: true\n    }\n  });\n  const setTranslate = () => {\n    const {\n      width: swiperWidth,\n      height: swiperHeight,\n      slides,\n      slidesSizesGrid\n    } = swiper;\n    const params = swiper.params.coverflowEffect;\n    const isHorizontal = swiper.isHorizontal();\n    const transform = swiper.translate;\n    const center = isHorizontal ? -transform + swiperWidth / 2 : -transform + swiperHeight / 2;\n    const rotate = isHorizontal ? params.rotate : -params.rotate;\n    const translate = params.depth;\n    // Each slide offset from center\n    for (let i = 0, length = slides.length; i < length; i += 1) {\n      const slideEl = slides[i];\n      const slideSize = slidesSizesGrid[i];\n      const slideOffset = slideEl.swiperSlideOffset;\n      const centerOffset = (center - slideOffset - slideSize / 2) / slideSize;\n      const offsetMultiplier = typeof params.modifier === 'function' ? params.modifier(centerOffset) : centerOffset * params.modifier;\n      let rotateY = isHorizontal ? rotate * offsetMultiplier : 0;\n      let rotateX = isHorizontal ? 0 : rotate * offsetMultiplier;\n      // var rotateZ = 0\n      let translateZ = -translate * Math.abs(offsetMultiplier);\n      let stretch = params.stretch;\n      // Allow percentage to make a relative stretch for responsive sliders\n      if (typeof stretch === 'string' && stretch.indexOf('%') !== -1) {\n        stretch = parseFloat(params.stretch) / 100 * slideSize;\n      }\n      let translateY = isHorizontal ? 0 : stretch * offsetMultiplier;\n      let translateX = isHorizontal ? stretch * offsetMultiplier : 0;\n      let scale = 1 - (1 - params.scale) * Math.abs(offsetMultiplier);\n\n      // Fix for ultra small values\n      if (Math.abs(translateX) < 0.001) translateX = 0;\n      if (Math.abs(translateY) < 0.001) translateY = 0;\n      if (Math.abs(translateZ) < 0.001) translateZ = 0;\n      if (Math.abs(rotateY) < 0.001) rotateY = 0;\n      if (Math.abs(rotateX) < 0.001) rotateX = 0;\n      if (Math.abs(scale) < 0.001) scale = 0;\n      const slideTransform = `translate3d(${translateX}px,${translateY}px,${translateZ}px)  rotateX(${rotateX}deg) rotateY(${rotateY}deg) scale(${scale})`;\n      const targetEl = effectTarget(params, slideEl);\n      targetEl.style.transform = slideTransform;\n      slideEl.style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1;\n      if (params.slideShadows) {\n        // Set shadows\n        let shadowBeforeEl = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top');\n        let shadowAfterEl = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom');\n        if (!shadowBeforeEl) {\n          shadowBeforeEl = createShadow('coverflow', slideEl, isHorizontal ? 'left' : 'top');\n        }\n        if (!shadowAfterEl) {\n          shadowAfterEl = createShadow('coverflow', slideEl, isHorizontal ? 'right' : 'bottom');\n        }\n        if (shadowBeforeEl) shadowBeforeEl.style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0;\n        if (shadowAfterEl) shadowAfterEl.style.opacity = -offsetMultiplier > 0 ? -offsetMultiplier : 0;\n      }\n    }\n  };\n  const setTransition = duration => {\n    const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl));\n    transformElements.forEach(el => {\n      el.style.transitionDuration = `${duration}ms`;\n      el.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => {\n        shadowEl.style.transitionDuration = `${duration}ms`;\n      });\n    });\n  };\n  effectInit({\n    effect: 'coverflow',\n    swiper,\n    on,\n    setTranslate,\n    setTransition,\n    perspective: () => true,\n    overwriteParams: () => ({\n      watchSlidesProgress: true\n    })\n  });\n}\n\nexport { EffectCoverflow as default };\n","import { c as createShadow } from '../shared/create-shadow.mjs';\nimport { e as effectInit } from '../shared/effect-init.mjs';\nimport { e as effectTarget } from '../shared/effect-target.mjs';\nimport { e as effectVirtualTransitionEnd } from '../shared/effect-virtual-transition-end.mjs';\nimport { k as getSlideTransformEl } from '../shared/utils.mjs';\n\nfunction EffectCreative(_ref) {\n  let {\n    swiper,\n    extendParams,\n    on\n  } = _ref;\n  extendParams({\n    creativeEffect: {\n      limitProgress: 1,\n      shadowPerProgress: false,\n      progressMultiplier: 1,\n      perspective: true,\n      prev: {\n        translate: [0, 0, 0],\n        rotate: [0, 0, 0],\n        opacity: 1,\n        scale: 1\n      },\n      next: {\n        translate: [0, 0, 0],\n        rotate: [0, 0, 0],\n        opacity: 1,\n        scale: 1\n      }\n    }\n  });\n  const getTranslateValue = value => {\n    if (typeof value === 'string') return value;\n    return `${value}px`;\n  };\n  const setTranslate = () => {\n    const {\n      slides,\n      wrapperEl,\n      slidesSizesGrid\n    } = swiper;\n    const params = swiper.params.creativeEffect;\n    const {\n      progressMultiplier: multiplier\n    } = params;\n    const isCenteredSlides = swiper.params.centeredSlides;\n    if (isCenteredSlides) {\n      const margin = slidesSizesGrid[0] / 2 - swiper.params.slidesOffsetBefore || 0;\n      wrapperEl.style.transform = `translateX(calc(50% - ${margin}px))`;\n    }\n    for (let i = 0; i < slides.length; i += 1) {\n      const slideEl = slides[i];\n      const slideProgress = slideEl.progress;\n      const progress = Math.min(Math.max(slideEl.progress, -params.limitProgress), params.limitProgress);\n      let originalProgress = progress;\n      if (!isCenteredSlides) {\n        originalProgress = Math.min(Math.max(slideEl.originalProgress, -params.limitProgress), params.limitProgress);\n      }\n      const offset = slideEl.swiperSlideOffset;\n      const t = [swiper.params.cssMode ? -offset - swiper.translate : -offset, 0, 0];\n      const r = [0, 0, 0];\n      let custom = false;\n      if (!swiper.isHorizontal()) {\n        t[1] = t[0];\n        t[0] = 0;\n      }\n      let data = {\n        translate: [0, 0, 0],\n        rotate: [0, 0, 0],\n        scale: 1,\n        opacity: 1\n      };\n      if (progress < 0) {\n        data = params.next;\n        custom = true;\n      } else if (progress > 0) {\n        data = params.prev;\n        custom = true;\n      }\n      // set translate\n      t.forEach((value, index) => {\n        t[index] = `calc(${value}px + (${getTranslateValue(data.translate[index])} * ${Math.abs(progress * multiplier)}))`;\n      });\n      // set rotates\n      r.forEach((value, index) => {\n        r[index] = data.rotate[index] * Math.abs(progress * multiplier);\n      });\n      slideEl.style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length;\n      const translateString = t.join(', ');\n      const rotateString = `rotateX(${r[0]}deg) rotateY(${r[1]}deg) rotateZ(${r[2]}deg)`;\n      const scaleString = originalProgress < 0 ? `scale(${1 + (1 - data.scale) * originalProgress * multiplier})` : `scale(${1 - (1 - data.scale) * originalProgress * multiplier})`;\n      const opacityString = originalProgress < 0 ? 1 + (1 - data.opacity) * originalProgress * multiplier : 1 - (1 - data.opacity) * originalProgress * multiplier;\n      const transform = `translate3d(${translateString}) ${rotateString} ${scaleString}`;\n\n      // Set shadows\n      if (custom && data.shadow || !custom) {\n        let shadowEl = slideEl.querySelector('.swiper-slide-shadow');\n        if (!shadowEl && data.shadow) {\n          shadowEl = createShadow('creative', slideEl);\n        }\n        if (shadowEl) {\n          const shadowOpacity = params.shadowPerProgress ? progress * (1 / params.limitProgress) : progress;\n          shadowEl.style.opacity = Math.min(Math.max(Math.abs(shadowOpacity), 0), 1);\n        }\n      }\n      const targetEl = effectTarget(params, slideEl);\n      targetEl.style.transform = transform;\n      targetEl.style.opacity = opacityString;\n      if (data.origin) {\n        targetEl.style.transformOrigin = data.origin;\n      }\n    }\n  };\n  const setTransition = duration => {\n    const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl));\n    transformElements.forEach(el => {\n      el.style.transitionDuration = `${duration}ms`;\n      el.querySelectorAll('.swiper-slide-shadow').forEach(shadowEl => {\n        shadowEl.style.transitionDuration = `${duration}ms`;\n      });\n    });\n    effectVirtualTransitionEnd({\n      swiper,\n      duration,\n      transformElements,\n      allSlides: true\n    });\n  };\n  effectInit({\n    effect: 'creative',\n    swiper,\n    on,\n    setTranslate,\n    setTransition,\n    perspective: () => swiper.params.creativeEffect.perspective,\n    overwriteParams: () => ({\n      watchSlidesProgress: true,\n      virtualTranslate: !swiper.params.cssMode\n    })\n  });\n}\n\nexport { EffectCreative as default };\n","import { c as createShadow } from '../shared/create-shadow.mjs';\nimport { e as effectInit } from '../shared/effect-init.mjs';\nimport { e as effectTarget } from '../shared/effect-target.mjs';\nimport { e as effectVirtualTransitionEnd } from '../shared/effect-virtual-transition-end.mjs';\nimport { k as getSlideTransformEl } from '../shared/utils.mjs';\n\nfunction EffectCards(_ref) {\n  let {\n    swiper,\n    extendParams,\n    on\n  } = _ref;\n  extendParams({\n    cardsEffect: {\n      slideShadows: true,\n      rotate: true,\n      perSlideRotate: 2,\n      perSlideOffset: 8\n    }\n  });\n  const setTranslate = () => {\n    const {\n      slides,\n      activeIndex,\n      rtlTranslate: rtl\n    } = swiper;\n    const params = swiper.params.cardsEffect;\n    const {\n      startTranslate,\n      isTouched\n    } = swiper.touchEventsData;\n    const currentTranslate = rtl ? -swiper.translate : swiper.translate;\n    for (let i = 0; i < slides.length; i += 1) {\n      const slideEl = slides[i];\n      const slideProgress = slideEl.progress;\n      const progress = Math.min(Math.max(slideProgress, -4), 4);\n      let offset = slideEl.swiperSlideOffset;\n      if (swiper.params.centeredSlides && !swiper.params.cssMode) {\n        swiper.wrapperEl.style.transform = `translateX(${swiper.minTranslate()}px)`;\n      }\n      if (swiper.params.centeredSlides && swiper.params.cssMode) {\n        offset -= slides[0].swiperSlideOffset;\n      }\n      let tX = swiper.params.cssMode ? -offset - swiper.translate : -offset;\n      let tY = 0;\n      const tZ = -100 * Math.abs(progress);\n      let scale = 1;\n      let rotate = -params.perSlideRotate * progress;\n      let tXAdd = params.perSlideOffset - Math.abs(progress) * 0.75;\n      const slideIndex = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.from + i : i;\n      const isSwipeToNext = (slideIndex === activeIndex || slideIndex === activeIndex - 1) && progress > 0 && progress < 1 && (isTouched || swiper.params.cssMode) && currentTranslate < startTranslate;\n      const isSwipeToPrev = (slideIndex === activeIndex || slideIndex === activeIndex + 1) && progress < 0 && progress > -1 && (isTouched || swiper.params.cssMode) && currentTranslate > startTranslate;\n      if (isSwipeToNext || isSwipeToPrev) {\n        const subProgress = (1 - Math.abs((Math.abs(progress) - 0.5) / 0.5)) ** 0.5;\n        rotate += -28 * progress * subProgress;\n        scale += -0.5 * subProgress;\n        tXAdd += 96 * subProgress;\n        tY = `${-25 * subProgress * Math.abs(progress)}%`;\n      }\n      if (progress < 0) {\n        // next\n        tX = `calc(${tX}px ${rtl ? '-' : '+'} (${tXAdd * Math.abs(progress)}%))`;\n      } else if (progress > 0) {\n        // prev\n        tX = `calc(${tX}px ${rtl ? '-' : '+'} (-${tXAdd * Math.abs(progress)}%))`;\n      } else {\n        tX = `${tX}px`;\n      }\n      if (!swiper.isHorizontal()) {\n        const prevY = tY;\n        tY = tX;\n        tX = prevY;\n      }\n      const scaleString = progress < 0 ? `${1 + (1 - scale) * progress}` : `${1 - (1 - scale) * progress}`;\n\n      /* eslint-disable */\n      const transform = `\n        translate3d(${tX}, ${tY}, ${tZ}px)\n        rotateZ(${params.rotate ? rtl ? -rotate : rotate : 0}deg)\n        scale(${scaleString})\n      `;\n      /* eslint-enable */\n\n      if (params.slideShadows) {\n        // Set shadows\n        let shadowEl = slideEl.querySelector('.swiper-slide-shadow');\n        if (!shadowEl) {\n          shadowEl = createShadow('cards', slideEl);\n        }\n        if (shadowEl) shadowEl.style.opacity = Math.min(Math.max((Math.abs(progress) - 0.5) / 0.5, 0), 1);\n      }\n      slideEl.style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length;\n      const targetEl = effectTarget(params, slideEl);\n      targetEl.style.transform = transform;\n    }\n  };\n  const setTransition = duration => {\n    const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl));\n    transformElements.forEach(el => {\n      el.style.transitionDuration = `${duration}ms`;\n      el.querySelectorAll('.swiper-slide-shadow').forEach(shadowEl => {\n        shadowEl.style.transitionDuration = `${duration}ms`;\n      });\n    });\n    effectVirtualTransitionEnd({\n      swiper,\n      duration,\n      transformElements\n    });\n  };\n  effectInit({\n    effect: 'cards',\n    swiper,\n    on,\n    setTranslate,\n    setTransition,\n    perspective: () => true,\n    overwriteParams: () => ({\n      watchSlidesProgress: true,\n      virtualTranslate: !swiper.params.cssMode\n    })\n  });\n}\n\nexport { EffectCards as default };\n","/* underscore in name -> watch for changes */\nconst paramsList = ['eventsPrefix', 'injectStyles', 'injectStylesUrls', 'modules', 'init', '_direction', 'oneWayMovement', 'touchEventsTarget', 'initialSlide', '_speed', 'cssMode', 'updateOnWindowResize', 'resizeObserver', 'nested', 'focusableElements', '_enabled', '_width', '_height', 'preventInteractionOnTransition', 'userAgent', 'url', '_edgeSwipeDetection', '_edgeSwipeThreshold', '_freeMode', '_autoHeight', 'setWrapperSize', 'virtualTranslate', '_effect', 'breakpoints', '_spaceBetween', '_slidesPerView', 'maxBackfaceHiddenSlides', '_grid', '_slidesPerGroup', '_slidesPerGroupSkip', '_slidesPerGroupAuto', '_centeredSlides', '_centeredSlidesBounds', '_slidesOffsetBefore', '_slidesOffsetAfter', 'normalizeSlideIndex', '_centerInsufficientSlides', '_watchOverflow', 'roundLengths', 'touchRatio', 'touchAngle', 'simulateTouch', '_shortSwipes', '_longSwipes', 'longSwipesRatio', 'longSwipesMs', '_followFinger', 'allowTouchMove', '_threshold', 'touchMoveStopPropagation', 'touchStartPreventDefault', 'touchStartForcePreventDefault', 'touchReleaseOnEdges', 'uniqueNavElements', '_resistance', '_resistanceRatio', '_watchSlidesProgress', '_grabCursor', 'preventClicks', 'preventClicksPropagation', '_slideToClickedSlide', '_loop', 'loopedSlides', 'loopPreventsSliding', '_rewind', '_allowSlidePrev', '_allowSlideNext', '_swipeHandler', '_noSwiping', 'noSwipingClass', 'noSwipingSelector', 'passiveListeners', 'containerModifierClass', 'slideClass', 'slideActiveClass', 'slideVisibleClass', 'slideNextClass', 'slidePrevClass', 'wrapperClass', 'lazyPreloaderClass', 'lazyPreloadPrevNext', 'runCallbacksOnInit', 'observer', 'observeParents', 'observeSlideChildren',\n// modules\n'a11y', '_autoplay', '_controller', 'coverflowEffect', 'cubeEffect', 'fadeEffect', 'flipEffect', 'creativeEffect', 'cardsEffect', 'hashNavigation', 'history', 'keyboard', 'mousewheel', '_navigation', '_pagination', 'parallax', '_scrollbar', '_thumbs', 'virtual', 'zoom', 'control'];\n\nfunction isObject(o) {\n  return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object';\n}\nfunction extend(target, src) {\n  const noExtend = ['__proto__', 'constructor', 'prototype'];\n  Object.keys(src).filter(key => noExtend.indexOf(key) < 0).forEach(key => {\n    if (typeof target[key] === 'undefined') target[key] = src[key];else if (isObject(src[key]) && isObject(target[key]) && Object.keys(src[key]).length > 0) {\n      if (src[key].__swiper__) target[key] = src[key];else extend(target[key], src[key]);\n    } else {\n      target[key] = src[key];\n    }\n  });\n}\nfunction needsNavigation(params) {\n  if (params === void 0) {\n    params = {};\n  }\n  return params.navigation && typeof params.navigation.nextEl === 'undefined' && typeof params.navigation.prevEl === 'undefined';\n}\nfunction needsPagination(params) {\n  if (params === void 0) {\n    params = {};\n  }\n  return params.pagination && typeof params.pagination.el === 'undefined';\n}\nfunction needsScrollbar(params) {\n  if (params === void 0) {\n    params = {};\n  }\n  return params.scrollbar && typeof params.scrollbar.el === 'undefined';\n}\nfunction uniqueClasses(classNames) {\n  if (classNames === void 0) {\n    classNames = '';\n  }\n  const classes = classNames.split(' ').map(c => c.trim()).filter(c => !!c);\n  const unique = [];\n  classes.forEach(c => {\n    if (unique.indexOf(c) < 0) unique.push(c);\n  });\n  return unique.join(' ');\n}\nfunction attrToProp(attrName) {\n  if (attrName === void 0) {\n    attrName = '';\n  }\n  return attrName.replace(/-[a-z]/g, l => l.toUpperCase().replace('-', ''));\n}\nfunction wrapperClass(className) {\n  if (className === void 0) {\n    className = '';\n  }\n  if (!className) return 'swiper-wrapper';\n  if (!className.includes('swiper-wrapper')) return `swiper-wrapper ${className}`;\n  return className;\n}\n\nfunction updateSwiper(_ref) {\n  let {\n    swiper,\n    slides,\n    passedParams,\n    changedParams,\n    nextEl,\n    prevEl,\n    scrollbarEl,\n    paginationEl\n  } = _ref;\n  const updateParams = changedParams.filter(key => key !== 'children' && key !== 'direction' && key !== 'wrapperClass');\n  const {\n    params: currentParams,\n    pagination,\n    navigation,\n    scrollbar,\n    virtual,\n    thumbs\n  } = swiper;\n  let needThumbsInit;\n  let needControllerInit;\n  let needPaginationInit;\n  let needScrollbarInit;\n  let needNavigationInit;\n  let loopNeedDestroy;\n  let loopNeedEnable;\n  let loopNeedReloop;\n  if (changedParams.includes('thumbs') && passedParams.thumbs && passedParams.thumbs.swiper && currentParams.thumbs && !currentParams.thumbs.swiper) {\n    needThumbsInit = true;\n  }\n  if (changedParams.includes('controller') && passedParams.controller && passedParams.controller.control && currentParams.controller && !currentParams.controller.control) {\n    needControllerInit = true;\n  }\n  if (changedParams.includes('pagination') && passedParams.pagination && (passedParams.pagination.el || paginationEl) && (currentParams.pagination || currentParams.pagination === false) && pagination && !pagination.el) {\n    needPaginationInit = true;\n  }\n  if (changedParams.includes('scrollbar') && passedParams.scrollbar && (passedParams.scrollbar.el || scrollbarEl) && (currentParams.scrollbar || currentParams.scrollbar === false) && scrollbar && !scrollbar.el) {\n    needScrollbarInit = true;\n  }\n  if (changedParams.includes('navigation') && passedParams.navigation && (passedParams.navigation.prevEl || prevEl) && (passedParams.navigation.nextEl || nextEl) && (currentParams.navigation || currentParams.navigation === false) && navigation && !navigation.prevEl && !navigation.nextEl) {\n    needNavigationInit = true;\n  }\n  const destroyModule = mod => {\n    if (!swiper[mod]) return;\n    swiper[mod].destroy();\n    if (mod === 'navigation') {\n      if (swiper.isElement) {\n        swiper[mod].prevEl.remove();\n        swiper[mod].nextEl.remove();\n      }\n      currentParams[mod].prevEl = undefined;\n      currentParams[mod].nextEl = undefined;\n      swiper[mod].prevEl = undefined;\n      swiper[mod].nextEl = undefined;\n    } else {\n      if (swiper.isElement) {\n        swiper[mod].el.remove();\n      }\n      currentParams[mod].el = undefined;\n      swiper[mod].el = undefined;\n    }\n  };\n  if (changedParams.includes('loop') && swiper.isElement) {\n    if (currentParams.loop && !passedParams.loop) {\n      loopNeedDestroy = true;\n    } else if (!currentParams.loop && passedParams.loop) {\n      loopNeedEnable = true;\n    } else {\n      loopNeedReloop = true;\n    }\n  }\n  updateParams.forEach(key => {\n    if (isObject(currentParams[key]) && isObject(passedParams[key])) {\n      extend(currentParams[key], passedParams[key]);\n      if ((key === 'navigation' || key === 'pagination' || key === 'scrollbar') && 'enabled' in passedParams[key] && !passedParams[key].enabled) {\n        destroyModule(key);\n      }\n    } else {\n      const newValue = passedParams[key];\n      if ((newValue === true || newValue === false) && (key === 'navigation' || key === 'pagination' || key === 'scrollbar')) {\n        if (newValue === false) {\n          destroyModule(key);\n        }\n      } else {\n        currentParams[key] = passedParams[key];\n      }\n    }\n  });\n  if (updateParams.includes('controller') && !needControllerInit && swiper.controller && swiper.controller.control && currentParams.controller && currentParams.controller.control) {\n    swiper.controller.control = currentParams.controller.control;\n  }\n  if (changedParams.includes('children') && slides && virtual && currentParams.virtual.enabled) {\n    virtual.slides = slides;\n    virtual.update(true);\n  }\n  if (changedParams.includes('children') && slides && currentParams.loop) {\n    loopNeedReloop = true;\n  }\n  if (needThumbsInit) {\n    const initialized = thumbs.init();\n    if (initialized) thumbs.update(true);\n  }\n  if (needControllerInit) {\n    swiper.controller.control = currentParams.controller.control;\n  }\n  if (needPaginationInit) {\n    if (swiper.isElement && (!paginationEl || typeof paginationEl === 'string')) {\n      paginationEl = document.createElement('div');\n      paginationEl.classList.add('swiper-pagination');\n      paginationEl.part.add('pagination');\n      swiper.el.appendChild(paginationEl);\n    }\n    if (paginationEl) currentParams.pagination.el = paginationEl;\n    pagination.init();\n    pagination.render();\n    pagination.update();\n  }\n  if (needScrollbarInit) {\n    if (swiper.isElement && (!scrollbarEl || typeof scrollbarEl === 'string')) {\n      scrollbarEl = document.createElement('div');\n      scrollbarEl.classList.add('swiper-scrollbar');\n      scrollbarEl.part.add('scrollbar');\n      swiper.el.appendChild(scrollbarEl);\n    }\n    if (scrollbarEl) currentParams.scrollbar.el = scrollbarEl;\n    scrollbar.init();\n    scrollbar.updateSize();\n    scrollbar.setTranslate();\n  }\n  if (needNavigationInit) {\n    if (swiper.isElement) {\n      if (!nextEl || typeof nextEl === 'string') {\n        nextEl = document.createElement('div');\n        nextEl.classList.add('swiper-button-next');\n        nextEl.innerHTML = swiper.hostEl.constructor.nextButtonSvg;\n        nextEl.part.add('button-next');\n        swiper.el.appendChild(nextEl);\n      }\n      if (!prevEl || typeof prevEl === 'string') {\n        prevEl = document.createElement('div');\n        prevEl.classList.add('swiper-button-prev');\n        prevEl.innerHTML = swiper.hostEl.constructor.prevButtonSvg;\n        prevEl.part.add('button-prev');\n        swiper.el.appendChild(prevEl);\n      }\n    }\n    if (nextEl) currentParams.navigation.nextEl = nextEl;\n    if (prevEl) currentParams.navigation.prevEl = prevEl;\n    navigation.init();\n    navigation.update();\n  }\n  if (changedParams.includes('allowSlideNext')) {\n    swiper.allowSlideNext = passedParams.allowSlideNext;\n  }\n  if (changedParams.includes('allowSlidePrev')) {\n    swiper.allowSlidePrev = passedParams.allowSlidePrev;\n  }\n  if (changedParams.includes('direction')) {\n    swiper.changeDirection(passedParams.direction, false);\n  }\n  if (loopNeedDestroy || loopNeedReloop) {\n    swiper.loopDestroy();\n  }\n  if (loopNeedEnable || loopNeedReloop) {\n    swiper.loopCreate();\n  }\n  swiper.update();\n}\n\nexport { needsPagination as a, needsScrollbar as b, attrToProp as c, uniqueClasses as d, extend as e, isObject as i, needsNavigation as n, paramsList as p, updateSwiper as u, wrapperClass as w };\n","import { e as extend, c as attrToProp, p as paramsList } from './update-swiper.mjs';\nimport { d as defaults } from './swiper-core.mjs';\n\nconst formatValue = val => {\n  if (parseFloat(val) === Number(val)) return Number(val);\n  if (val === 'true') return true;\n  if (val === '') return true;\n  if (val === 'false') return false;\n  if (val === 'null') return null;\n  if (val === 'undefined') return undefined;\n  if (typeof val === 'string' && val.includes('{') && val.includes('}') && val.includes('\"')) {\n    let v;\n    try {\n      v = JSON.parse(val);\n    } catch (err) {\n      v = val;\n    }\n    return v;\n  }\n  return val;\n};\nconst modulesParamsList = ['a11y', 'autoplay', 'controller', 'cards-effect', 'coverflow-effect', 'creative-effect', 'cube-effect', 'fade-effect', 'flip-effect', 'free-mode', 'grid', 'hash-navigation', 'history', 'keyboard', 'mousewheel', 'navigation', 'pagination', 'parallax', 'scrollbar', 'thumbs', 'virtual', 'zoom'];\nfunction getParams(element, propName, propValue) {\n  const params = {};\n  const passedParams = {};\n  extend(params, defaults);\n  const localParamsList = [...paramsList, 'on'];\n  const allowedParams = localParamsList.map(key => key.replace(/_/, ''));\n\n  // First check props\n  localParamsList.forEach(paramName => {\n    paramName = paramName.replace('_', '');\n    if (typeof element[paramName] !== 'undefined') {\n      passedParams[paramName] = element[paramName];\n    }\n  });\n\n  // Attributes\n  const attrsList = [...element.attributes];\n  if (typeof propName === 'string' && typeof propValue !== 'undefined') {\n    attrsList.push({\n      name: propName,\n      value: propValue\n    });\n  }\n  attrsList.forEach(attr => {\n    const moduleParam = modulesParamsList.filter(mParam => attr.name.indexOf(`${mParam}-`) === 0)[0];\n    if (moduleParam) {\n      const parentObjName = attrToProp(moduleParam);\n      const subObjName = attrToProp(attr.name.split(`${moduleParam}-`)[1]);\n      if (typeof passedParams[parentObjName] === 'undefined') passedParams[parentObjName] = {};\n      if (passedParams[parentObjName] === true) {\n        passedParams[parentObjName] = {\n          enabled: true\n        };\n      }\n      passedParams[parentObjName][subObjName] = formatValue(attr.value);\n    } else {\n      const name = attrToProp(attr.name);\n      if (!allowedParams.includes(name)) return;\n      const value = formatValue(attr.value);\n      if (passedParams[name] && modulesParamsList.includes(attr.name)) {\n        if (passedParams[name].constructor !== Object) {\n          passedParams[name] = {};\n        }\n        passedParams[name].enabled = value;\n      } else {\n        passedParams[name] = value;\n      }\n    }\n  });\n  extend(params, passedParams);\n  if (params.navigation) {\n    params.navigation = {\n      prevEl: '.swiper-button-prev',\n      nextEl: '.swiper-button-next',\n      ...(params.navigation !== true ? params.navigation : {})\n    };\n  } else if (params.navigation === false) {\n    delete params.navigation;\n  }\n  if (params.scrollbar) {\n    params.scrollbar = {\n      el: '.swiper-scrollbar',\n      ...(params.scrollbar !== true ? params.scrollbar : {})\n    };\n  } else if (params.scrollbar === false) {\n    delete params.scrollbar;\n  }\n  if (params.pagination) {\n    params.pagination = {\n      el: '.swiper-pagination',\n      ...(params.pagination !== true ? params.pagination : {})\n    };\n  } else if (params.pagination === false) {\n    delete params.pagination;\n  }\n  return {\n    params,\n    passedParams\n  };\n}\n\nexport { getParams as g };\n","/**\n * Swiper Custom Element 10.2.0\n * Most modern mobile touch slider and framework with hardware accelerated transitions\n * https://swiperjs.com\n *\n * Copyright 2014-2023 Vladimir Kharlampidi\n *\n * Released under the MIT License\n *\n * Released on: August 17, 2023\n */\n\nimport './swiper-bundle.mjs';\nimport { p as paramsList, n as needsNavigation, a as needsPagination, b as needsScrollbar, u as updateSwiper, c as attrToProp } from './shared/update-swiper.mjs';\nimport { g as getParams } from './shared/get-element-params.mjs';\nimport { S as Swiper } from './shared/swiper-core.mjs';\n\n/* eslint-disable spaced-comment */\n\nconst SwiperCSS = `:host{--swiper-theme-color:#007aff}:host{position:relative;display:block;margin-left:auto;margin-right:auto;z-index:1}.swiper{width:100%;height:100%;margin-left:auto;margin-right:auto;position:relative;overflow:hidden;overflow:clip;list-style:none;padding:0;z-index:1;display:block}.swiper-vertical>.swiper-wrapper{flex-direction:column}.swiper-wrapper{position:relative;width:100%;height:100%;z-index:1;display:flex;transition-property:transform;transition-timing-function:var(--swiper-wrapper-transition-timing-function,initial);box-sizing:content-box}.swiper-android ::slotted(swiper-slide),.swiper-ios ::slotted(swiper-slide),.swiper-wrapper{transform:translate3d(0px,0,0)}.swiper-horizontal{touch-action:pan-y}.swiper-vertical{touch-action:pan-x}::slotted(swiper-slide){flex-shrink:0;width:100%;height:100%;position:relative;transition-property:transform;display:block}::slotted(.swiper-slide-invisible-blank){visibility:hidden}.swiper-autoheight,.swiper-autoheight ::slotted(swiper-slide){height:auto}.swiper-autoheight .swiper-wrapper{align-items:flex-start;transition-property:transform,height}.swiper-backface-hidden ::slotted(swiper-slide){transform:translateZ(0);-webkit-backface-visibility:hidden;backface-visibility:hidden}.swiper-3d.swiper-css-mode .swiper-wrapper{perspective:1200px}.swiper-3d .swiper-wrapper{transform-style:preserve-3d}.swiper-3d{perspective:1200px}.swiper-3d .swiper-cube-shadow,.swiper-3d ::slotted(swiper-slide){transform-style:preserve-3d}.swiper-css-mode>.swiper-wrapper{overflow:auto;scrollbar-width:none;-ms-overflow-style:none}.swiper-css-mode>.swiper-wrapper::-webkit-scrollbar{display:none}.swiper-css-mode ::slotted(swiper-slide){scroll-snap-align:start start}.swiper-css-mode.swiper-horizontal>.swiper-wrapper{scroll-snap-type:x mandatory}.swiper-css-mode.swiper-vertical>.swiper-wrapper{scroll-snap-type:y mandatory}.swiper-css-mode.swiper-free-mode>.swiper-wrapper{scroll-snap-type:none}.swiper-css-mode.swiper-free-mode ::slotted(swiper-slide){scroll-snap-align:none}.swiper-css-mode.swiper-centered>.swiper-wrapper::before{content:'';flex-shrink:0;order:9999}.swiper-css-mode.swiper-centered ::slotted(swiper-slide){scroll-snap-align:center center;scroll-snap-stop:always}.swiper-css-mode.swiper-centered.swiper-horizontal ::slotted(swiper-slide):first-child{margin-inline-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-horizontal>.swiper-wrapper::before{height:100%;min-height:1px;width:var(--swiper-centered-offset-after)}.swiper-css-mode.swiper-centered.swiper-vertical ::slotted(swiper-slide):first-child{margin-block-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-vertical>.swiper-wrapper::before{width:100%;min-width:1px;height:var(--swiper-centered-offset-after)}.swiper-virtual ::slotted(swiper-slide){-webkit-backface-visibility:hidden;transform:translateZ(0)}.swiper-virtual.swiper-css-mode .swiper-wrapper::after{content:'';position:absolute;left:0;top:0;pointer-events:none}.swiper-virtual.swiper-css-mode.swiper-horizontal .swiper-wrapper::after{height:1px;width:var(--swiper-virtual-size)}.swiper-virtual.swiper-css-mode.swiper-vertical .swiper-wrapper::after{width:1px;height:var(--swiper-virtual-size)}:host{--swiper-navigation-size:44px}.swiper-button-next,.swiper-button-prev{position:absolute;top:var(--swiper-navigation-top-offset,50%);width:calc(var(--swiper-navigation-size)/ 44 * 27);height:var(--swiper-navigation-size);margin-top:calc(0px - (var(--swiper-navigation-size)/ 2));z-index:10;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--swiper-navigation-color,var(--swiper-theme-color))}.swiper-button-next.swiper-button-disabled,.swiper-button-prev.swiper-button-disabled{opacity:.35;cursor:auto;pointer-events:none}.swiper-button-next.swiper-button-hidden,.swiper-button-prev.swiper-button-hidden{opacity:0;cursor:auto;pointer-events:none}.swiper-navigation-disabled .swiper-button-next,.swiper-navigation-disabled .swiper-button-prev{display:none!important}.swiper-button-next svg,.swiper-button-prev svg{width:100%;height:100%;object-fit:contain;transform-origin:center}.swiper-rtl .swiper-button-next svg,.swiper-rtl .swiper-button-prev svg{transform:rotate(180deg)}.swiper-button-prev,.swiper-rtl .swiper-button-next{left:var(--swiper-navigation-sides-offset,10px);right:auto}.swiper-button-next,.swiper-rtl .swiper-button-prev{right:var(--swiper-navigation-sides-offset,10px);left:auto}.swiper-button-lock{display:none}.swiper-pagination{position:absolute;text-align:center;transition:.3s opacity;transform:translate3d(0,0,0);z-index:10}.swiper-pagination.swiper-pagination-hidden{opacity:0}.swiper-pagination-disabled>.swiper-pagination,.swiper-pagination.swiper-pagination-disabled{display:none!important}.swiper-horizontal>.swiper-pagination-bullets,.swiper-pagination-bullets.swiper-pagination-horizontal,.swiper-pagination-custom,.swiper-pagination-fraction{bottom:var(--swiper-pagination-bottom,8px);top:var(--swiper-pagination-top,auto);left:0;width:100%}.swiper-pagination-bullets-dynamic{overflow:hidden;font-size:0}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transform:scale(.33);position:relative}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-main{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev-prev{transform:scale(.33)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next-next{transform:scale(.33)}.swiper-pagination-bullet{width:var(--swiper-pagination-bullet-width,var(--swiper-pagination-bullet-size,8px));height:var(--swiper-pagination-bullet-height,var(--swiper-pagination-bullet-size,8px));display:inline-block;border-radius:var(--swiper-pagination-bullet-border-radius,50%);background:var(--swiper-pagination-bullet-inactive-color,#000);opacity:var(--swiper-pagination-bullet-inactive-opacity, .2)}button.swiper-pagination-bullet{border:none;margin:0;padding:0;box-shadow:none;-webkit-appearance:none;appearance:none}.swiper-pagination-clickable .swiper-pagination-bullet{cursor:pointer}.swiper-pagination-bullet:only-child{display:none!important}.swiper-pagination-bullet-active{opacity:var(--swiper-pagination-bullet-opacity, 1);background:var(--swiper-pagination-color,var(--swiper-theme-color))}.swiper-pagination-vertical.swiper-pagination-bullets,.swiper-vertical>.swiper-pagination-bullets{right:var(--swiper-pagination-right,8px);left:var(--swiper-pagination-left,auto);top:50%;transform:translate3d(0px,-50%,0)}.swiper-pagination-vertical.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets .swiper-pagination-bullet{margin:var(--swiper-pagination-bullet-vertical-gap,6px) 0;display:block}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{top:50%;transform:translateY(-50%);width:8px}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{display:inline-block;transition:.2s transform,.2s top}.swiper-horizontal>.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets .swiper-pagination-bullet{margin:0 var(--swiper-pagination-bullet-horizontal-gap,4px)}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{left:50%;transform:translateX(-50%);white-space:nowrap}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:.2s transform,.2s left}.swiper-horizontal.swiper-rtl>.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:.2s transform,.2s right}.swiper-pagination-fraction{color:var(--swiper-pagination-fraction-color,inherit)}.swiper-pagination-progressbar{background:var(--swiper-pagination-progressbar-bg-color,rgba(0,0,0,.25));position:absolute}.swiper-pagination-progressbar .swiper-pagination-progressbar-fill{background:var(--swiper-pagination-color,var(--swiper-theme-color));position:absolute;left:0;top:0;width:100%;height:100%;transform:scale(0);transform-origin:left top}.swiper-rtl .swiper-pagination-progressbar .swiper-pagination-progressbar-fill{transform-origin:right top}.swiper-horizontal>.swiper-pagination-progressbar,.swiper-pagination-progressbar.swiper-pagination-horizontal,.swiper-pagination-progressbar.swiper-pagination-vertical.swiper-pagination-progressbar-opposite,.swiper-vertical>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite{width:100%;height:var(--swiper-pagination-progressbar-size,4px);left:0;top:0}.swiper-horizontal>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-horizontal.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-vertical,.swiper-vertical>.swiper-pagination-progressbar{width:var(--swiper-pagination-progressbar-size,4px);height:100%;left:0;top:0}.swiper-pagination-lock{display:none}.swiper-scrollbar{border-radius:var(--swiper-scrollbar-border-radius,10px);position:relative;-ms-touch-action:none;background:var(--swiper-scrollbar-bg-color,rgba(0,0,0,.1))}.swiper-scrollbar-disabled>.swiper-scrollbar,.swiper-scrollbar.swiper-scrollbar-disabled{display:none!important}.swiper-horizontal>.swiper-scrollbar,.swiper-scrollbar.swiper-scrollbar-horizontal{position:absolute;left:var(--swiper-scrollbar-sides-offset,1%);bottom:var(--swiper-scrollbar-bottom,4px);top:var(--swiper-scrollbar-top,auto);z-index:50;height:var(--swiper-scrollbar-size,4px);width:calc(100% - 2 * var(--swiper-scrollbar-sides-offset,1%))}.swiper-scrollbar.swiper-scrollbar-vertical,.swiper-vertical>.swiper-scrollbar{position:absolute;left:var(--swiper-scrollbar-left,auto);right:var(--swiper-scrollbar-right,4px);top:var(--swiper-scrollbar-sides-offset,1%);z-index:50;width:var(--swiper-scrollbar-size,4px);height:calc(100% - 2 * var(--swiper-scrollbar-sides-offset,1%))}.swiper-scrollbar-drag{height:100%;width:100%;position:relative;background:var(--swiper-scrollbar-drag-bg-color,rgba(0,0,0,.5));border-radius:var(--swiper-scrollbar-border-radius,10px);left:0;top:0}.swiper-scrollbar-cursor-drag{cursor:move}.swiper-scrollbar-lock{display:none}::slotted(.swiper-slide-zoomed){cursor:move;touch-action:none}.swiper .swiper-notification{position:absolute;left:0;top:0;pointer-events:none;opacity:0;z-index:-1000}.swiper-free-mode>.swiper-wrapper{transition-timing-function:ease-out;margin:0 auto}.swiper-grid>.swiper-wrapper{flex-wrap:wrap}.swiper-grid-column>.swiper-wrapper{flex-wrap:wrap;flex-direction:column}.swiper-fade.swiper-free-mode ::slotted(swiper-slide){transition-timing-function:ease-out}.swiper-fade ::slotted(swiper-slide){pointer-events:none;transition-property:opacity}.swiper-fade ::slotted(swiper-slide) ::slotted(swiper-slide){pointer-events:none}.swiper-fade ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-fade ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-cube{overflow:visible}.swiper-cube ::slotted(swiper-slide){pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1;visibility:hidden;transform-origin:0 0;width:100%;height:100%}.swiper-cube ::slotted(swiper-slide) ::slotted(swiper-slide){pointer-events:none}.swiper-cube.swiper-rtl ::slotted(swiper-slide){transform-origin:100% 0}.swiper-cube ::slotted(.swiper-slide-active),.swiper-cube ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-cube ::slotted(.swiper-slide-active),.swiper-cube ::slotted(.swiper-slide-next),.swiper-cube ::slotted(.swiper-slide-prev){pointer-events:auto;visibility:visible}.swiper-cube .swiper-cube-shadow{position:absolute;left:0;bottom:0px;width:100%;height:100%;opacity:.6;z-index:0}.swiper-cube .swiper-cube-shadow:before{content:'';background:#000;position:absolute;left:0;top:0;bottom:0;right:0;filter:blur(50px)}.swiper-cube ::slotted(.swiper-slide-next)+::slotted(swiper-slide){pointer-events:auto;visibility:visible}.swiper-flip{overflow:visible}.swiper-flip ::slotted(swiper-slide){pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1}.swiper-flip ::slotted(swiper-slide) ::slotted(swiper-slide){pointer-events:none}.swiper-flip ::slotted(.swiper-slide-active),.swiper-flip ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-creative ::slotted(swiper-slide){-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden;transition-property:transform,opacity,height}.swiper-cards{overflow:visible}.swiper-cards ::slotted(swiper-slide){transform-origin:center bottom;-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden}`\nconst SwiperSlideCSS = `::slotted(.swiper-slide-shadow),::slotted(.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-top){position:absolute;left:0;top:0;width:100%;height:100%;pointer-events:none;z-index:10}::slotted(.swiper-slide-shadow){background:rgba(0,0,0,.15)}::slotted(.swiper-slide-shadow-left){background-image:linear-gradient(to left,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-right){background-image:linear-gradient(to right,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-top){background-image:linear-gradient(to top,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-bottom){background-image:linear-gradient(to bottom,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-lazy-preloader{animation:swiper-preloader-spin 1s infinite linear;width:42px;height:42px;position:absolute;left:50%;top:50%;margin-left:-21px;margin-top:-21px;z-index:10;transform-origin:50%;box-sizing:border-box;border:4px solid var(--swiper-preloader-color,var(--swiper-theme-color));border-radius:50%;border-top-color:transparent}@keyframes swiper-preloader-spin{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-top){z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-top){z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}::slotted(.swiper-zoom-container){width:100%;height:100%;display:flex;justify-content:center;align-items:center;text-align:center}::slotted(.swiper-zoom-container)>canvas,::slotted(.swiper-zoom-container)>img,::slotted(.swiper-zoom-container)>svg{max-width:100%;max-height:100%;object-fit:contain}`\n\nclass DummyHTMLElement {}\nconst ClassToExtend = typeof window === 'undefined' || typeof HTMLElement === 'undefined' ? DummyHTMLElement : HTMLElement;\nconst arrowSvg = `<svg width=\"11\" height=\"20\" viewBox=\"0 0 11 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M0.38296 20.0762C0.111788 19.805 0.111788 19.3654 0.38296 19.0942L9.19758 10.2796L0.38296 1.46497C0.111788 1.19379 0.111788 0.754138 0.38296 0.482966C0.654131 0.211794 1.09379 0.211794 1.36496 0.482966L10.4341 9.55214C10.8359 9.9539 10.8359 10.6053 10.4341 11.007L1.36496 20.0762C1.09379 20.3474 0.654131 20.3474 0.38296 20.0762Z\" fill=\"currentColor\"/></svg>\n    `;\nconst addStyle = (shadowRoot, styles) => {\n  if (typeof CSSStyleSheet !== 'undefined' && shadowRoot.adoptedStyleSheets) {\n    const styleSheet = new CSSStyleSheet();\n    styleSheet.replaceSync(styles);\n    shadowRoot.adoptedStyleSheets = [styleSheet];\n  } else {\n    const style = document.createElement('style');\n    style.rel = 'stylesheet';\n    style.textContent = styles;\n    shadowRoot.appendChild(style);\n  }\n};\nclass SwiperContainer extends ClassToExtend {\n  constructor() {\n    super();\n    this.attachShadow({\n      mode: 'open'\n    });\n  }\n  static get nextButtonSvg() {\n    return arrowSvg;\n  }\n  static get prevButtonSvg() {\n    return arrowSvg.replace('/></svg>', ' transform-origin=\"center\" transform=\"rotate(180)\"/></svg>');\n  }\n  cssStyles() {\n    return [SwiperCSS,\n    // eslint-disable-line\n    ...(this.injectStyles && Array.isArray(this.injectStyles) ? this.injectStyles : [])].join('\\n');\n  }\n  cssLinks() {\n    return this.injectStylesUrls || [];\n  }\n  calcSlideSlots() {\n    const currentSideSlots = this.slideSlots || 0;\n    // slide slots\n    const slideSlotChildren = [...this.querySelectorAll(`[slot^=slide-]`)].map(child => {\n      return parseInt(child.getAttribute('slot').split('slide-')[1], 10);\n    });\n    this.slideSlots = slideSlotChildren.length ? Math.max(...slideSlotChildren) + 1 : 0;\n    if (!this.rendered) return;\n    if (this.slideSlots > currentSideSlots) {\n      for (let i = currentSideSlots; i < this.slideSlots; i += 1) {\n        const slideEl = document.createElement('swiper-slide');\n        slideEl.setAttribute('part', `slide slide-${i + 1}`);\n        const slotEl = document.createElement('slot');\n        slotEl.setAttribute('name', `slide-${i + 1}`);\n        slideEl.appendChild(slotEl);\n        this.shadowRoot.querySelector('.swiper-wrapper').appendChild(slideEl);\n      }\n    } else if (this.slideSlots < currentSideSlots) {\n      const slides = this.swiper.slides;\n      for (let i = slides.length - 1; i >= 0; i -= 1) {\n        if (i > this.slideSlots) {\n          slides[i].remove();\n        }\n      }\n    }\n  }\n  render() {\n    if (this.rendered) return;\n    this.calcSlideSlots();\n\n    // local styles\n    let localStyles = this.cssStyles();\n    if (this.slideSlots > 0) {\n      localStyles = localStyles.replace(/::slotted\\(([a-z-0-9.]*)\\)/g, '$1');\n    }\n    if (localStyles.length) {\n      addStyle(this.shadowRoot, localStyles);\n    }\n    this.cssLinks().forEach(url => {\n      const linkExists = this.shadowRoot.querySelector(`link[href=\"${url}\"]`);\n      if (linkExists) return;\n      const linkEl = document.createElement('link');\n      linkEl.rel = 'stylesheet';\n      linkEl.href = url;\n      this.shadowRoot.appendChild(linkEl);\n    });\n    // prettier-ignore\n    const el = document.createElement('div');\n    el.classList.add('swiper');\n    el.part = 'container';\n\n    // prettier-ignore\n    el.innerHTML = `\n      <slot name=\"container-start\"></slot>\n      <div class=\"swiper-wrapper\" part=\"wrapper\">\n        <slot></slot>\n        ${Array.from({\n      length: this.slideSlots\n    }).map((_, index) => `\n        <swiper-slide part=\"slide slide-${index}\">\n          <slot name=\"slide-${index}\"></slot>\n        </swiper-slide>\n        `).join('')}\n      </div>\n      <slot name=\"container-end\"></slot>\n      ${needsNavigation(this.passedParams) ? `\n        <div part=\"button-prev\" class=\"swiper-button-prev\">${this.constructor.prevButtonSvg}</div>\n        <div part=\"button-next\" class=\"swiper-button-next\">${this.constructor.nextButtonSvg}</div>\n      ` : ''}\n      ${needsPagination(this.passedParams) ? `\n        <div part=\"pagination\" class=\"swiper-pagination\"></div>\n      ` : ''}\n      ${needsScrollbar(this.passedParams) ? `\n        <div part=\"scrollbar\" class=\"swiper-scrollbar\"></div>\n      ` : ''}\n    `;\n    this.shadowRoot.appendChild(el);\n    this.rendered = true;\n  }\n  initialize() {\n    var _this = this;\n    if (this.initialized) return;\n    this.initialized = true;\n    const {\n      params: swiperParams,\n      passedParams\n    } = getParams(this);\n    this.swiperParams = swiperParams;\n    this.passedParams = passedParams;\n    delete this.swiperParams.init;\n    this.render();\n\n    // eslint-disable-next-line\n    this.swiper = new Swiper(this.shadowRoot.querySelector('.swiper'), {\n      ...(swiperParams.virtual ? {} : {\n        observer: true,\n        observeSlideChildren: this.slideSlots > 0\n      }),\n      ...swiperParams,\n      touchEventsTarget: 'container',\n      onAny: function (name) {\n        if (name === 'observerUpdate') {\n          _this.calcSlideSlots();\n        }\n        const eventName = swiperParams.eventsPrefix ? `${swiperParams.eventsPrefix}${name.toLowerCase()}` : name.toLowerCase();\n        for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n          args[_key - 1] = arguments[_key];\n        }\n        const event = new CustomEvent(eventName, {\n          detail: args,\n          bubbles: true,\n          cancelable: true\n        });\n        _this.dispatchEvent(event);\n      }\n    });\n  }\n  connectedCallback() {\n    if (this.initialized && this.nested && this.closest('swiper-slide') && this.closest('swiper-slide').swiperLoopMoveDOM) {\n      return;\n    }\n    if (this.init === false || this.getAttribute('init') === 'false') {\n      return;\n    }\n    this.initialize();\n  }\n  disconnectedCallback() {\n    if (this.nested && this.closest('swiper-slide') && this.closest('swiper-slide').swiperLoopMoveDOM) {\n      return;\n    }\n    if (this.swiper && this.swiper.destroy) {\n      this.swiper.destroy();\n    }\n    this.initialized = false;\n  }\n  updateSwiperOnPropChange(propName, propValue) {\n    const {\n      params: swiperParams,\n      passedParams\n    } = getParams(this, propName, propValue);\n    this.passedParams = passedParams;\n    this.swiperParams = swiperParams;\n    updateSwiper({\n      swiper: this.swiper,\n      passedParams: this.passedParams,\n      changedParams: [attrToProp(propName)],\n      ...(propName === 'navigation' && passedParams[propName] ? {\n        prevEl: '.swiper-button-prev',\n        nextEl: '.swiper-button-next'\n      } : {}),\n      ...(propName === 'pagination' && passedParams[propName] ? {\n        paginationEl: '.swiper-pagination'\n      } : {}),\n      ...(propName === 'scrollbar' && passedParams[propName] ? {\n        scrollbarEl: '.swiper-scrollbar'\n      } : {})\n    });\n  }\n  attributeChangedCallback(attr, prevValue, newValue) {\n    if (!this.initialized) return;\n    if (prevValue === 'true' && newValue === null) {\n      newValue = false;\n    }\n    this.updateSwiperOnPropChange(attr, newValue);\n  }\n  static get observedAttributes() {\n    const attrs = paramsList.filter(param => param.includes('_')).map(param => param.replace(/[A-Z]/g, v => `-${v}`).replace('_', '').toLowerCase());\n    return attrs;\n  }\n}\nparamsList.forEach(paramName => {\n  if (paramName === 'init') return;\n  paramName = paramName.replace('_', '');\n  Object.defineProperty(SwiperContainer.prototype, paramName, {\n    configurable: true,\n    get() {\n      return (this.passedParams || {})[paramName];\n    },\n    set(value) {\n      if (!this.passedParams) this.passedParams = {};\n      this.passedParams[paramName] = value;\n      if (!this.initialized) return;\n      this.updateSwiperOnPropChange(paramName);\n    }\n  });\n});\nclass SwiperSlide extends ClassToExtend {\n  constructor() {\n    super();\n    this.attachShadow({\n      mode: 'open'\n    });\n  }\n  render() {\n    const lazy = this.lazy || this.getAttribute('lazy') === '' || this.getAttribute('lazy') === 'true';\n    addStyle(this.shadowRoot, SwiperSlideCSS);\n    this.shadowRoot.appendChild(document.createElement('slot'));\n    if (lazy) {\n      const lazyDiv = document.createElement('div');\n      lazyDiv.classList.add('swiper-lazy-preloader');\n      lazyDiv.part.add('preloader');\n      this.shadowRoot.appendChild(lazyDiv);\n    }\n  }\n  initialize() {\n    this.render();\n  }\n  connectedCallback() {\n    this.initialize();\n  }\n}\n\n// eslint-disable-next-line\nconst register = () => {\n  if (typeof window === 'undefined') return;\n  if (!window.customElements.get('swiper-container')) window.customElements.define('swiper-container', SwiperContainer);\n  if (!window.customElements.get('swiper-slide')) window.customElements.define('swiper-slide', SwiperSlide);\n};\nif (typeof window !== 'undefined') {\n  window.SwiperElementRegisterParams = params => {\n    paramsList.push(...params);\n  };\n}\n\nexport { SwiperContainer, SwiperSlide, register };\n","// eslint-disable-next-line\nimport Swiper from 'swiper/bundle';\n// eslint-disable-next-line\nimport { register } from 'swiper/element/bundle';\nimport $ from '../../shared/dom7.js';\nimport ConstructorMethods from '../../shared/constructor-methods.js';\n\nregister();\n\n// UMD_ONLY_START\n/* eslint-disable */\nif (!window.Swiper) {\n  window.Swiper = Swiper;\n}\n/* eslint-enable */\n// UMD_ONLY_END\n\nfunction initSwiper(swiperEl) {\n  const app = this;\n  const $swiperEl = $(swiperEl);\n  if ($swiperEl.length === 0) return;\n  const isElement = $swiperEl[0].swiper && $swiperEl[0].swiper.isElement;\n  if ($swiperEl[0].swiper && !$swiperEl[0].swiper.isElement) return;\n  let initialSlide;\n  let params = {};\n  let isTabs;\n  let isRoutableTabs;\n  if ($swiperEl.hasClass('tabs')) {\n    initialSlide = $swiperEl.children('swiper-slide').indexOf($swiperEl.children('.tab-active')[0]);\n    isTabs = true;\n    isRoutableTabs = $swiperEl.find('.tabs-routable').length > 0;\n  }\n  if ($swiperEl.attr('data-swiper')) {\n    params = JSON.parse($swiperEl.attr('data-swiper'));\n  } else if ($swiperEl[0].f7SwiperParams) {\n    params = $swiperEl[0].f7SwiperParams;\n  } else {\n    params = $swiperEl.dataset();\n    Object.keys(params).forEach((key) => {\n      const value = params[key];\n      if (typeof value === 'string' && value.indexOf('{') === 0 && value.indexOf('}') > 0) {\n        try {\n          params[key] = JSON.parse(value);\n        } catch (e) {\n          // not JSON\n        }\n      }\n    });\n  }\n\n  if (typeof params.initialSlide === 'undefined' && typeof initialSlide !== 'undefined') {\n    params.initialSlide = initialSlide;\n  }\n\n  const swiper = isElement ? $swiperEl[0].swiper : app.swiper.create($swiperEl[0], params);\n\n  if (isElement) {\n    swiper.slideTo(initialSlide, 0);\n  }\n\n  function updateSwiper() {\n    swiper.update();\n  }\n\n  const $tabEl = $swiperEl\n    .parents('.tab')\n    .filter((tabEl) => {\n      return (\n        $(tabEl).parent('.tabs').parent('.tabs-animated-wrap, swiper-container.tabs').length === 0\n      );\n    })\n    .eq(0);\n  $swiperEl.parents('.popup, .login-screen, .sheet-modal, .popover').on('modal:open', updateSwiper);\n  $swiperEl.parents('.panel').on('panel:open', updateSwiper);\n  if ($tabEl && $tabEl.length) {\n    $tabEl.on('tab:show', updateSwiper);\n  }\n\n  swiper.on('beforeDestroy', () => {\n    $swiperEl\n      .parents('.popup, .login-screen, .sheet-modal, .popover')\n      .off('modal:open', updateSwiper);\n    $swiperEl.parents('.panel').off('panel:open', updateSwiper);\n    if ($tabEl && $tabEl.length) {\n      $tabEl.off('tab:show', updateSwiper);\n    }\n  });\n  if (isTabs) {\n    swiper.on('slideChange', () => {\n      if (isRoutableTabs) {\n        let view = app.views.get($swiperEl.parents('.view'));\n        if (!view) view = app.views.main;\n        const router = view.router;\n        const tabRouteUrl = router.findTabRouteUrl($(swiper.slides).eq(swiper.activeIndex)[0]);\n        if (tabRouteUrl) {\n          setTimeout(() => {\n            router.navigate(tabRouteUrl);\n          }, 0);\n        }\n      } else {\n        app.tab.show({\n          tabEl: $(swiper.slides).eq(swiper.activeIndex),\n        });\n      }\n    });\n  }\n}\n\nexport default {\n  name: 'swiper',\n  static: {\n    Swiper,\n  },\n  create() {\n    const app = this;\n    app.swiper = ConstructorMethods({\n      defaultSelector: '.swiper',\n      constructor: Swiper,\n      domProp: 'swiper',\n    });\n  },\n  on: {\n    pageMounted(page) {\n      const app = this;\n      page.$el.find('swiper-container.tabs').each((swiperEl) => {\n        initSwiper.call(app, swiperEl);\n      });\n    },\n    pageInit(page) {\n      const app = this;\n      page.$el.find('swiper-container.tabs').each((swiperEl) => {\n        initSwiper.call(app, swiperEl);\n      });\n    },\n    pageReinit(page) {\n      const app = this;\n      page.$el.find('swiper-container.tabs').each((swiperEl) => {\n        const swiper = app.swiper.get(swiperEl);\n        if (swiper && swiper.update) swiper.update();\n      });\n    },\n    tabMounted(tabEl) {\n      const app = this;\n      $(tabEl)\n        .find('swiper-container.tabs')\n        .each((swiperEl) => {\n          initSwiper.call(app, swiperEl);\n        });\n    },\n    tabShow(tabEl) {\n      const app = this;\n      $(tabEl)\n        .find('swiper-container.tabs')\n        .each((swiperEl) => {\n          const swiper = app.swiper.get(swiperEl);\n          if (swiper && swiper.update) swiper.update();\n        });\n    },\n    tabBeforeRemove(tabEl) {\n      const app = this;\n      $(tabEl)\n        .find('swiper-container.tabs')\n        .each((swiperEl) => {\n          app.swiper.destroy(swiperEl);\n        });\n    },\n  },\n};\n","/* eslint indent: [\"off\"] */\nimport { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { extend, now, nextTick, deleteProps } from '../../shared/utils.js';\nimport Framework7Class from '../../shared/class.js';\n/** @jsx $jsx */\nimport $jsx from '../../shared/$jsx.js';\n\nclass PhotoBrowser extends Framework7Class {\n  constructor(app, params = {}) {\n    super(params, [app]);\n\n    const pb = this;\n    pb.app = app;\n\n    const defaults = extend(\n      {\n        on: {},\n      },\n      app.params.photoBrowser,\n    );\n\n    // Extend defaults with modules params\n    pb.useModulesParams(defaults);\n\n    pb.params = extend(defaults, params);\n\n    extend(pb, {\n      exposed: false,\n      opened: false,\n      activeIndex: pb.params.swiper.initialSlide,\n      url: pb.params.url,\n      swipeToClose: {\n        allow: true,\n        isTouched: false,\n        diff: undefined,\n        start: undefined,\n        current: undefined,\n        started: false,\n        activeSlide: undefined,\n        timeStart: undefined,\n      },\n    });\n\n    // Install Modules\n    pb.useModules();\n\n    // Init\n    pb.init();\n  }\n\n  get view() {\n    const { params, app } = this;\n    return params.view || app.views.main;\n  }\n\n  onSlideChange(swiper) {\n    const pb = this;\n    pb.activeIndex = swiper.activeIndex;\n\n    let current = swiper.activeIndex + 1;\n    let total = pb.params.virtualSlides ? pb.params.photos.length : swiper.slides.length;\n    if (swiper.params.loop) {\n      total -= 2;\n      current -= swiper.loopedSlides;\n      if (current < 1) current = total + current;\n      if (current > total) current -= total;\n    }\n\n    const $activeSlideEl = pb.params.virtualSlides\n      ? $(swiper.wrapperEl).find(`.swiper-slide[data-swiper-slide-index=\"${swiper.activeIndex}\"]`)\n      : $(swiper.slides).eq(swiper.activeIndex);\n    const $previousSlideEl = pb.params.virtualSlides\n      ? $(swiper.wrapperEl).find(`.swiper-slide[data-swiper-slide-index=\"${swiper.previousIndex}\"]`)\n      : $(swiper.slides).eq(swiper.previousIndex);\n\n    let $currentEl = pb.$el.find('.photo-browser-current');\n    let $totalEl = pb.$el.find('.photo-browser-total');\n    let navbarEl;\n    if (\n      pb.params.type === 'page' &&\n      pb.params.navbar &&\n      $currentEl.length === 0 &&\n      pb.app.theme === 'ios'\n    ) {\n      navbarEl = pb.app.navbar.getElByPage(pb.$el);\n      if (navbarEl) {\n        $currentEl = $(navbarEl).find('.photo-browser-current');\n        $totalEl = $(navbarEl).find('.photo-browser-total');\n      }\n    }\n    if ($currentEl.length && $totalEl.length) {\n      $currentEl.text(current);\n      $totalEl.text(total);\n      if (!navbarEl) navbarEl = $currentEl.parents('.navbar')[0];\n      if (navbarEl) {\n        pb.app.navbar.size(navbarEl);\n      }\n    }\n\n    // Update captions\n    if (pb.captions.length > 0) {\n      const captionIndex = swiper.params.loop\n        ? $activeSlideEl.attr('data-swiper-slide-index')\n        : pb.activeIndex;\n      pb.$captionsContainerEl\n        .find('.photo-browser-caption-active')\n        .removeClass('photo-browser-caption-active');\n      pb.$captionsContainerEl\n        .find(`[data-caption-index=\"${captionIndex}\"]`)\n        .addClass('photo-browser-caption-active');\n    }\n\n    // Stop Video\n    const previousSlideVideo = $previousSlideEl.find('video');\n    if (previousSlideVideo.length > 0) {\n      if ('pause' in previousSlideVideo[0]) previousSlideVideo[0].pause();\n    }\n  }\n\n  onTouchStart() {\n    const pb = this;\n    const swipeToClose = pb.swipeToClose;\n    if (!swipeToClose.allow) return;\n    swipeToClose.isTouched = true;\n  }\n\n  onTouchMove(e) {\n    const pb = this;\n    const swipeToClose = pb.swipeToClose;\n\n    if (!swipeToClose.isTouched) return;\n    if (!swipeToClose.started) {\n      swipeToClose.started = true;\n      swipeToClose.start = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n      if (pb.params.virtualSlides) {\n        swipeToClose.activeSlide = $(pb.swiper.wrapperEl).children('.swiper-slide-active');\n      } else {\n        swipeToClose.activeSlide = $(pb.swiper.slides).eq(pb.swiper.activeIndex);\n      }\n      swipeToClose.timeStart = now();\n    }\n    e.preventDefault();\n    swipeToClose.current = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n    swipeToClose.diff = swipeToClose.start - swipeToClose.current;\n    pb.$el.transition(0).transform(`translate3d(0,${-swipeToClose.diff}px,0)`);\n  }\n\n  onTouchEnd() {\n    const pb = this;\n    const swipeToClose = pb.swipeToClose;\n    swipeToClose.isTouched = false;\n    if (!swipeToClose.started) {\n      swipeToClose.started = false;\n      return;\n    }\n    swipeToClose.started = false;\n    swipeToClose.allow = false;\n    const diff = Math.abs(swipeToClose.diff);\n    const timeDiff = new Date().getTime() - swipeToClose.timeStart;\n    if ((timeDiff < 300 && diff > 20) || (timeDiff >= 300 && diff > 100)) {\n      nextTick(() => {\n        if (pb.$el) {\n          if (swipeToClose.diff < 0) pb.$el.addClass('swipe-close-to-bottom');\n          else pb.$el.addClass('swipe-close-to-top');\n        }\n        pb.emit('local::swipeToClose', pb);\n        pb.$el.transform('').transition('');\n        pb.close();\n        swipeToClose.allow = true;\n      });\n      return;\n    }\n    if (diff !== 0) {\n      pb.$el.addClass('photo-browser-transitioning').transitionEnd(() => {\n        swipeToClose.allow = true;\n        pb.$el.removeClass('photo-browser-transitioning');\n      });\n    } else {\n      swipeToClose.allow = true;\n    }\n    nextTick(() => {\n      pb.$el.transform('').transition('');\n    });\n  }\n\n  // Render Functions\n  renderNavbar() {\n    const pb = this;\n    if (pb.params.renderNavbar) return pb.params.renderNavbar.call(pb);\n\n    const iconsColor = pb.params.iconsColor;\n\n    const pageBackLinkText =\n      pb.app.theme === 'ios' && pb.params.pageBackLinkText ? pb.params.pageBackLinkText : '';\n\n    const renderNavbarCount =\n      typeof pb.params.navbarShowCount === 'undefined'\n        ? pb.params.photos.length > 1\n        : pb.params.navbarShowCount;\n\n    const isPopup = pb.params.type !== 'page';\n    return (\n      <div\n        class={`navbar navbar-photo-browser ${\n          pb.params.theme === 'dark' ? 'navbar-photo-browser-dark' : ''\n        }`}\n      >\n        <div class=\"navbar-bg\"></div>\n        <div class=\"navbar-inner navbar-inner-centered-title sliding\">\n          {!isPopup && (\n            <div class=\"left\">\n              <a class={`link ${!pageBackLinkText ? 'icon-only' : ''} back`}>\n                <i class={`icon icon-back ${iconsColor ? `color-${iconsColor}` : ''}`}></i>\n                {pageBackLinkText && <span>{pageBackLinkText}</span>}\n              </a>\n            </div>\n          )}\n          {renderNavbarCount && (\n            <div class=\"title\">\n              <span class=\"photo-browser-current\"></span>\n              <span class=\"photo-browser-of\">{pb.params.navbarOfText}</span>\n              <span class=\"photo-browser-total\"></span>\n            </div>\n          )}\n          {isPopup && (pb.params.popupCloseLinkText || pb.params.popupCloseLinkIcon) && (\n            <div class=\"right\">\n              <a class=\"link popup-close\" data-popup=\".photo-browser-popup\">\n                {pb.params.popupCloseLinkIcon && pb.app.theme === 'ios' && (\n                  <i>\n                    <svg\n                      xmlns=\"http://www.w3.org/2000/svg\"\n                      width=\"56\"\n                      height=\"56\"\n                      viewBox=\"0 0 56 56\"\n                    >\n                      <path\n                        fill=\"currentColor\"\n                        d=\"M 10.0234 43.0234 C 9.2266 43.8203 9.2031 45.1797 10.0234 45.9766 C 10.8438 46.7734 12.1797 46.7734 13.0000 45.9766 L 28.0000 30.9766 L 43.0000 45.9766 C 43.7969 46.7734 45.1563 46.7969 45.9766 45.9766 C 46.7734 45.1562 46.7734 43.8203 45.9766 43.0234 L 30.9531 28.0000 L 45.9766 13.0000 C 46.7734 12.2031 46.7969 10.8437 45.9766 10.0469 C 45.1328 9.2266 43.7969 9.2266 43.0000 10.0469 L 28.0000 25.0469 L 13.0000 10.0469 C 12.1797 9.2266 10.8203 9.2031 10.0234 10.0469 C 9.2266 10.8672 9.2266 12.2031 10.0234 13.0000 L 25.0234 28.0000 Z\"\n                      />\n                    </svg>\n                  </i>\n                )}\n                {pb.params.popupCloseLinkIcon && pb.app.theme === 'md' && (\n                  <i>\n                    <svg\n                      xmlns=\"http://www.w3.org/2000/svg\"\n                      height=\"24px\"\n                      viewBox=\"0 0 24 24\"\n                      width=\"24px\"\n                      fill=\"currentColor\"\n                    >\n                      <path d=\"M0 0h24v24H0V0z\" fill=\"none\" />\n                      <path d=\"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41z\" />\n                    </svg>\n                  </i>\n                )}\n                {pb.params.popupCloseLinkText && <span>{pb.params.popupCloseLinkText}</span>}\n              </a>\n            </div>\n          )}\n        </div>\n      </div>\n    );\n  }\n\n  renderToolbar() {\n    const pb = this;\n    if (pb.params.renderToolbar) return pb.params.renderToolbar.call(pb);\n\n    const iconsColor = pb.params.iconsColor;\n\n    return (\n      <div class=\"toolbar toolbar-bottom tabbar\">\n        <div class=\"toolbar-inner\">\n          <a class=\"link photo-browser-prev\">\n            <i class={`icon icon-back ${iconsColor ? `color-${iconsColor}` : ''}`}></i>\n          </a>\n          <a class=\"link photo-browser-next\">\n            <i class={`icon icon-forward ${iconsColor ? `color-${iconsColor}` : ''}`}></i>\n          </a>\n        </div>\n      </div>\n    );\n  }\n\n  renderThumbs() {\n    const pb = this;\n\n    return (\n      <div class=\"toolbar toolbar-bottom photo-browser-thumbs\">\n        <div class=\"swiper\">\n          <div class=\"swiper-wrapper\">\n            {pb.params.thumbs.map((thumb, index) => pb.renderThumb(thumb, index))}\n          </div>\n        </div>\n      </div>\n    );\n  }\n\n  renderCaption(caption, index) {\n    const pb = this;\n    if (pb.params.renderCaption) return pb.params.renderCaption.call(pb, caption, index);\n    return (\n      <div class=\"photo-browser-caption\" data-caption-index={index}>\n        {caption}\n      </div>\n    );\n  }\n\n  renderObject(photo, index) {\n    const pb = this;\n    if (pb.params.renderObject) return pb.params.renderObject.call(pb, photo, index);\n    return (\n      <div\n        class=\"photo-browser-slide photo-browser-object-slide swiper-slide\"\n        data-swiper-slide-index={index}\n      >\n        {photo.html ? photo.html : photo}\n      </div>\n    );\n  }\n\n  renderLazyPhoto(photo, index) {\n    const pb = this;\n    if (pb.params.renderLazyPhoto) return pb.params.renderLazyPhoto.call(pb, photo, index);\n    return (\n      <div\n        class=\"photo-browser-slide photo-browser-slide-lazy swiper-slide\"\n        data-swiper-slide-index={index}\n      >\n        <div class=\"swiper-lazy-preloader\"></div>\n        <span class=\"swiper-zoom-container\">\n          <img loading=\"lazy\" src={photo.url ? photo.url : photo} />\n        </span>\n      </div>\n    );\n  }\n\n  renderPhoto(photo, index) {\n    const pb = this;\n    if (pb.params.renderPhoto) return pb.params.renderPhoto.call(pb, photo, index);\n    return (\n      <div class=\"photo-browser-slide swiper-slide\" data-swiper-slide-index={index}>\n        <span class=\"swiper-zoom-container\">\n          <img src={photo.url ? photo.url : photo} />\n        </span>\n      </div>\n    );\n  }\n\n  renderThumb(thumb, index) {\n    const pb = this;\n    const url = typeof thumb === 'string' ? thumb : thumb.url;\n    if (pb.params.renderThumb) return pb.params.renderThumb.call(pb, thumb, index);\n    return (\n      <div class=\"photo-browser-thumbs-slide swiper-slide\" data-swiper-slide-index={index}>\n        {url && <img src={url} loading=\"lazy\" />}\n      </div>\n    );\n  }\n\n  render() {\n    const pb = this;\n    if (pb.params.render) return pb.params.render.call(pb, pb.params);\n    return (\n      <div class={`photo-browser photo-browser-${pb.params.theme}`}>\n        <div class=\"view\">\n          <div\n            class={`page photo-browser-page photo-browser-page-${pb.params.theme} no-toolbar ${\n              !pb.params.navbar ? 'no-navbar' : ''\n            }`}\n            data-name=\"photo-browser-page\"\n          >\n            {pb.params.navbar && pb.renderNavbar()}\n            {pb.params.toolbar && pb.renderToolbar()}\n            {pb.params.thumbs && pb.params.thumbs.length && pb.renderThumbs()}\n            <div\n              class={`photo-browser-captions photo-browser-captions-${\n                pb.params.captionsTheme || pb.params.theme\n              }`}\n            >\n              {pb.params.photos.map((photo, index) => {\n                if (photo.caption) return pb.renderCaption(photo.caption, index);\n                return '';\n              })}\n            </div>\n            <div class=\"photo-browser-swiper-container swiper\">\n              <div class=\"photo-browser-swiper-wrapper swiper-wrapper\">\n                {!pb.params.virtualSlides &&\n                  pb.params.photos.map((photo, index) => {\n                    if (\n                      photo.html ||\n                      ((typeof photo === 'string' || photo instanceof String) &&\n                        photo.indexOf('<') >= 0 &&\n                        photo.indexOf('>') >= 0)\n                    ) {\n                      return pb.renderObject(photo, index);\n                    }\n                    if (pb.params.lazy === true) {\n                      return pb.renderLazyPhoto(photo, index);\n                    }\n                    return pb.renderPhoto(photo, index);\n                  })}\n              </div>\n            </div>\n          </div>\n        </div>\n      </div>\n    );\n  }\n\n  renderStandalone() {\n    const pb = this;\n    if (pb.params.renderStandalone) return pb.params.renderStandalone.call(pb);\n    const standaloneHtml = `<div class=\"popup photo-browser-popup photo-browser-standalone popup-tablet-fullscreen\">${pb.render()}</div>`;\n    return standaloneHtml;\n  }\n\n  renderPage() {\n    const pb = this;\n    if (pb.params.renderPage) return pb.params.renderPage.call(pb);\n    const pageHtml = pb.render();\n\n    return pageHtml;\n  }\n\n  renderPopup() {\n    const pb = this;\n    if (pb.params.renderPopup) return pb.params.renderPopup.call(pb);\n    const popupHtml = `<div class=\"popup photo-browser-popup\">${pb.render()}</div>`;\n\n    return popupHtml;\n  }\n\n  // Callbacks\n  onOpen(type, el) {\n    const pb = this;\n    const app = pb.app;\n    const $el = $(el);\n\n    $el[0].f7PhotoBrowser = pb;\n\n    pb.$el = $el;\n    pb.el = $el[0];\n    pb.openedIn = type;\n    pb.opened = true;\n\n    pb.$swiperContainerEl = pb.$el.find('.photo-browser-swiper-container');\n    pb.$swiperWrapperEl = pb.$el.find('.photo-browser-swiper-wrapper');\n    pb.slides = pb.$el.find('.photo-browser-slide');\n    pb.$captionsContainerEl = pb.$el.find('.photo-browser-captions');\n    pb.captions = pb.$el.find('.photo-browser-caption');\n\n    const hasThumbs = pb.params.thumbs && pb.params.thumbs.length > 0;\n\n    // Init Swiper\n    let clickTimeout;\n    let preventThumbsSlide;\n    let preventMainSlide;\n    const initialSlide = pb.activeIndex;\n    const swiperParams = extend({}, pb.params.swiper, {\n      initialSlide,\n      // cssMode:\n      //   typeof pb.params.swiper.cssMode === 'undefined' && (app.device.ios || app.device.android)\n      //     ? true\n      //     : pb.params.swiper.cssMode,\n      on: {\n        click(e) {\n          clearTimeout(clickTimeout);\n          if (pb.params.exposition) {\n            clickTimeout = setTimeout(() => {\n              pb.expositionToggle();\n            }, 350);\n          }\n          pb.emit('local::tap', e);\n          pb.emit('local::click', e);\n        },\n        doubleClick(e) {\n          clearTimeout(clickTimeout);\n          pb.emit('local::doubleTap', e);\n          pb.emit('local::doubleClick', e);\n        },\n        slideChange(...args) {\n          const swiper = this;\n          if (hasThumbs && pb.thumbsSwiper && !preventMainSlide) {\n            preventThumbsSlide = true;\n            pb.thumbsSwiper.slideTo(pb.swiper.activeIndex);\n            setTimeout(() => {\n              preventThumbsSlide = false;\n            });\n          }\n          pb.onSlideChange(swiper);\n          pb.emit('local::slideChange', ...args);\n        },\n        transitionStart(...args) {\n          pb.emit('local::transitionStart', ...args);\n        },\n        transitionEnd(...args) {\n          pb.emit('local::transitionEnd', ...args);\n        },\n        slideChangeTransitionStart(...args) {\n          const swiper = this;\n          pb.onSlideChange(swiper);\n          pb.emit('local::slideChangeTransitionStart', ...args);\n        },\n        slideChangeTransitionEnd(...args) {\n          pb.emit('local::slideChangeTransitionEnd', ...args);\n        },\n      },\n    });\n    if (pb.params.swipeToClose && pb.params.type !== 'page') {\n      extend(swiperParams.on, {\n        touchStart(swiper, e) {\n          pb.onTouchStart(e);\n          pb.emit('local::touchStart', e);\n        },\n        touchMoveOpposite(swiper, e) {\n          pb.onTouchMove(e);\n          pb.emit('local::touchMoveOpposite', e);\n        },\n        touchEnd(swiper, e) {\n          pb.onTouchEnd(e);\n          pb.emit('local::touchEnd', e);\n        },\n      });\n    }\n    if (pb.params.virtualSlides) {\n      extend(swiperParams, {\n        virtual: {\n          slides: pb.params.photos,\n          renderSlide(photo, index) {\n            if (\n              photo.html ||\n              ((typeof photo === 'string' || photo instanceof String) &&\n                photo.indexOf('<') >= 0 &&\n                photo.indexOf('>') >= 0)\n            ) {\n              return pb.renderObject(photo, index);\n            }\n            if (pb.params.lazy === true) {\n              return pb.renderLazyPhoto(photo, index);\n            }\n            return pb.renderPhoto(photo, index);\n          },\n        },\n      });\n    }\n    const window = getWindow();\n    pb.swiper = app.swiper\n      ? app.swiper.create(pb.$swiperContainerEl[0], swiperParams)\n      : new window.Swiper(pb.$swiperContainerEl[0], swiperParams);\n\n    if (pb.activeIndex === 0 || pb.params.virtualSlides) {\n      pb.onSlideChange(pb.swiper);\n    }\n    if (hasThumbs) {\n      const thumbsSwiperParams = {\n        el: pb.$el.find('.photo-browser-thumbs .swiper')[0],\n        slidesPerView: 'auto',\n        centeredSlides: true,\n        spaceBetween: 4,\n        watchSlidesProgress: true,\n        initialSlide,\n        on: {\n          touchMove() {\n            preventMainSlide = true;\n          },\n          touchEnd() {\n            preventMainSlide = false;\n          },\n          slideChange(s) {\n            if (preventThumbsSlide) return;\n            pb.swiper.slideTo(s.activeIndex, 0);\n          },\n          click(s) {\n            if (!s.clickedSlide) return;\n            const index = parseInt($(s.clickedSlide).attr('data-swiper-slide-index'), 10);\n            s.slideTo(index, 0);\n          },\n        },\n      };\n\n      pb.thumbsSwiper = app.swiper\n        ? app.swiper.create(thumbsSwiperParams)\n        : new window.Swiper(thumbsSwiperParams);\n    }\n\n    if (pb.$el) {\n      pb.$el.trigger('photobrowser:open');\n    }\n    pb.emit('local::open photoBrowserOpen', pb);\n  }\n\n  onOpened() {\n    const pb = this;\n    if (pb.$el && pb.params.type === 'standalone') {\n      pb.$el.css('animation', 'none');\n    }\n    if (pb.$el) {\n      pb.$el.trigger('photobrowser:opened');\n    }\n    pb.emit('local::opened photoBrowserOpened', pb);\n  }\n\n  onClose() {\n    const pb = this;\n    if (pb.destroyed) return;\n\n    // Destroy Swiper\n    if (pb.swiper && pb.swiper.destroy) {\n      pb.swiper.destroy(true, false);\n      pb.swiper = null;\n      delete pb.swiper;\n    }\n    if (pb.thumbsSwiper && pb.thumbsSwiper.destroy) {\n      pb.thumbsSwiper.destroy(true, false);\n      pb.thumbsSwiper = null;\n      delete pb.thumbsSwiper;\n    }\n    if (pb.$el) {\n      pb.$el.trigger('photobrowser:close');\n    }\n    pb.emit('local::close photoBrowserClose', pb);\n  }\n\n  onClosed() {\n    const pb = this;\n    if (pb.destroyed) return;\n    pb.opened = false;\n    pb.$el = null;\n    pb.el = null;\n    delete pb.$el;\n    delete pb.el;\n    if (pb.$el) {\n      pb.$el.trigger('photobrowser:closed');\n    }\n    pb.emit('local::closed photoBrowserClosed', pb);\n  }\n\n  // Open\n  openPage() {\n    const pb = this;\n    if (pb.opened) return pb;\n\n    const pageHtml = pb.renderPage();\n\n    pb.view.router.navigate({\n      url: pb.url,\n      route: {\n        content: pageHtml,\n        path: pb.url,\n        on: {\n          pageBeforeIn(e, page) {\n            pb.view.$el.addClass(\n              `with-photo-browser-page with-photo-browser-page-${pb.params.theme}`,\n            );\n            pb.onOpen('page', page.el);\n          },\n          pageAfterIn(e, page) {\n            pb.onOpened('page', page.el);\n          },\n          pageBeforeOut(e, page) {\n            pb.view.$el.removeClass(\n              `with-photo-browser-page with-photo-browser-page-exposed with-photo-browser-page-${pb.params.theme}`,\n            );\n            pb.onClose('page', page.el);\n          },\n          pageAfterOut(e, page) {\n            pb.onClosed('page', page.el);\n          },\n        },\n      },\n    });\n    return pb;\n  }\n\n  openStandalone() {\n    const pb = this;\n    if (pb.opened) return pb;\n\n    const standaloneHtml = pb.renderStandalone();\n\n    const popupParams = {\n      backdrop: false,\n      content: standaloneHtml,\n      on: {\n        popupOpen(popup) {\n          pb.onOpen('popup', popup.el);\n        },\n        popupOpened(popup) {\n          pb.onOpened('popup', popup.el);\n        },\n        popupClose(popup) {\n          pb.onClose('popup', popup.el);\n        },\n        popupClosed(popup) {\n          pb.onClosed('popup', popup.el);\n        },\n      },\n    };\n\n    if (pb.params.routableModals && pb.view) {\n      pb.view.router.navigate({\n        url: pb.url,\n        route: {\n          path: pb.url,\n          popup: popupParams,\n        },\n      });\n    } else {\n      pb.modal = pb.app.popup.create(popupParams).open();\n    }\n    return pb;\n  }\n\n  openPopup() {\n    const pb = this;\n    if (pb.opened) return pb;\n\n    const popupHtml = pb.renderPopup();\n\n    const popupParams = {\n      content: popupHtml,\n      push: pb.params.popupPush,\n      closeByBackdropClick: pb.params.closeByBackdropClick,\n      on: {\n        popupOpen(popup) {\n          pb.onOpen('popup', popup.el);\n        },\n        popupOpened(popup) {\n          pb.onOpened('popup', popup.el);\n        },\n        popupClose(popup) {\n          pb.onClose('popup', popup.el);\n        },\n        popupClosed(popup) {\n          pb.onClosed('popup', popup.el);\n        },\n      },\n    };\n\n    if (pb.params.routableModals && pb.view) {\n      pb.view.router.navigate({\n        url: pb.url,\n        route: {\n          path: pb.url,\n          popup: popupParams,\n        },\n      });\n    } else {\n      pb.modal = pb.app.popup.create(popupParams).open();\n    }\n    return pb;\n  }\n\n  // Exposition\n  expositionEnable() {\n    const pb = this;\n    if (pb.params.type === 'page') {\n      pb.view.$el.addClass('with-photo-browser-page-exposed');\n    }\n    if (pb.$el) pb.$el.addClass('photo-browser-exposed');\n    if (pb.params.expositionHideCaptions)\n      pb.$captionsContainerEl.addClass('photo-browser-captions-exposed');\n    pb.exposed = true;\n    return pb;\n  }\n\n  expositionDisable() {\n    const pb = this;\n    if (pb.params.type === 'page') {\n      pb.view.$el.removeClass('with-photo-browser-page-exposed');\n    }\n    if (pb.$el) pb.$el.removeClass('photo-browser-exposed');\n    if (pb.params.expositionHideCaptions)\n      pb.$captionsContainerEl.removeClass('photo-browser-captions-exposed');\n    pb.exposed = false;\n    return pb;\n  }\n\n  expositionToggle() {\n    const pb = this;\n    if (pb.params.type === 'page') {\n      pb.view.$el.toggleClass('with-photo-browser-page-exposed');\n    }\n    if (pb.$el) pb.$el.toggleClass('photo-browser-exposed');\n    if (pb.params.expositionHideCaptions)\n      pb.$captionsContainerEl.toggleClass('photo-browser-captions-exposed');\n    pb.exposed = !pb.exposed;\n    return pb;\n  }\n\n  open(index) {\n    const pb = this;\n    const type = pb.params.type;\n    if (pb.opened) {\n      if (pb.swiper && typeof index !== 'undefined') {\n        pb.swiper.slideTo(parseInt(index, 10));\n      }\n      return pb;\n    }\n    if (typeof index !== 'undefined') {\n      pb.activeIndex = index;\n    }\n    if (type === 'standalone') {\n      pb.openStandalone();\n    }\n    if (type === 'page') {\n      pb.openPage();\n    }\n    if (type === 'popup') {\n      pb.openPopup();\n    }\n    return pb;\n  }\n\n  close() {\n    const pb = this;\n    if (!pb.opened) return pb;\n    if ((pb.params.routableModals && pb.view) || pb.openedIn === 'page') {\n      pb.view.router.back();\n    } else {\n      pb.modal.once('modalClosed', () => {\n        nextTick(() => {\n          if (pb.destroyed) return;\n          pb.modal.destroy();\n          delete pb.modal;\n        });\n      });\n      pb.modal.close();\n    }\n    return pb;\n  }\n  // eslint-disable-next-line\n  init() {}\n\n  destroy() {\n    let pb = this;\n    pb.emit('local::beforeDestroy photoBrowserBeforeDestroy', pb);\n    if (pb.$el) {\n      pb.$el.trigger('photobrowser:beforedestroy');\n      pb.$el[0].f7PhotoBrowser = null;\n      delete pb.$el[0].f7PhotoBrowser;\n    }\n    deleteProps(pb);\n    pb.destroyed = true;\n    pb = null;\n  }\n}\n\nexport default PhotoBrowser;\n","import PhotoBrowser from './photo-browser-class.js';\nimport ConstructorMethods from '../../shared/constructor-methods.js';\n\nexport default {\n  name: 'photoBrowser',\n  params: {\n    photoBrowser: {\n      photos: [],\n      thumbs: [],\n      exposition: true,\n      expositionHideCaptions: false,\n      type: 'standalone',\n      navbar: true,\n      toolbar: true,\n      theme: 'light',\n      captionsTheme: undefined,\n      iconsColor: undefined,\n      popupPush: false,\n      swipeToClose: true,\n      pageBackLinkText: 'Back',\n      popupCloseLinkText: undefined,\n      popupCloseLinkIcon: true,\n      navbarOfText: 'of',\n      navbarShowCount: undefined,\n      view: undefined,\n      url: 'photos/',\n      routableModals: false,\n      virtualSlides: true,\n      lazy: true,\n      closeByBackdropClick: true,\n\n      renderNavbar: undefined,\n      renderToolbar: undefined,\n      renderCaption: undefined,\n      renderObject: undefined,\n      renderLazyPhoto: undefined,\n      renderPhoto: undefined,\n      renderThumb: undefined,\n      renderPage: undefined,\n      renderPopup: undefined,\n      renderStandalone: undefined,\n\n      swiper: {\n        cssMode: false,\n        initialSlide: 0,\n        spaceBetween: 20,\n        speed: 300,\n        loop: false,\n        keyboard: {\n          enabled: true,\n        },\n        navigation: {\n          nextEl: '.photo-browser-next',\n          prevEl: '.photo-browser-prev',\n        },\n        zoom: {\n          enabled: true,\n          maxRatio: 3,\n          minRatio: 1,\n        },\n      },\n    },\n  },\n  create() {\n    const app = this;\n    app.photoBrowser = ConstructorMethods({\n      defaultSelector: '.photo-browser-popup, .photo-browser-page',\n      constructor: PhotoBrowser,\n      app,\n      domProp: 'f7PhotoBrowser',\n    });\n  },\n  static: {\n    PhotoBrowser,\n  },\n};\n","import $ from '../../shared/dom7.js';\nimport { extend, now, nextTick } from '../../shared/utils.js';\nimport Modal from '../modal/modal-class.js';\n/** @jsx $jsx */\nimport $jsx from '../../shared/$jsx.js';\n\nclass Notification extends Modal {\n  constructor(app, params) {\n    const extendedParams = extend(\n      {\n        on: {},\n      },\n      app.params.notification,\n      params,\n    );\n\n    // Extends with open/close Modal methods;\n    super(app, extendedParams);\n\n    const notification = this;\n\n    notification.app = app;\n\n    notification.params = extendedParams;\n\n    const {\n      icon,\n      title,\n      titleRightText,\n      subtitle,\n      text,\n      closeButton,\n      closeTimeout,\n      cssClass,\n      closeOnClick,\n    } = notification.params;\n\n    let $el;\n    if (!notification.params.el) {\n      // Find Element\n      const notificationHtml = notification.render({\n        icon,\n        title,\n        titleRightText,\n        subtitle,\n        text,\n        closeButton,\n        cssClass,\n      });\n\n      $el = $(notificationHtml);\n    } else {\n      $el = $(notification.params.el);\n    }\n\n    if ($el && $el.length > 0 && $el[0].f7Modal) {\n      return $el[0].f7Modal;\n    }\n\n    if ($el.length === 0) {\n      return notification.destroy();\n    }\n\n    extend(notification, {\n      $el,\n      el: $el[0],\n      type: 'notification',\n    });\n\n    $el[0].f7Modal = notification;\n\n    if (closeButton) {\n      $el.find('.notification-close-button').on('click', () => {\n        notification.close();\n      });\n    }\n    $el.on('click', (e) => {\n      if (closeButton && $(e.target).closest('.notification-close-button').length) {\n        return;\n      }\n      notification.emit('local::click notificationClick', notification);\n      if (closeOnClick) notification.close();\n    });\n\n    notification.on('beforeDestroy', () => {\n      $el.off('click');\n    });\n\n    /* Touch Events */\n    let isTouched;\n    let isMoved;\n    let isScrolling;\n    let touchesDiff;\n    let touchStartTime;\n    let notificationHeight;\n    const touchesStart = {};\n    function handleTouchStart(e) {\n      if (isTouched) return;\n      isTouched = true;\n      isMoved = false;\n      isScrolling = undefined;\n      touchStartTime = now();\n      touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n      touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n    }\n    function handleTouchMove(e) {\n      if (!isTouched) return;\n      const pageX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n      const pageY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n      if (typeof isScrolling === 'undefined') {\n        isScrolling = !!(\n          isScrolling || Math.abs(pageY - touchesStart.y) < Math.abs(pageX - touchesStart.x)\n        );\n      }\n      if (isScrolling) {\n        isTouched = false;\n        return;\n      }\n      e.preventDefault();\n      if (!isMoved) {\n        notification.$el.removeClass('notification-transitioning');\n        notification.$el.transition(0);\n        notificationHeight = notification.$el[0].offsetHeight / 2;\n      }\n      isMoved = true;\n      touchesDiff = pageY - touchesStart.y;\n      let newTranslate = touchesDiff;\n      if (touchesDiff > 0) {\n        newTranslate = touchesDiff ** 0.8;\n      }\n      notification.$el.transform(`translate3d(0, ${newTranslate}px, 0)`);\n    }\n    function handleTouchEnd() {\n      if (!isTouched || !isMoved) {\n        isTouched = false;\n        isMoved = false;\n        return;\n      }\n      isTouched = false;\n      isMoved = false;\n      if (touchesDiff === 0) {\n        return;\n      }\n\n      const timeDiff = now() - touchStartTime;\n      notification.$el.transition('');\n      notification.$el.addClass('notification-transitioning');\n      notification.$el.transform('');\n\n      if ((touchesDiff < -10 && timeDiff < 300) || -touchesDiff >= notificationHeight / 1) {\n        notification.close();\n      }\n    }\n\n    function attachTouchEvents() {\n      notification.$el.on(app.touchEvents.start, handleTouchStart, { passive: true });\n      app.on('touchmove:active', handleTouchMove);\n      app.on('touchend:passive', handleTouchEnd);\n    }\n    function detachTouchEvents() {\n      notification.$el.off(app.touchEvents.start, handleTouchStart, { passive: true });\n      app.off('touchmove:active', handleTouchMove);\n      app.off('touchend:passive', handleTouchEnd);\n    }\n\n    let timeoutId;\n    function closeOnTimeout() {\n      timeoutId = nextTick(() => {\n        if (isTouched && isMoved) {\n          closeOnTimeout();\n          return;\n        }\n        notification.close();\n      }, closeTimeout);\n    }\n    notification.on('open', () => {\n      if (notification.params.swipeToClose) {\n        attachTouchEvents();\n      }\n      $('.notification.modal-in').each((openedEl) => {\n        const notificationInstance = app.notification.get(openedEl);\n        if (openedEl !== notification.el && notificationInstance) {\n          notificationInstance.close();\n        }\n      });\n      if (closeTimeout) {\n        closeOnTimeout();\n      }\n    });\n    notification.on('close beforeDestroy', () => {\n      if (notification.params.swipeToClose) {\n        detachTouchEvents();\n      }\n      clearTimeout(timeoutId);\n    });\n\n    return notification;\n  }\n\n  render() {\n    const notification = this;\n    if (notification.params.render)\n      return notification.params.render.call(notification, notification);\n    const { icon, title, titleRightText, subtitle, text, closeButton, cssClass } =\n      notification.params;\n    return (\n      <div class={`notification ${icon ? 'notification-with-icon' : ''} ${cssClass || ''}`}>\n        <div class=\"notification-header\">\n          {icon && <div class=\"notification-icon\">{icon}</div>}\n          {title && <div class=\"notification-title\">{title}</div>}\n          {titleRightText && <div class=\"notification-title-right-text\">{titleRightText}</div>}\n          {closeButton && <span class=\"notification-close-button\"></span>}\n        </div>\n        <div class=\"notification-content\">\n          {subtitle && <div class=\"notification-subtitle\">{subtitle}</div>}\n          {text && <div class=\"notification-text\">{text}</div>}\n        </div>\n      </div>\n    );\n  }\n}\nexport default Notification;\n","import { extend } from '../../shared/utils.js';\nimport Notification from './notification-class.js';\nimport ModalMethods from '../../shared/modal-methods.js';\n\nexport default {\n  name: 'notification',\n  static: {\n    Notification,\n  },\n  create() {\n    const app = this;\n    app.notification = extend(\n      {},\n      ModalMethods({\n        app,\n        constructor: Notification,\n        defaultSelector: '.notification.modal-in',\n      }),\n    );\n  },\n  params: {\n    notification: {\n      icon: null,\n      title: null,\n      titleRightText: null,\n      subtitle: null,\n      text: null,\n      closeButton: false,\n      closeTimeout: null,\n      closeOnClick: false,\n      swipeToClose: true,\n      cssClass: null,\n      render: null,\n      containerEl: null,\n    },\n  },\n};\n","/* eslint \"no-useless-escape\": \"off\" */\nimport $ from '../../shared/dom7.js';\nimport {\n  extend,\n  id,\n  nextTick,\n  deleteProps,\n  iosPreloaderContent,\n  mdPreloaderContent,\n} from '../../shared/utils.js';\nimport { getDevice } from '../../shared/get-device.js';\nimport Framework7Class from '../../shared/class.js';\n/** @jsx $jsx */\nimport $jsx from '../../shared/$jsx.js';\n\nclass Autocomplete extends Framework7Class {\n  constructor(app, params = {}) {\n    super(params, [app]);\n\n    const ac = this;\n    ac.app = app;\n\n    const device = getDevice();\n\n    const defaults = extend(\n      {\n        on: {},\n      },\n      app.params.autocomplete,\n    );\n\n    // Extend defaults with modules params\n    ac.useModulesParams(defaults);\n\n    ac.params = extend(defaults, params);\n\n    let $openerEl;\n    if (ac.params.openerEl) {\n      $openerEl = $(ac.params.openerEl);\n      if ($openerEl.length) $openerEl[0].f7Autocomplete = ac;\n    }\n\n    let $inputEl;\n    if (ac.params.inputEl) {\n      $inputEl = $(ac.params.inputEl);\n      if ($inputEl.length) $inputEl[0].f7Autocomplete = ac;\n    }\n\n    const uniqueId = id();\n\n    let url = params.url;\n    if (!url && $openerEl && $openerEl.length) {\n      if ($openerEl.attr('href')) url = $openerEl.attr('href');\n      else if ($openerEl.find('a').length > 0) {\n        url = $openerEl.find('a').attr('href');\n      }\n    }\n    if (!url || url === '#' || url === '') url = ac.params.url;\n\n    const inputType = ac.params.multiple ? 'checkbox' : 'radio';\n\n    extend(ac, {\n      $openerEl,\n      openerEl: $openerEl && $openerEl[0],\n      $inputEl,\n      inputEl: $inputEl && $inputEl[0],\n      id: uniqueId,\n      url,\n      value: ac.params.value || [],\n      inputType,\n      inputName: `${inputType}-${uniqueId}`,\n      $modalEl: undefined,\n      $dropdownEl: undefined,\n    });\n\n    let previousQuery = '';\n    function onInputChange() {\n      let query = ac.$inputEl.val().trim();\n\n      if (!ac.params.source) return;\n      ac.params.source.call(ac, query, (items) => {\n        let itemsHTML = '';\n        const limit = ac.params.limit ? Math.min(ac.params.limit, items.length) : items.length;\n        ac.items = items;\n        let regExp;\n        if (ac.params.highlightMatches) {\n          query = query.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, '\\\\$&');\n          regExp = new RegExp(`(${query})`, 'i');\n        }\n\n        let firstValue;\n        let firstItem;\n        for (let i = 0; i < limit; i += 1) {\n          const itemValue =\n            typeof items[i] === 'object' ? items[i][ac.params.valueProperty] : items[i];\n          const itemText =\n            typeof items[i] === 'object' ? items[i][ac.params.textProperty] : items[i];\n          if (i === 0) {\n            firstValue = itemValue;\n            firstItem = ac.items[i];\n          }\n          itemsHTML += ac.renderItem(\n            {\n              value: itemValue,\n              text: ac.params.highlightMatches ? itemText.replace(regExp, '<b>$1</b>') : itemText,\n            },\n            i,\n          );\n        }\n        if (itemsHTML === '' && query === '' && ac.params.dropdownPlaceholderText) {\n          itemsHTML += ac.renderItem({\n            placeholder: true,\n            text: ac.params.dropdownPlaceholderText,\n          });\n        }\n        ac.$dropdownEl.find('ul').html(itemsHTML);\n        if (ac.params.typeahead) {\n          if (!firstValue || !firstItem) {\n            return;\n          }\n          if (firstValue.toLowerCase().indexOf(query.toLowerCase()) !== 0) {\n            return;\n          }\n          if (previousQuery.toLowerCase() === query.toLowerCase()) {\n            ac.value = [];\n            return;\n          }\n\n          if (previousQuery.toLowerCase().indexOf(query.toLowerCase()) === 0) {\n            previousQuery = query;\n            ac.value = [];\n            return;\n          }\n          $inputEl.val(firstValue);\n          $inputEl[0].setSelectionRange(query.length, firstValue.length);\n\n          const previousValue =\n            typeof ac.value[0] === 'object' ? ac.value[0][ac.params.valueProperty] : ac.value[0];\n          if (!previousValue || firstValue.toLowerCase() !== previousValue.toLowerCase()) {\n            ac.value = [firstItem];\n            ac.emit('local::change autocompleteChange', [firstItem]);\n          }\n        }\n\n        previousQuery = query;\n      });\n    }\n    function onPageInputChange() {\n      const inputEl = this;\n      const value = inputEl.value;\n      const isValues = $(inputEl).parents('.autocomplete-values').length > 0;\n      let item;\n      let itemValue;\n      let aValue;\n      if (isValues) {\n        if (ac.inputType === 'checkbox' && !inputEl.checked) {\n          for (let i = 0; i < ac.value.length; i += 1) {\n            aValue =\n              typeof ac.value[i] === 'string' ? ac.value[i] : ac.value[i][ac.params.valueProperty];\n            if (aValue === value || aValue * 1 === value * 1) {\n              ac.value.splice(i, 1);\n            }\n          }\n          ac.updateValues();\n          ac.emit('local::change autocompleteChange', ac.value);\n        }\n        return;\n      }\n\n      // Find Related Item\n      for (let i = 0; i < ac.items.length; i += 1) {\n        itemValue =\n          typeof ac.items[i] === 'object' ? ac.items[i][ac.params.valueProperty] : ac.items[i];\n        if (itemValue === value || itemValue * 1 === value * 1) item = ac.items[i];\n      }\n      if (ac.inputType === 'radio') {\n        ac.value = [item];\n      } else if (inputEl.checked) {\n        ac.value.push(item);\n      } else {\n        for (let i = 0; i < ac.value.length; i += 1) {\n          aValue =\n            typeof ac.value[i] === 'object' ? ac.value[i][ac.params.valueProperty] : ac.value[i];\n          if (aValue === value || aValue * 1 === value * 1) {\n            ac.value.splice(i, 1);\n          }\n        }\n      }\n\n      // Update Values Block\n      ac.updateValues();\n\n      // On Select Callback\n      if ((ac.inputType === 'radio' && inputEl.checked) || ac.inputType === 'checkbox') {\n        ac.emit('local::change autocompleteChange', ac.value);\n      }\n    }\n    function onHtmlClick(e) {\n      const $targetEl = $(e.target);\n      if (\n        $targetEl.is(ac.$inputEl[0]) ||\n        (ac.$dropdownEl && $targetEl.closest(ac.$dropdownEl[0]).length)\n      )\n        return;\n      ac.close();\n    }\n    function onOpenerClick() {\n      ac.open();\n    }\n    function onInputFocus() {\n      ac.open();\n    }\n    function onInputBlur() {\n      if (ac.$dropdownEl.find('label.active-state').length > 0) return;\n      setTimeout(() => {\n        ac.close();\n      }, 0);\n    }\n    function onResize() {\n      ac.positionDropdown();\n    }\n\n    function onKeyDown(e) {\n      if (!ac.opened) return;\n      if (e.keyCode === 27) {\n        // ESC\n        e.preventDefault();\n        ac.$inputEl.blur();\n        return;\n      }\n      if (e.keyCode === 13) {\n        // Enter\n        const $selectedItemLabel = ac.$dropdownEl.find('.autocomplete-dropdown-selected label');\n        if ($selectedItemLabel.length) {\n          e.preventDefault();\n          $selectedItemLabel.trigger('click');\n          ac.$inputEl.blur();\n          return;\n        }\n        if (ac.params.typeahead) {\n          e.preventDefault();\n          ac.$inputEl.blur();\n        }\n        return;\n      }\n      if (e.keyCode !== 40 && e.keyCode !== 38) return;\n      e.preventDefault();\n      const $selectedItem = ac.$dropdownEl.find('.autocomplete-dropdown-selected');\n      let $newItem;\n      if ($selectedItem.length) {\n        $newItem = $selectedItem[e.keyCode === 40 ? 'next' : 'prev']('li');\n        if (!$newItem.length) {\n          $newItem = ac.$dropdownEl\n            .find('li')\n            .eq(e.keyCode === 40 ? 0 : ac.$dropdownEl.find('li').length - 1);\n        }\n      } else {\n        $newItem = ac.$dropdownEl\n          .find('li')\n          .eq(e.keyCode === 40 ? 0 : ac.$dropdownEl.find('li').length - 1);\n      }\n      if ($newItem.hasClass('autocomplete-dropdown-placeholder')) return;\n      $selectedItem.removeClass('autocomplete-dropdown-selected');\n      $newItem.addClass('autocomplete-dropdown-selected');\n    }\n    function onDropdownClick() {\n      const $clickedEl = $(this);\n      let clickedItem;\n      for (let i = 0; i < ac.items.length; i += 1) {\n        const itemValue =\n          typeof ac.items[i] === 'object' ? ac.items[i][ac.params.valueProperty] : ac.items[i];\n        const value = $clickedEl.attr('data-value');\n        if (itemValue === value || itemValue * 1 === value * 1) {\n          clickedItem = ac.items[i];\n        }\n      }\n      if (ac.params.updateInputValueOnSelect) {\n        ac.$inputEl.val(\n          typeof clickedItem === 'object' ? clickedItem[ac.params.valueProperty] : clickedItem,\n        );\n        ac.$inputEl.trigger('input change');\n      }\n      ac.value = [clickedItem];\n      ac.emit('local::change autocompleteChange', [clickedItem]);\n      ac.close();\n    }\n\n    ac.attachEvents = function attachEvents() {\n      if (ac.params.openIn !== 'dropdown' && ac.$openerEl) {\n        ac.$openerEl.on('click', onOpenerClick);\n      }\n      if (ac.params.openIn === 'dropdown' && ac.$inputEl) {\n        ac.$inputEl.on('focus', onInputFocus);\n        ac.$inputEl.on(ac.params.inputEvents, onInputChange);\n        if (device.android) {\n          $('html').on('click', onHtmlClick);\n        } else {\n          ac.$inputEl.on('blur', onInputBlur);\n        }\n        ac.$inputEl.on('keydown', onKeyDown);\n      }\n    };\n    ac.detachEvents = function attachEvents() {\n      if (ac.params.openIn !== 'dropdown' && ac.$openerEl) {\n        ac.$openerEl.off('click', onOpenerClick);\n      }\n      if (ac.params.openIn === 'dropdown' && ac.$inputEl) {\n        ac.$inputEl.off('focus', onInputFocus);\n        ac.$inputEl.off(ac.params.inputEvents, onInputChange);\n        if (device.android) {\n          $('html').off('click', onHtmlClick);\n        } else {\n          ac.$inputEl.off('blur', onInputBlur);\n        }\n        ac.$inputEl.off('keydown', onKeyDown);\n      }\n    };\n    ac.attachDropdownEvents = function attachDropdownEvents() {\n      ac.$dropdownEl.on('click', 'label', onDropdownClick);\n      app.on('resize', onResize);\n    };\n    ac.detachDropdownEvents = function detachDropdownEvents() {\n      ac.$dropdownEl.off('click', 'label', onDropdownClick);\n      app.off('resize', onResize);\n    };\n\n    ac.attachPageEvents = function attachPageEvents() {\n      ac.$el.on('change', 'input[type=\"radio\"], input[type=\"checkbox\"]', onPageInputChange);\n      if (ac.params.closeOnSelect && !ac.params.multiple) {\n        ac.$el.once('click', '.list label', () => {\n          nextTick(() => {\n            ac.close();\n          });\n        });\n      }\n    };\n    ac.detachPageEvents = function detachPageEvents() {\n      ac.$el.off('change', 'input[type=\"radio\"], input[type=\"checkbox\"]', onPageInputChange);\n    };\n\n    // Install Modules\n    ac.useModules();\n\n    // Init\n    ac.init();\n\n    return ac;\n  }\n\n  get view() {\n    const ac = this;\n    const { $openerEl, $inputEl, app } = ac;\n    let view;\n    if (ac.params.view) {\n      view = ac.params.view;\n    } else if ($openerEl || $inputEl) {\n      const $el = $openerEl || $inputEl;\n      view = $el.closest('.view').length && $el.closest('.view')[0].f7View;\n    }\n    if (!view) view = app.views.main;\n    return view;\n  }\n\n  positionDropdown() {\n    const ac = this;\n    const { $inputEl, app, $dropdownEl } = ac;\n\n    const $pageContentEl = $inputEl.parents('.page-content');\n    if ($pageContentEl.length === 0) return;\n    const inputOffset = $inputEl.offset();\n    const inputOffsetWidth = $inputEl[0].offsetWidth;\n    const inputOffsetHeight = $inputEl[0].offsetHeight;\n    const $listEl = $inputEl.parents('.list');\n\n    let $listParent;\n    $listEl.parents().each((parentEl) => {\n      if ($listParent) return;\n      const $parentEl = $(parentEl);\n      if ($parentEl.parent($pageContentEl).length) $listParent = $parentEl;\n    });\n\n    const listOffset = $listEl.offset();\n    const paddingBottom = parseInt($pageContentEl.css('padding-bottom'), 10);\n    const listOffsetLeft = $listEl.length > 0 ? listOffset.left - $pageContentEl.offset().left : 0;\n    const inputOffsetLeft =\n      inputOffset.left - ($listEl.length > 0 ? listOffset.left : 0) - (app.rtl ? 0 : 0);\n    const inputOffsetTop =\n      inputOffset.top - ($pageContentEl.offset().top - $pageContentEl[0].scrollTop);\n\n    const maxHeight =\n      $pageContentEl[0].scrollHeight -\n      paddingBottom -\n      (inputOffsetTop + $pageContentEl[0].scrollTop) -\n      $inputEl[0].offsetHeight;\n\n    const paddingProp = app.rtl ? 'padding-right' : 'padding-left';\n    let paddingValue;\n    if ($listEl.length) {\n      paddingValue =\n        (app.rtl ? $listEl[0].offsetWidth - inputOffsetLeft - inputOffsetWidth : inputOffsetLeft) -\n        (app.theme === 'md' ? 16 : 15);\n    }\n\n    $dropdownEl.css({\n      left: `${$listEl.length > 0 ? listOffsetLeft : inputOffsetLeft}px`,\n      top: `${inputOffsetTop + $pageContentEl[0].scrollTop + inputOffsetHeight}px`,\n      width: `${$listEl.length > 0 ? $listEl[0].offsetWidth : inputOffsetWidth}px`,\n    });\n    $dropdownEl.children('.autocomplete-dropdown-inner').css({\n      maxHeight: `${maxHeight}px`,\n      [paddingProp]: $listEl.length > 0 ? `${paddingValue}px` : '',\n    });\n  }\n\n  focus() {\n    const ac = this;\n    ac.$el.find('input[type=search]').focus();\n  }\n\n  source(query) {\n    const ac = this;\n    if (!ac.params.source) return;\n\n    const { $el } = ac;\n\n    ac.params.source.call(ac, query, (items) => {\n      let itemsHTML = '';\n      const limit = ac.params.limit ? Math.min(ac.params.limit, items.length) : items.length;\n      ac.items = items;\n      for (let i = 0; i < limit; i += 1) {\n        let selected = false;\n        const itemValue =\n          typeof items[i] === 'object' ? items[i][ac.params.valueProperty] : items[i];\n        for (let j = 0; j < ac.value.length; j += 1) {\n          const aValue =\n            typeof ac.value[j] === 'object' ? ac.value[j][ac.params.valueProperty] : ac.value[j];\n          if (aValue === itemValue || aValue * 1 === itemValue * 1) selected = true;\n        }\n        itemsHTML += ac.renderItem(\n          {\n            value: itemValue,\n            text: typeof items[i] === 'object' ? items[i][ac.params.textProperty] : items[i],\n            inputType: ac.inputType,\n            id: ac.id,\n            inputName: ac.inputName,\n            selected,\n          },\n          i,\n        );\n      }\n      $el.find('.autocomplete-found ul').html(itemsHTML);\n      if (items.length === 0) {\n        if (query.length !== 0) {\n          $el.find('.autocomplete-not-found').show();\n          $el.find('.autocomplete-found, .autocomplete-values').hide();\n        } else {\n          $el.find('.autocomplete-values').show();\n          $el.find('.autocomplete-found, .autocomplete-not-found').hide();\n        }\n      } else {\n        $el.find('.autocomplete-found').show();\n        $el.find('.autocomplete-not-found, .autocomplete-values').hide();\n      }\n    });\n  }\n\n  updateValues() {\n    const ac = this;\n    let valuesHTML = '';\n    for (let i = 0; i < ac.value.length; i += 1) {\n      valuesHTML += ac.renderItem(\n        {\n          value:\n            typeof ac.value[i] === 'object' ? ac.value[i][ac.params.valueProperty] : ac.value[i],\n          text: typeof ac.value[i] === 'object' ? ac.value[i][ac.params.textProperty] : ac.value[i],\n          inputType: ac.inputType,\n          id: ac.id,\n          inputName: `${ac.inputName}-checked}`,\n          selected: true,\n        },\n        i,\n      );\n    }\n    ac.$el.find('.autocomplete-values ul').html(valuesHTML);\n  }\n\n  preloaderHide() {\n    const ac = this;\n    if (ac.params.openIn === 'dropdown' && ac.$dropdownEl) {\n      ac.$dropdownEl.find('.autocomplete-preloader').removeClass('autocomplete-preloader-visible');\n    } else {\n      $('.autocomplete-preloader').removeClass('autocomplete-preloader-visible');\n    }\n  }\n\n  preloaderShow() {\n    const ac = this;\n    if (ac.params.openIn === 'dropdown' && ac.$dropdownEl) {\n      ac.$dropdownEl.find('.autocomplete-preloader').addClass('autocomplete-preloader-visible');\n    } else {\n      $('.autocomplete-preloader').addClass('autocomplete-preloader-visible');\n    }\n  }\n\n  renderPreloader() {\n    const ac = this;\n    const preloaders = {\n      iosPreloaderContent,\n      mdPreloaderContent,\n    };\n\n    return (\n      <div\n        class={`autocomplete-preloader preloader ${\n          ac.params.preloaderColor ? `color-${ac.params.preloaderColor}` : ''\n        }`}\n      >\n        {preloaders[`${ac.app.theme}PreloaderContent`] || ''}\n      </div>\n    );\n  }\n\n  renderSearchbar() {\n    const ac = this;\n    if (ac.params.renderSearchbar) return ac.params.renderSearchbar.call(ac);\n\n    return (\n      <form class=\"searchbar\">\n        <div class=\"searchbar-inner\">\n          <div class=\"searchbar-input-wrap\">\n            <input\n              type=\"search\"\n              spellcheck={ac.params.searchbarSpellcheck || 'false'}\n              placeholder={ac.params.searchbarPlaceholder}\n            />\n            <i class=\"searchbar-icon\"></i>\n            <span class=\"input-clear-button\"></span>\n          </div>\n          {ac.params.searchbarDisableButton && (\n            <span class=\"searchbar-disable-button\">{ac.params.searchbarDisableText}</span>\n          )}\n        </div>\n      </form>\n    );\n  }\n\n  renderItem(item, index) {\n    const ac = this;\n    if (ac.params.renderItem) return ac.params.renderItem.call(ac, item, index);\n\n    const itemValue =\n      item.value && typeof item.value === 'string'\n        ? item.value.replace(/\"/g, '&quot;')\n        : item.value;\n    if (ac.params.openIn !== 'dropdown') {\n      return (\n        <li>\n          <label class={`item-${item.inputType} item-content`}>\n            <input\n              type={item.inputType}\n              name={item.inputName}\n              value={itemValue}\n              _checked={item.selected}\n            />\n            <i class={`icon icon-${item.inputType}`} />\n            <div class=\"item-inner\">\n              <div class=\"item-title\">{item.text}</div>\n            </div>\n          </label>\n        </li>\n      );\n    }\n    // Dropdown\n    if (!item.placeholder) {\n      return (\n        <li>\n          <label class=\"item-radio item-content\" data-value={itemValue}>\n            <div class=\"item-inner\">\n              <div class=\"item-title\">{item.text}</div>\n            </div>\n          </label>\n        </li>\n      );\n    }\n\n    // Dropwdown placeholder\n    return (\n      <li class=\"autocomplete-dropdown-placeholder\">\n        <label class=\"item-content\">\n          <div class=\"item-inner\">\n            <div class=\"item-title\">{item.text}</div>\n          </div>\n        </label>\n      </li>\n    );\n  }\n\n  renderNavbar() {\n    const ac = this;\n    if (ac.params.renderNavbar) return ac.params.renderNavbar.call(ac);\n    let pageTitle = ac.params.pageTitle;\n    if (typeof pageTitle === 'undefined' && ac.$openerEl && ac.$openerEl.length) {\n      pageTitle = ac.$openerEl.find('.item-title').text().trim();\n    }\n    const inPopup = ac.params.openIn === 'popup';\n\n    // eslint-disable-next-line\n    const navbarLeft = inPopup ? (\n      ac.params.preloader && <div class=\"left\">{ac.renderPreloader()}</div>\n    ) : (\n      <div class=\"left sliding\">\n        <a class=\"link back\">\n          <i class=\"icon icon-back\"></i>\n          <span class=\"if-not-md\">{ac.params.pageBackLinkText}</span>\n        </a>\n      </div>\n    );\n    const navbarRight = inPopup ? (\n      <div class=\"right\">\n        <a class=\"link popup-close\" data-popup=\".autocomplete-popup\">\n          {ac.params.popupCloseLinkText}\n        </a>\n      </div>\n    ) : (\n      ac.params.preloader && <div class=\"right\">{ac.renderPreloader()}</div>\n    );\n    return (\n      <div\n        class={`navbar ${ac.params.navbarColorTheme ? `color-${ac.params.navbarColorTheme}` : ''}`}\n      >\n        <div class=\"navbar-bg\"></div>\n        <div\n          class={`navbar-inner ${\n            ac.params.navbarColorTheme ? `color-${ac.params.navbarColorTheme}` : ''\n          }`}\n        >\n          {navbarLeft}\n          {pageTitle && <div class=\"title sliding\">{pageTitle}</div>}\n          {navbarRight}\n          <div class=\"subnavbar sliding\">{ac.renderSearchbar()}</div>\n        </div>\n      </div>\n    );\n  }\n\n  renderDropdown() {\n    const ac = this;\n    if (ac.params.renderDropdown) return ac.params.renderDropdown.call(ac, ac.items);\n\n    return (\n      <div class=\"autocomplete-dropdown\">\n        <div class=\"autocomplete-dropdown-inner\">\n          <div class={`list no-safe-areas`}>\n            <ul></ul>\n          </div>\n        </div>\n        {ac.params.preloader && ac.renderPreloader()}\n      </div>\n    );\n  }\n\n  renderPage(inPopup) {\n    const ac = this;\n    if (ac.params.renderPage) return ac.params.renderPage.call(ac, ac.items);\n\n    return (\n      <div class=\"page page-with-subnavbar autocomplete-page\" data-name=\"autocomplete-page\">\n        {ac.renderNavbar(inPopup)}\n        <div class=\"searchbar-backdrop\"></div>\n        <div class=\"page-content\">\n          <div\n            class={`list autocomplete-list autocomplete-found autocomplete-list-${ac.id} ${\n              ac.params.formColorTheme ? `color-${ac.params.formColorTheme}` : ''\n            }`}\n          >\n            <ul></ul>\n          </div>\n          <div class=\"list autocomplete-not-found\">\n            <ul>\n              <li class=\"item-content\">\n                <div class=\"item-inner\">\n                  <div class=\"item-title\">{ac.params.notFoundText}</div>\n                </div>\n              </li>\n            </ul>\n          </div>\n          <div class=\"list autocomplete-values\">\n            <ul></ul>\n          </div>\n        </div>\n      </div>\n    );\n  }\n\n  renderPopup() {\n    const ac = this;\n    if (ac.params.renderPopup) return ac.params.renderPopup.call(ac, ac.items);\n    return (\n      <div class=\"popup autocomplete-popup\">\n        <div class=\"view\">{ac.renderPage(true)};</div>\n      </div>\n    );\n  }\n\n  onOpen(type, el) {\n    const ac = this;\n    const app = ac.app;\n    const $el = $(el);\n    ac.$el = $el;\n    ac.el = $el[0];\n    ac.openedIn = type;\n    ac.opened = true;\n\n    if (ac.params.openIn === 'dropdown') {\n      ac.attachDropdownEvents();\n\n      ac.$dropdownEl.addClass('autocomplete-dropdown-in');\n      ac.$inputEl.trigger('input');\n    } else {\n      // Init SB\n      let $searchbarEl = $el.find('.searchbar');\n      if (ac.params.openIn === 'page' && app.theme === 'ios' && $searchbarEl.length === 0) {\n        $searchbarEl = $(app.navbar.getElByPage($el)).find('.searchbar');\n      }\n      ac.searchbar = app.searchbar.create({\n        el: $searchbarEl,\n        backdropEl: $el.find('.searchbar-backdrop'),\n        customSearch: true,\n        on: {\n          search(sb, query) {\n            if (query.length === 0 && ac.searchbar.enabled) {\n              ac.searchbar.backdropShow();\n            } else {\n              ac.searchbar.backdropHide();\n            }\n            ac.source(query);\n          },\n        },\n      });\n\n      // Attach page events\n      ac.attachPageEvents();\n\n      // Update Values On Page Init\n      ac.updateValues();\n\n      // Source on load\n      if (ac.params.requestSourceOnOpen) ac.source('');\n    }\n\n    ac.emit('local::open autocompleteOpen', ac);\n  }\n\n  autoFocus() {\n    const ac = this;\n    if (ac.searchbar && ac.searchbar.$inputEl) {\n      ac.searchbar.$inputEl.focus();\n    }\n    return ac;\n  }\n\n  onOpened() {\n    const ac = this;\n    if (ac.params.openIn !== 'dropdown' && ac.params.autoFocus) {\n      ac.autoFocus();\n    }\n    ac.emit('local::opened autocompleteOpened', ac);\n  }\n\n  onClose() {\n    const ac = this;\n    if (ac.destroyed) return;\n\n    // Destroy SB\n    if (ac.searchbar && ac.searchbar.destroy) {\n      ac.searchbar.destroy();\n      ac.searchbar = null;\n      delete ac.searchbar;\n    }\n\n    if (ac.params.openIn === 'dropdown') {\n      ac.detachDropdownEvents();\n      ac.$dropdownEl.removeClass('autocomplete-dropdown-in').remove();\n    } else {\n      ac.detachPageEvents();\n    }\n\n    ac.emit('local::close autocompleteClose', ac);\n  }\n\n  onClosed() {\n    const ac = this;\n    if (ac.destroyed) return;\n    ac.opened = false;\n    ac.$el = null;\n    ac.el = null;\n    delete ac.$el;\n    delete ac.el;\n\n    ac.emit('local::closed autocompleteClosed', ac);\n  }\n\n  openPage() {\n    const ac = this;\n    if (ac.opened) return ac;\n    const pageHtml = ac.renderPage();\n    ac.view.router.navigate({\n      url: ac.url,\n      route: {\n        content: pageHtml,\n        path: ac.url,\n        on: {\n          pageBeforeIn(e, page) {\n            ac.onOpen('page', page.el);\n          },\n          pageAfterIn(e, page) {\n            ac.onOpened('page', page.el);\n          },\n          pageBeforeOut(e, page) {\n            ac.onClose('page', page.el);\n          },\n          pageAfterOut(e, page) {\n            ac.onClosed('page', page.el);\n          },\n        },\n        options: {\n          animate: ac.params.animate,\n        },\n      },\n    });\n    return ac;\n  }\n\n  openPopup() {\n    const ac = this;\n    if (ac.opened) return ac;\n    const popupHtml = ac.renderPopup();\n\n    const popupParams = {\n      content: popupHtml,\n      animate: ac.params.animate,\n      push: ac.params.popupPush,\n      swipeToClose: ac.params.popupSwipeToClose,\n      on: {\n        popupOpen(popup) {\n          ac.onOpen('popup', popup.el);\n        },\n        popupOpened(popup) {\n          ac.onOpened('popup', popup.el);\n        },\n        popupClose(popup) {\n          ac.onClose('popup', popup.el);\n        },\n        popupClosed(popup) {\n          ac.onClosed('popup', popup.el);\n        },\n      },\n    };\n\n    if (ac.params.routableModals && ac.view) {\n      ac.view.router.navigate({\n        url: ac.url,\n        route: {\n          path: ac.url,\n          popup: popupParams,\n        },\n      });\n    } else {\n      ac.modal = ac.app.popup.create(popupParams).open(ac.params.animate);\n    }\n    return ac;\n  }\n\n  openDropdown() {\n    const ac = this;\n\n    if (!ac.$dropdownEl) {\n      ac.$dropdownEl = $(ac.renderDropdown());\n    }\n\n    const $pageContentEl = ac.$inputEl.parents('.page-content');\n    if (ac.params.dropdownContainerEl) {\n      $(ac.params.dropdownContainerEl).append(ac.$dropdownEl);\n    } else if ($pageContentEl.length === 0) {\n      ac.$dropdownEl.insertAfter(ac.$inputEl);\n    } else {\n      ac.positionDropdown();\n      $pageContentEl.append(ac.$dropdownEl);\n    }\n    ac.onOpen('dropdown', ac.$dropdownEl);\n    ac.onOpened('dropdown', ac.$dropdownEl);\n  }\n\n  open() {\n    const ac = this;\n    if (ac.opened) return ac;\n    const openIn = ac.params.openIn;\n    ac[\n      `open${openIn\n        .split('')\n        .map((el, index) => {\n          if (index === 0) return el.toUpperCase();\n          return el;\n        })\n        .join('')}`\n    ]();\n    return ac;\n  }\n\n  close() {\n    const ac = this;\n    if (!ac.opened) return ac;\n    if (ac.params.openIn === 'dropdown') {\n      ac.onClose();\n      ac.onClosed();\n    } else if ((ac.params.routableModals && ac.view) || ac.openedIn === 'page') {\n      ac.view.router.back({ animate: ac.params.animate });\n    } else {\n      ac.modal.once('modalClosed', () => {\n        nextTick(() => {\n          if (ac.destroyed) return;\n          ac.modal.destroy();\n          delete ac.modal;\n        });\n      });\n      ac.modal.close();\n    }\n    return ac;\n  }\n\n  init() {\n    const ac = this;\n    ac.attachEvents();\n  }\n\n  destroy() {\n    const ac = this;\n    ac.emit('local::beforeDestroy autocompleteBeforeDestroy', ac);\n    ac.detachEvents();\n    if (ac.$inputEl && ac.$inputEl[0]) {\n      delete ac.$inputEl[0].f7Autocomplete;\n    }\n    if (ac.$openerEl && ac.$openerEl[0]) {\n      delete ac.$openerEl[0].f7Autocomplete;\n    }\n    deleteProps(ac);\n    ac.destroyed = true;\n  }\n}\n\nexport default Autocomplete;\n","import { extend } from '../../shared/utils.js';\nimport Autocomplete from './autocomplete-class.js';\nimport ConstructorMethods from '../../shared/constructor-methods.js';\n\nexport default {\n  name: 'autocomplete',\n  params: {\n    autocomplete: {\n      openerEl: undefined,\n      inputEl: undefined,\n      view: undefined,\n\n      // DropDown\n      dropdownContainerEl: undefined,\n      dropdownPlaceholderText: undefined,\n      typeahead: false,\n      highlightMatches: true,\n      updateInputValueOnSelect: true,\n      inputEvents: 'input',\n\n      value: undefined,\n      multiple: false,\n\n      source: undefined,\n      limit: undefined,\n      valueProperty: 'id',\n      textProperty: 'text',\n\n      openIn: 'page', // or 'popup' or 'dropdown'\n      pageBackLinkText: 'Back',\n      popupCloseLinkText: 'Close',\n      pageTitle: undefined,\n      searchbarPlaceholder: 'Search...',\n      searchbarDisableText: 'Cancel',\n      searchbarDisableButton: true,\n      searchbarSpellcheck: false,\n\n      popupPush: false,\n      popupSwipeToClose: undefined,\n\n      animate: true,\n\n      autoFocus: false,\n      closeOnSelect: false,\n      notFoundText: 'Nothing found',\n      requestSourceOnOpen: false,\n\n      // Preloader\n      preloaderColor: undefined,\n      preloader: false,\n\n      // Colors\n      formColorTheme: undefined,\n      navbarColorTheme: undefined,\n\n      // Routing\n      routableModals: false,\n      url: 'select/',\n\n      // Custom render functions\n      renderDropdown: undefined,\n      renderPage: undefined,\n      renderPopup: undefined,\n      renderItem: undefined,\n      renderSearchbar: undefined,\n      renderNavbar: undefined,\n    },\n  },\n  static: {\n    Autocomplete,\n  },\n  create() {\n    const app = this;\n    app.autocomplete = extend(\n      ConstructorMethods({\n        defaultSelector: undefined,\n        constructor: Autocomplete,\n        app,\n        domProp: 'f7Autocomplete',\n      }),\n      {\n        open(autocompleteEl) {\n          const ac = app.autocomplete.get(autocompleteEl);\n          if (ac && ac.open) return ac.open();\n          return undefined;\n        },\n        close(autocompleteEl) {\n          const ac = app.autocomplete.get(autocompleteEl);\n          if (ac && ac.close) return ac.close();\n          return undefined;\n        },\n      },\n    );\n  },\n};\n","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { extend, deleteProps } from '../../shared/utils.js';\nimport { getSupport } from '../../shared/get-support.js';\nimport Framework7Class from '../../shared/class.js';\n\nclass Tooltip extends Framework7Class {\n  constructor(app, params = {}) {\n    super(params, [app]);\n\n    const tooltip = this;\n    const support = getSupport();\n\n    const defaults = extend({}, app.params.tooltip);\n\n    const document = getDocument();\n\n    // Extend defaults with modules params\n    tooltip.useModulesParams(defaults);\n\n    tooltip.params = extend(defaults, params);\n    if (\n      typeof params.offset === 'undefined' &&\n      support.touch &&\n      tooltip.params.trigger === 'hover'\n    ) {\n      tooltip.params.offset = 10;\n    }\n\n    const { targetEl, containerEl } = tooltip.params;\n    if (!targetEl && !tooltip.params.delegated) return tooltip;\n\n    const $targetEl = $(targetEl);\n    if ($targetEl.length === 0 && !tooltip.params.delegated) return tooltip;\n\n    if ($targetEl[0] && $targetEl[0].f7Tooltip && !tooltip.params.delegated)\n      return $targetEl[0].f7Tooltip;\n\n    let $containerEl = $(containerEl || app.$el).eq(0);\n    if ($containerEl.length === 0) {\n      $containerEl = app.$el;\n    }\n\n    const $el = $(tooltip.render()).eq(0);\n\n    extend(tooltip, {\n      app,\n      $targetEl,\n      targetEl: $targetEl && $targetEl[0],\n      $containerEl,\n      containerEl: $containerEl && $containerEl[0],\n      $el,\n      el: $el && $el[0],\n      text: tooltip.params.text || '',\n      visible: false,\n      opened: false,\n    });\n\n    if ($targetEl[0]) $targetEl[0].f7Tooltip = tooltip;\n\n    const touchesStart = {};\n    let isTouched;\n    function handleClick() {\n      if (tooltip.opened) tooltip.hide();\n      else tooltip.show(this);\n    }\n    function handleClickOut(e) {\n      if (\n        tooltip.opened &&\n        ($(e.target).closest($targetEl).length || $(e.target).closest(tooltip.$el).length)\n      )\n        return;\n      tooltip.hide();\n    }\n    function handleTouchStart(e) {\n      if (isTouched) return;\n      isTouched = true;\n      touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n      touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n      tooltip.show(this);\n    }\n    function handleTouchMove(e) {\n      if (!isTouched) return;\n      const x = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n      const y = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n      const distance = ((x - touchesStart.x) ** 2 + (y - touchesStart.y) ** 2) ** 0.5;\n      if (distance > 50) {\n        isTouched = false;\n        tooltip.hide();\n      }\n    }\n    function handleTouchEnd() {\n      if (!isTouched) return;\n      isTouched = false;\n      tooltip.hide();\n    }\n    function handleMouseEnter() {\n      tooltip.show(this);\n    }\n    function handleMouseLeave() {\n      tooltip.hide();\n    }\n    function handleTransitionEnd() {\n      if (!$el.hasClass('tooltip-in')) {\n        $el.removeClass('tooltip-out').remove();\n      }\n    }\n\n    tooltip.attachEvents = function attachEvents() {\n      $el.on('transitionend', handleTransitionEnd);\n      if (tooltip.params.trigger === 'click') {\n        if (tooltip.params.delegated) {\n          $(document).on('click', tooltip.params.targetEl, handleClick);\n        } else {\n          tooltip.$targetEl.on('click', handleClick);\n        }\n        $('html').on('click', handleClickOut);\n        return;\n      }\n      if (tooltip.params.trigger === 'manual') return;\n      if (support.touch) {\n        const passive = support.passiveListener ? { passive: true } : false;\n        if (tooltip.params.delegated) {\n          $(document).on(app.touchEvents.start, tooltip.params.targetEl, handleTouchStart, passive);\n        } else {\n          tooltip.$targetEl.on(app.touchEvents.start, handleTouchStart, passive);\n        }\n        app.on('touchmove', handleTouchMove);\n        app.on('touchend:passive', handleTouchEnd);\n      } else {\n        // eslint-disable-next-line\n        if (tooltip.params.delegated) {\n          $(document).on(\n            support.pointerEvents ? 'pointerenter' : 'mouseenter',\n            tooltip.params.targetEl,\n            handleMouseEnter,\n            true,\n          );\n          $(document).on(\n            support.pointerEvents ? 'pointerleave' : 'mouseleave',\n            tooltip.params.targetEl,\n            handleMouseLeave,\n            true,\n          );\n        } else {\n          tooltip.$targetEl.on(\n            support.pointerEvents ? 'pointerenter' : 'mouseenter',\n            handleMouseEnter,\n          );\n          tooltip.$targetEl.on(\n            support.pointerEvents ? 'pointerleave' : 'mouseleave',\n            handleMouseLeave,\n          );\n        }\n      }\n    };\n    tooltip.detachEvents = function detachEvents() {\n      $el.off('transitionend', handleTransitionEnd);\n      if (tooltip.params.trigger === 'click') {\n        if (tooltip.params.delegated) {\n          $(document).on('click', tooltip.params.targetEl, handleClick);\n        } else {\n          tooltip.$targetEl.off('click', handleClick);\n        }\n        $('html').off('click', handleClickOut);\n        return;\n      }\n      if (tooltip.params.trigger === 'manual') return;\n      if (support.touch) {\n        const passive = support.passiveListener ? { passive: true } : false;\n        if (tooltip.params.delegated) {\n          $(document).off(\n            app.touchEvents.start,\n            tooltip.params.targetEl,\n            handleTouchStart,\n            passive,\n          );\n        } else {\n          tooltip.$targetEl.off(app.touchEvents.start, handleTouchStart, passive);\n        }\n        app.off('touchmove', handleTouchMove);\n        app.off('touchend:passive', handleTouchEnd);\n      } else {\n        // eslint-disable-next-line\n        if (tooltip.params.delegated) {\n          $(document).off(\n            support.pointerEvents ? 'pointerenter' : 'mouseenter',\n            tooltip.params.targetEl,\n            handleMouseEnter,\n            true,\n          );\n          $(document).off(\n            support.pointerEvents ? 'pointerleave' : 'mouseleave',\n            tooltip.params.targetEl,\n            handleMouseLeave,\n            true,\n          );\n        } else {\n          tooltip.$targetEl.off(\n            support.pointerEvents ? 'pointerenter' : 'mouseenter',\n            handleMouseEnter,\n          );\n          tooltip.$targetEl.off(\n            support.pointerEvents ? 'pointerleave' : 'mouseleave',\n            handleMouseLeave,\n          );\n        }\n      }\n    };\n\n    // Install Modules\n    tooltip.useModules();\n\n    tooltip.init();\n\n    return tooltip;\n  }\n\n  setTargetEl(targetEl) {\n    const tooltip = this;\n    tooltip.detachEvents();\n    tooltip.$targetEl = $(targetEl);\n    tooltip.targetEl = tooltip.$targetEl[0];\n    tooltip.attachEvents();\n    return tooltip;\n  }\n\n  position(targetEl) {\n    const tooltip = this;\n    const { $el, app, $containerEl } = tooltip;\n    const hasContainerEl = !!tooltip.params.containerEl;\n    const tooltipOffset = tooltip.params.offset || 0;\n    $el.css({ left: '', top: '' });\n    const $targetEl = $(targetEl || tooltip.targetEl);\n    const [width, height] = [$el.width(), $el.height()];\n\n    $el.css({ left: '', top: '' });\n\n    let targetWidth;\n    let targetHeight;\n    let targetOffsetLeft;\n    let targetOffsetTop;\n\n    const boundaries =\n      hasContainerEl && $containerEl.length ? $containerEl[0].getBoundingClientRect() : app;\n\n    if ($targetEl && $targetEl.length > 0) {\n      targetWidth = $targetEl.outerWidth();\n      targetHeight = $targetEl.outerHeight();\n      if (typeof targetWidth === 'undefined' && typeof targetHeight === 'undefined') {\n        const clientRect = $targetEl[0].getBoundingClientRect();\n        targetWidth = clientRect.width;\n        targetHeight = clientRect.height;\n      }\n\n      const targetOffset = $targetEl.offset();\n      targetOffsetLeft = targetOffset.left - boundaries.left;\n      targetOffsetTop = targetOffset.top - boundaries.top;\n\n      const targetParentPage = $targetEl.parents('.page');\n      if (targetParentPage.length > 0) {\n        targetOffsetTop -= targetParentPage[0].scrollTop;\n      }\n    }\n    let [left, top] = [0, 0, 0];\n\n    // Top Position\n    let position = 'top';\n\n    if (height + tooltipOffset < targetOffsetTop) {\n      // On top\n      top = targetOffsetTop - height - tooltipOffset;\n    } else if (height < boundaries.height - targetOffsetTop - targetHeight) {\n      // On bottom\n      position = 'bottom';\n      top = targetOffsetTop + targetHeight + tooltipOffset;\n    } else {\n      // On middle\n      position = 'middle';\n      top = targetHeight / 2 + targetOffsetTop - height / 2;\n      if (top <= 0) {\n        top = 8;\n      } else if (top + height >= boundaries.height) {\n        top = boundaries.height - height - 8;\n      }\n    }\n\n    // Horizontal Position\n    if (position === 'top' || position === 'bottom') {\n      left = targetWidth / 2 + targetOffsetLeft - width / 2;\n      if (left < 8) left = 8;\n      if (left + width > boundaries.width) left = boundaries.width - width - 8;\n      if (left < 0) left = 0;\n    } else if (position === 'middle') {\n      left = targetOffsetLeft - width;\n      if (left < 8 || left + width > boundaries.width) {\n        if (left < 8) left = targetOffsetLeft + targetWidth;\n        if (left + width > boundaries.width) left = boundaries.width - width - 8;\n      }\n    }\n\n    // Apply Styles\n    $el.css({ top: `${top}px`, left: `${left}px` });\n  }\n\n  show(aroundEl) {\n    const tooltip = this;\n    const { $el, $targetEl, $containerEl } = tooltip;\n    if ($containerEl[0] && $el[0] && !$containerEl[0].contains($el[0])) {\n      $containerEl.append($el);\n    }\n    tooltip.position(aroundEl);\n    const $aroundEl = $(aroundEl);\n    tooltip.visible = true;\n    tooltip.opened = true;\n    $targetEl.trigger('tooltip:show');\n    $el.trigger('tooltip:show');\n    if ($aroundEl.length && $aroundEl[0] !== $targetEl[0]) {\n      $aroundEl.trigger('tooltip:show');\n    }\n    tooltip.emit('local::show tooltipShow', tooltip);\n    $el.removeClass('tooltip-out').addClass('tooltip-in');\n    return tooltip;\n  }\n\n  hide() {\n    const tooltip = this;\n    const { $el, $targetEl } = tooltip;\n    tooltip.visible = false;\n    tooltip.opened = false;\n    $targetEl.trigger('tooltip:hide');\n    $el.trigger('tooltip:hide');\n    tooltip.emit('local::hide tooltipHide', tooltip);\n    $el.addClass('tooltip-out').removeClass('tooltip-in');\n    return tooltip;\n  }\n\n  render() {\n    const tooltip = this;\n    if (tooltip.params.render) return tooltip.params.render.call(tooltip, tooltip);\n    const { cssClass, text } = tooltip.params;\n    return `\n      <div class=\"tooltip ${cssClass || ''}\">\n        <div class=\"tooltip-content\">${text || ''}</div>\n      </div>\n    `.trim();\n  }\n\n  setText(newText) {\n    const tooltip = this;\n    if (typeof newText === 'undefined') {\n      return tooltip;\n    }\n    tooltip.params.text = newText;\n    tooltip.text = newText;\n    if (tooltip.$el) {\n      tooltip.$el.children('.tooltip-content').html(newText);\n    }\n    if (tooltip.opened) {\n      tooltip.position();\n    }\n    return tooltip;\n  }\n\n  init() {\n    const tooltip = this;\n    tooltip.attachEvents();\n  }\n\n  destroy() {\n    const tooltip = this;\n    if (!tooltip.$targetEl || tooltip.destroyed) return;\n    tooltip.$targetEl.trigger('tooltip:beforedestroy');\n    tooltip.emit('local::beforeDestroy tooltipBeforeDestroy', tooltip);\n    tooltip.$el.remove();\n    if (tooltip.$targetEl[0]) delete tooltip.$targetEl[0].f7Tooltip;\n    tooltip.detachEvents();\n    deleteProps(tooltip);\n    tooltip.destroyed = true;\n  }\n}\nexport default Tooltip;\n","import $ from '../../shared/dom7.js';\nimport Tooltip from './tooltip-class.js';\nimport ConstructorMethods from '../../shared/constructor-methods.js';\n\nexport default {\n  name: 'tooltip',\n  static: {\n    Tooltip,\n  },\n  create() {\n    const app = this;\n    app.tooltip = ConstructorMethods({\n      defaultSelector: '.tooltip',\n      constructor: Tooltip,\n      app,\n      domProp: 'f7Tooltip',\n    });\n    app.tooltip.show = function show(el) {\n      const $el = $(el);\n      if ($el.length === 0) return undefined;\n      const tooltip = $el[0].f7Tooltip;\n      if (!tooltip) return undefined;\n      tooltip.show($el[0]);\n      return tooltip;\n    };\n    app.tooltip.hide = function hide(el) {\n      const $el = $(el);\n      if ($el.length === 0) return undefined;\n      const tooltip = $el[0].f7Tooltip;\n      if (!tooltip) return undefined;\n      tooltip.hide();\n      return tooltip;\n    };\n    app.tooltip.setText = function text(el, newText) {\n      const $el = $(el);\n      if ($el.length === 0) return undefined;\n      const tooltip = $el[0].f7Tooltip;\n      if (!tooltip) return undefined;\n      tooltip.setText(newText);\n      return tooltip;\n    };\n  },\n  params: {\n    tooltip: {\n      targetEl: null,\n      delegated: false,\n      text: null,\n      cssClass: null,\n      render: null,\n      offset: 0,\n      trigger: 'hover',\n      containerEl: undefined,\n    },\n  },\n  on: {\n    tabMounted(tabEl) {\n      const app = this;\n      $(tabEl)\n        .find('.tooltip-init')\n        .each((el) => {\n          const text = $(el).attr('data-tooltip');\n          if (!text) return;\n          app.tooltip.create({ targetEl: el, text });\n        });\n    },\n    tabBeforeRemove(tabEl) {\n      $(tabEl)\n        .find('.tooltip-init')\n        .each((el) => {\n          if (el.f7Tooltip) el.f7Tooltip.destroy();\n        });\n    },\n    pageInit(page) {\n      const app = this;\n      page.$el.find('.tooltip-init').each((el) => {\n        const text = $(el).attr('data-tooltip');\n        if (!text) return;\n        app.tooltip.create({ targetEl: el, text });\n      });\n      if (\n        app.theme === 'ios' &&\n        page.view &&\n        page.view.router.dynamicNavbar &&\n        page.$navbarEl &&\n        page.$navbarEl.length > 0\n      ) {\n        page.$navbarEl.find('.tooltip-init').each((el) => {\n          const text = $(el).attr('data-tooltip');\n          if (!text) return;\n          app.tooltip.create({ targetEl: el, text });\n        });\n      }\n    },\n    pageBeforeRemove(page) {\n      const app = this;\n      page.$el.find('.tooltip-init').each((el) => {\n        if (el.f7Tooltip) el.f7Tooltip.destroy();\n      });\n      if (\n        app.theme === 'ios' &&\n        page.view &&\n        page.view.router.dynamicNavbar &&\n        page.$navbarEl &&\n        page.$navbarEl.length > 0\n      ) {\n        page.$navbarEl.find('.tooltip-init').each((el) => {\n          if (el.f7Tooltip) el.f7Tooltip.destroy();\n        });\n      }\n    },\n  },\n  vnode: {\n    'tooltip-init': {\n      insert(vnode) {\n        const app = this;\n        const el = vnode.elm;\n        const text = $(el).attr('data-tooltip');\n        if (!text) return;\n        app.tooltip.create({ targetEl: el, text });\n      },\n      update(vnode) {\n        const el = vnode.elm;\n        if (!el.f7Tooltip) return;\n        if (vnode && vnode.data && vnode.data.attrs && vnode.data.attrs['data-tooltip']) {\n          el.f7Tooltip.setText(vnode.data.attrs['data-tooltip']);\n        }\n      },\n      destroy(vnode) {\n        const el = vnode.elm;\n        if (el.f7Tooltip) el.f7Tooltip.destroy();\n      },\n    },\n  },\n};\n","/* eslint no-nested-ternary: off */\nimport { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { extend, deleteProps } from '../../shared/utils.js';\nimport Framework7Class from '../../shared/class.js';\n/** @jsx $jsx */\nimport $jsx from '../../shared/$jsx.js';\n\nclass Gauge extends Framework7Class {\n  constructor(app, params = {}) {\n    super(params, [app]);\n\n    const self = this;\n\n    const defaults = extend({}, app.params.gauge);\n\n    // Extend defaults with modules params\n    self.useModulesParams(defaults);\n\n    self.params = extend(defaults, params);\n\n    const { el } = self.params;\n    if (!el) return self;\n\n    const $el = $(el);\n    if ($el.length === 0) return self;\n\n    if ($el[0].f7Gauge) return $el[0].f7Gauge;\n\n    extend(self, {\n      app,\n      $el,\n      el: $el && $el[0],\n    });\n\n    $el[0].f7Gauge = self;\n\n    // Install Modules\n    self.useModules();\n\n    self.init();\n\n    return self;\n  }\n\n  calcRadius() {\n    const self = this;\n    const { size, borderWidth } = self.params;\n    return size / 2 - borderWidth / 2;\n  }\n\n  calcBorderLength() {\n    const self = this;\n    const radius = self.calcRadius();\n    return 2 * Math.PI * radius;\n  }\n\n  render() {\n    const self = this;\n    if (self.params.render) return self.params.render.call(self, self);\n\n    const {\n      type,\n      value,\n      size,\n      bgColor,\n      borderBgColor,\n      borderColor,\n      borderWidth,\n      valueText,\n      valueTextColor,\n      valueFontSize,\n      valueFontWeight,\n      labelText,\n      labelTextColor,\n      labelFontSize,\n      labelFontWeight,\n    } = self.params;\n\n    const semiCircle = type === 'semicircle';\n    const radius = self.calcRadius();\n    const length = self.calcBorderLength();\n    const progress = Math.max(Math.min(value, 1), 0);\n\n    return (\n      <svg\n        class=\"gauge-svg\"\n        width={`${size}px`}\n        height={`${semiCircle ? size / 2 : size}px`}\n        viewBox={`0 0 ${size} ${semiCircle ? size / 2 : size}`}\n      >\n        {semiCircle && (\n          <path\n            class=\"gauge-back-semi\"\n            d={`M${size - borderWidth / 2},${size / 2} a1,1 0 0,0 -${size - borderWidth},0`}\n            stroke={borderBgColor}\n            stroke-width={borderWidth}\n            fill={bgColor || 'none'}\n          />\n        )}\n        {semiCircle && (\n          <path\n            class=\"gauge-front-semi\"\n            d={`M${size - borderWidth / 2},${size / 2} a1,1 0 0,0 -${size - borderWidth},0`}\n            stroke={borderColor}\n            stroke-width={borderWidth}\n            stroke-dasharray={length / 2}\n            stroke-dashoffset={(length / 2) * (1 + progress)}\n            fill={borderBgColor ? 'none' : bgColor || 'none'}\n          />\n        )}\n        {!semiCircle && borderBgColor && (\n          <circle\n            class=\"gauge-back-circle\"\n            stroke={borderBgColor}\n            stroke-width={borderWidth}\n            fill={bgColor || 'none'}\n            cx={size / 2}\n            cy={size / 2}\n            r={radius}\n          />\n        )}\n        {!semiCircle && (\n          <circle\n            class=\"gauge-front-circle\"\n            transform={`rotate(-90 ${size / 2} ${size / 2})`}\n            stroke={borderColor}\n            stroke-width={borderWidth}\n            stroke-dasharray={length}\n            stroke-dashoffset={length * (1 - progress)}\n            fill={borderBgColor ? 'none' : bgColor || 'none'}\n            cx={size / 2}\n            cy={size / 2}\n            r={radius}\n          />\n        )}\n\n        {valueText && (\n          <text\n            class=\"gauge-value-text\"\n            x=\"50%\"\n            y={semiCircle ? '100%' : '50%'}\n            font-weight={valueFontWeight}\n            font-size={valueFontSize}\n            fill={valueTextColor}\n            dy={semiCircle ? (labelText ? -labelFontSize - 15 : -5) : 0}\n            text-anchor=\"middle\"\n            dominant-baseline={!semiCircle && 'middle'}\n          >\n            {valueText}\n          </text>\n        )}\n        {labelText && (\n          <text\n            class=\"gauge-label-text\"\n            x=\"50%\"\n            y={semiCircle ? '100%' : '50%'}\n            font-weight={labelFontWeight}\n            font-size={labelFontSize}\n            fill={labelTextColor}\n            dy={semiCircle ? -5 : valueText ? valueFontSize / 2 + 10 : 0}\n            text-anchor=\"middle\"\n            dominant-baseline={!semiCircle && 'middle'}\n          >\n            {labelText}\n          </text>\n        )}\n      </svg>\n    );\n  }\n\n  update(newParams = {}) {\n    const self = this;\n    const document = getDocument();\n    const { params, $svgEl } = self;\n\n    Object.keys(newParams).forEach((param) => {\n      if (typeof newParams[param] !== 'undefined') {\n        params[param] = newParams[param];\n      }\n    });\n    if ($svgEl.length === 0) return self;\n\n    const {\n      value,\n      size,\n      bgColor,\n      borderBgColor,\n      borderColor,\n      borderWidth,\n      valueText,\n      valueTextColor,\n      valueFontSize,\n      valueFontWeight,\n      labelText,\n      labelTextColor,\n      labelFontSize,\n      labelFontWeight,\n    } = params;\n\n    const length = self.calcBorderLength();\n    const progress = Math.max(Math.min(value, 1), 0);\n    const radius = self.calcRadius();\n    const semiCircle = params.type === 'semicircle';\n\n    const svgAttrs = {\n      width: `${size}px`,\n      height: `${semiCircle ? size / 2 : size}px`,\n      viewBox: `0 0 ${size} ${semiCircle ? size / 2 : size}`,\n    };\n    Object.keys(svgAttrs).forEach((attr) => {\n      $svgEl.attr(attr, svgAttrs[attr]);\n    });\n    if (semiCircle) {\n      const backAttrs = {\n        d: `M${size - borderWidth / 2},${size / 2} a1,1 0 0,0 -${size - borderWidth},0`,\n        stroke: borderBgColor,\n        'stroke-width': borderWidth,\n        fill: bgColor || 'none',\n      };\n      const frontAttrs = {\n        d: `M${size - borderWidth / 2},${size / 2} a1,1 0 0,0 -${size - borderWidth},0`,\n        stroke: borderColor,\n        'stroke-width': borderWidth,\n        'stroke-dasharray': length / 2,\n        'stroke-dashoffset': (length / 2) * (1 + progress),\n        fill: borderBgColor ? 'none' : bgColor || 'none',\n      };\n      Object.keys(backAttrs).forEach((attr) => {\n        $svgEl.find('.gauge-back-semi').attr(attr, backAttrs[attr]);\n      });\n      Object.keys(frontAttrs).forEach((attr) => {\n        $svgEl.find('.gauge-front-semi').attr(attr, frontAttrs[attr]);\n      });\n    } else {\n      const backAttrs = {\n        stroke: borderBgColor,\n        'stroke-width': borderWidth,\n        fill: bgColor || 'none',\n        cx: size / 2,\n        cy: size / 2,\n        r: radius,\n      };\n      const frontAttrs = {\n        transform: `rotate(-90 ${size / 2} ${size / 2})`,\n        stroke: borderColor,\n        'stroke-width': borderWidth,\n        'stroke-dasharray': length,\n        'stroke-dashoffset': length * (1 - progress),\n        fill: borderBgColor ? 'none' : bgColor || 'none',\n        cx: size / 2,\n        cy: size / 2,\n        r: radius,\n      };\n      Object.keys(backAttrs).forEach((attr) => {\n        $svgEl.find('.gauge-back-circle').attr(attr, backAttrs[attr]);\n      });\n      Object.keys(frontAttrs).forEach((attr) => {\n        $svgEl.find('.gauge-front-circle').attr(attr, frontAttrs[attr]);\n      });\n    }\n    if (valueText) {\n      if (!$svgEl.find('.gauge-value-text').length) {\n        const textEl = document.createElementNS('http://www.w3.org/2000/svg', 'text');\n        textEl.classList.add('gauge-value-text');\n        $svgEl.append(textEl);\n      }\n      const textAttrs = {\n        x: '50%',\n        y: semiCircle ? '100%' : '50%',\n        'font-weight': valueFontWeight,\n        'font-size': valueFontSize,\n        fill: valueTextColor,\n        dy: semiCircle ? (labelText ? -labelFontSize - 15 : -5) : 0,\n        'text-anchor': 'middle',\n        'dominant-baseline': !semiCircle && 'middle',\n      };\n      Object.keys(textAttrs).forEach((attr) => {\n        $svgEl.find('.gauge-value-text').attr(attr, textAttrs[attr]);\n      });\n      $svgEl.find('.gauge-value-text').text(valueText);\n    } else {\n      $svgEl.find('.gauge-value-text').remove();\n    }\n    if (labelText) {\n      if (!$svgEl.find('.gauge-label-text').length) {\n        const textEl = document.createElementNS('http://www.w3.org/2000/svg', 'text');\n        textEl.classList.add('gauge-label-text');\n        $svgEl.append(textEl);\n      }\n      const labelAttrs = {\n        x: '50%',\n        y: semiCircle ? '100%' : '50%',\n        'font-weight': labelFontWeight,\n        'font-size': labelFontSize,\n        fill: labelTextColor,\n        dy: semiCircle ? -5 : valueText ? valueFontSize / 2 + 10 : 0,\n        'text-anchor': 'middle',\n        'dominant-baseline': !semiCircle && 'middle',\n      };\n      Object.keys(labelAttrs).forEach((attr) => {\n        $svgEl.find('.gauge-label-text').attr(attr, labelAttrs[attr]);\n      });\n      $svgEl.find('.gauge-label-text').text(labelText);\n    } else {\n      $svgEl.find('.gauge-label-text').remove();\n    }\n    return self;\n  }\n\n  init() {\n    const self = this;\n    const $svgEl = $(self.render()).eq(0);\n    $svgEl.f7Gauge = self;\n    extend(self, {\n      $svgEl,\n      svgEl: $svgEl && $svgEl[0],\n    });\n    self.$el.append($svgEl);\n    return self;\n  }\n\n  destroy() {\n    const self = this;\n    if (!self.$el || self.destroyed) return;\n    self.$el.trigger('gauge:beforedestroy');\n    self.emit('local::beforeDestroy gaugeBeforeDestroy', self);\n    self.$svgEl.remove();\n    delete self.$el[0].f7Gauge;\n    deleteProps(self);\n    self.destroyed = true;\n  }\n}\nexport default Gauge;\n","import $ from '../../shared/dom7.js';\nimport Gauge from './gauge-class.js';\nimport ConstructorMethods from '../../shared/constructor-methods.js';\nimport { extend } from '../../shared/utils.js';\n\nexport default {\n  name: 'gauge',\n  static: {\n    Gauge,\n  },\n  create() {\n    const app = this;\n    app.gauge = ConstructorMethods({\n      defaultSelector: '.gauge',\n      constructor: Gauge,\n      app,\n      domProp: 'f7Gauge',\n    });\n    app.gauge.update = function update(el, newParams) {\n      const $el = $(el);\n      if ($el.length === 0) return undefined;\n      const gauge = app.gauge.get(el);\n      if (!gauge) return undefined;\n      gauge.update(newParams);\n      return gauge;\n    };\n  },\n  params: {\n    gauge: {\n      el: null,\n      type: 'circle',\n      value: 0,\n      size: 200,\n      bgColor: 'transparent',\n      borderBgColor: '#eeeeee',\n      borderColor: '#000000',\n      borderWidth: 10,\n      valueText: null,\n      valueTextColor: '#000000',\n      valueFontSize: 31,\n      valueFontWeight: 500,\n      labelText: null,\n      labelTextColor: '#888888',\n      labelFontSize: 14,\n      labelFontWeight: 400,\n    },\n  },\n  on: {\n    tabMounted(tabEl) {\n      const app = this;\n      $(tabEl)\n        .find('.gauge-init')\n        .each((el) => {\n          app.gauge.create(extend({ el }, $(el).dataset() || {}));\n        });\n    },\n    tabBeforeRemove(tabEl) {\n      $(tabEl)\n        .find('.gauge-init')\n        .each((el) => {\n          if (el.f7Gauge) el.f7Gauge.destroy();\n        });\n    },\n    pageInit(page) {\n      const app = this;\n      page.$el.find('.gauge-init').each((el) => {\n        app.gauge.create(extend({ el }, $(el).dataset() || {}));\n      });\n    },\n    pageBeforeRemove(page) {\n      page.$el.find('.gauge-init').each((el) => {\n        if (el.f7Gauge) el.f7Gauge.destroy();\n      });\n    },\n  },\n  vnode: {\n    'gauge-init': {\n      insert(vnode) {\n        const app = this;\n        const el = vnode.elm;\n        app.gauge.create(extend({ el }, $(el).dataset() || {}));\n      },\n      destroy(vnode) {\n        const el = vnode.elm;\n        if (el.f7Gauge) el.f7Gauge.destroy();\n      },\n    },\n  },\n};\n","/** @jsx $jsx */\nimport $jsx from '../../../shared/$jsx.js';\n\nexport default {\n  render(self) {\n    const { sliderLabel, sliderValue, sliderValueEditable, alphaLabelText } = self.params;\n    return (\n      <div class=\"color-picker-module color-picker-module-alpha-slider\">\n        <div class=\"color-picker-slider-wrap\">\n          {sliderLabel && <div class=\"color-picker-slider-label\">{alphaLabelText}</div>}\n          <div class=\"range-slider color-picker-slider color-picker-slider-alpha\"></div>\n          {sliderValue && (\n            <div class=\"color-picker-slider-value\">\n              {sliderValueEditable ? (\n                <input type=\"number\" step=\"0.01\" min=\"0\" max=\"1\" class=\"color-picker-value-alpha\" />\n              ) : (\n                <span class=\"color-picker-value-alpha\"></span>\n              )}\n            </div>\n          )}\n        </div>\n      </div>\n    );\n  },\n  init(self) {\n    self.alphaRangeSlider = self.app.range.create({\n      el: self.$el.find('.color-picker-slider-alpha'),\n      min: 0,\n      max: 1,\n      step: 0.01,\n      value: 1,\n      on: {\n        change(range, value) {\n          const alpha = Math.floor(value * 100) / 100;\n          self.setValue({ alpha });\n        },\n      },\n    });\n    function handleInputChange(e) {\n      const alpha = self.value.alpha;\n      let value = parseFloat(e.target.value);\n      if (Number.isNaN(value)) {\n        e.target.value = alpha;\n        return;\n      }\n      value = Math.max(0, Math.min(1, value));\n      self.setValue({ alpha: value });\n    }\n\n    self.$el.on('change', '.color-picker-module-alpha-slider input', handleInputChange);\n\n    self.destroyAlphaSliderEvents = function destroyAlphaSliderEvents() {\n      self.$el.off('change', '.color-picker-module-alpha-slider input', handleInputChange);\n    };\n  },\n  update(self) {\n    const { value } = self;\n    const { sliderValue, sliderValueEditable } = self.params;\n\n    const { alpha } = value;\n    self.alphaRangeSlider.value = alpha;\n    self.alphaRangeSlider.layout();\n    if (sliderValue && sliderValueEditable) {\n      self.$el.find('input.color-picker-value-alpha').val(alpha);\n    } else {\n      self.$el.find('span.color-picker-value-alpha').text(alpha);\n    }\n  },\n  destroy(self) {\n    if (self.alphaRangeSlider && self.alphaRangeSlider.destroy) {\n      self.alphaRangeSlider.destroy();\n    }\n    delete self.alphaRangeSlider;\n\n    if (self.destroyAlphaSliderEvents) self.destroyAlphaSliderEvents();\n    delete self.destroyAlphaSliderEvents;\n  },\n};\n","/** @jsx $jsx */\nimport $jsx from '../../../shared/$jsx.js';\n\nexport default {\n  render() {\n    return (\n      <div class=\"color-picker-module color-picker-module-current-color\">\n        <div class=\"color-picker-current-color\"></div>\n      </div>\n    );\n  },\n  update(self) {\n    self.$el\n      .find('.color-picker-module-current-color .color-picker-current-color')\n      .css('background-color', self.value.hex);\n  },\n};\n","/** @jsx $jsx */\nimport $jsx from '../../../shared/$jsx.js';\n\nexport default {\n  render(self) {\n    const { hexLabel, hexLabelText, hexValueEditable } = self.params;\n    return (\n      <div class=\"color-picker-module color-picker-module-hex\">\n        <div class=\"color-picker-hex-wrap\">\n          {hexLabel && <div class=\"color-picker-hex-label\">{hexLabelText}</div>}\n          <div class=\"color-picker-hex-value\">\n            {hexValueEditable ? (\n              <input type=\"text\" class=\"color-picker-value-hex\" />\n            ) : (\n              <span class=\"color-picker-value-hex\"></span>\n            )}\n          </div>\n        </div>\n      </div>\n    );\n  },\n  init(self) {\n    function handleInputChange(e) {\n      const hex = self.value.hex;\n      let value = e.target.value.replace(/#/g, '');\n      if (Number.isNaN(value) || !value || (value.length !== 3 && value.length !== 6)) {\n        e.target.value = hex;\n        return;\n      }\n      const min = 0;\n      const current = parseInt(value, 16);\n      const max = parseInt('ffffff', 16); // eslint-disable-line\n      if (current > max) {\n        value = 'fff';\n      }\n      if (current < min) {\n        value = '000';\n      }\n      self.setValue({ hex: value });\n    }\n\n    self.$el.on('change', '.color-picker-module-hex input', handleInputChange);\n\n    self.destroyHexEvents = function destroyHexEvents() {\n      self.$el.off('change', '.color-picker-module-hex input', handleInputChange);\n    };\n  },\n  update(self) {\n    const { value } = self;\n\n    const { hexValueEditable } = self.params;\n\n    const { hex } = value;\n    if (hexValueEditable) {\n      self.$el.find('input.color-picker-value-hex').val(hex);\n    } else {\n      self.$el.find('span.color-picker-value-hex').text(hex);\n    }\n  },\n  destroy(self) {\n    if (self.destroyHexEvents) self.destroyHexEvents();\n    delete self.destroyHexEvents;\n  },\n};\n","import $ from '../../../shared/dom7.js';\nimport { colorHsbToHsl } from '../../../shared/utils.js';\n/** @jsx $jsx */\nimport $jsx from '../../../shared/$jsx.js';\n\nexport default {\n  render(self) {\n    const {\n      sliderLabel,\n      sliderValue,\n      sliderValueEditable,\n      hueLabelText,\n      saturationLabelText,\n      brightnessLabelText,\n    } = self.params;\n    return (\n      <div class=\"color-picker-module color-picker-module-hsb-sliders\">\n        <div class=\"color-picker-slider-wrap\">\n          {sliderLabel && <div class=\"color-picker-slider-label\">{hueLabelText}</div>}\n          <div class=\"range-slider color-picker-slider color-picker-slider-hue\"></div>\n          {sliderValue && (\n            <div class=\"color-picker-slider-value\">\n              {sliderValueEditable ? (\n                <input\n                  type=\"number\"\n                  step=\"0.1\"\n                  min=\"0\"\n                  max=\"360\"\n                  class=\"color-picker-value-hue\"\n                  data-color-index=\"0\"\n                />\n              ) : (\n                <span class=\"color-picker-value-hue\"></span>\n              )}\n            </div>\n          )}\n        </div>\n        <div class=\"color-picker-slider-wrap\">\n          {sliderLabel && <div class=\"color-picker-slider-label\">{saturationLabelText}</div>}\n          <div class=\"range-slider color-picker-slider color-picker-slider-saturation\"></div>\n          {sliderValue && (\n            <div class=\"color-picker-slider-value\">\n              {sliderValueEditable ? (\n                <input\n                  type=\"number\"\n                  step=\"0.1\"\n                  min=\"0\"\n                  max=\"100\"\n                  class=\"color-picker-value-saturation\"\n                  data-color-index=\"1\"\n                />\n              ) : (\n                <span class=\"color-picker-value-saturation\"></span>\n              )}\n            </div>\n          )}\n        </div>\n        <div class=\"color-picker-slider-wrap\">\n          {sliderLabel && <div class=\"color-picker-slider-label\">{brightnessLabelText}</div>}\n          <div class=\"range-slider color-picker-slider color-picker-slider-brightness\"></div>\n          {sliderValue && (\n            <div class=\"color-picker-slider-value\">\n              {sliderValueEditable ? (\n                <input\n                  type=\"number\"\n                  step=\"0.1\"\n                  min=\"0\"\n                  max=\"100\"\n                  class=\"color-picker-value-brightness\"\n                  data-color-index=\"2\"\n                />\n              ) : (\n                <span class=\"color-picker-value-brightness\"></span>\n              )}\n            </div>\n          )}\n        </div>\n      </div>\n    );\n  },\n  init(self) {\n    self.hueRangeSlider = self.app.range.create({\n      el: self.$el.find('.color-picker-slider-hue'),\n      min: 0,\n      max: 360,\n      step: 0.1,\n      value: 0,\n      on: {\n        change(range, value) {\n          self.setValue({ hue: value });\n        },\n      },\n    });\n    self.saturationRangeSlider = self.app.range.create({\n      el: self.$el.find('.color-picker-slider-saturation'),\n      min: 0,\n      max: 1,\n      step: 0.001,\n      value: 0,\n      on: {\n        change(range, value) {\n          const s = Math.floor(value * 1000) / 1000;\n          self.setValue({ hsb: [self.value.hsb[0], s, self.value.hsb[2]] });\n        },\n      },\n    });\n    self.brightnessRangeSlider = self.app.range.create({\n      el: self.$el.find('.color-picker-slider-brightness'),\n      min: 0,\n      max: 1,\n      step: 0.001,\n      value: 0,\n      on: {\n        change(range, value) {\n          const b = Math.floor(value * 1000) / 1000;\n          self.setValue({ hsb: [self.value.hsb[0], self.value.hsb[1], b] });\n        },\n      },\n    });\n\n    function handleInputChange(e) {\n      const hsb = [...self.value.hsb];\n      const index = parseInt($(e.target).attr('data-color-index'), 10);\n      let value = parseFloat(e.target.value);\n      if (Number.isNaN(value)) {\n        e.target.value = hsb[index];\n        return;\n      }\n      if (index === 0) {\n        value = Math.max(0, Math.min(360, value));\n      } else {\n        value = Math.max(0, Math.min(100, value)) / 100;\n      }\n\n      hsb[index] = value;\n      self.setValue({ hsb });\n    }\n\n    self.$el.on('change', '.color-picker-module-hsb-sliders input', handleInputChange);\n\n    self.destroyHsbSlidersEvents = function destroyHsbSlidersEvents() {\n      self.$el.off('change', '.color-picker-module-hsb-sliders input', handleInputChange);\n    };\n  },\n  update(self) {\n    const { app, value } = self;\n    const { sliderValue, sliderValueEditable } = self.params;\n\n    const { hsb, hue } = value;\n\n    self.hueRangeSlider.value = hue;\n    self.saturationRangeSlider.value = hsb[1];\n    self.brightnessRangeSlider.value = hsb[2];\n\n    self.hueRangeSlider.layout();\n    self.saturationRangeSlider.layout();\n    self.brightnessRangeSlider.layout();\n\n    const hslCurrent = colorHsbToHsl(hsb[0], hsb[1], 1);\n    const hslLeft = colorHsbToHsl(hsb[0], 0, 1);\n    const hslRight = colorHsbToHsl(hsb[0], 1, 1);\n    const brightness = hsb[2];\n\n    self.hueRangeSlider.$el[0].style.setProperty('--f7-range-knob-color', `hsl(${hue}, 100%, 50%)`);\n    self.saturationRangeSlider.$el[0].style.setProperty(\n      '--f7-range-knob-color',\n      `hsl(${hslCurrent[0]}, ${hslCurrent[1] * 100}%, ${hslCurrent[2] * 100}%)`,\n    );\n    self.brightnessRangeSlider.$el[0].style.setProperty(\n      '--f7-range-knob-color',\n      `rgb(${brightness * 255}, ${brightness * 255}, ${brightness * 255})`,\n    );\n    self.saturationRangeSlider.$el\n      .find('.range-bar')\n      .css(\n        'background-image',\n        `linear-gradient(${app.rtl ? 'to left' : 'to right'}, hsl(${hslLeft[0]}, ${\n          hslLeft[1] * 100\n        }%, ${hslLeft[2] * 100}%), hsl(${hslRight[0]}, ${hslRight[1] * 100}%, ${\n          hslRight[2] * 100\n        }%))`,\n      );\n\n    if (sliderValue && sliderValueEditable) {\n      self.$el.find('input.color-picker-value-hue').val(`${hue}`);\n      self.$el.find('input.color-picker-value-saturation').val(`${(hsb[1] * 1000) / 10}`);\n      self.$el.find('input.color-picker-value-brightness').val(`${(hsb[2] * 1000) / 10}`);\n    } else if (sliderValue) {\n      self.$el.find('span.color-picker-value-hue').text(`${hue}`);\n      self.$el.find('span.color-picker-value-saturation').text(`${(hsb[1] * 1000) / 10}`);\n      self.$el.find('span.color-picker-value-brightness').text(`${(hsb[2] * 1000) / 10}`);\n    }\n  },\n  destroy(self) {\n    if (self.hueRangeSlider && self.hueRangeSlider.destroy) {\n      self.hueRangeSlider.destroy();\n    }\n    if (self.saturationRangeSlider && self.saturationRangeSlider.destroy) {\n      self.saturationRangeSlider.destroy();\n    }\n    if (self.brightnessRangeSlider && self.brightnessRangeSlider.destroy) {\n      self.brightnessRangeSlider.destroy();\n    }\n\n    delete self.hueRangeSlider;\n    delete self.saturationRangeSlider;\n    delete self.brightnessRangeSlider;\n\n    if (self.destroyHsbSlidersEvents) self.destroyHsbSlidersEvents();\n    delete self.destroyHsbSlidersEvents;\n  },\n};\n","/** @jsx $jsx */\nimport $jsx from '../../../shared/$jsx.js';\n\nexport default {\n  render(self) {\n    const { sliderLabel, sliderValue, sliderValueEditable, hueLabelText } = self.params;\n    return (\n      <div class=\"color-picker-module color-picker-module-hue-slider\">\n        <div class=\"color-picker-slider-wrap\">\n          {sliderLabel && <div class=\"color-picker-slider-label\">{hueLabelText}</div>}\n          <div class=\"range-slider color-picker-slider color-picker-slider-hue\"></div>\n          {sliderValue && (\n            <div class=\"color-picker-slider-value\">\n              {sliderValueEditable ? (\n                <input type=\"number\" step=\"0.1\" min=\"0\" max=\"360\" class=\"color-picker-value-hue\" />\n              ) : (\n                <span class=\"color-picker-value-hue\"></span>\n              )}\n            </div>\n          )}\n        </div>\n      </div>\n    );\n  },\n  init(self) {\n    self.hueRangeSlider = self.app.range.create({\n      el: self.$el.find('.color-picker-slider-hue'),\n      min: 0,\n      max: 360,\n      step: 0.1,\n      value: 0,\n      on: {\n        change(range, value) {\n          self.setValue({ hue: value });\n        },\n      },\n    });\n  },\n  update(self) {\n    const { value } = self;\n    const { sliderValue, sliderValueEditable } = self.params;\n\n    const { hue } = value;\n\n    self.hueRangeSlider.value = hue;\n    self.hueRangeSlider.layout();\n    self.hueRangeSlider.$el[0].style.setProperty('--f7-range-knob-color', `hsl(${hue}, 100%, 50%)`);\n    if (sliderValue && sliderValueEditable) {\n      self.$el.find('input.color-picker-value-hue').val(`${hue}`);\n    } else if (sliderValue) {\n      self.$el.find('span.color-picker-value-hue').text(`${hue}`);\n    }\n  },\n  destroy(self) {\n    if (self.hueRangeSlider && self.hueRangeSlider.destroy) {\n      self.hueRangeSlider.destroy();\n    }\n    delete self.hueRangeSlider;\n  },\n};\n","import { colorHsbToHsl } from '../../../shared/utils.js';\n/** @jsx $jsx */\nimport $jsx from '../../../shared/$jsx.js';\n\nexport default {\n  render(self) {\n    const { sliderLabel, sliderValue, sliderValueEditable, brightnessLabelText } = self.params;\n    return (\n      <div class=\"color-picker-module color-picker-module-brightness-slider\">\n        <div class=\"color-picker-slider-wrap\">\n          {sliderLabel && <div class=\"color-picker-slider-label\">{brightnessLabelText}</div>}\n          <div class=\"range-slider color-picker-slider color-picker-slider-brightness\"></div>\n          {sliderValue && (\n            <div class=\"color-picker-slider-value\">\n              {sliderValueEditable ? (\n                <input\n                  type=\"number\"\n                  step=\"0.1\"\n                  min=\"0\"\n                  max=\"100\"\n                  class=\"color-picker-value-brightness\"\n                />\n              ) : (\n                <span class=\"color-picker-value-brightness\"></span>\n              )}\n            </div>\n          )}\n        </div>\n      </div>\n    );\n  },\n  init(self) {\n    self.brightnessRangeSlider = self.app.range.create({\n      el: self.$el.find('.color-picker-slider-brightness'),\n      min: 0,\n      max: 1,\n      step: 0.001,\n      value: 0,\n      on: {\n        change(range, value) {\n          const b = Math.floor(value * 1000) / 1000;\n          self.setValue({ hsb: [self.value.hsb[0], self.value.hsb[1], b] });\n        },\n      },\n    });\n  },\n  update(self) {\n    const { value, app } = self;\n    const { sliderValue, sliderValueEditable } = self.params;\n\n    const { hsb } = value;\n\n    self.brightnessRangeSlider.value = hsb[2];\n    self.brightnessRangeSlider.layout();\n\n    const hslCurrent = colorHsbToHsl(hsb[0], hsb[1], hsb[2]);\n    const hslLeft = colorHsbToHsl(hsb[0], hsb[1], 0);\n    const hslRight = colorHsbToHsl(hsb[0], hsb[1], 1);\n\n    self.brightnessRangeSlider.$el[0].style.setProperty(\n      '--f7-range-knob-color',\n      `hsl(${hslCurrent[0]}, ${hslCurrent[1] * 100}%, ${hslCurrent[2] * 100}%)`,\n    );\n    self.brightnessRangeSlider.$el\n      .find('.range-bar')\n      .css(\n        'background-image',\n        `linear-gradient(${app.rtl ? 'to left' : 'to right'}, hsl(${hslLeft[0]}, ${\n          hslLeft[1] * 100\n        }%, ${hslLeft[2] * 100}%), hsl(${hslRight[0]}, ${hslRight[1] * 100}%, ${\n          hslRight[2] * 100\n        }%))`,\n      );\n    if (sliderValue && sliderValueEditable) {\n      self.$el.find('input.color-picker-value-brightness').val(`${(hsb[2] * 1000) / 10}`);\n    } else if (sliderValue) {\n      self.$el.find('span.color-picker-value-brightness').text(`${(hsb[2] * 1000) / 10}`);\n    }\n  },\n  destroy(self) {\n    if (self.brightnessRangeSlider && self.brightnessRangeSlider.destroy) {\n      self.brightnessRangeSlider.destroy();\n    }\n    delete self.brightnessRangeSlider;\n  },\n};\n","/* eslint indent: [\"off\"] */\nimport $ from '../../../shared/dom7.js';\n/** @jsx $jsx */\nimport $jsx from '../../../shared/$jsx.js';\n\nexport default {\n  render(self) {\n    return (\n      <div class=\"color-picker-module color-picker-module-palette\">\n        <div class=\"color-picker-palette\">\n          {self.params.palette.map((p) => {\n            if (Array.isArray(p)) {\n              let row = '<div class=\"color-picker-palette-row\">';\n              // prettier-ignore\n              row += p.map((c) => `\n                <div class=\"color-picker-palette-value\" data-palette-color=\"${c}\" style=\"background-color: ${c}\"></div>\n              `).join('');\n              row += '</div>';\n              return row;\n            }\n            return (\n              <div\n                class=\"color-picker-palette-value\"\n                data-palette-color={p}\n                style={`background-color: ${p}`}\n              ></div>\n            );\n          })}\n        </div>\n      </div>\n    );\n  },\n  init(self) {\n    function handlePaletteClick(e) {\n      const hex = $(e.target).attr('data-palette-color');\n      self.setValue({\n        hex,\n      });\n    }\n\n    self.$el.on(\n      'click',\n      '.color-picker-module-palette .color-picker-palette-value',\n      handlePaletteClick,\n    );\n\n    self.destroyPaletteEvents = function destroyPaletteEvents() {\n      self.$el.off('click', '.color-picker-module-hex input', handlePaletteClick);\n    };\n  },\n  destroy(self) {\n    if (self.destroyPaletteEvents) {\n      self.destroyPaletteEvents();\n    }\n    delete self.destroyPaletteEvents;\n  },\n};\n","/** @jsx $jsx */\nimport $jsx from '../../../shared/$jsx.js';\n\nexport default {\n  render() {\n    return (\n      <div class=\"color-picker-module color-picker-module-initial-current-colors\">\n        <div class=\"color-picker-initial-current-colors\">\n          <div class=\"color-picker-initial-color\"></div>\n          <div class=\"color-picker-current-color\"></div>\n        </div>\n      </div>\n    );\n  },\n  init(self) {\n    function handleInitialColorClick() {\n      if (self.initialValue) {\n        const { hex, alpha } = self.initialValue;\n        self.setValue({\n          hex,\n          alpha,\n        });\n      }\n    }\n    self.$el.on('click', '.color-picker-initial-color', handleInitialColorClick);\n    self.destroyInitialCurrentEvents = function destroyInitialCurrentEvents() {\n      self.$el.off('click', '.color-picker-initial-color', handleInitialColorClick);\n    };\n  },\n  update(self) {\n    self.$el\n      .find('.color-picker-module-initial-current-colors .color-picker-initial-color')\n      .css('background-color', self.initialValue.hex);\n    self.$el\n      .find('.color-picker-module-initial-current-colors .color-picker-current-color')\n      .css('background-color', self.value.hex);\n  },\n  destroy(self) {\n    if (self.destroyInitialCurrentEvents) {\n      self.destroyInitialCurrentEvents();\n    }\n    delete self.destroyInitialCurrentEvents;\n  },\n};\n","import $ from '../../../shared/dom7.js';\n/** @jsx $jsx */\nimport $jsx from '../../../shared/$jsx.js';\n\nexport default {\n  render(self) {\n    const { barLabel, barValue, barValueEditable, redLabelText, greenLabelText, blueLabelText } =\n      self.params;\n    return (\n      <div class=\"color-picker-module color-picker-module-rgb-bars\">\n        <div class=\"color-picker-bar-wrap\">\n          {barLabel && <div class=\"color-picker-bar-label\">{redLabelText}</div>}\n          <div class=\"range-slider color-picker-bar color-picker-bar-red\"></div>\n          {barValue && (\n            <div class=\"color-picker-bar-value\">\n              {barValueEditable ? (\n                <input\n                  type=\"number\"\n                  step=\"1\"\n                  min=\"0\"\n                  max=\"255\"\n                  class=\"color-picker-value-bar-red\"\n                  data-color-index=\"0\"\n                />\n              ) : (\n                <span class=\"color-picker-value-bar-red\"></span>\n              )}\n            </div>\n          )}\n        </div>\n        <div class=\"color-picker-bar-wrap\">\n          {barLabel && <div class=\"color-picker-bar-label\">{greenLabelText}</div>}\n          <div class=\"range-slider color-picker-bar color-picker-bar-green\"></div>\n          {barValue && (\n            <div class=\"color-picker-bar-value\">\n              {barValueEditable ? (\n                <input\n                  type=\"number\"\n                  step=\"1\"\n                  min=\"0\"\n                  max=\"255\"\n                  class=\"color-picker-value-bar-green\"\n                  data-color-index=\"1\"\n                />\n              ) : (\n                <span class=\"color-picker-value-bar-green\"></span>\n              )}\n            </div>\n          )}\n        </div>\n        <div class=\"color-picker-bar-wrap\">\n          {barLabel && <div class=\"color-picker-bar-label\">{blueLabelText}</div>}\n          <div class=\"range-slider color-picker-bar color-picker-bar-blue\"></div>\n          {barValue && (\n            <div class=\"color-picker-bar-value\">\n              {barValueEditable ? (\n                <input\n                  type=\"number\"\n                  step=\"1\"\n                  min=\"0\"\n                  max=\"255\"\n                  class=\"color-picker-value-bar-blue\"\n                  data-color-index=\"2\"\n                />\n              ) : (\n                <span class=\"color-picker-value-bar-blue\"></span>\n              )}\n            </div>\n          )}\n        </div>\n      </div>\n    );\n  },\n  init(self) {\n    self.redBar = self.app.range.create({\n      el: self.$el.find('.color-picker-bar-red'),\n      min: 0,\n      max: 255,\n      step: 1,\n      value: 0,\n      vertical: true,\n      on: {\n        change(range, value) {\n          self.setValue({ rgb: [value, self.value.rgb[1], self.value.rgb[2]] });\n        },\n      },\n    });\n    self.greenBar = self.app.range.create({\n      el: self.$el.find('.color-picker-bar-green'),\n      min: 0,\n      max: 255,\n      step: 1,\n      value: 0,\n      vertical: true,\n      on: {\n        change(range, value) {\n          self.setValue({ rgb: [self.value.rgb[0], value, self.value.rgb[2]] });\n        },\n      },\n    });\n    self.blueBar = self.app.range.create({\n      el: self.$el.find('.color-picker-bar-blue'),\n      min: 0,\n      max: 255,\n      step: 1,\n      value: 0,\n      vertical: true,\n      on: {\n        change(range, value) {\n          self.setValue({ rgb: [self.value.rgb[0], self.value.rgb[1], value] });\n        },\n      },\n    });\n\n    function handleInputChange(e) {\n      const rgb = [...self.value.rgb];\n      const index = parseInt($(e.target).attr('data-color-index'), 10);\n      let value = parseInt(e.target.value, 10);\n      if (Number.isNaN(value)) {\n        e.target.value = rgb[index];\n        return;\n      }\n      value = Math.max(0, Math.min(255, value));\n      rgb[index] = value;\n      self.setValue({ rgb });\n    }\n\n    self.$el.on('change', '.color-picker-module-rgb-bars input', handleInputChange);\n\n    self.destroyRgbBarsEvents = function destroyRgbBarsEvents() {\n      self.$el.off('change', '.color-picker-module-rgb-bars input', handleInputChange);\n    };\n  },\n  update(self) {\n    const { value, redBar, greenBar, blueBar } = self;\n\n    const { barValue, barValueEditable } = self.params;\n\n    const { rgb } = value;\n\n    redBar.value = rgb[0];\n    greenBar.value = rgb[1];\n    blueBar.value = rgb[2];\n\n    redBar.layout();\n    greenBar.layout();\n    blueBar.layout();\n\n    redBar.$el\n      .find('.range-bar')\n      .css(\n        'background-image',\n        `linear-gradient(to top, rgb(0, ${rgb[1]}, ${rgb[2]}), rgb(255, ${rgb[1]}, ${rgb[2]}))`,\n      );\n    greenBar.$el\n      .find('.range-bar')\n      .css(\n        'background-image',\n        `linear-gradient(to top, rgb(${rgb[0]}, 0, ${rgb[2]}), rgb(${rgb[0]}, 255, ${rgb[2]}))`,\n      );\n    blueBar.$el\n      .find('.range-bar')\n      .css(\n        'background-image',\n        `linear-gradient(to top, rgb(${rgb[0]}, ${rgb[1]}, 0), rgb(${rgb[0]}, ${rgb[1]}, 255))`,\n      );\n\n    if (barValue && barValueEditable) {\n      self.$el.find('input.color-picker-value-bar-red').val(rgb[0]);\n      self.$el.find('input.color-picker-value-bar-green').val(rgb[1]);\n      self.$el.find('input.color-picker-value-bar-blue').val(rgb[2]);\n    } else if (barValue) {\n      self.$el.find('span.color-picker-value-bar-red').text(rgb[0]);\n      self.$el.find('span.color-picker-value-bar-green').text(rgb[1]);\n      self.$el.find('span.color-picker-value-bar-blue').text(rgb[2]);\n    }\n  },\n  destroy(self) {\n    if (self.redBar && self.redBar.destroy) {\n      self.redBar.destroy();\n    }\n    if (self.greenBar && self.greenBar.destroy) {\n      self.greenBar.destroy();\n    }\n    if (self.blueBar && self.blueBar.destroy) {\n      self.blueBar.destroy();\n    }\n\n    delete self.redBar;\n    delete self.greenBar;\n    delete self.blueBar;\n\n    if (self.destroyRgbBarsEvents) self.destroyRgbBarsEvents();\n    delete self.destroyRgbBarsEvents;\n  },\n};\n","import $ from '../../../shared/dom7.js';\n/** @jsx $jsx */\nimport $jsx from '../../../shared/$jsx.js';\n\nexport default {\n  render(self) {\n    const {\n      sliderLabel,\n      sliderValue,\n      sliderValueEditable,\n      redLabelText,\n      greenLabelText,\n      blueLabelText,\n    } = self.params;\n    return (\n      <div class=\"color-picker-module color-picker-module-rgb-sliders\">\n        <div class=\"color-picker-slider-wrap\">\n          {sliderLabel && <div class=\"color-picker-slider-label\">{redLabelText}</div>}\n          <div class=\"range-slider color-picker-slider color-picker-slider-red\"></div>\n          {sliderValue && (\n            <div class=\"color-picker-slider-value\">\n              {sliderValueEditable ? (\n                <input\n                  type=\"number\"\n                  step=\"1\"\n                  min=\"0\"\n                  max=\"255\"\n                  class=\"color-picker-value-red\"\n                  data-color-index=\"0\"\n                />\n              ) : (\n                <span class=\"color-picker-value-red\"></span>\n              )}\n            </div>\n          )}\n        </div>\n        <div class=\"color-picker-slider-wrap\">\n          {sliderLabel && <div class=\"color-picker-slider-label\">{greenLabelText}</div>}\n          <div class=\"range-slider color-picker-slider color-picker-slider-green\"></div>\n          {sliderValue && (\n            <div class=\"color-picker-slider-value\">\n              {sliderValueEditable ? (\n                <input\n                  type=\"number\"\n                  step=\"1\"\n                  min=\"0\"\n                  max=\"255\"\n                  class=\"color-picker-value-green\"\n                  data-color-index=\"1\"\n                />\n              ) : (\n                <span class=\"color-picker-value-green\"></span>\n              )}\n            </div>\n          )}\n        </div>\n        <div class=\"color-picker-slider-wrap\">\n          {sliderLabel && <div class=\"color-picker-slider-label\">{blueLabelText}</div>}\n          <div class=\"range-slider color-picker-slider color-picker-slider-blue\"></div>\n          {sliderValue && (\n            <div class=\"color-picker-slider-value\">\n              {sliderValueEditable ? (\n                <input\n                  type=\"number\"\n                  step=\"1\"\n                  min=\"0\"\n                  max=\"255\"\n                  class=\"color-picker-value-blue\"\n                  data-color-index=\"2\"\n                />\n              ) : (\n                <span class=\"color-picker-value-blue\"></span>\n              )}\n            </div>\n          )}\n        </div>\n      </div>\n    );\n  },\n  init(self) {\n    self.redRangeSlider = self.app.range.create({\n      el: self.$el.find('.color-picker-slider-red'),\n      min: 0,\n      max: 255,\n      step: 1,\n      value: 0,\n      on: {\n        change(range, value) {\n          self.setValue({ rgb: [value, self.value.rgb[1], self.value.rgb[2]] });\n        },\n      },\n    });\n    self.greenRangeSlider = self.app.range.create({\n      el: self.$el.find('.color-picker-slider-green'),\n      min: 0,\n      max: 255,\n      step: 1,\n      value: 0,\n      on: {\n        change(range, value) {\n          self.setValue({ rgb: [self.value.rgb[0], value, self.value.rgb[2]] });\n        },\n      },\n    });\n    self.blueRangeSlider = self.app.range.create({\n      el: self.$el.find('.color-picker-slider-blue'),\n      min: 0,\n      max: 255,\n      step: 1,\n      value: 0,\n      on: {\n        change(range, value) {\n          self.setValue({ rgb: [self.value.rgb[0], self.value.rgb[1], value] });\n        },\n      },\n    });\n\n    function handleInputChange(e) {\n      const rgb = [...self.value.rgb];\n      const index = parseInt($(e.target).attr('data-color-index'), 10);\n      let value = parseInt(e.target.value, 10);\n      if (Number.isNaN(value)) {\n        e.target.value = rgb[index];\n        return;\n      }\n      value = Math.max(0, Math.min(255, value));\n      rgb[index] = value;\n      self.setValue({ rgb });\n    }\n\n    self.$el.on('change', '.color-picker-module-rgb-sliders input', handleInputChange);\n\n    self.destroyRgbSlidersEvents = function destroyRgbSlidersEvents() {\n      self.$el.off('change', '.color-picker-module-rgb-sliders input', handleInputChange);\n    };\n  },\n  update(self) {\n    const { app, value, redRangeSlider, greenRangeSlider, blueRangeSlider } = self;\n\n    const { sliderValue, sliderValueEditable } = self.params;\n\n    const { rgb } = value;\n\n    redRangeSlider.value = rgb[0];\n    greenRangeSlider.value = rgb[1];\n    blueRangeSlider.value = rgb[2];\n\n    redRangeSlider.layout();\n    greenRangeSlider.layout();\n    blueRangeSlider.layout();\n\n    redRangeSlider.$el[0].style.setProperty(\n      '--f7-range-knob-color',\n      `rgb(${rgb[0]}, ${rgb[1]}, ${rgb[2]})`,\n    );\n    greenRangeSlider.$el[0].style.setProperty(\n      '--f7-range-knob-color',\n      `rgb(${rgb[0]}, ${rgb[1]}, ${rgb[2]})`,\n    );\n    blueRangeSlider.$el[0].style.setProperty(\n      '--f7-range-knob-color',\n      `rgb(${rgb[0]}, ${rgb[1]}, ${rgb[2]})`,\n    );\n\n    const direction = app.rtl ? 'to left' : 'to right';\n\n    redRangeSlider.$el\n      .find('.range-bar')\n      .css(\n        'background-image',\n        `linear-gradient(${direction}, rgb(0, ${rgb[1]}, ${rgb[2]}), rgb(255, ${rgb[1]}, ${rgb[2]}))`,\n      );\n    greenRangeSlider.$el\n      .find('.range-bar')\n      .css(\n        'background-image',\n        `linear-gradient(${direction}, rgb(${rgb[0]}, 0, ${rgb[2]}), rgb(${rgb[0]}, 255, ${rgb[2]}))`,\n      );\n    blueRangeSlider.$el\n      .find('.range-bar')\n      .css(\n        'background-image',\n        `linear-gradient(${direction}, rgb(${rgb[0]}, ${rgb[1]}, 0), rgb(${rgb[0]}, ${rgb[1]}, 255))`,\n      );\n\n    if (sliderValue && sliderValueEditable) {\n      self.$el.find('input.color-picker-value-red').val(rgb[0]);\n      self.$el.find('input.color-picker-value-green').val(rgb[1]);\n      self.$el.find('input.color-picker-value-blue').val(rgb[2]);\n    } else if (sliderValue) {\n      self.$el.find('span.color-picker-value-red').text(rgb[0]);\n      self.$el.find('span.color-picker-value-green').text(rgb[1]);\n      self.$el.find('span.color-picker-value-blue').text(rgb[2]);\n    }\n  },\n  destroy(self) {\n    if (self.redRangeSlider && self.redRangeSlider.destroy) {\n      self.redRangeSlider.destroy();\n    }\n    if (self.greenRangeSlider && self.greenRangeSlider.destroy) {\n      self.greenRangeSlider.destroy();\n    }\n    if (self.blueRangeSlider && self.blueRangeSlider.destroy) {\n      self.blueRangeSlider.destroy();\n    }\n\n    delete self.redRangeSlider;\n    delete self.greenRangeSlider;\n    delete self.blueRangeSlider;\n\n    if (self.destroyRgbSlidersEvents) self.destroyRgbSlidersEvents();\n    delete self.destroyRgbSlidersEvents;\n  },\n};\n","import $ from '../../../shared/dom7.js';\nimport { getSupport } from '../../../shared/get-support.js';\n/** @jsx $jsx */\nimport $jsx from '../../../shared/$jsx.js';\n\nexport default {\n  render() {\n    return (\n      <div class=\"color-picker-module color-picker-module-sb-spectrum\">\n        <div class=\"color-picker-sb-spectrum\" style=\"background-color: hsl(0, 100%, 50%)\">\n          <div class=\"color-picker-sb-spectrum-handle\"></div>\n        </div>\n      </div>\n    );\n  },\n  init(self) {\n    const { app } = self;\n\n    let isTouched;\n    let isMoved;\n    let touchStartX;\n    let touchStartY;\n    let touchCurrentX;\n    let touchCurrentY;\n\n    let specterRect;\n    let specterIsTouched;\n    let specterHandleIsTouched;\n\n    const { $el } = self;\n\n    function setSBFromSpecterCoords(x, y) {\n      let s = (x - specterRect.left) / specterRect.width;\n      let b = (y - specterRect.top) / specterRect.height;\n      s = Math.max(0, Math.min(1, s));\n      b = 1 - Math.max(0, Math.min(1, b));\n\n      self.setValue({ hsb: [self.value.hue, s, b] });\n    }\n\n    function handleTouchStart(e) {\n      if (isMoved || isTouched) return;\n      touchStartX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n      touchCurrentX = touchStartX;\n      touchStartY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n      touchCurrentY = touchStartY;\n      const $targetEl = $(e.target);\n      specterHandleIsTouched = $targetEl.closest('.color-picker-sb-spectrum-handle').length > 0;\n      if (!specterHandleIsTouched) {\n        specterIsTouched = $targetEl.closest('.color-picker-sb-spectrum').length > 0;\n      }\n      if (specterIsTouched) {\n        specterRect = $el.find('.color-picker-sb-spectrum')[0].getBoundingClientRect();\n        setSBFromSpecterCoords(touchStartX, touchStartY);\n      }\n      if (specterHandleIsTouched || specterIsTouched) {\n        $el\n          .find('.color-picker-sb-spectrum-handle')\n          .addClass('color-picker-sb-spectrum-handle-pressed');\n      }\n    }\n    function handleTouchMove(e) {\n      if (!(specterIsTouched || specterHandleIsTouched)) return;\n      touchCurrentX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n      touchCurrentY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n      e.preventDefault();\n      if (!isMoved) {\n        // First move\n        isMoved = true;\n        if (specterHandleIsTouched) {\n          specterRect = $el.find('.color-picker-sb-spectrum')[0].getBoundingClientRect();\n        }\n      }\n      if (specterIsTouched || specterHandleIsTouched) {\n        setSBFromSpecterCoords(touchCurrentX, touchCurrentY);\n      }\n    }\n    function handleTouchEnd() {\n      isMoved = false;\n      if (specterIsTouched || specterHandleIsTouched) {\n        $el\n          .find('.color-picker-sb-spectrum-handle')\n          .removeClass('color-picker-sb-spectrum-handle-pressed');\n      }\n      specterIsTouched = false;\n      specterHandleIsTouched = false;\n    }\n\n    function handleResize() {\n      self.modules['sb-spectrum'].update(self);\n    }\n\n    const passiveListener =\n      app.touchEvents.start === 'touchstart' && getSupport().passiveListener\n        ? { passive: true, capture: false }\n        : false;\n\n    self.$el.on(app.touchEvents.start, handleTouchStart, passiveListener);\n    app.on('touchmove:active', handleTouchMove);\n    app.on('touchend:passive', handleTouchEnd);\n    app.on('resize', handleResize);\n\n    self.destroySpectrumEvents = function destroySpectrumEvents() {\n      self.$el.off(app.touchEvents.start, handleTouchStart, passiveListener);\n      app.off('touchmove:active', handleTouchMove);\n      app.off('touchend:passive', handleTouchEnd);\n      app.off('resize', handleResize);\n    };\n  },\n  update(self) {\n    const { value } = self;\n\n    const { hsl, hsb } = value;\n\n    const specterWidth = self.$el.find('.color-picker-sb-spectrum')[0].offsetWidth;\n    const specterHeight = self.$el.find('.color-picker-sb-spectrum')[0].offsetHeight;\n\n    self.$el.find('.color-picker-sb-spectrum').css('background-color', `hsl(${hsl[0]}, 100%, 50%)`);\n\n    self.$el\n      .find('.color-picker-sb-spectrum-handle')\n      .css('background-color', `hsl(${hsl[0]}, ${hsl[1] * 100}%, ${hsl[2] * 100}%)`)\n      .transform(`translate(${specterWidth * hsb[1]}px, ${specterHeight * (1 - hsb[2])}px)`);\n  },\n  destroy(self) {\n    if (self.destroySpectrumEvents) self.destroySpectrumEvents();\n    delete self.destroySpectrumEvents;\n  },\n};\n","import $ from '../../../shared/dom7.js';\nimport { colorHsbToHsl } from '../../../shared/utils.js';\nimport { getSupport } from '../../../shared/get-support.js';\n/** @jsx $jsx */\nimport $jsx from '../../../shared/$jsx.js';\n\nexport default {\n  render() {\n    return (\n      <div class=\"color-picker-module color-picker-module-hs-spectrum\">\n        <div class=\"color-picker-hs-spectrum\">\n          <div class=\"color-picker-hs-spectrum-handle\"></div>\n        </div>\n      </div>\n    );\n  },\n  init(self) {\n    const { app } = self;\n\n    let isTouched;\n    let isMoved;\n    let touchStartX;\n    let touchStartY;\n    let touchCurrentX;\n    let touchCurrentY;\n\n    let specterRect;\n    let specterIsTouched;\n    let specterHandleIsTouched;\n\n    const { $el } = self;\n\n    function setHSFromSpecterCoords(x, y) {\n      let h = ((x - specterRect.left) / specterRect.width) * 360;\n      let s = (y - specterRect.top) / specterRect.height;\n      h = Math.max(0, Math.min(360, h));\n      s = 1 - Math.max(0, Math.min(1, s));\n\n      self.setValue({ hsb: [h, s, self.value.hsb[2]] });\n    }\n\n    function handleTouchStart(e) {\n      if (isMoved || isTouched) return;\n      touchStartX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n      touchCurrentX = touchStartX;\n      touchStartY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n      touchCurrentY = touchStartY;\n      const $targetEl = $(e.target);\n      specterHandleIsTouched = $targetEl.closest('.color-picker-hs-spectrum-handle').length > 0;\n      if (!specterHandleIsTouched) {\n        specterIsTouched = $targetEl.closest('.color-picker-hs-spectrum').length > 0;\n      }\n      if (specterIsTouched) {\n        specterRect = $el.find('.color-picker-hs-spectrum')[0].getBoundingClientRect();\n        setHSFromSpecterCoords(touchStartX, touchStartY);\n      }\n      if (specterHandleIsTouched || specterIsTouched) {\n        $el\n          .find('.color-picker-hs-spectrum-handle')\n          .addClass('color-picker-hs-spectrum-handle-pressed');\n      }\n    }\n    function handleTouchMove(e) {\n      if (!(specterIsTouched || specterHandleIsTouched)) return;\n      touchCurrentX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n      touchCurrentY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n      e.preventDefault();\n      if (!isMoved) {\n        // First move\n        isMoved = true;\n        if (specterHandleIsTouched) {\n          specterRect = $el.find('.color-picker-hs-spectrum')[0].getBoundingClientRect();\n        }\n      }\n      if (specterIsTouched || specterHandleIsTouched) {\n        setHSFromSpecterCoords(touchCurrentX, touchCurrentY);\n      }\n    }\n    function handleTouchEnd() {\n      isMoved = false;\n      if (specterIsTouched || specterHandleIsTouched) {\n        $el\n          .find('.color-picker-hs-spectrum-handle')\n          .removeClass('color-picker-hs-spectrum-handle-pressed');\n      }\n      specterIsTouched = false;\n      specterHandleIsTouched = false;\n    }\n\n    function handleResize() {\n      self.modules['hs-spectrum'].update(self);\n    }\n\n    const passiveListener =\n      app.touchEvents.start === 'touchstart' && getSupport().passiveListener\n        ? { passive: true, capture: false }\n        : false;\n\n    self.$el.on(app.touchEvents.start, handleTouchStart, passiveListener);\n    app.on('touchmove:active', handleTouchMove);\n    app.on('touchend:passive', handleTouchEnd);\n    app.on('resize', handleResize);\n\n    self.destroySpectrumEvents = function destroySpectrumEvents() {\n      self.$el.off(app.touchEvents.start, handleTouchStart, passiveListener);\n      app.off('touchmove:active', handleTouchMove);\n      app.off('touchend:passive', handleTouchEnd);\n      app.off('resize', handleResize);\n    };\n  },\n  update(self) {\n    const { value } = self;\n\n    const { hsb } = value;\n\n    const specterWidth = self.$el.find('.color-picker-hs-spectrum')[0].offsetWidth;\n    const specterHeight = self.$el.find('.color-picker-hs-spectrum')[0].offsetHeight;\n\n    const hslBright = colorHsbToHsl(hsb[0], hsb[1], 1);\n\n    self.$el\n      .find('.color-picker-hs-spectrum-handle')\n      .css(\n        'background-color',\n        `hsl(${hslBright[0]}, ${hslBright[1] * 100}%, ${hslBright[2] * 100}%)`,\n      )\n      .transform(\n        `translate(${specterWidth * (hsb[0] / 360)}px, ${specterHeight * (1 - hsb[1])}px)`,\n      );\n  },\n  destroy(self) {\n    if (self.destroySpectrumEvents) self.destroySpectrumEvents();\n    delete self.destroySpectrumEvents;\n  },\n};\n","import $ from '../../../shared/dom7.js';\nimport { getSupport } from '../../../shared/get-support.js';\n/** @jsx $jsx */\nimport $jsx from '../../../shared/$jsx.js';\n\nfunction svgWheelCircles() {\n  const total = 256;\n  let circles = '';\n  for (let i = total; i > 0; i -= 1) {\n    const angle = (i * Math.PI) / (total / 2);\n    const hue = (360 / total) * i;\n    circles += `<circle cx=\"${150 - Math.sin(angle) * 125}\" cy=\"${\n      150 - Math.cos(angle) * 125\n    }\" r=\"25\" fill=\"hsl(${hue}, 100%, 50%)\"></circle>`;\n  }\n  return circles;\n}\nexport default {\n  render() {\n    return (\n      <div class=\"color-picker-module color-picker-module-wheel\">\n        <div class=\"color-picker-wheel\">\n          <svg viewBox=\"0 0 300 300\" width=\"300\" height=\"300\">\n            {svgWheelCircles()}\n          </svg>\n          <div class=\"color-picker-wheel-handle\"></div>\n          <div class=\"color-picker-sb-spectrum\" style=\"background-color: hsl(0, 100%, 50%)\">\n            <div class=\"color-picker-sb-spectrum-handle\"></div>\n          </div>\n        </div>\n      </div>\n    );\n  },\n  init(self) {\n    const { app } = self;\n\n    let isTouched;\n    let isMoved;\n    let touchStartX;\n    let touchStartY;\n    let touchCurrentX;\n    let touchCurrentY;\n\n    let wheelRect;\n    let wheelIsTouched;\n    let wheelHandleIsTouched;\n    let specterRect;\n    let specterIsTouched;\n    let specterHandleIsTouched;\n\n    const { $el } = self;\n\n    function setHueFromWheelCoords(x, y) {\n      const wheelCenterX = wheelRect.left + wheelRect.width / 2;\n      const wheelCenterY = wheelRect.top + wheelRect.height / 2;\n      const angleRad = Math.atan2(y - wheelCenterY, x - wheelCenterX);\n      let angleDeg = (angleRad * 180) / Math.PI + 90;\n      if (angleDeg < 0) angleDeg += 360;\n      angleDeg = 360 - angleDeg;\n      self.setValue({ hue: angleDeg });\n    }\n    function setSBFromSpecterCoords(x, y) {\n      let s = (x - specterRect.left) / specterRect.width;\n      let b = (y - specterRect.top) / specterRect.height;\n      s = Math.max(0, Math.min(1, s));\n      b = 1 - Math.max(0, Math.min(1, b));\n\n      self.setValue({ hsb: [self.value.hue, s, b] });\n    }\n\n    function handleTouchStart(e) {\n      if (isMoved || isTouched) return;\n      touchStartX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n      touchCurrentX = touchStartX;\n      touchStartY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n      touchCurrentY = touchStartY;\n      const $targetEl = $(e.target);\n      wheelHandleIsTouched = $targetEl.closest('.color-picker-wheel-handle').length > 0;\n      wheelIsTouched = $targetEl.closest('circle').length > 0;\n      specterHandleIsTouched = $targetEl.closest('.color-picker-sb-spectrum-handle').length > 0;\n      if (!specterHandleIsTouched) {\n        specterIsTouched = $targetEl.closest('.color-picker-sb-spectrum').length > 0;\n      }\n      if (wheelIsTouched) {\n        wheelRect = $el.find('.color-picker-wheel')[0].getBoundingClientRect();\n        setHueFromWheelCoords(touchStartX, touchStartY);\n      }\n      if (specterIsTouched) {\n        specterRect = $el.find('.color-picker-sb-spectrum')[0].getBoundingClientRect();\n        setSBFromSpecterCoords(touchStartX, touchStartY);\n      }\n      if (specterHandleIsTouched || specterIsTouched) {\n        $el\n          .find('.color-picker-sb-spectrum-handle')\n          .addClass('color-picker-sb-spectrum-handle-pressed');\n      }\n    }\n    function handleTouchMove(e) {\n      if (\n        !(wheelIsTouched || wheelHandleIsTouched) &&\n        !(specterIsTouched || specterHandleIsTouched)\n      )\n        return;\n      touchCurrentX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n      touchCurrentY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n      e.preventDefault();\n      if (!isMoved) {\n        // First move\n        isMoved = true;\n        if (wheelHandleIsTouched) {\n          wheelRect = $el.find('.color-picker-wheel')[0].getBoundingClientRect();\n        }\n        if (specterHandleIsTouched) {\n          specterRect = $el.find('.color-picker-sb-spectrum')[0].getBoundingClientRect();\n        }\n      }\n      if (wheelIsTouched || wheelHandleIsTouched) {\n        setHueFromWheelCoords(touchCurrentX, touchCurrentY);\n      }\n      if (specterIsTouched || specterHandleIsTouched) {\n        setSBFromSpecterCoords(touchCurrentX, touchCurrentY);\n      }\n    }\n    function handleTouchEnd() {\n      isMoved = false;\n      if (specterIsTouched || specterHandleIsTouched) {\n        $el\n          .find('.color-picker-sb-spectrum-handle')\n          .removeClass('color-picker-sb-spectrum-handle-pressed');\n      }\n      wheelIsTouched = false;\n      wheelHandleIsTouched = false;\n      specterIsTouched = false;\n      specterHandleIsTouched = false;\n    }\n\n    function handleResize() {\n      self.modules.wheel.update(self);\n    }\n\n    const passiveListener =\n      app.touchEvents.start === 'touchstart' && getSupport().passiveListener\n        ? { passive: true, capture: false }\n        : false;\n\n    self.$el.on(app.touchEvents.start, handleTouchStart, passiveListener);\n    app.on('touchmove:active', handleTouchMove);\n    app.on('touchend:passive', handleTouchEnd);\n    app.on('resize', handleResize);\n\n    self.destroyWheelEvents = function destroyWheelEvents() {\n      self.$el.off(app.touchEvents.start, handleTouchStart, passiveListener);\n      app.off('touchmove:active', handleTouchMove);\n      app.off('touchend:passive', handleTouchEnd);\n      app.off('resize', handleResize);\n    };\n  },\n  update(self) {\n    const { value } = self;\n\n    const { hsl, hsb } = value;\n\n    const specterWidth = self.$el.find('.color-picker-sb-spectrum')[0].offsetWidth;\n    const specterHeight = self.$el.find('.color-picker-sb-spectrum')[0].offsetHeight;\n    const wheelSize = self.$el.find('.color-picker-wheel')[0].offsetWidth;\n    const wheelHalfSize = wheelSize / 2;\n    const angleRad = (value.hue * Math.PI) / 180;\n    const handleSize = wheelSize / 6;\n    const handleHalfSize = handleSize / 2;\n    const tX =\n      wheelHalfSize - Math.sin(angleRad) * (wheelHalfSize - handleHalfSize) - handleHalfSize;\n    const tY =\n      wheelHalfSize - Math.cos(angleRad) * (wheelHalfSize - handleHalfSize) - handleHalfSize;\n    self.$el\n      .find('.color-picker-wheel-handle')\n      .css('background-color', `hsl(${hsl[0]}, 100%, 50%)`)\n      .transform(`translate(${tX}px, ${tY}px)`);\n\n    self.$el.find('.color-picker-sb-spectrum').css('background-color', `hsl(${hsl[0]}, 100%, 50%)`);\n\n    self.$el\n      .find('.color-picker-sb-spectrum-handle')\n      .css('background-color', `hsl(${hsl[0]}, ${hsl[1] * 100}%, ${hsl[2] * 100}%)`)\n      .transform(`translate(${specterWidth * hsb[1]}px, ${specterHeight * (1 - hsb[2])}px)`);\n  },\n  destroy(self) {\n    if (self.destroyWheelEvents) self.destroyWheelEvents();\n    delete self.destroyWheelEvents;\n  },\n};\n","import {\n  extend,\n  colorRgbToHex,\n  colorRgbToHsl,\n  colorHslToHsb,\n  colorHslToRgb,\n  colorHsbToHsl,\n  colorHexToRgb,\n  nextTick,\n  deleteProps,\n} from '../../shared/utils.js';\nimport Framework7Class from '../../shared/class.js';\nimport $ from '../../shared/dom7.js';\nimport { getDevice } from '../../shared/get-device.js';\n\nimport moduleAlphaSlider from './modules/alpha-slider.js';\nimport moduleCurrentColor from './modules/current-color.js';\nimport moduleHex from './modules/hex.js';\nimport moduleHsbSliders from './modules/hsb-sliders.js';\nimport moduleHueSlider from './modules/hue-slider.js';\nimport moduleBrightnessSlider from './modules/brightness-slider.js';\nimport modulePalette from './modules/palette.js';\nimport moduleInitialCurrentColors from './modules/initial-current-colors.js';\nimport moduleRgbBars from './modules/rgb-bars.js';\nimport moduleRgbSliders from './modules/rgb-sliders.js';\nimport moduleSbSpectrum from './modules/sb-spectrum.js';\nimport moduleHsSpectrum from './modules/hs-spectrum.js';\nimport moduleWheel from './modules/wheel.js';\n\n/** @jsx $jsx */\nimport $jsx from '../../shared/$jsx.js';\n\nclass ColorPicker extends Framework7Class {\n  constructor(app, params = {}) {\n    super(params, [app]);\n    const self = this;\n\n    self.params = extend({}, app.params.colorPicker, params);\n\n    let $containerEl;\n    if (self.params.containerEl) {\n      $containerEl = $(self.params.containerEl);\n      if ($containerEl.length === 0) return self;\n    }\n\n    let $inputEl;\n    if (self.params.inputEl) {\n      $inputEl = $(self.params.inputEl);\n    }\n\n    let $targetEl;\n    if (self.params.targetEl) {\n      $targetEl = $(self.params.targetEl);\n    }\n\n    extend(self, {\n      app,\n      $containerEl,\n      containerEl: $containerEl && $containerEl[0],\n      inline: $containerEl && $containerEl.length > 0,\n      $inputEl,\n      inputEl: $inputEl && $inputEl[0],\n      $targetEl,\n      targetEl: $targetEl && $targetEl[0],\n      initialized: false,\n      opened: false,\n      url: self.params.url,\n      modules: {\n        'alpha-slider': moduleAlphaSlider,\n        'current-color': moduleCurrentColor,\n        hex: moduleHex, // eslint-disable-line\n        'hsb-sliders': moduleHsbSliders,\n        'hue-slider': moduleHueSlider,\n        'brightness-slider': moduleBrightnessSlider,\n        palette: modulePalette, // eslint-disable-line\n        'initial-current-colors': moduleInitialCurrentColors,\n        'rgb-bars': moduleRgbBars,\n        'rgb-sliders': moduleRgbSliders,\n        'sb-spectrum': moduleSbSpectrum,\n        'hs-spectrum': moduleHsSpectrum,\n        wheel: moduleWheel, // eslint-disable-line\n      },\n    });\n\n    function onInputClick() {\n      self.open();\n    }\n    function onInputFocus(e) {\n      e.preventDefault();\n    }\n    function onTargetClick() {\n      self.open();\n    }\n    function onHtmlClick(e) {\n      if (self.destroyed || !self.params) return;\n      if (self.params.openIn === 'page') return;\n      const $clickTargetEl = $(e.target);\n      if (!self.opened || self.closing) return;\n      if ($clickTargetEl.closest('[class*=\"backdrop\"]').length) return;\n      if ($clickTargetEl.closest('.color-picker-popup, .color-picker-popover').length) return;\n      if ($inputEl && $inputEl.length > 0) {\n        if (\n          $clickTargetEl[0] !== $inputEl[0] &&\n          $clickTargetEl.closest('.sheet-modal').length === 0\n        ) {\n          self.close();\n        }\n      } else if ($(e.target).closest('.sheet-modal').length === 0) {\n        self.close();\n      }\n    }\n\n    // Events\n    extend(self, {\n      attachInputEvents() {\n        self.$inputEl.on('click', onInputClick);\n        if (self.params.inputReadOnly) {\n          self.$inputEl.on('focus mousedown', onInputFocus);\n          if (self.$inputEl[0]) {\n            self.$inputEl[0].f7ValidateReadonly = true;\n          }\n        }\n      },\n      detachInputEvents() {\n        self.$inputEl.off('click', onInputClick);\n        if (self.params.inputReadOnly) {\n          self.$inputEl.off('focus mousedown', onInputFocus);\n          if (self.$inputEl[0]) {\n            delete self.$inputEl[0].f7ValidateReadonly;\n          }\n        }\n      },\n      attachTargetEvents() {\n        self.$targetEl.on('click', onTargetClick);\n      },\n      detachTargetEvents() {\n        self.$targetEl.off('click', onTargetClick);\n      },\n      attachHtmlEvents() {\n        app.on('click', onHtmlClick);\n      },\n      detachHtmlEvents() {\n        app.off('click', onHtmlClick);\n      },\n    });\n\n    self.init();\n\n    return self;\n  }\n\n  get view() {\n    const { $inputEl, $targetEl, app, params } = this;\n    let view;\n    if (params.view) {\n      view = params.view;\n    } else {\n      if ($inputEl) {\n        view = $inputEl.parents('.view').length && $inputEl.parents('.view')[0].f7View;\n      }\n      if (!view && $targetEl) {\n        view = $targetEl.parents('.view').length && $targetEl.parents('.view')[0].f7View;\n      }\n    }\n    if (!view) view = app.views.main;\n\n    return view;\n  }\n\n  attachEvents() {\n    const self = this;\n    self.centerModules = self.centerModules.bind(self);\n    if (self.params.centerModules) {\n      self.app.on('resize', self.centerModules);\n    }\n  }\n\n  detachEvents() {\n    const self = this;\n    if (self.params.centerModules) {\n      self.app.off('resize', self.centerModules);\n    }\n  }\n\n  centerModules() {\n    const self = this;\n    if (!self.opened || !self.$el || self.inline) return;\n    const $pageContentEl = self.$el.find('.page-content');\n    if (!$pageContentEl.length) return;\n    const { scrollHeight, offsetHeight } = $pageContentEl[0];\n    if (scrollHeight <= offsetHeight) {\n      $pageContentEl.addClass('justify-content-center');\n    } else {\n      $pageContentEl.removeClass('justify-content-center');\n    }\n  }\n\n  initInput() {\n    const self = this;\n    if (!self.$inputEl) return;\n    if (self.params.inputReadOnly) self.$inputEl.prop('readOnly', true);\n  }\n\n  getModalType() {\n    const self = this;\n    const { app, modal, params } = self;\n    const { openIn, openInPhone } = params;\n    const device = getDevice();\n    if (modal && modal.type) return modal.type;\n    if (openIn !== 'auto') return openIn;\n    if (self.inline) return null;\n    if (device.ios) {\n      return device.ipad ? 'popover' : openInPhone;\n    }\n    if (app.width >= 768) {\n      return 'popover';\n    }\n\n    return openInPhone;\n  }\n\n  formatValue() {\n    const self = this;\n    const { value } = self;\n    if (self.params.formatValue) {\n      return self.params.formatValue.call(self, value);\n    }\n    return value.hex;\n  }\n\n  // eslint-disable-next-line\n  normalizeHsValues(arr) {\n    return [\n      Math.floor(arr[0] * 10) / 10,\n      Math.floor(arr[1] * 1000) / 1000,\n      Math.floor(arr[2] * 1000) / 1000,\n    ];\n  }\n\n  setValue(value = {}, updateModules = true) {\n    const self = this;\n    if (typeof value === 'undefined') return;\n\n    let { hex, rgb, hsl, hsb, alpha = 1, hue, rgba, hsla } = self.value || {};\n\n    const needChangeEvent = self.value || (!self.value && !self.params.value);\n    let valueChanged;\n    Object.keys(value).forEach((k) => {\n      if (!self.value || typeof self.value[k] === 'undefined') {\n        valueChanged = true;\n        return;\n      }\n      const v = value[k];\n      if (Array.isArray(v)) {\n        v.forEach((subV, subIndex) => {\n          if (subV !== self.value[k][subIndex]) {\n            valueChanged = true;\n          }\n        });\n      } else if (v !== self.value[k]) {\n        valueChanged = true;\n      }\n    });\n    if (!valueChanged) return;\n\n    if (value.rgb || value.rgba) {\n      const [r, g, b, a = alpha] = value.rgb || value.rgba;\n      rgb = [r, g, b];\n      hex = colorRgbToHex(...rgb);\n      hsl = colorRgbToHsl(...rgb);\n      hsb = colorHslToHsb(...hsl);\n      hsl = self.normalizeHsValues(hsl);\n      hsb = self.normalizeHsValues(hsb);\n      hue = hsb[0];\n      alpha = a;\n      rgba = [rgb[0], rgb[1], rgb[2], a];\n      hsla = [hsl[0], hsl[1], hsl[2], a];\n    }\n\n    if (value.hsl || value.hsla) {\n      const [h, s, l, a = alpha] = value.hsl || value.hsla;\n      hsl = [h, s, l];\n      rgb = colorHslToRgb(...hsl);\n      hex = colorRgbToHex(...rgb);\n      hsb = colorHslToHsb(...hsl);\n      hsl = self.normalizeHsValues(hsl);\n      hsb = self.normalizeHsValues(hsb);\n      hue = hsb[0];\n      alpha = a;\n      rgba = [rgb[0], rgb[1], rgb[2], a];\n      hsla = [hsl[0], hsl[1], hsl[2], a];\n    }\n\n    if (value.hsb) {\n      const [h, s, b, a = alpha] = value.hsb;\n      hsb = [h, s, b];\n      hsl = colorHsbToHsl(...hsb);\n      rgb = colorHslToRgb(...hsl);\n      hex = colorRgbToHex(...rgb);\n      hsl = self.normalizeHsValues(hsl);\n      hsb = self.normalizeHsValues(hsb);\n      hue = hsb[0];\n      alpha = a;\n      rgba = [rgb[0], rgb[1], rgb[2], a];\n      hsla = [hsl[0], hsl[1], hsl[2], a];\n    }\n\n    if (value.hex) {\n      rgb = colorHexToRgb(value.hex);\n      hex = colorRgbToHex(...rgb);\n      hsl = colorRgbToHsl(...rgb);\n      hsb = colorHslToHsb(...hsl);\n      hsl = self.normalizeHsValues(hsl);\n      hsb = self.normalizeHsValues(hsb);\n      hue = hsb[0];\n      rgba = [rgb[0], rgb[1], rgb[2], alpha];\n      hsla = [hsl[0], hsl[1], hsl[2], alpha];\n    }\n\n    if (typeof value.alpha !== 'undefined') {\n      alpha = value.alpha;\n      if (typeof rgb !== 'undefined') {\n        rgba = [rgb[0], rgb[1], rgb[2], alpha];\n      }\n      if (typeof hsl !== 'undefined') {\n        hsla = [hsl[0], hsl[1], hsl[2], alpha];\n      }\n    }\n\n    if (typeof value.hue !== 'undefined') {\n      const [h, s, l] = hsl; // eslint-disable-line\n      hsl = [value.hue, s, l];\n      hsb = colorHslToHsb(...hsl);\n      rgb = colorHslToRgb(...hsl);\n      hex = colorRgbToHex(...rgb);\n      hsl = self.normalizeHsValues(hsl);\n      hsb = self.normalizeHsValues(hsb);\n      hue = hsb[0];\n      rgba = [rgb[0], rgb[1], rgb[2], alpha];\n      hsla = [hsl[0], hsl[1], hsl[2], alpha];\n    }\n    self.value = {\n      hex,\n      alpha,\n      hue,\n      rgb,\n      hsl,\n      hsb,\n      rgba,\n      hsla,\n    };\n    if (!self.initialValue) self.initialValue = extend({}, self.value);\n    self.updateValue(needChangeEvent);\n    if (self.opened && updateModules) {\n      self.updateModules();\n    }\n  }\n\n  getValue() {\n    const self = this;\n    return self.value;\n  }\n\n  updateValue(fireEvents = true) {\n    const self = this;\n    const { $inputEl, value, $targetEl } = self;\n    if ($targetEl && self.params.targetElSetBackgroundColor) {\n      const { rgba } = value;\n      $targetEl.css('background-color', `rgba(${rgba.join(', ')})`);\n    }\n    if (fireEvents) {\n      self.emit('local::change colorPickerChange', self, value);\n    }\n\n    if ($inputEl && $inputEl.length) {\n      const inputValue = self.formatValue(value);\n      if ($inputEl && $inputEl.length) {\n        $inputEl.val(inputValue);\n        if (fireEvents) {\n          $inputEl.trigger('change');\n        }\n      }\n    }\n  }\n\n  updateModules() {\n    const self = this;\n    const { modules } = self;\n    self.params.modules.forEach((m) => {\n      if (typeof m === 'string' && modules[m] && modules[m].update) {\n        modules[m].update(self);\n      } else if (m && m.update) {\n        m.update(self);\n      }\n    });\n  }\n\n  update() {\n    const self = this;\n    self.updateModules();\n  }\n\n  renderPicker() {\n    const self = this;\n    const { params, modules } = self;\n    let html = '';\n\n    params.modules.forEach((m) => {\n      if (typeof m === 'string' && modules[m] && modules[m].render) {\n        html += modules[m].render(self);\n      } else if (m && m.render) {\n        html += m.render(self);\n      }\n    });\n\n    return html;\n  }\n\n  renderNavbar() {\n    const self = this;\n    if (self.params.renderNavbar) {\n      return self.params.renderNavbar.call(self, self);\n    }\n    const { openIn, navbarTitleText, navbarBackLinkText, navbarCloseText } = self.params;\n    return (\n      <div class=\"navbar\">\n        <div class=\"navbar-bg\"></div>\n        <div class=\"navbar-inner sliding\">\n          {openIn === 'page' && (\n            <div class=\"left\">\n              <a class=\"link back\">\n                <i class=\"icon icon-back\"></i>\n                <span class=\"if-not-md\">{navbarBackLinkText}</span>\n              </a>\n            </div>\n          )}\n          <div class=\"title\">{navbarTitleText}</div>\n          {openIn !== 'page' && (\n            <div class=\"right\">\n              <a class=\"link popup-close\" data-popup=\".color-picker-popup\">\n                {navbarCloseText}\n              </a>\n            </div>\n          )}\n        </div>\n      </div>\n    );\n  }\n\n  renderToolbar() {\n    const self = this;\n    if (self.params.renderToolbar) {\n      return self.params.renderToolbar.call(self, self);\n    }\n    return (\n      <div class=\"toolbar toolbar-top\">\n        <div class=\"toolbar-inner\">\n          <div class=\"left\"></div>\n          <div class=\"right\">\n            <a\n              class=\"link sheet-close popover-close\"\n              data-sheet=\".color-picker-sheet-modal\"\n              data-popover=\".color-picker-popover\"\n            >\n              {self.params.toolbarCloseText}\n            </a>\n          </div>\n        </div>\n      </div>\n    );\n  }\n\n  renderInline() {\n    const self = this;\n    const { cssClass, groupedModules } = self.params;\n    return (\n      <div\n        class={`color-picker color-picker-inline ${\n          groupedModules ? 'color-picker-grouped-modules' : ''\n        } ${cssClass || ''}`}\n      >\n        {self.renderPicker()}\n      </div>\n    );\n  }\n\n  renderSheet() {\n    const self = this;\n    const { cssClass, toolbarSheet, groupedModules } = self.params;\n    return (\n      <div\n        class={`sheet-modal color-picker color-picker-sheet-modal ${\n          groupedModules ? 'color-picker-grouped-modules' : ''\n        } ${cssClass || ''}`}\n      >\n        {toolbarSheet && self.renderToolbar()}\n        <div class=\"sheet-modal-inner\">\n          <div class=\"page-content\">{self.renderPicker()}</div>\n        </div>\n      </div>\n    );\n  }\n\n  renderPopover() {\n    const self = this;\n    const { cssClass, toolbarPopover, groupedModules } = self.params;\n    return (\n      <div class={`popover color-picker-popover ${cssClass || ''}`}>\n        <div class=\"popover-inner\">\n          <div class={`color-picker ${groupedModules ? 'color-picker-grouped-modules' : ''}`}>\n            {toolbarPopover && self.renderToolbar()}\n            <div class=\"page-content\">{self.renderPicker()}</div>\n          </div>\n        </div>\n      </div>\n    );\n  }\n\n  renderPopup() {\n    const self = this;\n    const { cssClass, navbarPopup, groupedModules } = self.params;\n    return (\n      <div class={`popup color-picker-popup ${cssClass || ''}`}>\n        <div class=\"page\">\n          {navbarPopup && self.renderNavbar()}\n          <div class={`color-picker ${groupedModules ? 'color-picker-grouped-modules' : ''}`}>\n            <div class=\"page-content\">{self.renderPicker()}</div>\n          </div>\n        </div>\n      </div>\n    );\n  }\n\n  renderPage() {\n    const self = this;\n    const { cssClass, groupedModules } = self.params;\n    return (\n      <div class={`page color-picker-page ${cssClass || ''}`} data-name=\"color-picker-page\">\n        {self.renderNavbar()}\n        <div class={`color-picker ${groupedModules ? 'color-picker-grouped-modules' : ''}`}>\n          <div class=\"page-content\">{self.renderPicker()}</div>\n        </div>\n      </div>\n    );\n  }\n\n  // eslint-disable-next-line\n  render() {\n    const self = this;\n    const { params } = self;\n    if (params.render) return params.render.call(self);\n    if (self.inline) return self.renderInline();\n    if (params.openIn === 'page') {\n      return self.renderPage();\n    }\n\n    const modalType = self.getModalType();\n    if (modalType === 'popover') return self.renderPopover();\n    if (modalType === 'sheet') return self.renderSheet();\n    if (modalType === 'popup') return self.renderPopup();\n  }\n\n  onOpen() {\n    const self = this;\n    const { initialized, $el, app, $inputEl, inline, value, params, modules } = self;\n    self.closing = false;\n    self.opened = true;\n    self.opening = true;\n\n    // Init main events\n    self.attachEvents();\n\n    params.modules.forEach((m) => {\n      if (typeof m === 'string' && modules[m] && modules[m].init) {\n        modules[m].init(self);\n      } else if (m && m.init) {\n        m.init(self);\n      }\n    });\n\n    const updateValue = !value && params.value;\n\n    // Set value\n    if (!initialized) {\n      if (value) self.setValue(value);\n      else if (params.value) {\n        self.setValue(params.value, false);\n      } else if (!params.value) {\n        self.setValue({ hex: '#ff0000' }, false);\n      }\n    } else if (value) {\n      self.initialValue = extend({}, value);\n      self.setValue(value, false);\n    }\n\n    // Update input value\n    if (updateValue) self.updateValue();\n    self.updateModules();\n\n    // Center modules\n    if (params.centerModules) {\n      self.centerModules();\n    }\n\n    // Extra focus\n    if (!inline && $inputEl && $inputEl.length && app.theme === 'md') {\n      $inputEl.trigger('focus');\n    }\n\n    self.initialized = true;\n\n    // Trigger events\n    if ($el) {\n      $el.trigger('colorpicker:open');\n    }\n    if ($inputEl) {\n      $inputEl.trigger('colorpicker:open');\n    }\n    self.emit('local::open colorPickerOpen', self);\n  }\n\n  onOpened() {\n    const self = this;\n    self.opening = false;\n    if (self.$el) {\n      self.$el.trigger('colorpicker:opened');\n    }\n    if (self.$inputEl) {\n      self.$inputEl.trigger('colorpicker:opened');\n    }\n    self.emit('local::opened colorPickerOpened', self);\n  }\n\n  onClose() {\n    const self = this;\n    const { app, params, modules } = self;\n    self.opening = false;\n    self.closing = true;\n\n    // Detach events\n    self.detachEvents();\n\n    if (self.$inputEl) {\n      if (app.theme === 'md') {\n        self.$inputEl.trigger('blur');\n      } else {\n        const validate = self.$inputEl.attr('validate');\n        const required = self.$inputEl.attr('required');\n        if (validate && required) {\n          app.input.validate(self.$inputEl);\n        }\n      }\n    }\n    params.modules.forEach((m) => {\n      if (typeof m === 'string' && modules[m] && modules[m].destroy) {\n        modules[m].destroy(self);\n      } else if (m && m.destroy) {\n        m.destroy(self);\n      }\n    });\n\n    if (self.$el) {\n      self.$el.trigger('colorpicker:close');\n    }\n    if (self.$inputEl) {\n      self.$inputEl.trigger('colorpicker:close');\n    }\n    self.emit('local::close colorPickerClose', self);\n  }\n\n  onClosed() {\n    const self = this;\n    self.opened = false;\n    self.closing = false;\n\n    if (!self.inline) {\n      nextTick(() => {\n        if (self.modal && self.modal.el && self.modal.destroy) {\n          if (!self.params.routableModals) {\n            self.modal.destroy();\n          }\n        }\n        delete self.modal;\n      });\n    }\n    if (self.$el) {\n      self.$el.trigger('colorpicker:closed');\n    }\n    if (self.$inputEl) {\n      self.$inputEl.trigger('colorpicker:closed');\n    }\n    self.emit('local::closed colorPickerClosed', self);\n  }\n\n  open() {\n    const self = this;\n    const { app, opened, inline, $inputEl, $targetEl, params } = self;\n    if (opened) return;\n\n    if (inline) {\n      self.$el = $(self.render());\n      self.$el[0].f7ColorPicker = self;\n      self.$containerEl.append(self.$el);\n      self.onOpen();\n      self.onOpened();\n      return;\n    }\n\n    const colorPickerContent = self.render();\n\n    if (params.openIn === 'page') {\n      self.view.router.navigate({\n        url: self.url,\n        route: {\n          content: colorPickerContent,\n          path: self.url,\n          on: {\n            pageBeforeIn(e, page) {\n              self.$el = page.$el.find('.color-picker');\n              self.$el[0].f7ColorPicker = self;\n              self.onOpen();\n            },\n            pageAfterIn() {\n              self.onOpened();\n            },\n            pageBeforeOut() {\n              self.onClose();\n            },\n            pageAfterOut() {\n              self.onClosed();\n              if (self.$el && self.$el[0]) {\n                self.$el[0].f7ColorPicker = null;\n                delete self.$el[0].f7ColorPicker;\n              }\n            },\n          },\n        },\n      });\n    } else {\n      const modalType = self.getModalType();\n      let backdrop = params.backdrop;\n      if (backdrop === null || typeof backdrop === 'undefined') {\n        if (modalType === 'popover' && app.params.popover.backdrop !== false) backdrop = true;\n        if (modalType === 'popup') backdrop = true;\n      }\n      const modalParams = {\n        targetEl: $targetEl || $inputEl,\n        scrollToEl: params.scrollToInput ? $targetEl || $inputEl : undefined,\n        content: colorPickerContent,\n        backdrop,\n        closeByBackdropClick: params.closeByBackdropClick,\n        on: {\n          open() {\n            const modal = this;\n            self.modal = modal;\n            self.$el =\n              modalType === 'popover' || modalType === 'popup'\n                ? modal.$el.find('.color-picker')\n                : modal.$el;\n            self.$el[0].f7ColorPicker = self;\n            self.onOpen();\n          },\n          opened() {\n            self.onOpened();\n          },\n          close() {\n            self.onClose();\n          },\n          closed() {\n            self.onClosed();\n            if (self.$el && self.$el[0]) {\n              self.$el[0].f7ColorPicker = null;\n              delete self.$el[0].f7ColorPicker;\n            }\n          },\n        },\n      };\n      if (modalType === 'popup') {\n        modalParams.push = params.popupPush;\n        modalParams.swipeToClose = params.popupSwipeToClose;\n      }\n      if (modalType === 'sheet') {\n        modalParams.push = params.sheetPush;\n        modalParams.swipeToClose = params.sheetSwipeToClose;\n      }\n      if (params.routableModals && self.view) {\n        self.view.router.navigate({\n          url: self.url,\n          route: {\n            path: self.url,\n            [modalType]: modalParams,\n          },\n        });\n      } else {\n        self.modal = app[modalType].create(modalParams);\n        self.modal.open();\n      }\n    }\n  }\n\n  close() {\n    const self = this;\n    const { opened, inline } = self;\n    if (!opened) return;\n    if (inline) {\n      self.onClose();\n      self.onClosed();\n      return;\n    }\n    if ((self.params.routableModals && self.view) || self.params.openIn === 'page') {\n      self.view.router.back();\n    } else {\n      self.modal.close();\n    }\n  }\n\n  init() {\n    const self = this;\n\n    self.initInput();\n\n    if (self.inline) {\n      self.open();\n      self.emit('local::init colorPickerInit', self);\n      return;\n    }\n\n    if (!self.initialized && self.params.value) {\n      self.setValue(self.params.value);\n    }\n\n    // Attach input Events\n    if (self.$inputEl) {\n      self.attachInputEvents();\n    }\n    if (self.$targetEl) {\n      self.attachTargetEvents();\n    }\n    if (self.params.closeByOutsideClick) {\n      self.attachHtmlEvents();\n    }\n    self.emit('local::init colorPickerInit', self);\n  }\n\n  destroy() {\n    const self = this;\n    if (self.destroyed) return;\n    const { $el } = self;\n    self.emit('local::beforeDestroy colorPickerBeforeDestroy', self);\n    if ($el) $el.trigger('colorpicker:beforedestroy');\n\n    self.close();\n\n    // Detach Events\n    self.detachEvents();\n    if (self.$inputEl) {\n      self.detachInputEvents();\n    }\n    if (self.$targetEl) {\n      self.detachTargetEvents();\n    }\n    if (self.params.closeByOutsideClick) {\n      self.detachHtmlEvents();\n    }\n\n    if ($el && $el.length) delete self.$el[0].f7ColorPicker;\n    deleteProps(self);\n    self.destroyed = true;\n  }\n}\n\nexport default ColorPicker;\n","import $ from '../../shared/dom7.js';\nimport ConstructorMethods from '../../shared/constructor-methods.js';\nimport ColorPicker from './color-picker-class.js';\n\nexport default {\n  name: 'colorPicker',\n  static: {\n    ColorPicker,\n  },\n  create() {\n    const app = this;\n    app.colorPicker = ConstructorMethods({\n      defaultSelector: '.color-picker',\n      constructor: ColorPicker,\n      app,\n      domProp: 'f7ColorPicker',\n    });\n    app.colorPicker.close = function close(el = '.color-picker') {\n      const $el = $(el);\n      if ($el.length === 0) return;\n      const colorPicker = $el[0].f7ColorPicker;\n      if (!colorPicker || (colorPicker && !colorPicker.opened)) return;\n      colorPicker.close();\n    };\n  },\n  params: {\n    colorPicker: {\n      // Color picker settings\n      value: null,\n      modules: ['wheel'],\n      palette: [\n        [\n          '#FFEBEE',\n          '#FFCDD2',\n          '#EF9A9A',\n          '#E57373',\n          '#EF5350',\n          '#F44336',\n          '#E53935',\n          '#D32F2F',\n          '#C62828',\n          '#B71C1C',\n        ],\n        [\n          '#F3E5F5',\n          '#E1BEE7',\n          '#CE93D8',\n          '#BA68C8',\n          '#AB47BC',\n          '#9C27B0',\n          '#8E24AA',\n          '#7B1FA2',\n          '#6A1B9A',\n          '#4A148C',\n        ],\n        [\n          '#E8EAF6',\n          '#C5CAE9',\n          '#9FA8DA',\n          '#7986CB',\n          '#5C6BC0',\n          '#3F51B5',\n          '#3949AB',\n          '#303F9F',\n          '#283593',\n          '#1A237E',\n        ],\n        [\n          '#E1F5FE',\n          '#B3E5FC',\n          '#81D4FA',\n          '#4FC3F7',\n          '#29B6F6',\n          '#03A9F4',\n          '#039BE5',\n          '#0288D1',\n          '#0277BD',\n          '#01579B',\n        ],\n        [\n          '#E0F2F1',\n          '#B2DFDB',\n          '#80CBC4',\n          '#4DB6AC',\n          '#26A69A',\n          '#009688',\n          '#00897B',\n          '#00796B',\n          '#00695C',\n          '#004D40',\n        ],\n        [\n          '#F1F8E9',\n          '#DCEDC8',\n          '#C5E1A5',\n          '#AED581',\n          '#9CCC65',\n          '#8BC34A',\n          '#7CB342',\n          '#689F38',\n          '#558B2F',\n          '#33691E',\n        ],\n        [\n          '#FFFDE7',\n          '#FFF9C4',\n          '#FFF59D',\n          '#FFF176',\n          '#FFEE58',\n          '#FFEB3B',\n          '#FDD835',\n          '#FBC02D',\n          '#F9A825',\n          '#F57F17',\n        ],\n        [\n          '#FFF3E0',\n          '#FFE0B2',\n          '#FFCC80',\n          '#FFB74D',\n          '#FFA726',\n          '#FF9800',\n          '#FB8C00',\n          '#F57C00',\n          '#EF6C00',\n          '#E65100',\n        ],\n      ],\n      groupedModules: false,\n      centerModules: true,\n\n      sliderLabel: false,\n      sliderValue: false,\n      sliderValueEdiable: false,\n\n      barLabel: false,\n      barValue: false,\n      barValueEdiable: false,\n\n      hexLabel: false,\n      hexValueEditable: false,\n\n      redLabelText: 'R',\n      greenLabelText: 'G',\n      blueLabelText: 'B',\n      hueLabelText: 'H',\n      saturationLabelText: 'S',\n      brightnessLabelText: 'B',\n      hexLabelText: 'HEX',\n      alphaLabelText: 'A',\n\n      // Common opener settings\n      containerEl: null,\n      openIn: 'popover', // or 'popover' or 'sheet' or 'popup' or 'page' or 'auto'\n      openInPhone: 'popup', // or 'popover' or 'sheet' or 'popup' or 'page'\n      popupPush: false,\n      popupSwipeToClose: undefined,\n      sheetPush: false,\n      sheetSwipeToClose: undefined,\n      formatValue: null,\n      targetEl: null,\n      targetElSetBackgroundColor: false,\n      inputEl: null,\n      inputReadOnly: true,\n      closeByOutsideClick: true,\n      scrollToInput: true,\n      toolbarSheet: true,\n      toolbarPopover: false,\n      toolbarCloseText: 'Done',\n      navbarPopup: true,\n      navbarCloseText: 'Done',\n      navbarTitleText: 'Color',\n      navbarBackLinkText: 'Back',\n      cssClass: null,\n      routableModals: false,\n      view: null,\n      url: 'color/',\n      backdrop: null,\n      closeByBackdropClick: true,\n      // Render functions\n      renderToolbar: null,\n      renderNavbar: null,\n      renderInline: null,\n      renderPopover: null,\n      renderSheet: null,\n      renderPopup: null,\n      render: null,\n    },\n  },\n};\n","import $ from '../../shared/dom7.js';\nimport { bindMethods, iosPreloaderContent, mdPreloaderContent } from '../../shared/utils.js';\n\nconst Treeview = {\n  open(itemEl) {\n    const app = this;\n    const $itemEl = $(itemEl).eq(0);\n    if (!$itemEl.length) return;\n    $itemEl.addClass('treeview-item-opened');\n    $itemEl.trigger('treeview:open');\n    app.emit('treeviewOpen', $itemEl[0]);\n    function done(cancel) {\n      if (cancel) {\n        $itemEl.removeClass('treeview-item-opened');\n        $itemEl.trigger('treeview:close');\n        app.emit('treeviewClose', $itemEl[0]);\n      } else {\n        $itemEl[0].f7TreeviewChildrenLoaded = true;\n      }\n      $itemEl.find('.treeview-toggle').removeClass('treeview-toggle-hidden');\n      $itemEl.find('.treeview-preloader').remove();\n    }\n\n    if ($itemEl.hasClass('treeview-load-children') && !$itemEl[0].f7TreeviewChildrenLoaded) {\n      const preloaders = { iosPreloaderContent, mdPreloaderContent };\n      $itemEl.trigger('treeview:loadchildren', done);\n      app.emit('treeviewLoadChildren', $itemEl[0], done);\n      $itemEl.find('.treeview-toggle').addClass('treeview-toggle-hidden');\n      $itemEl\n        .find('.treeview-item-root')\n        .prepend(\n          `<div class=\"preloader treeview-preloader\">${\n            preloaders[`${app.theme}PreloaderContent`]\n          }</div>`,\n        );\n    }\n  },\n  close(itemEl) {\n    const app = this;\n    const $itemEl = $(itemEl).eq(0);\n    if (!$itemEl.length) return;\n    $itemEl.removeClass('treeview-item-opened');\n    $itemEl.trigger('treeview:close');\n    app.emit('treeviewClose', $itemEl[0]);\n  },\n  toggle(itemEl) {\n    const app = this;\n    const $itemEl = $(itemEl).eq(0);\n    if (!$itemEl.length) return;\n    const wasOpened = $itemEl.hasClass('treeview-item-opened');\n    app.treeview[wasOpened ? 'close' : 'open']($itemEl);\n  },\n};\n\nexport default {\n  name: 'treeview',\n  create() {\n    const app = this;\n    bindMethods(app, {\n      treeview: Treeview,\n    });\n  },\n  clicks: {\n    '.treeview-toggle': function toggle($clickedEl, clickedData, e) {\n      const app = this;\n      if ($clickedEl.parents('.treeview-item-toggle').length) return;\n      const $treeviewItemEl = $clickedEl.parents('.treeview-item').eq(0);\n      if (!$treeviewItemEl.length) return;\n      e.preventF7Router = true;\n      app.treeview.toggle($treeviewItemEl[0]);\n    },\n    '.treeview-item-toggle': function toggle($clickedEl, clickedData, e) {\n      const app = this;\n      const $treeviewItemEl = $clickedEl.closest('.treeview-item').eq(0);\n      if (!$treeviewItemEl.length) return;\n      e.preventF7Router = true;\n      app.treeview.toggle($treeviewItemEl[0]);\n    },\n  },\n};\n","import { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { extend, deleteProps } from '../../shared/utils.js';\nimport Framework7Class from '../../shared/class.js';\nimport { getDevice } from '../../shared/get-device.js';\n\nconst textEditorButtonsMap = {\n  // f7-icon, material-icon, command\n  bold: ['bold', 'format_bold', 'bold'],\n  italic: ['italic', 'format_italic', 'italic'],\n  underline: ['underline', 'format_underlined', 'underline'],\n  strikeThrough: ['strikethrough', 'strikethrough_s', 'strikeThrough'],\n  orderedList: ['list_number', 'format_list_numbered', 'insertOrderedList'],\n  unorderedList: ['list_bullet', 'format_list_bulleted', 'insertUnorderedList'],\n  link: ['link', 'link', 'createLink'],\n  image: ['photo', 'image', 'insertImage'],\n  paragraph: ['paragraph', '<i class=\"icon\">¶</i>', 'formatBlock.P'],\n  h1: ['<i class=\"icon\">H<sub>1</sub></i>', '<i class=\"icon\">H<sub>1</sub></i>', 'formatBlock.H1'],\n  h2: ['<i class=\"icon\">H<sub>2</sub></i>', '<i class=\"icon\">H<sub>2</sub></i>', 'formatBlock.H2'],\n  h3: ['<i class=\"icon\">H<sub>3</sub></i>', '<i class=\"icon\">H<sub>3</sub></i>', 'formatBlock.H3'],\n  alignLeft: ['text_alignleft', 'format_align_left', 'justifyLeft'],\n  alignCenter: ['text_aligncenter', 'format_align_center', 'justifyCenter'],\n  alignRight: ['text_alignright', 'format_align_right', 'justifyRight'],\n  alignJustify: ['text_justify', 'format_align_justify', 'justifyFull'],\n  subscript: ['textformat_subscript', '<i class=\"icon\">A<sub>1</sub></i>', 'subscript'],\n  superscript: ['textformat_superscript', '<i class=\"icon\">A<sup>1</sup></i>', 'superscript'],\n  indent: ['increase_indent', 'format_indent_increase', 'indent'],\n  outdent: ['decrease_indent', 'format_indent_decrease', 'outdent'],\n};\n\nclass TextEditor extends Framework7Class {\n  constructor(app, params) {\n    super(params, [app]);\n    const self = this;\n    const document = getDocument();\n    const device = getDevice();\n\n    const defaults = extend({}, app.params.textEditor);\n\n    // Extend defaults with modules params\n    self.useModulesParams(defaults);\n\n    self.params = extend(defaults, params);\n\n    const el = self.params.el;\n    if (!el) return self;\n\n    const $el = $(el);\n    if ($el.length === 0) return self;\n\n    if ($el[0].f7TextEditor) return $el[0].f7TextEditor;\n\n    let $contentEl = $el.children('.text-editor-content');\n    if (!$contentEl.length) {\n      $el.append('<div class=\"text-editor-content\" contenteditable></div>');\n      $contentEl = $el.children('.text-editor-content');\n    }\n\n    extend(self, {\n      app,\n      $el,\n      el: $el[0],\n      $contentEl,\n      contentEl: $contentEl[0],\n    });\n    if ('value' in params) {\n      self.value = self.params.value;\n    }\n\n    if (self.params.mode === 'keyboard-toolbar') {\n      if (!(device.cordova || device.capacitor) && !device.android) {\n        self.params.mode = 'popover';\n      }\n    }\n\n    if (typeof self.params.buttons === 'string') {\n      try {\n        self.params.buttons = JSON.parse(self.params.buttons);\n      } catch (err) {\n        throw new Error('Framework7: TextEditor: wrong \"buttons\" parameter format');\n      }\n    }\n\n    $el[0].f7TextEditor = self;\n\n    // Bind\n    self.onButtonClick = self.onButtonClick.bind(self);\n    self.onFocus = self.onFocus.bind(self);\n    self.onBlur = self.onBlur.bind(self);\n    self.onInput = self.onInput.bind(self);\n    self.onPaste = self.onPaste.bind(self);\n    self.onSelectionChange = self.onSelectionChange.bind(self);\n    self.closeKeyboardToolbar = self.closeKeyboardToolbar.bind(self);\n\n    // Handle Events\n    self.attachEvents = function attachEvents() {\n      if (self.params.mode === 'toolbar') {\n        self.$el.find('.text-editor-toolbar').on('click', 'button', self.onButtonClick);\n      }\n      if (self.params.mode === 'keyboard-toolbar') {\n        self.$keyboardToolbarEl.on('click', 'button', self.onButtonClick);\n        self.$el.parents('.page').on('page:beforeout', self.closeKeyboardToolbar);\n      }\n      if (self.params.mode === 'popover' && self.popover) {\n        self.popover.$el.on('click', 'button', self.onButtonClick);\n      }\n      self.$contentEl.on('paste', self.onPaste);\n      self.$contentEl.on('focus', self.onFocus);\n      self.$contentEl.on('blur', self.onBlur);\n      self.$contentEl.on('input', self.onInput, true);\n      $(document).on('selectionchange', self.onSelectionChange);\n    };\n    self.detachEvents = function detachEvents() {\n      if (self.params.mode === 'toolbar') {\n        self.$el.find('.text-editor-toolbar').off('click', 'button', self.onButtonClick);\n      }\n      if (self.params.mode === 'keyboard-toolbar') {\n        self.$keyboardToolbarEl.off('click', 'button', self.onButtonClick);\n        self.$el.parents('.page').off('page:beforeout', self.closeKeyboardToolbar);\n      }\n      if (self.params.mode === 'popover' && self.popover) {\n        self.popover.$el.off('click', 'button', self.onButtonClick);\n      }\n      self.$contentEl.off('paste', self.onPaste);\n      self.$contentEl.off('focus', self.onFocus);\n      self.$contentEl.off('blur', self.onBlur);\n      self.$contentEl.off('input', self.onInput, true);\n      $(document).off('selectionchange', self.onSelectionChange);\n    };\n\n    // Install Modules\n    self.useModules();\n\n    // Init\n    self.init();\n\n    return self;\n  }\n\n  setValue(newValue) {\n    const self = this;\n    const currentValue = self.value;\n    if (currentValue === newValue) return self;\n    self.value = newValue;\n    self.$contentEl.html(newValue);\n    self.$el.trigger('texteditor:change', self.value);\n    self.emit('local::change textEditorChange', self, self.value);\n    return self;\n  }\n\n  getValue() {\n    const self = this;\n    return self.value;\n  }\n\n  clearValue() {\n    const self = this;\n    self.setValue('');\n    if (self.params.placeholder && !self.$contentEl.html()) {\n      self.insertPlaceholder();\n    }\n    return self;\n  }\n\n  createLink() {\n    const self = this;\n    const window = getWindow();\n    const document = getDocument();\n    const currentSelection = window.getSelection();\n    const selectedNodes = [];\n    let $selectedLinks;\n    if (\n      currentSelection &&\n      currentSelection.anchorNode &&\n      $(currentSelection.anchorNode).parents(self.$el).length\n    ) {\n      let anchorNode = currentSelection.anchorNode;\n      while (anchorNode) {\n        selectedNodes.push(anchorNode);\n        if (!anchorNode.nextSibling || anchorNode === currentSelection.focusNode) {\n          anchorNode = null;\n        }\n        if (anchorNode) {\n          anchorNode = anchorNode.nextSibling;\n        }\n      }\n\n      const selectedNodesLinks = [];\n      const $selectedNodes = $(selectedNodes);\n      for (let i = 0; i < $selectedNodes.length; i += 1) {\n        const childNodes = $selectedNodes[i].children;\n        if (childNodes) {\n          for (let j = 0; j < childNodes.length; j += 1) {\n            if ($(childNodes[j]).is('a')) {\n              selectedNodesLinks.push(childNodes[j]);\n            }\n          }\n        }\n      }\n      $selectedLinks = $selectedNodes.closest('a').add($(selectedNodesLinks));\n    }\n    if ($selectedLinks && $selectedLinks.length) {\n      $selectedLinks.each((linkNode) => {\n        const selection = window.getSelection();\n        const range = document.createRange();\n        range.selectNodeContents(linkNode);\n        selection.removeAllRanges();\n        selection.addRange(range);\n        document.execCommand('unlink', false);\n        selection.removeAllRanges();\n      });\n      return self;\n    }\n    const currentRange = self.getSelectionRange();\n    if (!currentRange) return self;\n    const dialog = self.app.dialog.prompt('', self.params.linkUrlText, (link) => {\n      if (link && link.trim().length) {\n        self.setSelectionRange(currentRange);\n        document.execCommand('createLink', false, link.trim());\n        self.$el.trigger('texteditor:insertlink', { url: link.trim() });\n        self.emit('local:insertLink textEditorInsertLink', self, link.trim());\n      }\n    });\n    dialog.$el.find('input').focus();\n    return self;\n  }\n\n  insertImage() {\n    const self = this;\n    const document = getDocument();\n    const currentRange = self.getSelectionRange();\n    if (!currentRange) return self;\n    const dialog = self.app.dialog.prompt('', self.params.imageUrlText, (imageUrl) => {\n      if (imageUrl && imageUrl.trim().length) {\n        self.setSelectionRange(currentRange);\n        document.execCommand('insertImage', false, imageUrl.trim());\n        self.$el.trigger('texteditor:insertimage', { url: imageUrl.trim() });\n        self.emit('local:insertImage textEditorInsertImage', self, imageUrl.trim());\n      }\n    });\n    dialog.$el.find('input').focus();\n    return self;\n  }\n\n  removePlaceholder() {\n    const self = this;\n    self.$contentEl.find('.text-editor-placeholder').remove();\n  }\n\n  insertPlaceholder() {\n    const self = this;\n    self.$contentEl.append(`<div class=\"text-editor-placeholder\">${self.params.placeholder}</div>`);\n  }\n\n  onSelectionChange() {\n    const self = this;\n    const window = getWindow();\n    const document = getDocument();\n    if (self.params.mode === 'toolbar') return;\n    const selection = window.getSelection();\n    const selectionIsInContent =\n      $(selection.anchorNode).parents(self.contentEl).length ||\n      selection.anchorNode === self.contentEl;\n    if (self.params.mode === 'keyboard-toolbar') {\n      if (!selectionIsInContent) {\n        self.closeKeyboardToolbar();\n      } else {\n        self.openKeyboardToolbar();\n      }\n      return;\n    }\n    if (self.params.mode === 'popover') {\n      const selectionIsInPopover =\n        $(selection.anchorNode).parents(self.popover.el).length ||\n        selection.anchorNode === self.popover.el;\n      if (!selectionIsInContent && !selectionIsInPopover) {\n        self.closePopover();\n        return;\n      }\n      if (!selection.isCollapsed && selection.rangeCount) {\n        const range = selection.getRangeAt(0);\n        const rect = range.getBoundingClientRect();\n        const rootEl = self.app.$el[0] || document.body;\n        self.openPopover(\n          rect.x + (window.scrollX || 0) - rootEl.offsetLeft,\n          rect.y + (window.scrollY || 0) - rootEl.offsetTop,\n          rect.width,\n          rect.height,\n        );\n      } else if (selection.isCollapsed) {\n        self.closePopover();\n      }\n    }\n  }\n\n  onPaste(e) {\n    const self = this;\n    const document = getDocument();\n    if (self.params.clearFormattingOnPaste && e.clipboardData && e.clipboardData.getData) {\n      const text = e.clipboardData.getData('text/plain');\n      e.preventDefault();\n      document.execCommand('insertText', false, text);\n    }\n  }\n\n  onInput() {\n    const self = this;\n    const value = self.$contentEl.html();\n\n    self.value = value;\n\n    self.$el.trigger('texteditor:input');\n    self.emit('local:input textEditorInput', self, self.value);\n\n    self.$el.trigger('texteditor:change', self.value);\n    self.emit('local::change textEditorChange', self, self.value);\n  }\n\n  onFocus() {\n    const self = this;\n    self.removePlaceholder();\n    self.$contentEl.focus();\n    self.$el.trigger('texteditor:focus');\n    self.emit('local::focus textEditorFocus', self);\n  }\n\n  onBlur() {\n    const self = this;\n    const window = getWindow();\n    const document = getDocument();\n    if (self.params.placeholder && self.$contentEl.html() === '') {\n      self.insertPlaceholder();\n    }\n    if (self.params.mode === 'popover') {\n      const selection = window.getSelection();\n      const selectionIsInContent =\n        $(selection.anchorNode).parents(self.contentEl).length ||\n        selection.anchorNode === self.contentEl;\n      const inPopover =\n        document.activeElement &&\n        self.popover &&\n        $(document.activeElement).closest(self.popover.$el).length;\n      if (!inPopover && !selectionIsInContent) {\n        self.closePopover();\n      }\n    }\n    if (self.params.mode === 'keyboard-toolbar') {\n      const selection = window.getSelection();\n      const selectionIsInContent =\n        $(selection.anchorNode).parents(self.contentEl).length ||\n        selection.anchorNode === self.contentEl;\n      if (!selectionIsInContent) {\n        self.closeKeyboardToolbar();\n      }\n    }\n    self.$el.trigger('texteditor:blur');\n    self.emit('local::blur textEditorBlur', self);\n  }\n\n  onButtonClick(e) {\n    const self = this;\n    const window = getWindow();\n    const document = getDocument();\n    const selection = window.getSelection();\n    const selectionIsInContent =\n      $(selection.anchorNode).parents(self.contentEl).length ||\n      selection.anchorNode === self.contentEl;\n    if (!selectionIsInContent) return;\n    const $buttonEl = $(e.target).closest('button');\n    if ($buttonEl.parents('form').length) {\n      e.preventDefault();\n    }\n    const button = $buttonEl.attr('data-button');\n    const buttonData = self.params.customButtons && self.params.customButtons[button];\n    if (!button || !(textEditorButtonsMap[button] || buttonData)) return;\n    $buttonEl.trigger('texteditor:buttonclick', button);\n    self.emit('local::buttonClick textEditorButtonClick', self, button);\n    if (buttonData) {\n      if (buttonData.onClick) buttonData.onClick(self, $buttonEl[0]);\n      return;\n    }\n    const command = textEditorButtonsMap[button][2];\n    if (command === 'createLink') {\n      self.createLink();\n      return;\n    }\n    if (command === 'insertImage') {\n      self.insertImage();\n      return;\n    }\n    if (command.indexOf('formatBlock') === 0) {\n      const tagName = command.split('.')[1];\n      const $anchorNode = $(selection.anchorNode);\n      if ($anchorNode.parents(tagName.toLowerCase()).length || $anchorNode.is(tagName)) {\n        document.execCommand('formatBlock', false, 'div');\n      } else {\n        document.execCommand('formatBlock', false, tagName);\n      }\n      return;\n    }\n    document.execCommand(command, false);\n  }\n\n  // eslint-disable-next-line\n  getSelectionRange() {\n    const window = getWindow();\n    const document = getDocument();\n    if (window.getSelection) {\n      const sel = window.getSelection();\n      if (sel.getRangeAt && sel.rangeCount) {\n        return sel.getRangeAt(0);\n      }\n    } else if (document.selection && document.selection.createRange) {\n      return document.selection.createRange();\n    }\n    return null;\n  }\n\n  // eslint-disable-next-line\n  setSelectionRange(range) {\n    const window = getWindow();\n    const document = getDocument();\n    if (range) {\n      if (window.getSelection) {\n        const sel = window.getSelection();\n        sel.removeAllRanges();\n        sel.addRange(range);\n      } else if (document.selection && range.select) {\n        range.select();\n      }\n    }\n  }\n\n  renderButtons() {\n    const self = this;\n    let html = '';\n    function renderButton(button) {\n      const iconClass = self.app.theme === 'md' ? 'material-icons' : 'f7-icons';\n      if (self.params.customButtons && self.params.customButtons[button]) {\n        const buttonData = self.params.customButtons[button];\n        return `<button type=\"button\" class=\"text-editor-button\" data-button=\"${button}\">${\n          buttonData.content || ''\n        }</button>`;\n      }\n      if (!textEditorButtonsMap[button]) return '';\n      const iconContent = textEditorButtonsMap[button][self.app.theme === 'md' ? 1 : 0];\n      return `<button type=\"button\" class=\"text-editor-button\" data-button=\"${button}\">${\n        iconContent.indexOf('<') >= 0 ? iconContent : `<i class=\"${iconClass}\">${iconContent}</i>`\n      }</button>`.trim();\n    }\n    self.params.buttons.forEach((button, buttonIndex) => {\n      if (Array.isArray(button)) {\n        button.forEach((b) => {\n          html += renderButton(b);\n        });\n        if (buttonIndex < self.params.buttons.length - 1 && self.params.dividers) {\n          html += '<div class=\"text-editor-button-divider\"></div>';\n        }\n      } else {\n        html += renderButton(button);\n      }\n    });\n    return html;\n  }\n\n  createToolbar() {\n    const self = this;\n    self.$el.prepend(`<div class=\"text-editor-toolbar\">${self.renderButtons()}</div>`);\n  }\n\n  createKeyboardToolbar() {\n    const self = this;\n    self.$keyboardToolbarEl = $(\n      `<div class=\"toolbar toolbar-bottom text-editor-keyboard-toolbar\"><div class=\"toolbar-inner\">${self.renderButtons()}</div></div>`,\n    );\n  }\n\n  createPopover() {\n    const self = this;\n    self.popover = self.app.popover.create({\n      content: `\n        <div class=\"popover dark text-editor-popover\">\n          <div class=\"popover-inner\">${self.renderButtons()}</div>\n        </div>\n      `,\n      closeByOutsideClick: false,\n      backdrop: false,\n    });\n  }\n\n  openKeyboardToolbar() {\n    const self = this;\n    if (self.$keyboardToolbarEl.parent(self.app.$el).length) return;\n    self.$el.trigger('texteditor:keyboardopen');\n    self.emit('local::keyboardOpen textEditorKeyboardOpen', self);\n    self.app.$el.append(self.$keyboardToolbarEl);\n  }\n\n  closeKeyboardToolbar() {\n    const self = this;\n    self.$keyboardToolbarEl.remove();\n    self.$el.trigger('texteditor:keyboardclose');\n    self.emit('local::keyboardClose textEditorKeyboardClose', self);\n  }\n\n  openPopover(targetX, targetY, targetWidth, targetHeight) {\n    const self = this;\n\n    if (!self.popover) return;\n    Object.assign(self.popover.params, {\n      targetX,\n      targetY,\n      targetWidth,\n      targetHeight,\n    });\n    clearTimeout(self.popoverTimeout);\n    self.popoverTimeout = setTimeout(() => {\n      if (!self.popover) return;\n      if (self.popover.opened) {\n        self.popover.resize();\n      } else {\n        self.$el.trigger('texteditor:popoveropen');\n        self.emit('local::popoverOpen textEditorPopoverOpen', self);\n        self.popover.open();\n      }\n    }, 400);\n  }\n\n  closePopover() {\n    const self = this;\n    clearTimeout(self.popoverTimeout);\n    if (!self.popover || !self.popover.opened) return;\n    self.popoverTimeout = setTimeout(() => {\n      if (!self.popover) return;\n      self.$el.trigger('texteditor:popoverclose');\n      self.emit('local::popoverClose textEditorPopoverClose', self);\n      self.popover.close();\n    }, 400);\n  }\n\n  init() {\n    const self = this;\n    if (self.value) {\n      self.$contentEl.html(self.value);\n    } else {\n      self.value = self.$contentEl.html();\n    }\n    if (self.params.placeholder && self.value === '') {\n      self.insertPlaceholder();\n    }\n    if (self.params.mode === 'toolbar') {\n      self.createToolbar();\n    } else if (self.params.mode === 'popover') {\n      self.createPopover();\n    } else if (self.params.mode === 'keyboard-toolbar') {\n      self.createKeyboardToolbar();\n    }\n\n    self.attachEvents();\n    self.$el.trigger('texteditor:init');\n    self.emit('local::init textEditorInit', self);\n    return self;\n  }\n\n  destroy() {\n    let self = this;\n    self.$el.trigger('texteditor:beforedestroy');\n    self.emit('local::beforeDestroy textEditorBeforeDestroy', self);\n    self.detachEvents();\n    if (self.params.mode === 'keyboard-toolbar' && self.$keyboardToolbarEl) {\n      self.$keyboardToolbarEl.remove();\n    }\n    if (self.popover) {\n      self.popover.close(false);\n      self.popover.destroy();\n    }\n    delete self.$el[0].f7TextEditor;\n    deleteProps(self);\n    self = null;\n  }\n}\n\nexport default TextEditor;\n","import $ from '../../shared/dom7.js';\nimport { extend } from '../../shared/utils.js';\nimport TextEditor from './text-editor-class.js';\nimport ConstructorMethods from '../../shared/constructor-methods.js';\n\nexport default {\n  name: 'textEditor',\n  params: {\n    textEditor: {\n      el: null,\n      mode: 'toolbar', // or 'popover'\n      value: undefined, // will use html content\n      customButtons: null,\n      buttons: [\n        ['bold', 'italic', 'underline', 'strikeThrough'],\n        ['orderedList', 'unorderedList'],\n        ['link', 'image'],\n        ['paragraph', 'h1', 'h2', 'h3'],\n        ['alignLeft', 'alignCenter', 'alignRight', 'alignJustify'],\n        ['subscript', 'superscript'],\n        ['indent', 'outdent'],\n      ],\n      dividers: true,\n      imageUrlText: 'Insert image URL',\n      linkUrlText: 'Insert link URL',\n      placeholder: null,\n      clearFormattingOnPaste: true,\n    },\n  },\n  create() {\n    const app = this;\n    app.textEditor = extend(\n      ConstructorMethods({\n        defaultSelector: '.text-editor',\n        constructor: TextEditor,\n        app,\n        domProp: 'f7TextEditor',\n      }),\n    );\n  },\n  static: {\n    TextEditor,\n  },\n  on: {\n    tabMounted(tabEl) {\n      const app = this;\n      $(tabEl)\n        .find('.text-editor-init')\n        .each((editorEl) => {\n          const dataset = $(editorEl).dataset();\n          app.textEditor.create(extend({ el: editorEl }, dataset || {}));\n        });\n    },\n    tabBeforeRemove(tabEl) {\n      $(tabEl)\n        .find('.text-editor-init')\n        .each((editorEl) => {\n          if (editorEl.f7TextEditor) editorEl.f7TextEditor.destroy();\n        });\n    },\n    pageInit(page) {\n      const app = this;\n      page.$el.find('.text-editor-init').each((editorEl) => {\n        const dataset = $(editorEl).dataset();\n        app.textEditor.create(extend({ el: editorEl }, dataset || {}));\n      });\n    },\n    pageBeforeRemove(page) {\n      page.$el.find('.text-editor-init').each((editorEl) => {\n        if (editorEl.f7TextEditor) editorEl.f7TextEditor.destroy();\n      });\n    },\n  },\n  vnode: {\n    'text-editor-init': {\n      insert(vnode) {\n        const app = this;\n        const editorEl = vnode.elm;\n        const dataset = $(editorEl).dataset();\n        app.textEditor.create(extend({ el: editorEl }, dataset || {}));\n      },\n      destroy(vnode) {\n        const editorEl = vnode.elm;\n        if (editorEl.f7TextEditor) editorEl.f7TextEditor.destroy();\n      },\n    },\n  },\n};\n","import $ from '../../shared/dom7.js';\nimport { extend, deleteProps } from '../../shared/utils.js';\nimport Framework7Class from '../../shared/class.js';\n/** @jsx $jsx */\nimport $jsx from '../../shared/$jsx.js';\n\nclass PieChart extends Framework7Class {\n  constructor(app, params = {}) {\n    super(params, [app]);\n\n    const self = this;\n\n    const defaults = extend({}, app.params.pieChart);\n\n    // Extend defaults with modules params\n    self.useModulesParams(defaults);\n\n    self.params = extend(defaults, params);\n\n    const { el } = self.params;\n    if (!el) return self;\n\n    const $el = $(el);\n    if ($el.length === 0) return self;\n\n    if ($el[0].f7PieChart) return $el[0].f7PieChart;\n\n    extend(self, {\n      app,\n      $el,\n      el: $el && $el[0],\n      currentIndex: null,\n      f7Tooltip: null,\n    });\n\n    $el[0].f7PieChart = self;\n\n    // Install Modules\n    self.useModules();\n\n    self.showTooltip = self.showTooltip.bind(this);\n    self.hideTooltip = self.hideTooltip.bind(this);\n\n    self.init();\n\n    return self;\n  }\n\n  getSummValue() {\n    const { datasets } = this.params;\n    let summ = 0;\n    datasets\n      .map((d) => d.value || 0)\n      .forEach((value) => {\n        summ += value;\n      });\n    return summ;\n  }\n\n  getPaths() {\n    const { datasets, size } = this.params;\n    const paths = [];\n\n    let cumulativePercentage = 0;\n\n    function getCoordinatesForPercentage(percentage) {\n      const x = Math.cos(2 * Math.PI * percentage) * (size / 3);\n      const y = Math.sin(2 * Math.PI * percentage) * (size / 3);\n      return [x, y];\n    }\n\n    datasets.forEach(({ value, label, color }) => {\n      const percentage = value / this.getSummValue();\n\n      const [startX, startY] = getCoordinatesForPercentage(cumulativePercentage);\n      cumulativePercentage += percentage;\n      const [endX, endY] = getCoordinatesForPercentage(cumulativePercentage);\n      const largeArcFlag = percentage > 0.5 ? 1 : 0;\n      const points = [\n        `M ${startX} ${startY}`, // Move\n        `A ${size / 3} ${size / 3} 0 ${largeArcFlag} 1 ${endX} ${endY}`, // Arc\n        'L 0 0', // Line\n      ].join(' ');\n\n      paths.push({\n        points,\n        label,\n        color,\n      });\n    });\n    return paths;\n  }\n\n  formatTooltipText() {\n    const { datasets } = this.params;\n    const { currentIndex } = this;\n    if (currentIndex === null) return '';\n    const { value, label, color } = datasets[currentIndex];\n    const percentage = (value / this.getSummValue()) * 100;\n\n    const round = (v) => {\n      if (parseInt(v, 10) === v) return v;\n      return Math.round(v * 100) / 100;\n    };\n\n    if (this.params.formatTooltip) {\n      return this.params.formatTooltip.call(this, {\n        index: currentIndex,\n        value,\n        label,\n        color,\n        percentage,\n      });\n    }\n\n    const tooltipText = `${label ? `${label}: ` : ''}${round(value)} (${round(percentage)}%)`;\n\n    return `\n      <div class=\"pie-chart-tooltip-label\">\n        <span class=\"pie-chart-tooltip-color\" style=\"background-color: ${color};\"></span> ${tooltipText}\n      </div>\n    `;\n  }\n\n  setTooltip() {\n    const self = this;\n    const { currentIndex, el, app, params } = self;\n    const { tooltip } = params;\n    if (currentIndex === null && !self.f7Tooltip) return;\n    if (!tooltip || !el) return;\n\n    if (currentIndex !== null && !self.f7Tooltip) {\n      self.f7Tooltip = app.tooltip.create({\n        trigger: 'manual',\n        containerEl: el,\n        targetEl: el.querySelector(`path[data-index=\"${currentIndex}\"]`),\n        text: self.formatTooltipText(),\n        cssClass: 'pie-chart-tooltip',\n      });\n      self.f7Tooltip.show();\n      return;\n    }\n    if (!self.f7Tooltip) return;\n    if (currentIndex !== null) {\n      self.f7Tooltip.setText(self.formatTooltipText());\n      self.f7Tooltip.setTargetEl(el.querySelector(`path[data-index=\"${currentIndex}\"]`));\n\n      self.f7Tooltip.show();\n    } else {\n      self.f7Tooltip.hide();\n    }\n  }\n\n  render() {\n    const self = this;\n    const size = self.params.size;\n    const paths = self.getPaths();\n    return (\n      <svg\n        xmlns=\"http://www.w3.org/2000/svg\"\n        width={size}\n        viewBox={`-${size / 3} -${size / 3} ${(size * 2) / 3} ${(size * 2) / 3}`}\n        style=\"transform: rotate(-90deg)\"\n      >\n        {paths.map((path, index) => (\n          <path d={path.points} fill={path.color} data-index={index} />\n        ))}\n      </svg>\n    );\n  }\n\n  update(newParams = {}) {\n    const self = this;\n    const { params } = self;\n    Object.keys(newParams).forEach((param) => {\n      if (typeof newParams[param] !== 'undefined') {\n        params[param] = newParams[param];\n      }\n    });\n    if (self.$svgEl.length === 0) return self;\n    self.$svgEl.remove();\n    delete self.$svgEl.f7PieChart;\n    const $svgEl = $(self.render()).eq(0);\n    $svgEl.f7PieChart = self;\n    extend(self, {\n      $svgEl,\n      svgEl: $svgEl && $svgEl[0],\n    });\n    self.$el.append($svgEl);\n    return self;\n  }\n\n  setCurrentIndex(index) {\n    const self = this;\n    if (index === self.currentIndex) return;\n    const { datasets } = self.params;\n    self.currentIndex = index;\n    self.$el.trigger('piechart:select', { index, dataset: datasets[index] });\n    self.emit('local::select pieChartSelect', self, index, datasets[index]);\n  }\n\n  showTooltip(e) {\n    const newIndex = parseInt(e.target.getAttribute('data-index'), 10);\n    this.setCurrentIndex(newIndex);\n    this.$svgEl\n      .find('path')\n      .removeClass('pie-chart-hidden')\n      .forEach((el, index) => {\n        if (index !== this.currentIndex) $(el).addClass('pie-chart-hidden');\n      });\n    this.setTooltip();\n  }\n\n  hideTooltip() {\n    this.setCurrentIndex(null);\n    this.$svgEl.find('path').removeClass('pie-chart-hidden');\n    this.setTooltip();\n  }\n\n  init() {\n    const self = this;\n    const $svgEl = $(self.render()).eq(0);\n    $svgEl.f7PieChart = self;\n    extend(self, {\n      $svgEl,\n      svgEl: $svgEl && $svgEl[0],\n    });\n    self.$el.append($svgEl);\n    self.$el.on('click mouseenter', 'path', self.showTooltip, true);\n    self.$el.on('mouseleave', 'path', self.hideTooltip, true);\n    return self;\n  }\n\n  destroy() {\n    const self = this;\n    if (!self.$el || self.destroyed) return;\n    self.$el.trigger('piechart:beforedestroy');\n    self.emit('local::beforeDestroy pieChartBeforeDestroy', self);\n    self.$el.off('click mouseenter', 'path', self.showTooltip, true);\n    self.$el.off('mouseleave', 'path', self.hideTooltip, true);\n    self.$svgEl.remove();\n    if (self.f7Tooltip && self.f7Tooltip.destroy) {\n      self.f7Tooltip.destroy();\n    }\n    delete self.$el[0].f7PieChart;\n    deleteProps(self);\n    self.destroyed = true;\n  }\n}\n\nexport default PieChart;\n","import $ from '../../shared/dom7.js';\nimport PieChart from './pie-chart-class.js';\nimport ConstructorMethods from '../../shared/constructor-methods.js';\n\nexport default {\n  name: 'pieChart',\n  params: {\n    pieChart: {\n      el: null,\n      datasets: [],\n      size: 320,\n      tooltip: false,\n      formatTooltip: null,\n    },\n  },\n  create() {\n    const app = this;\n    app.pieChart = ConstructorMethods({\n      defaultSelector: '.pie-chart',\n      constructor: PieChart,\n      app,\n      domProp: 'f7PieChart',\n    });\n    app.pieChart.update = function update(el, newParams) {\n      const $el = $(el);\n      if ($el.length === 0) return undefined;\n      const pieChart = app.pieChart.get(el);\n      if (!pieChart) return undefined;\n      pieChart.update(newParams);\n      return pieChart;\n    };\n  },\n};\n","import $ from '../../shared/dom7.js';\nimport { extend, deleteProps } from '../../shared/utils.js';\nimport Framework7Class from '../../shared/class.js';\n/** @jsx $jsx */\nimport $jsx from '../../shared/$jsx.js';\n\nclass AreaChart extends Framework7Class {\n  constructor(app, params = {}) {\n    super(params, [app]);\n\n    const self = this;\n\n    const defaults = extend({}, app.params.areaChart);\n\n    // Extend defaults with modules params\n    self.useModulesParams(defaults);\n\n    self.params = extend(defaults, params);\n\n    const { el } = self.params;\n    if (!el) return self;\n\n    const $el = $(el);\n    if ($el.length === 0) return self;\n\n    if ($el[0].f7AreaChart) return $el[0].f7AreaChart;\n\n    extend(self, {\n      app,\n      $el,\n      el: $el && $el[0],\n      currentIndex: null,\n      hiddenDatasets: [],\n      f7Tooltip: null,\n      linesOffsets: null,\n    });\n\n    $el[0].f7AreaChart = self;\n\n    // Install Modules\n    self.useModules();\n\n    self.onMouseEnter = self.onMouseEnter.bind(self);\n    self.onMouseMove = self.onMouseMove.bind(self);\n    self.onMouseLeave = self.onMouseLeave.bind(self);\n    self.onLegendClick = self.onLegendClick.bind(self);\n\n    self.init();\n\n    return self;\n  }\n\n  getVisibleLabels() {\n    const { maxAxisLabels, axisLabels } = this.params;\n    if (!maxAxisLabels || axisLabels.length <= maxAxisLabels) return axisLabels;\n    const skipStep = Math.ceil(axisLabels.length / maxAxisLabels);\n    const filtered = axisLabels.filter((label, index) => index % skipStep === 0);\n    return filtered;\n  }\n\n  getSummValues() {\n    const { datasets } = this.params;\n    const { hiddenDatasets } = this;\n    const summValues = [];\n    datasets\n      .filter((dataset, index) => !hiddenDatasets.includes(index))\n      .forEach(({ values }) => {\n        values.forEach((value, valueIndex) => {\n          if (!summValues[valueIndex]) summValues[valueIndex] = 0;\n          summValues[valueIndex] += value;\n        });\n      });\n    return summValues;\n  }\n\n  getChartData() {\n    const { datasets, lineChart, width, height } = this.params;\n    const { hiddenDatasets } = this;\n    const data = [];\n    if (!datasets.length) {\n      return data;\n    }\n    const lastValues = datasets[0].values.map(() => 0);\n    let maxValue = 0;\n    if (lineChart) {\n      datasets\n        .filter((dataset, index) => !hiddenDatasets.includes(index))\n        .forEach(({ values }) => {\n          const datasetMaxValue = Math.max(...values);\n          if (datasetMaxValue > maxValue) maxValue = datasetMaxValue;\n        });\n    } else {\n      maxValue = Math.max(...this.getSummValues());\n    }\n\n    datasets\n      .filter((dataset, index) => !hiddenDatasets.includes(index))\n      .forEach(({ label, values, color }) => {\n        const points = values.map((originalValue, valueIndex) => {\n          lastValues[valueIndex] += originalValue;\n          const value = lineChart ? originalValue : lastValues[valueIndex];\n          const x = (valueIndex / (values.length - 1)) * width;\n          const y = height - (value / maxValue) * height;\n          if (lineChart) {\n            return `${valueIndex === 0 ? 'M' : 'L'}${x},${y}`;\n          }\n          return `${x} ${y}`;\n        });\n        if (!lineChart) {\n          points.push(`${width} ${height} 0 ${height}`);\n        }\n\n        data.push({\n          label,\n          points: points.join(' '),\n          color,\n        });\n      });\n    return data.reverse();\n  }\n\n  getVerticalLines() {\n    const { datasets, width } = this.params;\n    const lines = [];\n    if (!datasets.length) {\n      return lines;\n    }\n    const values = datasets[0].values;\n    values.forEach((value, valueIndex) => {\n      const x = (valueIndex / (values.length - 1)) * width;\n      lines.push(x);\n    });\n    return lines;\n  }\n\n  toggleDataset(index) {\n    const {\n      hiddenDatasets,\n      params: { toggleDatasets },\n    } = this;\n    if (!toggleDatasets) return;\n    if (hiddenDatasets.includes(index)) {\n      hiddenDatasets.splice(hiddenDatasets.indexOf(index), 1);\n    } else {\n      hiddenDatasets.push(index);\n    }\n    if (this.$legendEl) {\n      this.$legendEl.find('.area-chart-legend-item').removeClass('area-chart-legend-item-hidden');\n      hiddenDatasets.forEach((i) => {\n        this.$legendEl\n          .find(`.area-chart-legend-item[data-index=\"${i}\"]`)\n          .addClass('area-chart-legend-item-hidden');\n      });\n    }\n    this.update({}, true);\n  }\n\n  formatAxisLabel(label) {\n    const { formatAxisLabel } = this.params;\n    if (formatAxisLabel) return formatAxisLabel.call(this, label);\n    return label;\n  }\n\n  formatLegendLabel(label) {\n    const { formatLegendLabel } = this.params;\n    if (formatLegendLabel) return formatLegendLabel.call(this, label);\n    return label;\n  }\n\n  calcLinesOffsets() {\n    const lines = this.svgEl.querySelectorAll('line');\n    this.linesOffsets = [];\n    for (let i = 0; i < lines.length; i += 1) {\n      this.linesOffsets.push(lines[i].getBoundingClientRect().left);\n    }\n  }\n\n  formatTooltip() {\n    const self = this;\n    const {\n      currentIndex,\n      hiddenDatasets,\n      params: {\n        datasets,\n        axisLabels,\n        formatTooltip,\n        formatTooltipTotal,\n        formatTooltipAxisLabel,\n        formatTooltipDataset,\n      },\n    } = self;\n    if (currentIndex === null) return '';\n    let total = 0;\n    const currentValues = datasets\n      .filter((dataset, index) => !hiddenDatasets.includes(index))\n      .map((dataset) => ({\n        color: dataset.color,\n        label: dataset.label,\n        value: dataset.values[currentIndex],\n      }));\n    currentValues.forEach((dataset) => {\n      total += dataset.value;\n    });\n    if (formatTooltip) {\n      return formatTooltip({\n        index: currentIndex,\n        total,\n        datasets: currentValues,\n      });\n    }\n    let labelText = formatTooltipAxisLabel\n      ? formatTooltipAxisLabel.call(self, axisLabels[currentIndex])\n      : this.formatAxisLabel(axisLabels[currentIndex]);\n    if (!labelText) labelText = '';\n    const totalText = formatTooltipTotal ? formatTooltipTotal.call(self, total) : total;\n    // prettier-ignore\n    const datasetsText = currentValues.length > 0 ? `\n      <ul class=\"area-chart-tooltip-list\">\n        ${currentValues\n          .map(({ label, color, value }) => {\n            const valueText = formatTooltipDataset\n              ? formatTooltipDataset.call(self, label, value, color)\n              : `${label ? `${label}: ` : ''}${value}`;\n            return `\n              <li><span style=\"background-color: ${color};\"></span>${valueText}</li>\n            `;\n          }).join('')}\n      </ul>` : '';\n    // prettier-ignore\n    return `\n      <div class=\"area-chart-tooltip-label\">${labelText}</div>\n      <div class=\"area-chart-tooltip-total\">${totalText}</div>\n      ${datasetsText}\n    `;\n  }\n\n  setTooltip() {\n    const self = this;\n    const {\n      app,\n      el,\n      svgEl,\n      hiddenDatasets,\n      currentIndex,\n      params: { tooltip, datasets },\n    } = self;\n    if (!tooltip) return;\n    const hasVisibleDataSets =\n      datasets.filter((dataset, index) => !hiddenDatasets.includes(index)).length > 0;\n    if (!hasVisibleDataSets) {\n      if (self.f7Tooltip && self.f7Tooltip.hide) self.f7Tooltip.hide();\n      return;\n    }\n\n    if (currentIndex !== null && !self.f7Tooltip) {\n      self.f7Tooltip = app.tooltip.create({\n        trigger: 'manual',\n        containerEl: el,\n        targetEl: svgEl.querySelector(`line[data-index=\"${currentIndex}\"]`),\n        text: self.formatTooltip(),\n        cssClass: 'area-chart-tooltip',\n      });\n      if (self.f7Tooltip && self.f7Tooltip.show) {\n        self.f7Tooltip.show();\n      }\n      return;\n    }\n    if (!self.f7Tooltip || !self.f7Tooltip.hide || !self.f7Tooltip.show) {\n      return;\n    }\n    if (currentIndex !== null) {\n      self.f7Tooltip.setText(self.formatTooltip());\n      self.f7Tooltip.setTargetEl(svgEl.querySelector(`line[data-index=\"${currentIndex}\"]`));\n      self.f7Tooltip.show();\n    } else {\n      self.f7Tooltip.hide();\n    }\n  }\n\n  setCurrentIndex(index) {\n    if (index === this.currentIndex) return;\n    this.currentIndex = index;\n    this.$el.trigger('areachart:select', { index });\n    this.emit('local::select areaChartSelect', this, index);\n    this.$svgEl.find('line').removeClass('area-chart-current-line');\n    this.$svgEl.find(`line[data-index=\"${index}\"]`).addClass('area-chart-current-line');\n    this.setTooltip();\n  }\n\n  onLegendClick(e) {\n    const index = parseInt($(e.target).closest('.area-chart-legend-item').attr('data-index'), 10);\n    this.toggleDataset(index);\n  }\n\n  onMouseEnter() {\n    this.calcLinesOffsets();\n  }\n\n  onMouseMove(e) {\n    const self = this;\n    if (!self.linesOffsets) {\n      self.calcLinesOffsets();\n    }\n    let currentLeft = e.pageX;\n    if (typeof currentLeft === 'undefined') currentLeft = 0;\n    const distances = self.linesOffsets.map((left) => Math.abs(currentLeft - left));\n    const minDistance = Math.min(...distances);\n    const closestIndex = distances.indexOf(minDistance);\n    self.setCurrentIndex(closestIndex);\n  }\n\n  onMouseLeave() {\n    this.setCurrentIndex(null);\n  }\n\n  attachEvents() {\n    const { svgEl, $el } = this;\n    if (!svgEl) return;\n    svgEl.addEventListener('mouseenter', this.onMouseEnter);\n    svgEl.addEventListener('mousemove', this.onMouseMove);\n    svgEl.addEventListener('mouseleave', this.onMouseLeave);\n    $el.on('click', '.area-chart-legend-item', this.onLegendClick);\n  }\n\n  detachEvents() {\n    const { svgEl, $el } = this;\n    if (!svgEl) return;\n    svgEl.removeEventListener('mouseenter', this.onMouseEnter);\n    svgEl.removeEventListener('mousemove', this.onMouseMove);\n    svgEl.removeEventListener('mouseleave', this.onMouseLeave);\n    $el.off('click', '.area-chart-legend-item', this.onLegendClick);\n  }\n\n  render() {\n    const self = this;\n    const { lineChart, toggleDatasets, width, height, axis, axisLabels, legend, datasets } =\n      self.params;\n    const chartData = self.getChartData();\n    const verticalLines = self.getVerticalLines();\n    const visibleLegends = self.getVisibleLabels();\n\n    const LegendItemTag = toggleDatasets ? 'button' : 'span';\n    return (\n      <div>\n        <svg\n          xmlns=\"http://www.w3.org/2000/svg\"\n          width={width}\n          height={height}\n          viewBox={`0 0 ${width} ${height}`}\n          preserveAspectRatio=\"none\"\n        >\n          {chartData.map((data) =>\n            lineChart ? (\n              <path stroke={data.color} fill-rule=\"evenodd\" d={data.points} />\n            ) : (\n              <polygon fill={data.color} fill-rule=\"evenodd\" points={data.points} />\n            ),\n          )}\n\n          {verticalLines.map((line, index) => (\n            <line data-index={index} fill=\"#000\" x1={line} y1={0} x2={line} y2={height} />\n          ))}\n        </svg>\n        {axis && (\n          <div class=\"area-chart-axis\">\n            {axisLabels.map((label) => (\n              <span>\n                {visibleLegends.includes(label) && <span>{self.formatAxisLabel(label)}</span>}\n              </span>\n            ))}\n          </div>\n        )}\n        {legend && (\n          <div class=\"area-chart-legend\">\n            {datasets.map((dataset, index) => (\n              <LegendItemTag\n                data-index={index}\n                class={`area-chart-legend-item ${toggleDatasets ? 'area-chart-legend-button' : ''}`}\n                _type={toggleDatasets ? 'button' : undefined}\n              >\n                <span style={`background-color: ${dataset.color}`}></span>\n                {self.formatLegendLabel(dataset.label)}\n              </LegendItemTag>\n            ))}\n          </div>\n        )}\n      </div>\n    );\n  }\n\n  update(newParams = {}, onlySvg = false) {\n    const self = this;\n    const { params } = self;\n    Object.keys(newParams).forEach((param) => {\n      if (typeof newParams[param] !== 'undefined') {\n        params[param] = newParams[param];\n      }\n    });\n    if (self.$svgEl.length === 0) return self;\n    self.detachEvents();\n    self.$svgEl.remove();\n    if (!onlySvg) {\n      self.$axisEl.remove();\n      self.$legendEl.remove();\n    }\n    const $rendered = $(self.render());\n    const $svgEl = $rendered.find('svg');\n    extend(self, {\n      svgEl: $svgEl && $svgEl[0],\n      $svgEl,\n    });\n\n    if (!onlySvg) {\n      const $axisEl = $rendered.find('.area-chart-axis');\n      const $legendEl = $rendered.find('.area-chart-legend');\n      extend(self, {\n        $axisEl,\n        $legendEl,\n      });\n      self.$el.append($axisEl);\n      self.$el.append($legendEl);\n    }\n    self.$el.prepend($svgEl);\n\n    self.attachEvents();\n    return self;\n  }\n\n  init() {\n    const self = this;\n    const $rendered = $(self.render());\n    const $svgEl = $rendered.find('svg');\n    const $axisEl = $rendered.find('.area-chart-axis');\n    const $legendEl = $rendered.find('.area-chart-legend');\n    extend(self, {\n      svgEl: $svgEl && $svgEl[0],\n      $svgEl,\n      $axisEl,\n      $legendEl,\n    });\n    self.$el.append($svgEl);\n    self.$el.append($axisEl);\n    self.$el.append($legendEl);\n    self.attachEvents();\n    return self;\n  }\n\n  destroy() {\n    const self = this;\n    if (!self.$el || self.destroyed) return;\n    self.$el.trigger('piechart:beforedestroy');\n    self.emit('local::beforeDestroy areaChartBeforeDestroy', self);\n    self.detachEvents();\n    self.$svgEl.remove();\n    self.$axisEl.remove();\n    self.$legendEl.remove();\n    if (self.f7Tooltip && self.f7Tooltip.destroy) {\n      self.f7Tooltip.destroy();\n    }\n    delete self.$el[0].f7AreaChart;\n    deleteProps(self);\n    self.destroyed = true;\n  }\n}\n\nexport default AreaChart;\n","import $ from '../../shared/dom7.js';\nimport AreaChart from './area-chart-class.js';\nimport ConstructorMethods from '../../shared/constructor-methods.js';\n\nexport default {\n  name: 'areaChart',\n  params: {\n    areaChart: {\n      el: null,\n      lineChart: false,\n      datasets: [],\n      axis: false,\n      axisLabels: [],\n      tooltip: false,\n      legend: false,\n      toggleDatasets: false,\n      width: 640,\n      height: 320,\n      maxAxisLabels: 8,\n      formatAxisLabel: null,\n      formatLegendLabel: null,\n      formatTooltip: null,\n      formatTooltipAxisLabel: null,\n      formatTooltipTotal: null,\n      formatTooltipDataset: null,\n    },\n  },\n  create() {\n    const app = this;\n    app.areaChart = ConstructorMethods({\n      defaultSelector: '.area-chart',\n      constructor: AreaChart,\n      app,\n      domProp: 'f7AreaChart',\n    });\n    app.areaChart.update = function update(el, newParams) {\n      const $el = $(el);\n      if ($el.length === 0) return undefined;\n      const areaChart = app.areaChart.get(el);\n      if (!areaChart) return undefined;\n      areaChart.update(newParams);\n      return areaChart;\n    };\n  },\n};\n","import { bindMethods } from '../../shared/utils.js';\n\nconst Breadcrumbs = {};\n\nexport default {\n  name: 'breadrumbs',\n  create() {\n    const app = this;\n    bindMethods(app, {\n      breadrumbs: Breadcrumbs,\n    });\n  },\n};\n","import $ from './shared/dom7.js';\n\nimport Framework7 from './components/app/app-class.js';\n\n//IMPORT_HELPERS\n\nimport DeviceModule from './modules/device/device.js';\nimport SupportModule from './modules/support/support.js';\nimport UtilsModule from './modules/utils/utils.js';\nimport ResizeModule from './modules/resize/resize.js';\nimport TouchModule from './modules/touch/touch.js';\nimport ClicksModule from './modules/clicks/clicks.js';\nimport RouterModule from './modules/router/router.js';\nimport RouterComponentLoaderModule from './modules/router/component-loader.js';\nimport ComponentModule, { Component, $jsx } from './modules/component/component.js';\nimport HistoryModule from './modules/history/history.js';\nimport ServiceWorkerModule from './modules/service-worker/service-worker.js';\nimport StoreModule, { createStore } from './modules/store/store.js';\n\nimport Statusbar from './components/statusbar/statusbar.js';\nimport View from './components/view/view.js';\nimport Navbar from './components/navbar/navbar.js';\nimport Toolbar from './components/toolbar/toolbar.js';\nimport Subnavbar from './components/subnavbar/subnavbar.js';\nimport TouchRipple from './components/touch-ripple/touch-ripple.js';\nimport Modal from './components/modal/modal.js';\nimport Router from './modules/router/router-class.js';\n\n//IMPORT_COMPONENTS\n\n// UMD_ONLY_START\nif (typeof window !== 'undefined') {\n  // Dom7\n  if (!window.Dom7) window.Dom7 = $;\n}\n// UMD_ONLY_END\n\nRouter.use([RouterComponentLoaderModule]);\n\nFramework7.use([\n  DeviceModule,\n  SupportModule,\n  UtilsModule,\n  ResizeModule,\n  TouchModule,\n  ClicksModule,\n  RouterModule,\n  HistoryModule,\n  ComponentModule,\n  ServiceWorkerModule,\n  StoreModule,\n  Statusbar,\n  View,\n  Navbar,\n  Toolbar,\n  Subnavbar,\n  TouchRipple,\n  Modal,\n  //INSTALL_COMPONENTS\n]);\n\n//NAMED_EXPORT\nexport default Framework7;\n","export default {\n  name: 'contactsList',\n};\n","export default {\n  name: 'timeline',\n};\n","export default {\n  name: 'chip',\n};\n","export default {\n  name: 'checkbox',\n};\n","export default {\n  name: 'radio',\n};\n","export default {\n  name: 'grid',\n};\n","export default {\n  name: 'skeleton',\n};\n","export default {\n  name: 'typography',\n};\n"],"mappings":"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,MAAMo0J,EAAc5zH,EAAI,GAAGm1H,eACtBvB,GAAgBA,IAAgBA,EAAY7mF,QACjD6mF,EAAYnzH,O,GAGhBj4B,OAAQ,CACNorJ,YAAa,CAEXjwJ,MAAO,KACP06B,QAAS,CAAC,SACV1Y,QAAS,CACP,CACE,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,WAEF,CACE,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,WAEF,CACE,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,WAEF,CACE,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,WAEF,CACE,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,WAEF,CACE,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,WAEF,CACE,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,WAEF,CACE,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,YAGJovI,gBAAgB,EAChBd,eAAe,EAEfjF,aAAa,EACbC,aAAa,EACbqG,oBAAoB,EAEpBpE,UAAU,EACVC,UAAU,EACVoE,iBAAiB,EAEjB/F,UAAU,EACVE,kBAAkB,EAElB2B,aAAc,IACdC,eAAgB,IAChBC,cAAe,IACf1B,aAAc,IACdC,oBAAqB,IACrBC,oBAAqB,IACrBN,aAAc,MACdN,eAAgB,IAGhBliF,YAAa,KACb9jB,OAAQ,UACRgrG,YAAa,QACbvwD,WAAW,EACXC,uBAAmBr4F,EACnB84F,WAAW,EACXC,uBAAmB/4F,EACnB2uF,YAAa,KACb/5D,SAAU,KACVs0H,4BAA4B,EAC5BhjE,QAAS,KACTkW,eAAe,EACf7zB,qBAAqB,EACrB8/B,eAAe,EACfmhD,cAAc,EACdC,gBAAgB,EAChB1jD,iBAAkB,OAClB2jD,aAAa,EACbJ,gBAAiB,OACjBF,gBAAiB,QACjBC,mBAAoB,OACpB9lF,SAAU,KACVm1B,gBAAgB,EAChB/yD,KAAM,KACN1c,IAAK,SACL64C,SAAU,KACVa,sBAAsB,EAEtBqjC,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"}

Youez - 2016 - github.com/yon3zu
LinuXploit