framework7 7.0.1 → 7.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. package/components/calendar/calendar.d.ts +2 -2
  2. package/components/data-table/data-table.less +1 -1
  3. package/components/popover/popover-class.js +8 -6
  4. package/components/popover/popover.d.ts +2 -0
  5. package/components/popover/popover.js +1 -0
  6. package/components/popover/popover.lazy.js +1 -1
  7. package/components/searchbar/searchbar.lazy.js +1 -1
  8. package/components/smart-select/smart-select-class.js +2 -1
  9. package/components/smart-select/smart-select.lazy.js +1 -1
  10. package/components/swiper/swiper-rtl.css +1 -1
  11. package/components/swiper/swiper.css +1 -1
  12. package/components/swiper/swiper.lazy.js +1 -1
  13. package/framework7-bundle-rtl.css +5 -5
  14. package/framework7-bundle-rtl.min.css +3 -3
  15. package/framework7-bundle.css +5 -5
  16. package/framework7-bundle.esm.js +2 -2
  17. package/framework7-bundle.js +413 -337
  18. package/framework7-bundle.js.map +1 -1
  19. package/framework7-bundle.less +2 -2
  20. package/framework7-bundle.min.css +3 -3
  21. package/framework7-bundle.min.js +3 -3
  22. package/framework7-bundle.min.js.map +1 -1
  23. package/framework7-lite-bundle.esm.js +2 -2
  24. package/framework7-lite.esm.js +2 -2
  25. package/framework7-rtl.css +2 -2
  26. package/framework7-rtl.min.css +2 -2
  27. package/framework7.css +2 -2
  28. package/framework7.d.ts +7 -7
  29. package/framework7.esm.js +2 -2
  30. package/framework7.js +38 -5
  31. package/framework7.js.map +1 -1
  32. package/framework7.less +2 -2
  33. package/framework7.min.css +2 -2
  34. package/framework7.min.js +3 -3
  35. package/framework7.min.js.map +1 -1
  36. package/modules/component/component-class.js +2 -0
  37. package/modules/component/snabbdom/snabbdom.js +2 -2
  38. package/package.json +2 -2
  39. package/shared/history.js +12 -1
  40. package/shared/request.d.ts +1 -1
@@ -1 +1 @@
1
- {"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.mjs","../../src/core/modules/component/$h.js","../../src/core/modules/component/snabbdom/vnode.js","../../src/core/modules/component/snabbdom/is.js","../../src/core/modules/component/snabbdom/h.js","../../src/core/modules/component/custom-components.js","../../src/core/modules/component/vdom.js","../../src/core/modules/component/snabbdom/htmldomapi.js","../../src/core/modules/component/snabbdom/snabbdom.js","../../src/core/modules/component/snabbdom/modules/attributes.js","../../src/core/modules/component/snabbdom/modules/props.js","../../src/core/modules/component/snabbdom/modules/style.js","../../src/core/modules/component/eventslisteners.js","../../src/core/modules/component/patch.js","../../src/core/modules/component/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","Dom7","Array","items","super","proto","__proto__","defineProperty","get","set","value","makeReactive","arrayFlat","arr","res","el","isArray","push","arrayFilter","prototype","filter","call","$","selector","context","html","trim","indexOf","toCreate","tempParent","innerHTML","i","a","qsa","nodeType","uniqueArray","arrayUnique","fn","noTrigger","split","shortcut","name","_len14","arguments","args","_key14","trigger","on","click","focus","focusin","focusout","keyup","keydown","keypress","submit","change","mousedown","mousemove","mouseup","mouseenter","mouseleave","mouseout","mouseover","touchstart","touchend","touchmove","resize","scroll","dom","j","_len10","els","_key10","toAdd","_len","classes","_key","classNames","map","c","classList","add","initialProps","initialParams","props","assign","params","duration","easing","elements","animating","que","easingProgress","progress","Math","cos","PI","stop","frameId","each","dom7AnimateInstance","done","complete","shift","animate","index","initialFullValue","initialValue","unit","finalValue","finalFullValue","container","prop","replace","parseFloat","currentValue","startTime","time","elementsDone","propsDone","began","render","easeProgress","getTime","begin","max","min","element","animateInstance","fireCallBack","e","off","newChild","k","undefined","tempDiv","firstChild","appendChild","parent","append","attrs","getAttribute","attrName","is","closest","parents","eq","dom7ElementDataStorage","dataKey","dataset","attributes","attr","string","toLowerCase","match","group","toUpperCase","remove","apply","parentNode","removeChild","textContent","returnIndex","foundElements","found","_len4","_key4","className","contains","innerHeight","css","display","child","previousSibling","after","insertBefore","nextSibling","cloneNode","before","compareWith","matches","webkitMatchesSelector","msMatchesSelector","nextElementSibling","nextEls","next","_len6","_key6","eventType","targetSelector","listener","capture","events","event","handlers","dom7Listeners","dom7LiveListeners","handler","dom7proxy","proxyListener","splice","box","getBoundingClientRect","clientTop","clientLeft","scrollTop","scrollY","scrollLeft","scrollX","top","left","_len5","_key5","handleLiveEvent","eventData","dom7EventData","unshift","handleEvent","_len7","_key7","eventName","onceHandler","_len8","eventArgs","_key8","includeMargins","styles","offsetHeight","offsetWidth","prepend","previousElementSibling","prevEls","prev","propName","removeAttribute","_len2","_key2","_len13","_key13","scrollTo","_len11","_key11","currentTop","currentLeft","maxTop","maxLeft","newTop","newLeft","animateTop","animateLeft","scrollHeight","scrollWidth","_len12","_key12","nextAll","prevAll","text","_len3","_key3","toggle","transform","transitionDuration","_len9","_key9","evt","detail","bubbles","cancelable","data","dataIndex","dispatchEvent","multiple","values","selectedOptions","options","selected","val","innerWidth","methods","methodName","uniqueNum","mask","floor","random","mdPreloaderContent","iosPreloaderContent","join","eventNameToColonCase","hasColon","char","deleteProps","object","nextTick","delay","nextFrame","now","parseUrlQuery","url","query","urlToParse","param","paramsPart","decodeURIComponent","slice","serializeObject","resultArray","newParents","varName","parentParts","encodeURIComponent","varValue","toPush","String","o","merge","to","from","nextSource","keysArray","nextIndex","len","nextKey","desc","getOwnPropertyDescriptor","enumerable","deep","colorHexToRgb","hex","h","m","r","g","b","result","exec","n","parseInt","colorRgbToHex","toString","colorRgbToHsl","d","l","abs","colorHslToRgb","s","hp","x","rgb1","Number","isNaN","round","bindMethods","instance","subKey","bind","flattenArray","arg","axis","matrix","curTransform","transformMatrix","curStyle","WebKitCSSMatrix","webkitTransform","MozTransform","OTransform","MsTransform","msTransform","m41","m42","HSL","HSB","t","rgb","hsl","hslShade","hslTint","shade","tint","support","deviceCalculated","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","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","self","method","once","f7proxy","eventHandler","emit","local","eventsArray","localEvents","parentEvents","eventsParent","Framework7Class","useModuleParams","module","instanceParams","originalParams","paramKey","useModulesParams","modules","moduleName","useModule","moduleParams","modulePropName","moduleProp","moduleEventName","vnode","vnodeHooks","vnodeId","hookName","create","useModules","modulesParams","components","use","installModule","Class","static","install","ConstructorMethods","parameters","defaultSelector","Constructor","domProp","app","addMethods","$el","destroy","fetchedModules","Framework7","Error","passedParams","w","defaults","version","language","routes","lazyModulesPath","initOnDeviceReady","init","autoDarkMode","iosTranslucentBars","iosTranslucentModals","component","componentUrl","online","onLine","store","f7","initStore","mount","rootEl","$rootEl","rtl","DARK","LIGHT","mq","dark","light","colorSchemeListener","_ref","media","darkMode","__store","createStore","enableAutoDarkMode","addListener","disableAutoDarkMode","removeListener","initAppComponent","router","componentLoader","componentOptions","$elComponent","f7Component","initialized","addClass","removeClass","loadModule","loadModules","getVnodeHooks","hook","Events","ModalMethods","open","targetEl","$targetPage","modalEl","$modalEl","f7Modal","close","$parentEl","$targetEl","moduleToLoad","Promise","resolve","reject","modulePath","moduleObj","moduleFunc","matchNamePattern","scriptLoad","resolveScript","rejectScript","request","scriptContent","callbackId","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","requestOptions","globalsNoCallbacks","callbackName","async","cache","user","password","headers","xhrFields","statusCode","processData","dataType","contentType","timeout","proceedRequest","abortController","canceled","message","fireCallback","globalCallbackValue","optionCallbackValue","type","paramsPrefix","stringData","abortTimeout","callbackSplit","requestUrl","addVars","script","onerror","XMLHttpRequest","aborted","onAbort","abort","requestParameters","postData","postDataInstances","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","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","useRipple","touchStartX","touchStartY","targetElement","isMoved","tapHoldFired","tapHoldTimeout","preventClick","activableElement","activeTimeout","rippleWave","rippleTarget","rippleTimeout","isScrolling","findActivableElement","activable","newActivable","preventPropagation","hasClass","isInsideScrollableView","addActive","removeActive","createRipple","y","touchRipple","removeRipple","rippleTouchStart","findRippleElement","rippleElements","rippleParent","rippleTouchMove","rippleTouchEnd","handleMouseUp","isSegmentedStrong","segmentedStrongEl","touchMoveActivableIos","isTouchMoveActivable","touchmoveActivableEl","emitAppTouchEvent","appTouchStartActive","appTouchMoveActive","appTouchEndActive","appTouchStartPassive","appTouchMovePassive","appTouchEndPassive","passive","passiveListenerCapture","activeListener","activeListenerCapture","appClick","handleClick","isOverswipe","isSegmented","localPreventClick","stopImmediatePropagation","stopPropagation","preventDefault","handleTouchStart","targetTouches","touches","pageX","pageY","handleTouchMove","distance","shouldRemoveActive","touchCurrentX","touchCurrentY","elementFromPoint","buttonEl","clientX","clientY","handleTouchEnd","handleMouseDown","$activableEl","which","isNative","str","tokens","count","pattern","TypeError","code","charCodeAt","lexer","_a","prefixes","defaultPattern","escapeString","delimiter","path","tryConsume","mustConsume","nextType","consumeText","prefix","suffix","modifier","name_1","pattern_1","compile","tokensToFunction","reFlags","flags","encode","_b","validate","token","optional","repeat","segment","typeOfMessage","sensitive","stringToRegexp","strict","_c","_d","endsWith","route","_i","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","newState","substr","readyState","SwipeBack","$navbarsEl","isTouched","touchesStart","viewContainerWidth","touchesDiff","touchStartTime","dynamicNavbar","$pageShadowEl","$pageOpacityEl","animatableNavEls","$currentPageEl","$previousPageEl","allowViewTouchMove","$currentNavbarEl","$previousNavbarEl","paramsSwipeBackAnimateShadow","paramsSwipeBackAnimateOpacity","paramsSwipeBackActiveArea","paramsSwipeBackThreshold","transformOrigin","transformOriginTitleLarge","setAnimatableNavElements","transition","reflow","_clientLeft","classNameSet","styleProp","swipeBackEnabled","swipeout","masterDetailBreakpoint","f7PreventSwipeBack","preventSwipeBack","cancel","find","notFromBorder","inverter","currentNavIsTransparent","currentNavIsLarge","currentNavIsCollapsed","currentNavIsLargeTransparent","previousNavIsTransparent","previousNavIsLarge","previousNavIsCollapsed","previousNavIsLargeTransparent","fromLarge","toLarge","$currentNavElements","$previousNavElements","activeNavBackIconText","previousNavBackIconText","iosAnimateNavbarBackIcon","f7NavbarLeftOffset","navEl","$navEl","isSubnavbar","isLeft","isTitle","isBg","overflow","subNavEl","opacity","isSliding","transformTarget","textEl","activeNavTranslate","f7NavbarRightOffset","previousNavTranslate","animatableNavElements","sheet","f7PreventSwipePanel","preventSwipePanelBySwipeBack","percentage","callbackData","currentPageEl","previousPageEl","currentNavbarEl","previousNavbarEl","currentPageTranslate","previousPageTranslate","swipeBackActive","$pages","timeDiff","pageChanged","removeAttr","setNavbarPosition","currentRoute","f7Page","currentPage","pageCallback","swipeBack","transitionEnd","saveHistory","stackPages","initialPages","removePage","removeNavbar","previousRoute","preloadPreviousPage","preload","attachEvents","redirect","direction","initial","redirectUrl","redirectOptions","processQueue","routeQueue","processRouteQueue","enterNextRoute","routesBeforeEnter","beforeEnter","routesBeforeLeave","beforeLeave","appRouterCheck","asyncComponent","resolvePromise","componentPromise","default","_default","asyncComponentResult","forward","forwardOptions","reloadCurrent","reloadPages","reloadPrevious","reloadAll","clearPreviousHistory","reloadDetail","masterDetailEnabled","isMaster","master","masterPageEl","otherDetailPageEl","modalType","detailsInBetweenRemoved","currentRouteIsModal","modal","modalLoadProp","modalToClose","modalInstance","previousUrl","findMatchingRoute","modalRemove","$viewEl","$newPage","reload","$oldPage","$newNavbarEl","$oldNavbarEl","removeThemeElements","$navbarEl","keepAlive","keepAliveData","pageEl","$pagesInView","pageInView","$navbarsInView","isDetail","isDetailRoot","navbarInView","newPagePosition","position","role","root","detailRoot","navbar","getElByPage","navbarEl","removedPageEls","removedNavbarEls","oldNavbarEl","browserHistoryRoot","browserHistorySeparator","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","initialPreload","currentIsMaster","backIndex","masterRoute","force","pageToRemove","$pageToRemove","$navbarToRemove","insertPage","$previousPages","loadBack","backParams","backOptions","Router","isAppRouter","routerId","scrollHistory","iosDynamicNavbar","initialNavbars","configurable","newRoute","tempDom","navbarsEl","animateIcon","newNavEls","oldNavEls","animatableNavEl","$navbarInner","needsOpacityTransition","$iconEl","isIconLabel","leftOffset","rightOffset","navEls","otherEls","otherNavEl","iconTextEl","offsetLeft","$newPageEl","animateCustom","routerCustomTransitionClass","onCustomTransitionDone","animationEnd","routerTransitionClass","toDifferent","oldIsLarge","newIsLarge","animateNavbars","setProperty","removeModal","removeEl","removeTabContent","tabEl","tabChild","removeElements","removeElementsWithTimeout","removeElementsTimeout","findElement","stringSelector","notStacked","$container","viewMainClass","flattenRoutes","flattenedRoutes","hasTabRoutes","tabs","mergedPathsRoutes","tabRoute","tRoute","concat","detailRoutes","detailRoute","dRoute","masterRoutePath","childRoute","cRoute","generateUrl","findRouteByKey","constructRouteUrl","toUrl","findTabRouteUrl","$tabEl","tabId","foundTabRouteUrl","matchingRoute","pathsToMatch","matched","alias","aliasPath","pathToMatch","keyObj","paramValue","replaceRequestUrlParams","compiledUrl","regExp","removeFromXhrCache","xhrCache","ignoreCache","hasQuery","passRouteQueryToRequest","passRouteParamsToRequest","xhrCacheIgnoreGetParameters","xhrCacheIgnore","cachedUrl","xhrCacheDuration","beforeSend","ariaHidden","toRemove","getPageData","pageFromEl","$pageEl","pageFrom","fromPage","$pageFromEl","page","restoreScrollTopOnBack","camelName","colonName","f7RouteEventsAttached","f7RouteEventsOn","f7RouteEventsOnce","$pageContent","pageContentEl","f7PageInitialized","browserHistoryStoreHistory","localStorage","restoreHistory","clearHistory","updateCurrentUrl","newUrl","getInitialUrl","initialUrl","historyRestored","URL","documentUrl","browserHistoryOnLoad","console","warn","iosSwipeBack","mdSwipeBack","auroraSwipeBack","browserHistoryAnimateOnLoad","browserHistoryInitialMatch","initUrl","loadInitialPage","modalOpen","pageAfterIn","hasTabRoute","initOptions","routerProp","navigateParams","navigateOptions","createRoute","navigateUrl","currentPath","viewName","anotherViewName","anotherView","openIn","ignoreOpenIn","routerLoaded","asyncResolve","resolveParams","resolveOptions","resolvedAsModal","modalRoute","modalLoad","asyncReject","pageLoadProp","preloadMaster","masterLoaded","refreshPage","parentPageEl","browserHistoryTabs","$parentPageEl","tabShowResult","show","$newTabEl","$oldTabEl","animated","onTabsChanged","tabParentPageData","f7RouterTabLoaded","loadTab","loadTabParams","loadTabOptions","contentEl","onTabLoaded","tabEventTarget","unloadTabContent","tabRemove","tabComponentLoader","tabContent","hasContentLoadProp","tabLoadProp","hasTabComponentChild","isPanel","modalOrPanel","modalParams","routeCallback","panelOpen","modalClose","panelClose","modalClosed","panelClosed","onModalLoaded","hasEl","closeOnSwipeBack","closeByRouter","modalComponent","loadModal","loadModalParams","loadModalOptions","modalComponentLoader","modalContent","foundLoadProp","prevOpenedModals","forceOtherUrl","isBrokenBrowserHistory","needHistoryBack","currentRouteWithoutBrowserHistory","skipMaster","$previousPage","$previousMaster","expectedPreviousPageUrl","expectedPreviousPageRoute","previousPageRoute","backForceLoaded","panel","clearPreviousPages","RouterModule","templates","resizableView","resizableInitialized","resizable","resizableWidth","$htmlEl","$resizeHandlerEl","minWidth","maxWidth","transformCSSWidth","v","newV","$pageMasterEl","newWidth","handleResize","View","viewParams","routesAdd","main","f7View","viewProp","wasMasterDetail","isMasterDetail","initMasterDetail","masterDetailResizable","viewEl","initRouterOnTabShow","ClicksModule","clicks","externalLinks","handleClicks","$clickedEl","$clickedLinkEl","isLink","InAppBrowser","Plugins","Browser","moduleClicks","preventF7Router","clickSelector","matchingClickedElement","clickedLinkData","clickedEl","current","linksView","ViewClass","f7RouteProps","initClicks","RouterComponentLoaderModule","popup","loginScreen","popover","side","effect","componentFunction","componentContext","f7route","f7router","componentProps","routeProps","componentRoot","createdComponent","cachedComponent","componentCache","cached","loadedComponent","parsedComponent","_temp2","_temp3","u","p","Map","ignoreChildren","$h","sel","elm","array","primitive","addNS","ns","childData","customComponents","SELF_CLOSING","PROPS_ATTRS","BOOLEAN_PROPS","getTagName","treeNode","toCamelCase","word","propsFromAttrs","isCustomComponent","treeNodeType","getHooks","isRoot","hooks","insert","update","postpatch","isFakeElement","tagName","isCustom","__component__","createCustomComponent","destroyCustomComponent","oldVnode","newProps","updateCustomComponent","class","vn","f","getChildren","nodes","childNode","treeNodeToVNode","isTreeNode","getSlots","slotName","slotNodes","childTreeNode","childSlotName","slot","subTreeNode","attrValue","prevent","eventNamePart","eventNameIndex","fired","getEventHandler","prepatch","getData","vdom","tree","htmlDomApi","namespaceURI","qualifiedName","createTextNode","createComment","newNode","referenceNode","node","setTextContent","getTextContent","isElement","isText","isUndef","isDef","emptyNode","vnode1","vnode2","createKeyToOldIdx","beginIdx","endIdx","ch","oldAttrs","cur","setAttributeNS","attributesModule","updateAttrs","oldProps","propsModule","updateProps","raf","setNextFrame","oldStyle","oldHasDel","removeProperty","delayed","name2","styleModule","updateStyle","rm","amount","applied","ev","invokeHandler","updateEvents","oldOn","oldListener","oldElm","patch","domApi","cbs","api","emptyNodeAt","childElm","listeners","parent_1","insertedVnodeQueue","hashIdx","dotIdx","dot","tag","createElm","parentElm","vnodes","startIdx","invokeDestroyHook","removeVnodes","i_1","createRmCb","patchVnode","oldCh","newCh","oldStartIdx","oldKeyToIdx","idxInOld","elmToMove","newStartIdx","oldEndIdx","oldStartVnode","oldEndVnode","newEndIdx","newStartVnode","newEndVnode","sameVnode","addVnodes","updateChildren","pre","isVnode","Component","generateId","md","aurora","__updateQueue","__eventHandlers","__onceEventHandlers","__onBeforeMount","__onMounted","__onBeforeUpdate","__onUpdated","__onBeforeUnmount","__onUnmounted","createComponent","getComponentContext","componentResult","getRenderFuncion","renderFunction","getComponentRef","getComponentStore","_gettersPlain","dispatch","$store","getters","Proxy","onUpdated","includeHooks","ctx","$f7route","$f7router","$id","$f7","$f7ready","f7ready","$theme","$tick","tick","$update","$emit","$ref","$on","$once","$onBeforeMount","$onMounted","$onBeforeUpdate","$onUpdated","$onBeforeUnmount","$onUnmounted","_ref2","detachEvents","_ref3","_ref4","startUpdateQueue","__requestAnimationFrameId","newVNode","__updateIsPending","resolvers","resolver","__destroyed","setState","mountMethod","registerComponent","unregisterComponent","ComponentModule","componentString","componentId","callbackCreateName","template","item","scripts","parseComponent","HistoryModule","SW","registrations","register","scope","serviceWorker","reg","unregister","registration","ServiceWorkerModule","storeParams","originalState","actions","propsQueue","gettersDependencies","gettersCallbacks","getterKey","getGetterValue","addGetterCallback","__removeCallback","stateKey","callbacks","removeGetterCallback","getterValue","addCallback","deps","dep","addGetterDependencies","__callback","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","iosSwipeBackAnimateShadow","iosSwipeBackAnimateOpacity","iosSwipeBackActiveArea","iosSwipeBackThreshold","mdSwipeBackAnimateShadow","mdSwipeBackAnimateOpacity","mdSwipeBackActiveArea","mdSwipeBackThreshold","auroraSwipeBackAnimateShadow","auroraSwipeBackAnimateOpacity","auroraSwipeBackActiveArea","auroraSwipeBackThreshold","iosPageLoadDelay","mdPageLoadDelay","auroraPageLoadDelay","$popoverView","$popupView","$panelView","$viewsEl","getCurrentView","Navbar","size","$innerEl","needCenterTitle","needLeftTitle","iosCenterTitle","right","title","subnavbar","noLeft","noRight","leftWidth","outerWidth","rightWidth","titleWidth","navbarStyles","navbarInnerWidth","paddingLeft","paddingRight","isPrevious","sliding","currLeft","diff","requiredLeft","titleLeftOffset","titleRightOffset","activeNavbarBackLink","titleLeft","hideStatusbar","hideOnlyCurrent","isDynamic","subEl","pageData","getPageByEl","collapseLargeTitle","expandLargeTitle","toggleLargeTitle","initNavbarOnScroll","needHide","needCollapse","needTransparent","$titleLargeEl","isLarge","navbarHideHeight","snapPageScrollToLargeTitle","snapPageScrollToTransparentNavbar","previousScrollTop","currentScrollTop","reachEnd","navbarHidden","navbarCollapsed","navbarTitleLargeHeight","navbarOffsetHeight","scrollChanged","scrollContent","scrollTimeoutId","touchEndTimeoutId","calcScrollableDistance","f7ScrollableDistance","snapLargeNavbar","snapTransparentNavbar","previousCollapseProgress","collapseProgress","handleScroll","handleLargeNavbarCollapse","isLargeTransparent","scrollableDistance","previousCollapseWasInMiddle","isHidden","inSearchbarExpanded","notTransparent","handleNavbarTransparent","showOnPageScrollEnd","showOnPageScrollTop","handeTouchStart","f7DetachNavbarScrollHandlers","Navbar$1","scrollTopOnTitleClick","mdCenterTitle","auroraCenterTitle","hideOnPageScroll","collapseLargeTitleOnScroll","pageBeforeRemove","pageBeforeIn","pageReinit","pageInit","needCollapseOnScrollHandler","needTransparentOnScroll","needHideOnScrollHandler","tabShow","clickedData","$pageContentEl","Toolbar","setHighlight","tabbarEl","$tabbarEl","$highlightEl","tabLinksCount","$activeLink","highlightWidth","highlightTranslate","activeIndex","toolbar","initToolbarOnScroll","$toolbarEl","toolbarHidden","f7ScrollToolbarHandler","Toolbar$1","tabbar","Subnavbar","subnavbarEl","TouchRipple","ripple","center","diameter","isInset","insetElements","rippleTransform","distanceFromCenter","scale","$rippleWaveEl","shouldBeRemoved","out","removeTimeout","openedModals","dialogsQueue","Modal","opened","$containerEl","containerEl","onOpen","onOpened","onClose","onClosed","backdrop","backdropUnique","forceBackdropUnique","$backdropEl","animateModal","queueDialogs","pushToQueue","openedModal","$modalParentEl","wasInDom","needToHideBackdrop","popupEl","popupInstance","closeByBackdropClick","backdropEl","clearDialogsQueue","destroyed","CustomModal","extendedParams","customModal"],"mappings":"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","file":"framework7.min.js","sourcesContent":["/**\n * SSR Window 4.0.2\n * Better handling for window object in SSR environment\n * https://github.com/nolimits4web/ssr-window\n *\n * Copyright 2021, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: December 13, 2021\n */\n/* eslint-disable no-param-reassign */\nfunction isObject(obj) {\n return (obj !== null &&\n typeof obj === 'object' &&\n 'constructor' in obj &&\n obj.constructor === Object);\n}\nfunction extend(target = {}, src = {}) {\n Object.keys(src).forEach((key) => {\n if (typeof target[key] === 'undefined')\n target[key] = src[key];\n else if (isObject(src[key]) &&\n isObject(target[key]) &&\n Object.keys(src[key]).length > 0) {\n extend(target[key], src[key]);\n }\n });\n}\n\nconst ssrDocument = {\n body: {},\n addEventListener() { },\n removeEventListener() { },\n activeElement: {\n blur() { },\n nodeName: '',\n },\n querySelector() {\n return null;\n },\n querySelectorAll() {\n return [];\n },\n getElementById() {\n return null;\n },\n createEvent() {\n return {\n initEvent() { },\n };\n },\n createElement() {\n return {\n children: [],\n childNodes: [],\n style: {},\n setAttribute() { },\n getElementsByTagName() {\n return [];\n },\n };\n },\n createElementNS() {\n return {};\n },\n importNode() {\n return null;\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: '',\n },\n};\nfunction getDocument() {\n const doc = typeof document !== 'undefined' ? document : {};\n extend(doc, ssrDocument);\n return doc;\n}\n\nconst ssrWindow = {\n document: ssrDocument,\n navigator: {\n userAgent: '',\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: '',\n },\n history: {\n replaceState() { },\n pushState() { },\n go() { },\n back() { },\n },\n CustomEvent: function CustomEvent() {\n return this;\n },\n addEventListener() { },\n removeEventListener() { },\n getComputedStyle() {\n return {\n getPropertyValue() {\n return '';\n },\n };\n },\n Image() { },\n Date() { },\n screen: {},\n setTimeout() { },\n clearTimeout() { },\n matchMedia() {\n return {};\n },\n requestAnimationFrame(callback) {\n if (typeof setTimeout === 'undefined') {\n callback();\n return null;\n }\n return setTimeout(callback, 0);\n },\n cancelAnimationFrame(id) {\n if (typeof setTimeout === 'undefined') {\n return;\n }\n clearTimeout(id);\n },\n};\nfunction getWindow() {\n const win = typeof window !== 'undefined' ? window : {};\n extend(win, ssrWindow);\n return win;\n}\n\nexport { extend, getDocument, getWindow, ssrDocument, ssrWindow };\n","/**\n * Dom7 4.0.4\n * Minimalistic JavaScript library for DOM manipulation, with a jQuery-compatible API\n * https://framework7.io/docs/dom7.html\n *\n * Copyright 2022, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: January 11, 2022\n */\nimport { getWindow, getDocument } from 'ssr-window';\n\n/* eslint-disable no-proto */\nfunction makeReactive(obj) {\n const proto = obj.__proto__;\n Object.defineProperty(obj, '__proto__', {\n get() {\n return proto;\n },\n\n set(value) {\n proto.__proto__ = value;\n }\n\n });\n}\n\nclass Dom7 extends Array {\n constructor(items) {\n if (typeof items === 'number') {\n super(items);\n } else {\n super(...(items || []));\n makeReactive(this);\n }\n }\n\n}\n\nfunction arrayFlat(arr = []) {\n const res = [];\n arr.forEach(el => {\n if (Array.isArray(el)) {\n res.push(...arrayFlat(el));\n } else {\n res.push(el);\n }\n });\n return res;\n}\nfunction arrayFilter(arr, callback) {\n return Array.prototype.filter.call(arr, callback);\n}\nfunction arrayUnique(arr) {\n const uniqueArray = [];\n\n for (let i = 0; i < arr.length; i += 1) {\n if (uniqueArray.indexOf(arr[i]) === -1) uniqueArray.push(arr[i]);\n }\n\n return uniqueArray;\n}\nfunction toCamelCase(string) {\n return string.toLowerCase().replace(/-(.)/g, (match, group) => group.toUpperCase());\n}\n\n// eslint-disable-next-line\n\nfunction qsa(selector, context) {\n if (typeof selector !== 'string') {\n return [selector];\n }\n\n const a = [];\n const res = context.querySelectorAll(selector);\n\n for (let i = 0; i < res.length; i += 1) {\n a.push(res[i]);\n }\n\n return a;\n}\n\nfunction $(selector, context) {\n const window = getWindow();\n const document = getDocument();\n let arr = [];\n\n if (!context && selector instanceof Dom7) {\n return selector;\n }\n\n if (!selector) {\n return new Dom7(arr);\n }\n\n if (typeof selector === 'string') {\n const html = selector.trim();\n\n if (html.indexOf('<') >= 0 && html.indexOf('>') >= 0) {\n let toCreate = 'div';\n if (html.indexOf('<li') === 0) toCreate = 'ul';\n if (html.indexOf('<tr') === 0) toCreate = 'tbody';\n if (html.indexOf('<td') === 0 || html.indexOf('<th') === 0) toCreate = 'tr';\n if (html.indexOf('<tbody') === 0) toCreate = 'table';\n if (html.indexOf('<option') === 0) toCreate = 'select';\n const tempParent = document.createElement(toCreate);\n tempParent.innerHTML = html;\n\n for (let i = 0; i < tempParent.childNodes.length; i += 1) {\n arr.push(tempParent.childNodes[i]);\n }\n } else {\n arr = qsa(selector.trim(), context || document);\n } // arr = qsa(selector, document);\n\n } else if (selector.nodeType || selector === window || selector === document) {\n arr.push(selector);\n } else if (Array.isArray(selector)) {\n if (selector instanceof Dom7) return selector;\n arr = selector;\n }\n\n return new Dom7(arrayUnique(arr));\n}\n\n$.fn = Dom7.prototype;\n\n// eslint-disable-next-line\n\nfunction addClass(...classes) {\n const classNames = arrayFlat(classes.map(c => c.split(' ')));\n this.forEach(el => {\n el.classList.add(...classNames);\n });\n return this;\n}\n\nfunction removeClass(...classes) {\n const classNames = arrayFlat(classes.map(c => c.split(' ')));\n this.forEach(el => {\n el.classList.remove(...classNames);\n });\n return this;\n}\n\nfunction toggleClass(...classes) {\n const classNames = arrayFlat(classes.map(c => c.split(' ')));\n this.forEach(el => {\n classNames.forEach(className => {\n el.classList.toggle(className);\n });\n });\n}\n\nfunction hasClass(...classes) {\n const classNames = arrayFlat(classes.map(c => c.split(' ')));\n return arrayFilter(this, el => {\n return classNames.filter(className => el.classList.contains(className)).length > 0;\n }).length > 0;\n}\n\nfunction attr(attrs, value) {\n if (arguments.length === 1 && typeof attrs === 'string') {\n // Get attr\n if (this[0]) return this[0].getAttribute(attrs);\n return undefined;\n } // Set attrs\n\n\n for (let i = 0; i < this.length; i += 1) {\n if (arguments.length === 2) {\n // String\n this[i].setAttribute(attrs, value);\n } else {\n // Object\n for (const attrName in attrs) {\n this[i][attrName] = attrs[attrName];\n this[i].setAttribute(attrName, attrs[attrName]);\n }\n }\n }\n\n return this;\n}\n\nfunction removeAttr(attr) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].removeAttribute(attr);\n }\n\n return this;\n}\n\nfunction prop(props, value) {\n if (arguments.length === 1 && typeof props === 'string') {\n // Get prop\n if (this[0]) return this[0][props];\n } else {\n // Set props\n for (let i = 0; i < this.length; i += 1) {\n if (arguments.length === 2) {\n // String\n this[i][props] = value;\n } else {\n // Object\n for (const propName in props) {\n this[i][propName] = props[propName];\n }\n }\n }\n\n return this;\n }\n\n return this;\n}\n\nfunction data(key, value) {\n let el;\n\n if (typeof value === 'undefined') {\n el = this[0];\n if (!el) return undefined; // Get value\n\n if (el.dom7ElementDataStorage && key in el.dom7ElementDataStorage) {\n return el.dom7ElementDataStorage[key];\n }\n\n const dataKey = el.getAttribute(`data-${key}`);\n\n if (dataKey) {\n return dataKey;\n }\n\n return undefined;\n } // Set value\n\n\n for (let i = 0; i < this.length; i += 1) {\n el = this[i];\n if (!el.dom7ElementDataStorage) el.dom7ElementDataStorage = {};\n el.dom7ElementDataStorage[key] = value;\n }\n\n return this;\n}\n\nfunction removeData(key) {\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (el.dom7ElementDataStorage && el.dom7ElementDataStorage[key]) {\n el.dom7ElementDataStorage[key] = null;\n delete el.dom7ElementDataStorage[key];\n }\n }\n}\n\nfunction dataset() {\n const el = this[0];\n if (!el) return undefined;\n const dataset = {}; // eslint-disable-line\n\n if (el.dataset) {\n for (const dataKey in el.dataset) {\n dataset[dataKey] = el.dataset[dataKey];\n }\n } else {\n for (let i = 0; i < el.attributes.length; i += 1) {\n const attr = el.attributes[i];\n\n if (attr.name.indexOf('data-') >= 0) {\n dataset[toCamelCase(attr.name.split('data-')[1])] = attr.value;\n }\n }\n }\n\n for (const key in dataset) {\n if (dataset[key] === 'false') dataset[key] = false;else if (dataset[key] === 'true') dataset[key] = true;else if (parseFloat(dataset[key]) === dataset[key] * 1) dataset[key] *= 1;\n }\n\n return dataset;\n}\n\nfunction val(value) {\n if (typeof value === 'undefined') {\n // get value\n const el = this[0];\n if (!el) return undefined;\n\n if (el.multiple && el.nodeName.toLowerCase() === 'select') {\n const values = [];\n\n for (let i = 0; i < el.selectedOptions.length; i += 1) {\n values.push(el.selectedOptions[i].value);\n }\n\n return values;\n }\n\n return el.value;\n } // set value\n\n\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (Array.isArray(value) && el.multiple && el.nodeName.toLowerCase() === 'select') {\n for (let j = 0; j < el.options.length; j += 1) {\n el.options[j].selected = value.indexOf(el.options[j].value) >= 0;\n }\n } else {\n el.value = value;\n }\n }\n\n return this;\n}\n\nfunction value(value) {\n return this.val(value);\n}\n\nfunction transform(transform) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.transform = transform;\n }\n\n return this;\n}\n\nfunction transition(duration) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.transitionDuration = typeof duration !== 'string' ? `${duration}ms` : duration;\n }\n\n return this;\n}\n\nfunction on(...args) {\n let [eventType, targetSelector, listener, capture] = args;\n\n if (typeof args[1] === 'function') {\n [eventType, listener, capture] = args;\n targetSelector = undefined;\n }\n\n if (!capture) capture = false;\n\n function handleLiveEvent(e) {\n const target = e.target;\n if (!target) return;\n const eventData = e.target.dom7EventData || [];\n\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n\n if ($(target).is(targetSelector)) listener.apply(target, eventData);else {\n const parents = $(target).parents(); // eslint-disable-line\n\n for (let k = 0; k < parents.length; k += 1) {\n if ($(parents[k]).is(targetSelector)) listener.apply(parents[k], eventData);\n }\n }\n }\n\n function handleEvent(e) {\n const eventData = e && e.target ? e.target.dom7EventData || [] : [];\n\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n\n listener.apply(this, eventData);\n }\n\n const events = eventType.split(' ');\n let j;\n\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (!targetSelector) {\n for (j = 0; j < events.length; j += 1) {\n const event = events[j];\n if (!el.dom7Listeners) el.dom7Listeners = {};\n if (!el.dom7Listeners[event]) el.dom7Listeners[event] = [];\n el.dom7Listeners[event].push({\n listener,\n proxyListener: handleEvent\n });\n el.addEventListener(event, handleEvent, capture);\n }\n } else {\n // Live events\n for (j = 0; j < events.length; j += 1) {\n const event = events[j];\n if (!el.dom7LiveListeners) el.dom7LiveListeners = {};\n if (!el.dom7LiveListeners[event]) el.dom7LiveListeners[event] = [];\n el.dom7LiveListeners[event].push({\n listener,\n proxyListener: handleLiveEvent\n });\n el.addEventListener(event, handleLiveEvent, capture);\n }\n }\n }\n\n return this;\n}\n\nfunction off(...args) {\n let [eventType, targetSelector, listener, capture] = args;\n\n if (typeof args[1] === 'function') {\n [eventType, listener, capture] = args;\n targetSelector = undefined;\n }\n\n if (!capture) capture = false;\n const events = eventType.split(' ');\n\n for (let i = 0; i < events.length; i += 1) {\n const event = events[i];\n\n for (let j = 0; j < this.length; j += 1) {\n const el = this[j];\n let handlers;\n\n if (!targetSelector && el.dom7Listeners) {\n handlers = el.dom7Listeners[event];\n } else if (targetSelector && el.dom7LiveListeners) {\n handlers = el.dom7LiveListeners[event];\n }\n\n if (handlers && handlers.length) {\n for (let k = handlers.length - 1; k >= 0; k -= 1) {\n const handler = handlers[k];\n\n if (listener && handler.listener === listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n } else if (listener && handler.listener && handler.listener.dom7proxy && handler.listener.dom7proxy === listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n } else if (!listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n }\n }\n }\n }\n }\n\n return this;\n}\n\nfunction once(...args) {\n const dom = this;\n let [eventName, targetSelector, listener, capture] = args;\n\n if (typeof args[1] === 'function') {\n [eventName, listener, capture] = args;\n targetSelector = undefined;\n }\n\n function onceHandler(...eventArgs) {\n listener.apply(this, eventArgs);\n dom.off(eventName, targetSelector, onceHandler, capture);\n\n if (onceHandler.dom7proxy) {\n delete onceHandler.dom7proxy;\n }\n }\n\n onceHandler.dom7proxy = listener;\n return dom.on(eventName, targetSelector, onceHandler, capture);\n}\n\nfunction trigger(...args) {\n const window = getWindow();\n const events = args[0].split(' ');\n const eventData = args[1];\n\n for (let i = 0; i < events.length; i += 1) {\n const event = events[i];\n\n for (let j = 0; j < this.length; j += 1) {\n const el = this[j];\n\n if (window.CustomEvent) {\n const evt = new window.CustomEvent(event, {\n detail: eventData,\n bubbles: true,\n cancelable: true\n });\n el.dom7EventData = args.filter((data, dataIndex) => dataIndex > 0);\n el.dispatchEvent(evt);\n el.dom7EventData = [];\n delete el.dom7EventData;\n }\n }\n }\n\n return this;\n}\n\nfunction transitionEnd(callback) {\n const dom = this;\n\n function fireCallBack(e) {\n if (e.target !== this) return;\n callback.call(this, e);\n dom.off('transitionend', fireCallBack);\n }\n\n if (callback) {\n dom.on('transitionend', fireCallBack);\n }\n\n return this;\n}\n\nfunction animationEnd(callback) {\n const dom = this;\n\n function fireCallBack(e) {\n if (e.target !== this) return;\n callback.call(this, e);\n dom.off('animationend', fireCallBack);\n }\n\n if (callback) {\n dom.on('animationend', fireCallBack);\n }\n\n return this;\n}\n\nfunction width() {\n const window = getWindow();\n\n if (this[0] === window) {\n return window.innerWidth;\n }\n\n if (this.length > 0) {\n return parseFloat(this.css('width'));\n }\n\n return null;\n}\n\nfunction outerWidth(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n const styles = this.styles();\n return this[0].offsetWidth + parseFloat(styles.getPropertyValue('margin-right')) + parseFloat(styles.getPropertyValue('margin-left'));\n }\n\n return this[0].offsetWidth;\n }\n\n return null;\n}\n\nfunction height() {\n const window = getWindow();\n\n if (this[0] === window) {\n return window.innerHeight;\n }\n\n if (this.length > 0) {\n return parseFloat(this.css('height'));\n }\n\n return null;\n}\n\nfunction outerHeight(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n const styles = this.styles();\n return this[0].offsetHeight + parseFloat(styles.getPropertyValue('margin-top')) + parseFloat(styles.getPropertyValue('margin-bottom'));\n }\n\n return this[0].offsetHeight;\n }\n\n return null;\n}\n\nfunction offset() {\n if (this.length > 0) {\n const window = getWindow();\n const document = getDocument();\n const el = this[0];\n const box = el.getBoundingClientRect();\n const body = document.body;\n const clientTop = el.clientTop || body.clientTop || 0;\n const clientLeft = el.clientLeft || body.clientLeft || 0;\n const scrollTop = el === window ? window.scrollY : el.scrollTop;\n const scrollLeft = el === window ? window.scrollX : el.scrollLeft;\n return {\n top: box.top + scrollTop - clientTop,\n left: box.left + scrollLeft - clientLeft\n };\n }\n\n return null;\n}\n\nfunction hide() {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.display = 'none';\n }\n\n return this;\n}\n\nfunction show() {\n const window = getWindow();\n\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (el.style.display === 'none') {\n el.style.display = '';\n }\n\n if (window.getComputedStyle(el, null).getPropertyValue('display') === 'none') {\n // Still not visible\n el.style.display = 'block';\n }\n }\n\n return this;\n}\n\nfunction styles() {\n const window = getWindow();\n if (this[0]) return window.getComputedStyle(this[0], null);\n return {};\n}\n\nfunction css(props, value) {\n const window = getWindow();\n let i;\n\n if (arguments.length === 1) {\n if (typeof props === 'string') {\n // .css('width')\n if (this[0]) return window.getComputedStyle(this[0], null).getPropertyValue(props);\n } else {\n // .css({ width: '100px' })\n for (i = 0; i < this.length; i += 1) {\n for (const prop in props) {\n this[i].style[prop] = props[prop];\n }\n }\n\n return this;\n }\n }\n\n if (arguments.length === 2 && typeof props === 'string') {\n // .css('width', '100px')\n for (i = 0; i < this.length; i += 1) {\n this[i].style[props] = value;\n }\n\n return this;\n }\n\n return this;\n}\n\nfunction each(callback) {\n if (!callback) return this;\n this.forEach((el, index) => {\n callback.apply(el, [el, index]);\n });\n return this;\n}\n\nfunction filter(callback) {\n const result = arrayFilter(this, callback);\n return $(result);\n}\n\nfunction html(html) {\n if (typeof html === 'undefined') {\n return this[0] ? this[0].innerHTML : null;\n }\n\n for (let i = 0; i < this.length; i += 1) {\n this[i].innerHTML = html;\n }\n\n return this;\n}\n\nfunction text(text) {\n if (typeof text === 'undefined') {\n return this[0] ? this[0].textContent.trim() : null;\n }\n\n for (let i = 0; i < this.length; i += 1) {\n this[i].textContent = text;\n }\n\n return this;\n}\n\nfunction is(selector) {\n const window = getWindow();\n const document = getDocument();\n const el = this[0];\n let compareWith;\n let i;\n if (!el || typeof selector === 'undefined') return false;\n\n if (typeof selector === 'string') {\n if (el.matches) return el.matches(selector);\n if (el.webkitMatchesSelector) return el.webkitMatchesSelector(selector);\n if (el.msMatchesSelector) return el.msMatchesSelector(selector);\n compareWith = $(selector);\n\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) return true;\n }\n\n return false;\n }\n\n if (selector === document) {\n return el === document;\n }\n\n if (selector === window) {\n return el === window;\n }\n\n if (selector.nodeType || selector instanceof Dom7) {\n compareWith = selector.nodeType ? [selector] : selector;\n\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) return true;\n }\n\n return false;\n }\n\n return false;\n}\n\nfunction index() {\n let child = this[0];\n let i;\n\n if (child) {\n i = 0; // eslint-disable-next-line\n\n while ((child = child.previousSibling) !== null) {\n if (child.nodeType === 1) i += 1;\n }\n\n return i;\n }\n\n return undefined;\n}\n\nfunction eq(index) {\n if (typeof index === 'undefined') return this;\n const length = this.length;\n\n if (index > length - 1) {\n return $([]);\n }\n\n if (index < 0) {\n const returnIndex = length + index;\n if (returnIndex < 0) return $([]);\n return $([this[returnIndex]]);\n }\n\n return $([this[index]]);\n}\n\nfunction append(...els) {\n let newChild;\n const document = getDocument();\n\n for (let k = 0; k < els.length; k += 1) {\n newChild = els[k];\n\n for (let i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n const tempDiv = document.createElement('div');\n tempDiv.innerHTML = newChild;\n\n while (tempDiv.firstChild) {\n this[i].appendChild(tempDiv.firstChild);\n }\n } else if (newChild instanceof Dom7) {\n for (let j = 0; j < newChild.length; j += 1) {\n this[i].appendChild(newChild[j]);\n }\n } else {\n this[i].appendChild(newChild);\n }\n }\n }\n\n return this;\n}\n\nfunction appendTo(parent) {\n $(parent).append(this);\n return this;\n}\n\nfunction prepend(newChild) {\n const document = getDocument();\n let i;\n let j;\n\n for (i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n const tempDiv = document.createElement('div');\n tempDiv.innerHTML = newChild;\n\n for (j = tempDiv.childNodes.length - 1; j >= 0; j -= 1) {\n this[i].insertBefore(tempDiv.childNodes[j], this[i].childNodes[0]);\n }\n } else if (newChild instanceof Dom7) {\n for (j = 0; j < newChild.length; j += 1) {\n this[i].insertBefore(newChild[j], this[i].childNodes[0]);\n }\n } else {\n this[i].insertBefore(newChild, this[i].childNodes[0]);\n }\n }\n\n return this;\n}\n\nfunction prependTo(parent) {\n $(parent).prepend(this);\n return this;\n}\n\nfunction insertBefore(selector) {\n const before = $(selector);\n\n for (let i = 0; i < this.length; i += 1) {\n if (before.length === 1) {\n before[0].parentNode.insertBefore(this[i], before[0]);\n } else if (before.length > 1) {\n for (let j = 0; j < before.length; j += 1) {\n before[j].parentNode.insertBefore(this[i].cloneNode(true), before[j]);\n }\n }\n }\n}\n\nfunction insertAfter(selector) {\n const after = $(selector);\n\n for (let i = 0; i < this.length; i += 1) {\n if (after.length === 1) {\n after[0].parentNode.insertBefore(this[i], after[0].nextSibling);\n } else if (after.length > 1) {\n for (let j = 0; j < after.length; j += 1) {\n after[j].parentNode.insertBefore(this[i].cloneNode(true), after[j].nextSibling);\n }\n }\n }\n}\n\nfunction next(selector) {\n if (this.length > 0) {\n if (selector) {\n if (this[0].nextElementSibling && $(this[0].nextElementSibling).is(selector)) {\n return $([this[0].nextElementSibling]);\n }\n\n return $([]);\n }\n\n if (this[0].nextElementSibling) return $([this[0].nextElementSibling]);\n return $([]);\n }\n\n return $([]);\n}\n\nfunction nextAll(selector) {\n const nextEls = [];\n let el = this[0];\n if (!el) return $([]);\n\n while (el.nextElementSibling) {\n const next = el.nextElementSibling; // eslint-disable-line\n\n if (selector) {\n if ($(next).is(selector)) nextEls.push(next);\n } else nextEls.push(next);\n\n el = next;\n }\n\n return $(nextEls);\n}\n\nfunction prev(selector) {\n if (this.length > 0) {\n const el = this[0];\n\n if (selector) {\n if (el.previousElementSibling && $(el.previousElementSibling).is(selector)) {\n return $([el.previousElementSibling]);\n }\n\n return $([]);\n }\n\n if (el.previousElementSibling) return $([el.previousElementSibling]);\n return $([]);\n }\n\n return $([]);\n}\n\nfunction prevAll(selector) {\n const prevEls = [];\n let el = this[0];\n if (!el) return $([]);\n\n while (el.previousElementSibling) {\n const prev = el.previousElementSibling; // eslint-disable-line\n\n if (selector) {\n if ($(prev).is(selector)) prevEls.push(prev);\n } else prevEls.push(prev);\n\n el = prev;\n }\n\n return $(prevEls);\n}\n\nfunction siblings(selector) {\n return this.nextAll(selector).add(this.prevAll(selector));\n}\n\nfunction parent(selector) {\n const parents = []; // eslint-disable-line\n\n for (let i = 0; i < this.length; i += 1) {\n if (this[i].parentNode !== null) {\n if (selector) {\n if ($(this[i].parentNode).is(selector)) parents.push(this[i].parentNode);\n } else {\n parents.push(this[i].parentNode);\n }\n }\n }\n\n return $(parents);\n}\n\nfunction parents(selector) {\n const parents = []; // eslint-disable-line\n\n for (let i = 0; i < this.length; i += 1) {\n let parent = this[i].parentNode; // eslint-disable-line\n\n while (parent) {\n if (selector) {\n if ($(parent).is(selector)) parents.push(parent);\n } else {\n parents.push(parent);\n }\n\n parent = parent.parentNode;\n }\n }\n\n return $(parents);\n}\n\nfunction closest(selector) {\n let closest = this; // eslint-disable-line\n\n if (typeof selector === 'undefined') {\n return $([]);\n }\n\n if (!closest.is(selector)) {\n closest = closest.parents(selector).eq(0);\n }\n\n return closest;\n}\n\nfunction find(selector) {\n const foundElements = [];\n\n for (let i = 0; i < this.length; i += 1) {\n const found = this[i].querySelectorAll(selector);\n\n for (let j = 0; j < found.length; j += 1) {\n foundElements.push(found[j]);\n }\n }\n\n return $(foundElements);\n}\n\nfunction children(selector) {\n const children = []; // eslint-disable-line\n\n for (let i = 0; i < this.length; i += 1) {\n const childNodes = this[i].children;\n\n for (let j = 0; j < childNodes.length; j += 1) {\n if (!selector || $(childNodes[j]).is(selector)) {\n children.push(childNodes[j]);\n }\n }\n }\n\n return $(children);\n}\n\nfunction remove() {\n for (let i = 0; i < this.length; i += 1) {\n if (this[i].parentNode) this[i].parentNode.removeChild(this[i]);\n }\n\n return this;\n}\n\nfunction detach() {\n return this.remove();\n}\n\nfunction add(...els) {\n const dom = this;\n let i;\n let j;\n\n for (i = 0; i < els.length; i += 1) {\n const toAdd = $(els[i]);\n\n for (j = 0; j < toAdd.length; j += 1) {\n dom.push(toAdd[j]);\n }\n }\n\n return dom;\n}\n\nfunction empty() {\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (el.nodeType === 1) {\n for (let j = 0; j < el.childNodes.length; j += 1) {\n if (el.childNodes[j].parentNode) {\n el.childNodes[j].parentNode.removeChild(el.childNodes[j]);\n }\n }\n\n el.textContent = '';\n }\n }\n\n return this;\n}\n\n// eslint-disable-next-line\n\nfunction scrollTo(...args) {\n const window = getWindow();\n let [left, top, duration, easing, callback] = args;\n\n if (args.length === 4 && typeof easing === 'function') {\n callback = easing;\n [left, top, duration, callback, easing] = args;\n }\n\n if (typeof easing === 'undefined') easing = 'swing';\n return this.each(function animate() {\n const el = this;\n let currentTop;\n let currentLeft;\n let maxTop;\n let maxLeft;\n let newTop;\n let newLeft;\n let scrollTop; // eslint-disable-line\n\n let scrollLeft; // eslint-disable-line\n\n let animateTop = top > 0 || top === 0;\n let animateLeft = left > 0 || left === 0;\n\n if (typeof easing === 'undefined') {\n easing = 'swing';\n }\n\n if (animateTop) {\n currentTop = el.scrollTop;\n\n if (!duration) {\n el.scrollTop = top;\n }\n }\n\n if (animateLeft) {\n currentLeft = el.scrollLeft;\n\n if (!duration) {\n el.scrollLeft = left;\n }\n }\n\n if (!duration) return;\n\n if (animateTop) {\n maxTop = el.scrollHeight - el.offsetHeight;\n newTop = Math.max(Math.min(top, maxTop), 0);\n }\n\n if (animateLeft) {\n maxLeft = el.scrollWidth - el.offsetWidth;\n newLeft = Math.max(Math.min(left, maxLeft), 0);\n }\n\n let startTime = null;\n if (animateTop && newTop === currentTop) animateTop = false;\n if (animateLeft && newLeft === currentLeft) animateLeft = false;\n\n function render(time = new Date().getTime()) {\n if (startTime === null) {\n startTime = time;\n }\n\n const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n const easeProgress = easing === 'linear' ? progress : 0.5 - Math.cos(progress * Math.PI) / 2;\n let done;\n if (animateTop) scrollTop = currentTop + easeProgress * (newTop - currentTop);\n if (animateLeft) scrollLeft = currentLeft + easeProgress * (newLeft - currentLeft);\n\n if (animateTop && newTop > currentTop && scrollTop >= newTop) {\n el.scrollTop = newTop;\n done = true;\n }\n\n if (animateTop && newTop < currentTop && scrollTop <= newTop) {\n el.scrollTop = newTop;\n done = true;\n }\n\n if (animateLeft && newLeft > currentLeft && scrollLeft >= newLeft) {\n el.scrollLeft = newLeft;\n done = true;\n }\n\n if (animateLeft && newLeft < currentLeft && scrollLeft <= newLeft) {\n el.scrollLeft = newLeft;\n done = true;\n }\n\n if (done) {\n if (callback) callback();\n return;\n }\n\n if (animateTop) el.scrollTop = scrollTop;\n if (animateLeft) el.scrollLeft = scrollLeft;\n window.requestAnimationFrame(render);\n }\n\n window.requestAnimationFrame(render);\n });\n} // scrollTop(top, duration, easing, callback) {\n\n\nfunction scrollTop(...args) {\n let [top, duration, easing, callback] = args;\n\n if (args.length === 3 && typeof easing === 'function') {\n [top, duration, callback, easing] = args;\n }\n\n const dom = this;\n\n if (typeof top === 'undefined') {\n if (dom.length > 0) return dom[0].scrollTop;\n return null;\n }\n\n return dom.scrollTo(undefined, top, duration, easing, callback);\n}\n\nfunction scrollLeft(...args) {\n let [left, duration, easing, callback] = args;\n\n if (args.length === 3 && typeof easing === 'function') {\n [left, duration, callback, easing] = args;\n }\n\n const dom = this;\n\n if (typeof left === 'undefined') {\n if (dom.length > 0) return dom[0].scrollLeft;\n return null;\n }\n\n return dom.scrollTo(left, undefined, duration, easing, callback);\n}\n\n// eslint-disable-next-line\n\nfunction animate(initialProps, initialParams) {\n const window = getWindow();\n const els = this;\n const a = {\n props: Object.assign({}, initialProps),\n params: Object.assign({\n duration: 300,\n easing: 'swing' // or 'linear'\n\n /* Callbacks\n begin(elements)\n complete(elements)\n progress(elements, complete, remaining, start, tweenValue)\n */\n\n }, initialParams),\n elements: els,\n animating: false,\n que: [],\n\n easingProgress(easing, progress) {\n if (easing === 'swing') {\n return 0.5 - Math.cos(progress * Math.PI) / 2;\n }\n\n if (typeof easing === 'function') {\n return easing(progress);\n }\n\n return progress;\n },\n\n stop() {\n if (a.frameId) {\n window.cancelAnimationFrame(a.frameId);\n }\n\n a.animating = false;\n a.elements.each(el => {\n const element = el;\n delete element.dom7AnimateInstance;\n });\n a.que = [];\n },\n\n done(complete) {\n a.animating = false;\n a.elements.each(el => {\n const element = el;\n delete element.dom7AnimateInstance;\n });\n if (complete) complete(els);\n\n if (a.que.length > 0) {\n const que = a.que.shift();\n a.animate(que[0], que[1]);\n }\n },\n\n animate(props, params) {\n if (a.animating) {\n a.que.push([props, params]);\n return a;\n }\n\n const elements = []; // Define & Cache Initials & Units\n\n a.elements.each((el, index) => {\n let initialFullValue;\n let initialValue;\n let unit;\n let finalValue;\n let finalFullValue;\n if (!el.dom7AnimateInstance) a.elements[index].dom7AnimateInstance = a;\n elements[index] = {\n container: el\n };\n Object.keys(props).forEach(prop => {\n initialFullValue = window.getComputedStyle(el, null).getPropertyValue(prop).replace(',', '.');\n initialValue = parseFloat(initialFullValue);\n unit = initialFullValue.replace(initialValue, '');\n finalValue = parseFloat(props[prop]);\n finalFullValue = props[prop] + unit;\n elements[index][prop] = {\n initialFullValue,\n initialValue,\n unit,\n finalValue,\n finalFullValue,\n currentValue: initialValue\n };\n });\n });\n let startTime = null;\n let time;\n let elementsDone = 0;\n let propsDone = 0;\n let done;\n let began = false;\n a.animating = true;\n\n function render() {\n time = new Date().getTime();\n let progress;\n let easeProgress; // let el;\n\n if (!began) {\n began = true;\n if (params.begin) params.begin(els);\n }\n\n if (startTime === null) {\n startTime = time;\n }\n\n if (params.progress) {\n // eslint-disable-next-line\n params.progress(els, Math.max(Math.min((time - startTime) / params.duration, 1), 0), startTime + params.duration - time < 0 ? 0 : startTime + params.duration - time, startTime);\n }\n\n elements.forEach(element => {\n const el = element;\n if (done || el.done) return;\n Object.keys(props).forEach(prop => {\n if (done || el.done) return;\n progress = Math.max(Math.min((time - startTime) / params.duration, 1), 0);\n easeProgress = a.easingProgress(params.easing, progress);\n const {\n initialValue,\n finalValue,\n unit\n } = el[prop];\n el[prop].currentValue = initialValue + easeProgress * (finalValue - initialValue);\n const currentValue = el[prop].currentValue;\n\n if (finalValue > initialValue && currentValue >= finalValue || finalValue < initialValue && currentValue <= finalValue) {\n el.container.style[prop] = finalValue + unit;\n propsDone += 1;\n\n if (propsDone === Object.keys(props).length) {\n el.done = true;\n elementsDone += 1;\n }\n\n if (elementsDone === elements.length) {\n done = true;\n }\n }\n\n if (done) {\n a.done(params.complete);\n return;\n }\n\n el.container.style[prop] = currentValue + unit;\n });\n });\n if (done) return; // Then call\n\n a.frameId = window.requestAnimationFrame(render);\n }\n\n a.frameId = window.requestAnimationFrame(render);\n return a;\n }\n\n };\n\n if (a.elements.length === 0) {\n return els;\n }\n\n let animateInstance;\n\n for (let i = 0; i < a.elements.length; i += 1) {\n if (a.elements[i].dom7AnimateInstance) {\n animateInstance = a.elements[i].dom7AnimateInstance;\n } else a.elements[i].dom7AnimateInstance = a;\n }\n\n if (!animateInstance) {\n animateInstance = a;\n }\n\n if (initialProps === 'stop') {\n animateInstance.stop();\n } else {\n animateInstance.animate(a.props, a.params);\n }\n\n return els;\n}\n\nfunction stop() {\n const els = this;\n\n for (let i = 0; i < els.length; i += 1) {\n if (els[i].dom7AnimateInstance) {\n els[i].dom7AnimateInstance.stop();\n }\n }\n}\n\nconst noTrigger = 'resize scroll'.split(' ');\n\nfunction shortcut(name) {\n function eventHandler(...args) {\n if (typeof args[0] === 'undefined') {\n for (let i = 0; i < this.length; i += 1) {\n if (noTrigger.indexOf(name) < 0) {\n if (name in this[i]) this[i][name]();else {\n $(this[i]).trigger(name);\n }\n }\n }\n\n return this;\n }\n\n return this.on(name, ...args);\n }\n\n return eventHandler;\n}\n\nconst click = shortcut('click');\nconst blur = shortcut('blur');\nconst focus = shortcut('focus');\nconst focusin = shortcut('focusin');\nconst focusout = shortcut('focusout');\nconst keyup = shortcut('keyup');\nconst keydown = shortcut('keydown');\nconst keypress = shortcut('keypress');\nconst submit = shortcut('submit');\nconst change = shortcut('change');\nconst mousedown = shortcut('mousedown');\nconst mousemove = shortcut('mousemove');\nconst mouseup = shortcut('mouseup');\nconst mouseenter = shortcut('mouseenter');\nconst mouseleave = shortcut('mouseleave');\nconst mouseout = shortcut('mouseout');\nconst mouseover = shortcut('mouseover');\nconst touchstart = shortcut('touchstart');\nconst touchend = shortcut('touchend');\nconst touchmove = shortcut('touchmove');\nconst resize = shortcut('resize');\nconst scroll = shortcut('scroll');\n\nexport default $;\nexport { $, add, addClass, animate, animationEnd, append, appendTo, attr, blur, change, children, click, closest, css, data, dataset, detach, each, empty, eq, filter, find, focus, focusin, focusout, hasClass, height, hide, html, index, insertAfter, insertBefore, is, keydown, keypress, keyup, mousedown, mouseenter, mouseleave, mousemove, mouseout, mouseover, mouseup, next, nextAll, off, offset, on, once, outerHeight, outerWidth, parent, parents, prepend, prependTo, prev, prevAll, prop, remove, removeAttr, removeClass, removeData, resize, scroll, scrollLeft, scrollTo, scrollTop, show, siblings, stop, styles, submit, text, toggleClass, touchend, touchmove, touchstart, transform, transition, transitionEnd, trigger, val, value, width };\n","// eslint-disable-next-line\nimport * as methods from 'dom7';\n\nObject.keys(methods).forEach((methodName) => {\n if (methodName === '$') return;\n methods.$.fn[methodName] = methods[methodName];\n});\n\nexport default methods.$;\n","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 <span class=\"preloader-inner\">\n <svg viewBox=\"0 0 36 36\">\n <circle cx=\"18\" cy=\"18\" r=\"16\"></circle>\n </svg>\n </span>\n`.trim();\n\nexport const iosPreloaderContent = `\n <span class=\"preloader-inner\">\n ${[0, 1, 2, 3, 4, 5, 6, 7].map(() => '<span class=\"preloader-inner-line\"></span>').join('')}\n </span>\n`.trim();\n\nexport const auroraPreloaderContent = `\n <span class=\"preloader-inner\">\n <span class=\"preloader-inner-circle\"></span>\n </span>\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.js';\n\nlet deviceCalculated;\n\nfunction calcDevice({ userAgent } = {}) {\n const support = getSupport();\n const window = getWindow();\n const platform = window.navigator.platform;\n const ua = userAgent || window.navigator.userAgent;\n\n const device = {\n ios: false,\n android: false,\n androidChrome: false,\n desktop: false,\n iphone: false,\n ipod: false,\n ipad: false,\n edge: false,\n ie: false,\n firefox: false,\n macos: false,\n windows: false,\n cordova: !!window.cordova,\n electron: false,\n capacitor: !!window.Capacitor,\n nwjs: false,\n };\n\n const screenWidth = window.screen.width;\n const screenHeight = window.screen.height;\n\n const android = ua.match(/(Android);?[\\s\\/]+([\\d.]+)?/); // eslint-disable-line\n let ipad = ua.match(/(iPad).*OS\\s([\\d_]+)/);\n const ipod = ua.match(/(iPod)(.*OS\\s([\\d_]+))?/);\n const iphone = !ipad && ua.match(/(iPhone\\sOS|iOS|iPhone;\\sCPU\\sOS)\\s([\\d_]+)/);\n const ie = ua.indexOf('MSIE ') >= 0 || ua.indexOf('Trident/') >= 0;\n const edge = ua.indexOf('Edge/') >= 0;\n const firefox = ua.indexOf('Gecko/') >= 0 && ua.indexOf('Firefox/') >= 0;\n const windows = platform === 'Win32';\n const electron = ua.toLowerCase().indexOf('electron') >= 0;\n const nwjs =\n typeof nw !== 'undefined' &&\n typeof process !== 'undefined' &&\n typeof process.versions !== 'undefined' &&\n typeof process.versions.nw !== 'undefined';\n let macos = platform === 'MacIntel';\n\n // iPadOs 13 fix\n const iPadScreens = [\n '1024x1366',\n '1366x1024',\n '834x1194',\n '1194x834',\n '834x1112',\n '1112x834',\n '768x1024',\n '1024x768',\n '820x1180',\n '1180x820',\n '810x1080',\n '1080x810',\n ];\n if (\n !ipad &&\n macos &&\n support.touch &&\n iPadScreens.indexOf(`${screenWidth}x${screenHeight}`) >= 0\n ) {\n ipad = ua.match(/(Version)\\/([\\d.]+)/);\n if (!ipad) ipad = [0, 1, '13_0_0'];\n macos = false;\n }\n\n device.ie = ie;\n device.edge = edge;\n device.firefox = firefox;\n\n // Android\n if (android) {\n device.os = 'android';\n device.osVersion = android[2];\n device.android = true;\n device.androidChrome = ua.toLowerCase().indexOf('chrome') >= 0;\n }\n if (ipad || iphone || ipod) {\n device.os = 'ios';\n device.ios = true;\n }\n // iOS\n if (iphone && !ipod) {\n device.osVersion = iphone[2].replace(/_/g, '.');\n device.iphone = true;\n }\n if (ipad) {\n device.osVersion = ipad[2].replace(/_/g, '.');\n device.ipad = true;\n }\n if (ipod) {\n device.osVersion = ipod[3] ? ipod[3].replace(/_/g, '.') : null;\n device.ipod = true;\n }\n // iOS 8+ changed UA\n if (device.ios && device.osVersion && ua.indexOf('Version/') >= 0) {\n if (device.osVersion.split('.')[0] === '10') {\n device.osVersion = ua.toLowerCase().split('version/')[1].split(' ')[0];\n }\n }\n\n // Webview\n device.webView =\n !!(\n (iphone || ipad || ipod) &&\n (ua.match(/.*AppleWebKit(?!.*Safari)/i) || window.navigator.standalone)\n ) ||\n (window.matchMedia && window.matchMedia('(display-mode: standalone)').matches);\n device.webview = device.webView;\n device.standalone = device.webView;\n\n // Desktop\n device.desktop = !(device.ios || device.android) || electron || nwjs;\n if (device.desktop) {\n device.electron = electron;\n device.nwjs = nwjs;\n device.macos = macos;\n device.windows = windows;\n if (device.macos) {\n device.os = 'macos';\n }\n if (device.windows) {\n device.os = 'windows';\n }\n }\n\n // Pixel Ratio\n device.pixelRatio = window.devicePixelRatio || 1;\n\n // Color Scheme\n const DARK = '(prefers-color-scheme: dark)';\n const LIGHT = '(prefers-color-scheme: light)';\n device.prefersColorScheme = function prefersColorTheme() {\n let theme;\n if (window.matchMedia && window.matchMedia(LIGHT).matches) {\n theme = 'light';\n }\n if (window.matchMedia && window.matchMedia(DARK).matches) {\n theme = 'dark';\n }\n return theme;\n };\n\n // Export object\n return device;\n}\n\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.js';\nimport EventsClass from './events-class.js';\n\nclass Framework7Class extends EventsClass {\n constructor(params = {}, parents = []) {\n super(parents);\n const self = this;\n self.params = params;\n\n if (self.params && self.params.on) {\n Object.keys(self.params.on).forEach((eventName) => {\n self.on(eventName, self.params.on[eventName]);\n });\n }\n }\n\n // eslint-disable-next-line\n useModuleParams(module, instanceParams) {\n if (module.params) {\n const originalParams = {};\n Object.keys(module.params).forEach((paramKey) => {\n if (typeof instanceParams[paramKey] === 'undefined') return;\n originalParams[paramKey] = extend({}, instanceParams[paramKey]);\n });\n extend(instanceParams, module.params);\n Object.keys(originalParams).forEach((paramKey) => {\n extend(instanceParams[paramKey], originalParams[paramKey]);\n });\n }\n }\n\n useModulesParams(instanceParams) {\n const instance = this;\n if (!instance.modules) return;\n Object.keys(instance.modules).forEach((moduleName) => {\n const module = instance.modules[moduleName];\n // Extend params\n if (module.params) {\n extend(instanceParams, module.params);\n }\n });\n }\n\n useModule(moduleName = '', moduleParams = {}) {\n const instance = this;\n if (!instance.modules) return;\n const module = typeof moduleName === 'string' ? instance.modules[moduleName] : moduleName;\n if (!module) return;\n\n // Extend instance methods and props\n if (module.instance) {\n Object.keys(module.instance).forEach((modulePropName) => {\n const moduleProp = module.instance[modulePropName];\n if (typeof moduleProp === 'function') {\n instance[modulePropName] = moduleProp.bind(instance);\n } else {\n instance[modulePropName] = moduleProp;\n }\n });\n }\n // Add event listeners\n if (module.on && instance.on) {\n Object.keys(module.on).forEach((moduleEventName) => {\n instance.on(moduleEventName, module.on[moduleEventName]);\n });\n }\n // Add vnode hooks\n if (module.vnode) {\n if (!instance.vnodeHooks) instance.vnodeHooks = {};\n Object.keys(module.vnode).forEach((vnodeId) => {\n Object.keys(module.vnode[vnodeId]).forEach((hookName) => {\n const handler = module.vnode[vnodeId][hookName];\n if (!instance.vnodeHooks[hookName]) instance.vnodeHooks[hookName] = {};\n if (!instance.vnodeHooks[hookName][vnodeId]) instance.vnodeHooks[hookName][vnodeId] = [];\n instance.vnodeHooks[hookName][vnodeId].push(handler.bind(instance));\n });\n });\n }\n // Module create callback\n if (module.create) {\n module.create.bind(instance)(moduleParams);\n }\n }\n\n useModules(modulesParams = {}) {\n const instance = this;\n if (!instance.modules) return;\n Object.keys(instance.modules).forEach((moduleName) => {\n const moduleParams = modulesParams[moduleName] || {};\n instance.useModule(moduleName, moduleParams);\n });\n }\n\n static set components(components) {\n const Class = this;\n if (!Class.use) return;\n Class.use(components);\n }\n\n static installModule(module, ...params) {\n const Class = this;\n if (!Class.prototype.modules) Class.prototype.modules = {};\n const name = module.name || `${Object.keys(Class.prototype.modules).length}_${now()}`;\n Class.prototype.modules[name] = module;\n // Prototype\n if (module.proto) {\n Object.keys(module.proto).forEach((key) => {\n Class.prototype[key] = module.proto[key];\n });\n }\n // Class\n if (module.static) {\n Object.keys(module.static).forEach((key) => {\n Class[key] = module.static[key];\n });\n }\n // Callback\n if (module.install) {\n module.install.apply(Class, params);\n }\n return Class;\n }\n\n static use(module, ...params) {\n const Class = this;\n if (Array.isArray(module)) {\n module.forEach((m) => Class.installModule(m));\n return Class;\n }\n return Class.installModule(module, ...params);\n }\n}\n\nexport default Framework7Class;\n","import $ from './dom7.js';\n\nexport default function ConstructorMethods(parameters = {}) {\n const { defaultSelector, constructor: Constructor, domProp, app, addMethods } = parameters;\n const methods = {\n create(...args) {\n if (app) return new Constructor(app, ...args);\n return new Constructor(...args);\n },\n get(el = defaultSelector) {\n if (el instanceof Constructor) return el;\n const $el = $(el);\n if ($el.length === 0) return undefined;\n return $el[0][domProp];\n },\n destroy(el) {\n const instance = methods.get(el);\n if (instance && instance.destroy) return instance.destroy();\n return undefined;\n },\n };\n if (addMethods && Array.isArray(addMethods)) {\n addMethods.forEach((methodName) => {\n methods[methodName] = (el = defaultSelector, ...args) => {\n const instance = methods.get(el);\n if (instance && instance[methodName]) return instance[methodName](...args);\n return undefined;\n };\n });\n }\n return methods;\n}\n","import { getWindow, getDocument } from 'ssr-window';\nimport { id } from '../../shared/utils.js';\nimport $ from '../../shared/dom7.js';\n\nconst fetchedModules = [];\nfunction loadModule(moduleToLoad) {\n const Framework7 = this;\n const window = getWindow();\n const document = getDocument();\n return new Promise((resolve, reject) => {\n const app = Framework7.instance;\n let modulePath;\n let moduleObj;\n let moduleFunc;\n if (!moduleToLoad) {\n reject(new Error('Framework7: Lazy module must be specified'));\n return;\n }\n\n function install(module) {\n Framework7.use(module);\n\n if (app) {\n app.useModuleParams(module, app.params);\n app.useModule(module);\n }\n }\n\n if (typeof moduleToLoad === 'string') {\n const matchNamePattern = moduleToLoad.match(/([a-z0-9-]*)/i);\n if (\n moduleToLoad.indexOf('.') < 0 &&\n matchNamePattern &&\n matchNamePattern[0].length === moduleToLoad.length\n ) {\n if (!app || (app && !app.params.lazyModulesPath)) {\n reject(\n new Error(\n 'Framework7: \"lazyModulesPath\" app parameter must be specified to fetch module by name',\n ),\n );\n return;\n }\n modulePath = `${app.params.lazyModulesPath}/${moduleToLoad}/${moduleToLoad}.lazy.js`;\n } else {\n modulePath = moduleToLoad;\n }\n } else if (typeof moduleToLoad === 'function') {\n moduleFunc = moduleToLoad;\n } else {\n // considering F7-Plugin object\n moduleObj = moduleToLoad;\n }\n\n if (moduleFunc) {\n const module = moduleFunc(Framework7, false);\n if (!module) {\n reject(\n new Error(\"Framework7: Can't find Framework7 component in specified component function\"),\n );\n return;\n }\n // Check if it was added\n if (Framework7.prototype.modules && Framework7.prototype.modules[module.name]) {\n resolve();\n return;\n }\n // Install It\n install(module);\n\n resolve();\n }\n if (moduleObj) {\n const module = moduleObj;\n if (!module) {\n reject(new Error(\"Framework7: Can't find Framework7 component in specified component\"));\n return;\n }\n // Check if it was added\n if (Framework7.prototype.modules && Framework7.prototype.modules[module.name]) {\n resolve();\n return;\n }\n // Install It\n install(module);\n\n resolve();\n }\n if (modulePath) {\n if (fetchedModules.indexOf(modulePath) >= 0) {\n resolve();\n return;\n }\n fetchedModules.push(modulePath);\n const scriptLoad = new Promise((resolveScript, rejectScript) => {\n 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\n .replace('.lazy.js', app.rtl ? '.rtl.css' : '.css')\n .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.js';\nimport { getDevice } from '../../shared/get-device.js';\nimport { getSupport } from '../../shared/get-support.js';\nimport Framework7Class from '../../shared/class.js';\nimport EventsClass from '../../shared/events-class.js';\nimport ConstructorMethods from '../../shared/constructor-methods.js';\nimport ModalMethods from '../../shared/modal-methods.js';\nimport $ from '../../shared/dom7.js';\nimport loadModule from './load-module.js';\n\nclass Framework7 extends Framework7Class {\n constructor(params = {}) {\n super(params);\n // eslint-disable-next-line\n if (Framework7.instance && typeof window !== 'undefined') {\n throw new Error(\"Framework7 is already initialized and can't be initialized more than once\");\n }\n const device = getDevice({ userAgent: params.userAgent || undefined });\n const support = getSupport();\n\n const passedParams = extend({}, params);\n\n // App Instance\n const app = this;\n\n app.device = device;\n app.support = support;\n\n const w = getWindow();\n const d = getDocument();\n\n Framework7.instance = app;\n\n // Default\n const defaults = {\n version: '1.0.0',\n id: 'io.framework7.myapp',\n el: 'body',\n theme: 'auto',\n language: w.navigator.language,\n routes: [],\n name: 'Framework7',\n lazyModulesPath: null,\n initOnDeviceReady: true,\n init: true,\n autoDarkMode: 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: w.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 $(d).on('deviceready', () => {\n app.init();\n });\n } else {\n app.init();\n }\n }\n\n // Return app instance\n return app;\n }\n\n mount(rootEl) {\n const app = this;\n const window = getWindow();\n const document = getDocument();\n const $rootEl = $(rootEl || app.params.el).eq(0);\n app.$el = $rootEl;\n if (app.$el && app.$el[0]) {\n app.el = app.$el[0];\n app.el.f7 = app;\n app.rtl = $rootEl.css('direction') === 'rtl';\n }\n\n // Auto Dark Mode\n const DARK = '(prefers-color-scheme: dark)';\n const LIGHT = '(prefers-color-scheme: light)';\n app.mq = {};\n if (window.matchMedia) {\n app.mq.dark = window.matchMedia(DARK);\n app.mq.light = window.matchMedia(LIGHT);\n }\n app.colorSchemeListener = function colorSchemeListener({ matches, media }) {\n if (!matches) {\n return;\n }\n const html = document.querySelector('html');\n if (media === DARK) {\n html.classList.add('dark');\n app.darkMode = true;\n app.emit('darkModeChange', true);\n } else if (media === LIGHT) {\n html.classList.remove('dark');\n app.darkMode = false;\n app.emit('darkModeChange', false);\n }\n };\n app.emit('mount');\n }\n\n initStore() {\n const app = this;\n if (typeof app.params.store !== 'undefined' && app.params.store.__store) {\n app.store = app.params.store;\n } else {\n app.store = app.createStore(app.params.store);\n }\n }\n\n enableAutoDarkMode() {\n const window = getWindow();\n const document = getDocument();\n if (!window.matchMedia) return;\n const app = this;\n const html = document.querySelector('html');\n if (app.mq.dark && app.mq.light) {\n app.mq.dark.addListener(app.colorSchemeListener);\n app.mq.light.addListener(app.colorSchemeListener);\n }\n if (app.mq.dark && app.mq.dark.matches) {\n html.classList.add('dark');\n app.darkMode = true;\n app.emit('darkModeChange', true);\n } else if (app.mq.light && app.mq.light.matches) {\n html.classList.remove('dark');\n app.darkMode = false;\n app.emit('darkModeChange', false);\n }\n }\n\n disableAutoDarkMode() {\n const window = getWindow();\n if (!window.matchMedia) return;\n const app = this;\n if (app.mq.dark) app.mq.dark.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 Mode\n if (app.params.autoDarkMode) {\n app.enableAutoDarkMode();\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.js';\nimport { extend } from './utils.js';\nimport ConstructorMethods from './constructor-methods.js';\n\nexport default function ModalMethods(parameters = {}) {\n const { defaultSelector, constructor: Constructor, app } = parameters;\n const methods = extend(\n ConstructorMethods({\n defaultSelector,\n constructor: Constructor,\n app,\n domProp: 'f7Modal',\n }),\n {\n open(el, animate, targetEl) {\n let $el = $(el);\n if ($el.length > 1 && targetEl) {\n // check if same modal in other page\n const $targetPage = $(targetEl).parents('.page');\n if ($targetPage.length) {\n $el.each((modalEl) => {\n const $modalEl = $(modalEl);\n if ($modalEl.parents($targetPage)[0] === $targetPage[0]) {\n $el = $modalEl;\n }\n });\n }\n }\n if ($el.length > 1) {\n $el = $el.eq($el.length - 1);\n }\n if (!$el.length) return undefined;\n let instance = $el[0].f7Modal;\n if (!instance) {\n const params = $el.dataset();\n instance = new Constructor(app, { el: $el, ...params });\n }\n return instance.open(animate);\n },\n close(el = defaultSelector, animate, targetEl) {\n let $el = $(el);\n if (!$el.length) return undefined;\n if ($el.length > 1) {\n // check if close link (targetEl) in this modal\n let $parentEl;\n if (targetEl) {\n const $targetEl = $(targetEl);\n if ($targetEl.length) {\n $parentEl = $targetEl.parents($el);\n }\n }\n if ($parentEl && $parentEl.length > 0) {\n $el = $parentEl;\n } else {\n $el = $el.eq($el.length - 1);\n }\n }\n let instance = $el[0].f7Modal;\n if (!instance) {\n const params = $el.dataset();\n instance = new Constructor(app, { el: $el, ...params });\n }\n return instance.close(animate);\n },\n },\n );\n return methods;\n}\n","import { getDocument } from 'ssr-window';\nimport { getDevice } from '../../shared/get-device.js';\n\nexport default {\n name: 'device',\n static: {\n getDevice,\n },\n on: {\n init() {\n const document = getDocument();\n const device = getDevice();\n const classNames = [];\n const html = document.querySelector('html');\n const metaStatusbar = document.querySelector(\n 'meta[name=\"apple-mobile-web-app-status-bar-style\"]',\n );\n if (!html) return;\n if (\n device.standalone &&\n device.ios &&\n metaStatusbar &&\n metaStatusbar.content === 'black-translucent'\n ) {\n classNames.push('device-full-viewport');\n }\n\n // Pixel Ratio\n classNames.push(`device-pixel-ratio-${Math.floor(device.pixelRatio)}`);\n // OS classes\n if (device.os && !device.desktop) {\n classNames.push(`device-${device.os}`);\n } else if (device.desktop) {\n classNames.push('device-desktop');\n if (device.os) {\n classNames.push(`device-${device.os}`);\n }\n }\n if (device.cordova) {\n classNames.push('device-cordova');\n }\n if (device.capacitor) {\n classNames.push('device-capacitor');\n }\n\n // Add html classes\n classNames.forEach((className) => {\n html.classList.add(className);\n });\n },\n },\n};\n","import { getSupport } from '../../shared/get-support.js';\n\nexport default {\n name: 'support',\n static: {\n getSupport,\n },\n};\n","import * as utils from '../../shared/utils.js';\n\nexport default {\n name: 'utils',\n proto: {\n utils,\n },\n static: {\n utils,\n },\n};\n","import { getWindow, getDocument } from 'ssr-window';\nimport { getDevice } from '../../shared/get-device.js';\n\nexport default {\n name: 'resize',\n create() {\n const app = this;\n app.getSize = () => {\n if (!app.el) return { width: 0, height: 0, left: 0, top: 0 };\n const offset = app.$el.offset();\n const [width, height, left, top] = [\n app.el.offsetWidth,\n app.el.offsetHeight,\n offset.left,\n offset.top,\n ];\n app.width = width;\n app.height = height;\n app.left = left;\n app.top = top;\n return { width, height, left, top };\n };\n },\n on: {\n init() {\n const app = this;\n const window = getWindow();\n\n // Get Size\n app.getSize();\n\n // Emit resize\n window.addEventListener(\n 'resize',\n () => {\n app.emit('resize');\n },\n false,\n );\n\n // Emit orientationchange\n window.addEventListener('orientationchange', () => {\n app.emit('orientationchange');\n });\n },\n orientationchange() {\n const document = getDocument();\n const device = getDevice();\n // Fix iPad weird body scroll\n if (device.ipad) {\n document.body.scrollLeft = 0;\n setTimeout(() => {\n document.body.scrollLeft = 0;\n }, 0);\n }\n },\n resize() {\n const app = this;\n app.getSize();\n },\n },\n};\n","/* eslint-disable max-classes-per-file */\nimport { getWindow, getDocument } from 'ssr-window';\nimport { extend, serializeObject } from './utils.js';\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.js';\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.js';\nimport { getSupport } from '../../shared/get-support.js';\nimport { getDevice } from '../../shared/get-device.js';\nimport { extend } from '../../shared/utils.js';\n\nfunction initTouch() {\n const app = this;\n const device = getDevice();\n const support = getSupport();\n const window = getWindow();\n const document = getDocument();\n const params = app.params.touch;\n const useRipple = params[`${app.theme}TouchRipple`];\n\n if (device.ios && device.webView) {\n // Strange hack required for iOS 8 webview to work on inputs\n window.addEventListener('touchstart', () => {});\n }\n\n let touchStartX;\n let touchStartY;\n let targetElement;\n let isMoved;\n let tapHoldFired;\n let tapHoldTimeout;\n let preventClick;\n\n let activableElement;\n let activeTimeout;\n\n let rippleWave;\n let rippleTarget;\n let rippleTimeout;\n\n function findActivableElement(el) {\n const target = $(el);\n const parents = target.parents(params.activeStateElements);\n if (target.closest('.no-active-state').length) {\n return null;\n }\n let activable;\n if (target.is(params.activeStateElements)) {\n activable = target;\n }\n if (parents.length > 0) {\n activable = activable ? activable.add(parents) : parents;\n }\n if (activable && activable.length > 1) {\n const newActivable = [];\n let preventPropagation;\n for (let i = 0; i < activable.length; i += 1) {\n if (!preventPropagation) {\n newActivable.push(activable[i]);\n if (\n activable.eq(i).hasClass('prevent-active-state-propagation') ||\n activable.eq(i).hasClass('no-active-state-propagation')\n ) {\n preventPropagation = true;\n }\n }\n }\n activable = $(newActivable);\n }\n return activable || target;\n }\n\n function isInsideScrollableView(el) {\n const pageContent = el.parents('.page-content');\n return pageContent.length > 0;\n }\n\n function addActive() {\n if (!activableElement) return;\n activableElement.addClass('active-state');\n }\n function removeActive() {\n if (!activableElement) return;\n activableElement.removeClass('active-state');\n activableElement = null;\n }\n\n // Ripple handlers\n function findRippleElement(el) {\n const rippleElements = params.touchRippleElements;\n const $el = $(el);\n if ($el.is(rippleElements)) {\n if ($el.hasClass('no-ripple')) {\n return false;\n }\n return $el;\n }\n if ($el.parents(rippleElements).length > 0) {\n const rippleParent = $el.parents(rippleElements).eq(0);\n if (rippleParent.hasClass('no-ripple')) {\n return false;\n }\n return rippleParent;\n }\n return false;\n }\n function createRipple($el, x, y) {\n if (!$el) return;\n rippleWave = app.touchRipple.create(app, $el, x, y);\n }\n\n function removeRipple() {\n if (!rippleWave) return;\n rippleWave.remove();\n rippleWave = undefined;\n rippleTarget = undefined;\n }\n function rippleTouchStart(el) {\n rippleTarget = findRippleElement(el);\n if (!rippleTarget || rippleTarget.length === 0) {\n rippleTarget = undefined;\n return;\n }\n const inScrollable = isInsideScrollableView(rippleTarget);\n\n if (!inScrollable) {\n removeRipple();\n createRipple(rippleTarget, touchStartX, touchStartY);\n } else {\n clearTimeout(rippleTimeout);\n rippleTimeout = setTimeout(() => {\n removeRipple();\n createRipple(rippleTarget, touchStartX, touchStartY);\n }, 80);\n }\n }\n function rippleTouchMove() {\n clearTimeout(rippleTimeout);\n removeRipple();\n }\n function rippleTouchEnd() {\n if (!rippleWave && rippleTarget && !isMoved) {\n clearTimeout(rippleTimeout);\n createRipple(rippleTarget, touchStartX, touchStartY);\n setTimeout(removeRipple, 0);\n } else {\n removeRipple();\n }\n }\n\n // Mouse Handlers\n function handleMouseDown(e) {\n const $activableEl = findActivableElement(e.target);\n if ($activableEl) {\n $activableEl.addClass('active-state');\n if ('which' in e && e.which === 3) {\n setTimeout(() => {\n $('.active-state').removeClass('active-state');\n }, 0);\n }\n }\n\n if (useRipple) {\n touchStartX = e.pageX;\n touchStartY = e.pageY;\n rippleTouchStart(e.target, e.pageX, e.pageY);\n }\n }\n function handleMouseMove() {\n if (!params.activeStateOnMouseMove) {\n $('.active-state').removeClass('active-state');\n }\n if (useRipple) {\n rippleTouchMove();\n }\n }\n function handleMouseUp() {\n $('.active-state').removeClass('active-state');\n if (useRipple) {\n rippleTouchEnd();\n }\n }\n\n function handleTouchCancel() {\n targetElement = null;\n\n // Remove Active State\n clearTimeout(activeTimeout);\n clearTimeout(tapHoldTimeout);\n if (params.activeState) {\n removeActive();\n }\n\n // Remove Ripple\n if (useRipple) {\n rippleTouchEnd();\n }\n }\n\n let isScrolling;\n let isSegmentedStrong = false;\n let segmentedStrongEl = null;\n\n const touchMoveActivableIos = '.dialog-button, .actions-button';\n let isTouchMoveActivable = false;\n let touchmoveActivableEl = null;\n\n function handleTouchStart(e) {\n isMoved = false;\n tapHoldFired = false;\n preventClick = false;\n isScrolling = undefined;\n if (e.targetTouches.length > 1) {\n if (activableElement) removeActive();\n return true;\n }\n if (e.touches.length > 1 && activableElement) {\n removeActive();\n }\n if (params.tapHold) {\n if (tapHoldTimeout) clearTimeout(tapHoldTimeout);\n tapHoldTimeout = setTimeout(() => {\n if (e && e.touches && e.touches.length > 1) return;\n tapHoldFired = true;\n e.preventDefault();\n preventClick = true;\n $(e.target).trigger('taphold', e);\n app.emit('taphold', e);\n }, params.tapHoldDelay);\n }\n targetElement = e.target;\n touchStartX = e.targetTouches[0].pageX;\n touchStartY = e.targetTouches[0].pageY;\n isSegmentedStrong = e.target.closest(\n '.segmented-strong .button-active, .segmented-strong .tab-link-active',\n );\n isTouchMoveActivable = app.theme === 'ios' && e.target.closest(touchMoveActivableIos);\n if (isSegmentedStrong) {\n segmentedStrongEl = isSegmentedStrong.closest('.segmented-strong');\n }\n\n if (params.activeState) {\n activableElement = findActivableElement(targetElement);\n if (activableElement && !isInsideScrollableView(activableElement)) {\n addActive();\n } else if (activableElement) {\n activeTimeout = setTimeout(addActive, 80);\n }\n }\n if (useRipple) {\n rippleTouchStart(targetElement, touchStartX, touchStartY);\n }\n return true;\n }\n function handleTouchMove(e) {\n let touch;\n let distance;\n let shouldRemoveActive = true;\n\n if (e.type === 'touchmove') {\n touch = e.targetTouches[0];\n distance = params.touchClicksDistanceThreshold;\n }\n\n const touchCurrentX = e.targetTouches[0].pageX;\n const touchCurrentY = e.targetTouches[0].pageY;\n\n if (typeof isScrolling === 'undefined') {\n isScrolling = !!(\n isScrolling || Math.abs(touchCurrentY - touchStartY) > Math.abs(touchCurrentX - touchStartX)\n );\n }\n\n if (isTouchMoveActivable || (!isScrolling && isSegmentedStrong && segmentedStrongEl)) {\n if (e.cancelable) e.preventDefault();\n }\n\n if (!isScrolling && isSegmentedStrong && segmentedStrongEl) {\n const elementFromPoint = document.elementFromPoint(\n e.targetTouches[0].clientX,\n e.targetTouches[0].clientY,\n );\n const buttonEl = elementFromPoint.closest(\n '.segmented-strong .button:not(.button-active):not(.tab-link-active)',\n );\n if (buttonEl && segmentedStrongEl.contains(buttonEl)) {\n $(buttonEl).trigger('click', 'f7Segmented');\n targetElement = buttonEl;\n }\n }\n\n if (distance && touch) {\n const pageX = touch.pageX;\n const pageY = touch.pageY;\n if (Math.abs(pageX - touchStartX) > distance || Math.abs(pageY - touchStartY) > distance) {\n isMoved = true;\n }\n } else {\n isMoved = true;\n }\n if (isMoved) {\n preventClick = true;\n // Keep active state on touchMove (for dialog and actions buttons)\n if (isTouchMoveActivable) {\n const elementFromPoint = document.elementFromPoint(\n e.targetTouches[0].clientX,\n e.targetTouches[0].clientY,\n );\n touchmoveActivableEl = elementFromPoint.closest(touchMoveActivableIos);\n if (\n touchmoveActivableEl &&\n activableElement &&\n activableElement[0] === touchmoveActivableEl\n ) {\n shouldRemoveActive = false;\n } else if (touchmoveActivableEl) {\n setTimeout(() => {\n activableElement = findActivableElement(touchmoveActivableEl);\n addActive();\n });\n }\n }\n if (params.tapHold) {\n clearTimeout(tapHoldTimeout);\n }\n if (params.activeState && shouldRemoveActive) {\n clearTimeout(activeTimeout);\n removeActive();\n }\n if (useRipple) {\n rippleTouchMove();\n }\n }\n }\n function handleTouchEnd(e) {\n isScrolling = undefined;\n isSegmentedStrong = false;\n segmentedStrongEl = null;\n isTouchMoveActivable = false;\n clearTimeout(activeTimeout);\n clearTimeout(tapHoldTimeout);\n if (touchmoveActivableEl) {\n $(touchmoveActivableEl).trigger('click', 'f7TouchMoveActivable');\n touchmoveActivableEl = null;\n }\n if (document.activeElement === e.target) {\n if (params.activeState) removeActive();\n if (useRipple) {\n rippleTouchEnd();\n }\n return true;\n }\n if (params.activeState) {\n addActive();\n setTimeout(removeActive, 0);\n }\n if (useRipple) {\n rippleTouchEnd();\n }\n if ((params.tapHoldPreventClicks && tapHoldFired) || preventClick) {\n if (e.cancelable) e.preventDefault();\n preventClick = true;\n return false;\n }\n return true;\n }\n function handleClick(e) {\n const isOverswipe = e && e.detail && e.detail === 'f7Overswipe';\n const isSegmented = e && e.detail && e.detail === 'f7Segmented';\n // eslint-disable-next-line\n const isTouchMoveActivable = e && e.detail && e.detail === 'f7TouchMoveActivable';\n let localPreventClick = preventClick;\n if (targetElement && e.target !== targetElement) {\n if (isOverswipe || isSegmented || isTouchMoveActivable) {\n localPreventClick = false;\n } else {\n localPreventClick = true;\n }\n } else if (isTouchMoveActivable) {\n localPreventClick = false;\n }\n if (params.tapHold && params.tapHoldPreventClicks && tapHoldFired) {\n localPreventClick = true;\n }\n if (localPreventClick) {\n e.stopImmediatePropagation();\n e.stopPropagation();\n e.preventDefault();\n }\n\n if (params.tapHold) {\n tapHoldTimeout = setTimeout(\n () => {\n tapHoldFired = false;\n },\n device.ios || device.androidChrome ? 100 : 400,\n );\n }\n preventClick = false;\n targetElement = null;\n\n return !localPreventClick;\n }\n\n function emitAppTouchEvent(name, e) {\n app.emit({\n events: name,\n data: [e],\n });\n }\n function appClick(e) {\n emitAppTouchEvent('click', e);\n }\n function appTouchStartActive(e) {\n emitAppTouchEvent('touchstart touchstart:active', e);\n }\n function appTouchMoveActive(e) {\n emitAppTouchEvent('touchmove touchmove:active', e);\n }\n function appTouchEndActive(e) {\n emitAppTouchEvent('touchend touchend:active', e);\n }\n function appTouchStartPassive(e) {\n emitAppTouchEvent('touchstart:passive', e);\n }\n function appTouchMovePassive(e) {\n emitAppTouchEvent('touchmove:passive', e);\n }\n function appTouchEndPassive(e) {\n emitAppTouchEvent('touchend:passive', e);\n }\n\n const passiveListener = support.passiveListener ? { passive: true } : false;\n const passiveListenerCapture = support.passiveListener ? { passive: true, capture: true } : true;\n const activeListener = support.passiveListener ? { passive: false } : false;\n const activeListenerCapture = support.passiveListener ? { passive: false, capture: true } : true;\n\n document.addEventListener('click', appClick, true);\n\n if (support.passiveListener) {\n document.addEventListener(app.touchEvents.start, appTouchStartActive, activeListenerCapture);\n document.addEventListener(app.touchEvents.move, appTouchMoveActive, activeListener);\n document.addEventListener(app.touchEvents.end, appTouchEndActive, activeListener);\n\n document.addEventListener(app.touchEvents.start, appTouchStartPassive, passiveListenerCapture);\n document.addEventListener(app.touchEvents.move, appTouchMovePassive, passiveListener);\n document.addEventListener(app.touchEvents.end, appTouchEndPassive, passiveListener);\n } else {\n document.addEventListener(\n app.touchEvents.start,\n (e) => {\n appTouchStartActive(e);\n appTouchStartPassive(e);\n },\n true,\n );\n document.addEventListener(\n app.touchEvents.move,\n (e) => {\n appTouchMoveActive(e);\n appTouchMovePassive(e);\n },\n false,\n );\n document.addEventListener(\n app.touchEvents.end,\n (e) => {\n appTouchEndActive(e);\n appTouchEndPassive(e);\n },\n false,\n );\n }\n\n if (support.touch) {\n app.on('click', handleClick);\n app.on('touchstart', handleTouchStart);\n app.on('touchmove', handleTouchMove);\n app.on('touchend', handleTouchEnd);\n document.addEventListener('touchcancel', handleTouchCancel, { passive: true });\n } else if (params.activeState) {\n app.on('touchstart', handleMouseDown);\n app.on('touchmove', handleMouseMove);\n app.on('touchend', handleMouseUp);\n document.addEventListener('pointercancel', handleMouseUp, { passive: true });\n }\n document.addEventListener('contextmenu', (e) => {\n if (\n params.disableContextMenu &&\n (device.ios ||\n device.android ||\n device.cordova ||\n (window.Capacitor && window.Capacitor.isNative))\n ) {\n e.preventDefault();\n }\n if (useRipple) {\n if (activableElement) removeActive();\n rippleTouchEnd();\n }\n });\n}\n\nexport default {\n name: 'touch',\n params: {\n touch: {\n // Clicks\n touchClicksDistanceThreshold: 5,\n // ContextMenu\n disableContextMenu: false,\n // Tap Hold\n tapHold: false,\n tapHoldDelay: 750,\n tapHoldPreventClicks: true,\n // Active State\n activeState: true,\n activeStateElements:\n 'a, button, label, span, .actions-button, .stepper-button, .stepper-button-plus, .stepper-button-minus, .card-expandable, .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.js';\nimport { extend } from './utils.js';\n\nconst History = {\n queue: [],\n clearQueue() {\n if (History.queue.length === 0) return;\n const currentQueue = History.queue.shift();\n currentQueue();\n },\n routerQueue: [],\n clearRouterQueue() {\n if (History.routerQueue.length === 0) return;\n const currentQueue = History.routerQueue.pop();\n const { router, stateUrl, action } = currentQueue;\n\n let animate = router.params.animate;\n if (router.params.browserHistoryAnimate === false) animate = false;\n\n if (action === 'back') {\n router.back({ animate, browserHistory: false });\n }\n if (action === 'load') {\n router.navigate(stateUrl, { animate, browserHistory: false });\n }\n },\n handle(e) {\n if (History.blockPopstate) return;\n const app = this;\n // const mainView = app.views.main;\n let state = e.state;\n History.previousState = History.state;\n History.state = state;\n\n History.allowChange = true;\n History.clearQueue();\n\n state = History.state;\n if (!state) state = {};\n\n app.views.forEach((view) => {\n const router = view.router;\n let viewState = state[view.id];\n if (!viewState && view.params.browserHistory) {\n viewState = {\n url: view.router.history[0],\n };\n }\n if (!viewState) return;\n const stateUrl = viewState.url || undefined;\n\n let animate = router.params.animate;\n if (router.params.browserHistoryAnimate === false) animate = false;\n\n if (stateUrl !== router.url) {\n if (router.history.indexOf(stateUrl) >= 0) {\n // Go Back\n if (router.allowPageChange) {\n router.back({ animate, browserHistory: false });\n } else {\n History.routerQueue.push({\n action: 'back',\n router,\n });\n }\n } else if (router.allowPageChange) {\n // Load page\n router.navigate(stateUrl, { animate, browserHistory: false });\n } else {\n History.routerQueue.unshift({\n action: 'load',\n stateUrl,\n router,\n });\n }\n }\n });\n },\n initViewState(viewId, viewState) {\n const window = getWindow();\n const newState = extend({}, History.state || {}, {\n [viewId]: viewState,\n });\n History.state = newState;\n window.history.replaceState(newState, '');\n },\n push(viewId, viewState, url) {\n const window = getWindow();\n 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.js';\nimport History from '../../shared/history.js';\nimport { getSupport } from '../../shared/get-support.js';\nimport { getDevice } from '../../shared/get-device.js';\nimport { now } from '../../shared/utils.js';\n\nfunction SwipeBack(r) {\n const router = r;\n const { $el, $navbarsEl, app, params } = router;\n const support = getSupport();\n const device = getDevice();\n let isTouched = false;\n let isMoved = false;\n const touchesStart = {};\n let isScrolling;\n let $currentPageEl = [];\n let $previousPageEl = [];\n let viewContainerWidth;\n let touchesDiff;\n let allowViewTouchMove = true;\n let touchStartTime;\n let $currentNavbarEl = [];\n let $previousNavbarEl = [];\n let dynamicNavbar;\n let $pageShadowEl;\n let $pageOpacityEl;\n\n let animatableNavEls;\n\n const paramsSwipeBackAnimateShadow = params[`${app.theme}SwipeBackAnimateShadow`];\n const paramsSwipeBackAnimateOpacity = params[`${app.theme}SwipeBackAnimateOpacity`];\n const paramsSwipeBackActiveArea = params[`${app.theme}SwipeBackActiveArea`];\n const paramsSwipeBackThreshold = params[`${app.theme}SwipeBackThreshold`];\n\n const transformOrigin = app.rtl ? 'right center' : 'left center';\n const transformOriginTitleLarge = app.rtl\n ? 'calc(100% - var(--f7-navbar-large-title-padding-left) - var(--f7-safe-area-left)) center'\n : 'calc(var(--f7-navbar-large-title-padding-left) + var(--f7-safe-area-left)) center';\n\n function animatableNavElements() {\n const els = [];\n const inverter = app.rtl ? -1 : 1;\n const currentNavIsTransparent =\n $currentNavbarEl.hasClass('navbar-transparent') &&\n !$currentNavbarEl.hasClass('navbar-large') &&\n !$currentNavbarEl.hasClass('navbar-transparent-visible');\n const currentNavIsLarge = $currentNavbarEl.hasClass('navbar-large');\n const currentNavIsCollapsed = $currentNavbarEl.hasClass('navbar-large-collapsed');\n const currentNavIsLargeTransparent =\n $currentNavbarEl.hasClass('navbar-large-transparent') ||\n ($currentNavbarEl.hasClass('navbar-large') &&\n $currentNavbarEl.hasClass('navbar-transparent'));\n const previousNavIsTransparent =\n $previousNavbarEl.hasClass('navbar-transparent') &&\n !$previousNavbarEl.hasClass('navbar-large') &&\n !$previousNavbarEl.hasClass('navbar-transparent-visible');\n const previousNavIsLarge = $previousNavbarEl.hasClass('navbar-large');\n const previousNavIsCollapsed = $previousNavbarEl.hasClass('navbar-large-collapsed');\n const previousNavIsLargeTransparent =\n $previousNavbarEl.hasClass('navbar-large-transparent') ||\n ($previousNavbarEl.hasClass('navbar-large') &&\n $previousNavbarEl.hasClass('navbar-transparent'));\n const fromLarge = currentNavIsLarge && !currentNavIsCollapsed;\n const toLarge = previousNavIsLarge && !previousNavIsCollapsed;\n const $currentNavElements = $currentNavbarEl.find(\n '.left, .title, .right, .subnavbar, .fading, .title-large, .navbar-bg',\n );\n const $previousNavElements = $previousNavbarEl.find(\n '.left, .title, .right, .subnavbar, .fading, .title-large, .navbar-bg',\n );\n let activeNavBackIconText;\n let previousNavBackIconText;\n\n if (params.iosAnimateNavbarBackIcon) {\n if (\n $currentNavbarEl.hasClass('sliding') ||\n $currentNavbarEl.find('.navbar-inner.sliding').length\n ) {\n activeNavBackIconText = $currentNavbarEl.find('.left').find('.back .icon + span').eq(0);\n } else {\n activeNavBackIconText = $currentNavbarEl\n .find('.left.sliding')\n .find('.back .icon + span')\n .eq(0);\n }\n if (\n $previousNavbarEl.hasClass('sliding') ||\n $previousNavbarEl.find('.navbar-inner.sliding').length\n ) {\n previousNavBackIconText = $previousNavbarEl.find('.left').find('.back .icon + span').eq(0);\n } else {\n previousNavBackIconText = $previousNavbarEl\n .find('.left.sliding')\n .find('.back .icon + span')\n .eq(0);\n }\n if (activeNavBackIconText.length) {\n $previousNavElements.each((el) => {\n if (!$(el).hasClass('title')) return;\n el.f7NavbarLeftOffset += activeNavBackIconText.prev('.icon')[0].offsetWidth;\n });\n }\n }\n $currentNavElements.each((navEl) => {\n const $navEl = $(navEl);\n const isSubnavbar = $navEl.hasClass('subnavbar');\n const isLeft = $navEl.hasClass('left');\n const isTitle = $navEl.hasClass('title');\n const isBg = $navEl.hasClass('navbar-bg');\n if ((isTitle || isBg) && currentNavIsTransparent) return;\n if (!fromLarge && $navEl.hasClass('.title-large')) return;\n const el = {\n el: navEl,\n };\n if (fromLarge) {\n if (isTitle) return;\n if ($navEl.hasClass('title-large')) {\n if (els.indexOf(el) < 0) els.push(el);\n el.overflow = 'visible';\n $navEl.find('.title-large-text').each((subNavEl) => {\n els.push({\n el: subNavEl,\n transform: (progress) => `translateX(${progress * 100 * inverter}%)`,\n });\n });\n return;\n }\n }\n if (toLarge) {\n if (!fromLarge) {\n if ($navEl.hasClass('title-large')) {\n if (els.indexOf(el) < 0) els.push(el);\n el.opacity = 0;\n }\n }\n if (isLeft) {\n if (els.indexOf(el) < 0) els.push(el);\n el.opacity = (progress) => 1 - progress ** 0.33;\n $navEl.find('.back span').each((subNavEl) => {\n els.push({\n el: subNavEl,\n 'transform-origin': transformOrigin,\n transform: (progress) =>\n `translateX(calc(${progress} * (var(--f7-navbarTitleLargeOffset) - var(--f7-navbarLeftTextOffset)))) translateY(calc(${progress} * (var(--f7-navbar-large-title-height) - var(--f7-navbar-large-title-padding-vertical) / 2))) scale(${\n 1 + 1 * progress\n })`,\n });\n });\n return;\n }\n }\n if (isBg) {\n if (els.indexOf(el) < 0) els.push(el);\n if (!fromLarge && !toLarge) {\n if (currentNavIsCollapsed) {\n if (currentNavIsLargeTransparent) {\n el.className = 'ios-swipeback-navbar-bg-large';\n }\n el.transform = (progress) =>\n `translateX(${\n 100 * progress * inverter\n }%) translateY(calc(-1 * var(--f7-navbar-large-title-height)))`;\n } else {\n el.transform = (progress) => `translateX(${100 * progress * inverter}%)`;\n }\n }\n if (!fromLarge && toLarge) {\n el.className = 'ios-swipeback-navbar-bg-large';\n el.transform = (progress) =>\n `translateX(${100 * progress * inverter}%) translateY(calc(-1 * ${\n 1 - progress\n } * var(--f7-navbar-large-title-height)))`;\n }\n if (fromLarge && toLarge) {\n el.transform = (progress) => `translateX(${100 * progress * inverter}%)`;\n }\n if (fromLarge && !toLarge) {\n el.transform = (progress) =>\n `translateX(${\n 100 * progress * inverter\n }%) translateY(calc(-${progress} * var(--f7-navbar-large-title-height)))`;\n }\n return;\n }\n if ($navEl.hasClass('title-large')) return;\n const isSliding =\n $navEl.hasClass('sliding') || $navEl.parents('.navbar-inner.sliding').length;\n if (els.indexOf(el) < 0) els.push(el);\n if (!isSubnavbar || (isSubnavbar && !isSliding)) {\n el.opacity = (progress) => 1 - progress ** 0.33;\n }\n if (isSliding) {\n let transformTarget = el;\n if (isLeft && activeNavBackIconText.length && params.iosAnimateNavbarBackIcon) {\n const textEl = { el: activeNavBackIconText[0] };\n transformTarget = textEl;\n els.push(textEl);\n }\n transformTarget.transform = (progress) => {\n let activeNavTranslate = progress * transformTarget.el.f7NavbarRightOffset;\n if (device.pixelRatio === 1) activeNavTranslate = Math.round(activeNavTranslate);\n if (isSubnavbar && currentNavIsLarge) {\n return `translate3d(${activeNavTranslate}px, calc(-1 * var(--f7-navbar-large-collapse-progress) * var(--f7-navbar-large-title-height)), 0)`;\n }\n return `translate3d(${activeNavTranslate}px,0,0)`;\n };\n }\n });\n $previousNavElements.each((navEl) => {\n const $navEl = $(navEl);\n const isSubnavbar = $navEl.hasClass('subnavbar');\n const isLeft = $navEl.hasClass('left');\n const isTitle = $navEl.hasClass('title');\n const isBg = $navEl.hasClass('navbar-bg');\n if ((isTitle || isBg) && previousNavIsTransparent) return;\n const el = {\n el: navEl,\n };\n if (toLarge) {\n if (isTitle) return;\n if (els.indexOf(el) < 0) els.push(el);\n\n if ($navEl.hasClass('title-large')) {\n el.opacity = 1;\n el.overflow = 'visible';\n $navEl.find('.title-large-text').each((subNavEl) => {\n els.push({\n el: subNavEl,\n 'transform-origin': transformOriginTitleLarge,\n opacity: (progress) => progress ** 3,\n transform: (progress) =>\n `translateX(calc(${\n 1 - progress\n } * (var(--f7-navbarLeftTextOffset) - var(--f7-navbarTitleLargeOffset)))) translateY(calc(${\n progress - 1\n } * var(--f7-navbar-large-title-height) + ${\n 1 - progress\n } * var(--f7-navbar-large-title-padding-vertical))) scale(${0.5 + progress * 0.5})`,\n });\n });\n return;\n }\n }\n if (isBg) {\n if (els.indexOf(el) < 0) els.push(el);\n if (!fromLarge && !toLarge) {\n if (previousNavIsCollapsed) {\n if (previousNavIsLargeTransparent) {\n el.className = 'ios-swipeback-navbar-bg-large';\n }\n el.transform = (progress) =>\n `translateX(${\n (-100 + 100 * progress) * inverter\n }%) translateY(calc(-1 * var(--f7-navbar-large-title-height)))`;\n } else {\n el.transform = (progress) => `translateX(${(-100 + 100 * progress) * inverter}%)`;\n }\n }\n if (!fromLarge && toLarge) {\n el.transform = (progress) =>\n `translateX(${(-100 + 100 * progress) * inverter}%) translateY(calc(-1 * ${\n 1 - progress\n } * var(--f7-navbar-large-title-height)))`;\n }\n if (fromLarge && !toLarge) {\n el.className = 'ios-swipeback-navbar-bg-large';\n el.transform = (progress) =>\n `translateX(${\n (-100 + 100 * progress) * inverter\n }%) translateY(calc(-${progress} * var(--f7-navbar-large-title-height)))`;\n }\n if (fromLarge && toLarge) {\n el.transform = (progress) => `translateX(${(-100 + 100 * progress) * inverter}%)`;\n }\n\n return;\n }\n if ($navEl.hasClass('title-large')) return;\n const isSliding =\n $navEl.hasClass('sliding') || $previousNavbarEl.children('.navbar-inner.sliding').length;\n if (els.indexOf(el) < 0) els.push(el);\n if (!isSubnavbar || (isSubnavbar && !isSliding)) {\n el.opacity = (progress) => progress ** 3;\n }\n if (isSliding) {\n let transformTarget = el;\n if (isLeft && previousNavBackIconText.length && params.iosAnimateNavbarBackIcon) {\n const textEl = { el: previousNavBackIconText[0] };\n transformTarget = textEl;\n els.push(textEl);\n }\n transformTarget.transform = (progress) => {\n let previousNavTranslate = transformTarget.el.f7NavbarLeftOffset * (1 - progress);\n if (device.pixelRatio === 1) previousNavTranslate = Math.round(previousNavTranslate);\n if (isSubnavbar && previousNavIsLarge) {\n return `translate3d(${previousNavTranslate}px, calc(-1 * var(--f7-navbar-large-collapse-progress) * var(--f7-navbar-large-title-height)), 0)`;\n }\n return `translate3d(${previousNavTranslate}px,0,0)`;\n };\n }\n });\n return els;\n }\n\n function setAnimatableNavElements({ progress, reset, transition, reflow } = {}) {\n const styles = ['overflow', 'transform', 'transform-origin', 'opacity'];\n if (transition === true || transition === false) {\n for (let i = 0; i < animatableNavEls.length; i += 1) {\n const el = animatableNavEls[i];\n if (el && el.el) {\n if (transition === true) el.el.classList.add('navbar-page-transitioning');\n if (transition === false) el.el.classList.remove('navbar-page-transitioning');\n }\n }\n }\n if (reflow && animatableNavEls.length && animatableNavEls[0] && animatableNavEls[0].el) {\n // eslint-disable-next-line\n animatableNavEls[0].el._clientLeft = animatableNavEls[0].el.clientLeft;\n }\n for (let i = 0; i < animatableNavEls.length; i += 1) {\n const el = animatableNavEls[i];\n if (el && el.el) {\n if (el.className && !el.classNameSet && !reset) {\n el.el.classList.add(el.className);\n el.classNameSet = true;\n }\n if (el.className && reset) {\n el.el.classList.remove(el.className);\n }\n for (let j = 0; j < styles.length; j += 1) {\n const styleProp = styles[j];\n if (el[styleProp]) {\n if (reset) {\n el.el.style[styleProp] = '';\n } else if (typeof el[styleProp] === 'function') {\n el.el.style[styleProp] = el[styleProp](progress);\n } else {\n el.el.style[styleProp] = el[styleProp];\n }\n }\n }\n }\n }\n }\n\n function handleTouchStart(e) {\n 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 = $('<div class=\"page-shadow-effect\"></div>');\n $currentPageEl.append($pageShadowEl);\n }\n }\n if (paramsSwipeBackAnimateOpacity) {\n $pageOpacityEl = $previousPageEl.find('.page-opacity-effect');\n if ($pageOpacityEl.length === 0) {\n $pageOpacityEl = $('<div class=\"page-opacity-effect\"></div>');\n $previousPageEl.append($pageOpacityEl);\n }\n }\n\n if (dynamicNavbar) {\n $currentNavbarEl = $navbarsEl.find('.navbar-current: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.js';\n\nexport default function redirect(direction, route, options) {\n const router = this;\n const r = route.route.redirect;\n const method = direction === 'forward' ? 'navigate' : 'back';\n if (options.initial && router.params.browserHistory) {\n options.replaceState = true; // eslint-disable-line\n options.history = true; // eslint-disable-line\n }\n function redirectResolve(redirectUrl, redirectOptions = {}) {\n router.allowPageChange = true;\n router[method](redirectUrl, extend({}, options, redirectOptions));\n }\n function redirectReject() {\n router.allowPageChange = true;\n }\n if (typeof r === 'function') {\n router.allowPageChange = false;\n const redirectUrl = r.call(router, {\n router,\n to: route,\n resolve: redirectResolve,\n reject: redirectReject,\n direction,\n app: router.app,\n });\n if (redirectUrl && typeof redirectUrl === 'string') {\n router.allowPageChange = true;\n return router[method](redirectUrl, options);\n }\n return router;\n }\n return router[method](r, options);\n}\n","function processQueue(router, routerQueue, routeQueue, to, from, resolve, reject, direction) {\n const queue = [];\n\n if (Array.isArray(routeQueue)) {\n queue.push(...routeQueue);\n } else if (routeQueue && typeof routeQueue === 'function') {\n queue.push(routeQueue);\n }\n if (routerQueue) {\n if (Array.isArray(routerQueue)) {\n queue.push(...routerQueue);\n } else {\n queue.push(routerQueue);\n }\n }\n\n function next() {\n if (queue.length === 0) {\n resolve();\n return;\n }\n const queueItem = queue.shift();\n\n queueItem.call(router, {\n router,\n to,\n from,\n resolve() {\n next();\n },\n reject() {\n reject();\n },\n direction,\n app: router.app,\n });\n }\n next();\n}\n\nexport default function processRouteQueue(to, from, resolve, reject, direction) {\n const router = this;\n function enterNextRoute() {\n if (to && to.route && (router.params.routesBeforeEnter || to.route.beforeEnter)) {\n router.allowPageChange = false;\n processQueue(\n router,\n router.params.routesBeforeEnter,\n to.route.beforeEnter,\n to,\n from,\n () => {\n router.allowPageChange = true;\n resolve();\n },\n () => {\n reject();\n },\n direction,\n );\n } else {\n resolve();\n }\n }\n function leaveCurrentRoute() {\n if (from && from.route && (router.params.routesBeforeLeave || from.route.beforeLeave)) {\n router.allowPageChange = false;\n processQueue(\n router,\n router.params.routesBeforeLeave,\n from.route.beforeLeave,\n to,\n from,\n () => {\n router.allowPageChange = true;\n enterNextRoute();\n },\n () => {\n reject();\n },\n direction,\n );\n } else {\n enterNextRoute();\n }\n }\n leaveCurrentRoute();\n}\n","export default function appRouterCheck(router, method) {\n if (!router.view) {\n throw new Error(\n `Framework7: it is not allowed to use router methods on global app router. Use router methods only on related View, e.g. app.views.main.router.${method}(...)`,\n );\n }\n}\n","export default function asyncComponent(router, component, resolve, reject) {\n function resolvePromise(componentPromise) {\n componentPromise\n .then((c) => {\n // eslint-disable-next-line\n resolve({ component: c.default || c._default || c });\n })\n .catch((err) => {\n reject();\n throw new Error(err);\n });\n }\n if (component instanceof Promise) {\n resolvePromise(component);\n return;\n }\n const asyncComponentResult = component.call(router);\n if (asyncComponentResult instanceof Promise) {\n resolvePromise(asyncComponentResult);\n } else {\n resolve({ component: asyncComponentResult });\n }\n}\n","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { extend, parseUrlQuery } from '../../shared/utils.js';\nimport History from '../../shared/history.js';\nimport redirect from './redirect.js';\nimport processRouteQueue from './process-route-queue.js';\nimport appRouterCheck from './app-router-check.js';\nimport asyncComponent from './async-component.js';\n\nfunction refreshPage() {\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 navigate(navigateParams, navigateOptions = {}) {\n const router = this;\n\n if (router.swipeBackActive) return router;\n let url;\n let createRoute;\n let name;\n let path;\n let query;\n let params;\n let route;\n if (typeof navigateParams === 'string') {\n url = navigateParams;\n } else {\n url = navigateParams.url;\n createRoute = navigateParams.route;\n name = navigateParams.name;\n path = navigateParams.path;\n query = navigateParams.query;\n params = navigateParams.params;\n }\n if (name || path) {\n url = router.generateUrl({ path, name, params, query });\n if (url) {\n return router.navigate(url, navigateOptions);\n }\n return router;\n }\n const app = router.app;\n appRouterCheck(router, 'navigate');\n if (url === '#' || url === '') {\n return router;\n }\n\n let navigateUrl = url.replace('./', '');\n if (navigateUrl[0] !== '/' && navigateUrl.indexOf('#') !== 0) {\n const currentPath = router.currentRoute.parentPath || router.currentRoute.path;\n navigateUrl = ((currentPath ? `${currentPath}/` : '/') + navigateUrl)\n .replace('///', '/')\n .replace('//', '/');\n }\n if (createRoute) {\n route = extend(router.parseRouteUrl(navigateUrl), {\n route: extend({}, createRoute),\n });\n } else {\n route = router.findMatchingRoute(navigateUrl);\n }\n\n if (!route) {\n return router;\n }\n if (route.route && route.route.viewName) {\n const anotherViewName = route.route.viewName;\n const anotherView = app.views[anotherViewName];\n if (!anotherView) {\n throw new Error(\n `Framework7: There is no View with \"${anotherViewName}\" name that was specified in this route`,\n );\n }\n if (anotherView !== router.view) {\n return anotherView.router.navigate(navigateParams, navigateOptions);\n }\n }\n\n if (route.route.redirect) {\n return redirect.call(router, 'forward', route, navigateOptions);\n }\n\n const options = {};\n if (route.route.options) {\n extend(options, route.route.options, navigateOptions);\n } else {\n extend(options, navigateOptions);\n }\n\n if (\n options.openIn &&\n (!router.params.ignoreOpenIn || (router.params.ignoreOpenIn && router.history.length > 0))\n ) {\n return router.openIn(router, navigateUrl, options);\n }\n\n options.route = route;\n\n function resolve() {\n let routerLoaded = false;\n 'popup popover sheet loginScreen actions customModal panel'\n .split(' ')\n .forEach((modalLoadProp) => {\n if (route.route[modalLoadProp] && !routerLoaded) {\n routerLoaded = true;\n router.modalLoad(modalLoadProp, route, options, 'forward');\n }\n });\n if (route.route.keepAlive && route.route.keepAliveData) {\n load(router, { el: route.route.keepAliveData.pageEl }, options, false);\n routerLoaded = true;\n }\n 'url content component pageName el componentUrl'.split(' ').forEach((pageLoadProp) => {\n if (route.route[pageLoadProp] && !routerLoaded) {\n routerLoaded = true;\n load(router, { [pageLoadProp]: route.route[pageLoadProp] }, options, false);\n }\n });\n if (routerLoaded) return;\n // Async\n function asyncResolve(resolveParams, resolveOptions) {\n router.allowPageChange = false;\n let resolvedAsModal = false;\n\n 'popup popover sheet loginScreen actions customModal panel'\n .split(' ')\n .forEach((modalLoadProp) => {\n if (resolveParams[modalLoadProp]) {\n resolvedAsModal = true;\n const modalRoute = extend({}, route, { route: resolveParams });\n router.allowPageChange = true;\n router.modalLoad(modalLoadProp, modalRoute, extend(options, resolveOptions), 'forward');\n }\n });\n if (resolvedAsModal) return;\n load(router, resolveParams, extend(options, resolveOptions), true);\n }\n function asyncReject() {\n router.allowPageChange = true;\n }\n if (route.route.async) {\n router.allowPageChange = false;\n route.route.async.call(router, {\n router,\n to: options.route,\n from: router.currentRoute,\n resolve: asyncResolve,\n reject: asyncReject,\n direction: 'forward',\n app,\n });\n }\n if (route.route.asyncComponent) {\n asyncComponent(router, route.route.asyncComponent, asyncResolve, asyncReject);\n }\n }\n function reject() {\n router.allowPageChange = true;\n }\n\n if (router.params.masterDetailBreakpoint > 0 && route.route.masterRoute) {\n // load detail route\n let preloadMaster = true;\n let masterLoaded = false;\n if (router.currentRoute && router.currentRoute.route) {\n if (\n (router.currentRoute.route.master === true ||\n (typeof router.currentRoute.route.master === 'function' &&\n router.currentRoute.route.master(app, router))) &&\n (router.currentRoute.route === route.route.masterRoute ||\n router.currentRoute.route.path === route.route.masterRoute.path)\n ) {\n preloadMaster = false;\n }\n if (\n router.currentRoute.route.masterRoute &&\n (router.currentRoute.route.masterRoute === route.route.masterRoute ||\n router.currentRoute.route.masterRoute.path === route.route.masterRoute.path)\n ) {\n preloadMaster = false;\n masterLoaded = true;\n }\n }\n if (preloadMaster || (masterLoaded && navigateOptions.reloadAll)) {\n router.navigate(\n { path: route.route.masterRoute.path, params: route.params || {} },\n {\n animate: false,\n reloadAll: navigateOptions.reloadAll,\n reloadCurrent: navigateOptions.reloadCurrent,\n reloadPrevious: navigateOptions.reloadPrevious,\n browserHistory: !navigateOptions.initial,\n history: !navigateOptions.initial,\n once: {\n pageAfterIn() {\n router.navigate(\n navigateParams,\n extend({}, navigateOptions, {\n animate: false,\n reloadAll: false,\n reloadCurrent: false,\n reloadPrevious: false,\n history: !navigateOptions.initial,\n browserHistory: !navigateOptions.initial,\n }),\n );\n },\n },\n },\n );\n return router;\n }\n }\n\n processRouteQueue.call(\n router,\n route,\n router.currentRoute,\n () => {\n if (route.route.modules) {\n app\n .loadModules(\n Array.isArray(route.route.modules) ? route.route.modules : [route.route.modules],\n )\n .then(() => {\n resolve();\n })\n .catch(() => {\n reject();\n });\n } else {\n resolve();\n }\n },\n () => {\n reject();\n },\n 'forward',\n );\n\n // Return Router\n return router;\n}\nexport { refreshPage, navigate };\n","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { extend, parseUrlQuery } from '../../shared/utils.js';\nimport { getDevice } from '../../shared/get-device.js';\nimport History from '../../shared/history.js';\nimport redirect from './redirect.js';\nimport processRouteQueue from './process-route-queue.js';\nimport appRouterCheck from './app-router-check.js';\nimport asyncComponent from './async-component.js';\n\nfunction backward(router, el, backwardOptions) {\n const device = getDevice();\n const document = getDocument();\n const $el = $(el);\n const app = router.app;\n const view = router.view;\n\n const options = extend(\n false,\n {\n animate: router.params.animate,\n browserHistory: true,\n replaceState: false,\n },\n backwardOptions,\n );\n\n const masterDetailEnabled = router.params.masterDetailBreakpoint > 0;\n const isMaster =\n masterDetailEnabled &&\n options.route &&\n options.route.route &&\n (options.route.route.master === true ||\n (typeof options.route.route.master === 'function' &&\n options.route.route.master(app, router)));\n let masterPageEl;\n let masterPageRemoved;\n\n const dynamicNavbar = router.dynamicNavbar;\n\n const $newPage = $el;\n const $oldPage = router.$el.children('.page-current');\n const initialPreload = $oldPage.length === 0 && options.preload;\n const currentIsMaster = masterDetailEnabled && $oldPage.hasClass('page-master');\n\n if ($newPage.length) {\n // Remove theme elements\n router.removeThemeElements($newPage);\n }\n\n let $navbarsEl;\n let $newNavbarEl;\n let $oldNavbarEl;\n\n if (dynamicNavbar) {\n $newNavbarEl = $newPage.children('.navbar');\n $navbarsEl = router.$navbarsEl;\n if ($newNavbarEl.length === 0 && $newPage[0] && $newPage[0].f7Page) {\n // Try from pageData\n $newNavbarEl = $newPage[0].f7Page.$navbarEl;\n }\n $oldNavbarEl = $navbarsEl.find('.navbar-current');\n }\n\n router.allowPageChange = false;\n if ($newPage.length === 0 || ($oldPage.length === 0 && !options.preload)) {\n router.allowPageChange = true;\n return router;\n }\n\n // Remove theme elements\n router.removeThemeElements($newPage);\n\n // Save Keep Alive Cache\n if (\n options.route &&\n options.route.route &&\n options.route.route.keepAlive &&\n !options.route.route.keepAliveData\n ) {\n options.route.route.keepAliveData = {\n pageEl: $el[0],\n };\n }\n\n // Pages In View\n let isDetail;\n let isDetailRoot;\n if (masterDetailEnabled) {\n const $pagesInView = router.$el\n .children('.page: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 if (navigateOptions.preload && $previousPage.hasClass('stacked')) {\n loadBack(\n router,\n { el: $previousPage },\n extend(navigateOptions, {\n route: previousPageRoute,\n }),\n );\n return router;\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.js';\nimport Framework7Class from '../../shared/class.js';\nimport {\n extend,\n nextFrame,\n parseUrlQuery,\n serializeObject,\n now,\n eventNameToColonCase,\n} from '../../shared/utils.js';\nimport History from '../../shared/history.js';\nimport SwipeBack from './swipe-back.js';\n\nimport { refreshPage, navigate } from './navigate.js';\nimport { tabLoad, tabRemove } from './tab.js';\nimport { modalLoad, modalRemove } from './modal.js';\nimport { back } from './back.js';\nimport { clearPreviousHistory } from './clear-previous-history.js';\nimport appRouterCheck from './app-router-check.js';\n\nclass Router extends Framework7Class {\n constructor(app, view) {\n super({}, [typeof view === 'undefined' ? app : view]);\n const router = this;\n\n // Is App Router\n router.isAppRouter = typeof view === 'undefined';\n\n if (router.isAppRouter) {\n // App Router\n extend(false, router, {\n app,\n params: app.params.view,\n routes: app.routes || [],\n cache: app.cache,\n });\n } else {\n // View Router\n extend(false, router, {\n app,\n view,\n viewId: view.id,\n id: view.params.routerId,\n params: view.params,\n routes: view.routes,\n history: view.history,\n 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 if (Object.keys(query).length) url += `?${serializeObject(query)}`;\n }\n\n return url;\n }\n\n findTabRouteUrl(tabEl) {\n const router = this;\n const $tabEl = $(tabEl);\n const parentPath = router.currentRoute.route.parentPath;\n const tabId = $tabEl.attr('id');\n const flattenedRoutes = router.flattenRoutes(router.routes);\n let foundTabRouteUrl;\n flattenedRoutes.forEach((route) => {\n if (route.parentPath === parentPath && route.tab && route.tab.id === tabId) {\n if (router.currentRoute.params && Object.keys(router.currentRoute.params).length > 0) {\n foundTabRouteUrl = router.constructRouteUrl(route, {\n params: router.currentRoute.params,\n query: router.currentRoute.query,\n });\n } else {\n foundTabRouteUrl = route.path;\n }\n }\n });\n return foundTabRouteUrl;\n }\n\n findRouteByKey(key, value) {\n const router = this;\n const routes = router.routes;\n const flattenedRoutes = router.flattenRoutes(routes);\n let matchingRoute;\n\n flattenedRoutes.forEach((route) => {\n if (matchingRoute) return;\n if (route[key] === value) {\n matchingRoute = route;\n }\n });\n return matchingRoute;\n }\n\n findMatchingRoute(url) {\n if (!url) return undefined;\n const router = this;\n const routes = router.routes;\n const flattenedRoutes = router.flattenRoutes(routes);\n const { path, query, hash, params } = router.parseRouteUrl(url);\n let matchingRoute;\n flattenedRoutes.forEach((route) => {\n if (matchingRoute) return;\n const keys = [];\n\n const pathsToMatch = [route.path];\n if (route.alias) {\n if (typeof route.alias === 'string') pathsToMatch.push(route.alias);\n else if (Array.isArray(route.alias)) {\n route.alias.forEach((aliasPath) => {\n pathsToMatch.push(aliasPath);\n });\n }\n }\n\n let matched;\n pathsToMatch.forEach((pathToMatch) => {\n if (matched) return;\n matched = pathToRegexp(pathToMatch, keys).exec(path);\n });\n\n if (matched) {\n keys.forEach((keyObj, index) => {\n if (typeof keyObj.name === 'number') return;\n const paramValue = matched[index + 1];\n if (typeof paramValue === 'undefined' || paramValue === null) {\n params[keyObj.name] = paramValue;\n } else {\n params[keyObj.name] = decodeURIComponent(paramValue);\n }\n });\n\n let parentPath;\n if (route.parentPath) {\n parentPath = path\n .split('/')\n .slice(0, route.parentPath.split('/').length - 1)\n .join('/');\n }\n\n matchingRoute = {\n query,\n hash,\n params,\n url,\n path,\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.js';\nimport { extend } from '../../shared/utils.js';\nimport History from '../../shared/history.js';\nimport asyncComponent from './async-component.js';\n\nfunction tabLoad(tabRoute, loadOptions = {}) {\n const router = this;\n const options = extend(\n {\n animate: router.params.animate,\n browserHistory: true,\n history: true,\n parentPageEl: null,\n preload: false,\n on: {},\n },\n loadOptions,\n );\n\n let currentRoute;\n let previousRoute;\n if (options.route) {\n // Set Route\n if (!options.preload && options.route !== router.currentRoute) {\n previousRoute = router.previousRoute;\n router.currentRoute = options.route;\n }\n if (options.preload) {\n currentRoute = options.route;\n previousRoute = router.currentRoute;\n } else {\n currentRoute = router.currentRoute;\n if (!previousRoute) previousRoute = router.previousRoute;\n }\n\n // Update Browser History\n if (router.params.browserHistory && options.browserHistory && !options.reloadPrevious) {\n History[router.params.browserHistoryTabs](\n router.view.id,\n {\n url: options.route.url,\n },\n (router.params.browserHistoryRoot || '') +\n router.params.browserHistorySeparator +\n options.route.url,\n );\n }\n\n // Update Router History\n if (options.history) {\n router.history[Math.max(router.history.length - 1, 0)] = options.route.url;\n router.saveHistory();\n }\n }\n\n // Show Tab\n const $parentPageEl = $(options.parentPageEl || router.currentPageEl);\n let tabEl;\n if ($parentPageEl.length && $parentPageEl.find(`#${tabRoute.id}`).length) {\n tabEl = $parentPageEl.find(`#${tabRoute.id}`).eq(0);\n } else if (router.view.selector) {\n tabEl = `${router.view.selector} #${tabRoute.id}`;\n } else {\n tabEl = `#${tabRoute.id}`;\n }\n const tabShowResult = router.app.tab.show({\n tabEl,\n animate: options.animate,\n tabRoute: options.route,\n });\n\n const { $newTabEl, $oldTabEl, animated, onTabsChanged } = tabShowResult;\n\n if ($newTabEl && $newTabEl.parents('.page').length > 0 && options.route) {\n const tabParentPageData = $newTabEl.parents('.page')[0].f7Page;\n if (tabParentPageData && options.route) {\n tabParentPageData.route = options.route;\n }\n }\n\n // Tab Content Loaded\n function onTabLoaded(contentEl) {\n // Remove theme elements\n router.removeThemeElements($newTabEl);\n\n let tabEventTarget = $newTabEl;\n if (typeof contentEl !== 'string') tabEventTarget = $(contentEl);\n\n tabEventTarget.trigger('tab:init tab:mounted', tabRoute);\n router.emit('tabInit tabMounted', $newTabEl[0], tabRoute);\n\n if ($oldTabEl && $oldTabEl.length) {\n if (animated) {\n onTabsChanged(() => {\n router.emit('routeChanged', router.currentRoute, router.previousRoute, router);\n if (router.params.unloadTabContent) {\n router.tabRemove($oldTabEl, $newTabEl, tabRoute);\n }\n });\n } else {\n router.emit('routeChanged', router.currentRoute, router.previousRoute, router);\n if (router.params.unloadTabContent) {\n router.tabRemove($oldTabEl, $newTabEl, tabRoute);\n }\n }\n }\n }\n\n if ($newTabEl[0].f7RouterTabLoaded) {\n if (!$oldTabEl || !$oldTabEl.length) return router;\n if (animated) {\n onTabsChanged(() => {\n router.emit('routeChanged', router.currentRoute, router.previousRoute, router);\n });\n } else {\n router.emit('routeChanged', router.currentRoute, router.previousRoute, router);\n }\n return router;\n }\n\n // Load Tab Content\n function loadTab(loadTabParams, loadTabOptions) {\n // Load Tab Props\n const { url, content, el, component, componentUrl } = loadTabParams;\n // Component/Template Callbacks\n function resolve(contentEl) {\n router.allowPageChange = true;\n if (!contentEl) return;\n if (typeof contentEl === 'string') {\n $newTabEl.html(contentEl);\n } else {\n $newTabEl.html('');\n if (contentEl.f7Component) {\n contentEl.f7Component.mount((componentEl) => {\n $newTabEl.append(componentEl);\n });\n } else {\n $newTabEl.append(contentEl);\n }\n }\n $newTabEl[0].f7RouterTabLoaded = true;\n onTabLoaded(contentEl);\n }\n function reject() {\n router.allowPageChange = true;\n return router;\n }\n\n if (content) {\n resolve(content);\n } else if (el) {\n resolve(el);\n } else if (component || componentUrl) {\n // Load from component (F7/Vue/React/...)\n try {\n router.tabComponentLoader({\n tabEl: $newTabEl[0],\n component,\n componentUrl,\n options: loadTabOptions,\n resolve,\n reject,\n });\n } catch (err) {\n router.allowPageChange = true;\n throw err;\n }\n } else if (url) {\n // Load using XHR\n if (router.xhrAbortController) {\n router.xhrAbortController.abort();\n router.xhrAbortController = false;\n }\n router\n .xhrRequest(url, loadTabOptions)\n .then((tabContent) => {\n resolve(tabContent);\n })\n .catch(() => {\n router.allowPageChange = true;\n });\n }\n }\n\n let hasContentLoadProp;\n 'url content component el componentUrl'.split(' ').forEach((tabLoadProp) => {\n if (tabRoute[tabLoadProp]) {\n hasContentLoadProp = true;\n loadTab({ [tabLoadProp]: tabRoute[tabLoadProp] }, options);\n }\n });\n\n // Async\n function asyncResolve(resolveParams, resolveOptions) {\n loadTab(resolveParams, extend(options, resolveOptions));\n }\n function asyncReject() {\n router.allowPageChange = true;\n }\n if (tabRoute.async) {\n tabRoute.async.call(router, {\n router,\n to: currentRoute,\n from: previousRoute,\n resolve: asyncResolve,\n reject: asyncReject,\n app: router.app,\n });\n } else if (tabRoute.asyncComponent) {\n asyncComponent(router, tabRoute.asyncComponent, asyncResolve, asyncReject);\n } else if (!hasContentLoadProp) {\n router.allowPageChange = true;\n }\n\n return router;\n}\nfunction tabRemove($oldTabEl, $newTabEl, tabRoute) {\n const router = this;\n\n let hasTabComponentChild;\n if ($oldTabEl[0]) {\n $oldTabEl[0].f7RouterTabLoaded = false;\n delete $oldTabEl[0].f7RouterTabLoaded;\n }\n $oldTabEl.children().each((tabChild) => {\n if (tabChild.f7Component) {\n hasTabComponentChild = true;\n $(tabChild).trigger('tab:beforeremove', tabRoute);\n tabChild.f7Component.destroy();\n }\n });\n if (!hasTabComponentChild) {\n $oldTabEl.trigger('tab:beforeremove', tabRoute);\n }\n router.emit('tabBeforeRemove', $oldTabEl[0], $newTabEl[0], tabRoute);\n router.removeTabContent($oldTabEl[0], tabRoute);\n}\n\nexport { tabLoad, tabRemove };\n","import { extend, nextTick } from '../../shared/utils.js';\nimport History from '../../shared/history.js';\nimport asyncComponent from './async-component.js';\n\nfunction modalLoad(modalType, route, loadOptions = {}, direction) {\n const router = this;\n const app = router.app;\n const isPanel = modalType === 'panel';\n const modalOrPanel = isPanel ? 'panel' : 'modal';\n\n const options = extend(\n {\n animate: router.params.animate,\n browserHistory: true,\n history: true,\n on: {},\n once: {},\n },\n loadOptions,\n );\n\n const modalParams = extend({}, route.route[modalType]);\n const modalRoute = route.route;\n\n const routeCallback = (modal, name) => {\n const { on, once } = options;\n let callback;\n if (name === 'open') {\n callback = on.modalOpen || once.modalOpen || on.panelOpen || once.panelOpen;\n }\n if (name === 'close') {\n callback = on.modalClose || once.modalClose || on.panelClose || once.panelClose;\n }\n if (name === 'closed') {\n callback = on.modalClosed || once.modalClosed || on.panelClosed || once.panelClosed;\n }\n if (callback) callback(modal);\n };\n\n function onModalLoaded() {\n // Create Modal\n const modal = app[modalType].create(modalParams);\n modalRoute.modalInstance = modal;\n\n const hasEl = modal.el;\n\n function closeOnSwipeBack() {\n modal.close();\n }\n modal.on(`${modalOrPanel}Open`, () => {\n if (!hasEl) {\n // Remove theme elements\n router.removeThemeElements(modal.el);\n\n // Emit events\n modal.$el.trigger(\n `${modalType.toLowerCase()}:init ${modalType.toLowerCase()}:mounted`,\n route,\n modal,\n );\n router.emit(\n `${!isPanel ? 'modalInit' : ''} ${modalType}Init ${modalType}Mounted`,\n modal.el,\n route,\n modal,\n );\n }\n router.once('swipeBackMove', closeOnSwipeBack);\n routeCallback(modal, 'open');\n });\n modal.on(`${modalOrPanel}Close`, () => {\n router.off('swipeBackMove', closeOnSwipeBack);\n if (!modal.closeByRouter) {\n router.back();\n }\n routeCallback(modal, 'close');\n });\n\n modal.on(`${modalOrPanel}Closed`, () => {\n modal.$el.trigger(`${modalType.toLowerCase()}:beforeremove`, route, modal);\n modal.emit(\n `${!isPanel ? 'modalBeforeRemove ' : ''}${modalType}BeforeRemove`,\n modal.el,\n route,\n modal,\n );\n const modalComponent = modal.el.f7Component;\n routeCallback(modal, 'closed');\n if (modalComponent) {\n modalComponent.destroy();\n }\n nextTick(() => {\n if (modalComponent || modalParams.component || modalParams.asyncComponent) {\n router.removeModal(modal.el);\n }\n modal.destroy();\n delete modal.route;\n delete modalRoute.modalInstance;\n });\n });\n\n if (options.route) {\n // Update Browser History\n if (router.params.browserHistory && options.browserHistory) {\n History.push(\n router.view.id,\n {\n url: options.route.url,\n modal: modalType,\n },\n (router.params.browserHistoryRoot || '') +\n router.params.browserHistorySeparator +\n options.route.url,\n );\n }\n\n // Set Route\n if (options.route !== router.currentRoute) {\n modal.route = extend(options.route, { modal });\n router.currentRoute = modal.route;\n }\n\n // Update Router History\n if (options.history && !options.reloadCurrent) {\n router.history.push(options.route.url);\n router.saveHistory();\n }\n }\n\n if (hasEl) {\n // Remove theme elements\n router.removeThemeElements(modal.el);\n\n // Emit events\n modal.$el.trigger(\n `${modalType.toLowerCase()}:init ${modalType.toLowerCase()}:mounted`,\n route,\n modal,\n );\n router.emit(\n `${modalOrPanel}Init ${modalType}Init ${modalType}Mounted`,\n modal.el,\n route,\n modal,\n );\n }\n\n // Open\n modal.open(options.animate === false || options.animate === true ? options.animate : undefined);\n }\n\n // Load Modal Content\n function loadModal(loadModalParams, loadModalOptions) {\n // Load Modal Props\n const { url, content, component, componentUrl } = loadModalParams;\n\n // Component/Template Callbacks\n function resolve(contentEl) {\n if (contentEl) {\n if (typeof contentEl === 'string') {\n modalParams.content = contentEl;\n } else if (contentEl.f7Component) {\n contentEl.f7Component.mount((componentEl) => {\n modalParams.el = componentEl;\n app.$el.append(componentEl);\n });\n } else {\n modalParams.el = contentEl;\n }\n onModalLoaded();\n }\n }\n function reject() {\n router.allowPageChange = true;\n return router;\n }\n\n if (content) {\n resolve(content);\n } else if (component || componentUrl) {\n // Load from component (F7/Vue/React/...)\n try {\n router.modalComponentLoader({\n rootEl: app.el,\n component,\n componentUrl,\n options: loadModalOptions,\n resolve,\n reject,\n });\n } catch (err) {\n router.allowPageChange = true;\n throw err;\n }\n } else if (url) {\n // Load using XHR\n if (router.xhrAbortController) {\n router.xhrAbortController.abort();\n router.xhrAbortController = false;\n }\n router\n .xhrRequest(url, loadModalOptions)\n .then((modalContent) => {\n modalParams.content = modalContent;\n onModalLoaded();\n })\n .catch(() => {\n router.allowPageChange = true;\n });\n } else {\n onModalLoaded();\n }\n }\n\n let foundLoadProp;\n 'url content component el componentUrl template'.split(' ').forEach((modalLoadProp) => {\n if (modalParams[modalLoadProp] && !foundLoadProp) {\n foundLoadProp = true;\n loadModal({ [modalLoadProp]: modalParams[modalLoadProp] }, options);\n }\n });\n if (!foundLoadProp && modalType === 'actions') {\n onModalLoaded();\n }\n\n // Async\n function asyncResolve(resolveParams, resolveOptions) {\n loadModal(resolveParams, extend(options, resolveOptions));\n }\n function asyncReject() {\n router.allowPageChange = true;\n }\n if (modalParams.async) {\n modalParams.async.call(router, {\n router,\n to: options.route,\n from: router.currentRoute,\n resolve: asyncResolve,\n reject: asyncReject,\n direction,\n app,\n });\n }\n if (modalParams.asyncComponent) {\n asyncComponent(router, modalParams.asyncComponent, asyncResolve, asyncReject);\n }\n return router;\n}\nfunction modalRemove(modal) {\n extend(modal, { closeByRouter: true });\n modal.close();\n}\n\nexport { modalLoad, modalRemove };\n","import $ from '../../shared/dom7.js';\nimport appRouterCheck from './app-router-check.js';\n\nfunction clearPreviousPages(router) {\n appRouterCheck(router, 'clearPreviousPages');\n const app = router.app;\n const dynamicNavbar = router.dynamicNavbar;\n\n const $pagesToRemove = router.$el.children('.page').filter((pageInView) => {\n if (router.currentRoute && (router.currentRoute.modal || router.currentRoute.panel))\n return true;\n return pageInView !== router.currentPageEl;\n });\n\n $pagesToRemove.each((pageEl) => {\n const $oldPageEl = $(pageEl);\n const $oldNavbarEl = $(app.navbar.getElByPage($oldPageEl));\n 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.js';\n\nexport default {\n name: 'router',\n static: {\n Router,\n },\n instance: {\n cache: {\n xhr: [],\n templates: [],\n components: [],\n },\n },\n create() {\n const instance = this;\n if (instance.app) {\n // View Router\n if (instance.params.router) {\n instance.router = new Router(instance.app, instance);\n }\n } else {\n // App Router\n instance.router = new Router(instance);\n }\n },\n};\n","import $ from '../../shared/dom7.js';\nimport { extend } from '../../shared/utils.js';\nimport { getSupport } from '../../shared/get-support.js';\n\nfunction resizableView(view) {\n const app = view.app;\n const support = getSupport();\n if (view.resizableInitialized) return;\n extend(view, {\n resizable: true,\n resizableWidth: null,\n resizableInitialized: true,\n });\n const $htmlEl = $('html');\n const { $el } = view;\n if (!$el) return;\n\n let $resizeHandlerEl;\n\n let isTouched;\n let isMoved;\n const touchesStart = {};\n let touchesDiff;\n let width;\n\n let minWidth;\n let maxWidth;\n\n function transformCSSWidth(v) {\n if (!v) return null;\n if (v.indexOf('%') >= 0 || v.indexOf('vw') >= 0) {\n return (parseInt(v, 10) / 100) * app.width;\n }\n const newV = parseInt(v, 10);\n if (Number.isNaN(newV)) return null;\n return newV;\n }\n\n function isResizable() {\n return view.resizable && $el.hasClass('view-resizable') && $el.hasClass('view-master-detail');\n }\n\n function handleTouchStart(e) {\n if (!isResizable()) return;\n touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n isMoved = false;\n isTouched = true;\n const $pageMasterEl = $el.children('.page-master');\n minWidth = transformCSSWidth($pageMasterEl.css('min-width'));\n maxWidth = transformCSSWidth($pageMasterEl.css('max-width'));\n }\n function handleTouchMove(e) {\n if (!isTouched) return;\n e.f7PreventSwipePanel = true;\n const pageX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n\n if (!isMoved) {\n width = $resizeHandlerEl[0].offsetLeft + $resizeHandlerEl[0].offsetWidth;\n $el.addClass('view-resizing');\n $htmlEl.css('cursor', 'col-resize');\n }\n\n isMoved = true;\n\n e.preventDefault();\n\n touchesDiff = pageX - touchesStart.x;\n\n let newWidth = width + touchesDiff;\n if (minWidth && !Number.isNaN(minWidth)) {\n newWidth = Math.max(newWidth, minWidth);\n }\n if (maxWidth && !Number.isNaN(maxWidth)) {\n newWidth = Math.min(newWidth, maxWidth);\n }\n newWidth = Math.min(Math.max(newWidth, 0), app.width);\n\n view.resizableWidth = newWidth;\n $htmlEl[0].style.setProperty('--f7-page-master-width', `${newWidth}px`);\n\n $el.trigger('view:resize', newWidth);\n view.emit('local::resize viewResize', view, newWidth);\n }\n function handleTouchEnd() {\n $('html').css('cursor', '');\n if (!isTouched || !isMoved) {\n isTouched = false;\n isMoved = false;\n return;\n }\n isTouched = false;\n isMoved = false;\n\n $htmlEl[0].style.setProperty('--f7-page-master-width', `${view.resizableWidth}px`);\n $el.removeClass('view-resizing');\n }\n\n function handleResize() {\n if (!view.resizableWidth) return;\n minWidth = transformCSSWidth($resizeHandlerEl.css('min-width'));\n maxWidth = transformCSSWidth($resizeHandlerEl.css('max-width'));\n\n if (minWidth && !Number.isNaN(minWidth) && view.resizableWidth < minWidth) {\n view.resizableWidth = Math.max(view.resizableWidth, minWidth);\n }\n if (maxWidth && !Number.isNaN(maxWidth) && view.resizableWidth > maxWidth) {\n view.resizableWidth = Math.min(view.resizableWidth, maxWidth);\n }\n view.resizableWidth = Math.min(Math.max(view.resizableWidth, 0), app.width);\n\n $htmlEl[0].style.setProperty('--f7-page-master-width', `${view.resizableWidth}px`);\n }\n\n $resizeHandlerEl = view.$el.children('.view-resize-handler');\n if (!$resizeHandlerEl.length) {\n view.$el.append('<div class=\"view-resize-handler\"></div>');\n $resizeHandlerEl = view.$el.children('.view-resize-handler');\n }\n view.$resizeHandlerEl = $resizeHandlerEl;\n\n $el.addClass('view-resizable');\n\n // Add Events\n const passive = support.passiveListener ? { passive: true } : false;\n\n view.$el.on(app.touchEvents.start, '.view-resize-handler', handleTouchStart, passive);\n app.on('touchmove:active', handleTouchMove);\n app.on('touchend:passive', handleTouchEnd);\n app.on('resize', handleResize);\n view.on('beforeOpen', handleResize);\n\n view.once('viewDestroy', () => {\n $el.removeClass('view-resizable');\n view.$resizeHandlerEl.remove();\n view.$el.off(app.touchEvents.start, '.view-resize-handler', handleTouchStart, passive);\n app.off('touchmove:active', handleTouchMove);\n app.off('touchend:passive', handleTouchEnd);\n app.off('resize', handleResize);\n view.off('beforeOpen', handleResize);\n });\n}\n\nexport default resizableView;\n","import $ from '../../shared/dom7.js';\nimport { extend } from '../../shared/utils.js';\nimport Router from '../../modules/router/router.js';\nimport Framework7Class from '../../shared/class.js';\nimport resizableView from './resizable-view.js';\n\nclass View extends Framework7Class {\n constructor(app, el, viewParams = {}) {\n super(viewParams, [app]);\n\n const view = this;\n\n const ssr = view.params.routerId;\n\n const defaults = {\n routes: [],\n routesAdd: [],\n };\n\n if (!ssr) {\n const $el = $(el);\n if (!$el.length) {\n let message = \"Framework7: can't create a View instance because \";\n message +=\n typeof el === 'string'\n ? `the selector \"${el}\" didn't match any element`\n : 'el must be an HTMLElement or Dom7 object';\n\n throw new Error(message);\n }\n }\n\n // Default View params\n view.params = extend({ el }, defaults, app.params.view, viewParams);\n\n // Routes\n if (view.params.routes.length > 0) {\n view.routes = view.params.routes;\n } else {\n view.routes = [].concat(app.routes, view.params.routesAdd);\n }\n\n // View Props\n extend(false, view, {\n app,\n name: view.params.name,\n main: view.params.main,\n history: [],\n scrollHistory: {},\n });\n\n // Install Modules\n view.useModules();\n\n // Add to app\n app.views.push(view);\n if (view.main) {\n app.views.main = view;\n }\n if (view.name) {\n app.views[view.name] = view;\n }\n\n // Index\n view.index = app.views.indexOf(view);\n\n // View ID\n let viewId;\n if (view.name) {\n viewId = `view_${view.name}`;\n } else if (view.main) {\n viewId = 'view_main';\n } else {\n viewId = `view_${view.index}`;\n }\n view.id = viewId;\n\n if (!view.params.init) {\n return view;\n }\n // Init View\n if (app.initialized) {\n view.init();\n } else {\n app.on('init', () => {\n view.init();\n });\n }\n\n return view;\n }\n\n destroy() {\n let view = this;\n const app = view.app;\n\n view.$el.trigger('view:beforedestroy');\n view.emit('local::beforeDestroy viewBeforeDestroy', view);\n\n app.off('resize', view.checkMasterDetailBreakpoint);\n\n if (view.main) {\n app.views.main = null;\n delete app.views.main;\n } else if (view.name) {\n app.views[view.name] = null;\n delete app.views[view.name];\n }\n view.$el[0].f7View = null;\n delete view.$el[0].f7View;\n\n app.views.splice(app.views.indexOf(view), 1);\n\n // Destroy Router\n if (view.params.router && view.router) {\n view.router.destroy();\n }\n\n view.emit('local::destroy viewDestroy', view);\n\n // Delete props & methods\n Object.keys(view).forEach((viewProp) => {\n view[viewProp] = null;\n delete view[viewProp];\n });\n\n view = null;\n }\n\n checkMasterDetailBreakpoint(force) {\n const view = this;\n const app = view.app;\n const wasMasterDetail = view.$el.hasClass('view-master-detail');\n const isMasterDetail =\n app.width >= view.params.masterDetailBreakpoint && view.$el.children('.page-master').length;\n if ((typeof force === 'undefined' && isMasterDetail) || force === true) {\n view.$el.addClass('view-master-detail');\n if (!wasMasterDetail) {\n view.emit('local::masterDetailBreakpoint viewMasterDetailBreakpoint', view);\n view.$el.trigger('view:masterDetailBreakpoint');\n }\n } else {\n view.$el.removeClass('view-master-detail');\n if (wasMasterDetail) {\n view.emit('local::masterDetailBreakpoint viewMasterDetailBreakpoint', view);\n view.$el.trigger('view:masterDetailBreakpoint');\n }\n }\n }\n\n initMasterDetail() {\n const view = this;\n const app = view.app;\n view.checkMasterDetailBreakpoint = view.checkMasterDetailBreakpoint.bind(view);\n view.checkMasterDetailBreakpoint();\n if (view.params.masterDetailResizable) {\n resizableView(view);\n }\n app.on('resize', view.checkMasterDetailBreakpoint);\n }\n\n mount(viewEl) {\n const view = this;\n const app = view.app;\n const el = view.params.el || viewEl;\n const $el = $(el);\n\n // Selector\n let selector;\n if (typeof el === 'string') selector = el;\n else {\n // Supposed to be HTMLElement or Dom7\n selector =\n ($el.attr('id') ? `#${$el.attr('id')}` : '') +\n ($el.attr('class')\n ? `.${$el.attr('class').replace(/ /g, '.').replace('.active', '')}`\n : '');\n }\n\n // DynamicNavbar\n let $navbarsEl;\n if (app.theme === 'ios' && view.params.iosDynamicNavbar) {\n $navbarsEl = $el.children('.navbars').eq(0);\n if ($navbarsEl.length === 0) {\n $navbarsEl = $('<div class=\"navbars\"></div>');\n }\n }\n\n extend(view, {\n $el,\n el: $el[0],\n main: view.main || $el.hasClass('view-main'),\n $navbarsEl,\n navbarsEl: $navbarsEl ? $navbarsEl[0] : undefined,\n selector,\n });\n\n if (view.main) {\n app.views.main = view;\n }\n\n // Save in DOM\n if ($el && $el[0]) {\n $el[0].f7View = view;\n }\n\n view.emit('local::mount viewMount', view);\n }\n\n init(viewEl) {\n const view = this;\n view.mount(viewEl);\n if (view.params.router) {\n if (view.params.masterDetailBreakpoint > 0) {\n view.initMasterDetail();\n }\n if (\n view.params.initRouterOnTabShow &&\n view.$el.hasClass('tab') &&\n !view.$el.hasClass('tab-active')\n ) {\n view.$el.once('tab:show', () => {\n view.router.init();\n });\n } else {\n view.router.init();\n }\n\n view.$el.trigger('view:init');\n view.emit('local::init viewInit', view);\n }\n }\n}\n\n// Use Router\nView.use(Router);\n\nexport default View;\n","import { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport ViewClass from '../../components/view/view-class.js';\n\nfunction initClicks(app) {\n function handleClicks(e) {\n const window = getWindow();\n const $clickedEl = $(e.target);\n const $clickedLinkEl = $clickedEl.closest('a');\n const isLink = $clickedLinkEl.length > 0;\n const url = isLink && $clickedLinkEl.attr('href');\n\n // Check if link is external\n if (isLink) {\n if (\n $clickedLinkEl.is(app.params.clicks.externalLinks) ||\n // eslint-disable-next-line\n (url && url.indexOf('javascript:') >= 0)\n ) {\n const target = $clickedLinkEl.attr('target');\n if (\n url &&\n window.cordova &&\n window.cordova.InAppBrowser &&\n (target === '_system' || target === '_blank')\n ) {\n e.preventDefault();\n window.cordova.InAppBrowser.open(url, target);\n } else if (\n url &&\n window.Capacitor &&\n window.Capacitor.Plugins &&\n window.Capacitor.Plugins.Browser &&\n (target === '_system' || target === '_blank')\n ) {\n e.preventDefault();\n window.Capacitor.Plugins.Browser.open({ url });\n }\n return;\n }\n }\n\n // Modules Clicks\n Object.keys(app.modules).forEach((moduleName) => {\n const moduleClicks = app.modules[moduleName].clicks;\n if (!moduleClicks) return;\n if (e.preventF7Router) return;\n Object.keys(moduleClicks).forEach((clickSelector) => {\n const matchingClickedElement = $clickedEl.closest(clickSelector).eq(0);\n if (matchingClickedElement.length > 0) {\n moduleClicks[clickSelector].call(\n app,\n matchingClickedElement,\n matchingClickedElement.dataset(),\n e,\n );\n }\n });\n });\n\n // Load Page\n let clickedLinkData = {};\n if (isLink) {\n e.preventDefault();\n clickedLinkData = $clickedLinkEl.dataset();\n }\n clickedLinkData.clickedEl = $clickedLinkEl[0];\n\n // Prevent Router\n if (e.preventF7Router) return;\n if ($clickedLinkEl.hasClass('prevent-router') || $clickedLinkEl.hasClass('router-prevent'))\n return;\n\n const validUrl = url && url.length > 0 && url[0] !== '#';\n if (validUrl || $clickedLinkEl.hasClass('back')) {\n let view;\n if (clickedLinkData.view && clickedLinkData.view === 'current') {\n view = app.views.current;\n } else if (clickedLinkData.view) {\n view = $(clickedLinkData.view)[0].f7View;\n } else {\n view = $clickedEl.parents('.view')[0] && $clickedEl.parents('.view')[0].f7View;\n if (!$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.js';\n\nexport default {\n name: 'routerComponentLoader',\n proto: {\n openIn(router, url, options) {\n const navigateOptions = {\n url,\n route: {\n path: url,\n options: {\n ...options,\n openIn: undefined,\n },\n },\n };\n const params = {\n ...options,\n };\n if (options.openIn === 'popup') {\n params.content = `<div class=\"popup popup-router-open-in\" data-url=\"${url}\"><div class=\"view view-init\" data-links-view=\"${router.view.selector}\" data-url=\"${url}\" data-ignore-open-in=\"true\"></div></div>`;\n navigateOptions.route.popup = params;\n }\n if (options.openIn === 'loginScreen') {\n params.content = `<div class=\"login-screen login-screen-router-open-in\" data-url=\"${url}\"><div class=\"view view-init\" data-links-view=\"${router.view.selector}\" data-url=\"${url}\" data-ignore-open-in=\"true\"></div></div>`;\n navigateOptions.route.loginScreen = params;\n }\n if (options.openIn === 'sheet') {\n params.content = `<div class=\"sheet-modal sheet-modal-router-open-in\" data-url=\"${url}\"><div class=\"sheet-modal-inner\"><div class=\"view view-init\" data-links-view=\"${router.view.selector}\" data-url=\"${url}\" data-ignore-open-in=\"true\"></div></div></div>`;\n navigateOptions.route.sheet = params;\n }\n if (options.openIn === 'popover') {\n params.targetEl = options.clickedEl || options.targetEl;\n params.content = `<div class=\"popover popover-router-open-in\" data-url=\"${url}\"><div class=\"popover-inner\"><div class=\"view view-init\" data-links-view=\"${router.view.selector}\" data-url=\"${url}\" data-ignore-open-in=\"true\"></div></div></div>`;\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 = `<div class=\"panel panel-router-open-in panel-${side} panel-${effect}\" data-url=\"${url}\"><div class=\"view view-init\" data-links-view=\"${router.view.selector}\" data-url=\"${url}\" data-ignore-open-in=\"true\"></div></div>`;\n navigateOptions.route.panel = params;\n }\n return router.navigate(navigateOptions);\n },\n componentLoader(component, componentUrl, options = {}, resolve, reject) {\n const router = this;\n const { app } = router;\n const url = typeof component === 'string' ? component : componentUrl;\n const compiledUrl = router.replaceRequestUrlParams(url, options);\n function compile(componentFunction) {\n let context = options.context || {};\n if (typeof context === 'function') context = context.call(router);\n else if (typeof context === 'string') {\n try {\n context = JSON.parse(context);\n } catch (err) {\n reject(err);\n throw err;\n }\n }\n const componentContext = merge({}, context, {\n f7route: options.route,\n f7router: router,\n });\n const componentProps = merge(\n options.route ? options.route.params || {} : {},\n options.props || {},\n options.routeProps || {},\n );\n let componentEl;\n let componentRoot;\n if (options.componentOptions && options.componentOptions.el) {\n componentEl = options.componentOptions.el;\n }\n if (options.componentOptions && options.componentOptions.root) {\n componentRoot = options.componentOptions.root;\n }\n app.component\n .create(componentFunction, componentProps, {\n context: componentContext,\n el: componentEl,\n root: componentRoot,\n })\n .then((createdComponent) => {\n resolve(createdComponent.el);\n })\n .catch((err) => {\n reject(err);\n throw new Error(err);\n });\n }\n let cachedComponent;\n if (compiledUrl && router.params.componentCache) {\n router.cache.components.forEach((cached) => {\n if (cached.url === compiledUrl) cachedComponent = cached.component;\n });\n }\n if (compiledUrl && cachedComponent) {\n compile(cachedComponent);\n } else if (compiledUrl && !cachedComponent) {\n // Load via XHR\n if (router.xhrAbortController) {\n router.xhrAbortController.abort();\n router.xhrAbortController = false;\n }\n router\n .xhrRequest(url, options)\n .then((loadedComponent) => {\n const parsedComponent = app.component.parse(loadedComponent);\n if (router.params.componentCache) {\n router.cache.components.push({\n url: compiledUrl,\n component: parsedComponent,\n });\n }\n compile(parsedComponent);\n })\n .catch((err) => {\n reject();\n throw err;\n });\n } else {\n compile(component);\n }\n },\n\n modalComponentLoader({ component, componentUrl, options, resolve, reject } = {}) {\n const router = this;\n router.componentLoader(\n component,\n componentUrl,\n options,\n (el) => {\n resolve(el);\n },\n reject,\n );\n },\n\n tabComponentLoader({ component, componentUrl, options, resolve, reject } = {}) {\n const router = this;\n router.componentLoader(\n component,\n componentUrl,\n options,\n (el) => {\n resolve(el);\n },\n reject,\n );\n },\n\n pageComponentLoader({ component, componentUrl, options, resolve, reject } = {}) {\n const router = this;\n router.componentLoader(\n component,\n componentUrl,\n options,\n (el, newOptions = {}) => {\n resolve(el, newOptions);\n },\n reject,\n );\n },\n },\n};\n","var n=function(t,s,r,e){var u;s[0]=0;for(var h=1;h<s.length;h++){var p=s[h++],a=s[h]?(s[0]|=p?1:2,r[s[h++]]):s[++h];3===p?e[0]=a:4===p?e[1]=Object.assign(e[1]||{},a):5===p?(e[1]=e[1]||{})[s[++h]]=a:6===p?e[1][s[++h]]+=a+\"\":p?(u=t.apply(a,n(t,a,r,[\"\",null])),e.push(u),a[0]?s[0]|=2:(s[h-2]=0,s[h]=u)):e.push(a)}return e},t=new Map;export default function(s){var r=t.get(this);return r||(r=new Map,t.set(this,r)),(r=n(this,r.get(s)||(r.set(s,r=function(n){for(var t,s,r=1,e=\"\",u=\"\",h=[0],p=function(n){1===r&&(n||(e=e.replace(/^\\s*\\n\\s*|\\s*\\n\\s*$/g,\"\")))?h.push(0,n,e):3===r&&(n||e)?(h.push(3,n,e),r=2):2===r&&\"...\"===e&&n?h.push(4,n,0):2===r&&e&&!n?h.push(5,0,!0,e):r>=5&&((e||!n&&5===r)&&(h.push(r,0,e,s),r=6),n&&(h.push(r,n,0,s),r=6)),e=\"\"},a=0;a<n.length;a++){a&&(1===r&&p(),p(a));for(var l=0;l<n[a].length;l++)t=n[a][l],1===r?\"<\"===t?(p(),h=[h],r=3):e+=t:4===r?\"--\"===e&&\">\"===t?(r=1,e=\"\"):e=t+e[0]:u?t===u?u=\"\":e+=t:'\"'===t||\"'\"===t?u=t:\">\"===t?(p(),r=1):r&&(\"=\"===t?(r=5,s=e,e=\"\"):\"/\"===t&&(r<5||\">\"===n[a][l+1])?(p(),3===r&&(h=h[0]),r=h,(h=h[0]).push(2,0,r),r=0):\" \"===t||\"\\t\"===t||\"\\n\"===t||\"\\r\"===t?(p(),r=2):e+=t),3===r&&\"!--\"===e&&(r=4,h=h[0])}return p(),h}(s)),r),arguments,[])).length>1?r:r[0]}\n","import htm from 'htm';\nimport { flattenArray } from '../../shared/utils.js';\n\nconst ignoreChildren = [false, null, '', undefined];\n\nconst h = (type, props, ...children) => {\n return {\n type,\n props: props || {},\n children: flattenArray(children.filter((child) => ignoreChildren.indexOf(child) < 0)),\n };\n};\n\nconst $h = htm.bind(h);\n\nexport default $h;\n","export function vnode(sel, data, children, text, elm) {\n var key = data === undefined ? undefined : data.key;\n return { sel: sel, data: data, children: children,\n text: text, elm: elm, key: key };\n}\nexport default vnode;\n//# sourceMappingURL=vnode.js.map","export var array = Array.isArray;\nexport function primitive(s) {\n return typeof s === 'string' || typeof s === 'number';\n}\n//# sourceMappingURL=is.js.map","import { vnode } from './vnode.js';\nimport * as is from './is.js';\nfunction addNS(data, children, sel) {\n data.ns = 'http://www.w3.org/2000/svg';\n if (sel !== 'foreignObject' && children !== undefined) {\n for (var i = 0; i < children.length; ++i) {\n var childData = children[i].data;\n if (childData !== undefined) {\n addNS(childData, children[i].children, children[i].sel);\n }\n }\n }\n}\nexport function h(sel, b, c) {\n var data = {}, children, text, i;\n if (c !== undefined) {\n data = b;\n if (is.array(c)) {\n children = c;\n }\n else if (is.primitive(c)) {\n text = c;\n }\n else if (c && c.sel) {\n children = [c];\n }\n }\n else if (b !== undefined) {\n if (is.array(b)) {\n children = b;\n }\n else if (is.primitive(b)) {\n text = b;\n }\n else if (b && b.sel) {\n children = [b];\n }\n else {\n data = b;\n }\n }\n if (is.array(children)) {\n for (i = 0; i < children.length; ++i) {\n if (is.primitive(children[i]))\n children[i] = vnode(undefined, undefined, undefined, children[i], undefined);\n }\n }\n if (sel[0] === 's' && sel[1] === 'v' && sel[2] === 'g' &&\n (sel.length === 3 || sel[3] === '.' || sel[3] === '#')) {\n addNS(data, children, sel);\n }\n return vnode(sel, data, children, text, undefined);\n}\n;\nexport default h;\n//# sourceMappingURL=h.js.map\n","export default {};\n","/* eslint no-use-before-define: \"off\" */\n/* eslint import/no-named-as-default: \"off\" */\nimport h from './snabbdom/h.js';\nimport customComponents from './custom-components.js';\nimport { isObject, eventNameToColonCase } from '../../shared/utils.js';\n\nconst SELF_CLOSING =\n 'area base br col command embed hr img input keygen link menuitem meta param source track wbr'.split(\n ' ',\n );\nconst PROPS_ATTRS =\n 'hidden checked disabled readonly selected autofocus autoplay required multiple value indeterminate routeProps innerHTML'.split(\n ' ',\n );\nconst BOOLEAN_PROPS =\n 'hidden checked disabled readonly selected autofocus autoplay required multiple readOnly indeterminate'.split(\n ' ',\n );\n\nconst getTagName = (treeNode) => {\n return typeof treeNode.type === 'function'\n ? treeNode.type.name || 'CustomComponent'\n : treeNode.type;\n};\n\nconst toCamelCase = (name) => {\n return name\n .split('-')\n .map((word, index) => {\n if (index === 0) return word.toLowerCase();\n return word[0].toUpperCase() + word.substr(1);\n })\n .join('');\n};\nconst propsFromAttrs = (...args) => {\n const context = {};\n args.forEach((obj = {}) => {\n Object.keys(obj).forEach((key) => {\n context[toCamelCase(key)] = obj[key];\n });\n });\n\n return context;\n};\n\nconst createCustomComponent = ({ f7, treeNode, vnode, data }) => {\n const component =\n typeof treeNode.type === 'function' ? treeNode.type : customComponents[treeNode.type];\n f7.component\n .create(component, propsFromAttrs(data.attrs || {}, data.props || {}), {\n el: vnode.elm,\n children: treeNode.children,\n })\n .then((c) => {\n if (vnode.data && vnode.data.on && c && c.$el) {\n Object.keys(vnode.data.on).forEach((eventName) => {\n c.$el.on(eventName, vnode.data.on[eventName]);\n });\n }\n // eslint-disable-next-line\n vnode.elm.__component__ = c;\n });\n};\nconst updateCustomComponent = (vnode) => {\n // eslint-disable-next-line\n const component = vnode && vnode.elm && vnode.elm.__component__;\n if (!component) return;\n const newProps = propsFromAttrs(vnode.data.attrs || {}, vnode.data.props || {});\n component.children = vnode.data.treeNode.children;\n Object.assign(component.props, newProps);\n component.update();\n};\nconst destroyCustomComponent = (vnode) => {\n // eslint-disable-next-line\n const component = vnode && vnode.elm && vnode.elm.__component__;\n\n if (component) {\n const { el, $el } = component;\n if (vnode.data && vnode.data.on && $el) {\n Object.keys(vnode.data.on).forEach((eventName) => {\n $el.off(eventName, vnode.data.on[eventName]);\n });\n }\n if (component.destroy) component.destroy();\n if (el && el.parentNode) el.parentNode.removeChild(el);\n delete vnode.elm.__component__; // eslint-disable-line\n }\n};\n\nconst isCustomComponent = (treeNodeType) => {\n return (\n typeof treeNodeType === 'function' ||\n (treeNodeType && treeNodeType.indexOf('-') > 0 && customComponents[treeNodeType])\n );\n};\n\nfunction getHooks(treeNode, data, f7, initial, isRoot) {\n const hooks = {};\n const insert = [];\n const destroy = [];\n const update = [];\n const postpatch = [];\n let isFakeElement = false;\n let tagName = getTagName(treeNode);\n if (data && data.attrs && data.attrs.component) {\n tagName = data.attrs.component;\n delete data.attrs.component;\n isFakeElement = true;\n }\n\n const isCustom = isCustomComponent(treeNode.type);\n\n if (isCustom) {\n insert.push((vnode) => {\n if (vnode.sel !== tagName && !isFakeElement) return;\n createCustomComponent({ f7, treeNode, vnode, data });\n });\n destroy.push((vnode) => {\n destroyCustomComponent(vnode);\n });\n update.push((oldVnode, vnode) => {\n updateCustomComponent(vnode);\n });\n }\n\n if (!isCustom) {\n if (!data || !data.attrs || !data.attrs.class) return hooks;\n\n const classNames = data.attrs.class;\n classNames.split(' ').forEach((className) => {\n if (!initial) {\n insert.push(...f7.getVnodeHooks('insert', className));\n }\n destroy.push(...f7.getVnodeHooks('destroy', className));\n update.push(...f7.getVnodeHooks('update', className));\n postpatch.push(...f7.getVnodeHooks('postpatch', className));\n });\n }\n\n if (isRoot && !initial) {\n postpatch.push((oldVnode, vnode) => {\n const vn = vnode || oldVnode;\n if (!vn) return;\n if (vn.data && vn.data.component) {\n vn.data.component.hook('onUpdated');\n }\n });\n }\n if (\n insert.length === 0 &&\n destroy.length === 0 &&\n update.length === 0 &&\n postpatch.length === 0\n ) {\n return hooks;\n }\n\n if (insert.length) {\n hooks.insert = (vnode) => {\n insert.forEach((f) => f(vnode));\n };\n }\n if (destroy.length) {\n hooks.destroy = (vnode) => {\n destroy.forEach((f) => f(vnode));\n };\n }\n if (update.length) {\n hooks.update = (oldVnode, vnode) => {\n update.forEach((f) => f(oldVnode, vnode));\n };\n }\n if (postpatch.length) {\n hooks.postpatch = (oldVnode, vnode) => {\n postpatch.forEach((f) => f(oldVnode, vnode));\n };\n }\n\n return hooks;\n}\nconst getEventHandler = (eventHandler, { stop, prevent, once } = {}) => {\n let fired = false;\n\n function handler(...args) {\n const e = args[0];\n if (once && fired) return;\n if (stop) e.stopPropagation();\n if (prevent) e.preventDefault();\n fired = true;\n\n eventHandler(...args);\n }\n\n return handler;\n};\n\nconst getData = (treeNode, component, f7, initial, isRoot) => {\n const data = { component, treeNode };\n const tagName = getTagName(treeNode);\n Object.keys(treeNode.props).forEach((attrName) => {\n const attrValue = treeNode.props[attrName];\n if (typeof attrValue === 'undefined') return;\n if (PROPS_ATTRS.indexOf(attrName) >= 0) {\n // Props\n if (!data.props) data.props = {};\n if (attrName === 'readonly') {\n // eslint-disable-next-line\n attrName = 'readOnly';\n }\n if (attrName === 'routeProps') {\n // eslint-disable-next-line\n attrName = 'f7RouteProps';\n }\n if (tagName === 'option' && attrName === 'value') {\n if (!data.attrs) data.attrs = {};\n data.attrs.value = attrValue;\n }\n if (BOOLEAN_PROPS.indexOf(attrName) >= 0) {\n // eslint-disable-next-line\n data.props[attrName] = attrValue === false ? false : true;\n } else {\n data.props[attrName] = attrValue;\n }\n } else if (attrName === 'key') {\n // Key\n data.key = attrValue;\n } else if (\n attrName.indexOf('@') === 0 ||\n (attrName.indexOf('on') === 0 && attrName.length > 2)\n ) {\n // Events\n if (!data.on) data.on = {};\n let eventName =\n attrName.indexOf('@') === 0 ? attrName.substr(1) : eventNameToColonCase(attrName.substr(2));\n let stop = false;\n let prevent = false;\n let once = false;\n if (eventName.indexOf('.') >= 0) {\n eventName.split('.').forEach((eventNamePart, eventNameIndex) => {\n if (eventNameIndex === 0) eventName = eventNamePart;\n else {\n if (eventNamePart === 'stop') stop = true;\n if (eventNamePart === 'prevent') prevent = true;\n if (eventNamePart === 'once') once = true;\n }\n });\n }\n data.on[eventName] = getEventHandler(attrValue, { stop, prevent, once });\n } else if (attrName === 'style') {\n // Style\n if (typeof attrValue !== 'string') {\n data.style = attrValue;\n } else {\n if (!data.attrs) data.attrs = {};\n data.attrs.style = attrValue;\n }\n } else {\n // Rest of attribures\n if (!data.attrs) data.attrs = {};\n data.attrs[attrName] = attrValue;\n\n // ID -> Key\n if (attrName === 'id' && !data.key && !isRoot) {\n data.key = attrValue;\n }\n }\n });\n\n const hooks = getHooks(treeNode, data, f7, initial, isRoot);\n\n hooks.prepatch = (oldVnode, vnode) => {\n if (!oldVnode || !vnode) return;\n if (oldVnode && oldVnode.data && oldVnode.data.props) {\n Object.keys(oldVnode.data.props).forEach((key) => {\n if (BOOLEAN_PROPS.indexOf(key) < 0) return;\n if (!vnode.data) vnode.data = {};\n if (!vnode.data.props) vnode.data.props = {};\n if (oldVnode.data.props[key] === true && !(key in vnode.data.props)) {\n vnode.data.props[key] = false;\n }\n });\n }\n };\n\n data.hook = hooks;\n\n return data;\n};\n\nconst getChildren = (treeNode, component, f7, initial) => {\n if (treeNode && treeNode.type && SELF_CLOSING.indexOf(treeNode.type) >= 0) {\n return [];\n }\n const children = [];\n const nodes = treeNode.children;\n for (let i = 0; i < nodes.length; i += 1) {\n const childNode = nodes[i];\n const child = treeNodeToVNode(childNode, component, f7, initial, false);\n if (Array.isArray(child)) {\n children.push(...child);\n } else if (child) {\n children.push(child);\n }\n }\n return children;\n};\n\nconst getSlots = (treeNode, component, f7, initial) => {\n const slotName = treeNode.props.name || 'default';\n const slotNodes = (component.children || []).filter((childTreeNode) => {\n let childSlotName = 'default';\n if (childTreeNode.props) {\n childSlotName = childTreeNode.props.slot || 'default';\n }\n return childSlotName === slotName;\n });\n if (slotNodes.length === 0) {\n return getChildren(treeNode, component, f7, initial);\n }\n return slotNodes.map((subTreeNode) => treeNodeToVNode(subTreeNode, component, f7, initial));\n};\n\nconst isTreeNode = (treeNode) => {\n return isObject(treeNode) && 'props' in treeNode && 'type' in treeNode && 'children' in treeNode;\n};\n\nconst treeNodeToVNode = (treeNode, component, f7, initial, isRoot) => {\n if (!isTreeNode(treeNode)) {\n return String(treeNode);\n }\n if (treeNode.type === 'slot') {\n return getSlots(treeNode, component, f7, initial);\n }\n const data = getData(treeNode, component, f7, initial, isRoot);\n const children = isCustomComponent(treeNode.type)\n ? []\n : getChildren(treeNode, component, f7, initial);\n\n return h(getTagName(treeNode), data, children);\n};\n\nexport default function vdom(tree = {}, component, initial) {\n return treeNodeToVNode(tree, component, component.f7, initial, true);\n}\n","function createElement(tagName) {\n return document.createElement(tagName);\n}\nfunction createElementNS(namespaceURI, qualifiedName) {\n return document.createElementNS(namespaceURI, qualifiedName);\n}\nfunction createTextNode(text) {\n return document.createTextNode(text);\n}\nfunction createComment(text) {\n return document.createComment(text);\n}\nfunction insertBefore(parentNode, newNode, referenceNode) {\n if (referenceNode && referenceNode.parentNode !== parentNode) {\n if (referenceNode.__component__) referenceNode = referenceNode.__component__.el;\n }\n parentNode.insertBefore(newNode, referenceNode);\n}\nfunction removeChild(node, child) {\n if (!node) return;\n node.removeChild(child);\n}\nfunction appendChild(node, child) {\n node.appendChild(child);\n}\nfunction parentNode(node) {\n return node.parentNode;\n}\nfunction nextSibling(node) {\n return node.nextSibling;\n}\nfunction tagName(elm) {\n return elm.tagName;\n}\nfunction setTextContent(node, text) {\n node.textContent = text;\n}\nfunction getTextContent(node) {\n return node.textContent;\n}\nfunction isElement(node) {\n return node.nodeType === 1;\n}\nfunction isText(node) {\n return node.nodeType === 3;\n}\nfunction isComment(node) {\n return node.nodeType === 8;\n}\nexport var htmlDomApi = {\n createElement: createElement,\n createElementNS: createElementNS,\n createTextNode: createTextNode,\n createComment: createComment,\n insertBefore: insertBefore,\n removeChild: removeChild,\n appendChild: appendChild,\n parentNode: parentNode,\n nextSibling: nextSibling,\n tagName: tagName,\n setTextContent: setTextContent,\n getTextContent: getTextContent,\n isElement: isElement,\n isText: isText,\n isComment: isComment,\n};\nexport default htmlDomApi;\n//# sourceMappingURL=htmldomapi.js.map\n","import vnode from './vnode.js';\nimport * as is from './is.js';\nimport htmlDomApi from './htmldomapi.js';\nfunction isUndef(s) { return s === undefined; }\nfunction isDef(s) { return s !== undefined; }\nvar emptyNode = vnode('', {}, [], undefined, undefined);\nfunction sameVnode(vnode1, vnode2) {\n return vnode1.key === vnode2.key && vnode1.sel === vnode2.sel;\n}\nfunction isVnode(vnode) {\n return vnode.sel !== undefined;\n}\nfunction createKeyToOldIdx(children, beginIdx, endIdx) {\n var i, map = {}, key, ch;\n for (i = beginIdx; i <= endIdx; ++i) {\n ch = children[i];\n if (ch != null) {\n key = ch.key;\n if (key !== undefined)\n map[key] = i;\n }\n }\n return map;\n}\nvar hooks = ['create', 'update', 'remove', 'destroy', 'pre', 'post'];\nexport { h } from './h';\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\n","var xlinkNS = 'http://www.w3.org/1999/xlink';\nvar xmlNS = 'http://www.w3.org/XML/1998/namespace';\nvar colonChar = 58;\nvar xChar = 120;\nfunction updateAttrs(oldVnode, vnode) {\n var key, elm = vnode.elm, oldAttrs = oldVnode.data.attrs, attrs = vnode.data.attrs;\n if (!oldAttrs && !attrs)\n return;\n if (oldAttrs === attrs)\n return;\n oldAttrs = oldAttrs || {};\n attrs = attrs || {};\n // update modified attributes, add new attributes\n for (key in attrs) {\n var cur = attrs[key];\n var old = oldAttrs[key];\n if (old !== cur) {\n if (cur === true) {\n elm.setAttribute(key, \"\");\n }\n else if (cur === false) {\n elm.removeAttribute(key);\n }\n else {\n if (key.charCodeAt(0) !== xChar) {\n elm.setAttribute(key, cur);\n }\n else if (key.charCodeAt(3) === colonChar) {\n // Assume xml namespace\n elm.setAttributeNS(xmlNS, key, cur);\n }\n else if (key.charCodeAt(5) === colonChar) {\n // Assume xlink namespace\n elm.setAttributeNS(xlinkNS, key, cur);\n }\n else {\n elm.setAttribute(key, cur);\n }\n }\n }\n }\n // remove removed attributes\n // use `in` operator since the previous `for` iteration uses it (.i.e. add even attributes with undefined value)\n // the other option is to remove all attributes with value == undefined\n for (key in oldAttrs) {\n if (!(key in attrs)) {\n elm.removeAttribute(key);\n }\n }\n}\nexport var attributesModule = { create: updateAttrs, update: updateAttrs };\nexport default attributesModule;\n//# sourceMappingURL=attributes.js.map","function updateProps(oldVnode, vnode) {\n var key, cur, old, elm = vnode.elm, oldProps = oldVnode.data.props, props = vnode.data.props;\n if (!oldProps && !props)\n return;\n if (oldProps === props)\n return;\n oldProps = oldProps || {};\n props = props || {};\n for (key in oldProps) {\n if (!props[key]) {\n delete elm[key];\n }\n }\n for (key in props) {\n cur = props[key];\n old = oldProps[key];\n if (old !== cur && (key !== 'value' || elm[key] !== cur)) {\n elm[key] = cur;\n }\n }\n}\nexport var propsModule = { create: updateProps, update: updateProps };\nexport default propsModule;\n//# sourceMappingURL=props.js.map","var raf = (typeof window !== 'undefined' && window.requestAnimationFrame) || setTimeout;\nvar nextFrame = function (fn) { raf(function () { raf(fn); }); };\nfunction setNextFrame(obj, prop, val) {\n nextFrame(function () { obj[prop] = val; });\n}\nfunction updateStyle(oldVnode, vnode) {\n var cur, name, elm = vnode.elm, oldStyle = oldVnode.data.style, style = vnode.data.style;\n if (!oldStyle && !style)\n return;\n if (oldStyle === style)\n return;\n oldStyle = oldStyle || {};\n style = style || {};\n var oldHasDel = 'delayed' in oldStyle;\n for (name in oldStyle) {\n if (!style[name]) {\n if (name[0] === '-' && name[1] === '-') {\n elm.style.removeProperty(name);\n }\n else {\n elm.style[name] = '';\n }\n }\n }\n for (name in style) {\n cur = style[name];\n if (name === 'delayed' && style.delayed) {\n for (var name2 in style.delayed) {\n cur = style.delayed[name2];\n if (!oldHasDel || cur !== oldStyle.delayed[name2]) {\n setNextFrame(elm.style, name2, cur);\n }\n }\n }\n else if (name !== 'remove' && cur !== oldStyle[name]) {\n if (name[0] === '-' && name[1] === '-') {\n elm.style.setProperty(name, cur);\n }\n else {\n elm.style[name] = cur;\n }\n }\n }\n}\nfunction applyDestroyStyle(vnode) {\n var style, name, elm = vnode.elm, s = vnode.data.style;\n if (!s || !(style = s.destroy))\n return;\n for (name in style) {\n elm.style[name] = style[name];\n }\n}\nfunction applyRemoveStyle(vnode, rm) {\n var s = vnode.data.style;\n if (!s || !s.remove) {\n rm();\n return;\n }\n var name, elm = vnode.elm, i = 0, compStyle, style = s.remove, amount = 0, applied = [];\n for (name in style) {\n applied.push(name);\n elm.style[name] = style[name];\n }\n compStyle = getComputedStyle(elm);\n var props = compStyle['transition-property'].split(', ');\n for (; i < props.length; ++i) {\n if (applied.indexOf(props[i]) !== -1)\n amount++;\n }\n elm.addEventListener('transitionend', function (ev) {\n if (ev.target === elm)\n --amount;\n if (amount === 0)\n rm();\n });\n}\nexport var styleModule = {\n create: updateStyle,\n update: updateStyle,\n destroy: applyDestroyStyle,\n remove: applyRemoveStyle\n};\nexport default styleModule;\n//# sourceMappingURL=style.js.map","import $ from '../../shared/dom7.js';\n\nfunction invokeHandler(handler, event, args) {\n if (typeof handler === 'function') {\n // call function handler\n handler(event, ...args);\n }\n}\nfunction handleEvent(event, args, vnode) {\n const name = event.type;\n const on = vnode.data.on;\n // call event handler(s) if exists\n if (on && on[name]) {\n invokeHandler(on[name], event, args, vnode);\n }\n}\nfunction createListener() {\n return function handler(event, ...args) {\n handleEvent(event, args, handler.vnode);\n };\n}\nfunction updateEvents(oldVnode, vnode) {\n const oldOn = oldVnode.data.on;\n const oldListener = oldVnode.listener;\n const oldElm = oldVnode.elm;\n const on = vnode && vnode.data.on;\n const elm = vnode && vnode.elm;\n // optimization for reused immutable handlers\n if (oldOn === on) {\n return;\n }\n // remove existing listeners which no longer used\n if (oldOn && oldListener) {\n // if element changed or deleted we remove all existing listeners unconditionally\n if (!on) {\n Object.keys(oldOn).forEach((name) => {\n $(oldElm).off(name, oldListener);\n });\n } else {\n Object.keys(oldOn).forEach((name) => {\n if (!on[name]) {\n $(oldElm).off(name, oldListener);\n }\n });\n }\n }\n // add new listeners which has not already attached\n if (on) {\n // reuse existing listener or create new\n const listener = oldVnode.listener || createListener();\n vnode.listener = listener;\n // update vnode for listener\n listener.vnode = vnode;\n // if element changed or added we add all needed listeners unconditionally\n if (!oldOn) {\n Object.keys(on).forEach((name) => {\n $(elm).on(name, listener);\n });\n } else {\n Object.keys(on).forEach((name) => {\n if (!oldOn[name]) {\n $(elm).on(name, listener);\n }\n });\n }\n }\n}\n\nexport default {\n create: updateEvents,\n update: updateEvents,\n destroy: updateEvents,\n};\n","/* eslint import/no-named-as-default: off */\nimport { init } from './snabbdom/snabbdom.js';\nimport attributesModule from './snabbdom/modules/attributes.js';\nimport propsModule from './snabbdom/modules/props.js';\nimport styleModule from './snabbdom/modules/style.js';\nimport eventListenersModule from './eventslisteners.js';\n\nconst patch = init([attributesModule, propsModule, styleModule, eventListenersModule]);\n\nexport default patch;\n","/* eslint no-underscore-dangle: \"off\" */\nimport { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport $h from './$h.js';\nimport { id as generateId, merge, eventNameToColonCase, deleteProps } from '../../shared/utils.js';\nimport vdom from './vdom.js';\nimport patch from './patch.js';\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 __updateQueue: [],\n __eventHandlers: [],\n __onceEventHandlers: [],\n __onBeforeMount: [],\n __onMounted: [],\n __onBeforeUpdate: [],\n __onUpdated: [],\n __onBeforeUnmount: [],\n __onUnmounted: [],\n });\n\n const createComponent = () => {\n return component(this.props, this.getComponentContext(true));\n };\n\n const getRenderFuncion = (componentResult) =>\n new Promise((resolve, reject) => {\n if (typeof componentResult === 'function') {\n resolve(componentResult);\n } else if (componentResult instanceof Promise) {\n componentResult\n .then((render) => {\n resolve(render);\n })\n .catch((err) => {\n reject(err);\n });\n } else {\n reject(\n new Error(\n 'Framework7: Component render function is not a \"function\" type. Didn\\'t you forget to \"return $render\"?',\n ),\n );\n }\n });\n\n return new Promise((resolve, reject) => {\n const componentResult = createComponent();\n getRenderFuncion(componentResult)\n .then((render) => {\n this.renderFunction = render;\n\n const tree = this.render();\n\n if (el) {\n this.vnode = vdom(tree, this, true);\n if (this.style) {\n this.styleEl = document.createElement('style');\n this.styleEl.innerHTML = this.style;\n }\n this.el = el;\n patch(this.el, this.vnode);\n this.el = this.vnode.elm;\n this.$el = $(this.el);\n\n this.attachEvents();\n this.el.f7Component = this;\n this.mount();\n resolve(this);\n return;\n }\n // Make Dom\n if (tree) {\n this.vnode = vdom(tree, this, true);\n this.el = document.createElement(this.vnode.sel || 'div');\n patch(this.el, this.vnode);\n this.$el = $(this.el);\n }\n if (this.style) {\n this.styleEl = document.createElement('style');\n this.styleEl.innerHTML = this.style;\n }\n\n this.attachEvents();\n\n if (this.el) {\n this.el.f7Component = this;\n }\n\n resolve(this);\n })\n .catch((err) => {\n reject(err);\n });\n });\n }\n\n on(eventName, handler) {\n if (!this.__eventHandlers) return;\n this.__eventHandlers.push({ eventName, handler });\n }\n\n once(eventName, handler) {\n if (!this.__eventHandlers) return;\n this.__onceEventHandlers.push({ eventName, handler });\n }\n\n getComponentRef() {\n const self = this;\n return (initialValue) => {\n let value = initialValue;\n const obj = {};\n Object.defineProperty(obj, 'value', {\n get() {\n return value;\n },\n set(v) {\n value = v;\n self.update();\n },\n });\n return obj;\n };\n }\n\n getComponentStore() {\n const { state, _gettersPlain, dispatch } = this.f7.store;\n const $store = {\n state,\n dispatch,\n };\n $store.getters = new Proxy(_gettersPlain, {\n get: (target, prop) => {\n const obj = target[prop];\n const callback = (v) => {\n obj.value = v;\n this.update();\n };\n obj.onUpdated(callback);\n return obj;\n },\n });\n\n return $store;\n }\n\n getComponentContext(includeHooks) {\n const ctx = {\n $f7route: this.context.f7route,\n $f7router: this.context.f7router,\n $h,\n $,\n $id: this.id,\n $f7: this.f7,\n $f7ready: this.f7ready.bind(this),\n $theme: this.theme,\n $tick: this.tick.bind(this),\n $update: this.update.bind(this),\n $emit: this.emit.bind(this),\n $store: this.getComponentStore(),\n $ref: this.getComponentRef(),\n $el: {},\n };\n Object.defineProperty(ctx.$el, 'value', {\n get: () => {\n return this.$el;\n },\n });\n if (includeHooks)\n Object.assign(ctx, {\n $on: this.on.bind(this),\n $once: this.once.bind(this),\n $onBeforeMount: (handler) => this.__onBeforeMount.push(handler),\n $onMounted: (handler) => this.__onMounted.push(handler),\n $onBeforeUpdate: (handler) => this.__onBeforeUpdate.push(handler),\n $onUpdated: (handler) => this.__onUpdated.push(handler),\n $onBeforeUnmount: (handler) => this.__onBeforeUnmount.push(handler),\n $onUnmounted: (handler) => this.__onUnmounted.push(handler),\n });\n\n return ctx;\n }\n\n render() {\n return this.renderFunction(this.getComponentContext());\n }\n\n emit(name, data) {\n if (!this.el) return;\n this.$el.trigger(name, data);\n }\n\n attachEvents() {\n const { $el } = this;\n if (!this.__eventHandlers) return;\n this.__eventHandlers.forEach(({ eventName, handler }) => {\n $el.on(eventNameToColonCase(eventName), handler);\n });\n this.__onceEventHandlers.forEach(({ eventName, handler }) => {\n $el.once(eventNameToColonCase(eventName), handler);\n });\n }\n\n detachEvents() {\n const { $el } = this;\n if (!this.__eventHandlers) return;\n this.__eventHandlers.forEach(({ eventName, handler }) => {\n $el.on(eventNameToColonCase(eventName), handler);\n });\n this.__onceEventHandlers.forEach(({ eventName, handler }) => {\n $el.once(eventNameToColonCase(eventName), handler);\n });\n }\n\n startUpdateQueue() {\n const window = getWindow();\n if (this.__requestAnimationFrameId) return;\n const update = () => {\n this.hook('onBeforeUpdate');\n const tree = this.render();\n\n // Make Dom\n if (tree) {\n const newVNode = vdom(tree, this, false);\n this.vnode = patch(this.vnode, newVNode);\n }\n };\n this.__requestAnimationFrameId = window.requestAnimationFrame(() => {\n if (this.__updateIsPending) update();\n let resolvers = [...this.__updateQueue];\n this.__updateQueue = [];\n this.__updateIsPending = false;\n window.cancelAnimationFrame(this.__requestAnimationFrameId);\n delete this.__requestAnimationFrameId;\n delete this.__updateIsPending;\n resolvers.forEach((resolver) => resolver());\n resolvers = [];\n });\n }\n\n tick(callback) {\n return new Promise((resolve) => {\n function resolver() {\n resolve();\n if (callback) callback();\n }\n this.__updateQueue.push(resolver);\n this.startUpdateQueue();\n });\n }\n\n update(callback) {\n if (this.__destroyed) return new Promise(() => {});\n return new Promise((resolve) => {\n const resolver = () => {\n resolve();\n if (callback) callback();\n };\n this.__updateIsPending = true;\n this.__updateQueue.push(resolver);\n this.startUpdateQueue();\n });\n }\n\n setState(callback) {\n return this.update(callback);\n }\n\n f7ready(callback) {\n if (this.f7.initialized) {\n callback(this.f7);\n return;\n }\n this.f7.once('init', () => {\n callback(this.f7);\n });\n }\n\n mount(mountMethod) {\n this.hook('onBeforeMount', this.$el);\n if (this.styleEl) $('head').append(this.styleEl);\n if (mountMethod) mountMethod(this.el);\n this.hook('onMounted', this.$el);\n }\n\n destroy() {\n if (this.__destroyed) return;\n const window = getWindow();\n this.hook('onBeforeUnmount');\n\n if (this.styleEl) $(this.styleEl).remove();\n\n this.detachEvents();\n this.hook('onUnmounted');\n // Delete component instance\n if (this.el && this.el.f7Component) {\n this.el.f7Component = null;\n delete this.el.f7Component;\n }\n // Patch with empty node\n if (this.vnode) {\n this.vnode = patch(this.vnode, { sel: this.vnode.sel, data: {} });\n }\n // Clear update queue\n window.cancelAnimationFrame(this.__requestAnimationFrameId);\n this.__updateQueue = [];\n this.__eventHandlers = [];\n this.__onceEventHandlers = [];\n this.__onBeforeMount = [];\n this.__onMounted = [];\n this.__onBeforeUpdate = [];\n this.__onUpdated = [];\n this.__onBeforeUnmount = [];\n this.__onUnmounted = [];\n // Delete all props\n deleteProps(this);\n this.__destroyed = true;\n }\n\n hook(name, ...args) {\n if (this.__destroyed) return;\n this[`__${name}`].forEach((handler) => {\n handler(...args);\n });\n }\n}\n\nexport default Component;\n","import Component from './component-class.js';\nimport parseComponent from './parse-component.js';\nimport customComponents from './custom-components.js';\nimport $jsx from './$jsx.js';\n\nfunction registerComponent(tagName, component) {\n customComponents[tagName] = component;\n}\n\nfunction unregisterComponent(tagName) {\n delete customComponents[tagName];\n}\n\nexport { Component, $jsx };\nexport default {\n name: 'component',\n static: {\n Component,\n 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.js';\nimport { id } from '../../shared/utils.js';\n\nfunction parseComponent(componentString) {\n const window = getWindow();\n const document = getDocument();\n const componentId = id();\n const callbackCreateName = `f7_component_create_callback_${componentId}`;\n\n // Template\n let template;\n const hasTemplate = componentString.match(/<template([ ]?)([a-z0-9-]*)>/);\n if (hasTemplate) {\n template = componentString\n .split(/<template[ ]?[a-z0-9-]*>/)\n .filter((item, index) => index > 0)\n .join('<template>')\n .split('</template>')\n .filter((item, index, arr) => index < arr.length - 1)\n .join('</template>')\n .replace(/{{#raw}}([ \\n]*)<template/g, '{{#raw}}<template')\n .replace(/\\/template>([ \\n]*){{\\/raw}}/g, '/template>{{/raw}}')\n .replace(/([ \\n])<template/g, '$1{{#raw}}<template')\n .replace(/\\/template>([ \\n])/g, '/template>{{/raw}}$1');\n }\n\n // Parse Styles\n let style = null;\n\n if (componentString.indexOf('<style>') >= 0) {\n style = componentString.split('<style>')[1].split('</style>')[0];\n }\n if (componentString.indexOf('<style scoped>') >= 0) {\n style = componentString.split('<style scoped>')[1].split('</style>')[0];\n }\n\n // Parse Script\n let scriptContent;\n if (componentString.indexOf('<script>') >= 0) {\n const scripts = componentString.split('<script>');\n scriptContent = scripts[scripts.length - 1].split('</script>')[0].trim();\n } else {\n scriptContent = 'return () => {return $render}';\n }\n if (!scriptContent || !scriptContent.trim()) scriptContent = 'return () => {return $render}';\n\n // Parse Template\n if (template) {\n scriptContent = scriptContent\n .replace(\n '$render',\n `function ($$ctx) {\n var $ = $$ctx.$$;\n var $h = $$ctx.$h;\n var $root = $$ctx.$root;\n var $f7 = $$ctx.$f7;\n var $f7route = $$ctx.$f7route;\n var $f7router = $$ctx.$f7router;\n var $theme = $$ctx.$theme;\n var $update = $$ctx.$update;\n var $store = $$ctx.$store;\n var $ref = $$ctx.$ref;\n\n return $h\\`${template}\\`\n }\n `,\n )\n .replace(/export default/g, 'return');\n }\n\n // Execute Script\n scriptContent = `window.${callbackCreateName} = function () {${scriptContent}}`;\n\n // Insert Script El\n const scriptEl = document.createElement('script');\n scriptEl.innerHTML = scriptContent;\n $('head').append(scriptEl);\n\n const component = window[callbackCreateName]();\n\n // Remove Script El\n $(scriptEl).remove();\n window[callbackCreateName] = null;\n delete window[callbackCreateName];\n\n // Assign Style\n if (style) {\n component.style = style;\n }\n\n // Component ID\n component.id = componentId;\n return component;\n}\n\nexport default parseComponent;\n","import History from '../../shared/history.js';\n\nexport default {\n name: 'history',\n static: {\n history: History,\n },\n on: {\n init() {\n History.init(this);\n },\n },\n};\n","import { getWindow } from 'ssr-window';\nimport { extend } from '../../shared/utils.js';\n\nconst SW = {\n registrations: [],\n register(path, scope) {\n const app = this;\n const window = getWindow();\n\n if (!('serviceWorker' in window.navigator) || !app.serviceWorker.container) {\n return new Promise((resolve, reject) => {\n reject(new Error('Service worker is not supported'));\n });\n }\n return new Promise((resolve, reject) => {\n app.serviceWorker.container\n .register(path, scope ? { scope } : {})\n .then((reg) => {\n SW.registrations.push(reg);\n app.emit('serviceWorkerRegisterSuccess', reg);\n resolve(reg);\n })\n .catch((error) => {\n app.emit('serviceWorkerRegisterError', error);\n reject(error);\n });\n });\n },\n unregister(registration) {\n const app = this;\n const window = getWindow();\n if (!('serviceWorker' in window.navigator) || !app.serviceWorker.container) {\n return new Promise((resolve, reject) => {\n reject(new Error('Service worker is not supported'));\n });\n }\n let registrations;\n if (!registration) registrations = SW.registrations;\n else if (Array.isArray(registration)) registrations = registration;\n else registrations = [registration];\n return Promise.all(\n registrations.map(\n (reg) =>\n new Promise((resolve, reject) => {\n reg\n .unregister()\n .then(() => {\n if (SW.registrations.indexOf(reg) >= 0) {\n SW.registrations.splice(SW.registrations.indexOf(reg), 1);\n }\n app.emit('serviceWorkerUnregisterSuccess', reg);\n resolve();\n })\n .catch((error) => {\n app.emit('serviceWorkerUnregisterError', reg, error);\n reject(error);\n });\n }),\n ),\n );\n },\n};\n\nexport default {\n name: 'sw',\n params: {\n serviceWorker: {\n path: undefined,\n scope: undefined,\n },\n },\n create() {\n const app = this;\n const window = getWindow();\n extend(app, {\n serviceWorker: {\n container: 'serviceWorker' in window.navigator ? window.navigator.serviceWorker : undefined,\n registrations: SW.registrations,\n register: SW.register.bind(app),\n unregister: SW.unregister.bind(app),\n },\n });\n },\n on: {\n init() {\n const window = getWindow();\n if (!('serviceWorker' in window.navigator)) return;\n const app = this;\n if (app.device.cordova || (window.Capacitor && window.Capacitor.isNative)) return;\n if (!app.serviceWorker.container) return;\n const paths = app.params.serviceWorker.path;\n const scope = app.params.serviceWorker.scope;\n if (!paths || (Array.isArray(paths) && !paths.length)) return;\n const toRegister = Array.isArray(paths) ? paths : [paths];\n toRegister.forEach((path) => {\n app.serviceWorker.register(path, scope);\n });\n },\n },\n};\n","/* eslint-disable no-underscore-dangle */\nimport { extend } from '../../shared/utils.js';\n\nfunction createStore(storeParams = {}) {\n const store = {\n __store: true,\n };\n const originalState = { ...(storeParams.state || {}) };\n const actions = { ...(storeParams.actions || {}) };\n const getters = { ...(storeParams.getters || {}) };\n const state = extend({}, originalState);\n\n let propsQueue = [];\n const gettersDependencies = {};\n const gettersCallbacks = {};\n\n Object.keys(getters).forEach((getterKey) => {\n gettersDependencies[getterKey] = [];\n gettersCallbacks[getterKey] = [];\n });\n\n const getGetterValue = (getterKey) => {\n return getters[getterKey]({ state: store.state });\n };\n\n const addGetterDependencies = (getterKey, deps) => {\n if (!gettersDependencies[getterKey]) gettersDependencies[getterKey] = [];\n deps.forEach((dep) => {\n if (gettersDependencies[getterKey].indexOf(dep) < 0) {\n gettersDependencies[getterKey].push(dep);\n }\n });\n };\n\n const addGetterCallback = (getterKey, callback) => {\n if (!gettersCallbacks[getterKey]) gettersCallbacks[getterKey] = [];\n gettersCallbacks[getterKey].push(callback);\n };\n\n const runGetterCallbacks = (stateKey) => {\n const keys = Object.keys(gettersDependencies).filter((getterKey) => {\n return gettersDependencies[getterKey].indexOf(stateKey) >= 0;\n });\n keys.forEach((getterKey) => {\n if (!gettersCallbacks[getterKey] || !gettersCallbacks[getterKey].length) return;\n gettersCallbacks[getterKey].forEach((callback) => {\n callback(getGetterValue(getterKey));\n });\n });\n };\n\n const removeGetterCallback = (callback) => {\n Object.keys(gettersCallbacks).forEach((stateKey) => {\n const callbacks = gettersCallbacks[stateKey];\n\n if (callbacks.indexOf(callback) >= 0) {\n callbacks.splice(callbacks.indexOf(callback), 1);\n }\n });\n };\n\n // eslint-disable-next-line\n store.__removeCallback = (callback) => {\n removeGetterCallback(callback);\n };\n\n const getterValue = (getterKey, addCallback = true) => {\n if (getterKey === 'constructor') return undefined;\n propsQueue = [];\n const value = getGetterValue(getterKey);\n addGetterDependencies(getterKey, propsQueue);\n const onUpdated = (callback) => {\n addGetterCallback(getterKey, callback);\n };\n\n const obj = {\n value,\n onUpdated,\n };\n\n if (!addCallback) {\n return obj;\n }\n\n const callback = (v) => {\n obj.value = v;\n };\n\n obj.__callback = callback;\n addGetterCallback(getterKey, callback);\n // eslint-disable-next-line\n return obj;\n };\n\n store.state = new Proxy(state, {\n set: (target, prop, value) => {\n target[prop] = value;\n runGetterCallbacks(prop);\n return true;\n },\n get: (target, prop) => {\n propsQueue.push(prop);\n return target[prop];\n },\n });\n\n store.getters = new Proxy(getters, {\n set: () => false,\n get: (target, prop) => {\n if (!target[prop]) {\n return undefined;\n }\n return getterValue(prop, true);\n },\n });\n\n store._gettersPlain = new Proxy(getters, {\n set: () => false,\n get: (target, prop) => {\n if (!target[prop]) {\n return undefined;\n }\n return getterValue(prop, false);\n },\n });\n\n store.dispatch = (actionName, data) => {\n return new Promise((resolve, reject) => {\n if (!actions[actionName]) {\n reject();\n throw new Error(`Framework7: Store action \"${actionName}\" is not found`);\n }\n const result = actions[actionName]({ state: store.state, dispatch: store.dispatch }, data);\n resolve(result);\n });\n };\n\n return store;\n}\n\nexport default createStore;\n","import createStore from './create-store.js';\n\nexport { createStore };\nexport default {\n name: 'store',\n static: { createStore },\n proto: { createStore },\n};\n","import { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { bindMethods } from '../../shared/utils.js';\nimport { getDevice } from '../../shared/get-device.js';\n\nconst isCapacitor = () => {\n const window = getWindow();\n return (\n window.Capacitor &&\n window.Capacitor.isNative &&\n window.Capacitor.Plugins &&\n window.Capacitor.Plugins.StatusBar\n );\n};\n\nconst Statusbar = {\n hide() {\n const window = getWindow();\n const device = getDevice();\n if (device.cordova && window.StatusBar) {\n window.StatusBar.hide();\n }\n if (isCapacitor()) {\n window.Capacitor.Plugins.StatusBar.hide();\n }\n },\n show() {\n const window = getWindow();\n const device = getDevice();\n if (device.cordova && window.StatusBar) {\n window.StatusBar.show();\n }\n if (isCapacitor()) {\n window.Capacitor.Plugins.StatusBar.show();\n }\n },\n onClick() {\n const app = this;\n let pageContent;\n if ($('.popup.modal-in').length > 0) {\n // Check for opened popup\n pageContent = $('.popup.modal-in')\n .find('.page:not(.page-previous):not(.page-next):not(.cached)')\n .find('.page-content');\n } else if ($('.panel.panel-in').length > 0) {\n // Check for opened panel\n pageContent = $('.panel.panel-in')\n .find('.page:not(.page-previous):not(.page-next):not(.cached)')\n .find('.page-content');\n } else if ($('.views > .view.tab-active').length > 0) {\n // View in tab bar app layout\n pageContent = $('.views > .view.tab-active')\n .find('.page:not(.page-previous):not(.page-next):not(.cached)')\n .find('.page-content');\n } else if ($('.views').length > 0) {\n pageContent = $('.views')\n .find('.page:not(.page-previous):not(.page-next):not(.cached)')\n .find('.page-content');\n } else {\n pageContent = app.$el\n .children('.view')\n .find('.page:not(.page-previous):not(.page-next):not(.cached)')\n .find('.page-content');\n }\n\n if (pageContent && pageContent.length > 0) {\n // Check for tab\n if (pageContent.hasClass('tab')) {\n pageContent = pageContent.parent('.tabs').children('.page-content.tab-active');\n }\n if (pageContent.length > 0) pageContent.scrollTop(0, 300);\n }\n },\n setTextColor(color) {\n const window = getWindow();\n const device = getDevice();\n if (device.cordova && window.StatusBar) {\n if (color === 'white') {\n window.StatusBar.styleLightContent();\n } else {\n window.StatusBar.styleDefault();\n }\n }\n if (isCapacitor()) {\n if (color === 'white') {\n window.Capacitor.Plugins.StatusBar.setStyle({ style: 'DARK' });\n } else {\n window.Capacitor.Plugins.StatusBar.setStyle({ style: 'LIGHT' });\n }\n }\n },\n setBackgroundColor(color) {\n const window = getWindow();\n const device = getDevice();\n if (device.cordova && window.StatusBar) {\n window.StatusBar.backgroundColorByHexString(color);\n }\n if (isCapacitor()) {\n window.Capacitor.Plugins.StatusBar.setBackgroundColor({ color });\n }\n },\n isVisible() {\n const window = getWindow();\n const device = getDevice();\n return new Promise((resolve) => {\n if (device.cordova && window.StatusBar) {\n resolve(window.StatusBar.isVisible);\n }\n if (isCapacitor()) {\n window.Capacitor.Plugins.StatusBar.getInfo().then((info) => {\n resolve(info.visible);\n });\n }\n resolve(false);\n });\n },\n overlaysWebView(overlays = true) {\n const window = getWindow();\n const device = getDevice();\n if (device.cordova && window.StatusBar) {\n window.StatusBar.overlaysWebView(overlays);\n }\n if (isCapacitor()) {\n window.Capacitor.Plugins.StatusBar.setOverlaysWebView({ overlay: overlays });\n }\n },\n init() {\n const app = this;\n const window = getWindow();\n const device = getDevice();\n const params = app.params.statusbar;\n if (!params.enabled) return;\n const isCordova = device.cordova && window.StatusBar;\n const isCap = isCapacitor();\n\n if (isCordova || isCap) {\n if (params.scrollTopOnClick) {\n $(window).on('statusTap', Statusbar.onClick.bind(app));\n }\n if (device.ios) {\n if (params.iosOverlaysWebView) {\n Statusbar.overlaysWebView(true);\n } else {\n Statusbar.overlaysWebView(false);\n }\n if (params.iosTextColor === 'white') {\n Statusbar.setTextColor('white');\n } else {\n Statusbar.setTextColor('black');\n }\n }\n if (device.android) {\n if (params.androidOverlaysWebView) {\n Statusbar.overlaysWebView(true);\n } else {\n Statusbar.overlaysWebView(false);\n }\n if (params.androidTextColor === 'white') {\n Statusbar.setTextColor('white');\n } else {\n Statusbar.setTextColor('black');\n }\n }\n }\n if (params.iosBackgroundColor && device.ios) {\n Statusbar.setBackgroundColor(params.iosBackgroundColor);\n }\n if (params.androidBackgroundColor && device.android) {\n Statusbar.setBackgroundColor(params.androidBackgroundColor);\n }\n },\n};\n\nexport default {\n name: 'statusbar',\n params: {\n statusbar: {\n enabled: true,\n\n scrollTopOnClick: true,\n\n iosOverlaysWebView: true,\n iosTextColor: 'black',\n iosBackgroundColor: null,\n\n androidOverlaysWebView: false,\n androidTextColor: 'black',\n androidBackgroundColor: null,\n },\n },\n create() {\n const app = this;\n bindMethods(app, {\n statusbar: Statusbar,\n });\n },\n on: {\n init() {\n const app = this;\n Statusbar.init.call(app);\n },\n },\n};\n","import $ from '../../shared/dom7.js';\nimport { extend } from '../../shared/utils.js';\nimport View from './view-class.js';\n\nfunction getCurrentView(app) {\n const $popoverView = $('.popover.modal-in .view');\n const $popupView = $('.popup.modal-in .view');\n const $panelView = $('.panel.panel-in .view');\n let $viewsEl = $('.views');\n if ($viewsEl.length === 0) $viewsEl = app.$el;\n // Find active view as tab\n let $viewEl = $viewsEl.children('.view');\n if ($viewEl.length === 0) {\n $viewEl = $viewsEl.children('.tabs').children('.view');\n }\n // Propably in tabs or split view\n if ($viewEl.length > 1) {\n if ($viewEl.hasClass('tab')) {\n // Tabs\n $viewEl = $viewsEl.children('.view.tab-active');\n if ($viewEl.length === 0) {\n $viewEl = $viewsEl.children('.tabs').children('.view.tab-active');\n }\n } else {\n // Split View, leave appView intact\n }\n }\n if ($popoverView.length > 0 && $popoverView[0].f7View) return $popoverView[0].f7View;\n if ($popupView.length > 0 && $popupView[0].f7View) return $popupView[0].f7View;\n if ($panelView.length > 0 && $panelView[0].f7View) return $panelView[0].f7View;\n if ($viewEl.length > 0) {\n if ($viewEl.length === 1 && $viewEl[0].f7View) return $viewEl[0].f7View;\n if ($viewEl.length > 1) {\n return app.views.main;\n }\n }\n return undefined;\n}\n\nexport default {\n name: 'view',\n params: {\n view: {\n init: true,\n initRouterOnTabShow: false,\n name: undefined,\n main: false,\n router: true,\n linksView: null,\n stackPages: false,\n xhrCache: true,\n xhrCacheIgnore: [],\n xhrCacheIgnoreGetParameters: false,\n xhrCacheDuration: 1000 * 60 * 10, // Ten minutes\n componentCache: true,\n preloadPreviousPage: true,\n allowDuplicateUrls: false,\n reloadPages: false,\n reloadDetail: false,\n masterDetailBreakpoint: 0,\n masterDetailResizable: false,\n removeElements: true,\n removeElementsWithTimeout: false,\n removeElementsTimeout: 0,\n restoreScrollTopOnBack: true,\n unloadTabContent: true,\n passRouteQueryToRequest: true,\n passRouteParamsToRequest: false,\n loadInitialPage: true,\n // Swipe Back\n iosSwipeBack: true,\n iosSwipeBackAnimateShadow: true,\n iosSwipeBackAnimateOpacity: true,\n iosSwipeBackActiveArea: 30,\n iosSwipeBackThreshold: 0,\n mdSwipeBack: false,\n mdSwipeBackAnimateShadow: true,\n mdSwipeBackAnimateOpacity: false,\n mdSwipeBackActiveArea: 30,\n mdSwipeBackThreshold: 0,\n auroraSwipeBack: false,\n auroraSwipeBackAnimateShadow: false,\n auroraSwipeBackAnimateOpacity: true,\n auroraSwipeBackActiveArea: 30,\n auroraSwipeBackThreshold: 0,\n // Push State\n browserHistory: false,\n browserHistoryRoot: undefined,\n browserHistoryAnimate: true,\n browserHistoryAnimateOnLoad: false,\n browserHistorySeparator: '#!',\n browserHistoryOnLoad: true,\n browserHistoryInitialMatch: false,\n browserHistoryStoreHistory: true,\n browserHistoryTabs: 'replace',\n // Animate Pages\n animate: true,\n // iOS Dynamic Navbar\n iosDynamicNavbar: true,\n // Animate iOS Navbar Back Icon\n iosAnimateNavbarBackIcon: true,\n // Delays\n iosPageLoadDelay: 0,\n mdPageLoadDelay: 0,\n auroraPageLoadDelay: 0,\n // Routes hooks\n routesBeforeEnter: null,\n routesBeforeLeave: null,\n },\n },\n static: {\n View,\n },\n create() {\n const app = this;\n extend(app, {\n views: extend([], {\n create(el, params) {\n return new View(app, el, params);\n },\n get(viewEl) {\n const $viewEl = $(viewEl);\n if ($viewEl.length && $viewEl[0].f7View) return $viewEl[0].f7View;\n return undefined;\n },\n }),\n });\n Object.defineProperty(app.views, 'current', {\n enumerable: true,\n configurable: true,\n get() {\n return getCurrentView(app);\n },\n });\n // Alias\n app.view = app.views;\n },\n on: {\n init() {\n const app = this;\n $('.view-init').each((viewEl) => {\n if (viewEl.f7View) return;\n const viewParams = $(viewEl).dataset();\n app.views.create(viewEl, viewParams);\n });\n },\n 'modalOpen panelOpen': function onOpen(instance) {\n const app = this;\n instance.$el.find('.view-init').each((viewEl) => {\n if (viewEl.f7View) return;\n const viewParams = $(viewEl).dataset();\n app.views.create(viewEl, viewParams);\n });\n },\n 'modalBeforeDestroy panelBeforeDestroy': function onClose(instance) {\n if (!instance || !instance.$el) return;\n instance.$el.find('.view-init').each((viewEl) => {\n const view = viewEl.f7View;\n if (!view) return;\n view.destroy();\n });\n },\n },\n vnode: {\n 'view-init': {\n insert(vnode) {\n const app = this;\n const viewEl = vnode.elm;\n if (viewEl.f7View) return;\n const viewParams = $(viewEl).dataset();\n app.views.create(viewEl, viewParams);\n },\n destroy(vnode) {\n const viewEl = vnode.elm;\n const view = viewEl.f7View;\n if (!view) return;\n view.destroy();\n },\n },\n },\n};\n","import $ from '../../shared/dom7.js';\nimport { bindMethods } from '../../shared/utils.js';\nimport { getSupport } from '../../shared/get-support.js';\n\nconst Navbar = {\n size(el) {\n const app = this;\n\n let $el = $(el);\n\n if ($el.hasClass('navbars')) {\n $el = $el.children('.navbar').each((navbarEl) => {\n app.navbar.size(navbarEl);\n });\n return;\n }\n\n const $innerEl = $el.children('.navbar-inner');\n if (!$innerEl.length) return;\n\n const needCenterTitle =\n $innerEl.hasClass('navbar-inner-centered-title') ||\n app.params.navbar[`${app.theme}CenterTitle`];\n const needLeftTitle = app.theme === 'ios' && !app.params.navbar[`${app.theme}CenterTitle`];\n\n if (!needCenterTitle && !needLeftTitle) return;\n\n if (\n $el.hasClass('stacked') ||\n $el.parents('.stacked').length > 0 ||\n $el.parents('.tab:not(.tab-active)').length > 0 ||\n $el.parents('.popup:not(.modal-in)').length > 0\n ) {\n return;\n }\n\n if (app.theme !== 'ios' && app.params.navbar[`${app.theme}CenterTitle`]) {\n $innerEl.addClass('navbar-inner-centered-title');\n }\n if (app.theme === 'ios' && !app.params.navbar.iosCenterTitle) {\n $innerEl.addClass('navbar-inner-left-title');\n }\n\n const $viewEl = $el.parents('.view').eq(0);\n const left = app.rtl ? $innerEl.children('.right') : $innerEl.children('.left');\n const right = app.rtl ? $innerEl.children('.left') : $innerEl.children('.right');\n const title = $innerEl.children('.title');\n const subnavbar = $innerEl.children('.subnavbar');\n const noLeft = left.length === 0;\n const noRight = right.length === 0;\n const leftWidth = noLeft ? 0 : left.outerWidth(true);\n const rightWidth = noRight ? 0 : right.outerWidth(true);\n const titleWidth = title.outerWidth(true);\n const navbarStyles = $innerEl.styles();\n const navbarWidth = $innerEl[0].offsetWidth;\n const navbarInnerWidth =\n navbarWidth -\n parseInt(navbarStyles.paddingLeft, 10) -\n parseInt(navbarStyles.paddingRight, 10);\n const isPrevious = $el.hasClass('navbar-previous');\n const sliding = $innerEl.hasClass('sliding');\n\n let router;\n let dynamicNavbar;\n\n if ($viewEl.length > 0 && $viewEl[0].f7View) {\n router = $viewEl[0].f7View.router;\n dynamicNavbar = router && router.dynamicNavbar;\n }\n\n let currLeft;\n let diff;\n if (noRight) {\n currLeft = navbarInnerWidth - titleWidth;\n }\n if (noLeft) {\n currLeft = 0;\n }\n if (!noLeft && !noRight) {\n currLeft = (navbarInnerWidth - rightWidth - titleWidth + leftWidth) / 2;\n }\n let requiredLeft = (navbarInnerWidth - titleWidth) / 2;\n if (navbarInnerWidth - leftWidth - rightWidth > titleWidth) {\n if (requiredLeft < leftWidth) {\n requiredLeft = leftWidth;\n }\n if (requiredLeft + titleWidth > navbarInnerWidth - rightWidth) {\n requiredLeft = navbarInnerWidth - rightWidth - titleWidth;\n }\n diff = requiredLeft - currLeft;\n } else {\n diff = 0;\n }\n\n // RTL inverter\n const inverter = app.rtl ? -1 : 1;\n\n if (dynamicNavbar && app.theme === 'ios') {\n if (title.hasClass('sliding') || (title.length > 0 && sliding)) {\n let titleLeftOffset = -(currLeft + diff) * inverter;\n const titleRightOffset = (navbarInnerWidth - currLeft - diff - titleWidth) * inverter;\n\n if (isPrevious) {\n if (router && router.params.iosAnimateNavbarBackIcon) {\n const activeNavbarBackLink = $el\n .parent()\n .find('.navbar-current')\n .children('.left.sliding')\n .find('.back .icon ~ span');\n if (activeNavbarBackLink.length > 0) {\n titleLeftOffset += activeNavbarBackLink[0].offsetLeft;\n }\n }\n }\n title[0].f7NavbarLeftOffset = titleLeftOffset;\n title[0].f7NavbarRightOffset = titleRightOffset;\n }\n if (!noLeft && (left.hasClass('sliding') || sliding)) {\n if (app.rtl) {\n left[0].f7NavbarLeftOffset = (-(navbarInnerWidth - left[0].offsetWidth) / 2) * inverter;\n left[0].f7NavbarRightOffset = leftWidth * inverter;\n } else {\n left[0].f7NavbarLeftOffset = -leftWidth;\n left[0].f7NavbarRightOffset = (navbarInnerWidth - left[0].offsetWidth) / 2;\n if (\n router &&\n router.params.iosAnimateNavbarBackIcon &&\n left.find('.back .icon').length > 0\n ) {\n if (left.find('.back .icon ~ span').length) {\n const leftOffset = left[0].f7NavbarLeftOffset;\n const rightOffset = left[0].f7NavbarRightOffset;\n left[0].f7NavbarLeftOffset = 0;\n left[0].f7NavbarRightOffset = 0;\n left.find('.back .icon ~ span')[0].f7NavbarLeftOffset = leftOffset;\n left.find('.back .icon ~ span')[0].f7NavbarRightOffset =\n rightOffset - left.find('.back .icon')[0].offsetWidth;\n }\n }\n }\n }\n if (!noRight && (right.hasClass('sliding') || sliding)) {\n if (app.rtl) {\n right[0].f7NavbarLeftOffset = -rightWidth * inverter;\n right[0].f7NavbarRightOffset = ((navbarInnerWidth - right[0].offsetWidth) / 2) * inverter;\n } else {\n right[0].f7NavbarLeftOffset = -(navbarInnerWidth - right[0].offsetWidth) / 2;\n right[0].f7NavbarRightOffset = rightWidth;\n }\n }\n if (subnavbar.length && (subnavbar.hasClass('sliding') || sliding)) {\n subnavbar[0].f7NavbarLeftOffset = app.rtl\n ? subnavbar[0].offsetWidth\n : -subnavbar[0].offsetWidth;\n subnavbar[0].f7NavbarRightOffset = -subnavbar[0].f7NavbarLeftOffset;\n }\n }\n\n // Center title\n if (needCenterTitle) {\n let titleLeft = diff;\n if (app.rtl && noLeft && noRight && title.length > 0) titleLeft = -titleLeft;\n title.css({ left: `${titleLeft}px` });\n }\n },\n hide(el, animate = true, hideStatusbar = false, hideOnlyCurrent = false) {\n const app = this;\n let $el = $(el);\n const isDynamic = $el.hasClass('navbar') && $el.parent('.navbars').length && !hideOnlyCurrent;\n if (isDynamic) $el = $el.parents('.navbars');\n if (!$el.length) return;\n if ($el.hasClass('navbar-hidden')) return;\n let className = `navbar-hidden${animate ? ' navbar-transitioning' : ''}`;\n const currentIsLarge = isDynamic\n ? $el.find('.navbar-current .title-large').length\n : $el.find('.title-large').length;\n if (currentIsLarge) {\n className += ' navbar-large-hidden';\n }\n if (hideStatusbar) {\n className += ' navbar-hidden-statusbar';\n }\n $el.transitionEnd(() => {\n $el.removeClass('navbar-transitioning');\n });\n $el.addClass(className);\n if (isDynamic) {\n $el.children('.navbar').each((subEl) => {\n $(subEl).trigger('navbar:hide');\n app.emit('navbarHide', subEl);\n });\n } else {\n $el.trigger('navbar:hide');\n app.emit('navbarHide', $el[0]);\n }\n },\n show(el = '.navbar-hidden', animate = true, hideOnlyCurrent = false) {\n const app = this;\n let $el = $(el);\n const isDynamic = $el.hasClass('navbar') && $el.parent('.navbars').length && !hideOnlyCurrent;\n if (isDynamic) $el = $el.parents('.navbars');\n if (!$el.length) return;\n if (!$el.hasClass('navbar-hidden')) return;\n if (animate) {\n $el.addClass('navbar-transitioning');\n $el.transitionEnd(() => {\n $el.removeClass('navbar-transitioning');\n });\n }\n $el.removeClass('navbar-hidden navbar-large-hidden navbar-hidden-statusbar');\n if (isDynamic) {\n $el.children('.navbar').each((subEl) => {\n $(subEl).trigger('navbar:show');\n app.emit('navbarShow', subEl);\n });\n } else {\n $el.trigger('navbar:show');\n app.emit('navbarShow', $el[0]);\n }\n },\n getElByPage(page) {\n let $pageEl;\n let $navbarEl;\n let pageData;\n if (page.$navbarEl || page.$el) {\n pageData = page;\n $pageEl = page.$el;\n } else {\n $pageEl = $(page);\n if ($pageEl.length > 0) pageData = $pageEl[0].f7Page;\n }\n if (pageData && pageData.$navbarEl && pageData.$navbarEl.length > 0) {\n $navbarEl = pageData.$navbarEl;\n } else if ($pageEl) {\n $navbarEl = $pageEl.children('.navbar');\n }\n if (!$navbarEl || ($navbarEl && $navbarEl.length === 0)) return undefined;\n return $navbarEl[0];\n },\n getPageByEl(navbarEl) {\n const $navbarEl = $(navbarEl);\n if ($navbarEl.parents('.page').length) {\n return $navbarEl.parents('.page')[0];\n }\n let pageEl;\n $navbarEl\n .parents('.view')\n .find('.page')\n .each((el) => {\n if (el && el.f7Page && el.f7Page.navbarEl && $navbarEl[0] === el.f7Page.navbarEl) {\n pageEl = el;\n }\n });\n return pageEl;\n },\n\n collapseLargeTitle(navbarEl) {\n const app = this;\n let $navbarEl = $(navbarEl);\n if ($navbarEl.hasClass('navbars')) {\n $navbarEl = $navbarEl.find('.navbar');\n if ($navbarEl.length > 1) {\n $navbarEl = $(navbarEl).find('.navbar-large.navbar-current');\n }\n if ($navbarEl.length > 1 || !$navbarEl.length) {\n return;\n }\n }\n const $pageEl = $(app.navbar.getPageByEl($navbarEl));\n $navbarEl.addClass('navbar-large-collapsed');\n $pageEl.eq(0).addClass('page-with-navbar-large-collapsed').trigger('page:navbarlargecollapsed');\n app.emit('pageNavbarLargeCollapsed', $pageEl[0]);\n $navbarEl.trigger('navbar:collapse');\n app.emit('navbarCollapse', $navbarEl[0]);\n },\n expandLargeTitle(navbarEl) {\n const app = this;\n let $navbarEl = $(navbarEl);\n if ($navbarEl.hasClass('navbars')) {\n $navbarEl = $navbarEl.find('.navbar-large');\n if ($navbarEl.length > 1) {\n $navbarEl = $(navbarEl).find('.navbar-large.navbar-current');\n }\n if ($navbarEl.length > 1 || !$navbarEl.length) {\n return;\n }\n }\n const $pageEl = $(app.navbar.getPageByEl($navbarEl));\n $navbarEl.removeClass('navbar-large-collapsed');\n $pageEl\n .eq(0)\n .removeClass('page-with-navbar-large-collapsed')\n .trigger('page:navbarlargeexpanded');\n app.emit('pageNavbarLargeExpanded', $pageEl[0]);\n $navbarEl.trigger('navbar:expand');\n app.emit('navbarExpand', $navbarEl[0]);\n },\n toggleLargeTitle(navbarEl) {\n const app = this;\n let $navbarEl = $(navbarEl);\n if ($navbarEl.hasClass('navbars')) {\n $navbarEl = $navbarEl.find('.navbar-large');\n if ($navbarEl.length > 1) {\n $navbarEl = $(navbarEl).find('.navbar-large.navbar-current');\n }\n if ($navbarEl.length > 1 || !$navbarEl.length) {\n return;\n }\n }\n if ($navbarEl.hasClass('navbar-large-collapsed')) {\n app.navbar.expandLargeTitle($navbarEl);\n } else {\n app.navbar.collapseLargeTitle($navbarEl);\n }\n },\n initNavbarOnScroll(pageEl, navbarEl, needHide, needCollapse, needTransparent) {\n const app = this;\n const support = getSupport();\n const $pageEl = $(pageEl);\n const $navbarEl = $(navbarEl);\n const $titleLargeEl = $navbarEl.find('.title-large');\n const isLarge = $titleLargeEl.length || $navbarEl.hasClass('.navbar-large');\n let navbarHideHeight = 44;\n const snapPageScrollToLargeTitle = app.params.navbar.snapPageScrollToLargeTitle;\n const snapPageScrollToTransparentNavbar = app.params.navbar.snapPageScrollToTransparentNavbar;\n\n let previousScrollTop;\n let currentScrollTop;\n\n let scrollHeight;\n let offsetHeight;\n let reachEnd;\n let action;\n let navbarHidden;\n\n let navbarCollapsed;\n let navbarTitleLargeHeight;\n\n let navbarOffsetHeight;\n\n if (needCollapse || (needHide && isLarge)) {\n navbarTitleLargeHeight = $navbarEl.css('--f7-navbar-large-title-height');\n\n if (navbarTitleLargeHeight && navbarTitleLargeHeight.indexOf('px') >= 0) {\n navbarTitleLargeHeight = parseInt(navbarTitleLargeHeight, 10);\n if (Number.isNaN(navbarTitleLargeHeight) && $titleLargeEl.length) {\n navbarTitleLargeHeight = $titleLargeEl[0].offsetHeight;\n } else if (Number.isNaN(navbarTitleLargeHeight)) {\n if (app.theme === 'ios') navbarTitleLargeHeight = 52;\n else if (app.theme === 'md') navbarTitleLargeHeight = 48;\n else if (app.theme === 'aurora') navbarTitleLargeHeight = 38;\n }\n } else if ($titleLargeEl.length) {\n navbarTitleLargeHeight = $titleLargeEl[0].offsetHeight;\n } else {\n // eslint-disable-next-line\n if (app.theme === 'ios') navbarTitleLargeHeight = 52;\n else if (app.theme === 'md') navbarTitleLargeHeight = 48;\n else if (app.theme === 'aurora') navbarTitleLargeHeight = 38;\n }\n }\n\n if (needHide && isLarge) {\n navbarHideHeight += navbarTitleLargeHeight;\n }\n\n let scrollChanged;\n let scrollContent;\n let scrollTimeoutId;\n let touchEndTimeoutId;\n const touchSnapTimeout = 70;\n const desktopSnapTimeout = 300;\n\n function calcScrollableDistance() {\n $pageEl.find('.page-content').each((pageContentEl) => {\n pageContentEl.f7ScrollableDistance =\n pageContentEl.scrollHeight - pageContentEl.offsetHeight;\n });\n }\n\n function snapLargeNavbar() {\n const inSearchbarExpanded = $navbarEl.hasClass('with-searchbar-expandable-enabled');\n if (inSearchbarExpanded) return;\n if (!scrollContent || currentScrollTop < 0) return;\n if (\n currentScrollTop >= navbarTitleLargeHeight / 2 &&\n currentScrollTop < navbarTitleLargeHeight\n ) {\n $(scrollContent).scrollTop(navbarTitleLargeHeight, 100);\n } else if (currentScrollTop < navbarTitleLargeHeight) {\n $(scrollContent).scrollTop(0, 200);\n }\n }\n\n function snapTransparentNavbar() {\n const inSearchbarExpanded = $navbarEl.hasClass('with-searchbar-expandable-enabled');\n if (inSearchbarExpanded) return;\n if (!scrollContent || currentScrollTop < 0) return;\n if (currentScrollTop >= navbarOffsetHeight / 2 && currentScrollTop < navbarOffsetHeight) {\n $(scrollContent).scrollTop(navbarOffsetHeight, 100);\n } else if (currentScrollTop < navbarOffsetHeight) {\n $(scrollContent).scrollTop(0, 200);\n }\n }\n\n function handleNavbarTransparent() {\n const isHidden =\n $navbarEl.hasClass('navbar-hidden') ||\n $navbarEl.parent('.navbars').hasClass('navbar-hidden');\n const inSearchbarExpanded = $navbarEl.hasClass('with-searchbar-expandable-enabled');\n if (inSearchbarExpanded || isHidden) return;\n if (!navbarOffsetHeight) {\n navbarOffsetHeight = navbarEl.offsetHeight;\n }\n let opacity = currentScrollTop / navbarOffsetHeight;\n const notTransparent = $navbarEl.hasClass('navbar-transparent-visible');\n opacity = Math.max(Math.min(opacity, 1), 0);\n\n if ((notTransparent && opacity === 1) || (!notTransparent && opacity === 0)) {\n $navbarEl.find('.navbar-bg, .title').css('opacity', '');\n return;\n }\n if (notTransparent && opacity === 0) {\n $navbarEl.trigger('navbar:transparenthide');\n app.emit('navbarTransparentHide', $navbarEl[0]);\n $navbarEl.removeClass('navbar-transparent-visible');\n $navbarEl.find('.navbar-bg, .title').css('opacity', '');\n return;\n }\n if (!notTransparent && opacity === 1) {\n $navbarEl.trigger('navbar:transparentshow');\n app.emit('navbarTransparentShow', $navbarEl[0]);\n $navbarEl.addClass('navbar-transparent-visible');\n $navbarEl.find('.navbar-bg, .title').css('opacity', '');\n return;\n }\n\n $navbarEl.find('.navbar-bg, .title').css('opacity', opacity);\n\n if (snapPageScrollToTransparentNavbar) {\n if (!support.touch) {\n clearTimeout(scrollTimeoutId);\n scrollTimeoutId = setTimeout(() => {\n snapTransparentNavbar();\n }, desktopSnapTimeout);\n } else if (touchEndTimeoutId) {\n clearTimeout(touchEndTimeoutId);\n touchEndTimeoutId = null;\n touchEndTimeoutId = setTimeout(() => {\n snapTransparentNavbar();\n clearTimeout(touchEndTimeoutId);\n touchEndTimeoutId = null;\n }, touchSnapTimeout);\n }\n }\n }\n\n let previousCollapseProgress = null;\n let collapseProgress = null;\n function handleLargeNavbarCollapse(pageContentEl) {\n const isHidden =\n $navbarEl.hasClass('navbar-hidden') ||\n $navbarEl.parent('.navbars').hasClass('navbar-hidden');\n if (isHidden) return;\n const isLargeTransparent =\n $navbarEl.hasClass('navbar-large-transparent') ||\n ($navbarEl.hasClass('navbar-large') && $navbarEl.hasClass('navbar-transparent'));\n previousCollapseProgress = collapseProgress;\n const scrollableDistance = Math.min(\n navbarTitleLargeHeight,\n pageContentEl.f7ScrollableDistance || navbarTitleLargeHeight,\n );\n collapseProgress = Math.min(Math.max(currentScrollTop / scrollableDistance, 0), 1);\n const previousCollapseWasInMiddle =\n previousCollapseProgress > 0 && previousCollapseProgress < 1;\n const inSearchbarExpanded = $navbarEl.hasClass('with-searchbar-expandable-enabled');\n if (inSearchbarExpanded) return;\n navbarCollapsed = $navbarEl.hasClass('navbar-large-collapsed');\n if (collapseProgress === 0 && navbarCollapsed) {\n app.navbar.expandLargeTitle($navbarEl[0]);\n } else if (collapseProgress === 1 && !navbarCollapsed) {\n app.navbar.collapseLargeTitle($navbarEl[0]);\n }\n if (\n (collapseProgress === 0 && navbarCollapsed) ||\n (collapseProgress === 0 && previousCollapseWasInMiddle) ||\n (collapseProgress === 1 && !navbarCollapsed) ||\n (collapseProgress === 1 && previousCollapseWasInMiddle)\n ) {\n if (app.theme === 'md') {\n $navbarEl.find('.navbar-inner').css('overflow', '');\n }\n $navbarEl.find('.title').css('opacity', '');\n $navbarEl.find('.title-large-text, .subnavbar').css('transform', '');\n if (isLargeTransparent) {\n $navbarEl.find('.navbar-bg').css('opacity', '');\n } else {\n $navbarEl.find('.navbar-bg').css('transform', '');\n }\n } else if (collapseProgress > 0 && collapseProgress < 1) {\n if (app.theme === 'md') {\n $navbarEl.find('.navbar-inner').css('overflow', 'visible');\n }\n $navbarEl.find('.title').css('opacity', collapseProgress);\n $navbarEl\n .find('.title-large-text, .subnavbar')\n .css(\n 'transform',\n `translate3d(0px, ${-1 * collapseProgress * navbarTitleLargeHeight}px, 0)`,\n );\n if (isLargeTransparent) {\n $navbarEl.find('.navbar-bg').css('opacity', collapseProgress);\n } else {\n $navbarEl\n .find('.navbar-bg')\n .css(\n 'transform',\n `translate3d(0px, ${-1 * collapseProgress * navbarTitleLargeHeight}px, 0)`,\n );\n }\n }\n\n if (snapPageScrollToLargeTitle) {\n if (!support.touch) {\n clearTimeout(scrollTimeoutId);\n scrollTimeoutId = setTimeout(() => {\n snapLargeNavbar();\n }, desktopSnapTimeout);\n } else if (touchEndTimeoutId) {\n clearTimeout(touchEndTimeoutId);\n touchEndTimeoutId = null;\n touchEndTimeoutId = setTimeout(() => {\n snapLargeNavbar();\n clearTimeout(touchEndTimeoutId);\n touchEndTimeoutId = null;\n }, touchSnapTimeout);\n }\n }\n }\n\n function handleTitleHideShow() {\n if ($pageEl.hasClass('page-with-card-opened')) return;\n scrollHeight = scrollContent.scrollHeight;\n offsetHeight = scrollContent.offsetHeight;\n reachEnd = currentScrollTop + offsetHeight >= scrollHeight;\n navbarHidden =\n $navbarEl.hasClass('navbar-hidden') ||\n $navbarEl.parent('.navbars').hasClass('navbar-hidden');\n if (reachEnd) {\n if (app.params.navbar.showOnPageScrollEnd) {\n action = 'show';\n }\n } else if (previousScrollTop > currentScrollTop) {\n if (app.params.navbar.showOnPageScrollTop || currentScrollTop <= navbarHideHeight) {\n action = 'show';\n } else {\n action = 'hide';\n }\n } else if (currentScrollTop > navbarHideHeight) {\n action = 'hide';\n } else {\n action = 'show';\n }\n\n if (action === 'show' && navbarHidden) {\n app.navbar.show($navbarEl, true, true);\n navbarHidden = false;\n } else if (action === 'hide' && !navbarHidden) {\n app.navbar.hide($navbarEl, true, false, true);\n navbarHidden = true;\n }\n previousScrollTop = currentScrollTop;\n }\n\n function handleScroll(e) {\n scrollContent = this;\n if (e && e.target && e.target !== scrollContent) {\n return;\n }\n currentScrollTop = scrollContent.scrollTop;\n scrollChanged = currentScrollTop;\n if (needCollapse) {\n handleLargeNavbarCollapse(scrollContent);\n } else if (needTransparent) {\n handleNavbarTransparent();\n }\n if ($pageEl.hasClass('page-previous')) return;\n if (needHide) {\n handleTitleHideShow();\n }\n }\n function handeTouchStart() {\n scrollChanged = false;\n }\n function handleTouchEnd() {\n clearTimeout(touchEndTimeoutId);\n touchEndTimeoutId = null;\n touchEndTimeoutId = setTimeout(() => {\n if (scrollChanged !== false) {\n if (needTransparent && !needCollapse) {\n snapTransparentNavbar();\n } else {\n snapLargeNavbar();\n }\n clearTimeout(touchEndTimeoutId);\n touchEndTimeoutId = null;\n }\n }, touchSnapTimeout);\n }\n $pageEl.on('scroll', '.page-content', handleScroll, true);\n\n if (\n support.touch &&\n ((needCollapse && snapPageScrollToLargeTitle) ||\n (needTransparent && snapPageScrollToTransparentNavbar))\n ) {\n app.on('touchstart:passive', handeTouchStart);\n app.on('touchend:passive', handleTouchEnd);\n }\n calcScrollableDistance();\n if (needCollapse || needTransparent) {\n $pageEl.find('.page-content').each((pageContentEl) => {\n if (pageContentEl.scrollTop > 0) handleScroll.call(pageContentEl);\n });\n }\n app.on('resize', calcScrollableDistance);\n $pageEl[0].f7DetachNavbarScrollHandlers = function f7DetachNavbarScrollHandlers() {\n app.off('resize', calcScrollableDistance);\n delete $pageEl[0].f7DetachNavbarScrollHandlers;\n $pageEl.off('scroll', '.page-content', handleScroll, true);\n if (\n support.touch &&\n ((needCollapse && snapPageScrollToLargeTitle) ||\n (needTransparent && snapPageScrollToTransparentNavbar))\n ) {\n app.off('touchstart:passive', handeTouchStart);\n app.off('touchend:passive', handleTouchEnd);\n }\n };\n },\n};\nexport default {\n name: 'navbar',\n create() {\n const app = this;\n bindMethods(app, {\n navbar: Navbar,\n });\n },\n params: {\n navbar: {\n scrollTopOnTitleClick: true,\n iosCenterTitle: true,\n mdCenterTitle: false,\n auroraCenterTitle: true,\n hideOnPageScroll: false,\n showOnPageScrollEnd: true,\n showOnPageScrollTop: true,\n collapseLargeTitleOnScroll: true,\n snapPageScrollToLargeTitle: true,\n snapPageScrollToTransparentNavbar: true,\n },\n },\n on: {\n 'panelBreakpoint panelCollapsedBreakpoint panelResize viewResize resize viewMasterDetailBreakpoint':\n function onPanelResize() {\n const app = this;\n $('.navbar').each((navbarEl) => {\n app.navbar.size(navbarEl);\n });\n },\n pageBeforeRemove(page) {\n if (page.$el[0].f7DetachNavbarScrollHandlers) {\n page.$el[0].f7DetachNavbarScrollHandlers();\n }\n },\n pageBeforeIn(page) {\n const app = this;\n if (app.theme !== 'ios') return;\n let $navbarsEl;\n const view = page.$el.parents('.view')[0].f7View;\n const navbarEl = app.navbar.getElByPage(page);\n if (!navbarEl) {\n $navbarsEl = page.$el.parents('.view').children('.navbars');\n } else {\n $navbarsEl = $(navbarEl).parents('.navbars');\n }\n if (page.$el.hasClass('no-navbar') || (view.router.dynamicNavbar && !navbarEl)) {\n const animate = !!(page.pageFrom && page.router.history.length > 0);\n app.navbar.hide($navbarsEl, animate);\n } else {\n app.navbar.show($navbarsEl);\n }\n },\n pageReinit(page) {\n const app = this;\n const $navbarEl = $(app.navbar.getElByPage(page));\n if (!$navbarEl || $navbarEl.length === 0) return;\n app.navbar.size($navbarEl);\n },\n pageInit(page) {\n const app = this;\n const $navbarEl = $(app.navbar.getElByPage(page));\n if (!$navbarEl || $navbarEl.length === 0) return;\n\n // Size\n app.navbar.size($navbarEl);\n\n // Need Collapse On Scroll\n let needCollapseOnScrollHandler;\n if ($navbarEl.find('.title-large').length > 0) {\n $navbarEl.addClass('navbar-large');\n }\n if ($navbarEl.hasClass('navbar-large')) {\n if (app.params.navbar.collapseLargeTitleOnScroll) needCollapseOnScrollHandler = true;\n page.$el.addClass('page-with-navbar-large');\n }\n\n // Need transparent on scroll\n let needTransparentOnScroll;\n if (!needCollapseOnScrollHandler && $navbarEl.hasClass('navbar-transparent')) {\n needTransparentOnScroll = true;\n }\n\n // Need Hide On Scroll\n let needHideOnScrollHandler;\n if (\n app.params.navbar.hideOnPageScroll ||\n page.$el.find('.hide-navbar-on-scroll').length ||\n page.$el.hasClass('hide-navbar-on-scroll') ||\n page.$el.find('.hide-bars-on-scroll').length ||\n page.$el.hasClass('hide-bars-on-scroll')\n ) {\n if (\n page.$el.find('.keep-navbar-on-scroll').length ||\n page.$el.hasClass('keep-navbar-on-scroll') ||\n page.$el.find('.keep-bars-on-scroll').length ||\n page.$el.hasClass('keep-bars-on-scroll')\n ) {\n needHideOnScrollHandler = false;\n } else {\n needHideOnScrollHandler = true;\n }\n }\n\n if (needCollapseOnScrollHandler || needHideOnScrollHandler || needTransparentOnScroll) {\n app.navbar.initNavbarOnScroll(\n page.el,\n $navbarEl[0],\n needHideOnScrollHandler,\n needCollapseOnScrollHandler,\n needTransparentOnScroll,\n );\n }\n },\n 'panelOpen panelSwipeOpen modalOpen': function onPanelModalOpen(instance) {\n const app = this;\n instance.$el.find('.navbar:not(.navbar-previous):not(.stacked)').each((navbarEl) => {\n app.navbar.size(navbarEl);\n });\n },\n tabShow(tabEl) {\n const app = this;\n $(tabEl)\n .find('.navbar:not(.navbar-previous):not(.stacked)')\n .each((navbarEl) => {\n app.navbar.size(navbarEl);\n });\n },\n },\n clicks: {\n '.navbar .title': function onTitleClick($clickedEl, clickedData, e) {\n const app = this;\n if (!app.params.navbar.scrollTopOnTitleClick) return;\n if ($(e.target).closest('a, button').length > 0) {\n return;\n }\n let $pageContentEl;\n\n // Find active page\n const $navbarEl = $clickedEl.parents('.navbar');\n const $navbarsEl = $navbarEl.parents('.navbars');\n\n // Static Layout\n $pageContentEl = $navbarEl.parents('.page-content');\n\n if ($pageContentEl.length === 0) {\n // Fixed Layout\n if ($navbarEl.parents('.page').length > 0) {\n $pageContentEl = $navbarEl.parents('.page').find('.page-content');\n }\n // Through Layout iOS\n if ($pageContentEl.length === 0 && $navbarsEl.length) {\n if ($navbarsEl.nextAll('.page-current:not(.stacked)').length > 0) {\n $pageContentEl = $navbarsEl\n .nextAll('.page-current:not(.stacked)')\n .find('.page-content');\n }\n }\n // Through Layout\n if ($pageContentEl.length === 0) {\n if ($navbarEl.nextAll('.page-current:not(.stacked)').length > 0) {\n $pageContentEl = $navbarEl.nextAll('.page-current:not(.stacked)').find('.page-content');\n }\n }\n }\n if ($pageContentEl && $pageContentEl.length > 0) {\n // Check for tab\n if ($pageContentEl.hasClass('tab')) {\n $pageContentEl = $pageContentEl.parent('.tabs').children('.page-content.tab-active');\n }\n if ($pageContentEl.length > 0) $pageContentEl.scrollTop(0, 300);\n }\n },\n },\n vnode: {\n navbar: {\n postpatch(vnode) {\n const app = this;\n app.navbar.size(vnode.elm);\n },\n },\n },\n};\n","import $ from '../../shared/dom7.js';\nimport { nextFrame, bindMethods } from '../../shared/utils.js';\n\nconst Toolbar = {\n setHighlight(tabbarEl) {\n const app = this;\n const $tabbarEl = $(tabbarEl);\n if (app.theme === 'ios' && !$tabbarEl.hasClass('tabbar-highlight')) return;\n\n if (\n $tabbarEl.length === 0 ||\n !($tabbarEl.hasClass('tabbar') || $tabbarEl.hasClass('tabbar-labels'))\n )\n return;\n\n let $highlightEl = $tabbarEl.find('.tab-link-highlight');\n const tabLinksCount = $tabbarEl.find('.tab-link').length;\n if (tabLinksCount === 0) {\n $highlightEl.remove();\n return;\n }\n\n if ($highlightEl.length === 0) {\n $tabbarEl.children('.toolbar-inner').append('<span class=\"tab-link-highlight\"></span>');\n $highlightEl = $tabbarEl.find('.tab-link-highlight');\n } else if ($highlightEl.next().length) {\n $tabbarEl.children('.toolbar-inner').append($highlightEl);\n }\n\n const $activeLink = $tabbarEl.find('.tab-link-active');\n let highlightWidth;\n let highlightTranslate;\n\n if ($tabbarEl.hasClass('tabbar-scrollable') && $activeLink && $activeLink[0]) {\n highlightWidth = `${$activeLink[0].offsetWidth}px`;\n highlightTranslate = `${$activeLink[0].offsetLeft}px`;\n } else {\n const activeIndex = $activeLink.index();\n highlightWidth = `${100 / tabLinksCount}%`;\n highlightTranslate = `${(app.rtl ? -activeIndex : activeIndex) * 100}%`;\n }\n\n nextFrame(() => {\n $highlightEl.css('width', highlightWidth).transform(`translate3d(${highlightTranslate},0,0)`);\n });\n },\n init(tabbarEl) {\n const app = this;\n app.toolbar.setHighlight(tabbarEl);\n },\n hide(el, animate = true) {\n const app = this;\n const $el = $(el);\n if ($el.hasClass('toolbar-hidden')) return;\n const className = `toolbar-hidden${animate ? ' toolbar-transitioning' : ''}`;\n $el.transitionEnd(() => {\n $el.removeClass('toolbar-transitioning');\n });\n $el.addClass(className);\n $el.trigger('toolbar:hide');\n app.emit('toolbarHide', $el[0]);\n },\n show(el, animate = true) {\n const app = this;\n const $el = $(el);\n if (!$el.hasClass('toolbar-hidden')) return;\n if (animate) {\n $el.addClass('toolbar-transitioning');\n $el.transitionEnd(() => {\n $el.removeClass('toolbar-transitioning');\n });\n }\n $el.removeClass('toolbar-hidden');\n $el.trigger('toolbar:show');\n app.emit('toolbarShow', $el[0]);\n },\n initToolbarOnScroll(pageEl) {\n const app = this;\n const $pageEl = $(pageEl);\n let $toolbarEl = $pageEl.parents('.view').children('.toolbar');\n if ($toolbarEl.length === 0) {\n $toolbarEl = $pageEl.find('.toolbar');\n }\n if ($toolbarEl.length === 0) {\n $toolbarEl = $pageEl.parents('.views').children('.tabbar, .tabbar-labels');\n }\n if ($toolbarEl.length === 0) {\n return;\n }\n\n let previousScrollTop;\n let currentScrollTop;\n\n let scrollHeight;\n let offsetHeight;\n let reachEnd;\n let action;\n let toolbarHidden;\n function handleScroll(e) {\n if ($pageEl.hasClass('page-with-card-opened')) return;\n if ($pageEl.hasClass('page-previous')) return;\n const scrollContent = this;\n if (e && e.target && e.target !== scrollContent) {\n return;\n }\n currentScrollTop = scrollContent.scrollTop;\n scrollHeight = scrollContent.scrollHeight;\n offsetHeight = scrollContent.offsetHeight;\n reachEnd = currentScrollTop + offsetHeight >= scrollHeight;\n toolbarHidden = $toolbarEl.hasClass('toolbar-hidden');\n\n if (reachEnd) {\n if (app.params.toolbar.showOnPageScrollEnd) {\n action = 'show';\n }\n } else if (previousScrollTop > currentScrollTop) {\n if (app.params.toolbar.showOnPageScrollTop || currentScrollTop <= 44) {\n action = 'show';\n } else {\n action = 'hide';\n }\n } else if (currentScrollTop > 44) {\n action = 'hide';\n } else {\n action = 'show';\n }\n\n if (action === 'show' && toolbarHidden) {\n app.toolbar.show($toolbarEl);\n toolbarHidden = false;\n } else if (action === 'hide' && !toolbarHidden) {\n app.toolbar.hide($toolbarEl);\n toolbarHidden = true;\n }\n\n previousScrollTop = currentScrollTop;\n }\n $pageEl.on('scroll', '.page-content', handleScroll, true);\n $pageEl[0].f7ScrollToolbarHandler = handleScroll;\n },\n};\nexport default {\n name: 'toolbar',\n create() {\n const app = this;\n bindMethods(app, {\n toolbar: Toolbar,\n });\n },\n params: {\n toolbar: {\n hideOnPageScroll: false,\n showOnPageScrollEnd: true,\n showOnPageScrollTop: true,\n },\n },\n on: {\n pageBeforeRemove(page) {\n if (page.$el[0].f7ScrollToolbarHandler) {\n page.$el.off('scroll', '.page-content', page.$el[0].f7ScrollToolbarHandler, true);\n }\n },\n pageBeforeIn(page) {\n const app = this;\n let $toolbarEl = page.$el.parents('.view').children('.toolbar');\n if ($toolbarEl.length === 0) {\n $toolbarEl = page.$el.parents('.views').children('.tabbar, .tabbar-labels');\n }\n if ($toolbarEl.length === 0) {\n $toolbarEl = page.$el.find('.toolbar');\n }\n if ($toolbarEl.length === 0) {\n return;\n }\n if (page.$el.hasClass('no-toolbar')) {\n app.toolbar.hide($toolbarEl);\n } else {\n app.toolbar.show($toolbarEl);\n }\n },\n pageInit(page) {\n const app = this;\n page.$el.find('.tabbar, .tabbar-labels').each((tabbarEl) => {\n app.toolbar.init(tabbarEl);\n });\n if (\n app.params.toolbar.hideOnPageScroll ||\n page.$el.find('.hide-toolbar-on-scroll').length ||\n page.$el.hasClass('hide-toolbar-on-scroll') ||\n page.$el.find('.hide-bars-on-scroll').length ||\n page.$el.hasClass('hide-bars-on-scroll')\n ) {\n if (\n page.$el.find('.keep-toolbar-on-scroll').length ||\n page.$el.hasClass('keep-toolbar-on-scroll') ||\n page.$el.find('.keep-bars-on-scroll').length ||\n page.$el.hasClass('keep-bars-on-scroll')\n ) {\n return;\n }\n app.toolbar.initToolbarOnScroll(page.el);\n }\n },\n init() {\n const app = this;\n app.$el.find('.tabbar, .tabbar-labels').each((tabbarEl) => {\n app.toolbar.init(tabbarEl);\n });\n },\n },\n vnode: {\n tabbar: {\n insert(vnode) {\n const app = this;\n app.toolbar.init(vnode.elm);\n },\n },\n },\n};\n","import $ from '../../shared/dom7.js';\n\nexport default {\n name: 'subnavbar',\n on: {\n pageInit(page) {\n if (page.$navbarEl && page.$navbarEl.length && page.$navbarEl.find('.subnavbar').length) {\n page.$el.addClass('page-with-subnavbar');\n }\n const $innerSubnavbars = page.$el.find('.subnavbar').filter((subnavbarEl) => {\n return $(subnavbarEl).parents('.page')[0] === page.$el[0];\n });\n if ($innerSubnavbars.length) {\n page.$el.addClass('page-with-subnavbar');\n }\n },\n },\n};\n","import $ from '../../shared/dom7.js';\n\nexport default class TouchRipple {\n constructor(app, $el, x, y) {\n const ripple = this;\n\n if (!$el) return undefined;\n\n const { left, top, width, height } = $el[0].getBoundingClientRect();\n const center = {\n x: x - left,\n y: y - top,\n };\n let diameter = Math.max((height ** 2 + width ** 2) ** 0.5, 48);\n\n let isInset = false;\n const insetElements = app.params.touch.touchRippleInsetElements || '';\n if (insetElements && $el.is(insetElements)) {\n isInset = true;\n }\n if (isInset) {\n diameter = Math.max(Math.min(width, height), 48);\n }\n\n if (!isInset && $el.css('overflow') === 'hidden') {\n const distanceFromCenter =\n ((center.x - width / 2) ** 2 + (center.y - height / 2) ** 2) ** 0.5;\n const scale = (diameter / 2 + distanceFromCenter) / (diameter / 2);\n ripple.rippleTransform = `translate3d(0px, 0px, 0) scale(${scale})`;\n } else {\n // prettier-ignore\n ripple.rippleTransform = `translate3d(${-center.x + width / 2}px, ${-center.y + height / 2}px, 0) scale(1)`;\n }\n if (isInset) {\n $el.addClass('ripple-inset');\n }\n\n ripple.$rippleWaveEl = $(\n `<div class=\"ripple-wave\" style=\"width: ${diameter}px; height: ${diameter}px; margin-top:-${\n diameter / 2\n }px; margin-left:-${diameter / 2}px; left:${center.x}px; top:${\n center.y\n }px; --f7-ripple-transform: ${ripple.rippleTransform}\"></div>`,\n );\n\n $el.prepend(ripple.$rippleWaveEl);\n\n ripple.$rippleWaveEl.animationEnd(() => {\n if (!ripple.$rippleWaveEl) return;\n if (ripple.$rippleWaveEl.hasClass('ripple-wave-out')) return;\n ripple.$rippleWaveEl.addClass('ripple-wave-in');\n if (ripple.shouldBeRemoved) {\n ripple.out();\n }\n });\n\n return ripple;\n }\n\n destroy() {\n let ripple = this;\n if (ripple.$rippleWaveEl) {\n ripple.$rippleWaveEl.remove();\n }\n Object.keys(ripple).forEach((key) => {\n ripple[key] = null;\n delete ripple[key];\n });\n ripple = null;\n }\n\n out() {\n const ripple = this;\n const { $rippleWaveEl } = this;\n clearTimeout(ripple.removeTimeout);\n $rippleWaveEl.addClass('ripple-wave-out');\n\n ripple.removeTimeout = setTimeout(() => {\n ripple.destroy();\n }, 300);\n\n $rippleWaveEl.animationEnd(() => {\n clearTimeout(ripple.removeTimeout);\n ripple.destroy();\n });\n }\n\n remove() {\n const ripple = this;\n if (ripple.shouldBeRemoved) return;\n ripple.removeTimeout = setTimeout(() => {\n ripple.destroy();\n }, 400);\n ripple.shouldBeRemoved = true;\n if (ripple.$rippleWaveEl.hasClass('ripple-wave-in')) {\n ripple.out();\n }\n }\n}\n","import TouchRipple from './touch-ripple-class.js';\n\nexport default {\n name: 'touch-ripple',\n static: {\n TouchRipple,\n },\n create() {\n const app = this;\n app.touchRipple = {\n create(...args) {\n return new TouchRipple(...args);\n },\n };\n },\n};\n","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { extend, deleteProps } from '../../shared/utils.js';\nimport Framework7Class from '../../shared/class.js';\n\nconst openedModals = [];\nconst dialogsQueue = [];\nfunction clearDialogsQueue() {\n if (dialogsQueue.length === 0) return;\n const dialog = dialogsQueue.shift();\n dialog.open();\n}\nclass Modal extends Framework7Class {\n constructor(app, params) {\n super(params, [app]);\n\n const modal = this;\n\n const defaults = {};\n\n // Extend defaults with modules params\n modal.useModulesParams(defaults);\n\n modal.params = extend(defaults, params);\n modal.opened = false;\n\n let $containerEl = modal.params.containerEl ? $(modal.params.containerEl).eq(0) : app.$el;\n if (!$containerEl.length) $containerEl = app.$el;\n\n modal.$containerEl = $containerEl;\n modal.containerEl = $containerEl[0];\n\n // Install Modules\n modal.useModules();\n\n return this;\n }\n\n onOpen() {\n const modal = this;\n modal.opened = true;\n openedModals.push(modal);\n $('html').addClass(`with-modal-${modal.type.toLowerCase()}`);\n modal.$el.trigger(`modal:open ${modal.type.toLowerCase()}:open`);\n modal.emit(`local::open modalOpen ${modal.type}Open`, modal);\n }\n\n onOpened() {\n const modal = this;\n modal.$el.trigger(`modal:opened ${modal.type.toLowerCase()}:opened`);\n modal.emit(`local::opened modalOpened ${modal.type}Opened`, modal);\n }\n\n onClose() {\n const modal = this;\n modal.opened = false;\n if (!modal.type || !modal.$el) return;\n openedModals.splice(openedModals.indexOf(modal), 1);\n $('html').removeClass(`with-modal-${modal.type.toLowerCase()}`);\n modal.$el.trigger(`modal:close ${modal.type.toLowerCase()}:close`);\n modal.emit(`local::close modalClose ${modal.type}Close`, modal);\n }\n\n onClosed() {\n const modal = this;\n if (!modal.type || !modal.$el) return;\n modal.$el.removeClass('modal-out');\n modal.$el.hide();\n if (\n modal.params.backdrop &&\n (modal.params.backdropUnique || modal.forceBackdropUnique) &&\n modal.$backdropEl\n ) {\n modal.$backdropEl.remove();\n }\n modal.$el.trigger(`modal:closed ${modal.type.toLowerCase()}:closed`);\n modal.emit(`local::closed modalClosed ${modal.type}Closed`, modal);\n }\n\n open(animateModal) {\n const modal = this;\n const document = getDocument();\n const app = modal.app;\n const $el = modal.$el;\n const $backdropEl = modal.$backdropEl;\n const type = modal.type;\n let animate = true;\n if (typeof animateModal !== 'undefined') animate = animateModal;\n else if (typeof modal.params.animate !== 'undefined') {\n animate = modal.params.animate;\n }\n\n if (!$el || $el.hasClass('modal-in')) {\n if (animateModal === false && $el[0] && type !== 'dialog') {\n $el[0].style.display = 'block';\n }\n return modal;\n }\n\n if (type === 'dialog' && app.params.modal.queueDialogs) {\n let pushToQueue;\n if ($('.dialog.modal-in').length > 0) {\n pushToQueue = true;\n } else if (openedModals.length > 0) {\n openedModals.forEach((openedModal) => {\n if (openedModal.type === 'dialog') pushToQueue = true;\n });\n }\n if (pushToQueue) {\n dialogsQueue.push(modal);\n return modal;\n }\n }\n\n const $modalParentEl = $el.parent();\n const wasInDom = $el.parents(document).length > 0;\n if (!$modalParentEl.is(modal.$containerEl)) {\n modal.$containerEl.append($el);\n modal.once(`${type}Closed`, () => {\n if (wasInDom) {\n $modalParentEl.append($el);\n } else {\n $el.remove();\n }\n });\n }\n // Show Modal\n $el.show();\n\n if (\n modal.params.backdrop &&\n (modal.params.backdropUnique || modal.forceBackdropUnique) &&\n modal.$backdropEl\n ) {\n modal.$backdropEl.insertBefore($el);\n }\n\n /* eslint no-underscore-dangle: [\"error\", { \"allow\": [\"_clientLeft\"] }] */\n modal._clientLeft = $el[0].clientLeft;\n\n // Modal\n function transitionEnd() {\n if ($el.hasClass('modal-out')) {\n modal.onClosed();\n } else if ($el.hasClass('modal-in')) {\n modal.onOpened();\n }\n }\n if (animate) {\n if ($backdropEl) {\n $backdropEl.removeClass('not-animated');\n $backdropEl.addClass('backdrop-in');\n }\n $el.animationEnd(() => {\n transitionEnd();\n });\n $el.transitionEnd(() => {\n transitionEnd();\n });\n $el.removeClass('modal-out not-animated').addClass('modal-in');\n modal.onOpen();\n } else {\n if ($backdropEl) {\n $backdropEl.addClass('backdrop-in not-animated');\n }\n $el.removeClass('modal-out').addClass('modal-in not-animated');\n modal.onOpen();\n modal.onOpened();\n }\n\n return modal;\n }\n\n close(animateModal) {\n const modal = this;\n const $el = modal.$el;\n const $backdropEl = modal.$backdropEl;\n\n let animate = true;\n if (typeof animateModal !== 'undefined') animate = animateModal;\n else if (typeof modal.params.animate !== 'undefined') {\n animate = modal.params.animate;\n }\n\n if (!$el || !$el.hasClass('modal-in')) {\n if (dialogsQueue.indexOf(modal) >= 0) {\n dialogsQueue.splice(dialogsQueue.indexOf(modal), 1);\n }\n return modal;\n }\n\n // backdrop\n if ($backdropEl) {\n let needToHideBackdrop = true;\n if (modal.type === 'popup') {\n modal.$el\n .prevAll('.popup.modal-in')\n .add(modal.$el.nextAll('.popup.modal-in'))\n .each((popupEl) => {\n const popupInstance = popupEl.f7Modal;\n if (!popupInstance) return;\n if (\n popupInstance.params.closeByBackdropClick &&\n popupInstance.params.backdrop &&\n popupInstance.backdropEl === modal.backdropEl\n ) {\n needToHideBackdrop = false;\n }\n });\n }\n if (needToHideBackdrop) {\n $backdropEl[animate ? 'removeClass' : 'addClass']('not-animated');\n $backdropEl.removeClass('backdrop-in');\n }\n }\n\n // Modal\n $el[animate ? 'removeClass' : 'addClass']('not-animated');\n\n function transitionEnd() {\n if ($el.hasClass('modal-out')) {\n modal.onClosed();\n } else if ($el.hasClass('modal-in')) {\n modal.onOpened();\n }\n }\n if (animate) {\n $el.animationEnd(() => {\n transitionEnd();\n });\n $el.transitionEnd(() => {\n transitionEnd();\n });\n $el.removeClass('modal-in').addClass('modal-out');\n // Emit close\n modal.onClose();\n } else {\n $el.addClass('not-animated').removeClass('modal-in').addClass('modal-out');\n // Emit close\n modal.onClose();\n modal.onClosed();\n }\n\n if (modal.type === 'dialog') {\n clearDialogsQueue();\n }\n\n return modal;\n }\n\n destroy() {\n const modal = this;\n if (modal.destroyed) return;\n modal.emit(`local::beforeDestroy modalBeforeDestroy ${modal.type}BeforeDestroy`, modal);\n if (modal.$el) {\n modal.$el.trigger(`modal:beforedestroy ${modal.type.toLowerCase()}:beforedestroy`);\n if (modal.$el.length && modal.$el[0].f7Modal) {\n delete modal.$el[0].f7Modal;\n }\n }\n deleteProps(modal);\n modal.destroyed = true;\n }\n}\n\nexport default Modal;\n","import $ from '../../shared/dom7.js';\nimport { extend } from '../../shared/utils.js';\nimport Modal from './modal-class.js';\n\nclass CustomModal extends Modal {\n constructor(app, params) {\n const extendedParams = extend(\n {\n backdrop: true,\n closeByBackdropClick: true,\n on: {},\n },\n params,\n );\n\n // Extends with open/close Modal methods;\n super(app, extendedParams);\n\n const customModal = this;\n\n customModal.params = extendedParams;\n\n // Find Element\n let $el;\n if (!customModal.params.el) {\n $el = $(customModal.params.content);\n } else {\n $el = $(customModal.params.el);\n }\n\n if ($el && $el.length > 0 && $el[0].f7Modal) {\n return $el[0].f7Modal;\n }\n\n if ($el.length === 0) {\n return customModal.destroy();\n }\n let $backdropEl;\n if (customModal.params.backdrop) {\n $backdropEl = app.$el.children('.custom-modal-backdrop');\n if ($backdropEl.length === 0) {\n $backdropEl = $('<div class=\"custom-modal-backdrop\"></div>');\n app.$el.append($backdropEl);\n }\n }\n\n function handleClick(e) {\n if (!customModal || customModal.destroyed) return;\n if ($backdropEl && e.target === $backdropEl[0]) {\n customModal.close();\n }\n }\n\n customModal.on('customModalOpened', () => {\n if (customModal.params.closeByBackdropClick && customModal.params.backdrop) {\n app.on('click', handleClick);\n }\n });\n customModal.on('customModalClose', () => {\n if (customModal.params.closeByBackdropClick && customModal.params.backdrop) {\n app.off('click', handleClick);\n }\n });\n\n extend(customModal, {\n app,\n $el,\n el: $el[0],\n $backdropEl,\n backdropEl: $backdropEl && $backdropEl[0],\n type: 'customModal',\n });\n\n $el[0].f7Modal = customModal;\n\n return customModal;\n }\n}\nexport default CustomModal;\n","import Modal from './modal-class.js';\nimport CustomModal from './custom-modal-class.js';\n\nexport default {\n name: 'modal',\n static: {\n Modal,\n CustomModal,\n },\n create() {\n const app = this;\n app.customModal = {\n create(params) {\n return new CustomModal(app, params);\n },\n };\n },\n params: {\n modal: {\n queueDialogs: true,\n },\n },\n};\n","import $ from './shared/dom7.js';\n\nimport Framework7 from './components/app/app-class.js';\n\n//IMPORT_HELPERS\n\nimport DeviceModule from './modules/device/device.js';\nimport SupportModule from './modules/support/support.js';\nimport UtilsModule from './modules/utils/utils.js';\nimport ResizeModule from './modules/resize/resize.js';\nimport RequestModule from './modules/request/request.js';\nimport TouchModule from './modules/touch/touch.js';\nimport ClicksModule from './modules/clicks/clicks.js';\nimport RouterModule from './modules/router/router.js';\nimport RouterComponentLoaderModule from './modules/router/component-loader.js';\nimport ComponentModule, { Component, $jsx } from './modules/component/component.js';\nimport HistoryModule from './modules/history/history.js';\nimport ServiceWorkerModule from './modules/service-worker/service-worker.js';\nimport StoreModule, { createStore } from './modules/store/store.js';\n\nimport Statusbar from './components/statusbar/statusbar.js';\nimport View from './components/view/view.js';\nimport Navbar from './components/navbar/navbar.js';\nimport Toolbar from './components/toolbar/toolbar.js';\nimport Subnavbar from './components/subnavbar/subnavbar.js';\nimport TouchRipple from './components/touch-ripple/touch-ripple.js';\nimport Modal from './components/modal/modal.js';\nimport Router from './modules/router/router-class.js';\n\n//IMPORT_COMPONENTS\n\n// UMD_ONLY_START\nif (typeof window !== 'undefined') {\n // Dom7\n if (!window.Dom7) window.Dom7 = $;\n}\n// UMD_ONLY_END\n\nRouter.use([RouterComponentLoaderModule]);\n\nFramework7.use([\n DeviceModule,\n SupportModule,\n UtilsModule,\n ResizeModule,\n RequestModule,\n TouchModule,\n ClicksModule,\n RouterModule,\n HistoryModule,\n ComponentModule,\n ServiceWorkerModule,\n StoreModule,\n Statusbar,\n View,\n Navbar,\n Toolbar,\n Subnavbar,\n TouchRipple,\n Modal,\n //INSTALL_COMPONENTS\n]);\n\n//NAMED_EXPORT\nexport default Framework7;\n"]}
1
+ {"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.mjs","../../src/core/modules/component/$h.js","../../src/core/modules/component/snabbdom/vnode.js","../../src/core/modules/component/snabbdom/is.js","../../src/core/modules/component/snabbdom/h.js","../../src/core/modules/component/custom-components.js","../../src/core/modules/component/vdom.js","../../src/core/modules/component/snabbdom/htmldomapi.js","../../src/core/modules/component/snabbdom/snabbdom.js","../../src/core/modules/component/snabbdom/modules/attributes.js","../../src/core/modules/component/snabbdom/modules/props.js","../../src/core/modules/component/snabbdom/modules/style.js","../../src/core/modules/component/eventslisteners.js","../../src/core/modules/component/patch.js","../../src/core/modules/component/$jsx.js","../../src/core/modules/component/component-class.js","../../src/core/modules/component/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","Dom7","Array","items","super","proto","__proto__","defineProperty","get","set","value","makeReactive","arrayFlat","arr","res","el","isArray","push","arrayFilter","prototype","filter","call","$","selector","context","html","trim","indexOf","toCreate","tempParent","innerHTML","i","a","qsa","nodeType","uniqueArray","arrayUnique","fn","noTrigger","split","shortcut","name","_len14","arguments","args","_key14","trigger","on","click","focus","focusin","focusout","keyup","keydown","keypress","submit","change","mousedown","mousemove","mouseup","mouseenter","mouseleave","mouseout","mouseover","touchstart","touchend","touchmove","resize","scroll","dom","j","_len10","els","_key10","toAdd","_len","classes","_key","classNames","map","c","classList","add","initialProps","initialParams","props","assign","params","duration","easing","elements","animating","que","easingProgress","progress","Math","cos","PI","stop","frameId","each","dom7AnimateInstance","done","complete","shift","animate","index","initialFullValue","initialValue","unit","finalValue","finalFullValue","container","prop","replace","parseFloat","currentValue","startTime","time","elementsDone","propsDone","began","render","easeProgress","getTime","begin","max","min","element","animateInstance","fireCallBack","e","off","newChild","k","undefined","tempDiv","firstChild","appendChild","parent","append","attrs","getAttribute","attrName","is","closest","parents","eq","dom7ElementDataStorage","dataKey","dataset","attributes","attr","string","toLowerCase","match","group","toUpperCase","remove","apply","parentNode","removeChild","textContent","returnIndex","foundElements","found","_len4","_key4","className","contains","innerHeight","css","display","child","previousSibling","after","insertBefore","nextSibling","cloneNode","before","compareWith","matches","webkitMatchesSelector","msMatchesSelector","nextElementSibling","nextEls","next","_len6","_key6","eventType","targetSelector","listener","capture","events","event","handlers","dom7Listeners","dom7LiveListeners","handler","dom7proxy","proxyListener","splice","box","getBoundingClientRect","clientTop","clientLeft","scrollTop","scrollY","scrollLeft","scrollX","top","left","_len5","_key5","handleLiveEvent","eventData","dom7EventData","unshift","handleEvent","_len7","_key7","eventName","onceHandler","_len8","eventArgs","_key8","includeMargins","styles","offsetHeight","offsetWidth","prepend","previousElementSibling","prevEls","prev","propName","removeAttribute","_len2","_key2","_len13","_key13","scrollTo","_len11","_key11","currentTop","currentLeft","maxTop","maxLeft","newTop","newLeft","animateTop","animateLeft","scrollHeight","scrollWidth","_len12","_key12","nextAll","prevAll","text","_len3","_key3","toggle","transform","transitionDuration","_len9","_key9","evt","detail","bubbles","cancelable","data","dataIndex","dispatchEvent","multiple","values","selectedOptions","options","selected","val","innerWidth","methods","methodName","uniqueNum","mask","floor","random","mdPreloaderContent","iosPreloaderContent","join","eventNameToColonCase","hasColon","char","deleteProps","object","nextTick","delay","nextFrame","now","parseUrlQuery","url","query","urlToParse","param","paramsPart","decodeURIComponent","slice","serializeObject","resultArray","newParents","varName","parentParts","encodeURIComponent","varValue","toPush","String","o","merge","to","from","nextSource","keysArray","nextIndex","len","nextKey","desc","getOwnPropertyDescriptor","enumerable","deep","colorHexToRgb","hex","h","m","r","g","b","result","exec","n","parseInt","colorRgbToHex","toString","colorRgbToHsl","d","l","abs","colorHslToRgb","s","hp","x","rgb1","Number","isNaN","round","bindMethods","instance","subKey","bind","flattenArray","arg","axis","matrix","curTransform","transformMatrix","curStyle","WebKitCSSMatrix","webkitTransform","MozTransform","OTransform","MsTransform","msTransform","m41","m42","HSL","HSB","t","rgb","hsl","hslShade","hslTint","shade","tint","support","deviceCalculated","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","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","self","method","once","f7proxy","eventHandler","emit","local","eventsArray","localEvents","parentEvents","eventsParent","Framework7Class","useModuleParams","module","instanceParams","originalParams","paramKey","useModulesParams","modules","moduleName","useModule","moduleParams","modulePropName","moduleProp","moduleEventName","vnode","vnodeHooks","vnodeId","hookName","create","useModules","modulesParams","components","use","installModule","Class","static","install","ConstructorMethods","parameters","defaultSelector","Constructor","domProp","app","addMethods","$el","destroy","fetchedModules","Framework7","Error","passedParams","w","defaults","version","language","routes","lazyModulesPath","initOnDeviceReady","init","autoDarkMode","iosTranslucentBars","iosTranslucentModals","component","componentUrl","online","onLine","store","f7","initStore","mount","rootEl","$rootEl","rtl","DARK","LIGHT","mq","dark","light","colorSchemeListener","_ref","media","darkMode","__store","createStore","enableAutoDarkMode","addListener","disableAutoDarkMode","removeListener","initAppComponent","router","componentLoader","componentOptions","$elComponent","f7Component","initialized","addClass","removeClass","loadModule","loadModules","getVnodeHooks","hook","Events","ModalMethods","open","targetEl","$targetPage","modalEl","$modalEl","f7Modal","close","$parentEl","$targetEl","moduleToLoad","Promise","resolve","reject","modulePath","moduleObj","moduleFunc","matchNamePattern","scriptLoad","resolveScript","rejectScript","request","scriptContent","callbackId","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","requestOptions","globalsNoCallbacks","callbackName","async","cache","user","password","headers","xhrFields","statusCode","processData","dataType","contentType","timeout","proceedRequest","abortController","canceled","message","fireCallback","globalCallbackValue","optionCallbackValue","type","paramsPrefix","stringData","abortTimeout","callbackSplit","requestUrl","addVars","script","onerror","XMLHttpRequest","aborted","onAbort","abort","requestParameters","postData","postDataInstances","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","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","useRipple","touchStartX","touchStartY","targetElement","isMoved","tapHoldFired","tapHoldTimeout","preventClick","activableElement","activeTimeout","rippleWave","rippleTarget","rippleTimeout","isScrolling","findActivableElement","activable","newActivable","preventPropagation","hasClass","isInsideScrollableView","addActive","removeActive","createRipple","y","touchRipple","removeRipple","rippleTouchStart","findRippleElement","rippleElements","rippleParent","rippleTouchMove","rippleTouchEnd","handleMouseUp","isSegmentedStrong","segmentedStrongEl","touchMoveActivableIos","isTouchMoveActivable","touchmoveActivableEl","emitAppTouchEvent","appTouchStartActive","appTouchMoveActive","appTouchEndActive","appTouchStartPassive","appTouchMovePassive","appTouchEndPassive","passive","passiveListenerCapture","activeListener","activeListenerCapture","appClick","handleClick","isOverswipe","isSegmented","localPreventClick","stopImmediatePropagation","stopPropagation","preventDefault","handleTouchStart","targetTouches","touches","pageX","pageY","handleTouchMove","distance","shouldRemoveActive","touchCurrentX","touchCurrentY","elementFromPoint","buttonEl","clientX","clientY","handleTouchEnd","handleMouseDown","$activableEl","which","isNative","str","tokens","count","pattern","TypeError","code","charCodeAt","lexer","_a","prefixes","defaultPattern","escapeString","delimiter","path","tryConsume","mustConsume","nextType","consumeText","prefix","suffix","modifier","name_1","pattern_1","compile","tokensToFunction","reFlags","flags","encode","_b","validate","token","optional","repeat","segment","typeOfMessage","sensitive","stringToRegexp","strict","_c","_d","endsWith","route","_i","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","newState","substr","includes","readyState","SwipeBack","$navbarsEl","isTouched","touchesStart","viewContainerWidth","touchesDiff","touchStartTime","dynamicNavbar","$pageShadowEl","$pageOpacityEl","animatableNavEls","$currentPageEl","$previousPageEl","allowViewTouchMove","$currentNavbarEl","$previousNavbarEl","paramsSwipeBackAnimateShadow","paramsSwipeBackAnimateOpacity","paramsSwipeBackActiveArea","paramsSwipeBackThreshold","transformOrigin","transformOriginTitleLarge","setAnimatableNavElements","transition","reflow","_clientLeft","classNameSet","styleProp","swipeBackEnabled","swipeout","masterDetailBreakpoint","f7PreventSwipeBack","preventSwipeBack","cancel","find","notFromBorder","inverter","currentNavIsTransparent","currentNavIsLarge","currentNavIsCollapsed","currentNavIsLargeTransparent","previousNavIsTransparent","previousNavIsLarge","previousNavIsCollapsed","previousNavIsLargeTransparent","fromLarge","toLarge","$currentNavElements","$previousNavElements","activeNavBackIconText","previousNavBackIconText","iosAnimateNavbarBackIcon","f7NavbarLeftOffset","navEl","$navEl","isSubnavbar","isLeft","isTitle","isBg","overflow","subNavEl","opacity","isSliding","transformTarget","textEl","activeNavTranslate","f7NavbarRightOffset","previousNavTranslate","animatableNavElements","sheet","f7PreventSwipePanel","preventSwipePanelBySwipeBack","percentage","callbackData","currentPageEl","previousPageEl","currentNavbarEl","previousNavbarEl","currentPageTranslate","previousPageTranslate","swipeBackActive","$pages","timeDiff","pageChanged","removeAttr","setNavbarPosition","currentRoute","f7Page","currentPage","pageCallback","swipeBack","transitionEnd","saveHistory","stackPages","initialPages","removePage","removeNavbar","previousRoute","preloadPreviousPage","preload","attachEvents","redirect","direction","initial","redirectUrl","redirectOptions","processQueue","routeQueue","processRouteQueue","enterNextRoute","routesBeforeEnter","beforeEnter","routesBeforeLeave","beforeLeave","appRouterCheck","asyncComponent","resolvePromise","componentPromise","default","_default","asyncComponentResult","forward","forwardOptions","reloadCurrent","reloadPages","reloadPrevious","reloadAll","clearPreviousHistory","reloadDetail","masterDetailEnabled","isMaster","master","masterPageEl","otherDetailPageEl","modalType","detailsInBetweenRemoved","currentRouteIsModal","modal","modalLoadProp","modalToClose","modalInstance","previousUrl","findMatchingRoute","modalRemove","$viewEl","$newPage","reload","$oldPage","$newNavbarEl","$oldNavbarEl","removeThemeElements","$navbarEl","keepAlive","keepAliveData","pageEl","$pagesInView","pageInView","$navbarsInView","isDetail","isDetailRoot","navbarInView","newPagePosition","position","role","root","detailRoot","navbar","getElByPage","navbarEl","removedPageEls","removedNavbarEls","oldNavbarEl","browserHistoryRoot","browserHistorySeparator","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","initialPreload","currentIsMaster","backIndex","masterRoute","force","pageToRemove","$pageToRemove","$navbarToRemove","insertPage","$previousPages","loadBack","backParams","backOptions","Router","isAppRouter","routerId","scrollHistory","iosDynamicNavbar","initialNavbars","configurable","newRoute","tempDom","navbarsEl","animateIcon","newNavEls","oldNavEls","animatableNavEl","$navbarInner","needsOpacityTransition","$iconEl","isIconLabel","leftOffset","rightOffset","navEls","otherEls","otherNavEl","iconTextEl","offsetLeft","$newPageEl","animateCustom","routerCustomTransitionClass","onCustomTransitionDone","animationEnd","routerTransitionClass","toDifferent","oldIsLarge","newIsLarge","animateNavbars","setProperty","removeModal","removeEl","removeTabContent","tabEl","tabChild","removeElements","removeElementsWithTimeout","removeElementsTimeout","findElement","stringSelector","notStacked","$container","viewMainClass","flattenRoutes","flattenedRoutes","hasTabRoutes","tabs","mergedPathsRoutes","tabRoute","tRoute","concat","detailRoutes","detailRoute","dRoute","masterRoutePath","childRoute","cRoute","generateUrl","findRouteByKey","constructRouteUrl","toUrl","findTabRouteUrl","$tabEl","tabId","foundTabRouteUrl","matchingRoute","pathsToMatch","matched","alias","aliasPath","pathToMatch","keyObj","paramValue","replaceRequestUrlParams","compiledUrl","regExp","removeFromXhrCache","xhrCache","ignoreCache","hasQuery","passRouteQueryToRequest","passRouteParamsToRequest","xhrCacheIgnoreGetParameters","xhrCacheIgnore","cachedUrl","xhrCacheDuration","beforeSend","ariaHidden","toRemove","getPageData","pageFromEl","$pageEl","pageFrom","fromPage","$pageFromEl","page","restoreScrollTopOnBack","camelName","colonName","f7RouteEventsAttached","f7RouteEventsOn","f7RouteEventsOnce","$pageContent","pageContentEl","f7PageInitialized","browserHistoryStoreHistory","localStorage","restoreHistory","clearHistory","updateCurrentUrl","newUrl","getInitialUrl","initialUrl","historyRestored","URL","documentUrl","browserHistoryOnLoad","console","warn","iosSwipeBack","mdSwipeBack","auroraSwipeBack","browserHistoryAnimateOnLoad","browserHistoryInitialMatch","initUrl","loadInitialPage","modalOpen","pageAfterIn","hasTabRoute","initOptions","routerProp","navigateParams","navigateOptions","createRoute","navigateUrl","currentPath","viewName","anotherViewName","anotherView","openIn","ignoreOpenIn","routerLoaded","asyncResolve","resolveParams","resolveOptions","resolvedAsModal","modalRoute","modalLoad","asyncReject","pageLoadProp","preloadMaster","masterLoaded","refreshPage","parentPageEl","browserHistoryTabs","$parentPageEl","tabShowResult","show","$newTabEl","$oldTabEl","animated","onTabsChanged","tabParentPageData","f7RouterTabLoaded","loadTab","loadTabParams","loadTabOptions","contentEl","onTabLoaded","tabEventTarget","unloadTabContent","tabRemove","tabComponentLoader","tabContent","hasContentLoadProp","tabLoadProp","hasTabComponentChild","isPanel","modalOrPanel","modalParams","routeCallback","panelOpen","modalClose","panelClose","modalClosed","panelClosed","onModalLoaded","hasEl","closeOnSwipeBack","closeByRouter","modalComponent","loadModal","loadModalParams","loadModalOptions","modalComponentLoader","modalContent","foundLoadProp","prevOpenedModals","forceOtherUrl","isBrokenBrowserHistory","needHistoryBack","currentRouteWithoutBrowserHistory","skipMaster","$previousPage","$previousMaster","expectedPreviousPageUrl","expectedPreviousPageRoute","previousPageRoute","backForceLoaded","panel","clearPreviousPages","RouterModule","templates","resizableView","resizableInitialized","resizable","resizableWidth","$htmlEl","$resizeHandlerEl","minWidth","maxWidth","transformCSSWidth","v","newV","$pageMasterEl","newWidth","handleResize","View","viewParams","routesAdd","main","f7View","viewProp","wasMasterDetail","isMasterDetail","initMasterDetail","masterDetailResizable","viewEl","initRouterOnTabShow","ClicksModule","clicks","externalLinks","handleClicks","$clickedEl","$clickedLinkEl","isLink","InAppBrowser","Plugins","Browser","moduleClicks","preventF7Router","clickSelector","matchingClickedElement","clickedLinkData","clickedEl","current","linksView","ViewClass","f7RouteProps","initClicks","RouterComponentLoaderModule","popup","loginScreen","popover","side","effect","componentFunction","componentContext","f7route","f7router","componentProps","routeProps","componentRoot","createdComponent","cachedComponent","componentCache","cached","loadedComponent","parsedComponent","_temp2","_temp3","u","p","Map","ignoreChildren","$h","sel","elm","array","primitive","addNS","ns","childData","customComponents","SELF_CLOSING","PROPS_ATTRS","BOOLEAN_PROPS","getTagName","treeNode","toCamelCase","word","propsFromAttrs","isCustomComponent","treeNodeType","getHooks","isRoot","hooks","insert","update","postpatch","isFakeElement","tagName","isCustom","__component__","createCustomComponent","destroyCustomComponent","oldVnode","newProps","updateCustomComponent","class","vn","f","getChildren","nodes","childNode","treeNodeToVNode","isTreeNode","getSlots","slotName","slotNodes","childTreeNode","childSlotName","slot","subTreeNode","attrValue","prevent","eventNamePart","eventNameIndex","fired","getEventHandler","prepatch","getData","vdom","tree","htmlDomApi","namespaceURI","qualifiedName","createTextNode","createComment","newNode","referenceNode","node","setTextContent","getTextContent","isElement","isText","isUndef","isDef","emptyNode","vnode1","vnode2","createKeyToOldIdx","beginIdx","endIdx","ch","oldAttrs","cur","setAttributeNS","attributesModule","updateAttrs","oldProps","propsModule","updateProps","raf","setNextFrame","oldStyle","oldHasDel","removeProperty","delayed","name2","styleModule","updateStyle","rm","amount","applied","ev","invokeHandler","updateEvents","oldOn","oldListener","oldElm","patch","domApi","cbs","api","emptyNodeAt","childElm","listeners","parent_1","insertedVnodeQueue","hashIdx","dotIdx","dot","tag","createElm","parentElm","vnodes","startIdx","invokeDestroyHook","removeVnodes","i_1","createRmCb","patchVnode","oldCh","newCh","oldStartIdx","oldKeyToIdx","idxInOld","elmToMove","newStartIdx","oldEndIdx","oldStartVnode","oldEndVnode","newEndIdx","newStartVnode","newEndVnode","sameVnode","addVnodes","updateChildren","pre","isVnode","Component","generateId","md","aurora","__updateQueue","__eventHandlers","__onceEventHandlers","__onBeforeMount","__onMounted","__onBeforeUpdate","__onUpdated","__onBeforeUnmount","__onUnmounted","createComponent","getComponentContext","componentResult","getRenderFuncion","renderFunction","getComponentRef","getComponentStore","_gettersPlain","dispatch","$store","getters","Proxy","onUpdated","includeHooks","ctx","$f7route","$f7router","$id","$f7","$f7ready","f7ready","$theme","$tick","tick","$update","$emit","$ref","$on","$once","$onBeforeMount","$onMounted","$onBeforeUpdate","$onUpdated","$onBeforeUnmount","$onUnmounted","_ref2","detachEvents","_ref3","_ref4","startUpdateQueue","__requestAnimationFrameId","newVNode","__updateIsPending","resolvers","resolver","__destroyed","setState","mountMethod","registerComponent","unregisterComponent","$jsx","flatChildren","ComponentModule","componentString","componentId","callbackCreateName","template","item","scripts","parseComponent","HistoryModule","SW","registrations","register","scope","serviceWorker","reg","unregister","registration","ServiceWorkerModule","storeParams","originalState","actions","propsQueue","gettersDependencies","gettersCallbacks","getterKey","getGetterValue","addGetterCallback","__removeCallback","stateKey","callbacks","removeGetterCallback","getterValue","addCallback","deps","dep","addGetterDependencies","__callback","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","iosSwipeBackAnimateShadow","iosSwipeBackAnimateOpacity","iosSwipeBackActiveArea","iosSwipeBackThreshold","mdSwipeBackAnimateShadow","mdSwipeBackAnimateOpacity","mdSwipeBackActiveArea","mdSwipeBackThreshold","auroraSwipeBackAnimateShadow","auroraSwipeBackAnimateOpacity","auroraSwipeBackActiveArea","auroraSwipeBackThreshold","iosPageLoadDelay","mdPageLoadDelay","auroraPageLoadDelay","$popoverView","$popupView","$panelView","$viewsEl","getCurrentView","Navbar","size","$innerEl","needCenterTitle","needLeftTitle","iosCenterTitle","right","title","subnavbar","noLeft","noRight","leftWidth","outerWidth","rightWidth","titleWidth","navbarStyles","navbarInnerWidth","paddingLeft","paddingRight","isPrevious","sliding","currLeft","diff","requiredLeft","titleLeftOffset","titleRightOffset","activeNavbarBackLink","titleLeft","hideStatusbar","hideOnlyCurrent","isDynamic","subEl","pageData","getPageByEl","collapseLargeTitle","expandLargeTitle","toggleLargeTitle","initNavbarOnScroll","needHide","needCollapse","needTransparent","$titleLargeEl","isLarge","navbarHideHeight","snapPageScrollToLargeTitle","snapPageScrollToTransparentNavbar","previousScrollTop","currentScrollTop","reachEnd","navbarHidden","navbarCollapsed","navbarTitleLargeHeight","navbarOffsetHeight","scrollChanged","scrollContent","scrollTimeoutId","touchEndTimeoutId","calcScrollableDistance","f7ScrollableDistance","snapLargeNavbar","snapTransparentNavbar","previousCollapseProgress","collapseProgress","handleScroll","handleLargeNavbarCollapse","isLargeTransparent","scrollableDistance","previousCollapseWasInMiddle","isHidden","inSearchbarExpanded","notTransparent","handleNavbarTransparent","showOnPageScrollEnd","showOnPageScrollTop","handeTouchStart","f7DetachNavbarScrollHandlers","Navbar$1","scrollTopOnTitleClick","mdCenterTitle","auroraCenterTitle","hideOnPageScroll","collapseLargeTitleOnScroll","pageBeforeRemove","pageBeforeIn","pageReinit","pageInit","needCollapseOnScrollHandler","needTransparentOnScroll","needHideOnScrollHandler","tabShow","clickedData","$pageContentEl","Toolbar","setHighlight","tabbarEl","$tabbarEl","$highlightEl","tabLinksCount","$activeLink","highlightWidth","highlightTranslate","activeIndex","toolbar","initToolbarOnScroll","$toolbarEl","toolbarHidden","f7ScrollToolbarHandler","Toolbar$1","tabbar","Subnavbar","subnavbarEl","TouchRipple","ripple","center","diameter","isInset","insetElements","rippleTransform","distanceFromCenter","scale","$rippleWaveEl","shouldBeRemoved","out","removeTimeout","openedModals","dialogsQueue","Modal","opened","$containerEl","containerEl","onOpen","onOpened","onClose","onClosed","backdrop","backdropUnique","forceBackdropUnique","$backdropEl","animateModal","queueDialogs","pushToQueue","openedModal","$modalParentEl","wasInDom","needToHideBackdrop","popupEl","popupInstance","closeByBackdropClick","backdropEl","clearDialogsQueue","destroyed","CustomModal","extendedParams","customModal"],"mappings":"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","file":"framework7.min.js","sourcesContent":["/**\n * SSR Window 4.0.2\n * Better handling for window object in SSR environment\n * https://github.com/nolimits4web/ssr-window\n *\n * Copyright 2021, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: December 13, 2021\n */\n/* eslint-disable no-param-reassign */\nfunction isObject(obj) {\n return (obj !== null &&\n typeof obj === 'object' &&\n 'constructor' in obj &&\n obj.constructor === Object);\n}\nfunction extend(target = {}, src = {}) {\n Object.keys(src).forEach((key) => {\n if (typeof target[key] === 'undefined')\n target[key] = src[key];\n else if (isObject(src[key]) &&\n isObject(target[key]) &&\n Object.keys(src[key]).length > 0) {\n extend(target[key], src[key]);\n }\n });\n}\n\nconst ssrDocument = {\n body: {},\n addEventListener() { },\n removeEventListener() { },\n activeElement: {\n blur() { },\n nodeName: '',\n },\n querySelector() {\n return null;\n },\n querySelectorAll() {\n return [];\n },\n getElementById() {\n return null;\n },\n createEvent() {\n return {\n initEvent() { },\n };\n },\n createElement() {\n return {\n children: [],\n childNodes: [],\n style: {},\n setAttribute() { },\n getElementsByTagName() {\n return [];\n },\n };\n },\n createElementNS() {\n return {};\n },\n importNode() {\n return null;\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: '',\n },\n};\nfunction getDocument() {\n const doc = typeof document !== 'undefined' ? document : {};\n extend(doc, ssrDocument);\n return doc;\n}\n\nconst ssrWindow = {\n document: ssrDocument,\n navigator: {\n userAgent: '',\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: '',\n },\n history: {\n replaceState() { },\n pushState() { },\n go() { },\n back() { },\n },\n CustomEvent: function CustomEvent() {\n return this;\n },\n addEventListener() { },\n removeEventListener() { },\n getComputedStyle() {\n return {\n getPropertyValue() {\n return '';\n },\n };\n },\n Image() { },\n Date() { },\n screen: {},\n setTimeout() { },\n clearTimeout() { },\n matchMedia() {\n return {};\n },\n requestAnimationFrame(callback) {\n if (typeof setTimeout === 'undefined') {\n callback();\n return null;\n }\n return setTimeout(callback, 0);\n },\n cancelAnimationFrame(id) {\n if (typeof setTimeout === 'undefined') {\n return;\n }\n clearTimeout(id);\n },\n};\nfunction getWindow() {\n const win = typeof window !== 'undefined' ? window : {};\n extend(win, ssrWindow);\n return win;\n}\n\nexport { extend, getDocument, getWindow, ssrDocument, ssrWindow };\n","/**\n * Dom7 4.0.4\n * Minimalistic JavaScript library for DOM manipulation, with a jQuery-compatible API\n * https://framework7.io/docs/dom7.html\n *\n * Copyright 2022, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: January 11, 2022\n */\nimport { getWindow, getDocument } from 'ssr-window';\n\n/* eslint-disable no-proto */\nfunction makeReactive(obj) {\n const proto = obj.__proto__;\n Object.defineProperty(obj, '__proto__', {\n get() {\n return proto;\n },\n\n set(value) {\n proto.__proto__ = value;\n }\n\n });\n}\n\nclass Dom7 extends Array {\n constructor(items) {\n if (typeof items === 'number') {\n super(items);\n } else {\n super(...(items || []));\n makeReactive(this);\n }\n }\n\n}\n\nfunction arrayFlat(arr = []) {\n const res = [];\n arr.forEach(el => {\n if (Array.isArray(el)) {\n res.push(...arrayFlat(el));\n } else {\n res.push(el);\n }\n });\n return res;\n}\nfunction arrayFilter(arr, callback) {\n return Array.prototype.filter.call(arr, callback);\n}\nfunction arrayUnique(arr) {\n const uniqueArray = [];\n\n for (let i = 0; i < arr.length; i += 1) {\n if (uniqueArray.indexOf(arr[i]) === -1) uniqueArray.push(arr[i]);\n }\n\n return uniqueArray;\n}\nfunction toCamelCase(string) {\n return string.toLowerCase().replace(/-(.)/g, (match, group) => group.toUpperCase());\n}\n\n// eslint-disable-next-line\n\nfunction qsa(selector, context) {\n if (typeof selector !== 'string') {\n return [selector];\n }\n\n const a = [];\n const res = context.querySelectorAll(selector);\n\n for (let i = 0; i < res.length; i += 1) {\n a.push(res[i]);\n }\n\n return a;\n}\n\nfunction $(selector, context) {\n const window = getWindow();\n const document = getDocument();\n let arr = [];\n\n if (!context && selector instanceof Dom7) {\n return selector;\n }\n\n if (!selector) {\n return new Dom7(arr);\n }\n\n if (typeof selector === 'string') {\n const html = selector.trim();\n\n if (html.indexOf('<') >= 0 && html.indexOf('>') >= 0) {\n let toCreate = 'div';\n if (html.indexOf('<li') === 0) toCreate = 'ul';\n if (html.indexOf('<tr') === 0) toCreate = 'tbody';\n if (html.indexOf('<td') === 0 || html.indexOf('<th') === 0) toCreate = 'tr';\n if (html.indexOf('<tbody') === 0) toCreate = 'table';\n if (html.indexOf('<option') === 0) toCreate = 'select';\n const tempParent = document.createElement(toCreate);\n tempParent.innerHTML = html;\n\n for (let i = 0; i < tempParent.childNodes.length; i += 1) {\n arr.push(tempParent.childNodes[i]);\n }\n } else {\n arr = qsa(selector.trim(), context || document);\n } // arr = qsa(selector, document);\n\n } else if (selector.nodeType || selector === window || selector === document) {\n arr.push(selector);\n } else if (Array.isArray(selector)) {\n if (selector instanceof Dom7) return selector;\n arr = selector;\n }\n\n return new Dom7(arrayUnique(arr));\n}\n\n$.fn = Dom7.prototype;\n\n// eslint-disable-next-line\n\nfunction addClass(...classes) {\n const classNames = arrayFlat(classes.map(c => c.split(' ')));\n this.forEach(el => {\n el.classList.add(...classNames);\n });\n return this;\n}\n\nfunction removeClass(...classes) {\n const classNames = arrayFlat(classes.map(c => c.split(' ')));\n this.forEach(el => {\n el.classList.remove(...classNames);\n });\n return this;\n}\n\nfunction toggleClass(...classes) {\n const classNames = arrayFlat(classes.map(c => c.split(' ')));\n this.forEach(el => {\n classNames.forEach(className => {\n el.classList.toggle(className);\n });\n });\n}\n\nfunction hasClass(...classes) {\n const classNames = arrayFlat(classes.map(c => c.split(' ')));\n return arrayFilter(this, el => {\n return classNames.filter(className => el.classList.contains(className)).length > 0;\n }).length > 0;\n}\n\nfunction attr(attrs, value) {\n if (arguments.length === 1 && typeof attrs === 'string') {\n // Get attr\n if (this[0]) return this[0].getAttribute(attrs);\n return undefined;\n } // Set attrs\n\n\n for (let i = 0; i < this.length; i += 1) {\n if (arguments.length === 2) {\n // String\n this[i].setAttribute(attrs, value);\n } else {\n // Object\n for (const attrName in attrs) {\n this[i][attrName] = attrs[attrName];\n this[i].setAttribute(attrName, attrs[attrName]);\n }\n }\n }\n\n return this;\n}\n\nfunction removeAttr(attr) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].removeAttribute(attr);\n }\n\n return this;\n}\n\nfunction prop(props, value) {\n if (arguments.length === 1 && typeof props === 'string') {\n // Get prop\n if (this[0]) return this[0][props];\n } else {\n // Set props\n for (let i = 0; i < this.length; i += 1) {\n if (arguments.length === 2) {\n // String\n this[i][props] = value;\n } else {\n // Object\n for (const propName in props) {\n this[i][propName] = props[propName];\n }\n }\n }\n\n return this;\n }\n\n return this;\n}\n\nfunction data(key, value) {\n let el;\n\n if (typeof value === 'undefined') {\n el = this[0];\n if (!el) return undefined; // Get value\n\n if (el.dom7ElementDataStorage && key in el.dom7ElementDataStorage) {\n return el.dom7ElementDataStorage[key];\n }\n\n const dataKey = el.getAttribute(`data-${key}`);\n\n if (dataKey) {\n return dataKey;\n }\n\n return undefined;\n } // Set value\n\n\n for (let i = 0; i < this.length; i += 1) {\n el = this[i];\n if (!el.dom7ElementDataStorage) el.dom7ElementDataStorage = {};\n el.dom7ElementDataStorage[key] = value;\n }\n\n return this;\n}\n\nfunction removeData(key) {\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (el.dom7ElementDataStorage && el.dom7ElementDataStorage[key]) {\n el.dom7ElementDataStorage[key] = null;\n delete el.dom7ElementDataStorage[key];\n }\n }\n}\n\nfunction dataset() {\n const el = this[0];\n if (!el) return undefined;\n const dataset = {}; // eslint-disable-line\n\n if (el.dataset) {\n for (const dataKey in el.dataset) {\n dataset[dataKey] = el.dataset[dataKey];\n }\n } else {\n for (let i = 0; i < el.attributes.length; i += 1) {\n const attr = el.attributes[i];\n\n if (attr.name.indexOf('data-') >= 0) {\n dataset[toCamelCase(attr.name.split('data-')[1])] = attr.value;\n }\n }\n }\n\n for (const key in dataset) {\n if (dataset[key] === 'false') dataset[key] = false;else if (dataset[key] === 'true') dataset[key] = true;else if (parseFloat(dataset[key]) === dataset[key] * 1) dataset[key] *= 1;\n }\n\n return dataset;\n}\n\nfunction val(value) {\n if (typeof value === 'undefined') {\n // get value\n const el = this[0];\n if (!el) return undefined;\n\n if (el.multiple && el.nodeName.toLowerCase() === 'select') {\n const values = [];\n\n for (let i = 0; i < el.selectedOptions.length; i += 1) {\n values.push(el.selectedOptions[i].value);\n }\n\n return values;\n }\n\n return el.value;\n } // set value\n\n\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (Array.isArray(value) && el.multiple && el.nodeName.toLowerCase() === 'select') {\n for (let j = 0; j < el.options.length; j += 1) {\n el.options[j].selected = value.indexOf(el.options[j].value) >= 0;\n }\n } else {\n el.value = value;\n }\n }\n\n return this;\n}\n\nfunction value(value) {\n return this.val(value);\n}\n\nfunction transform(transform) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.transform = transform;\n }\n\n return this;\n}\n\nfunction transition(duration) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.transitionDuration = typeof duration !== 'string' ? `${duration}ms` : duration;\n }\n\n return this;\n}\n\nfunction on(...args) {\n let [eventType, targetSelector, listener, capture] = args;\n\n if (typeof args[1] === 'function') {\n [eventType, listener, capture] = args;\n targetSelector = undefined;\n }\n\n if (!capture) capture = false;\n\n function handleLiveEvent(e) {\n const target = e.target;\n if (!target) return;\n const eventData = e.target.dom7EventData || [];\n\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n\n if ($(target).is(targetSelector)) listener.apply(target, eventData);else {\n const parents = $(target).parents(); // eslint-disable-line\n\n for (let k = 0; k < parents.length; k += 1) {\n if ($(parents[k]).is(targetSelector)) listener.apply(parents[k], eventData);\n }\n }\n }\n\n function handleEvent(e) {\n const eventData = e && e.target ? e.target.dom7EventData || [] : [];\n\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n\n listener.apply(this, eventData);\n }\n\n const events = eventType.split(' ');\n let j;\n\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (!targetSelector) {\n for (j = 0; j < events.length; j += 1) {\n const event = events[j];\n if (!el.dom7Listeners) el.dom7Listeners = {};\n if (!el.dom7Listeners[event]) el.dom7Listeners[event] = [];\n el.dom7Listeners[event].push({\n listener,\n proxyListener: handleEvent\n });\n el.addEventListener(event, handleEvent, capture);\n }\n } else {\n // Live events\n for (j = 0; j < events.length; j += 1) {\n const event = events[j];\n if (!el.dom7LiveListeners) el.dom7LiveListeners = {};\n if (!el.dom7LiveListeners[event]) el.dom7LiveListeners[event] = [];\n el.dom7LiveListeners[event].push({\n listener,\n proxyListener: handleLiveEvent\n });\n el.addEventListener(event, handleLiveEvent, capture);\n }\n }\n }\n\n return this;\n}\n\nfunction off(...args) {\n let [eventType, targetSelector, listener, capture] = args;\n\n if (typeof args[1] === 'function') {\n [eventType, listener, capture] = args;\n targetSelector = undefined;\n }\n\n if (!capture) capture = false;\n const events = eventType.split(' ');\n\n for (let i = 0; i < events.length; i += 1) {\n const event = events[i];\n\n for (let j = 0; j < this.length; j += 1) {\n const el = this[j];\n let handlers;\n\n if (!targetSelector && el.dom7Listeners) {\n handlers = el.dom7Listeners[event];\n } else if (targetSelector && el.dom7LiveListeners) {\n handlers = el.dom7LiveListeners[event];\n }\n\n if (handlers && handlers.length) {\n for (let k = handlers.length - 1; k >= 0; k -= 1) {\n const handler = handlers[k];\n\n if (listener && handler.listener === listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n } else if (listener && handler.listener && handler.listener.dom7proxy && handler.listener.dom7proxy === listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n } else if (!listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n }\n }\n }\n }\n }\n\n return this;\n}\n\nfunction once(...args) {\n const dom = this;\n let [eventName, targetSelector, listener, capture] = args;\n\n if (typeof args[1] === 'function') {\n [eventName, listener, capture] = args;\n targetSelector = undefined;\n }\n\n function onceHandler(...eventArgs) {\n listener.apply(this, eventArgs);\n dom.off(eventName, targetSelector, onceHandler, capture);\n\n if (onceHandler.dom7proxy) {\n delete onceHandler.dom7proxy;\n }\n }\n\n onceHandler.dom7proxy = listener;\n return dom.on(eventName, targetSelector, onceHandler, capture);\n}\n\nfunction trigger(...args) {\n const window = getWindow();\n const events = args[0].split(' ');\n const eventData = args[1];\n\n for (let i = 0; i < events.length; i += 1) {\n const event = events[i];\n\n for (let j = 0; j < this.length; j += 1) {\n const el = this[j];\n\n if (window.CustomEvent) {\n const evt = new window.CustomEvent(event, {\n detail: eventData,\n bubbles: true,\n cancelable: true\n });\n el.dom7EventData = args.filter((data, dataIndex) => dataIndex > 0);\n el.dispatchEvent(evt);\n el.dom7EventData = [];\n delete el.dom7EventData;\n }\n }\n }\n\n return this;\n}\n\nfunction transitionEnd(callback) {\n const dom = this;\n\n function fireCallBack(e) {\n if (e.target !== this) return;\n callback.call(this, e);\n dom.off('transitionend', fireCallBack);\n }\n\n if (callback) {\n dom.on('transitionend', fireCallBack);\n }\n\n return this;\n}\n\nfunction animationEnd(callback) {\n const dom = this;\n\n function fireCallBack(e) {\n if (e.target !== this) return;\n callback.call(this, e);\n dom.off('animationend', fireCallBack);\n }\n\n if (callback) {\n dom.on('animationend', fireCallBack);\n }\n\n return this;\n}\n\nfunction width() {\n const window = getWindow();\n\n if (this[0] === window) {\n return window.innerWidth;\n }\n\n if (this.length > 0) {\n return parseFloat(this.css('width'));\n }\n\n return null;\n}\n\nfunction outerWidth(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n const styles = this.styles();\n return this[0].offsetWidth + parseFloat(styles.getPropertyValue('margin-right')) + parseFloat(styles.getPropertyValue('margin-left'));\n }\n\n return this[0].offsetWidth;\n }\n\n return null;\n}\n\nfunction height() {\n const window = getWindow();\n\n if (this[0] === window) {\n return window.innerHeight;\n }\n\n if (this.length > 0) {\n return parseFloat(this.css('height'));\n }\n\n return null;\n}\n\nfunction outerHeight(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n const styles = this.styles();\n return this[0].offsetHeight + parseFloat(styles.getPropertyValue('margin-top')) + parseFloat(styles.getPropertyValue('margin-bottom'));\n }\n\n return this[0].offsetHeight;\n }\n\n return null;\n}\n\nfunction offset() {\n if (this.length > 0) {\n const window = getWindow();\n const document = getDocument();\n const el = this[0];\n const box = el.getBoundingClientRect();\n const body = document.body;\n const clientTop = el.clientTop || body.clientTop || 0;\n const clientLeft = el.clientLeft || body.clientLeft || 0;\n const scrollTop = el === window ? window.scrollY : el.scrollTop;\n const scrollLeft = el === window ? window.scrollX : el.scrollLeft;\n return {\n top: box.top + scrollTop - clientTop,\n left: box.left + scrollLeft - clientLeft\n };\n }\n\n return null;\n}\n\nfunction hide() {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.display = 'none';\n }\n\n return this;\n}\n\nfunction show() {\n const window = getWindow();\n\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (el.style.display === 'none') {\n el.style.display = '';\n }\n\n if (window.getComputedStyle(el, null).getPropertyValue('display') === 'none') {\n // Still not visible\n el.style.display = 'block';\n }\n }\n\n return this;\n}\n\nfunction styles() {\n const window = getWindow();\n if (this[0]) return window.getComputedStyle(this[0], null);\n return {};\n}\n\nfunction css(props, value) {\n const window = getWindow();\n let i;\n\n if (arguments.length === 1) {\n if (typeof props === 'string') {\n // .css('width')\n if (this[0]) return window.getComputedStyle(this[0], null).getPropertyValue(props);\n } else {\n // .css({ width: '100px' })\n for (i = 0; i < this.length; i += 1) {\n for (const prop in props) {\n this[i].style[prop] = props[prop];\n }\n }\n\n return this;\n }\n }\n\n if (arguments.length === 2 && typeof props === 'string') {\n // .css('width', '100px')\n for (i = 0; i < this.length; i += 1) {\n this[i].style[props] = value;\n }\n\n return this;\n }\n\n return this;\n}\n\nfunction each(callback) {\n if (!callback) return this;\n this.forEach((el, index) => {\n callback.apply(el, [el, index]);\n });\n return this;\n}\n\nfunction filter(callback) {\n const result = arrayFilter(this, callback);\n return $(result);\n}\n\nfunction html(html) {\n if (typeof html === 'undefined') {\n return this[0] ? this[0].innerHTML : null;\n }\n\n for (let i = 0; i < this.length; i += 1) {\n this[i].innerHTML = html;\n }\n\n return this;\n}\n\nfunction text(text) {\n if (typeof text === 'undefined') {\n return this[0] ? this[0].textContent.trim() : null;\n }\n\n for (let i = 0; i < this.length; i += 1) {\n this[i].textContent = text;\n }\n\n return this;\n}\n\nfunction is(selector) {\n const window = getWindow();\n const document = getDocument();\n const el = this[0];\n let compareWith;\n let i;\n if (!el || typeof selector === 'undefined') return false;\n\n if (typeof selector === 'string') {\n if (el.matches) return el.matches(selector);\n if (el.webkitMatchesSelector) return el.webkitMatchesSelector(selector);\n if (el.msMatchesSelector) return el.msMatchesSelector(selector);\n compareWith = $(selector);\n\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) return true;\n }\n\n return false;\n }\n\n if (selector === document) {\n return el === document;\n }\n\n if (selector === window) {\n return el === window;\n }\n\n if (selector.nodeType || selector instanceof Dom7) {\n compareWith = selector.nodeType ? [selector] : selector;\n\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) return true;\n }\n\n return false;\n }\n\n return false;\n}\n\nfunction index() {\n let child = this[0];\n let i;\n\n if (child) {\n i = 0; // eslint-disable-next-line\n\n while ((child = child.previousSibling) !== null) {\n if (child.nodeType === 1) i += 1;\n }\n\n return i;\n }\n\n return undefined;\n}\n\nfunction eq(index) {\n if (typeof index === 'undefined') return this;\n const length = this.length;\n\n if (index > length - 1) {\n return $([]);\n }\n\n if (index < 0) {\n const returnIndex = length + index;\n if (returnIndex < 0) return $([]);\n return $([this[returnIndex]]);\n }\n\n return $([this[index]]);\n}\n\nfunction append(...els) {\n let newChild;\n const document = getDocument();\n\n for (let k = 0; k < els.length; k += 1) {\n newChild = els[k];\n\n for (let i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n const tempDiv = document.createElement('div');\n tempDiv.innerHTML = newChild;\n\n while (tempDiv.firstChild) {\n this[i].appendChild(tempDiv.firstChild);\n }\n } else if (newChild instanceof Dom7) {\n for (let j = 0; j < newChild.length; j += 1) {\n this[i].appendChild(newChild[j]);\n }\n } else {\n this[i].appendChild(newChild);\n }\n }\n }\n\n return this;\n}\n\nfunction appendTo(parent) {\n $(parent).append(this);\n return this;\n}\n\nfunction prepend(newChild) {\n const document = getDocument();\n let i;\n let j;\n\n for (i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n const tempDiv = document.createElement('div');\n tempDiv.innerHTML = newChild;\n\n for (j = tempDiv.childNodes.length - 1; j >= 0; j -= 1) {\n this[i].insertBefore(tempDiv.childNodes[j], this[i].childNodes[0]);\n }\n } else if (newChild instanceof Dom7) {\n for (j = 0; j < newChild.length; j += 1) {\n this[i].insertBefore(newChild[j], this[i].childNodes[0]);\n }\n } else {\n this[i].insertBefore(newChild, this[i].childNodes[0]);\n }\n }\n\n return this;\n}\n\nfunction prependTo(parent) {\n $(parent).prepend(this);\n return this;\n}\n\nfunction insertBefore(selector) {\n const before = $(selector);\n\n for (let i = 0; i < this.length; i += 1) {\n if (before.length === 1) {\n before[0].parentNode.insertBefore(this[i], before[0]);\n } else if (before.length > 1) {\n for (let j = 0; j < before.length; j += 1) {\n before[j].parentNode.insertBefore(this[i].cloneNode(true), before[j]);\n }\n }\n }\n}\n\nfunction insertAfter(selector) {\n const after = $(selector);\n\n for (let i = 0; i < this.length; i += 1) {\n if (after.length === 1) {\n after[0].parentNode.insertBefore(this[i], after[0].nextSibling);\n } else if (after.length > 1) {\n for (let j = 0; j < after.length; j += 1) {\n after[j].parentNode.insertBefore(this[i].cloneNode(true), after[j].nextSibling);\n }\n }\n }\n}\n\nfunction next(selector) {\n if (this.length > 0) {\n if (selector) {\n if (this[0].nextElementSibling && $(this[0].nextElementSibling).is(selector)) {\n return $([this[0].nextElementSibling]);\n }\n\n return $([]);\n }\n\n if (this[0].nextElementSibling) return $([this[0].nextElementSibling]);\n return $([]);\n }\n\n return $([]);\n}\n\nfunction nextAll(selector) {\n const nextEls = [];\n let el = this[0];\n if (!el) return $([]);\n\n while (el.nextElementSibling) {\n const next = el.nextElementSibling; // eslint-disable-line\n\n if (selector) {\n if ($(next).is(selector)) nextEls.push(next);\n } else nextEls.push(next);\n\n el = next;\n }\n\n return $(nextEls);\n}\n\nfunction prev(selector) {\n if (this.length > 0) {\n const el = this[0];\n\n if (selector) {\n if (el.previousElementSibling && $(el.previousElementSibling).is(selector)) {\n return $([el.previousElementSibling]);\n }\n\n return $([]);\n }\n\n if (el.previousElementSibling) return $([el.previousElementSibling]);\n return $([]);\n }\n\n return $([]);\n}\n\nfunction prevAll(selector) {\n const prevEls = [];\n let el = this[0];\n if (!el) return $([]);\n\n while (el.previousElementSibling) {\n const prev = el.previousElementSibling; // eslint-disable-line\n\n if (selector) {\n if ($(prev).is(selector)) prevEls.push(prev);\n } else prevEls.push(prev);\n\n el = prev;\n }\n\n return $(prevEls);\n}\n\nfunction siblings(selector) {\n return this.nextAll(selector).add(this.prevAll(selector));\n}\n\nfunction parent(selector) {\n const parents = []; // eslint-disable-line\n\n for (let i = 0; i < this.length; i += 1) {\n if (this[i].parentNode !== null) {\n if (selector) {\n if ($(this[i].parentNode).is(selector)) parents.push(this[i].parentNode);\n } else {\n parents.push(this[i].parentNode);\n }\n }\n }\n\n return $(parents);\n}\n\nfunction parents(selector) {\n const parents = []; // eslint-disable-line\n\n for (let i = 0; i < this.length; i += 1) {\n let parent = this[i].parentNode; // eslint-disable-line\n\n while (parent) {\n if (selector) {\n if ($(parent).is(selector)) parents.push(parent);\n } else {\n parents.push(parent);\n }\n\n parent = parent.parentNode;\n }\n }\n\n return $(parents);\n}\n\nfunction closest(selector) {\n let closest = this; // eslint-disable-line\n\n if (typeof selector === 'undefined') {\n return $([]);\n }\n\n if (!closest.is(selector)) {\n closest = closest.parents(selector).eq(0);\n }\n\n return closest;\n}\n\nfunction find(selector) {\n const foundElements = [];\n\n for (let i = 0; i < this.length; i += 1) {\n const found = this[i].querySelectorAll(selector);\n\n for (let j = 0; j < found.length; j += 1) {\n foundElements.push(found[j]);\n }\n }\n\n return $(foundElements);\n}\n\nfunction children(selector) {\n const children = []; // eslint-disable-line\n\n for (let i = 0; i < this.length; i += 1) {\n const childNodes = this[i].children;\n\n for (let j = 0; j < childNodes.length; j += 1) {\n if (!selector || $(childNodes[j]).is(selector)) {\n children.push(childNodes[j]);\n }\n }\n }\n\n return $(children);\n}\n\nfunction remove() {\n for (let i = 0; i < this.length; i += 1) {\n if (this[i].parentNode) this[i].parentNode.removeChild(this[i]);\n }\n\n return this;\n}\n\nfunction detach() {\n return this.remove();\n}\n\nfunction add(...els) {\n const dom = this;\n let i;\n let j;\n\n for (i = 0; i < els.length; i += 1) {\n const toAdd = $(els[i]);\n\n for (j = 0; j < toAdd.length; j += 1) {\n dom.push(toAdd[j]);\n }\n }\n\n return dom;\n}\n\nfunction empty() {\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (el.nodeType === 1) {\n for (let j = 0; j < el.childNodes.length; j += 1) {\n if (el.childNodes[j].parentNode) {\n el.childNodes[j].parentNode.removeChild(el.childNodes[j]);\n }\n }\n\n el.textContent = '';\n }\n }\n\n return this;\n}\n\n// eslint-disable-next-line\n\nfunction scrollTo(...args) {\n const window = getWindow();\n let [left, top, duration, easing, callback] = args;\n\n if (args.length === 4 && typeof easing === 'function') {\n callback = easing;\n [left, top, duration, callback, easing] = args;\n }\n\n if (typeof easing === 'undefined') easing = 'swing';\n return this.each(function animate() {\n const el = this;\n let currentTop;\n let currentLeft;\n let maxTop;\n let maxLeft;\n let newTop;\n let newLeft;\n let scrollTop; // eslint-disable-line\n\n let scrollLeft; // eslint-disable-line\n\n let animateTop = top > 0 || top === 0;\n let animateLeft = left > 0 || left === 0;\n\n if (typeof easing === 'undefined') {\n easing = 'swing';\n }\n\n if (animateTop) {\n currentTop = el.scrollTop;\n\n if (!duration) {\n el.scrollTop = top;\n }\n }\n\n if (animateLeft) {\n currentLeft = el.scrollLeft;\n\n if (!duration) {\n el.scrollLeft = left;\n }\n }\n\n if (!duration) return;\n\n if (animateTop) {\n maxTop = el.scrollHeight - el.offsetHeight;\n newTop = Math.max(Math.min(top, maxTop), 0);\n }\n\n if (animateLeft) {\n maxLeft = el.scrollWidth - el.offsetWidth;\n newLeft = Math.max(Math.min(left, maxLeft), 0);\n }\n\n let startTime = null;\n if (animateTop && newTop === currentTop) animateTop = false;\n if (animateLeft && newLeft === currentLeft) animateLeft = false;\n\n function render(time = new Date().getTime()) {\n if (startTime === null) {\n startTime = time;\n }\n\n const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n const easeProgress = easing === 'linear' ? progress : 0.5 - Math.cos(progress * Math.PI) / 2;\n let done;\n if (animateTop) scrollTop = currentTop + easeProgress * (newTop - currentTop);\n if (animateLeft) scrollLeft = currentLeft + easeProgress * (newLeft - currentLeft);\n\n if (animateTop && newTop > currentTop && scrollTop >= newTop) {\n el.scrollTop = newTop;\n done = true;\n }\n\n if (animateTop && newTop < currentTop && scrollTop <= newTop) {\n el.scrollTop = newTop;\n done = true;\n }\n\n if (animateLeft && newLeft > currentLeft && scrollLeft >= newLeft) {\n el.scrollLeft = newLeft;\n done = true;\n }\n\n if (animateLeft && newLeft < currentLeft && scrollLeft <= newLeft) {\n el.scrollLeft = newLeft;\n done = true;\n }\n\n if (done) {\n if (callback) callback();\n return;\n }\n\n if (animateTop) el.scrollTop = scrollTop;\n if (animateLeft) el.scrollLeft = scrollLeft;\n window.requestAnimationFrame(render);\n }\n\n window.requestAnimationFrame(render);\n });\n} // scrollTop(top, duration, easing, callback) {\n\n\nfunction scrollTop(...args) {\n let [top, duration, easing, callback] = args;\n\n if (args.length === 3 && typeof easing === 'function') {\n [top, duration, callback, easing] = args;\n }\n\n const dom = this;\n\n if (typeof top === 'undefined') {\n if (dom.length > 0) return dom[0].scrollTop;\n return null;\n }\n\n return dom.scrollTo(undefined, top, duration, easing, callback);\n}\n\nfunction scrollLeft(...args) {\n let [left, duration, easing, callback] = args;\n\n if (args.length === 3 && typeof easing === 'function') {\n [left, duration, callback, easing] = args;\n }\n\n const dom = this;\n\n if (typeof left === 'undefined') {\n if (dom.length > 0) return dom[0].scrollLeft;\n return null;\n }\n\n return dom.scrollTo(left, undefined, duration, easing, callback);\n}\n\n// eslint-disable-next-line\n\nfunction animate(initialProps, initialParams) {\n const window = getWindow();\n const els = this;\n const a = {\n props: Object.assign({}, initialProps),\n params: Object.assign({\n duration: 300,\n easing: 'swing' // or 'linear'\n\n /* Callbacks\n begin(elements)\n complete(elements)\n progress(elements, complete, remaining, start, tweenValue)\n */\n\n }, initialParams),\n elements: els,\n animating: false,\n que: [],\n\n easingProgress(easing, progress) {\n if (easing === 'swing') {\n return 0.5 - Math.cos(progress * Math.PI) / 2;\n }\n\n if (typeof easing === 'function') {\n return easing(progress);\n }\n\n return progress;\n },\n\n stop() {\n if (a.frameId) {\n window.cancelAnimationFrame(a.frameId);\n }\n\n a.animating = false;\n a.elements.each(el => {\n const element = el;\n delete element.dom7AnimateInstance;\n });\n a.que = [];\n },\n\n done(complete) {\n a.animating = false;\n a.elements.each(el => {\n const element = el;\n delete element.dom7AnimateInstance;\n });\n if (complete) complete(els);\n\n if (a.que.length > 0) {\n const que = a.que.shift();\n a.animate(que[0], que[1]);\n }\n },\n\n animate(props, params) {\n if (a.animating) {\n a.que.push([props, params]);\n return a;\n }\n\n const elements = []; // Define & Cache Initials & Units\n\n a.elements.each((el, index) => {\n let initialFullValue;\n let initialValue;\n let unit;\n let finalValue;\n let finalFullValue;\n if (!el.dom7AnimateInstance) a.elements[index].dom7AnimateInstance = a;\n elements[index] = {\n container: el\n };\n Object.keys(props).forEach(prop => {\n initialFullValue = window.getComputedStyle(el, null).getPropertyValue(prop).replace(',', '.');\n initialValue = parseFloat(initialFullValue);\n unit = initialFullValue.replace(initialValue, '');\n finalValue = parseFloat(props[prop]);\n finalFullValue = props[prop] + unit;\n elements[index][prop] = {\n initialFullValue,\n initialValue,\n unit,\n finalValue,\n finalFullValue,\n currentValue: initialValue\n };\n });\n });\n let startTime = null;\n let time;\n let elementsDone = 0;\n let propsDone = 0;\n let done;\n let began = false;\n a.animating = true;\n\n function render() {\n time = new Date().getTime();\n let progress;\n let easeProgress; // let el;\n\n if (!began) {\n began = true;\n if (params.begin) params.begin(els);\n }\n\n if (startTime === null) {\n startTime = time;\n }\n\n if (params.progress) {\n // eslint-disable-next-line\n params.progress(els, Math.max(Math.min((time - startTime) / params.duration, 1), 0), startTime + params.duration - time < 0 ? 0 : startTime + params.duration - time, startTime);\n }\n\n elements.forEach(element => {\n const el = element;\n if (done || el.done) return;\n Object.keys(props).forEach(prop => {\n if (done || el.done) return;\n progress = Math.max(Math.min((time - startTime) / params.duration, 1), 0);\n easeProgress = a.easingProgress(params.easing, progress);\n const {\n initialValue,\n finalValue,\n unit\n } = el[prop];\n el[prop].currentValue = initialValue + easeProgress * (finalValue - initialValue);\n const currentValue = el[prop].currentValue;\n\n if (finalValue > initialValue && currentValue >= finalValue || finalValue < initialValue && currentValue <= finalValue) {\n el.container.style[prop] = finalValue + unit;\n propsDone += 1;\n\n if (propsDone === Object.keys(props).length) {\n el.done = true;\n elementsDone += 1;\n }\n\n if (elementsDone === elements.length) {\n done = true;\n }\n }\n\n if (done) {\n a.done(params.complete);\n return;\n }\n\n el.container.style[prop] = currentValue + unit;\n });\n });\n if (done) return; // Then call\n\n a.frameId = window.requestAnimationFrame(render);\n }\n\n a.frameId = window.requestAnimationFrame(render);\n return a;\n }\n\n };\n\n if (a.elements.length === 0) {\n return els;\n }\n\n let animateInstance;\n\n for (let i = 0; i < a.elements.length; i += 1) {\n if (a.elements[i].dom7AnimateInstance) {\n animateInstance = a.elements[i].dom7AnimateInstance;\n } else a.elements[i].dom7AnimateInstance = a;\n }\n\n if (!animateInstance) {\n animateInstance = a;\n }\n\n if (initialProps === 'stop') {\n animateInstance.stop();\n } else {\n animateInstance.animate(a.props, a.params);\n }\n\n return els;\n}\n\nfunction stop() {\n const els = this;\n\n for (let i = 0; i < els.length; i += 1) {\n if (els[i].dom7AnimateInstance) {\n els[i].dom7AnimateInstance.stop();\n }\n }\n}\n\nconst noTrigger = 'resize scroll'.split(' ');\n\nfunction shortcut(name) {\n function eventHandler(...args) {\n if (typeof args[0] === 'undefined') {\n for (let i = 0; i < this.length; i += 1) {\n if (noTrigger.indexOf(name) < 0) {\n if (name in this[i]) this[i][name]();else {\n $(this[i]).trigger(name);\n }\n }\n }\n\n return this;\n }\n\n return this.on(name, ...args);\n }\n\n return eventHandler;\n}\n\nconst click = shortcut('click');\nconst blur = shortcut('blur');\nconst focus = shortcut('focus');\nconst focusin = shortcut('focusin');\nconst focusout = shortcut('focusout');\nconst keyup = shortcut('keyup');\nconst keydown = shortcut('keydown');\nconst keypress = shortcut('keypress');\nconst submit = shortcut('submit');\nconst change = shortcut('change');\nconst mousedown = shortcut('mousedown');\nconst mousemove = shortcut('mousemove');\nconst mouseup = shortcut('mouseup');\nconst mouseenter = shortcut('mouseenter');\nconst mouseleave = shortcut('mouseleave');\nconst mouseout = shortcut('mouseout');\nconst mouseover = shortcut('mouseover');\nconst touchstart = shortcut('touchstart');\nconst touchend = shortcut('touchend');\nconst touchmove = shortcut('touchmove');\nconst resize = shortcut('resize');\nconst scroll = shortcut('scroll');\n\nexport default $;\nexport { $, add, addClass, animate, animationEnd, append, appendTo, attr, blur, change, children, click, closest, css, data, dataset, detach, each, empty, eq, filter, find, focus, focusin, focusout, hasClass, height, hide, html, index, insertAfter, insertBefore, is, keydown, keypress, keyup, mousedown, mouseenter, mouseleave, mousemove, mouseout, mouseover, mouseup, next, nextAll, off, offset, on, once, outerHeight, outerWidth, parent, parents, prepend, prependTo, prev, prevAll, prop, remove, removeAttr, removeClass, removeData, resize, scroll, scrollLeft, scrollTo, scrollTop, show, siblings, stop, styles, submit, text, toggleClass, touchend, touchmove, touchstart, transform, transition, transitionEnd, trigger, val, value, width };\n","// eslint-disable-next-line\nimport * as methods from 'dom7';\n\nObject.keys(methods).forEach((methodName) => {\n if (methodName === '$') return;\n methods.$.fn[methodName] = methods[methodName];\n});\n\nexport default methods.$;\n","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 <span class=\"preloader-inner\">\n <svg viewBox=\"0 0 36 36\">\n <circle cx=\"18\" cy=\"18\" r=\"16\"></circle>\n </svg>\n </span>\n`.trim();\n\nexport const iosPreloaderContent = `\n <span class=\"preloader-inner\">\n ${[0, 1, 2, 3, 4, 5, 6, 7].map(() => '<span class=\"preloader-inner-line\"></span>').join('')}\n </span>\n`.trim();\n\nexport const auroraPreloaderContent = `\n <span class=\"preloader-inner\">\n <span class=\"preloader-inner-circle\"></span>\n </span>\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.js';\n\nlet deviceCalculated;\n\nfunction calcDevice({ userAgent } = {}) {\n const support = getSupport();\n const window = getWindow();\n const platform = window.navigator.platform;\n const ua = userAgent || window.navigator.userAgent;\n\n const device = {\n ios: false,\n android: false,\n androidChrome: false,\n desktop: false,\n iphone: false,\n ipod: false,\n ipad: false,\n edge: false,\n ie: false,\n firefox: false,\n macos: false,\n windows: false,\n cordova: !!window.cordova,\n electron: false,\n capacitor: !!window.Capacitor,\n nwjs: false,\n };\n\n const screenWidth = window.screen.width;\n const screenHeight = window.screen.height;\n\n const android = ua.match(/(Android);?[\\s\\/]+([\\d.]+)?/); // eslint-disable-line\n let ipad = ua.match(/(iPad).*OS\\s([\\d_]+)/);\n const ipod = ua.match(/(iPod)(.*OS\\s([\\d_]+))?/);\n const iphone = !ipad && ua.match(/(iPhone\\sOS|iOS|iPhone;\\sCPU\\sOS)\\s([\\d_]+)/);\n const ie = ua.indexOf('MSIE ') >= 0 || ua.indexOf('Trident/') >= 0;\n const edge = ua.indexOf('Edge/') >= 0;\n const firefox = ua.indexOf('Gecko/') >= 0 && ua.indexOf('Firefox/') >= 0;\n const windows = platform === 'Win32';\n const electron = ua.toLowerCase().indexOf('electron') >= 0;\n const nwjs =\n typeof nw !== 'undefined' &&\n typeof process !== 'undefined' &&\n typeof process.versions !== 'undefined' &&\n typeof process.versions.nw !== 'undefined';\n let macos = platform === 'MacIntel';\n\n // iPadOs 13 fix\n const iPadScreens = [\n '1024x1366',\n '1366x1024',\n '834x1194',\n '1194x834',\n '834x1112',\n '1112x834',\n '768x1024',\n '1024x768',\n '820x1180',\n '1180x820',\n '810x1080',\n '1080x810',\n ];\n if (\n !ipad &&\n macos &&\n support.touch &&\n iPadScreens.indexOf(`${screenWidth}x${screenHeight}`) >= 0\n ) {\n ipad = ua.match(/(Version)\\/([\\d.]+)/);\n if (!ipad) ipad = [0, 1, '13_0_0'];\n macos = false;\n }\n\n device.ie = ie;\n device.edge = edge;\n device.firefox = firefox;\n\n // Android\n if (android) {\n device.os = 'android';\n device.osVersion = android[2];\n device.android = true;\n device.androidChrome = ua.toLowerCase().indexOf('chrome') >= 0;\n }\n if (ipad || iphone || ipod) {\n device.os = 'ios';\n device.ios = true;\n }\n // iOS\n if (iphone && !ipod) {\n device.osVersion = iphone[2].replace(/_/g, '.');\n device.iphone = true;\n }\n if (ipad) {\n device.osVersion = ipad[2].replace(/_/g, '.');\n device.ipad = true;\n }\n if (ipod) {\n device.osVersion = ipod[3] ? ipod[3].replace(/_/g, '.') : null;\n device.ipod = true;\n }\n // iOS 8+ changed UA\n if (device.ios && device.osVersion && ua.indexOf('Version/') >= 0) {\n if (device.osVersion.split('.')[0] === '10') {\n device.osVersion = ua.toLowerCase().split('version/')[1].split(' ')[0];\n }\n }\n\n // Webview\n device.webView =\n !!(\n (iphone || ipad || ipod) &&\n (ua.match(/.*AppleWebKit(?!.*Safari)/i) || window.navigator.standalone)\n ) ||\n (window.matchMedia && window.matchMedia('(display-mode: standalone)').matches);\n device.webview = device.webView;\n device.standalone = device.webView;\n\n // Desktop\n device.desktop = !(device.ios || device.android) || electron || nwjs;\n if (device.desktop) {\n device.electron = electron;\n device.nwjs = nwjs;\n device.macos = macos;\n device.windows = windows;\n if (device.macos) {\n device.os = 'macos';\n }\n if (device.windows) {\n device.os = 'windows';\n }\n }\n\n // Pixel Ratio\n device.pixelRatio = window.devicePixelRatio || 1;\n\n // Color Scheme\n const DARK = '(prefers-color-scheme: dark)';\n const LIGHT = '(prefers-color-scheme: light)';\n device.prefersColorScheme = function prefersColorTheme() {\n let theme;\n if (window.matchMedia && window.matchMedia(LIGHT).matches) {\n theme = 'light';\n }\n if (window.matchMedia && window.matchMedia(DARK).matches) {\n theme = 'dark';\n }\n return theme;\n };\n\n // Export object\n return device;\n}\n\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.js';\nimport EventsClass from './events-class.js';\n\nclass Framework7Class extends EventsClass {\n constructor(params = {}, parents = []) {\n super(parents);\n const self = this;\n self.params = params;\n\n if (self.params && self.params.on) {\n Object.keys(self.params.on).forEach((eventName) => {\n self.on(eventName, self.params.on[eventName]);\n });\n }\n }\n\n // eslint-disable-next-line\n useModuleParams(module, instanceParams) {\n if (module.params) {\n const originalParams = {};\n Object.keys(module.params).forEach((paramKey) => {\n if (typeof instanceParams[paramKey] === 'undefined') return;\n originalParams[paramKey] = extend({}, instanceParams[paramKey]);\n });\n extend(instanceParams, module.params);\n Object.keys(originalParams).forEach((paramKey) => {\n extend(instanceParams[paramKey], originalParams[paramKey]);\n });\n }\n }\n\n useModulesParams(instanceParams) {\n const instance = this;\n if (!instance.modules) return;\n Object.keys(instance.modules).forEach((moduleName) => {\n const module = instance.modules[moduleName];\n // Extend params\n if (module.params) {\n extend(instanceParams, module.params);\n }\n });\n }\n\n useModule(moduleName = '', moduleParams = {}) {\n const instance = this;\n if (!instance.modules) return;\n const module = typeof moduleName === 'string' ? instance.modules[moduleName] : moduleName;\n if (!module) return;\n\n // Extend instance methods and props\n if (module.instance) {\n Object.keys(module.instance).forEach((modulePropName) => {\n const moduleProp = module.instance[modulePropName];\n if (typeof moduleProp === 'function') {\n instance[modulePropName] = moduleProp.bind(instance);\n } else {\n instance[modulePropName] = moduleProp;\n }\n });\n }\n // Add event listeners\n if (module.on && instance.on) {\n Object.keys(module.on).forEach((moduleEventName) => {\n instance.on(moduleEventName, module.on[moduleEventName]);\n });\n }\n // Add vnode hooks\n if (module.vnode) {\n if (!instance.vnodeHooks) instance.vnodeHooks = {};\n Object.keys(module.vnode).forEach((vnodeId) => {\n Object.keys(module.vnode[vnodeId]).forEach((hookName) => {\n const handler = module.vnode[vnodeId][hookName];\n if (!instance.vnodeHooks[hookName]) instance.vnodeHooks[hookName] = {};\n if (!instance.vnodeHooks[hookName][vnodeId]) instance.vnodeHooks[hookName][vnodeId] = [];\n instance.vnodeHooks[hookName][vnodeId].push(handler.bind(instance));\n });\n });\n }\n // Module create callback\n if (module.create) {\n module.create.bind(instance)(moduleParams);\n }\n }\n\n useModules(modulesParams = {}) {\n const instance = this;\n if (!instance.modules) return;\n Object.keys(instance.modules).forEach((moduleName) => {\n const moduleParams = modulesParams[moduleName] || {};\n instance.useModule(moduleName, moduleParams);\n });\n }\n\n static set components(components) {\n const Class = this;\n if (!Class.use) return;\n Class.use(components);\n }\n\n static installModule(module, ...params) {\n const Class = this;\n if (!Class.prototype.modules) Class.prototype.modules = {};\n const name = module.name || `${Object.keys(Class.prototype.modules).length}_${now()}`;\n Class.prototype.modules[name] = module;\n // Prototype\n if (module.proto) {\n Object.keys(module.proto).forEach((key) => {\n Class.prototype[key] = module.proto[key];\n });\n }\n // Class\n if (module.static) {\n Object.keys(module.static).forEach((key) => {\n Class[key] = module.static[key];\n });\n }\n // Callback\n if (module.install) {\n module.install.apply(Class, params);\n }\n return Class;\n }\n\n static use(module, ...params) {\n const Class = this;\n if (Array.isArray(module)) {\n module.forEach((m) => Class.installModule(m));\n return Class;\n }\n return Class.installModule(module, ...params);\n }\n}\n\nexport default Framework7Class;\n","import $ from './dom7.js';\n\nexport default function ConstructorMethods(parameters = {}) {\n const { defaultSelector, constructor: Constructor, domProp, app, addMethods } = parameters;\n const methods = {\n create(...args) {\n if (app) return new Constructor(app, ...args);\n return new Constructor(...args);\n },\n get(el = defaultSelector) {\n if (el instanceof Constructor) return el;\n const $el = $(el);\n if ($el.length === 0) return undefined;\n return $el[0][domProp];\n },\n destroy(el) {\n const instance = methods.get(el);\n if (instance && instance.destroy) return instance.destroy();\n return undefined;\n },\n };\n if (addMethods && Array.isArray(addMethods)) {\n addMethods.forEach((methodName) => {\n methods[methodName] = (el = defaultSelector, ...args) => {\n const instance = methods.get(el);\n if (instance && instance[methodName]) return instance[methodName](...args);\n return undefined;\n };\n });\n }\n return methods;\n}\n","import { getWindow, getDocument } from 'ssr-window';\nimport { id } from '../../shared/utils.js';\nimport $ from '../../shared/dom7.js';\n\nconst fetchedModules = [];\nfunction loadModule(moduleToLoad) {\n const Framework7 = this;\n const window = getWindow();\n const document = getDocument();\n return new Promise((resolve, reject) => {\n const app = Framework7.instance;\n let modulePath;\n let moduleObj;\n let moduleFunc;\n if (!moduleToLoad) {\n reject(new Error('Framework7: Lazy module must be specified'));\n return;\n }\n\n function install(module) {\n Framework7.use(module);\n\n if (app) {\n app.useModuleParams(module, app.params);\n app.useModule(module);\n }\n }\n\n if (typeof moduleToLoad === 'string') {\n const matchNamePattern = moduleToLoad.match(/([a-z0-9-]*)/i);\n if (\n moduleToLoad.indexOf('.') < 0 &&\n matchNamePattern &&\n matchNamePattern[0].length === moduleToLoad.length\n ) {\n if (!app || (app && !app.params.lazyModulesPath)) {\n reject(\n new Error(\n 'Framework7: \"lazyModulesPath\" app parameter must be specified to fetch module by name',\n ),\n );\n return;\n }\n modulePath = `${app.params.lazyModulesPath}/${moduleToLoad}/${moduleToLoad}.lazy.js`;\n } else {\n modulePath = moduleToLoad;\n }\n } else if (typeof moduleToLoad === 'function') {\n moduleFunc = moduleToLoad;\n } else {\n // considering F7-Plugin object\n moduleObj = moduleToLoad;\n }\n\n if (moduleFunc) {\n const module = moduleFunc(Framework7, false);\n if (!module) {\n reject(\n new Error(\"Framework7: Can't find Framework7 component in specified component function\"),\n );\n return;\n }\n // Check if it was added\n if (Framework7.prototype.modules && Framework7.prototype.modules[module.name]) {\n resolve();\n return;\n }\n // Install It\n install(module);\n\n resolve();\n }\n if (moduleObj) {\n const module = moduleObj;\n if (!module) {\n reject(new Error(\"Framework7: Can't find Framework7 component in specified component\"));\n return;\n }\n // Check if it was added\n if (Framework7.prototype.modules && Framework7.prototype.modules[module.name]) {\n resolve();\n return;\n }\n // Install It\n install(module);\n\n resolve();\n }\n if (modulePath) {\n if (fetchedModules.indexOf(modulePath) >= 0) {\n resolve();\n return;\n }\n fetchedModules.push(modulePath);\n const scriptLoad = new Promise((resolveScript, rejectScript) => {\n 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\n .replace('.lazy.js', app.rtl ? '.rtl.css' : '.css')\n .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.js';\nimport { getDevice } from '../../shared/get-device.js';\nimport { getSupport } from '../../shared/get-support.js';\nimport Framework7Class from '../../shared/class.js';\nimport EventsClass from '../../shared/events-class.js';\nimport ConstructorMethods from '../../shared/constructor-methods.js';\nimport ModalMethods from '../../shared/modal-methods.js';\nimport $ from '../../shared/dom7.js';\nimport loadModule from './load-module.js';\n\nclass Framework7 extends Framework7Class {\n constructor(params = {}) {\n super(params);\n // eslint-disable-next-line\n if (Framework7.instance && typeof window !== 'undefined') {\n throw new Error(\"Framework7 is already initialized and can't be initialized more than once\");\n }\n const device = getDevice({ userAgent: params.userAgent || undefined });\n const support = getSupport();\n\n const passedParams = extend({}, params);\n\n // App Instance\n const app = this;\n\n app.device = device;\n app.support = support;\n\n const w = getWindow();\n const d = getDocument();\n\n Framework7.instance = app;\n\n // Default\n const defaults = {\n version: '1.0.0',\n id: 'io.framework7.myapp',\n el: 'body',\n theme: 'auto',\n language: w.navigator.language,\n routes: [],\n name: 'Framework7',\n lazyModulesPath: null,\n initOnDeviceReady: true,\n init: true,\n autoDarkMode: 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: w.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 $(d).on('deviceready', () => {\n app.init();\n });\n } else {\n app.init();\n }\n }\n\n // Return app instance\n return app;\n }\n\n mount(rootEl) {\n const app = this;\n const window = getWindow();\n const document = getDocument();\n const $rootEl = $(rootEl || app.params.el).eq(0);\n app.$el = $rootEl;\n if (app.$el && app.$el[0]) {\n app.el = app.$el[0];\n app.el.f7 = app;\n app.rtl = $rootEl.css('direction') === 'rtl';\n }\n\n // Auto Dark Mode\n const DARK = '(prefers-color-scheme: dark)';\n const LIGHT = '(prefers-color-scheme: light)';\n app.mq = {};\n if (window.matchMedia) {\n app.mq.dark = window.matchMedia(DARK);\n app.mq.light = window.matchMedia(LIGHT);\n }\n app.colorSchemeListener = function colorSchemeListener({ matches, media }) {\n if (!matches) {\n return;\n }\n const html = document.querySelector('html');\n if (media === DARK) {\n html.classList.add('dark');\n app.darkMode = true;\n app.emit('darkModeChange', true);\n } else if (media === LIGHT) {\n html.classList.remove('dark');\n app.darkMode = false;\n app.emit('darkModeChange', false);\n }\n };\n app.emit('mount');\n }\n\n initStore() {\n const app = this;\n if (typeof app.params.store !== 'undefined' && app.params.store.__store) {\n app.store = app.params.store;\n } else {\n app.store = app.createStore(app.params.store);\n }\n }\n\n enableAutoDarkMode() {\n const window = getWindow();\n const document = getDocument();\n if (!window.matchMedia) return;\n const app = this;\n const html = document.querySelector('html');\n if (app.mq.dark && app.mq.light) {\n app.mq.dark.addListener(app.colorSchemeListener);\n app.mq.light.addListener(app.colorSchemeListener);\n }\n if (app.mq.dark && app.mq.dark.matches) {\n html.classList.add('dark');\n app.darkMode = true;\n app.emit('darkModeChange', true);\n } else if (app.mq.light && app.mq.light.matches) {\n html.classList.remove('dark');\n app.darkMode = false;\n app.emit('darkModeChange', false);\n }\n }\n\n disableAutoDarkMode() {\n const window = getWindow();\n if (!window.matchMedia) return;\n const app = this;\n if (app.mq.dark) app.mq.dark.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 Mode\n if (app.params.autoDarkMode) {\n app.enableAutoDarkMode();\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.js';\nimport { extend } from './utils.js';\nimport ConstructorMethods from './constructor-methods.js';\n\nexport default function ModalMethods(parameters = {}) {\n const { defaultSelector, constructor: Constructor, app } = parameters;\n const methods = extend(\n ConstructorMethods({\n defaultSelector,\n constructor: Constructor,\n app,\n domProp: 'f7Modal',\n }),\n {\n open(el, animate, targetEl) {\n let $el = $(el);\n if ($el.length > 1 && targetEl) {\n // check if same modal in other page\n const $targetPage = $(targetEl).parents('.page');\n if ($targetPage.length) {\n $el.each((modalEl) => {\n const $modalEl = $(modalEl);\n if ($modalEl.parents($targetPage)[0] === $targetPage[0]) {\n $el = $modalEl;\n }\n });\n }\n }\n if ($el.length > 1) {\n $el = $el.eq($el.length - 1);\n }\n if (!$el.length) return undefined;\n let instance = $el[0].f7Modal;\n if (!instance) {\n const params = $el.dataset();\n instance = new Constructor(app, { el: $el, ...params });\n }\n return instance.open(animate);\n },\n close(el = defaultSelector, animate, targetEl) {\n let $el = $(el);\n if (!$el.length) return undefined;\n if ($el.length > 1) {\n // check if close link (targetEl) in this modal\n let $parentEl;\n if (targetEl) {\n const $targetEl = $(targetEl);\n if ($targetEl.length) {\n $parentEl = $targetEl.parents($el);\n }\n }\n if ($parentEl && $parentEl.length > 0) {\n $el = $parentEl;\n } else {\n $el = $el.eq($el.length - 1);\n }\n }\n let instance = $el[0].f7Modal;\n if (!instance) {\n const params = $el.dataset();\n instance = new Constructor(app, { el: $el, ...params });\n }\n return instance.close(animate);\n },\n },\n );\n return methods;\n}\n","import { getDocument } from 'ssr-window';\nimport { getDevice } from '../../shared/get-device.js';\n\nexport default {\n name: 'device',\n static: {\n getDevice,\n },\n on: {\n init() {\n const document = getDocument();\n const device = getDevice();\n const classNames = [];\n const html = document.querySelector('html');\n const metaStatusbar = document.querySelector(\n 'meta[name=\"apple-mobile-web-app-status-bar-style\"]',\n );\n if (!html) return;\n if (\n device.standalone &&\n device.ios &&\n metaStatusbar &&\n metaStatusbar.content === 'black-translucent'\n ) {\n classNames.push('device-full-viewport');\n }\n\n // Pixel Ratio\n classNames.push(`device-pixel-ratio-${Math.floor(device.pixelRatio)}`);\n // OS classes\n if (device.os && !device.desktop) {\n classNames.push(`device-${device.os}`);\n } else if (device.desktop) {\n classNames.push('device-desktop');\n if (device.os) {\n classNames.push(`device-${device.os}`);\n }\n }\n if (device.cordova) {\n classNames.push('device-cordova');\n }\n if (device.capacitor) {\n classNames.push('device-capacitor');\n }\n\n // Add html classes\n classNames.forEach((className) => {\n html.classList.add(className);\n });\n },\n },\n};\n","import { getSupport } from '../../shared/get-support.js';\n\nexport default {\n name: 'support',\n static: {\n getSupport,\n },\n};\n","import * as utils from '../../shared/utils.js';\n\nexport default {\n name: 'utils',\n proto: {\n utils,\n },\n static: {\n utils,\n },\n};\n","import { getWindow, getDocument } from 'ssr-window';\nimport { getDevice } from '../../shared/get-device.js';\n\nexport default {\n name: 'resize',\n create() {\n const app = this;\n app.getSize = () => {\n if (!app.el) return { width: 0, height: 0, left: 0, top: 0 };\n const offset = app.$el.offset();\n const [width, height, left, top] = [\n app.el.offsetWidth,\n app.el.offsetHeight,\n offset.left,\n offset.top,\n ];\n app.width = width;\n app.height = height;\n app.left = left;\n app.top = top;\n return { width, height, left, top };\n };\n },\n on: {\n init() {\n const app = this;\n const window = getWindow();\n\n // Get Size\n app.getSize();\n\n // Emit resize\n window.addEventListener(\n 'resize',\n () => {\n app.emit('resize');\n },\n false,\n );\n\n // Emit orientationchange\n window.addEventListener('orientationchange', () => {\n app.emit('orientationchange');\n });\n },\n orientationchange() {\n const document = getDocument();\n const device = getDevice();\n // Fix iPad weird body scroll\n if (device.ipad) {\n document.body.scrollLeft = 0;\n setTimeout(() => {\n document.body.scrollLeft = 0;\n }, 0);\n }\n },\n resize() {\n const app = this;\n app.getSize();\n },\n },\n};\n","/* eslint-disable max-classes-per-file */\nimport { getWindow, getDocument } from 'ssr-window';\nimport { extend, serializeObject } from './utils.js';\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.js';\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.js';\nimport { getSupport } from '../../shared/get-support.js';\nimport { getDevice } from '../../shared/get-device.js';\nimport { extend } from '../../shared/utils.js';\n\nfunction initTouch() {\n const app = this;\n const device = getDevice();\n const support = getSupport();\n const window = getWindow();\n const document = getDocument();\n const params = app.params.touch;\n const useRipple = params[`${app.theme}TouchRipple`];\n\n if (device.ios && device.webView) {\n // Strange hack required for iOS 8 webview to work on inputs\n window.addEventListener('touchstart', () => {});\n }\n\n let touchStartX;\n let touchStartY;\n let targetElement;\n let isMoved;\n let tapHoldFired;\n let tapHoldTimeout;\n let preventClick;\n\n let activableElement;\n let activeTimeout;\n\n let rippleWave;\n let rippleTarget;\n let rippleTimeout;\n\n function findActivableElement(el) {\n const target = $(el);\n const parents = target.parents(params.activeStateElements);\n if (target.closest('.no-active-state').length) {\n return null;\n }\n let activable;\n if (target.is(params.activeStateElements)) {\n activable = target;\n }\n if (parents.length > 0) {\n activable = activable ? activable.add(parents) : parents;\n }\n if (activable && activable.length > 1) {\n const newActivable = [];\n let preventPropagation;\n for (let i = 0; i < activable.length; i += 1) {\n if (!preventPropagation) {\n newActivable.push(activable[i]);\n if (\n activable.eq(i).hasClass('prevent-active-state-propagation') ||\n activable.eq(i).hasClass('no-active-state-propagation')\n ) {\n preventPropagation = true;\n }\n }\n }\n activable = $(newActivable);\n }\n return activable || target;\n }\n\n function isInsideScrollableView(el) {\n const pageContent = el.parents('.page-content');\n return pageContent.length > 0;\n }\n\n function addActive() {\n if (!activableElement) return;\n activableElement.addClass('active-state');\n }\n function removeActive() {\n if (!activableElement) return;\n activableElement.removeClass('active-state');\n activableElement = null;\n }\n\n // Ripple handlers\n function findRippleElement(el) {\n const rippleElements = params.touchRippleElements;\n const $el = $(el);\n if ($el.is(rippleElements)) {\n if ($el.hasClass('no-ripple')) {\n return false;\n }\n return $el;\n }\n if ($el.parents(rippleElements).length > 0) {\n const rippleParent = $el.parents(rippleElements).eq(0);\n if (rippleParent.hasClass('no-ripple')) {\n return false;\n }\n return rippleParent;\n }\n return false;\n }\n function createRipple($el, x, y) {\n if (!$el) return;\n rippleWave = app.touchRipple.create(app, $el, x, y);\n }\n\n function removeRipple() {\n if (!rippleWave) return;\n rippleWave.remove();\n rippleWave = undefined;\n rippleTarget = undefined;\n }\n function rippleTouchStart(el) {\n rippleTarget = findRippleElement(el);\n if (!rippleTarget || rippleTarget.length === 0) {\n rippleTarget = undefined;\n return;\n }\n const inScrollable = isInsideScrollableView(rippleTarget);\n\n if (!inScrollable) {\n removeRipple();\n createRipple(rippleTarget, touchStartX, touchStartY);\n } else {\n clearTimeout(rippleTimeout);\n rippleTimeout = setTimeout(() => {\n removeRipple();\n createRipple(rippleTarget, touchStartX, touchStartY);\n }, 80);\n }\n }\n function rippleTouchMove() {\n clearTimeout(rippleTimeout);\n removeRipple();\n }\n function rippleTouchEnd() {\n if (!rippleWave && rippleTarget && !isMoved) {\n clearTimeout(rippleTimeout);\n createRipple(rippleTarget, touchStartX, touchStartY);\n setTimeout(removeRipple, 0);\n } else {\n removeRipple();\n }\n }\n\n // Mouse Handlers\n function handleMouseDown(e) {\n const $activableEl = findActivableElement(e.target);\n if ($activableEl) {\n $activableEl.addClass('active-state');\n if ('which' in e && e.which === 3) {\n setTimeout(() => {\n $('.active-state').removeClass('active-state');\n }, 0);\n }\n }\n\n if (useRipple) {\n touchStartX = e.pageX;\n touchStartY = e.pageY;\n rippleTouchStart(e.target, e.pageX, e.pageY);\n }\n }\n function handleMouseMove() {\n if (!params.activeStateOnMouseMove) {\n $('.active-state').removeClass('active-state');\n }\n if (useRipple) {\n rippleTouchMove();\n }\n }\n function handleMouseUp() {\n $('.active-state').removeClass('active-state');\n if (useRipple) {\n rippleTouchEnd();\n }\n }\n\n function handleTouchCancel() {\n targetElement = null;\n\n // Remove Active State\n clearTimeout(activeTimeout);\n clearTimeout(tapHoldTimeout);\n if (params.activeState) {\n removeActive();\n }\n\n // Remove Ripple\n if (useRipple) {\n rippleTouchEnd();\n }\n }\n\n let isScrolling;\n let isSegmentedStrong = false;\n let segmentedStrongEl = null;\n\n const touchMoveActivableIos = '.dialog-button, .actions-button';\n let isTouchMoveActivable = false;\n let touchmoveActivableEl = null;\n\n function handleTouchStart(e) {\n isMoved = false;\n tapHoldFired = false;\n preventClick = false;\n isScrolling = undefined;\n if (e.targetTouches.length > 1) {\n if (activableElement) removeActive();\n return true;\n }\n if (e.touches.length > 1 && activableElement) {\n removeActive();\n }\n if (params.tapHold) {\n if (tapHoldTimeout) clearTimeout(tapHoldTimeout);\n tapHoldTimeout = setTimeout(() => {\n if (e && e.touches && e.touches.length > 1) return;\n tapHoldFired = true;\n e.preventDefault();\n preventClick = true;\n $(e.target).trigger('taphold', e);\n app.emit('taphold', e);\n }, params.tapHoldDelay);\n }\n targetElement = e.target;\n touchStartX = e.targetTouches[0].pageX;\n touchStartY = e.targetTouches[0].pageY;\n isSegmentedStrong = e.target.closest(\n '.segmented-strong .button-active, .segmented-strong .tab-link-active',\n );\n isTouchMoveActivable = app.theme === 'ios' && e.target.closest(touchMoveActivableIos);\n if (isSegmentedStrong) {\n segmentedStrongEl = isSegmentedStrong.closest('.segmented-strong');\n }\n\n if (params.activeState) {\n activableElement = findActivableElement(targetElement);\n if (activableElement && !isInsideScrollableView(activableElement)) {\n addActive();\n } else if (activableElement) {\n activeTimeout = setTimeout(addActive, 80);\n }\n }\n if (useRipple) {\n rippleTouchStart(targetElement, touchStartX, touchStartY);\n }\n return true;\n }\n function handleTouchMove(e) {\n let touch;\n let distance;\n let shouldRemoveActive = true;\n\n if (e.type === 'touchmove') {\n touch = e.targetTouches[0];\n distance = params.touchClicksDistanceThreshold;\n }\n\n const touchCurrentX = e.targetTouches[0].pageX;\n const touchCurrentY = e.targetTouches[0].pageY;\n\n if (typeof isScrolling === 'undefined') {\n isScrolling = !!(\n isScrolling || Math.abs(touchCurrentY - touchStartY) > Math.abs(touchCurrentX - touchStartX)\n );\n }\n\n if (isTouchMoveActivable || (!isScrolling && isSegmentedStrong && segmentedStrongEl)) {\n if (e.cancelable) e.preventDefault();\n }\n\n if (!isScrolling && isSegmentedStrong && segmentedStrongEl) {\n const elementFromPoint = document.elementFromPoint(\n e.targetTouches[0].clientX,\n e.targetTouches[0].clientY,\n );\n const buttonEl = elementFromPoint.closest(\n '.segmented-strong .button:not(.button-active):not(.tab-link-active)',\n );\n if (buttonEl && segmentedStrongEl.contains(buttonEl)) {\n $(buttonEl).trigger('click', 'f7Segmented');\n targetElement = buttonEl;\n }\n }\n\n if (distance && touch) {\n const pageX = touch.pageX;\n const pageY = touch.pageY;\n if (Math.abs(pageX - touchStartX) > distance || Math.abs(pageY - touchStartY) > distance) {\n isMoved = true;\n }\n } else {\n isMoved = true;\n }\n if (isMoved) {\n preventClick = true;\n // Keep active state on touchMove (for dialog and actions buttons)\n if (isTouchMoveActivable) {\n const elementFromPoint = document.elementFromPoint(\n e.targetTouches[0].clientX,\n e.targetTouches[0].clientY,\n );\n touchmoveActivableEl = elementFromPoint.closest(touchMoveActivableIos);\n if (\n touchmoveActivableEl &&\n activableElement &&\n activableElement[0] === touchmoveActivableEl\n ) {\n shouldRemoveActive = false;\n } else if (touchmoveActivableEl) {\n setTimeout(() => {\n activableElement = findActivableElement(touchmoveActivableEl);\n addActive();\n });\n }\n }\n if (params.tapHold) {\n clearTimeout(tapHoldTimeout);\n }\n if (params.activeState && shouldRemoveActive) {\n clearTimeout(activeTimeout);\n removeActive();\n }\n if (useRipple) {\n rippleTouchMove();\n }\n }\n }\n function handleTouchEnd(e) {\n isScrolling = undefined;\n isSegmentedStrong = false;\n segmentedStrongEl = null;\n isTouchMoveActivable = false;\n clearTimeout(activeTimeout);\n clearTimeout(tapHoldTimeout);\n if (touchmoveActivableEl) {\n $(touchmoveActivableEl).trigger('click', 'f7TouchMoveActivable');\n touchmoveActivableEl = null;\n }\n if (document.activeElement === e.target) {\n if (params.activeState) removeActive();\n if (useRipple) {\n rippleTouchEnd();\n }\n return true;\n }\n if (params.activeState) {\n addActive();\n setTimeout(removeActive, 0);\n }\n if (useRipple) {\n rippleTouchEnd();\n }\n if ((params.tapHoldPreventClicks && tapHoldFired) || preventClick) {\n if (e.cancelable) e.preventDefault();\n preventClick = true;\n return false;\n }\n return true;\n }\n function handleClick(e) {\n const isOverswipe = e && e.detail && e.detail === 'f7Overswipe';\n const isSegmented = e && e.detail && e.detail === 'f7Segmented';\n // eslint-disable-next-line\n const isTouchMoveActivable = e && e.detail && e.detail === 'f7TouchMoveActivable';\n let localPreventClick = preventClick;\n if (targetElement && e.target !== targetElement) {\n if (isOverswipe || isSegmented || isTouchMoveActivable) {\n localPreventClick = false;\n } else {\n localPreventClick = true;\n }\n } else if (isTouchMoveActivable) {\n localPreventClick = false;\n }\n if (params.tapHold && params.tapHoldPreventClicks && tapHoldFired) {\n localPreventClick = true;\n }\n if (localPreventClick) {\n e.stopImmediatePropagation();\n e.stopPropagation();\n e.preventDefault();\n }\n\n if (params.tapHold) {\n tapHoldTimeout = setTimeout(\n () => {\n tapHoldFired = false;\n },\n device.ios || device.androidChrome ? 100 : 400,\n );\n }\n preventClick = false;\n targetElement = null;\n\n return !localPreventClick;\n }\n\n function emitAppTouchEvent(name, e) {\n app.emit({\n events: name,\n data: [e],\n });\n }\n function appClick(e) {\n emitAppTouchEvent('click', e);\n }\n function appTouchStartActive(e) {\n emitAppTouchEvent('touchstart touchstart:active', e);\n }\n function appTouchMoveActive(e) {\n emitAppTouchEvent('touchmove touchmove:active', e);\n }\n function appTouchEndActive(e) {\n emitAppTouchEvent('touchend touchend:active', e);\n }\n function appTouchStartPassive(e) {\n emitAppTouchEvent('touchstart:passive', e);\n }\n function appTouchMovePassive(e) {\n emitAppTouchEvent('touchmove:passive', e);\n }\n function appTouchEndPassive(e) {\n emitAppTouchEvent('touchend:passive', e);\n }\n\n const passiveListener = support.passiveListener ? { passive: true } : false;\n const passiveListenerCapture = support.passiveListener ? { passive: true, capture: true } : true;\n const activeListener = support.passiveListener ? { passive: false } : false;\n const activeListenerCapture = support.passiveListener ? { passive: false, capture: true } : true;\n\n document.addEventListener('click', appClick, true);\n\n if (support.passiveListener) {\n document.addEventListener(app.touchEvents.start, appTouchStartActive, activeListenerCapture);\n document.addEventListener(app.touchEvents.move, appTouchMoveActive, activeListener);\n document.addEventListener(app.touchEvents.end, appTouchEndActive, activeListener);\n\n document.addEventListener(app.touchEvents.start, appTouchStartPassive, passiveListenerCapture);\n document.addEventListener(app.touchEvents.move, appTouchMovePassive, passiveListener);\n document.addEventListener(app.touchEvents.end, appTouchEndPassive, passiveListener);\n } else {\n document.addEventListener(\n app.touchEvents.start,\n (e) => {\n appTouchStartActive(e);\n appTouchStartPassive(e);\n },\n true,\n );\n document.addEventListener(\n app.touchEvents.move,\n (e) => {\n appTouchMoveActive(e);\n appTouchMovePassive(e);\n },\n false,\n );\n document.addEventListener(\n app.touchEvents.end,\n (e) => {\n appTouchEndActive(e);\n appTouchEndPassive(e);\n },\n false,\n );\n }\n\n if (support.touch) {\n app.on('click', handleClick);\n app.on('touchstart', handleTouchStart);\n app.on('touchmove', handleTouchMove);\n app.on('touchend', handleTouchEnd);\n document.addEventListener('touchcancel', handleTouchCancel, { passive: true });\n } else if (params.activeState) {\n app.on('touchstart', handleMouseDown);\n app.on('touchmove', handleMouseMove);\n app.on('touchend', handleMouseUp);\n document.addEventListener('pointercancel', handleMouseUp, { passive: true });\n }\n document.addEventListener('contextmenu', (e) => {\n if (\n params.disableContextMenu &&\n (device.ios ||\n device.android ||\n device.cordova ||\n (window.Capacitor && window.Capacitor.isNative))\n ) {\n e.preventDefault();\n }\n if (useRipple) {\n if (activableElement) removeActive();\n rippleTouchEnd();\n }\n });\n}\n\nexport default {\n name: 'touch',\n params: {\n touch: {\n // Clicks\n touchClicksDistanceThreshold: 5,\n // ContextMenu\n disableContextMenu: false,\n // Tap Hold\n tapHold: false,\n tapHoldDelay: 750,\n tapHoldPreventClicks: true,\n // Active State\n activeState: true,\n activeStateElements:\n 'a, button, label, span, .actions-button, .stepper-button, .stepper-button-plus, .stepper-button-minus, .card-expandable, .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.js';\nimport { extend } from './utils.js';\n\nconst History = {\n queue: [],\n clearQueue() {\n if (History.queue.length === 0) return;\n const currentQueue = History.queue.shift();\n currentQueue();\n },\n routerQueue: [],\n clearRouterQueue() {\n if (History.routerQueue.length === 0) return;\n const currentQueue = History.routerQueue.pop();\n const { router, stateUrl, action } = currentQueue;\n\n let animate = router.params.animate;\n if (router.params.browserHistoryAnimate === false) animate = false;\n\n if (action === 'back') {\n router.back({ animate, browserHistory: false });\n }\n if (action === 'load') {\n router.navigate(stateUrl, { animate, browserHistory: false });\n }\n },\n handle(e) {\n if (History.blockPopstate) return;\n const app = this;\n // const mainView = app.views.main;\n let state = e.state;\n History.previousState = History.state;\n History.state = state;\n\n History.allowChange = true;\n History.clearQueue();\n\n state = History.state;\n if (!state) state = {};\n\n app.views.forEach((view) => {\n const router = view.router;\n let viewState = state[view.id];\n if (!viewState && view.params.browserHistory) {\n viewState = {\n url: view.router.history[0],\n };\n }\n if (!viewState) return;\n const stateUrl = viewState.url || undefined;\n\n let animate = router.params.animate;\n if (router.params.browserHistoryAnimate === false) animate = false;\n\n if (stateUrl !== router.url) {\n if (router.history.indexOf(stateUrl) >= 0) {\n // Go Back\n if (router.allowPageChange) {\n router.back({ animate, browserHistory: false });\n } else {\n History.routerQueue.push({\n action: 'back',\n router,\n });\n }\n } else if (router.allowPageChange) {\n // Load page\n router.navigate(stateUrl, { animate, browserHistory: false });\n } else {\n History.routerQueue.unshift({\n action: 'load',\n stateUrl,\n router,\n });\n }\n }\n });\n },\n initViewState(viewId, viewState) {\n const window = getWindow();\n const newState = extend({}, History.state || {}, {\n [viewId]: viewState,\n });\n History.state = newState;\n window.history.replaceState(newState, '');\n },\n push(viewId, viewState, url) {\n const window = getWindow();\n const document = getDocument();\n /* eslint-disable no-param-reassign */\n if (url.substr(-3) === '#!/') {\n url = url.replace('#!/', '');\n if (url === '') {\n url = document.location.href;\n if (url.includes('#!/')) {\n url = document.location.href.split('#!/')[0];\n }\n }\n }\n /* eslint-enable no-param-reassign */\n if (!History.allowChange) {\n History.queue.push(() => {\n History.push(viewId, viewState, url);\n });\n return;\n }\n History.previousState = History.state;\n const newState = extend({}, History.previousState || {}, {\n [viewId]: viewState,\n });\n History.state = newState;\n window.history.pushState(newState, '', url);\n },\n replace(viewId, viewState, url) {\n const window = getWindow();\n if (url.substr(-3) === '#!/') {\n // eslint-disable-next-line\n url = url.replace('#!/', '');\n }\n if (!History.allowChange) {\n History.queue.push(() => {\n History.replace(viewId, viewState, url);\n });\n return;\n }\n History.previousState = History.state;\n const newState = extend({}, History.previousState || {}, {\n [viewId]: viewState,\n });\n History.state = newState;\n window.history.replaceState(newState, '', url);\n },\n go(index) {\n const window = getWindow();\n History.allowChange = false;\n window.history.go(index);\n },\n back() {\n const window = getWindow();\n History.allowChange = false;\n window.history.back();\n },\n allowChange: true,\n previousState: {},\n state: {},\n blockPopstate: true,\n init(app) {\n const window = getWindow();\n const document = getDocument();\n History.state = window.history.state;\n $(window).on('load', () => {\n setTimeout(() => {\n History.blockPopstate = false;\n }, 0);\n });\n\n if (document.readyState && document.readyState === 'complete') {\n History.blockPopstate = false;\n }\n\n $(window).on('popstate', History.handle.bind(app));\n },\n};\n\nexport default History;\n","import $ from '../../shared/dom7.js';\nimport History from '../../shared/history.js';\nimport { getSupport } from '../../shared/get-support.js';\nimport { getDevice } from '../../shared/get-device.js';\nimport { now } from '../../shared/utils.js';\n\nfunction SwipeBack(r) {\n const router = r;\n const { $el, $navbarsEl, app, params } = router;\n const support = getSupport();\n const device = getDevice();\n let isTouched = false;\n let isMoved = false;\n const touchesStart = {};\n let isScrolling;\n let $currentPageEl = [];\n let $previousPageEl = [];\n let viewContainerWidth;\n let touchesDiff;\n let allowViewTouchMove = true;\n let touchStartTime;\n let $currentNavbarEl = [];\n let $previousNavbarEl = [];\n let dynamicNavbar;\n let $pageShadowEl;\n let $pageOpacityEl;\n\n let animatableNavEls;\n\n const paramsSwipeBackAnimateShadow = params[`${app.theme}SwipeBackAnimateShadow`];\n const paramsSwipeBackAnimateOpacity = params[`${app.theme}SwipeBackAnimateOpacity`];\n const paramsSwipeBackActiveArea = params[`${app.theme}SwipeBackActiveArea`];\n const paramsSwipeBackThreshold = params[`${app.theme}SwipeBackThreshold`];\n\n const transformOrigin = app.rtl ? 'right center' : 'left center';\n const transformOriginTitleLarge = app.rtl\n ? 'calc(100% - var(--f7-navbar-large-title-padding-left) - var(--f7-safe-area-left)) center'\n : 'calc(var(--f7-navbar-large-title-padding-left) + var(--f7-safe-area-left)) center';\n\n function animatableNavElements() {\n const els = [];\n const inverter = app.rtl ? -1 : 1;\n const currentNavIsTransparent =\n $currentNavbarEl.hasClass('navbar-transparent') &&\n !$currentNavbarEl.hasClass('navbar-large') &&\n !$currentNavbarEl.hasClass('navbar-transparent-visible');\n const currentNavIsLarge = $currentNavbarEl.hasClass('navbar-large');\n const currentNavIsCollapsed = $currentNavbarEl.hasClass('navbar-large-collapsed');\n const currentNavIsLargeTransparent =\n $currentNavbarEl.hasClass('navbar-large-transparent') ||\n ($currentNavbarEl.hasClass('navbar-large') &&\n $currentNavbarEl.hasClass('navbar-transparent'));\n const previousNavIsTransparent =\n $previousNavbarEl.hasClass('navbar-transparent') &&\n !$previousNavbarEl.hasClass('navbar-large') &&\n !$previousNavbarEl.hasClass('navbar-transparent-visible');\n const previousNavIsLarge = $previousNavbarEl.hasClass('navbar-large');\n const previousNavIsCollapsed = $previousNavbarEl.hasClass('navbar-large-collapsed');\n const previousNavIsLargeTransparent =\n $previousNavbarEl.hasClass('navbar-large-transparent') ||\n ($previousNavbarEl.hasClass('navbar-large') &&\n $previousNavbarEl.hasClass('navbar-transparent'));\n const fromLarge = currentNavIsLarge && !currentNavIsCollapsed;\n const toLarge = previousNavIsLarge && !previousNavIsCollapsed;\n const $currentNavElements = $currentNavbarEl.find(\n '.left, .title, .right, .subnavbar, .fading, .title-large, .navbar-bg',\n );\n const $previousNavElements = $previousNavbarEl.find(\n '.left, .title, .right, .subnavbar, .fading, .title-large, .navbar-bg',\n );\n let activeNavBackIconText;\n let previousNavBackIconText;\n\n if (params.iosAnimateNavbarBackIcon) {\n if (\n $currentNavbarEl.hasClass('sliding') ||\n $currentNavbarEl.find('.navbar-inner.sliding').length\n ) {\n activeNavBackIconText = $currentNavbarEl.find('.left').find('.back .icon + span').eq(0);\n } else {\n activeNavBackIconText = $currentNavbarEl\n .find('.left.sliding')\n .find('.back .icon + span')\n .eq(0);\n }\n if (\n $previousNavbarEl.hasClass('sliding') ||\n $previousNavbarEl.find('.navbar-inner.sliding').length\n ) {\n previousNavBackIconText = $previousNavbarEl.find('.left').find('.back .icon + span').eq(0);\n } else {\n previousNavBackIconText = $previousNavbarEl\n .find('.left.sliding')\n .find('.back .icon + span')\n .eq(0);\n }\n if (activeNavBackIconText.length) {\n $previousNavElements.each((el) => {\n if (!$(el).hasClass('title')) return;\n el.f7NavbarLeftOffset += activeNavBackIconText.prev('.icon')[0].offsetWidth;\n });\n }\n }\n $currentNavElements.each((navEl) => {\n const $navEl = $(navEl);\n const isSubnavbar = $navEl.hasClass('subnavbar');\n const isLeft = $navEl.hasClass('left');\n const isTitle = $navEl.hasClass('title');\n const isBg = $navEl.hasClass('navbar-bg');\n if ((isTitle || isBg) && currentNavIsTransparent) return;\n if (!fromLarge && $navEl.hasClass('.title-large')) return;\n const el = {\n el: navEl,\n };\n if (fromLarge) {\n if (isTitle) return;\n if ($navEl.hasClass('title-large')) {\n if (els.indexOf(el) < 0) els.push(el);\n el.overflow = 'visible';\n $navEl.find('.title-large-text').each((subNavEl) => {\n els.push({\n el: subNavEl,\n transform: (progress) => `translateX(${progress * 100 * inverter}%)`,\n });\n });\n return;\n }\n }\n if (toLarge) {\n if (!fromLarge) {\n if ($navEl.hasClass('title-large')) {\n if (els.indexOf(el) < 0) els.push(el);\n el.opacity = 0;\n }\n }\n if (isLeft) {\n if (els.indexOf(el) < 0) els.push(el);\n el.opacity = (progress) => 1 - progress ** 0.33;\n $navEl.find('.back span').each((subNavEl) => {\n els.push({\n el: subNavEl,\n 'transform-origin': transformOrigin,\n transform: (progress) =>\n `translateX(calc(${progress} * (var(--f7-navbarTitleLargeOffset) - var(--f7-navbarLeftTextOffset)))) translateY(calc(${progress} * (var(--f7-navbar-large-title-height) - var(--f7-navbar-large-title-padding-vertical) / 2))) scale(${\n 1 + 1 * progress\n })`,\n });\n });\n return;\n }\n }\n if (isBg) {\n if (els.indexOf(el) < 0) els.push(el);\n if (!fromLarge && !toLarge) {\n if (currentNavIsCollapsed) {\n if (currentNavIsLargeTransparent) {\n el.className = 'ios-swipeback-navbar-bg-large';\n }\n el.transform = (progress) =>\n `translateX(${\n 100 * progress * inverter\n }%) translateY(calc(-1 * var(--f7-navbar-large-title-height)))`;\n } else {\n el.transform = (progress) => `translateX(${100 * progress * inverter}%)`;\n }\n }\n if (!fromLarge && toLarge) {\n el.className = 'ios-swipeback-navbar-bg-large';\n el.transform = (progress) =>\n `translateX(${100 * progress * inverter}%) translateY(calc(-1 * ${\n 1 - progress\n } * var(--f7-navbar-large-title-height)))`;\n }\n if (fromLarge && toLarge) {\n el.transform = (progress) => `translateX(${100 * progress * inverter}%)`;\n }\n if (fromLarge && !toLarge) {\n el.transform = (progress) =>\n `translateX(${\n 100 * progress * inverter\n }%) translateY(calc(-${progress} * var(--f7-navbar-large-title-height)))`;\n }\n return;\n }\n if ($navEl.hasClass('title-large')) return;\n const isSliding =\n $navEl.hasClass('sliding') || $navEl.parents('.navbar-inner.sliding').length;\n if (els.indexOf(el) < 0) els.push(el);\n if (!isSubnavbar || (isSubnavbar && !isSliding)) {\n el.opacity = (progress) => 1 - progress ** 0.33;\n }\n if (isSliding) {\n let transformTarget = el;\n if (isLeft && activeNavBackIconText.length && params.iosAnimateNavbarBackIcon) {\n const textEl = { el: activeNavBackIconText[0] };\n transformTarget = textEl;\n els.push(textEl);\n }\n transformTarget.transform = (progress) => {\n let activeNavTranslate = progress * transformTarget.el.f7NavbarRightOffset;\n if (device.pixelRatio === 1) activeNavTranslate = Math.round(activeNavTranslate);\n if (isSubnavbar && currentNavIsLarge) {\n return `translate3d(${activeNavTranslate}px, calc(-1 * var(--f7-navbar-large-collapse-progress) * var(--f7-navbar-large-title-height)), 0)`;\n }\n return `translate3d(${activeNavTranslate}px,0,0)`;\n };\n }\n });\n $previousNavElements.each((navEl) => {\n const $navEl = $(navEl);\n const isSubnavbar = $navEl.hasClass('subnavbar');\n const isLeft = $navEl.hasClass('left');\n const isTitle = $navEl.hasClass('title');\n const isBg = $navEl.hasClass('navbar-bg');\n if ((isTitle || isBg) && previousNavIsTransparent) return;\n const el = {\n el: navEl,\n };\n if (toLarge) {\n if (isTitle) return;\n if (els.indexOf(el) < 0) els.push(el);\n\n if ($navEl.hasClass('title-large')) {\n el.opacity = 1;\n el.overflow = 'visible';\n $navEl.find('.title-large-text').each((subNavEl) => {\n els.push({\n el: subNavEl,\n 'transform-origin': transformOriginTitleLarge,\n opacity: (progress) => progress ** 3,\n transform: (progress) =>\n `translateX(calc(${\n 1 - progress\n } * (var(--f7-navbarLeftTextOffset) - var(--f7-navbarTitleLargeOffset)))) translateY(calc(${\n progress - 1\n } * var(--f7-navbar-large-title-height) + ${\n 1 - progress\n } * var(--f7-navbar-large-title-padding-vertical))) scale(${0.5 + progress * 0.5})`,\n });\n });\n return;\n }\n }\n if (isBg) {\n if (els.indexOf(el) < 0) els.push(el);\n if (!fromLarge && !toLarge) {\n if (previousNavIsCollapsed) {\n if (previousNavIsLargeTransparent) {\n el.className = 'ios-swipeback-navbar-bg-large';\n }\n el.transform = (progress) =>\n `translateX(${\n (-100 + 100 * progress) * inverter\n }%) translateY(calc(-1 * var(--f7-navbar-large-title-height)))`;\n } else {\n el.transform = (progress) => `translateX(${(-100 + 100 * progress) * inverter}%)`;\n }\n }\n if (!fromLarge && toLarge) {\n el.transform = (progress) =>\n `translateX(${(-100 + 100 * progress) * inverter}%) translateY(calc(-1 * ${\n 1 - progress\n } * var(--f7-navbar-large-title-height)))`;\n }\n if (fromLarge && !toLarge) {\n el.className = 'ios-swipeback-navbar-bg-large';\n el.transform = (progress) =>\n `translateX(${\n (-100 + 100 * progress) * inverter\n }%) translateY(calc(-${progress} * var(--f7-navbar-large-title-height)))`;\n }\n if (fromLarge && toLarge) {\n el.transform = (progress) => `translateX(${(-100 + 100 * progress) * inverter}%)`;\n }\n\n return;\n }\n if ($navEl.hasClass('title-large')) return;\n const isSliding =\n $navEl.hasClass('sliding') || $previousNavbarEl.children('.navbar-inner.sliding').length;\n if (els.indexOf(el) < 0) els.push(el);\n if (!isSubnavbar || (isSubnavbar && !isSliding)) {\n el.opacity = (progress) => progress ** 3;\n }\n if (isSliding) {\n let transformTarget = el;\n if (isLeft && previousNavBackIconText.length && params.iosAnimateNavbarBackIcon) {\n const textEl = { el: previousNavBackIconText[0] };\n transformTarget = textEl;\n els.push(textEl);\n }\n transformTarget.transform = (progress) => {\n let previousNavTranslate = transformTarget.el.f7NavbarLeftOffset * (1 - progress);\n if (device.pixelRatio === 1) previousNavTranslate = Math.round(previousNavTranslate);\n if (isSubnavbar && previousNavIsLarge) {\n return `translate3d(${previousNavTranslate}px, calc(-1 * var(--f7-navbar-large-collapse-progress) * var(--f7-navbar-large-title-height)), 0)`;\n }\n return `translate3d(${previousNavTranslate}px,0,0)`;\n };\n }\n });\n return els;\n }\n\n function setAnimatableNavElements({ progress, reset, transition, reflow } = {}) {\n const styles = ['overflow', 'transform', 'transform-origin', 'opacity'];\n if (transition === true || transition === false) {\n for (let i = 0; i < animatableNavEls.length; i += 1) {\n const el = animatableNavEls[i];\n if (el && el.el) {\n if (transition === true) el.el.classList.add('navbar-page-transitioning');\n if (transition === false) el.el.classList.remove('navbar-page-transitioning');\n }\n }\n }\n if (reflow && animatableNavEls.length && animatableNavEls[0] && animatableNavEls[0].el) {\n // eslint-disable-next-line\n animatableNavEls[0].el._clientLeft = animatableNavEls[0].el.clientLeft;\n }\n for (let i = 0; i < animatableNavEls.length; i += 1) {\n const el = animatableNavEls[i];\n if (el && el.el) {\n if (el.className && !el.classNameSet && !reset) {\n el.el.classList.add(el.className);\n el.classNameSet = true;\n }\n if (el.className && reset) {\n el.el.classList.remove(el.className);\n }\n for (let j = 0; j < styles.length; j += 1) {\n const styleProp = styles[j];\n if (el[styleProp]) {\n if (reset) {\n el.el.style[styleProp] = '';\n } else if (typeof el[styleProp] === 'function') {\n el.el.style[styleProp] = el[styleProp](progress);\n } else {\n el.el.style[styleProp] = el[styleProp];\n }\n }\n }\n }\n }\n }\n\n function handleTouchStart(e) {\n 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 = $('<div class=\"page-shadow-effect\"></div>');\n $currentPageEl.append($pageShadowEl);\n }\n }\n if (paramsSwipeBackAnimateOpacity) {\n $pageOpacityEl = $previousPageEl.find('.page-opacity-effect');\n if ($pageOpacityEl.length === 0) {\n $pageOpacityEl = $('<div class=\"page-opacity-effect\"></div>');\n $previousPageEl.append($pageOpacityEl);\n }\n }\n\n if (dynamicNavbar) {\n $currentNavbarEl = $navbarsEl.find('.navbar-current: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.js';\n\nexport default function redirect(direction, route, options) {\n const router = this;\n const r = route.route.redirect;\n const method = direction === 'forward' ? 'navigate' : 'back';\n if (options.initial && router.params.browserHistory) {\n options.replaceState = true; // eslint-disable-line\n options.history = true; // eslint-disable-line\n }\n function redirectResolve(redirectUrl, redirectOptions = {}) {\n router.allowPageChange = true;\n router[method](redirectUrl, extend({}, options, redirectOptions));\n }\n function redirectReject() {\n router.allowPageChange = true;\n }\n if (typeof r === 'function') {\n router.allowPageChange = false;\n const redirectUrl = r.call(router, {\n router,\n to: route,\n resolve: redirectResolve,\n reject: redirectReject,\n direction,\n app: router.app,\n });\n if (redirectUrl && typeof redirectUrl === 'string') {\n router.allowPageChange = true;\n return router[method](redirectUrl, options);\n }\n return router;\n }\n return router[method](r, options);\n}\n","function processQueue(router, routerQueue, routeQueue, to, from, resolve, reject, direction) {\n const queue = [];\n\n if (Array.isArray(routeQueue)) {\n queue.push(...routeQueue);\n } else if (routeQueue && typeof routeQueue === 'function') {\n queue.push(routeQueue);\n }\n if (routerQueue) {\n if (Array.isArray(routerQueue)) {\n queue.push(...routerQueue);\n } else {\n queue.push(routerQueue);\n }\n }\n\n function next() {\n if (queue.length === 0) {\n resolve();\n return;\n }\n const queueItem = queue.shift();\n\n queueItem.call(router, {\n router,\n to,\n from,\n resolve() {\n next();\n },\n reject() {\n reject();\n },\n direction,\n app: router.app,\n });\n }\n next();\n}\n\nexport default function processRouteQueue(to, from, resolve, reject, direction) {\n const router = this;\n function enterNextRoute() {\n if (to && to.route && (router.params.routesBeforeEnter || to.route.beforeEnter)) {\n router.allowPageChange = false;\n processQueue(\n router,\n router.params.routesBeforeEnter,\n to.route.beforeEnter,\n to,\n from,\n () => {\n router.allowPageChange = true;\n resolve();\n },\n () => {\n reject();\n },\n direction,\n );\n } else {\n resolve();\n }\n }\n function leaveCurrentRoute() {\n if (from && from.route && (router.params.routesBeforeLeave || from.route.beforeLeave)) {\n router.allowPageChange = false;\n processQueue(\n router,\n router.params.routesBeforeLeave,\n from.route.beforeLeave,\n to,\n from,\n () => {\n router.allowPageChange = true;\n enterNextRoute();\n },\n () => {\n reject();\n },\n direction,\n );\n } else {\n enterNextRoute();\n }\n }\n leaveCurrentRoute();\n}\n","export default function appRouterCheck(router, method) {\n if (!router.view) {\n throw new Error(\n `Framework7: it is not allowed to use router methods on global app router. Use router methods only on related View, e.g. app.views.main.router.${method}(...)`,\n );\n }\n}\n","export default function asyncComponent(router, component, resolve, reject) {\n function resolvePromise(componentPromise) {\n componentPromise\n .then((c) => {\n // eslint-disable-next-line\n resolve({ component: c.default || c._default || c });\n })\n .catch((err) => {\n reject();\n throw new Error(err);\n });\n }\n if (component instanceof Promise) {\n resolvePromise(component);\n return;\n }\n const asyncComponentResult = component.call(router);\n if (asyncComponentResult instanceof Promise) {\n resolvePromise(asyncComponentResult);\n } else {\n resolve({ component: asyncComponentResult });\n }\n}\n","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { extend, parseUrlQuery } from '../../shared/utils.js';\nimport History from '../../shared/history.js';\nimport redirect from './redirect.js';\nimport processRouteQueue from './process-route-queue.js';\nimport appRouterCheck from './app-router-check.js';\nimport asyncComponent from './async-component.js';\n\nfunction refreshPage() {\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 navigate(navigateParams, navigateOptions = {}) {\n const router = this;\n\n if (router.swipeBackActive) return router;\n let url;\n let createRoute;\n let name;\n let path;\n let query;\n let params;\n let route;\n if (typeof navigateParams === 'string') {\n url = navigateParams;\n } else {\n url = navigateParams.url;\n createRoute = navigateParams.route;\n name = navigateParams.name;\n path = navigateParams.path;\n query = navigateParams.query;\n params = navigateParams.params;\n }\n if (name || path) {\n url = router.generateUrl({ path, name, params, query });\n if (url) {\n return router.navigate(url, navigateOptions);\n }\n return router;\n }\n const app = router.app;\n appRouterCheck(router, 'navigate');\n if (url === '#' || url === '') {\n return router;\n }\n\n let navigateUrl = url.replace('./', '');\n if (navigateUrl[0] !== '/' && navigateUrl.indexOf('#') !== 0) {\n const currentPath = router.currentRoute.parentPath || router.currentRoute.path;\n navigateUrl = ((currentPath ? `${currentPath}/` : '/') + navigateUrl)\n .replace('///', '/')\n .replace('//', '/');\n }\n if (createRoute) {\n route = extend(router.parseRouteUrl(navigateUrl), {\n route: extend({}, createRoute),\n });\n } else {\n route = router.findMatchingRoute(navigateUrl);\n }\n\n if (!route) {\n return router;\n }\n if (route.route && route.route.viewName) {\n const anotherViewName = route.route.viewName;\n const anotherView = app.views[anotherViewName];\n if (!anotherView) {\n throw new Error(\n `Framework7: There is no View with \"${anotherViewName}\" name that was specified in this route`,\n );\n }\n if (anotherView !== router.view) {\n return anotherView.router.navigate(navigateParams, navigateOptions);\n }\n }\n\n if (route.route.redirect) {\n return redirect.call(router, 'forward', route, navigateOptions);\n }\n\n const options = {};\n if (route.route.options) {\n extend(options, route.route.options, navigateOptions);\n } else {\n extend(options, navigateOptions);\n }\n\n if (\n options.openIn &&\n (!router.params.ignoreOpenIn || (router.params.ignoreOpenIn && router.history.length > 0))\n ) {\n return router.openIn(router, navigateUrl, options);\n }\n\n options.route = route;\n\n function resolve() {\n let routerLoaded = false;\n 'popup popover sheet loginScreen actions customModal panel'\n .split(' ')\n .forEach((modalLoadProp) => {\n if (route.route[modalLoadProp] && !routerLoaded) {\n routerLoaded = true;\n router.modalLoad(modalLoadProp, route, options, 'forward');\n }\n });\n if (route.route.keepAlive && route.route.keepAliveData) {\n load(router, { el: route.route.keepAliveData.pageEl }, options, false);\n routerLoaded = true;\n }\n 'url content component pageName el componentUrl'.split(' ').forEach((pageLoadProp) => {\n if (route.route[pageLoadProp] && !routerLoaded) {\n routerLoaded = true;\n load(router, { [pageLoadProp]: route.route[pageLoadProp] }, options, false);\n }\n });\n if (routerLoaded) return;\n // Async\n function asyncResolve(resolveParams, resolveOptions) {\n router.allowPageChange = false;\n let resolvedAsModal = false;\n\n 'popup popover sheet loginScreen actions customModal panel'\n .split(' ')\n .forEach((modalLoadProp) => {\n if (resolveParams[modalLoadProp]) {\n resolvedAsModal = true;\n const modalRoute = extend({}, route, { route: resolveParams });\n router.allowPageChange = true;\n router.modalLoad(modalLoadProp, modalRoute, extend(options, resolveOptions), 'forward');\n }\n });\n if (resolvedAsModal) return;\n load(router, resolveParams, extend(options, resolveOptions), true);\n }\n function asyncReject() {\n router.allowPageChange = true;\n }\n if (route.route.async) {\n router.allowPageChange = false;\n route.route.async.call(router, {\n router,\n to: options.route,\n from: router.currentRoute,\n resolve: asyncResolve,\n reject: asyncReject,\n direction: 'forward',\n app,\n });\n }\n if (route.route.asyncComponent) {\n asyncComponent(router, route.route.asyncComponent, asyncResolve, asyncReject);\n }\n }\n function reject() {\n router.allowPageChange = true;\n }\n\n if (router.params.masterDetailBreakpoint > 0 && route.route.masterRoute) {\n // load detail route\n let preloadMaster = true;\n let masterLoaded = false;\n if (router.currentRoute && router.currentRoute.route) {\n if (\n (router.currentRoute.route.master === true ||\n (typeof router.currentRoute.route.master === 'function' &&\n router.currentRoute.route.master(app, router))) &&\n (router.currentRoute.route === route.route.masterRoute ||\n router.currentRoute.route.path === route.route.masterRoute.path)\n ) {\n preloadMaster = false;\n }\n if (\n router.currentRoute.route.masterRoute &&\n (router.currentRoute.route.masterRoute === route.route.masterRoute ||\n router.currentRoute.route.masterRoute.path === route.route.masterRoute.path)\n ) {\n preloadMaster = false;\n masterLoaded = true;\n }\n }\n if (preloadMaster || (masterLoaded && navigateOptions.reloadAll)) {\n router.navigate(\n { path: route.route.masterRoute.path, params: route.params || {} },\n {\n animate: false,\n reloadAll: navigateOptions.reloadAll,\n reloadCurrent: navigateOptions.reloadCurrent,\n reloadPrevious: navigateOptions.reloadPrevious,\n browserHistory: !navigateOptions.initial,\n history: !navigateOptions.initial,\n once: {\n pageAfterIn() {\n router.navigate(\n navigateParams,\n extend({}, navigateOptions, {\n animate: false,\n reloadAll: false,\n reloadCurrent: false,\n reloadPrevious: false,\n history: !navigateOptions.initial,\n browserHistory: !navigateOptions.initial,\n }),\n );\n },\n },\n },\n );\n return router;\n }\n }\n\n processRouteQueue.call(\n router,\n route,\n router.currentRoute,\n () => {\n if (route.route.modules) {\n app\n .loadModules(\n Array.isArray(route.route.modules) ? route.route.modules : [route.route.modules],\n )\n .then(() => {\n resolve();\n })\n .catch(() => {\n reject();\n });\n } else {\n resolve();\n }\n },\n () => {\n reject();\n },\n 'forward',\n );\n\n // Return Router\n return router;\n}\nexport { refreshPage, navigate };\n","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { extend, parseUrlQuery } from '../../shared/utils.js';\nimport { getDevice } from '../../shared/get-device.js';\nimport History from '../../shared/history.js';\nimport redirect from './redirect.js';\nimport processRouteQueue from './process-route-queue.js';\nimport appRouterCheck from './app-router-check.js';\nimport asyncComponent from './async-component.js';\n\nfunction backward(router, el, backwardOptions) {\n const device = getDevice();\n const document = getDocument();\n const $el = $(el);\n const app = router.app;\n const view = router.view;\n\n const options = extend(\n false,\n {\n animate: router.params.animate,\n browserHistory: true,\n replaceState: false,\n },\n backwardOptions,\n );\n\n const masterDetailEnabled = router.params.masterDetailBreakpoint > 0;\n const isMaster =\n masterDetailEnabled &&\n options.route &&\n options.route.route &&\n (options.route.route.master === true ||\n (typeof options.route.route.master === 'function' &&\n options.route.route.master(app, router)));\n let masterPageEl;\n let masterPageRemoved;\n\n const dynamicNavbar = router.dynamicNavbar;\n\n const $newPage = $el;\n const $oldPage = router.$el.children('.page-current');\n const initialPreload = $oldPage.length === 0 && options.preload;\n const currentIsMaster = masterDetailEnabled && $oldPage.hasClass('page-master');\n\n if ($newPage.length) {\n // Remove theme elements\n router.removeThemeElements($newPage);\n }\n\n let $navbarsEl;\n let $newNavbarEl;\n let $oldNavbarEl;\n\n if (dynamicNavbar) {\n $newNavbarEl = $newPage.children('.navbar');\n $navbarsEl = router.$navbarsEl;\n if ($newNavbarEl.length === 0 && $newPage[0] && $newPage[0].f7Page) {\n // Try from pageData\n $newNavbarEl = $newPage[0].f7Page.$navbarEl;\n }\n $oldNavbarEl = $navbarsEl.find('.navbar-current');\n }\n\n router.allowPageChange = false;\n if ($newPage.length === 0 || ($oldPage.length === 0 && !options.preload)) {\n router.allowPageChange = true;\n return router;\n }\n\n // Remove theme elements\n router.removeThemeElements($newPage);\n\n // Save Keep Alive Cache\n if (\n options.route &&\n options.route.route &&\n options.route.route.keepAlive &&\n !options.route.route.keepAliveData\n ) {\n options.route.route.keepAliveData = {\n pageEl: $el[0],\n };\n }\n\n // Pages In View\n let isDetail;\n let isDetailRoot;\n if (masterDetailEnabled) {\n const $pagesInView = router.$el\n .children('.page: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 if (navigateOptions.preload && $previousPage.hasClass('stacked')) {\n loadBack(\n router,\n { el: $previousPage },\n extend(navigateOptions, {\n route: previousPageRoute,\n }),\n );\n return router;\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.js';\nimport Framework7Class from '../../shared/class.js';\nimport {\n extend,\n nextFrame,\n parseUrlQuery,\n serializeObject,\n now,\n eventNameToColonCase,\n} from '../../shared/utils.js';\nimport History from '../../shared/history.js';\nimport SwipeBack from './swipe-back.js';\n\nimport { refreshPage, navigate } from './navigate.js';\nimport { tabLoad, tabRemove } from './tab.js';\nimport { modalLoad, modalRemove } from './modal.js';\nimport { back } from './back.js';\nimport { clearPreviousHistory } from './clear-previous-history.js';\nimport appRouterCheck from './app-router-check.js';\n\nclass Router extends Framework7Class {\n constructor(app, view) {\n super({}, [typeof view === 'undefined' ? app : view]);\n const router = this;\n\n // Is App Router\n router.isAppRouter = typeof view === 'undefined';\n\n if (router.isAppRouter) {\n // App Router\n extend(false, router, {\n app,\n params: app.params.view,\n routes: app.routes || [],\n cache: app.cache,\n });\n } else {\n // View Router\n extend(false, router, {\n app,\n view,\n viewId: view.id,\n id: view.params.routerId,\n params: view.params,\n routes: view.routes,\n history: view.history,\n 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 if (Object.keys(query).length) url += `?${serializeObject(query)}`;\n }\n\n return url;\n }\n\n findTabRouteUrl(tabEl) {\n const router = this;\n const $tabEl = $(tabEl);\n const parentPath = router.currentRoute.route.parentPath;\n const tabId = $tabEl.attr('id');\n const flattenedRoutes = router.flattenRoutes(router.routes);\n let foundTabRouteUrl;\n flattenedRoutes.forEach((route) => {\n if (route.parentPath === parentPath && route.tab && route.tab.id === tabId) {\n if (router.currentRoute.params && Object.keys(router.currentRoute.params).length > 0) {\n foundTabRouteUrl = router.constructRouteUrl(route, {\n params: router.currentRoute.params,\n query: router.currentRoute.query,\n });\n } else {\n foundTabRouteUrl = route.path;\n }\n }\n });\n return foundTabRouteUrl;\n }\n\n findRouteByKey(key, value) {\n const router = this;\n const routes = router.routes;\n const flattenedRoutes = router.flattenRoutes(routes);\n let matchingRoute;\n\n flattenedRoutes.forEach((route) => {\n if (matchingRoute) return;\n if (route[key] === value) {\n matchingRoute = route;\n }\n });\n return matchingRoute;\n }\n\n findMatchingRoute(url) {\n if (!url) return undefined;\n const router = this;\n const routes = router.routes;\n const flattenedRoutes = router.flattenRoutes(routes);\n const { path, query, hash, params } = router.parseRouteUrl(url);\n let matchingRoute;\n flattenedRoutes.forEach((route) => {\n if (matchingRoute) return;\n const keys = [];\n\n const pathsToMatch = [route.path];\n if (route.alias) {\n if (typeof route.alias === 'string') pathsToMatch.push(route.alias);\n else if (Array.isArray(route.alias)) {\n route.alias.forEach((aliasPath) => {\n pathsToMatch.push(aliasPath);\n });\n }\n }\n\n let matched;\n pathsToMatch.forEach((pathToMatch) => {\n if (matched) return;\n matched = pathToRegexp(pathToMatch, keys).exec(path);\n });\n\n if (matched) {\n keys.forEach((keyObj, index) => {\n if (typeof keyObj.name === 'number') return;\n const paramValue = matched[index + 1];\n if (typeof paramValue === 'undefined' || paramValue === null) {\n params[keyObj.name] = paramValue;\n } else {\n params[keyObj.name] = decodeURIComponent(paramValue);\n }\n });\n\n let parentPath;\n if (route.parentPath) {\n parentPath = path\n .split('/')\n .slice(0, route.parentPath.split('/').length - 1)\n .join('/');\n }\n\n matchingRoute = {\n query,\n hash,\n params,\n url,\n path,\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.js';\nimport { extend } from '../../shared/utils.js';\nimport History from '../../shared/history.js';\nimport asyncComponent from './async-component.js';\n\nfunction tabLoad(tabRoute, loadOptions = {}) {\n const router = this;\n const options = extend(\n {\n animate: router.params.animate,\n browserHistory: true,\n history: true,\n parentPageEl: null,\n preload: false,\n on: {},\n },\n loadOptions,\n );\n\n let currentRoute;\n let previousRoute;\n if (options.route) {\n // Set Route\n if (!options.preload && options.route !== router.currentRoute) {\n previousRoute = router.previousRoute;\n router.currentRoute = options.route;\n }\n if (options.preload) {\n currentRoute = options.route;\n previousRoute = router.currentRoute;\n } else {\n currentRoute = router.currentRoute;\n if (!previousRoute) previousRoute = router.previousRoute;\n }\n\n // Update Browser History\n if (router.params.browserHistory && options.browserHistory && !options.reloadPrevious) {\n History[router.params.browserHistoryTabs](\n router.view.id,\n {\n url: options.route.url,\n },\n (router.params.browserHistoryRoot || '') +\n router.params.browserHistorySeparator +\n options.route.url,\n );\n }\n\n // Update Router History\n if (options.history) {\n router.history[Math.max(router.history.length - 1, 0)] = options.route.url;\n router.saveHistory();\n }\n }\n\n // Show Tab\n const $parentPageEl = $(options.parentPageEl || router.currentPageEl);\n let tabEl;\n if ($parentPageEl.length && $parentPageEl.find(`#${tabRoute.id}`).length) {\n tabEl = $parentPageEl.find(`#${tabRoute.id}`).eq(0);\n } else if (router.view.selector) {\n tabEl = `${router.view.selector} #${tabRoute.id}`;\n } else {\n tabEl = `#${tabRoute.id}`;\n }\n const tabShowResult = router.app.tab.show({\n tabEl,\n animate: options.animate,\n tabRoute: options.route,\n });\n\n const { $newTabEl, $oldTabEl, animated, onTabsChanged } = tabShowResult;\n\n if ($newTabEl && $newTabEl.parents('.page').length > 0 && options.route) {\n const tabParentPageData = $newTabEl.parents('.page')[0].f7Page;\n if (tabParentPageData && options.route) {\n tabParentPageData.route = options.route;\n }\n }\n\n // Tab Content Loaded\n function onTabLoaded(contentEl) {\n // Remove theme elements\n router.removeThemeElements($newTabEl);\n\n let tabEventTarget = $newTabEl;\n if (typeof contentEl !== 'string') tabEventTarget = $(contentEl);\n\n tabEventTarget.trigger('tab:init tab:mounted', tabRoute);\n router.emit('tabInit tabMounted', $newTabEl[0], tabRoute);\n\n if ($oldTabEl && $oldTabEl.length) {\n if (animated) {\n onTabsChanged(() => {\n router.emit('routeChanged', router.currentRoute, router.previousRoute, router);\n if (router.params.unloadTabContent) {\n router.tabRemove($oldTabEl, $newTabEl, tabRoute);\n }\n });\n } else {\n router.emit('routeChanged', router.currentRoute, router.previousRoute, router);\n if (router.params.unloadTabContent) {\n router.tabRemove($oldTabEl, $newTabEl, tabRoute);\n }\n }\n }\n }\n\n if ($newTabEl[0].f7RouterTabLoaded) {\n if (!$oldTabEl || !$oldTabEl.length) return router;\n if (animated) {\n onTabsChanged(() => {\n router.emit('routeChanged', router.currentRoute, router.previousRoute, router);\n });\n } else {\n router.emit('routeChanged', router.currentRoute, router.previousRoute, router);\n }\n return router;\n }\n\n // Load Tab Content\n function loadTab(loadTabParams, loadTabOptions) {\n // Load Tab Props\n const { url, content, el, component, componentUrl } = loadTabParams;\n // Component/Template Callbacks\n function resolve(contentEl) {\n router.allowPageChange = true;\n if (!contentEl) return;\n if (typeof contentEl === 'string') {\n $newTabEl.html(contentEl);\n } else {\n $newTabEl.html('');\n if (contentEl.f7Component) {\n contentEl.f7Component.mount((componentEl) => {\n $newTabEl.append(componentEl);\n });\n } else {\n $newTabEl.append(contentEl);\n }\n }\n $newTabEl[0].f7RouterTabLoaded = true;\n onTabLoaded(contentEl);\n }\n function reject() {\n router.allowPageChange = true;\n return router;\n }\n\n if (content) {\n resolve(content);\n } else if (el) {\n resolve(el);\n } else if (component || componentUrl) {\n // Load from component (F7/Vue/React/...)\n try {\n router.tabComponentLoader({\n tabEl: $newTabEl[0],\n component,\n componentUrl,\n options: loadTabOptions,\n resolve,\n reject,\n });\n } catch (err) {\n router.allowPageChange = true;\n throw err;\n }\n } else if (url) {\n // Load using XHR\n if (router.xhrAbortController) {\n router.xhrAbortController.abort();\n router.xhrAbortController = false;\n }\n router\n .xhrRequest(url, loadTabOptions)\n .then((tabContent) => {\n resolve(tabContent);\n })\n .catch(() => {\n router.allowPageChange = true;\n });\n }\n }\n\n let hasContentLoadProp;\n 'url content component el componentUrl'.split(' ').forEach((tabLoadProp) => {\n if (tabRoute[tabLoadProp]) {\n hasContentLoadProp = true;\n loadTab({ [tabLoadProp]: tabRoute[tabLoadProp] }, options);\n }\n });\n\n // Async\n function asyncResolve(resolveParams, resolveOptions) {\n loadTab(resolveParams, extend(options, resolveOptions));\n }\n function asyncReject() {\n router.allowPageChange = true;\n }\n if (tabRoute.async) {\n tabRoute.async.call(router, {\n router,\n to: currentRoute,\n from: previousRoute,\n resolve: asyncResolve,\n reject: asyncReject,\n app: router.app,\n });\n } else if (tabRoute.asyncComponent) {\n asyncComponent(router, tabRoute.asyncComponent, asyncResolve, asyncReject);\n } else if (!hasContentLoadProp) {\n router.allowPageChange = true;\n }\n\n return router;\n}\nfunction tabRemove($oldTabEl, $newTabEl, tabRoute) {\n const router = this;\n\n let hasTabComponentChild;\n if ($oldTabEl[0]) {\n $oldTabEl[0].f7RouterTabLoaded = false;\n delete $oldTabEl[0].f7RouterTabLoaded;\n }\n $oldTabEl.children().each((tabChild) => {\n if (tabChild.f7Component) {\n hasTabComponentChild = true;\n $(tabChild).trigger('tab:beforeremove', tabRoute);\n tabChild.f7Component.destroy();\n }\n });\n if (!hasTabComponentChild) {\n $oldTabEl.trigger('tab:beforeremove', tabRoute);\n }\n router.emit('tabBeforeRemove', $oldTabEl[0], $newTabEl[0], tabRoute);\n router.removeTabContent($oldTabEl[0], tabRoute);\n}\n\nexport { tabLoad, tabRemove };\n","import { extend, nextTick } from '../../shared/utils.js';\nimport History from '../../shared/history.js';\nimport asyncComponent from './async-component.js';\n\nfunction modalLoad(modalType, route, loadOptions = {}, direction) {\n const router = this;\n const app = router.app;\n const isPanel = modalType === 'panel';\n const modalOrPanel = isPanel ? 'panel' : 'modal';\n\n const options = extend(\n {\n animate: router.params.animate,\n browserHistory: true,\n history: true,\n on: {},\n once: {},\n },\n loadOptions,\n );\n\n const modalParams = extend({}, route.route[modalType]);\n const modalRoute = route.route;\n\n const routeCallback = (modal, name) => {\n const { on, once } = options;\n let callback;\n if (name === 'open') {\n callback = on.modalOpen || once.modalOpen || on.panelOpen || once.panelOpen;\n }\n if (name === 'close') {\n callback = on.modalClose || once.modalClose || on.panelClose || once.panelClose;\n }\n if (name === 'closed') {\n callback = on.modalClosed || once.modalClosed || on.panelClosed || once.panelClosed;\n }\n if (callback) callback(modal);\n };\n\n function onModalLoaded() {\n // Create Modal\n const modal = app[modalType].create(modalParams);\n modalRoute.modalInstance = modal;\n\n const hasEl = modal.el;\n\n function closeOnSwipeBack() {\n modal.close();\n }\n modal.on(`${modalOrPanel}Open`, () => {\n if (!hasEl) {\n // Remove theme elements\n router.removeThemeElements(modal.el);\n\n // Emit events\n modal.$el.trigger(\n `${modalType.toLowerCase()}:init ${modalType.toLowerCase()}:mounted`,\n route,\n modal,\n );\n router.emit(\n `${!isPanel ? 'modalInit' : ''} ${modalType}Init ${modalType}Mounted`,\n modal.el,\n route,\n modal,\n );\n }\n router.once('swipeBackMove', closeOnSwipeBack);\n routeCallback(modal, 'open');\n });\n modal.on(`${modalOrPanel}Close`, () => {\n router.off('swipeBackMove', closeOnSwipeBack);\n if (!modal.closeByRouter) {\n router.back();\n }\n routeCallback(modal, 'close');\n });\n\n modal.on(`${modalOrPanel}Closed`, () => {\n modal.$el.trigger(`${modalType.toLowerCase()}:beforeremove`, route, modal);\n modal.emit(\n `${!isPanel ? 'modalBeforeRemove ' : ''}${modalType}BeforeRemove`,\n modal.el,\n route,\n modal,\n );\n const modalComponent = modal.el.f7Component;\n routeCallback(modal, 'closed');\n if (modalComponent) {\n modalComponent.destroy();\n }\n nextTick(() => {\n if (modalComponent || modalParams.component || modalParams.asyncComponent) {\n router.removeModal(modal.el);\n }\n modal.destroy();\n delete modal.route;\n delete modalRoute.modalInstance;\n });\n });\n\n if (options.route) {\n // Update Browser History\n if (router.params.browserHistory && options.browserHistory) {\n History.push(\n router.view.id,\n {\n url: options.route.url,\n modal: modalType,\n },\n (router.params.browserHistoryRoot || '') +\n router.params.browserHistorySeparator +\n options.route.url,\n );\n }\n\n // Set Route\n if (options.route !== router.currentRoute) {\n modal.route = extend(options.route, { modal });\n router.currentRoute = modal.route;\n }\n\n // Update Router History\n if (options.history && !options.reloadCurrent) {\n router.history.push(options.route.url);\n router.saveHistory();\n }\n }\n\n if (hasEl) {\n // Remove theme elements\n router.removeThemeElements(modal.el);\n\n // Emit events\n modal.$el.trigger(\n `${modalType.toLowerCase()}:init ${modalType.toLowerCase()}:mounted`,\n route,\n modal,\n );\n router.emit(\n `${modalOrPanel}Init ${modalType}Init ${modalType}Mounted`,\n modal.el,\n route,\n modal,\n );\n }\n\n // Open\n modal.open(options.animate === false || options.animate === true ? options.animate : undefined);\n }\n\n // Load Modal Content\n function loadModal(loadModalParams, loadModalOptions) {\n // Load Modal Props\n const { url, content, component, componentUrl } = loadModalParams;\n\n // Component/Template Callbacks\n function resolve(contentEl) {\n if (contentEl) {\n if (typeof contentEl === 'string') {\n modalParams.content = contentEl;\n } else if (contentEl.f7Component) {\n contentEl.f7Component.mount((componentEl) => {\n modalParams.el = componentEl;\n app.$el.append(componentEl);\n });\n } else {\n modalParams.el = contentEl;\n }\n onModalLoaded();\n }\n }\n function reject() {\n router.allowPageChange = true;\n return router;\n }\n\n if (content) {\n resolve(content);\n } else if (component || componentUrl) {\n // Load from component (F7/Vue/React/...)\n try {\n router.modalComponentLoader({\n rootEl: app.el,\n component,\n componentUrl,\n options: loadModalOptions,\n resolve,\n reject,\n });\n } catch (err) {\n router.allowPageChange = true;\n throw err;\n }\n } else if (url) {\n // Load using XHR\n if (router.xhrAbortController) {\n router.xhrAbortController.abort();\n router.xhrAbortController = false;\n }\n router\n .xhrRequest(url, loadModalOptions)\n .then((modalContent) => {\n modalParams.content = modalContent;\n onModalLoaded();\n })\n .catch(() => {\n router.allowPageChange = true;\n });\n } else {\n onModalLoaded();\n }\n }\n\n let foundLoadProp;\n 'url content component el componentUrl template'.split(' ').forEach((modalLoadProp) => {\n if (modalParams[modalLoadProp] && !foundLoadProp) {\n foundLoadProp = true;\n loadModal({ [modalLoadProp]: modalParams[modalLoadProp] }, options);\n }\n });\n if (!foundLoadProp && modalType === 'actions') {\n onModalLoaded();\n }\n\n // Async\n function asyncResolve(resolveParams, resolveOptions) {\n loadModal(resolveParams, extend(options, resolveOptions));\n }\n function asyncReject() {\n router.allowPageChange = true;\n }\n if (modalParams.async) {\n modalParams.async.call(router, {\n router,\n to: options.route,\n from: router.currentRoute,\n resolve: asyncResolve,\n reject: asyncReject,\n direction,\n app,\n });\n }\n if (modalParams.asyncComponent) {\n asyncComponent(router, modalParams.asyncComponent, asyncResolve, asyncReject);\n }\n return router;\n}\nfunction modalRemove(modal) {\n extend(modal, { closeByRouter: true });\n modal.close();\n}\n\nexport { modalLoad, modalRemove };\n","import $ from '../../shared/dom7.js';\nimport appRouterCheck from './app-router-check.js';\n\nfunction clearPreviousPages(router) {\n appRouterCheck(router, 'clearPreviousPages');\n const app = router.app;\n const dynamicNavbar = router.dynamicNavbar;\n\n const $pagesToRemove = router.$el.children('.page').filter((pageInView) => {\n if (router.currentRoute && (router.currentRoute.modal || router.currentRoute.panel))\n return true;\n return pageInView !== router.currentPageEl;\n });\n\n $pagesToRemove.each((pageEl) => {\n const $oldPageEl = $(pageEl);\n const $oldNavbarEl = $(app.navbar.getElByPage($oldPageEl));\n 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.js';\n\nexport default {\n name: 'router',\n static: {\n Router,\n },\n instance: {\n cache: {\n xhr: [],\n templates: [],\n components: [],\n },\n },\n create() {\n const instance = this;\n if (instance.app) {\n // View Router\n if (instance.params.router) {\n instance.router = new Router(instance.app, instance);\n }\n } else {\n // App Router\n instance.router = new Router(instance);\n }\n },\n};\n","import $ from '../../shared/dom7.js';\nimport { extend } from '../../shared/utils.js';\nimport { getSupport } from '../../shared/get-support.js';\n\nfunction resizableView(view) {\n const app = view.app;\n const support = getSupport();\n if (view.resizableInitialized) return;\n extend(view, {\n resizable: true,\n resizableWidth: null,\n resizableInitialized: true,\n });\n const $htmlEl = $('html');\n const { $el } = view;\n if (!$el) return;\n\n let $resizeHandlerEl;\n\n let isTouched;\n let isMoved;\n const touchesStart = {};\n let touchesDiff;\n let width;\n\n let minWidth;\n let maxWidth;\n\n function transformCSSWidth(v) {\n if (!v) return null;\n if (v.indexOf('%') >= 0 || v.indexOf('vw') >= 0) {\n return (parseInt(v, 10) / 100) * app.width;\n }\n const newV = parseInt(v, 10);\n if (Number.isNaN(newV)) return null;\n return newV;\n }\n\n function isResizable() {\n return view.resizable && $el.hasClass('view-resizable') && $el.hasClass('view-master-detail');\n }\n\n function handleTouchStart(e) {\n if (!isResizable()) return;\n touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n isMoved = false;\n isTouched = true;\n const $pageMasterEl = $el.children('.page-master');\n minWidth = transformCSSWidth($pageMasterEl.css('min-width'));\n maxWidth = transformCSSWidth($pageMasterEl.css('max-width'));\n }\n function handleTouchMove(e) {\n if (!isTouched) return;\n e.f7PreventSwipePanel = true;\n const pageX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n\n if (!isMoved) {\n width = $resizeHandlerEl[0].offsetLeft + $resizeHandlerEl[0].offsetWidth;\n $el.addClass('view-resizing');\n $htmlEl.css('cursor', 'col-resize');\n }\n\n isMoved = true;\n\n e.preventDefault();\n\n touchesDiff = pageX - touchesStart.x;\n\n let newWidth = width + touchesDiff;\n if (minWidth && !Number.isNaN(minWidth)) {\n newWidth = Math.max(newWidth, minWidth);\n }\n if (maxWidth && !Number.isNaN(maxWidth)) {\n newWidth = Math.min(newWidth, maxWidth);\n }\n newWidth = Math.min(Math.max(newWidth, 0), app.width);\n\n view.resizableWidth = newWidth;\n $htmlEl[0].style.setProperty('--f7-page-master-width', `${newWidth}px`);\n\n $el.trigger('view:resize', newWidth);\n view.emit('local::resize viewResize', view, newWidth);\n }\n function handleTouchEnd() {\n $('html').css('cursor', '');\n if (!isTouched || !isMoved) {\n isTouched = false;\n isMoved = false;\n return;\n }\n isTouched = false;\n isMoved = false;\n\n $htmlEl[0].style.setProperty('--f7-page-master-width', `${view.resizableWidth}px`);\n $el.removeClass('view-resizing');\n }\n\n function handleResize() {\n if (!view.resizableWidth) return;\n minWidth = transformCSSWidth($resizeHandlerEl.css('min-width'));\n maxWidth = transformCSSWidth($resizeHandlerEl.css('max-width'));\n\n if (minWidth && !Number.isNaN(minWidth) && view.resizableWidth < minWidth) {\n view.resizableWidth = Math.max(view.resizableWidth, minWidth);\n }\n if (maxWidth && !Number.isNaN(maxWidth) && view.resizableWidth > maxWidth) {\n view.resizableWidth = Math.min(view.resizableWidth, maxWidth);\n }\n view.resizableWidth = Math.min(Math.max(view.resizableWidth, 0), app.width);\n\n $htmlEl[0].style.setProperty('--f7-page-master-width', `${view.resizableWidth}px`);\n }\n\n $resizeHandlerEl = view.$el.children('.view-resize-handler');\n if (!$resizeHandlerEl.length) {\n view.$el.append('<div class=\"view-resize-handler\"></div>');\n $resizeHandlerEl = view.$el.children('.view-resize-handler');\n }\n view.$resizeHandlerEl = $resizeHandlerEl;\n\n $el.addClass('view-resizable');\n\n // Add Events\n const passive = support.passiveListener ? { passive: true } : false;\n\n view.$el.on(app.touchEvents.start, '.view-resize-handler', handleTouchStart, passive);\n app.on('touchmove:active', handleTouchMove);\n app.on('touchend:passive', handleTouchEnd);\n app.on('resize', handleResize);\n view.on('beforeOpen', handleResize);\n\n view.once('viewDestroy', () => {\n $el.removeClass('view-resizable');\n view.$resizeHandlerEl.remove();\n view.$el.off(app.touchEvents.start, '.view-resize-handler', handleTouchStart, passive);\n app.off('touchmove:active', handleTouchMove);\n app.off('touchend:passive', handleTouchEnd);\n app.off('resize', handleResize);\n view.off('beforeOpen', handleResize);\n });\n}\n\nexport default resizableView;\n","import $ from '../../shared/dom7.js';\nimport { extend } from '../../shared/utils.js';\nimport Router from '../../modules/router/router.js';\nimport Framework7Class from '../../shared/class.js';\nimport resizableView from './resizable-view.js';\n\nclass View extends Framework7Class {\n constructor(app, el, viewParams = {}) {\n super(viewParams, [app]);\n\n const view = this;\n\n const ssr = view.params.routerId;\n\n const defaults = {\n routes: [],\n routesAdd: [],\n };\n\n if (!ssr) {\n const $el = $(el);\n if (!$el.length) {\n let message = \"Framework7: can't create a View instance because \";\n message +=\n typeof el === 'string'\n ? `the selector \"${el}\" didn't match any element`\n : 'el must be an HTMLElement or Dom7 object';\n\n throw new Error(message);\n }\n }\n\n // Default View params\n view.params = extend({ el }, defaults, app.params.view, viewParams);\n\n // Routes\n if (view.params.routes.length > 0) {\n view.routes = view.params.routes;\n } else {\n view.routes = [].concat(app.routes, view.params.routesAdd);\n }\n\n // View Props\n extend(false, view, {\n app,\n name: view.params.name,\n main: view.params.main,\n history: [],\n scrollHistory: {},\n });\n\n // Install Modules\n view.useModules();\n\n // Add to app\n app.views.push(view);\n if (view.main) {\n app.views.main = view;\n }\n if (view.name) {\n app.views[view.name] = view;\n }\n\n // Index\n view.index = app.views.indexOf(view);\n\n // View ID\n let viewId;\n if (view.name) {\n viewId = `view_${view.name}`;\n } else if (view.main) {\n viewId = 'view_main';\n } else {\n viewId = `view_${view.index}`;\n }\n view.id = viewId;\n\n if (!view.params.init) {\n return view;\n }\n // Init View\n if (app.initialized) {\n view.init();\n } else {\n app.on('init', () => {\n view.init();\n });\n }\n\n return view;\n }\n\n destroy() {\n let view = this;\n const app = view.app;\n\n view.$el.trigger('view:beforedestroy');\n view.emit('local::beforeDestroy viewBeforeDestroy', view);\n\n app.off('resize', view.checkMasterDetailBreakpoint);\n\n if (view.main) {\n app.views.main = null;\n delete app.views.main;\n } else if (view.name) {\n app.views[view.name] = null;\n delete app.views[view.name];\n }\n view.$el[0].f7View = null;\n delete view.$el[0].f7View;\n\n app.views.splice(app.views.indexOf(view), 1);\n\n // Destroy Router\n if (view.params.router && view.router) {\n view.router.destroy();\n }\n\n view.emit('local::destroy viewDestroy', view);\n\n // Delete props & methods\n Object.keys(view).forEach((viewProp) => {\n view[viewProp] = null;\n delete view[viewProp];\n });\n\n view = null;\n }\n\n checkMasterDetailBreakpoint(force) {\n const view = this;\n const app = view.app;\n const wasMasterDetail = view.$el.hasClass('view-master-detail');\n const isMasterDetail =\n app.width >= view.params.masterDetailBreakpoint && view.$el.children('.page-master').length;\n if ((typeof force === 'undefined' && isMasterDetail) || force === true) {\n view.$el.addClass('view-master-detail');\n if (!wasMasterDetail) {\n view.emit('local::masterDetailBreakpoint viewMasterDetailBreakpoint', view);\n view.$el.trigger('view:masterDetailBreakpoint');\n }\n } else {\n view.$el.removeClass('view-master-detail');\n if (wasMasterDetail) {\n view.emit('local::masterDetailBreakpoint viewMasterDetailBreakpoint', view);\n view.$el.trigger('view:masterDetailBreakpoint');\n }\n }\n }\n\n initMasterDetail() {\n const view = this;\n const app = view.app;\n view.checkMasterDetailBreakpoint = view.checkMasterDetailBreakpoint.bind(view);\n view.checkMasterDetailBreakpoint();\n if (view.params.masterDetailResizable) {\n resizableView(view);\n }\n app.on('resize', view.checkMasterDetailBreakpoint);\n }\n\n mount(viewEl) {\n const view = this;\n const app = view.app;\n const el = view.params.el || viewEl;\n const $el = $(el);\n\n // Selector\n let selector;\n if (typeof el === 'string') selector = el;\n else {\n // Supposed to be HTMLElement or Dom7\n selector =\n ($el.attr('id') ? `#${$el.attr('id')}` : '') +\n ($el.attr('class')\n ? `.${$el.attr('class').replace(/ /g, '.').replace('.active', '')}`\n : '');\n }\n\n // DynamicNavbar\n let $navbarsEl;\n if (app.theme === 'ios' && view.params.iosDynamicNavbar) {\n $navbarsEl = $el.children('.navbars').eq(0);\n if ($navbarsEl.length === 0) {\n $navbarsEl = $('<div class=\"navbars\"></div>');\n }\n }\n\n extend(view, {\n $el,\n el: $el[0],\n main: view.main || $el.hasClass('view-main'),\n $navbarsEl,\n navbarsEl: $navbarsEl ? $navbarsEl[0] : undefined,\n selector,\n });\n\n if (view.main) {\n app.views.main = view;\n }\n\n // Save in DOM\n if ($el && $el[0]) {\n $el[0].f7View = view;\n }\n\n view.emit('local::mount viewMount', view);\n }\n\n init(viewEl) {\n const view = this;\n view.mount(viewEl);\n if (view.params.router) {\n if (view.params.masterDetailBreakpoint > 0) {\n view.initMasterDetail();\n }\n if (\n view.params.initRouterOnTabShow &&\n view.$el.hasClass('tab') &&\n !view.$el.hasClass('tab-active')\n ) {\n view.$el.once('tab:show', () => {\n view.router.init();\n });\n } else {\n view.router.init();\n }\n\n view.$el.trigger('view:init');\n view.emit('local::init viewInit', view);\n }\n }\n}\n\n// Use Router\nView.use(Router);\n\nexport default View;\n","import { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport ViewClass from '../../components/view/view-class.js';\n\nfunction initClicks(app) {\n function handleClicks(e) {\n const window = getWindow();\n const $clickedEl = $(e.target);\n const $clickedLinkEl = $clickedEl.closest('a');\n const isLink = $clickedLinkEl.length > 0;\n const url = isLink && $clickedLinkEl.attr('href');\n\n // Check if link is external\n if (isLink) {\n if (\n $clickedLinkEl.is(app.params.clicks.externalLinks) ||\n // eslint-disable-next-line\n (url && url.indexOf('javascript:') >= 0)\n ) {\n const target = $clickedLinkEl.attr('target');\n if (\n url &&\n window.cordova &&\n window.cordova.InAppBrowser &&\n (target === '_system' || target === '_blank')\n ) {\n e.preventDefault();\n window.cordova.InAppBrowser.open(url, target);\n } else if (\n url &&\n window.Capacitor &&\n window.Capacitor.Plugins &&\n window.Capacitor.Plugins.Browser &&\n (target === '_system' || target === '_blank')\n ) {\n e.preventDefault();\n window.Capacitor.Plugins.Browser.open({ url });\n }\n return;\n }\n }\n\n // Modules Clicks\n Object.keys(app.modules).forEach((moduleName) => {\n const moduleClicks = app.modules[moduleName].clicks;\n if (!moduleClicks) return;\n if (e.preventF7Router) return;\n Object.keys(moduleClicks).forEach((clickSelector) => {\n const matchingClickedElement = $clickedEl.closest(clickSelector).eq(0);\n if (matchingClickedElement.length > 0) {\n moduleClicks[clickSelector].call(\n app,\n matchingClickedElement,\n matchingClickedElement.dataset(),\n e,\n );\n }\n });\n });\n\n // Load Page\n let clickedLinkData = {};\n if (isLink) {\n e.preventDefault();\n clickedLinkData = $clickedLinkEl.dataset();\n }\n clickedLinkData.clickedEl = $clickedLinkEl[0];\n\n // Prevent Router\n if (e.preventF7Router) return;\n if ($clickedLinkEl.hasClass('prevent-router') || $clickedLinkEl.hasClass('router-prevent'))\n return;\n\n const validUrl = url && url.length > 0 && url[0] !== '#';\n if (validUrl || $clickedLinkEl.hasClass('back')) {\n let view;\n if (clickedLinkData.view && clickedLinkData.view === 'current') {\n view = app.views.current;\n } else if (clickedLinkData.view) {\n view = $(clickedLinkData.view)[0].f7View;\n } else {\n view = $clickedEl.parents('.view')[0] && $clickedEl.parents('.view')[0].f7View;\n if (!$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.js';\n\nexport default {\n name: 'routerComponentLoader',\n proto: {\n openIn(router, url, options) {\n const navigateOptions = {\n url,\n route: {\n path: url,\n options: {\n ...options,\n openIn: undefined,\n },\n },\n };\n const params = {\n ...options,\n };\n if (options.openIn === 'popup') {\n params.content = `<div class=\"popup popup-router-open-in\" data-url=\"${url}\"><div class=\"view view-init\" data-links-view=\"${router.view.selector}\" data-url=\"${url}\" data-ignore-open-in=\"true\"></div></div>`;\n navigateOptions.route.popup = params;\n }\n if (options.openIn === 'loginScreen') {\n params.content = `<div class=\"login-screen login-screen-router-open-in\" data-url=\"${url}\"><div class=\"view view-init\" data-links-view=\"${router.view.selector}\" data-url=\"${url}\" data-ignore-open-in=\"true\"></div></div>`;\n navigateOptions.route.loginScreen = params;\n }\n if (options.openIn === 'sheet') {\n params.content = `<div class=\"sheet-modal sheet-modal-router-open-in\" data-url=\"${url}\"><div class=\"sheet-modal-inner\"><div class=\"view view-init\" data-links-view=\"${router.view.selector}\" data-url=\"${url}\" data-ignore-open-in=\"true\"></div></div></div>`;\n navigateOptions.route.sheet = params;\n }\n if (options.openIn === 'popover') {\n params.targetEl = options.clickedEl || options.targetEl;\n params.content = `<div class=\"popover popover-router-open-in\" data-url=\"${url}\"><div class=\"popover-inner\"><div class=\"view view-init\" data-links-view=\"${router.view.selector}\" data-url=\"${url}\" data-ignore-open-in=\"true\"></div></div></div>`;\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 = `<div class=\"panel panel-router-open-in panel-${side} panel-${effect}\" data-url=\"${url}\"><div class=\"view view-init\" data-links-view=\"${router.view.selector}\" data-url=\"${url}\" data-ignore-open-in=\"true\"></div></div>`;\n navigateOptions.route.panel = params;\n }\n return router.navigate(navigateOptions);\n },\n componentLoader(component, componentUrl, options = {}, resolve, reject) {\n const router = this;\n const { app } = router;\n const url = typeof component === 'string' ? component : componentUrl;\n const compiledUrl = router.replaceRequestUrlParams(url, options);\n function compile(componentFunction) {\n let context = options.context || {};\n if (typeof context === 'function') context = context.call(router);\n else if (typeof context === 'string') {\n try {\n context = JSON.parse(context);\n } catch (err) {\n reject(err);\n throw err;\n }\n }\n const componentContext = merge({}, context, {\n f7route: options.route,\n f7router: router,\n });\n const componentProps = merge(\n options.route ? options.route.params || {} : {},\n options.props || {},\n options.routeProps || {},\n );\n let componentEl;\n let componentRoot;\n if (options.componentOptions && options.componentOptions.el) {\n componentEl = options.componentOptions.el;\n }\n if (options.componentOptions && options.componentOptions.root) {\n componentRoot = options.componentOptions.root;\n }\n app.component\n .create(componentFunction, componentProps, {\n context: componentContext,\n el: componentEl,\n root: componentRoot,\n })\n .then((createdComponent) => {\n resolve(createdComponent.el);\n })\n .catch((err) => {\n reject(err);\n throw new Error(err);\n });\n }\n let cachedComponent;\n if (compiledUrl && router.params.componentCache) {\n router.cache.components.forEach((cached) => {\n if (cached.url === compiledUrl) cachedComponent = cached.component;\n });\n }\n if (compiledUrl && cachedComponent) {\n compile(cachedComponent);\n } else if (compiledUrl && !cachedComponent) {\n // Load via XHR\n if (router.xhrAbortController) {\n router.xhrAbortController.abort();\n router.xhrAbortController = false;\n }\n router\n .xhrRequest(url, options)\n .then((loadedComponent) => {\n const parsedComponent = app.component.parse(loadedComponent);\n if (router.params.componentCache) {\n router.cache.components.push({\n url: compiledUrl,\n component: parsedComponent,\n });\n }\n compile(parsedComponent);\n })\n .catch((err) => {\n reject();\n throw err;\n });\n } else {\n compile(component);\n }\n },\n\n modalComponentLoader({ component, componentUrl, options, resolve, reject } = {}) {\n const router = this;\n router.componentLoader(\n component,\n componentUrl,\n options,\n (el) => {\n resolve(el);\n },\n reject,\n );\n },\n\n tabComponentLoader({ component, componentUrl, options, resolve, reject } = {}) {\n const router = this;\n router.componentLoader(\n component,\n componentUrl,\n options,\n (el) => {\n resolve(el);\n },\n reject,\n );\n },\n\n pageComponentLoader({ component, componentUrl, options, resolve, reject } = {}) {\n const router = this;\n router.componentLoader(\n component,\n componentUrl,\n options,\n (el, newOptions = {}) => {\n resolve(el, newOptions);\n },\n reject,\n );\n },\n },\n};\n","var n=function(t,s,r,e){var u;s[0]=0;for(var h=1;h<s.length;h++){var p=s[h++],a=s[h]?(s[0]|=p?1:2,r[s[h++]]):s[++h];3===p?e[0]=a:4===p?e[1]=Object.assign(e[1]||{},a):5===p?(e[1]=e[1]||{})[s[++h]]=a:6===p?e[1][s[++h]]+=a+\"\":p?(u=t.apply(a,n(t,a,r,[\"\",null])),e.push(u),a[0]?s[0]|=2:(s[h-2]=0,s[h]=u)):e.push(a)}return e},t=new Map;export default function(s){var r=t.get(this);return r||(r=new Map,t.set(this,r)),(r=n(this,r.get(s)||(r.set(s,r=function(n){for(var t,s,r=1,e=\"\",u=\"\",h=[0],p=function(n){1===r&&(n||(e=e.replace(/^\\s*\\n\\s*|\\s*\\n\\s*$/g,\"\")))?h.push(0,n,e):3===r&&(n||e)?(h.push(3,n,e),r=2):2===r&&\"...\"===e&&n?h.push(4,n,0):2===r&&e&&!n?h.push(5,0,!0,e):r>=5&&((e||!n&&5===r)&&(h.push(r,0,e,s),r=6),n&&(h.push(r,n,0,s),r=6)),e=\"\"},a=0;a<n.length;a++){a&&(1===r&&p(),p(a));for(var l=0;l<n[a].length;l++)t=n[a][l],1===r?\"<\"===t?(p(),h=[h],r=3):e+=t:4===r?\"--\"===e&&\">\"===t?(r=1,e=\"\"):e=t+e[0]:u?t===u?u=\"\":e+=t:'\"'===t||\"'\"===t?u=t:\">\"===t?(p(),r=1):r&&(\"=\"===t?(r=5,s=e,e=\"\"):\"/\"===t&&(r<5||\">\"===n[a][l+1])?(p(),3===r&&(h=h[0]),r=h,(h=h[0]).push(2,0,r),r=0):\" \"===t||\"\\t\"===t||\"\\n\"===t||\"\\r\"===t?(p(),r=2):e+=t),3===r&&\"!--\"===e&&(r=4,h=h[0])}return p(),h}(s)),r),arguments,[])).length>1?r:r[0]}\n","import htm from 'htm';\nimport { flattenArray } from '../../shared/utils.js';\n\nconst ignoreChildren = [false, null, '', undefined];\n\nconst h = (type, props, ...children) => {\n return {\n type,\n props: props || {},\n children: flattenArray(children.filter((child) => ignoreChildren.indexOf(child) < 0)),\n };\n};\n\nconst $h = htm.bind(h);\n\nexport default $h;\n","export function vnode(sel, data, children, text, elm) {\n var key = data === undefined ? undefined : data.key;\n return { sel: sel, data: data, children: children,\n text: text, elm: elm, key: key };\n}\nexport default vnode;\n//# sourceMappingURL=vnode.js.map","export var array = Array.isArray;\nexport function primitive(s) {\n return typeof s === 'string' || typeof s === 'number';\n}\n//# sourceMappingURL=is.js.map","import { vnode } from './vnode.js';\nimport * as is from './is.js';\nfunction addNS(data, children, sel) {\n data.ns = 'http://www.w3.org/2000/svg';\n if (sel !== 'foreignObject' && children !== undefined) {\n for (var i = 0; i < children.length; ++i) {\n var childData = children[i].data;\n if (childData !== undefined) {\n addNS(childData, children[i].children, children[i].sel);\n }\n }\n }\n}\nexport function h(sel, b, c) {\n var data = {}, children, text, i;\n if (c !== undefined) {\n data = b;\n if (is.array(c)) {\n children = c;\n }\n else if (is.primitive(c)) {\n text = c;\n }\n else if (c && c.sel) {\n children = [c];\n }\n }\n else if (b !== undefined) {\n if (is.array(b)) {\n children = b;\n }\n else if (is.primitive(b)) {\n text = b;\n }\n else if (b && b.sel) {\n children = [b];\n }\n else {\n data = b;\n }\n }\n if (is.array(children)) {\n for (i = 0; i < children.length; ++i) {\n if (is.primitive(children[i]))\n children[i] = vnode(undefined, undefined, undefined, children[i], undefined);\n }\n }\n if (sel[0] === 's' && sel[1] === 'v' && sel[2] === 'g' &&\n (sel.length === 3 || sel[3] === '.' || sel[3] === '#')) {\n addNS(data, children, sel);\n }\n return vnode(sel, data, children, text, undefined);\n}\n;\nexport default h;\n//# sourceMappingURL=h.js.map\n","export default {};\n","/* eslint no-use-before-define: \"off\" */\n/* eslint import/no-named-as-default: \"off\" */\nimport h from './snabbdom/h.js';\nimport customComponents from './custom-components.js';\nimport { isObject, eventNameToColonCase } from '../../shared/utils.js';\n\nconst SELF_CLOSING =\n 'area base br col command embed hr img input keygen link menuitem meta param source track wbr'.split(\n ' ',\n );\nconst PROPS_ATTRS =\n 'hidden checked disabled readonly selected autofocus autoplay required multiple value indeterminate routeProps innerHTML'.split(\n ' ',\n );\nconst BOOLEAN_PROPS =\n 'hidden checked disabled readonly selected autofocus autoplay required multiple readOnly indeterminate'.split(\n ' ',\n );\n\nconst getTagName = (treeNode) => {\n return typeof treeNode.type === 'function'\n ? treeNode.type.name || 'CustomComponent'\n : treeNode.type;\n};\n\nconst toCamelCase = (name) => {\n return name\n .split('-')\n .map((word, index) => {\n if (index === 0) return word.toLowerCase();\n return word[0].toUpperCase() + word.substr(1);\n })\n .join('');\n};\nconst propsFromAttrs = (...args) => {\n const context = {};\n args.forEach((obj = {}) => {\n Object.keys(obj).forEach((key) => {\n context[toCamelCase(key)] = obj[key];\n });\n });\n\n return context;\n};\n\nconst createCustomComponent = ({ f7, treeNode, vnode, data }) => {\n const component =\n typeof treeNode.type === 'function' ? treeNode.type : customComponents[treeNode.type];\n f7.component\n .create(component, propsFromAttrs(data.attrs || {}, data.props || {}), {\n el: vnode.elm,\n children: treeNode.children,\n })\n .then((c) => {\n if (vnode.data && vnode.data.on && c && c.$el) {\n Object.keys(vnode.data.on).forEach((eventName) => {\n c.$el.on(eventName, vnode.data.on[eventName]);\n });\n }\n // eslint-disable-next-line\n vnode.elm.__component__ = c;\n });\n};\nconst updateCustomComponent = (vnode) => {\n // eslint-disable-next-line\n const component = vnode && vnode.elm && vnode.elm.__component__;\n if (!component) return;\n const newProps = propsFromAttrs(vnode.data.attrs || {}, vnode.data.props || {});\n component.children = vnode.data.treeNode.children;\n Object.assign(component.props, newProps);\n component.update();\n};\nconst destroyCustomComponent = (vnode) => {\n // eslint-disable-next-line\n const component = vnode && vnode.elm && vnode.elm.__component__;\n\n if (component) {\n const { el, $el } = component;\n if (vnode.data && vnode.data.on && $el) {\n Object.keys(vnode.data.on).forEach((eventName) => {\n $el.off(eventName, vnode.data.on[eventName]);\n });\n }\n if (component.destroy) component.destroy();\n if (el && el.parentNode) el.parentNode.removeChild(el);\n delete vnode.elm.__component__; // eslint-disable-line\n }\n};\n\nconst isCustomComponent = (treeNodeType) => {\n return (\n typeof treeNodeType === 'function' ||\n (treeNodeType && treeNodeType.indexOf('-') > 0 && customComponents[treeNodeType])\n );\n};\n\nfunction getHooks(treeNode, data, f7, initial, isRoot) {\n const hooks = {};\n const insert = [];\n const destroy = [];\n const update = [];\n const postpatch = [];\n let isFakeElement = false;\n let tagName = getTagName(treeNode);\n if (data && data.attrs && data.attrs.component) {\n tagName = data.attrs.component;\n delete data.attrs.component;\n isFakeElement = true;\n }\n\n const isCustom = isCustomComponent(treeNode.type);\n\n if (isCustom) {\n insert.push((vnode) => {\n if (vnode.sel !== tagName && !isFakeElement) return;\n createCustomComponent({ f7, treeNode, vnode, data });\n });\n destroy.push((vnode) => {\n destroyCustomComponent(vnode);\n });\n update.push((oldVnode, vnode) => {\n updateCustomComponent(vnode);\n });\n }\n\n if (!isCustom) {\n if (!data || !data.attrs || !data.attrs.class) return hooks;\n\n const classNames = data.attrs.class;\n classNames.split(' ').forEach((className) => {\n if (!initial) {\n insert.push(...f7.getVnodeHooks('insert', className));\n }\n destroy.push(...f7.getVnodeHooks('destroy', className));\n update.push(...f7.getVnodeHooks('update', className));\n postpatch.push(...f7.getVnodeHooks('postpatch', className));\n });\n }\n\n if (isRoot && !initial) {\n postpatch.push((oldVnode, vnode) => {\n const vn = vnode || oldVnode;\n if (!vn) return;\n if (vn.data && vn.data.component) {\n vn.data.component.hook('onUpdated');\n }\n });\n }\n if (\n insert.length === 0 &&\n destroy.length === 0 &&\n update.length === 0 &&\n postpatch.length === 0\n ) {\n return hooks;\n }\n\n if (insert.length) {\n hooks.insert = (vnode) => {\n insert.forEach((f) => f(vnode));\n };\n }\n if (destroy.length) {\n hooks.destroy = (vnode) => {\n destroy.forEach((f) => f(vnode));\n };\n }\n if (update.length) {\n hooks.update = (oldVnode, vnode) => {\n update.forEach((f) => f(oldVnode, vnode));\n };\n }\n if (postpatch.length) {\n hooks.postpatch = (oldVnode, vnode) => {\n postpatch.forEach((f) => f(oldVnode, vnode));\n };\n }\n\n return hooks;\n}\nconst getEventHandler = (eventHandler, { stop, prevent, once } = {}) => {\n let fired = false;\n\n function handler(...args) {\n const e = args[0];\n if (once && fired) return;\n if (stop) e.stopPropagation();\n if (prevent) e.preventDefault();\n fired = true;\n\n eventHandler(...args);\n }\n\n return handler;\n};\n\nconst getData = (treeNode, component, f7, initial, isRoot) => {\n const data = { component, treeNode };\n const tagName = getTagName(treeNode);\n Object.keys(treeNode.props).forEach((attrName) => {\n const attrValue = treeNode.props[attrName];\n if (typeof attrValue === 'undefined') return;\n if (PROPS_ATTRS.indexOf(attrName) >= 0) {\n // Props\n if (!data.props) data.props = {};\n if (attrName === 'readonly') {\n // eslint-disable-next-line\n attrName = 'readOnly';\n }\n if (attrName === 'routeProps') {\n // eslint-disable-next-line\n attrName = 'f7RouteProps';\n }\n if (tagName === 'option' && attrName === 'value') {\n if (!data.attrs) data.attrs = {};\n data.attrs.value = attrValue;\n }\n if (BOOLEAN_PROPS.indexOf(attrName) >= 0) {\n // eslint-disable-next-line\n data.props[attrName] = attrValue === false ? false : true;\n } else {\n data.props[attrName] = attrValue;\n }\n } else if (attrName === 'key') {\n // Key\n data.key = attrValue;\n } else if (\n attrName.indexOf('@') === 0 ||\n (attrName.indexOf('on') === 0 && attrName.length > 2)\n ) {\n // Events\n if (!data.on) data.on = {};\n let eventName =\n attrName.indexOf('@') === 0 ? attrName.substr(1) : eventNameToColonCase(attrName.substr(2));\n let stop = false;\n let prevent = false;\n let once = false;\n if (eventName.indexOf('.') >= 0) {\n eventName.split('.').forEach((eventNamePart, eventNameIndex) => {\n if (eventNameIndex === 0) eventName = eventNamePart;\n else {\n if (eventNamePart === 'stop') stop = true;\n if (eventNamePart === 'prevent') prevent = true;\n if (eventNamePart === 'once') once = true;\n }\n });\n }\n data.on[eventName] = getEventHandler(attrValue, { stop, prevent, once });\n } else if (attrName === 'style') {\n // Style\n if (typeof attrValue !== 'string') {\n data.style = attrValue;\n } else {\n if (!data.attrs) data.attrs = {};\n data.attrs.style = attrValue;\n }\n } else {\n // Rest of attribures\n if (!data.attrs) data.attrs = {};\n data.attrs[attrName] = attrValue;\n\n // ID -> Key\n if (attrName === 'id' && !data.key && !isRoot) {\n data.key = attrValue;\n }\n }\n });\n\n const hooks = getHooks(treeNode, data, f7, initial, isRoot);\n\n hooks.prepatch = (oldVnode, vnode) => {\n if (!oldVnode || !vnode) return;\n if (oldVnode && oldVnode.data && oldVnode.data.props) {\n Object.keys(oldVnode.data.props).forEach((key) => {\n if (BOOLEAN_PROPS.indexOf(key) < 0) return;\n if (!vnode.data) vnode.data = {};\n if (!vnode.data.props) vnode.data.props = {};\n if (oldVnode.data.props[key] === true && !(key in vnode.data.props)) {\n vnode.data.props[key] = false;\n }\n });\n }\n };\n\n data.hook = hooks;\n\n return data;\n};\n\nconst getChildren = (treeNode, component, f7, initial) => {\n if (treeNode && treeNode.type && SELF_CLOSING.indexOf(treeNode.type) >= 0) {\n return [];\n }\n const children = [];\n const nodes = treeNode.children;\n for (let i = 0; i < nodes.length; i += 1) {\n const childNode = nodes[i];\n const child = treeNodeToVNode(childNode, component, f7, initial, false);\n if (Array.isArray(child)) {\n children.push(...child);\n } else if (child) {\n children.push(child);\n }\n }\n return children;\n};\n\nconst getSlots = (treeNode, component, f7, initial) => {\n const slotName = treeNode.props.name || 'default';\n const slotNodes = (component.children || []).filter((childTreeNode) => {\n let childSlotName = 'default';\n if (childTreeNode.props) {\n childSlotName = childTreeNode.props.slot || 'default';\n }\n return childSlotName === slotName;\n });\n if (slotNodes.length === 0) {\n return getChildren(treeNode, component, f7, initial);\n }\n return slotNodes.map((subTreeNode) => treeNodeToVNode(subTreeNode, component, f7, initial));\n};\n\nconst isTreeNode = (treeNode) => {\n return isObject(treeNode) && 'props' in treeNode && 'type' in treeNode && 'children' in treeNode;\n};\n\nconst treeNodeToVNode = (treeNode, component, f7, initial, isRoot) => {\n if (!isTreeNode(treeNode)) {\n return String(treeNode);\n }\n if (treeNode.type === 'slot') {\n return getSlots(treeNode, component, f7, initial);\n }\n const data = getData(treeNode, component, f7, initial, isRoot);\n const children = isCustomComponent(treeNode.type)\n ? []\n : getChildren(treeNode, component, f7, initial);\n\n return h(getTagName(treeNode), data, children);\n};\n\nexport default function vdom(tree = {}, component, initial) {\n return treeNodeToVNode(tree, component, component.f7, initial, true);\n}\n","function createElement(tagName) {\n return document.createElement(tagName);\n}\nfunction createElementNS(namespaceURI, qualifiedName) {\n return document.createElementNS(namespaceURI, qualifiedName);\n}\nfunction createTextNode(text) {\n return document.createTextNode(text);\n}\nfunction createComment(text) {\n return document.createComment(text);\n}\nfunction insertBefore(parentNode, newNode, referenceNode) {\n if (referenceNode && referenceNode.parentNode !== parentNode) {\n if (referenceNode.__component__) referenceNode = referenceNode.__component__.el;\n }\n parentNode.insertBefore(newNode, referenceNode);\n}\nfunction removeChild(node, child) {\n if (!node) return;\n node.removeChild(child);\n}\nfunction appendChild(node, child) {\n node.appendChild(child);\n}\nfunction parentNode(node) {\n return node.parentNode;\n}\nfunction nextSibling(node) {\n return node.nextSibling;\n}\nfunction tagName(elm) {\n return elm.tagName;\n}\nfunction setTextContent(node, text) {\n node.textContent = text;\n}\nfunction getTextContent(node) {\n return node.textContent;\n}\nfunction isElement(node) {\n return node.nodeType === 1;\n}\nfunction isText(node) {\n return node.nodeType === 3;\n}\nfunction isComment(node) {\n return node.nodeType === 8;\n}\nexport var htmlDomApi = {\n createElement: createElement,\n createElementNS: createElementNS,\n createTextNode: createTextNode,\n createComment: createComment,\n insertBefore: insertBefore,\n removeChild: removeChild,\n appendChild: appendChild,\n parentNode: parentNode,\n nextSibling: nextSibling,\n tagName: tagName,\n setTextContent: setTextContent,\n getTextContent: getTextContent,\n isElement: isElement,\n isText: isText,\n isComment: isComment,\n};\nexport default htmlDomApi;\n//# sourceMappingURL=htmldomapi.js.map\n","import vnode from './vnode.js';\nimport * as is from './is.js';\nimport htmlDomApi from './htmldomapi.js';\nfunction isUndef(s) { return s === undefined; }\nfunction isDef(s) { return s !== undefined; }\nvar emptyNode = vnode('', {}, [], undefined, undefined);\nfunction sameVnode(vnode1, vnode2) {\n return vnode1.key === vnode2.key && vnode1.sel === vnode2.sel;\n}\nfunction isVnode(vnode) {\n return vnode.sel !== undefined;\n}\nfunction createKeyToOldIdx(children, beginIdx, endIdx) {\n var i, map = {}, key, ch;\n for (i = beginIdx; i <= endIdx; ++i) {\n ch = children[i];\n if (ch != null) {\n key = ch.key;\n if (key !== undefined)\n map[key] = i;\n }\n }\n return map;\n}\nvar hooks = ['create', 'update', 'remove', 'destroy', 'pre', 'post'];\nexport { h } from './h.js';\nexport { thunk } from './thunk.js';\nexport function init(modules, domApi) {\n var i, j, cbs = {};\n var api = domApi !== undefined ? domApi : htmlDomApi;\n for (i = 0; i < hooks.length; ++i) {\n cbs[hooks[i]] = [];\n for (j = 0; j < modules.length; ++j) {\n var hook = modules[j][hooks[i]];\n if (hook !== undefined) {\n cbs[hooks[i]].push(hook);\n }\n }\n }\n function emptyNodeAt(elm) {\n var id = elm.id ? '#' + elm.id : '';\n var c = elm.className ? '.' + elm.className.split(' ').join('.') : '';\n return vnode(api.tagName(elm).toLowerCase() + id + c, {}, [], undefined, elm);\n }\n function createRmCb(childElm, listeners) {\n return function rmCb() {\n if (--listeners === 0) {\n var parent_1 = api.parentNode(childElm);\n api.removeChild(parent_1, childElm);\n }\n };\n }\n function createElm(vnode, insertedVnodeQueue) {\n var i, data = vnode.data;\n if (data !== undefined) {\n if (isDef(i = data.hook) && isDef(i = i.init)) {\n i(vnode);\n data = vnode.data;\n }\n }\n var children = vnode.children, sel = vnode.sel;\n if (sel === '!') {\n if (isUndef(vnode.text)) {\n vnode.text = '';\n }\n vnode.elm = api.createComment(vnode.text);\n }\n else if (sel !== undefined) {\n // Parse selector\n var hashIdx = sel.indexOf('#');\n var dotIdx = sel.indexOf('.', hashIdx);\n var hash = hashIdx > 0 ? hashIdx : sel.length;\n var dot = dotIdx > 0 ? dotIdx : sel.length;\n var tag = hashIdx !== -1 || dotIdx !== -1 ? sel.slice(0, Math.min(hash, dot)) : sel;\n var elm = vnode.elm = isDef(data) && isDef(i = data.ns) ? api.createElementNS(i, tag)\n : api.createElement(tag);\n if (hash < dot)\n elm.setAttribute('id', sel.slice(hash + 1, dot));\n if (dotIdx > 0)\n elm.setAttribute('class', sel.slice(dot + 1).replace(/\\./g, ' '));\n for (i = 0; i < cbs.create.length; ++i)\n cbs.create[i](emptyNode, vnode);\n if (is.array(children)) {\n for (i = 0; i < children.length; ++i) {\n var ch = children[i];\n if (ch != null) {\n api.appendChild(elm, createElm(ch, insertedVnodeQueue));\n }\n }\n }\n else if (is.primitive(vnode.text)) {\n api.appendChild(elm, api.createTextNode(vnode.text));\n }\n i = vnode.data.hook; // Reuse variable\n if (isDef(i)) {\n if (i.create)\n i.create(emptyNode, vnode);\n if (i.insert)\n insertedVnodeQueue.push(vnode);\n }\n }\n else {\n vnode.elm = api.createTextNode(vnode.text);\n }\n return vnode.elm;\n }\n function addVnodes(parentElm, before, vnodes, startIdx, endIdx, insertedVnodeQueue) {\n for (; startIdx <= endIdx; ++startIdx) {\n var ch = vnodes[startIdx];\n if (ch != null) {\n api.insertBefore(parentElm, createElm(ch, insertedVnodeQueue), before);\n }\n }\n }\n function invokeDestroyHook(vnode) {\n var i, j, data = vnode.data;\n if (data !== undefined) {\n if (isDef(i = data.hook) && isDef(i = i.destroy))\n i(vnode);\n for (i = 0; i < cbs.destroy.length; ++i)\n cbs.destroy[i](vnode);\n if (vnode.children !== undefined) {\n for (j = 0; j < vnode.children.length; ++j) {\n i = vnode.children[j];\n if (i != null && typeof i !== \"string\") {\n invokeDestroyHook(i);\n }\n }\n }\n }\n }\n function removeVnodes(parentElm, vnodes, startIdx, endIdx) {\n for (; startIdx <= endIdx; ++startIdx) {\n var i_1 = void 0, listeners = void 0, rm = void 0, ch = vnodes[startIdx];\n if (ch != null) {\n if (isDef(ch.sel)) {\n invokeDestroyHook(ch);\n listeners = cbs.remove.length + 1;\n rm = createRmCb(ch.elm, listeners);\n for (i_1 = 0; i_1 < cbs.remove.length; ++i_1)\n cbs.remove[i_1](ch, rm);\n if (isDef(i_1 = ch.data) && isDef(i_1 = i_1.hook) && isDef(i_1 = i_1.remove)) {\n i_1(ch, rm);\n }\n else {\n rm();\n }\n }\n else {\n api.removeChild(parentElm, ch.elm);\n }\n }\n }\n }\n function updateChildren(parentElm, oldCh, newCh, insertedVnodeQueue) {\n var oldStartIdx = 0, newStartIdx = 0;\n var oldEndIdx = oldCh.length - 1;\n var oldStartVnode = oldCh[0];\n var oldEndVnode = oldCh[oldEndIdx];\n var newEndIdx = newCh.length - 1;\n var newStartVnode = newCh[0];\n var newEndVnode = newCh[newEndIdx];\n var oldKeyToIdx;\n var idxInOld;\n var elmToMove;\n var before;\n while (oldStartIdx <= oldEndIdx && newStartIdx <= newEndIdx) {\n if (oldStartVnode == null) {\n oldStartVnode = oldCh[++oldStartIdx]; // Vnode might have been moved left\n }\n else if (oldEndVnode == null) {\n oldEndVnode = oldCh[--oldEndIdx];\n }\n else if (newStartVnode == null) {\n newStartVnode = newCh[++newStartIdx];\n }\n else if (newEndVnode == null) {\n newEndVnode = newCh[--newEndIdx];\n }\n else if (sameVnode(oldStartVnode, newStartVnode)) {\n patchVnode(oldStartVnode, newStartVnode, insertedVnodeQueue);\n oldStartVnode = oldCh[++oldStartIdx];\n newStartVnode = newCh[++newStartIdx];\n }\n else if (sameVnode(oldEndVnode, newEndVnode)) {\n patchVnode(oldEndVnode, newEndVnode, insertedVnodeQueue);\n oldEndVnode = oldCh[--oldEndIdx];\n newEndVnode = newCh[--newEndIdx];\n }\n else if (sameVnode(oldStartVnode, newEndVnode)) {\n patchVnode(oldStartVnode, newEndVnode, insertedVnodeQueue);\n api.insertBefore(parentElm, oldStartVnode.elm, api.nextSibling(oldEndVnode.elm));\n oldStartVnode = oldCh[++oldStartIdx];\n newEndVnode = newCh[--newEndIdx];\n }\n else if (sameVnode(oldEndVnode, newStartVnode)) {\n patchVnode(oldEndVnode, newStartVnode, insertedVnodeQueue);\n api.insertBefore(parentElm, oldEndVnode.elm, oldStartVnode.elm);\n oldEndVnode = oldCh[--oldEndIdx];\n newStartVnode = newCh[++newStartIdx];\n }\n else {\n if (oldKeyToIdx === undefined) {\n oldKeyToIdx = createKeyToOldIdx(oldCh, oldStartIdx, oldEndIdx);\n }\n idxInOld = oldKeyToIdx[newStartVnode.key];\n if (isUndef(idxInOld)) {\n api.insertBefore(parentElm, createElm(newStartVnode, insertedVnodeQueue), oldStartVnode.elm);\n newStartVnode = newCh[++newStartIdx];\n }\n else {\n elmToMove = oldCh[idxInOld];\n if (elmToMove.sel !== newStartVnode.sel) {\n api.insertBefore(parentElm, createElm(newStartVnode, insertedVnodeQueue), oldStartVnode.elm);\n }\n else {\n patchVnode(elmToMove, newStartVnode, insertedVnodeQueue);\n oldCh[idxInOld] = undefined;\n api.insertBefore(parentElm, elmToMove.elm, oldStartVnode.elm);\n }\n newStartVnode = newCh[++newStartIdx];\n }\n }\n }\n if (oldStartIdx <= oldEndIdx || newStartIdx <= newEndIdx) {\n if (oldStartIdx > oldEndIdx) {\n before = newCh[newEndIdx + 1] == null ? null : newCh[newEndIdx + 1].elm;\n addVnodes(parentElm, before, newCh, newStartIdx, newEndIdx, insertedVnodeQueue);\n }\n else {\n removeVnodes(parentElm, oldCh, oldStartIdx, oldEndIdx);\n }\n }\n }\n function patchVnode(oldVnode, vnode, insertedVnodeQueue) {\n var i, hook;\n if (isDef(i = vnode.data) && isDef(hook = i.hook) && isDef(i = hook.prepatch)) {\n i(oldVnode, vnode);\n }\n var elm = vnode.elm = oldVnode.elm;\n var oldCh = oldVnode.children;\n var ch = vnode.children;\n if (oldVnode === vnode)\n return;\n if (vnode.data !== undefined) {\n for (i = 0; i < cbs.update.length; ++i)\n cbs.update[i](oldVnode, vnode);\n i = vnode.data.hook;\n if (isDef(i) && isDef(i = i.update))\n i(oldVnode, vnode);\n }\n if (isUndef(vnode.text)) {\n if (isDef(oldCh) && isDef(ch)) {\n if (oldCh !== ch)\n updateChildren(elm, oldCh, ch, insertedVnodeQueue);\n }\n else if (isDef(ch)) {\n if (isDef(oldVnode.text))\n api.setTextContent(elm, '');\n addVnodes(elm, null, ch, 0, ch.length - 1, insertedVnodeQueue);\n }\n else if (isDef(oldCh)) {\n removeVnodes(elm, oldCh, 0, oldCh.length - 1);\n }\n else if (isDef(oldVnode.text)) {\n api.setTextContent(elm, '');\n }\n }\n else if (oldVnode.text !== vnode.text) {\n api.setTextContent(elm, vnode.text);\n }\n if (isDef(hook) && isDef(i = hook.postpatch)) {\n i(oldVnode, vnode);\n }\n }\n return function patch(oldVnode, vnode) {\n var i, elm, parent;\n var insertedVnodeQueue = [];\n for (i = 0; i < cbs.pre.length; ++i)\n cbs.pre[i]();\n if (!isVnode(oldVnode)) {\n oldVnode = emptyNodeAt(oldVnode);\n }\n if (sameVnode(oldVnode, vnode)) {\n patchVnode(oldVnode, vnode, insertedVnodeQueue);\n }\n else {\n elm = oldVnode.elm;\n parent = api.parentNode(elm);\n createElm(vnode, insertedVnodeQueue);\n if (parent !== null) {\n api.insertBefore(parent, vnode.elm, api.nextSibling(elm));\n removeVnodes(parent, [oldVnode], 0, 0);\n }\n }\n for (i = 0; i < insertedVnodeQueue.length; ++i) {\n insertedVnodeQueue[i].data.hook.insert(insertedVnodeQueue[i]);\n }\n for (i = 0; i < cbs.post.length; ++i)\n cbs.post[i]();\n return vnode;\n };\n}\n//# sourceMappingURL=snabbdom.js.map\n","var xlinkNS = 'http://www.w3.org/1999/xlink';\nvar xmlNS = 'http://www.w3.org/XML/1998/namespace';\nvar colonChar = 58;\nvar xChar = 120;\nfunction updateAttrs(oldVnode, vnode) {\n var key, elm = vnode.elm, oldAttrs = oldVnode.data.attrs, attrs = vnode.data.attrs;\n if (!oldAttrs && !attrs)\n return;\n if (oldAttrs === attrs)\n return;\n oldAttrs = oldAttrs || {};\n attrs = attrs || {};\n // update modified attributes, add new attributes\n for (key in attrs) {\n var cur = attrs[key];\n var old = oldAttrs[key];\n if (old !== cur) {\n if (cur === true) {\n elm.setAttribute(key, \"\");\n }\n else if (cur === false) {\n elm.removeAttribute(key);\n }\n else {\n if (key.charCodeAt(0) !== xChar) {\n elm.setAttribute(key, cur);\n }\n else if (key.charCodeAt(3) === colonChar) {\n // Assume xml namespace\n elm.setAttributeNS(xmlNS, key, cur);\n }\n else if (key.charCodeAt(5) === colonChar) {\n // Assume xlink namespace\n elm.setAttributeNS(xlinkNS, key, cur);\n }\n else {\n elm.setAttribute(key, cur);\n }\n }\n }\n }\n // remove removed attributes\n // use `in` operator since the previous `for` iteration uses it (.i.e. add even attributes with undefined value)\n // the other option is to remove all attributes with value == undefined\n for (key in oldAttrs) {\n if (!(key in attrs)) {\n elm.removeAttribute(key);\n }\n }\n}\nexport var attributesModule = { create: updateAttrs, update: updateAttrs };\nexport default attributesModule;\n//# sourceMappingURL=attributes.js.map","function updateProps(oldVnode, vnode) {\n var key, cur, old, elm = vnode.elm, oldProps = oldVnode.data.props, props = vnode.data.props;\n if (!oldProps && !props)\n return;\n if (oldProps === props)\n return;\n oldProps = oldProps || {};\n props = props || {};\n for (key in oldProps) {\n if (!props[key]) {\n delete elm[key];\n }\n }\n for (key in props) {\n cur = props[key];\n old = oldProps[key];\n if (old !== cur && (key !== 'value' || elm[key] !== cur)) {\n elm[key] = cur;\n }\n }\n}\nexport var propsModule = { create: updateProps, update: updateProps };\nexport default propsModule;\n//# sourceMappingURL=props.js.map","var raf = (typeof window !== 'undefined' && window.requestAnimationFrame) || setTimeout;\nvar nextFrame = function (fn) { raf(function () { raf(fn); }); };\nfunction setNextFrame(obj, prop, val) {\n nextFrame(function () { obj[prop] = val; });\n}\nfunction updateStyle(oldVnode, vnode) {\n var cur, name, elm = vnode.elm, oldStyle = oldVnode.data.style, style = vnode.data.style;\n if (!oldStyle && !style)\n return;\n if (oldStyle === style)\n return;\n oldStyle = oldStyle || {};\n style = style || {};\n var oldHasDel = 'delayed' in oldStyle;\n for (name in oldStyle) {\n if (!style[name]) {\n if (name[0] === '-' && name[1] === '-') {\n elm.style.removeProperty(name);\n }\n else {\n elm.style[name] = '';\n }\n }\n }\n for (name in style) {\n cur = style[name];\n if (name === 'delayed' && style.delayed) {\n for (var name2 in style.delayed) {\n cur = style.delayed[name2];\n if (!oldHasDel || cur !== oldStyle.delayed[name2]) {\n setNextFrame(elm.style, name2, cur);\n }\n }\n }\n else if (name !== 'remove' && cur !== oldStyle[name]) {\n if (name[0] === '-' && name[1] === '-') {\n elm.style.setProperty(name, cur);\n }\n else {\n elm.style[name] = cur;\n }\n }\n }\n}\nfunction applyDestroyStyle(vnode) {\n var style, name, elm = vnode.elm, s = vnode.data.style;\n if (!s || !(style = s.destroy))\n return;\n for (name in style) {\n elm.style[name] = style[name];\n }\n}\nfunction applyRemoveStyle(vnode, rm) {\n var s = vnode.data.style;\n if (!s || !s.remove) {\n rm();\n return;\n }\n var name, elm = vnode.elm, i = 0, compStyle, style = s.remove, amount = 0, applied = [];\n for (name in style) {\n applied.push(name);\n elm.style[name] = style[name];\n }\n compStyle = getComputedStyle(elm);\n var props = compStyle['transition-property'].split(', ');\n for (; i < props.length; ++i) {\n if (applied.indexOf(props[i]) !== -1)\n amount++;\n }\n elm.addEventListener('transitionend', function (ev) {\n if (ev.target === elm)\n --amount;\n if (amount === 0)\n rm();\n });\n}\nexport var styleModule = {\n create: updateStyle,\n update: updateStyle,\n destroy: applyDestroyStyle,\n remove: applyRemoveStyle\n};\nexport default styleModule;\n//# sourceMappingURL=style.js.map","import $ from '../../shared/dom7.js';\n\nfunction invokeHandler(handler, event, args) {\n if (typeof handler === 'function') {\n // call function handler\n handler(event, ...args);\n }\n}\nfunction handleEvent(event, args, vnode) {\n const name = event.type;\n const on = vnode.data.on;\n // call event handler(s) if exists\n if (on && on[name]) {\n invokeHandler(on[name], event, args, vnode);\n }\n}\nfunction createListener() {\n return function handler(event, ...args) {\n handleEvent(event, args, handler.vnode);\n };\n}\nfunction updateEvents(oldVnode, vnode) {\n const oldOn = oldVnode.data.on;\n const oldListener = oldVnode.listener;\n const oldElm = oldVnode.elm;\n const on = vnode && vnode.data.on;\n const elm = vnode && vnode.elm;\n // optimization for reused immutable handlers\n if (oldOn === on) {\n return;\n }\n // remove existing listeners which no longer used\n if (oldOn && oldListener) {\n // if element changed or deleted we remove all existing listeners unconditionally\n if (!on) {\n Object.keys(oldOn).forEach((name) => {\n $(oldElm).off(name, oldListener);\n });\n } else {\n Object.keys(oldOn).forEach((name) => {\n if (!on[name]) {\n $(oldElm).off(name, oldListener);\n }\n });\n }\n }\n // add new listeners which has not already attached\n if (on) {\n // reuse existing listener or create new\n const listener = oldVnode.listener || createListener();\n vnode.listener = listener;\n // update vnode for listener\n listener.vnode = vnode;\n // if element changed or added we add all needed listeners unconditionally\n if (!oldOn) {\n Object.keys(on).forEach((name) => {\n $(elm).on(name, listener);\n });\n } else {\n Object.keys(on).forEach((name) => {\n if (!oldOn[name]) {\n $(elm).on(name, listener);\n }\n });\n }\n }\n}\n\nexport default {\n create: updateEvents,\n update: updateEvents,\n destroy: updateEvents,\n};\n","/* eslint import/no-named-as-default: off */\nimport { init } from './snabbdom/snabbdom.js';\nimport attributesModule from './snabbdom/modules/attributes.js';\nimport propsModule from './snabbdom/modules/props.js';\nimport styleModule from './snabbdom/modules/style.js';\nimport eventListenersModule from './eventslisteners.js';\n\nconst patch = init([attributesModule, propsModule, styleModule, eventListenersModule]);\n\nexport default patch;\n","import { flattenArray } from '../../shared/utils.js';\n\nconst ignoreChildren = [false, null, '', undefined];\n\nconst $jsx = (type, props, ...children) => {\n const flatChildren = flattenArray(\n (children || []).filter((child) => ignoreChildren.indexOf(child) < 0),\n );\n if (type === 'Fragment') {\n return flatChildren;\n }\n return {\n type,\n props: props || {},\n children: flatChildren,\n };\n};\n\nexport default $jsx;\n","/* eslint no-underscore-dangle: \"off\" */\nimport { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport $h from './$h.js';\nimport { id as generateId, merge, eventNameToColonCase, deleteProps } from '../../shared/utils.js';\nimport vdom from './vdom.js';\nimport patch from './patch.js';\nimport $jsx from './$jsx.js';\n\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 __updateQueue: [],\n __eventHandlers: [],\n __onceEventHandlers: [],\n __onBeforeMount: [],\n __onMounted: [],\n __onBeforeUpdate: [],\n __onUpdated: [],\n __onBeforeUnmount: [],\n __onUnmounted: [],\n });\n\n const createComponent = () => {\n return component(this.props, this.getComponentContext(true));\n };\n\n const getRenderFuncion = (componentResult) =>\n new Promise((resolve, reject) => {\n if (typeof componentResult === 'function') {\n resolve(componentResult);\n } else if (componentResult instanceof Promise) {\n componentResult\n .then((render) => {\n resolve(render);\n })\n .catch((err) => {\n reject(err);\n });\n } else {\n reject(\n new Error(\n 'Framework7: Component render function is not a \"function\" type. Didn\\'t you forget to \"return $render\"?',\n ),\n );\n }\n });\n\n return new Promise((resolve, reject) => {\n const componentResult = createComponent();\n getRenderFuncion(componentResult)\n .then((render) => {\n this.renderFunction = render;\n\n const tree = this.render();\n\n if (el) {\n this.vnode = vdom(tree, this, true);\n if (this.style) {\n this.styleEl = document.createElement('style');\n this.styleEl.innerHTML = this.style;\n }\n this.el = el;\n patch(this.el, this.vnode);\n this.el = this.vnode.elm;\n this.$el = $(this.el);\n\n this.attachEvents();\n this.el.f7Component = this;\n this.mount();\n resolve(this);\n return;\n }\n // Make Dom\n if (tree) {\n this.vnode = vdom(tree, this, true);\n this.el = document.createElement(this.vnode.sel || 'div');\n patch(this.el, this.vnode);\n this.$el = $(this.el);\n }\n if (this.style) {\n this.styleEl = document.createElement('style');\n this.styleEl.innerHTML = this.style;\n }\n\n this.attachEvents();\n\n if (this.el) {\n this.el.f7Component = this;\n }\n\n resolve(this);\n })\n .catch((err) => {\n reject(err);\n });\n });\n }\n\n on(eventName, handler) {\n if (!this.__eventHandlers) return;\n this.__eventHandlers.push({ eventName, handler });\n }\n\n once(eventName, handler) {\n if (!this.__eventHandlers) return;\n this.__onceEventHandlers.push({ eventName, handler });\n }\n\n getComponentRef() {\n const self = this;\n return (initialValue) => {\n let value = initialValue;\n const obj = {};\n Object.defineProperty(obj, 'value', {\n get() {\n return value;\n },\n set(v) {\n value = v;\n self.update();\n },\n });\n return obj;\n };\n }\n\n getComponentStore() {\n const { state, _gettersPlain, dispatch } = this.f7.store;\n const $store = {\n state,\n dispatch,\n };\n $store.getters = new Proxy(_gettersPlain, {\n get: (target, prop) => {\n const obj = target[prop];\n const callback = (v) => {\n obj.value = v;\n this.update();\n };\n obj.onUpdated(callback);\n return obj;\n },\n });\n\n return $store;\n }\n\n getComponentContext(includeHooks) {\n const ctx = {\n $f7route: this.context.f7route,\n $f7router: this.context.f7router,\n $h,\n $,\n $id: this.id,\n $f7: this.f7,\n $f7ready: this.f7ready.bind(this),\n $theme: this.theme,\n $tick: this.tick.bind(this),\n $update: this.update.bind(this),\n $emit: this.emit.bind(this),\n $store: this.getComponentStore(),\n $ref: this.getComponentRef(),\n $el: {},\n };\n Object.defineProperty(ctx.$el, 'value', {\n get: () => {\n return this.$el;\n },\n });\n if (includeHooks)\n Object.assign(ctx, {\n $on: this.on.bind(this),\n $once: this.once.bind(this),\n $onBeforeMount: (handler) => this.__onBeforeMount.push(handler),\n $onMounted: (handler) => this.__onMounted.push(handler),\n $onBeforeUpdate: (handler) => this.__onBeforeUpdate.push(handler),\n $onUpdated: (handler) => this.__onUpdated.push(handler),\n $onBeforeUnmount: (handler) => this.__onBeforeUnmount.push(handler),\n $onUnmounted: (handler) => this.__onUnmounted.push(handler),\n });\n\n return ctx;\n }\n\n render() {\n return this.renderFunction(this.getComponentContext());\n }\n\n emit(name, data) {\n if (!this.el) return;\n this.$el.trigger(name, data);\n }\n\n attachEvents() {\n const { $el } = this;\n if (!this.__eventHandlers) return;\n this.__eventHandlers.forEach(({ eventName, handler }) => {\n $el.on(eventNameToColonCase(eventName), handler);\n });\n this.__onceEventHandlers.forEach(({ eventName, handler }) => {\n $el.once(eventNameToColonCase(eventName), handler);\n });\n }\n\n detachEvents() {\n const { $el } = this;\n if (!this.__eventHandlers) return;\n this.__eventHandlers.forEach(({ eventName, handler }) => {\n $el.on(eventNameToColonCase(eventName), handler);\n });\n this.__onceEventHandlers.forEach(({ eventName, handler }) => {\n $el.once(eventNameToColonCase(eventName), handler);\n });\n }\n\n startUpdateQueue() {\n const window = getWindow();\n if (this.__requestAnimationFrameId) return;\n const update = () => {\n this.hook('onBeforeUpdate');\n const tree = this.render();\n\n // Make Dom\n if (tree) {\n const newVNode = vdom(tree, this, false);\n this.vnode = patch(this.vnode, newVNode);\n }\n };\n this.__requestAnimationFrameId = window.requestAnimationFrame(() => {\n if (this.__updateIsPending) update();\n let resolvers = [...this.__updateQueue];\n this.__updateQueue = [];\n this.__updateIsPending = false;\n window.cancelAnimationFrame(this.__requestAnimationFrameId);\n delete this.__requestAnimationFrameId;\n delete this.__updateIsPending;\n resolvers.forEach((resolver) => resolver());\n resolvers = [];\n });\n }\n\n tick(callback) {\n return new Promise((resolve) => {\n function resolver() {\n resolve();\n if (callback) callback();\n }\n this.__updateQueue.push(resolver);\n this.startUpdateQueue();\n });\n }\n\n update(callback) {\n if (this.__destroyed) return new Promise(() => {});\n return new Promise((resolve) => {\n const resolver = () => {\n resolve();\n if (callback) callback();\n };\n this.__updateIsPending = true;\n this.__updateQueue.push(resolver);\n this.startUpdateQueue();\n });\n }\n\n setState(callback) {\n return this.update(callback);\n }\n\n f7ready(callback) {\n if (this.f7.initialized) {\n callback(this.f7);\n return;\n }\n this.f7.once('init', () => {\n callback(this.f7);\n });\n }\n\n mount(mountMethod) {\n this.hook('onBeforeMount', this.$el);\n if (this.styleEl) $('head').append(this.styleEl);\n if (mountMethod) mountMethod(this.el);\n this.hook('onMounted', this.$el);\n }\n\n destroy() {\n if (this.__destroyed) return;\n const window = getWindow();\n this.hook('onBeforeUnmount');\n\n if (this.styleEl) $(this.styleEl).remove();\n\n this.detachEvents();\n this.hook('onUnmounted');\n // Delete component instance\n if (this.el && this.el.f7Component) {\n this.el.f7Component = null;\n delete this.el.f7Component;\n }\n // Patch with empty node\n if (this.vnode) {\n this.vnode = patch(this.vnode, { sel: this.vnode.sel, data: {} });\n }\n // Clear update queue\n window.cancelAnimationFrame(this.__requestAnimationFrameId);\n this.__updateQueue = [];\n this.__eventHandlers = [];\n this.__onceEventHandlers = [];\n this.__onBeforeMount = [];\n this.__onMounted = [];\n this.__onBeforeUpdate = [];\n this.__onUpdated = [];\n this.__onBeforeUnmount = [];\n this.__onUnmounted = [];\n // Delete all props\n deleteProps(this);\n this.__destroyed = true;\n }\n\n hook(name, ...args) {\n if (this.__destroyed) return;\n this[`__${name}`].forEach((handler) => {\n handler(...args);\n });\n }\n}\n\nComponent.$jsx = $jsx;\n\nexport default Component;\n","import Component from './component-class.js';\nimport parseComponent from './parse-component.js';\nimport customComponents from './custom-components.js';\nimport $jsx from './$jsx.js';\n\nfunction registerComponent(tagName, component) {\n customComponents[tagName] = component;\n}\n\nfunction unregisterComponent(tagName) {\n delete customComponents[tagName];\n}\n\nexport { Component, $jsx };\nexport default {\n name: 'component',\n static: {\n Component,\n 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.js';\nimport { id } from '../../shared/utils.js';\n\nfunction parseComponent(componentString) {\n const window = getWindow();\n const document = getDocument();\n const componentId = id();\n const callbackCreateName = `f7_component_create_callback_${componentId}`;\n\n // Template\n let template;\n const hasTemplate = componentString.match(/<template([ ]?)([a-z0-9-]*)>/);\n if (hasTemplate) {\n template = componentString\n .split(/<template[ ]?[a-z0-9-]*>/)\n .filter((item, index) => index > 0)\n .join('<template>')\n .split('</template>')\n .filter((item, index, arr) => index < arr.length - 1)\n .join('</template>')\n .replace(/{{#raw}}([ \\n]*)<template/g, '{{#raw}}<template')\n .replace(/\\/template>([ \\n]*){{\\/raw}}/g, '/template>{{/raw}}')\n .replace(/([ \\n])<template/g, '$1{{#raw}}<template')\n .replace(/\\/template>([ \\n])/g, '/template>{{/raw}}$1');\n }\n\n // Parse Styles\n let style = null;\n\n if (componentString.indexOf('<style>') >= 0) {\n style = componentString.split('<style>')[1].split('</style>')[0];\n }\n if (componentString.indexOf('<style scoped>') >= 0) {\n style = componentString.split('<style scoped>')[1].split('</style>')[0];\n }\n\n // Parse Script\n let scriptContent;\n if (componentString.indexOf('<script>') >= 0) {\n const scripts = componentString.split('<script>');\n scriptContent = scripts[scripts.length - 1].split('</script>')[0].trim();\n } else {\n scriptContent = 'return () => {return $render}';\n }\n if (!scriptContent || !scriptContent.trim()) scriptContent = 'return () => {return $render}';\n\n // Parse Template\n if (template) {\n scriptContent = scriptContent\n .replace(\n '$render',\n `function ($$ctx) {\n var $ = $$ctx.$$;\n var $h = $$ctx.$h;\n var $root = $$ctx.$root;\n var $f7 = $$ctx.$f7;\n var $f7route = $$ctx.$f7route;\n var $f7router = $$ctx.$f7router;\n var $theme = $$ctx.$theme;\n var $update = $$ctx.$update;\n var $store = $$ctx.$store;\n var $ref = $$ctx.$ref;\n\n return $h\\`${template}\\`\n }\n `,\n )\n .replace(/export default/g, 'return');\n }\n\n // Execute Script\n scriptContent = `window.${callbackCreateName} = function () {${scriptContent}}`;\n\n // Insert Script El\n const scriptEl = document.createElement('script');\n scriptEl.innerHTML = scriptContent;\n $('head').append(scriptEl);\n\n const component = window[callbackCreateName]();\n\n // Remove Script El\n $(scriptEl).remove();\n window[callbackCreateName] = null;\n delete window[callbackCreateName];\n\n // Assign Style\n if (style) {\n component.style = style;\n }\n\n // Component ID\n component.id = componentId;\n return component;\n}\n\nexport default parseComponent;\n","import History from '../../shared/history.js';\n\nexport default {\n name: 'history',\n static: {\n history: History,\n },\n on: {\n init() {\n History.init(this);\n },\n },\n};\n","import { getWindow } from 'ssr-window';\nimport { extend } from '../../shared/utils.js';\n\nconst SW = {\n registrations: [],\n register(path, scope) {\n const app = this;\n const window = getWindow();\n\n if (!('serviceWorker' in window.navigator) || !app.serviceWorker.container) {\n return new Promise((resolve, reject) => {\n reject(new Error('Service worker is not supported'));\n });\n }\n return new Promise((resolve, reject) => {\n app.serviceWorker.container\n .register(path, scope ? { scope } : {})\n .then((reg) => {\n SW.registrations.push(reg);\n app.emit('serviceWorkerRegisterSuccess', reg);\n resolve(reg);\n })\n .catch((error) => {\n app.emit('serviceWorkerRegisterError', error);\n reject(error);\n });\n });\n },\n unregister(registration) {\n const app = this;\n const window = getWindow();\n if (!('serviceWorker' in window.navigator) || !app.serviceWorker.container) {\n return new Promise((resolve, reject) => {\n reject(new Error('Service worker is not supported'));\n });\n }\n let registrations;\n if (!registration) registrations = SW.registrations;\n else if (Array.isArray(registration)) registrations = registration;\n else registrations = [registration];\n return Promise.all(\n registrations.map(\n (reg) =>\n new Promise((resolve, reject) => {\n reg\n .unregister()\n .then(() => {\n if (SW.registrations.indexOf(reg) >= 0) {\n SW.registrations.splice(SW.registrations.indexOf(reg), 1);\n }\n app.emit('serviceWorkerUnregisterSuccess', reg);\n resolve();\n })\n .catch((error) => {\n app.emit('serviceWorkerUnregisterError', reg, error);\n reject(error);\n });\n }),\n ),\n );\n },\n};\n\nexport default {\n name: 'sw',\n params: {\n serviceWorker: {\n path: undefined,\n scope: undefined,\n },\n },\n create() {\n const app = this;\n const window = getWindow();\n extend(app, {\n serviceWorker: {\n container: 'serviceWorker' in window.navigator ? window.navigator.serviceWorker : undefined,\n registrations: SW.registrations,\n register: SW.register.bind(app),\n unregister: SW.unregister.bind(app),\n },\n });\n },\n on: {\n init() {\n const window = getWindow();\n if (!('serviceWorker' in window.navigator)) return;\n const app = this;\n if (app.device.cordova || (window.Capacitor && window.Capacitor.isNative)) return;\n if (!app.serviceWorker.container) return;\n const paths = app.params.serviceWorker.path;\n const scope = app.params.serviceWorker.scope;\n if (!paths || (Array.isArray(paths) && !paths.length)) return;\n const toRegister = Array.isArray(paths) ? paths : [paths];\n toRegister.forEach((path) => {\n app.serviceWorker.register(path, scope);\n });\n },\n },\n};\n","/* eslint-disable no-underscore-dangle */\nimport { extend } from '../../shared/utils.js';\n\nfunction createStore(storeParams = {}) {\n const store = {\n __store: true,\n };\n const originalState = { ...(storeParams.state || {}) };\n const actions = { ...(storeParams.actions || {}) };\n const getters = { ...(storeParams.getters || {}) };\n const state = extend({}, originalState);\n\n let propsQueue = [];\n const gettersDependencies = {};\n const gettersCallbacks = {};\n\n Object.keys(getters).forEach((getterKey) => {\n gettersDependencies[getterKey] = [];\n gettersCallbacks[getterKey] = [];\n });\n\n const getGetterValue = (getterKey) => {\n return getters[getterKey]({ state: store.state });\n };\n\n const addGetterDependencies = (getterKey, deps) => {\n if (!gettersDependencies[getterKey]) gettersDependencies[getterKey] = [];\n deps.forEach((dep) => {\n if (gettersDependencies[getterKey].indexOf(dep) < 0) {\n gettersDependencies[getterKey].push(dep);\n }\n });\n };\n\n const addGetterCallback = (getterKey, callback) => {\n if (!gettersCallbacks[getterKey]) gettersCallbacks[getterKey] = [];\n gettersCallbacks[getterKey].push(callback);\n };\n\n const runGetterCallbacks = (stateKey) => {\n const keys = Object.keys(gettersDependencies).filter((getterKey) => {\n return gettersDependencies[getterKey].indexOf(stateKey) >= 0;\n });\n keys.forEach((getterKey) => {\n if (!gettersCallbacks[getterKey] || !gettersCallbacks[getterKey].length) return;\n gettersCallbacks[getterKey].forEach((callback) => {\n callback(getGetterValue(getterKey));\n });\n });\n };\n\n const removeGetterCallback = (callback) => {\n Object.keys(gettersCallbacks).forEach((stateKey) => {\n const callbacks = gettersCallbacks[stateKey];\n\n if (callbacks.indexOf(callback) >= 0) {\n callbacks.splice(callbacks.indexOf(callback), 1);\n }\n });\n };\n\n // eslint-disable-next-line\n store.__removeCallback = (callback) => {\n removeGetterCallback(callback);\n };\n\n const getterValue = (getterKey, addCallback = true) => {\n if (getterKey === 'constructor') return undefined;\n propsQueue = [];\n const value = getGetterValue(getterKey);\n addGetterDependencies(getterKey, propsQueue);\n const onUpdated = (callback) => {\n addGetterCallback(getterKey, callback);\n };\n\n const obj = {\n value,\n onUpdated,\n };\n\n if (!addCallback) {\n return obj;\n }\n\n const callback = (v) => {\n obj.value = v;\n };\n\n obj.__callback = callback;\n addGetterCallback(getterKey, callback);\n // eslint-disable-next-line\n return obj;\n };\n\n store.state = new Proxy(state, {\n set: (target, prop, value) => {\n target[prop] = value;\n runGetterCallbacks(prop);\n return true;\n },\n get: (target, prop) => {\n propsQueue.push(prop);\n return target[prop];\n },\n });\n\n store.getters = new Proxy(getters, {\n set: () => false,\n get: (target, prop) => {\n if (!target[prop]) {\n return undefined;\n }\n return getterValue(prop, true);\n },\n });\n\n store._gettersPlain = new Proxy(getters, {\n set: () => false,\n get: (target, prop) => {\n if (!target[prop]) {\n return undefined;\n }\n return getterValue(prop, false);\n },\n });\n\n store.dispatch = (actionName, data) => {\n return new Promise((resolve, reject) => {\n if (!actions[actionName]) {\n reject();\n throw new Error(`Framework7: Store action \"${actionName}\" is not found`);\n }\n const result = actions[actionName]({ state: store.state, dispatch: store.dispatch }, data);\n resolve(result);\n });\n };\n\n return store;\n}\n\nexport default createStore;\n","import createStore from './create-store.js';\n\nexport { createStore };\nexport default {\n name: 'store',\n static: { createStore },\n proto: { createStore },\n};\n","import { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { bindMethods } from '../../shared/utils.js';\nimport { getDevice } from '../../shared/get-device.js';\n\nconst isCapacitor = () => {\n const window = getWindow();\n return (\n window.Capacitor &&\n window.Capacitor.isNative &&\n window.Capacitor.Plugins &&\n window.Capacitor.Plugins.StatusBar\n );\n};\n\nconst Statusbar = {\n hide() {\n const window = getWindow();\n const device = getDevice();\n if (device.cordova && window.StatusBar) {\n window.StatusBar.hide();\n }\n if (isCapacitor()) {\n window.Capacitor.Plugins.StatusBar.hide();\n }\n },\n show() {\n const window = getWindow();\n const device = getDevice();\n if (device.cordova && window.StatusBar) {\n window.StatusBar.show();\n }\n if (isCapacitor()) {\n window.Capacitor.Plugins.StatusBar.show();\n }\n },\n onClick() {\n const app = this;\n let pageContent;\n if ($('.popup.modal-in').length > 0) {\n // Check for opened popup\n pageContent = $('.popup.modal-in')\n .find('.page:not(.page-previous):not(.page-next):not(.cached)')\n .find('.page-content');\n } else if ($('.panel.panel-in').length > 0) {\n // Check for opened panel\n pageContent = $('.panel.panel-in')\n .find('.page:not(.page-previous):not(.page-next):not(.cached)')\n .find('.page-content');\n } else if ($('.views > .view.tab-active').length > 0) {\n // View in tab bar app layout\n pageContent = $('.views > .view.tab-active')\n .find('.page:not(.page-previous):not(.page-next):not(.cached)')\n .find('.page-content');\n } else if ($('.views').length > 0) {\n pageContent = $('.views')\n .find('.page:not(.page-previous):not(.page-next):not(.cached)')\n .find('.page-content');\n } else {\n pageContent = app.$el\n .children('.view')\n .find('.page:not(.page-previous):not(.page-next):not(.cached)')\n .find('.page-content');\n }\n\n if (pageContent && pageContent.length > 0) {\n // Check for tab\n if (pageContent.hasClass('tab')) {\n pageContent = pageContent.parent('.tabs').children('.page-content.tab-active');\n }\n if (pageContent.length > 0) pageContent.scrollTop(0, 300);\n }\n },\n setTextColor(color) {\n const window = getWindow();\n const device = getDevice();\n if (device.cordova && window.StatusBar) {\n if (color === 'white') {\n window.StatusBar.styleLightContent();\n } else {\n window.StatusBar.styleDefault();\n }\n }\n if (isCapacitor()) {\n if (color === 'white') {\n window.Capacitor.Plugins.StatusBar.setStyle({ style: 'DARK' });\n } else {\n window.Capacitor.Plugins.StatusBar.setStyle({ style: 'LIGHT' });\n }\n }\n },\n setBackgroundColor(color) {\n const window = getWindow();\n const device = getDevice();\n if (device.cordova && window.StatusBar) {\n window.StatusBar.backgroundColorByHexString(color);\n }\n if (isCapacitor()) {\n window.Capacitor.Plugins.StatusBar.setBackgroundColor({ color });\n }\n },\n isVisible() {\n const window = getWindow();\n const device = getDevice();\n return new Promise((resolve) => {\n if (device.cordova && window.StatusBar) {\n resolve(window.StatusBar.isVisible);\n }\n if (isCapacitor()) {\n window.Capacitor.Plugins.StatusBar.getInfo().then((info) => {\n resolve(info.visible);\n });\n }\n resolve(false);\n });\n },\n overlaysWebView(overlays = true) {\n const window = getWindow();\n const device = getDevice();\n if (device.cordova && window.StatusBar) {\n window.StatusBar.overlaysWebView(overlays);\n }\n if (isCapacitor()) {\n window.Capacitor.Plugins.StatusBar.setOverlaysWebView({ overlay: overlays });\n }\n },\n init() {\n const app = this;\n const window = getWindow();\n const device = getDevice();\n const params = app.params.statusbar;\n if (!params.enabled) return;\n const isCordova = device.cordova && window.StatusBar;\n const isCap = isCapacitor();\n\n if (isCordova || isCap) {\n if (params.scrollTopOnClick) {\n $(window).on('statusTap', Statusbar.onClick.bind(app));\n }\n if (device.ios) {\n if (params.iosOverlaysWebView) {\n Statusbar.overlaysWebView(true);\n } else {\n Statusbar.overlaysWebView(false);\n }\n if (params.iosTextColor === 'white') {\n Statusbar.setTextColor('white');\n } else {\n Statusbar.setTextColor('black');\n }\n }\n if (device.android) {\n if (params.androidOverlaysWebView) {\n Statusbar.overlaysWebView(true);\n } else {\n Statusbar.overlaysWebView(false);\n }\n if (params.androidTextColor === 'white') {\n Statusbar.setTextColor('white');\n } else {\n Statusbar.setTextColor('black');\n }\n }\n }\n if (params.iosBackgroundColor && device.ios) {\n Statusbar.setBackgroundColor(params.iosBackgroundColor);\n }\n if (params.androidBackgroundColor && device.android) {\n Statusbar.setBackgroundColor(params.androidBackgroundColor);\n }\n },\n};\n\nexport default {\n name: 'statusbar',\n params: {\n statusbar: {\n enabled: true,\n\n scrollTopOnClick: true,\n\n iosOverlaysWebView: true,\n iosTextColor: 'black',\n iosBackgroundColor: null,\n\n androidOverlaysWebView: false,\n androidTextColor: 'black',\n androidBackgroundColor: null,\n },\n },\n create() {\n const app = this;\n bindMethods(app, {\n statusbar: Statusbar,\n });\n },\n on: {\n init() {\n const app = this;\n Statusbar.init.call(app);\n },\n },\n};\n","import $ from '../../shared/dom7.js';\nimport { extend } from '../../shared/utils.js';\nimport View from './view-class.js';\n\nfunction getCurrentView(app) {\n const $popoverView = $('.popover.modal-in .view');\n const $popupView = $('.popup.modal-in .view');\n const $panelView = $('.panel.panel-in .view');\n let $viewsEl = $('.views');\n if ($viewsEl.length === 0) $viewsEl = app.$el;\n // Find active view as tab\n let $viewEl = $viewsEl.children('.view');\n if ($viewEl.length === 0) {\n $viewEl = $viewsEl.children('.tabs').children('.view');\n }\n // Propably in tabs or split view\n if ($viewEl.length > 1) {\n if ($viewEl.hasClass('tab')) {\n // Tabs\n $viewEl = $viewsEl.children('.view.tab-active');\n if ($viewEl.length === 0) {\n $viewEl = $viewsEl.children('.tabs').children('.view.tab-active');\n }\n } else {\n // Split View, leave appView intact\n }\n }\n if ($popoverView.length > 0 && $popoverView[0].f7View) return $popoverView[0].f7View;\n if ($popupView.length > 0 && $popupView[0].f7View) return $popupView[0].f7View;\n if ($panelView.length > 0 && $panelView[0].f7View) return $panelView[0].f7View;\n if ($viewEl.length > 0) {\n if ($viewEl.length === 1 && $viewEl[0].f7View) return $viewEl[0].f7View;\n if ($viewEl.length > 1) {\n return app.views.main;\n }\n }\n return undefined;\n}\n\nexport default {\n name: 'view',\n params: {\n view: {\n init: true,\n initRouterOnTabShow: false,\n name: undefined,\n main: false,\n router: true,\n linksView: null,\n stackPages: false,\n xhrCache: true,\n xhrCacheIgnore: [],\n xhrCacheIgnoreGetParameters: false,\n xhrCacheDuration: 1000 * 60 * 10, // Ten minutes\n componentCache: true,\n preloadPreviousPage: true,\n allowDuplicateUrls: false,\n reloadPages: false,\n reloadDetail: false,\n masterDetailBreakpoint: 0,\n masterDetailResizable: false,\n removeElements: true,\n removeElementsWithTimeout: false,\n removeElementsTimeout: 0,\n restoreScrollTopOnBack: true,\n unloadTabContent: true,\n passRouteQueryToRequest: true,\n passRouteParamsToRequest: false,\n loadInitialPage: true,\n // Swipe Back\n iosSwipeBack: true,\n iosSwipeBackAnimateShadow: true,\n iosSwipeBackAnimateOpacity: true,\n iosSwipeBackActiveArea: 30,\n iosSwipeBackThreshold: 0,\n mdSwipeBack: false,\n mdSwipeBackAnimateShadow: true,\n mdSwipeBackAnimateOpacity: false,\n mdSwipeBackActiveArea: 30,\n mdSwipeBackThreshold: 0,\n auroraSwipeBack: false,\n auroraSwipeBackAnimateShadow: false,\n auroraSwipeBackAnimateOpacity: true,\n auroraSwipeBackActiveArea: 30,\n auroraSwipeBackThreshold: 0,\n // Push State\n browserHistory: false,\n browserHistoryRoot: undefined,\n browserHistoryAnimate: true,\n browserHistoryAnimateOnLoad: false,\n browserHistorySeparator: '#!',\n browserHistoryOnLoad: true,\n browserHistoryInitialMatch: false,\n browserHistoryStoreHistory: true,\n browserHistoryTabs: 'replace',\n // Animate Pages\n animate: true,\n // iOS Dynamic Navbar\n iosDynamicNavbar: true,\n // Animate iOS Navbar Back Icon\n iosAnimateNavbarBackIcon: true,\n // Delays\n iosPageLoadDelay: 0,\n mdPageLoadDelay: 0,\n auroraPageLoadDelay: 0,\n // Routes hooks\n routesBeforeEnter: null,\n routesBeforeLeave: null,\n },\n },\n static: {\n View,\n },\n create() {\n const app = this;\n extend(app, {\n views: extend([], {\n create(el, params) {\n return new View(app, el, params);\n },\n get(viewEl) {\n const $viewEl = $(viewEl);\n if ($viewEl.length && $viewEl[0].f7View) return $viewEl[0].f7View;\n return undefined;\n },\n }),\n });\n Object.defineProperty(app.views, 'current', {\n enumerable: true,\n configurable: true,\n get() {\n return getCurrentView(app);\n },\n });\n // Alias\n app.view = app.views;\n },\n on: {\n init() {\n const app = this;\n $('.view-init').each((viewEl) => {\n if (viewEl.f7View) return;\n const viewParams = $(viewEl).dataset();\n app.views.create(viewEl, viewParams);\n });\n },\n 'modalOpen panelOpen': function onOpen(instance) {\n const app = this;\n instance.$el.find('.view-init').each((viewEl) => {\n if (viewEl.f7View) return;\n const viewParams = $(viewEl).dataset();\n app.views.create(viewEl, viewParams);\n });\n },\n 'modalBeforeDestroy panelBeforeDestroy': function onClose(instance) {\n if (!instance || !instance.$el) return;\n instance.$el.find('.view-init').each((viewEl) => {\n const view = viewEl.f7View;\n if (!view) return;\n view.destroy();\n });\n },\n },\n vnode: {\n 'view-init': {\n insert(vnode) {\n const app = this;\n const viewEl = vnode.elm;\n if (viewEl.f7View) return;\n const viewParams = $(viewEl).dataset();\n app.views.create(viewEl, viewParams);\n },\n destroy(vnode) {\n const viewEl = vnode.elm;\n const view = viewEl.f7View;\n if (!view) return;\n view.destroy();\n },\n },\n },\n};\n","import $ from '../../shared/dom7.js';\nimport { bindMethods } from '../../shared/utils.js';\nimport { getSupport } from '../../shared/get-support.js';\n\nconst Navbar = {\n size(el) {\n const app = this;\n\n let $el = $(el);\n\n if ($el.hasClass('navbars')) {\n $el = $el.children('.navbar').each((navbarEl) => {\n app.navbar.size(navbarEl);\n });\n return;\n }\n\n const $innerEl = $el.children('.navbar-inner');\n if (!$innerEl.length) return;\n\n const needCenterTitle =\n $innerEl.hasClass('navbar-inner-centered-title') ||\n app.params.navbar[`${app.theme}CenterTitle`];\n const needLeftTitle = app.theme === 'ios' && !app.params.navbar[`${app.theme}CenterTitle`];\n\n if (!needCenterTitle && !needLeftTitle) return;\n\n if (\n $el.hasClass('stacked') ||\n $el.parents('.stacked').length > 0 ||\n $el.parents('.tab:not(.tab-active)').length > 0 ||\n $el.parents('.popup:not(.modal-in)').length > 0\n ) {\n return;\n }\n\n if (app.theme !== 'ios' && app.params.navbar[`${app.theme}CenterTitle`]) {\n $innerEl.addClass('navbar-inner-centered-title');\n }\n if (app.theme === 'ios' && !app.params.navbar.iosCenterTitle) {\n $innerEl.addClass('navbar-inner-left-title');\n }\n\n const $viewEl = $el.parents('.view').eq(0);\n const left = app.rtl ? $innerEl.children('.right') : $innerEl.children('.left');\n const right = app.rtl ? $innerEl.children('.left') : $innerEl.children('.right');\n const title = $innerEl.children('.title');\n const subnavbar = $innerEl.children('.subnavbar');\n const noLeft = left.length === 0;\n const noRight = right.length === 0;\n const leftWidth = noLeft ? 0 : left.outerWidth(true);\n const rightWidth = noRight ? 0 : right.outerWidth(true);\n const titleWidth = title.outerWidth(true);\n const navbarStyles = $innerEl.styles();\n const navbarWidth = $innerEl[0].offsetWidth;\n const navbarInnerWidth =\n navbarWidth -\n parseInt(navbarStyles.paddingLeft, 10) -\n parseInt(navbarStyles.paddingRight, 10);\n const isPrevious = $el.hasClass('navbar-previous');\n const sliding = $innerEl.hasClass('sliding');\n\n let router;\n let dynamicNavbar;\n\n if ($viewEl.length > 0 && $viewEl[0].f7View) {\n router = $viewEl[0].f7View.router;\n dynamicNavbar = router && router.dynamicNavbar;\n }\n\n let currLeft;\n let diff;\n if (noRight) {\n currLeft = navbarInnerWidth - titleWidth;\n }\n if (noLeft) {\n currLeft = 0;\n }\n if (!noLeft && !noRight) {\n currLeft = (navbarInnerWidth - rightWidth - titleWidth + leftWidth) / 2;\n }\n let requiredLeft = (navbarInnerWidth - titleWidth) / 2;\n if (navbarInnerWidth - leftWidth - rightWidth > titleWidth) {\n if (requiredLeft < leftWidth) {\n requiredLeft = leftWidth;\n }\n if (requiredLeft + titleWidth > navbarInnerWidth - rightWidth) {\n requiredLeft = navbarInnerWidth - rightWidth - titleWidth;\n }\n diff = requiredLeft - currLeft;\n } else {\n diff = 0;\n }\n\n // RTL inverter\n const inverter = app.rtl ? -1 : 1;\n\n if (dynamicNavbar && app.theme === 'ios') {\n if (title.hasClass('sliding') || (title.length > 0 && sliding)) {\n let titleLeftOffset = -(currLeft + diff) * inverter;\n const titleRightOffset = (navbarInnerWidth - currLeft - diff - titleWidth) * inverter;\n\n if (isPrevious) {\n if (router && router.params.iosAnimateNavbarBackIcon) {\n const activeNavbarBackLink = $el\n .parent()\n .find('.navbar-current')\n .children('.left.sliding')\n .find('.back .icon ~ span');\n if (activeNavbarBackLink.length > 0) {\n titleLeftOffset += activeNavbarBackLink[0].offsetLeft;\n }\n }\n }\n title[0].f7NavbarLeftOffset = titleLeftOffset;\n title[0].f7NavbarRightOffset = titleRightOffset;\n }\n if (!noLeft && (left.hasClass('sliding') || sliding)) {\n if (app.rtl) {\n left[0].f7NavbarLeftOffset = (-(navbarInnerWidth - left[0].offsetWidth) / 2) * inverter;\n left[0].f7NavbarRightOffset = leftWidth * inverter;\n } else {\n left[0].f7NavbarLeftOffset = -leftWidth;\n left[0].f7NavbarRightOffset = (navbarInnerWidth - left[0].offsetWidth) / 2;\n if (\n router &&\n router.params.iosAnimateNavbarBackIcon &&\n left.find('.back .icon').length > 0\n ) {\n if (left.find('.back .icon ~ span').length) {\n const leftOffset = left[0].f7NavbarLeftOffset;\n const rightOffset = left[0].f7NavbarRightOffset;\n left[0].f7NavbarLeftOffset = 0;\n left[0].f7NavbarRightOffset = 0;\n left.find('.back .icon ~ span')[0].f7NavbarLeftOffset = leftOffset;\n left.find('.back .icon ~ span')[0].f7NavbarRightOffset =\n rightOffset - left.find('.back .icon')[0].offsetWidth;\n }\n }\n }\n }\n if (!noRight && (right.hasClass('sliding') || sliding)) {\n if (app.rtl) {\n right[0].f7NavbarLeftOffset = -rightWidth * inverter;\n right[0].f7NavbarRightOffset = ((navbarInnerWidth - right[0].offsetWidth) / 2) * inverter;\n } else {\n right[0].f7NavbarLeftOffset = -(navbarInnerWidth - right[0].offsetWidth) / 2;\n right[0].f7NavbarRightOffset = rightWidth;\n }\n }\n if (subnavbar.length && (subnavbar.hasClass('sliding') || sliding)) {\n subnavbar[0].f7NavbarLeftOffset = app.rtl\n ? subnavbar[0].offsetWidth\n : -subnavbar[0].offsetWidth;\n subnavbar[0].f7NavbarRightOffset = -subnavbar[0].f7NavbarLeftOffset;\n }\n }\n\n // Center title\n if (needCenterTitle) {\n let titleLeft = diff;\n if (app.rtl && noLeft && noRight && title.length > 0) titleLeft = -titleLeft;\n title.css({ left: `${titleLeft}px` });\n }\n },\n hide(el, animate = true, hideStatusbar = false, hideOnlyCurrent = false) {\n const app = this;\n let $el = $(el);\n const isDynamic = $el.hasClass('navbar') && $el.parent('.navbars').length && !hideOnlyCurrent;\n if (isDynamic) $el = $el.parents('.navbars');\n if (!$el.length) return;\n if ($el.hasClass('navbar-hidden')) return;\n let className = `navbar-hidden${animate ? ' navbar-transitioning' : ''}`;\n const currentIsLarge = isDynamic\n ? $el.find('.navbar-current .title-large').length\n : $el.find('.title-large').length;\n if (currentIsLarge) {\n className += ' navbar-large-hidden';\n }\n if (hideStatusbar) {\n className += ' navbar-hidden-statusbar';\n }\n $el.transitionEnd(() => {\n $el.removeClass('navbar-transitioning');\n });\n $el.addClass(className);\n if (isDynamic) {\n $el.children('.navbar').each((subEl) => {\n $(subEl).trigger('navbar:hide');\n app.emit('navbarHide', subEl);\n });\n } else {\n $el.trigger('navbar:hide');\n app.emit('navbarHide', $el[0]);\n }\n },\n show(el = '.navbar-hidden', animate = true, hideOnlyCurrent = false) {\n const app = this;\n let $el = $(el);\n const isDynamic = $el.hasClass('navbar') && $el.parent('.navbars').length && !hideOnlyCurrent;\n if (isDynamic) $el = $el.parents('.navbars');\n if (!$el.length) return;\n if (!$el.hasClass('navbar-hidden')) return;\n if (animate) {\n $el.addClass('navbar-transitioning');\n $el.transitionEnd(() => {\n $el.removeClass('navbar-transitioning');\n });\n }\n $el.removeClass('navbar-hidden navbar-large-hidden navbar-hidden-statusbar');\n if (isDynamic) {\n $el.children('.navbar').each((subEl) => {\n $(subEl).trigger('navbar:show');\n app.emit('navbarShow', subEl);\n });\n } else {\n $el.trigger('navbar:show');\n app.emit('navbarShow', $el[0]);\n }\n },\n getElByPage(page) {\n let $pageEl;\n let $navbarEl;\n let pageData;\n if (page.$navbarEl || page.$el) {\n pageData = page;\n $pageEl = page.$el;\n } else {\n $pageEl = $(page);\n if ($pageEl.length > 0) pageData = $pageEl[0].f7Page;\n }\n if (pageData && pageData.$navbarEl && pageData.$navbarEl.length > 0) {\n $navbarEl = pageData.$navbarEl;\n } else if ($pageEl) {\n $navbarEl = $pageEl.children('.navbar');\n }\n if (!$navbarEl || ($navbarEl && $navbarEl.length === 0)) return undefined;\n return $navbarEl[0];\n },\n getPageByEl(navbarEl) {\n const $navbarEl = $(navbarEl);\n if ($navbarEl.parents('.page').length) {\n return $navbarEl.parents('.page')[0];\n }\n let pageEl;\n $navbarEl\n .parents('.view')\n .find('.page')\n .each((el) => {\n if (el && el.f7Page && el.f7Page.navbarEl && $navbarEl[0] === el.f7Page.navbarEl) {\n pageEl = el;\n }\n });\n return pageEl;\n },\n\n collapseLargeTitle(navbarEl) {\n const app = this;\n let $navbarEl = $(navbarEl);\n if ($navbarEl.hasClass('navbars')) {\n $navbarEl = $navbarEl.find('.navbar');\n if ($navbarEl.length > 1) {\n $navbarEl = $(navbarEl).find('.navbar-large.navbar-current');\n }\n if ($navbarEl.length > 1 || !$navbarEl.length) {\n return;\n }\n }\n const $pageEl = $(app.navbar.getPageByEl($navbarEl));\n $navbarEl.addClass('navbar-large-collapsed');\n $pageEl.eq(0).addClass('page-with-navbar-large-collapsed').trigger('page:navbarlargecollapsed');\n app.emit('pageNavbarLargeCollapsed', $pageEl[0]);\n $navbarEl.trigger('navbar:collapse');\n app.emit('navbarCollapse', $navbarEl[0]);\n },\n expandLargeTitle(navbarEl) {\n const app = this;\n let $navbarEl = $(navbarEl);\n if ($navbarEl.hasClass('navbars')) {\n $navbarEl = $navbarEl.find('.navbar-large');\n if ($navbarEl.length > 1) {\n $navbarEl = $(navbarEl).find('.navbar-large.navbar-current');\n }\n if ($navbarEl.length > 1 || !$navbarEl.length) {\n return;\n }\n }\n const $pageEl = $(app.navbar.getPageByEl($navbarEl));\n $navbarEl.removeClass('navbar-large-collapsed');\n $pageEl\n .eq(0)\n .removeClass('page-with-navbar-large-collapsed')\n .trigger('page:navbarlargeexpanded');\n app.emit('pageNavbarLargeExpanded', $pageEl[0]);\n $navbarEl.trigger('navbar:expand');\n app.emit('navbarExpand', $navbarEl[0]);\n },\n toggleLargeTitle(navbarEl) {\n const app = this;\n let $navbarEl = $(navbarEl);\n if ($navbarEl.hasClass('navbars')) {\n $navbarEl = $navbarEl.find('.navbar-large');\n if ($navbarEl.length > 1) {\n $navbarEl = $(navbarEl).find('.navbar-large.navbar-current');\n }\n if ($navbarEl.length > 1 || !$navbarEl.length) {\n return;\n }\n }\n if ($navbarEl.hasClass('navbar-large-collapsed')) {\n app.navbar.expandLargeTitle($navbarEl);\n } else {\n app.navbar.collapseLargeTitle($navbarEl);\n }\n },\n initNavbarOnScroll(pageEl, navbarEl, needHide, needCollapse, needTransparent) {\n const app = this;\n const support = getSupport();\n const $pageEl = $(pageEl);\n const $navbarEl = $(navbarEl);\n const $titleLargeEl = $navbarEl.find('.title-large');\n const isLarge = $titleLargeEl.length || $navbarEl.hasClass('.navbar-large');\n let navbarHideHeight = 44;\n const snapPageScrollToLargeTitle = app.params.navbar.snapPageScrollToLargeTitle;\n const snapPageScrollToTransparentNavbar = app.params.navbar.snapPageScrollToTransparentNavbar;\n\n let previousScrollTop;\n let currentScrollTop;\n\n let scrollHeight;\n let offsetHeight;\n let reachEnd;\n let action;\n let navbarHidden;\n\n let navbarCollapsed;\n let navbarTitleLargeHeight;\n\n let navbarOffsetHeight;\n\n if (needCollapse || (needHide && isLarge)) {\n navbarTitleLargeHeight = $navbarEl.css('--f7-navbar-large-title-height');\n\n if (navbarTitleLargeHeight && navbarTitleLargeHeight.indexOf('px') >= 0) {\n navbarTitleLargeHeight = parseInt(navbarTitleLargeHeight, 10);\n if (Number.isNaN(navbarTitleLargeHeight) && $titleLargeEl.length) {\n navbarTitleLargeHeight = $titleLargeEl[0].offsetHeight;\n } else if (Number.isNaN(navbarTitleLargeHeight)) {\n if (app.theme === 'ios') navbarTitleLargeHeight = 52;\n else if (app.theme === 'md') navbarTitleLargeHeight = 48;\n else if (app.theme === 'aurora') navbarTitleLargeHeight = 38;\n }\n } else if ($titleLargeEl.length) {\n navbarTitleLargeHeight = $titleLargeEl[0].offsetHeight;\n } else {\n // eslint-disable-next-line\n if (app.theme === 'ios') navbarTitleLargeHeight = 52;\n else if (app.theme === 'md') navbarTitleLargeHeight = 48;\n else if (app.theme === 'aurora') navbarTitleLargeHeight = 38;\n }\n }\n\n if (needHide && isLarge) {\n navbarHideHeight += navbarTitleLargeHeight;\n }\n\n let scrollChanged;\n let scrollContent;\n let scrollTimeoutId;\n let touchEndTimeoutId;\n const touchSnapTimeout = 70;\n const desktopSnapTimeout = 300;\n\n function calcScrollableDistance() {\n $pageEl.find('.page-content').each((pageContentEl) => {\n pageContentEl.f7ScrollableDistance =\n pageContentEl.scrollHeight - pageContentEl.offsetHeight;\n });\n }\n\n function snapLargeNavbar() {\n const inSearchbarExpanded = $navbarEl.hasClass('with-searchbar-expandable-enabled');\n if (inSearchbarExpanded) return;\n if (!scrollContent || currentScrollTop < 0) return;\n if (\n currentScrollTop >= navbarTitleLargeHeight / 2 &&\n currentScrollTop < navbarTitleLargeHeight\n ) {\n $(scrollContent).scrollTop(navbarTitleLargeHeight, 100);\n } else if (currentScrollTop < navbarTitleLargeHeight) {\n $(scrollContent).scrollTop(0, 200);\n }\n }\n\n function snapTransparentNavbar() {\n const inSearchbarExpanded = $navbarEl.hasClass('with-searchbar-expandable-enabled');\n if (inSearchbarExpanded) return;\n if (!scrollContent || currentScrollTop < 0) return;\n if (currentScrollTop >= navbarOffsetHeight / 2 && currentScrollTop < navbarOffsetHeight) {\n $(scrollContent).scrollTop(navbarOffsetHeight, 100);\n } else if (currentScrollTop < navbarOffsetHeight) {\n $(scrollContent).scrollTop(0, 200);\n }\n }\n\n function handleNavbarTransparent() {\n const isHidden =\n $navbarEl.hasClass('navbar-hidden') ||\n $navbarEl.parent('.navbars').hasClass('navbar-hidden');\n const inSearchbarExpanded = $navbarEl.hasClass('with-searchbar-expandable-enabled');\n if (inSearchbarExpanded || isHidden) return;\n if (!navbarOffsetHeight) {\n navbarOffsetHeight = navbarEl.offsetHeight;\n }\n let opacity = currentScrollTop / navbarOffsetHeight;\n const notTransparent = $navbarEl.hasClass('navbar-transparent-visible');\n opacity = Math.max(Math.min(opacity, 1), 0);\n\n if ((notTransparent && opacity === 1) || (!notTransparent && opacity === 0)) {\n $navbarEl.find('.navbar-bg, .title').css('opacity', '');\n return;\n }\n if (notTransparent && opacity === 0) {\n $navbarEl.trigger('navbar:transparenthide');\n app.emit('navbarTransparentHide', $navbarEl[0]);\n $navbarEl.removeClass('navbar-transparent-visible');\n $navbarEl.find('.navbar-bg, .title').css('opacity', '');\n return;\n }\n if (!notTransparent && opacity === 1) {\n $navbarEl.trigger('navbar:transparentshow');\n app.emit('navbarTransparentShow', $navbarEl[0]);\n $navbarEl.addClass('navbar-transparent-visible');\n $navbarEl.find('.navbar-bg, .title').css('opacity', '');\n return;\n }\n\n $navbarEl.find('.navbar-bg, .title').css('opacity', opacity);\n\n if (snapPageScrollToTransparentNavbar) {\n if (!support.touch) {\n clearTimeout(scrollTimeoutId);\n scrollTimeoutId = setTimeout(() => {\n snapTransparentNavbar();\n }, desktopSnapTimeout);\n } else if (touchEndTimeoutId) {\n clearTimeout(touchEndTimeoutId);\n touchEndTimeoutId = null;\n touchEndTimeoutId = setTimeout(() => {\n snapTransparentNavbar();\n clearTimeout(touchEndTimeoutId);\n touchEndTimeoutId = null;\n }, touchSnapTimeout);\n }\n }\n }\n\n let previousCollapseProgress = null;\n let collapseProgress = null;\n function handleLargeNavbarCollapse(pageContentEl) {\n const isHidden =\n $navbarEl.hasClass('navbar-hidden') ||\n $navbarEl.parent('.navbars').hasClass('navbar-hidden');\n if (isHidden) return;\n const isLargeTransparent =\n $navbarEl.hasClass('navbar-large-transparent') ||\n ($navbarEl.hasClass('navbar-large') && $navbarEl.hasClass('navbar-transparent'));\n previousCollapseProgress = collapseProgress;\n const scrollableDistance = Math.min(\n navbarTitleLargeHeight,\n pageContentEl.f7ScrollableDistance || navbarTitleLargeHeight,\n );\n collapseProgress = Math.min(Math.max(currentScrollTop / scrollableDistance, 0), 1);\n const previousCollapseWasInMiddle =\n previousCollapseProgress > 0 && previousCollapseProgress < 1;\n const inSearchbarExpanded = $navbarEl.hasClass('with-searchbar-expandable-enabled');\n if (inSearchbarExpanded) return;\n navbarCollapsed = $navbarEl.hasClass('navbar-large-collapsed');\n if (collapseProgress === 0 && navbarCollapsed) {\n app.navbar.expandLargeTitle($navbarEl[0]);\n } else if (collapseProgress === 1 && !navbarCollapsed) {\n app.navbar.collapseLargeTitle($navbarEl[0]);\n }\n if (\n (collapseProgress === 0 && navbarCollapsed) ||\n (collapseProgress === 0 && previousCollapseWasInMiddle) ||\n (collapseProgress === 1 && !navbarCollapsed) ||\n (collapseProgress === 1 && previousCollapseWasInMiddle)\n ) {\n if (app.theme === 'md') {\n $navbarEl.find('.navbar-inner').css('overflow', '');\n }\n $navbarEl.find('.title').css('opacity', '');\n $navbarEl.find('.title-large-text, .subnavbar').css('transform', '');\n if (isLargeTransparent) {\n $navbarEl.find('.navbar-bg').css('opacity', '');\n } else {\n $navbarEl.find('.navbar-bg').css('transform', '');\n }\n } else if (collapseProgress > 0 && collapseProgress < 1) {\n if (app.theme === 'md') {\n $navbarEl.find('.navbar-inner').css('overflow', 'visible');\n }\n $navbarEl.find('.title').css('opacity', collapseProgress);\n $navbarEl\n .find('.title-large-text, .subnavbar')\n .css(\n 'transform',\n `translate3d(0px, ${-1 * collapseProgress * navbarTitleLargeHeight}px, 0)`,\n );\n if (isLargeTransparent) {\n $navbarEl.find('.navbar-bg').css('opacity', collapseProgress);\n } else {\n $navbarEl\n .find('.navbar-bg')\n .css(\n 'transform',\n `translate3d(0px, ${-1 * collapseProgress * navbarTitleLargeHeight}px, 0)`,\n );\n }\n }\n\n if (snapPageScrollToLargeTitle) {\n if (!support.touch) {\n clearTimeout(scrollTimeoutId);\n scrollTimeoutId = setTimeout(() => {\n snapLargeNavbar();\n }, desktopSnapTimeout);\n } else if (touchEndTimeoutId) {\n clearTimeout(touchEndTimeoutId);\n touchEndTimeoutId = null;\n touchEndTimeoutId = setTimeout(() => {\n snapLargeNavbar();\n clearTimeout(touchEndTimeoutId);\n touchEndTimeoutId = null;\n }, touchSnapTimeout);\n }\n }\n }\n\n function handleTitleHideShow() {\n if ($pageEl.hasClass('page-with-card-opened')) return;\n scrollHeight = scrollContent.scrollHeight;\n offsetHeight = scrollContent.offsetHeight;\n reachEnd = currentScrollTop + offsetHeight >= scrollHeight;\n navbarHidden =\n $navbarEl.hasClass('navbar-hidden') ||\n $navbarEl.parent('.navbars').hasClass('navbar-hidden');\n if (reachEnd) {\n if (app.params.navbar.showOnPageScrollEnd) {\n action = 'show';\n }\n } else if (previousScrollTop > currentScrollTop) {\n if (app.params.navbar.showOnPageScrollTop || currentScrollTop <= navbarHideHeight) {\n action = 'show';\n } else {\n action = 'hide';\n }\n } else if (currentScrollTop > navbarHideHeight) {\n action = 'hide';\n } else {\n action = 'show';\n }\n\n if (action === 'show' && navbarHidden) {\n app.navbar.show($navbarEl, true, true);\n navbarHidden = false;\n } else if (action === 'hide' && !navbarHidden) {\n app.navbar.hide($navbarEl, true, false, true);\n navbarHidden = true;\n }\n previousScrollTop = currentScrollTop;\n }\n\n function handleScroll(e) {\n scrollContent = this;\n if (e && e.target && e.target !== scrollContent) {\n return;\n }\n currentScrollTop = scrollContent.scrollTop;\n scrollChanged = currentScrollTop;\n if (needCollapse) {\n handleLargeNavbarCollapse(scrollContent);\n } else if (needTransparent) {\n handleNavbarTransparent();\n }\n if ($pageEl.hasClass('page-previous')) return;\n if (needHide) {\n handleTitleHideShow();\n }\n }\n function handeTouchStart() {\n scrollChanged = false;\n }\n function handleTouchEnd() {\n clearTimeout(touchEndTimeoutId);\n touchEndTimeoutId = null;\n touchEndTimeoutId = setTimeout(() => {\n if (scrollChanged !== false) {\n if (needTransparent && !needCollapse) {\n snapTransparentNavbar();\n } else {\n snapLargeNavbar();\n }\n clearTimeout(touchEndTimeoutId);\n touchEndTimeoutId = null;\n }\n }, touchSnapTimeout);\n }\n $pageEl.on('scroll', '.page-content', handleScroll, true);\n\n if (\n support.touch &&\n ((needCollapse && snapPageScrollToLargeTitle) ||\n (needTransparent && snapPageScrollToTransparentNavbar))\n ) {\n app.on('touchstart:passive', handeTouchStart);\n app.on('touchend:passive', handleTouchEnd);\n }\n calcScrollableDistance();\n if (needCollapse || needTransparent) {\n $pageEl.find('.page-content').each((pageContentEl) => {\n if (pageContentEl.scrollTop > 0) handleScroll.call(pageContentEl);\n });\n }\n app.on('resize', calcScrollableDistance);\n $pageEl[0].f7DetachNavbarScrollHandlers = function f7DetachNavbarScrollHandlers() {\n app.off('resize', calcScrollableDistance);\n delete $pageEl[0].f7DetachNavbarScrollHandlers;\n $pageEl.off('scroll', '.page-content', handleScroll, true);\n if (\n support.touch &&\n ((needCollapse && snapPageScrollToLargeTitle) ||\n (needTransparent && snapPageScrollToTransparentNavbar))\n ) {\n app.off('touchstart:passive', handeTouchStart);\n app.off('touchend:passive', handleTouchEnd);\n }\n };\n },\n};\nexport default {\n name: 'navbar',\n create() {\n const app = this;\n bindMethods(app, {\n navbar: Navbar,\n });\n },\n params: {\n navbar: {\n scrollTopOnTitleClick: true,\n iosCenterTitle: true,\n mdCenterTitle: false,\n auroraCenterTitle: true,\n hideOnPageScroll: false,\n showOnPageScrollEnd: true,\n showOnPageScrollTop: true,\n collapseLargeTitleOnScroll: true,\n snapPageScrollToLargeTitle: true,\n snapPageScrollToTransparentNavbar: true,\n },\n },\n on: {\n 'panelBreakpoint panelCollapsedBreakpoint panelResize viewResize resize viewMasterDetailBreakpoint':\n function onPanelResize() {\n const app = this;\n $('.navbar').each((navbarEl) => {\n app.navbar.size(navbarEl);\n });\n },\n pageBeforeRemove(page) {\n if (page.$el[0].f7DetachNavbarScrollHandlers) {\n page.$el[0].f7DetachNavbarScrollHandlers();\n }\n },\n pageBeforeIn(page) {\n const app = this;\n if (app.theme !== 'ios') return;\n let $navbarsEl;\n const view = page.$el.parents('.view')[0].f7View;\n const navbarEl = app.navbar.getElByPage(page);\n if (!navbarEl) {\n $navbarsEl = page.$el.parents('.view').children('.navbars');\n } else {\n $navbarsEl = $(navbarEl).parents('.navbars');\n }\n if (page.$el.hasClass('no-navbar') || (view.router.dynamicNavbar && !navbarEl)) {\n const animate = !!(page.pageFrom && page.router.history.length > 0);\n app.navbar.hide($navbarsEl, animate);\n } else {\n app.navbar.show($navbarsEl);\n }\n },\n pageReinit(page) {\n const app = this;\n const $navbarEl = $(app.navbar.getElByPage(page));\n if (!$navbarEl || $navbarEl.length === 0) return;\n app.navbar.size($navbarEl);\n },\n pageInit(page) {\n const app = this;\n const $navbarEl = $(app.navbar.getElByPage(page));\n if (!$navbarEl || $navbarEl.length === 0) return;\n\n // Size\n app.navbar.size($navbarEl);\n\n // Need Collapse On Scroll\n let needCollapseOnScrollHandler;\n if ($navbarEl.find('.title-large').length > 0) {\n $navbarEl.addClass('navbar-large');\n }\n if ($navbarEl.hasClass('navbar-large')) {\n if (app.params.navbar.collapseLargeTitleOnScroll) needCollapseOnScrollHandler = true;\n page.$el.addClass('page-with-navbar-large');\n }\n\n // Need transparent on scroll\n let needTransparentOnScroll;\n if (!needCollapseOnScrollHandler && $navbarEl.hasClass('navbar-transparent')) {\n needTransparentOnScroll = true;\n }\n\n // Need Hide On Scroll\n let needHideOnScrollHandler;\n if (\n app.params.navbar.hideOnPageScroll ||\n page.$el.find('.hide-navbar-on-scroll').length ||\n page.$el.hasClass('hide-navbar-on-scroll') ||\n page.$el.find('.hide-bars-on-scroll').length ||\n page.$el.hasClass('hide-bars-on-scroll')\n ) {\n if (\n page.$el.find('.keep-navbar-on-scroll').length ||\n page.$el.hasClass('keep-navbar-on-scroll') ||\n page.$el.find('.keep-bars-on-scroll').length ||\n page.$el.hasClass('keep-bars-on-scroll')\n ) {\n needHideOnScrollHandler = false;\n } else {\n needHideOnScrollHandler = true;\n }\n }\n\n if (needCollapseOnScrollHandler || needHideOnScrollHandler || needTransparentOnScroll) {\n app.navbar.initNavbarOnScroll(\n page.el,\n $navbarEl[0],\n needHideOnScrollHandler,\n needCollapseOnScrollHandler,\n needTransparentOnScroll,\n );\n }\n },\n 'panelOpen panelSwipeOpen modalOpen': function onPanelModalOpen(instance) {\n const app = this;\n instance.$el.find('.navbar:not(.navbar-previous):not(.stacked)').each((navbarEl) => {\n app.navbar.size(navbarEl);\n });\n },\n tabShow(tabEl) {\n const app = this;\n $(tabEl)\n .find('.navbar:not(.navbar-previous):not(.stacked)')\n .each((navbarEl) => {\n app.navbar.size(navbarEl);\n });\n },\n },\n clicks: {\n '.navbar .title': function onTitleClick($clickedEl, clickedData, e) {\n const app = this;\n if (!app.params.navbar.scrollTopOnTitleClick) return;\n if ($(e.target).closest('a, button').length > 0) {\n return;\n }\n let $pageContentEl;\n\n // Find active page\n const $navbarEl = $clickedEl.parents('.navbar');\n const $navbarsEl = $navbarEl.parents('.navbars');\n\n // Static Layout\n $pageContentEl = $navbarEl.parents('.page-content');\n\n if ($pageContentEl.length === 0) {\n // Fixed Layout\n if ($navbarEl.parents('.page').length > 0) {\n $pageContentEl = $navbarEl.parents('.page').find('.page-content');\n }\n // Through Layout iOS\n if ($pageContentEl.length === 0 && $navbarsEl.length) {\n if ($navbarsEl.nextAll('.page-current:not(.stacked)').length > 0) {\n $pageContentEl = $navbarsEl\n .nextAll('.page-current:not(.stacked)')\n .find('.page-content');\n }\n }\n // Through Layout\n if ($pageContentEl.length === 0) {\n if ($navbarEl.nextAll('.page-current:not(.stacked)').length > 0) {\n $pageContentEl = $navbarEl.nextAll('.page-current:not(.stacked)').find('.page-content');\n }\n }\n }\n if ($pageContentEl && $pageContentEl.length > 0) {\n // Check for tab\n if ($pageContentEl.hasClass('tab')) {\n $pageContentEl = $pageContentEl.parent('.tabs').children('.page-content.tab-active');\n }\n if ($pageContentEl.length > 0) $pageContentEl.scrollTop(0, 300);\n }\n },\n },\n vnode: {\n navbar: {\n postpatch(vnode) {\n const app = this;\n app.navbar.size(vnode.elm);\n },\n },\n },\n};\n","import $ from '../../shared/dom7.js';\nimport { nextFrame, bindMethods } from '../../shared/utils.js';\n\nconst Toolbar = {\n setHighlight(tabbarEl) {\n const app = this;\n const $tabbarEl = $(tabbarEl);\n if (app.theme === 'ios' && !$tabbarEl.hasClass('tabbar-highlight')) return;\n\n if (\n $tabbarEl.length === 0 ||\n !($tabbarEl.hasClass('tabbar') || $tabbarEl.hasClass('tabbar-labels'))\n )\n return;\n\n let $highlightEl = $tabbarEl.find('.tab-link-highlight');\n const tabLinksCount = $tabbarEl.find('.tab-link').length;\n if (tabLinksCount === 0) {\n $highlightEl.remove();\n return;\n }\n\n if ($highlightEl.length === 0) {\n $tabbarEl.children('.toolbar-inner').append('<span class=\"tab-link-highlight\"></span>');\n $highlightEl = $tabbarEl.find('.tab-link-highlight');\n } else if ($highlightEl.next().length) {\n $tabbarEl.children('.toolbar-inner').append($highlightEl);\n }\n\n const $activeLink = $tabbarEl.find('.tab-link-active');\n let highlightWidth;\n let highlightTranslate;\n\n if ($tabbarEl.hasClass('tabbar-scrollable') && $activeLink && $activeLink[0]) {\n highlightWidth = `${$activeLink[0].offsetWidth}px`;\n highlightTranslate = `${$activeLink[0].offsetLeft}px`;\n } else {\n const activeIndex = $activeLink.index();\n highlightWidth = `${100 / tabLinksCount}%`;\n highlightTranslate = `${(app.rtl ? -activeIndex : activeIndex) * 100}%`;\n }\n\n nextFrame(() => {\n $highlightEl.css('width', highlightWidth).transform(`translate3d(${highlightTranslate},0,0)`);\n });\n },\n init(tabbarEl) {\n const app = this;\n app.toolbar.setHighlight(tabbarEl);\n },\n hide(el, animate = true) {\n const app = this;\n const $el = $(el);\n if ($el.hasClass('toolbar-hidden')) return;\n const className = `toolbar-hidden${animate ? ' toolbar-transitioning' : ''}`;\n $el.transitionEnd(() => {\n $el.removeClass('toolbar-transitioning');\n });\n $el.addClass(className);\n $el.trigger('toolbar:hide');\n app.emit('toolbarHide', $el[0]);\n },\n show(el, animate = true) {\n const app = this;\n const $el = $(el);\n if (!$el.hasClass('toolbar-hidden')) return;\n if (animate) {\n $el.addClass('toolbar-transitioning');\n $el.transitionEnd(() => {\n $el.removeClass('toolbar-transitioning');\n });\n }\n $el.removeClass('toolbar-hidden');\n $el.trigger('toolbar:show');\n app.emit('toolbarShow', $el[0]);\n },\n initToolbarOnScroll(pageEl) {\n const app = this;\n const $pageEl = $(pageEl);\n let $toolbarEl = $pageEl.parents('.view').children('.toolbar');\n if ($toolbarEl.length === 0) {\n $toolbarEl = $pageEl.find('.toolbar');\n }\n if ($toolbarEl.length === 0) {\n $toolbarEl = $pageEl.parents('.views').children('.tabbar, .tabbar-labels');\n }\n if ($toolbarEl.length === 0) {\n return;\n }\n\n let previousScrollTop;\n let currentScrollTop;\n\n let scrollHeight;\n let offsetHeight;\n let reachEnd;\n let action;\n let toolbarHidden;\n function handleScroll(e) {\n if ($pageEl.hasClass('page-with-card-opened')) return;\n if ($pageEl.hasClass('page-previous')) return;\n const scrollContent = this;\n if (e && e.target && e.target !== scrollContent) {\n return;\n }\n currentScrollTop = scrollContent.scrollTop;\n scrollHeight = scrollContent.scrollHeight;\n offsetHeight = scrollContent.offsetHeight;\n reachEnd = currentScrollTop + offsetHeight >= scrollHeight;\n toolbarHidden = $toolbarEl.hasClass('toolbar-hidden');\n\n if (reachEnd) {\n if (app.params.toolbar.showOnPageScrollEnd) {\n action = 'show';\n }\n } else if (previousScrollTop > currentScrollTop) {\n if (app.params.toolbar.showOnPageScrollTop || currentScrollTop <= 44) {\n action = 'show';\n } else {\n action = 'hide';\n }\n } else if (currentScrollTop > 44) {\n action = 'hide';\n } else {\n action = 'show';\n }\n\n if (action === 'show' && toolbarHidden) {\n app.toolbar.show($toolbarEl);\n toolbarHidden = false;\n } else if (action === 'hide' && !toolbarHidden) {\n app.toolbar.hide($toolbarEl);\n toolbarHidden = true;\n }\n\n previousScrollTop = currentScrollTop;\n }\n $pageEl.on('scroll', '.page-content', handleScroll, true);\n $pageEl[0].f7ScrollToolbarHandler = handleScroll;\n },\n};\nexport default {\n name: 'toolbar',\n create() {\n const app = this;\n bindMethods(app, {\n toolbar: Toolbar,\n });\n },\n params: {\n toolbar: {\n hideOnPageScroll: false,\n showOnPageScrollEnd: true,\n showOnPageScrollTop: true,\n },\n },\n on: {\n pageBeforeRemove(page) {\n if (page.$el[0].f7ScrollToolbarHandler) {\n page.$el.off('scroll', '.page-content', page.$el[0].f7ScrollToolbarHandler, true);\n }\n },\n pageBeforeIn(page) {\n const app = this;\n let $toolbarEl = page.$el.parents('.view').children('.toolbar');\n if ($toolbarEl.length === 0) {\n $toolbarEl = page.$el.parents('.views').children('.tabbar, .tabbar-labels');\n }\n if ($toolbarEl.length === 0) {\n $toolbarEl = page.$el.find('.toolbar');\n }\n if ($toolbarEl.length === 0) {\n return;\n }\n if (page.$el.hasClass('no-toolbar')) {\n app.toolbar.hide($toolbarEl);\n } else {\n app.toolbar.show($toolbarEl);\n }\n },\n pageInit(page) {\n const app = this;\n page.$el.find('.tabbar, .tabbar-labels').each((tabbarEl) => {\n app.toolbar.init(tabbarEl);\n });\n if (\n app.params.toolbar.hideOnPageScroll ||\n page.$el.find('.hide-toolbar-on-scroll').length ||\n page.$el.hasClass('hide-toolbar-on-scroll') ||\n page.$el.find('.hide-bars-on-scroll').length ||\n page.$el.hasClass('hide-bars-on-scroll')\n ) {\n if (\n page.$el.find('.keep-toolbar-on-scroll').length ||\n page.$el.hasClass('keep-toolbar-on-scroll') ||\n page.$el.find('.keep-bars-on-scroll').length ||\n page.$el.hasClass('keep-bars-on-scroll')\n ) {\n return;\n }\n app.toolbar.initToolbarOnScroll(page.el);\n }\n },\n init() {\n const app = this;\n app.$el.find('.tabbar, .tabbar-labels').each((tabbarEl) => {\n app.toolbar.init(tabbarEl);\n });\n },\n },\n vnode: {\n tabbar: {\n insert(vnode) {\n const app = this;\n app.toolbar.init(vnode.elm);\n },\n },\n },\n};\n","import $ from '../../shared/dom7.js';\n\nexport default {\n name: 'subnavbar',\n on: {\n pageInit(page) {\n if (page.$navbarEl && page.$navbarEl.length && page.$navbarEl.find('.subnavbar').length) {\n page.$el.addClass('page-with-subnavbar');\n }\n const $innerSubnavbars = page.$el.find('.subnavbar').filter((subnavbarEl) => {\n return $(subnavbarEl).parents('.page')[0] === page.$el[0];\n });\n if ($innerSubnavbars.length) {\n page.$el.addClass('page-with-subnavbar');\n }\n },\n },\n};\n","import $ from '../../shared/dom7.js';\n\nexport default class TouchRipple {\n constructor(app, $el, x, y) {\n const ripple = this;\n\n if (!$el) return undefined;\n\n const { left, top, width, height } = $el[0].getBoundingClientRect();\n const center = {\n x: x - left,\n y: y - top,\n };\n let diameter = Math.max((height ** 2 + width ** 2) ** 0.5, 48);\n\n let isInset = false;\n const insetElements = app.params.touch.touchRippleInsetElements || '';\n if (insetElements && $el.is(insetElements)) {\n isInset = true;\n }\n if (isInset) {\n diameter = Math.max(Math.min(width, height), 48);\n }\n\n if (!isInset && $el.css('overflow') === 'hidden') {\n const distanceFromCenter =\n ((center.x - width / 2) ** 2 + (center.y - height / 2) ** 2) ** 0.5;\n const scale = (diameter / 2 + distanceFromCenter) / (diameter / 2);\n ripple.rippleTransform = `translate3d(0px, 0px, 0) scale(${scale})`;\n } else {\n // prettier-ignore\n ripple.rippleTransform = `translate3d(${-center.x + width / 2}px, ${-center.y + height / 2}px, 0) scale(1)`;\n }\n if (isInset) {\n $el.addClass('ripple-inset');\n }\n\n ripple.$rippleWaveEl = $(\n `<div class=\"ripple-wave\" style=\"width: ${diameter}px; height: ${diameter}px; margin-top:-${\n diameter / 2\n }px; margin-left:-${diameter / 2}px; left:${center.x}px; top:${\n center.y\n }px; --f7-ripple-transform: ${ripple.rippleTransform}\"></div>`,\n );\n\n $el.prepend(ripple.$rippleWaveEl);\n\n ripple.$rippleWaveEl.animationEnd(() => {\n if (!ripple.$rippleWaveEl) return;\n if (ripple.$rippleWaveEl.hasClass('ripple-wave-out')) return;\n ripple.$rippleWaveEl.addClass('ripple-wave-in');\n if (ripple.shouldBeRemoved) {\n ripple.out();\n }\n });\n\n return ripple;\n }\n\n destroy() {\n let ripple = this;\n if (ripple.$rippleWaveEl) {\n ripple.$rippleWaveEl.remove();\n }\n Object.keys(ripple).forEach((key) => {\n ripple[key] = null;\n delete ripple[key];\n });\n ripple = null;\n }\n\n out() {\n const ripple = this;\n const { $rippleWaveEl } = this;\n clearTimeout(ripple.removeTimeout);\n $rippleWaveEl.addClass('ripple-wave-out');\n\n ripple.removeTimeout = setTimeout(() => {\n ripple.destroy();\n }, 300);\n\n $rippleWaveEl.animationEnd(() => {\n clearTimeout(ripple.removeTimeout);\n ripple.destroy();\n });\n }\n\n remove() {\n const ripple = this;\n if (ripple.shouldBeRemoved) return;\n ripple.removeTimeout = setTimeout(() => {\n ripple.destroy();\n }, 400);\n ripple.shouldBeRemoved = true;\n if (ripple.$rippleWaveEl.hasClass('ripple-wave-in')) {\n ripple.out();\n }\n }\n}\n","import TouchRipple from './touch-ripple-class.js';\n\nexport default {\n name: 'touch-ripple',\n static: {\n TouchRipple,\n },\n create() {\n const app = this;\n app.touchRipple = {\n create(...args) {\n return new TouchRipple(...args);\n },\n };\n },\n};\n","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { extend, deleteProps } from '../../shared/utils.js';\nimport Framework7Class from '../../shared/class.js';\n\nconst openedModals = [];\nconst dialogsQueue = [];\nfunction clearDialogsQueue() {\n if (dialogsQueue.length === 0) return;\n const dialog = dialogsQueue.shift();\n dialog.open();\n}\nclass Modal extends Framework7Class {\n constructor(app, params) {\n super(params, [app]);\n\n const modal = this;\n\n const defaults = {};\n\n // Extend defaults with modules params\n modal.useModulesParams(defaults);\n\n modal.params = extend(defaults, params);\n modal.opened = false;\n\n let $containerEl = modal.params.containerEl ? $(modal.params.containerEl).eq(0) : app.$el;\n if (!$containerEl.length) $containerEl = app.$el;\n\n modal.$containerEl = $containerEl;\n modal.containerEl = $containerEl[0];\n\n // Install Modules\n modal.useModules();\n\n return this;\n }\n\n onOpen() {\n const modal = this;\n modal.opened = true;\n openedModals.push(modal);\n $('html').addClass(`with-modal-${modal.type.toLowerCase()}`);\n modal.$el.trigger(`modal:open ${modal.type.toLowerCase()}:open`);\n modal.emit(`local::open modalOpen ${modal.type}Open`, modal);\n }\n\n onOpened() {\n const modal = this;\n modal.$el.trigger(`modal:opened ${modal.type.toLowerCase()}:opened`);\n modal.emit(`local::opened modalOpened ${modal.type}Opened`, modal);\n }\n\n onClose() {\n const modal = this;\n modal.opened = false;\n if (!modal.type || !modal.$el) return;\n openedModals.splice(openedModals.indexOf(modal), 1);\n $('html').removeClass(`with-modal-${modal.type.toLowerCase()}`);\n modal.$el.trigger(`modal:close ${modal.type.toLowerCase()}:close`);\n modal.emit(`local::close modalClose ${modal.type}Close`, modal);\n }\n\n onClosed() {\n const modal = this;\n if (!modal.type || !modal.$el) return;\n modal.$el.removeClass('modal-out');\n modal.$el.hide();\n if (\n modal.params.backdrop &&\n (modal.params.backdropUnique || modal.forceBackdropUnique) &&\n modal.$backdropEl\n ) {\n modal.$backdropEl.remove();\n }\n modal.$el.trigger(`modal:closed ${modal.type.toLowerCase()}:closed`);\n modal.emit(`local::closed modalClosed ${modal.type}Closed`, modal);\n }\n\n open(animateModal) {\n const modal = this;\n const document = getDocument();\n const app = modal.app;\n const $el = modal.$el;\n const $backdropEl = modal.$backdropEl;\n const type = modal.type;\n let animate = true;\n if (typeof animateModal !== 'undefined') animate = animateModal;\n else if (typeof modal.params.animate !== 'undefined') {\n animate = modal.params.animate;\n }\n\n if (!$el || $el.hasClass('modal-in')) {\n if (animateModal === false && $el[0] && type !== 'dialog') {\n $el[0].style.display = 'block';\n }\n return modal;\n }\n\n if (type === 'dialog' && app.params.modal.queueDialogs) {\n let pushToQueue;\n if ($('.dialog.modal-in').length > 0) {\n pushToQueue = true;\n } else if (openedModals.length > 0) {\n openedModals.forEach((openedModal) => {\n if (openedModal.type === 'dialog') pushToQueue = true;\n });\n }\n if (pushToQueue) {\n dialogsQueue.push(modal);\n return modal;\n }\n }\n\n const $modalParentEl = $el.parent();\n const wasInDom = $el.parents(document).length > 0;\n if (!$modalParentEl.is(modal.$containerEl)) {\n modal.$containerEl.append($el);\n modal.once(`${type}Closed`, () => {\n if (wasInDom) {\n $modalParentEl.append($el);\n } else {\n $el.remove();\n }\n });\n }\n // Show Modal\n $el.show();\n\n if (\n modal.params.backdrop &&\n (modal.params.backdropUnique || modal.forceBackdropUnique) &&\n modal.$backdropEl\n ) {\n modal.$backdropEl.insertBefore($el);\n }\n\n /* eslint no-underscore-dangle: [\"error\", { \"allow\": [\"_clientLeft\"] }] */\n modal._clientLeft = $el[0].clientLeft;\n\n // Modal\n function transitionEnd() {\n if ($el.hasClass('modal-out')) {\n modal.onClosed();\n } else if ($el.hasClass('modal-in')) {\n modal.onOpened();\n }\n }\n if (animate) {\n if ($backdropEl) {\n $backdropEl.removeClass('not-animated');\n $backdropEl.addClass('backdrop-in');\n }\n $el.animationEnd(() => {\n transitionEnd();\n });\n $el.transitionEnd(() => {\n transitionEnd();\n });\n $el.removeClass('modal-out not-animated').addClass('modal-in');\n modal.onOpen();\n } else {\n if ($backdropEl) {\n $backdropEl.addClass('backdrop-in not-animated');\n }\n $el.removeClass('modal-out').addClass('modal-in not-animated');\n modal.onOpen();\n modal.onOpened();\n }\n\n return modal;\n }\n\n close(animateModal) {\n const modal = this;\n const $el = modal.$el;\n const $backdropEl = modal.$backdropEl;\n\n let animate = true;\n if (typeof animateModal !== 'undefined') animate = animateModal;\n else if (typeof modal.params.animate !== 'undefined') {\n animate = modal.params.animate;\n }\n\n if (!$el || !$el.hasClass('modal-in')) {\n if (dialogsQueue.indexOf(modal) >= 0) {\n dialogsQueue.splice(dialogsQueue.indexOf(modal), 1);\n }\n return modal;\n }\n\n // backdrop\n if ($backdropEl) {\n let needToHideBackdrop = true;\n if (modal.type === 'popup') {\n modal.$el\n .prevAll('.popup.modal-in')\n .add(modal.$el.nextAll('.popup.modal-in'))\n .each((popupEl) => {\n const popupInstance = popupEl.f7Modal;\n if (!popupInstance) return;\n if (\n popupInstance.params.closeByBackdropClick &&\n popupInstance.params.backdrop &&\n popupInstance.backdropEl === modal.backdropEl\n ) {\n needToHideBackdrop = false;\n }\n });\n }\n if (needToHideBackdrop) {\n $backdropEl[animate ? 'removeClass' : 'addClass']('not-animated');\n $backdropEl.removeClass('backdrop-in');\n }\n }\n\n // Modal\n $el[animate ? 'removeClass' : 'addClass']('not-animated');\n\n function transitionEnd() {\n if ($el.hasClass('modal-out')) {\n modal.onClosed();\n } else if ($el.hasClass('modal-in')) {\n modal.onOpened();\n }\n }\n if (animate) {\n $el.animationEnd(() => {\n transitionEnd();\n });\n $el.transitionEnd(() => {\n transitionEnd();\n });\n $el.removeClass('modal-in').addClass('modal-out');\n // Emit close\n modal.onClose();\n } else {\n $el.addClass('not-animated').removeClass('modal-in').addClass('modal-out');\n // Emit close\n modal.onClose();\n modal.onClosed();\n }\n\n if (modal.type === 'dialog') {\n clearDialogsQueue();\n }\n\n return modal;\n }\n\n destroy() {\n const modal = this;\n if (modal.destroyed) return;\n modal.emit(`local::beforeDestroy modalBeforeDestroy ${modal.type}BeforeDestroy`, modal);\n if (modal.$el) {\n modal.$el.trigger(`modal:beforedestroy ${modal.type.toLowerCase()}:beforedestroy`);\n if (modal.$el.length && modal.$el[0].f7Modal) {\n delete modal.$el[0].f7Modal;\n }\n }\n deleteProps(modal);\n modal.destroyed = true;\n }\n}\n\nexport default Modal;\n","import $ from '../../shared/dom7.js';\nimport { extend } from '../../shared/utils.js';\nimport Modal from './modal-class.js';\n\nclass CustomModal extends Modal {\n constructor(app, params) {\n const extendedParams = extend(\n {\n backdrop: true,\n closeByBackdropClick: true,\n on: {},\n },\n params,\n );\n\n // Extends with open/close Modal methods;\n super(app, extendedParams);\n\n const customModal = this;\n\n customModal.params = extendedParams;\n\n // Find Element\n let $el;\n if (!customModal.params.el) {\n $el = $(customModal.params.content);\n } else {\n $el = $(customModal.params.el);\n }\n\n if ($el && $el.length > 0 && $el[0].f7Modal) {\n return $el[0].f7Modal;\n }\n\n if ($el.length === 0) {\n return customModal.destroy();\n }\n let $backdropEl;\n if (customModal.params.backdrop) {\n $backdropEl = app.$el.children('.custom-modal-backdrop');\n if ($backdropEl.length === 0) {\n $backdropEl = $('<div class=\"custom-modal-backdrop\"></div>');\n app.$el.append($backdropEl);\n }\n }\n\n function handleClick(e) {\n if (!customModal || customModal.destroyed) return;\n if ($backdropEl && e.target === $backdropEl[0]) {\n customModal.close();\n }\n }\n\n customModal.on('customModalOpened', () => {\n if (customModal.params.closeByBackdropClick && customModal.params.backdrop) {\n app.on('click', handleClick);\n }\n });\n customModal.on('customModalClose', () => {\n if (customModal.params.closeByBackdropClick && customModal.params.backdrop) {\n app.off('click', handleClick);\n }\n });\n\n extend(customModal, {\n app,\n $el,\n el: $el[0],\n $backdropEl,\n backdropEl: $backdropEl && $backdropEl[0],\n type: 'customModal',\n });\n\n $el[0].f7Modal = customModal;\n\n return customModal;\n }\n}\nexport default CustomModal;\n","import Modal from './modal-class.js';\nimport CustomModal from './custom-modal-class.js';\n\nexport default {\n name: 'modal',\n static: {\n Modal,\n CustomModal,\n },\n create() {\n const app = this;\n app.customModal = {\n create(params) {\n return new CustomModal(app, params);\n },\n };\n },\n params: {\n modal: {\n queueDialogs: true,\n },\n },\n};\n","import $ from './shared/dom7.js';\n\nimport Framework7 from './components/app/app-class.js';\n\n//IMPORT_HELPERS\n\nimport DeviceModule from './modules/device/device.js';\nimport SupportModule from './modules/support/support.js';\nimport UtilsModule from './modules/utils/utils.js';\nimport ResizeModule from './modules/resize/resize.js';\nimport RequestModule from './modules/request/request.js';\nimport TouchModule from './modules/touch/touch.js';\nimport ClicksModule from './modules/clicks/clicks.js';\nimport RouterModule from './modules/router/router.js';\nimport RouterComponentLoaderModule from './modules/router/component-loader.js';\nimport ComponentModule, { Component, $jsx } from './modules/component/component.js';\nimport HistoryModule from './modules/history/history.js';\nimport ServiceWorkerModule from './modules/service-worker/service-worker.js';\nimport StoreModule, { createStore } from './modules/store/store.js';\n\nimport Statusbar from './components/statusbar/statusbar.js';\nimport View from './components/view/view.js';\nimport Navbar from './components/navbar/navbar.js';\nimport Toolbar from './components/toolbar/toolbar.js';\nimport Subnavbar from './components/subnavbar/subnavbar.js';\nimport TouchRipple from './components/touch-ripple/touch-ripple.js';\nimport Modal from './components/modal/modal.js';\nimport Router from './modules/router/router-class.js';\n\n//IMPORT_COMPONENTS\n\n// UMD_ONLY_START\nif (typeof window !== 'undefined') {\n // Dom7\n if (!window.Dom7) window.Dom7 = $;\n}\n// UMD_ONLY_END\n\nRouter.use([RouterComponentLoaderModule]);\n\nFramework7.use([\n DeviceModule,\n SupportModule,\n UtilsModule,\n ResizeModule,\n RequestModule,\n TouchModule,\n ClicksModule,\n RouterModule,\n HistoryModule,\n ComponentModule,\n ServiceWorkerModule,\n StoreModule,\n Statusbar,\n View,\n Navbar,\n Toolbar,\n Subnavbar,\n TouchRipple,\n Modal,\n //INSTALL_COMPONENTS\n]);\n\n//NAMED_EXPORT\nexport default Framework7;\n"]}