framework7 7.1.1 → 7.1.3

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 (42) hide show
  1. package/components/dialog/dialog-md.less +1 -0
  2. package/components/dialog/dialog-rtl.css +1 -1
  3. package/components/dialog/dialog.css +1 -1
  4. package/components/notification/notification.d.ts +1 -1
  5. package/components/panel/panel-class.js +10 -4
  6. package/components/panel/panel.lazy.js +1 -1
  7. package/components/photo-browser/photo-browser.js +1 -0
  8. package/components/photo-browser/photo-browser.lazy.js +1 -1
  9. package/components/picker/picker-rtl.css +1 -1
  10. package/components/picker/picker.css +1 -1
  11. package/components/picker/picker.less +36 -33
  12. package/components/popover/popover-rtl.css +1 -1
  13. package/components/popover/popover.css +1 -1
  14. package/components/popover/popover.less +4 -0
  15. package/framework7-bundle-rtl.css +41 -16
  16. package/framework7-bundle-rtl.min.css +4 -4
  17. package/framework7-bundle.css +41 -16
  18. package/framework7-bundle.esm.js +3 -3
  19. package/framework7-bundle.js +43 -15
  20. package/framework7-bundle.js.map +1 -1
  21. package/framework7-bundle.less +3 -3
  22. package/framework7-bundle.min.css +4 -4
  23. package/framework7-bundle.min.js +4 -4
  24. package/framework7-bundle.min.js.map +1 -1
  25. package/framework7-lite-bundle.esm.js +3 -3
  26. package/framework7-lite.esm.js +3 -3
  27. package/framework7-rtl.css +3 -3
  28. package/framework7-rtl.min.css +3 -3
  29. package/framework7.css +3 -3
  30. package/framework7.esm.js +3 -3
  31. package/framework7.js +32 -11
  32. package/framework7.js.map +1 -1
  33. package/framework7.less +3 -3
  34. package/framework7.min.css +3 -3
  35. package/framework7.min.js +4 -4
  36. package/framework7.min.js.map +1 -1
  37. package/modules/router/back.js +21 -6
  38. package/modules/router/navigate.js +5 -0
  39. package/modules/router/router-class.js +3 -2
  40. package/package.json +1 -1
  41. package/framework7-lite.js +0 -26
  42. package/less/plugin.js +0 -18
@@ -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/$jsx.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/parse-component.js","../../src/core/modules/component/component.js","../../src/core/modules/history/history.js","../../src/core/modules/service-worker/service-worker.js","../../src/core/modules/store/create-store.js","../../src/core/modules/store/store.js","../../src/core/components/statusbar/statusbar.js","../../src/core/components/view/view.js","../../src/core/components/navbar/navbar.js","../../src/core/components/toolbar/toolbar.js","../../src/core/components/subnavbar/subnavbar.js","../../src/core/components/touch-ripple/touch-ripple-class.js","../../src/core/components/touch-ripple/touch-ripple.js","../../src/core/components/modal/modal-class.js","../../src/core/components/modal/custom-modal-class.js","../../src/core/components/modal/modal.js","../../src/core/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","$jsx","tag","attrsString","childrenContent","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","concat","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","_e","_f","endsWith","endsWithRe","delimiterRe","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","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","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","parseComponent","componentString","componentId","callbackCreateName","template","item","scripts","registerComponent","unregisterComponent","flatChildren","ComponentModule","HistoryModule","SW","registrations","register","scope","serviceWorker","reg","unregister","registration","ServiceWorkerModule","storeParams","originalState","actions","propsQueue","gettersDependencies","gettersCallbacks","getterKey","getGetterValue","addGetterCallback","__removeCallback","stateKey","callbacks","removeGetterCallback","getterValue","addCallback","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';\nimport $jsx from '../../shared/$jsx.js';\n\nclass Framework7 extends Framework7Class {\n constructor(params = {}) {\n super(params);\n // eslint-disable-next-line\n if (Framework7.instance && typeof window !== 'undefined') {\n throw new Error(\"Framework7 is already initialized and can't be initialized more than once\");\n }\n const device = getDevice({ userAgent: params.userAgent || undefined });\n const support = getSupport();\n\n const passedParams = extend({}, params);\n\n // App Instance\n const app = this;\n\n app.device = device;\n app.support = support;\n\n const w = getWindow();\n const d = getDocument();\n\n Framework7.instance = app;\n\n // Default\n const defaults = {\n 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.$jsx = $jsx;\nFramework7.ModalMethods = ModalMethods;\nFramework7.ConstructorMethods = ConstructorMethods;\n\nFramework7.loadModule = loadModule;\nFramework7.loadModules = function loadModules(modules) {\n return Promise.all(modules.map((module) => Framework7.loadModule(module)));\n};\n\nexport default Framework7;\n","/* eslint-disable prefer-rest-params */\nconst $jsx = (tag, props, ...args) => {\n const attrs = props || {};\n const children = args || [];\n\n const attrsString = Object.keys(attrs)\n .map((attr) => {\n if (attr[0] === '_') {\n if (attrs[attr]) return attr.replace('_', '');\n return '';\n }\n return `${attr}=\"${attrs[attr]}\"`;\n })\n .filter((attr) => !!attr)\n .join(' ');\n\n if (['path', 'img', 'circle', 'polygon', 'line', 'input'].indexOf(tag) >= 0) {\n return `<${tag} ${attrsString} />`.trim();\n }\n const childrenContent = children\n .filter((c) => !!c)\n .map((c) => (Array.isArray(c) ? c.join('') : c))\n .join('');\n return `<${tag} ${attrsString}>${childrenContent}</${tag}>`.trim();\n};\n\nexport default $jsx;\n","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 \".concat(i));\n tokens.push({ type: \"NAME\", index: i, value: name });\n i = j;\n continue;\n }\n if (char === \"(\") {\n var count = 1;\n var pattern = \"\";\n var j = i + 1;\n if (str[j] === \"?\") {\n throw new TypeError(\"Pattern cannot start with \\\"?\\\" at \".concat(j));\n }\n while (j < str.length) {\n if (str[j] === \"\\\\\") {\n pattern += str[j++] + str[j++];\n continue;\n }\n if (str[j] === \")\") {\n count--;\n if (count === 0) {\n j++;\n break;\n }\n }\n else if (str[j] === \"(\") {\n count++;\n if (str[j + 1] !== \"?\") {\n throw new TypeError(\"Capturing groups are not allowed at \".concat(j));\n }\n }\n pattern += str[j++];\n }\n if (count)\n throw new TypeError(\"Unbalanced pattern at \".concat(i));\n if (!pattern)\n throw new TypeError(\"Missing pattern at \".concat(i));\n tokens.push({ type: \"PATTERN\", index: i, value: pattern });\n i = j;\n continue;\n }\n tokens.push({ type: \"CHAR\", index: i, value: str[i++] });\n }\n tokens.push({ type: \"END\", index: i, value: \"\" });\n return tokens;\n}\n/**\n * Parse a string for the raw tokens.\n */\nexport function parse(str, options) {\n if (options === void 0) { options = {}; }\n var tokens = lexer(str);\n var _a = options.prefixes, prefixes = _a === void 0 ? \"./\" : _a;\n var defaultPattern = \"[^\".concat(escapeString(options.delimiter || \"/#?\"), \"]+?\");\n var result = [];\n var key = 0;\n var i = 0;\n var path = \"\";\n var tryConsume = function (type) {\n if (i < tokens.length && tokens[i].type === type)\n return tokens[i++].value;\n };\n var mustConsume = function (type) {\n var value = tryConsume(type);\n if (value !== undefined)\n return value;\n var _a = tokens[i], nextType = _a.type, index = _a.index;\n throw new TypeError(\"Unexpected \".concat(nextType, \" at \").concat(index, \", expected \").concat(type));\n };\n var consumeText = function () {\n var result = \"\";\n var value;\n while ((value = tryConsume(\"CHAR\") || tryConsume(\"ESCAPED_CHAR\"))) {\n result += value;\n }\n return result;\n };\n while (i < tokens.length) {\n var char = tryConsume(\"CHAR\");\n var name = tryConsume(\"NAME\");\n var pattern = tryConsume(\"PATTERN\");\n if (name || pattern) {\n var prefix = char || \"\";\n if (prefixes.indexOf(prefix) === -1) {\n path += prefix;\n prefix = \"\";\n }\n if (path) {\n result.push(path);\n path = \"\";\n }\n result.push({\n name: name || key++,\n prefix: prefix,\n suffix: \"\",\n pattern: pattern || defaultPattern,\n modifier: tryConsume(\"MODIFIER\") || \"\",\n });\n continue;\n }\n var value = char || tryConsume(\"ESCAPED_CHAR\");\n if (value) {\n path += value;\n continue;\n }\n if (path) {\n result.push(path);\n path = \"\";\n }\n var open = tryConsume(\"OPEN\");\n if (open) {\n var prefix = consumeText();\n var name_1 = tryConsume(\"NAME\") || \"\";\n var pattern_1 = tryConsume(\"PATTERN\") || \"\";\n var suffix = consumeText();\n mustConsume(\"CLOSE\");\n result.push({\n name: name_1 || (pattern_1 ? key++ : \"\"),\n pattern: name_1 && !pattern_1 ? defaultPattern : pattern_1,\n prefix: prefix,\n suffix: suffix,\n modifier: tryConsume(\"MODIFIER\") || \"\",\n });\n continue;\n }\n mustConsume(\"END\");\n }\n return result;\n}\n/**\n * Compile a string to a template function for the path.\n */\nexport function compile(str, options) {\n return tokensToFunction(parse(str, options), options);\n}\n/**\n * Expose a method for transforming tokens into the path function.\n */\nexport function tokensToFunction(tokens, options) {\n if (options === void 0) { options = {}; }\n var reFlags = flags(options);\n var _a = options.encode, encode = _a === void 0 ? function (x) { return x; } : _a, _b = options.validate, validate = _b === void 0 ? true : _b;\n // Compile all the tokens into regexps.\n var matches = tokens.map(function (token) {\n if (typeof token === \"object\") {\n return new RegExp(\"^(?:\".concat(token.pattern, \")$\"), reFlags);\n }\n });\n return function (data) {\n var path = \"\";\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n if (typeof token === \"string\") {\n path += token;\n continue;\n }\n var value = data ? data[token.name] : undefined;\n var optional = token.modifier === \"?\" || token.modifier === \"*\";\n var repeat = token.modifier === \"*\" || token.modifier === \"+\";\n if (Array.isArray(value)) {\n if (!repeat) {\n throw new TypeError(\"Expected \\\"\".concat(token.name, \"\\\" to not repeat, but got an array\"));\n }\n if (value.length === 0) {\n if (optional)\n continue;\n throw new TypeError(\"Expected \\\"\".concat(token.name, \"\\\" to not be empty\"));\n }\n for (var j = 0; j < value.length; j++) {\n var segment = encode(value[j], token);\n if (validate && !matches[i].test(segment)) {\n throw new TypeError(\"Expected all \\\"\".concat(token.name, \"\\\" to match \\\"\").concat(token.pattern, \"\\\", but got \\\"\").concat(segment, \"\\\"\"));\n }\n path += token.prefix + segment + token.suffix;\n }\n continue;\n }\n if (typeof value === \"string\" || typeof value === \"number\") {\n var segment = encode(String(value), token);\n if (validate && !matches[i].test(segment)) {\n throw new TypeError(\"Expected \\\"\".concat(token.name, \"\\\" to match \\\"\").concat(token.pattern, \"\\\", but got \\\"\").concat(segment, \"\\\"\"));\n }\n path += token.prefix + segment + token.suffix;\n continue;\n }\n if (optional)\n continue;\n var typeOfMessage = repeat ? \"an array\" : \"a string\";\n throw new TypeError(\"Expected \\\"\".concat(token.name, \"\\\" to be \").concat(typeOfMessage));\n }\n return path;\n };\n}\n/**\n * Create path match function from `path-to-regexp` spec.\n */\nexport function match(str, options) {\n var keys = [];\n var re = pathToRegexp(str, keys, options);\n return regexpToFunction(re, keys, options);\n}\n/**\n * Create a path match function from `path-to-regexp` output.\n */\nexport function regexpToFunction(re, keys, options) {\n if (options === void 0) { options = {}; }\n var _a = options.decode, decode = _a === void 0 ? function (x) { return x; } : _a;\n return function (pathname) {\n var m = re.exec(pathname);\n if (!m)\n return false;\n var path = m[0], index = m.index;\n var params = Object.create(null);\n var _loop_1 = function (i) {\n if (m[i] === undefined)\n return \"continue\";\n var key = keys[i - 1];\n if (key.modifier === \"*\" || key.modifier === \"+\") {\n params[key.name] = m[i].split(key.prefix + key.suffix).map(function (value) {\n return decode(value, key);\n });\n }\n else {\n params[key.name] = decode(m[i], key);\n }\n };\n for (var i = 1; i < m.length; i++) {\n _loop_1(i);\n }\n return { path: path, index: index, params: params };\n };\n}\n/**\n * Escape a regular expression string.\n */\nfunction escapeString(str) {\n return str.replace(/([.+*?=^!:${}()[\\]|/\\\\])/g, \"\\\\$1\");\n}\n/**\n * Get the flags for a regexp from the options.\n */\nfunction flags(options) {\n return options && options.sensitive ? \"\" : \"i\";\n}\n/**\n * Pull out keys from a regexp.\n */\nfunction regexpToRegexp(path, keys) {\n if (!keys)\n return path;\n var groupsRegex = /\\((?:\\?<(.*?)>)?(?!\\?)/g;\n var index = 0;\n var execResult = groupsRegex.exec(path.source);\n while (execResult) {\n keys.push({\n // Use parenthesized substring match if available, index otherwise\n name: execResult[1] || index++,\n prefix: \"\",\n suffix: \"\",\n modifier: \"\",\n pattern: \"\",\n });\n execResult = groupsRegex.exec(path.source);\n }\n return path;\n}\n/**\n * Transform an array into a regexp.\n */\nfunction arrayToRegexp(paths, keys, options) {\n var parts = paths.map(function (path) { return pathToRegexp(path, keys, options).source; });\n return new RegExp(\"(?:\".concat(parts.join(\"|\"), \")\"), flags(options));\n}\n/**\n * Create a path regexp from string input.\n */\nfunction stringToRegexp(path, keys, options) {\n return tokensToRegexp(parse(path, options), keys, options);\n}\n/**\n * Expose a function for taking tokens and returning a RegExp.\n */\nexport function tokensToRegexp(tokens, keys, options) {\n if (options === void 0) { options = {}; }\n var _a = options.strict, strict = _a === void 0 ? false : _a, _b = options.start, start = _b === void 0 ? true : _b, _c = options.end, end = _c === void 0 ? true : _c, _d = options.encode, encode = _d === void 0 ? function (x) { return x; } : _d, _e = options.delimiter, delimiter = _e === void 0 ? \"/#?\" : _e, _f = options.endsWith, endsWith = _f === void 0 ? \"\" : _f;\n var endsWithRe = \"[\".concat(escapeString(endsWith), \"]|$\");\n var delimiterRe = \"[\".concat(escapeString(delimiter), \"]\");\n var route = start ? \"^\" : \"\";\n // Iterate over the tokens and create our regexp string.\n for (var _i = 0, tokens_1 = tokens; _i < tokens_1.length; _i++) {\n var token = tokens_1[_i];\n if (typeof token === \"string\") {\n route += escapeString(encode(token));\n }\n else {\n var prefix = escapeString(encode(token.prefix));\n var suffix = escapeString(encode(token.suffix));\n if (token.pattern) {\n if (keys)\n keys.push(token);\n if (prefix || suffix) {\n if (token.modifier === \"+\" || token.modifier === \"*\") {\n var mod = token.modifier === \"*\" ? \"?\" : \"\";\n route += \"(?:\".concat(prefix, \"((?:\").concat(token.pattern, \")(?:\").concat(suffix).concat(prefix, \"(?:\").concat(token.pattern, \"))*)\").concat(suffix, \")\").concat(mod);\n }\n else {\n route += \"(?:\".concat(prefix, \"(\").concat(token.pattern, \")\").concat(suffix, \")\").concat(token.modifier);\n }\n }\n else {\n if (token.modifier === \"+\" || token.modifier === \"*\") {\n route += \"((?:\".concat(token.pattern, \")\").concat(token.modifier, \")\");\n }\n else {\n route += \"(\".concat(token.pattern, \")\").concat(token.modifier);\n }\n }\n }\n else {\n route += \"(?:\".concat(prefix).concat(suffix, \")\").concat(token.modifier);\n }\n }\n }\n if (end) {\n if (!strict)\n route += \"\".concat(delimiterRe, \"?\");\n route += !options.endsWith ? \"$\" : \"(?=\".concat(endsWithRe, \")\");\n }\n else {\n var endToken = tokens[tokens.length - 1];\n var isEndDelimited = typeof endToken === \"string\"\n ? delimiterRe.indexOf(endToken[endToken.length - 1]) > -1\n : endToken === undefined;\n if (!strict) {\n route += \"(?:\".concat(delimiterRe, \"(?=\").concat(endsWithRe, \"))?\");\n }\n if (!isEndDelimited) {\n route += \"(?=\".concat(delimiterRe, \"|\").concat(endsWithRe, \")\");\n }\n }\n return new RegExp(route, flags(options));\n}\n/**\n * Normalize the given path string, returning a regular expression.\n *\n * An empty array can be passed in for the keys, which will hold the\n * placeholder key descriptions. For example, using `/user/:id`, `keys` will\n * contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`.\n */\nexport function pathToRegexp(path, keys, options) {\n if (path instanceof RegExp)\n return regexpToRegexp(path, keys);\n if (Array.isArray(path))\n return arrayToRegexp(path, keys, options);\n return stringToRegexp(path, keys, options);\n}\n//# sourceMappingURL=index.js.map","import { getWindow, getDocument } from 'ssr-window';\nimport $ from './dom7.js';\nimport { extend } from './utils.js';\n\nconst History = {\n queue: [],\n clearQueue() {\n if (History.queue.length === 0) return;\n const currentQueue = History.queue.shift();\n currentQueue();\n },\n routerQueue: [],\n clearRouterQueue() {\n if (History.routerQueue.length === 0) return;\n const currentQueue = History.routerQueue.pop();\n const { router, stateUrl, action } = currentQueue;\n\n let animate = router.params.animate;\n if (router.params.browserHistoryAnimate === false) animate = false;\n\n if (action === 'back') {\n router.back({ animate, browserHistory: false });\n }\n if (action === 'load') {\n router.navigate(stateUrl, { animate, browserHistory: false });\n }\n },\n handle(e) {\n if (History.blockPopstate) return;\n const app = this;\n // const mainView = app.views.main;\n let state = e.state;\n History.previousState = History.state;\n History.state = state;\n\n History.allowChange = true;\n History.clearQueue();\n\n state = History.state;\n if (!state) state = {};\n\n app.views.forEach((view) => {\n const router = view.router;\n let viewState = state[view.id];\n if (!viewState && view.params.browserHistory) {\n viewState = {\n url: view.router.history[0],\n };\n }\n if (!viewState) return;\n const stateUrl = viewState.url || undefined;\n\n let animate = router.params.animate;\n if (router.params.browserHistoryAnimate === false) animate = false;\n\n if (stateUrl !== router.url) {\n if (router.history.indexOf(stateUrl) >= 0) {\n // Go Back\n if (router.allowPageChange) {\n router.back({ animate, browserHistory: false });\n } else {\n History.routerQueue.push({\n action: 'back',\n router,\n });\n }\n } else if (router.allowPageChange) {\n // Load page\n router.navigate(stateUrl, { animate, browserHistory: false });\n } else {\n History.routerQueue.unshift({\n action: 'load',\n stateUrl,\n router,\n });\n }\n }\n });\n },\n initViewState(viewId, viewState) {\n const window = getWindow();\n const newState = extend({}, History.state || {}, {\n [viewId]: viewState,\n });\n History.state = newState;\n window.history.replaceState(newState, '');\n },\n push(viewId, viewState, url) {\n const window = getWindow();\n const document = getDocument();\n /* eslint-disable no-param-reassign */\n if (url.substr(-3) === '#!/') {\n url = url.replace('#!/', '');\n if (url === '') {\n url = document.location.href;\n if (url.includes('#!/')) {\n url = document.location.href.split('#!/')[0];\n }\n }\n }\n /* eslint-enable no-param-reassign */\n if (!History.allowChange) {\n History.queue.push(() => {\n History.push(viewId, viewState, url);\n });\n return;\n }\n History.previousState = History.state;\n const newState = extend({}, History.previousState || {}, {\n [viewId]: viewState,\n });\n History.state = newState;\n window.history.pushState(newState, '', url);\n },\n replace(viewId, viewState, url) {\n const window = getWindow();\n if (url.substr(-3) === '#!/') {\n // eslint-disable-next-line\n url = url.replace('#!/', '');\n }\n if (!History.allowChange) {\n History.queue.push(() => {\n History.replace(viewId, viewState, url);\n });\n return;\n }\n History.previousState = History.state;\n const newState = extend({}, History.previousState || {}, {\n [viewId]: viewState,\n });\n History.state = newState;\n window.history.replaceState(newState, '', url);\n },\n go(index) {\n const window = getWindow();\n History.allowChange = false;\n window.history.go(index);\n },\n back() {\n const window = getWindow();\n History.allowChange = false;\n window.history.back();\n },\n allowChange: true,\n previousState: {},\n state: {},\n blockPopstate: true,\n init(app) {\n const window = getWindow();\n const document = getDocument();\n History.state = window.history.state;\n $(window).on('load', () => {\n setTimeout(() => {\n History.blockPopstate = false;\n }, 0);\n });\n\n if (document.readyState && document.readyState === 'complete') {\n History.blockPopstate = false;\n }\n\n $(window).on('popstate', History.handle.bind(app));\n },\n};\n\nexport default History;\n","import $ from '../../shared/dom7.js';\nimport History from '../../shared/history.js';\nimport { getSupport } from '../../shared/get-support.js';\nimport { getDevice } from '../../shared/get-device.js';\nimport { now } from '../../shared/utils.js';\n\nfunction SwipeBack(r) {\n const router = r;\n const { $el, $navbarsEl, app, params } = router;\n const support = getSupport();\n const device = getDevice();\n let isTouched = false;\n let isMoved = false;\n const touchesStart = {};\n let isScrolling;\n let $currentPageEl = [];\n let $previousPageEl = [];\n let viewContainerWidth;\n let touchesDiff;\n let allowViewTouchMove = true;\n let touchStartTime;\n let $currentNavbarEl = [];\n let $previousNavbarEl = [];\n let dynamicNavbar;\n let $pageShadowEl;\n let $pageOpacityEl;\n\n let animatableNavEls;\n\n const paramsSwipeBackAnimateShadow = params[`${app.theme}SwipeBackAnimateShadow`];\n const paramsSwipeBackAnimateOpacity = params[`${app.theme}SwipeBackAnimateOpacity`];\n const paramsSwipeBackActiveArea = params[`${app.theme}SwipeBackActiveArea`];\n const paramsSwipeBackThreshold = params[`${app.theme}SwipeBackThreshold`];\n\n const transformOrigin = app.rtl ? 'right center' : 'left center';\n const transformOriginTitleLarge = app.rtl\n ? 'calc(100% - var(--f7-navbar-large-title-padding-left) - var(--f7-safe-area-left)) center'\n : 'calc(var(--f7-navbar-large-title-padding-left) + var(--f7-safe-area-left)) center';\n\n function animatableNavElements() {\n const els = [];\n const inverter = app.rtl ? -1 : 1;\n const currentNavIsTransparent =\n $currentNavbarEl.hasClass('navbar-transparent') &&\n !$currentNavbarEl.hasClass('navbar-large') &&\n !$currentNavbarEl.hasClass('navbar-transparent-visible');\n const currentNavIsLarge = $currentNavbarEl.hasClass('navbar-large');\n const currentNavIsCollapsed = $currentNavbarEl.hasClass('navbar-large-collapsed');\n const currentNavIsLargeTransparent =\n $currentNavbarEl.hasClass('navbar-large-transparent') ||\n ($currentNavbarEl.hasClass('navbar-large') &&\n $currentNavbarEl.hasClass('navbar-transparent'));\n const previousNavIsTransparent =\n $previousNavbarEl.hasClass('navbar-transparent') &&\n !$previousNavbarEl.hasClass('navbar-large') &&\n !$previousNavbarEl.hasClass('navbar-transparent-visible');\n const previousNavIsLarge = $previousNavbarEl.hasClass('navbar-large');\n const previousNavIsCollapsed = $previousNavbarEl.hasClass('navbar-large-collapsed');\n const previousNavIsLargeTransparent =\n $previousNavbarEl.hasClass('navbar-large-transparent') ||\n ($previousNavbarEl.hasClass('navbar-large') &&\n $previousNavbarEl.hasClass('navbar-transparent'));\n const fromLarge = currentNavIsLarge && !currentNavIsCollapsed;\n const toLarge = previousNavIsLarge && !previousNavIsCollapsed;\n const $currentNavElements = $currentNavbarEl.find(\n '.left, .title, .right, .subnavbar, .fading, .title-large, .navbar-bg',\n );\n const $previousNavElements = $previousNavbarEl.find(\n '.left, .title, .right, .subnavbar, .fading, .title-large, .navbar-bg',\n );\n let activeNavBackIconText;\n let previousNavBackIconText;\n\n if (params.iosAnimateNavbarBackIcon) {\n if (\n $currentNavbarEl.hasClass('sliding') ||\n $currentNavbarEl.find('.navbar-inner.sliding').length\n ) {\n activeNavBackIconText = $currentNavbarEl.find('.left').find('.back .icon + span').eq(0);\n } else {\n activeNavBackIconText = $currentNavbarEl\n .find('.left.sliding')\n .find('.back .icon + span')\n .eq(0);\n }\n if (\n $previousNavbarEl.hasClass('sliding') ||\n $previousNavbarEl.find('.navbar-inner.sliding').length\n ) {\n previousNavBackIconText = $previousNavbarEl.find('.left').find('.back .icon + span').eq(0);\n } else {\n previousNavBackIconText = $previousNavbarEl\n .find('.left.sliding')\n .find('.back .icon + span')\n .eq(0);\n }\n if (activeNavBackIconText.length) {\n $previousNavElements.each((el) => {\n if (!$(el).hasClass('title')) return;\n el.f7NavbarLeftOffset += activeNavBackIconText.prev('.icon')[0].offsetWidth;\n });\n }\n }\n $currentNavElements.each((navEl) => {\n const $navEl = $(navEl);\n const isSubnavbar = $navEl.hasClass('subnavbar');\n const isLeft = $navEl.hasClass('left');\n const isTitle = $navEl.hasClass('title');\n const isBg = $navEl.hasClass('navbar-bg');\n if ((isTitle || isBg) && currentNavIsTransparent) return;\n if (!fromLarge && $navEl.hasClass('.title-large')) return;\n const el = {\n el: navEl,\n };\n if (fromLarge) {\n if (isTitle) return;\n if ($navEl.hasClass('title-large')) {\n if (els.indexOf(el) < 0) els.push(el);\n el.overflow = 'visible';\n $navEl.find('.title-large-text').each((subNavEl) => {\n els.push({\n el: subNavEl,\n transform: (progress) => `translateX(${progress * 100 * inverter}%)`,\n });\n });\n return;\n }\n }\n if (toLarge) {\n if (!fromLarge) {\n if ($navEl.hasClass('title-large')) {\n if (els.indexOf(el) < 0) els.push(el);\n el.opacity = 0;\n }\n }\n if (isLeft) {\n if (els.indexOf(el) < 0) els.push(el);\n el.opacity = (progress) => 1 - progress ** 0.33;\n $navEl.find('.back span').each((subNavEl) => {\n els.push({\n el: subNavEl,\n 'transform-origin': transformOrigin,\n transform: (progress) =>\n `translateX(calc(${progress} * (var(--f7-navbarTitleLargeOffset) - var(--f7-navbarLeftTextOffset)))) translateY(calc(${progress} * (var(--f7-navbar-large-title-height) - var(--f7-navbar-large-title-padding-vertical) / 2))) scale(${\n 1 + 1 * progress\n })`,\n });\n });\n return;\n }\n }\n if (isBg) {\n if (els.indexOf(el) < 0) els.push(el);\n if (!fromLarge && !toLarge) {\n if (currentNavIsCollapsed) {\n if (currentNavIsLargeTransparent) {\n el.className = 'ios-swipeback-navbar-bg-large';\n }\n el.transform = (progress) =>\n `translateX(${\n 100 * progress * inverter\n }%) translateY(calc(-1 * var(--f7-navbar-large-title-height)))`;\n } else {\n el.transform = (progress) => `translateX(${100 * progress * inverter}%)`;\n }\n }\n if (!fromLarge && toLarge) {\n el.className = 'ios-swipeback-navbar-bg-large';\n el.transform = (progress) =>\n `translateX(${100 * progress * inverter}%) translateY(calc(-1 * ${\n 1 - progress\n } * var(--f7-navbar-large-title-height)))`;\n }\n if (fromLarge && toLarge) {\n el.transform = (progress) => `translateX(${100 * progress * inverter}%)`;\n }\n if (fromLarge && !toLarge) {\n el.transform = (progress) =>\n `translateX(${\n 100 * progress * inverter\n }%) translateY(calc(-${progress} * var(--f7-navbar-large-title-height)))`;\n }\n return;\n }\n if ($navEl.hasClass('title-large')) return;\n const isSliding =\n $navEl.hasClass('sliding') || $navEl.parents('.navbar-inner.sliding').length;\n if (els.indexOf(el) < 0) els.push(el);\n if (!isSubnavbar || (isSubnavbar && !isSliding)) {\n el.opacity = (progress) => 1 - progress ** 0.33;\n }\n if (isSliding) {\n let transformTarget = el;\n if (isLeft && activeNavBackIconText.length && params.iosAnimateNavbarBackIcon) {\n const textEl = { el: activeNavBackIconText[0] };\n transformTarget = textEl;\n els.push(textEl);\n }\n transformTarget.transform = (progress) => {\n let activeNavTranslate = progress * transformTarget.el.f7NavbarRightOffset;\n if (device.pixelRatio === 1) activeNavTranslate = Math.round(activeNavTranslate);\n if (isSubnavbar && currentNavIsLarge) {\n return `translate3d(${activeNavTranslate}px, calc(-1 * var(--f7-navbar-large-collapse-progress) * var(--f7-navbar-large-title-height)), 0)`;\n }\n return `translate3d(${activeNavTranslate}px,0,0)`;\n };\n }\n });\n $previousNavElements.each((navEl) => {\n const $navEl = $(navEl);\n const isSubnavbar = $navEl.hasClass('subnavbar');\n const isLeft = $navEl.hasClass('left');\n const isTitle = $navEl.hasClass('title');\n const isBg = $navEl.hasClass('navbar-bg');\n if ((isTitle || isBg) && previousNavIsTransparent) return;\n const el = {\n el: navEl,\n };\n if (toLarge) {\n if (isTitle) return;\n if (els.indexOf(el) < 0) els.push(el);\n\n if ($navEl.hasClass('title-large')) {\n el.opacity = 1;\n el.overflow = 'visible';\n $navEl.find('.title-large-text').each((subNavEl) => {\n els.push({\n el: subNavEl,\n 'transform-origin': transformOriginTitleLarge,\n opacity: (progress) => progress ** 3,\n transform: (progress) =>\n `translateX(calc(${\n 1 - progress\n } * (var(--f7-navbarLeftTextOffset) - var(--f7-navbarTitleLargeOffset)))) translateY(calc(${\n progress - 1\n } * var(--f7-navbar-large-title-height) + ${\n 1 - progress\n } * var(--f7-navbar-large-title-padding-vertical))) scale(${0.5 + progress * 0.5})`,\n });\n });\n return;\n }\n }\n if (isBg) {\n if (els.indexOf(el) < 0) els.push(el);\n if (!fromLarge && !toLarge) {\n if (previousNavIsCollapsed) {\n if (previousNavIsLargeTransparent) {\n el.className = 'ios-swipeback-navbar-bg-large';\n }\n el.transform = (progress) =>\n `translateX(${\n (-100 + 100 * progress) * inverter\n }%) translateY(calc(-1 * var(--f7-navbar-large-title-height)))`;\n } else {\n el.transform = (progress) => `translateX(${(-100 + 100 * progress) * inverter}%)`;\n }\n }\n if (!fromLarge && toLarge) {\n el.transform = (progress) =>\n `translateX(${(-100 + 100 * progress) * inverter}%) translateY(calc(-1 * ${\n 1 - progress\n } * var(--f7-navbar-large-title-height)))`;\n }\n if (fromLarge && !toLarge) {\n el.className = 'ios-swipeback-navbar-bg-large';\n el.transform = (progress) =>\n `translateX(${\n (-100 + 100 * progress) * inverter\n }%) translateY(calc(-${progress} * var(--f7-navbar-large-title-height)))`;\n }\n if (fromLarge && toLarge) {\n el.transform = (progress) => `translateX(${(-100 + 100 * progress) * inverter}%)`;\n }\n\n return;\n }\n if ($navEl.hasClass('title-large')) return;\n const isSliding =\n $navEl.hasClass('sliding') || $previousNavbarEl.children('.navbar-inner.sliding').length;\n if (els.indexOf(el) < 0) els.push(el);\n if (!isSubnavbar || (isSubnavbar && !isSliding)) {\n el.opacity = (progress) => progress ** 3;\n }\n if (isSliding) {\n let transformTarget = el;\n if (isLeft && previousNavBackIconText.length && params.iosAnimateNavbarBackIcon) {\n const textEl = { el: previousNavBackIconText[0] };\n transformTarget = textEl;\n els.push(textEl);\n }\n transformTarget.transform = (progress) => {\n let previousNavTranslate = transformTarget.el.f7NavbarLeftOffset * (1 - progress);\n if (device.pixelRatio === 1) previousNavTranslate = Math.round(previousNavTranslate);\n if (isSubnavbar && previousNavIsLarge) {\n return `translate3d(${previousNavTranslate}px, calc(-1 * var(--f7-navbar-large-collapse-progress) * var(--f7-navbar-large-title-height)), 0)`;\n }\n return `translate3d(${previousNavTranslate}px,0,0)`;\n };\n }\n });\n return els;\n }\n\n function setAnimatableNavElements({ progress, reset, transition, reflow } = {}) {\n const styles = ['overflow', 'transform', 'transform-origin', 'opacity'];\n if (transition === true || transition === false) {\n for (let i = 0; i < animatableNavEls.length; i += 1) {\n const el = animatableNavEls[i];\n if (el && el.el) {\n if (transition === true) el.el.classList.add('navbar-page-transitioning');\n if (transition === false) el.el.classList.remove('navbar-page-transitioning');\n }\n }\n }\n if (reflow && animatableNavEls.length && animatableNavEls[0] && animatableNavEls[0].el) {\n // eslint-disable-next-line\n animatableNavEls[0].el._clientLeft = animatableNavEls[0].el.clientLeft;\n }\n for (let i = 0; i < animatableNavEls.length; i += 1) {\n const el = animatableNavEls[i];\n if (el && el.el) {\n if (el.className && !el.classNameSet && !reset) {\n el.el.classList.add(el.className);\n el.classNameSet = true;\n }\n if (el.className && reset) {\n el.el.classList.remove(el.className);\n }\n for (let j = 0; j < styles.length; j += 1) {\n const styleProp = styles[j];\n if (el[styleProp]) {\n if (reset) {\n el.el.style[styleProp] = '';\n } else if (typeof el[styleProp] === 'function') {\n el.el.style[styleProp] = el[styleProp](progress);\n } else {\n el.el.style[styleProp] = el[styleProp];\n }\n }\n }\n }\n }\n }\n\n function handleTouchStart(e) {\n 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(props = {}) {\n const router = this;\n appRouterCheck(router, 'refreshPage');\n return router.navigate(router.currentRoute.url, {\n ignoreCache: true,\n reloadCurrent: true,\n props,\n });\n}\n\nfunction forward(router, el, forwardOptions = {}) {\n const document = getDocument();\n const $el = $(el);\n const app = router.app;\n const view = router.view;\n const options = extend(\n false,\n {\n animate: router.params.animate,\n browserHistory: true,\n replaceState: false,\n history: true,\n reloadCurrent: router.params.reloadPages,\n reloadPrevious: false,\n reloadAll: false,\n clearPreviousHistory: false,\n reloadDetail: router.params.reloadDetail,\n on: {},\n },\n forwardOptions,\n );\n\n const masterDetailEnabled = router.params.masterDetailBreakpoint > 0;\n const isMaster =\n masterDetailEnabled &&\n options.route &&\n options.route.route &&\n (options.route.route.master === true ||\n (typeof options.route.route.master === 'function' &&\n options.route.route.master(app, router)));\n\n let masterPageEl;\n let otherDetailPageEl;\n let detailsInBetweenRemoved = 0;\n\n let currentRouteIsModal = router.currentRoute.modal;\n let modalType;\n if (!currentRouteIsModal) {\n 'popup popover sheet loginScreen actions customModal panel'\n .split(' ')\n .forEach((modalLoadProp) => {\n if (\n router.currentRoute &&\n router.currentRoute.route &&\n router.currentRoute.route[modalLoadProp]\n ) {\n currentRouteIsModal = true;\n modalType = modalLoadProp;\n }\n });\n }\n\n if (currentRouteIsModal) {\n const modalToClose =\n router.currentRoute.modal || router.currentRoute.route.modalInstance || app[modalType].get();\n const previousUrl = router.history[router.history.length - 2];\n let previousRoute = router.findMatchingRoute(previousUrl);\n if (!previousRoute && previousUrl) {\n previousRoute = {\n url: previousUrl,\n path: previousUrl.split('?')[0],\n query: parseUrlQuery(previousUrl),\n route: {\n path: previousUrl.split('?')[0],\n url: previousUrl,\n },\n };\n }\n\n router.modalRemove(modalToClose);\n }\n\n const dynamicNavbar = router.dynamicNavbar;\n\n const $viewEl = router.$el;\n const $newPage = $el;\n const reload = options.reloadPrevious || options.reloadCurrent || options.reloadAll;\n let $oldPage;\n\n let $navbarsEl;\n let $newNavbarEl;\n let $oldNavbarEl;\n\n router.allowPageChange = false;\n if ($newPage.length === 0) {\n router.allowPageChange = true;\n return router;\n }\n\n if ($newPage.length) {\n // Remove theme elements\n router.removeThemeElements($newPage);\n }\n\n if (dynamicNavbar) {\n $newNavbarEl = $newPage.children('.navbar');\n $navbarsEl = router.$navbarsEl;\n if ($newNavbarEl.length === 0 && $newPage[0] && $newPage[0].f7Page) {\n // Try from pageData\n $newNavbarEl = $newPage[0].f7Page.$navbarEl;\n }\n }\n\n // Save Keep Alive Cache\n if (\n options.route &&\n options.route.route &&\n options.route.route.keepAlive &&\n !options.route.route.keepAliveData\n ) {\n options.route.route.keepAliveData = {\n pageEl: $el[0],\n };\n }\n\n // Pages In View\n const $pagesInView = $viewEl\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 router.allowPageChange = true;\n return false;\n }\n\n if (!options.route && url) {\n options.route = router.parseRouteUrl(url);\n }\n\n // Component Callbacks\n function resolve(pageEl, newOptions) {\n return backward(router, pageEl, extend(options, newOptions));\n }\n function reject() {\n router.allowPageChange = true;\n return router;\n }\n\n if (url || componentUrl || component) {\n router.allowPageChange = false;\n }\n\n // Proceed\n if (content) {\n backward(router, router.getPageEl(content), options);\n } else if (el) {\n // Load page from specified HTMLElement or by page name in pages container\n backward(router, router.getPageEl(el), options);\n } else if (pageName) {\n // Load page by page name in pages container\n backward(router, router.$el.children(`.page[data-name=\"${pageName}\"]`).eq(0), options);\n } else if (component || componentUrl) {\n // Load from component (F7/Vue/React/...)\n try {\n router.pageComponentLoader({\n routerEl: router.el,\n component,\n componentUrl,\n options,\n resolve,\n reject,\n });\n } catch (err) {\n router.allowPageChange = true;\n throw err;\n }\n } else if (url) {\n // Load using XHR\n if (router.xhrAbortController) {\n router.xhrAbortController.abort();\n router.xhrAbortController = false;\n }\n router\n .xhrRequest(url, options)\n .then((pageContent) => {\n backward(router, router.getPageEl(pageContent), options);\n })\n .catch(() => {\n router.allowPageChange = true;\n });\n }\n return router;\n}\nfunction back(...args) {\n const router = this;\n const device = getDevice();\n if (router.swipeBackActive) return router;\n let navigateUrl;\n let navigateOptions;\n let 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 { 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 Component from './component-class.js';\nimport parseComponent from './parse-component.js';\nimport customComponents from './custom-components.js';\nimport $jsx from './$jsx.js';\n\nfunction registerComponent(tagName, component) {\n customComponents[tagName] = component;\n}\n\nfunction unregisterComponent(tagName) {\n delete customComponents[tagName];\n}\n\nexport { Component, $jsx };\nexport default {\n name: 'component',\n static: {\n Component,\n parseComponent,\n registerComponent,\n unregisterComponent,\n },\n create() {\n const app = this;\n app.component = {\n registerComponent,\n unregisterComponent,\n parse(componentString) {\n return parseComponent(componentString);\n },\n create(component, props, { root, el, context, children }) {\n return new Component(app, component, props, { root, el, context, children });\n },\n };\n },\n};\n","import History from '../../shared/history.js';\n\nexport default {\n name: 'history',\n static: {\n history: History,\n },\n on: {\n init() {\n History.init(this);\n },\n },\n};\n","import { getWindow } from 'ssr-window';\nimport { extend } from '../../shared/utils.js';\n\nconst SW = {\n registrations: [],\n register(path, scope) {\n const app = this;\n const window = getWindow();\n\n if (!('serviceWorker' in window.navigator) || !app.serviceWorker.container) {\n return new Promise((resolve, reject) => {\n reject(new Error('Service worker is not supported'));\n });\n }\n return new Promise((resolve, reject) => {\n app.serviceWorker.container\n .register(path, scope ? { scope } : {})\n .then((reg) => {\n SW.registrations.push(reg);\n app.emit('serviceWorkerRegisterSuccess', reg);\n resolve(reg);\n })\n .catch((error) => {\n app.emit('serviceWorkerRegisterError', error);\n reject(error);\n });\n });\n },\n unregister(registration) {\n const app = this;\n const window = getWindow();\n if (!('serviceWorker' in window.navigator) || !app.serviceWorker.container) {\n return new Promise((resolve, reject) => {\n reject(new Error('Service worker is not supported'));\n });\n }\n let registrations;\n if (!registration) registrations = SW.registrations;\n else if (Array.isArray(registration)) registrations = registration;\n else registrations = [registration];\n return Promise.all(\n registrations.map(\n (reg) =>\n new Promise((resolve, reject) => {\n reg\n .unregister()\n .then(() => {\n if (SW.registrations.indexOf(reg) >= 0) {\n SW.registrations.splice(SW.registrations.indexOf(reg), 1);\n }\n app.emit('serviceWorkerUnregisterSuccess', reg);\n resolve();\n })\n .catch((error) => {\n app.emit('serviceWorkerUnregisterError', reg, error);\n reject(error);\n });\n }),\n ),\n );\n },\n};\n\nexport default {\n name: 'sw',\n params: {\n serviceWorker: {\n path: undefined,\n scope: undefined,\n },\n },\n create() {\n const app = this;\n const window = getWindow();\n extend(app, {\n serviceWorker: {\n container: 'serviceWorker' in window.navigator ? window.navigator.serviceWorker : undefined,\n registrations: SW.registrations,\n register: SW.register.bind(app),\n unregister: SW.unregister.bind(app),\n },\n });\n },\n on: {\n init() {\n const window = getWindow();\n if (!('serviceWorker' in window.navigator)) return;\n const app = this;\n if (app.device.cordova || (window.Capacitor && window.Capacitor.isNative)) return;\n if (!app.serviceWorker.container) return;\n const paths = app.params.serviceWorker.path;\n const scope = app.params.serviceWorker.scope;\n if (!paths || (Array.isArray(paths) && !paths.length)) return;\n const toRegister = Array.isArray(paths) ? paths : [paths];\n toRegister.forEach((path) => {\n app.serviceWorker.register(path, scope);\n });\n },\n },\n};\n","/* eslint-disable no-underscore-dangle */\nimport { extend } from '../../shared/utils.js';\n\nfunction createStore(storeParams = {}) {\n const store = {\n __store: true,\n };\n const originalState = { ...(storeParams.state || {}) };\n const actions = { ...(storeParams.actions || {}) };\n const getters = { ...(storeParams.getters || {}) };\n const state = extend({}, originalState);\n\n let propsQueue = [];\n const gettersDependencies = {};\n const gettersCallbacks = {};\n\n Object.keys(getters).forEach((getterKey) => {\n gettersDependencies[getterKey] = [];\n gettersCallbacks[getterKey] = [];\n });\n\n const getGetterValue = (getterKey) => {\n return getters[getterKey]({ state: store.state });\n };\n\n const addGetterDependencies = (getterKey, deps) => {\n if (!gettersDependencies[getterKey]) gettersDependencies[getterKey] = [];\n deps.forEach((dep) => {\n if (gettersDependencies[getterKey].indexOf(dep) < 0) {\n gettersDependencies[getterKey].push(dep);\n }\n });\n };\n\n const addGetterCallback = (getterKey, callback) => {\n if (!gettersCallbacks[getterKey]) gettersCallbacks[getterKey] = [];\n gettersCallbacks[getterKey].push(callback);\n };\n\n const runGetterCallbacks = (stateKey) => {\n const keys = Object.keys(gettersDependencies).filter((getterKey) => {\n return gettersDependencies[getterKey].indexOf(stateKey) >= 0;\n });\n keys.forEach((getterKey) => {\n if (!gettersCallbacks[getterKey] || !gettersCallbacks[getterKey].length) return;\n gettersCallbacks[getterKey].forEach((callback) => {\n callback(getGetterValue(getterKey));\n });\n });\n };\n\n const removeGetterCallback = (callback) => {\n Object.keys(gettersCallbacks).forEach((stateKey) => {\n const callbacks = gettersCallbacks[stateKey];\n\n if (callbacks.indexOf(callback) >= 0) {\n callbacks.splice(callbacks.indexOf(callback), 1);\n }\n });\n };\n\n // eslint-disable-next-line\n store.__removeCallback = (callback) => {\n removeGetterCallback(callback);\n };\n\n const getterValue = (getterKey, addCallback = true) => {\n if (getterKey === 'constructor') return undefined;\n propsQueue = [];\n const value = getGetterValue(getterKey);\n addGetterDependencies(getterKey, propsQueue);\n const onUpdated = (callback) => {\n addGetterCallback(getterKey, callback);\n };\n\n const obj = {\n value,\n onUpdated,\n };\n\n if (!addCallback) {\n return obj;\n }\n\n const callback = (v) => {\n obj.value = v;\n };\n\n obj.__callback = callback;\n addGetterCallback(getterKey, callback);\n // eslint-disable-next-line\n return obj;\n };\n\n store.state = new Proxy(state, {\n set: (target, prop, value) => {\n target[prop] = value;\n runGetterCallbacks(prop);\n return true;\n },\n get: (target, prop) => {\n propsQueue.push(prop);\n return target[prop];\n },\n });\n\n store.getters = new Proxy(getters, {\n set: () => false,\n get: (target, prop) => {\n if (!target[prop]) {\n return undefined;\n }\n return getterValue(prop, true);\n },\n });\n\n store._gettersPlain = new Proxy(getters, {\n set: () => false,\n get: (target, prop) => {\n if (!target[prop]) {\n return undefined;\n }\n return getterValue(prop, false);\n },\n });\n\n store.dispatch = (actionName, data) => {\n return new Promise((resolve, reject) => {\n if (!actions[actionName]) {\n reject();\n throw new Error(`Framework7: Store action \"${actionName}\" is not found`);\n }\n const result = actions[actionName]({ state: store.state, dispatch: store.dispatch }, data);\n resolve(result);\n });\n };\n\n return store;\n}\n\nexport default createStore;\n","import createStore from './create-store.js';\n\nexport { createStore };\nexport default {\n name: 'store',\n static: { createStore },\n proto: { createStore },\n};\n","import { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { bindMethods } from '../../shared/utils.js';\nimport { getDevice } from '../../shared/get-device.js';\n\nconst isCapacitor = () => {\n const window = getWindow();\n return (\n window.Capacitor &&\n window.Capacitor.isNative &&\n window.Capacitor.Plugins &&\n window.Capacitor.Plugins.StatusBar\n );\n};\n\nconst Statusbar = {\n hide() {\n const window = getWindow();\n const device = getDevice();\n if (device.cordova && window.StatusBar) {\n window.StatusBar.hide();\n }\n if (isCapacitor()) {\n window.Capacitor.Plugins.StatusBar.hide();\n }\n },\n show() {\n const window = getWindow();\n const device = getDevice();\n if (device.cordova && window.StatusBar) {\n window.StatusBar.show();\n }\n if (isCapacitor()) {\n window.Capacitor.Plugins.StatusBar.show();\n }\n },\n onClick() {\n const app = this;\n let pageContent;\n if ($('.popup.modal-in').length > 0) {\n // Check for opened popup\n pageContent = $('.popup.modal-in')\n .find('.page:not(.page-previous):not(.page-next):not(.cached)')\n .find('.page-content');\n } else if ($('.panel.panel-in').length > 0) {\n // Check for opened panel\n pageContent = $('.panel.panel-in')\n .find('.page:not(.page-previous):not(.page-next):not(.cached)')\n .find('.page-content');\n } else if ($('.views > .view.tab-active').length > 0) {\n // View in tab bar app layout\n pageContent = $('.views > .view.tab-active')\n .find('.page:not(.page-previous):not(.page-next):not(.cached)')\n .find('.page-content');\n } else if ($('.views').length > 0) {\n pageContent = $('.views')\n .find('.page:not(.page-previous):not(.page-next):not(.cached)')\n .find('.page-content');\n } else {\n pageContent = app.$el\n .children('.view')\n .find('.page:not(.page-previous):not(.page-next):not(.cached)')\n .find('.page-content');\n }\n\n if (pageContent && pageContent.length > 0) {\n // Check for tab\n if (pageContent.hasClass('tab')) {\n pageContent = pageContent.parent('.tabs').children('.page-content.tab-active');\n }\n if (pageContent.length > 0) pageContent.scrollTop(0, 300);\n }\n },\n setTextColor(color) {\n const window = getWindow();\n const device = getDevice();\n if (device.cordova && window.StatusBar) {\n if (color === 'white') {\n window.StatusBar.styleLightContent();\n } else {\n window.StatusBar.styleDefault();\n }\n }\n if (isCapacitor()) {\n if (color === 'white') {\n window.Capacitor.Plugins.StatusBar.setStyle({ style: 'DARK' });\n } else {\n window.Capacitor.Plugins.StatusBar.setStyle({ style: 'LIGHT' });\n }\n }\n },\n setBackgroundColor(color) {\n const window = getWindow();\n const device = getDevice();\n if (device.cordova && window.StatusBar) {\n window.StatusBar.backgroundColorByHexString(color);\n }\n if (isCapacitor()) {\n window.Capacitor.Plugins.StatusBar.setBackgroundColor({ color });\n }\n },\n isVisible() {\n const window = getWindow();\n const device = getDevice();\n return new Promise((resolve) => {\n if (device.cordova && window.StatusBar) {\n resolve(window.StatusBar.isVisible);\n }\n if (isCapacitor()) {\n window.Capacitor.Plugins.StatusBar.getInfo().then((info) => {\n resolve(info.visible);\n });\n }\n resolve(false);\n });\n },\n overlaysWebView(overlays = true) {\n const window = getWindow();\n const device = getDevice();\n if (device.cordova && window.StatusBar) {\n window.StatusBar.overlaysWebView(overlays);\n }\n if (isCapacitor()) {\n window.Capacitor.Plugins.StatusBar.setOverlaysWebView({ overlay: overlays });\n }\n },\n init() {\n const app = this;\n const window = getWindow();\n const device = getDevice();\n const params = app.params.statusbar;\n if (!params.enabled) return;\n const isCordova = device.cordova && window.StatusBar;\n const isCap = isCapacitor();\n\n if (isCordova || isCap) {\n if (params.scrollTopOnClick) {\n $(window).on('statusTap', Statusbar.onClick.bind(app));\n }\n if (device.ios) {\n if (params.iosOverlaysWebView) {\n Statusbar.overlaysWebView(true);\n } else {\n Statusbar.overlaysWebView(false);\n }\n if (params.iosTextColor === 'white') {\n Statusbar.setTextColor('white');\n } else {\n Statusbar.setTextColor('black');\n }\n }\n if (device.android) {\n if (params.androidOverlaysWebView) {\n Statusbar.overlaysWebView(true);\n } else {\n Statusbar.overlaysWebView(false);\n }\n if (params.androidTextColor === 'white') {\n Statusbar.setTextColor('white');\n } else {\n Statusbar.setTextColor('black');\n }\n }\n }\n if (params.iosBackgroundColor && device.ios) {\n Statusbar.setBackgroundColor(params.iosBackgroundColor);\n }\n if (params.androidBackgroundColor && device.android) {\n Statusbar.setBackgroundColor(params.androidBackgroundColor);\n }\n },\n};\n\nexport default {\n name: 'statusbar',\n params: {\n statusbar: {\n enabled: true,\n\n scrollTopOnClick: true,\n\n iosOverlaysWebView: true,\n iosTextColor: 'black',\n iosBackgroundColor: null,\n\n androidOverlaysWebView: false,\n androidTextColor: 'black',\n androidBackgroundColor: null,\n },\n },\n create() {\n const app = this;\n bindMethods(app, {\n statusbar: Statusbar,\n });\n },\n on: {\n init() {\n const app = this;\n Statusbar.init.call(app);\n },\n },\n};\n","import $ from '../../shared/dom7.js';\nimport { extend } from '../../shared/utils.js';\nimport View from './view-class.js';\n\nfunction getCurrentView(app) {\n const $popoverView = $('.popover.modal-in .view');\n const $popupView = $('.popup.modal-in .view');\n const $panelView = $('.panel.panel-in .view');\n let $viewsEl = $('.views');\n if ($viewsEl.length === 0) $viewsEl = app.$el;\n // Find active view as tab\n let $viewEl = $viewsEl.children('.view');\n if ($viewEl.length === 0) {\n $viewEl = $viewsEl.children('.tabs').children('.view');\n }\n // Propably in tabs or split view\n if ($viewEl.length > 1) {\n if ($viewEl.hasClass('tab')) {\n // Tabs\n $viewEl = $viewsEl.children('.view.tab-active');\n if ($viewEl.length === 0) {\n $viewEl = $viewsEl.children('.tabs').children('.view.tab-active');\n }\n } else {\n // Split View, leave appView intact\n }\n }\n if ($popoverView.length > 0 && $popoverView[0].f7View) return $popoverView[0].f7View;\n if ($popupView.length > 0 && $popupView[0].f7View) return $popupView[0].f7View;\n if ($panelView.length > 0 && $panelView[0].f7View) return $panelView[0].f7View;\n if ($viewEl.length > 0) {\n if ($viewEl.length === 1 && $viewEl[0].f7View) return $viewEl[0].f7View;\n if ($viewEl.length > 1) {\n return app.views.main;\n }\n }\n return undefined;\n}\n\nexport default {\n name: 'view',\n params: {\n view: {\n init: true,\n initRouterOnTabShow: false,\n name: undefined,\n main: false,\n router: true,\n linksView: null,\n 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/$jsx.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/parse-component.js","../../src/core/modules/component/component.js","../../src/core/modules/history/history.js","../../src/core/modules/service-worker/service-worker.js","../../src/core/modules/store/create-store.js","../../src/core/modules/store/store.js","../../src/core/components/statusbar/statusbar.js","../../src/core/components/view/view.js","../../src/core/components/navbar/navbar.js","../../src/core/components/toolbar/toolbar.js","../../src/core/components/subnavbar/subnavbar.js","../../src/core/components/touch-ripple/touch-ripple-class.js","../../src/core/components/touch-ripple/touch-ripple.js","../../src/core/components/modal/modal-class.js","../../src/core/components/modal/custom-modal-class.js","../../src/core/components/modal/modal.js","../../src/core/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","$jsx","tag","attrsString","childrenContent","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","concat","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","_e","_f","endsWith","endsWithRe","delimiterRe","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","propsHistory","newPageInDom","componentEl","f7PageMounted","$oldPageEl","$oldNavbarElEl","tab","tabLoad","checkMasterDetailBreakpoint","setPagePosition","afterAnimation","keepOldPage","setPositionClasses","f7PageTransition","load","loadParams","loadOptions","ignorePageChange","pageName","parentPath","sameParams","paramName","allowDuplicateUrls","parseRouteUrl","getPageEl","pageComponentLoader","routerEl","newOptions","xhrAbortController","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","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","substring","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","navigateProps","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","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","parseComponent","componentString","componentId","callbackCreateName","template","item","scripts","registerComponent","unregisterComponent","flatChildren","ComponentModule","HistoryModule","SW","registrations","register","scope","serviceWorker","reg","unregister","registration","ServiceWorkerModule","storeParams","originalState","actions","propsQueue","gettersDependencies","gettersCallbacks","getterKey","getGetterValue","addGetterCallback","__removeCallback","stateKey","callbacks","removeGetterCallback","getterValue","addCallback","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';\nimport $jsx from '../../shared/$jsx.js';\n\nclass Framework7 extends Framework7Class {\n constructor(params = {}) {\n super(params);\n // eslint-disable-next-line\n if (Framework7.instance && typeof window !== 'undefined') {\n throw new Error(\"Framework7 is already initialized and can't be initialized more than once\");\n }\n const device = getDevice({ userAgent: params.userAgent || undefined });\n const support = getSupport();\n\n const passedParams = extend({}, params);\n\n // App Instance\n const app = this;\n\n app.device = device;\n app.support = support;\n\n const w = getWindow();\n const d = getDocument();\n\n Framework7.instance = app;\n\n // Default\n const defaults = {\n 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.$jsx = $jsx;\nFramework7.ModalMethods = ModalMethods;\nFramework7.ConstructorMethods = ConstructorMethods;\n\nFramework7.loadModule = loadModule;\nFramework7.loadModules = function loadModules(modules) {\n return Promise.all(modules.map((module) => Framework7.loadModule(module)));\n};\n\nexport default Framework7;\n","/* eslint-disable prefer-rest-params */\nconst $jsx = (tag, props, ...args) => {\n const attrs = props || {};\n const children = args || [];\n\n const attrsString = Object.keys(attrs)\n .map((attr) => {\n if (attr[0] === '_') {\n if (attrs[attr]) return attr.replace('_', '');\n return '';\n }\n return `${attr}=\"${attrs[attr]}\"`;\n })\n .filter((attr) => !!attr)\n .join(' ');\n\n if (['path', 'img', 'circle', 'polygon', 'line', 'input'].indexOf(tag) >= 0) {\n return `<${tag} ${attrsString} />`.trim();\n }\n const childrenContent = children\n .filter((c) => !!c)\n .map((c) => (Array.isArray(c) ? c.join('') : c))\n .join('');\n return `<${tag} ${attrsString}>${childrenContent}</${tag}>`.trim();\n};\n\nexport default $jsx;\n","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 \".concat(i));\n tokens.push({ type: \"NAME\", index: i, value: name });\n i = j;\n continue;\n }\n if (char === \"(\") {\n var count = 1;\n var pattern = \"\";\n var j = i + 1;\n if (str[j] === \"?\") {\n throw new TypeError(\"Pattern cannot start with \\\"?\\\" at \".concat(j));\n }\n while (j < str.length) {\n if (str[j] === \"\\\\\") {\n pattern += str[j++] + str[j++];\n continue;\n }\n if (str[j] === \")\") {\n count--;\n if (count === 0) {\n j++;\n break;\n }\n }\n else if (str[j] === \"(\") {\n count++;\n if (str[j + 1] !== \"?\") {\n throw new TypeError(\"Capturing groups are not allowed at \".concat(j));\n }\n }\n pattern += str[j++];\n }\n if (count)\n throw new TypeError(\"Unbalanced pattern at \".concat(i));\n if (!pattern)\n throw new TypeError(\"Missing pattern at \".concat(i));\n tokens.push({ type: \"PATTERN\", index: i, value: pattern });\n i = j;\n continue;\n }\n tokens.push({ type: \"CHAR\", index: i, value: str[i++] });\n }\n tokens.push({ type: \"END\", index: i, value: \"\" });\n return tokens;\n}\n/**\n * Parse a string for the raw tokens.\n */\nexport function parse(str, options) {\n if (options === void 0) { options = {}; }\n var tokens = lexer(str);\n var _a = options.prefixes, prefixes = _a === void 0 ? \"./\" : _a;\n var defaultPattern = \"[^\".concat(escapeString(options.delimiter || \"/#?\"), \"]+?\");\n var result = [];\n var key = 0;\n var i = 0;\n var path = \"\";\n var tryConsume = function (type) {\n if (i < tokens.length && tokens[i].type === type)\n return tokens[i++].value;\n };\n var mustConsume = function (type) {\n var value = tryConsume(type);\n if (value !== undefined)\n return value;\n var _a = tokens[i], nextType = _a.type, index = _a.index;\n throw new TypeError(\"Unexpected \".concat(nextType, \" at \").concat(index, \", expected \").concat(type));\n };\n var consumeText = function () {\n var result = \"\";\n var value;\n while ((value = tryConsume(\"CHAR\") || tryConsume(\"ESCAPED_CHAR\"))) {\n result += value;\n }\n return result;\n };\n while (i < tokens.length) {\n var char = tryConsume(\"CHAR\");\n var name = tryConsume(\"NAME\");\n var pattern = tryConsume(\"PATTERN\");\n if (name || pattern) {\n var prefix = char || \"\";\n if (prefixes.indexOf(prefix) === -1) {\n path += prefix;\n prefix = \"\";\n }\n if (path) {\n result.push(path);\n path = \"\";\n }\n result.push({\n name: name || key++,\n prefix: prefix,\n suffix: \"\",\n pattern: pattern || defaultPattern,\n modifier: tryConsume(\"MODIFIER\") || \"\",\n });\n continue;\n }\n var value = char || tryConsume(\"ESCAPED_CHAR\");\n if (value) {\n path += value;\n continue;\n }\n if (path) {\n result.push(path);\n path = \"\";\n }\n var open = tryConsume(\"OPEN\");\n if (open) {\n var prefix = consumeText();\n var name_1 = tryConsume(\"NAME\") || \"\";\n var pattern_1 = tryConsume(\"PATTERN\") || \"\";\n var suffix = consumeText();\n mustConsume(\"CLOSE\");\n result.push({\n name: name_1 || (pattern_1 ? key++ : \"\"),\n pattern: name_1 && !pattern_1 ? defaultPattern : pattern_1,\n prefix: prefix,\n suffix: suffix,\n modifier: tryConsume(\"MODIFIER\") || \"\",\n });\n continue;\n }\n mustConsume(\"END\");\n }\n return result;\n}\n/**\n * Compile a string to a template function for the path.\n */\nexport function compile(str, options) {\n return tokensToFunction(parse(str, options), options);\n}\n/**\n * Expose a method for transforming tokens into the path function.\n */\nexport function tokensToFunction(tokens, options) {\n if (options === void 0) { options = {}; }\n var reFlags = flags(options);\n var _a = options.encode, encode = _a === void 0 ? function (x) { return x; } : _a, _b = options.validate, validate = _b === void 0 ? true : _b;\n // Compile all the tokens into regexps.\n var matches = tokens.map(function (token) {\n if (typeof token === \"object\") {\n return new RegExp(\"^(?:\".concat(token.pattern, \")$\"), reFlags);\n }\n });\n return function (data) {\n var path = \"\";\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n if (typeof token === \"string\") {\n path += token;\n continue;\n }\n var value = data ? data[token.name] : undefined;\n var optional = token.modifier === \"?\" || token.modifier === \"*\";\n var repeat = token.modifier === \"*\" || token.modifier === \"+\";\n if (Array.isArray(value)) {\n if (!repeat) {\n throw new TypeError(\"Expected \\\"\".concat(token.name, \"\\\" to not repeat, but got an array\"));\n }\n if (value.length === 0) {\n if (optional)\n continue;\n throw new TypeError(\"Expected \\\"\".concat(token.name, \"\\\" to not be empty\"));\n }\n for (var j = 0; j < value.length; j++) {\n var segment = encode(value[j], token);\n if (validate && !matches[i].test(segment)) {\n throw new TypeError(\"Expected all \\\"\".concat(token.name, \"\\\" to match \\\"\").concat(token.pattern, \"\\\", but got \\\"\").concat(segment, \"\\\"\"));\n }\n path += token.prefix + segment + token.suffix;\n }\n continue;\n }\n if (typeof value === \"string\" || typeof value === \"number\") {\n var segment = encode(String(value), token);\n if (validate && !matches[i].test(segment)) {\n throw new TypeError(\"Expected \\\"\".concat(token.name, \"\\\" to match \\\"\").concat(token.pattern, \"\\\", but got \\\"\").concat(segment, \"\\\"\"));\n }\n path += token.prefix + segment + token.suffix;\n continue;\n }\n if (optional)\n continue;\n var typeOfMessage = repeat ? \"an array\" : \"a string\";\n throw new TypeError(\"Expected \\\"\".concat(token.name, \"\\\" to be \").concat(typeOfMessage));\n }\n return path;\n };\n}\n/**\n * Create path match function from `path-to-regexp` spec.\n */\nexport function match(str, options) {\n var keys = [];\n var re = pathToRegexp(str, keys, options);\n return regexpToFunction(re, keys, options);\n}\n/**\n * Create a path match function from `path-to-regexp` output.\n */\nexport function regexpToFunction(re, keys, options) {\n if (options === void 0) { options = {}; }\n var _a = options.decode, decode = _a === void 0 ? function (x) { return x; } : _a;\n return function (pathname) {\n var m = re.exec(pathname);\n if (!m)\n return false;\n var path = m[0], index = m.index;\n var params = Object.create(null);\n var _loop_1 = function (i) {\n if (m[i] === undefined)\n return \"continue\";\n var key = keys[i - 1];\n if (key.modifier === \"*\" || key.modifier === \"+\") {\n params[key.name] = m[i].split(key.prefix + key.suffix).map(function (value) {\n return decode(value, key);\n });\n }\n else {\n params[key.name] = decode(m[i], key);\n }\n };\n for (var i = 1; i < m.length; i++) {\n _loop_1(i);\n }\n return { path: path, index: index, params: params };\n };\n}\n/**\n * Escape a regular expression string.\n */\nfunction escapeString(str) {\n return str.replace(/([.+*?=^!:${}()[\\]|/\\\\])/g, \"\\\\$1\");\n}\n/**\n * Get the flags for a regexp from the options.\n */\nfunction flags(options) {\n return options && options.sensitive ? \"\" : \"i\";\n}\n/**\n * Pull out keys from a regexp.\n */\nfunction regexpToRegexp(path, keys) {\n if (!keys)\n return path;\n var groupsRegex = /\\((?:\\?<(.*?)>)?(?!\\?)/g;\n var index = 0;\n var execResult = groupsRegex.exec(path.source);\n while (execResult) {\n keys.push({\n // Use parenthesized substring match if available, index otherwise\n name: execResult[1] || index++,\n prefix: \"\",\n suffix: \"\",\n modifier: \"\",\n pattern: \"\",\n });\n execResult = groupsRegex.exec(path.source);\n }\n return path;\n}\n/**\n * Transform an array into a regexp.\n */\nfunction arrayToRegexp(paths, keys, options) {\n var parts = paths.map(function (path) { return pathToRegexp(path, keys, options).source; });\n return new RegExp(\"(?:\".concat(parts.join(\"|\"), \")\"), flags(options));\n}\n/**\n * Create a path regexp from string input.\n */\nfunction stringToRegexp(path, keys, options) {\n return tokensToRegexp(parse(path, options), keys, options);\n}\n/**\n * Expose a function for taking tokens and returning a RegExp.\n */\nexport function tokensToRegexp(tokens, keys, options) {\n if (options === void 0) { options = {}; }\n var _a = options.strict, strict = _a === void 0 ? false : _a, _b = options.start, start = _b === void 0 ? true : _b, _c = options.end, end = _c === void 0 ? true : _c, _d = options.encode, encode = _d === void 0 ? function (x) { return x; } : _d, _e = options.delimiter, delimiter = _e === void 0 ? \"/#?\" : _e, _f = options.endsWith, endsWith = _f === void 0 ? \"\" : _f;\n var endsWithRe = \"[\".concat(escapeString(endsWith), \"]|$\");\n var delimiterRe = \"[\".concat(escapeString(delimiter), \"]\");\n var route = start ? \"^\" : \"\";\n // Iterate over the tokens and create our regexp string.\n for (var _i = 0, tokens_1 = tokens; _i < tokens_1.length; _i++) {\n var token = tokens_1[_i];\n if (typeof token === \"string\") {\n route += escapeString(encode(token));\n }\n else {\n var prefix = escapeString(encode(token.prefix));\n var suffix = escapeString(encode(token.suffix));\n if (token.pattern) {\n if (keys)\n keys.push(token);\n if (prefix || suffix) {\n if (token.modifier === \"+\" || token.modifier === \"*\") {\n var mod = token.modifier === \"*\" ? \"?\" : \"\";\n route += \"(?:\".concat(prefix, \"((?:\").concat(token.pattern, \")(?:\").concat(suffix).concat(prefix, \"(?:\").concat(token.pattern, \"))*)\").concat(suffix, \")\").concat(mod);\n }\n else {\n route += \"(?:\".concat(prefix, \"(\").concat(token.pattern, \")\").concat(suffix, \")\").concat(token.modifier);\n }\n }\n else {\n if (token.modifier === \"+\" || token.modifier === \"*\") {\n route += \"((?:\".concat(token.pattern, \")\").concat(token.modifier, \")\");\n }\n else {\n route += \"(\".concat(token.pattern, \")\").concat(token.modifier);\n }\n }\n }\n else {\n route += \"(?:\".concat(prefix).concat(suffix, \")\").concat(token.modifier);\n }\n }\n }\n if (end) {\n if (!strict)\n route += \"\".concat(delimiterRe, \"?\");\n route += !options.endsWith ? \"$\" : \"(?=\".concat(endsWithRe, \")\");\n }\n else {\n var endToken = tokens[tokens.length - 1];\n var isEndDelimited = typeof endToken === \"string\"\n ? delimiterRe.indexOf(endToken[endToken.length - 1]) > -1\n : endToken === undefined;\n if (!strict) {\n route += \"(?:\".concat(delimiterRe, \"(?=\").concat(endsWithRe, \"))?\");\n }\n if (!isEndDelimited) {\n route += \"(?=\".concat(delimiterRe, \"|\").concat(endsWithRe, \")\");\n }\n }\n return new RegExp(route, flags(options));\n}\n/**\n * Normalize the given path string, returning a regular expression.\n *\n * An empty array can be passed in for the keys, which will hold the\n * placeholder key descriptions. For example, using `/user/:id`, `keys` will\n * contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`.\n */\nexport function pathToRegexp(path, keys, options) {\n if (path instanceof RegExp)\n return regexpToRegexp(path, keys);\n if (Array.isArray(path))\n return arrayToRegexp(path, keys, options);\n return stringToRegexp(path, keys, options);\n}\n//# sourceMappingURL=index.js.map","import { getWindow, getDocument } from 'ssr-window';\nimport $ from './dom7.js';\nimport { extend } from './utils.js';\n\nconst History = {\n queue: [],\n clearQueue() {\n if (History.queue.length === 0) return;\n const currentQueue = History.queue.shift();\n currentQueue();\n },\n routerQueue: [],\n clearRouterQueue() {\n if (History.routerQueue.length === 0) return;\n const currentQueue = History.routerQueue.pop();\n const { router, stateUrl, action } = currentQueue;\n\n let animate = router.params.animate;\n if (router.params.browserHistoryAnimate === false) animate = false;\n\n if (action === 'back') {\n router.back({ animate, browserHistory: false });\n }\n if (action === 'load') {\n router.navigate(stateUrl, { animate, browserHistory: false });\n }\n },\n handle(e) {\n if (History.blockPopstate) return;\n const app = this;\n // const mainView = app.views.main;\n let state = e.state;\n History.previousState = History.state;\n History.state = state;\n\n History.allowChange = true;\n History.clearQueue();\n\n state = History.state;\n if (!state) state = {};\n\n app.views.forEach((view) => {\n const router = view.router;\n let viewState = state[view.id];\n if (!viewState && view.params.browserHistory) {\n viewState = {\n url: view.router.history[0],\n };\n }\n if (!viewState) return;\n const stateUrl = viewState.url || undefined;\n\n let animate = router.params.animate;\n if (router.params.browserHistoryAnimate === false) animate = false;\n\n if (stateUrl !== router.url) {\n if (router.history.indexOf(stateUrl) >= 0) {\n // Go Back\n if (router.allowPageChange) {\n router.back({ animate, browserHistory: false });\n } else {\n History.routerQueue.push({\n action: 'back',\n router,\n });\n }\n } else if (router.allowPageChange) {\n // Load page\n router.navigate(stateUrl, { animate, browserHistory: false });\n } else {\n History.routerQueue.unshift({\n action: 'load',\n stateUrl,\n router,\n });\n }\n }\n });\n },\n initViewState(viewId, viewState) {\n const window = getWindow();\n const newState = extend({}, History.state || {}, {\n [viewId]: viewState,\n });\n History.state = newState;\n window.history.replaceState(newState, '');\n },\n push(viewId, viewState, url) {\n const window = getWindow();\n const document = getDocument();\n /* eslint-disable no-param-reassign */\n if (url.substr(-3) === '#!/') {\n url = url.replace('#!/', '');\n if (url === '') {\n url = document.location.href;\n if (url.includes('#!/')) {\n url = document.location.href.split('#!/')[0];\n }\n }\n }\n /* eslint-enable no-param-reassign */\n if (!History.allowChange) {\n History.queue.push(() => {\n History.push(viewId, viewState, url);\n });\n return;\n }\n History.previousState = History.state;\n const newState = extend({}, History.previousState || {}, {\n [viewId]: viewState,\n });\n History.state = newState;\n window.history.pushState(newState, '', url);\n },\n replace(viewId, viewState, url) {\n const window = getWindow();\n if (url.substr(-3) === '#!/') {\n // eslint-disable-next-line\n url = url.replace('#!/', '');\n }\n if (!History.allowChange) {\n History.queue.push(() => {\n History.replace(viewId, viewState, url);\n });\n return;\n }\n History.previousState = History.state;\n const newState = extend({}, History.previousState || {}, {\n [viewId]: viewState,\n });\n History.state = newState;\n window.history.replaceState(newState, '', url);\n },\n go(index) {\n const window = getWindow();\n History.allowChange = false;\n window.history.go(index);\n },\n back() {\n const window = getWindow();\n History.allowChange = false;\n window.history.back();\n },\n allowChange: true,\n previousState: {},\n state: {},\n blockPopstate: true,\n init(app) {\n const window = getWindow();\n const document = getDocument();\n History.state = window.history.state;\n $(window).on('load', () => {\n setTimeout(() => {\n History.blockPopstate = false;\n }, 0);\n });\n\n if (document.readyState && document.readyState === 'complete') {\n History.blockPopstate = false;\n }\n\n $(window).on('popstate', History.handle.bind(app));\n },\n};\n\nexport default History;\n","import $ from '../../shared/dom7.js';\nimport History from '../../shared/history.js';\nimport { getSupport } from '../../shared/get-support.js';\nimport { getDevice } from '../../shared/get-device.js';\nimport { now } from '../../shared/utils.js';\n\nfunction SwipeBack(r) {\n const router = r;\n const { $el, $navbarsEl, app, params } = router;\n const support = getSupport();\n const device = getDevice();\n let isTouched = false;\n let isMoved = false;\n const touchesStart = {};\n let isScrolling;\n let $currentPageEl = [];\n let $previousPageEl = [];\n let viewContainerWidth;\n let touchesDiff;\n let allowViewTouchMove = true;\n let touchStartTime;\n let $currentNavbarEl = [];\n let $previousNavbarEl = [];\n let dynamicNavbar;\n let $pageShadowEl;\n let $pageOpacityEl;\n\n let animatableNavEls;\n\n const paramsSwipeBackAnimateShadow = params[`${app.theme}SwipeBackAnimateShadow`];\n const paramsSwipeBackAnimateOpacity = params[`${app.theme}SwipeBackAnimateOpacity`];\n const paramsSwipeBackActiveArea = params[`${app.theme}SwipeBackActiveArea`];\n const paramsSwipeBackThreshold = params[`${app.theme}SwipeBackThreshold`];\n\n const transformOrigin = app.rtl ? 'right center' : 'left center';\n const transformOriginTitleLarge = app.rtl\n ? 'calc(100% - var(--f7-navbar-large-title-padding-left) - var(--f7-safe-area-left)) center'\n : 'calc(var(--f7-navbar-large-title-padding-left) + var(--f7-safe-area-left)) center';\n\n function animatableNavElements() {\n const els = [];\n const inverter = app.rtl ? -1 : 1;\n const currentNavIsTransparent =\n $currentNavbarEl.hasClass('navbar-transparent') &&\n !$currentNavbarEl.hasClass('navbar-large') &&\n !$currentNavbarEl.hasClass('navbar-transparent-visible');\n const currentNavIsLarge = $currentNavbarEl.hasClass('navbar-large');\n const currentNavIsCollapsed = $currentNavbarEl.hasClass('navbar-large-collapsed');\n const currentNavIsLargeTransparent =\n $currentNavbarEl.hasClass('navbar-large-transparent') ||\n ($currentNavbarEl.hasClass('navbar-large') &&\n $currentNavbarEl.hasClass('navbar-transparent'));\n const previousNavIsTransparent =\n $previousNavbarEl.hasClass('navbar-transparent') &&\n !$previousNavbarEl.hasClass('navbar-large') &&\n !$previousNavbarEl.hasClass('navbar-transparent-visible');\n const previousNavIsLarge = $previousNavbarEl.hasClass('navbar-large');\n const previousNavIsCollapsed = $previousNavbarEl.hasClass('navbar-large-collapsed');\n const previousNavIsLargeTransparent =\n $previousNavbarEl.hasClass('navbar-large-transparent') ||\n ($previousNavbarEl.hasClass('navbar-large') &&\n $previousNavbarEl.hasClass('navbar-transparent'));\n const fromLarge = currentNavIsLarge && !currentNavIsCollapsed;\n const toLarge = previousNavIsLarge && !previousNavIsCollapsed;\n const $currentNavElements = $currentNavbarEl.find(\n '.left, .title, .right, .subnavbar, .fading, .title-large, .navbar-bg',\n );\n const $previousNavElements = $previousNavbarEl.find(\n '.left, .title, .right, .subnavbar, .fading, .title-large, .navbar-bg',\n );\n let activeNavBackIconText;\n let previousNavBackIconText;\n\n if (params.iosAnimateNavbarBackIcon) {\n if (\n $currentNavbarEl.hasClass('sliding') ||\n $currentNavbarEl.find('.navbar-inner.sliding').length\n ) {\n activeNavBackIconText = $currentNavbarEl.find('.left').find('.back .icon + span').eq(0);\n } else {\n activeNavBackIconText = $currentNavbarEl\n .find('.left.sliding')\n .find('.back .icon + span')\n .eq(0);\n }\n if (\n $previousNavbarEl.hasClass('sliding') ||\n $previousNavbarEl.find('.navbar-inner.sliding').length\n ) {\n previousNavBackIconText = $previousNavbarEl.find('.left').find('.back .icon + span').eq(0);\n } else {\n previousNavBackIconText = $previousNavbarEl\n .find('.left.sliding')\n .find('.back .icon + span')\n .eq(0);\n }\n if (activeNavBackIconText.length) {\n $previousNavElements.each((el) => {\n if (!$(el).hasClass('title')) return;\n el.f7NavbarLeftOffset += activeNavBackIconText.prev('.icon')[0].offsetWidth;\n });\n }\n }\n $currentNavElements.each((navEl) => {\n const $navEl = $(navEl);\n const isSubnavbar = $navEl.hasClass('subnavbar');\n const isLeft = $navEl.hasClass('left');\n const isTitle = $navEl.hasClass('title');\n const isBg = $navEl.hasClass('navbar-bg');\n if ((isTitle || isBg) && currentNavIsTransparent) return;\n if (!fromLarge && $navEl.hasClass('.title-large')) return;\n const el = {\n el: navEl,\n };\n if (fromLarge) {\n if (isTitle) return;\n if ($navEl.hasClass('title-large')) {\n if (els.indexOf(el) < 0) els.push(el);\n el.overflow = 'visible';\n $navEl.find('.title-large-text').each((subNavEl) => {\n els.push({\n el: subNavEl,\n transform: (progress) => `translateX(${progress * 100 * inverter}%)`,\n });\n });\n return;\n }\n }\n if (toLarge) {\n if (!fromLarge) {\n if ($navEl.hasClass('title-large')) {\n if (els.indexOf(el) < 0) els.push(el);\n el.opacity = 0;\n }\n }\n if (isLeft) {\n if (els.indexOf(el) < 0) els.push(el);\n el.opacity = (progress) => 1 - progress ** 0.33;\n $navEl.find('.back span').each((subNavEl) => {\n els.push({\n el: subNavEl,\n 'transform-origin': transformOrigin,\n transform: (progress) =>\n `translateX(calc(${progress} * (var(--f7-navbarTitleLargeOffset) - var(--f7-navbarLeftTextOffset)))) translateY(calc(${progress} * (var(--f7-navbar-large-title-height) - var(--f7-navbar-large-title-padding-vertical) / 2))) scale(${\n 1 + 1 * progress\n })`,\n });\n });\n return;\n }\n }\n if (isBg) {\n if (els.indexOf(el) < 0) els.push(el);\n if (!fromLarge && !toLarge) {\n if (currentNavIsCollapsed) {\n if (currentNavIsLargeTransparent) {\n el.className = 'ios-swipeback-navbar-bg-large';\n }\n el.transform = (progress) =>\n `translateX(${\n 100 * progress * inverter\n }%) translateY(calc(-1 * var(--f7-navbar-large-title-height)))`;\n } else {\n el.transform = (progress) => `translateX(${100 * progress * inverter}%)`;\n }\n }\n if (!fromLarge && toLarge) {\n el.className = 'ios-swipeback-navbar-bg-large';\n el.transform = (progress) =>\n `translateX(${100 * progress * inverter}%) translateY(calc(-1 * ${\n 1 - progress\n } * var(--f7-navbar-large-title-height)))`;\n }\n if (fromLarge && toLarge) {\n el.transform = (progress) => `translateX(${100 * progress * inverter}%)`;\n }\n if (fromLarge && !toLarge) {\n el.transform = (progress) =>\n `translateX(${\n 100 * progress * inverter\n }%) translateY(calc(-${progress} * var(--f7-navbar-large-title-height)))`;\n }\n return;\n }\n if ($navEl.hasClass('title-large')) return;\n const isSliding =\n $navEl.hasClass('sliding') || $navEl.parents('.navbar-inner.sliding').length;\n if (els.indexOf(el) < 0) els.push(el);\n if (!isSubnavbar || (isSubnavbar && !isSliding)) {\n el.opacity = (progress) => 1 - progress ** 0.33;\n }\n if (isSliding) {\n let transformTarget = el;\n if (isLeft && activeNavBackIconText.length && params.iosAnimateNavbarBackIcon) {\n const textEl = { el: activeNavBackIconText[0] };\n transformTarget = textEl;\n els.push(textEl);\n }\n transformTarget.transform = (progress) => {\n let activeNavTranslate = progress * transformTarget.el.f7NavbarRightOffset;\n if (device.pixelRatio === 1) activeNavTranslate = Math.round(activeNavTranslate);\n if (isSubnavbar && currentNavIsLarge) {\n return `translate3d(${activeNavTranslate}px, calc(-1 * var(--f7-navbar-large-collapse-progress) * var(--f7-navbar-large-title-height)), 0)`;\n }\n return `translate3d(${activeNavTranslate}px,0,0)`;\n };\n }\n });\n $previousNavElements.each((navEl) => {\n const $navEl = $(navEl);\n const isSubnavbar = $navEl.hasClass('subnavbar');\n const isLeft = $navEl.hasClass('left');\n const isTitle = $navEl.hasClass('title');\n const isBg = $navEl.hasClass('navbar-bg');\n if ((isTitle || isBg) && previousNavIsTransparent) return;\n const el = {\n el: navEl,\n };\n if (toLarge) {\n if (isTitle) return;\n if (els.indexOf(el) < 0) els.push(el);\n\n if ($navEl.hasClass('title-large')) {\n el.opacity = 1;\n el.overflow = 'visible';\n $navEl.find('.title-large-text').each((subNavEl) => {\n els.push({\n el: subNavEl,\n 'transform-origin': transformOriginTitleLarge,\n opacity: (progress) => progress ** 3,\n transform: (progress) =>\n `translateX(calc(${\n 1 - progress\n } * (var(--f7-navbarLeftTextOffset) - var(--f7-navbarTitleLargeOffset)))) translateY(calc(${\n progress - 1\n } * var(--f7-navbar-large-title-height) + ${\n 1 - progress\n } * var(--f7-navbar-large-title-padding-vertical))) scale(${0.5 + progress * 0.5})`,\n });\n });\n return;\n }\n }\n if (isBg) {\n if (els.indexOf(el) < 0) els.push(el);\n if (!fromLarge && !toLarge) {\n if (previousNavIsCollapsed) {\n if (previousNavIsLargeTransparent) {\n el.className = 'ios-swipeback-navbar-bg-large';\n }\n el.transform = (progress) =>\n `translateX(${\n (-100 + 100 * progress) * inverter\n }%) translateY(calc(-1 * var(--f7-navbar-large-title-height)))`;\n } else {\n el.transform = (progress) => `translateX(${(-100 + 100 * progress) * inverter}%)`;\n }\n }\n if (!fromLarge && toLarge) {\n el.transform = (progress) =>\n `translateX(${(-100 + 100 * progress) * inverter}%) translateY(calc(-1 * ${\n 1 - progress\n } * var(--f7-navbar-large-title-height)))`;\n }\n if (fromLarge && !toLarge) {\n el.className = 'ios-swipeback-navbar-bg-large';\n el.transform = (progress) =>\n `translateX(${\n (-100 + 100 * progress) * inverter\n }%) translateY(calc(-${progress} * var(--f7-navbar-large-title-height)))`;\n }\n if (fromLarge && toLarge) {\n el.transform = (progress) => `translateX(${(-100 + 100 * progress) * inverter}%)`;\n }\n\n return;\n }\n if ($navEl.hasClass('title-large')) return;\n const isSliding =\n $navEl.hasClass('sliding') || $previousNavbarEl.children('.navbar-inner.sliding').length;\n if (els.indexOf(el) < 0) els.push(el);\n if (!isSubnavbar || (isSubnavbar && !isSliding)) {\n el.opacity = (progress) => progress ** 3;\n }\n if (isSliding) {\n let transformTarget = el;\n if (isLeft && previousNavBackIconText.length && params.iosAnimateNavbarBackIcon) {\n const textEl = { el: previousNavBackIconText[0] };\n transformTarget = textEl;\n els.push(textEl);\n }\n transformTarget.transform = (progress) => {\n let previousNavTranslate = transformTarget.el.f7NavbarLeftOffset * (1 - progress);\n if (device.pixelRatio === 1) previousNavTranslate = Math.round(previousNavTranslate);\n if (isSubnavbar && previousNavIsLarge) {\n return `translate3d(${previousNavTranslate}px, calc(-1 * var(--f7-navbar-large-collapse-progress) * var(--f7-navbar-large-title-height)), 0)`;\n }\n return `translate3d(${previousNavTranslate}px,0,0)`;\n };\n }\n });\n return els;\n }\n\n function setAnimatableNavElements({ progress, reset, transition, reflow } = {}) {\n const styles = ['overflow', 'transform', 'transform-origin', 'opacity'];\n if (transition === true || transition === false) {\n for (let i = 0; i < animatableNavEls.length; i += 1) {\n const el = animatableNavEls[i];\n if (el && el.el) {\n if (transition === true) el.el.classList.add('navbar-page-transitioning');\n if (transition === false) el.el.classList.remove('navbar-page-transitioning');\n }\n }\n }\n if (reflow && animatableNavEls.length && animatableNavEls[0] && animatableNavEls[0].el) {\n // eslint-disable-next-line\n animatableNavEls[0].el._clientLeft = animatableNavEls[0].el.clientLeft;\n }\n for (let i = 0; i < animatableNavEls.length; i += 1) {\n const el = animatableNavEls[i];\n if (el && el.el) {\n if (el.className && !el.classNameSet && !reset) {\n el.el.classList.add(el.className);\n el.classNameSet = true;\n }\n if (el.className && reset) {\n el.el.classList.remove(el.className);\n }\n for (let j = 0; j < styles.length; j += 1) {\n const styleProp = styles[j];\n if (el[styleProp]) {\n if (reset) {\n el.el.style[styleProp] = '';\n } else if (typeof el[styleProp] === 'function') {\n el.el.style[styleProp] = el[styleProp](progress);\n } else {\n el.el.style[styleProp] = el[styleProp];\n }\n }\n }\n }\n }\n }\n\n function handleTouchStart(e) {\n 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(props = {}) {\n const router = this;\n appRouterCheck(router, 'refreshPage');\n return router.navigate(router.currentRoute.url, {\n ignoreCache: true,\n reloadCurrent: true,\n props,\n });\n}\n\nfunction forward(router, el, forwardOptions = {}) {\n const document = getDocument();\n const $el = $(el);\n const app = router.app;\n const view = router.view;\n const options = extend(\n false,\n {\n animate: router.params.animate,\n browserHistory: true,\n replaceState: false,\n history: true,\n reloadCurrent: router.params.reloadPages,\n reloadPrevious: false,\n reloadAll: false,\n clearPreviousHistory: false,\n reloadDetail: router.params.reloadDetail,\n on: {},\n },\n forwardOptions,\n );\n\n const masterDetailEnabled = router.params.masterDetailBreakpoint > 0;\n const isMaster =\n masterDetailEnabled &&\n options.route &&\n options.route.route &&\n (options.route.route.master === true ||\n (typeof options.route.route.master === 'function' &&\n options.route.route.master(app, router)));\n\n let masterPageEl;\n let otherDetailPageEl;\n let detailsInBetweenRemoved = 0;\n\n let currentRouteIsModal = router.currentRoute.modal;\n let modalType;\n if (!currentRouteIsModal) {\n 'popup popover sheet loginScreen actions customModal panel'\n .split(' ')\n .forEach((modalLoadProp) => {\n if (\n router.currentRoute &&\n router.currentRoute.route &&\n router.currentRoute.route[modalLoadProp]\n ) {\n currentRouteIsModal = true;\n modalType = modalLoadProp;\n }\n });\n }\n\n if (currentRouteIsModal) {\n const modalToClose =\n router.currentRoute.modal || router.currentRoute.route.modalInstance || app[modalType].get();\n const previousUrl = router.history[router.history.length - 2];\n let previousRoute = router.findMatchingRoute(previousUrl);\n if (!previousRoute && previousUrl) {\n previousRoute = {\n url: previousUrl,\n path: previousUrl.split('?')[0],\n query: parseUrlQuery(previousUrl),\n route: {\n path: previousUrl.split('?')[0],\n url: previousUrl,\n },\n };\n }\n\n router.modalRemove(modalToClose);\n }\n\n const dynamicNavbar = router.dynamicNavbar;\n\n const $viewEl = router.$el;\n const $newPage = $el;\n const reload = options.reloadPrevious || options.reloadCurrent || options.reloadAll;\n let $oldPage;\n\n let $navbarsEl;\n let $newNavbarEl;\n let $oldNavbarEl;\n\n router.allowPageChange = false;\n if ($newPage.length === 0) {\n router.allowPageChange = true;\n return router;\n }\n\n if ($newPage.length) {\n // Remove theme elements\n router.removeThemeElements($newPage);\n }\n\n if (dynamicNavbar) {\n $newNavbarEl = $newPage.children('.navbar');\n $navbarsEl = router.$navbarsEl;\n if ($newNavbarEl.length === 0 && $newPage[0] && $newPage[0].f7Page) {\n // Try from pageData\n $newNavbarEl = $newPage[0].f7Page.$navbarEl;\n }\n }\n\n // Save Keep Alive Cache\n if (\n options.route &&\n options.route.route &&\n options.route.route.keepAlive &&\n !options.route.route.keepAliveData\n ) {\n options.route.route.keepAliveData = {\n pageEl: $el[0],\n };\n }\n\n // Pages In View\n const $pagesInView = $viewEl\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 if (options.history) {\n if (\n ((options.reloadCurrent || (reloadDetail && otherDetailPageEl)) && router.history.length) >\n 0 ||\n options.replaceState\n ) {\n if (reloadDetail && detailsInBetweenRemoved > 0) {\n router.history = router.history.slice(0, router.history.length - detailsInBetweenRemoved);\n router.propsHistory = router.propsHistory.slice(\n 0,\n router.propsHistory.length - detailsInBetweenRemoved,\n );\n }\n router.history[router.history.length - (options.reloadPrevious ? 2 : 1)] = url;\n router.propsHistory[router.propsHistory.length - (options.reloadPrevious ? 2 : 1)] =\n options.props || {};\n } else if (options.reloadPrevious) {\n router.history[router.history.length - 2] = url;\n router.propsHistory[router.propsHistory.length - 2] = options.props || {};\n } else if (options.reloadAll) {\n router.history = [url];\n router.propsHistory = [options.props || {}];\n } else {\n router.history.push(url);\n router.propsHistory.push(options.props || {});\n }\n }\n router.saveHistory();\n\n // Insert new page and navbar\n const newPageInDom = $newPage.parents(document).length > 0;\n const f7Component = $newPage[0].f7Component;\n if (options.reloadPrevious) {\n if (f7Component && !newPageInDom) {\n f7Component.mount((componentEl) => {\n $(componentEl).insertBefore($oldPage);\n });\n } else {\n $newPage.insertBefore($oldPage);\n }\n if (dynamicNavbar && $newNavbarEl.length) {\n if ($newNavbarEl.find('.title-large').length) {\n $newNavbarEl.addClass('navbar-large');\n }\n if ($oldNavbarEl.length) {\n $newNavbarEl.insertBefore($oldNavbarEl);\n } else {\n if (!router.$navbarsEl.parents(document).length) {\n router.$el.prepend(router.$navbarsEl);\n }\n $navbarsEl.append($newNavbarEl);\n }\n }\n } else {\n if ($oldPage.next('.page')[0] !== $newPage[0]) {\n if (f7Component && !newPageInDom) {\n f7Component.mount((componentEl) => {\n $viewEl.append(componentEl);\n });\n } else {\n $viewEl.append($newPage[0]);\n }\n }\n if (dynamicNavbar && $newNavbarEl.length) {\n if ($newNavbarEl.find('.title-large').length) {\n $newNavbarEl.addClass('navbar-large');\n }\n if (!router.$navbarsEl.parents(document).length) {\n router.$el.prepend(router.$navbarsEl);\n }\n $navbarsEl.append($newNavbarEl[0]);\n }\n }\n if (!newPageInDom) {\n router.pageCallback(\n 'mounted',\n $newPage,\n $newNavbarEl,\n newPagePosition,\n reload ? newPagePosition : 'current',\n options,\n $oldPage,\n );\n } else if (\n options.route &&\n options.route.route &&\n options.route.route.keepAlive &&\n !$newPage[0].f7PageMounted\n ) {\n $newPage[0].f7PageMounted = true;\n router.pageCallback(\n 'mounted',\n $newPage,\n $newNavbarEl,\n newPagePosition,\n reload ? newPagePosition : 'current',\n options,\n $oldPage,\n );\n }\n\n // Remove old page\n if ((options.reloadCurrent || reloadDetail) && $oldPage.length > 0) {\n 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 router.propsHistory = router.propsHistory.slice(\n 0,\n router.history.indexOf(options.route.url) + 2,\n );\n view.history = router.history;\n } else if (router.history[[router.history.length - 2]]) {\n router.propsHistory[router.propsHistory.length - 2] = options.props || {};\n } else {\n router.history.unshift(router.url);\n router.propsHistory.unshift(options.props || {});\n }\n\n 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 router.propsHistory[router.propsHistory.length - 1] = options.props || {};\n } else {\n if (router.history.length === 1) {\n router.history.unshift(router.url);\n router.propsHistory.unshift(options.props || {});\n }\n router.history.pop();\n router.propsHistory.pop();\n }\n router.saveHistory();\n\n // Current Page & Navbar\n router.currentPageEl = $newPage[0];\n if (dynamicNavbar && $newNavbarEl.length) {\n router.currentNavbarEl = $newNavbarEl[0];\n } else {\n delete router.currentNavbarEl;\n }\n\n // Current Route\n router.currentRoute = options.route;\n\n // History State\n if (device.ie || device.edge || (device.firefox && !device.ios)) {\n if (router.params.browserHistory && options.browserHistory) {\n if (options.replaceState) {\n const browserHistoryRoot = router.params.browserHistoryRoot || '';\n History.replace(\n view.id,\n {\n url: options.route.url,\n },\n browserHistoryRoot + router.params.browserHistorySeparator + options.route.url,\n );\n } else if (backIndex) {\n History.go(-backIndex);\n } else {\n History.back();\n }\n }\n }\n\n // Insert Page\n insertPage();\n\n // Load Tab\n if (options.route.route.tab) {\n router.tabLoad(\n options.route.route.tab,\n extend({}, options, {\n history: false,\n browserHistory: false,\n }),\n );\n }\n\n // Check master detail\n\n if (masterDetailEnabled && (currentIsMaster || masterPageRemoved)) {\n view.checkMasterDetailBreakpoint(false);\n }\n\n // Page init and before init events\n router.pageCallback('init', $newPage, $newNavbarEl, 'previous', 'current', options, $oldPage);\n\n // Before animation callback\n router.pageCallback('beforeOut', $oldPage, $oldNavbarEl, 'current', 'next', options);\n router.pageCallback('beforeIn', $newPage, $newNavbarEl, 'previous', 'current', options);\n\n // Animation\n function afterAnimation() {\n // Set classes\n router.setPagePosition($newPage, 'current', false);\n router.setPagePosition($oldPage, 'next', true);\n if (dynamicNavbar) {\n router.setNavbarPosition($newNavbarEl, 'current', false);\n router.setNavbarPosition($oldNavbarEl, 'next', true);\n }\n\n // After animation event\n router.pageCallback('afterOut', $oldPage, $oldNavbarEl, 'current', 'next', options);\n router.pageCallback('afterIn', $newPage, $newNavbarEl, 'previous', 'current', options);\n\n // Remove Old Page\n 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], {\n preload: true,\n props: router.propsHistory[router.propsHistory.length - 2] || {},\n });\n }\n if (router.params.browserHistory) {\n History.clearRouterQueue();\n }\n }\n\n function setPositionClasses() {\n router.setPagePosition($oldPage, 'current');\n router.setPagePosition($newPage, 'previous', false);\n if (dynamicNavbar) {\n router.setNavbarPosition($oldNavbarEl, 'current');\n router.setNavbarPosition($newNavbarEl, 'previous', false);\n }\n }\n\n if (options.animate && !(currentIsMaster && app.width >= router.params.masterDetailBreakpoint)) {\n let transition = router.params.transition;\n if ($oldPage[0] && $oldPage[0].f7PageTransition) {\n transition = $oldPage[0].f7PageTransition;\n delete $oldPage[0].f7PageTransition;\n }\n if (options.transition) transition = options.transition;\n if (!transition && router.previousRoute && router.previousRoute.route) {\n transition = router.previousRoute.route.transition;\n }\n if (\n !transition &&\n router.previousRoute &&\n router.previousRoute.route &&\n router.previousRoute.route.options\n ) {\n transition = router.previousRoute.route.options.transition;\n }\n setPositionClasses();\n router.animate($oldPage, $newPage, $oldNavbarEl, $newNavbarEl, 'backward', transition, () => {\n afterAnimation();\n });\n } else {\n afterAnimation();\n }\n\n return router;\n}\nfunction loadBack(router, backParams, backOptions, ignorePageChange) {\n if (!router.allowPageChange && !ignorePageChange) return router;\n const params = backParams;\n const options = backOptions;\n const { url, content, el, pageName, component, componentUrl } = params;\n\n if (\n options.route.url &&\n router.url === options.route.url &&\n !(options.reloadCurrent || options.reloadPrevious) &&\n !router.params.allowDuplicateUrls\n ) {\n router.allowPageChange = true;\n return false;\n }\n\n if (!options.route && url) {\n options.route = router.parseRouteUrl(url);\n }\n\n // Component Callbacks\n function resolve(pageEl, newOptions) {\n return backward(router, pageEl, extend(options, newOptions));\n }\n function reject() {\n router.allowPageChange = true;\n return router;\n }\n\n if (url || componentUrl || component) {\n router.allowPageChange = false;\n }\n\n // Proceed\n if (content) {\n backward(router, router.getPageEl(content), options);\n } else if (el) {\n // Load page from specified HTMLElement or by page name in pages container\n backward(router, router.getPageEl(el), options);\n } else if (pageName) {\n // Load page by page name in pages container\n backward(router, router.$el.children(`.page[data-name=\"${pageName}\"]`).eq(0), options);\n } else if (component || componentUrl) {\n // Load from component (F7/Vue/React/...)\n try {\n router.pageComponentLoader({\n routerEl: router.el,\n component,\n componentUrl,\n options,\n resolve,\n reject,\n });\n } catch (err) {\n router.allowPageChange = true;\n throw err;\n }\n } else if (url) {\n // Load using XHR\n if (router.xhrAbortController) {\n router.xhrAbortController.abort();\n router.xhrAbortController = false;\n }\n router\n .xhrRequest(url, options)\n .then((pageContent) => {\n backward(router, router.getPageEl(pageContent), options);\n })\n .catch(() => {\n router.allowPageChange = true;\n });\n }\n return router;\n}\nfunction back(...args) {\n const router = this;\n const device = getDevice();\n if (router.swipeBackActive) return router;\n let navigateUrl;\n let navigateOptions;\n let navigateProps;\n let route;\n if (typeof args[0] === 'object') {\n navigateOptions = args[0] || {};\n } else {\n navigateUrl = args[0];\n navigateOptions = args[1] || {};\n }\n\n const { name, params, query } = navigateOptions;\n if (name) {\n navigateUrl = router.generateUrl({ name, params, query });\n if (navigateUrl) {\n return router.back(\n navigateUrl,\n extend({}, navigateOptions, {\n name: null,\n params: null,\n query: null,\n }),\n );\n }\n return router;\n }\n\n const app = router.app;\n appRouterCheck(router, 'back');\n\n let currentRouteIsModal = router.currentRoute.modal;\n let modalType;\n if (!currentRouteIsModal) {\n 'popup popover sheet loginScreen actions customModal panel'\n .split(' ')\n .forEach((modalLoadProp) => {\n if (router.currentRoute.route[modalLoadProp]) {\n currentRouteIsModal = true;\n modalType = modalLoadProp;\n }\n });\n }\n if (currentRouteIsModal && !navigateOptions.preload) {\n const modalToClose =\n router.currentRoute.modal || router.currentRoute.route.modalInstance || app[modalType].get();\n const previousUrl = router.history[router.history.length - 2];\n let previousRoute;\n // check if previous route is modal too\n if (modalToClose && modalToClose.$el) {\n const prevOpenedModals = modalToClose.$el.prevAll('.modal-in');\n if (prevOpenedModals.length && prevOpenedModals[0].f7Modal) {\n const modalEl = prevOpenedModals[0];\n // check if current router not inside of the modalEl\n if (!router.$el.parents(modalEl).length) {\n previousRoute = modalEl.f7Modal.route;\n }\n }\n }\n if (!previousRoute) {\n previousRoute = router.findMatchingRoute(previousUrl);\n }\n\n if (!previousRoute && previousUrl) {\n previousRoute = {\n url: previousUrl,\n path: previousUrl.split('?')[0],\n query: parseUrlQuery(previousUrl),\n route: {\n path: previousUrl.split('?')[0],\n url: previousUrl,\n },\n };\n }\n if (!navigateUrl || navigateUrl.replace(/[# ]/g, '').trim().length === 0) {\n if (!previousRoute || !modalToClose) {\n return router;\n }\n }\n const forceOtherUrl = navigateOptions.force && previousRoute && navigateUrl;\n if (previousRoute && modalToClose) {\n const isBrokenBrowserHistory = device.ie || device.edge || (device.firefox && !device.ios);\n const needHistoryBack =\n router.params.browserHistory && navigateOptions.browserHistory !== false;\n const currentRouteWithoutBrowserHistory =\n router.currentRoute &&\n router.currentRoute.route &&\n router.currentRoute.route.options &&\n router.currentRoute.route.options.browserHistory === false;\n if (needHistoryBack && !isBrokenBrowserHistory && !currentRouteWithoutBrowserHistory) {\n History.back();\n }\n router.currentRoute = previousRoute;\n router.history.pop();\n router.propsHistory.pop();\n router.saveHistory();\n\n if (needHistoryBack && isBrokenBrowserHistory && !currentRouteWithoutBrowserHistory) {\n History.back();\n }\n\n router.modalRemove(modalToClose);\n if (forceOtherUrl) {\n router.navigate(navigateUrl, { reloadCurrent: true });\n }\n } else if (modalToClose) {\n router.modalRemove(modalToClose);\n if (navigateUrl) {\n router.navigate(navigateUrl, { reloadCurrent: true });\n }\n }\n return router;\n }\n let $previousPage = router.$el\n .children('.page-current')\n .prevAll('.page-previous:not(.page-master)')\n .eq(0);\n\n let skipMaster;\n if (router.params.masterDetailBreakpoint > 0) {\n const classes = [];\n router.$el.children('.page').each((pageEl) => {\n classes.push(pageEl.className);\n });\n\n const $previousMaster = router.$el.children('.page-current').prevAll('.page-master').eq(0);\n if ($previousMaster.length) {\n const expectedPreviousPageUrl = router.history[router.history.length - 2];\n const expectedPreviousPageRoute = router.findMatchingRoute(expectedPreviousPageUrl);\n if (\n expectedPreviousPageRoute &&\n $previousMaster[0].f7Page &&\n expectedPreviousPageRoute.route === $previousMaster[0].f7Page.route.route\n ) {\n $previousPage = $previousMaster;\n if (!navigateOptions.preload) {\n skipMaster = app.width >= router.params.masterDetailBreakpoint;\n }\n }\n }\n }\n\n if (!navigateOptions.force && $previousPage.length && !skipMaster) {\n 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, {\n force: true,\n props: router.propsHistory[router.propsHistory.length - 2] || {},\n }),\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 navigateProps = router.propsHistory[router.propsHistory.length - 2] || {};\n }\n if (skipMaster && !navigateOptions.force && router.history[router.history.length - 3]) {\n return router.back(\n router.history[router.history.length - 3],\n extend({}, navigateOptions || {}, {\n force: true,\n animate: false,\n props: router.propsHistory[router.propsHistory.length - 3] || {},\n }),\n );\n }\n if (skipMaster && !navigateOptions.force) {\n return router;\n }\n\n // Find route to load\n route = router.findMatchingRoute(navigateUrl);\n if (!route) {\n if (navigateUrl) {\n route = {\n url: navigateUrl,\n path: navigateUrl.split('?')[0],\n query: parseUrlQuery(navigateUrl),\n route: {\n path: navigateUrl.split('?')[0],\n url: navigateUrl,\n },\n };\n }\n }\n if (!route) {\n return router;\n }\n\n if (route.route.redirect) {\n return redirect.call(router, 'backward', route, navigateOptions);\n }\n\n const options = {};\n if (route.route.options) {\n extend(options, route.route.options, navigateOptions, { props: navigateProps || {} });\n } else {\n extend(options, navigateOptions, { props: navigateProps || {} });\n }\n options.route = route;\n\n 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 propsHistory: [],\n scrollHistory: view.scrollHistory,\n cache: app.cache,\n dynamicNavbar: app.theme === 'ios' && view.params.iosDynamicNavbar,\n initialPages: [],\n initialNavbars: [],\n });\n }\n\n // Install Modules\n router.useModules();\n\n // AllowPageChage\n router.allowPageChange = true;\n\n // Current Route\n let currentRoute = {};\n let previousRoute = {};\n Object.defineProperty(router, 'currentRoute', {\n enumerable: true,\n configurable: true,\n set(newRoute = {}) {\n previousRoute = extend({}, currentRoute);\n currentRoute = newRoute;\n if (!currentRoute) return;\n router.url = currentRoute.url;\n router.emit('routeChange', newRoute, previousRoute, router);\n },\n get() {\n return currentRoute;\n },\n });\n Object.defineProperty(router, 'previousRoute', {\n enumerable: true,\n configurable: true,\n get() {\n return previousRoute;\n },\n set(newRoute) {\n previousRoute = newRoute;\n },\n });\n\n return router;\n }\n\n mount() {\n const router = this;\n const view = router.view;\n const document = getDocument();\n\n extend(false, router, {\n tempDom: document.createElement('div'),\n $el: view.$el,\n el: view.el,\n $navbarsEl: view.$navbarsEl,\n navbarsEl: view.navbarsEl,\n });\n\n router.emit('local::mount routerMount', router);\n }\n\n animatableNavElements($newNavbarEl, $oldNavbarEl, toLarge, fromLarge, direction) {\n const router = this;\n const dynamicNavbar = router.dynamicNavbar;\n const animateIcon = router.params.iosAnimateNavbarBackIcon;\n\n let newNavEls;\n let oldNavEls;\n function animatableNavEl($el, $navbarInner) {\n const isSliding = $el.hasClass('sliding') || $navbarInner.hasClass('sliding');\n const isSubnavbar = $el.hasClass('subnavbar');\n const needsOpacityTransition = isSliding ? !isSubnavbar : true;\n const $iconEl = $el.find('.back .icon');\n let isIconLabel;\n if (\n isSliding &&\n animateIcon &&\n $el.hasClass('left') &&\n $iconEl.length > 0 &&\n $iconEl.next('span').length\n ) {\n $el = $iconEl.next('span'); // eslint-disable-line\n isIconLabel = true;\n }\n return {\n $el,\n isIconLabel,\n leftOffset: $el[0].f7NavbarLeftOffset,\n rightOffset: $el[0].f7NavbarRightOffset,\n isSliding,\n isSubnavbar,\n needsOpacityTransition,\n };\n }\n if (dynamicNavbar) {\n newNavEls = [];\n oldNavEls = [];\n $newNavbarEl\n .children('.navbar-inner')\n .children('.left, .right, .title, .subnavbar')\n .each((navEl) => {\n const $navEl = $(navEl);\n if ($navEl.hasClass('left') && fromLarge && direction === 'forward') return;\n if ($navEl.hasClass('title') && toLarge) return;\n newNavEls.push(animatableNavEl($navEl, $newNavbarEl.children('.navbar-inner')));\n });\n if (\n !(\n $oldNavbarEl.hasClass('navbar-master') &&\n router.params.masterDetailBreakpoint > 0 &&\n router.app.width >= router.params.masterDetailBreakpoint\n )\n ) {\n $oldNavbarEl\n .children('.navbar-inner')\n .children('.left, .right, .title, .subnavbar')\n .each((navEl) => {\n const $navEl = $(navEl);\n if ($navEl.hasClass('left') && toLarge && !fromLarge && direction === 'forward') return;\n if ($navEl.hasClass('left') && toLarge && direction === 'backward') return;\n if ($navEl.hasClass('title') && fromLarge) {\n return;\n }\n oldNavEls.push(animatableNavEl($navEl, $oldNavbarEl.children('.navbar-inner')));\n });\n }\n [oldNavEls, newNavEls].forEach((navEls) => {\n navEls.forEach((navEl) => {\n const n = navEl;\n const { isSliding, $el } = navEl;\n const otherEls = navEls === oldNavEls ? newNavEls : oldNavEls;\n if (!(isSliding && $el.hasClass('title') && otherEls)) return;\n otherEls.forEach((otherNavEl) => {\n if (otherNavEl.isIconLabel) {\n const iconTextEl = otherNavEl.$el[0];\n n.leftOffset += iconTextEl ? iconTextEl.offsetLeft || 0 : 0;\n }\n });\n });\n });\n }\n\n return { newNavEls, oldNavEls };\n }\n\n animate($oldPageEl, $newPageEl, $oldNavbarEl, $newNavbarEl, direction, transition, callback) {\n const router = this;\n if (router.params.animateCustom) {\n router.params.animateCustom.apply(router, [\n $oldPageEl,\n $newPageEl,\n $oldNavbarEl,\n $newNavbarEl,\n direction,\n callback,\n ]);\n return;\n }\n const dynamicNavbar = router.dynamicNavbar;\n const ios = router.app.theme === 'ios';\n if (transition) {\n const routerCustomTransitionClass = `router-transition-custom router-transition-${transition}-${direction}`;\n // Animate\n const onCustomTransitionDone = () => {\n router.$el.removeClass(routerCustomTransitionClass);\n if (dynamicNavbar && router.$navbarsEl.length) {\n if ($newNavbarEl) {\n router.$navbarsEl.prepend($newNavbarEl);\n }\n if ($oldNavbarEl) {\n router.$navbarsEl.prepend($oldNavbarEl);\n }\n }\n if (callback) callback();\n };\n\n (direction === 'forward' ? $newPageEl : $oldPageEl).animationEnd(onCustomTransitionDone);\n if (dynamicNavbar) {\n if ($newNavbarEl && $newPageEl) {\n router.setNavbarPosition($newNavbarEl, '');\n $newNavbarEl.removeClass('navbar-next navbar-previous navbar-current');\n $newPageEl.prepend($newNavbarEl);\n }\n if ($oldNavbarEl && $oldPageEl) {\n router.setNavbarPosition($oldNavbarEl, '');\n $oldNavbarEl.removeClass('navbar-next navbar-previous navbar-current');\n $oldPageEl.prepend($oldNavbarEl);\n }\n }\n\n router.$el.addClass(routerCustomTransitionClass);\n return;\n }\n\n // Router Animation class\n const routerTransitionClass = `router-transition-${direction} router-transition`;\n\n let newNavEls;\n let oldNavEls;\n\n let fromLarge;\n let toLarge;\n let toDifferent;\n\n let oldIsLarge;\n let newIsLarge;\n\n if (ios && dynamicNavbar) {\n const betweenMasterAndDetail =\n router.params.masterDetailBreakpoint > 0 &&\n router.app.width >= router.params.masterDetailBreakpoint &&\n (($oldNavbarEl.hasClass('navbar-master') &&\n $newNavbarEl.hasClass('navbar-master-detail')) ||\n ($oldNavbarEl.hasClass('navbar-master-detail') &&\n $newNavbarEl.hasClass('navbar-master')));\n if (!betweenMasterAndDetail) {\n oldIsLarge = $oldNavbarEl && $oldNavbarEl.hasClass('navbar-large');\n newIsLarge = $newNavbarEl && $newNavbarEl.hasClass('navbar-large');\n fromLarge = oldIsLarge && !$oldNavbarEl.hasClass('navbar-large-collapsed');\n toLarge = newIsLarge && !$newNavbarEl.hasClass('navbar-large-collapsed');\n toDifferent = (fromLarge && !toLarge) || (toLarge && !fromLarge);\n }\n const navEls = router.animatableNavElements(\n $newNavbarEl,\n $oldNavbarEl,\n toLarge,\n fromLarge,\n direction,\n );\n newNavEls = navEls.newNavEls;\n oldNavEls = navEls.oldNavEls;\n }\n\n function animateNavbars(progress) {\n if (!(ios && dynamicNavbar)) return;\n if (progress === 1) {\n if (toLarge) {\n $newNavbarEl.addClass('router-navbar-transition-to-large');\n $oldNavbarEl.addClass('router-navbar-transition-to-large');\n }\n if (fromLarge) {\n $newNavbarEl.addClass('router-navbar-transition-from-large');\n $oldNavbarEl.addClass('router-navbar-transition-from-large');\n }\n }\n newNavEls.forEach((navEl) => {\n const $el = navEl.$el;\n const offset = direction === 'forward' ? navEl.rightOffset : navEl.leftOffset;\n if (navEl.isSliding) {\n if (navEl.isSubnavbar && newIsLarge) {\n // prettier-ignore\n $el[0].style.setProperty(\n 'transform',\n `translate3d(${offset * (1 - progress)}px, calc(-1 * var(--f7-navbar-large-collapse-progress) * var(--f7-navbar-large-title-height)), 0)`,\n 'important',\n );\n } else {\n $el.transform(`translate3d(${offset * (1 - progress)}px,0,0)`);\n }\n }\n });\n oldNavEls.forEach((navEl) => {\n const $el = navEl.$el;\n const offset = direction === 'forward' ? navEl.leftOffset : navEl.rightOffset;\n if (navEl.isSliding) {\n if (navEl.isSubnavbar && oldIsLarge) {\n $el.transform(\n `translate3d(${\n offset * progress\n }px, calc(-1 * var(--f7-navbar-large-collapse-progress) * var(--f7-navbar-large-title-height)), 0)`,\n );\n } else {\n $el.transform(`translate3d(${offset * progress}px,0,0)`);\n }\n }\n });\n }\n\n // AnimationEnd Callback\n function onDone() {\n if (router.dynamicNavbar) {\n if ($newNavbarEl) {\n $newNavbarEl.removeClass(\n 'router-navbar-transition-to-large router-navbar-transition-from-large',\n );\n $newNavbarEl.addClass('navbar-no-title-large-transition');\n nextFrame(() => {\n $newNavbarEl.removeClass('navbar-no-title-large-transition');\n });\n }\n if ($oldNavbarEl) {\n $oldNavbarEl.removeClass(\n 'router-navbar-transition-to-large router-navbar-transition-from-large',\n );\n }\n if (\n $newNavbarEl.hasClass('sliding') ||\n $newNavbarEl.children('.navbar-inner.sliding').length\n ) {\n $newNavbarEl.find('.title, .left, .right, .left .icon, .subnavbar').transform('');\n } else {\n $newNavbarEl.find('.sliding').transform('');\n }\n if (\n $oldNavbarEl.hasClass('sliding') ||\n $oldNavbarEl.children('.navbar-inner.sliding').length\n ) {\n $oldNavbarEl.find('.title, .left, .right, .left .icon, .subnavbar').transform('');\n } else {\n $oldNavbarEl.find('.sliding').transform('');\n }\n }\n router.$el.removeClass(routerTransitionClass);\n if (callback) callback();\n }\n\n (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.substring(\n documentUrl.indexOf(browserHistoryRoot) + browserHistoryRoot.length,\n );\n if (documentUrl === '') documentUrl = '/';\n }\n if (browserHistorySeparator.length > 0 && documentUrl.indexOf(browserHistorySeparator) >= 0) {\n initialUrl = documentUrl.substring(\n documentUrl.indexOf(browserHistorySeparator) + browserHistorySeparator.length,\n );\n } else {\n initialUrl = documentUrl;\n }\n router.restoreHistory();\n if (router.history.indexOf(initialUrl) >= 0) {\n router.history = router.history.slice(0, router.history.indexOf(initialUrl) + 1);\n } else if (router.params.url === initialUrl) {\n router.history = [initialUrl];\n } else if (\n History.state &&\n History.state[view.id] &&\n History.state[view.id].url === router.history[router.history.length - 1]\n ) {\n initialUrl = router.history[router.history.length - 1];\n } else {\n router.history = [documentUrl.split(browserHistorySeparator)[0] || '/', initialUrl];\n }\n if (router.history.length > 1) {\n historyRestored = true;\n } else {\n router.history = [];\n }\n router.saveHistory();\n }\n\n router.initialUrl = initialUrl;\n router.historyRestored = historyRestored;\n\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 { 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 Component from './component-class.js';\nimport parseComponent from './parse-component.js';\nimport customComponents from './custom-components.js';\nimport $jsx from './$jsx.js';\n\nfunction registerComponent(tagName, component) {\n customComponents[tagName] = component;\n}\n\nfunction unregisterComponent(tagName) {\n delete customComponents[tagName];\n}\n\nexport { Component, $jsx };\nexport default {\n name: 'component',\n static: {\n Component,\n parseComponent,\n registerComponent,\n unregisterComponent,\n },\n create() {\n const app = this;\n app.component = {\n registerComponent,\n unregisterComponent,\n parse(componentString) {\n return parseComponent(componentString);\n },\n create(component, props, { root, el, context, children }) {\n return new Component(app, component, props, { root, el, context, children });\n },\n };\n },\n};\n","import History from '../../shared/history.js';\n\nexport default {\n name: 'history',\n static: {\n history: History,\n },\n on: {\n init() {\n History.init(this);\n },\n },\n};\n","import { getWindow } from 'ssr-window';\nimport { extend } from '../../shared/utils.js';\n\nconst SW = {\n registrations: [],\n register(path, scope) {\n const app = this;\n const window = getWindow();\n\n if (!('serviceWorker' in window.navigator) || !app.serviceWorker.container) {\n return new Promise((resolve, reject) => {\n reject(new Error('Service worker is not supported'));\n });\n }\n return new Promise((resolve, reject) => {\n app.serviceWorker.container\n .register(path, scope ? { scope } : {})\n .then((reg) => {\n SW.registrations.push(reg);\n app.emit('serviceWorkerRegisterSuccess', reg);\n resolve(reg);\n })\n .catch((error) => {\n app.emit('serviceWorkerRegisterError', error);\n reject(error);\n });\n });\n },\n unregister(registration) {\n const app = this;\n const window = getWindow();\n if (!('serviceWorker' in window.navigator) || !app.serviceWorker.container) {\n return new Promise((resolve, reject) => {\n reject(new Error('Service worker is not supported'));\n });\n }\n let registrations;\n if (!registration) registrations = SW.registrations;\n else if (Array.isArray(registration)) registrations = registration;\n else registrations = [registration];\n return Promise.all(\n registrations.map(\n (reg) =>\n new Promise((resolve, reject) => {\n reg\n .unregister()\n .then(() => {\n if (SW.registrations.indexOf(reg) >= 0) {\n SW.registrations.splice(SW.registrations.indexOf(reg), 1);\n }\n app.emit('serviceWorkerUnregisterSuccess', reg);\n resolve();\n })\n .catch((error) => {\n app.emit('serviceWorkerUnregisterError', reg, error);\n reject(error);\n });\n }),\n ),\n );\n },\n};\n\nexport default {\n name: 'sw',\n params: {\n serviceWorker: {\n path: undefined,\n scope: undefined,\n },\n },\n create() {\n const app = this;\n const window = getWindow();\n extend(app, {\n serviceWorker: {\n container: 'serviceWorker' in window.navigator ? window.navigator.serviceWorker : undefined,\n registrations: SW.registrations,\n register: SW.register.bind(app),\n unregister: SW.unregister.bind(app),\n },\n });\n },\n on: {\n init() {\n const window = getWindow();\n if (!('serviceWorker' in window.navigator)) return;\n const app = this;\n if (app.device.cordova || (window.Capacitor && window.Capacitor.isNative)) return;\n if (!app.serviceWorker.container) return;\n const paths = app.params.serviceWorker.path;\n const scope = app.params.serviceWorker.scope;\n if (!paths || (Array.isArray(paths) && !paths.length)) return;\n const toRegister = Array.isArray(paths) ? paths : [paths];\n toRegister.forEach((path) => {\n app.serviceWorker.register(path, scope);\n });\n },\n },\n};\n","/* eslint-disable no-underscore-dangle */\nimport { extend } from '../../shared/utils.js';\n\nfunction createStore(storeParams = {}) {\n const store = {\n __store: true,\n };\n const originalState = { ...(storeParams.state || {}) };\n const actions = { ...(storeParams.actions || {}) };\n const getters = { ...(storeParams.getters || {}) };\n const state = extend({}, originalState);\n\n let propsQueue = [];\n const gettersDependencies = {};\n const gettersCallbacks = {};\n\n Object.keys(getters).forEach((getterKey) => {\n gettersDependencies[getterKey] = [];\n gettersCallbacks[getterKey] = [];\n });\n\n const getGetterValue = (getterKey) => {\n return getters[getterKey]({ state: store.state });\n };\n\n const addGetterDependencies = (getterKey, deps) => {\n if (!gettersDependencies[getterKey]) gettersDependencies[getterKey] = [];\n deps.forEach((dep) => {\n if (gettersDependencies[getterKey].indexOf(dep) < 0) {\n gettersDependencies[getterKey].push(dep);\n }\n });\n };\n\n const addGetterCallback = (getterKey, callback) => {\n if (!gettersCallbacks[getterKey]) gettersCallbacks[getterKey] = [];\n gettersCallbacks[getterKey].push(callback);\n };\n\n const runGetterCallbacks = (stateKey) => {\n const keys = Object.keys(gettersDependencies).filter((getterKey) => {\n return gettersDependencies[getterKey].indexOf(stateKey) >= 0;\n });\n keys.forEach((getterKey) => {\n if (!gettersCallbacks[getterKey] || !gettersCallbacks[getterKey].length) return;\n gettersCallbacks[getterKey].forEach((callback) => {\n callback(getGetterValue(getterKey));\n });\n });\n };\n\n const removeGetterCallback = (callback) => {\n Object.keys(gettersCallbacks).forEach((stateKey) => {\n const callbacks = gettersCallbacks[stateKey];\n\n if (callbacks.indexOf(callback) >= 0) {\n callbacks.splice(callbacks.indexOf(callback), 1);\n }\n });\n };\n\n // eslint-disable-next-line\n store.__removeCallback = (callback) => {\n removeGetterCallback(callback);\n };\n\n const getterValue = (getterKey, addCallback = true) => {\n if (getterKey === 'constructor') return undefined;\n propsQueue = [];\n const value = getGetterValue(getterKey);\n addGetterDependencies(getterKey, propsQueue);\n const onUpdated = (callback) => {\n addGetterCallback(getterKey, callback);\n };\n\n const obj = {\n value,\n onUpdated,\n };\n\n if (!addCallback) {\n return obj;\n }\n\n const callback = (v) => {\n obj.value = v;\n };\n\n obj.__callback = callback;\n addGetterCallback(getterKey, callback);\n // eslint-disable-next-line\n return obj;\n };\n\n store.state = new Proxy(state, {\n set: (target, prop, value) => {\n target[prop] = value;\n runGetterCallbacks(prop);\n return true;\n },\n get: (target, prop) => {\n propsQueue.push(prop);\n return target[prop];\n },\n });\n\n store.getters = new Proxy(getters, {\n set: () => false,\n get: (target, prop) => {\n if (!target[prop]) {\n return undefined;\n }\n return getterValue(prop, true);\n },\n });\n\n store._gettersPlain = new Proxy(getters, {\n set: () => false,\n get: (target, prop) => {\n if (!target[prop]) {\n return undefined;\n }\n return getterValue(prop, false);\n },\n });\n\n store.dispatch = (actionName, data) => {\n return new Promise((resolve, reject) => {\n if (!actions[actionName]) {\n reject();\n throw new Error(`Framework7: Store action \"${actionName}\" is not found`);\n }\n const result = actions[actionName]({ state: store.state, dispatch: store.dispatch }, data);\n resolve(result);\n });\n };\n\n return store;\n}\n\nexport default createStore;\n","import createStore from './create-store.js';\n\nexport { createStore };\nexport default {\n name: 'store',\n static: { createStore },\n proto: { createStore },\n};\n","import { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { bindMethods } from '../../shared/utils.js';\nimport { getDevice } from '../../shared/get-device.js';\n\nconst isCapacitor = () => {\n const window = getWindow();\n return (\n window.Capacitor &&\n window.Capacitor.isNative &&\n window.Capacitor.Plugins &&\n window.Capacitor.Plugins.StatusBar\n );\n};\n\nconst Statusbar = {\n hide() {\n const window = getWindow();\n const device = getDevice();\n if (device.cordova && window.StatusBar) {\n window.StatusBar.hide();\n }\n if (isCapacitor()) {\n window.Capacitor.Plugins.StatusBar.hide();\n }\n },\n show() {\n const window = getWindow();\n const device = getDevice();\n if (device.cordova && window.StatusBar) {\n window.StatusBar.show();\n }\n if (isCapacitor()) {\n window.Capacitor.Plugins.StatusBar.show();\n }\n },\n onClick() {\n const app = this;\n let pageContent;\n if ($('.popup.modal-in').length > 0) {\n // Check for opened popup\n pageContent = $('.popup.modal-in')\n .find('.page:not(.page-previous):not(.page-next):not(.cached)')\n .find('.page-content');\n } else if ($('.panel.panel-in').length > 0) {\n // Check for opened panel\n pageContent = $('.panel.panel-in')\n .find('.page:not(.page-previous):not(.page-next):not(.cached)')\n .find('.page-content');\n } else if ($('.views > .view.tab-active').length > 0) {\n // View in tab bar app layout\n pageContent = $('.views > .view.tab-active')\n .find('.page:not(.page-previous):not(.page-next):not(.cached)')\n .find('.page-content');\n } else if ($('.views').length > 0) {\n pageContent = $('.views')\n .find('.page:not(.page-previous):not(.page-next):not(.cached)')\n .find('.page-content');\n } else {\n pageContent = app.$el\n .children('.view')\n .find('.page:not(.page-previous):not(.page-next):not(.cached)')\n .find('.page-content');\n }\n\n if (pageContent && pageContent.length > 0) {\n // Check for tab\n if (pageContent.hasClass('tab')) {\n pageContent = pageContent.parent('.tabs').children('.page-content.tab-active');\n }\n if (pageContent.length > 0) pageContent.scrollTop(0, 300);\n }\n },\n setTextColor(color) {\n const window = getWindow();\n const device = getDevice();\n if (device.cordova && window.StatusBar) {\n if (color === 'white') {\n window.StatusBar.styleLightContent();\n } else {\n window.StatusBar.styleDefault();\n }\n }\n if (isCapacitor()) {\n if (color === 'white') {\n window.Capacitor.Plugins.StatusBar.setStyle({ style: 'DARK' });\n } else {\n window.Capacitor.Plugins.StatusBar.setStyle({ style: 'LIGHT' });\n }\n }\n },\n setBackgroundColor(color) {\n const window = getWindow();\n const device = getDevice();\n if (device.cordova && window.StatusBar) {\n window.StatusBar.backgroundColorByHexString(color);\n }\n if (isCapacitor()) {\n window.Capacitor.Plugins.StatusBar.setBackgroundColor({ color });\n }\n },\n isVisible() {\n const window = getWindow();\n const device = getDevice();\n return new Promise((resolve) => {\n if (device.cordova && window.StatusBar) {\n resolve(window.StatusBar.isVisible);\n }\n if (isCapacitor()) {\n window.Capacitor.Plugins.StatusBar.getInfo().then((info) => {\n resolve(info.visible);\n });\n }\n resolve(false);\n });\n },\n overlaysWebView(overlays = true) {\n const window = getWindow();\n const device = getDevice();\n if (device.cordova && window.StatusBar) {\n window.StatusBar.overlaysWebView(overlays);\n }\n if (isCapacitor()) {\n window.Capacitor.Plugins.StatusBar.setOverlaysWebView({ overlay: overlays });\n }\n },\n init() {\n const app = this;\n const window = getWindow();\n const device = getDevice();\n const params = app.params.statusbar;\n if (!params.enabled) return;\n const isCordova = device.cordova && window.StatusBar;\n const isCap = isCapacitor();\n\n if (isCordova || isCap) {\n if (params.scrollTopOnClick) {\n $(window).on('statusTap', Statusbar.onClick.bind(app));\n }\n if (device.ios) {\n if (params.iosOverlaysWebView) {\n Statusbar.overlaysWebView(true);\n } else {\n Statusbar.overlaysWebView(false);\n }\n if (params.iosTextColor === 'white') {\n Statusbar.setTextColor('white');\n } else {\n Statusbar.setTextColor('black');\n }\n }\n if (device.android) {\n if (params.androidOverlaysWebView) {\n Statusbar.overlaysWebView(true);\n } else {\n Statusbar.overlaysWebView(false);\n }\n if (params.androidTextColor === 'white') {\n Statusbar.setTextColor('white');\n } else {\n Statusbar.setTextColor('black');\n }\n }\n }\n if (params.iosBackgroundColor && device.ios) {\n Statusbar.setBackgroundColor(params.iosBackgroundColor);\n }\n if (params.androidBackgroundColor && device.android) {\n Statusbar.setBackgroundColor(params.androidBackgroundColor);\n }\n },\n};\n\nexport default {\n name: 'statusbar',\n params: {\n statusbar: {\n enabled: true,\n\n scrollTopOnClick: true,\n\n iosOverlaysWebView: true,\n iosTextColor: 'black',\n iosBackgroundColor: null,\n\n androidOverlaysWebView: false,\n androidTextColor: 'black',\n androidBackgroundColor: null,\n },\n },\n create() {\n const app = this;\n bindMethods(app, {\n statusbar: Statusbar,\n });\n },\n on: {\n init() {\n const app = this;\n Statusbar.init.call(app);\n },\n },\n};\n","import $ from '../../shared/dom7.js';\nimport { extend } from '../../shared/utils.js';\nimport View from './view-class.js';\n\nfunction getCurrentView(app) {\n const $popoverView = $('.popover.modal-in .view');\n const $popupView = $('.popup.modal-in .view');\n const $panelView = $('.panel.panel-in .view');\n let $viewsEl = $('.views');\n if ($viewsEl.length === 0) $viewsEl = app.$el;\n // Find active view as tab\n let $viewEl = $viewsEl.children('.view');\n if ($viewEl.length === 0) {\n $viewEl = $viewsEl.children('.tabs').children('.view');\n }\n // Propably in tabs or split view\n if ($viewEl.length > 1) {\n if ($viewEl.hasClass('tab')) {\n // Tabs\n $viewEl = $viewsEl.children('.view.tab-active');\n if ($viewEl.length === 0) {\n $viewEl = $viewsEl.children('.tabs').children('.view.tab-active');\n }\n } else {\n // Split View, leave appView intact\n }\n }\n if ($popoverView.length > 0 && $popoverView[0].f7View) return $popoverView[0].f7View;\n if ($popupView.length > 0 && $popupView[0].f7View) return $popupView[0].f7View;\n if ($panelView.length > 0 && $panelView[0].f7View) return $panelView[0].f7View;\n if ($viewEl.length > 0) {\n if ($viewEl.length === 1 && $viewEl[0].f7View) return $viewEl[0].f7View;\n if ($viewEl.length > 1) {\n return app.views.main;\n }\n }\n return undefined;\n}\n\nexport default {\n name: 'view',\n params: {\n view: {\n init: true,\n initRouterOnTabShow: false,\n name: undefined,\n main: false,\n router: true,\n linksView: null,\n 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"]}