{"version":3,"sources":["../../node_modules/ssr-window/ssr-window.esm.js","../../node_modules/dom7/dom7.esm.js","../../src/core/shared/dom7.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/components/app/load-module.js","../../src/core/components/app/app-class.js","../../src/core/shared/modal-methods.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/shared/request.js","../../src/core/modules/request/request.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.module.js","../../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/component-class.js","../../src/core/modules/component/component.js","../../src/core/modules/component/parse-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/framework7.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","_getPrototypeOf","o","setPrototypeOf","getPrototypeOf","__proto__","_setPrototypeOf","p","_isNativeReflectConstruct","Reflect","construct","sham","Proxy","prototype","toString","call","e","_construct","Parent","args","Class","a","push","apply","instance","Function","bind","arguments","_wrapNativeSuper","_cache","Map","undefined","fn","indexOf","TypeError","has","get","set","Wrapper","create","value","enumerable","writable","configurable","Dom7","_Array","subClass","superClass","items","_this","proto","concat","self","ReferenceError","_assertThisInitialized","defineProperty","Array","arrayFlat","arr","res","el","isArray","arrayFilter","filter","$","selector","context","html","trim","toCreate","tempParent","innerHTML","i","qsa","nodeType","uniqueArray","arrayUnique","noTrigger","split","shortcut","name","_len","_key","trigger","on","click","focus","focusin","focusout","keyup","keydown","keypress","submit","change","mousedown","mousemove","mouseup","mouseenter","mouseleave","mouseout","mouseover","touchstart","touchend","touchmove","resize","scroll","j","dom","_len10","els","_key10","toAdd","classes","classNames","map","c","_el$classList","classList","add","initialProps","initialParams","animateInstance","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","_el$prop","fireCallBack","off","newChild","k","tempDiv","firstChild","appendChild","parent","append","attrs","getAttribute","attrName","is","closest","parents","eq","_prop","dom7ElementDataStorage","dataKey","string","dataset","attributes","_attr","toLowerCase","match","group","toUpperCase","remove","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","_parents","handleEvent","_event","_len7","_key7","eventName","onceHandler","_len8","eventArgs","_key8","includeMargins","_styles2","styles","offsetHeight","_styles","offsetWidth","_parent","prepend","previousElementSibling","prevEls","_prev","propName","attr","removeAttribute","_len2","_key2","_el$classList2","_len3","_key3","scrollTo","currentTop","currentLeft","maxTop","maxLeft","newTop","newLeft","animateTop","animateLeft","scrollHeight","scrollWidth","nextAll","prevAll","text","toggle","transform","transitionDuration","_len9","_key9","evt","detail","bubbles","cancelable","data","dataIndex","dispatchEvent","multiple","values","selectedOptions","_i","_el","options","selected","val","innerWidth","methods","methodName","$$1","uniqueNum","mask","floor","random","mdPreloaderContent","iosPreloaderContent","join","eventNameToColonCase","hasColon","char","deleteProps","object","nextTick","delay","nextFrame","now","parseUrlQuery","url","param","query","urlToParse","paramsPart","decodeURIComponent","slice","serializeObject","newParents","resultArray","varName","parentParts","encodeURIComponent","varValue","toPush","String","merge","to","from","nextSource","keysArray","nextIndex","len","nextKey","desc","getOwnPropertyDescriptor","deep","colorHexToRgb","hex","h","m","r","g","b","result","exec","n","parseInt","colorRgbToHex","colorRgbToHsl","d","l","abs","colorHslToRgb","s","rgb1","hp","x","Number","isNaN","round","bindMethods","subKey","flattenArray","arg","support","deviceCalculated","axis","matrix","curTransform","transformMatrix","curStyle","WebKitCSSMatrix","webkitTransform","MozTransform","OTransform","MsTransform","msTransform","m41","m42","HSL","HSB","t","rgb","hsl","hslShade","hslTint","shade","tint","--f7-theme-color","--f7-theme-color-rgb","--f7-theme-color-shade","--f7-theme-color-tint","getSupport","touch","DocumentTouch","pointerEvents","PointerEvent","maxTouchPoints","passiveListener","supportsPassive","opts","intersectionObserver","calcSupport","getDevice","overrides","reset","_temp","platform","ua","device","ios","android","androidChrome","desktop","iphone","ipod","ipad","edge","ie","firefox","macos","windows","cordova","phonegap","electron","capacitor","Capacitor","nwjs","screenWidth","width","screenHeight","height","nw","process","versions","os","osVersion","webView","standalone","webview","pixelRatio","devicePixelRatio","prefersColorScheme","theme","calcDevice","EventsClass","eventsParents","eventsListeners","priority","method","once","f7proxy","eventHandler","emit","local","eventsArray","localEvents","parentEvents","eventsParent","Framework7Class","_assertThisInitialized$1","_EventsClass","useModuleParams","module","instanceParams","originalParams","paramKey","useModulesParams","modules","moduleName","useModule","moduleParams","modulePropName","moduleProp","moduleEventName","vnode","vnodeHooks","vnodeId","hookName","useModules","modulesParams","installModule","static","install","use","components","ConstructorMethods","parameters","_parameters","defaultSelector","Constructor","domProp","app","addMethods","_construct$1","$el","destroy","fetchedModules","Framework7","_Framework7Class","Error","passedParams","defaults","version","language","routes","lazyModulesPath","initOnDeviceReady","init","autoDarkTheme","iosTranslucentBars","iosTranslucentModals","component","componentUrl","online","onLine","store","f7","initStore","mount","rootEl","$rootEl","rtl","DARK","LIGHT","mq","dark","light","colorSchemeListener","_ref","media","darkTheme","__store","createStore","enableAutoDarkTheme","addListener","disableAutoDarkTheme","removeListener","initAppComponent","router","componentLoader","componentOptions","$elComponent","f7Component","initialized","addClass","removeClass","loadModule","loadModules","getVnodeHooks","hook","ModalMethods","open","targetEl","$targetPage","modalEl","$modalEl","f7Modal","_extends","close","$parentEl","$targetEl","moduleToLoad","Promise","resolve","reject","modulePath","moduleObj","moduleFunc","matchNamePattern","scriptLoad","resolveScript","rejectScript","request","scriptContent","callbackLoadName","scriptEl","xhr","status","styleLoad","resolveStyle","styleContent","styleEl","all","then","catch","err","DeviceModule","metaStatusbar","content","SupportModule","UtilsModule","utils","ResizeModule","getSize","offset","orientationchange","globals","jsonpRequests","RequestResponse","RequestError","_Error","requestOptions","globalsNoCallbacks","callbackName","async","cache","user","password","headers","xhrFields","statusCode","processData","dataType","contentType","timeout","abortController","canceled","message","fireCallback","type","stringData","paramsPrefix","abortTimeout","callbackSplit","requestUrl","addVars","script","onerror","XMLHttpRequest","aborted","onAbort","abort","requestParameters","postData","ArrayBuffer","Blob","Document","FormData","boundary","setRequestHeader","newData","JSON","stringify","Accept","headerName","crossDomain","test","RegExp","$2","onload","responseData","parseError","parse","responseText","responseType","response","statusText","ontimeout","send","globalCallbackValue","optionCallbackValue","requestShortcut","success","error","post","json","getJSON","postJSON","contoller","setup","RequestModule","TouchModule","touchClicksDistanceThreshold","disableContextMenu","tapHold","tapHoldDelay","tapHoldPreventClicks","activeState","activeStateElements","activeStateOnMouseMove","mdTouchRipple","iosTouchRipple","auroraTouchRipple","touchRippleElements","touchRippleInsetElements","touchEvents","start","move","end","touchStartX","touchStartY","targetElement","isMoved","tapHoldFired","tapHoldTimeout","preventClick","activableElement","activeTimeout","rippleWave","rippleTarget","rippleTimeout","useRipple","findActivableElement","activable","preventPropagation","newActivable","hasClass","isInsideScrollableView","addActive","removeActive","createRipple","y","touchRipple","removeRipple","rippleTouchStart","rippleElements","rippleParent","findRippleElement","rippleTouchMove","rippleTouchEnd","handleMouseUp","emitAppTouchEvent","appTouchStartActive","appTouchMoveActive","appTouchEndActive","appTouchStartPassive","appTouchMovePassive","appTouchEndPassive","passive","passiveListenerCapture","activeListener","activeListenerCapture","isOverswipe","localPreventClick","stopImmediatePropagation","stopPropagation","preventDefault","targetTouches","touches","pageX","pageY","distance","$activableEl","which","isNative","str","tokens","count","pattern","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","optional","repeat","segment","typeOfMessage","tokensToFunction","sensitive","stringToRegexp","strict","_c","_d","endsWith","route","tokens_1","mod","endToken","isEndDelimited","tokensToRegexp","pathToRegexp","groupsRegex","execResult","source","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","_extend","newState","_extend2","substr","_extend3","readyState","SwipeBack","isScrolling","viewContainerWidth","touchesDiff","touchStartTime","dynamicNavbar","$pageShadowEl","$pageOpacityEl","animatableNavEls","$navbarsEl","isTouched","touchesStart","$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","activeNavBackIconText","previousNavBackIconText","inverter","currentNavIsTransparent","currentNavIsLarge","currentNavIsCollapsed","currentNavIsLargeTransparent","previousNavIsTransparent","previousNavIsLarge","previousNavIsCollapsed","previousNavIsLargeTransparent","fromLarge","toLarge","$currentNavElements","$previousNavElements","iosAnimateNavbarBackIcon","f7NavbarLeftOffset","prev","navEl","$navEl","isSubnavbar","isLeft","isTitle","isBg","overflow","subNavEl","opacity","pow","transform-origin","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","stackPages","initialPages","removePage","removeNavbar","previousRoute","preloadPreviousPage","preload","redirect","direction","initial","redirectUrl","redirectOptions","processQueue","routeQueue","next","processRouteQueue","enterNextRoute","routesBeforeEnter","beforeEnter","routesBeforeLeave","beforeLeave","appRouterCheck","asyncComponent","resolvePromise","componentPromise","default","_default","asyncComponentResult","forward","forwardOptions","masterPageEl","otherDetailPageEl","modalType","reloadCurrent","reloadPages","reloadPrevious","reloadAll","clearPreviousHistory","reloadDetail","masterDetailEnabled","isMaster","master","detailsInBetweenRemoved","currentRouteIsModal","modal","modalLoadProp","modalToClose","modalInstance","previousUrl","findMatchingRoute","modalRemove","$oldPage","$newNavbarEl","$oldNavbarEl","$viewEl","$newPage","reload","removeThemeElements","$navbarEl","keepAlive","keepAliveData","pageEl","$navbarsInView","isDetail","isDetailRoot","$pagesInView","pageInView","navbarInView","newPagePosition","position","role","root","detailRoot","navbar","getElByPage","navbarEl","removedPageEls","removedNavbarEls","oldNavbarEl","browserHistoryRoot","browserHistorySeparator","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","xhrRequest","pageContent","backward","backwardOptions","masterPageRemoved","backIndex","initialPreload","currentIsMaster","masterRoute","force","pageToRemove","$navbarToRemove","$pageToRemove","insertPage","$previousPages","loadBack","backParams","backOptions","Router","isAppRouter","routerId","scrollHistory","iosDynamicNavbar","initialNavbars","newRoute","tempDom","navbarsEl","newNavEls","oldNavEls","animateIcon","animatableNavEl","$navbarInner","isIconLabel","needsOpacityTransition","$iconEl","leftOffset","rightOffset","navEls","otherEls","otherNavEl","iconTextEl","offsetLeft","$newPageEl","animateCustom","routerCustomTransitionClass","animationEnd","toDifferent","oldIsLarge","newIsLarge","routerTransitionClass","animateNavbars","setProperty","removeModal","removeEl","removeTabContent","tabEl","tabChild","removeElements","removeElementsWithTimeout","removeElementsTimeout","findElement","stringSelector","notStacked","$container","viewMainClass","flattenRoutes","flattenedRoutes","hasTabRoutes","tabs","mergedPathsRoutes","tabRoute","tRoute","detailRoutes","detailRoute","dRoute","masterRoutePath","childRoute","cRoute","generateUrl","findRouteByKey","constructRouteUrl","toUrl","findTabRoute","foundTabRoute","$tabEl","tabId","matchingRoute","_router$parseRouteUrl","matched","pathsToMatch","alias","aliasPath","pathToMatch","keyObj","paramValue","replaceRequestUrlParams","compiledUrl","regExp","removeFromXhrCache","xhrCache","ignoreCache","hasQuery","passRouteQueryToRequest","passRouteParamsToRequest","xhrCacheIgnoreGetParameters","xhrCacheIgnore","cachedUrl","xhrCacheDuration","beforeSend","ariaHidden","toRemove","getPageData","pageFromEl","pageFrom","$pageEl","fromPage","$pageFromEl","page","restoreScrollTopOnBack","camelName","colonName","_ref2","_ref2$on","_ref2$once","attachEvents","$pageContent","pageContentEl","f7PageInitialized","f7RouteEventsAttached","f7RouteEventsOn","f7RouteEventsOnce","browserHistoryStoreHistory","localStorage","restoreHistory","clearHistory","updateCurrentUrl","newUrl","_router$parseRouteUrl2","getInitialUrl","initialUrl","historyRestored","URL","documentUrl","_router$params","browserHistoryOnLoad","console","warn","_router$getInitialUrl","iosSwipeBack","mdSwipeBack","auroraSwipeBack","_router$params2","browserHistoryAnimateOnLoad","browserHistoryInitialMatch","initUrl","loadInitialPage","modalOpen","pageAfterIn","hasTabRoute","initOptions","routerProp","navigateParams","navigateOptions","createRoute","navigateUrl","currentPath","viewName","anotherViewName","anotherView","openIn","ignoreOpenIn","popup","loginScreen","clickedEl","popover","side","effect","panel","routerLoaded","asyncResolve","resolveParams","resolveOptions","resolvedAsModal","modalRoute","modalLoad","asyncReject","pageLoadProp","_load","preloadMaster","masterLoaded","refreshPage","parentPageEl","$parentPageEl","hasContentLoadProp","tabShowResult","show","$newTabEl","$oldTabEl","animated","onTabsChanged","tabParentPageData","f7RouterTabLoaded","loadTab","loadTabParams","loadTabOptions","contentEl","tabEventTarget","unloadTabContent","tabRemove","onTabLoaded","tabComponentLoader","tabContent","tabLoadProp","_loadTab","hasTabComponentChild","foundLoadProp","isPanel","modalOrPanel","modalParams","routeCallback","panelOpen","modalClose","panelClose","modalClosed","panelClosed","onModalLoaded","hasEl","closeOnSwipeBack","closeByRouter","modalComponent","loadModal","loadModalParams","loadModalOptions","modalComponentLoader","modalContent","_loadModal","_navigateOptions","prevOpenedModals","forceOtherUrl","isBrokenBrowserHistory","needHistoryBack","currentRouteWithoutBrowserHistory","skipMaster","$previousPage","$previousMaster","expectedPreviousPageUrl","expectedPreviousPageRoute","previousPageRoute","backForceLoaded","_loadBack","clearPreviousPages","RouterModule","templates","resizableView","resizableInitialized","resizable","resizableWidth","$htmlEl","$resizeHandlerEl","minWidth","maxWidth","handleResize","transformCSSWidth","v","newV","$pageMasterEl","newWidth","View","viewParams","routesAdd","main","f7View","viewProp","wasMasterDetail","isMasterDetail","initMasterDetail","masterDetailResizable","viewEl","ClicksModule","clicks","externalLinks","$clickedEl","$clickedLinkEl","isLink","InAppBrowser","Plugins","Browser","moduleClicks","preventF7Router","clickSelector","matchingClickedElement","clickedLinkData","current","linksView","ViewClass","f7RouteProps","initClicks","RouterComponentLoaderModule","cachedComponent","componentFunction","componentRoot","componentContext","f7route","f7router","componentProps","routeProps","createdComponent","componentCache","cached","loadedComponent","parsedComponent","_temp2","_temp3","_ref3","u","ignoreChildren","$h","sel","elm","array","primitive","addNS","ns","childData","is.array","is.primitive","customComponents","SELF_CLOSING","PROPS_ATTRS","BOOLEAN_PROPS","getTagName","treeNode","toCamelCase","word","propsFromAttrs","isCustomComponent","treeNodeType","getHooks","isRoot","hooks","insert","update","postpatch","isFakeElement","tagName","_readOnlyError","isCustom","__component__","createCustomComponent","destroyCustomComponent","oldVnode","newProps","updateCustomComponent","class","vn","f","getChildren","nodes","childNode","treeNodeToVNode","getSlots","slotName","slotNodes","childTreeNode","childSlotName","slot","subTreeNode","isTreeNode","attrValue","prevent","eventNamePart","eventNameIndex","fired","getEventHandler","prepatch","getData","vdom","tree","htmlDomApi","namespaceURI","qualifiedName","createTextNode","createComment","newNode","referenceNode","node","setTextContent","getTextContent","isElement","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","invokeHandler","updateEvents","oldOn","oldListener","oldElm","patch","domApi","cbs","api","emptyNodeAt","createRmCb","childElm","listeners","parent_1","createElm","insertedVnodeQueue","hashIdx","dotIdx","dot","tag","addVnodes","parentElm","vnodes","startIdx","invokeDestroyHook","removeVnodes","i_1","rm","patchVnode","oldCh","newCh","oldKeyToIdx","idxInOld","elmToMove","oldStartIdx","newStartIdx","oldEndIdx","oldStartVnode","oldEndVnode","newEndIdx","newStartVnode","newEndVnode","updateChildren","pre","isVnode","amount","applied","ev","Component","generateId","md","aurora","__storeCallbacks","__updateQueue","__eventHandlers","__onceEventHandlers","__onBeforeMount","__onMounted","__onBeforeUpdate","__onUpdated","__onBeforeUnmount","__onUnmounted","componentResult","getRenderFuncion","getComponentContext","renderFunction","getComponentStore","_this2","_this$f7$store","getters","$store","dispatch","onUpdated","__callback","includeHooks","_this3","ctx","$f7route","$f7router","$id","$f7","$f7ready","f7ready","$theme","$tick","tick","$update","$emit","$on","$once","$onBeforeMount","$onMounted","$onBeforeUpdate","$onUpdated","$onBeforeUnmount","$onUnmounted","detachEvents","_ref4","_ref5","startUpdateQueue","_this4","__requestAnimationFrameId","__updateIsPending","newVNode","resolvers","resolver","_this5","_this6","__destroyed","setState","_this7","mountMethod","_this8","__removeCallback","registerComponent","unregisterComponent","ComponentModule","componentString","template","componentId","callbackCreateName","item","scripts","parseComponent","HistoryModule","SW","registrations","register","scope","serviceWorker","reg","unregister","registration","ServiceWorkerModule","storeParams","originalState","actions","propsQueue","gettersDependencies","gettersCallbacks","addGetterCallback","callbacks","removeGetterCallback","getterValue","deps","dep","addGetterDependencies","stateKey","getterKey","runGetterCallbacks","actionName","StoreModule","isCapacitor","StatusBar","Statusbar","hide","onClick","setTextColor","color","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","View$1","iosSwipeBackAnimateShadow","iosSwipeBackAnimateOpacity","iosSwipeBackActiveArea","iosSwipeBackThreshold","mdSwipeBackAnimateShadow","mdSwipeBackAnimateOpacity","mdSwipeBackActiveArea","mdSwipeBackThreshold","auroraSwipeBackAnimateShadow","auroraSwipeBackAnimateOpacity","auroraSwipeBackActiveArea","auroraSwipeBackThreshold","iosPageLoadDelay","mdPageLoadDelay","auroraPageLoadDelay","$popoverView","$popupView","$panelView","$viewsEl","getCurrentView","modalOpen panelOpen","modalBeforeDestroy panelBeforeDestroy","view-init","Navbar","size","$innerEl","needCenterTitle","needLeftTitle","iosCenterTitle","currLeft","diff","right","title","subnavbar","noLeft","noRight","leftWidth","outerWidth","rightWidth","titleWidth","navbarStyles","navbarInnerWidth","paddingLeft","paddingRight","isPrevious","sliding","requiredLeft","titleLeftOffset","titleRightOffset","activeNavbarBackLink","titleLeft","hideStatusbar","hideOnlyCurrent","isDynamic","subEl","pageData","getPageByEl","collapseLargeTitle","expandLargeTitle","toggleLargeTitle","initNavbarOnScroll","needHide","needCollapse","needTransparent","previousScrollTop","currentScrollTop","reachEnd","navbarHidden","navbarCollapsed","navbarTitleLargeHeight","navbarOffsetHeight","scrollChanged","scrollContent","scrollTimeoutId","touchEndTimeoutId","$titleLargeEl","isLarge","navbarHideHeight","snapPageScrollToLargeTitle","snapPageScrollToTransparentNavbar","snapLargeNavbar","snapTransparentNavbar","previousCollapseProgress","collapseProgress","handleScroll","isLargeTransparent","previousCollapseWasInMiddle","handleLargeNavbarCollapse","isHidden","notTransparent","handleNavbarTransparent","showOnPageScrollEnd","showOnPageScrollTop","handeTouchStart","f7DetachNavbarScrollHandlers","Navbar$1","scrollTopOnTitleClick","mdCenterTitle","auroraCenterTitle","hideOnPageScroll","collapseLargeTitleOnScroll","panelBreakpoint panelCollapsedBreakpoint panelResize viewResize resize viewMasterDetailBreakpoint","pageBeforeRemove","pageBeforeIn","pageReinit","pageInit","needCollapseOnScrollHandler","needTransparentOnScroll","needHideOnScrollHandler","panelOpen panelSwipeOpen modalOpen","tabShow",".navbar .title","$pageContentEl","Toolbar","setHighlight","tabbarEl","$tabbarEl","$highlightEl","tabLinksCount","highlightWidth","highlightTranslate","$activeLink","activeIndex","toolbar","initToolbarOnScroll","toolbarHidden","$toolbarEl","f7ScrollToolbarHandler","Toolbar$1","tabbar","Subnavbar","subnavbarEl","TouchRipple","ripple","_$el$0$getBoundingCli","center","diameter","isInset","insetElements","rippleTransform","scale","$rippleWaveEl","shouldBeRemoved","out","removeTimeout","TouchRipple$1","openedModals","dialogsQueue","Modal","opened","$containerEl","containerEl","onOpen","onOpened","onClose","onClosed","animateModal","pushToQueue","$backdropEl","queueDialogs","openedModal","$modalParentEl","wasInDom","needToHideBackdrop","popupEl","popupInstance","closeByBackdropClick","backdrop","backdropEl","destroyed","CustomModal","extendedParams","customModal","_Modal","handleClick","Modal$1"],"mappings":"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","file":"framework7.min.js","sourcesContent":["/**\n * SSR Window 3.0.0\n * Better handling for window object in SSR environment\n * https://github.com/nolimits4web/ssr-window\n *\n * Copyright 2020, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: November 9, 2020\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 if (target === void 0) { target = {}; }\n if (src === void 0) { src = {}; }\n Object.keys(src).forEach(function (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\nvar ssrDocument = {\n body: {},\n addEventListener: function () { },\n removeEventListener: function () { },\n activeElement: {\n blur: function () { },\n nodeName: '',\n },\n querySelector: function () {\n return null;\n },\n querySelectorAll: function () {\n return [];\n },\n getElementById: function () {\n return null;\n },\n createEvent: function () {\n return {\n initEvent: function () { },\n };\n },\n createElement: function () {\n return {\n children: [],\n childNodes: [],\n style: {},\n setAttribute: function () { },\n getElementsByTagName: function () {\n return [];\n },\n };\n },\n createElementNS: function () {\n return {};\n },\n importNode: function () {\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 var doc = typeof document !== 'undefined' ? document : {};\n extend(doc, ssrDocument);\n return doc;\n}\n\nvar 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: function () { },\n pushState: function () { },\n go: function () { },\n back: function () { },\n },\n CustomEvent: function CustomEvent() {\n return this;\n },\n addEventListener: function () { },\n removeEventListener: function () { },\n getComputedStyle: function () {\n return {\n getPropertyValue: function () {\n return '';\n },\n };\n },\n Image: function () { },\n Date: function () { },\n screen: {},\n setTimeout: function () { },\n clearTimeout: function () { },\n matchMedia: function () {\n return {};\n },\n requestAnimationFrame: function (callback) {\n if (typeof setTimeout === 'undefined') {\n callback();\n return null;\n }\n return setTimeout(callback, 0);\n },\n cancelAnimationFrame: function (id) {\n if (typeof setTimeout === 'undefined') {\n return;\n }\n clearTimeout(id);\n },\n};\nfunction getWindow() {\n var win = typeof window !== 'undefined' ? window : {};\n extend(win, ssrWindow);\n return win;\n}\n\nexport { extend, getDocument, getWindow, ssrDocument, ssrWindow };\n","/**\n * Dom7 3.0.0\n * Minimalistic JavaScript library for DOM manipulation, with a jQuery-compatible API\n * https://framework7.io/docs/dom7.html\n *\n * Copyright 2020, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: November 9, 2020\n */\nimport { getWindow, getDocument } from 'ssr-window';\n\nfunction _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}\n\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nfunction _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\n\nfunction _construct(Parent, args, Class) {\n if (_isNativeReflectConstruct()) {\n _construct = Reflect.construct;\n } else {\n _construct = function _construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n if (Class) _setPrototypeOf(instance, Class.prototype);\n return instance;\n };\n }\n\n return _construct.apply(null, arguments);\n}\n\nfunction _isNativeFunction(fn) {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}\n\nfunction _wrapNativeSuper(Class) {\n var _cache = typeof Map === \"function\" ? new Map() : undefined;\n\n _wrapNativeSuper = function _wrapNativeSuper(Class) {\n if (Class === null || !_isNativeFunction(Class)) return Class;\n\n if (typeof Class !== \"function\") {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n if (typeof _cache !== \"undefined\") {\n if (_cache.has(Class)) return _cache.get(Class);\n\n _cache.set(Class, Wrapper);\n }\n\n function Wrapper() {\n return _construct(Class, arguments, _getPrototypeOf(this).constructor);\n }\n\n Wrapper.prototype = Object.create(Class.prototype, {\n constructor: {\n value: Wrapper,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n return _setPrototypeOf(Wrapper, Class);\n };\n\n return _wrapNativeSuper(Class);\n}\n\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\n/* eslint-disable no-proto */\nfunction makeReactive(obj) {\n var proto = obj.__proto__;\n Object.defineProperty(obj, '__proto__', {\n get: function get() {\n return proto;\n },\n set: function set(value) {\n proto.__proto__ = value;\n }\n });\n}\n\nvar Dom7 = /*#__PURE__*/function (_Array) {\n _inheritsLoose(Dom7, _Array);\n\n function Dom7(items) {\n var _this;\n\n _this = _Array.call.apply(_Array, [this].concat(items)) || this;\n makeReactive(_assertThisInitialized(_this));\n return _this;\n }\n\n return Dom7;\n}( /*#__PURE__*/_wrapNativeSuper(Array));\n\nfunction arrayFlat(arr) {\n if (arr === void 0) {\n arr = [];\n }\n\n var res = [];\n arr.forEach(function (el) {\n if (Array.isArray(el)) {\n res.push.apply(res, 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 var uniqueArray = [];\n\n for (var 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, function (match, group) {\n return group.toUpperCase();\n });\n}\n\nfunction qsa(selector, context) {\n if (typeof selector !== 'string') {\n return [selector];\n }\n\n var a = [];\n var res = context.querySelectorAll(selector);\n\n for (var i = 0; i < res.length; i += 1) {\n a.push(res[i]);\n }\n\n return a;\n}\n\nfunction $(selector, context) {\n var window = getWindow();\n var document = getDocument();\n var 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 var html = selector.trim();\n\n if (html.indexOf('<') >= 0 && html.indexOf('>') >= 0) {\n var toCreate = 'div';\n if (html.indexOf(' 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 (var 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 (var 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 (var 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 (var 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 (var 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 var 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 var dataKey = el.getAttribute(\"data-\" + key);\n\n if (dataKey) {\n return dataKey;\n }\n\n return undefined;\n } // Set value\n\n\n for (var 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 (var i = 0; i < this.length; i += 1) {\n var 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 var el = this[0];\n if (!el) return undefined;\n var dataset = {}; // eslint-disable-line\n\n if (el.dataset) {\n for (var dataKey in el.dataset) {\n dataset[dataKey] = el.dataset[dataKey];\n }\n } else {\n for (var i = 0; i < el.attributes.length; i += 1) {\n var _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 (var 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 var el = this[0];\n if (!el) return undefined;\n\n if (el.multiple && el.nodeName.toLowerCase() === 'select') {\n var values = [];\n\n for (var 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 (var _i = 0; _i < this.length; _i += 1) {\n var _el = this[_i];\n\n if (Array.isArray(value) && _el.multiple && _el.nodeName.toLowerCase() === 'select') {\n for (var 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 (var 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 (var 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() {\n for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {\n args[_key5] = arguments[_key5];\n }\n\n var eventType = args[0],\n targetSelector = args[1],\n listener = args[2],\n capture = args[3];\n\n if (typeof args[1] === 'function') {\n eventType = args[0];\n listener = args[1];\n capture = args[2];\n targetSelector = undefined;\n }\n\n if (!capture) capture = false;\n\n function handleLiveEvent(e) {\n var target = e.target;\n if (!target) return;\n var 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 var _parents = $(target).parents(); // eslint-disable-line\n\n\n for (var 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 var 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 var events = eventType.split(' ');\n var j;\n\n for (var i = 0; i < this.length; i += 1) {\n var el = this[i];\n\n if (!targetSelector) {\n for (j = 0; j < events.length; j += 1) {\n var event = events[j];\n if (!el.dom7Listeners) el.dom7Listeners = {};\n if (!el.dom7Listeners[event]) el.dom7Listeners[event] = [];\n el.dom7Listeners[event].push({\n listener: 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 var _event = events[j];\n if (!el.dom7LiveListeners) el.dom7LiveListeners = {};\n if (!el.dom7LiveListeners[_event]) el.dom7LiveListeners[_event] = [];\n\n el.dom7LiveListeners[_event].push({\n listener: listener,\n proxyListener: handleLiveEvent\n });\n\n el.addEventListener(_event, handleLiveEvent, capture);\n }\n }\n }\n\n return this;\n}\n\nfunction off() {\n for (var _len6 = arguments.length, args = new Array(_len6), _key6 = 0; _key6 < _len6; _key6++) {\n args[_key6] = arguments[_key6];\n }\n\n var eventType = args[0],\n targetSelector = args[1],\n listener = args[2],\n capture = args[3];\n\n if (typeof args[1] === 'function') {\n eventType = args[0];\n listener = args[1];\n capture = args[2];\n targetSelector = undefined;\n }\n\n if (!capture) capture = false;\n var events = eventType.split(' ');\n\n for (var i = 0; i < events.length; i += 1) {\n var event = events[i];\n\n for (var j = 0; j < this.length; j += 1) {\n var el = this[j];\n var handlers = void 0;\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 (var k = handlers.length - 1; k >= 0; k -= 1) {\n var 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() {\n var dom = this;\n\n for (var _len7 = arguments.length, args = new Array(_len7), _key7 = 0; _key7 < _len7; _key7++) {\n args[_key7] = arguments[_key7];\n }\n\n var eventName = args[0],\n targetSelector = args[1],\n listener = args[2],\n capture = args[3];\n\n if (typeof args[1] === 'function') {\n eventName = args[0];\n listener = args[1];\n capture = args[2];\n targetSelector = undefined;\n }\n\n function onceHandler() {\n for (var _len8 = arguments.length, eventArgs = new Array(_len8), _key8 = 0; _key8 < _len8; _key8++) {\n eventArgs[_key8] = arguments[_key8];\n }\n\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() {\n var window = getWindow();\n\n for (var _len9 = arguments.length, args = new Array(_len9), _key9 = 0; _key9 < _len9; _key9++) {\n args[_key9] = arguments[_key9];\n }\n\n var events = args[0].split(' ');\n var eventData = args[1];\n\n for (var i = 0; i < events.length; i += 1) {\n var event = events[i];\n\n for (var j = 0; j < this.length; j += 1) {\n var el = this[j];\n\n if (window.CustomEvent) {\n var evt = new window.CustomEvent(event, {\n detail: eventData,\n bubbles: true,\n cancelable: true\n });\n el.dom7EventData = args.filter(function (data, dataIndex) {\n return dataIndex > 0;\n });\n el.dispatchEvent(evt);\n el.dom7EventData = [];\n delete el.dom7EventData;\n }\n }\n }\n\n return this;\n}\n\nfunction transitionEnd(callback) {\n var 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 var 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 var 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 var _styles = this.styles();\n\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 var 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 var _styles2 = this.styles();\n\n return this[0].offsetHeight + parseFloat(_styles2.getPropertyValue('margin-top')) + parseFloat(_styles2.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 var window = getWindow();\n var document = getDocument();\n var el = this[0];\n var box = el.getBoundingClientRect();\n var body = document.body;\n var clientTop = el.clientTop || body.clientTop || 0;\n var clientLeft = el.clientLeft || body.clientLeft || 0;\n var scrollTop = el === window ? window.scrollY : el.scrollTop;\n var 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 (var i = 0; i < this.length; i += 1) {\n this[i].style.display = 'none';\n }\n\n return this;\n}\n\nfunction show() {\n var window = getWindow();\n\n for (var i = 0; i < this.length; i += 1) {\n var 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 var window = getWindow();\n if (this[0]) return window.getComputedStyle(this[0], null);\n return {};\n}\n\nfunction css(props, value) {\n var window = getWindow();\n var 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 (var _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(function (el, index) {\n callback.apply(el, [el, index]);\n });\n return this;\n}\n\nfunction filter(callback) {\n var 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 (var 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 (var i = 0; i < this.length; i += 1) {\n this[i].textContent = text;\n }\n\n return this;\n}\n\nfunction is(selector) {\n var window = getWindow();\n var document = getDocument();\n var el = this[0];\n var compareWith;\n var 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 var child = this[0];\n var 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 var length = this.length;\n\n if (index > length - 1) {\n return $([]);\n }\n\n if (index < 0) {\n var returnIndex = length + index;\n if (returnIndex < 0) return $([]);\n return $([this[returnIndex]]);\n }\n\n return $([this[index]]);\n}\n\nfunction append() {\n var newChild;\n var document = getDocument();\n\n for (var k = 0; k < arguments.length; k += 1) {\n newChild = k < 0 || arguments.length <= k ? undefined : arguments[k];\n\n for (var i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n var 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 (var 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 var document = getDocument();\n var i;\n var j;\n\n for (i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n var 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 var before = $(selector);\n\n for (var 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 (var 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 var after = $(selector);\n\n for (var 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 (var 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 var nextEls = [];\n var el = this[0];\n if (!el) return $([]);\n\n while (el.nextElementSibling) {\n var _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 var 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 var prevEls = [];\n var el = this[0];\n if (!el) return $([]);\n\n while (el.previousElementSibling) {\n var _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 var parents = []; // eslint-disable-line\n\n for (var 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 var parents = []; // eslint-disable-line\n\n for (var i = 0; i < this.length; i += 1) {\n var _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 var 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 var foundElements = [];\n\n for (var i = 0; i < this.length; i += 1) {\n var found = this[i].querySelectorAll(selector);\n\n for (var j = 0; j < found.length; j += 1) {\n foundElements.push(found[j]);\n }\n }\n\n return $(foundElements);\n}\n\nfunction children(selector) {\n var children = []; // eslint-disable-line\n\n for (var i = 0; i < this.length; i += 1) {\n var childNodes = this[i].children;\n\n for (var 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 (var 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() {\n var dom = this;\n var i;\n var j;\n\n for (var _len10 = arguments.length, els = new Array(_len10), _key10 = 0; _key10 < _len10; _key10++) {\n els[_key10] = arguments[_key10];\n }\n\n for (i = 0; i < els.length; i += 1) {\n var 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 (var i = 0; i < this.length; i += 1) {\n var el = this[i];\n\n if (el.nodeType === 1) {\n for (var 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\nfunction scrollTo() {\n var window = getWindow();\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var left = args[0],\n top = args[1],\n duration = args[2],\n easing = args[3],\n callback = args[4];\n\n if (args.length === 4 && typeof easing === 'function') {\n callback = easing;\n left = args[0];\n top = args[1];\n duration = args[2];\n callback = args[3];\n easing = args[4];\n }\n\n if (typeof easing === 'undefined') easing = 'swing';\n return this.each(function animate() {\n var el = this;\n var currentTop;\n var currentLeft;\n var maxTop;\n var maxLeft;\n var newTop;\n var newLeft;\n var scrollTop; // eslint-disable-line\n\n var scrollLeft; // eslint-disable-line\n\n var animateTop = top > 0 || top === 0;\n var 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 var startTime = null;\n if (animateTop && newTop === currentTop) animateTop = false;\n if (animateLeft && newLeft === currentLeft) animateLeft = false;\n\n function render(time) {\n if (time === void 0) {\n time = new Date().getTime();\n }\n\n if (startTime === null) {\n startTime = time;\n }\n\n var progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n var easeProgress = easing === 'linear' ? progress : 0.5 - Math.cos(progress * Math.PI) / 2;\n var 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() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n var top = args[0],\n duration = args[1],\n easing = args[2],\n callback = args[3];\n\n if (args.length === 3 && typeof easing === 'function') {\n top = args[0];\n duration = args[1];\n callback = args[2];\n easing = args[3];\n }\n\n var 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() {\n for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n\n var left = args[0],\n duration = args[1],\n easing = args[2],\n callback = args[3];\n\n if (args.length === 3 && typeof easing === 'function') {\n left = args[0];\n duration = args[1];\n callback = args[2];\n easing = args[3];\n }\n\n var 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\nfunction animate(initialProps, initialParams) {\n var window = getWindow();\n var els = this;\n var 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 easingProgress: function 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 stop: function stop() {\n if (a.frameId) {\n window.cancelAnimationFrame(a.frameId);\n }\n\n a.animating = false;\n a.elements.each(function (el) {\n var element = el;\n delete element.dom7AnimateInstance;\n });\n a.que = [];\n },\n done: function done(complete) {\n a.animating = false;\n a.elements.each(function (el) {\n var element = el;\n delete element.dom7AnimateInstance;\n });\n if (complete) complete(els);\n\n if (a.que.length > 0) {\n var que = a.que.shift();\n a.animate(que[0], que[1]);\n }\n },\n animate: function animate(props, params) {\n if (a.animating) {\n a.que.push([props, params]);\n return a;\n }\n\n var elements = []; // Define & Cache Initials & Units\n\n a.elements.each(function (el, index) {\n var initialFullValue;\n var initialValue;\n var unit;\n var finalValue;\n var finalFullValue;\n if (!el.dom7AnimateInstance) a.elements[index].dom7AnimateInstance = a;\n elements[index] = {\n container: el\n };\n Object.keys(props).forEach(function (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: initialFullValue,\n initialValue: initialValue,\n unit: unit,\n finalValue: finalValue,\n finalFullValue: finalFullValue,\n currentValue: initialValue\n };\n });\n });\n var startTime = null;\n var time;\n var elementsDone = 0;\n var propsDone = 0;\n var done;\n var began = false;\n a.animating = true;\n\n function render() {\n time = new Date().getTime();\n var progress;\n var 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(function (element) {\n var el = element;\n if (done || el.done) return;\n Object.keys(props).forEach(function (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 var _el$prop = el[prop],\n initialValue = _el$prop.initialValue,\n finalValue = _el$prop.finalValue,\n unit = _el$prop.unit;\n el[prop].currentValue = initialValue + easeProgress * (finalValue - initialValue);\n var 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 if (a.elements.length === 0) {\n return els;\n }\n\n var animateInstance;\n\n for (var 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 var els = this;\n\n for (var i = 0; i < els.length; i += 1) {\n if (els[i].dom7AnimateInstance) {\n els[i].dom7AnimateInstance.stop();\n }\n }\n}\n\nvar noTrigger = 'resize scroll'.split(' ');\n\nfunction shortcut(name) {\n function eventHandler() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n if (typeof args[0] === 'undefined') {\n for (var 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.apply(this, [name].concat(args));\n }\n\n return eventHandler;\n}\n\nvar click = shortcut('click');\nvar blur = shortcut('blur');\nvar focus = shortcut('focus');\nvar focusin = shortcut('focusin');\nvar focusout = shortcut('focusout');\nvar keyup = shortcut('keyup');\nvar keydown = shortcut('keydown');\nvar keypress = shortcut('keypress');\nvar submit = shortcut('submit');\nvar change = shortcut('change');\nvar mousedown = shortcut('mousedown');\nvar mousemove = shortcut('mousemove');\nvar mouseup = shortcut('mouseup');\nvar mouseenter = shortcut('mouseenter');\nvar mouseleave = shortcut('mouseleave');\nvar mouseout = shortcut('mouseout');\nvar mouseover = shortcut('mouseover');\nvar touchstart = shortcut('touchstart');\nvar touchend = shortcut('touchend');\nvar touchmove = shortcut('touchmove');\nvar resize = shortcut('resize');\nvar 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, trigger, val, value, width };\n","import * 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","import { getWindow } from 'ssr-window';\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 \n \n \n \n \n`.trim();\n\nexport const iosPreloaderContent = `\n \n ${[0, 1, 2, 3, 4, 5, 6, 7].map(() => '').join('')}\n \n`.trim();\n\nexport const auroraPreloaderContent = `\n \n \n \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));\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}\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 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 {\n '--f7-theme-color': hex,\n '--f7-theme-color-rgb': rgb.join(', '),\n '--f7-theme-color-shade': shade,\n '--f7-theme-color-tint': tint,\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","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 } from 'ssr-window';\nimport { getSupport } from './get-support';\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 || window.phonegap),\n phonegap: !!(window.cordova || window.phonegap),\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)\\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 && !windows) {\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\nfunction getDevice(overrides = {}, reset) {\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';\nimport EventsClass from './events-class';\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';\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 { getWindow, getDocument } from 'ssr-window';\nimport { id } from '../../shared/utils';\nimport $ from '../../shared/dom7';\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}.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 Framework7.request.get(\n modulePath,\n (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 (xhr, status) => {\n rejectScript(xhr, status);\n },\n );\n });\n const styleLoad = new Promise((resolveStyle) => {\n Framework7.request.get(\n modulePath.replace('.js', app.rtl ? '.rtl.css' : '.css'),\n (styleContent) => {\n const styleEl = document.createElement('style');\n styleEl.innerHTML = styleContent;\n $('head').append(styleEl);\n\n resolveStyle();\n },\n () => {\n resolveStyle();\n },\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 no-underscore-dangle */\n\nimport { getWindow, getDocument } from 'ssr-window';\nimport { extend, nextFrame } from '../../shared/utils';\nimport { getDevice } from '../../shared/get-device';\nimport { getSupport } from '../../shared/get-support';\nimport Framework7Class from '../../shared/class';\nimport EventsClass from '../../shared/events-class';\nimport ConstructorMethods from '../../shared/constructor-methods';\nimport ModalMethods from '../../shared/modal-methods';\nimport $ from '../../shared/dom7';\nimport loadModule from './load-module';\n\nclass Framework7 extends Framework7Class {\n constructor(params = {}) {\n super(params);\n if (Framework7.instance) {\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 window = getWindow();\n const document = getDocument();\n\n Framework7.instance = app;\n\n // Default\n const defaults = {\n version: '1.0.0',\n id: 'io.framework7.myapp',\n el: 'body',\n theme: 'auto',\n language: window.navigator.language,\n routes: [],\n name: 'Framework7',\n lazyModulesPath: null,\n initOnDeviceReady: true,\n init: true,\n autoDarkTheme: false,\n iosTranslucentBars: true,\n iosTranslucentModals: true,\n component: undefined,\n componentUrl: undefined,\n userAgent: null,\n url: null,\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 Id\n id: app.params.id,\n // App Name\n name: app.params.name,\n // App version\n version: app.params.version,\n // Routes\n routes: app.params.routes,\n // Lang\n language: app.params.language,\n\n // Theme\n theme: (function getTheme() {\n if (app.params.theme === 'auto') {\n if (device.ios) return 'ios';\n if (device.desktop && device.electron) return 'aurora';\n return 'md';\n }\n return app.params.theme;\n })(),\n\n // Initially passed parameters\n passedParams,\n online: window.navigator.onLine,\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 $(document).on('deviceready', () => {\n app.init();\n });\n } else {\n app.init();\n }\n }\n\n // Return app instance\n return app;\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 Theme\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('theme-dark');\n app.darkTheme = true;\n app.emit('darkThemeChange', true);\n } else if (media === LIGHT) {\n html.classList.remove('theme-dark');\n app.darkTheme = false;\n app.emit('darkThemeChange', 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 enableAutoDarkTheme() {\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.addListener(app.colorSchemeListener);\n app.mq.light.addListener(app.colorSchemeListener);\n }\n if (app.mq.dark && app.mq.dark.matches) {\n html.classList.add('theme-dark');\n app.darkTheme = true;\n app.emit('darkThemeChange', true);\n } else if (app.mq.light && app.mq.light.matches) {\n html.classList.remove('theme-dark');\n app.darkTheme = false;\n app.emit('darkThemeChange', false);\n }\n }\n\n disableAutoDarkTheme() {\n const window = getWindow();\n if (!window.matchMedia) return;\n const app = this;\n if (app.mq.dark) app.mq.dark.removeListener(app.colorSchemeListener);\n if (app.mq.light) app.mq.light.removeListener(app.colorSchemeListener);\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.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 Theme\n if (app.params.autoDarkTheme) {\n app.enableAutoDarkTheme();\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 aurora').addClass(app.theme);\n\n // iOS Translucent\n const device = app.device;\n if (app.params.iosTranslucentBars && app.theme === 'ios' && device.ios) {\n $('html').addClass('ios-translucent-bars');\n }\n if (app.params.iosTranslucentModals && app.theme === 'ios' && device.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.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 $ from './dom7';\nimport { extend } from './utils';\nimport ConstructorMethods from './constructor-methods';\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 { getDocument } from 'ssr-window';\nimport { getDevice } from '../../shared/get-device';\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 || device.phonegap) {\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';\n\nexport default {\n name: 'support',\n static: {\n getSupport,\n },\n};\n","import * as utils from '../../shared/utils';\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';\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 max-classes-per-file */\nimport { getWindow, getDocument } from 'ssr-window';\nimport { extend, serializeObject } from './utils';\n\nconst globals = {};\nlet jsonpRequests = 0;\n\nclass RequestResponse {\n constructor(obj) {\n Object.assign(this, obj);\n }\n}\n\nclass RequestError extends Error {\n constructor(obj) {\n super();\n Object.assign(this, obj);\n }\n}\n\nconst request = (requestOptions) =>\n new Promise((resolve, reject) => {\n const window = getWindow();\n const document = getDocument();\n const globalsNoCallbacks = extend({}, globals);\n 'beforeCreate beforeOpen beforeSend error complete success statusCode'\n .split(' ')\n .forEach((callbackName) => {\n delete globalsNoCallbacks[callbackName];\n });\n const defaults = extend(\n {\n url: window.location.toString(),\n method: 'GET',\n data: false,\n async: true,\n cache: true,\n user: '',\n password: '',\n headers: {},\n xhrFields: {},\n statusCode: {},\n processData: true,\n dataType: 'text',\n contentType: 'application/x-www-form-urlencoded',\n timeout: 0,\n },\n globalsNoCallbacks,\n );\n\n let proceedRequest;\n\n const options = extend({}, defaults, requestOptions);\n if (requestOptions.abortController) {\n options.abortController = requestOptions.abortController;\n }\n\n if (options.abortController && options.abortController.canceled) {\n reject(new RequestError({ options, status: 'canceled', message: 'canceled' }));\n return;\n }\n\n // Function to run XHR callbacks and events\n function fireCallback(callbackName, ...data) {\n /*\n Callbacks:\n beforeCreate (options),\n beforeOpen (xhr, options),\n beforeSend (xhr, options),\n error (xhr, status, message),\n complete (xhr, status),\n success (response, status, xhr),\n statusCode ()\n */\n let globalCallbackValue;\n let optionCallbackValue;\n if (globals[callbackName]) {\n globalCallbackValue = globals[callbackName](...data);\n }\n if (options[callbackName]) {\n optionCallbackValue = options[callbackName](...data);\n }\n if (typeof globalCallbackValue !== 'boolean') globalCallbackValue = true;\n if (typeof optionCallbackValue !== 'boolean') optionCallbackValue = true;\n if (\n options.abortController &&\n options.abortController.canceled &&\n (callbackName === 'beforeCreate' ||\n callbackName === 'beforeOpen' ||\n callbackName === 'beforeSend')\n ) {\n return false;\n }\n return globalCallbackValue && optionCallbackValue;\n }\n\n // Before create callback\n proceedRequest = fireCallback('beforeCreate', options);\n if (proceedRequest === false) {\n reject(new RequestError({ options, status: 'canceled', message: 'canceled' }));\n return;\n }\n\n // For jQuery guys\n if (options.type) options.method = options.type;\n\n // Parameters Prefix\n let paramsPrefix = options.url.indexOf('?') >= 0 ? '&' : '?';\n\n // UC method\n const method = options.method.toUpperCase();\n\n // Data to modify GET URL\n if (\n (method === 'GET' || method === 'HEAD' || method === 'OPTIONS' || method === 'DELETE') &&\n options.data\n ) {\n let stringData;\n if (typeof options.data === 'string') {\n // Should be key=value string\n if (options.data.indexOf('?') >= 0) stringData = options.data.split('?')[1];\n else stringData = options.data;\n } else {\n // Should be key=value object\n stringData = serializeObject(options.data);\n }\n if (stringData.length) {\n options.url += paramsPrefix + stringData;\n if (paramsPrefix === '?') paramsPrefix = '&';\n }\n }\n\n // JSONP\n if (options.dataType === 'json' && options.url.indexOf('callback=') >= 0) {\n const callbackName = `f7jsonp_${Date.now() + (jsonpRequests += 1)}`;\n let abortTimeout;\n const callbackSplit = options.url.split('callback=');\n let requestUrl = `${callbackSplit[0]}callback=${callbackName}`;\n if (callbackSplit[1].indexOf('&') >= 0) {\n const addVars = callbackSplit[1]\n .split('&')\n .filter((el) => el.indexOf('=') > 0)\n .join('&');\n if (addVars.length > 0) requestUrl += `&${addVars}`;\n }\n\n // Create script\n let script = document.createElement('script');\n script.type = 'text/javascript';\n script.onerror = function onerror() {\n clearTimeout(abortTimeout);\n fireCallback('error', null, 'scripterror', 'scripterror');\n reject(new RequestError({ options, status: 'scripterror', message: 'scripterror' }));\n fireCallback('complete', null, 'scripterror');\n };\n script.src = requestUrl;\n\n // Handler\n window[callbackName] = function jsonpCallback(data) {\n clearTimeout(abortTimeout);\n fireCallback('success', data);\n script.parentNode.removeChild(script);\n script = null;\n delete window[callbackName];\n resolve(new RequestResponse({ options, data }));\n };\n document.querySelector('head').appendChild(script);\n\n if (options.timeout > 0) {\n abortTimeout = setTimeout(() => {\n script.parentNode.removeChild(script);\n script = null;\n fireCallback('error', null, 'timeout', 'timeout');\n reject(new RequestError({ options, status: 'timeout', message: 'timeout' }));\n }, options.timeout);\n }\n\n return;\n }\n\n // Cache for GET/HEAD requests\n if (method === 'GET' || method === 'HEAD' || method === 'OPTIONS' || method === 'DELETE') {\n if (options.cache === false) {\n options.url += `${paramsPrefix}_nocache${Date.now()}`;\n }\n }\n\n // Create XHR\n const xhr = new XMLHttpRequest();\n\n if (options.abortController) {\n let aborted = false;\n options.abortController.onAbort = () => {\n if (aborted) return;\n aborted = true;\n xhr.abort();\n reject(new RequestError({ options, xhr, status: 'canceled', message: 'canceled' }));\n };\n }\n\n // Save Request URL\n xhr.requestUrl = options.url;\n xhr.requestParameters = options;\n\n // Before open callback\n proceedRequest = fireCallback('beforeOpen', xhr, options);\n if (proceedRequest === false) {\n reject(new RequestError({ options, xhr, status: 'canceled', message: 'canceled' }));\n return;\n }\n\n // Open XHR\n xhr.open(method, options.url, options.async, options.user, options.password);\n\n // Create POST Data\n let postData = null;\n\n if ((method === 'POST' || method === 'PUT' || method === 'PATCH') && options.data) {\n if (options.processData) {\n const postDataInstances = [ArrayBuffer, Blob, Document, FormData];\n // Post Data\n if (postDataInstances.indexOf(options.data.constructor) >= 0) {\n postData = options.data;\n } else {\n // POST Headers\n const boundary = `---------------------------${Date.now().toString(16)}`;\n\n if (options.contentType === 'multipart/form-data') {\n xhr.setRequestHeader('Content-Type', `multipart/form-data; boundary=${boundary}`);\n } else {\n xhr.setRequestHeader('Content-Type', options.contentType);\n }\n postData = '';\n let data = serializeObject(options.data);\n if (options.contentType === 'multipart/form-data') {\n data = data.split('&');\n const newData = [];\n for (let i = 0; i < data.length; i += 1) {\n newData.push(\n `Content-Disposition: form-data; name=\"${data[i].split('=')[0]}\"\\r\\n\\r\\n${\n data[i].split('=')[1]\n }\\r\\n`,\n );\n }\n postData = `--${boundary}\\r\\n${newData.join(`--${boundary}\\r\\n`)}--${boundary}--\\r\\n`;\n } else if (options.contentType === 'application/json') {\n postData = JSON.stringify(options.data);\n } else {\n postData = data;\n }\n }\n } else {\n postData = options.data;\n xhr.setRequestHeader('Content-Type', options.contentType);\n }\n }\n if (options.dataType === 'json' && (!options.headers || !options.headers.Accept)) {\n xhr.setRequestHeader('Accept', 'application/json');\n }\n\n // Additional headers\n if (options.headers) {\n Object.keys(options.headers).forEach((headerName) => {\n if (typeof options.headers[headerName] === 'undefined') return;\n xhr.setRequestHeader(headerName, options.headers[headerName]);\n });\n }\n\n // Check for crossDomain\n if (typeof options.crossDomain === 'undefined') {\n options.crossDomain =\n // eslint-disable-next-line\n /^([\\w-]+:)?\\/\\/([^\\/]+)/.test(options.url) && RegExp.$2 !== window.location.host;\n }\n\n if (!options.crossDomain) {\n xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');\n }\n\n if (options.xhrFields) {\n extend(xhr, options.xhrFields);\n }\n\n // Handle XHR\n xhr.onload = function onload() {\n if ((xhr.status >= 200 && xhr.status < 300) || xhr.status === 0) {\n let responseData;\n if (options.dataType === 'json') {\n let parseError;\n try {\n responseData = JSON.parse(xhr.responseText);\n } catch (err) {\n parseError = true;\n }\n if (!parseError) {\n fireCallback('success', responseData, xhr.status, xhr);\n resolve(new RequestResponse({ options, data: responseData, status: xhr.status, xhr }));\n } else {\n fireCallback('error', xhr, 'parseerror', 'parseerror');\n reject(new RequestError({ options, xhr, status: 'parseerror', message: 'parseerror' }));\n }\n } else {\n responseData =\n xhr.responseType === 'text' || xhr.responseType === ''\n ? xhr.responseText\n : xhr.response;\n fireCallback('success', responseData, xhr.status, xhr);\n resolve(new RequestResponse({ options, data: responseData, status: xhr.status, xhr }));\n }\n } else {\n fireCallback('error', xhr, xhr.status, xhr.statusText);\n reject(new RequestError({ options, xhr, status: xhr.status, message: xhr.statusText }));\n }\n if (options.statusCode) {\n if (globals.statusCode && globals.statusCode[xhr.status])\n globals.statusCode[xhr.status](xhr);\n if (options.statusCode[xhr.status]) options.statusCode[xhr.status](xhr);\n }\n fireCallback('complete', xhr, xhr.status);\n };\n\n xhr.onerror = function onerror() {\n fireCallback('error', xhr, xhr.status, xhr.status);\n reject(new RequestError({ options, xhr, status: xhr.status, message: xhr.statusText }));\n fireCallback('complete', xhr, 'error');\n };\n\n // Timeout\n if (options.timeout > 0) {\n xhr.timeout = options.timeout;\n xhr.ontimeout = () => {\n fireCallback('error', xhr, 'timeout', 'timeout');\n reject(new RequestError({ options, xhr, status: 'timeout', message: 'timeout' }));\n fireCallback('complete', xhr, 'timeout');\n };\n }\n\n // Ajax start callback\n proceedRequest = fireCallback('beforeSend', xhr, options);\n if (proceedRequest === false) {\n reject(new RequestError({ options, xhr, status: 'canceled', message: 'canceled' }));\n return;\n }\n\n // Send XHR\n xhr.send(postData);\n });\n\nfunction requestShortcut(method, ...args) {\n let [url, data, success, error, dataType] = [];\n if (typeof args[1] === 'function') {\n [url, success, error, dataType] = args;\n } else {\n [url, data, success, error, dataType] = args;\n }\n [success, error].forEach((callback) => {\n if (typeof callback === 'string') {\n dataType = callback;\n if (callback === success) success = undefined;\n else error = undefined;\n }\n });\n dataType = dataType || (method === 'json' || method === 'postJSON' ? 'json' : undefined);\n const requestOptions = {\n url,\n method: method === 'post' || method === 'postJSON' ? 'POST' : 'GET',\n data,\n success,\n error,\n dataType,\n };\n if (method === 'postJSON') {\n extend(requestOptions, {\n contentType: 'application/json',\n processData: false,\n crossDomain: true,\n data: typeof data === 'string' ? data : JSON.stringify(data),\n });\n }\n return request(requestOptions);\n}\n\nObject.assign(request, {\n get: (...args) => requestShortcut('get', ...args),\n post: (...args) => requestShortcut('post', ...args),\n json: (...args) => requestShortcut('json', ...args),\n getJSON: (...args) => requestShortcut('json', ...args),\n postJSON: (...args) => requestShortcut('postJSON', ...args),\n});\n\nrequest.abortController = () => {\n const contoller = {\n canceled: false,\n onAbort: null,\n abort() {\n contoller.canceled = true;\n if (contoller.onAbort) contoller.onAbort();\n },\n };\n return contoller;\n};\n\nrequest.setup = function setup(options) {\n if (options.type && !options.method) {\n extend(options, { method: options.type });\n }\n extend(globals, options);\n};\n\nexport default request;\n","/* eslint no-param-reassign: \"off\" */\nimport request from '../../shared/request';\n\nexport default {\n name: 'request',\n proto: {\n request,\n },\n static: {\n request,\n },\n};\n","/* eslint-disable no-nested-ternary */\nimport { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom7';\nimport { getSupport } from '../../shared/get-support';\nimport { getDevice } from '../../shared/get-device';\nimport { extend } from '../../shared/utils';\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 function handleTouchStart(e) {\n isMoved = false;\n tapHoldFired = false;\n preventClick = false;\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\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 let touch;\n let distance;\n if (e.type === 'touchmove') {\n touch = e.targetTouches[0];\n distance = params.touchClicksDistanceThreshold;\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 if (params.tapHold) {\n clearTimeout(tapHoldTimeout);\n }\n if (params.activeState) {\n clearTimeout(activeTimeout);\n removeActive();\n }\n if (useRipple) {\n rippleTouchMove();\n }\n }\n }\n function handleTouchEnd(e) {\n clearTimeout(activeTimeout);\n clearTimeout(tapHoldTimeout);\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 let localPreventClick = preventClick;\n if (targetElement && e.target !== targetElement) {\n if (isOverswipe) {\n localPreventClick = false;\n } else {\n localPreventClick = true;\n }\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, .menu-item, .link, .item-link, .accordion-item-toggle',\n activeStateOnMouseMove: false,\n mdTouchRipple: true,\n iosTouchRipple: false,\n auroraTouchRipple: false,\n touchRippleElements:\n '.ripple, .link, .item-link, .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, .menu-item-content, .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 \" + 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 \" + 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 \" + j);\n }\n }\n pattern += str[j++];\n }\n if (count)\n throw new TypeError(\"Unbalanced pattern at \" + i);\n if (!pattern)\n throw new TypeError(\"Missing pattern at \" + 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 = \"[^\" + 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 \" + nextType + \" at \" + index + \", expected \" + type);\n };\n var consumeText = function () {\n var result = \"\";\n var value;\n // tslint:disable-next-line\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(\"^(?:\" + 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 \\\"\" + 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 \\\"\" + 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 \\\"\" + token.name + \"\\\" to match \\\"\" + token.pattern + \"\\\", but got \\\"\" + 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 \\\"\" + token.name + \"\\\" to match \\\"\" + token.pattern + \"\\\", but got \\\"\" + 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 \\\"\" + token.name + \"\\\" to be \" + 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 // tslint:disable-next-line\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(\"(?:\" + 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;\n var endsWith = \"[\" + escapeString(options.endsWith || \"\") + \"]|$\";\n var delimiter = \"[\" + escapeString(options.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 += \"(?:\" + prefix + \"((?:\" + token.pattern + \")(?:\" + suffix + prefix + \"(?:\" + token.pattern + \"))*)\" + suffix + \")\" + mod;\n }\n else {\n route += \"(?:\" + prefix + \"(\" + token.pattern + \")\" + suffix + \")\" + token.modifier;\n }\n }\n else {\n route += \"(\" + token.pattern + \")\" + token.modifier;\n }\n }\n else {\n route += \"(?:\" + prefix + suffix + \")\" + token.modifier;\n }\n }\n }\n if (end) {\n if (!strict)\n route += delimiter + \"?\";\n route += !options.endsWith ? \"$\" : \"(?=\" + endsWith + \")\";\n }\n else {\n var endToken = tokens[tokens.length - 1];\n var isEndDelimited = typeof endToken === \"string\"\n ? delimiter.indexOf(endToken[endToken.length - 1]) > -1\n : // tslint:disable-next-line\n endToken === undefined;\n if (!strict) {\n route += \"(?:\" + delimiter + \"(?=\" + endsWith + \"))?\";\n }\n if (!isEndDelimited) {\n route += \"(?=\" + delimiter + \"|\" + endsWith + \")\";\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';\nimport { extend } from './utils';\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 if (url.substr(-3) === '#!/') {\n // eslint-disable-next-line\n url = url.replace('#!/', '');\n }\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';\nimport History from '../../shared/history';\nimport { getSupport } from '../../shared/get-support';\nimport { getDevice } from '../../shared/get-device';\nimport { now } from '../../shared/utils';\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 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 (!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:not(.stacked)');\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 = $('
');\n $currentPageEl.append($pageShadowEl);\n }\n }\n if (paramsSwipeBackAnimateOpacity) {\n $pageOpacityEl = $previousPageEl.find('.page-opacity-effect');\n if ($pageOpacityEl.length === 0) {\n $pageOpacityEl = $('
');\n $previousPageEl.append($pageOpacityEl);\n }\n }\n\n if (dynamicNavbar) {\n $currentNavbarEl = $navbarsEl.find('.navbar-current:not(.stacked)');\n $previousNavbarEl = $navbarsEl.find('.navbar-previous:not(.stacked)');\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() {\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 if (params.stackPages && router.initialPages.indexOf($currentPageEl[0]) >= 0) {\n $currentPageEl.addClass('stacked');\n if (dynamicNavbar) {\n $currentNavbarEl.addClass('stacked');\n }\n } else {\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\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';\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);\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';\nimport { extend, parseUrlQuery } from '../../shared/utils';\nimport History from '../../shared/history';\nimport redirect from './redirect';\nimport processRouteQueue from './process-route-queue';\nimport appRouterCheck from './app-router-check';\nimport asyncComponent from './async-component';\n\nfunction refreshPage() {\n const router = this;\n appRouterCheck(router, 'refreshPage');\n return router.navigate(router.currentRoute.url, {\n ignoreCache: true,\n reloadCurrent: true,\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\n .children('.page:not(.stacked)')\n .filter((pageInView) => pageInView !== $newPage[0]);\n\n // Navbars In View\n let $navbarsInView;\n if (dynamicNavbar) {\n $navbarsInView = $navbarsEl\n .children('.navbar:not(.stacked)')\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 .removeClass('stacked')\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 .removeClass('stacked');\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 if (router.params.stackPages) {\n $pagesInView.eq(i).addClass('stacked');\n $pagesInView.eq(i).trigger('page:stack');\n router.emit('pageStack', $pagesInView[i]);\n if (dynamicNavbar) {\n $(oldNavbarEl).addClass('stacked');\n }\n } else {\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 }\n $oldPage = $viewEl\n .children('.page:not(.stacked)')\n .filter((pageEl) => pageEl !== $newPage[0] && removedPageEls.indexOf(pageEl) < 0);\n if (dynamicNavbar) {\n $oldNavbarEl = $navbarsEl\n .children('.navbar:not(.stacked)')\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\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 }\n router.history[router.history.length - (options.reloadPrevious ? 2 : 1)] = url;\n } else if (options.reloadPrevious) {\n router.history[router.history.length - 2] = url;\n } else if (options.reloadAll) {\n router.history = [url];\n } else {\n router.history.push(url);\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 if (router.params.stackPages && router.initialPages.indexOf($oldPage[0]) >= 0) {\n $oldPage.addClass('stacked');\n $oldPage.trigger('page:stack');\n router.emit('pageStack', $oldPage[0]);\n if (dynamicNavbar) {\n $oldNavbarEl.addClass('stacked');\n }\n } else {\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 }\n } else if (options.reloadAll) {\n $oldPage.each((pageEl, index) => {\n const $oldPageEl = $(pageEl);\n const $oldNavbarElEl = $(app.navbar.getElByPage($oldPageEl));\n if (router.params.stackPages && router.initialPages.indexOf($oldPageEl[0]) >= 0) {\n $oldPageEl.addClass('stacked');\n $oldPageEl.trigger('page:stack');\n router.emit('pageStack', $oldPageEl[0]);\n if (dynamicNavbar) {\n $oldNavbarElEl.addClass('stacked');\n }\n } else {\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 });\n } else if (options.reloadPrevious) {\n if (router.params.stackPages && router.initialPages.indexOf($oldPage[0]) >= 0) {\n $oldPage.addClass('stacked');\n $oldPage.trigger('page:stack');\n router.emit('pageStack', $oldPage[0]);\n if (dynamicNavbar) {\n $oldNavbarEl.addClass('stacked');\n }\n } else {\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\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 (router.params.stackPages) {\n $oldPage.addClass('stacked');\n $oldPage.trigger('page:stack');\n router.emit('pageStack', $oldPage[0]);\n if (dynamicNavbar) {\n $oldNavbarEl.addClass('stacked');\n }\n } else if (\n !($newPage.attr('data-name') && $newPage.attr('data-name') === 'smart-select-page')\n ) {\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 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 if (options.openIn === 'popup') {\n params.content = `
`;\n navigateOptions.route.popup = params;\n }\n if (options.openIn === 'loginScreen') {\n params.content = `
`;\n navigateOptions.route.loginScreen = params;\n }\n if (options.openIn === 'sheet') {\n params.content = `
`;\n navigateOptions.route.sheet = params;\n }\n if (options.openIn === 'popover') {\n params.targetEl = options.clickedEl || options.targetEl;\n params.content = `
`;\n navigateOptions.route.popover = params;\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 params.targetEl = options.clickedEl || options.targetEl;\n params.content = `
`;\n navigateOptions.route.panel = params;\n }\n return router.navigate(navigateOptions);\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 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';\nimport { extend, parseUrlQuery } from '../../shared/utils';\nimport { getDevice } from '../../shared/get-device';\nimport History from '../../shared/history';\nimport redirect from './redirect';\nimport processRouteQueue from './process-route-queue';\nimport appRouterCheck from './app-router-check';\nimport asyncComponent from './async-component';\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 {\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:not(.stacked)')\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 .removeClass('stacked')\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 .removeClass('stacked')\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 (\n $oldPage.prev('.page-previous:not(.stacked)').length > 0 ||\n $oldPage.prev('.page-previous').length === 0\n ) {\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 view.history = router.history;\n } else if (router.history[[router.history.length - 2]]) {\n router.history[router.history.length - 2] = options.route.url;\n } else {\n router.history.unshift(router.url);\n }\n\n if (backIndex && router.params.stackPages) {\n $oldPage.prevAll('.page-previous').each((pageToRemove) => {\n const $pageToRemove = $(pageToRemove);\n let $navbarToRemove;\n if (dynamicNavbar) {\n // $navbarToRemove = $oldNavbarEl.prevAll('.navbar-previous').eq(index);\n $navbarToRemove = $(app.navbar.getElByPage($pageToRemove));\n }\n if ($pageToRemove[0] !== $newPage[0] && $pageToRemove.index() > $newPage.index()) {\n if (router.initialPages.indexOf($pageToRemove[0]) >= 0) {\n $pageToRemove.addClass('stacked');\n $pageToRemove.trigger('page:stack');\n router.emit('pageStack', $pageToRemove[0]);\n if (dynamicNavbar) {\n $navbarToRemove.addClass('stacked');\n }\n } else {\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 > 0) {\n router.removeNavbar($navbarToRemove);\n }\n }\n }\n });\n } else {\n const $pageToRemove = $oldPage.prev('.page-previous:not(.stacked)');\n let $navbarToRemove;\n if (dynamicNavbar) {\n // $navbarToRemove = $oldNavbarEl.prev('.navbar-inner:not(.stacked)');\n $navbarToRemove = $(app.navbar.getElByPage($pageToRemove));\n }\n if (router.params.stackPages && router.initialPages.indexOf($pageToRemove[0]) >= 0) {\n $pageToRemove.addClass('stacked');\n $pageToRemove.trigger('page:stack');\n router.emit('pageStack', $pageToRemove[0]);\n $navbarToRemove.addClass('stacked');\n } else 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\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(.stacked):not(.page-master)');\n if ($previousPages.length > 0) {\n $previousPages.each((pageToRemove) => {\n const $pageToRemove = $(pageToRemove);\n let $navbarToRemove;\n if (dynamicNavbar) {\n // $navbarToRemove = $newNavbarEl.prevAll('.navbar-previous:not(.stacked)').eq(index);\n $navbarToRemove = $(app.navbar.getElByPage($pageToRemove));\n }\n if (router.params.stackPages && router.initialPages.indexOf(pageToRemove) >= 0) {\n $pageToRemove.addClass('stacked');\n $pageToRemove.trigger('page:stack');\n router.emit('pageStack', $pageToRemove[0]);\n if (dynamicNavbar) {\n $navbarToRemove.addClass('stacked');\n }\n } else {\n router.pageCallback(\n 'beforeRemove',\n $pageToRemove,\n $navbarToRemove,\n 'previous',\n undefined,\n );\n router.removePage($pageToRemove);\n if (dynamicNavbar && $navbarToRemove.length) {\n router.removeNavbar($navbarToRemove);\n }\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 } else {\n if (router.history.length === 1) {\n router.history.unshift(router.url);\n }\n router.history.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 if (router.params.stackPages && router.initialPages.indexOf($oldPage[0]) >= 0) {\n $oldPage.addClass('stacked');\n $oldPage.trigger('page:stack');\n router.emit('pageStack', $oldPage[0]);\n if (dynamicNavbar) {\n $oldNavbarEl.addClass('stacked');\n }\n } else {\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\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], { preload: true });\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 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 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.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 if (\n router.params.browserHistory &&\n $previousPage[0].f7Page &&\n router.history[router.history.length - 2] !== $previousPage[0].f7Page.route.url\n ) {\n router.back(\n router.history[router.history.length - 2],\n extend(navigateOptions, { force: true }),\n );\n return router;\n }\n const previousPageRoute = $previousPage[0].f7Page.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 // 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 }\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 }),\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);\n } else {\n extend(options, navigateOptions);\n }\n options.route = route;\n\n let backForceLoaded;\n if (options.force && router.params.stackPages) {\n router.$el.children('.page-previous.stacked').each((pageEl) => {\n if (pageEl.f7Page && pageEl.f7Page.route && pageEl.f7Page.route.url === route.url) {\n backForceLoaded = true;\n loadBack(router, { el: pageEl }, options);\n }\n });\n if (backForceLoaded) {\n return router;\n }\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';\nimport Framework7Class from '../../shared/class';\nimport {\n extend,\n nextFrame,\n parseUrlQuery,\n serializeObject,\n now,\n eventNameToColonCase,\n} from '../../shared/utils';\nimport History from '../../shared/history';\nimport SwipeBack from './swipe-back';\n\nimport { refreshPage, navigate } from './navigate';\nimport { tabLoad, tabRemove } from './tab';\nimport { modalLoad, modalRemove } from './modal';\nimport { back } from './back';\nimport { clearPreviousHistory } from './clear-previous-history';\nimport appRouterCheck from './app-router-check';\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 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 (direction === 'forward' ? $newPageEl : $oldPageEl).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, notStacked) {\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 let selector = stringSelector;\n if (notStacked) selector += ':not(.stacked)';\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 // Try to find not stacked\n if (!notStacked) found = router.findElement(selector, $container, true);\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 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 url += `?${serializeObject(query)}`;\n }\n\n return url;\n }\n\n findTabRoute(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 foundTabRoute;\n flattenedRoutes.forEach((route) => {\n if (route.parentPath === parentPath && route.tab && route.tab.id === tabId) {\n foundTabRoute = route;\n }\n });\n return foundTabRoute;\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,\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 = router.app.request.abortController();\n router.app.request({\n abortController: router.xhrAbortController,\n url,\n method: 'GET',\n beforeSend(xhr) {\n router.emit('routerAjaxStart', xhr, options);\n },\n complete(xhr, status) {\n router.emit('routerAjaxComplete', xhr);\n if (\n (status !== 'error' && status !== 'timeout' && xhr.status >= 200 && xhr.status < 300) ||\n xhr.status === 0\n ) {\n if (params.xhrCache && xhr.responseText !== '') {\n router.removeFromXhrCache(url);\n router.cache.xhr.push({\n url,\n time: now(),\n content: xhr.responseText,\n });\n }\n router.emit('routerAjaxSuccess', xhr, options);\n resolve(xhr.responseText);\n } else {\n router.emit('routerAjaxError', xhr, options);\n reject(xhr);\n }\n },\n error(xhr) {\n router.emit('routerAjaxError', xhr, options);\n reject(xhr);\n },\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, .aurora-only, .if-md, .if-aurora, .if-not-ios, .not-ios';\n } else if (theme === 'md') {\n toRemove = '.ios-only, .aurora-only, .if-ios, .if-aurora, .if-not-md, .not-md';\n } else if (theme === 'aurora') {\n toRemove = '.ios-only, .md-only, .if-ios, .if-md, .if-not-aurora, .not-aurora';\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 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.split(browserHistoryRoot)[1];\n if (documentUrl === '') documentUrl = '/';\n }\n if (browserHistorySeparator.length > 0 && documentUrl.indexOf(browserHistorySeparator) >= 0) {\n initialUrl = documentUrl.split(browserHistorySeparator)[1];\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\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 (view && router.params.auroraSwipeBack && app.theme === 'aurora')\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.params.stackPages) {\n router.$el.children('.page').each((pageEl) => {\n const $pageEl = $(pageEl);\n router.initialPages.push($pageEl[0]);\n if (router.dynamicNavbar && $pageEl.children('.navbar').length > 0) {\n router.initialNavbars.push($pageEl.children('.navbar')[0]);\n }\n });\n }\n\n if (\n router.$el.children('.page:not(.stacked)').length === 0 &&\n initialUrl &&\n router.params.loadInitialPage\n ) {\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:not(.stacked)').length) {\n // Init current DOM page\n let hasTabRoute;\n router.currentRoute = currentRoute;\n router.$el.children('.page:not(.stacked)').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';\nimport { extend } from '../../shared/utils';\nimport History from '../../shared/history';\nimport asyncComponent from './async-component';\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.replace(\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';\nimport History from '../../shared/history';\nimport asyncComponent from './async-component';\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 (modalComponent || modalParams.component) {\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';\nimport appRouterCheck from './app-router-check';\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 if (router.params.stackPages && router.initialPages.indexOf($oldPageEl[0]) >= 0) {\n $oldPageEl.addClass('stacked');\n if (dynamicNavbar) {\n $oldNavbarEl.addClass('stacked');\n }\n } else {\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}\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';\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';\nimport { extend } from '../../shared/utils';\nimport { getSupport } from '../../shared/get-support';\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('
');\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';\nimport { extend } from '../../shared/utils';\nimport Router from '../../modules/router/router';\nimport Framework7Class from '../../shared/class';\nimport resizableView from './resizable-view';\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 = $('
');\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 view.router.init();\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';\nimport ViewClass from '../../components/view/view-class';\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 (!$clickedLinkEl.hasClass('back') && view && view.params.linksView) {\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';\n\nexport default {\n name: 'routerComponentLoader',\n proto: {\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);\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=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\"===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';\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';\nimport * as is from './is';\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","export default {};\n","/* eslint no-use-before-define: \"off\" */\n/* eslint import/no-named-as-default: \"off\" */\nimport h from './snabbdom/h';\nimport customComponents from './custom-components';\nimport { isObject, eventNameToColonCase } from '../../shared/utils';\n\nconst SELF_CLOSING = 'area base br col command embed hr img input keygen link menuitem meta param source track wbr'.split(\n ' ',\n);\nconst PROPS_ATTRS = 'hidden checked disabled readonly selected autofocus autoplay required multiple value indeterminate routeProps'.split(\n ' ',\n);\nconst BOOLEAN_PROPS = '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 const tagName = getTagName(treeNode);\n if (data && data.attrs && data.attrs.component) {\n // eslint-disable-next-line\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';\nimport * as is from './is';\nimport htmlDomApi from './htmldomapi';\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';\nexport { thunk } from './thunk';\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","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';\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';\nimport attributesModule from './snabbdom/modules/attributes';\nimport propsModule from './snabbdom/modules/props';\nimport styleModule from './snabbdom/modules/style';\nimport eventListenersModule from './eventslisteners';\n\nconst patch = init([attributesModule, propsModule, styleModule, eventListenersModule]);\n\nexport default patch;\n","/* eslint no-underscore-dangle: \"off\" */\nimport { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom7';\nimport $h from './$h';\nimport { id as generateId, merge, eventNameToColonCase, deleteProps } from '../../shared/utils';\nimport vdom from './vdom';\nimport patch from './patch';\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 aurora: app.theme === 'aurora',\n },\n style: component.style,\n __storeCallbacks: [],\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 getComponentStore() {\n const { state, getters, dispatch } = this.f7.store;\n const $store = {\n state,\n dispatch,\n };\n $store.getters = new Proxy(getters, {\n get: (target, prop) => {\n const obj = target[prop];\n const callback = () => {\n this.update();\n };\n obj.onUpdated(callback);\n this.__storeCallbacks.push(callback, obj.__callback);\n return obj;\n },\n });\n\n return $store;\n }\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 $el: {},\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.__storeCallbacks.forEach((callback) => {\n this.f7.store.__removeCallback(callback);\n });\n this.__storeCallbacks = [];\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\nexport default Component;\n","import Component from './component-class';\nimport parseComponent from './parse-component';\nimport customComponents from './custom-components';\nimport $jsx from './$jsx';\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 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 { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom7';\nimport { id } from '../../shared/utils';\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(//);\n if (hasTemplate) {\n template = componentString\n .split(//)\n .filter((item, index) => index > 0)\n .join('')\n .filter((item, index, arr) => index < arr.length - 1)\n .join('')\n .replace(/{{#raw}}([ \\n]*)