framework7 7.0.0-beta.8 → 7.0.0
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.
- package/components/accordion/accordion.lazy.js +1 -1
- package/components/actions/actions-class.js +6 -1
- package/components/actions/actions-rtl.css +1 -1
- package/components/actions/actions.css +1 -1
- package/components/actions/actions.d.ts +2 -0
- package/components/actions/actions.js +11 -2
- package/components/actions/actions.lazy.js +1 -1
- package/components/actions/actions.less +3 -0
- package/components/app/app-class.js +15 -9
- package/components/area-chart/area-chart-class.js +34 -18
- package/components/area-chart/area-chart.lazy.js +1 -1
- package/components/autocomplete/autocomplete-class.js +5 -1
- package/components/autocomplete/autocomplete.lazy.js +1 -1
- package/components/breadcrumbs/breadcrumbs-aurora.less +2 -0
- package/components/breadcrumbs/breadcrumbs-ios.less +2 -0
- package/components/breadcrumbs/breadcrumbs-md.less +2 -0
- package/components/breadcrumbs/breadcrumbs-rtl.css +1 -0
- package/components/breadcrumbs/breadcrumbs-vars.less +36 -0
- package/components/breadcrumbs/breadcrumbs.css +1 -0
- package/components/breadcrumbs/breadcrumbs.d.ts +15 -0
- package/components/breadcrumbs/breadcrumbs.js +13 -0
- package/components/breadcrumbs/breadcrumbs.lazy.js +1 -0
- package/components/breadcrumbs/breadcrumbs.less +100 -0
- package/components/calendar/calendar-class.js +216 -124
- package/components/calendar/calendar-rtl.css +1 -1
- package/components/calendar/calendar-vars.less +6 -10
- package/components/calendar/calendar.css +1 -1
- package/components/calendar/calendar.d.ts +2 -0
- package/components/calendar/calendar.js +6 -1
- package/components/calendar/calendar.lazy.js +1 -1
- package/components/calendar/calendar.less +20 -16
- package/components/card/card.js +23 -3
- package/components/card/card.lazy.js +1 -1
- package/components/color-picker/color-picker-class.js +19 -3
- package/components/color-picker/color-picker.js +5 -1
- package/components/color-picker/color-picker.lazy.js +1 -1
- package/components/data-table/data-table-class.js +5 -1
- package/components/data-table/data-table.lazy.js +1 -1
- package/components/dialog/dialog.js +30 -6
- package/components/dialog/dialog.lazy.js +1 -1
- package/components/fab/fab-rtl.css +1 -1
- package/components/fab/fab.css +1 -1
- package/components/fab/fab.js +15 -3
- package/components/fab/fab.lazy.js +1 -1
- package/components/form/form.lazy.js +1 -1
- package/components/gauge/gauge-class.js +10 -2
- package/components/gauge/gauge.d.ts +2 -2
- package/components/gauge/gauge.lazy.js +1 -1
- package/components/input/input.js +5 -1
- package/components/input/input.lazy.js +1 -1
- package/components/list-index/list-index-class.js +5 -1
- package/components/list-index/list-index.d.ts +1 -1
- package/components/list-index/list-index.lazy.js +1 -1
- package/components/login-screen/login-screen.js +10 -2
- package/components/login-screen/login-screen.lazy.js +1 -1
- package/components/menu/menu.js +10 -2
- package/components/menu/menu.lazy.js +1 -1
- package/components/messagebar/messagebar-class.js +25 -5
- package/components/messagebar/messagebar.lazy.js +1 -1
- package/components/messages/messages-class.js +60 -24
- package/components/messages/messages-rtl.css +1 -1
- package/components/messages/messages.css +1 -1
- package/components/messages/messages.lazy.js +1 -1
- package/components/modal/modal-class.js +10 -0
- package/components/navbar/navbar.js +26 -2
- package/components/notification/notification.d.ts +4 -4
- package/components/panel/panel-class.js +35 -7
- package/components/panel/panel.js +40 -8
- package/components/panel/panel.lazy.js +1 -1
- package/components/photo-browser/photo-browser-class.js +42 -8
- package/components/photo-browser/photo-browser.lazy.js +1 -1
- package/components/picker/picker-class.js +11 -7
- package/components/picker/picker-column.js +34 -270
- package/components/picker/picker-rtl.css +1 -1
- package/components/picker/picker.css +1 -1
- package/components/picker/picker.d.ts +2 -13
- package/components/picker/picker.js +5 -6
- package/components/picker/picker.lazy.js +1 -1
- package/components/picker/picker.less +28 -10
- package/components/pie-chart/pie-chart-class.js +16 -7
- package/components/pie-chart/pie-chart.lazy.js +1 -1
- package/components/popover/popover-class.js +20 -3
- package/components/popover/popover-rtl.css +1 -1
- package/components/popover/popover.css +1 -1
- package/components/popover/popover.d.ts +2 -0
- package/components/popover/popover.js +11 -2
- package/components/popover/popover.lazy.js +1 -1
- package/components/popover/popover.less +3 -0
- package/components/popup/popup-class.js +6 -1
- package/components/popup/popup-rtl.css +1 -1
- package/components/popup/popup.css +1 -1
- package/components/popup/popup.d.ts +4 -0
- package/components/popup/popup.js +11 -2
- package/components/popup/popup.lazy.js +1 -1
- package/components/popup/popup.less +4 -0
- package/components/preloader/preloader-ios.less +3 -0
- package/components/preloader/preloader-rtl.css +1 -1
- package/components/preloader/preloader.css +1 -1
- package/components/preloader/preloader.d.ts +4 -0
- package/components/preloader/preloader.js +10 -2
- package/components/preloader/preloader.lazy.js +1 -1
- package/components/progressbar/progressbar-aurora.less +32 -13
- package/components/progressbar/progressbar-ios.less +19 -7
- package/components/progressbar/progressbar-md.less +64 -28
- package/components/progressbar/progressbar-rtl.css +1 -1
- package/components/progressbar/progressbar.css +1 -1
- package/components/progressbar/progressbar.js +17 -4
- package/components/progressbar/progressbar.lazy.js +1 -1
- package/components/progressbar/progressbar.less +16 -4
- package/components/pull-to-refresh/pull-to-refresh-class.js +5 -1
- package/components/pull-to-refresh/pull-to-refresh.lazy.js +1 -1
- package/components/range/range.d.ts +23 -5
- package/components/range/range.js +10 -2
- package/components/range/range.lazy.js +1 -1
- package/components/searchbar/searchbar-class.js +6 -2
- package/components/searchbar/searchbar.js +20 -4
- package/components/searchbar/searchbar.lazy.js +1 -1
- package/components/sheet/sheet-class.js +21 -2
- package/components/sheet/sheet-rtl.css +1 -1
- package/components/sheet/sheet.css +1 -1
- package/components/sheet/sheet.d.ts +2 -0
- package/components/sheet/sheet.js +11 -2
- package/components/sheet/sheet.lazy.js +1 -1
- package/components/sheet/sheet.less +3 -0
- package/components/smart-select/smart-select-class.js +15 -3
- package/components/smart-select/smart-select.lazy.js +1 -1
- package/components/sortable/sortable.d.ts +5 -1
- package/components/sortable/sortable.js +45 -8
- package/components/sortable/sortable.lazy.js +1 -1
- package/components/statusbar/statusbar.d.ts +9 -9
- package/components/statusbar/statusbar.js +5 -1
- package/components/stepper/stepper.js +10 -2
- package/components/stepper/stepper.lazy.js +1 -1
- package/components/swipeout/swipeout.js +16 -3
- package/components/swipeout/swipeout.lazy.js +1 -1
- package/components/swiper/swiper-rtl.css +1 -1
- package/components/swiper/swiper.css +1 -1
- package/components/swiper/swiper.lazy.js +1 -1
- package/components/tabs/tabs.js +14 -7
- package/components/tabs/tabs.lazy.js +1 -1
- package/components/toast/toast.d.ts +2 -2
- package/components/toggle/toggle-class.js +5 -1
- package/components/toggle/toggle.lazy.js +1 -1
- package/components/toolbar/toolbar-aurora.less +0 -13
- package/components/toolbar/toolbar-md.less +0 -13
- package/components/toolbar/toolbar.js +11 -3
- package/components/toolbar/toolbar.less +13 -0
- package/components/tooltip/tooltip-class.js +5 -1
- package/components/tooltip/tooltip.lazy.js +1 -1
- package/components/touch-ripple/touch-ripple.js +5 -1
- package/components/treeview/treeview.lazy.js +1 -1
- package/components/view/view-class.js +13 -2
- package/components/view/view.d.ts +5 -1
- package/components/view/view.js +2 -0
- package/components/virtual-list/virtual-list-class.js +54 -9
- package/components/virtual-list/virtual-list.d.ts +2 -2
- package/components/virtual-list/virtual-list.lazy.js +1 -1
- package/framework7-bundle-rtl.css +252 -150
- package/framework7-bundle-rtl.min.css +4 -4
- package/framework7-bundle.css +237 -134
- package/framework7-bundle.esm.js +5 -4
- package/framework7-bundle.js +2661 -1190
- package/framework7-bundle.js.map +1 -1
- package/framework7-bundle.less +4 -3
- package/framework7-bundle.min.css +4 -4
- package/framework7-bundle.min.js +4 -4
- package/framework7-bundle.min.js.map +1 -1
- package/framework7-lite-bundle.esm.js +5 -4
- package/framework7-lite.esm.js +3 -3
- package/framework7-rtl.css +12 -21
- package/framework7-rtl.min.css +4 -4
- package/framework7-types.d.ts +5 -1
- package/framework7.css +11 -19
- package/framework7.d.ts +4 -0
- package/framework7.esm.js +3 -3
- package/framework7.js +609 -189
- package/framework7.js.map +1 -1
- package/framework7.less +3 -3
- package/framework7.min.css +4 -4
- package/framework7.min.js +4 -4
- package/framework7.min.js.map +1 -1
- package/modules/component/$h.js +5 -1
- package/modules/component/$jsx.js +5 -1
- package/modules/component/component-class.js +35 -22
- package/modules/component/component.d.ts +2 -2
- package/modules/component/component.js +7 -6
- package/modules/component/eventslisteners.js +5 -1
- package/modules/component/snabbdom/h.js +1 -1
- package/modules/component/vdom.js +32 -17
- package/modules/device/device.js +1 -1
- package/modules/router/back.js +16 -6
- package/modules/router/component-loader.js +34 -23
- package/modules/router/modal.js +5 -1
- package/modules/router/navigate.js +19 -3
- package/modules/router/redirect.js +5 -1
- package/modules/router/router-class.js +39 -10
- package/modules/router/swipe-back.js +7 -6
- package/modules/router/tab.js +6 -2
- package/modules/store/create-store.js +10 -2
- package/package.json +12 -6
- package/shared/$jsx.js +6 -1
- package/shared/class.js +33 -5
- package/shared/constructor-methods.js +25 -4
- package/shared/events-class.js +15 -3
- package/shared/get-device.d.ts +0 -2
- package/shared/get-device.js +10 -6
- package/shared/modal-methods.js +10 -2
- package/shared/request.js +45 -7
- package/shared/utils.js +47 -10
package/framework7.min.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../node_modules/ssr-window/ssr-window.esm.js","../../node_modules/dom7/dom7.esm.js","../../src/core/shared/dom7.js","../../src/core/shared/utils.js","../../src/core/shared/get-support.js","../../src/core/shared/get-device.js","../../src/core/shared/events-class.js","../../src/core/shared/class.js","../../src/core/shared/constructor-methods.js","../../src/core/components/app/load-module.js","../../src/core/components/app/app-class.js","../../src/core/shared/modal-methods.js","../../src/core/modules/device/device.js","../../src/core/modules/support/support.js","../../src/core/modules/utils/utils.js","../../src/core/modules/resize/resize.js","../../src/core/shared/request.js","../../src/core/modules/request/request.js","../../src/core/modules/touch/touch.js","../../node_modules/path-to-regexp/dist.es2015/index.js","../../src/core/shared/history.js","../../src/core/modules/router/swipe-back.js","../../src/core/modules/router/redirect.js","../../src/core/modules/router/process-route-queue.js","../../src/core/modules/router/app-router-check.js","../../src/core/modules/router/async-component.js","../../src/core/modules/router/navigate.js","../../src/core/modules/router/back.js","../../src/core/modules/router/router-class.js","../../src/core/modules/router/tab.js","../../src/core/modules/router/modal.js","../../src/core/modules/router/clear-previous-history.js","../../src/core/modules/router/router.js","../../src/core/components/view/resizable-view.js","../../src/core/components/view/view-class.js","../../src/core/modules/clicks/clicks.js","../../src/core/modules/router/component-loader.js","../../node_modules/htm/dist/htm.mjs","../../src/core/modules/component/$h.js","../../src/core/modules/component/snabbdom/vnode.js","../../src/core/modules/component/snabbdom/is.js","../../src/core/modules/component/snabbdom/h.js","../../src/core/modules/component/custom-components.js","../../src/core/modules/component/vdom.js","../../src/core/modules/component/snabbdom/htmldomapi.js","../../src/core/modules/component/snabbdom/snabbdom.js","../../src/core/modules/component/snabbdom/modules/attributes.js","../../src/core/modules/component/snabbdom/modules/props.js","../../src/core/modules/component/snabbdom/modules/style.js","../../src/core/modules/component/eventslisteners.js","../../src/core/modules/component/patch.js","../../src/core/modules/component/component-class.js","../../src/core/modules/component/component.js","../../src/core/modules/component/parse-component.js","../../src/core/modules/history/history.js","../../src/core/modules/service-worker/service-worker.js","../../src/core/modules/store/create-store.js","../../src/core/modules/store/store.js","../../src/core/components/statusbar/statusbar.js","../../src/core/components/view/view.js","../../src/core/components/navbar/navbar.js","../../src/core/components/toolbar/toolbar.js","../../src/core/components/subnavbar/subnavbar.js","../../src/core/components/touch-ripple/touch-ripple-class.js","../../src/core/components/touch-ripple/touch-ripple.js","../../src/core/components/modal/modal-class.js","../../src/core/components/modal/custom-modal-class.js","../../src/core/components/modal/modal.js","../../src/core/framework7.js"],"names":["isObject","obj","constructor","Object","extend","target","src","keys","forEach","key","length","ssrDocument","body","addEventListener","removeEventListener","activeElement","blur","nodeName","querySelector","querySelectorAll","getElementById","createEvent","initEvent","createElement","children","childNodes","style","setAttribute","getElementsByTagName","createElementNS","importNode","location","hash","host","hostname","href","origin","pathname","protocol","search","getDocument","doc","document","ssrWindow","navigator","userAgent","history","replaceState","pushState","go","back","CustomEvent","this","getComputedStyle","getPropertyValue","Image","Date","screen","setTimeout","clearTimeout","matchMedia","requestAnimationFrame","callback","cancelAnimationFrame","id","getWindow","win","window","Dom7","Array","items","super","proto","__proto__","defineProperty","get","set","value","makeReactive","arrayFlat","arr","res","el","isArray","push","arrayFilter","prototype","filter","call","$","selector","context","html","trim","indexOf","toCreate","tempParent","innerHTML","i","a","qsa","nodeType","uniqueArray","arrayUnique","fn","noTrigger","split","shortcut","name","args","trigger","on","click","focus","focusin","focusout","keyup","keydown","keypress","submit","change","mousedown","mousemove","mouseup","mouseenter","mouseleave","mouseout","mouseover","touchstart","touchend","touchmove","resize","scroll","els","dom","j","toAdd","classes","classNames","map","c","classList","add","initialProps","initialParams","props","assign","params","duration","easing","elements","animating","que","easingProgress","progress","Math","cos","PI","stop","frameId","each","dom7AnimateInstance","done","complete","shift","animate","index","initialFullValue","initialValue","unit","finalValue","finalFullValue","container","prop","replace","parseFloat","currentValue","time","startTime","elementsDone","propsDone","began","render","easeProgress","getTime","begin","max","min","element","animateInstance","fireCallBack","e","off","newChild","k","tempDiv","firstChild","appendChild","parent","append","attrs","arguments","getAttribute","attrName","is","closest","parents","eq","dom7ElementDataStorage","dataKey","dataset","attributes","attr","string","toLowerCase","match","group","toUpperCase","remove","apply","parentNode","removeChild","textContent","returnIndex","foundElements","found","className","contains","innerHeight","css","display","child","previousSibling","after","insertBefore","nextSibling","cloneNode","before","compareWith","matches","webkitMatchesSelector","msMatchesSelector","nextElementSibling","nextEls","next","eventType","targetSelector","listener","capture","undefined","events","event","handlers","dom7Listeners","dom7LiveListeners","handler","dom7proxy","proxyListener","splice","box","getBoundingClientRect","clientTop","clientLeft","scrollTop","scrollY","scrollLeft","scrollX","top","left","handleLiveEvent","eventData","dom7EventData","unshift","handleEvent","eventName","onceHandler","eventArgs","includeMargins","styles","offsetHeight","offsetWidth","prepend","previousElementSibling","prevEls","prev","propName","removeAttribute","scrollTo","currentTop","currentLeft","maxTop","maxLeft","newTop","newLeft","animateTop","animateLeft","scrollHeight","scrollWidth","nextAll","prevAll","text","toggle","transform","transitionDuration","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","param","urlToParse","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","--f7-theme-color","--f7-theme-color-rgb","--f7-theme-color-shade","--f7-theme-color-tint","support","deviceCalculated","getSupport","touch","DocumentTouch","pointerEvents","PointerEvent","maxTouchPoints","passiveListener","supportsPassive","opts","intersectionObserver","calcSupport","getDevice","overrides","reset","platform","ua","device","ios","android","androidChrome","desktop","iphone","ipod","ipad","edge","ie","firefox","macos","windows","cordova","phonegap","electron","capacitor","Capacitor","nwjs","screenWidth","width","screenHeight","height","nw","process","versions","os","osVersion","webView","standalone","webview","pixelRatio","devicePixelRatio","prefersColorScheme","theme","calcDevice","EventsClass","eventsParents","eventsListeners","priority","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","[object Object]","Class","static","install","installModule","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","media","darkMode","__store","createStore","enableAutoDarkMode","addListener","disableAutoDarkMode","removeListener","initAppComponent","router","componentLoader","componentOptions","$elComponent","f7Component","initialized","addClass","removeClass","loadModule","loadModules","getVnodeHooks","hook","Events","ModalMethods","open","targetEl","$targetPage","modalEl","$modalEl","f7Modal","close","$parentEl","$targetEl","moduleToLoad","Promise","resolve","reject","modulePath","moduleObj","moduleFunc","matchNamePattern","scriptLoad","resolveScript","rejectScript","request","scriptContent","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","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","rippleElements","rippleParent","findRippleElement","rippleTouchMove","rippleTouchEnd","handleMouseUp","isSegmentedStrong","segmentedStrongEl","touchMoveActivableIos","isTouchMoveActivable","touchmoveActivableEl","emitAppTouchEvent","appTouchStartActive","appTouchMoveActive","appTouchEndActive","appTouchStartPassive","appTouchMovePassive","appTouchEndPassive","passive","passiveListenerCapture","activeListener","activeListenerCapture","isOverswipe","isSegmented","localPreventClick","stopImmediatePropagation","stopPropagation","preventDefault","targetTouches","touches","pageX","pageY","distance","shouldRemoveActive","touchCurrentX","touchCurrentY","buttonEl","elementFromPoint","clientX","clientY","$activableEl","which","isNative","str","tokens","count","pattern","TypeError","code","charCodeAt","lexer","_a","prefixes","defaultPattern","escapeString","delimiter","path","tryConsume","mustConsume","nextType","consumeText","prefix","suffix","modifier","name_1","pattern_1","compile","reFlags","flags","encode","_b","validate","token","optional","repeat","segment","typeOfMessage","tokensToFunction","sensitive","stringToRegexp","strict","_c","_d","endsWith","route","_i","tokens_1","mod","endToken","isEndDelimited","tokensToRegexp","pathToRegexp","groupsRegex","execResult","source","regexpToRegexp","paths","parts","arrayToRegexp","History","queue","clearQueue","currentQueue","routerQueue","clearRouterQueue","pop","stateUrl","action","browserHistoryAnimate","browserHistory","navigate","handle","blockPopstate","state","previousState","allowChange","views","view","viewState","allowPageChange","initViewState","viewId","newState","substr","readyState","SwipeBack","$navbarsEl","isTouched","touchesStart","viewContainerWidth","touchesDiff","touchStartTime","dynamicNavbar","$pageShadowEl","$pageOpacityEl","animatableNavEls","$currentPageEl","$previousPageEl","allowViewTouchMove","$currentNavbarEl","$previousNavbarEl","paramsSwipeBackAnimateShadow","paramsSwipeBackAnimateOpacity","paramsSwipeBackActiveArea","paramsSwipeBackThreshold","transformOrigin","transformOriginTitleLarge","setAnimatableNavElements","transition","reflow","_clientLeft","classNameSet","styleProp","handleTouchStart","swipeBackEnabled","swipeout","masterDetailBreakpoint","handleTouchMove","f7PreventSwipeBack","preventSwipeBack","cancel","find","notFromBorder","inverter","currentNavIsTransparent","currentNavIsLarge","currentNavIsCollapsed","currentNavIsLargeTransparent","previousNavIsTransparent","previousNavIsLarge","previousNavIsCollapsed","previousNavIsLargeTransparent","fromLarge","toLarge","$currentNavElements","$previousNavElements","activeNavBackIconText","previousNavBackIconText","iosAnimateNavbarBackIcon","f7NavbarLeftOffset","navEl","$navEl","isSubnavbar","isLeft","isTitle","isBg","overflow","subNavEl","opacity","transform-origin","isSliding","transformTarget","textEl","activeNavTranslate","f7NavbarRightOffset","previousNavTranslate","animatableNavElements","sheet","f7PreventSwipePanel","preventSwipePanelBySwipeBack","percentage","callbackData","currentPageEl","previousPageEl","currentNavbarEl","previousNavbarEl","currentPageTranslate","previousPageTranslate","swipeBackActive","handleTouchEnd","$pages","timeDiff","pageChanged","removeAttr","setNavbarPosition","currentRoute","f7Page","currentPage","pageCallback","swipeBack","transitionEnd","saveHistory","stackPages","initialPages","removePage","removeNavbar","previousRoute","preloadPreviousPage","preload","attachEvents","redirect","direction","initial","redirectUrl","redirectOptions","processQueue","routeQueue","processRouteQueue","enterNextRoute","routesBeforeEnter","beforeEnter","routesBeforeLeave","beforeLeave","appRouterCheck","asyncComponent","resolvePromise","componentPromise","default","_default","asyncComponentResult","forward","forwardOptions","reloadCurrent","reloadPages","reloadPrevious","reloadAll","clearPreviousHistory","reloadDetail","masterDetailEnabled","isMaster","master","masterPageEl","otherDetailPageEl","modalType","detailsInBetweenRemoved","currentRouteIsModal","modal","modalLoadProp","modalToClose","modalInstance","previousUrl","findMatchingRoute","modalRemove","$viewEl","$newPage","reload","$oldPage","$newNavbarEl","$oldNavbarEl","removeThemeElements","$navbarEl","keepAlive","keepAliveData","pageEl","$pagesInView","pageInView","$navbarsInView","isDetail","isDetailRoot","navbarInView","newPagePosition","position","role","root","detailRoot","navbar","getElByPage","navbarEl","removedPageEls","removedNavbarEls","oldNavbarEl","browserHistoryRoot","browserHistorySeparator","newPageInDom","componentEl","f7PageMounted","$oldPageEl","$oldNavbarElEl","tab","tabLoad","checkMasterDetailBreakpoint","setPagePosition","afterAnimation","keepOldPage","setPositionClasses","f7PageTransition","load","loadParams","loadOptions","ignorePageChange","pageName","parentPath","sameParams","paramName","allowDuplicateUrls","parseRouteUrl","getPageEl","pageComponentLoader","routerEl","newOptions","xhrAbortController","xhrRequest","pageContent","backward","backwardOptions","masterPageRemoved","initialPreload","currentIsMaster","backIndex","masterRoute","force","pageToRemove","$pageToRemove","$navbarToRemove","insertPage","$previousPages","loadBack","backParams","backOptions","Router","isAppRouter","routerId","scrollHistory","iosDynamicNavbar","initialNavbars","configurable","newRoute","tempDom","navbarsEl","animateIcon","newNavEls","oldNavEls","animatableNavEl","$navbarInner","needsOpacityTransition","$iconEl","isIconLabel","leftOffset","rightOffset","navEls","otherEls","otherNavEl","iconTextEl","offsetLeft","$newPageEl","animateCustom","routerCustomTransitionClass","onCustomTransitionDone","animationEnd","routerTransitionClass","toDifferent","oldIsLarge","newIsLarge","animateNavbars","setProperty","removeModal","removeEl","removeTabContent","tabEl","tabChild","removeElements","removeElementsWithTimeout","removeElementsTimeout","findElement","stringSelector","notStacked","$container","viewMainClass","flattenRoutes","flattenedRoutes","hasTabRoutes","tabs","mergedPathsRoutes","tabRoute","tRoute","concat","detailRoutes","detailRoute","dRoute","masterRoutePath","childRoute","cRoute","generateUrl","findRouteByKey","constructRouteUrl","toUrl","findTabRouteUrl","$tabEl","tabId","foundTabRouteUrl","matchingRoute","pathsToMatch","matched","alias","aliasPath","pathToMatch","keyObj","paramValue","replaceRequestUrlParams","compiledUrl","regExp","removeFromXhrCache","xhrCache","ignoreCache","hasQuery","passRouteQueryToRequest","passRouteParamsToRequest","xhrCacheIgnoreGetParameters","xhrCacheIgnore","cachedUrl","xhrCacheDuration","beforeSend","ariaHidden","toRemove","getPageData","pageFromEl","$pageEl","pageFrom","fromPage","$pageFromEl","page","restoreScrollTopOnBack","camelName","colonName","f7RouteEventsAttached","f7RouteEventsOn","f7RouteEventsOnce","$pageContent","pageContentEl","f7PageInitialized","browserHistoryStoreHistory","localStorage","restoreHistory","clearHistory","updateCurrentUrl","newUrl","getInitialUrl","initialUrl","historyRestored","URL","documentUrl","browserHistoryOnLoad","console","warn","iosSwipeBack","mdSwipeBack","auroraSwipeBack","browserHistoryAnimateOnLoad","browserHistoryInitialMatch","initUrl","loadInitialPage","modalOpen","pageAfterIn","hasTabRoute","initOptions","routerProp","navigateParams","navigateOptions","createRoute","navigateUrl","currentPath","viewName","anotherViewName","anotherView","openIn","ignoreOpenIn","routerLoaded","asyncResolve","resolveParams","resolveOptions","resolvedAsModal","modalRoute","modalLoad","asyncReject","pageLoadProp","preloadMaster","masterLoaded","refreshPage","parentPageEl","$parentPageEl","tabShowResult","show","$newTabEl","$oldTabEl","animated","onTabsChanged","tabParentPageData","f7RouterTabLoaded","loadTab","loadTabParams","loadTabOptions","contentEl","tabEventTarget","unloadTabContent","tabRemove","onTabLoaded","tabComponentLoader","tabContent","hasContentLoadProp","tabLoadProp","hasTabComponentChild","isPanel","modalOrPanel","modalParams","routeCallback","panelOpen","modalClose","panelClose","modalClosed","panelClosed","onModalLoaded","hasEl","closeOnSwipeBack","closeByRouter","modalComponent","loadModal","loadModalParams","loadModalOptions","modalComponentLoader","modalContent","foundLoadProp","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","ClicksModule","clicks","externalLinks","$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","u","p","Map","ignoreChildren","$h","sel","elm","array","primitive","addNS","ns","childData","is.array","is.primitive","customComponents","SELF_CLOSING","PROPS_ATTRS","BOOLEAN_PROPS","getTagName","treeNode","propsFromAttrs","word","isCustomComponent","treeNodeType","getHooks","isRoot","hooks","insert","update","postpatch","isFakeElement","tagName","isCustom","__component__","createCustomComponent","destroyCustomComponent","oldVnode","newProps","updateCustomComponent","class","vn","f","getChildren","nodes","childNode","treeNodeToVNode","isTreeNode","slotName","slotNodes","childTreeNode","childSlotName","slot","subTreeNode","getSlots","attrValue","prevent","eventNamePart","eventNameIndex","fired","getEventHandler","prepatch","getData","vdom","tree","htmlDomApi","namespaceURI","qualifiedName","createTextNode","createComment","newNode","referenceNode","node","setTextContent","getTextContent","isElement","isUndef","isDef","emptyNode","sameVnode","vnode1","vnode2","createKeyToOldIdx","beginIdx","endIdx","ch","updateAttrs","oldAttrs","cur","setAttributeNS","attributesModule","updateProps","oldProps","propsModule","raf","setNextFrame","updateStyle","oldStyle","oldHasDel","removeProperty","delayed","name2","updateEvents","oldOn","oldListener","oldElm","invokeHandler","patch","domApi","cbs","api","emptyNodeAt","createRmCb","childElm","listeners","parent_1","createElm","insertedVnodeQueue","hashIdx","dotIdx","dot","tag","addVnodes","parentElm","vnodes","startIdx","invokeDestroyHook","removeVnodes","i_1","rm","patchVnode","oldCh","newCh","oldKeyToIdx","idxInOld","elmToMove","oldStartIdx","newStartIdx","oldEndIdx","oldStartVnode","oldEndVnode","newEndIdx","newStartVnode","newEndVnode","updateChildren","pre","isVnode","amount","applied","ev","Component","generateId","md","aurora","__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","detachEvents","startUpdateQueue","__requestAnimationFrameId","newVNode","__updateIsPending","resolvers","resolver","__destroyed","setState","mountMethod","registerComponent","unregisterComponent","ComponentModule","componentString","componentId","callbackCreateName","template","item","scripts","parseComponent","HistoryModule","SW","registrations","register","scope","serviceWorker","reg","unregister","registration","ServiceWorkerModule","storeParams","originalState","actions","propsQueue","gettersDependencies","gettersCallbacks","getterKey","getGetterValue","addGetterCallback","__removeCallback","stateKey","callbacks","removeGetterCallback","getterValue","addCallback","deps","dep","addGetterDependencies","__callback","actionName","StoreModule","isCapacitor","StatusBar","Statusbar","hide","onClick","setTextColor","color","styleLightContent","styleDefault","setStyle","setBackgroundColor","backgroundColorByHexString","isVisible","getInfo","info","visible","overlaysWebView","overlays","setOverlaysWebView","overlay","statusbar","enabled","isCordova","isCap","scrollTopOnClick","iosOverlaysWebView","iosTextColor","androidOverlaysWebView","androidTextColor","iosBackgroundColor","androidBackgroundColor","Statusbar$1","iosSwipeBackAnimateShadow","iosSwipeBackAnimateOpacity","iosSwipeBackActiveArea","iosSwipeBackThreshold","mdSwipeBackAnimateShadow","mdSwipeBackAnimateOpacity","mdSwipeBackActiveArea","mdSwipeBackThreshold","auroraSwipeBackAnimateShadow","auroraSwipeBackAnimateOpacity","auroraSwipeBackActiveArea","auroraSwipeBackThreshold","iosPageLoadDelay","mdPageLoadDelay","auroraPageLoadDelay","$popoverView","$popupView","$panelView","$viewsEl","getCurrentView","modalOpen panelOpen","modalBeforeDestroy panelBeforeDestroy","view-init","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","isLargeTransparent","scrollableDistance","previousCollapseWasInMiddle","handleLargeNavbarCollapse","isHidden","notTransparent","handleNavbarTransparent","showOnPageScrollEnd","showOnPageScrollTop","handeTouchStart","f7DetachNavbarScrollHandlers","Navbar$1","scrollTopOnTitleClick","mdCenterTitle","auroraCenterTitle","hideOnPageScroll","collapseLargeTitleOnScroll","panelBreakpoint panelCollapsedBreakpoint panelResize viewResize resize viewMasterDetailBreakpoint","pageBeforeRemove","pageBeforeIn","pageReinit","pageInit","needCollapseOnScrollHandler","needTransparentOnScroll","needHideOnScrollHandler","panelOpen panelSwipeOpen modalOpen","tabShow",".navbar .title","clickedData","$pageContentEl","Toolbar","setHighlight","tabbarEl","$tabbarEl","$highlightEl","tabLinksCount","$activeLink","highlightWidth","highlightTranslate","activeIndex","toolbar","initToolbarOnScroll","toolbarHidden","$toolbarEl","f7ScrollToolbarHandler","Toolbar$1","tabbar","Subnavbar","subnavbarEl","TouchRipple","ripple","center","diameter","isInset","insetElements","rippleTransform","scale","$rippleWaveEl","shouldBeRemoved","out","removeTimeout","openedModals","dialogsQueue","Modal","opened","$containerEl","containerEl","onOpen","onOpened","onClose","onClosed","animateModal","$backdropEl","queueDialogs","pushToQueue","openedModal","$modalParentEl","wasInDom","needToHideBackdrop","popupEl","popupInstance","closeByBackdropClick","backdrop","backdropEl","clearDialogsQueue","destroyed","CustomModal","extendedParams","customModal","handleClick"],"mappings":"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","file":"framework7.min.js","sourcesContent":["/**\n * SSR Window 4.0.0\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: August 25, 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.0\n * Minimalistic JavaScript library for DOM manipulation, with a jQuery-compatible API\n * https://framework7.io/docs/dom7.html\n *\n * Copyright 2021, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: August 25, 2021\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 super(...(items || []));\n makeReactive(this);\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 || window.phonegap),\n phonegap: !!(window.cordova || window.phonegap),\n electron: false,\n capacitor: !!window.Capacitor,\n nwjs: false,\n };\n\n const screenWidth = window.screen.width;\n const screenHeight = window.screen.height;\n\n const android = ua.match(/(Android);?[\\s\\/]+([\\d.]+)?/); // eslint-disable-line\n let ipad = ua.match(/(iPad).*OS\\s([\\d_]+)/);\n const ipod = ua.match(/(iPod)(.*OS\\s([\\d_]+))?/);\n const iphone = !ipad && ua.match(/(iPhone\\sOS|iOS|iPhone;\\sCPU\\sOS)\\s([\\d_]+)/);\n const ie = ua.indexOf('MSIE ') >= 0 || ua.indexOf('Trident/') >= 0;\n const edge = ua.indexOf('Edge/') >= 0;\n const firefox = ua.indexOf('Gecko/') >= 0 && ua.indexOf('Firefox/') >= 0;\n const windows = platform === 'Win32';\n const electron = ua.toLowerCase().indexOf('electron') >= 0;\n const nwjs =\n typeof nw !== 'undefined' &&\n typeof process !== 'undefined' &&\n typeof process.versions !== 'undefined' &&\n typeof process.versions.nw !== 'undefined';\n let macos = platform === 'MacIntel';\n\n // iPadOs 13 fix\n const iPadScreens = [\n '1024x1366',\n '1366x1024',\n '834x1194',\n '1194x834',\n '834x1112',\n '1112x834',\n '768x1024',\n '1024x768',\n '820x1180',\n '1180x820',\n '810x1080',\n '1080x810',\n ];\n if (\n !ipad &&\n macos &&\n support.touch &&\n iPadScreens.indexOf(`${screenWidth}x${screenHeight}`) >= 0\n ) {\n ipad = ua.match(/(Version)\\/([\\d.]+)/);\n if (!ipad) ipad = [0, 1, '13_0_0'];\n macos = false;\n }\n\n device.ie = ie;\n device.edge = edge;\n device.firefox = firefox;\n\n // Android\n if (android) {\n device.os = 'android';\n device.osVersion = android[2];\n device.android = true;\n device.androidChrome = ua.toLowerCase().indexOf('chrome') >= 0;\n }\n if (ipad || iphone || ipod) {\n device.os = 'ios';\n device.ios = true;\n }\n // iOS\n if (iphone && !ipod) {\n device.osVersion = iphone[2].replace(/_/g, '.');\n device.iphone = true;\n }\n if (ipad) {\n device.osVersion = ipad[2].replace(/_/g, '.');\n device.ipad = true;\n }\n if (ipod) {\n device.osVersion = ipod[3] ? ipod[3].replace(/_/g, '.') : null;\n device.ipod = true;\n }\n // iOS 8+ changed UA\n if (device.ios && device.osVersion && ua.indexOf('Version/') >= 0) {\n if (device.osVersion.split('.')[0] === '10') {\n device.osVersion = ua.toLowerCase().split('version/')[1].split(' ')[0];\n }\n }\n\n // Webview\n device.webView =\n !!(\n (iphone || ipad || ipod) &&\n (ua.match(/.*AppleWebKit(?!.*Safari)/i) || window.navigator.standalone)\n ) ||\n (window.matchMedia && window.matchMedia('(display-mode: standalone)').matches);\n device.webview = device.webView;\n device.standalone = device.webView;\n\n // Desktop\n device.desktop = !(device.ios || device.android) || electron || nwjs;\n if (device.desktop) {\n device.electron = electron;\n device.nwjs = nwjs;\n device.macos = macos;\n device.windows = windows;\n if (device.macos) {\n device.os = 'macos';\n }\n if (device.windows) {\n device.os = 'windows';\n }\n }\n\n // Pixel Ratio\n device.pixelRatio = window.devicePixelRatio || 1;\n\n // Color Scheme\n const DARK = '(prefers-color-scheme: dark)';\n const LIGHT = '(prefers-color-scheme: light)';\n device.prefersColorScheme = function prefersColorTheme() {\n let theme;\n if (window.matchMedia && window.matchMedia(LIGHT).matches) {\n theme = 'light';\n }\n if (window.matchMedia && window.matchMedia(DARK).matches) {\n theme = 'dark';\n }\n return theme;\n };\n\n // Export object\n return device;\n}\n\nfunction getDevice(overrides = {}, reset) {\n if (!deviceCalculated || reset) {\n deviceCalculated = calcDevice(overrides);\n }\n return deviceCalculated;\n}\n\nexport { getDevice };\n","class EventsClass {\n constructor(parents = []) {\n const self = this;\n self.eventsParents = parents;\n self.eventsListeners = {};\n }\n\n on(events, handler, priority) {\n const self = this;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n events.split(' ').forEach((event) => {\n if (!self.eventsListeners[event]) self.eventsListeners[event] = [];\n self.eventsListeners[event][method](handler);\n });\n return self;\n }\n\n once(events, handler, priority) {\n const self = this;\n if (typeof handler !== 'function') return self;\n function onceHandler(...args) {\n self.off(events, onceHandler);\n if (onceHandler.f7proxy) {\n delete onceHandler.f7proxy;\n }\n handler.apply(self, args);\n }\n onceHandler.f7proxy = handler;\n return self.on(events, onceHandler, priority);\n }\n\n off(events, handler) {\n const self = this;\n if (!self.eventsListeners) return self;\n events.split(' ').forEach((event) => {\n if (typeof handler === 'undefined') {\n self.eventsListeners[event] = [];\n } else if (self.eventsListeners[event]) {\n self.eventsListeners[event].forEach((eventHandler, index) => {\n if (\n eventHandler === handler ||\n (eventHandler.f7proxy && eventHandler.f7proxy === handler)\n ) {\n self.eventsListeners[event].splice(index, 1);\n }\n });\n }\n });\n return self;\n }\n\n emit(...args) {\n const self = this;\n if (!self.eventsListeners) return self;\n let events;\n let data;\n let context;\n let eventsParents;\n if (typeof args[0] === 'string' || Array.isArray(args[0])) {\n events = args[0];\n data = args.slice(1, args.length);\n context = self;\n eventsParents = self.eventsParents;\n } else {\n events = args[0].events;\n data = args[0].data;\n context = args[0].context || self;\n eventsParents = args[0].local ? [] : args[0].parents || self.eventsParents;\n }\n const eventsArray = Array.isArray(events) ? events : events.split(' ');\n const localEvents = eventsArray.map((eventName) => eventName.replace('local::', ''));\n const parentEvents = eventsArray.filter((eventName) => eventName.indexOf('local::') < 0);\n\n localEvents.forEach((event) => {\n if (self.eventsListeners && self.eventsListeners[event]) {\n const handlers = [];\n self.eventsListeners[event].forEach((eventHandler) => {\n handlers.push(eventHandler);\n });\n handlers.forEach((eventHandler) => {\n eventHandler.apply(context, data);\n });\n }\n });\n if (eventsParents && eventsParents.length > 0) {\n eventsParents.forEach((eventsParent) => {\n eventsParent.emit(parentEvents, ...data);\n });\n }\n return self;\n }\n}\n\nexport default EventsClass;\n","import { extend, now } from './utils.js';\nimport EventsClass from './events-class.js';\n\nclass Framework7Class extends EventsClass {\n constructor(params = {}, parents = []) {\n super(parents);\n const self = this;\n self.params = params;\n\n if (self.params && self.params.on) {\n Object.keys(self.params.on).forEach((eventName) => {\n self.on(eventName, self.params.on[eventName]);\n });\n }\n }\n\n // eslint-disable-next-line\n useModuleParams(module, instanceParams) {\n if (module.params) {\n const originalParams = {};\n Object.keys(module.params).forEach((paramKey) => {\n if (typeof instanceParams[paramKey] === 'undefined') return;\n originalParams[paramKey] = extend({}, instanceParams[paramKey]);\n });\n extend(instanceParams, module.params);\n Object.keys(originalParams).forEach((paramKey) => {\n extend(instanceParams[paramKey], originalParams[paramKey]);\n });\n }\n }\n\n useModulesParams(instanceParams) {\n const instance = this;\n if (!instance.modules) return;\n Object.keys(instance.modules).forEach((moduleName) => {\n const module = instance.modules[moduleName];\n // Extend params\n if (module.params) {\n extend(instanceParams, module.params);\n }\n });\n }\n\n useModule(moduleName = '', moduleParams = {}) {\n const instance = this;\n if (!instance.modules) return;\n const module = typeof moduleName === 'string' ? instance.modules[moduleName] : moduleName;\n if (!module) return;\n\n // Extend instance methods and props\n if (module.instance) {\n Object.keys(module.instance).forEach((modulePropName) => {\n const moduleProp = module.instance[modulePropName];\n if (typeof moduleProp === 'function') {\n instance[modulePropName] = moduleProp.bind(instance);\n } else {\n instance[modulePropName] = moduleProp;\n }\n });\n }\n // Add event listeners\n if (module.on && instance.on) {\n Object.keys(module.on).forEach((moduleEventName) => {\n instance.on(moduleEventName, module.on[moduleEventName]);\n });\n }\n // Add vnode hooks\n if (module.vnode) {\n if (!instance.vnodeHooks) instance.vnodeHooks = {};\n Object.keys(module.vnode).forEach((vnodeId) => {\n Object.keys(module.vnode[vnodeId]).forEach((hookName) => {\n const handler = module.vnode[vnodeId][hookName];\n if (!instance.vnodeHooks[hookName]) instance.vnodeHooks[hookName] = {};\n if (!instance.vnodeHooks[hookName][vnodeId]) instance.vnodeHooks[hookName][vnodeId] = [];\n instance.vnodeHooks[hookName][vnodeId].push(handler.bind(instance));\n });\n });\n }\n // Module create callback\n if (module.create) {\n module.create.bind(instance)(moduleParams);\n }\n }\n\n useModules(modulesParams = {}) {\n const instance = this;\n if (!instance.modules) return;\n Object.keys(instance.modules).forEach((moduleName) => {\n const moduleParams = modulesParams[moduleName] || {};\n instance.useModule(moduleName, moduleParams);\n });\n }\n\n static set components(components) {\n const Class = this;\n if (!Class.use) return;\n Class.use(components);\n }\n\n static installModule(module, ...params) {\n const Class = this;\n if (!Class.prototype.modules) Class.prototype.modules = {};\n const name = module.name || `${Object.keys(Class.prototype.modules).length}_${now()}`;\n Class.prototype.modules[name] = module;\n // Prototype\n if (module.proto) {\n Object.keys(module.proto).forEach((key) => {\n Class.prototype[key] = module.proto[key];\n });\n }\n // Class\n if (module.static) {\n Object.keys(module.static).forEach((key) => {\n Class[key] = module.static[key];\n });\n }\n // Callback\n if (module.install) {\n module.install.apply(Class, params);\n }\n return Class;\n }\n\n static use(module, ...params) {\n const Class = this;\n if (Array.isArray(module)) {\n module.forEach((m) => Class.installModule(m));\n return Class;\n }\n return Class.installModule(module, ...params);\n }\n}\n\nexport default Framework7Class;\n","import $ from './dom7.js';\n\nexport default function ConstructorMethods(parameters = {}) {\n const { defaultSelector, constructor: Constructor, domProp, app, addMethods } = parameters;\n const methods = {\n create(...args) {\n if (app) return new Constructor(app, ...args);\n return new Constructor(...args);\n },\n get(el = defaultSelector) {\n if (el instanceof Constructor) return el;\n const $el = $(el);\n if ($el.length === 0) return undefined;\n return $el[0][domProp];\n },\n destroy(el) {\n const instance = methods.get(el);\n if (instance && instance.destroy) return instance.destroy();\n return undefined;\n },\n };\n if (addMethods && Array.isArray(addMethods)) {\n addMethods.forEach((methodName) => {\n methods[methodName] = (el = defaultSelector, ...args) => {\n const instance = methods.get(el);\n if (instance && instance[methodName]) return instance[methodName](...args);\n return undefined;\n };\n });\n }\n return methods;\n}\n","import { getWindow, getDocument } from 'ssr-window';\nimport { id } from '../../shared/utils.js';\nimport $ from '../../shared/dom7.js';\n\nconst fetchedModules = [];\nfunction loadModule(moduleToLoad) {\n const Framework7 = this;\n const window = getWindow();\n const document = getDocument();\n return new Promise((resolve, reject) => {\n const app = Framework7.instance;\n let modulePath;\n let moduleObj;\n let moduleFunc;\n if (!moduleToLoad) {\n reject(new Error('Framework7: Lazy module must be specified'));\n return;\n }\n\n function install(module) {\n Framework7.use(module);\n\n if (app) {\n app.useModuleParams(module, app.params);\n app.useModule(module);\n }\n }\n\n if (typeof moduleToLoad === 'string') {\n const matchNamePattern = moduleToLoad.match(/([a-z0-9-]*)/i);\n if (\n moduleToLoad.indexOf('.') < 0 &&\n matchNamePattern &&\n matchNamePattern[0].length === moduleToLoad.length\n ) {\n if (!app || (app && !app.params.lazyModulesPath)) {\n reject(\n new Error(\n 'Framework7: \"lazyModulesPath\" app parameter must be specified to fetch module by name',\n ),\n );\n return;\n }\n modulePath = `${app.params.lazyModulesPath}/${moduleToLoad}/${moduleToLoad}.lazy.js`;\n } else {\n modulePath = moduleToLoad;\n }\n } else if (typeof moduleToLoad === 'function') {\n moduleFunc = moduleToLoad;\n } else {\n // considering F7-Plugin object\n moduleObj = moduleToLoad;\n }\n\n if (moduleFunc) {\n const module = moduleFunc(Framework7, false);\n if (!module) {\n reject(\n new Error(\"Framework7: Can't find Framework7 component in specified component function\"),\n );\n return;\n }\n // Check if it was added\n if (Framework7.prototype.modules && Framework7.prototype.modules[module.name]) {\n resolve();\n return;\n }\n // Install It\n install(module);\n\n resolve();\n }\n if (moduleObj) {\n const module = moduleObj;\n if (!module) {\n reject(new Error(\"Framework7: Can't find Framework7 component in specified component\"));\n return;\n }\n // Check if it was added\n if (Framework7.prototype.modules && Framework7.prototype.modules[module.name]) {\n resolve();\n return;\n }\n // Install It\n install(module);\n\n resolve();\n }\n if (modulePath) {\n if (fetchedModules.indexOf(modulePath) >= 0) {\n resolve();\n return;\n }\n fetchedModules.push(modulePath);\n const scriptLoad = new Promise((resolveScript, rejectScript) => {\n Framework7.request.get(\n modulePath,\n (scriptContent) => {\n const callbackId = id();\n const callbackLoadName = `f7_component_loader_callback_${callbackId}`;\n\n const scriptEl = document.createElement('script');\n scriptEl.innerHTML = `window.${callbackLoadName} = function (Framework7, Framework7AutoInstallComponent) {return ${scriptContent.trim()}}`;\n $('head').append(scriptEl);\n\n const componentLoader = window[callbackLoadName];\n delete window[callbackLoadName];\n $(scriptEl).remove();\n\n const module = componentLoader(Framework7, false);\n\n if (!module) {\n rejectScript(\n new Error(`Framework7: Can't find Framework7 component in ${modulePath} file`),\n );\n return;\n }\n\n // Check if it was added\n if (Framework7.prototype.modules && Framework7.prototype.modules[module.name]) {\n resolveScript();\n return;\n }\n\n // Install It\n install(module);\n\n resolveScript();\n },\n (xhr, status) => {\n rejectScript(xhr, status);\n },\n );\n });\n const styleLoad = new Promise((resolveStyle) => {\n Framework7.request.get(\n modulePath\n .replace('.lazy.js', app.rtl ? '.rtl.css' : '.css')\n .replace('.js', app.rtl ? '.rtl.css' : '.css'),\n (styleContent) => {\n const styleEl = document.createElement('style');\n styleEl.innerHTML = styleContent;\n $('head').append(styleEl);\n\n resolveStyle();\n },\n () => {\n resolveStyle();\n },\n );\n });\n\n Promise.all([scriptLoad, styleLoad])\n .then(() => {\n resolve();\n })\n .catch((err) => {\n reject(err);\n });\n }\n });\n}\n\nexport default loadModule;\n","/* eslint-disable no-underscore-dangle */\n\nimport { getWindow, getDocument } from 'ssr-window';\nimport { extend, nextFrame } from '../../shared/utils.js';\nimport { getDevice } from '../../shared/get-device.js';\nimport { getSupport } from '../../shared/get-support.js';\nimport Framework7Class from '../../shared/class.js';\nimport EventsClass from '../../shared/events-class.js';\nimport ConstructorMethods from '../../shared/constructor-methods.js';\nimport ModalMethods from '../../shared/modal-methods.js';\nimport $ from '../../shared/dom7.js';\nimport loadModule from './load-module.js';\n\nclass Framework7 extends Framework7Class {\n constructor(params = {}) {\n super(params);\n // eslint-disable-next-line\n if (Framework7.instance && typeof window !== 'undefined') {\n throw new Error(\"Framework7 is already initialized and can't be initialized more than once\");\n }\n const device = getDevice({ userAgent: params.userAgent || undefined });\n const support = getSupport();\n\n const passedParams = extend({}, params);\n\n // App Instance\n const app = this;\n\n app.device = device;\n app.support = support;\n\n const w = getWindow();\n const d = getDocument();\n\n Framework7.instance = app;\n\n // Default\n const defaults = {\n version: '1.0.0',\n id: 'io.framework7.myapp',\n el: 'body',\n theme: 'auto',\n language: w.navigator.language,\n routes: [],\n name: 'Framework7',\n lazyModulesPath: null,\n initOnDeviceReady: true,\n init: true,\n autoDarkMode: false,\n iosTranslucentBars: true,\n iosTranslucentModals: true,\n component: undefined,\n componentUrl: undefined,\n userAgent: null,\n url: null,\n };\n\n // Extend defaults with modules params\n app.useModulesParams(defaults);\n\n // Extend defaults with passed params\n app.params = extend(defaults, params);\n\n extend(app, {\n // App Id\n id: app.params.id,\n // App Name\n name: app.params.name,\n // App version\n version: app.params.version,\n // Routes\n routes: app.params.routes,\n // Lang\n language: app.params.language,\n\n // Theme\n theme: (function getTheme() {\n if (app.params.theme === 'auto') {\n if (device.ios) return 'ios';\n if (device.desktop && device.electron) return 'aurora';\n return 'md';\n }\n return app.params.theme;\n })(),\n\n // Initially passed parameters\n passedParams,\n online: w.navigator.onLine,\n });\n\n if (params.store) app.params.store = params.store;\n\n // Save Root\n if (app.$el && app.$el[0]) {\n app.$el[0].f7 = app;\n }\n\n // Install Modules\n app.useModules();\n\n // Init Store\n app.initStore();\n\n // Init\n if (app.params.init) {\n if (device.cordova && app.params.initOnDeviceReady) {\n $(d).on('deviceready', () => {\n app.init();\n });\n } else {\n app.init();\n }\n }\n\n // Return app instance\n return app;\n }\n\n mount(rootEl) {\n const app = this;\n const window = getWindow();\n const document = getDocument();\n const $rootEl = $(rootEl || app.params.el).eq(0);\n app.$el = $rootEl;\n if (app.$el && app.$el[0]) {\n app.el = app.$el[0];\n app.el.f7 = app;\n app.rtl = $rootEl.css('direction') === 'rtl';\n }\n\n // Auto Dark Mode\n const DARK = '(prefers-color-scheme: dark)';\n const LIGHT = '(prefers-color-scheme: light)';\n app.mq = {};\n if (window.matchMedia) {\n app.mq.dark = window.matchMedia(DARK);\n app.mq.light = window.matchMedia(LIGHT);\n }\n app.colorSchemeListener = function colorSchemeListener({ matches, media }) {\n if (!matches) {\n return;\n }\n const html = document.querySelector('html');\n if (media === DARK) {\n html.classList.add('dark');\n app.darkMode = true;\n app.emit('darkModeChange', true);\n } else if (media === LIGHT) {\n html.classList.remove('dark');\n app.darkMode = false;\n app.emit('darkModeChange', false);\n }\n };\n app.emit('mount');\n }\n\n initStore() {\n const app = this;\n if (typeof app.params.store !== 'undefined' && app.params.store.__store) {\n app.store = app.params.store;\n } else {\n app.store = app.createStore(app.params.store);\n }\n }\n\n enableAutoDarkMode() {\n const window = getWindow();\n const document = getDocument();\n if (!window.matchMedia) return;\n const app = this;\n const html = document.querySelector('html');\n if (app.mq.dark && app.mq.light) {\n app.mq.dark.addListener(app.colorSchemeListener);\n app.mq.light.addListener(app.colorSchemeListener);\n }\n if (app.mq.dark && app.mq.dark.matches) {\n html.classList.add('dark');\n app.darkMode = true;\n app.emit('darkModeChange', true);\n } else if (app.mq.light && app.mq.light.matches) {\n html.classList.remove('dark');\n app.darkMode = false;\n app.emit('darkModeChange', false);\n }\n }\n\n disableAutoDarkMode() {\n const window = getWindow();\n if (!window.matchMedia) return;\n const app = this;\n if (app.mq.dark) app.mq.dark.removeListener(app.colorSchemeListener);\n if (app.mq.light) app.mq.light.removeListener(app.colorSchemeListener);\n }\n\n initAppComponent(callback) {\n const app = this;\n app.router.componentLoader(\n app.params.component,\n app.params.componentUrl,\n { componentOptions: { el: app.$el[0] } },\n (el) => {\n app.$el = $(el);\n app.$el[0].f7 = app;\n app.$elComponent = el.f7Component;\n app.el = app.$el[0];\n if (callback) callback();\n },\n () => {},\n );\n }\n\n init(rootEl) {\n const app = this;\n\n app.mount(rootEl);\n\n const init = () => {\n if (app.initialized) return;\n\n app.$el.addClass('framework7-initializing');\n\n // RTL attr\n if (app.rtl) {\n $('html').attr('dir', 'rtl');\n }\n\n // Auto Dark Mode\n if (app.params.autoDarkMode) {\n app.enableAutoDarkMode();\n }\n\n // Watch for online/offline state\n const window = getWindow();\n window.addEventListener('offline', () => {\n app.online = false;\n app.emit('offline');\n app.emit('connection', false);\n });\n window.addEventListener('online', () => {\n app.online = true;\n app.emit('online');\n app.emit('connection', true);\n });\n\n // Root class\n app.$el.addClass('framework7-root');\n\n // Theme class\n $('html').removeClass('ios md aurora').addClass(app.theme);\n\n // iOS Translucent\n const device = app.device;\n if (app.params.iosTranslucentBars && app.theme === 'ios' && device.ios) {\n $('html').addClass('ios-translucent-bars');\n }\n if (app.params.iosTranslucentModals && app.theme === 'ios' && device.ios) {\n $('html').addClass('ios-translucent-modals');\n }\n\n // Init class\n nextFrame(() => {\n app.$el.removeClass('framework7-initializing');\n });\n // Emit, init other modules\n app.initialized = true;\n app.emit('init');\n };\n if (app.params.component || app.params.componentUrl) {\n app.initAppComponent(() => {\n init();\n });\n } else {\n init();\n }\n return app;\n }\n\n // eslint-disable-next-line\n loadModule(...args) {\n return Framework7.loadModule(...args);\n }\n\n // eslint-disable-next-line\n loadModules(...args) {\n return Framework7.loadModules(...args);\n }\n\n getVnodeHooks(hook, id) {\n const app = this;\n if (!app.vnodeHooks || !app.vnodeHooks[hook]) return [];\n return app.vnodeHooks[hook][id] || [];\n }\n\n // eslint-disable-next-line\n get $() {\n return $;\n }\n\n static get Dom7() {\n return $;\n }\n\n static get $() {\n return $;\n }\n\n static get device() {\n return getDevice();\n }\n\n static get support() {\n return getSupport();\n }\n\n static get Class() {\n return Framework7Class;\n }\n\n static get Events() {\n return EventsClass;\n }\n}\n\nFramework7.ModalMethods = ModalMethods;\nFramework7.ConstructorMethods = ConstructorMethods;\n\nFramework7.loadModule = loadModule;\nFramework7.loadModules = function loadModules(modules) {\n return Promise.all(modules.map((module) => Framework7.loadModule(module)));\n};\n\nexport default Framework7;\n","import $ from './dom7.js';\nimport { extend } from './utils.js';\nimport ConstructorMethods from './constructor-methods.js';\n\nexport default function ModalMethods(parameters = {}) {\n const { defaultSelector, constructor: Constructor, app } = parameters;\n const methods = extend(\n ConstructorMethods({\n defaultSelector,\n constructor: Constructor,\n app,\n domProp: 'f7Modal',\n }),\n {\n open(el, animate, targetEl) {\n let $el = $(el);\n if ($el.length > 1 && targetEl) {\n // check if same modal in other page\n const $targetPage = $(targetEl).parents('.page');\n if ($targetPage.length) {\n $el.each((modalEl) => {\n const $modalEl = $(modalEl);\n if ($modalEl.parents($targetPage)[0] === $targetPage[0]) {\n $el = $modalEl;\n }\n });\n }\n }\n if ($el.length > 1) {\n $el = $el.eq($el.length - 1);\n }\n if (!$el.length) return undefined;\n let instance = $el[0].f7Modal;\n if (!instance) {\n const params = $el.dataset();\n instance = new Constructor(app, { el: $el, ...params });\n }\n return instance.open(animate);\n },\n close(el = defaultSelector, animate, targetEl) {\n let $el = $(el);\n if (!$el.length) return undefined;\n if ($el.length > 1) {\n // check if close link (targetEl) in this modal\n let $parentEl;\n if (targetEl) {\n const $targetEl = $(targetEl);\n if ($targetEl.length) {\n $parentEl = $targetEl.parents($el);\n }\n }\n if ($parentEl && $parentEl.length > 0) {\n $el = $parentEl;\n } else {\n $el = $el.eq($el.length - 1);\n }\n }\n let instance = $el[0].f7Modal;\n if (!instance) {\n const params = $el.dataset();\n instance = new Constructor(app, { el: $el, ...params });\n }\n return instance.close(animate);\n },\n },\n );\n return methods;\n}\n","import { getDocument } from 'ssr-window';\nimport { getDevice } from '../../shared/get-device.js';\n\nexport default {\n name: 'device',\n static: {\n getDevice,\n },\n on: {\n init() {\n const document = getDocument();\n const device = getDevice();\n const classNames = [];\n const html = document.querySelector('html');\n const metaStatusbar = document.querySelector(\n 'meta[name=\"apple-mobile-web-app-status-bar-style\"]',\n );\n if (!html) return;\n if (\n device.standalone &&\n device.ios &&\n metaStatusbar &&\n metaStatusbar.content === 'black-translucent'\n ) {\n classNames.push('device-full-viewport');\n }\n\n // Pixel Ratio\n classNames.push(`device-pixel-ratio-${Math.floor(device.pixelRatio)}`);\n // OS classes\n if (device.os && !device.desktop) {\n classNames.push(`device-${device.os}`);\n } else if (device.desktop) {\n classNames.push('device-desktop');\n if (device.os) {\n classNames.push(`device-${device.os}`);\n }\n }\n if (device.cordova || device.phonegap) {\n classNames.push('device-cordova');\n }\n if (device.capacitor) {\n classNames.push('device-capacitor');\n }\n\n // Add html classes\n classNames.forEach((className) => {\n html.classList.add(className);\n });\n },\n },\n};\n","import { getSupport } from '../../shared/get-support.js';\n\nexport default {\n name: 'support',\n static: {\n getSupport,\n },\n};\n","import * as utils from '../../shared/utils.js';\n\nexport default {\n name: 'utils',\n proto: {\n utils,\n },\n static: {\n utils,\n },\n};\n","import { getWindow, getDocument } from 'ssr-window';\nimport { getDevice } from '../../shared/get-device.js';\n\nexport default {\n name: 'resize',\n create() {\n const app = this;\n app.getSize = () => {\n if (!app.el) return { width: 0, height: 0, left: 0, top: 0 };\n const offset = app.$el.offset();\n const [width, height, left, top] = [\n app.el.offsetWidth,\n app.el.offsetHeight,\n offset.left,\n offset.top,\n ];\n app.width = width;\n app.height = height;\n app.left = left;\n app.top = top;\n return { width, height, left, top };\n };\n },\n on: {\n init() {\n const app = this;\n const window = getWindow();\n\n // Get Size\n app.getSize();\n\n // Emit resize\n window.addEventListener(\n 'resize',\n () => {\n app.emit('resize');\n },\n false,\n );\n\n // Emit orientationchange\n window.addEventListener('orientationchange', () => {\n app.emit('orientationchange');\n });\n },\n orientationchange() {\n const document = getDocument();\n const device = getDevice();\n // Fix iPad weird body scroll\n if (device.ipad) {\n document.body.scrollLeft = 0;\n setTimeout(() => {\n document.body.scrollLeft = 0;\n }, 0);\n }\n },\n resize() {\n const app = this;\n app.getSize();\n },\n },\n};\n","/* eslint-disable max-classes-per-file */\nimport { getWindow, getDocument } from 'ssr-window';\nimport { extend, serializeObject } from './utils.js';\n\nconst globals = {};\nlet jsonpRequests = 0;\n\nclass RequestResponse {\n constructor(obj) {\n Object.assign(this, obj);\n }\n}\n\nclass RequestError extends Error {\n constructor(obj) {\n super();\n Object.assign(this, obj);\n }\n}\n\nconst request = (requestOptions) =>\n new Promise((resolve, reject) => {\n const window = getWindow();\n const document = getDocument();\n const globalsNoCallbacks = extend({}, globals);\n 'beforeCreate beforeOpen beforeSend error complete success statusCode'\n .split(' ')\n .forEach((callbackName) => {\n delete globalsNoCallbacks[callbackName];\n });\n const defaults = extend(\n {\n url: window.location.toString(),\n method: 'GET',\n data: false,\n async: true,\n cache: true,\n user: '',\n password: '',\n headers: {},\n xhrFields: {},\n statusCode: {},\n processData: true,\n dataType: 'text',\n contentType: 'application/x-www-form-urlencoded',\n timeout: 0,\n },\n globalsNoCallbacks,\n );\n\n let proceedRequest;\n\n const options = extend({}, defaults, requestOptions);\n if (requestOptions.abortController) {\n options.abortController = requestOptions.abortController;\n }\n\n if (options.abortController && options.abortController.canceled) {\n reject(new RequestError({ options, status: 'canceled', message: 'canceled' }));\n return;\n }\n\n // Function to run XHR callbacks and events\n function fireCallback(callbackName, ...data) {\n /*\n Callbacks:\n beforeCreate (options),\n beforeOpen (xhr, options),\n beforeSend (xhr, options),\n error (xhr, status, message),\n complete (xhr, status),\n success (response, status, xhr),\n statusCode ()\n */\n let globalCallbackValue;\n let optionCallbackValue;\n if (globals[callbackName]) {\n globalCallbackValue = globals[callbackName](...data);\n }\n if (options[callbackName]) {\n optionCallbackValue = options[callbackName](...data);\n }\n if (typeof globalCallbackValue !== 'boolean') globalCallbackValue = true;\n if (typeof optionCallbackValue !== 'boolean') optionCallbackValue = true;\n if (\n options.abortController &&\n options.abortController.canceled &&\n (callbackName === 'beforeCreate' ||\n callbackName === 'beforeOpen' ||\n callbackName === 'beforeSend')\n ) {\n return false;\n }\n return globalCallbackValue && optionCallbackValue;\n }\n\n // Before create callback\n proceedRequest = fireCallback('beforeCreate', options);\n if (proceedRequest === false) {\n reject(new RequestError({ options, status: 'canceled', message: 'canceled' }));\n return;\n }\n\n // For jQuery guys\n if (options.type) options.method = options.type;\n\n // Parameters Prefix\n let paramsPrefix = options.url.indexOf('?') >= 0 ? '&' : '?';\n\n // UC method\n const method = options.method.toUpperCase();\n\n // Data to modify GET URL\n if (\n (method === 'GET' || method === 'HEAD' || method === 'OPTIONS' || method === 'DELETE') &&\n options.data\n ) {\n let stringData;\n if (typeof options.data === 'string') {\n // Should be key=value string\n if (options.data.indexOf('?') >= 0) stringData = options.data.split('?')[1];\n else stringData = options.data;\n } else {\n // Should be key=value object\n stringData = serializeObject(options.data);\n }\n if (stringData.length) {\n options.url += paramsPrefix + stringData;\n if (paramsPrefix === '?') paramsPrefix = '&';\n }\n }\n\n // JSONP\n if (options.dataType === 'json' && options.url.indexOf('callback=') >= 0) {\n const callbackName = `f7jsonp_${Date.now() + (jsonpRequests += 1)}`;\n let abortTimeout;\n const callbackSplit = options.url.split('callback=');\n let requestUrl = `${callbackSplit[0]}callback=${callbackName}`;\n if (callbackSplit[1].indexOf('&') >= 0) {\n const addVars = callbackSplit[1]\n .split('&')\n .filter((el) => el.indexOf('=') > 0)\n .join('&');\n if (addVars.length > 0) requestUrl += `&${addVars}`;\n }\n\n // Create script\n let script = document.createElement('script');\n script.type = 'text/javascript';\n script.onerror = function onerror() {\n clearTimeout(abortTimeout);\n fireCallback('error', null, 'scripterror', 'scripterror');\n reject(new RequestError({ options, status: 'scripterror', message: 'scripterror' }));\n fireCallback('complete', null, 'scripterror');\n };\n script.src = requestUrl;\n\n // Handler\n window[callbackName] = function jsonpCallback(data) {\n clearTimeout(abortTimeout);\n fireCallback('success', data);\n script.parentNode.removeChild(script);\n script = null;\n delete window[callbackName];\n resolve(new RequestResponse({ options, data }));\n };\n document.querySelector('head').appendChild(script);\n\n if (options.timeout > 0) {\n abortTimeout = setTimeout(() => {\n script.parentNode.removeChild(script);\n script = null;\n fireCallback('error', null, 'timeout', 'timeout');\n reject(new RequestError({ options, status: 'timeout', message: 'timeout' }));\n }, options.timeout);\n }\n\n return;\n }\n\n // Cache for GET/HEAD requests\n if (method === 'GET' || method === 'HEAD' || method === 'OPTIONS' || method === 'DELETE') {\n if (options.cache === false) {\n options.url += `${paramsPrefix}_nocache${Date.now()}`;\n }\n }\n\n // Create XHR\n const xhr = new XMLHttpRequest();\n\n if (options.abortController) {\n let aborted = false;\n options.abortController.onAbort = () => {\n if (aborted) return;\n aborted = true;\n xhr.abort();\n reject(new RequestError({ options, xhr, status: 'canceled', message: 'canceled' }));\n };\n }\n\n // Save Request URL\n xhr.requestUrl = options.url;\n xhr.requestParameters = options;\n\n // Before open callback\n proceedRequest = fireCallback('beforeOpen', xhr, options);\n if (proceedRequest === false) {\n reject(new RequestError({ options, xhr, status: 'canceled', message: 'canceled' }));\n return;\n }\n\n // Open XHR\n xhr.open(method, options.url, options.async, options.user, options.password);\n\n // Create POST Data\n let postData = null;\n\n if ((method === 'POST' || method === 'PUT' || method === 'PATCH') && options.data) {\n if (options.processData) {\n const postDataInstances = [ArrayBuffer, Blob, Document, FormData];\n // Post Data\n if (postDataInstances.indexOf(options.data.constructor) >= 0) {\n postData = options.data;\n } else {\n // POST Headers\n const boundary = `---------------------------${Date.now().toString(16)}`;\n\n if (options.contentType === 'multipart/form-data') {\n xhr.setRequestHeader('Content-Type', `multipart/form-data; boundary=${boundary}`);\n } else {\n xhr.setRequestHeader('Content-Type', options.contentType);\n }\n postData = '';\n let data = serializeObject(options.data);\n if (options.contentType === 'multipart/form-data') {\n data = data.split('&');\n const newData = [];\n for (let i = 0; i < data.length; i += 1) {\n newData.push(\n `Content-Disposition: form-data; name=\"${data[i].split('=')[0]}\"\\r\\n\\r\\n${\n data[i].split('=')[1]\n }\\r\\n`,\n );\n }\n postData = `--${boundary}\\r\\n${newData.join(`--${boundary}\\r\\n`)}--${boundary}--\\r\\n`;\n } else if (options.contentType === 'application/json') {\n postData = JSON.stringify(options.data);\n } else {\n postData = data;\n }\n }\n } else {\n postData = options.data;\n xhr.setRequestHeader('Content-Type', options.contentType);\n }\n }\n if (options.dataType === 'json' && (!options.headers || !options.headers.Accept)) {\n xhr.setRequestHeader('Accept', 'application/json');\n }\n\n // Additional headers\n if (options.headers) {\n Object.keys(options.headers).forEach((headerName) => {\n if (typeof options.headers[headerName] === 'undefined') return;\n xhr.setRequestHeader(headerName, options.headers[headerName]);\n });\n }\n\n // Check for crossDomain\n if (typeof options.crossDomain === 'undefined') {\n options.crossDomain =\n // eslint-disable-next-line\n /^([\\w-]+:)?\\/\\/([^\\/]+)/.test(options.url) && RegExp.$2 !== window.location.host;\n }\n\n if (!options.crossDomain) {\n xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');\n }\n\n if (options.xhrFields) {\n extend(xhr, options.xhrFields);\n }\n\n // Handle XHR\n xhr.onload = function onload() {\n if ((xhr.status >= 200 && xhr.status < 300) || xhr.status === 0) {\n let responseData;\n if (options.dataType === 'json') {\n let parseError;\n try {\n responseData = JSON.parse(xhr.responseText);\n } catch (err) {\n parseError = true;\n }\n if (!parseError) {\n fireCallback('success', responseData, xhr.status, xhr);\n resolve(new RequestResponse({ options, data: responseData, status: xhr.status, xhr }));\n } else {\n fireCallback('error', xhr, 'parseerror', 'parseerror');\n reject(new RequestError({ options, xhr, status: 'parseerror', message: 'parseerror' }));\n }\n } else {\n responseData =\n xhr.responseType === 'text' || xhr.responseType === ''\n ? xhr.responseText\n : xhr.response;\n fireCallback('success', responseData, xhr.status, xhr);\n resolve(new RequestResponse({ options, data: responseData, status: xhr.status, xhr }));\n }\n } else {\n fireCallback('error', xhr, xhr.status, xhr.statusText);\n reject(new RequestError({ options, xhr, status: xhr.status, message: xhr.statusText }));\n }\n if (options.statusCode) {\n if (globals.statusCode && globals.statusCode[xhr.status])\n globals.statusCode[xhr.status](xhr);\n if (options.statusCode[xhr.status]) options.statusCode[xhr.status](xhr);\n }\n fireCallback('complete', xhr, xhr.status);\n };\n\n xhr.onerror = function onerror() {\n fireCallback('error', xhr, xhr.status, xhr.status);\n reject(new RequestError({ options, xhr, status: xhr.status, message: xhr.statusText }));\n fireCallback('complete', xhr, 'error');\n };\n\n // Timeout\n if (options.timeout > 0) {\n xhr.timeout = options.timeout;\n xhr.ontimeout = () => {\n fireCallback('error', xhr, 'timeout', 'timeout');\n reject(new RequestError({ options, xhr, status: 'timeout', message: 'timeout' }));\n fireCallback('complete', xhr, 'timeout');\n };\n }\n\n // Ajax start callback\n proceedRequest = fireCallback('beforeSend', xhr, options);\n if (proceedRequest === false) {\n reject(new RequestError({ options, xhr, status: 'canceled', message: 'canceled' }));\n return;\n }\n\n // Send XHR\n xhr.send(postData);\n });\n\nfunction requestShortcut(method, ...args) {\n let [url, data, success, error, dataType] = [];\n if (typeof args[1] === 'function') {\n [url, success, error, dataType] = args;\n } else {\n [url, data, success, error, dataType] = args;\n }\n [success, error].forEach((callback) => {\n if (typeof callback === 'string') {\n dataType = callback;\n if (callback === success) success = undefined;\n else error = undefined;\n }\n });\n dataType = dataType || (method === 'json' || method === 'postJSON' ? 'json' : undefined);\n const requestOptions = {\n url,\n method: method === 'post' || method === 'postJSON' ? 'POST' : 'GET',\n data,\n success,\n error,\n dataType,\n };\n if (method === 'postJSON') {\n extend(requestOptions, {\n contentType: 'application/json',\n processData: false,\n crossDomain: true,\n data: typeof data === 'string' ? data : JSON.stringify(data),\n });\n }\n return request(requestOptions);\n}\n\nObject.assign(request, {\n get: (...args) => requestShortcut('get', ...args),\n post: (...args) => requestShortcut('post', ...args),\n json: (...args) => requestShortcut('json', ...args),\n getJSON: (...args) => requestShortcut('json', ...args),\n postJSON: (...args) => requestShortcut('postJSON', ...args),\n});\n\nrequest.abortController = () => {\n const contoller = {\n canceled: false,\n onAbort: null,\n abort() {\n contoller.canceled = true;\n if (contoller.onAbort) contoller.onAbort();\n },\n };\n return contoller;\n};\n\nrequest.setup = function setup(options) {\n if (options.type && !options.method) {\n extend(options, { method: options.type });\n }\n extend(globals, options);\n};\n\nexport default request;\n","/* eslint no-param-reassign: \"off\" */\nimport request from '../../shared/request.js';\n\nexport default {\n name: 'request',\n proto: {\n request,\n },\n static: {\n request,\n },\n};\n","/* eslint-disable no-nested-ternary */\nimport { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { getSupport } from '../../shared/get-support.js';\nimport { getDevice } from '../../shared/get-device.js';\nimport { extend } from '../../shared/utils.js';\n\nfunction initTouch() {\n const app = this;\n const device = getDevice();\n const support = getSupport();\n const window = getWindow();\n const document = getDocument();\n const params = app.params.touch;\n const useRipple = params[`${app.theme}TouchRipple`];\n\n if (device.ios && device.webView) {\n // Strange hack required for iOS 8 webview to work on inputs\n window.addEventListener('touchstart', () => {});\n }\n\n let touchStartX;\n let touchStartY;\n let targetElement;\n let isMoved;\n let tapHoldFired;\n let tapHoldTimeout;\n let preventClick;\n\n let activableElement;\n let activeTimeout;\n\n let rippleWave;\n let rippleTarget;\n let rippleTimeout;\n\n function findActivableElement(el) {\n const target = $(el);\n const parents = target.parents(params.activeStateElements);\n if (target.closest('.no-active-state').length) {\n return null;\n }\n let activable;\n if (target.is(params.activeStateElements)) {\n activable = target;\n }\n if (parents.length > 0) {\n activable = activable ? activable.add(parents) : parents;\n }\n if (activable && activable.length > 1) {\n const newActivable = [];\n let preventPropagation;\n for (let i = 0; i < activable.length; i += 1) {\n if (!preventPropagation) {\n newActivable.push(activable[i]);\n if (\n activable.eq(i).hasClass('prevent-active-state-propagation') ||\n activable.eq(i).hasClass('no-active-state-propagation')\n ) {\n preventPropagation = true;\n }\n }\n }\n activable = $(newActivable);\n }\n return activable || target;\n }\n\n function isInsideScrollableView(el) {\n const pageContent = el.parents('.page-content');\n return pageContent.length > 0;\n }\n\n function addActive() {\n if (!activableElement) return;\n activableElement.addClass('active-state');\n }\n function removeActive() {\n if (!activableElement) return;\n activableElement.removeClass('active-state');\n activableElement = null;\n }\n\n // Ripple handlers\n function findRippleElement(el) {\n const rippleElements = params.touchRippleElements;\n const $el = $(el);\n if ($el.is(rippleElements)) {\n if ($el.hasClass('no-ripple')) {\n return false;\n }\n return $el;\n }\n if ($el.parents(rippleElements).length > 0) {\n const rippleParent = $el.parents(rippleElements).eq(0);\n if (rippleParent.hasClass('no-ripple')) {\n return false;\n }\n return rippleParent;\n }\n return false;\n }\n function createRipple($el, x, y) {\n if (!$el) return;\n rippleWave = app.touchRipple.create(app, $el, x, y);\n }\n\n function removeRipple() {\n if (!rippleWave) return;\n rippleWave.remove();\n rippleWave = undefined;\n rippleTarget = undefined;\n }\n function rippleTouchStart(el) {\n rippleTarget = findRippleElement(el);\n if (!rippleTarget || rippleTarget.length === 0) {\n rippleTarget = undefined;\n return;\n }\n const inScrollable = isInsideScrollableView(rippleTarget);\n\n if (!inScrollable) {\n removeRipple();\n createRipple(rippleTarget, touchStartX, touchStartY);\n } else {\n clearTimeout(rippleTimeout);\n rippleTimeout = setTimeout(() => {\n removeRipple();\n createRipple(rippleTarget, touchStartX, touchStartY);\n }, 80);\n }\n }\n function rippleTouchMove() {\n clearTimeout(rippleTimeout);\n removeRipple();\n }\n function rippleTouchEnd() {\n if (!rippleWave && rippleTarget && !isMoved) {\n clearTimeout(rippleTimeout);\n createRipple(rippleTarget, touchStartX, touchStartY);\n setTimeout(removeRipple, 0);\n } else {\n removeRipple();\n }\n }\n\n // Mouse Handlers\n function handleMouseDown(e) {\n const $activableEl = findActivableElement(e.target);\n if ($activableEl) {\n $activableEl.addClass('active-state');\n if ('which' in e && e.which === 3) {\n setTimeout(() => {\n $('.active-state').removeClass('active-state');\n }, 0);\n }\n }\n\n if (useRipple) {\n touchStartX = e.pageX;\n touchStartY = e.pageY;\n rippleTouchStart(e.target, e.pageX, e.pageY);\n }\n }\n function handleMouseMove() {\n if (!params.activeStateOnMouseMove) {\n $('.active-state').removeClass('active-state');\n }\n if (useRipple) {\n rippleTouchMove();\n }\n }\n function handleMouseUp() {\n $('.active-state').removeClass('active-state');\n if (useRipple) {\n rippleTouchEnd();\n }\n }\n\n function handleTouchCancel() {\n targetElement = null;\n\n // Remove Active State\n clearTimeout(activeTimeout);\n clearTimeout(tapHoldTimeout);\n if (params.activeState) {\n removeActive();\n }\n\n // Remove Ripple\n if (useRipple) {\n rippleTouchEnd();\n }\n }\n\n let isScrolling;\n let isSegmentedStrong = false;\n let segmentedStrongEl = null;\n\n const touchMoveActivableIos = '.dialog-button, .actions-button';\n let isTouchMoveActivable = false;\n let touchmoveActivableEl = null;\n\n function handleTouchStart(e) {\n isMoved = false;\n tapHoldFired = false;\n preventClick = false;\n isScrolling = undefined;\n if (e.targetTouches.length > 1) {\n if (activableElement) removeActive();\n return true;\n }\n if (e.touches.length > 1 && activableElement) {\n removeActive();\n }\n if (params.tapHold) {\n if (tapHoldTimeout) clearTimeout(tapHoldTimeout);\n tapHoldTimeout = setTimeout(() => {\n if (e && e.touches && e.touches.length > 1) return;\n tapHoldFired = true;\n e.preventDefault();\n preventClick = true;\n $(e.target).trigger('taphold', e);\n app.emit('taphold', e);\n }, params.tapHoldDelay);\n }\n targetElement = e.target;\n touchStartX = e.targetTouches[0].pageX;\n touchStartY = e.targetTouches[0].pageY;\n isSegmentedStrong = e.target.closest(\n '.segmented-strong .button-active, .segmented-strong .tab-link-active',\n );\n isTouchMoveActivable = app.theme === 'ios' && e.target.closest(touchMoveActivableIos);\n if (isSegmentedStrong) {\n segmentedStrongEl = isSegmentedStrong.closest('.segmented-strong');\n }\n\n if (params.activeState) {\n activableElement = findActivableElement(targetElement);\n if (activableElement && !isInsideScrollableView(activableElement)) {\n addActive();\n } else if (activableElement) {\n activeTimeout = setTimeout(addActive, 80);\n }\n }\n if (useRipple) {\n rippleTouchStart(targetElement, touchStartX, touchStartY);\n }\n return true;\n }\n function handleTouchMove(e) {\n let touch;\n let distance;\n let shouldRemoveActive = true;\n\n if (e.type === 'touchmove') {\n touch = e.targetTouches[0];\n distance = params.touchClicksDistanceThreshold;\n }\n\n const touchCurrentX = e.targetTouches[0].pageX;\n const touchCurrentY = e.targetTouches[0].pageY;\n\n if (typeof isScrolling === 'undefined') {\n isScrolling = !!(\n isScrolling || Math.abs(touchCurrentY - touchStartY) > Math.abs(touchCurrentX - touchStartX)\n );\n }\n\n if (isTouchMoveActivable || (!isScrolling && isSegmentedStrong && segmentedStrongEl)) {\n if (e.cancelable) e.preventDefault();\n }\n\n if (!isScrolling && isSegmentedStrong && segmentedStrongEl) {\n const elementFromPoint = document.elementFromPoint(\n e.targetTouches[0].clientX,\n e.targetTouches[0].clientY,\n );\n const buttonEl = elementFromPoint.closest(\n '.segmented-strong .button:not(.button-active):not(.tab-link-active)',\n );\n if (buttonEl && segmentedStrongEl.contains(buttonEl)) {\n $(buttonEl).trigger('click', 'f7Segmented');\n targetElement = buttonEl;\n }\n }\n\n if (distance && touch) {\n const pageX = touch.pageX;\n const pageY = touch.pageY;\n if (Math.abs(pageX - touchStartX) > distance || Math.abs(pageY - touchStartY) > distance) {\n isMoved = true;\n }\n } else {\n isMoved = true;\n }\n if (isMoved) {\n preventClick = true;\n // Keep active state on touchMove (for dialog and actions buttons)\n if (isTouchMoveActivable) {\n const elementFromPoint = document.elementFromPoint(\n e.targetTouches[0].clientX,\n e.targetTouches[0].clientY,\n );\n touchmoveActivableEl = elementFromPoint.closest(touchMoveActivableIos);\n if (\n touchmoveActivableEl &&\n activableElement &&\n activableElement[0] === touchmoveActivableEl\n ) {\n shouldRemoveActive = false;\n } else if (touchmoveActivableEl) {\n setTimeout(() => {\n activableElement = findActivableElement(touchmoveActivableEl);\n addActive();\n });\n }\n }\n if (params.tapHold) {\n clearTimeout(tapHoldTimeout);\n }\n if (params.activeState && shouldRemoveActive) {\n clearTimeout(activeTimeout);\n removeActive();\n }\n if (useRipple) {\n rippleTouchMove();\n }\n }\n }\n function handleTouchEnd(e) {\n isScrolling = undefined;\n isSegmentedStrong = false;\n segmentedStrongEl = null;\n isTouchMoveActivable = false;\n clearTimeout(activeTimeout);\n clearTimeout(tapHoldTimeout);\n if (touchmoveActivableEl) {\n $(touchmoveActivableEl).trigger('click', 'f7TouchMoveActivable');\n touchmoveActivableEl = null;\n }\n if (document.activeElement === e.target) {\n if (params.activeState) removeActive();\n if (useRipple) {\n rippleTouchEnd();\n }\n return true;\n }\n if (params.activeState) {\n addActive();\n setTimeout(removeActive, 0);\n }\n if (useRipple) {\n rippleTouchEnd();\n }\n if ((params.tapHoldPreventClicks && tapHoldFired) || preventClick) {\n if (e.cancelable) e.preventDefault();\n preventClick = true;\n return false;\n }\n return true;\n }\n function handleClick(e) {\n const isOverswipe = e && e.detail && e.detail === 'f7Overswipe';\n const isSegmented = e && e.detail && e.detail === 'f7Segmented';\n // eslint-disable-next-line\n const isTouchMoveActivable = e && e.detail && e.detail === 'f7TouchMoveActivable';\n let localPreventClick = preventClick;\n if (targetElement && e.target !== targetElement) {\n if (isOverswipe || isSegmented || isTouchMoveActivable) {\n localPreventClick = false;\n } else {\n localPreventClick = true;\n }\n } else if (isTouchMoveActivable) {\n localPreventClick = false;\n }\n if (params.tapHold && params.tapHoldPreventClicks && tapHoldFired) {\n localPreventClick = true;\n }\n if (localPreventClick) {\n e.stopImmediatePropagation();\n e.stopPropagation();\n e.preventDefault();\n }\n\n if (params.tapHold) {\n tapHoldTimeout = setTimeout(\n () => {\n tapHoldFired = false;\n },\n device.ios || device.androidChrome ? 100 : 400,\n );\n }\n preventClick = false;\n targetElement = null;\n\n return !localPreventClick;\n }\n\n function emitAppTouchEvent(name, e) {\n app.emit({\n events: name,\n data: [e],\n });\n }\n function appClick(e) {\n emitAppTouchEvent('click', e);\n }\n function appTouchStartActive(e) {\n emitAppTouchEvent('touchstart touchstart:active', e);\n }\n function appTouchMoveActive(e) {\n emitAppTouchEvent('touchmove touchmove:active', e);\n }\n function appTouchEndActive(e) {\n emitAppTouchEvent('touchend touchend:active', e);\n }\n function appTouchStartPassive(e) {\n emitAppTouchEvent('touchstart:passive', e);\n }\n function appTouchMovePassive(e) {\n emitAppTouchEvent('touchmove:passive', e);\n }\n function appTouchEndPassive(e) {\n emitAppTouchEvent('touchend:passive', e);\n }\n\n const passiveListener = support.passiveListener ? { passive: true } : false;\n const passiveListenerCapture = support.passiveListener ? { passive: true, capture: true } : true;\n const activeListener = support.passiveListener ? { passive: false } : false;\n const activeListenerCapture = support.passiveListener ? { passive: false, capture: true } : true;\n\n document.addEventListener('click', appClick, true);\n\n if (support.passiveListener) {\n document.addEventListener(app.touchEvents.start, appTouchStartActive, activeListenerCapture);\n document.addEventListener(app.touchEvents.move, appTouchMoveActive, activeListener);\n document.addEventListener(app.touchEvents.end, appTouchEndActive, activeListener);\n\n document.addEventListener(app.touchEvents.start, appTouchStartPassive, passiveListenerCapture);\n document.addEventListener(app.touchEvents.move, appTouchMovePassive, passiveListener);\n document.addEventListener(app.touchEvents.end, appTouchEndPassive, passiveListener);\n } else {\n document.addEventListener(\n app.touchEvents.start,\n (e) => {\n appTouchStartActive(e);\n appTouchStartPassive(e);\n },\n true,\n );\n document.addEventListener(\n app.touchEvents.move,\n (e) => {\n appTouchMoveActive(e);\n appTouchMovePassive(e);\n },\n false,\n );\n document.addEventListener(\n app.touchEvents.end,\n (e) => {\n appTouchEndActive(e);\n appTouchEndPassive(e);\n },\n false,\n );\n }\n\n if (support.touch) {\n app.on('click', handleClick);\n app.on('touchstart', handleTouchStart);\n app.on('touchmove', handleTouchMove);\n app.on('touchend', handleTouchEnd);\n document.addEventListener('touchcancel', handleTouchCancel, { passive: true });\n } else if (params.activeState) {\n app.on('touchstart', handleMouseDown);\n app.on('touchmove', handleMouseMove);\n app.on('touchend', handleMouseUp);\n document.addEventListener('pointercancel', handleMouseUp, { passive: true });\n }\n document.addEventListener('contextmenu', (e) => {\n if (\n params.disableContextMenu &&\n (device.ios ||\n device.android ||\n device.cordova ||\n (window.Capacitor && window.Capacitor.isNative))\n ) {\n e.preventDefault();\n }\n if (useRipple) {\n if (activableElement) removeActive();\n rippleTouchEnd();\n }\n });\n}\n\nexport default {\n name: 'touch',\n params: {\n touch: {\n // Clicks\n touchClicksDistanceThreshold: 5,\n // ContextMenu\n disableContextMenu: false,\n // Tap Hold\n tapHold: false,\n tapHoldDelay: 750,\n tapHoldPreventClicks: true,\n // Active State\n activeState: true,\n activeStateElements:\n 'a, button, label, span, .actions-button, .stepper-button, .stepper-button-plus, .stepper-button-minus, .card-expandable, .menu-item, .link, .item-link, .accordion-item-toggle',\n activeStateOnMouseMove: false,\n mdTouchRipple: true,\n iosTouchRipple: false,\n auroraTouchRipple: false,\n touchRippleElements:\n '.ripple, .link, .item-link, .list-button, .links-list a, .button, button, .input-clear-button, .dialog-button, .tab-link, .item-radio, .item-checkbox, .actions-button, .searchbar-disable-button, .fab a, .checkbox, .radio, .data-table .sortable-cell:not(.input-cell), .notification-close-button, .stepper-button, .stepper-button-minus, .stepper-button-plus, .menu-item-content, .list.accordion-list .accordion-item-toggle',\n touchRippleInsetElements:\n '.ripple-inset, .icon-only, .searchbar-disable-button, .input-clear-button, .notification-close-button, .md .navbar .link.back',\n },\n },\n create() {\n const app = this;\n const support = getSupport();\n extend(app, {\n touchEvents: {\n start: support.touch ? 'touchstart' : support.pointerEvents ? 'pointerdown' : 'mousedown',\n move: support.touch ? 'touchmove' : support.pointerEvents ? 'pointermove' : 'mousemove',\n end: support.touch ? 'touchend' : support.pointerEvents ? 'pointerup' : 'mouseup',\n },\n });\n },\n on: {\n init: initTouch,\n },\n};\n","/**\n * Tokenize input string.\n */\nfunction lexer(str) {\n var tokens = [];\n var i = 0;\n while (i < str.length) {\n var char = str[i];\n if (char === \"*\" || char === \"+\" || char === \"?\") {\n tokens.push({ type: \"MODIFIER\", index: i, value: str[i++] });\n continue;\n }\n if (char === \"\\\\\") {\n tokens.push({ type: \"ESCAPED_CHAR\", index: i++, value: str[i++] });\n continue;\n }\n if (char === \"{\") {\n tokens.push({ type: \"OPEN\", index: i, value: str[i++] });\n continue;\n }\n if (char === \"}\") {\n tokens.push({ type: \"CLOSE\", index: i, value: str[i++] });\n continue;\n }\n if (char === \":\") {\n var name = \"\";\n var j = i + 1;\n while (j < str.length) {\n var code = str.charCodeAt(j);\n if (\n // `0-9`\n (code >= 48 && code <= 57) ||\n // `A-Z`\n (code >= 65 && code <= 90) ||\n // `a-z`\n (code >= 97 && code <= 122) ||\n // `_`\n code === 95) {\n name += str[j++];\n continue;\n }\n break;\n }\n if (!name)\n throw new TypeError(\"Missing parameter name at \" + i);\n tokens.push({ type: \"NAME\", index: i, value: name });\n i = j;\n continue;\n }\n if (char === \"(\") {\n var count = 1;\n var pattern = \"\";\n var j = i + 1;\n if (str[j] === \"?\") {\n throw new TypeError(\"Pattern cannot start with \\\"?\\\" at \" + j);\n }\n while (j < str.length) {\n if (str[j] === \"\\\\\") {\n pattern += str[j++] + str[j++];\n continue;\n }\n if (str[j] === \")\") {\n count--;\n if (count === 0) {\n j++;\n break;\n }\n }\n else if (str[j] === \"(\") {\n count++;\n if (str[j + 1] !== \"?\") {\n throw new TypeError(\"Capturing groups are not allowed at \" + j);\n }\n }\n pattern += str[j++];\n }\n if (count)\n throw new TypeError(\"Unbalanced pattern at \" + i);\n if (!pattern)\n throw new TypeError(\"Missing pattern at \" + i);\n tokens.push({ type: \"PATTERN\", index: i, value: pattern });\n i = j;\n continue;\n }\n tokens.push({ type: \"CHAR\", index: i, value: str[i++] });\n }\n tokens.push({ type: \"END\", index: i, value: \"\" });\n return tokens;\n}\n/**\n * Parse a string for the raw tokens.\n */\nexport function parse(str, options) {\n if (options === void 0) { options = {}; }\n var tokens = lexer(str);\n var _a = options.prefixes, prefixes = _a === void 0 ? \"./\" : _a;\n var defaultPattern = \"[^\" + escapeString(options.delimiter || \"/#?\") + \"]+?\";\n var result = [];\n var key = 0;\n var i = 0;\n var path = \"\";\n var tryConsume = function (type) {\n if (i < tokens.length && tokens[i].type === type)\n return tokens[i++].value;\n };\n var mustConsume = function (type) {\n var value = tryConsume(type);\n if (value !== undefined)\n return value;\n var _a = tokens[i], nextType = _a.type, index = _a.index;\n throw new TypeError(\"Unexpected \" + nextType + \" at \" + index + \", expected \" + type);\n };\n var consumeText = function () {\n var result = \"\";\n var value;\n // tslint:disable-next-line\n while ((value = tryConsume(\"CHAR\") || tryConsume(\"ESCAPED_CHAR\"))) {\n result += value;\n }\n return result;\n };\n while (i < tokens.length) {\n var char = tryConsume(\"CHAR\");\n var name = tryConsume(\"NAME\");\n var pattern = tryConsume(\"PATTERN\");\n if (name || pattern) {\n var prefix = char || \"\";\n if (prefixes.indexOf(prefix) === -1) {\n path += prefix;\n prefix = \"\";\n }\n if (path) {\n result.push(path);\n path = \"\";\n }\n result.push({\n name: name || key++,\n prefix: prefix,\n suffix: \"\",\n pattern: pattern || defaultPattern,\n modifier: tryConsume(\"MODIFIER\") || \"\"\n });\n continue;\n }\n var value = char || tryConsume(\"ESCAPED_CHAR\");\n if (value) {\n path += value;\n continue;\n }\n if (path) {\n result.push(path);\n path = \"\";\n }\n var open = tryConsume(\"OPEN\");\n if (open) {\n var prefix = consumeText();\n var name_1 = tryConsume(\"NAME\") || \"\";\n var pattern_1 = tryConsume(\"PATTERN\") || \"\";\n var suffix = consumeText();\n mustConsume(\"CLOSE\");\n result.push({\n name: name_1 || (pattern_1 ? key++ : \"\"),\n pattern: name_1 && !pattern_1 ? defaultPattern : pattern_1,\n prefix: prefix,\n suffix: suffix,\n modifier: tryConsume(\"MODIFIER\") || \"\"\n });\n continue;\n }\n mustConsume(\"END\");\n }\n return result;\n}\n/**\n * Compile a string to a template function for the path.\n */\nexport function compile(str, options) {\n return tokensToFunction(parse(str, options), options);\n}\n/**\n * Expose a method for transforming tokens into the path function.\n */\nexport function tokensToFunction(tokens, options) {\n if (options === void 0) { options = {}; }\n var reFlags = flags(options);\n var _a = options.encode, encode = _a === void 0 ? function (x) { return x; } : _a, _b = options.validate, validate = _b === void 0 ? true : _b;\n // Compile all the tokens into regexps.\n var matches = tokens.map(function (token) {\n if (typeof token === \"object\") {\n return new RegExp(\"^(?:\" + token.pattern + \")$\", reFlags);\n }\n });\n return function (data) {\n var path = \"\";\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n if (typeof token === \"string\") {\n path += token;\n continue;\n }\n var value = data ? data[token.name] : undefined;\n var optional = token.modifier === \"?\" || token.modifier === \"*\";\n var repeat = token.modifier === \"*\" || token.modifier === \"+\";\n if (Array.isArray(value)) {\n if (!repeat) {\n throw new TypeError(\"Expected \\\"\" + token.name + \"\\\" to not repeat, but got an array\");\n }\n if (value.length === 0) {\n if (optional)\n continue;\n throw new TypeError(\"Expected \\\"\" + token.name + \"\\\" to not be empty\");\n }\n for (var j = 0; j < value.length; j++) {\n var segment = encode(value[j], token);\n if (validate && !matches[i].test(segment)) {\n throw new TypeError(\"Expected all \\\"\" + token.name + \"\\\" to match \\\"\" + token.pattern + \"\\\", but got \\\"\" + segment + \"\\\"\");\n }\n path += token.prefix + segment + token.suffix;\n }\n continue;\n }\n if (typeof value === \"string\" || typeof value === \"number\") {\n var segment = encode(String(value), token);\n if (validate && !matches[i].test(segment)) {\n throw new TypeError(\"Expected \\\"\" + token.name + \"\\\" to match \\\"\" + token.pattern + \"\\\", but got \\\"\" + segment + \"\\\"\");\n }\n path += token.prefix + segment + token.suffix;\n continue;\n }\n if (optional)\n continue;\n var typeOfMessage = repeat ? \"an array\" : \"a string\";\n throw new TypeError(\"Expected \\\"\" + token.name + \"\\\" to be \" + typeOfMessage);\n }\n return path;\n };\n}\n/**\n * Create path match function from `path-to-regexp` spec.\n */\nexport function match(str, options) {\n var keys = [];\n var re = pathToRegexp(str, keys, options);\n return regexpToFunction(re, keys, options);\n}\n/**\n * Create a path match function from `path-to-regexp` output.\n */\nexport function regexpToFunction(re, keys, options) {\n if (options === void 0) { options = {}; }\n var _a = options.decode, decode = _a === void 0 ? function (x) { return x; } : _a;\n return function (pathname) {\n var m = re.exec(pathname);\n if (!m)\n return false;\n var path = m[0], index = m.index;\n var params = Object.create(null);\n var _loop_1 = function (i) {\n // tslint:disable-next-line\n if (m[i] === undefined)\n return \"continue\";\n var key = keys[i - 1];\n if (key.modifier === \"*\" || key.modifier === \"+\") {\n params[key.name] = m[i].split(key.prefix + key.suffix).map(function (value) {\n return decode(value, key);\n });\n }\n else {\n params[key.name] = decode(m[i], key);\n }\n };\n for (var i = 1; i < m.length; i++) {\n _loop_1(i);\n }\n return { path: path, index: index, params: params };\n };\n}\n/**\n * Escape a regular expression string.\n */\nfunction escapeString(str) {\n return str.replace(/([.+*?=^!:${}()[\\]|/\\\\])/g, \"\\\\$1\");\n}\n/**\n * Get the flags for a regexp from the options.\n */\nfunction flags(options) {\n return options && options.sensitive ? \"\" : \"i\";\n}\n/**\n * Pull out keys from a regexp.\n */\nfunction regexpToRegexp(path, keys) {\n if (!keys)\n return path;\n var groupsRegex = /\\((?:\\?<(.*?)>)?(?!\\?)/g;\n var index = 0;\n var execResult = groupsRegex.exec(path.source);\n while (execResult) {\n keys.push({\n // Use parenthesized substring match if available, index otherwise\n name: execResult[1] || index++,\n prefix: \"\",\n suffix: \"\",\n modifier: \"\",\n pattern: \"\"\n });\n execResult = groupsRegex.exec(path.source);\n }\n return path;\n}\n/**\n * Transform an array into a regexp.\n */\nfunction arrayToRegexp(paths, keys, options) {\n var parts = paths.map(function (path) { return pathToRegexp(path, keys, options).source; });\n return new RegExp(\"(?:\" + parts.join(\"|\") + \")\", flags(options));\n}\n/**\n * Create a path regexp from string input.\n */\nfunction stringToRegexp(path, keys, options) {\n return tokensToRegexp(parse(path, options), keys, options);\n}\n/**\n * Expose a function for taking tokens and returning a RegExp.\n */\nexport function tokensToRegexp(tokens, keys, options) {\n if (options === void 0) { options = {}; }\n var _a = options.strict, strict = _a === void 0 ? false : _a, _b = options.start, start = _b === void 0 ? true : _b, _c = options.end, end = _c === void 0 ? true : _c, _d = options.encode, encode = _d === void 0 ? function (x) { return x; } : _d;\n var endsWith = \"[\" + escapeString(options.endsWith || \"\") + \"]|$\";\n var delimiter = \"[\" + escapeString(options.delimiter || \"/#?\") + \"]\";\n var route = start ? \"^\" : \"\";\n // Iterate over the tokens and create our regexp string.\n for (var _i = 0, tokens_1 = tokens; _i < tokens_1.length; _i++) {\n var token = tokens_1[_i];\n if (typeof token === \"string\") {\n route += escapeString(encode(token));\n }\n else {\n var prefix = escapeString(encode(token.prefix));\n var suffix = escapeString(encode(token.suffix));\n if (token.pattern) {\n if (keys)\n keys.push(token);\n if (prefix || suffix) {\n if (token.modifier === \"+\" || token.modifier === \"*\") {\n var mod = token.modifier === \"*\" ? \"?\" : \"\";\n route += \"(?:\" + prefix + \"((?:\" + token.pattern + \")(?:\" + suffix + prefix + \"(?:\" + token.pattern + \"))*)\" + suffix + \")\" + mod;\n }\n else {\n route += \"(?:\" + prefix + \"(\" + token.pattern + \")\" + suffix + \")\" + token.modifier;\n }\n }\n else {\n route += \"(\" + token.pattern + \")\" + token.modifier;\n }\n }\n else {\n route += \"(?:\" + prefix + suffix + \")\" + token.modifier;\n }\n }\n }\n if (end) {\n if (!strict)\n route += delimiter + \"?\";\n route += !options.endsWith ? \"$\" : \"(?=\" + endsWith + \")\";\n }\n else {\n var endToken = tokens[tokens.length - 1];\n var isEndDelimited = typeof endToken === \"string\"\n ? delimiter.indexOf(endToken[endToken.length - 1]) > -1\n : // tslint:disable-next-line\n endToken === undefined;\n if (!strict) {\n route += \"(?:\" + delimiter + \"(?=\" + endsWith + \"))?\";\n }\n if (!isEndDelimited) {\n route += \"(?=\" + delimiter + \"|\" + endsWith + \")\";\n }\n }\n return new RegExp(route, flags(options));\n}\n/**\n * Normalize the given path string, returning a regular expression.\n *\n * An empty array can be passed in for the keys, which will hold the\n * placeholder key descriptions. For example, using `/user/:id`, `keys` will\n * contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`.\n */\nexport function pathToRegexp(path, keys, options) {\n if (path instanceof RegExp)\n return regexpToRegexp(path, keys);\n if (Array.isArray(path))\n return arrayToRegexp(path, keys, options);\n return stringToRegexp(path, keys, options);\n}\n//# sourceMappingURL=index.js.map","import { getWindow, getDocument } from 'ssr-window';\nimport $ from './dom7.js';\nimport { extend } from './utils.js';\n\nconst History = {\n queue: [],\n clearQueue() {\n if (History.queue.length === 0) return;\n const currentQueue = History.queue.shift();\n currentQueue();\n },\n routerQueue: [],\n clearRouterQueue() {\n if (History.routerQueue.length === 0) return;\n const currentQueue = History.routerQueue.pop();\n const { router, stateUrl, action } = currentQueue;\n\n let animate = router.params.animate;\n if (router.params.browserHistoryAnimate === false) animate = false;\n\n if (action === 'back') {\n router.back({ animate, browserHistory: false });\n }\n if (action === 'load') {\n router.navigate(stateUrl, { animate, browserHistory: false });\n }\n },\n handle(e) {\n if (History.blockPopstate) return;\n const app = this;\n // const mainView = app.views.main;\n let state = e.state;\n History.previousState = History.state;\n History.state = state;\n\n History.allowChange = true;\n History.clearQueue();\n\n state = History.state;\n if (!state) state = {};\n\n app.views.forEach((view) => {\n const router = view.router;\n let viewState = state[view.id];\n if (!viewState && view.params.browserHistory) {\n viewState = {\n url: view.router.history[0],\n };\n }\n if (!viewState) return;\n const stateUrl = viewState.url || undefined;\n\n let animate = router.params.animate;\n if (router.params.browserHistoryAnimate === false) animate = false;\n\n if (stateUrl !== router.url) {\n if (router.history.indexOf(stateUrl) >= 0) {\n // Go Back\n if (router.allowPageChange) {\n router.back({ animate, browserHistory: false });\n } else {\n History.routerQueue.push({\n action: 'back',\n router,\n });\n }\n } else if (router.allowPageChange) {\n // Load page\n router.navigate(stateUrl, { animate, browserHistory: false });\n } else {\n History.routerQueue.unshift({\n action: 'load',\n stateUrl,\n router,\n });\n }\n }\n });\n },\n initViewState(viewId, viewState) {\n const window = getWindow();\n const newState = extend({}, History.state || {}, {\n [viewId]: viewState,\n });\n History.state = newState;\n window.history.replaceState(newState, '');\n },\n push(viewId, viewState, url) {\n const window = getWindow();\n if (url.substr(-3) === '#!/') {\n // eslint-disable-next-line\n url = url.replace('#!/', '');\n }\n if (!History.allowChange) {\n History.queue.push(() => {\n History.push(viewId, viewState, url);\n });\n return;\n }\n History.previousState = History.state;\n const newState = extend({}, History.previousState || {}, {\n [viewId]: viewState,\n });\n History.state = newState;\n window.history.pushState(newState, '', url);\n },\n replace(viewId, viewState, url) {\n const window = getWindow();\n if (url.substr(-3) === '#!/') {\n // eslint-disable-next-line\n url = url.replace('#!/', '');\n }\n if (!History.allowChange) {\n History.queue.push(() => {\n History.replace(viewId, viewState, url);\n });\n return;\n }\n History.previousState = History.state;\n const newState = extend({}, History.previousState || {}, {\n [viewId]: viewState,\n });\n History.state = newState;\n window.history.replaceState(newState, '', url);\n },\n go(index) {\n const window = getWindow();\n History.allowChange = false;\n window.history.go(index);\n },\n back() {\n const window = getWindow();\n History.allowChange = false;\n window.history.back();\n },\n allowChange: true,\n previousState: {},\n state: {},\n blockPopstate: true,\n init(app) {\n const window = getWindow();\n const document = getDocument();\n History.state = window.history.state;\n $(window).on('load', () => {\n setTimeout(() => {\n History.blockPopstate = false;\n }, 0);\n });\n\n if (document.readyState && document.readyState === 'complete') {\n History.blockPopstate = false;\n }\n\n $(window).on('popstate', History.handle.bind(app));\n },\n};\n\nexport default History;\n","import $ from '../../shared/dom7.js';\nimport History from '../../shared/history.js';\nimport { getSupport } from '../../shared/get-support.js';\nimport { getDevice } from '../../shared/get-device.js';\nimport { now } from '../../shared/utils.js';\n\nfunction SwipeBack(r) {\n const router = r;\n const { $el, $navbarsEl, app, params } = router;\n const support = getSupport();\n const device = getDevice();\n let isTouched = false;\n let isMoved = false;\n const touchesStart = {};\n let isScrolling;\n let $currentPageEl = [];\n let $previousPageEl = [];\n let viewContainerWidth;\n let touchesDiff;\n let allowViewTouchMove = true;\n let touchStartTime;\n let $currentNavbarEl = [];\n let $previousNavbarEl = [];\n let dynamicNavbar;\n let $pageShadowEl;\n let $pageOpacityEl;\n\n let animatableNavEls;\n\n const paramsSwipeBackAnimateShadow = params[`${app.theme}SwipeBackAnimateShadow`];\n const paramsSwipeBackAnimateOpacity = params[`${app.theme}SwipeBackAnimateOpacity`];\n const paramsSwipeBackActiveArea = params[`${app.theme}SwipeBackActiveArea`];\n const paramsSwipeBackThreshold = params[`${app.theme}SwipeBackThreshold`];\n\n const transformOrigin = app.rtl ? 'right center' : 'left center';\n const transformOriginTitleLarge = app.rtl\n ? 'calc(100% - var(--f7-navbar-large-title-padding-left) - var(--f7-safe-area-left)) center'\n : 'calc(var(--f7-navbar-large-title-padding-left) + var(--f7-safe-area-left)) center';\n\n function animatableNavElements() {\n const els = [];\n const inverter = app.rtl ? -1 : 1;\n const currentNavIsTransparent =\n $currentNavbarEl.hasClass('navbar-transparent') &&\n !$currentNavbarEl.hasClass('navbar-large') &&\n !$currentNavbarEl.hasClass('navbar-transparent-visible');\n const currentNavIsLarge = $currentNavbarEl.hasClass('navbar-large');\n const currentNavIsCollapsed = $currentNavbarEl.hasClass('navbar-large-collapsed');\n const currentNavIsLargeTransparent =\n $currentNavbarEl.hasClass('navbar-large-transparent') ||\n ($currentNavbarEl.hasClass('navbar-large') &&\n $currentNavbarEl.hasClass('navbar-transparent'));\n const previousNavIsTransparent =\n $previousNavbarEl.hasClass('navbar-transparent') &&\n !$previousNavbarEl.hasClass('navbar-large') &&\n !$previousNavbarEl.hasClass('navbar-transparent-visible');\n const previousNavIsLarge = $previousNavbarEl.hasClass('navbar-large');\n const previousNavIsCollapsed = $previousNavbarEl.hasClass('navbar-large-collapsed');\n const previousNavIsLargeTransparent =\n $previousNavbarEl.hasClass('navbar-large-transparent') ||\n ($previousNavbarEl.hasClass('navbar-large') &&\n $previousNavbarEl.hasClass('navbar-transparent'));\n const fromLarge = currentNavIsLarge && !currentNavIsCollapsed;\n const toLarge = previousNavIsLarge && !previousNavIsCollapsed;\n const $currentNavElements = $currentNavbarEl.find(\n '.left, .title, .right, .subnavbar, .fading, .title-large, .navbar-bg',\n );\n const $previousNavElements = $previousNavbarEl.find(\n '.left, .title, .right, .subnavbar, .fading, .title-large, .navbar-bg',\n );\n let activeNavBackIconText;\n let previousNavBackIconText;\n\n if (params.iosAnimateNavbarBackIcon) {\n if (\n $currentNavbarEl.hasClass('sliding') ||\n $currentNavbarEl.find('.navbar-inner.sliding').length\n ) {\n activeNavBackIconText = $currentNavbarEl.find('.left').find('.back .icon + span').eq(0);\n } else {\n activeNavBackIconText = $currentNavbarEl\n .find('.left.sliding')\n .find('.back .icon + span')\n .eq(0);\n }\n if (\n $previousNavbarEl.hasClass('sliding') ||\n $previousNavbarEl.find('.navbar-inner.sliding').length\n ) {\n previousNavBackIconText = $previousNavbarEl.find('.left').find('.back .icon + span').eq(0);\n } else {\n previousNavBackIconText = $previousNavbarEl\n .find('.left.sliding')\n .find('.back .icon + span')\n .eq(0);\n }\n if (activeNavBackIconText.length) {\n $previousNavElements.each((el) => {\n if (!$(el).hasClass('title')) return;\n el.f7NavbarLeftOffset += activeNavBackIconText.prev('.icon')[0].offsetWidth;\n });\n }\n }\n $currentNavElements.each((navEl) => {\n const $navEl = $(navEl);\n const isSubnavbar = $navEl.hasClass('subnavbar');\n const isLeft = $navEl.hasClass('left');\n const isTitle = $navEl.hasClass('title');\n const isBg = $navEl.hasClass('navbar-bg');\n if ((isTitle || isBg) && currentNavIsTransparent) return;\n if (!fromLarge && $navEl.hasClass('.title-large')) return;\n const el = {\n el: navEl,\n };\n if (fromLarge) {\n if (isTitle) return;\n if ($navEl.hasClass('title-large')) {\n if (els.indexOf(el) < 0) els.push(el);\n el.overflow = 'visible';\n $navEl.find('.title-large-text').each((subNavEl) => {\n els.push({\n el: subNavEl,\n transform: (progress) => `translateX(${progress * 100 * inverter}%)`,\n });\n });\n return;\n }\n }\n if (toLarge) {\n if (!fromLarge) {\n if ($navEl.hasClass('title-large')) {\n if (els.indexOf(el) < 0) els.push(el);\n el.opacity = 0;\n }\n }\n if (isLeft) {\n if (els.indexOf(el) < 0) els.push(el);\n el.opacity = (progress) => 1 - progress ** 0.33;\n $navEl.find('.back span').each((subNavEl) => {\n els.push({\n el: subNavEl,\n 'transform-origin': transformOrigin,\n transform: (progress) =>\n `translateX(calc(${progress} * (var(--f7-navbarTitleLargeOffset) - var(--f7-navbarLeftTextOffset)))) translateY(calc(${progress} * (var(--f7-navbar-large-title-height) - var(--f7-navbar-large-title-padding-vertical) / 2))) scale(${\n 1 + 1 * progress\n })`,\n });\n });\n return;\n }\n }\n if (isBg) {\n if (els.indexOf(el) < 0) els.push(el);\n if (!fromLarge && !toLarge) {\n if (currentNavIsCollapsed) {\n if (currentNavIsLargeTransparent) {\n el.className = 'ios-swipeback-navbar-bg-large';\n }\n el.transform = (progress) =>\n `translateX(${\n 100 * progress * inverter\n }%) translateY(calc(-1 * var(--f7-navbar-large-title-height)))`;\n } else {\n el.transform = (progress) => `translateX(${100 * progress * inverter}%)`;\n }\n }\n if (!fromLarge && toLarge) {\n el.className = 'ios-swipeback-navbar-bg-large';\n el.transform = (progress) =>\n `translateX(${100 * progress * inverter}%) translateY(calc(-1 * ${\n 1 - progress\n } * var(--f7-navbar-large-title-height)))`;\n }\n if (fromLarge && toLarge) {\n el.transform = (progress) => `translateX(${100 * progress * inverter}%)`;\n }\n if (fromLarge && !toLarge) {\n el.transform = (progress) =>\n `translateX(${\n 100 * progress * inverter\n }%) translateY(calc(-${progress} * var(--f7-navbar-large-title-height)))`;\n }\n return;\n }\n if ($navEl.hasClass('title-large')) return;\n const isSliding =\n $navEl.hasClass('sliding') || $navEl.parents('.navbar-inner.sliding').length;\n if (els.indexOf(el) < 0) els.push(el);\n if (!isSubnavbar || (isSubnavbar && !isSliding)) {\n el.opacity = (progress) => 1 - progress ** 0.33;\n }\n if (isSliding) {\n let transformTarget = el;\n if (isLeft && activeNavBackIconText.length && params.iosAnimateNavbarBackIcon) {\n const textEl = { el: activeNavBackIconText[0] };\n transformTarget = textEl;\n els.push(textEl);\n }\n transformTarget.transform = (progress) => {\n let activeNavTranslate = progress * transformTarget.el.f7NavbarRightOffset;\n if (device.pixelRatio === 1) activeNavTranslate = Math.round(activeNavTranslate);\n if (isSubnavbar && currentNavIsLarge) {\n return `translate3d(${activeNavTranslate}px, calc(-1 * var(--f7-navbar-large-collapse-progress) * var(--f7-navbar-large-title-height)), 0)`;\n }\n return `translate3d(${activeNavTranslate}px,0,0)`;\n };\n }\n });\n $previousNavElements.each((navEl) => {\n const $navEl = $(navEl);\n const isSubnavbar = $navEl.hasClass('subnavbar');\n const isLeft = $navEl.hasClass('left');\n const isTitle = $navEl.hasClass('title');\n const isBg = $navEl.hasClass('navbar-bg');\n if ((isTitle || isBg) && previousNavIsTransparent) return;\n const el = {\n el: navEl,\n };\n if (toLarge) {\n if (isTitle) return;\n if (els.indexOf(el) < 0) els.push(el);\n\n if ($navEl.hasClass('title-large')) {\n el.opacity = 1;\n el.overflow = 'visible';\n $navEl.find('.title-large-text').each((subNavEl) => {\n els.push({\n el: subNavEl,\n 'transform-origin': transformOriginTitleLarge,\n opacity: (progress) => progress ** 3,\n transform: (progress) =>\n `translateX(calc(${\n 1 - progress\n } * (var(--f7-navbarLeftTextOffset) - var(--f7-navbarTitleLargeOffset)))) translateY(calc(${\n progress - 1\n } * var(--f7-navbar-large-title-height) + ${\n 1 - progress\n } * var(--f7-navbar-large-title-padding-vertical))) scale(${0.5 + progress * 0.5})`,\n });\n });\n return;\n }\n }\n if (isBg) {\n if (els.indexOf(el) < 0) els.push(el);\n if (!fromLarge && !toLarge) {\n if (previousNavIsCollapsed) {\n if (previousNavIsLargeTransparent) {\n el.className = 'ios-swipeback-navbar-bg-large';\n }\n el.transform = (progress) =>\n `translateX(${\n (-100 + 100 * progress) * inverter\n }%) translateY(calc(-1 * var(--f7-navbar-large-title-height)))`;\n } else {\n el.transform = (progress) => `translateX(${(-100 + 100 * progress) * inverter}%)`;\n }\n }\n if (!fromLarge && toLarge) {\n el.transform = (progress) =>\n `translateX(${(-100 + 100 * progress) * inverter}%) translateY(calc(-1 * ${\n 1 - progress\n } * var(--f7-navbar-large-title-height)))`;\n }\n if (fromLarge && !toLarge) {\n el.className = 'ios-swipeback-navbar-bg-large';\n el.transform = (progress) =>\n `translateX(${\n (-100 + 100 * progress) * inverter\n }%) translateY(calc(-${progress} * var(--f7-navbar-large-title-height)))`;\n }\n if (fromLarge && toLarge) {\n el.transform = (progress) => `translateX(${(-100 + 100 * progress) * inverter}%)`;\n }\n\n return;\n }\n if ($navEl.hasClass('title-large')) return;\n const isSliding =\n $navEl.hasClass('sliding') || $previousNavbarEl.children('.navbar-inner.sliding').length;\n if (els.indexOf(el) < 0) els.push(el);\n if (!isSubnavbar || (isSubnavbar && !isSliding)) {\n el.opacity = (progress) => progress ** 3;\n }\n if (isSliding) {\n let transformTarget = el;\n if (isLeft && previousNavBackIconText.length && params.iosAnimateNavbarBackIcon) {\n const textEl = { el: previousNavBackIconText[0] };\n transformTarget = textEl;\n els.push(textEl);\n }\n transformTarget.transform = (progress) => {\n let previousNavTranslate = transformTarget.el.f7NavbarLeftOffset * (1 - progress);\n if (device.pixelRatio === 1) previousNavTranslate = Math.round(previousNavTranslate);\n if (isSubnavbar && previousNavIsLarge) {\n return `translate3d(${previousNavTranslate}px, calc(-1 * var(--f7-navbar-large-collapse-progress) * var(--f7-navbar-large-title-height)), 0)`;\n }\n return `translate3d(${previousNavTranslate}px,0,0)`;\n };\n }\n });\n return els;\n }\n\n function setAnimatableNavElements({ progress, reset, transition, reflow } = {}) {\n const styles = ['overflow', 'transform', 'transform-origin', 'opacity'];\n if (transition === true || transition === false) {\n for (let i = 0; i < animatableNavEls.length; i += 1) {\n const el = animatableNavEls[i];\n if (el && el.el) {\n if (transition === true) el.el.classList.add('navbar-page-transitioning');\n if (transition === false) el.el.classList.remove('navbar-page-transitioning');\n }\n }\n }\n if (reflow && animatableNavEls.length && animatableNavEls[0] && animatableNavEls[0].el) {\n // eslint-disable-next-line\n animatableNavEls[0].el._clientLeft = animatableNavEls[0].el.clientLeft;\n }\n for (let i = 0; i < animatableNavEls.length; i += 1) {\n const el = animatableNavEls[i];\n if (el && el.el) {\n if (el.className && !el.classNameSet && !reset) {\n el.el.classList.add(el.className);\n el.classNameSet = true;\n }\n if (el.className && reset) {\n el.el.classList.remove(el.className);\n }\n for (let j = 0; j < styles.length; j += 1) {\n const styleProp = styles[j];\n if (el[styleProp]) {\n if (reset) {\n el.el.style[styleProp] = '';\n } else if (typeof el[styleProp] === 'function') {\n el.el.style[styleProp] = el[styleProp](progress);\n } else {\n el.el.style[styleProp] = el[styleProp];\n }\n }\n }\n }\n }\n }\n\n function handleTouchStart(e) {\n const swipeBackEnabled = params[`${app.theme}SwipeBack`];\n if (\n !allowViewTouchMove ||\n !swipeBackEnabled ||\n isTouched ||\n (app.swipeout && app.swipeout.el) ||\n !router.allowPageChange\n )\n return;\n if ($(e.target).closest('.range-slider, .calendar-months').length > 0) return;\n if (\n $(e.target).closest('.page-master, .page-master-detail').length > 0 &&\n params.masterDetailBreakpoint > 0 &&\n app.width >= params.masterDetailBreakpoint\n )\n return;\n isMoved = false;\n isTouched = true;\n isScrolling = undefined;\n touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n touchStartTime = now();\n dynamicNavbar = router.dynamicNavbar;\n }\n function handleTouchMove(e) {\n if (!isTouched) return;\n const pageX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n const pageY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n if (typeof isScrolling === 'undefined') {\n isScrolling =\n !!(isScrolling || Math.abs(pageY - touchesStart.y) > Math.abs(pageX - touchesStart.x)) ||\n (pageX < touchesStart.x && !app.rtl) ||\n (pageX > touchesStart.x && app.rtl);\n }\n if (isScrolling || e.f7PreventSwipeBack || app.preventSwipeBack) {\n isTouched = false;\n return;\n }\n if (!isMoved) {\n // Calc values during first move fired\n let cancel = false;\n const target = $(e.target);\n\n const swipeout = target.closest('.swipeout');\n if (swipeout.length > 0) {\n if (!app.rtl && swipeout.find('.swipeout-actions-left').length > 0) cancel = true;\n if (app.rtl && swipeout.find('.swipeout-actions-right').length > 0) cancel = true;\n }\n\n $currentPageEl = target.closest('.page');\n if (\n $currentPageEl.hasClass('no-swipeback') ||\n target.closest('.no-swipeback, .card-opened').length > 0\n )\n cancel = true;\n $previousPageEl = $el.find('.page-previous:not(.stacked)');\n if ($previousPageEl.length > 1) {\n $previousPageEl = $previousPageEl.eq($previousPageEl.length - 1);\n }\n let notFromBorder = touchesStart.x - $el.offset().left > paramsSwipeBackActiveArea;\n viewContainerWidth = $el.width();\n if (app.rtl) {\n notFromBorder =\n touchesStart.x <\n $el.offset().left - $el[0].scrollLeft + (viewContainerWidth - paramsSwipeBackActiveArea);\n } else {\n notFromBorder = touchesStart.x - $el.offset().left > paramsSwipeBackActiveArea;\n }\n if (notFromBorder) cancel = true;\n if ($previousPageEl.length === 0 || $currentPageEl.length === 0) cancel = true;\n if (cancel) {\n isTouched = false;\n return;\n }\n\n if (paramsSwipeBackAnimateShadow) {\n $pageShadowEl = $currentPageEl.find('.page-shadow-effect');\n if ($pageShadowEl.length === 0) {\n $pageShadowEl = $('<div class=\"page-shadow-effect\"></div>');\n $currentPageEl.append($pageShadowEl);\n }\n }\n if (paramsSwipeBackAnimateOpacity) {\n $pageOpacityEl = $previousPageEl.find('.page-opacity-effect');\n if ($pageOpacityEl.length === 0) {\n $pageOpacityEl = $('<div class=\"page-opacity-effect\"></div>');\n $previousPageEl.append($pageOpacityEl);\n }\n }\n\n if (dynamicNavbar) {\n $currentNavbarEl = $navbarsEl.find('.navbar-current:not(.stacked)');\n $previousNavbarEl = $navbarsEl.find('.navbar-previous:not(.stacked)');\n if ($previousNavbarEl.length > 1) {\n $previousNavbarEl = $previousNavbarEl.eq($previousNavbarEl.length - 1);\n }\n\n animatableNavEls = animatableNavElements($previousNavbarEl, $currentNavbarEl);\n }\n\n // Close/Hide Any Picker\n if ($('.sheet.modal-in').length > 0 && app.sheet) {\n app.sheet.close($('.sheet.modal-in'));\n }\n }\n e.f7PreventSwipePanel = true;\n isMoved = true;\n app.preventSwipePanelBySwipeBack = true;\n e.preventDefault();\n\n // RTL inverter\n const inverter = app.rtl ? -1 : 1;\n\n // Touches diff\n touchesDiff = (pageX - touchesStart.x - paramsSwipeBackThreshold) * inverter;\n if (touchesDiff < 0) touchesDiff = 0;\n const percentage = Math.min(Math.max(touchesDiff / viewContainerWidth, 0), 1);\n\n // Swipe Back Callback\n const callbackData = {\n percentage,\n progress: percentage,\n currentPageEl: $currentPageEl[0],\n previousPageEl: $previousPageEl[0],\n currentNavbarEl: $currentNavbarEl[0],\n previousNavbarEl: $previousNavbarEl[0],\n };\n $el.trigger('swipeback:move', callbackData);\n router.emit('swipebackMove', callbackData);\n\n // Transform pages\n let currentPageTranslate = touchesDiff * inverter;\n let previousPageTranslate = (touchesDiff / 5 - viewContainerWidth / 5) * inverter;\n if (!app.rtl) {\n currentPageTranslate = Math.min(currentPageTranslate, viewContainerWidth);\n previousPageTranslate = Math.min(previousPageTranslate, 0);\n } else {\n currentPageTranslate = Math.max(currentPageTranslate, -viewContainerWidth);\n previousPageTranslate = Math.max(previousPageTranslate, 0);\n }\n if (device.pixelRatio === 1) {\n currentPageTranslate = Math.round(currentPageTranslate);\n previousPageTranslate = Math.round(previousPageTranslate);\n }\n\n router.swipeBackActive = true;\n $([$currentPageEl[0], $previousPageEl[0]]).addClass('page-swipeback-active');\n\n $currentPageEl.transform(`translate3d(${currentPageTranslate}px,0,0)`);\n if (paramsSwipeBackAnimateShadow) $pageShadowEl[0].style.opacity = 1 - 1 * percentage;\n\n if (app.theme === 'ios') {\n $previousPageEl.transform(`translate3d(${previousPageTranslate}px,0,0)`);\n }\n if (paramsSwipeBackAnimateOpacity) $pageOpacityEl[0].style.opacity = 1 - 1 * percentage;\n\n // Dynamic Navbars Animation\n if (!dynamicNavbar) return;\n\n setAnimatableNavElements({ progress: percentage });\n }\n function handleTouchEnd() {\n app.preventSwipePanelBySwipeBack = false;\n if (!isTouched || !isMoved) {\n isTouched = false;\n isMoved = false;\n return;\n }\n isTouched = false;\n isMoved = false;\n router.swipeBackActive = false;\n const $pages = $([$currentPageEl[0], $previousPageEl[0]]);\n $pages.removeClass('page-swipeback-active');\n if (touchesDiff === 0) {\n $pages.transform('');\n if ($pageShadowEl && $pageShadowEl.length > 0) $pageShadowEl.remove();\n if ($pageOpacityEl && $pageOpacityEl.length > 0) $pageOpacityEl.remove();\n if (dynamicNavbar) {\n setAnimatableNavElements({ reset: true });\n }\n return;\n }\n const timeDiff = now() - touchStartTime;\n let pageChanged = false;\n // Swipe back to previous page\n if (\n (timeDiff < 300 && touchesDiff > 10) ||\n (timeDiff >= 300 && touchesDiff > viewContainerWidth / 2)\n ) {\n $currentPageEl\n .removeClass('page-current')\n .addClass(`page-next${app.theme !== 'ios' ? ' page-next-on-right' : ''}`);\n $previousPageEl\n .removeClass('page-previous')\n .addClass('page-current')\n .removeAttr('aria-hidden');\n if ($pageShadowEl) $pageShadowEl[0].style.opacity = '';\n if ($pageOpacityEl) $pageOpacityEl[0].style.opacity = '';\n if (dynamicNavbar) {\n router.setNavbarPosition($currentNavbarEl, 'next');\n router.setNavbarPosition($previousNavbarEl, 'current', false);\n }\n pageChanged = true;\n }\n // Reset custom styles\n // Add transitioning class for transition-duration\n $pages.addClass('page-transitioning page-transitioning-swipeback');\n if (device.ios) {\n // eslint-disable-next-line\n $currentPageEl[0]._clientLeft = $currentPageEl[0].clientLeft;\n }\n $pages.transform('');\n\n if (dynamicNavbar) {\n setAnimatableNavElements({\n progress: pageChanged ? 1 : 0,\n transition: true,\n reflow: !!device.ios,\n });\n }\n allowViewTouchMove = false;\n router.allowPageChange = false;\n\n // Swipe Back Callback\n const callbackData = {\n currentPageEl: $currentPageEl[0],\n previousPageEl: $previousPageEl[0],\n currentNavbarEl: $currentNavbarEl[0],\n previousNavbarEl: $previousNavbarEl[0],\n };\n\n if (pageChanged) {\n // Update Route\n router.currentRoute = $previousPageEl[0].f7Page.route;\n router.currentPage = $previousPageEl[0];\n\n // Page before animation callback\n router.pageCallback('beforeOut', $currentPageEl, $currentNavbarEl, 'current', 'next', {\n route: $currentPageEl[0].f7Page.route,\n swipeBack: true,\n });\n router.pageCallback(\n 'beforeIn',\n $previousPageEl,\n $previousNavbarEl,\n 'previous',\n 'current',\n { route: $previousPageEl[0].f7Page.route, swipeBack: true },\n $currentPageEl[0],\n );\n\n $el.trigger('swipeback:beforechange', callbackData);\n router.emit('swipebackBeforeChange', callbackData);\n } else {\n $el.trigger('swipeback:beforereset', callbackData);\n router.emit('swipebackBeforeReset', callbackData);\n }\n\n $currentPageEl.transitionEnd(() => {\n $pages.removeClass('page-transitioning page-transitioning-swipeback');\n if (dynamicNavbar) {\n setAnimatableNavElements({ reset: true, transition: false });\n }\n allowViewTouchMove = true;\n router.allowPageChange = true;\n if (pageChanged) {\n // Update History\n if (router.history.length === 1) {\n router.history.unshift(router.url);\n }\n router.history.pop();\n router.saveHistory();\n\n // Update push state\n if (params.browserHistory) {\n History.back();\n }\n\n // Page after animation callback\n router.pageCallback('afterOut', $currentPageEl, $currentNavbarEl, 'current', 'next', {\n route: $currentPageEl[0].f7Page.route,\n swipeBack: true,\n });\n router.pageCallback('afterIn', $previousPageEl, $previousNavbarEl, 'previous', 'current', {\n route: $previousPageEl[0].f7Page.route,\n swipeBack: true,\n });\n\n // Remove Old Page\n if (params.stackPages && router.initialPages.indexOf($currentPageEl[0]) >= 0) {\n $currentPageEl.addClass('stacked');\n if (dynamicNavbar) {\n $currentNavbarEl.addClass('stacked');\n }\n } else {\n router.pageCallback('beforeRemove', $currentPageEl, $currentNavbarEl, 'next', {\n swipeBack: true,\n });\n router.removePage($currentPageEl);\n if (dynamicNavbar) {\n router.removeNavbar($currentNavbarEl);\n }\n }\n\n $el.trigger('swipeback:afterchange', callbackData);\n router.emit('swipebackAfterChange', callbackData);\n\n router.emit('routeChanged', router.currentRoute, router.previousRoute, router);\n\n if (params.preloadPreviousPage) {\n router.back(router.history[router.history.length - 2], { preload: true });\n }\n } else {\n $el.trigger('swipeback:afterreset', callbackData);\n router.emit('swipebackAfterReset', callbackData);\n }\n if ($pageShadowEl && $pageShadowEl.length > 0) $pageShadowEl.remove();\n if ($pageOpacityEl && $pageOpacityEl.length > 0) $pageOpacityEl.remove();\n });\n }\n\n function attachEvents() {\n const passiveListener =\n app.touchEvents.start === 'touchstart' && support.passiveListener\n ? { passive: true, capture: false }\n : false;\n $el.on(app.touchEvents.start, handleTouchStart, passiveListener);\n app.on('touchmove:active', handleTouchMove);\n app.on('touchend:passive', handleTouchEnd);\n }\n function detachEvents() {\n const passiveListener =\n app.touchEvents.start === 'touchstart' && support.passiveListener\n ? { passive: true, capture: false }\n : false;\n $el.off(app.touchEvents.start, handleTouchStart, passiveListener);\n app.off('touchmove:active', handleTouchMove);\n app.off('touchend:passive', handleTouchEnd);\n }\n\n attachEvents();\n\n router.on('routerDestroy', detachEvents);\n}\n\nexport default SwipeBack;\n","import { extend } from '../../shared/utils.js';\n\nexport default function redirect(direction, route, options) {\n const router = this;\n const r = route.route.redirect;\n const method = direction === 'forward' ? 'navigate' : 'back';\n if (options.initial && router.params.browserHistory) {\n options.replaceState = true; // eslint-disable-line\n options.history = true; // eslint-disable-line\n }\n function redirectResolve(redirectUrl, redirectOptions = {}) {\n router.allowPageChange = true;\n router[method](redirectUrl, extend({}, options, redirectOptions));\n }\n function redirectReject() {\n router.allowPageChange = true;\n }\n if (typeof r === 'function') {\n router.allowPageChange = false;\n const redirectUrl = r.call(router, {\n router,\n to: route,\n resolve: redirectResolve,\n reject: redirectReject,\n direction,\n app: router.app,\n });\n if (redirectUrl && typeof redirectUrl === 'string') {\n router.allowPageChange = true;\n return router[method](redirectUrl, options);\n }\n return router;\n }\n return router[method](r, options);\n}\n","function processQueue(router, routerQueue, routeQueue, to, from, resolve, reject, direction) {\n const queue = [];\n\n if (Array.isArray(routeQueue)) {\n queue.push(...routeQueue);\n } else if (routeQueue && typeof routeQueue === 'function') {\n queue.push(routeQueue);\n }\n if (routerQueue) {\n if (Array.isArray(routerQueue)) {\n queue.push(...routerQueue);\n } else {\n queue.push(routerQueue);\n }\n }\n\n function next() {\n if (queue.length === 0) {\n resolve();\n return;\n }\n const queueItem = queue.shift();\n\n queueItem.call(router, {\n router,\n to,\n from,\n resolve() {\n next();\n },\n reject() {\n reject();\n },\n direction,\n app: router.app,\n });\n }\n next();\n}\n\nexport default function processRouteQueue(to, from, resolve, reject, direction) {\n const router = this;\n function enterNextRoute() {\n if (to && to.route && (router.params.routesBeforeEnter || to.route.beforeEnter)) {\n router.allowPageChange = false;\n processQueue(\n router,\n router.params.routesBeforeEnter,\n to.route.beforeEnter,\n to,\n from,\n () => {\n router.allowPageChange = true;\n resolve();\n },\n () => {\n reject();\n },\n direction,\n );\n } else {\n resolve();\n }\n }\n function leaveCurrentRoute() {\n if (from && from.route && (router.params.routesBeforeLeave || from.route.beforeLeave)) {\n router.allowPageChange = false;\n processQueue(\n router,\n router.params.routesBeforeLeave,\n from.route.beforeLeave,\n to,\n from,\n () => {\n router.allowPageChange = true;\n enterNextRoute();\n },\n () => {\n reject();\n },\n direction,\n );\n } else {\n enterNextRoute();\n }\n }\n leaveCurrentRoute();\n}\n","export default function appRouterCheck(router, method) {\n if (!router.view) {\n throw new Error(\n `Framework7: it is not allowed to use router methods on global app router. Use router methods only on related View, e.g. app.views.main.router.${method}(...)`,\n );\n }\n}\n","export default function asyncComponent(router, component, resolve, reject) {\n function resolvePromise(componentPromise) {\n componentPromise\n .then((c) => {\n // eslint-disable-next-line\n resolve({ component: c.default || c._default || c });\n })\n .catch((err) => {\n reject();\n throw new Error(err);\n });\n }\n if (component instanceof Promise) {\n resolvePromise(component);\n return;\n }\n const asyncComponentResult = component.call(router);\n if (asyncComponentResult instanceof Promise) {\n resolvePromise(asyncComponentResult);\n } else {\n resolve({ component: asyncComponentResult });\n }\n}\n","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { extend, parseUrlQuery } from '../../shared/utils.js';\nimport History from '../../shared/history.js';\nimport redirect from './redirect.js';\nimport processRouteQueue from './process-route-queue.js';\nimport appRouterCheck from './app-router-check.js';\nimport asyncComponent from './async-component.js';\n\nfunction refreshPage() {\n const router = this;\n appRouterCheck(router, 'refreshPage');\n return router.navigate(router.currentRoute.url, {\n ignoreCache: true,\n reloadCurrent: true,\n });\n}\n\nfunction forward(router, el, forwardOptions = {}) {\n const document = getDocument();\n const $el = $(el);\n const app = router.app;\n const view = router.view;\n const options = extend(\n false,\n {\n animate: router.params.animate,\n browserHistory: true,\n replaceState: false,\n history: true,\n reloadCurrent: router.params.reloadPages,\n reloadPrevious: false,\n reloadAll: false,\n clearPreviousHistory: false,\n reloadDetail: router.params.reloadDetail,\n on: {},\n },\n forwardOptions,\n );\n\n const masterDetailEnabled = router.params.masterDetailBreakpoint > 0;\n const isMaster =\n masterDetailEnabled &&\n options.route &&\n options.route.route &&\n (options.route.route.master === true ||\n (typeof options.route.route.master === 'function' &&\n options.route.route.master(app, router)));\n\n let masterPageEl;\n let otherDetailPageEl;\n let detailsInBetweenRemoved = 0;\n\n let currentRouteIsModal = router.currentRoute.modal;\n let modalType;\n if (!currentRouteIsModal) {\n 'popup popover sheet loginScreen actions customModal panel'\n .split(' ')\n .forEach((modalLoadProp) => {\n if (\n router.currentRoute &&\n router.currentRoute.route &&\n router.currentRoute.route[modalLoadProp]\n ) {\n currentRouteIsModal = true;\n modalType = modalLoadProp;\n }\n });\n }\n\n if (currentRouteIsModal) {\n const modalToClose =\n router.currentRoute.modal || router.currentRoute.route.modalInstance || app[modalType].get();\n const previousUrl = router.history[router.history.length - 2];\n let previousRoute = router.findMatchingRoute(previousUrl);\n if (!previousRoute && previousUrl) {\n previousRoute = {\n url: previousUrl,\n path: previousUrl.split('?')[0],\n query: parseUrlQuery(previousUrl),\n route: {\n path: previousUrl.split('?')[0],\n url: previousUrl,\n },\n };\n }\n\n router.modalRemove(modalToClose);\n }\n\n const dynamicNavbar = router.dynamicNavbar;\n\n const $viewEl = router.$el;\n const $newPage = $el;\n const reload = options.reloadPrevious || options.reloadCurrent || options.reloadAll;\n let $oldPage;\n\n let $navbarsEl;\n let $newNavbarEl;\n let $oldNavbarEl;\n\n router.allowPageChange = false;\n if ($newPage.length === 0) {\n router.allowPageChange = true;\n return router;\n }\n\n if ($newPage.length) {\n // Remove theme elements\n router.removeThemeElements($newPage);\n }\n\n if (dynamicNavbar) {\n $newNavbarEl = $newPage.children('.navbar');\n $navbarsEl = router.$navbarsEl;\n if ($newNavbarEl.length === 0 && $newPage[0] && $newPage[0].f7Page) {\n // Try from pageData\n $newNavbarEl = $newPage[0].f7Page.$navbarEl;\n }\n }\n\n // Save Keep Alive Cache\n if (\n options.route &&\n options.route.route &&\n options.route.route.keepAlive &&\n !options.route.route.keepAliveData\n ) {\n options.route.route.keepAliveData = {\n pageEl: $el[0],\n };\n }\n\n // Pages In View\n const $pagesInView = $viewEl\n .children('.page:not(.stacked)')\n .filter((pageInView) => pageInView !== $newPage[0]);\n\n // Navbars In View\n let $navbarsInView;\n if (dynamicNavbar) {\n $navbarsInView = $navbarsEl\n .children('.navbar:not(.stacked)')\n .filter((navbarInView) => navbarInView !== $newNavbarEl[0]);\n }\n\n // Exit when reload previous and only 1 page in view so nothing ro reload\n if (options.reloadPrevious && $pagesInView.length < 2) {\n router.allowPageChange = true;\n return router;\n }\n\n // Find Detail' master page\n let isDetail;\n let reloadDetail;\n let isDetailRoot;\n if (masterDetailEnabled && !options.reloadAll) {\n for (let i = 0; i < $pagesInView.length; i += 1) {\n if (!masterPageEl && $pagesInView[i].classList.contains('page-master')) {\n masterPageEl = $pagesInView[i];\n continue; // eslint-disable-line\n }\n }\n isDetail = !isMaster && masterPageEl;\n\n if (isDetail) {\n // Find Other Detail\n if (masterPageEl) {\n for (let i = 0; i < $pagesInView.length; i += 1) {\n if ($pagesInView[i].classList.contains('page-master-detail')) {\n otherDetailPageEl = $pagesInView[i];\n continue; // eslint-disable-line\n }\n }\n }\n }\n reloadDetail =\n isDetail &&\n options.reloadDetail &&\n app.width >= router.params.masterDetailBreakpoint &&\n masterPageEl;\n }\n if (isDetail) {\n isDetailRoot = !otherDetailPageEl || reloadDetail || options.reloadAll || options.reloadCurrent;\n }\n\n // New Page\n let newPagePosition = 'next';\n if (options.reloadCurrent || options.reloadAll || reloadDetail) {\n newPagePosition = 'current';\n } else if (options.reloadPrevious) {\n newPagePosition = 'previous';\n }\n $newPage\n .removeClass('page-previous page-current page-next')\n .addClass(\n `page-${newPagePosition}${isMaster ? ' page-master' : ''}${\n isDetail ? ' page-master-detail' : ''\n }${isDetailRoot ? ' page-master-detail-root' : ''}`,\n )\n .removeClass('stacked')\n .trigger('page:unstack')\n .trigger('page:position', { position: newPagePosition });\n router.emit('pageUnstack', $newPage[0]);\n router.emit('pagePosition', $newPage[0], newPagePosition);\n\n if (isMaster || isDetail) {\n $newPage.trigger('page:role', { role: isMaster ? 'master' : 'detail', root: !!isDetailRoot });\n router.emit('pageRole', $newPage[0], {\n role: isMaster ? 'master' : 'detail',\n detailRoot: !!isDetailRoot,\n });\n }\n\n if (dynamicNavbar && $newNavbarEl.length) {\n $newNavbarEl\n .removeClass('navbar-previous navbar-current navbar-next')\n .addClass(\n `navbar-${newPagePosition}${isMaster ? ' navbar-master' : ''}${\n isDetail ? ' navbar-master-detail' : ''\n }${isDetailRoot ? ' navbar-master-detail-root' : ''}`,\n )\n .removeClass('stacked');\n $newNavbarEl.trigger('navbar:position', { position: newPagePosition });\n router.emit('navbarPosition', $newNavbarEl[0], newPagePosition);\n if (isMaster || isDetail) {\n router.emit('navbarRole', $newNavbarEl[0], {\n role: isMaster ? 'master' : 'detail',\n detailRoot: !!isDetailRoot,\n });\n }\n }\n\n // Find Old Page\n if (options.reloadCurrent || reloadDetail) {\n if (reloadDetail) {\n $oldPage = $pagesInView.filter((pageEl) => !pageEl.classList.contains('page-master'));\n if (dynamicNavbar) {\n $oldNavbarEl = $($oldPage.map((pageEl) => app.navbar.getElByPage(pageEl)));\n }\n if ($oldPage.length > 1 && masterPageEl) {\n detailsInBetweenRemoved = $oldPage.length - 1;\n $(masterPageEl).removeClass('page-master-stacked').trigger('page:masterunstack');\n router.emit('pageMasterUnstack', masterPageEl);\n if (dynamicNavbar) {\n $(app.navbar.getElByPage(masterPageEl)).removeClass('navbar-master-stacked');\n router.emit('navbarMasterUnstack', app.navbar.getElByPage(masterPageEl));\n }\n }\n } else {\n $oldPage = $pagesInView.eq($pagesInView.length - 1);\n if (dynamicNavbar) {\n $oldNavbarEl = $(app.navbar.getElByPage($oldPage));\n }\n }\n } else if (options.reloadPrevious) {\n $oldPage = $pagesInView.eq($pagesInView.length - 2);\n if (dynamicNavbar) {\n // $oldNavbarEl = $navbarsInView.eq($pagesInView.length - 2);\n $oldNavbarEl = $(app.navbar.getElByPage($oldPage));\n }\n } else if (options.reloadAll) {\n $oldPage = $pagesInView.filter((pageEl) => pageEl !== $newPage[0]);\n if (dynamicNavbar) {\n $oldNavbarEl = $navbarsInView.filter((navbarEl) => navbarEl !== $newNavbarEl[0]);\n }\n } else {\n let removedPageEls = [];\n let removedNavbarEls = [];\n if ($pagesInView.length > 1) {\n let i = 0;\n for (i = 0; i < $pagesInView.length - 1; i += 1) {\n if (masterPageEl && $pagesInView[i] === masterPageEl) {\n $pagesInView.eq(i).addClass('page-master-stacked');\n $pagesInView.eq(i).trigger('page:masterstack');\n router.emit('pageMasterStack', $pagesInView[i]);\n if (dynamicNavbar) {\n $(app.navbar.getElByPage(masterPageEl)).addClass('navbar-master-stacked');\n router.emit('navbarMasterStack', app.navbar.getElByPage(masterPageEl));\n }\n continue; // eslint-disable-line\n }\n const oldNavbarEl = app.navbar.getElByPage($pagesInView.eq(i));\n if (router.params.stackPages) {\n $pagesInView.eq(i).addClass('stacked');\n $pagesInView.eq(i).trigger('page:stack');\n router.emit('pageStack', $pagesInView[i]);\n if (dynamicNavbar) {\n $(oldNavbarEl).addClass('stacked');\n }\n } else {\n // Page remove event\n removedPageEls.push($pagesInView[i]);\n router.pageCallback(\n 'beforeRemove',\n $pagesInView[i],\n $navbarsInView && $navbarsInView[i],\n 'previous',\n undefined,\n options,\n );\n router.removePage($pagesInView[i]);\n if (dynamicNavbar && oldNavbarEl) {\n removedNavbarEls.push(oldNavbarEl);\n router.removeNavbar(oldNavbarEl);\n }\n }\n }\n }\n $oldPage = $viewEl\n .children('.page:not(.stacked)')\n .filter((pageEl) => pageEl !== $newPage[0] && removedPageEls.indexOf(pageEl) < 0);\n if (dynamicNavbar) {\n $oldNavbarEl = $navbarsEl\n .children('.navbar:not(.stacked)')\n .filter(\n (navbarEl) =>\n navbarEl !== $newNavbarEl[0] && removedNavbarEls.indexOf(removedNavbarEls) < 0,\n );\n }\n removedPageEls = [];\n removedNavbarEls = [];\n }\n\n if (isDetail && !options.reloadAll) {\n if ($oldPage.length > 1 || reloadDetail) {\n $oldPage = $oldPage.filter((pageEl) => !pageEl.classList.contains('page-master'));\n }\n if ($oldNavbarEl && ($oldNavbarEl.length > 1 || reloadDetail)) {\n $oldNavbarEl = $oldNavbarEl.filter(\n (navbarEl) => !navbarEl.classList.contains('navbar-master'),\n );\n }\n }\n\n // Push State\n if (\n router.params.browserHistory &&\n (options.browserHistory || options.replaceState) &&\n !options.reloadPrevious\n ) {\n const browserHistoryRoot = router.params.browserHistoryRoot || '';\n History[\n options.reloadCurrent ||\n (reloadDetail && otherDetailPageEl) ||\n options.reloadAll ||\n options.replaceState\n ? 'replace'\n : 'push'\n ](\n view.id,\n {\n url: options.route.url,\n },\n browserHistoryRoot + router.params.browserHistorySeparator + options.route.url,\n );\n }\n\n if (!options.reloadPrevious) {\n // Current Page & Navbar\n router.currentPageEl = $newPage[0];\n if (dynamicNavbar && $newNavbarEl.length) {\n router.currentNavbarEl = $newNavbarEl[0];\n } else {\n delete router.currentNavbarEl;\n }\n\n // Current Route\n router.currentRoute = options.route;\n }\n\n // Update router history\n const url = options.route.url;\n\n if (options.history) {\n if (\n ((options.reloadCurrent || (reloadDetail && otherDetailPageEl)) && router.history.length) >\n 0 ||\n options.replaceState\n ) {\n if (reloadDetail && detailsInBetweenRemoved > 0) {\n router.history = router.history.slice(0, router.history.length - detailsInBetweenRemoved);\n }\n router.history[router.history.length - (options.reloadPrevious ? 2 : 1)] = url;\n } else if (options.reloadPrevious) {\n router.history[router.history.length - 2] = url;\n } else if (options.reloadAll) {\n router.history = [url];\n } else {\n router.history.push(url);\n }\n }\n router.saveHistory();\n\n // Insert new page and navbar\n const newPageInDom = $newPage.parents(document).length > 0;\n const f7Component = $newPage[0].f7Component;\n if (options.reloadPrevious) {\n if (f7Component && !newPageInDom) {\n f7Component.mount((componentEl) => {\n $(componentEl).insertBefore($oldPage);\n });\n } else {\n $newPage.insertBefore($oldPage);\n }\n if (dynamicNavbar && $newNavbarEl.length) {\n if ($newNavbarEl.find('.title-large').length) {\n $newNavbarEl.addClass('navbar-large');\n }\n if ($oldNavbarEl.length) {\n $newNavbarEl.insertBefore($oldNavbarEl);\n } else {\n if (!router.$navbarsEl.parents(document).length) {\n router.$el.prepend(router.$navbarsEl);\n }\n $navbarsEl.append($newNavbarEl);\n }\n }\n } else {\n if ($oldPage.next('.page')[0] !== $newPage[0]) {\n if (f7Component && !newPageInDom) {\n f7Component.mount((componentEl) => {\n $viewEl.append(componentEl);\n });\n } else {\n $viewEl.append($newPage[0]);\n }\n }\n if (dynamicNavbar && $newNavbarEl.length) {\n if ($newNavbarEl.find('.title-large').length) {\n $newNavbarEl.addClass('navbar-large');\n }\n if (!router.$navbarsEl.parents(document).length) {\n router.$el.prepend(router.$navbarsEl);\n }\n $navbarsEl.append($newNavbarEl[0]);\n }\n }\n if (!newPageInDom) {\n router.pageCallback(\n 'mounted',\n $newPage,\n $newNavbarEl,\n newPagePosition,\n reload ? newPagePosition : 'current',\n options,\n $oldPage,\n );\n } else if (\n options.route &&\n options.route.route &&\n options.route.route.keepAlive &&\n !$newPage[0].f7PageMounted\n ) {\n $newPage[0].f7PageMounted = true;\n router.pageCallback(\n 'mounted',\n $newPage,\n $newNavbarEl,\n newPagePosition,\n reload ? newPagePosition : 'current',\n options,\n $oldPage,\n );\n }\n\n // Remove old page\n if ((options.reloadCurrent || reloadDetail) && $oldPage.length > 0) {\n if (router.params.stackPages && router.initialPages.indexOf($oldPage[0]) >= 0) {\n $oldPage.addClass('stacked');\n $oldPage.trigger('page:stack');\n router.emit('pageStack', $oldPage[0]);\n if (dynamicNavbar) {\n $oldNavbarEl.addClass('stacked');\n }\n } else {\n // Page remove event\n router.pageCallback('beforeOut', $oldPage, $oldNavbarEl, 'current', undefined, options);\n router.pageCallback('afterOut', $oldPage, $oldNavbarEl, 'current', undefined, options);\n router.pageCallback('beforeRemove', $oldPage, $oldNavbarEl, 'current', undefined, options);\n router.removePage($oldPage);\n if (dynamicNavbar && $oldNavbarEl && $oldNavbarEl.length) {\n router.removeNavbar($oldNavbarEl);\n }\n }\n } else if (options.reloadAll) {\n $oldPage.each((pageEl, index) => {\n const $oldPageEl = $(pageEl);\n const $oldNavbarElEl = $(app.navbar.getElByPage($oldPageEl));\n if (router.params.stackPages && router.initialPages.indexOf($oldPageEl[0]) >= 0) {\n $oldPageEl.addClass('stacked');\n $oldPageEl.trigger('page:stack');\n router.emit('pageStack', $oldPageEl[0]);\n if (dynamicNavbar) {\n $oldNavbarElEl.addClass('stacked');\n }\n } else {\n // Page remove event\n if ($oldPageEl.hasClass('page-current')) {\n router.pageCallback('beforeOut', $oldPage, $oldNavbarEl, 'current', undefined, options);\n router.pageCallback('afterOut', $oldPage, $oldNavbarEl, 'current', undefined, options);\n }\n router.pageCallback(\n 'beforeRemove',\n $oldPageEl,\n $oldNavbarEl && $oldNavbarEl.eq(index),\n 'previous',\n undefined,\n options,\n );\n router.removePage($oldPageEl);\n if (dynamicNavbar && $oldNavbarElEl.length) {\n router.removeNavbar($oldNavbarElEl);\n }\n }\n });\n } else if (options.reloadPrevious) {\n if (router.params.stackPages && router.initialPages.indexOf($oldPage[0]) >= 0) {\n $oldPage.addClass('stacked');\n $oldPage.trigger('page:stack');\n router.emit('pageStack', $oldPage[0]);\n if (dynamicNavbar) {\n $oldNavbarEl.addClass('stacked');\n }\n } else {\n // Page remove event\n router.pageCallback('beforeRemove', $oldPage, $oldNavbarEl, 'previous', undefined, options);\n router.removePage($oldPage);\n if (dynamicNavbar && $oldNavbarEl && $oldNavbarEl.length) {\n router.removeNavbar($oldNavbarEl);\n }\n }\n }\n\n // Load Tab\n if (options.route.route.tab) {\n router.tabLoad(\n options.route.route.tab,\n extend({}, options, {\n history: false,\n browserHistory: false,\n }),\n );\n }\n\n // Check master detail\n if (masterDetailEnabled) {\n view.checkMasterDetailBreakpoint();\n }\n\n // Page init and before init events\n router.pageCallback(\n 'init',\n $newPage,\n $newNavbarEl,\n newPagePosition,\n reload ? newPagePosition : 'current',\n options,\n $oldPage,\n );\n\n if (options.reloadCurrent || options.reloadAll || reloadDetail) {\n router.allowPageChange = true;\n router.pageCallback('beforeIn', $newPage, $newNavbarEl, newPagePosition, 'current', options);\n $newPage.removeAttr('aria-hidden');\n if (dynamicNavbar && $newNavbarEl) {\n $newNavbarEl.removeAttr('aria-hidden');\n }\n router.pageCallback('afterIn', $newPage, $newNavbarEl, newPagePosition, 'current', options);\n if (options.reloadCurrent && options.clearPreviousHistory) router.clearPreviousHistory();\n if (reloadDetail) {\n router.setPagePosition($(masterPageEl), 'previous');\n if (masterPageEl.f7Page && masterPageEl.f7Page.navbarEl) {\n router.setNavbarPosition($(masterPageEl.f7Page.navbarEl), 'previous');\n }\n }\n return router;\n }\n if (options.reloadPrevious) {\n router.allowPageChange = true;\n return router;\n }\n\n // Before animation event\n router.pageCallback('beforeOut', $oldPage, $oldNavbarEl, 'current', 'previous', options);\n router.pageCallback('beforeIn', $newPage, $newNavbarEl, 'next', 'current', options);\n\n // Animation\n function afterAnimation() {\n router.setPagePosition($newPage, 'current', false);\n router.setPagePosition($oldPage, 'previous', !$oldPage.hasClass('page-master'));\n if (dynamicNavbar) {\n router.setNavbarPosition($newNavbarEl, 'current', false);\n router.setNavbarPosition($oldNavbarEl, 'previous', !$oldNavbarEl.hasClass('navbar-master'));\n }\n // After animation event\n router.allowPageChange = true;\n router.pageCallback('afterOut', $oldPage, $oldNavbarEl, 'current', 'previous', options);\n router.pageCallback('afterIn', $newPage, $newNavbarEl, 'next', 'current', options);\n\n let keepOldPage =\n (router.params.preloadPreviousPage || router.params[`${app.theme}SwipeBack`]) && !isMaster;\n if (!keepOldPage) {\n if (\n $newPage.hasClass('smart-select-page') ||\n $newPage.hasClass('photo-browser-page') ||\n $newPage.hasClass('autocomplete-page') ||\n $newPage.hasClass('color-picker-page')\n ) {\n keepOldPage = true;\n }\n }\n if (!keepOldPage) {\n if (router.params.stackPages) {\n $oldPage.addClass('stacked');\n $oldPage.trigger('page:stack');\n router.emit('pageStack', $oldPage[0]);\n if (dynamicNavbar) {\n $oldNavbarEl.addClass('stacked');\n }\n } else if (\n !($newPage.attr('data-name') && $newPage.attr('data-name') === 'smart-select-page')\n ) {\n // Remove event\n router.pageCallback('beforeRemove', $oldPage, $oldNavbarEl, 'previous', undefined, options);\n router.removePage($oldPage);\n if (dynamicNavbar && $oldNavbarEl.length) {\n router.removeNavbar($oldNavbarEl);\n }\n }\n }\n if (options.clearPreviousHistory) router.clearPreviousHistory();\n router.emit('routeChanged', router.currentRoute, router.previousRoute, router);\n\n if (router.params.browserHistory) {\n History.clearRouterQueue();\n }\n }\n function setPositionClasses() {\n router.setPagePosition($oldPage, 'current', false);\n router.setPagePosition($newPage, 'next', false);\n if (dynamicNavbar) {\n router.setNavbarPosition($oldNavbarEl, 'current', false);\n router.setNavbarPosition($newNavbarEl, 'next', false);\n }\n }\n if (options.animate && !(isMaster && app.width >= router.params.masterDetailBreakpoint)) {\n const delay = router.params[`${router.app.theme}PageLoadDelay`];\n let transition = router.params.transition;\n if (options.transition) transition = options.transition;\n if (!transition && router.currentRoute && router.currentRoute.route) {\n transition = router.currentRoute.route.transition;\n }\n if (!transition && router.currentRoute && router.currentRoute.route.options) {\n transition = router.currentRoute.route.options.transition;\n }\n if (transition) {\n $newPage[0].f7PageTransition = transition;\n }\n\n if (delay) {\n setTimeout(() => {\n setPositionClasses();\n router.animate(\n $oldPage,\n $newPage,\n $oldNavbarEl,\n $newNavbarEl,\n 'forward',\n transition,\n () => {\n afterAnimation();\n },\n );\n }, delay);\n } else {\n setPositionClasses();\n router.animate($oldPage, $newPage, $oldNavbarEl, $newNavbarEl, 'forward', transition, () => {\n afterAnimation();\n });\n }\n } else {\n afterAnimation();\n }\n return router;\n}\nfunction load(router, loadParams = {}, loadOptions = {}, ignorePageChange) {\n if (!router.allowPageChange && !ignorePageChange) return router;\n const params = loadParams;\n const options = loadOptions;\n const { url, content, el, pageName, component, componentUrl } = params;\n\n if (\n !options.reloadCurrent &&\n options.route &&\n options.route.route &&\n options.route.route.parentPath &&\n router.currentRoute.route &&\n router.currentRoute.route.parentPath === options.route.route.parentPath\n ) {\n // Do something nested\n if (options.route.url === router.url) {\n router.allowPageChange = true;\n return false;\n }\n // Check for same params\n let sameParams =\n Object.keys(options.route.params).length === Object.keys(router.currentRoute.params).length;\n if (sameParams) {\n // Check for equal params name\n Object.keys(options.route.params).forEach((paramName) => {\n if (\n !(paramName in router.currentRoute.params) ||\n router.currentRoute.params[paramName] !== options.route.params[paramName]\n ) {\n sameParams = false;\n }\n });\n }\n if (sameParams) {\n if (options.route.route.tab) {\n return router.tabLoad(options.route.route.tab, options);\n }\n return false;\n }\n if (\n !sameParams &&\n options.route.route.tab &&\n router.currentRoute.route.tab &&\n router.currentRoute.parentPath === options.route.parentPath\n ) {\n return router.tabLoad(options.route.route.tab, options);\n }\n }\n\n if (\n options.route &&\n options.route.url &&\n router.url === options.route.url &&\n !(options.reloadCurrent || options.reloadPrevious) &&\n !router.params.allowDuplicateUrls\n ) {\n router.allowPageChange = true;\n return false;\n }\n\n if (!options.route && url) {\n options.route = router.parseRouteUrl(url);\n extend(options.route, { route: { url, path: url } });\n }\n\n // Component Callbacks\n function resolve(pageEl, newOptions) {\n return forward(router, pageEl, extend(options, newOptions));\n }\n function reject() {\n router.allowPageChange = true;\n return router;\n }\n\n if (url || componentUrl || component) {\n router.allowPageChange = false;\n }\n\n // Proceed\n if (content) {\n forward(router, router.getPageEl(content), options);\n } else if (el) {\n // Load page from specified HTMLElement or by page name in pages container\n forward(router, router.getPageEl(el), options);\n } else if (pageName) {\n // Load page by page name in pages container\n forward(router, router.$el.children(`.page[data-name=\"${pageName}\"]`).eq(0), options);\n } else if (component || componentUrl) {\n // Load from component (F7/Vue/React/...)\n try {\n router.pageComponentLoader({\n routerEl: router.el,\n component,\n componentUrl,\n options,\n resolve,\n reject,\n });\n } catch (err) {\n router.allowPageChange = true;\n throw err;\n }\n } else if (url) {\n // Load using XHR\n if (router.xhrAbortController) {\n router.xhrAbortController.abort();\n router.xhrAbortController = false;\n }\n router\n .xhrRequest(url, options)\n .then((pageContent) => {\n forward(router, router.getPageEl(pageContent), options);\n })\n .catch(() => {\n router.allowPageChange = true;\n });\n }\n return router;\n}\n\nfunction navigate(navigateParams, navigateOptions = {}) {\n const router = this;\n\n if (router.swipeBackActive) return router;\n let url;\n let createRoute;\n let name;\n let path;\n let query;\n let params;\n let route;\n if (typeof navigateParams === 'string') {\n url = navigateParams;\n } else {\n url = navigateParams.url;\n createRoute = navigateParams.route;\n name = navigateParams.name;\n path = navigateParams.path;\n query = navigateParams.query;\n params = navigateParams.params;\n }\n if (name || path) {\n url = router.generateUrl({ path, name, params, query });\n if (url) {\n return router.navigate(url, navigateOptions);\n }\n return router;\n }\n const app = router.app;\n appRouterCheck(router, 'navigate');\n if (url === '#' || url === '') {\n return router;\n }\n\n let navigateUrl = url.replace('./', '');\n if (navigateUrl[0] !== '/' && navigateUrl.indexOf('#') !== 0) {\n const currentPath = router.currentRoute.parentPath || router.currentRoute.path;\n navigateUrl = ((currentPath ? `${currentPath}/` : '/') + navigateUrl)\n .replace('///', '/')\n .replace('//', '/');\n }\n if (createRoute) {\n route = extend(router.parseRouteUrl(navigateUrl), {\n route: extend({}, createRoute),\n });\n } else {\n route = router.findMatchingRoute(navigateUrl);\n }\n\n if (!route) {\n return router;\n }\n if (route.route && route.route.viewName) {\n const anotherViewName = route.route.viewName;\n const anotherView = app.views[anotherViewName];\n if (!anotherView) {\n throw new Error(\n `Framework7: There is no View with \"${anotherViewName}\" name that was specified in this route`,\n );\n }\n if (anotherView !== router.view) {\n return anotherView.router.navigate(navigateParams, navigateOptions);\n }\n }\n\n if (route.route.redirect) {\n return redirect.call(router, 'forward', route, navigateOptions);\n }\n\n const options = {};\n if (route.route.options) {\n extend(options, route.route.options, navigateOptions);\n } else {\n extend(options, navigateOptions);\n }\n\n if (\n options.openIn &&\n (!router.params.ignoreOpenIn || (router.params.ignoreOpenIn && router.history.length > 0))\n ) {\n return router.openIn(router, navigateUrl, options);\n }\n\n options.route = route;\n\n function resolve() {\n let routerLoaded = false;\n 'popup popover sheet loginScreen actions customModal panel'\n .split(' ')\n .forEach((modalLoadProp) => {\n if (route.route[modalLoadProp] && !routerLoaded) {\n routerLoaded = true;\n router.modalLoad(modalLoadProp, route, options, 'forward');\n }\n });\n if (route.route.keepAlive && route.route.keepAliveData) {\n load(router, { el: route.route.keepAliveData.pageEl }, options, false);\n routerLoaded = true;\n }\n 'url content component pageName el componentUrl'.split(' ').forEach((pageLoadProp) => {\n if (route.route[pageLoadProp] && !routerLoaded) {\n routerLoaded = true;\n load(router, { [pageLoadProp]: route.route[pageLoadProp] }, options, false);\n }\n });\n if (routerLoaded) return;\n // Async\n function asyncResolve(resolveParams, resolveOptions) {\n router.allowPageChange = false;\n let resolvedAsModal = false;\n\n 'popup popover sheet loginScreen actions customModal panel'\n .split(' ')\n .forEach((modalLoadProp) => {\n if (resolveParams[modalLoadProp]) {\n resolvedAsModal = true;\n const modalRoute = extend({}, route, { route: resolveParams });\n router.allowPageChange = true;\n router.modalLoad(modalLoadProp, modalRoute, extend(options, resolveOptions), 'forward');\n }\n });\n if (resolvedAsModal) return;\n load(router, resolveParams, extend(options, resolveOptions), true);\n }\n function asyncReject() {\n router.allowPageChange = true;\n }\n if (route.route.async) {\n router.allowPageChange = false;\n route.route.async.call(router, {\n router,\n to: options.route,\n from: router.currentRoute,\n resolve: asyncResolve,\n reject: asyncReject,\n direction: 'forward',\n app,\n });\n }\n if (route.route.asyncComponent) {\n asyncComponent(router, route.route.asyncComponent, asyncResolve, asyncReject);\n }\n }\n function reject() {\n router.allowPageChange = true;\n }\n\n if (router.params.masterDetailBreakpoint > 0 && route.route.masterRoute) {\n // load detail route\n let preloadMaster = true;\n let masterLoaded = false;\n if (router.currentRoute && router.currentRoute.route) {\n if (\n (router.currentRoute.route.master === true ||\n (typeof router.currentRoute.route.master === 'function' &&\n router.currentRoute.route.master(app, router))) &&\n (router.currentRoute.route === route.route.masterRoute ||\n router.currentRoute.route.path === route.route.masterRoute.path)\n ) {\n preloadMaster = false;\n }\n if (\n router.currentRoute.route.masterRoute &&\n (router.currentRoute.route.masterRoute === route.route.masterRoute ||\n router.currentRoute.route.masterRoute.path === route.route.masterRoute.path)\n ) {\n preloadMaster = false;\n masterLoaded = true;\n }\n }\n if (preloadMaster || (masterLoaded && navigateOptions.reloadAll)) {\n router.navigate(\n { path: route.route.masterRoute.path, params: route.params || {} },\n {\n animate: false,\n reloadAll: navigateOptions.reloadAll,\n reloadCurrent: navigateOptions.reloadCurrent,\n reloadPrevious: navigateOptions.reloadPrevious,\n browserHistory: !navigateOptions.initial,\n history: !navigateOptions.initial,\n once: {\n pageAfterIn() {\n router.navigate(\n navigateParams,\n extend({}, navigateOptions, {\n animate: false,\n reloadAll: false,\n reloadCurrent: false,\n reloadPrevious: false,\n history: !navigateOptions.initial,\n browserHistory: !navigateOptions.initial,\n }),\n );\n },\n },\n },\n );\n return router;\n }\n }\n\n processRouteQueue.call(\n router,\n route,\n router.currentRoute,\n () => {\n if (route.route.modules) {\n app\n .loadModules(\n Array.isArray(route.route.modules) ? route.route.modules : [route.route.modules],\n )\n .then(() => {\n resolve();\n })\n .catch(() => {\n reject();\n });\n } else {\n resolve();\n }\n },\n () => {\n reject();\n },\n 'forward',\n );\n\n // Return Router\n return router;\n}\nexport { refreshPage, navigate };\n","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { extend, parseUrlQuery } from '../../shared/utils.js';\nimport { getDevice } from '../../shared/get-device.js';\nimport History from '../../shared/history.js';\nimport redirect from './redirect.js';\nimport processRouteQueue from './process-route-queue.js';\nimport appRouterCheck from './app-router-check.js';\nimport asyncComponent from './async-component.js';\n\nfunction backward(router, el, backwardOptions) {\n const device = getDevice();\n const document = getDocument();\n const $el = $(el);\n const app = router.app;\n const view = router.view;\n\n const options = extend(\n {\n animate: router.params.animate,\n browserHistory: true,\n replaceState: false,\n },\n backwardOptions,\n );\n\n const masterDetailEnabled = router.params.masterDetailBreakpoint > 0;\n const isMaster =\n masterDetailEnabled &&\n options.route &&\n options.route.route &&\n (options.route.route.master === true ||\n (typeof options.route.route.master === 'function' &&\n options.route.route.master(app, router)));\n let masterPageEl;\n let masterPageRemoved;\n\n const dynamicNavbar = router.dynamicNavbar;\n\n const $newPage = $el;\n const $oldPage = router.$el.children('.page-current');\n const initialPreload = $oldPage.length === 0 && options.preload;\n const currentIsMaster = masterDetailEnabled && $oldPage.hasClass('page-master');\n\n if ($newPage.length) {\n // Remove theme elements\n router.removeThemeElements($newPage);\n }\n\n let $navbarsEl;\n let $newNavbarEl;\n let $oldNavbarEl;\n\n if (dynamicNavbar) {\n $newNavbarEl = $newPage.children('.navbar');\n $navbarsEl = router.$navbarsEl;\n if ($newNavbarEl.length === 0 && $newPage[0] && $newPage[0].f7Page) {\n // Try from pageData\n $newNavbarEl = $newPage[0].f7Page.$navbarEl;\n }\n $oldNavbarEl = $navbarsEl.find('.navbar-current');\n }\n\n router.allowPageChange = false;\n if ($newPage.length === 0 || ($oldPage.length === 0 && !options.preload)) {\n router.allowPageChange = true;\n return router;\n }\n\n // Remove theme elements\n router.removeThemeElements($newPage);\n\n // Save Keep Alive Cache\n if (\n options.route &&\n options.route.route &&\n options.route.route.keepAlive &&\n !options.route.route.keepAliveData\n ) {\n options.route.route.keepAliveData = {\n pageEl: $el[0],\n };\n }\n\n // Pages In View\n let isDetail;\n let isDetailRoot;\n if (masterDetailEnabled) {\n const $pagesInView = router.$el\n .children('.page:not(.stacked)')\n .filter((pageInView) => pageInView !== $newPage[0]);\n\n // Find Detail' master page\n for (let i = 0; i < $pagesInView.length; i += 1) {\n if (!masterPageEl && $pagesInView[i].classList.contains('page-master')) {\n masterPageEl = $pagesInView[i];\n continue; // eslint-disable-line\n }\n }\n\n isDetail =\n !isMaster &&\n masterPageEl &&\n router.history.indexOf(options.route.url) >\n router.history.indexOf(masterPageEl.f7Page.route.url);\n\n if (\n !isDetail &&\n !isMaster &&\n masterPageEl &&\n masterPageEl.f7Page &&\n options.route.route.masterRoute\n ) {\n isDetail = options.route.route.masterRoute.path === masterPageEl.f7Page.route.route.path;\n }\n }\n if (isDetail && masterPageEl && masterPageEl.f7Page) {\n isDetailRoot =\n router.history.indexOf(options.route.url) -\n router.history.indexOf(masterPageEl.f7Page.route.url) ===\n 1;\n }\n\n // New Page\n $newPage\n .addClass(\n `page-${initialPreload ? 'current' : 'previous'}${isMaster ? ' page-master' : ''}${\n isDetail ? ' page-master-detail' : ''\n }${isDetailRoot ? ' page-master-detail-root' : ''}`,\n )\n .removeClass('stacked')\n .removeAttr('aria-hidden')\n .trigger('page:unstack')\n .trigger('page:position', { position: initialPreload ? 'current' : 'previous' });\n router.emit('pageUnstack', $newPage[0]);\n router.emit('pagePosition', $newPage[0], initialPreload ? 'current' : 'previous');\n if (isMaster || isDetail) {\n $newPage.trigger('page:role', { role: isMaster ? 'master' : 'detail', root: !!isDetailRoot });\n router.emit('pageRole', $newPage[0], {\n role: isMaster ? 'master' : 'detail',\n detailRoot: !!isDetailRoot,\n });\n }\n\n if (dynamicNavbar && $newNavbarEl.length > 0) {\n $newNavbarEl\n .addClass(\n `navbar-${initialPreload ? 'current' : 'previous'}${isMaster ? ' navbar-master' : ''}${\n isDetail ? ' navbar-master-detail' : ''\n }${isDetailRoot ? ' navbar-master-detail-root' : ''}`,\n )\n .removeClass('stacked')\n .removeAttr('aria-hidden');\n $newNavbarEl.trigger('navbar:position', { position: initialPreload ? 'current' : 'previous' });\n router.emit('navbarPosition', $newNavbarEl[0], initialPreload ? 'current' : 'previous');\n if (isMaster || isDetailRoot) {\n router.emit('navbarRole', $newNavbarEl[0], {\n role: isMaster ? 'master' : 'detail',\n detailRoot: !!isDetailRoot,\n });\n }\n }\n\n // Remove previous page in case of \"forced\"\n let backIndex;\n if (options.force) {\n if (\n $oldPage.prev('.page-previous:not(.stacked)').length > 0 ||\n $oldPage.prev('.page-previous').length === 0\n ) {\n if (router.history.indexOf(options.route.url) >= 0) {\n backIndex = router.history.length - router.history.indexOf(options.route.url) - 1;\n router.history = router.history.slice(0, router.history.indexOf(options.route.url) + 2);\n view.history = router.history;\n } else if (router.history[[router.history.length - 2]]) {\n router.history[router.history.length - 2] = options.route.url;\n } else {\n router.history.unshift(router.url);\n }\n\n if (backIndex && router.params.stackPages) {\n $oldPage.prevAll('.page-previous').each((pageToRemove) => {\n const $pageToRemove = $(pageToRemove);\n let $navbarToRemove;\n if (dynamicNavbar) {\n // $navbarToRemove = $oldNavbarEl.prevAll('.navbar-previous').eq(index);\n $navbarToRemove = $(app.navbar.getElByPage($pageToRemove));\n }\n if ($pageToRemove[0] !== $newPage[0] && $pageToRemove.index() > $newPage.index()) {\n if (router.initialPages.indexOf($pageToRemove[0]) >= 0) {\n $pageToRemove.addClass('stacked');\n $pageToRemove.trigger('page:stack');\n router.emit('pageStack', $pageToRemove[0]);\n if (dynamicNavbar) {\n $navbarToRemove.addClass('stacked');\n }\n } else {\n router.pageCallback(\n 'beforeRemove',\n $pageToRemove,\n $navbarToRemove,\n 'previous',\n undefined,\n options,\n );\n if ($pageToRemove[0] === masterPageEl) {\n masterPageRemoved = true;\n }\n router.removePage($pageToRemove);\n if (dynamicNavbar && $navbarToRemove.length > 0) {\n router.removeNavbar($navbarToRemove);\n }\n }\n }\n });\n } else {\n const $pageToRemove = $oldPage.prev('.page-previous:not(.stacked)');\n let $navbarToRemove;\n if (dynamicNavbar) {\n // $navbarToRemove = $oldNavbarEl.prev('.navbar-inner:not(.stacked)');\n $navbarToRemove = $(app.navbar.getElByPage($pageToRemove));\n }\n if (router.params.stackPages && router.initialPages.indexOf($pageToRemove[0]) >= 0) {\n $pageToRemove.addClass('stacked');\n $pageToRemove.trigger('page:stack');\n router.emit('pageStack', $pageToRemove[0]);\n $navbarToRemove.addClass('stacked');\n } else if ($pageToRemove.length > 0) {\n router.pageCallback(\n 'beforeRemove',\n $pageToRemove,\n $navbarToRemove,\n 'previous',\n undefined,\n options,\n );\n if ($pageToRemove[0] === masterPageEl) {\n masterPageRemoved = true;\n }\n router.removePage($pageToRemove);\n if (dynamicNavbar && $navbarToRemove.length) {\n router.removeNavbar($navbarToRemove);\n }\n }\n }\n }\n }\n\n // Insert new page\n const newPageInDom = $newPage.parents(document).length > 0;\n const f7Component = $newPage[0].f7Component;\n\n function insertPage() {\n if (initialPreload) {\n if (!newPageInDom && f7Component) {\n f7Component.mount((componentEl) => {\n router.$el.append(componentEl);\n });\n } else {\n router.$el.append($newPage);\n }\n }\n if ($newPage.next($oldPage).length === 0) {\n if (!newPageInDom && f7Component) {\n f7Component.mount((componentEl) => {\n $(componentEl).insertBefore($oldPage);\n });\n } else {\n $newPage.insertBefore($oldPage);\n }\n }\n if (dynamicNavbar && $newNavbarEl.length) {\n if ($newNavbarEl.find('.title-large').length) {\n $newNavbarEl.addClass('navbar-large');\n }\n $newNavbarEl.insertBefore($oldNavbarEl);\n if ($oldNavbarEl.length > 0) {\n $newNavbarEl.insertBefore($oldNavbarEl);\n } else {\n if (!router.$navbarsEl.parents(document).length) {\n router.$el.prepend(router.$navbarsEl);\n }\n $navbarsEl.append($newNavbarEl);\n }\n }\n if (!newPageInDom) {\n router.pageCallback(\n 'mounted',\n $newPage,\n $newNavbarEl,\n 'previous',\n 'current',\n options,\n $oldPage,\n );\n } else if (\n options.route &&\n options.route.route &&\n options.route.route.keepAlive &&\n !$newPage[0].f7PageMounted\n ) {\n $newPage[0].f7PageMounted = true;\n router.pageCallback(\n 'mounted',\n $newPage,\n $newNavbarEl,\n 'previous',\n 'current',\n options,\n $oldPage,\n );\n }\n }\n\n if (options.preload) {\n // Insert Page\n insertPage();\n // Tab route\n if (options.route.route.tab) {\n router.tabLoad(\n options.route.route.tab,\n extend({}, options, {\n history: false,\n browserHistory: false,\n preload: true,\n }),\n );\n }\n if (isMaster) {\n $newPage.removeClass('page-master-stacked').trigger('page:masterunstack');\n router.emit('pageMasterUnstack', $newPage[0]);\n if (dynamicNavbar) {\n $(app.navbar.getElByPage($newPage)).removeClass('navbar-master-stacked');\n router.emit('navbarMasterUnstack', app.navbar.getElByPage($newPage));\n }\n }\n // Page init and before init events\n router.pageCallback('init', $newPage, $newNavbarEl, 'previous', 'current', options, $oldPage);\n if (initialPreload) {\n router.pageCallback('beforeIn', $newPage, $newNavbarEl, 'current', undefined, options);\n router.pageCallback('afterIn', $newPage, $newNavbarEl, 'current', undefined, options);\n }\n const $previousPages = $newPage.prevAll('.page-previous:not(.stacked):not(.page-master)');\n if ($previousPages.length > 0) {\n $previousPages.each((pageToRemove) => {\n const $pageToRemove = $(pageToRemove);\n let $navbarToRemove;\n if (dynamicNavbar) {\n // $navbarToRemove = $newNavbarEl.prevAll('.navbar-previous:not(.stacked)').eq(index);\n $navbarToRemove = $(app.navbar.getElByPage($pageToRemove));\n }\n if (router.params.stackPages && router.initialPages.indexOf(pageToRemove) >= 0) {\n $pageToRemove.addClass('stacked');\n $pageToRemove.trigger('page:stack');\n router.emit('pageStack', $pageToRemove[0]);\n if (dynamicNavbar) {\n $navbarToRemove.addClass('stacked');\n }\n } else {\n router.pageCallback(\n 'beforeRemove',\n $pageToRemove,\n $navbarToRemove,\n 'previous',\n undefined,\n );\n router.removePage($pageToRemove);\n if (dynamicNavbar && $navbarToRemove.length) {\n router.removeNavbar($navbarToRemove);\n }\n }\n });\n }\n router.allowPageChange = true;\n return router;\n }\n\n // History State\n if (!(device.ie || device.edge || (device.firefox && !device.ios))) {\n if (router.params.browserHistory && options.browserHistory) {\n if (options.replaceState) {\n const browserHistoryRoot = router.params.browserHistoryRoot || '';\n History.replace(\n view.id,\n {\n url: options.route.url,\n },\n browserHistoryRoot + router.params.browserHistorySeparator + options.route.url,\n );\n } else if (backIndex) {\n History.go(-backIndex);\n } else {\n History.back();\n }\n }\n }\n\n // Update History\n if (options.replaceState) {\n router.history[router.history.length - 1] = options.route.url;\n } else {\n if (router.history.length === 1) {\n router.history.unshift(router.url);\n }\n router.history.pop();\n }\n router.saveHistory();\n\n // Current Page & Navbar\n router.currentPageEl = $newPage[0];\n if (dynamicNavbar && $newNavbarEl.length) {\n router.currentNavbarEl = $newNavbarEl[0];\n } else {\n delete router.currentNavbarEl;\n }\n\n // Current Route\n router.currentRoute = options.route;\n\n // History State\n if (device.ie || device.edge || (device.firefox && !device.ios)) {\n if (router.params.browserHistory && options.browserHistory) {\n if (options.replaceState) {\n const browserHistoryRoot = router.params.browserHistoryRoot || '';\n History.replace(\n view.id,\n {\n url: options.route.url,\n },\n browserHistoryRoot + router.params.browserHistorySeparator + options.route.url,\n );\n } else if (backIndex) {\n History.go(-backIndex);\n } else {\n History.back();\n }\n }\n }\n\n // Insert Page\n insertPage();\n\n // Load Tab\n if (options.route.route.tab) {\n router.tabLoad(\n options.route.route.tab,\n extend({}, options, {\n history: false,\n browserHistory: false,\n }),\n );\n }\n\n // Check master detail\n\n if (masterDetailEnabled && (currentIsMaster || masterPageRemoved)) {\n view.checkMasterDetailBreakpoint(false);\n }\n\n // Page init and before init events\n router.pageCallback('init', $newPage, $newNavbarEl, 'previous', 'current', options, $oldPage);\n\n // Before animation callback\n router.pageCallback('beforeOut', $oldPage, $oldNavbarEl, 'current', 'next', options);\n router.pageCallback('beforeIn', $newPage, $newNavbarEl, 'previous', 'current', options);\n\n // Animation\n function afterAnimation() {\n // Set classes\n router.setPagePosition($newPage, 'current', false);\n router.setPagePosition($oldPage, 'next', true);\n if (dynamicNavbar) {\n router.setNavbarPosition($newNavbarEl, 'current', false);\n router.setNavbarPosition($oldNavbarEl, 'next', true);\n }\n\n // After animation event\n router.pageCallback('afterOut', $oldPage, $oldNavbarEl, 'current', 'next', options);\n router.pageCallback('afterIn', $newPage, $newNavbarEl, 'previous', 'current', options);\n\n // Remove Old Page\n if (router.params.stackPages && router.initialPages.indexOf($oldPage[0]) >= 0) {\n $oldPage.addClass('stacked');\n $oldPage.trigger('page:stack');\n router.emit('pageStack', $oldPage[0]);\n if (dynamicNavbar) {\n $oldNavbarEl.addClass('stacked');\n }\n } else {\n router.pageCallback('beforeRemove', $oldPage, $oldNavbarEl, 'next', undefined, options);\n router.removePage($oldPage);\n if (dynamicNavbar && $oldNavbarEl.length) {\n router.removeNavbar($oldNavbarEl);\n }\n }\n\n router.allowPageChange = true;\n router.emit('routeChanged', router.currentRoute, router.previousRoute, router);\n\n // Preload previous page\n const preloadPreviousPage =\n router.params.preloadPreviousPage || router.params[`${app.theme}SwipeBack`];\n if (preloadPreviousPage && router.history[router.history.length - 2] && !isMaster) {\n router.back(router.history[router.history.length - 2], { preload: true });\n }\n if (router.params.browserHistory) {\n History.clearRouterQueue();\n }\n }\n\n function setPositionClasses() {\n router.setPagePosition($oldPage, 'current');\n router.setPagePosition($newPage, 'previous', false);\n if (dynamicNavbar) {\n router.setNavbarPosition($oldNavbarEl, 'current');\n router.setNavbarPosition($newNavbarEl, 'previous', false);\n }\n }\n\n if (options.animate && !(currentIsMaster && app.width >= router.params.masterDetailBreakpoint)) {\n let transition = router.params.transition;\n if ($oldPage[0] && $oldPage[0].f7PageTransition) {\n transition = $oldPage[0].f7PageTransition;\n delete $oldPage[0].f7PageTransition;\n }\n if (options.transition) transition = options.transition;\n if (!transition && router.previousRoute && router.previousRoute.route) {\n transition = router.previousRoute.route.transition;\n }\n if (\n !transition &&\n router.previousRoute &&\n router.previousRoute.route &&\n router.previousRoute.route.options\n ) {\n transition = router.previousRoute.route.options.transition;\n }\n setPositionClasses();\n router.animate($oldPage, $newPage, $oldNavbarEl, $newNavbarEl, 'backward', transition, () => {\n afterAnimation();\n });\n } else {\n afterAnimation();\n }\n\n return router;\n}\nfunction loadBack(router, backParams, backOptions, ignorePageChange) {\n if (!router.allowPageChange && !ignorePageChange) return router;\n const params = backParams;\n const options = backOptions;\n const { url, content, el, pageName, component, componentUrl } = params;\n\n if (\n options.route.url &&\n router.url === options.route.url &&\n !(options.reloadCurrent || options.reloadPrevious) &&\n !router.params.allowDuplicateUrls\n ) {\n return false;\n }\n\n if (!options.route && url) {\n options.route = router.parseRouteUrl(url);\n }\n\n // Component Callbacks\n function resolve(pageEl, newOptions) {\n return backward(router, pageEl, extend(options, newOptions));\n }\n function reject() {\n router.allowPageChange = true;\n return router;\n }\n\n if (url || componentUrl || component) {\n router.allowPageChange = false;\n }\n\n // Proceed\n if (content) {\n backward(router, router.getPageEl(content), options);\n } else if (el) {\n // Load page from specified HTMLElement or by page name in pages container\n backward(router, router.getPageEl(el), options);\n } else if (pageName) {\n // Load page by page name in pages container\n backward(router, router.$el.children(`.page[data-name=\"${pageName}\"]`).eq(0), options);\n } else if (component || componentUrl) {\n // Load from component (F7/Vue/React/...)\n try {\n router.pageComponentLoader({\n routerEl: router.el,\n component,\n componentUrl,\n options,\n resolve,\n reject,\n });\n } catch (err) {\n router.allowPageChange = true;\n throw err;\n }\n } else if (url) {\n // Load using XHR\n if (router.xhrAbortController) {\n router.xhrAbortController.abort();\n router.xhrAbortController = false;\n }\n router\n .xhrRequest(url, options)\n .then((pageContent) => {\n backward(router, router.getPageEl(pageContent), options);\n })\n .catch(() => {\n router.allowPageChange = true;\n });\n }\n return router;\n}\nfunction back(...args) {\n const router = this;\n const device = getDevice();\n if (router.swipeBackActive) return router;\n let navigateUrl;\n let navigateOptions;\n let route;\n if (typeof args[0] === 'object') {\n navigateOptions = args[0] || {};\n } else {\n navigateUrl = args[0];\n navigateOptions = args[1] || {};\n }\n\n const { name, params, query } = navigateOptions;\n if (name) {\n navigateUrl = router.generateUrl({ name, params, query });\n if (navigateUrl) {\n return router.back(\n navigateUrl,\n extend({}, navigateOptions, {\n name: null,\n params: null,\n query: null,\n }),\n );\n }\n return router;\n }\n\n const app = router.app;\n appRouterCheck(router, 'back');\n\n let currentRouteIsModal = router.currentRoute.modal;\n let modalType;\n if (!currentRouteIsModal) {\n 'popup popover sheet loginScreen actions customModal panel'\n .split(' ')\n .forEach((modalLoadProp) => {\n if (router.currentRoute.route[modalLoadProp]) {\n currentRouteIsModal = true;\n modalType = modalLoadProp;\n }\n });\n }\n if (currentRouteIsModal && !navigateOptions.preload) {\n const modalToClose =\n router.currentRoute.modal || router.currentRoute.route.modalInstance || app[modalType].get();\n const previousUrl = router.history[router.history.length - 2];\n let previousRoute;\n // check if previous route is modal too\n if (modalToClose && modalToClose.$el) {\n const prevOpenedModals = modalToClose.$el.prevAll('.modal-in');\n if (prevOpenedModals.length && prevOpenedModals[0].f7Modal) {\n const modalEl = prevOpenedModals[0];\n // check if current router not inside of the modalEl\n if (!router.$el.parents(modalEl).length) {\n previousRoute = modalEl.f7Modal.route;\n }\n }\n }\n if (!previousRoute) {\n previousRoute = router.findMatchingRoute(previousUrl);\n }\n\n if (!previousRoute && previousUrl) {\n previousRoute = {\n url: previousUrl,\n path: previousUrl.split('?')[0],\n query: parseUrlQuery(previousUrl),\n route: {\n path: previousUrl.split('?')[0],\n url: previousUrl,\n },\n };\n }\n if (!navigateUrl || navigateUrl.replace(/[# ]/g, '').trim().length === 0) {\n if (!previousRoute || !modalToClose) {\n return router;\n }\n }\n const forceOtherUrl = navigateOptions.force && previousRoute && navigateUrl;\n if (previousRoute && modalToClose) {\n const isBrokenBrowserHistory = device.ie || device.edge || (device.firefox && !device.ios);\n const needHistoryBack =\n router.params.browserHistory && navigateOptions.browserHistory !== false;\n const currentRouteWithoutBrowserHistory =\n router.currentRoute &&\n router.currentRoute.route &&\n router.currentRoute.route.options &&\n router.currentRoute.route.options.browserHistory === false;\n if (needHistoryBack && !isBrokenBrowserHistory && !currentRouteWithoutBrowserHistory) {\n History.back();\n }\n router.currentRoute = previousRoute;\n router.history.pop();\n router.saveHistory();\n\n if (needHistoryBack && isBrokenBrowserHistory && !currentRouteWithoutBrowserHistory) {\n History.back();\n }\n\n router.modalRemove(modalToClose);\n if (forceOtherUrl) {\n router.navigate(navigateUrl, { reloadCurrent: true });\n }\n } else if (modalToClose) {\n router.modalRemove(modalToClose);\n if (navigateUrl) {\n router.navigate(navigateUrl, { reloadCurrent: true });\n }\n }\n return router;\n }\n let $previousPage = router.$el\n .children('.page-current')\n .prevAll('.page-previous:not(.page-master)')\n .eq(0);\n\n let skipMaster;\n if (router.params.masterDetailBreakpoint > 0) {\n const classes = [];\n router.$el.children('.page').each((pageEl) => {\n classes.push(pageEl.className);\n });\n\n const $previousMaster = router.$el.children('.page-current').prevAll('.page-master').eq(0);\n if ($previousMaster.length) {\n const expectedPreviousPageUrl = router.history[router.history.length - 2];\n const expectedPreviousPageRoute = router.findMatchingRoute(expectedPreviousPageUrl);\n if (\n expectedPreviousPageRoute &&\n $previousMaster[0].f7Page &&\n expectedPreviousPageRoute.route === $previousMaster[0].f7Page.route.route\n ) {\n $previousPage = $previousMaster;\n if (!navigateOptions.preload) {\n skipMaster = app.width >= router.params.masterDetailBreakpoint;\n }\n }\n }\n }\n\n if (!navigateOptions.force && $previousPage.length && !skipMaster) {\n if (\n router.params.browserHistory &&\n $previousPage[0].f7Page &&\n router.history[router.history.length - 2] !== $previousPage[0].f7Page.route.url\n ) {\n router.back(\n router.history[router.history.length - 2],\n extend(navigateOptions, { force: true }),\n );\n return router;\n }\n const previousPageRoute = $previousPage[0].f7Page.route;\n\n processRouteQueue.call(\n router,\n previousPageRoute,\n router.currentRoute,\n () => {\n loadBack(\n router,\n { el: $previousPage },\n extend(navigateOptions, {\n route: previousPageRoute,\n }),\n );\n },\n () => {},\n 'backward',\n );\n\n return router;\n }\n\n // Navigate URL\n if (navigateUrl === '#') {\n navigateUrl = undefined;\n }\n if (navigateUrl && navigateUrl[0] !== '/' && navigateUrl.indexOf('#') !== 0) {\n navigateUrl = ((router.path || '/') + navigateUrl).replace('//', '/');\n }\n if (!navigateUrl && router.history.length > 1) {\n navigateUrl = router.history[router.history.length - 2];\n }\n if (skipMaster && !navigateOptions.force && router.history[router.history.length - 3]) {\n return router.back(\n router.history[router.history.length - 3],\n extend({}, navigateOptions || {}, {\n force: true,\n animate: false,\n }),\n );\n }\n if (skipMaster && !navigateOptions.force) {\n return router;\n }\n\n // Find route to load\n route = router.findMatchingRoute(navigateUrl);\n if (!route) {\n if (navigateUrl) {\n route = {\n url: navigateUrl,\n path: navigateUrl.split('?')[0],\n query: parseUrlQuery(navigateUrl),\n route: {\n path: navigateUrl.split('?')[0],\n url: navigateUrl,\n },\n };\n }\n }\n if (!route) {\n return router;\n }\n\n if (route.route.redirect) {\n return redirect.call(router, 'backward', route, navigateOptions);\n }\n\n const options = {};\n if (route.route.options) {\n extend(options, route.route.options, navigateOptions);\n } else {\n extend(options, navigateOptions);\n }\n options.route = route;\n\n let backForceLoaded;\n if (options.force && router.params.stackPages) {\n router.$el.children('.page-previous.stacked').each((pageEl) => {\n if (pageEl.f7Page && pageEl.f7Page.route && pageEl.f7Page.route.url === route.url) {\n backForceLoaded = true;\n loadBack(router, { el: pageEl }, options);\n }\n });\n if (backForceLoaded) {\n return router;\n }\n }\n function resolve() {\n let routerLoaded = false;\n if (route.route.keepAlive && route.route.keepAliveData) {\n loadBack(router, { el: route.route.keepAliveData.pageEl }, options);\n routerLoaded = true;\n }\n 'url content component pageName el componentUrl'.split(' ').forEach((pageLoadProp) => {\n if (route.route[pageLoadProp] && !routerLoaded) {\n routerLoaded = true;\n loadBack(router, { [pageLoadProp]: route.route[pageLoadProp] }, options);\n }\n });\n if (routerLoaded) return;\n // Async\n function asyncResolve(resolveParams, resolveOptions) {\n router.allowPageChange = false;\n loadBack(router, resolveParams, extend(options, resolveOptions), true);\n }\n function asyncReject() {\n router.allowPageChange = true;\n }\n if (route.route.async) {\n router.allowPageChange = false;\n route.route.async.call(router, {\n router,\n to: route,\n from: router.currentRoute,\n resolve: asyncResolve,\n reject: asyncReject,\n direction: 'backward',\n app,\n });\n }\n if (route.route.asyncComponent) {\n asyncComponent(router, route.route.asyncComponent, asyncResolve, asyncReject);\n }\n }\n function reject() {\n router.allowPageChange = true;\n }\n\n if (options.preload) {\n resolve();\n } else {\n processRouteQueue.call(\n router,\n route,\n router.currentRoute,\n () => {\n if (route.route.modules) {\n app\n .loadModules(\n Array.isArray(route.route.modules) ? route.route.modules : [route.route.modules],\n )\n .then(() => {\n resolve();\n })\n .catch(() => {\n reject();\n });\n } else {\n resolve();\n }\n },\n () => {\n reject();\n },\n 'backward',\n );\n }\n\n // Return Router\n return router;\n}\nexport { back };\n","import { getWindow, getDocument } from 'ssr-window';\nimport { pathToRegexp, compile } from 'path-to-regexp';\nimport $ from '../../shared/dom7.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.replace(\n router.view.id,\n {\n url: options.route.url,\n },\n (router.params.browserHistoryRoot || '') +\n router.params.browserHistorySeparator +\n options.route.url,\n );\n }\n\n // Update Router History\n if (options.history) {\n router.history[Math.max(router.history.length - 1, 0)] = options.route.url;\n router.saveHistory();\n }\n }\n\n // Show Tab\n const $parentPageEl = $(options.parentPageEl || router.currentPageEl);\n let tabEl;\n if ($parentPageEl.length && $parentPageEl.find(`#${tabRoute.id}`).length) {\n tabEl = $parentPageEl.find(`#${tabRoute.id}`).eq(0);\n } else if (router.view.selector) {\n tabEl = `${router.view.selector} #${tabRoute.id}`;\n } else {\n tabEl = `#${tabRoute.id}`;\n }\n const tabShowResult = router.app.tab.show({\n tabEl,\n animate: options.animate,\n tabRoute: options.route,\n });\n\n const { $newTabEl, $oldTabEl, animated, onTabsChanged } = tabShowResult;\n\n if ($newTabEl && $newTabEl.parents('.page').length > 0 && options.route) {\n const tabParentPageData = $newTabEl.parents('.page')[0].f7Page;\n if (tabParentPageData && options.route) {\n tabParentPageData.route = options.route;\n }\n }\n\n // Tab Content Loaded\n function onTabLoaded(contentEl) {\n // Remove theme elements\n router.removeThemeElements($newTabEl);\n\n let tabEventTarget = $newTabEl;\n if (typeof contentEl !== 'string') tabEventTarget = $(contentEl);\n\n tabEventTarget.trigger('tab:init tab:mounted', tabRoute);\n router.emit('tabInit tabMounted', $newTabEl[0], tabRoute);\n\n if ($oldTabEl && $oldTabEl.length) {\n if (animated) {\n onTabsChanged(() => {\n router.emit('routeChanged', router.currentRoute, router.previousRoute, router);\n if (router.params.unloadTabContent) {\n router.tabRemove($oldTabEl, $newTabEl, tabRoute);\n }\n });\n } else {\n router.emit('routeChanged', router.currentRoute, router.previousRoute, router);\n if (router.params.unloadTabContent) {\n router.tabRemove($oldTabEl, $newTabEl, tabRoute);\n }\n }\n }\n }\n\n if ($newTabEl[0].f7RouterTabLoaded) {\n if (!$oldTabEl || !$oldTabEl.length) return router;\n if (animated) {\n onTabsChanged(() => {\n router.emit('routeChanged', router.currentRoute, router.previousRoute, router);\n });\n } else {\n router.emit('routeChanged', router.currentRoute, router.previousRoute, router);\n }\n return router;\n }\n\n // Load Tab Content\n function loadTab(loadTabParams, loadTabOptions) {\n // Load Tab Props\n const { url, content, el, component, componentUrl } = loadTabParams;\n // Component/Template Callbacks\n function resolve(contentEl) {\n router.allowPageChange = true;\n if (!contentEl) return;\n if (typeof contentEl === 'string') {\n $newTabEl.html(contentEl);\n } else {\n $newTabEl.html('');\n if (contentEl.f7Component) {\n contentEl.f7Component.mount((componentEl) => {\n $newTabEl.append(componentEl);\n });\n } else {\n $newTabEl.append(contentEl);\n }\n }\n $newTabEl[0].f7RouterTabLoaded = true;\n onTabLoaded(contentEl);\n }\n function reject() {\n router.allowPageChange = true;\n return router;\n }\n\n if (content) {\n resolve(content);\n } else if (el) {\n resolve(el);\n } else if (component || componentUrl) {\n // Load from component (F7/Vue/React/...)\n try {\n router.tabComponentLoader({\n tabEl: $newTabEl[0],\n component,\n componentUrl,\n options: loadTabOptions,\n resolve,\n reject,\n });\n } catch (err) {\n router.allowPageChange = true;\n throw err;\n }\n } else if (url) {\n // Load using XHR\n if (router.xhrAbortController) {\n router.xhrAbortController.abort();\n router.xhrAbortController = false;\n }\n router\n .xhrRequest(url, loadTabOptions)\n .then((tabContent) => {\n resolve(tabContent);\n })\n .catch(() => {\n router.allowPageChange = true;\n });\n }\n }\n\n let hasContentLoadProp;\n 'url content component el componentUrl'.split(' ').forEach((tabLoadProp) => {\n if (tabRoute[tabLoadProp]) {\n hasContentLoadProp = true;\n loadTab({ [tabLoadProp]: tabRoute[tabLoadProp] }, options);\n }\n });\n\n // Async\n function asyncResolve(resolveParams, resolveOptions) {\n loadTab(resolveParams, extend(options, resolveOptions));\n }\n function asyncReject() {\n router.allowPageChange = true;\n }\n if (tabRoute.async) {\n tabRoute.async.call(router, {\n router,\n to: currentRoute,\n from: previousRoute,\n resolve: asyncResolve,\n reject: asyncReject,\n app: router.app,\n });\n } else if (tabRoute.asyncComponent) {\n asyncComponent(router, tabRoute.asyncComponent, asyncResolve, asyncReject);\n } else if (!hasContentLoadProp) {\n router.allowPageChange = true;\n }\n\n return router;\n}\nfunction tabRemove($oldTabEl, $newTabEl, tabRoute) {\n const router = this;\n\n let hasTabComponentChild;\n if ($oldTabEl[0]) {\n $oldTabEl[0].f7RouterTabLoaded = false;\n delete $oldTabEl[0].f7RouterTabLoaded;\n }\n $oldTabEl.children().each((tabChild) => {\n if (tabChild.f7Component) {\n hasTabComponentChild = true;\n $(tabChild).trigger('tab:beforeremove', tabRoute);\n tabChild.f7Component.destroy();\n }\n });\n if (!hasTabComponentChild) {\n $oldTabEl.trigger('tab:beforeremove', tabRoute);\n }\n router.emit('tabBeforeRemove', $oldTabEl[0], $newTabEl[0], tabRoute);\n router.removeTabContent($oldTabEl[0], tabRoute);\n}\n\nexport { tabLoad, tabRemove };\n","import { extend, nextTick } from '../../shared/utils.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 view.router.init();\n view.$el.trigger('view:init');\n view.emit('local::init viewInit', view);\n }\n }\n}\n\n// Use Router\nView.use(Router);\n\nexport default View;\n","import { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom7.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';\nfunction addNS(data, children, sel) {\n data.ns = 'http://www.w3.org/2000/svg';\n if (sel !== 'foreignObject' && children !== undefined) {\n for (var i = 0; i < children.length; ++i) {\n var childData = children[i].data;\n if (childData !== undefined) {\n addNS(childData, children[i].children, children[i].sel);\n }\n }\n }\n}\nexport function h(sel, b, c) {\n var data = {}, children, text, i;\n if (c !== undefined) {\n data = b;\n if (is.array(c)) {\n children = c;\n }\n else if (is.primitive(c)) {\n text = c;\n }\n else if (c && c.sel) {\n children = [c];\n }\n }\n else if (b !== undefined) {\n if (is.array(b)) {\n children = b;\n }\n else if (is.primitive(b)) {\n text = b;\n }\n else if (b && b.sel) {\n children = [b];\n }\n else {\n data = b;\n }\n }\n if (is.array(children)) {\n for (i = 0; i < children.length; ++i) {\n if (is.primitive(children[i]))\n children[i] = vnode(undefined, undefined, undefined, children[i], undefined);\n }\n }\n if (sel[0] === 's' && sel[1] === 'v' && sel[2] === 'g' &&\n (sel.length === 3 || sel[3] === '.' || sel[3] === '#')) {\n addNS(data, children, sel);\n }\n return vnode(sel, data, children, text, undefined);\n}\n;\nexport default h;\n//# sourceMappingURL=h.js.map\n","export default {};\n","/* eslint no-use-before-define: \"off\" */\n/* eslint import/no-named-as-default: \"off\" */\nimport h from './snabbdom/h.js';\nimport customComponents from './custom-components.js';\nimport { isObject, eventNameToColonCase } from '../../shared/utils.js';\n\nconst SELF_CLOSING =\n 'area base br col command embed hr img input keygen link menuitem meta param source track wbr'.split(\n ' ',\n );\nconst PROPS_ATTRS =\n 'hidden checked disabled readonly selected autofocus autoplay required multiple value indeterminate routeProps innerHTML'.split(\n ' ',\n );\nconst BOOLEAN_PROPS =\n 'hidden checked disabled readonly selected autofocus autoplay required multiple readOnly indeterminate'.split(\n ' ',\n );\n\nconst getTagName = (treeNode) => {\n return typeof treeNode.type === 'function'\n ? treeNode.type.name || 'CustomComponent'\n : treeNode.type;\n};\n\nconst toCamelCase = (name) => {\n return name\n .split('-')\n .map((word, index) => {\n if (index === 0) return word.toLowerCase();\n return word[0].toUpperCase() + word.substr(1);\n })\n .join('');\n};\nconst propsFromAttrs = (...args) => {\n const context = {};\n args.forEach((obj = {}) => {\n Object.keys(obj).forEach((key) => {\n context[toCamelCase(key)] = obj[key];\n });\n });\n\n return context;\n};\n\nconst createCustomComponent = ({ f7, treeNode, vnode, data }) => {\n const component =\n typeof treeNode.type === 'function' ? treeNode.type : customComponents[treeNode.type];\n f7.component\n .create(component, propsFromAttrs(data.attrs || {}, data.props || {}), {\n el: vnode.elm,\n children: treeNode.children,\n })\n .then((c) => {\n if (vnode.data && vnode.data.on && c && c.$el) {\n Object.keys(vnode.data.on).forEach((eventName) => {\n c.$el.on(eventName, vnode.data.on[eventName]);\n });\n }\n // eslint-disable-next-line\n vnode.elm.__component__ = c;\n });\n};\nconst updateCustomComponent = (vnode) => {\n // eslint-disable-next-line\n const component = vnode && vnode.elm && vnode.elm.__component__;\n if (!component) return;\n const newProps = propsFromAttrs(vnode.data.attrs || {}, vnode.data.props || {});\n component.children = vnode.data.treeNode.children;\n Object.assign(component.props, newProps);\n component.update();\n};\nconst destroyCustomComponent = (vnode) => {\n // eslint-disable-next-line\n const component = vnode && vnode.elm && vnode.elm.__component__;\n\n if (component) {\n const { el, $el } = component;\n if (vnode.data && vnode.data.on && $el) {\n Object.keys(vnode.data.on).forEach((eventName) => {\n $el.off(eventName, vnode.data.on[eventName]);\n });\n }\n if (component.destroy) component.destroy();\n if (el && el.parentNode) el.parentNode.removeChild(el);\n delete vnode.elm.__component__; // eslint-disable-line\n }\n};\n\nconst isCustomComponent = (treeNodeType) => {\n return (\n typeof treeNodeType === 'function' ||\n (treeNodeType && treeNodeType.indexOf('-') > 0 && customComponents[treeNodeType])\n );\n};\n\nfunction getHooks(treeNode, data, f7, initial, isRoot) {\n const hooks = {};\n const insert = [];\n const destroy = [];\n const update = [];\n const postpatch = [];\n let isFakeElement = false;\n let tagName = getTagName(treeNode);\n if (data && data.attrs && data.attrs.component) {\n tagName = data.attrs.component;\n delete data.attrs.component;\n isFakeElement = true;\n }\n\n const isCustom = isCustomComponent(treeNode.type);\n\n if (isCustom) {\n insert.push((vnode) => {\n if (vnode.sel !== tagName && !isFakeElement) return;\n createCustomComponent({ f7, treeNode, vnode, data });\n });\n destroy.push((vnode) => {\n destroyCustomComponent(vnode);\n });\n update.push((oldVnode, vnode) => {\n updateCustomComponent(vnode);\n });\n }\n\n if (!isCustom) {\n if (!data || !data.attrs || !data.attrs.class) return hooks;\n\n const classNames = data.attrs.class;\n classNames.split(' ').forEach((className) => {\n if (!initial) {\n insert.push(...f7.getVnodeHooks('insert', className));\n }\n destroy.push(...f7.getVnodeHooks('destroy', className));\n update.push(...f7.getVnodeHooks('update', className));\n postpatch.push(...f7.getVnodeHooks('postpatch', className));\n });\n }\n\n if (isRoot && !initial) {\n postpatch.push((oldVnode, vnode) => {\n const vn = vnode || oldVnode;\n if (!vn) return;\n if (vn.data && vn.data.component) {\n vn.data.component.hook('onUpdated');\n }\n });\n }\n if (\n insert.length === 0 &&\n destroy.length === 0 &&\n update.length === 0 &&\n postpatch.length === 0\n ) {\n return hooks;\n }\n\n if (insert.length) {\n hooks.insert = (vnode) => {\n insert.forEach((f) => f(vnode));\n };\n }\n if (destroy.length) {\n hooks.destroy = (vnode) => {\n destroy.forEach((f) => f(vnode));\n };\n }\n if (update.length) {\n hooks.update = (oldVnode, vnode) => {\n update.forEach((f) => f(oldVnode, vnode));\n };\n }\n if (postpatch.length) {\n hooks.postpatch = (oldVnode, vnode) => {\n postpatch.forEach((f) => f(oldVnode, vnode));\n };\n }\n\n return hooks;\n}\nconst getEventHandler = (eventHandler, { stop, prevent, once } = {}) => {\n let fired = false;\n\n function handler(...args) {\n const e = args[0];\n if (once && fired) return;\n if (stop) e.stopPropagation();\n if (prevent) e.preventDefault();\n fired = true;\n\n eventHandler(...args);\n }\n\n return handler;\n};\n\nconst getData = (treeNode, component, f7, initial, isRoot) => {\n const data = { component, treeNode };\n const tagName = getTagName(treeNode);\n Object.keys(treeNode.props).forEach((attrName) => {\n const attrValue = treeNode.props[attrName];\n if (typeof attrValue === 'undefined') return;\n if (PROPS_ATTRS.indexOf(attrName) >= 0) {\n // Props\n if (!data.props) data.props = {};\n if (attrName === 'readonly') {\n // eslint-disable-next-line\n attrName = 'readOnly';\n }\n if (attrName === 'routeProps') {\n // eslint-disable-next-line\n attrName = 'f7RouteProps';\n }\n if (tagName === 'option' && attrName === 'value') {\n if (!data.attrs) data.attrs = {};\n data.attrs.value = attrValue;\n }\n if (BOOLEAN_PROPS.indexOf(attrName) >= 0) {\n // eslint-disable-next-line\n data.props[attrName] = attrValue === false ? false : true;\n } else {\n data.props[attrName] = attrValue;\n }\n } else if (attrName === 'key') {\n // Key\n data.key = attrValue;\n } else if (\n attrName.indexOf('@') === 0 ||\n (attrName.indexOf('on') === 0 && attrName.length > 2)\n ) {\n // Events\n if (!data.on) data.on = {};\n let eventName =\n attrName.indexOf('@') === 0 ? attrName.substr(1) : eventNameToColonCase(attrName.substr(2));\n let stop = false;\n let prevent = false;\n let once = false;\n if (eventName.indexOf('.') >= 0) {\n eventName.split('.').forEach((eventNamePart, eventNameIndex) => {\n if (eventNameIndex === 0) eventName = eventNamePart;\n else {\n if (eventNamePart === 'stop') stop = true;\n if (eventNamePart === 'prevent') prevent = true;\n if (eventNamePart === 'once') once = true;\n }\n });\n }\n data.on[eventName] = getEventHandler(attrValue, { stop, prevent, once });\n } else if (attrName === 'style') {\n // Style\n if (typeof attrValue !== 'string') {\n data.style = attrValue;\n } else {\n if (!data.attrs) data.attrs = {};\n data.attrs.style = attrValue;\n }\n } else {\n // Rest of attribures\n if (!data.attrs) data.attrs = {};\n data.attrs[attrName] = attrValue;\n\n // ID -> Key\n if (attrName === 'id' && !data.key && !isRoot) {\n data.key = attrValue;\n }\n }\n });\n\n const hooks = getHooks(treeNode, data, f7, initial, isRoot);\n\n hooks.prepatch = (oldVnode, vnode) => {\n if (!oldVnode || !vnode) return;\n if (oldVnode && oldVnode.data && oldVnode.data.props) {\n Object.keys(oldVnode.data.props).forEach((key) => {\n if (BOOLEAN_PROPS.indexOf(key) < 0) return;\n if (!vnode.data) vnode.data = {};\n if (!vnode.data.props) vnode.data.props = {};\n if (oldVnode.data.props[key] === true && !(key in vnode.data.props)) {\n vnode.data.props[key] = false;\n }\n });\n }\n };\n\n data.hook = hooks;\n\n return data;\n};\n\nconst getChildren = (treeNode, component, f7, initial) => {\n if (treeNode && treeNode.type && SELF_CLOSING.indexOf(treeNode.type) >= 0) {\n return [];\n }\n const children = [];\n const nodes = treeNode.children;\n for (let i = 0; i < nodes.length; i += 1) {\n const childNode = nodes[i];\n const child = treeNodeToVNode(childNode, component, f7, initial, false);\n if (Array.isArray(child)) {\n children.push(...child);\n } else if (child) {\n children.push(child);\n }\n }\n return children;\n};\n\nconst getSlots = (treeNode, component, f7, initial) => {\n const slotName = treeNode.props.name || 'default';\n const slotNodes = (component.children || []).filter((childTreeNode) => {\n let childSlotName = 'default';\n if (childTreeNode.props) {\n childSlotName = childTreeNode.props.slot || 'default';\n }\n return childSlotName === slotName;\n });\n if (slotNodes.length === 0) {\n return getChildren(treeNode, component, f7, initial);\n }\n return slotNodes.map((subTreeNode) => treeNodeToVNode(subTreeNode, component, f7, initial));\n};\n\nconst isTreeNode = (treeNode) => {\n return isObject(treeNode) && 'props' in treeNode && 'type' in treeNode && 'children' in treeNode;\n};\n\nconst treeNodeToVNode = (treeNode, component, f7, initial, isRoot) => {\n if (!isTreeNode(treeNode)) {\n return String(treeNode);\n }\n if (treeNode.type === 'slot') {\n return getSlots(treeNode, component, f7, initial);\n }\n const data = getData(treeNode, component, f7, initial, isRoot);\n const children = isCustomComponent(treeNode.type)\n ? []\n : getChildren(treeNode, component, f7, initial);\n\n return h(getTagName(treeNode), data, children);\n};\n\nexport default function vdom(tree = {}, component, initial) {\n return treeNodeToVNode(tree, component, component.f7, initial, true);\n}\n","function createElement(tagName) {\n return document.createElement(tagName);\n}\nfunction createElementNS(namespaceURI, qualifiedName) {\n return document.createElementNS(namespaceURI, qualifiedName);\n}\nfunction createTextNode(text) {\n return document.createTextNode(text);\n}\nfunction createComment(text) {\n return document.createComment(text);\n}\nfunction insertBefore(parentNode, newNode, referenceNode) {\n if (referenceNode && referenceNode.parentNode !== parentNode) {\n if (referenceNode.__component__) referenceNode = referenceNode.__component__.el;\n }\n parentNode.insertBefore(newNode, referenceNode);\n}\nfunction removeChild(node, child) {\n if (!node) return;\n node.removeChild(child);\n}\nfunction appendChild(node, child) {\n node.appendChild(child);\n}\nfunction parentNode(node) {\n return node.parentNode;\n}\nfunction nextSibling(node) {\n return node.nextSibling;\n}\nfunction tagName(elm) {\n return elm.tagName;\n}\nfunction setTextContent(node, text) {\n node.textContent = text;\n}\nfunction getTextContent(node) {\n return node.textContent;\n}\nfunction isElement(node) {\n return node.nodeType === 1;\n}\nfunction isText(node) {\n return node.nodeType === 3;\n}\nfunction isComment(node) {\n return node.nodeType === 8;\n}\nexport var htmlDomApi = {\n createElement: createElement,\n createElementNS: createElementNS,\n createTextNode: createTextNode,\n createComment: createComment,\n insertBefore: insertBefore,\n removeChild: removeChild,\n appendChild: appendChild,\n parentNode: parentNode,\n nextSibling: nextSibling,\n tagName: tagName,\n setTextContent: setTextContent,\n getTextContent: getTextContent,\n isElement: isElement,\n isText: isText,\n isComment: isComment,\n};\nexport default htmlDomApi;\n//# sourceMappingURL=htmldomapi.js.map\n","import vnode from './vnode.js';\nimport * as is from './is.js';\nimport htmlDomApi from './htmldomapi.js';\nfunction isUndef(s) { return s === undefined; }\nfunction isDef(s) { return s !== undefined; }\nvar emptyNode = vnode('', {}, [], undefined, undefined);\nfunction sameVnode(vnode1, vnode2) {\n return vnode1.key === vnode2.key && vnode1.sel === vnode2.sel;\n}\nfunction isVnode(vnode) {\n return vnode.sel !== undefined;\n}\nfunction createKeyToOldIdx(children, beginIdx, endIdx) {\n var i, map = {}, key, ch;\n for (i = beginIdx; i <= endIdx; ++i) {\n ch = children[i];\n if (ch != null) {\n key = ch.key;\n if (key !== undefined)\n map[key] = i;\n }\n }\n return map;\n}\nvar hooks = ['create', 'update', 'remove', 'destroy', 'pre', 'post'];\nexport { h } from './h';\nexport { thunk } from './thunk';\nexport function init(modules, domApi) {\n var i, j, cbs = {};\n var api = domApi !== undefined ? domApi : htmlDomApi;\n for (i = 0; i < hooks.length; ++i) {\n cbs[hooks[i]] = [];\n for (j = 0; j < modules.length; ++j) {\n var hook = modules[j][hooks[i]];\n if (hook !== undefined) {\n cbs[hooks[i]].push(hook);\n }\n }\n }\n function emptyNodeAt(elm) {\n var id = elm.id ? '#' + elm.id : '';\n var c = elm.className ? '.' + elm.className.split(' ').join('.') : '';\n return vnode(api.tagName(elm).toLowerCase() + id + c, {}, [], undefined, elm);\n }\n function createRmCb(childElm, listeners) {\n return function rmCb() {\n if (--listeners === 0) {\n var parent_1 = api.parentNode(childElm);\n api.removeChild(parent_1, childElm);\n }\n };\n }\n function createElm(vnode, insertedVnodeQueue) {\n var i, data = vnode.data;\n if (data !== undefined) {\n if (isDef(i = data.hook) && isDef(i = i.init)) {\n i(vnode);\n data = vnode.data;\n }\n }\n var children = vnode.children, sel = vnode.sel;\n if (sel === '!') {\n if (isUndef(vnode.text)) {\n vnode.text = '';\n }\n vnode.elm = api.createComment(vnode.text);\n }\n else if (sel !== undefined) {\n // Parse selector\n var hashIdx = sel.indexOf('#');\n var dotIdx = sel.indexOf('.', hashIdx);\n var hash = hashIdx > 0 ? hashIdx : sel.length;\n var dot = dotIdx > 0 ? dotIdx : sel.length;\n var tag = hashIdx !== -1 || dotIdx !== -1 ? sel.slice(0, Math.min(hash, dot)) : sel;\n var elm = vnode.elm = isDef(data) && isDef(i = data.ns) ? api.createElementNS(i, tag)\n : api.createElement(tag);\n if (hash < dot)\n elm.setAttribute('id', sel.slice(hash + 1, dot));\n if (dotIdx > 0)\n elm.setAttribute('class', sel.slice(dot + 1).replace(/\\./g, ' '));\n for (i = 0; i < cbs.create.length; ++i)\n cbs.create[i](emptyNode, vnode);\n if (is.array(children)) {\n for (i = 0; i < children.length; ++i) {\n var ch = children[i];\n if (ch != null) {\n api.appendChild(elm, createElm(ch, insertedVnodeQueue));\n }\n }\n }\n else if (is.primitive(vnode.text)) {\n api.appendChild(elm, api.createTextNode(vnode.text));\n }\n i = vnode.data.hook; // Reuse variable\n if (isDef(i)) {\n if (i.create)\n i.create(emptyNode, vnode);\n if (i.insert)\n insertedVnodeQueue.push(vnode);\n }\n }\n else {\n vnode.elm = api.createTextNode(vnode.text);\n }\n return vnode.elm;\n }\n function addVnodes(parentElm, before, vnodes, startIdx, endIdx, insertedVnodeQueue) {\n for (; startIdx <= endIdx; ++startIdx) {\n var ch = vnodes[startIdx];\n if (ch != null) {\n api.insertBefore(parentElm, createElm(ch, insertedVnodeQueue), before);\n }\n }\n }\n function invokeDestroyHook(vnode) {\n var i, j, data = vnode.data;\n if (data !== undefined) {\n if (isDef(i = data.hook) && isDef(i = i.destroy))\n i(vnode);\n for (i = 0; i < cbs.destroy.length; ++i)\n cbs.destroy[i](vnode);\n if (vnode.children !== undefined) {\n for (j = 0; j < vnode.children.length; ++j) {\n i = vnode.children[j];\n if (i != null && typeof i !== \"string\") {\n invokeDestroyHook(i);\n }\n }\n }\n }\n }\n function removeVnodes(parentElm, vnodes, startIdx, endIdx) {\n for (; startIdx <= endIdx; ++startIdx) {\n var i_1 = void 0, listeners = void 0, rm = void 0, ch = vnodes[startIdx];\n if (ch != null) {\n if (isDef(ch.sel)) {\n invokeDestroyHook(ch);\n listeners = cbs.remove.length + 1;\n rm = createRmCb(ch.elm, listeners);\n for (i_1 = 0; i_1 < cbs.remove.length; ++i_1)\n cbs.remove[i_1](ch, rm);\n if (isDef(i_1 = ch.data) && isDef(i_1 = i_1.hook) && isDef(i_1 = i_1.remove)) {\n i_1(ch, rm);\n }\n else {\n rm();\n }\n }\n else {\n api.removeChild(parentElm, ch.elm);\n }\n }\n }\n }\n function updateChildren(parentElm, oldCh, newCh, insertedVnodeQueue) {\n var oldStartIdx = 0, newStartIdx = 0;\n var oldEndIdx = oldCh.length - 1;\n var oldStartVnode = oldCh[0];\n var oldEndVnode = oldCh[oldEndIdx];\n var newEndIdx = newCh.length - 1;\n var newStartVnode = newCh[0];\n var newEndVnode = newCh[newEndIdx];\n var oldKeyToIdx;\n var idxInOld;\n var elmToMove;\n var before;\n while (oldStartIdx <= oldEndIdx && newStartIdx <= newEndIdx) {\n if (oldStartVnode == null) {\n oldStartVnode = oldCh[++oldStartIdx]; // Vnode might have been moved left\n }\n else if (oldEndVnode == null) {\n oldEndVnode = oldCh[--oldEndIdx];\n }\n else if (newStartVnode == null) {\n newStartVnode = newCh[++newStartIdx];\n }\n else if (newEndVnode == null) {\n newEndVnode = newCh[--newEndIdx];\n }\n else if (sameVnode(oldStartVnode, newStartVnode)) {\n patchVnode(oldStartVnode, newStartVnode, insertedVnodeQueue);\n oldStartVnode = oldCh[++oldStartIdx];\n newStartVnode = newCh[++newStartIdx];\n }\n else if (sameVnode(oldEndVnode, newEndVnode)) {\n patchVnode(oldEndVnode, newEndVnode, insertedVnodeQueue);\n oldEndVnode = oldCh[--oldEndIdx];\n newEndVnode = newCh[--newEndIdx];\n }\n else if (sameVnode(oldStartVnode, newEndVnode)) {\n patchVnode(oldStartVnode, newEndVnode, insertedVnodeQueue);\n api.insertBefore(parentElm, oldStartVnode.elm, api.nextSibling(oldEndVnode.elm));\n oldStartVnode = oldCh[++oldStartIdx];\n newEndVnode = newCh[--newEndIdx];\n }\n else if (sameVnode(oldEndVnode, newStartVnode)) {\n patchVnode(oldEndVnode, newStartVnode, insertedVnodeQueue);\n api.insertBefore(parentElm, oldEndVnode.elm, oldStartVnode.elm);\n oldEndVnode = oldCh[--oldEndIdx];\n newStartVnode = newCh[++newStartIdx];\n }\n else {\n if (oldKeyToIdx === undefined) {\n oldKeyToIdx = createKeyToOldIdx(oldCh, oldStartIdx, oldEndIdx);\n }\n idxInOld = oldKeyToIdx[newStartVnode.key];\n if (isUndef(idxInOld)) {\n api.insertBefore(parentElm, createElm(newStartVnode, insertedVnodeQueue), oldStartVnode.elm);\n newStartVnode = newCh[++newStartIdx];\n }\n else {\n elmToMove = oldCh[idxInOld];\n if (elmToMove.sel !== newStartVnode.sel) {\n api.insertBefore(parentElm, createElm(newStartVnode, insertedVnodeQueue), oldStartVnode.elm);\n }\n else {\n patchVnode(elmToMove, newStartVnode, insertedVnodeQueue);\n oldCh[idxInOld] = undefined;\n api.insertBefore(parentElm, elmToMove.elm, oldStartVnode.elm);\n }\n newStartVnode = newCh[++newStartIdx];\n }\n }\n }\n if (oldStartIdx <= oldEndIdx || newStartIdx <= newEndIdx) {\n if (oldStartIdx > oldEndIdx) {\n before = newCh[newEndIdx + 1] == null ? null : newCh[newEndIdx + 1].elm;\n addVnodes(parentElm, before, newCh, newStartIdx, newEndIdx, insertedVnodeQueue);\n }\n else {\n removeVnodes(parentElm, oldCh, oldStartIdx, oldEndIdx);\n }\n }\n }\n function patchVnode(oldVnode, vnode, insertedVnodeQueue) {\n var i, hook;\n if (isDef(i = vnode.data) && isDef(hook = i.hook) && isDef(i = hook.prepatch)) {\n i(oldVnode, vnode);\n }\n var elm = vnode.elm = oldVnode.elm;\n var oldCh = oldVnode.children;\n var ch = vnode.children;\n if (oldVnode === vnode)\n return;\n if (vnode.data !== undefined) {\n for (i = 0; i < cbs.update.length; ++i)\n cbs.update[i](oldVnode, vnode);\n i = vnode.data.hook;\n if (isDef(i) && isDef(i = i.update))\n i(oldVnode, vnode);\n }\n if (isUndef(vnode.text)) {\n if (isDef(oldCh) && isDef(ch)) {\n if (oldCh !== ch)\n updateChildren(elm, oldCh, ch, insertedVnodeQueue);\n }\n else if (isDef(ch)) {\n if (isDef(oldVnode.text))\n api.setTextContent(elm, '');\n addVnodes(elm, null, ch, 0, ch.length - 1, insertedVnodeQueue);\n }\n else if (isDef(oldCh)) {\n removeVnodes(elm, oldCh, 0, oldCh.length - 1);\n }\n else if (isDef(oldVnode.text)) {\n api.setTextContent(elm, '');\n }\n }\n else if (oldVnode.text !== vnode.text) {\n api.setTextContent(elm, vnode.text);\n }\n if (isDef(hook) && isDef(i = hook.postpatch)) {\n i(oldVnode, vnode);\n }\n }\n return function patch(oldVnode, vnode) {\n var i, elm, parent;\n var insertedVnodeQueue = [];\n for (i = 0; i < cbs.pre.length; ++i)\n cbs.pre[i]();\n if (!isVnode(oldVnode)) {\n oldVnode = emptyNodeAt(oldVnode);\n }\n if (sameVnode(oldVnode, vnode)) {\n patchVnode(oldVnode, vnode, insertedVnodeQueue);\n }\n else {\n elm = oldVnode.elm;\n parent = api.parentNode(elm);\n createElm(vnode, insertedVnodeQueue);\n if (parent !== null) {\n api.insertBefore(parent, vnode.elm, api.nextSibling(elm));\n removeVnodes(parent, [oldVnode], 0, 0);\n }\n }\n for (i = 0; i < insertedVnodeQueue.length; ++i) {\n insertedVnodeQueue[i].data.hook.insert(insertedVnodeQueue[i]);\n }\n for (i = 0; i < cbs.post.length; ++i)\n cbs.post[i]();\n return vnode;\n };\n}\n//# sourceMappingURL=snabbdom.js.map\n","var xlinkNS = 'http://www.w3.org/1999/xlink';\nvar xmlNS = 'http://www.w3.org/XML/1998/namespace';\nvar colonChar = 58;\nvar xChar = 120;\nfunction updateAttrs(oldVnode, vnode) {\n var key, elm = vnode.elm, oldAttrs = oldVnode.data.attrs, attrs = vnode.data.attrs;\n if (!oldAttrs && !attrs)\n return;\n if (oldAttrs === attrs)\n return;\n oldAttrs = oldAttrs || {};\n attrs = attrs || {};\n // update modified attributes, add new attributes\n for (key in attrs) {\n var cur = attrs[key];\n var old = oldAttrs[key];\n if (old !== cur) {\n if (cur === true) {\n elm.setAttribute(key, \"\");\n }\n else if (cur === false) {\n elm.removeAttribute(key);\n }\n else {\n if (key.charCodeAt(0) !== xChar) {\n elm.setAttribute(key, cur);\n }\n else if (key.charCodeAt(3) === colonChar) {\n // Assume xml namespace\n elm.setAttributeNS(xmlNS, key, cur);\n }\n else if (key.charCodeAt(5) === colonChar) {\n // Assume xlink namespace\n elm.setAttributeNS(xlinkNS, key, cur);\n }\n else {\n elm.setAttribute(key, cur);\n }\n }\n }\n }\n // remove removed attributes\n // use `in` operator since the previous `for` iteration uses it (.i.e. add even attributes with undefined value)\n // the other option is to remove all attributes with value == undefined\n for (key in oldAttrs) {\n if (!(key in attrs)) {\n elm.removeAttribute(key);\n }\n }\n}\nexport var attributesModule = { create: updateAttrs, update: updateAttrs };\nexport default attributesModule;\n//# sourceMappingURL=attributes.js.map","function updateProps(oldVnode, vnode) {\n var key, cur, old, elm = vnode.elm, oldProps = oldVnode.data.props, props = vnode.data.props;\n if (!oldProps && !props)\n return;\n if (oldProps === props)\n return;\n oldProps = oldProps || {};\n props = props || {};\n for (key in oldProps) {\n if (!props[key]) {\n delete elm[key];\n }\n }\n for (key in props) {\n cur = props[key];\n old = oldProps[key];\n if (old !== cur && (key !== 'value' || elm[key] !== cur)) {\n elm[key] = cur;\n }\n }\n}\nexport var propsModule = { create: updateProps, update: updateProps };\nexport default propsModule;\n//# sourceMappingURL=props.js.map","var raf = (typeof window !== 'undefined' && window.requestAnimationFrame) || setTimeout;\nvar nextFrame = function (fn) { raf(function () { raf(fn); }); };\nfunction setNextFrame(obj, prop, val) {\n nextFrame(function () { obj[prop] = val; });\n}\nfunction updateStyle(oldVnode, vnode) {\n var cur, name, elm = vnode.elm, oldStyle = oldVnode.data.style, style = vnode.data.style;\n if (!oldStyle && !style)\n return;\n if (oldStyle === style)\n return;\n oldStyle = oldStyle || {};\n style = style || {};\n var oldHasDel = 'delayed' in oldStyle;\n for (name in oldStyle) {\n if (!style[name]) {\n if (name[0] === '-' && name[1] === '-') {\n elm.style.removeProperty(name);\n }\n else {\n elm.style[name] = '';\n }\n }\n }\n for (name in style) {\n cur = style[name];\n if (name === 'delayed' && style.delayed) {\n for (var name2 in style.delayed) {\n cur = style.delayed[name2];\n if (!oldHasDel || cur !== oldStyle.delayed[name2]) {\n setNextFrame(elm.style, name2, cur);\n }\n }\n }\n else if (name !== 'remove' && cur !== oldStyle[name]) {\n if (name[0] === '-' && name[1] === '-') {\n elm.style.setProperty(name, cur);\n }\n else {\n elm.style[name] = cur;\n }\n }\n }\n}\nfunction applyDestroyStyle(vnode) {\n var style, name, elm = vnode.elm, s = vnode.data.style;\n if (!s || !(style = s.destroy))\n return;\n for (name in style) {\n elm.style[name] = style[name];\n }\n}\nfunction applyRemoveStyle(vnode, rm) {\n var s = vnode.data.style;\n if (!s || !s.remove) {\n rm();\n return;\n }\n var name, elm = vnode.elm, i = 0, compStyle, style = s.remove, amount = 0, applied = [];\n for (name in style) {\n applied.push(name);\n elm.style[name] = style[name];\n }\n compStyle = getComputedStyle(elm);\n var props = compStyle['transition-property'].split(', ');\n for (; i < props.length; ++i) {\n if (applied.indexOf(props[i]) !== -1)\n amount++;\n }\n elm.addEventListener('transitionend', function (ev) {\n if (ev.target === elm)\n --amount;\n if (amount === 0)\n rm();\n });\n}\nexport var styleModule = {\n create: updateStyle,\n update: updateStyle,\n destroy: applyDestroyStyle,\n remove: applyRemoveStyle\n};\nexport default styleModule;\n//# sourceMappingURL=style.js.map","import $ from '../../shared/dom7.js';\n\nfunction invokeHandler(handler, event, args) {\n if (typeof handler === 'function') {\n // call function handler\n handler(event, ...args);\n }\n}\nfunction handleEvent(event, args, vnode) {\n const name = event.type;\n const on = vnode.data.on;\n // call event handler(s) if exists\n if (on && on[name]) {\n invokeHandler(on[name], event, args, vnode);\n }\n}\nfunction createListener() {\n return function handler(event, ...args) {\n handleEvent(event, args, handler.vnode);\n };\n}\nfunction updateEvents(oldVnode, vnode) {\n const oldOn = oldVnode.data.on;\n const oldListener = oldVnode.listener;\n const oldElm = oldVnode.elm;\n const on = vnode && vnode.data.on;\n const elm = vnode && vnode.elm;\n // optimization for reused immutable handlers\n if (oldOn === on) {\n return;\n }\n // remove existing listeners which no longer used\n if (oldOn && oldListener) {\n // if element changed or deleted we remove all existing listeners unconditionally\n if (!on) {\n Object.keys(oldOn).forEach((name) => {\n $(oldElm).off(name, oldListener);\n });\n } else {\n Object.keys(oldOn).forEach((name) => {\n if (!on[name]) {\n $(oldElm).off(name, oldListener);\n }\n });\n }\n }\n // add new listeners which has not already attached\n if (on) {\n // reuse existing listener or create new\n const listener = oldVnode.listener || createListener();\n vnode.listener = listener;\n // update vnode for listener\n listener.vnode = vnode;\n // if element changed or added we add all needed listeners unconditionally\n if (!oldOn) {\n Object.keys(on).forEach((name) => {\n $(elm).on(name, listener);\n });\n } else {\n Object.keys(on).forEach((name) => {\n if (!oldOn[name]) {\n $(elm).on(name, listener);\n }\n });\n }\n }\n}\n\nexport default {\n create: updateEvents,\n update: updateEvents,\n destroy: updateEvents,\n};\n","/* eslint import/no-named-as-default: off */\nimport { init } from './snabbdom/snabbdom.js';\nimport attributesModule from './snabbdom/modules/attributes.js';\nimport propsModule from './snabbdom/modules/props.js';\nimport styleModule from './snabbdom/modules/style.js';\nimport eventListenersModule from './eventslisteners.js';\n\nconst patch = init([attributesModule, propsModule, styleModule, eventListenersModule]);\n\nexport default patch;\n","/* eslint no-underscore-dangle: \"off\" */\nimport { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport $h from './$h.js';\nimport { id as generateId, merge, eventNameToColonCase, deleteProps } from '../../shared/utils.js';\nimport vdom from './vdom.js';\nimport patch from './patch.js';\n\nclass Component {\n constructor(app, component, props = {}, { el, context, children } = {}) {\n const document = getDocument();\n merge(this, {\n f7: app,\n props: props || {},\n context: context || {},\n id: component.id || generateId(),\n children: children || [],\n theme: {\n ios: app.theme === 'ios',\n md: app.theme === 'md',\n aurora: app.theme === 'aurora',\n },\n style: component.style,\n __updateQueue: [],\n __eventHandlers: [],\n __onceEventHandlers: [],\n __onBeforeMount: [],\n __onMounted: [],\n __onBeforeUpdate: [],\n __onUpdated: [],\n __onBeforeUnmount: [],\n __onUnmounted: [],\n });\n\n const createComponent = () => {\n return component(this.props, this.getComponentContext(true));\n };\n\n const getRenderFuncion = (componentResult) =>\n new Promise((resolve, reject) => {\n if (typeof componentResult === 'function') {\n resolve(componentResult);\n } else if (componentResult instanceof Promise) {\n componentResult\n .then((render) => {\n resolve(render);\n })\n .catch((err) => {\n reject(err);\n });\n } else {\n reject(\n new Error(\n 'Framework7: Component render function is not a \"function\" type. Didn\\'t you forget to \"return $render\"?',\n ),\n );\n }\n });\n\n return new Promise((resolve, reject) => {\n const componentResult = createComponent();\n getRenderFuncion(componentResult)\n .then((render) => {\n this.renderFunction = render;\n\n const tree = this.render();\n\n if (el) {\n this.vnode = vdom(tree, this, true);\n if (this.style) {\n this.styleEl = document.createElement('style');\n this.styleEl.innerHTML = this.style;\n }\n this.el = el;\n patch(this.el, this.vnode);\n this.el = this.vnode.elm;\n this.$el = $(this.el);\n\n this.attachEvents();\n this.el.f7Component = this;\n this.mount();\n resolve(this);\n return;\n }\n // Make Dom\n if (tree) {\n this.vnode = vdom(tree, this, true);\n this.el = document.createElement(this.vnode.sel || 'div');\n patch(this.el, this.vnode);\n this.$el = $(this.el);\n }\n if (this.style) {\n this.styleEl = document.createElement('style');\n this.styleEl.innerHTML = this.style;\n }\n\n this.attachEvents();\n\n if (this.el) {\n this.el.f7Component = this;\n }\n\n resolve(this);\n })\n .catch((err) => {\n reject(err);\n });\n });\n }\n\n on(eventName, handler) {\n if (!this.__eventHandlers) return;\n this.__eventHandlers.push({ eventName, handler });\n }\n\n once(eventName, handler) {\n if (!this.__eventHandlers) return;\n this.__onceEventHandlers.push({ eventName, handler });\n }\n\n getComponentRef() {\n const self = this;\n return (initialValue) => {\n let value = initialValue;\n const obj = {};\n Object.defineProperty(obj, 'value', {\n get() {\n return value;\n },\n set(v) {\n value = v;\n self.update();\n },\n });\n return obj;\n };\n }\n\n getComponentStore() {\n const { state, _gettersPlain, dispatch } = this.f7.store;\n const $store = {\n state,\n dispatch,\n };\n $store.getters = new Proxy(_gettersPlain, {\n get: (target, prop) => {\n const obj = target[prop];\n const callback = (v) => {\n obj.value = v;\n this.update();\n };\n obj.onUpdated(callback);\n return obj;\n },\n });\n\n return $store;\n }\n\n getComponentContext(includeHooks) {\n const ctx = {\n $f7route: this.context.f7route,\n $f7router: this.context.f7router,\n $h,\n $,\n $id: this.id,\n $f7: this.f7,\n $f7ready: this.f7ready.bind(this),\n $theme: this.theme,\n $tick: this.tick.bind(this),\n $update: this.update.bind(this),\n $emit: this.emit.bind(this),\n $store: this.getComponentStore(),\n $ref: this.getComponentRef(),\n $el: {},\n };\n Object.defineProperty(ctx.$el, 'value', {\n get: () => {\n return this.$el;\n },\n });\n if (includeHooks)\n Object.assign(ctx, {\n $on: this.on.bind(this),\n $once: this.once.bind(this),\n $onBeforeMount: (handler) => this.__onBeforeMount.push(handler),\n $onMounted: (handler) => this.__onMounted.push(handler),\n $onBeforeUpdate: (handler) => this.__onBeforeUpdate.push(handler),\n $onUpdated: (handler) => this.__onUpdated.push(handler),\n $onBeforeUnmount: (handler) => this.__onBeforeUnmount.push(handler),\n $onUnmounted: (handler) => this.__onUnmounted.push(handler),\n });\n\n return ctx;\n }\n\n render() {\n return this.renderFunction(this.getComponentContext());\n }\n\n emit(name, data) {\n if (!this.el) return;\n this.$el.trigger(name, data);\n }\n\n attachEvents() {\n const { $el } = this;\n if (!this.__eventHandlers) return;\n this.__eventHandlers.forEach(({ eventName, handler }) => {\n $el.on(eventNameToColonCase(eventName), handler);\n });\n this.__onceEventHandlers.forEach(({ eventName, handler }) => {\n $el.once(eventNameToColonCase(eventName), handler);\n });\n }\n\n detachEvents() {\n const { $el } = this;\n if (!this.__eventHandlers) return;\n this.__eventHandlers.forEach(({ eventName, handler }) => {\n $el.on(eventNameToColonCase(eventName), handler);\n });\n this.__onceEventHandlers.forEach(({ eventName, handler }) => {\n $el.once(eventNameToColonCase(eventName), handler);\n });\n }\n\n startUpdateQueue() {\n const window = getWindow();\n if (this.__requestAnimationFrameId) return;\n const update = () => {\n this.hook('onBeforeUpdate');\n const tree = this.render();\n\n // Make Dom\n if (tree) {\n const newVNode = vdom(tree, this, false);\n this.vnode = patch(this.vnode, newVNode);\n }\n };\n this.__requestAnimationFrameId = window.requestAnimationFrame(() => {\n if (this.__updateIsPending) update();\n let resolvers = [...this.__updateQueue];\n this.__updateQueue = [];\n this.__updateIsPending = false;\n window.cancelAnimationFrame(this.__requestAnimationFrameId);\n delete this.__requestAnimationFrameId;\n delete this.__updateIsPending;\n resolvers.forEach((resolver) => resolver());\n resolvers = [];\n });\n }\n\n tick(callback) {\n return new Promise((resolve) => {\n function resolver() {\n resolve();\n if (callback) callback();\n }\n this.__updateQueue.push(resolver);\n this.startUpdateQueue();\n });\n }\n\n update(callback) {\n if (this.__destroyed) return new Promise(() => {});\n return new Promise((resolve) => {\n const resolver = () => {\n resolve();\n if (callback) callback();\n };\n this.__updateIsPending = true;\n this.__updateQueue.push(resolver);\n this.startUpdateQueue();\n });\n }\n\n setState(callback) {\n return this.update(callback);\n }\n\n f7ready(callback) {\n if (this.f7.initialized) {\n callback(this.f7);\n return;\n }\n this.f7.once('init', () => {\n callback(this.f7);\n });\n }\n\n mount(mountMethod) {\n this.hook('onBeforeMount', this.$el);\n if (this.styleEl) $('head').append(this.styleEl);\n if (mountMethod) mountMethod(this.el);\n this.hook('onMounted', this.$el);\n }\n\n destroy() {\n if (this.__destroyed) return;\n const window = getWindow();\n this.hook('onBeforeUnmount');\n\n if (this.styleEl) $(this.styleEl).remove();\n\n this.detachEvents();\n this.hook('onUnmounted');\n // Delete component instance\n if (this.el && this.el.f7Component) {\n this.el.f7Component = null;\n delete this.el.f7Component;\n }\n // Patch with empty node\n if (this.vnode) {\n this.vnode = patch(this.vnode, { sel: this.vnode.sel, data: {} });\n }\n // Clear update queue\n window.cancelAnimationFrame(this.__requestAnimationFrameId);\n this.__updateQueue = [];\n this.__eventHandlers = [];\n this.__onceEventHandlers = [];\n this.__onBeforeMount = [];\n this.__onMounted = [];\n this.__onBeforeUpdate = [];\n this.__onUpdated = [];\n this.__onBeforeUnmount = [];\n this.__onUnmounted = [];\n // Delete all props\n deleteProps(this);\n this.__destroyed = true;\n }\n\n hook(name, ...args) {\n if (this.__destroyed) return;\n this[`__${name}`].forEach((handler) => {\n handler(...args);\n });\n }\n}\n\nexport default Component;\n","import Component from './component-class.js';\nimport parseComponent from './parse-component.js';\nimport customComponents from './custom-components.js';\nimport $jsx from './$jsx.js';\n\nfunction registerComponent(tagName, component) {\n customComponents[tagName] = component;\n}\n\nfunction unregisterComponent(tagName) {\n delete customComponents[tagName];\n}\n\nexport { Component, $jsx };\nexport default {\n name: 'component',\n static: {\n Component,\n registerComponent,\n unregisterComponent,\n },\n create() {\n const app = this;\n app.component = {\n registerComponent,\n unregisterComponent,\n parse(componentString) {\n return parseComponent(componentString);\n },\n create(component, props, { root, el, context, children }) {\n return new Component(app, component, props, { root, el, context, children });\n },\n };\n },\n};\n","import { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { id } from '../../shared/utils.js';\n\nfunction parseComponent(componentString) {\n const window = getWindow();\n const document = getDocument();\n const componentId = id();\n const callbackCreateName = `f7_component_create_callback_${componentId}`;\n\n // Template\n let template;\n const hasTemplate = componentString.match(/<template([ ]?)([a-z0-9-]*)>/);\n if (hasTemplate) {\n template = componentString\n .split(/<template[ ]?[a-z0-9-]*>/)\n .filter((item, index) => index > 0)\n .join('<template>')\n .split('</template>')\n .filter((item, index, arr) => index < arr.length - 1)\n .join('</template>')\n .replace(/{{#raw}}([ \\n]*)<template/g, '{{#raw}}<template')\n .replace(/\\/template>([ \\n]*){{\\/raw}}/g, '/template>{{/raw}}')\n .replace(/([ \\n])<template/g, '$1{{#raw}}<template')\n .replace(/\\/template>([ \\n])/g, '/template>{{/raw}}$1');\n }\n\n // Parse Styles\n let style = null;\n\n if (componentString.indexOf('<style>') >= 0) {\n style = componentString.split('<style>')[1].split('</style>')[0];\n }\n if (componentString.indexOf('<style scoped>') >= 0) {\n style = componentString.split('<style scoped>')[1].split('</style>')[0];\n }\n\n // Parse Script\n let scriptContent;\n if (componentString.indexOf('<script>') >= 0) {\n const scripts = componentString.split('<script>');\n scriptContent = scripts[scripts.length - 1].split('</script>')[0].trim();\n } else {\n scriptContent = 'return () => {return $render}';\n }\n if (!scriptContent || !scriptContent.trim()) scriptContent = 'return () => {return $render}';\n\n // Parse Template\n if (template) {\n scriptContent = scriptContent\n .replace(\n '$render',\n `function ($$ctx) {\n var $ = $$ctx.$$;\n var $h = $$ctx.$h;\n var $root = $$ctx.$root;\n var $f7 = $$ctx.$f7;\n var $f7route = $$ctx.$f7route;\n var $f7router = $$ctx.$f7router;\n var $theme = $$ctx.$theme;\n var $update = $$ctx.$update;\n var $store = $$ctx.$store;\n var $ref = $$ctx.$ref;\n\n return $h\\`${template}\\`\n }\n `,\n )\n .replace(/export default/g, 'return');\n }\n\n // Execute Script\n scriptContent = `window.${callbackCreateName} = function () {${scriptContent}}`;\n\n // Insert Script El\n const scriptEl = document.createElement('script');\n scriptEl.innerHTML = scriptContent;\n $('head').append(scriptEl);\n\n const component = window[callbackCreateName]();\n\n // Remove Script El\n $(scriptEl).remove();\n window[callbackCreateName] = null;\n delete window[callbackCreateName];\n\n // Assign Style\n if (style) {\n component.style = style;\n }\n\n // Component ID\n component.id = componentId;\n return component;\n}\n\nexport default parseComponent;\n","import History from '../../shared/history.js';\n\nexport default {\n name: 'history',\n static: {\n history: History,\n },\n on: {\n init() {\n History.init(this);\n },\n },\n};\n","import { getWindow } from 'ssr-window';\nimport { extend } from '../../shared/utils.js';\n\nconst SW = {\n registrations: [],\n register(path, scope) {\n const app = this;\n const window = getWindow();\n\n if (!('serviceWorker' in window.navigator) || !app.serviceWorker.container) {\n return new Promise((resolve, reject) => {\n reject(new Error('Service worker is not supported'));\n });\n }\n return new Promise((resolve, reject) => {\n app.serviceWorker.container\n .register(path, scope ? { scope } : {})\n .then((reg) => {\n SW.registrations.push(reg);\n app.emit('serviceWorkerRegisterSuccess', reg);\n resolve(reg);\n })\n .catch((error) => {\n app.emit('serviceWorkerRegisterError', error);\n reject(error);\n });\n });\n },\n unregister(registration) {\n const app = this;\n const window = getWindow();\n if (!('serviceWorker' in window.navigator) || !app.serviceWorker.container) {\n return new Promise((resolve, reject) => {\n reject(new Error('Service worker is not supported'));\n });\n }\n let registrations;\n if (!registration) registrations = SW.registrations;\n else if (Array.isArray(registration)) registrations = registration;\n else registrations = [registration];\n return Promise.all(\n registrations.map(\n (reg) =>\n new Promise((resolve, reject) => {\n reg\n .unregister()\n .then(() => {\n if (SW.registrations.indexOf(reg) >= 0) {\n SW.registrations.splice(SW.registrations.indexOf(reg), 1);\n }\n app.emit('serviceWorkerUnregisterSuccess', reg);\n resolve();\n })\n .catch((error) => {\n app.emit('serviceWorkerUnregisterError', reg, error);\n reject(error);\n });\n }),\n ),\n );\n },\n};\n\nexport default {\n name: 'sw',\n params: {\n serviceWorker: {\n path: undefined,\n scope: undefined,\n },\n },\n create() {\n const app = this;\n const window = getWindow();\n extend(app, {\n serviceWorker: {\n container: 'serviceWorker' in window.navigator ? window.navigator.serviceWorker : undefined,\n registrations: SW.registrations,\n register: SW.register.bind(app),\n unregister: SW.unregister.bind(app),\n },\n });\n },\n on: {\n init() {\n const window = getWindow();\n if (!('serviceWorker' in window.navigator)) return;\n const app = this;\n if (app.device.cordova || (window.Capacitor && window.Capacitor.isNative)) return;\n if (!app.serviceWorker.container) return;\n const paths = app.params.serviceWorker.path;\n const scope = app.params.serviceWorker.scope;\n if (!paths || (Array.isArray(paths) && !paths.length)) return;\n const toRegister = Array.isArray(paths) ? paths : [paths];\n toRegister.forEach((path) => {\n app.serviceWorker.register(path, scope);\n });\n },\n },\n};\n","/* eslint-disable no-underscore-dangle */\nimport { extend } from '../../shared/utils.js';\n\nfunction createStore(storeParams = {}) {\n const store = {\n __store: true,\n };\n const originalState = { ...(storeParams.state || {}) };\n const actions = { ...(storeParams.actions || {}) };\n const getters = { ...(storeParams.getters || {}) };\n const state = extend({}, originalState);\n\n let propsQueue = [];\n const gettersDependencies = {};\n const gettersCallbacks = {};\n\n Object.keys(getters).forEach((getterKey) => {\n gettersDependencies[getterKey] = [];\n gettersCallbacks[getterKey] = [];\n });\n\n const getGetterValue = (getterKey) => {\n return getters[getterKey]({ state: store.state });\n };\n\n const addGetterDependencies = (getterKey, deps) => {\n if (!gettersDependencies[getterKey]) gettersDependencies[getterKey] = [];\n deps.forEach((dep) => {\n if (gettersDependencies[getterKey].indexOf(dep) < 0) {\n gettersDependencies[getterKey].push(dep);\n }\n });\n };\n\n const addGetterCallback = (getterKey, callback) => {\n if (!gettersCallbacks[getterKey]) gettersCallbacks[getterKey] = [];\n gettersCallbacks[getterKey].push(callback);\n };\n\n const runGetterCallbacks = (stateKey) => {\n const keys = Object.keys(gettersDependencies).filter((getterKey) => {\n return gettersDependencies[getterKey].indexOf(stateKey) >= 0;\n });\n keys.forEach((getterKey) => {\n if (!gettersCallbacks[getterKey] || !gettersCallbacks[getterKey].length) return;\n gettersCallbacks[getterKey].forEach((callback) => {\n callback(getGetterValue(getterKey));\n });\n });\n };\n\n const removeGetterCallback = (callback) => {\n Object.keys(gettersCallbacks).forEach((stateKey) => {\n const callbacks = gettersCallbacks[stateKey];\n\n if (callbacks.indexOf(callback) >= 0) {\n callbacks.splice(callbacks.indexOf(callback), 1);\n }\n });\n };\n\n // eslint-disable-next-line\n store.__removeCallback = (callback) => {\n removeGetterCallback(callback);\n };\n\n const getterValue = (getterKey, addCallback = true) => {\n if (getterKey === 'constructor') return undefined;\n propsQueue = [];\n const value = getGetterValue(getterKey);\n addGetterDependencies(getterKey, propsQueue);\n const onUpdated = (callback) => {\n addGetterCallback(getterKey, callback);\n };\n\n const obj = {\n value,\n onUpdated,\n };\n\n if (!addCallback) {\n return obj;\n }\n\n const callback = (v) => {\n obj.value = v;\n };\n\n obj.__callback = callback;\n addGetterCallback(getterKey, callback);\n // eslint-disable-next-line\n return obj;\n };\n\n store.state = new Proxy(state, {\n set: (target, prop, value) => {\n target[prop] = value;\n runGetterCallbacks(prop);\n return true;\n },\n get: (target, prop) => {\n propsQueue.push(prop);\n return target[prop];\n },\n });\n\n store.getters = new Proxy(getters, {\n set: () => false,\n get: (target, prop) => {\n if (!target[prop]) {\n return undefined;\n }\n return getterValue(prop, true);\n },\n });\n\n store._gettersPlain = new Proxy(getters, {\n set: () => false,\n get: (target, prop) => {\n if (!target[prop]) {\n return undefined;\n }\n return getterValue(prop, false);\n },\n });\n\n store.dispatch = (actionName, data) => {\n return new Promise((resolve, reject) => {\n if (!actions[actionName]) {\n reject();\n throw new Error(`Framework7: Store action \"${actionName}\" is not found`);\n }\n const result = actions[actionName]({ state: store.state, dispatch: store.dispatch }, data);\n resolve(result);\n });\n };\n\n return store;\n}\n\nexport default createStore;\n","import createStore from './create-store.js';\n\nexport { createStore };\nexport default {\n name: 'store',\n static: { createStore },\n proto: { createStore },\n};\n","import { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { bindMethods } from '../../shared/utils.js';\nimport { getDevice } from '../../shared/get-device.js';\n\nconst isCapacitor = () => {\n const window = getWindow();\n return (\n window.Capacitor &&\n window.Capacitor.isNative &&\n window.Capacitor.Plugins &&\n window.Capacitor.Plugins.StatusBar\n );\n};\n\nconst Statusbar = {\n hide() {\n const window = getWindow();\n const device = getDevice();\n if (device.cordova && window.StatusBar) {\n window.StatusBar.hide();\n }\n if (isCapacitor()) {\n window.Capacitor.Plugins.StatusBar.hide();\n }\n },\n show() {\n const window = getWindow();\n const device = getDevice();\n if (device.cordova && window.StatusBar) {\n window.StatusBar.show();\n }\n if (isCapacitor()) {\n window.Capacitor.Plugins.StatusBar.show();\n }\n },\n onClick() {\n const app = this;\n let pageContent;\n if ($('.popup.modal-in').length > 0) {\n // Check for opened popup\n pageContent = $('.popup.modal-in')\n .find('.page:not(.page-previous):not(.page-next):not(.cached)')\n .find('.page-content');\n } else if ($('.panel.panel-in').length > 0) {\n // Check for opened panel\n pageContent = $('.panel.panel-in')\n .find('.page:not(.page-previous):not(.page-next):not(.cached)')\n .find('.page-content');\n } else if ($('.views > .view.tab-active').length > 0) {\n // View in tab bar app layout\n pageContent = $('.views > .view.tab-active')\n .find('.page:not(.page-previous):not(.page-next):not(.cached)')\n .find('.page-content');\n } else if ($('.views').length > 0) {\n pageContent = $('.views')\n .find('.page:not(.page-previous):not(.page-next):not(.cached)')\n .find('.page-content');\n } else {\n pageContent = app.$el\n .children('.view')\n .find('.page:not(.page-previous):not(.page-next):not(.cached)')\n .find('.page-content');\n }\n\n if (pageContent && pageContent.length > 0) {\n // Check for tab\n if (pageContent.hasClass('tab')) {\n pageContent = pageContent.parent('.tabs').children('.page-content.tab-active');\n }\n if (pageContent.length > 0) pageContent.scrollTop(0, 300);\n }\n },\n setTextColor(color) {\n const window = getWindow();\n const device = getDevice();\n if (device.cordova && window.StatusBar) {\n if (color === 'white') {\n window.StatusBar.styleLightContent();\n } else {\n window.StatusBar.styleDefault();\n }\n }\n if (isCapacitor()) {\n if (color === 'white') {\n window.Capacitor.Plugins.StatusBar.setStyle({ style: 'DARK' });\n } else {\n window.Capacitor.Plugins.StatusBar.setStyle({ style: 'LIGHT' });\n }\n }\n },\n setBackgroundColor(color) {\n const window = getWindow();\n const device = getDevice();\n if (device.cordova && window.StatusBar) {\n window.StatusBar.backgroundColorByHexString(color);\n }\n if (isCapacitor()) {\n window.Capacitor.Plugins.StatusBar.setBackgroundColor({ color });\n }\n },\n isVisible() {\n const window = getWindow();\n const device = getDevice();\n return new Promise((resolve) => {\n if (device.cordova && window.StatusBar) {\n resolve(window.StatusBar.isVisible);\n }\n if (isCapacitor()) {\n window.Capacitor.Plugins.StatusBar.getInfo().then((info) => {\n resolve(info.visible);\n });\n }\n resolve(false);\n });\n },\n overlaysWebView(overlays = true) {\n const window = getWindow();\n const device = getDevice();\n if (device.cordova && window.StatusBar) {\n window.StatusBar.overlaysWebView(overlays);\n }\n if (isCapacitor()) {\n window.Capacitor.Plugins.StatusBar.setOverlaysWebView({ overlay: overlays });\n }\n },\n init() {\n const app = this;\n const window = getWindow();\n const device = getDevice();\n const params = app.params.statusbar;\n if (!params.enabled) return;\n const isCordova = device.cordova && window.StatusBar;\n const isCap = isCapacitor();\n\n if (isCordova || isCap) {\n if (params.scrollTopOnClick) {\n $(window).on('statusTap', Statusbar.onClick.bind(app));\n }\n if (device.ios) {\n if (params.iosOverlaysWebView) {\n Statusbar.overlaysWebView(true);\n } else {\n Statusbar.overlaysWebView(false);\n }\n if (params.iosTextColor === 'white') {\n Statusbar.setTextColor('white');\n } else {\n Statusbar.setTextColor('black');\n }\n }\n if (device.android) {\n if (params.androidOverlaysWebView) {\n Statusbar.overlaysWebView(true);\n } else {\n Statusbar.overlaysWebView(false);\n }\n if (params.androidTextColor === 'white') {\n Statusbar.setTextColor('white');\n } else {\n Statusbar.setTextColor('black');\n }\n }\n }\n if (params.iosBackgroundColor && device.ios) {\n Statusbar.setBackgroundColor(params.iosBackgroundColor);\n }\n if (params.androidBackgroundColor && device.android) {\n Statusbar.setBackgroundColor(params.androidBackgroundColor);\n }\n },\n};\n\nexport default {\n name: 'statusbar',\n params: {\n statusbar: {\n enabled: true,\n\n scrollTopOnClick: true,\n\n iosOverlaysWebView: true,\n iosTextColor: 'black',\n iosBackgroundColor: null,\n\n androidOverlaysWebView: false,\n androidTextColor: 'black',\n androidBackgroundColor: null,\n },\n },\n create() {\n const app = this;\n bindMethods(app, {\n statusbar: Statusbar,\n });\n },\n on: {\n init() {\n const app = this;\n Statusbar.init.call(app);\n },\n },\n};\n","import $ from '../../shared/dom7.js';\nimport { extend } from '../../shared/utils.js';\nimport View from './view-class.js';\n\nfunction getCurrentView(app) {\n const $popoverView = $('.popover.modal-in .view');\n const $popupView = $('.popup.modal-in .view');\n const $panelView = $('.panel.panel-in .view');\n let $viewsEl = $('.views');\n if ($viewsEl.length === 0) $viewsEl = app.$el;\n // Find active view as tab\n let $viewEl = $viewsEl.children('.view');\n if ($viewEl.length === 0) {\n $viewEl = $viewsEl.children('.tabs').children('.view');\n }\n // Propably in tabs or split view\n if ($viewEl.length > 1) {\n if ($viewEl.hasClass('tab')) {\n // Tabs\n $viewEl = $viewsEl.children('.view.tab-active');\n if ($viewEl.length === 0) {\n $viewEl = $viewsEl.children('.tabs').children('.view.tab-active');\n }\n } else {\n // Split View, leave appView intact\n }\n }\n if ($popoverView.length > 0 && $popoverView[0].f7View) return $popoverView[0].f7View;\n if ($popupView.length > 0 && $popupView[0].f7View) return $popupView[0].f7View;\n if ($panelView.length > 0 && $panelView[0].f7View) return $panelView[0].f7View;\n if ($viewEl.length > 0) {\n if ($viewEl.length === 1 && $viewEl[0].f7View) return $viewEl[0].f7View;\n if ($viewEl.length > 1) {\n return app.views.main;\n }\n }\n return undefined;\n}\n\nexport default {\n name: 'view',\n params: {\n view: {\n init: true,\n 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 // 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 if (app.theme === 'ios') return;\n\n const $tabbarEl = $(tabbarEl);\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 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 /* eslint no-underscore-dangle: [\"error\", { \"allow\": [\"_clientLeft\"] }] */\n modal._clientLeft = $el[0].clientLeft;\n\n // Modal\n function transitionEnd() {\n if ($el.hasClass('modal-out')) {\n modal.onClosed();\n } else if ($el.hasClass('modal-in')) {\n modal.onOpened();\n }\n }\n if (animate) {\n if ($backdropEl) {\n $backdropEl.removeClass('not-animated');\n $backdropEl.addClass('backdrop-in');\n }\n $el.animationEnd(() => {\n transitionEnd();\n });\n $el.transitionEnd(() => {\n transitionEnd();\n });\n $el.removeClass('modal-out not-animated').addClass('modal-in');\n modal.onOpen();\n } else {\n if ($backdropEl) {\n $backdropEl.addClass('backdrop-in not-animated');\n }\n $el.removeClass('modal-out').addClass('modal-in not-animated');\n modal.onOpen();\n modal.onOpened();\n }\n\n return modal;\n }\n\n close(animateModal) {\n const modal = this;\n const $el = modal.$el;\n const $backdropEl = modal.$backdropEl;\n\n let animate = true;\n if (typeof animateModal !== 'undefined') animate = animateModal;\n else if (typeof modal.params.animate !== 'undefined') {\n animate = modal.params.animate;\n }\n\n if (!$el || !$el.hasClass('modal-in')) {\n if (dialogsQueue.indexOf(modal) >= 0) {\n dialogsQueue.splice(dialogsQueue.indexOf(modal), 1);\n }\n return modal;\n }\n\n // backdrop\n if ($backdropEl) {\n let needToHideBackdrop = true;\n if (modal.type === 'popup') {\n modal.$el\n .prevAll('.popup.modal-in')\n .add(modal.$el.nextAll('.popup.modal-in'))\n .each((popupEl) => {\n const popupInstance = popupEl.f7Modal;\n if (!popupInstance) return;\n if (\n popupInstance.params.closeByBackdropClick &&\n popupInstance.params.backdrop &&\n popupInstance.backdropEl === modal.backdropEl\n ) {\n needToHideBackdrop = false;\n }\n });\n }\n if (needToHideBackdrop) {\n $backdropEl[animate ? 'removeClass' : 'addClass']('not-animated');\n $backdropEl.removeClass('backdrop-in');\n }\n }\n\n // Modal\n $el[animate ? 'removeClass' : 'addClass']('not-animated');\n\n function transitionEnd() {\n if ($el.hasClass('modal-out')) {\n modal.onClosed();\n } else if ($el.hasClass('modal-in')) {\n modal.onOpened();\n }\n }\n if (animate) {\n $el.animationEnd(() => {\n transitionEnd();\n });\n $el.transitionEnd(() => {\n transitionEnd();\n });\n $el.removeClass('modal-in').addClass('modal-out');\n // Emit close\n modal.onClose();\n } else {\n $el.addClass('not-animated').removeClass('modal-in').addClass('modal-out');\n // Emit close\n modal.onClose();\n modal.onClosed();\n }\n\n if (modal.type === 'dialog') {\n clearDialogsQueue();\n }\n\n return modal;\n }\n\n destroy() {\n const modal = this;\n if (modal.destroyed) return;\n modal.emit(`local::beforeDestroy modalBeforeDestroy ${modal.type}BeforeDestroy`, modal);\n if (modal.$el) {\n modal.$el.trigger(`modal:beforedestroy ${modal.type.toLowerCase()}:beforedestroy`);\n if (modal.$el.length && modal.$el[0].f7Modal) {\n delete modal.$el[0].f7Modal;\n }\n }\n deleteProps(modal);\n modal.destroyed = true;\n }\n}\n\nexport default Modal;\n","import $ from '../../shared/dom7.js';\nimport { extend } from '../../shared/utils.js';\nimport Modal from './modal-class.js';\n\nclass CustomModal extends Modal {\n constructor(app, params) {\n const extendedParams = extend(\n {\n backdrop: true,\n closeByBackdropClick: true,\n on: {},\n },\n params,\n );\n\n // Extends with open/close Modal methods;\n super(app, extendedParams);\n\n const customModal = this;\n\n customModal.params = extendedParams;\n\n // Find Element\n let $el;\n if (!customModal.params.el) {\n $el = $(customModal.params.content);\n } else {\n $el = $(customModal.params.el);\n }\n\n if ($el && $el.length > 0 && $el[0].f7Modal) {\n return $el[0].f7Modal;\n }\n\n if ($el.length === 0) {\n return customModal.destroy();\n }\n let $backdropEl;\n if (customModal.params.backdrop) {\n $backdropEl = app.$el.children('.custom-modal-backdrop');\n if ($backdropEl.length === 0) {\n $backdropEl = $('<div class=\"custom-modal-backdrop\"></div>');\n app.$el.append($backdropEl);\n }\n }\n\n function handleClick(e) {\n if (!customModal || customModal.destroyed) return;\n if ($backdropEl && e.target === $backdropEl[0]) {\n customModal.close();\n }\n }\n\n customModal.on('customModalOpened', () => {\n if (customModal.params.closeByBackdropClick && customModal.params.backdrop) {\n app.on('click', handleClick);\n }\n });\n customModal.on('customModalClose', () => {\n if (customModal.params.closeByBackdropClick && customModal.params.backdrop) {\n app.off('click', handleClick);\n }\n });\n\n extend(customModal, {\n app,\n $el,\n el: $el[0],\n $backdropEl,\n backdropEl: $backdropEl && $backdropEl[0],\n type: 'customModal',\n });\n\n $el[0].f7Modal = customModal;\n\n return customModal;\n }\n}\nexport default CustomModal;\n","import Modal from './modal-class.js';\nimport CustomModal from './custom-modal-class.js';\n\nexport default {\n name: 'modal',\n static: {\n Modal,\n CustomModal,\n },\n create() {\n const app = this;\n app.customModal = {\n create(params) {\n return new CustomModal(app, params);\n },\n };\n },\n params: {\n modal: {\n queueDialogs: true,\n },\n },\n};\n","import $ from './shared/dom7.js';\n\nimport Framework7 from './components/app/app-class.js';\n\n//IMPORT_HELPERS\n\nimport DeviceModule from './modules/device/device.js';\nimport SupportModule from './modules/support/support.js';\nimport UtilsModule from './modules/utils/utils.js';\nimport ResizeModule from './modules/resize/resize.js';\nimport RequestModule from './modules/request/request.js';\nimport TouchModule from './modules/touch/touch.js';\nimport ClicksModule from './modules/clicks/clicks.js';\nimport RouterModule from './modules/router/router.js';\nimport RouterComponentLoaderModule from './modules/router/component-loader.js';\nimport ComponentModule, { Component, $jsx } from './modules/component/component.js';\nimport HistoryModule from './modules/history/history.js';\nimport ServiceWorkerModule from './modules/service-worker/service-worker.js';\nimport StoreModule, { createStore } from './modules/store/store.js';\n\nimport Statusbar from './components/statusbar/statusbar.js';\nimport View from './components/view/view.js';\nimport Navbar from './components/navbar/navbar.js';\nimport Toolbar from './components/toolbar/toolbar.js';\nimport Subnavbar from './components/subnavbar/subnavbar.js';\nimport TouchRipple from './components/touch-ripple/touch-ripple.js';\nimport Modal from './components/modal/modal.js';\nimport Router from './modules/router/router-class.js';\n\n//IMPORT_COMPONENTS\n\n// UMD_ONLY_START\nif (typeof window !== 'undefined') {\n // Dom7\n if (!window.Dom7) window.Dom7 = $;\n}\n// UMD_ONLY_END\n\nRouter.use([RouterComponentLoaderModule]);\n\nFramework7.use([\n DeviceModule,\n SupportModule,\n UtilsModule,\n ResizeModule,\n RequestModule,\n TouchModule,\n ClicksModule,\n RouterModule,\n HistoryModule,\n ComponentModule,\n ServiceWorkerModule,\n StoreModule,\n Statusbar,\n View,\n Navbar,\n Toolbar,\n Subnavbar,\n TouchRipple,\n Modal,\n //INSTALL_COMPONENTS\n]);\n\n//NAMED_EXPORT\nexport default Framework7;\n"]}
|
|
1
|
+
{"version":3,"sources":["../../node_modules/ssr-window/ssr-window.esm.js","../../node_modules/dom7/dom7.esm.js","../../src/core/shared/dom7.js","../../src/core/shared/utils.js","../../src/core/shared/get-support.js","../../src/core/shared/get-device.js","../../src/core/shared/events-class.js","../../src/core/shared/class.js","../../src/core/shared/constructor-methods.js","../../src/core/components/app/load-module.js","../../src/core/components/app/app-class.js","../../src/core/shared/modal-methods.js","../../src/core/modules/device/device.js","../../src/core/modules/support/support.js","../../src/core/modules/utils/utils.js","../../src/core/modules/resize/resize.js","../../src/core/shared/request.js","../../src/core/modules/request/request.js","../../src/core/modules/touch/touch.js","../../node_modules/path-to-regexp/dist.es2015/index.js","../../src/core/shared/history.js","../../src/core/modules/router/swipe-back.js","../../src/core/modules/router/redirect.js","../../src/core/modules/router/process-route-queue.js","../../src/core/modules/router/app-router-check.js","../../src/core/modules/router/async-component.js","../../src/core/modules/router/navigate.js","../../src/core/modules/router/back.js","../../src/core/modules/router/router-class.js","../../src/core/modules/router/tab.js","../../src/core/modules/router/modal.js","../../src/core/modules/router/clear-previous-history.js","../../src/core/modules/router/router.js","../../src/core/components/view/resizable-view.js","../../src/core/components/view/view-class.js","../../src/core/modules/clicks/clicks.js","../../src/core/modules/router/component-loader.js","../../node_modules/htm/dist/htm.mjs","../../src/core/modules/component/$h.js","../../src/core/modules/component/snabbdom/vnode.js","../../src/core/modules/component/snabbdom/is.js","../../src/core/modules/component/snabbdom/h.js","../../src/core/modules/component/custom-components.js","../../src/core/modules/component/vdom.js","../../src/core/modules/component/snabbdom/htmldomapi.js","../../src/core/modules/component/snabbdom/snabbdom.js","../../src/core/modules/component/snabbdom/modules/attributes.js","../../src/core/modules/component/snabbdom/modules/props.js","../../src/core/modules/component/snabbdom/modules/style.js","../../src/core/modules/component/eventslisteners.js","../../src/core/modules/component/patch.js","../../src/core/modules/component/component-class.js","../../src/core/modules/component/component.js","../../src/core/modules/component/parse-component.js","../../src/core/modules/history/history.js","../../src/core/modules/service-worker/service-worker.js","../../src/core/modules/store/create-store.js","../../src/core/modules/store/store.js","../../src/core/components/statusbar/statusbar.js","../../src/core/components/view/view.js","../../src/core/components/navbar/navbar.js","../../src/core/components/toolbar/toolbar.js","../../src/core/components/subnavbar/subnavbar.js","../../src/core/components/touch-ripple/touch-ripple-class.js","../../src/core/components/touch-ripple/touch-ripple.js","../../src/core/components/modal/modal-class.js","../../src/core/components/modal/custom-modal-class.js","../../src/core/components/modal/modal.js","../../src/core/framework7.js"],"names":["isObject","obj","constructor","Object","extend","target","src","keys","forEach","key","length","ssrDocument","body","addEventListener","removeEventListener","activeElement","blur","nodeName","querySelector","querySelectorAll","getElementById","createEvent","initEvent","createElement","children","childNodes","style","setAttribute","getElementsByTagName","createElementNS","importNode","location","hash","host","hostname","href","origin","pathname","protocol","search","getDocument","doc","document","ssrWindow","navigator","userAgent","history","replaceState","pushState","go","back","CustomEvent","this","getComputedStyle","getPropertyValue","Image","Date","screen","setTimeout","clearTimeout","matchMedia","requestAnimationFrame","callback","cancelAnimationFrame","id","getWindow","win","window","Dom7","Array","items","super","proto","__proto__","defineProperty","get","set","value","makeReactive","arrayFlat","arr","res","el","isArray","push","arrayFilter","prototype","filter","call","$","selector","context","html","trim","indexOf","toCreate","tempParent","innerHTML","i","a","qsa","nodeType","uniqueArray","arrayUnique","fn","noTrigger","split","shortcut","name","_len14","arguments","args","_key14","trigger","on","click","focus","focusin","focusout","keyup","keydown","keypress","submit","change","mousedown","mousemove","mouseup","mouseenter","mouseleave","mouseout","mouseover","touchstart","touchend","touchmove","resize","scroll","dom","j","_len10","els","_key10","toAdd","_len","classes","_key","classNames","map","c","classList","add","initialProps","initialParams","props","assign","params","duration","easing","elements","animating","que","easingProgress","progress","Math","cos","PI","stop","frameId","each","dom7AnimateInstance","done","complete","shift","animate","index","initialFullValue","initialValue","unit","finalValue","finalFullValue","container","prop","replace","parseFloat","currentValue","startTime","time","elementsDone","propsDone","began","render","easeProgress","getTime","begin","max","min","element","animateInstance","fireCallBack","e","off","newChild","k","undefined","tempDiv","firstChild","appendChild","parent","append","attrs","getAttribute","attrName","is","closest","parents","eq","dom7ElementDataStorage","dataKey","dataset","attributes","attr","string","toLowerCase","match","group","toUpperCase","remove","apply","parentNode","removeChild","textContent","returnIndex","foundElements","found","_len4","_key4","className","contains","innerHeight","css","display","child","previousSibling","after","insertBefore","nextSibling","cloneNode","before","compareWith","matches","webkitMatchesSelector","msMatchesSelector","nextElementSibling","nextEls","next","_len6","_key6","eventType","targetSelector","listener","capture","events","event","handlers","dom7Listeners","dom7LiveListeners","handler","dom7proxy","proxyListener","splice","box","getBoundingClientRect","clientTop","clientLeft","scrollTop","scrollY","scrollLeft","scrollX","top","left","_len5","_key5","handleLiveEvent","eventData","dom7EventData","unshift","handleEvent","_len7","_key7","eventName","onceHandler","_len8","eventArgs","_key8","includeMargins","styles","offsetHeight","offsetWidth","prepend","previousElementSibling","prevEls","prev","propName","removeAttribute","_len2","_key2","_len13","_key13","scrollTo","_len11","_key11","currentTop","currentLeft","maxTop","maxLeft","newTop","newLeft","animateTop","animateLeft","scrollHeight","scrollWidth","_len12","_key12","nextAll","prevAll","text","_len3","_key3","toggle","transform","transitionDuration","_len9","_key9","evt","detail","bubbles","cancelable","data","dataIndex","dispatchEvent","multiple","values","selectedOptions","options","selected","val","innerWidth","methods","methodName","uniqueNum","mask","floor","random","mdPreloaderContent","iosPreloaderContent","join","eventNameToColonCase","hasColon","char","deleteProps","object","nextTick","delay","nextFrame","now","parseUrlQuery","url","query","urlToParse","param","paramsPart","decodeURIComponent","slice","serializeObject","resultArray","newParents","varName","parentParts","encodeURIComponent","varValue","toPush","String","o","merge","to","from","nextSource","keysArray","nextIndex","len","nextKey","desc","getOwnPropertyDescriptor","enumerable","deep","colorHexToRgb","hex","h","m","r","g","b","result","exec","n","parseInt","colorRgbToHex","toString","colorRgbToHsl","d","l","abs","colorHslToRgb","s","hp","x","rgb1","Number","isNaN","round","bindMethods","instance","subKey","bind","flattenArray","arg","axis","matrix","curTransform","transformMatrix","curStyle","WebKitCSSMatrix","webkitTransform","MozTransform","OTransform","MsTransform","msTransform","m41","m42","HSL","HSB","t","rgb","hsl","hslShade","hslTint","shade","tint","support","deviceCalculated","getSupport","touch","DocumentTouch","pointerEvents","PointerEvent","maxTouchPoints","passiveListener","supportsPassive","opts","intersectionObserver","calcSupport","getDevice","overrides","reset","_temp","platform","ua","device","ios","android","androidChrome","desktop","iphone","ipod","ipad","edge","ie","firefox","macos","windows","cordova","electron","capacitor","Capacitor","nwjs","screenWidth","width","screenHeight","height","nw","process","versions","os","osVersion","webView","standalone","webview","pixelRatio","devicePixelRatio","prefersColorScheme","theme","calcDevice","EventsClass","eventsParents","eventsListeners","priority","self","method","once","f7proxy","eventHandler","emit","local","eventsArray","localEvents","parentEvents","eventsParent","Framework7Class","useModuleParams","module","instanceParams","originalParams","paramKey","useModulesParams","modules","moduleName","useModule","moduleParams","modulePropName","moduleProp","moduleEventName","vnode","vnodeHooks","vnodeId","hookName","create","useModules","modulesParams","components","use","installModule","Class","static","install","ConstructorMethods","parameters","defaultSelector","Constructor","domProp","app","addMethods","$el","destroy","fetchedModules","Framework7","Error","passedParams","w","defaults","version","language","routes","lazyModulesPath","initOnDeviceReady","init","autoDarkMode","iosTranslucentBars","iosTranslucentModals","component","componentUrl","online","onLine","store","f7","initStore","mount","rootEl","$rootEl","rtl","DARK","LIGHT","mq","dark","light","colorSchemeListener","_ref","media","darkMode","__store","createStore","enableAutoDarkMode","addListener","disableAutoDarkMode","removeListener","initAppComponent","router","componentLoader","componentOptions","$elComponent","f7Component","initialized","addClass","removeClass","loadModule","loadModules","getVnodeHooks","hook","Events","ModalMethods","open","targetEl","$targetPage","modalEl","$modalEl","f7Modal","close","$parentEl","$targetEl","moduleToLoad","Promise","resolve","reject","modulePath","moduleObj","moduleFunc","matchNamePattern","scriptLoad","resolveScript","rejectScript","request","scriptContent","callbackId","callbackLoadName","scriptEl","xhr","status","styleLoad","resolveStyle","styleContent","styleEl","all","then","catch","err","DeviceModule","metaStatusbar","content","SupportModule","UtilsModule","utils","ResizeModule","getSize","offset","orientationchange","globals","jsonpRequests","RequestResponse","RequestError","requestOptions","globalsNoCallbacks","callbackName","async","cache","user","password","headers","xhrFields","statusCode","processData","dataType","contentType","timeout","proceedRequest","abortController","canceled","message","fireCallback","globalCallbackValue","optionCallbackValue","type","paramsPrefix","stringData","abortTimeout","callbackSplit","requestUrl","addVars","script","onerror","XMLHttpRequest","aborted","onAbort","abort","requestParameters","postData","postDataInstances","ArrayBuffer","Blob","Document","FormData","boundary","setRequestHeader","newData","JSON","stringify","Accept","headerName","crossDomain","test","RegExp","$2","onload","responseData","parseError","parse","responseText","responseType","response","statusText","ontimeout","send","requestShortcut","success","error","post","json","getJSON","postJSON","contoller","setup","RequestModule","TouchModule","touchClicksDistanceThreshold","disableContextMenu","tapHold","tapHoldDelay","tapHoldPreventClicks","activeState","activeStateElements","activeStateOnMouseMove","mdTouchRipple","iosTouchRipple","auroraTouchRipple","touchRippleElements","touchRippleInsetElements","touchEvents","start","move","end","useRipple","touchStartX","touchStartY","targetElement","isMoved","tapHoldFired","tapHoldTimeout","preventClick","activableElement","activeTimeout","rippleWave","rippleTarget","rippleTimeout","isScrolling","findActivableElement","activable","newActivable","preventPropagation","hasClass","isInsideScrollableView","addActive","removeActive","createRipple","y","touchRipple","removeRipple","rippleTouchStart","findRippleElement","rippleElements","rippleParent","rippleTouchMove","rippleTouchEnd","handleMouseUp","isSegmentedStrong","segmentedStrongEl","touchMoveActivableIos","isTouchMoveActivable","touchmoveActivableEl","emitAppTouchEvent","appTouchStartActive","appTouchMoveActive","appTouchEndActive","appTouchStartPassive","appTouchMovePassive","appTouchEndPassive","passive","passiveListenerCapture","activeListener","activeListenerCapture","appClick","handleClick","isOverswipe","isSegmented","localPreventClick","stopImmediatePropagation","stopPropagation","preventDefault","handleTouchStart","targetTouches","touches","pageX","pageY","handleTouchMove","distance","shouldRemoveActive","touchCurrentX","touchCurrentY","elementFromPoint","buttonEl","clientX","clientY","handleTouchEnd","handleMouseDown","$activableEl","which","isNative","str","tokens","count","pattern","TypeError","code","charCodeAt","lexer","_a","prefixes","defaultPattern","escapeString","delimiter","path","tryConsume","mustConsume","nextType","consumeText","prefix","suffix","modifier","name_1","pattern_1","compile","tokensToFunction","reFlags","flags","encode","_b","validate","token","optional","repeat","segment","typeOfMessage","sensitive","stringToRegexp","strict","_c","_d","endsWith","route","_i","tokens_1","mod","endToken","isEndDelimited","tokensToRegexp","pathToRegexp","groupsRegex","execResult","source","regexpToRegexp","paths","parts","arrayToRegexp","History","queue","clearQueue","currentQueue","routerQueue","clearRouterQueue","pop","stateUrl","action","browserHistoryAnimate","browserHistory","navigate","handle","blockPopstate","state","previousState","allowChange","views","view","viewState","allowPageChange","initViewState","viewId","newState","substr","readyState","SwipeBack","$navbarsEl","isTouched","touchesStart","viewContainerWidth","touchesDiff","touchStartTime","dynamicNavbar","$pageShadowEl","$pageOpacityEl","animatableNavEls","$currentPageEl","$previousPageEl","allowViewTouchMove","$currentNavbarEl","$previousNavbarEl","paramsSwipeBackAnimateShadow","paramsSwipeBackAnimateOpacity","paramsSwipeBackActiveArea","paramsSwipeBackThreshold","transformOrigin","transformOriginTitleLarge","setAnimatableNavElements","transition","reflow","_clientLeft","classNameSet","styleProp","swipeBackEnabled","swipeout","masterDetailBreakpoint","f7PreventSwipeBack","preventSwipeBack","cancel","find","notFromBorder","inverter","currentNavIsTransparent","currentNavIsLarge","currentNavIsCollapsed","currentNavIsLargeTransparent","previousNavIsTransparent","previousNavIsLarge","previousNavIsCollapsed","previousNavIsLargeTransparent","fromLarge","toLarge","$currentNavElements","$previousNavElements","activeNavBackIconText","previousNavBackIconText","iosAnimateNavbarBackIcon","f7NavbarLeftOffset","navEl","$navEl","isSubnavbar","isLeft","isTitle","isBg","overflow","subNavEl","opacity","isSliding","transformTarget","textEl","activeNavTranslate","f7NavbarRightOffset","previousNavTranslate","animatableNavElements","sheet","f7PreventSwipePanel","preventSwipePanelBySwipeBack","percentage","callbackData","currentPageEl","previousPageEl","currentNavbarEl","previousNavbarEl","currentPageTranslate","previousPageTranslate","swipeBackActive","$pages","timeDiff","pageChanged","removeAttr","setNavbarPosition","currentRoute","f7Page","currentPage","pageCallback","swipeBack","transitionEnd","saveHistory","stackPages","initialPages","removePage","removeNavbar","previousRoute","preloadPreviousPage","preload","attachEvents","redirect","direction","initial","redirectUrl","redirectOptions","processQueue","routeQueue","processRouteQueue","enterNextRoute","routesBeforeEnter","beforeEnter","routesBeforeLeave","beforeLeave","appRouterCheck","asyncComponent","resolvePromise","componentPromise","default","_default","asyncComponentResult","forward","forwardOptions","reloadCurrent","reloadPages","reloadPrevious","reloadAll","clearPreviousHistory","reloadDetail","masterDetailEnabled","isMaster","master","masterPageEl","otherDetailPageEl","modalType","detailsInBetweenRemoved","currentRouteIsModal","modal","modalLoadProp","modalToClose","modalInstance","previousUrl","findMatchingRoute","modalRemove","$viewEl","$newPage","reload","$oldPage","$newNavbarEl","$oldNavbarEl","removeThemeElements","$navbarEl","keepAlive","keepAliveData","pageEl","$pagesInView","pageInView","$navbarsInView","isDetail","isDetailRoot","navbarInView","newPagePosition","position","role","root","detailRoot","navbar","getElByPage","navbarEl","removedPageEls","removedNavbarEls","oldNavbarEl","browserHistoryRoot","browserHistorySeparator","newPageInDom","componentEl","f7PageMounted","$oldPageEl","$oldNavbarElEl","tab","tabLoad","checkMasterDetailBreakpoint","setPagePosition","afterAnimation","keepOldPage","setPositionClasses","f7PageTransition","load","loadParams","loadOptions","ignorePageChange","pageName","parentPath","sameParams","paramName","allowDuplicateUrls","parseRouteUrl","getPageEl","pageComponentLoader","routerEl","newOptions","xhrAbortController","xhrRequest","pageContent","backward","backwardOptions","masterPageRemoved","initialPreload","currentIsMaster","backIndex","masterRoute","force","pageToRemove","$pageToRemove","$navbarToRemove","insertPage","$previousPages","loadBack","backParams","backOptions","Router","isAppRouter","routerId","scrollHistory","iosDynamicNavbar","initialNavbars","configurable","newRoute","tempDom","navbarsEl","animateIcon","newNavEls","oldNavEls","animatableNavEl","$navbarInner","needsOpacityTransition","$iconEl","isIconLabel","leftOffset","rightOffset","navEls","otherEls","otherNavEl","iconTextEl","offsetLeft","$newPageEl","animateCustom","routerCustomTransitionClass","onCustomTransitionDone","animationEnd","routerTransitionClass","toDifferent","oldIsLarge","newIsLarge","animateNavbars","setProperty","removeModal","removeEl","removeTabContent","tabEl","tabChild","removeElements","removeElementsWithTimeout","removeElementsTimeout","findElement","stringSelector","notStacked","$container","viewMainClass","flattenRoutes","flattenedRoutes","hasTabRoutes","tabs","mergedPathsRoutes","tabRoute","tRoute","concat","detailRoutes","detailRoute","dRoute","masterRoutePath","childRoute","cRoute","generateUrl","findRouteByKey","constructRouteUrl","toUrl","findTabRouteUrl","$tabEl","tabId","foundTabRouteUrl","matchingRoute","pathsToMatch","matched","alias","aliasPath","pathToMatch","keyObj","paramValue","replaceRequestUrlParams","compiledUrl","regExp","removeFromXhrCache","xhrCache","ignoreCache","hasQuery","passRouteQueryToRequest","passRouteParamsToRequest","xhrCacheIgnoreGetParameters","xhrCacheIgnore","cachedUrl","xhrCacheDuration","beforeSend","ariaHidden","toRemove","getPageData","pageFromEl","$pageEl","pageFrom","fromPage","$pageFromEl","page","restoreScrollTopOnBack","camelName","colonName","f7RouteEventsAttached","f7RouteEventsOn","f7RouteEventsOnce","$pageContent","pageContentEl","f7PageInitialized","browserHistoryStoreHistory","localStorage","restoreHistory","clearHistory","updateCurrentUrl","newUrl","getInitialUrl","initialUrl","historyRestored","URL","documentUrl","browserHistoryOnLoad","console","warn","iosSwipeBack","mdSwipeBack","auroraSwipeBack","browserHistoryAnimateOnLoad","browserHistoryInitialMatch","initUrl","loadInitialPage","modalOpen","pageAfterIn","hasTabRoute","initOptions","routerProp","navigateParams","navigateOptions","createRoute","navigateUrl","currentPath","viewName","anotherViewName","anotherView","openIn","ignoreOpenIn","routerLoaded","asyncResolve","resolveParams","resolveOptions","resolvedAsModal","modalRoute","modalLoad","asyncReject","pageLoadProp","preloadMaster","masterLoaded","refreshPage","parentPageEl","browserHistoryTabs","$parentPageEl","tabShowResult","show","$newTabEl","$oldTabEl","animated","onTabsChanged","tabParentPageData","f7RouterTabLoaded","loadTab","loadTabParams","loadTabOptions","contentEl","onTabLoaded","tabEventTarget","unloadTabContent","tabRemove","tabComponentLoader","tabContent","hasContentLoadProp","tabLoadProp","hasTabComponentChild","isPanel","modalOrPanel","modalParams","routeCallback","panelOpen","modalClose","panelClose","modalClosed","panelClosed","onModalLoaded","hasEl","closeOnSwipeBack","closeByRouter","modalComponent","loadModal","loadModalParams","loadModalOptions","modalComponentLoader","modalContent","foundLoadProp","prevOpenedModals","forceOtherUrl","isBrokenBrowserHistory","needHistoryBack","currentRouteWithoutBrowserHistory","skipMaster","$previousPage","$previousMaster","expectedPreviousPageUrl","expectedPreviousPageRoute","previousPageRoute","backForceLoaded","panel","clearPreviousPages","RouterModule","templates","resizableView","resizableInitialized","resizable","resizableWidth","$htmlEl","$resizeHandlerEl","minWidth","maxWidth","transformCSSWidth","v","newV","$pageMasterEl","newWidth","handleResize","View","viewParams","routesAdd","main","f7View","viewProp","wasMasterDetail","isMasterDetail","initMasterDetail","masterDetailResizable","viewEl","initRouterOnTabShow","ClicksModule","clicks","externalLinks","handleClicks","$clickedEl","$clickedLinkEl","isLink","InAppBrowser","Plugins","Browser","moduleClicks","preventF7Router","clickSelector","matchingClickedElement","clickedLinkData","clickedEl","current","linksView","ViewClass","f7RouteProps","initClicks","RouterComponentLoaderModule","popup","loginScreen","popover","side","effect","componentFunction","componentContext","f7route","f7router","componentProps","routeProps","componentRoot","createdComponent","cachedComponent","componentCache","cached","loadedComponent","parsedComponent","_temp2","_temp3","u","p","Map","ignoreChildren","$h","sel","elm","array","primitive","addNS","ns","childData","customComponents","SELF_CLOSING","PROPS_ATTRS","BOOLEAN_PROPS","getTagName","treeNode","toCamelCase","word","propsFromAttrs","isCustomComponent","treeNodeType","getHooks","isRoot","hooks","insert","update","postpatch","isFakeElement","tagName","isCustom","__component__","createCustomComponent","destroyCustomComponent","oldVnode","newProps","updateCustomComponent","class","vn","f","getChildren","nodes","childNode","treeNodeToVNode","isTreeNode","getSlots","slotName","slotNodes","childTreeNode","childSlotName","slot","subTreeNode","attrValue","prevent","eventNamePart","eventNameIndex","fired","getEventHandler","prepatch","getData","vdom","tree","htmlDomApi","namespaceURI","qualifiedName","createTextNode","createComment","newNode","referenceNode","node","setTextContent","getTextContent","isElement","isText","isUndef","isDef","emptyNode","vnode1","vnode2","createKeyToOldIdx","beginIdx","endIdx","ch","oldAttrs","cur","setAttributeNS","attributesModule","updateAttrs","oldProps","propsModule","updateProps","raf","setNextFrame","oldStyle","oldHasDel","removeProperty","delayed","name2","styleModule","updateStyle","rm","amount","applied","ev","invokeHandler","updateEvents","oldOn","oldListener","oldElm","patch","domApi","cbs","api","emptyNodeAt","childElm","listeners","parent_1","insertedVnodeQueue","hashIdx","dotIdx","dot","tag","createElm","parentElm","vnodes","startIdx","invokeDestroyHook","removeVnodes","i_1","createRmCb","patchVnode","oldCh","newCh","oldStartIdx","oldKeyToIdx","idxInOld","elmToMove","newStartIdx","oldEndIdx","oldStartVnode","oldEndVnode","newEndIdx","newStartVnode","newEndVnode","sameVnode","addVnodes","updateChildren","pre","isVnode","Component","generateId","md","aurora","__updateQueue","__eventHandlers","__onceEventHandlers","__onBeforeMount","__onMounted","__onBeforeUpdate","__onUpdated","__onBeforeUnmount","__onUnmounted","createComponent","getComponentContext","componentResult","getRenderFuncion","renderFunction","getComponentRef","getComponentStore","_gettersPlain","dispatch","$store","getters","Proxy","onUpdated","includeHooks","ctx","$f7route","$f7router","$id","$f7","$f7ready","f7ready","$theme","$tick","tick","$update","$emit","$ref","$on","$once","$onBeforeMount","$onMounted","$onBeforeUpdate","$onUpdated","$onBeforeUnmount","$onUnmounted","_ref2","detachEvents","_ref3","_ref4","startUpdateQueue","__requestAnimationFrameId","newVNode","__updateIsPending","resolvers","resolver","__destroyed","setState","mountMethod","registerComponent","unregisterComponent","ComponentModule","componentString","componentId","callbackCreateName","template","item","scripts","parseComponent","HistoryModule","SW","registrations","register","scope","serviceWorker","reg","unregister","registration","ServiceWorkerModule","storeParams","originalState","actions","propsQueue","gettersDependencies","gettersCallbacks","getterKey","getGetterValue","addGetterCallback","__removeCallback","stateKey","callbacks","removeGetterCallback","getterValue","addCallback","deps","dep","addGetterDependencies","__callback","actionName","StoreModule","isCapacitor","StatusBar","Statusbar","hide","onClick","setTextColor","color","styleLightContent","styleDefault","setStyle","setBackgroundColor","backgroundColorByHexString","isVisible","getInfo","info","visible","overlaysWebView","overlays","setOverlaysWebView","overlay","statusbar","enabled","isCordova","isCap","scrollTopOnClick","iosOverlaysWebView","iosTextColor","androidOverlaysWebView","androidTextColor","iosBackgroundColor","androidBackgroundColor","Statusbar$1","iosSwipeBackAnimateShadow","iosSwipeBackAnimateOpacity","iosSwipeBackActiveArea","iosSwipeBackThreshold","mdSwipeBackAnimateShadow","mdSwipeBackAnimateOpacity","mdSwipeBackActiveArea","mdSwipeBackThreshold","auroraSwipeBackAnimateShadow","auroraSwipeBackAnimateOpacity","auroraSwipeBackActiveArea","auroraSwipeBackThreshold","iosPageLoadDelay","mdPageLoadDelay","auroraPageLoadDelay","$popoverView","$popupView","$panelView","$viewsEl","getCurrentView","Navbar","size","$innerEl","needCenterTitle","needLeftTitle","iosCenterTitle","right","title","subnavbar","noLeft","noRight","leftWidth","outerWidth","rightWidth","titleWidth","navbarStyles","navbarInnerWidth","paddingLeft","paddingRight","isPrevious","sliding","currLeft","diff","requiredLeft","titleLeftOffset","titleRightOffset","activeNavbarBackLink","titleLeft","hideStatusbar","hideOnlyCurrent","isDynamic","subEl","pageData","getPageByEl","collapseLargeTitle","expandLargeTitle","toggleLargeTitle","initNavbarOnScroll","needHide","needCollapse","needTransparent","$titleLargeEl","isLarge","navbarHideHeight","snapPageScrollToLargeTitle","snapPageScrollToTransparentNavbar","previousScrollTop","currentScrollTop","reachEnd","navbarHidden","navbarCollapsed","navbarTitleLargeHeight","navbarOffsetHeight","scrollChanged","scrollContent","scrollTimeoutId","touchEndTimeoutId","calcScrollableDistance","f7ScrollableDistance","snapLargeNavbar","snapTransparentNavbar","previousCollapseProgress","collapseProgress","handleScroll","handleLargeNavbarCollapse","isLargeTransparent","scrollableDistance","previousCollapseWasInMiddle","isHidden","inSearchbarExpanded","notTransparent","handleNavbarTransparent","showOnPageScrollEnd","showOnPageScrollTop","handeTouchStart","f7DetachNavbarScrollHandlers","Navbar$1","scrollTopOnTitleClick","mdCenterTitle","auroraCenterTitle","hideOnPageScroll","collapseLargeTitleOnScroll","pageBeforeRemove","pageBeforeIn","pageReinit","pageInit","needCollapseOnScrollHandler","needTransparentOnScroll","needHideOnScrollHandler","tabShow","clickedData","$pageContentEl","Toolbar","setHighlight","tabbarEl","$tabbarEl","$highlightEl","tabLinksCount","$activeLink","highlightWidth","highlightTranslate","activeIndex","toolbar","initToolbarOnScroll","$toolbarEl","toolbarHidden","f7ScrollToolbarHandler","Toolbar$1","tabbar","Subnavbar","subnavbarEl","TouchRipple","ripple","center","diameter","isInset","insetElements","rippleTransform","distanceFromCenter","scale","$rippleWaveEl","shouldBeRemoved","out","removeTimeout","openedModals","dialogsQueue","Modal","opened","$containerEl","containerEl","onOpen","onOpened","onClose","onClosed","backdrop","backdropUnique","forceBackdropUnique","$backdropEl","animateModal","queueDialogs","pushToQueue","openedModal","$modalParentEl","wasInDom","needToHideBackdrop","popupEl","popupInstance","closeByBackdropClick","backdropEl","clearDialogsQueue","destroyed","CustomModal","extendedParams","customModal"],"mappings":"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","file":"framework7.min.js","sourcesContent":["/**\n * SSR Window 4.0.2\n * Better handling for window object in SSR environment\n * https://github.com/nolimits4web/ssr-window\n *\n * Copyright 2021, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: December 13, 2021\n */\n/* eslint-disable no-param-reassign */\nfunction isObject(obj) {\n return (obj !== null &&\n typeof obj === 'object' &&\n 'constructor' in obj &&\n obj.constructor === Object);\n}\nfunction extend(target = {}, src = {}) {\n Object.keys(src).forEach((key) => {\n if (typeof target[key] === 'undefined')\n target[key] = src[key];\n else if (isObject(src[key]) &&\n isObject(target[key]) &&\n Object.keys(src[key]).length > 0) {\n extend(target[key], src[key]);\n }\n });\n}\n\nconst ssrDocument = {\n body: {},\n addEventListener() { },\n removeEventListener() { },\n activeElement: {\n blur() { },\n nodeName: '',\n },\n querySelector() {\n return null;\n },\n querySelectorAll() {\n return [];\n },\n getElementById() {\n return null;\n },\n createEvent() {\n return {\n initEvent() { },\n };\n },\n createElement() {\n return {\n children: [],\n childNodes: [],\n style: {},\n setAttribute() { },\n getElementsByTagName() {\n return [];\n },\n };\n },\n createElementNS() {\n return {};\n },\n importNode() {\n return null;\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: '',\n },\n};\nfunction getDocument() {\n const doc = typeof document !== 'undefined' ? document : {};\n extend(doc, ssrDocument);\n return doc;\n}\n\nconst ssrWindow = {\n document: ssrDocument,\n navigator: {\n userAgent: '',\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: '',\n },\n history: {\n replaceState() { },\n pushState() { },\n go() { },\n back() { },\n },\n CustomEvent: function CustomEvent() {\n return this;\n },\n addEventListener() { },\n removeEventListener() { },\n getComputedStyle() {\n return {\n getPropertyValue() {\n return '';\n },\n };\n },\n Image() { },\n Date() { },\n screen: {},\n setTimeout() { },\n clearTimeout() { },\n matchMedia() {\n return {};\n },\n requestAnimationFrame(callback) {\n if (typeof setTimeout === 'undefined') {\n callback();\n return null;\n }\n return setTimeout(callback, 0);\n },\n cancelAnimationFrame(id) {\n if (typeof setTimeout === 'undefined') {\n return;\n }\n clearTimeout(id);\n },\n};\nfunction getWindow() {\n const win = typeof window !== 'undefined' ? window : {};\n extend(win, ssrWindow);\n return win;\n}\n\nexport { extend, getDocument, getWindow, ssrDocument, ssrWindow };\n","/**\n * Dom7 4.0.4\n * Minimalistic JavaScript library for DOM manipulation, with a jQuery-compatible API\n * https://framework7.io/docs/dom7.html\n *\n * Copyright 2022, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: January 11, 2022\n */\nimport { getWindow, getDocument } from 'ssr-window';\n\n/* eslint-disable no-proto */\nfunction makeReactive(obj) {\n const proto = obj.__proto__;\n Object.defineProperty(obj, '__proto__', {\n get() {\n return proto;\n },\n\n set(value) {\n proto.__proto__ = value;\n }\n\n });\n}\n\nclass Dom7 extends Array {\n constructor(items) {\n if (typeof items === 'number') {\n super(items);\n } else {\n super(...(items || []));\n makeReactive(this);\n }\n }\n\n}\n\nfunction arrayFlat(arr = []) {\n const res = [];\n arr.forEach(el => {\n if (Array.isArray(el)) {\n res.push(...arrayFlat(el));\n } else {\n res.push(el);\n }\n });\n return res;\n}\nfunction arrayFilter(arr, callback) {\n return Array.prototype.filter.call(arr, callback);\n}\nfunction arrayUnique(arr) {\n const uniqueArray = [];\n\n for (let i = 0; i < arr.length; i += 1) {\n if (uniqueArray.indexOf(arr[i]) === -1) uniqueArray.push(arr[i]);\n }\n\n return uniqueArray;\n}\nfunction toCamelCase(string) {\n return string.toLowerCase().replace(/-(.)/g, (match, group) => group.toUpperCase());\n}\n\n// eslint-disable-next-line\n\nfunction qsa(selector, context) {\n if (typeof selector !== 'string') {\n return [selector];\n }\n\n const a = [];\n const res = context.querySelectorAll(selector);\n\n for (let i = 0; i < res.length; i += 1) {\n a.push(res[i]);\n }\n\n return a;\n}\n\nfunction $(selector, context) {\n const window = getWindow();\n const document = getDocument();\n let arr = [];\n\n if (!context && selector instanceof Dom7) {\n return selector;\n }\n\n if (!selector) {\n return new Dom7(arr);\n }\n\n if (typeof selector === 'string') {\n const html = selector.trim();\n\n if (html.indexOf('<') >= 0 && html.indexOf('>') >= 0) {\n let toCreate = 'div';\n if (html.indexOf('<li') === 0) toCreate = 'ul';\n if (html.indexOf('<tr') === 0) toCreate = 'tbody';\n if (html.indexOf('<td') === 0 || html.indexOf('<th') === 0) toCreate = 'tr';\n if (html.indexOf('<tbody') === 0) toCreate = 'table';\n if (html.indexOf('<option') === 0) toCreate = 'select';\n const tempParent = document.createElement(toCreate);\n tempParent.innerHTML = html;\n\n for (let i = 0; i < tempParent.childNodes.length; i += 1) {\n arr.push(tempParent.childNodes[i]);\n }\n } else {\n arr = qsa(selector.trim(), context || document);\n } // arr = qsa(selector, document);\n\n } else if (selector.nodeType || selector === window || selector === document) {\n arr.push(selector);\n } else if (Array.isArray(selector)) {\n if (selector instanceof Dom7) return selector;\n arr = selector;\n }\n\n return new Dom7(arrayUnique(arr));\n}\n\n$.fn = Dom7.prototype;\n\n// eslint-disable-next-line\n\nfunction addClass(...classes) {\n const classNames = arrayFlat(classes.map(c => c.split(' ')));\n this.forEach(el => {\n el.classList.add(...classNames);\n });\n return this;\n}\n\nfunction removeClass(...classes) {\n const classNames = arrayFlat(classes.map(c => c.split(' ')));\n this.forEach(el => {\n el.classList.remove(...classNames);\n });\n return this;\n}\n\nfunction toggleClass(...classes) {\n const classNames = arrayFlat(classes.map(c => c.split(' ')));\n this.forEach(el => {\n classNames.forEach(className => {\n el.classList.toggle(className);\n });\n });\n}\n\nfunction hasClass(...classes) {\n const classNames = arrayFlat(classes.map(c => c.split(' ')));\n return arrayFilter(this, el => {\n return classNames.filter(className => el.classList.contains(className)).length > 0;\n }).length > 0;\n}\n\nfunction attr(attrs, value) {\n if (arguments.length === 1 && typeof attrs === 'string') {\n // Get attr\n if (this[0]) return this[0].getAttribute(attrs);\n return undefined;\n } // Set attrs\n\n\n for (let i = 0; i < this.length; i += 1) {\n if (arguments.length === 2) {\n // String\n this[i].setAttribute(attrs, value);\n } else {\n // Object\n for (const attrName in attrs) {\n this[i][attrName] = attrs[attrName];\n this[i].setAttribute(attrName, attrs[attrName]);\n }\n }\n }\n\n return this;\n}\n\nfunction removeAttr(attr) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].removeAttribute(attr);\n }\n\n return this;\n}\n\nfunction prop(props, value) {\n if (arguments.length === 1 && typeof props === 'string') {\n // Get prop\n if (this[0]) return this[0][props];\n } else {\n // Set props\n for (let i = 0; i < this.length; i += 1) {\n if (arguments.length === 2) {\n // String\n this[i][props] = value;\n } else {\n // Object\n for (const propName in props) {\n this[i][propName] = props[propName];\n }\n }\n }\n\n return this;\n }\n\n return this;\n}\n\nfunction data(key, value) {\n let el;\n\n if (typeof value === 'undefined') {\n el = this[0];\n if (!el) return undefined; // Get value\n\n if (el.dom7ElementDataStorage && key in el.dom7ElementDataStorage) {\n return el.dom7ElementDataStorage[key];\n }\n\n const dataKey = el.getAttribute(`data-${key}`);\n\n if (dataKey) {\n return dataKey;\n }\n\n return undefined;\n } // Set value\n\n\n for (let i = 0; i < this.length; i += 1) {\n el = this[i];\n if (!el.dom7ElementDataStorage) el.dom7ElementDataStorage = {};\n el.dom7ElementDataStorage[key] = value;\n }\n\n return this;\n}\n\nfunction removeData(key) {\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (el.dom7ElementDataStorage && el.dom7ElementDataStorage[key]) {\n el.dom7ElementDataStorage[key] = null;\n delete el.dom7ElementDataStorage[key];\n }\n }\n}\n\nfunction dataset() {\n const el = this[0];\n if (!el) return undefined;\n const dataset = {}; // eslint-disable-line\n\n if (el.dataset) {\n for (const dataKey in el.dataset) {\n dataset[dataKey] = el.dataset[dataKey];\n }\n } else {\n for (let i = 0; i < el.attributes.length; i += 1) {\n const attr = el.attributes[i];\n\n if (attr.name.indexOf('data-') >= 0) {\n dataset[toCamelCase(attr.name.split('data-')[1])] = attr.value;\n }\n }\n }\n\n for (const key in dataset) {\n if (dataset[key] === 'false') dataset[key] = false;else if (dataset[key] === 'true') dataset[key] = true;else if (parseFloat(dataset[key]) === dataset[key] * 1) dataset[key] *= 1;\n }\n\n return dataset;\n}\n\nfunction val(value) {\n if (typeof value === 'undefined') {\n // get value\n const el = this[0];\n if (!el) return undefined;\n\n if (el.multiple && el.nodeName.toLowerCase() === 'select') {\n const values = [];\n\n for (let i = 0; i < el.selectedOptions.length; i += 1) {\n values.push(el.selectedOptions[i].value);\n }\n\n return values;\n }\n\n return el.value;\n } // set value\n\n\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (Array.isArray(value) && el.multiple && el.nodeName.toLowerCase() === 'select') {\n for (let j = 0; j < el.options.length; j += 1) {\n el.options[j].selected = value.indexOf(el.options[j].value) >= 0;\n }\n } else {\n el.value = value;\n }\n }\n\n return this;\n}\n\nfunction value(value) {\n return this.val(value);\n}\n\nfunction transform(transform) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.transform = transform;\n }\n\n return this;\n}\n\nfunction transition(duration) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.transitionDuration = typeof duration !== 'string' ? `${duration}ms` : duration;\n }\n\n return this;\n}\n\nfunction on(...args) {\n let [eventType, targetSelector, listener, capture] = args;\n\n if (typeof args[1] === 'function') {\n [eventType, listener, capture] = args;\n targetSelector = undefined;\n }\n\n if (!capture) capture = false;\n\n function handleLiveEvent(e) {\n const target = e.target;\n if (!target) return;\n const eventData = e.target.dom7EventData || [];\n\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n\n if ($(target).is(targetSelector)) listener.apply(target, eventData);else {\n const parents = $(target).parents(); // eslint-disable-line\n\n for (let k = 0; k < parents.length; k += 1) {\n if ($(parents[k]).is(targetSelector)) listener.apply(parents[k], eventData);\n }\n }\n }\n\n function handleEvent(e) {\n const eventData = e && e.target ? e.target.dom7EventData || [] : [];\n\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n\n listener.apply(this, eventData);\n }\n\n const events = eventType.split(' ');\n let j;\n\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (!targetSelector) {\n for (j = 0; j < events.length; j += 1) {\n const event = events[j];\n if (!el.dom7Listeners) el.dom7Listeners = {};\n if (!el.dom7Listeners[event]) el.dom7Listeners[event] = [];\n el.dom7Listeners[event].push({\n listener,\n proxyListener: handleEvent\n });\n el.addEventListener(event, handleEvent, capture);\n }\n } else {\n // Live events\n for (j = 0; j < events.length; j += 1) {\n const event = events[j];\n if (!el.dom7LiveListeners) el.dom7LiveListeners = {};\n if (!el.dom7LiveListeners[event]) el.dom7LiveListeners[event] = [];\n el.dom7LiveListeners[event].push({\n listener,\n proxyListener: handleLiveEvent\n });\n el.addEventListener(event, handleLiveEvent, capture);\n }\n }\n }\n\n return this;\n}\n\nfunction off(...args) {\n let [eventType, targetSelector, listener, capture] = args;\n\n if (typeof args[1] === 'function') {\n [eventType, listener, capture] = args;\n targetSelector = undefined;\n }\n\n if (!capture) capture = false;\n const events = eventType.split(' ');\n\n for (let i = 0; i < events.length; i += 1) {\n const event = events[i];\n\n for (let j = 0; j < this.length; j += 1) {\n const el = this[j];\n let handlers;\n\n if (!targetSelector && el.dom7Listeners) {\n handlers = el.dom7Listeners[event];\n } else if (targetSelector && el.dom7LiveListeners) {\n handlers = el.dom7LiveListeners[event];\n }\n\n if (handlers && handlers.length) {\n for (let k = handlers.length - 1; k >= 0; k -= 1) {\n const handler = handlers[k];\n\n if (listener && handler.listener === listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n } else if (listener && handler.listener && handler.listener.dom7proxy && handler.listener.dom7proxy === listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n } else if (!listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n }\n }\n }\n }\n }\n\n return this;\n}\n\nfunction once(...args) {\n const dom = this;\n let [eventName, targetSelector, listener, capture] = args;\n\n if (typeof args[1] === 'function') {\n [eventName, listener, capture] = args;\n targetSelector = undefined;\n }\n\n function onceHandler(...eventArgs) {\n listener.apply(this, eventArgs);\n dom.off(eventName, targetSelector, onceHandler, capture);\n\n if (onceHandler.dom7proxy) {\n delete onceHandler.dom7proxy;\n }\n }\n\n onceHandler.dom7proxy = listener;\n return dom.on(eventName, targetSelector, onceHandler, capture);\n}\n\nfunction trigger(...args) {\n const window = getWindow();\n const events = args[0].split(' ');\n const eventData = args[1];\n\n for (let i = 0; i < events.length; i += 1) {\n const event = events[i];\n\n for (let j = 0; j < this.length; j += 1) {\n const el = this[j];\n\n if (window.CustomEvent) {\n const evt = new window.CustomEvent(event, {\n detail: eventData,\n bubbles: true,\n cancelable: true\n });\n el.dom7EventData = args.filter((data, dataIndex) => dataIndex > 0);\n el.dispatchEvent(evt);\n el.dom7EventData = [];\n delete el.dom7EventData;\n }\n }\n }\n\n return this;\n}\n\nfunction transitionEnd(callback) {\n const dom = this;\n\n function fireCallBack(e) {\n if (e.target !== this) return;\n callback.call(this, e);\n dom.off('transitionend', fireCallBack);\n }\n\n if (callback) {\n dom.on('transitionend', fireCallBack);\n }\n\n return this;\n}\n\nfunction animationEnd(callback) {\n const dom = this;\n\n function fireCallBack(e) {\n if (e.target !== this) return;\n callback.call(this, e);\n dom.off('animationend', fireCallBack);\n }\n\n if (callback) {\n dom.on('animationend', fireCallBack);\n }\n\n return this;\n}\n\nfunction width() {\n const window = getWindow();\n\n if (this[0] === window) {\n return window.innerWidth;\n }\n\n if (this.length > 0) {\n return parseFloat(this.css('width'));\n }\n\n return null;\n}\n\nfunction outerWidth(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n const styles = this.styles();\n return this[0].offsetWidth + parseFloat(styles.getPropertyValue('margin-right')) + parseFloat(styles.getPropertyValue('margin-left'));\n }\n\n return this[0].offsetWidth;\n }\n\n return null;\n}\n\nfunction height() {\n const window = getWindow();\n\n if (this[0] === window) {\n return window.innerHeight;\n }\n\n if (this.length > 0) {\n return parseFloat(this.css('height'));\n }\n\n return null;\n}\n\nfunction outerHeight(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n const styles = this.styles();\n return this[0].offsetHeight + parseFloat(styles.getPropertyValue('margin-top')) + parseFloat(styles.getPropertyValue('margin-bottom'));\n }\n\n return this[0].offsetHeight;\n }\n\n return null;\n}\n\nfunction offset() {\n if (this.length > 0) {\n const window = getWindow();\n const document = getDocument();\n const el = this[0];\n const box = el.getBoundingClientRect();\n const body = document.body;\n const clientTop = el.clientTop || body.clientTop || 0;\n const clientLeft = el.clientLeft || body.clientLeft || 0;\n const scrollTop = el === window ? window.scrollY : el.scrollTop;\n const scrollLeft = el === window ? window.scrollX : el.scrollLeft;\n return {\n top: box.top + scrollTop - clientTop,\n left: box.left + scrollLeft - clientLeft\n };\n }\n\n return null;\n}\n\nfunction hide() {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.display = 'none';\n }\n\n return this;\n}\n\nfunction show() {\n const window = getWindow();\n\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (el.style.display === 'none') {\n el.style.display = '';\n }\n\n if (window.getComputedStyle(el, null).getPropertyValue('display') === 'none') {\n // Still not visible\n el.style.display = 'block';\n }\n }\n\n return this;\n}\n\nfunction styles() {\n const window = getWindow();\n if (this[0]) return window.getComputedStyle(this[0], null);\n return {};\n}\n\nfunction css(props, value) {\n const window = getWindow();\n let i;\n\n if (arguments.length === 1) {\n if (typeof props === 'string') {\n // .css('width')\n if (this[0]) return window.getComputedStyle(this[0], null).getPropertyValue(props);\n } else {\n // .css({ width: '100px' })\n for (i = 0; i < this.length; i += 1) {\n for (const prop in props) {\n this[i].style[prop] = props[prop];\n }\n }\n\n return this;\n }\n }\n\n if (arguments.length === 2 && typeof props === 'string') {\n // .css('width', '100px')\n for (i = 0; i < this.length; i += 1) {\n this[i].style[props] = value;\n }\n\n return this;\n }\n\n return this;\n}\n\nfunction each(callback) {\n if (!callback) return this;\n this.forEach((el, index) => {\n callback.apply(el, [el, index]);\n });\n return this;\n}\n\nfunction filter(callback) {\n const result = arrayFilter(this, callback);\n return $(result);\n}\n\nfunction html(html) {\n if (typeof html === 'undefined') {\n return this[0] ? this[0].innerHTML : null;\n }\n\n for (let i = 0; i < this.length; i += 1) {\n this[i].innerHTML = html;\n }\n\n return this;\n}\n\nfunction text(text) {\n if (typeof text === 'undefined') {\n return this[0] ? this[0].textContent.trim() : null;\n }\n\n for (let i = 0; i < this.length; i += 1) {\n this[i].textContent = text;\n }\n\n return this;\n}\n\nfunction is(selector) {\n const window = getWindow();\n const document = getDocument();\n const el = this[0];\n let compareWith;\n let i;\n if (!el || typeof selector === 'undefined') return false;\n\n if (typeof selector === 'string') {\n if (el.matches) return el.matches(selector);\n if (el.webkitMatchesSelector) return el.webkitMatchesSelector(selector);\n if (el.msMatchesSelector) return el.msMatchesSelector(selector);\n compareWith = $(selector);\n\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) return true;\n }\n\n return false;\n }\n\n if (selector === document) {\n return el === document;\n }\n\n if (selector === window) {\n return el === window;\n }\n\n if (selector.nodeType || selector instanceof Dom7) {\n compareWith = selector.nodeType ? [selector] : selector;\n\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) return true;\n }\n\n return false;\n }\n\n return false;\n}\n\nfunction index() {\n let child = this[0];\n let i;\n\n if (child) {\n i = 0; // eslint-disable-next-line\n\n while ((child = child.previousSibling) !== null) {\n if (child.nodeType === 1) i += 1;\n }\n\n return i;\n }\n\n return undefined;\n}\n\nfunction eq(index) {\n if (typeof index === 'undefined') return this;\n const length = this.length;\n\n if (index > length - 1) {\n return $([]);\n }\n\n if (index < 0) {\n const returnIndex = length + index;\n if (returnIndex < 0) return $([]);\n return $([this[returnIndex]]);\n }\n\n return $([this[index]]);\n}\n\nfunction append(...els) {\n let newChild;\n const document = getDocument();\n\n for (let k = 0; k < els.length; k += 1) {\n newChild = els[k];\n\n for (let i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n const tempDiv = document.createElement('div');\n tempDiv.innerHTML = newChild;\n\n while (tempDiv.firstChild) {\n this[i].appendChild(tempDiv.firstChild);\n }\n } else if (newChild instanceof Dom7) {\n for (let j = 0; j < newChild.length; j += 1) {\n this[i].appendChild(newChild[j]);\n }\n } else {\n this[i].appendChild(newChild);\n }\n }\n }\n\n return this;\n}\n\nfunction appendTo(parent) {\n $(parent).append(this);\n return this;\n}\n\nfunction prepend(newChild) {\n const document = getDocument();\n let i;\n let j;\n\n for (i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n const tempDiv = document.createElement('div');\n tempDiv.innerHTML = newChild;\n\n for (j = tempDiv.childNodes.length - 1; j >= 0; j -= 1) {\n this[i].insertBefore(tempDiv.childNodes[j], this[i].childNodes[0]);\n }\n } else if (newChild instanceof Dom7) {\n for (j = 0; j < newChild.length; j += 1) {\n this[i].insertBefore(newChild[j], this[i].childNodes[0]);\n }\n } else {\n this[i].insertBefore(newChild, this[i].childNodes[0]);\n }\n }\n\n return this;\n}\n\nfunction prependTo(parent) {\n $(parent).prepend(this);\n return this;\n}\n\nfunction insertBefore(selector) {\n const before = $(selector);\n\n for (let i = 0; i < this.length; i += 1) {\n if (before.length === 1) {\n before[0].parentNode.insertBefore(this[i], before[0]);\n } else if (before.length > 1) {\n for (let j = 0; j < before.length; j += 1) {\n before[j].parentNode.insertBefore(this[i].cloneNode(true), before[j]);\n }\n }\n }\n}\n\nfunction insertAfter(selector) {\n const after = $(selector);\n\n for (let i = 0; i < this.length; i += 1) {\n if (after.length === 1) {\n after[0].parentNode.insertBefore(this[i], after[0].nextSibling);\n } else if (after.length > 1) {\n for (let j = 0; j < after.length; j += 1) {\n after[j].parentNode.insertBefore(this[i].cloneNode(true), after[j].nextSibling);\n }\n }\n }\n}\n\nfunction next(selector) {\n if (this.length > 0) {\n if (selector) {\n if (this[0].nextElementSibling && $(this[0].nextElementSibling).is(selector)) {\n return $([this[0].nextElementSibling]);\n }\n\n return $([]);\n }\n\n if (this[0].nextElementSibling) return $([this[0].nextElementSibling]);\n return $([]);\n }\n\n return $([]);\n}\n\nfunction nextAll(selector) {\n const nextEls = [];\n let el = this[0];\n if (!el) return $([]);\n\n while (el.nextElementSibling) {\n const next = el.nextElementSibling; // eslint-disable-line\n\n if (selector) {\n if ($(next).is(selector)) nextEls.push(next);\n } else nextEls.push(next);\n\n el = next;\n }\n\n return $(nextEls);\n}\n\nfunction prev(selector) {\n if (this.length > 0) {\n const el = this[0];\n\n if (selector) {\n if (el.previousElementSibling && $(el.previousElementSibling).is(selector)) {\n return $([el.previousElementSibling]);\n }\n\n return $([]);\n }\n\n if (el.previousElementSibling) return $([el.previousElementSibling]);\n return $([]);\n }\n\n return $([]);\n}\n\nfunction prevAll(selector) {\n const prevEls = [];\n let el = this[0];\n if (!el) return $([]);\n\n while (el.previousElementSibling) {\n const prev = el.previousElementSibling; // eslint-disable-line\n\n if (selector) {\n if ($(prev).is(selector)) prevEls.push(prev);\n } else prevEls.push(prev);\n\n el = prev;\n }\n\n return $(prevEls);\n}\n\nfunction siblings(selector) {\n return this.nextAll(selector).add(this.prevAll(selector));\n}\n\nfunction parent(selector) {\n const parents = []; // eslint-disable-line\n\n for (let i = 0; i < this.length; i += 1) {\n if (this[i].parentNode !== null) {\n if (selector) {\n if ($(this[i].parentNode).is(selector)) parents.push(this[i].parentNode);\n } else {\n parents.push(this[i].parentNode);\n }\n }\n }\n\n return $(parents);\n}\n\nfunction parents(selector) {\n const parents = []; // eslint-disable-line\n\n for (let i = 0; i < this.length; i += 1) {\n let parent = this[i].parentNode; // eslint-disable-line\n\n while (parent) {\n if (selector) {\n if ($(parent).is(selector)) parents.push(parent);\n } else {\n parents.push(parent);\n }\n\n parent = parent.parentNode;\n }\n }\n\n return $(parents);\n}\n\nfunction closest(selector) {\n let closest = this; // eslint-disable-line\n\n if (typeof selector === 'undefined') {\n return $([]);\n }\n\n if (!closest.is(selector)) {\n closest = closest.parents(selector).eq(0);\n }\n\n return closest;\n}\n\nfunction find(selector) {\n const foundElements = [];\n\n for (let i = 0; i < this.length; i += 1) {\n const found = this[i].querySelectorAll(selector);\n\n for (let j = 0; j < found.length; j += 1) {\n foundElements.push(found[j]);\n }\n }\n\n return $(foundElements);\n}\n\nfunction children(selector) {\n const children = []; // eslint-disable-line\n\n for (let i = 0; i < this.length; i += 1) {\n const childNodes = this[i].children;\n\n for (let j = 0; j < childNodes.length; j += 1) {\n if (!selector || $(childNodes[j]).is(selector)) {\n children.push(childNodes[j]);\n }\n }\n }\n\n return $(children);\n}\n\nfunction remove() {\n for (let i = 0; i < this.length; i += 1) {\n if (this[i].parentNode) this[i].parentNode.removeChild(this[i]);\n }\n\n return this;\n}\n\nfunction detach() {\n return this.remove();\n}\n\nfunction add(...els) {\n const dom = this;\n let i;\n let j;\n\n for (i = 0; i < els.length; i += 1) {\n const toAdd = $(els[i]);\n\n for (j = 0; j < toAdd.length; j += 1) {\n dom.push(toAdd[j]);\n }\n }\n\n return dom;\n}\n\nfunction empty() {\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (el.nodeType === 1) {\n for (let j = 0; j < el.childNodes.length; j += 1) {\n if (el.childNodes[j].parentNode) {\n el.childNodes[j].parentNode.removeChild(el.childNodes[j]);\n }\n }\n\n el.textContent = '';\n }\n }\n\n return this;\n}\n\n// eslint-disable-next-line\n\nfunction scrollTo(...args) {\n const window = getWindow();\n let [left, top, duration, easing, callback] = args;\n\n if (args.length === 4 && typeof easing === 'function') {\n callback = easing;\n [left, top, duration, callback, easing] = args;\n }\n\n if (typeof easing === 'undefined') easing = 'swing';\n return this.each(function animate() {\n const el = this;\n let currentTop;\n let currentLeft;\n let maxTop;\n let maxLeft;\n let newTop;\n let newLeft;\n let scrollTop; // eslint-disable-line\n\n let scrollLeft; // eslint-disable-line\n\n let animateTop = top > 0 || top === 0;\n let animateLeft = left > 0 || left === 0;\n\n if (typeof easing === 'undefined') {\n easing = 'swing';\n }\n\n if (animateTop) {\n currentTop = el.scrollTop;\n\n if (!duration) {\n el.scrollTop = top;\n }\n }\n\n if (animateLeft) {\n currentLeft = el.scrollLeft;\n\n if (!duration) {\n el.scrollLeft = left;\n }\n }\n\n if (!duration) return;\n\n if (animateTop) {\n maxTop = el.scrollHeight - el.offsetHeight;\n newTop = Math.max(Math.min(top, maxTop), 0);\n }\n\n if (animateLeft) {\n maxLeft = el.scrollWidth - el.offsetWidth;\n newLeft = Math.max(Math.min(left, maxLeft), 0);\n }\n\n let startTime = null;\n if (animateTop && newTop === currentTop) animateTop = false;\n if (animateLeft && newLeft === currentLeft) animateLeft = false;\n\n function render(time = new Date().getTime()) {\n if (startTime === null) {\n startTime = time;\n }\n\n const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n const easeProgress = easing === 'linear' ? progress : 0.5 - Math.cos(progress * Math.PI) / 2;\n let done;\n if (animateTop) scrollTop = currentTop + easeProgress * (newTop - currentTop);\n if (animateLeft) scrollLeft = currentLeft + easeProgress * (newLeft - currentLeft);\n\n if (animateTop && newTop > currentTop && scrollTop >= newTop) {\n el.scrollTop = newTop;\n done = true;\n }\n\n if (animateTop && newTop < currentTop && scrollTop <= newTop) {\n el.scrollTop = newTop;\n done = true;\n }\n\n if (animateLeft && newLeft > currentLeft && scrollLeft >= newLeft) {\n el.scrollLeft = newLeft;\n done = true;\n }\n\n if (animateLeft && newLeft < currentLeft && scrollLeft <= newLeft) {\n el.scrollLeft = newLeft;\n done = true;\n }\n\n if (done) {\n if (callback) callback();\n return;\n }\n\n if (animateTop) el.scrollTop = scrollTop;\n if (animateLeft) el.scrollLeft = scrollLeft;\n window.requestAnimationFrame(render);\n }\n\n window.requestAnimationFrame(render);\n });\n} // scrollTop(top, duration, easing, callback) {\n\n\nfunction scrollTop(...args) {\n let [top, duration, easing, callback] = args;\n\n if (args.length === 3 && typeof easing === 'function') {\n [top, duration, callback, easing] = args;\n }\n\n const dom = this;\n\n if (typeof top === 'undefined') {\n if (dom.length > 0) return dom[0].scrollTop;\n return null;\n }\n\n return dom.scrollTo(undefined, top, duration, easing, callback);\n}\n\nfunction scrollLeft(...args) {\n let [left, duration, easing, callback] = args;\n\n if (args.length === 3 && typeof easing === 'function') {\n [left, duration, callback, easing] = args;\n }\n\n const dom = this;\n\n if (typeof left === 'undefined') {\n if (dom.length > 0) return dom[0].scrollLeft;\n return null;\n }\n\n return dom.scrollTo(left, undefined, duration, easing, callback);\n}\n\n// eslint-disable-next-line\n\nfunction animate(initialProps, initialParams) {\n const window = getWindow();\n const els = this;\n const a = {\n props: Object.assign({}, initialProps),\n params: Object.assign({\n duration: 300,\n easing: 'swing' // or 'linear'\n\n /* Callbacks\n begin(elements)\n complete(elements)\n progress(elements, complete, remaining, start, tweenValue)\n */\n\n }, initialParams),\n elements: els,\n animating: false,\n que: [],\n\n easingProgress(easing, progress) {\n if (easing === 'swing') {\n return 0.5 - Math.cos(progress * Math.PI) / 2;\n }\n\n if (typeof easing === 'function') {\n return easing(progress);\n }\n\n return progress;\n },\n\n stop() {\n if (a.frameId) {\n window.cancelAnimationFrame(a.frameId);\n }\n\n a.animating = false;\n a.elements.each(el => {\n const element = el;\n delete element.dom7AnimateInstance;\n });\n a.que = [];\n },\n\n done(complete) {\n a.animating = false;\n a.elements.each(el => {\n const element = el;\n delete element.dom7AnimateInstance;\n });\n if (complete) complete(els);\n\n if (a.que.length > 0) {\n const que = a.que.shift();\n a.animate(que[0], que[1]);\n }\n },\n\n animate(props, params) {\n if (a.animating) {\n a.que.push([props, params]);\n return a;\n }\n\n const elements = []; // Define & Cache Initials & Units\n\n a.elements.each((el, index) => {\n let initialFullValue;\n let initialValue;\n let unit;\n let finalValue;\n let finalFullValue;\n if (!el.dom7AnimateInstance) a.elements[index].dom7AnimateInstance = a;\n elements[index] = {\n container: el\n };\n Object.keys(props).forEach(prop => {\n initialFullValue = window.getComputedStyle(el, null).getPropertyValue(prop).replace(',', '.');\n initialValue = parseFloat(initialFullValue);\n unit = initialFullValue.replace(initialValue, '');\n finalValue = parseFloat(props[prop]);\n finalFullValue = props[prop] + unit;\n elements[index][prop] = {\n initialFullValue,\n initialValue,\n unit,\n finalValue,\n finalFullValue,\n currentValue: initialValue\n };\n });\n });\n let startTime = null;\n let time;\n let elementsDone = 0;\n let propsDone = 0;\n let done;\n let began = false;\n a.animating = true;\n\n function render() {\n time = new Date().getTime();\n let progress;\n let easeProgress; // let el;\n\n if (!began) {\n began = true;\n if (params.begin) params.begin(els);\n }\n\n if (startTime === null) {\n startTime = time;\n }\n\n if (params.progress) {\n // eslint-disable-next-line\n params.progress(els, Math.max(Math.min((time - startTime) / params.duration, 1), 0), startTime + params.duration - time < 0 ? 0 : startTime + params.duration - time, startTime);\n }\n\n elements.forEach(element => {\n const el = element;\n if (done || el.done) return;\n Object.keys(props).forEach(prop => {\n if (done || el.done) return;\n progress = Math.max(Math.min((time - startTime) / params.duration, 1), 0);\n easeProgress = a.easingProgress(params.easing, progress);\n const {\n initialValue,\n finalValue,\n unit\n } = el[prop];\n el[prop].currentValue = initialValue + easeProgress * (finalValue - initialValue);\n const currentValue = el[prop].currentValue;\n\n if (finalValue > initialValue && currentValue >= finalValue || finalValue < initialValue && currentValue <= finalValue) {\n el.container.style[prop] = finalValue + unit;\n propsDone += 1;\n\n if (propsDone === Object.keys(props).length) {\n el.done = true;\n elementsDone += 1;\n }\n\n if (elementsDone === elements.length) {\n done = true;\n }\n }\n\n if (done) {\n a.done(params.complete);\n return;\n }\n\n el.container.style[prop] = currentValue + unit;\n });\n });\n if (done) return; // Then call\n\n a.frameId = window.requestAnimationFrame(render);\n }\n\n a.frameId = window.requestAnimationFrame(render);\n return a;\n }\n\n };\n\n if (a.elements.length === 0) {\n return els;\n }\n\n let animateInstance;\n\n for (let i = 0; i < a.elements.length; i += 1) {\n if (a.elements[i].dom7AnimateInstance) {\n animateInstance = a.elements[i].dom7AnimateInstance;\n } else a.elements[i].dom7AnimateInstance = a;\n }\n\n if (!animateInstance) {\n animateInstance = a;\n }\n\n if (initialProps === 'stop') {\n animateInstance.stop();\n } else {\n animateInstance.animate(a.props, a.params);\n }\n\n return els;\n}\n\nfunction stop() {\n const els = this;\n\n for (let i = 0; i < els.length; i += 1) {\n if (els[i].dom7AnimateInstance) {\n els[i].dom7AnimateInstance.stop();\n }\n }\n}\n\nconst noTrigger = 'resize scroll'.split(' ');\n\nfunction shortcut(name) {\n function eventHandler(...args) {\n if (typeof args[0] === 'undefined') {\n for (let i = 0; i < this.length; i += 1) {\n if (noTrigger.indexOf(name) < 0) {\n if (name in this[i]) this[i][name]();else {\n $(this[i]).trigger(name);\n }\n }\n }\n\n return this;\n }\n\n return this.on(name, ...args);\n }\n\n return eventHandler;\n}\n\nconst click = shortcut('click');\nconst blur = shortcut('blur');\nconst focus = shortcut('focus');\nconst focusin = shortcut('focusin');\nconst focusout = shortcut('focusout');\nconst keyup = shortcut('keyup');\nconst keydown = shortcut('keydown');\nconst keypress = shortcut('keypress');\nconst submit = shortcut('submit');\nconst change = shortcut('change');\nconst mousedown = shortcut('mousedown');\nconst mousemove = shortcut('mousemove');\nconst mouseup = shortcut('mouseup');\nconst mouseenter = shortcut('mouseenter');\nconst mouseleave = shortcut('mouseleave');\nconst mouseout = shortcut('mouseout');\nconst mouseover = shortcut('mouseover');\nconst touchstart = shortcut('touchstart');\nconst touchend = shortcut('touchend');\nconst touchmove = shortcut('touchmove');\nconst resize = shortcut('resize');\nconst scroll = shortcut('scroll');\n\nexport default $;\nexport { $, add, addClass, animate, animationEnd, append, appendTo, attr, blur, change, children, click, closest, css, data, dataset, detach, each, empty, eq, filter, find, focus, focusin, focusout, hasClass, height, hide, html, index, insertAfter, insertBefore, is, keydown, keypress, keyup, mousedown, mouseenter, mouseleave, mousemove, mouseout, mouseover, mouseup, next, nextAll, off, offset, on, once, outerHeight, outerWidth, parent, parents, prepend, prependTo, prev, prevAll, prop, remove, removeAttr, removeClass, removeData, resize, scroll, scrollLeft, scrollTo, scrollTop, show, siblings, stop, styles, submit, text, toggleClass, touchend, touchmove, touchstart, transform, transition, transitionEnd, trigger, val, value, width };\n","// eslint-disable-next-line\nimport * as methods from 'dom7';\n\nObject.keys(methods).forEach((methodName) => {\n if (methodName === '$') return;\n methods.$.fn[methodName] = methods[methodName];\n});\n\nexport default methods.$;\n","import { getWindow } from 'ssr-window';\n\nlet uniqueNum = 0;\nexport function uniqueNumber() {\n uniqueNum += 1;\n return uniqueNum;\n}\nexport function id(mask = 'xxxxxxxxxx', map = '0123456789abcdef') {\n const length = map.length;\n return mask.replace(/x/g, () => map[Math.floor(Math.random() * length)]);\n}\nexport const mdPreloaderContent = `\n <span class=\"preloader-inner\">\n <svg viewBox=\"0 0 36 36\">\n <circle cx=\"18\" cy=\"18\" r=\"16\"></circle>\n </svg>\n </span>\n`.trim();\n\nexport const iosPreloaderContent = `\n <span class=\"preloader-inner\">\n ${[0, 1, 2, 3, 4, 5, 6, 7].map(() => '<span class=\"preloader-inner-line\"></span>').join('')}\n </span>\n`.trim();\n\nexport const auroraPreloaderContent = `\n <span class=\"preloader-inner\">\n <span class=\"preloader-inner-circle\"></span>\n </span>\n`;\nexport function eventNameToColonCase(eventName) {\n let hasColon;\n return eventName\n .split('')\n .map((char, index) => {\n if (char.match(/[A-Z]/) && index !== 0 && !hasColon) {\n hasColon = true;\n return `:${char.toLowerCase()}`;\n }\n return char.toLowerCase();\n })\n .join('');\n}\nexport function deleteProps(obj) {\n const object = obj;\n Object.keys(object).forEach((key) => {\n try {\n object[key] = null;\n } catch (e) {\n // no setter for object\n }\n try {\n delete object[key];\n } catch (e) {\n // something got wrong\n }\n });\n}\nexport function requestAnimationFrame(callback) {\n const window = getWindow();\n return window.requestAnimationFrame(callback);\n}\nexport function cancelAnimationFrame(frameId) {\n const window = getWindow();\n return window.cancelAnimationFrame(frameId);\n}\nexport function nextTick(callback, delay = 0) {\n return setTimeout(callback, delay);\n}\nexport function nextFrame(callback) {\n return requestAnimationFrame(() => {\n requestAnimationFrame(callback);\n });\n}\nexport function now() {\n return Date.now();\n}\n\nexport function parseUrlQuery(url) {\n const window = getWindow();\n const query = {};\n let urlToParse = url || window.location.href;\n let i;\n let params;\n let param;\n let length;\n if (typeof urlToParse === 'string' && urlToParse.length) {\n urlToParse = urlToParse.indexOf('?') > -1 ? urlToParse.replace(/\\S*\\?/, '') : '';\n params = urlToParse.split('&').filter((paramsPart) => paramsPart !== '');\n length = params.length;\n\n for (i = 0; i < length; i += 1) {\n param = params[i].replace(/#\\S+/g, '').split('=');\n query[decodeURIComponent(param[0])] =\n typeof param[1] === 'undefined'\n ? undefined\n : decodeURIComponent(param.slice(1).join('=')) || '';\n }\n }\n return query;\n}\nexport function getTranslate(el, axis = 'x') {\n const window = getWindow();\n let matrix;\n let curTransform;\n let transformMatrix;\n\n const curStyle = window.getComputedStyle(el, null);\n\n if (window.WebKitCSSMatrix) {\n curTransform = curStyle.transform || curStyle.webkitTransform;\n if (curTransform.split(',').length > 6) {\n curTransform = curTransform\n .split(', ')\n .map((a) => a.replace(',', '.'))\n .join(', ');\n }\n // Some old versions of Webkit choke when 'none' is passed; pass\n // empty string instead in this case\n transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);\n } else {\n transformMatrix =\n curStyle.MozTransform ||\n curStyle.OTransform ||\n curStyle.MsTransform ||\n curStyle.msTransform ||\n curStyle.transform ||\n curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');\n matrix = transformMatrix.toString().split(',');\n }\n\n if (axis === 'x') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41;\n // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[12]);\n // Normal Browsers\n else curTransform = parseFloat(matrix[4]);\n }\n if (axis === 'y') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42;\n // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[13]);\n // Normal Browsers\n else curTransform = parseFloat(matrix[5]);\n }\n return curTransform || 0;\n}\nexport function serializeObject(obj, parents = []) {\n if (typeof obj === 'string') return obj;\n const resultArray = [];\n const separator = '&';\n let newParents;\n function varName(name) {\n if (parents.length > 0) {\n let parentParts = '';\n for (let j = 0; j < parents.length; j += 1) {\n if (j === 0) parentParts += parents[j];\n else parentParts += `[${encodeURIComponent(parents[j])}]`;\n }\n return `${parentParts}[${encodeURIComponent(name)}]`;\n }\n return encodeURIComponent(name);\n }\n function varValue(value) {\n return encodeURIComponent(value);\n }\n Object.keys(obj).forEach((prop) => {\n let toPush;\n if (Array.isArray(obj[prop])) {\n toPush = [];\n for (let i = 0; i < obj[prop].length; i += 1) {\n if (!Array.isArray(obj[prop][i]) && typeof obj[prop][i] === 'object') {\n newParents = parents.slice();\n newParents.push(prop);\n newParents.push(String(i));\n toPush.push(serializeObject(obj[prop][i], newParents));\n } else {\n toPush.push(`${varName(prop)}[]=${varValue(obj[prop][i])}`);\n }\n }\n if (toPush.length > 0) resultArray.push(toPush.join(separator));\n } else if (obj[prop] === null || obj[prop] === '') {\n resultArray.push(`${varName(prop)}=`);\n } else if (typeof obj[prop] === 'object') {\n // Object, convert to named array\n newParents = parents.slice();\n newParents.push(prop);\n toPush = serializeObject(obj[prop], newParents);\n if (toPush !== '') resultArray.push(toPush);\n } else if (typeof obj[prop] !== 'undefined' && obj[prop] !== '') {\n // Should be string or plain value\n resultArray.push(`${varName(prop)}=${varValue(obj[prop])}`);\n } else if (obj[prop] === '') resultArray.push(varName(prop));\n });\n return resultArray.join(separator);\n}\nexport function isObject(o) {\n return typeof o === 'object' && o !== null && o.constructor && o.constructor === Object;\n}\nexport function merge(...args) {\n const to = args[0];\n args.splice(0, 1);\n const from = args;\n\n for (let i = 0; i < from.length; i += 1) {\n const nextSource = args[i];\n if (nextSource !== undefined && nextSource !== null) {\n const keysArray = Object.keys(Object(nextSource));\n for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {\n const nextKey = keysArray[nextIndex];\n const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n if (desc !== undefined && desc.enumerable) {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n return to;\n}\nexport function extend(...args) {\n let deep = true;\n let to;\n let from;\n if (typeof args[0] === 'boolean') {\n deep = args[0];\n to = args[1];\n args.splice(0, 2);\n from = args;\n } else {\n to = args[0];\n args.splice(0, 1);\n from = args;\n }\n for (let i = 0; i < from.length; i += 1) {\n const nextSource = args[i];\n if (nextSource !== undefined && nextSource !== null) {\n const keysArray = Object.keys(Object(nextSource));\n for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {\n const nextKey = keysArray[nextIndex];\n const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n if (desc !== undefined && desc.enumerable) {\n if (!deep) {\n to[nextKey] = nextSource[nextKey];\n } else if (isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n extend(to[nextKey], nextSource[nextKey]);\n } else if (!isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n to[nextKey] = {};\n extend(to[nextKey], nextSource[nextKey]);\n } else {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n }\n return to;\n}\nexport function colorHexToRgb(hex) {\n const h = hex.replace(/^#?([a-f\\d])([a-f\\d])([a-f\\d])$/i, (m, r, g, b) => r + r + g + g + b + b);\n const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(h);\n return result ? result.slice(1).map((n) => parseInt(n, 16)) : null;\n}\nexport function colorRgbToHex(r, g, b) {\n const result = [r, g, b]\n .map((n) => {\n const hex = n.toString(16);\n return hex.length === 1 ? `0${hex}` : hex;\n })\n .join('');\n return `#${result}`;\n}\nexport function colorRgbToHsl(r, g, b) {\n r /= 255; // eslint-disable-line\n g /= 255; // eslint-disable-line\n b /= 255; // eslint-disable-line\n const max = Math.max(r, g, b);\n const min = Math.min(r, g, b);\n const d = max - min;\n let h;\n if (d === 0) h = 0;\n else if (max === r) h = ((g - b) / d) % 6;\n else if (max === g) h = (b - r) / d + 2;\n else if (max === b) h = (r - g) / d + 4;\n const l = (min + max) / 2;\n const s = d === 0 ? 0 : d / (1 - Math.abs(2 * l - 1));\n if (h < 0) h = 360 / 60 + h;\n return [h * 60, s, l];\n}\nexport function colorHslToRgb(h, s, l) {\n const c = (1 - Math.abs(2 * l - 1)) * s;\n const hp = h / 60;\n const x = c * (1 - Math.abs((hp % 2) - 1));\n let rgb1;\n if (Number.isNaN(h) || typeof h === 'undefined') {\n rgb1 = [0, 0, 0];\n } else if (hp <= 1) rgb1 = [c, x, 0];\n else if (hp <= 2) rgb1 = [x, c, 0];\n else if (hp <= 3) rgb1 = [0, c, x];\n else if (hp <= 4) rgb1 = [0, x, c];\n else if (hp <= 5) rgb1 = [x, 0, c];\n else if (hp <= 6) rgb1 = [c, 0, x];\n const m = l - c / 2;\n return rgb1.map((n) => Math.max(0, Math.min(255, Math.round(255 * (n + m)))));\n}\nexport function colorHsbToHsl(h, s, b) {\n const HSL = {\n h,\n s: 0,\n l: 0,\n };\n const HSB = { h, s, b };\n\n HSL.l = ((2 - HSB.s) * HSB.b) / 2;\n HSL.s = HSL.l && HSL.l < 1 ? (HSB.s * HSB.b) / (HSL.l < 0.5 ? HSL.l * 2 : 2 - HSL.l * 2) : HSL.s;\n\n return [HSL.h, HSL.s, HSL.l];\n}\nexport function colorHslToHsb(h, s, l) {\n const HSB = {\n h,\n s: 0,\n b: 0,\n };\n const HSL = { h, s, l };\n\n const t = HSL.s * (HSL.l < 0.5 ? HSL.l : 1 - HSL.l);\n HSB.b = HSL.l + t;\n HSB.s = HSL.l > 0 ? (2 * t) / HSB.b : HSB.s;\n\n return [HSB.h, HSB.s, HSB.b];\n}\nexport function colorThemeCSSProperties(...args) {\n let hex;\n let rgb;\n if (args.length === 1) {\n hex = args[0];\n rgb = colorHexToRgb(hex);\n } else if (args.length === 3) {\n rgb = args;\n hex = colorRgbToHex(...rgb);\n }\n if (!rgb) return {};\n const hsl = colorRgbToHsl(...rgb);\n const hslShade = [hsl[0], hsl[1], Math.max(0, hsl[2] - 0.08)];\n const hslTint = [hsl[0], hsl[1], Math.max(0, hsl[2] + 0.08)];\n const shade = colorRgbToHex(...colorHslToRgb(...hslShade));\n const tint = colorRgbToHex(...colorHslToRgb(...hslTint));\n return {\n '--f7-theme-color': hex,\n '--f7-theme-color-rgb': rgb.join(', '),\n '--f7-theme-color-shade': shade,\n '--f7-theme-color-tint': tint,\n };\n}\n\nexport function bindMethods(instance, obj) {\n Object.keys(obj).forEach((key) => {\n if (isObject(obj[key])) {\n Object.keys(obj[key]).forEach((subKey) => {\n if (typeof obj[key][subKey] === 'function') {\n obj[key][subKey] = obj[key][subKey].bind(instance);\n }\n });\n }\n instance[key] = obj[key];\n });\n}\n\nexport function flattenArray(...args) {\n const arr = [];\n args.forEach((arg) => {\n if (Array.isArray(arg)) arr.push(...flattenArray(...arg));\n else arr.push(arg);\n });\n return arr;\n}\n","import { getWindow, getDocument } from 'ssr-window';\n\nlet support;\n\nfunction calcSupport() {\n const window = getWindow();\n const document = getDocument();\n\n return {\n touch: !!(\n 'ontouchstart' in window ||\n (window.DocumentTouch && document instanceof window.DocumentTouch)\n ),\n\n pointerEvents:\n !!window.PointerEvent &&\n 'maxTouchPoints' in window.navigator &&\n window.navigator.maxTouchPoints >= 0,\n\n passiveListener: (function checkPassiveListener() {\n let supportsPassive = false;\n try {\n const opts = Object.defineProperty({}, 'passive', {\n // eslint-disable-next-line\n get() {\n supportsPassive = true;\n },\n });\n window.addEventListener('testPassiveListener', null, opts);\n } catch (e) {\n // No support\n }\n return supportsPassive;\n })(),\n\n intersectionObserver: (function checkObserver() {\n return 'IntersectionObserver' in window;\n })(),\n };\n}\n\nfunction getSupport() {\n if (!support) {\n support = calcSupport();\n }\n return support;\n}\n\nexport { getSupport };\n","import { getWindow } from 'ssr-window';\nimport { getSupport } from './get-support.js';\n\nlet deviceCalculated;\n\nfunction calcDevice({ userAgent } = {}) {\n const support = getSupport();\n const window = getWindow();\n const platform = window.navigator.platform;\n const ua = userAgent || window.navigator.userAgent;\n\n const device = {\n ios: false,\n android: false,\n androidChrome: false,\n desktop: false,\n iphone: false,\n ipod: false,\n ipad: false,\n edge: false,\n ie: false,\n firefox: false,\n macos: false,\n windows: false,\n cordova: !!window.cordova,\n electron: false,\n capacitor: !!window.Capacitor,\n nwjs: false,\n };\n\n const screenWidth = window.screen.width;\n const screenHeight = window.screen.height;\n\n const android = ua.match(/(Android);?[\\s\\/]+([\\d.]+)?/); // eslint-disable-line\n let ipad = ua.match(/(iPad).*OS\\s([\\d_]+)/);\n const ipod = ua.match(/(iPod)(.*OS\\s([\\d_]+))?/);\n const iphone = !ipad && ua.match(/(iPhone\\sOS|iOS|iPhone;\\sCPU\\sOS)\\s([\\d_]+)/);\n const ie = ua.indexOf('MSIE ') >= 0 || ua.indexOf('Trident/') >= 0;\n const edge = ua.indexOf('Edge/') >= 0;\n const firefox = ua.indexOf('Gecko/') >= 0 && ua.indexOf('Firefox/') >= 0;\n const windows = platform === 'Win32';\n const electron = ua.toLowerCase().indexOf('electron') >= 0;\n const nwjs =\n typeof nw !== 'undefined' &&\n typeof process !== 'undefined' &&\n typeof process.versions !== 'undefined' &&\n typeof process.versions.nw !== 'undefined';\n let macos = platform === 'MacIntel';\n\n // iPadOs 13 fix\n const iPadScreens = [\n '1024x1366',\n '1366x1024',\n '834x1194',\n '1194x834',\n '834x1112',\n '1112x834',\n '768x1024',\n '1024x768',\n '820x1180',\n '1180x820',\n '810x1080',\n '1080x810',\n ];\n if (\n !ipad &&\n macos &&\n support.touch &&\n iPadScreens.indexOf(`${screenWidth}x${screenHeight}`) >= 0\n ) {\n ipad = ua.match(/(Version)\\/([\\d.]+)/);\n if (!ipad) ipad = [0, 1, '13_0_0'];\n macos = false;\n }\n\n device.ie = ie;\n device.edge = edge;\n device.firefox = firefox;\n\n // Android\n if (android) {\n device.os = 'android';\n device.osVersion = android[2];\n device.android = true;\n device.androidChrome = ua.toLowerCase().indexOf('chrome') >= 0;\n }\n if (ipad || iphone || ipod) {\n device.os = 'ios';\n device.ios = true;\n }\n // iOS\n if (iphone && !ipod) {\n device.osVersion = iphone[2].replace(/_/g, '.');\n device.iphone = true;\n }\n if (ipad) {\n device.osVersion = ipad[2].replace(/_/g, '.');\n device.ipad = true;\n }\n if (ipod) {\n device.osVersion = ipod[3] ? ipod[3].replace(/_/g, '.') : null;\n device.ipod = true;\n }\n // iOS 8+ changed UA\n if (device.ios && device.osVersion && ua.indexOf('Version/') >= 0) {\n if (device.osVersion.split('.')[0] === '10') {\n device.osVersion = ua.toLowerCase().split('version/')[1].split(' ')[0];\n }\n }\n\n // Webview\n device.webView =\n !!(\n (iphone || ipad || ipod) &&\n (ua.match(/.*AppleWebKit(?!.*Safari)/i) || window.navigator.standalone)\n ) ||\n (window.matchMedia && window.matchMedia('(display-mode: standalone)').matches);\n device.webview = device.webView;\n device.standalone = device.webView;\n\n // Desktop\n device.desktop = !(device.ios || device.android) || electron || nwjs;\n if (device.desktop) {\n device.electron = electron;\n device.nwjs = nwjs;\n device.macos = macos;\n device.windows = windows;\n if (device.macos) {\n device.os = 'macos';\n }\n if (device.windows) {\n device.os = 'windows';\n }\n }\n\n // Pixel Ratio\n device.pixelRatio = window.devicePixelRatio || 1;\n\n // Color Scheme\n const DARK = '(prefers-color-scheme: dark)';\n const LIGHT = '(prefers-color-scheme: light)';\n device.prefersColorScheme = function prefersColorTheme() {\n let theme;\n if (window.matchMedia && window.matchMedia(LIGHT).matches) {\n theme = 'light';\n }\n if (window.matchMedia && window.matchMedia(DARK).matches) {\n theme = 'dark';\n }\n return theme;\n };\n\n // Export object\n return device;\n}\n\nfunction getDevice(overrides = {}, reset) {\n if (!deviceCalculated || reset) {\n deviceCalculated = calcDevice(overrides);\n }\n return deviceCalculated;\n}\n\nexport { getDevice };\n","class EventsClass {\n constructor(parents = []) {\n const self = this;\n self.eventsParents = parents;\n self.eventsListeners = {};\n }\n\n on(events, handler, priority) {\n const self = this;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n events.split(' ').forEach((event) => {\n if (!self.eventsListeners[event]) self.eventsListeners[event] = [];\n self.eventsListeners[event][method](handler);\n });\n return self;\n }\n\n once(events, handler, priority) {\n const self = this;\n if (typeof handler !== 'function') return self;\n function onceHandler(...args) {\n self.off(events, onceHandler);\n if (onceHandler.f7proxy) {\n delete onceHandler.f7proxy;\n }\n handler.apply(self, args);\n }\n onceHandler.f7proxy = handler;\n return self.on(events, onceHandler, priority);\n }\n\n off(events, handler) {\n const self = this;\n if (!self.eventsListeners) return self;\n events.split(' ').forEach((event) => {\n if (typeof handler === 'undefined') {\n self.eventsListeners[event] = [];\n } else if (self.eventsListeners[event]) {\n self.eventsListeners[event].forEach((eventHandler, index) => {\n if (\n eventHandler === handler ||\n (eventHandler.f7proxy && eventHandler.f7proxy === handler)\n ) {\n self.eventsListeners[event].splice(index, 1);\n }\n });\n }\n });\n return self;\n }\n\n emit(...args) {\n const self = this;\n if (!self.eventsListeners) return self;\n let events;\n let data;\n let context;\n let eventsParents;\n if (typeof args[0] === 'string' || Array.isArray(args[0])) {\n events = args[0];\n data = args.slice(1, args.length);\n context = self;\n eventsParents = self.eventsParents;\n } else {\n events = args[0].events;\n data = args[0].data;\n context = args[0].context || self;\n eventsParents = args[0].local ? [] : args[0].parents || self.eventsParents;\n }\n const eventsArray = Array.isArray(events) ? events : events.split(' ');\n const localEvents = eventsArray.map((eventName) => eventName.replace('local::', ''));\n const parentEvents = eventsArray.filter((eventName) => eventName.indexOf('local::') < 0);\n\n localEvents.forEach((event) => {\n if (self.eventsListeners && self.eventsListeners[event]) {\n const handlers = [];\n self.eventsListeners[event].forEach((eventHandler) => {\n handlers.push(eventHandler);\n });\n handlers.forEach((eventHandler) => {\n eventHandler.apply(context, data);\n });\n }\n });\n if (eventsParents && eventsParents.length > 0) {\n eventsParents.forEach((eventsParent) => {\n eventsParent.emit(parentEvents, ...data);\n });\n }\n return self;\n }\n}\n\nexport default EventsClass;\n","import { extend, now } from './utils.js';\nimport EventsClass from './events-class.js';\n\nclass Framework7Class extends EventsClass {\n constructor(params = {}, parents = []) {\n super(parents);\n const self = this;\n self.params = params;\n\n if (self.params && self.params.on) {\n Object.keys(self.params.on).forEach((eventName) => {\n self.on(eventName, self.params.on[eventName]);\n });\n }\n }\n\n // eslint-disable-next-line\n useModuleParams(module, instanceParams) {\n if (module.params) {\n const originalParams = {};\n Object.keys(module.params).forEach((paramKey) => {\n if (typeof instanceParams[paramKey] === 'undefined') return;\n originalParams[paramKey] = extend({}, instanceParams[paramKey]);\n });\n extend(instanceParams, module.params);\n Object.keys(originalParams).forEach((paramKey) => {\n extend(instanceParams[paramKey], originalParams[paramKey]);\n });\n }\n }\n\n useModulesParams(instanceParams) {\n const instance = this;\n if (!instance.modules) return;\n Object.keys(instance.modules).forEach((moduleName) => {\n const module = instance.modules[moduleName];\n // Extend params\n if (module.params) {\n extend(instanceParams, module.params);\n }\n });\n }\n\n useModule(moduleName = '', moduleParams = {}) {\n const instance = this;\n if (!instance.modules) return;\n const module = typeof moduleName === 'string' ? instance.modules[moduleName] : moduleName;\n if (!module) return;\n\n // Extend instance methods and props\n if (module.instance) {\n Object.keys(module.instance).forEach((modulePropName) => {\n const moduleProp = module.instance[modulePropName];\n if (typeof moduleProp === 'function') {\n instance[modulePropName] = moduleProp.bind(instance);\n } else {\n instance[modulePropName] = moduleProp;\n }\n });\n }\n // Add event listeners\n if (module.on && instance.on) {\n Object.keys(module.on).forEach((moduleEventName) => {\n instance.on(moduleEventName, module.on[moduleEventName]);\n });\n }\n // Add vnode hooks\n if (module.vnode) {\n if (!instance.vnodeHooks) instance.vnodeHooks = {};\n Object.keys(module.vnode).forEach((vnodeId) => {\n Object.keys(module.vnode[vnodeId]).forEach((hookName) => {\n const handler = module.vnode[vnodeId][hookName];\n if (!instance.vnodeHooks[hookName]) instance.vnodeHooks[hookName] = {};\n if (!instance.vnodeHooks[hookName][vnodeId]) instance.vnodeHooks[hookName][vnodeId] = [];\n instance.vnodeHooks[hookName][vnodeId].push(handler.bind(instance));\n });\n });\n }\n // Module create callback\n if (module.create) {\n module.create.bind(instance)(moduleParams);\n }\n }\n\n useModules(modulesParams = {}) {\n const instance = this;\n if (!instance.modules) return;\n Object.keys(instance.modules).forEach((moduleName) => {\n const moduleParams = modulesParams[moduleName] || {};\n instance.useModule(moduleName, moduleParams);\n });\n }\n\n static set components(components) {\n const Class = this;\n if (!Class.use) return;\n Class.use(components);\n }\n\n static installModule(module, ...params) {\n const Class = this;\n if (!Class.prototype.modules) Class.prototype.modules = {};\n const name = module.name || `${Object.keys(Class.prototype.modules).length}_${now()}`;\n Class.prototype.modules[name] = module;\n // Prototype\n if (module.proto) {\n Object.keys(module.proto).forEach((key) => {\n Class.prototype[key] = module.proto[key];\n });\n }\n // Class\n if (module.static) {\n Object.keys(module.static).forEach((key) => {\n Class[key] = module.static[key];\n });\n }\n // Callback\n if (module.install) {\n module.install.apply(Class, params);\n }\n return Class;\n }\n\n static use(module, ...params) {\n const Class = this;\n if (Array.isArray(module)) {\n module.forEach((m) => Class.installModule(m));\n return Class;\n }\n return Class.installModule(module, ...params);\n }\n}\n\nexport default Framework7Class;\n","import $ from './dom7.js';\n\nexport default function ConstructorMethods(parameters = {}) {\n const { defaultSelector, constructor: Constructor, domProp, app, addMethods } = parameters;\n const methods = {\n create(...args) {\n if (app) return new Constructor(app, ...args);\n return new Constructor(...args);\n },\n get(el = defaultSelector) {\n if (el instanceof Constructor) return el;\n const $el = $(el);\n if ($el.length === 0) return undefined;\n return $el[0][domProp];\n },\n destroy(el) {\n const instance = methods.get(el);\n if (instance && instance.destroy) return instance.destroy();\n return undefined;\n },\n };\n if (addMethods && Array.isArray(addMethods)) {\n addMethods.forEach((methodName) => {\n methods[methodName] = (el = defaultSelector, ...args) => {\n const instance = methods.get(el);\n if (instance && instance[methodName]) return instance[methodName](...args);\n return undefined;\n };\n });\n }\n return methods;\n}\n","import { getWindow, getDocument } from 'ssr-window';\nimport { id } from '../../shared/utils.js';\nimport $ from '../../shared/dom7.js';\n\nconst fetchedModules = [];\nfunction loadModule(moduleToLoad) {\n const Framework7 = this;\n const window = getWindow();\n const document = getDocument();\n return new Promise((resolve, reject) => {\n const app = Framework7.instance;\n let modulePath;\n let moduleObj;\n let moduleFunc;\n if (!moduleToLoad) {\n reject(new Error('Framework7: Lazy module must be specified'));\n return;\n }\n\n function install(module) {\n Framework7.use(module);\n\n if (app) {\n app.useModuleParams(module, app.params);\n app.useModule(module);\n }\n }\n\n if (typeof moduleToLoad === 'string') {\n const matchNamePattern = moduleToLoad.match(/([a-z0-9-]*)/i);\n if (\n moduleToLoad.indexOf('.') < 0 &&\n matchNamePattern &&\n matchNamePattern[0].length === moduleToLoad.length\n ) {\n if (!app || (app && !app.params.lazyModulesPath)) {\n reject(\n new Error(\n 'Framework7: \"lazyModulesPath\" app parameter must be specified to fetch module by name',\n ),\n );\n return;\n }\n modulePath = `${app.params.lazyModulesPath}/${moduleToLoad}/${moduleToLoad}.lazy.js`;\n } else {\n modulePath = moduleToLoad;\n }\n } else if (typeof moduleToLoad === 'function') {\n moduleFunc = moduleToLoad;\n } else {\n // considering F7-Plugin object\n moduleObj = moduleToLoad;\n }\n\n if (moduleFunc) {\n const module = moduleFunc(Framework7, false);\n if (!module) {\n reject(\n new Error(\"Framework7: Can't find Framework7 component in specified component function\"),\n );\n return;\n }\n // Check if it was added\n if (Framework7.prototype.modules && Framework7.prototype.modules[module.name]) {\n resolve();\n return;\n }\n // Install It\n install(module);\n\n resolve();\n }\n if (moduleObj) {\n const module = moduleObj;\n if (!module) {\n reject(new Error(\"Framework7: Can't find Framework7 component in specified component\"));\n return;\n }\n // Check if it was added\n if (Framework7.prototype.modules && Framework7.prototype.modules[module.name]) {\n resolve();\n return;\n }\n // Install It\n install(module);\n\n resolve();\n }\n if (modulePath) {\n if (fetchedModules.indexOf(modulePath) >= 0) {\n resolve();\n return;\n }\n fetchedModules.push(modulePath);\n const scriptLoad = new Promise((resolveScript, rejectScript) => {\n Framework7.request.get(\n modulePath,\n (scriptContent) => {\n const callbackId = id();\n const callbackLoadName = `f7_component_loader_callback_${callbackId}`;\n\n const scriptEl = document.createElement('script');\n scriptEl.innerHTML = `window.${callbackLoadName} = function (Framework7, Framework7AutoInstallComponent) {return ${scriptContent.trim()}}`;\n $('head').append(scriptEl);\n\n const componentLoader = window[callbackLoadName];\n delete window[callbackLoadName];\n $(scriptEl).remove();\n\n const module = componentLoader(Framework7, false);\n\n if (!module) {\n rejectScript(\n new Error(`Framework7: Can't find Framework7 component in ${modulePath} file`),\n );\n return;\n }\n\n // Check if it was added\n if (Framework7.prototype.modules && Framework7.prototype.modules[module.name]) {\n resolveScript();\n return;\n }\n\n // Install It\n install(module);\n\n resolveScript();\n },\n (xhr, status) => {\n rejectScript(xhr, status);\n },\n );\n });\n const styleLoad = new Promise((resolveStyle) => {\n Framework7.request.get(\n modulePath\n .replace('.lazy.js', app.rtl ? '.rtl.css' : '.css')\n .replace('.js', app.rtl ? '.rtl.css' : '.css'),\n (styleContent) => {\n const styleEl = document.createElement('style');\n styleEl.innerHTML = styleContent;\n $('head').append(styleEl);\n\n resolveStyle();\n },\n () => {\n resolveStyle();\n },\n );\n });\n\n Promise.all([scriptLoad, styleLoad])\n .then(() => {\n resolve();\n })\n .catch((err) => {\n reject(err);\n });\n }\n });\n}\n\nexport default loadModule;\n","/* eslint-disable no-underscore-dangle */\n\nimport { getWindow, getDocument } from 'ssr-window';\nimport { extend, nextFrame } from '../../shared/utils.js';\nimport { getDevice } from '../../shared/get-device.js';\nimport { getSupport } from '../../shared/get-support.js';\nimport Framework7Class from '../../shared/class.js';\nimport EventsClass from '../../shared/events-class.js';\nimport ConstructorMethods from '../../shared/constructor-methods.js';\nimport ModalMethods from '../../shared/modal-methods.js';\nimport $ from '../../shared/dom7.js';\nimport loadModule from './load-module.js';\n\nclass Framework7 extends Framework7Class {\n constructor(params = {}) {\n super(params);\n // eslint-disable-next-line\n if (Framework7.instance && typeof window !== 'undefined') {\n throw new Error(\"Framework7 is already initialized and can't be initialized more than once\");\n }\n const device = getDevice({ userAgent: params.userAgent || undefined });\n const support = getSupport();\n\n const passedParams = extend({}, params);\n\n // App Instance\n const app = this;\n\n app.device = device;\n app.support = support;\n\n const w = getWindow();\n const d = getDocument();\n\n Framework7.instance = app;\n\n // Default\n const defaults = {\n version: '1.0.0',\n id: 'io.framework7.myapp',\n el: 'body',\n theme: 'auto',\n language: w.navigator.language,\n routes: [],\n name: 'Framework7',\n lazyModulesPath: null,\n initOnDeviceReady: true,\n init: true,\n autoDarkMode: false,\n iosTranslucentBars: true,\n iosTranslucentModals: true,\n component: undefined,\n componentUrl: undefined,\n userAgent: null,\n url: null,\n };\n\n // Extend defaults with modules params\n app.useModulesParams(defaults);\n\n // Extend defaults with passed params\n app.params = extend(defaults, params);\n\n extend(app, {\n // App Id\n id: app.params.id,\n // App Name\n name: app.params.name,\n // App version\n version: app.params.version,\n // Routes\n routes: app.params.routes,\n // Lang\n language: app.params.language,\n\n // Theme\n theme: (function getTheme() {\n if (app.params.theme === 'auto') {\n if (device.ios) return 'ios';\n if (device.desktop && device.electron) return 'aurora';\n return 'md';\n }\n return app.params.theme;\n })(),\n\n // Initially passed parameters\n passedParams,\n online: w.navigator.onLine,\n });\n\n if (params.store) app.params.store = params.store;\n\n // Save Root\n if (app.$el && app.$el[0]) {\n app.$el[0].f7 = app;\n }\n\n // Install Modules\n app.useModules();\n\n // Init Store\n app.initStore();\n\n // Init\n if (app.params.init) {\n if (device.cordova && app.params.initOnDeviceReady) {\n $(d).on('deviceready', () => {\n app.init();\n });\n } else {\n app.init();\n }\n }\n\n // Return app instance\n return app;\n }\n\n mount(rootEl) {\n const app = this;\n const window = getWindow();\n const document = getDocument();\n const $rootEl = $(rootEl || app.params.el).eq(0);\n app.$el = $rootEl;\n if (app.$el && app.$el[0]) {\n app.el = app.$el[0];\n app.el.f7 = app;\n app.rtl = $rootEl.css('direction') === 'rtl';\n }\n\n // Auto Dark Mode\n const DARK = '(prefers-color-scheme: dark)';\n const LIGHT = '(prefers-color-scheme: light)';\n app.mq = {};\n if (window.matchMedia) {\n app.mq.dark = window.matchMedia(DARK);\n app.mq.light = window.matchMedia(LIGHT);\n }\n app.colorSchemeListener = function colorSchemeListener({ matches, media }) {\n if (!matches) {\n return;\n }\n const html = document.querySelector('html');\n if (media === DARK) {\n html.classList.add('dark');\n app.darkMode = true;\n app.emit('darkModeChange', true);\n } else if (media === LIGHT) {\n html.classList.remove('dark');\n app.darkMode = false;\n app.emit('darkModeChange', false);\n }\n };\n app.emit('mount');\n }\n\n initStore() {\n const app = this;\n if (typeof app.params.store !== 'undefined' && app.params.store.__store) {\n app.store = app.params.store;\n } else {\n app.store = app.createStore(app.params.store);\n }\n }\n\n enableAutoDarkMode() {\n const window = getWindow();\n const document = getDocument();\n if (!window.matchMedia) return;\n const app = this;\n const html = document.querySelector('html');\n if (app.mq.dark && app.mq.light) {\n app.mq.dark.addListener(app.colorSchemeListener);\n app.mq.light.addListener(app.colorSchemeListener);\n }\n if (app.mq.dark && app.mq.dark.matches) {\n html.classList.add('dark');\n app.darkMode = true;\n app.emit('darkModeChange', true);\n } else if (app.mq.light && app.mq.light.matches) {\n html.classList.remove('dark');\n app.darkMode = false;\n app.emit('darkModeChange', false);\n }\n }\n\n disableAutoDarkMode() {\n const window = getWindow();\n if (!window.matchMedia) return;\n const app = this;\n if (app.mq.dark) app.mq.dark.removeListener(app.colorSchemeListener);\n if (app.mq.light) app.mq.light.removeListener(app.colorSchemeListener);\n }\n\n initAppComponent(callback) {\n const app = this;\n app.router.componentLoader(\n app.params.component,\n app.params.componentUrl,\n { componentOptions: { el: app.$el[0] } },\n (el) => {\n app.$el = $(el);\n app.$el[0].f7 = app;\n app.$elComponent = el.f7Component;\n app.el = app.$el[0];\n if (callback) callback();\n },\n () => {},\n );\n }\n\n init(rootEl) {\n const app = this;\n\n app.mount(rootEl);\n\n const init = () => {\n if (app.initialized) return;\n\n app.$el.addClass('framework7-initializing');\n\n // RTL attr\n if (app.rtl) {\n $('html').attr('dir', 'rtl');\n }\n\n // Auto Dark Mode\n if (app.params.autoDarkMode) {\n app.enableAutoDarkMode();\n }\n\n // Watch for online/offline state\n const window = getWindow();\n window.addEventListener('offline', () => {\n app.online = false;\n app.emit('offline');\n app.emit('connection', false);\n });\n window.addEventListener('online', () => {\n app.online = true;\n app.emit('online');\n app.emit('connection', true);\n });\n\n // Root class\n app.$el.addClass('framework7-root');\n\n // Theme class\n $('html').removeClass('ios md aurora').addClass(app.theme);\n\n // iOS Translucent\n const device = app.device;\n if (app.params.iosTranslucentBars && app.theme === 'ios' && device.ios) {\n $('html').addClass('ios-translucent-bars');\n }\n if (app.params.iosTranslucentModals && app.theme === 'ios' && device.ios) {\n $('html').addClass('ios-translucent-modals');\n }\n\n // Init class\n nextFrame(() => {\n app.$el.removeClass('framework7-initializing');\n });\n // Emit, init other modules\n app.initialized = true;\n app.emit('init');\n };\n if (app.params.component || app.params.componentUrl) {\n app.initAppComponent(() => {\n init();\n });\n } else {\n init();\n }\n return app;\n }\n\n // eslint-disable-next-line\n loadModule(...args) {\n return Framework7.loadModule(...args);\n }\n\n // eslint-disable-next-line\n loadModules(...args) {\n return Framework7.loadModules(...args);\n }\n\n getVnodeHooks(hook, id) {\n const app = this;\n if (!app.vnodeHooks || !app.vnodeHooks[hook]) return [];\n return app.vnodeHooks[hook][id] || [];\n }\n\n // eslint-disable-next-line\n get $() {\n return $;\n }\n\n static get Dom7() {\n return $;\n }\n\n static get $() {\n return $;\n }\n\n static get device() {\n return getDevice();\n }\n\n static get support() {\n return getSupport();\n }\n\n static get Class() {\n return Framework7Class;\n }\n\n static get Events() {\n return EventsClass;\n }\n}\n\nFramework7.ModalMethods = ModalMethods;\nFramework7.ConstructorMethods = ConstructorMethods;\n\nFramework7.loadModule = loadModule;\nFramework7.loadModules = function loadModules(modules) {\n return Promise.all(modules.map((module) => Framework7.loadModule(module)));\n};\n\nexport default Framework7;\n","import $ from './dom7.js';\nimport { extend } from './utils.js';\nimport ConstructorMethods from './constructor-methods.js';\n\nexport default function ModalMethods(parameters = {}) {\n const { defaultSelector, constructor: Constructor, app } = parameters;\n const methods = extend(\n ConstructorMethods({\n defaultSelector,\n constructor: Constructor,\n app,\n domProp: 'f7Modal',\n }),\n {\n open(el, animate, targetEl) {\n let $el = $(el);\n if ($el.length > 1 && targetEl) {\n // check if same modal in other page\n const $targetPage = $(targetEl).parents('.page');\n if ($targetPage.length) {\n $el.each((modalEl) => {\n const $modalEl = $(modalEl);\n if ($modalEl.parents($targetPage)[0] === $targetPage[0]) {\n $el = $modalEl;\n }\n });\n }\n }\n if ($el.length > 1) {\n $el = $el.eq($el.length - 1);\n }\n if (!$el.length) return undefined;\n let instance = $el[0].f7Modal;\n if (!instance) {\n const params = $el.dataset();\n instance = new Constructor(app, { el: $el, ...params });\n }\n return instance.open(animate);\n },\n close(el = defaultSelector, animate, targetEl) {\n let $el = $(el);\n if (!$el.length) return undefined;\n if ($el.length > 1) {\n // check if close link (targetEl) in this modal\n let $parentEl;\n if (targetEl) {\n const $targetEl = $(targetEl);\n if ($targetEl.length) {\n $parentEl = $targetEl.parents($el);\n }\n }\n if ($parentEl && $parentEl.length > 0) {\n $el = $parentEl;\n } else {\n $el = $el.eq($el.length - 1);\n }\n }\n let instance = $el[0].f7Modal;\n if (!instance) {\n const params = $el.dataset();\n instance = new Constructor(app, { el: $el, ...params });\n }\n return instance.close(animate);\n },\n },\n );\n return methods;\n}\n","import { getDocument } from 'ssr-window';\nimport { getDevice } from '../../shared/get-device.js';\n\nexport default {\n name: 'device',\n static: {\n getDevice,\n },\n on: {\n init() {\n const document = getDocument();\n const device = getDevice();\n const classNames = [];\n const html = document.querySelector('html');\n const metaStatusbar = document.querySelector(\n 'meta[name=\"apple-mobile-web-app-status-bar-style\"]',\n );\n if (!html) return;\n if (\n device.standalone &&\n device.ios &&\n metaStatusbar &&\n metaStatusbar.content === 'black-translucent'\n ) {\n classNames.push('device-full-viewport');\n }\n\n // Pixel Ratio\n classNames.push(`device-pixel-ratio-${Math.floor(device.pixelRatio)}`);\n // OS classes\n if (device.os && !device.desktop) {\n classNames.push(`device-${device.os}`);\n } else if (device.desktop) {\n classNames.push('device-desktop');\n if (device.os) {\n classNames.push(`device-${device.os}`);\n }\n }\n if (device.cordova) {\n classNames.push('device-cordova');\n }\n if (device.capacitor) {\n classNames.push('device-capacitor');\n }\n\n // Add html classes\n classNames.forEach((className) => {\n html.classList.add(className);\n });\n },\n },\n};\n","import { getSupport } from '../../shared/get-support.js';\n\nexport default {\n name: 'support',\n static: {\n getSupport,\n },\n};\n","import * as utils from '../../shared/utils.js';\n\nexport default {\n name: 'utils',\n proto: {\n utils,\n },\n static: {\n utils,\n },\n};\n","import { getWindow, getDocument } from 'ssr-window';\nimport { getDevice } from '../../shared/get-device.js';\n\nexport default {\n name: 'resize',\n create() {\n const app = this;\n app.getSize = () => {\n if (!app.el) return { width: 0, height: 0, left: 0, top: 0 };\n const offset = app.$el.offset();\n const [width, height, left, top] = [\n app.el.offsetWidth,\n app.el.offsetHeight,\n offset.left,\n offset.top,\n ];\n app.width = width;\n app.height = height;\n app.left = left;\n app.top = top;\n return { width, height, left, top };\n };\n },\n on: {\n init() {\n const app = this;\n const window = getWindow();\n\n // Get Size\n app.getSize();\n\n // Emit resize\n window.addEventListener(\n 'resize',\n () => {\n app.emit('resize');\n },\n false,\n );\n\n // Emit orientationchange\n window.addEventListener('orientationchange', () => {\n app.emit('orientationchange');\n });\n },\n orientationchange() {\n const document = getDocument();\n const device = getDevice();\n // Fix iPad weird body scroll\n if (device.ipad) {\n document.body.scrollLeft = 0;\n setTimeout(() => {\n document.body.scrollLeft = 0;\n }, 0);\n }\n },\n resize() {\n const app = this;\n app.getSize();\n },\n },\n};\n","/* eslint-disable max-classes-per-file */\nimport { getWindow, getDocument } from 'ssr-window';\nimport { extend, serializeObject } from './utils.js';\n\nconst globals = {};\nlet jsonpRequests = 0;\n\nclass RequestResponse {\n constructor(obj) {\n Object.assign(this, obj);\n }\n}\n\nclass RequestError extends Error {\n constructor(obj) {\n super();\n Object.assign(this, obj);\n }\n}\n\nconst request = (requestOptions) =>\n new Promise((resolve, reject) => {\n const window = getWindow();\n const document = getDocument();\n const globalsNoCallbacks = extend({}, globals);\n 'beforeCreate beforeOpen beforeSend error complete success statusCode'\n .split(' ')\n .forEach((callbackName) => {\n delete globalsNoCallbacks[callbackName];\n });\n const defaults = extend(\n {\n url: window.location.toString(),\n method: 'GET',\n data: false,\n async: true,\n cache: true,\n user: '',\n password: '',\n headers: {},\n xhrFields: {},\n statusCode: {},\n processData: true,\n dataType: 'text',\n contentType: 'application/x-www-form-urlencoded',\n timeout: 0,\n },\n globalsNoCallbacks,\n );\n\n let proceedRequest;\n\n const options = extend({}, defaults, requestOptions);\n if (requestOptions.abortController) {\n options.abortController = requestOptions.abortController;\n }\n\n if (options.abortController && options.abortController.canceled) {\n reject(new RequestError({ options, status: 'canceled', message: 'canceled' }));\n return;\n }\n\n // Function to run XHR callbacks and events\n function fireCallback(callbackName, ...data) {\n /*\n Callbacks:\n beforeCreate (options),\n beforeOpen (xhr, options),\n beforeSend (xhr, options),\n error (xhr, status, message),\n complete (xhr, status),\n success (response, status, xhr),\n statusCode ()\n */\n let globalCallbackValue;\n let optionCallbackValue;\n if (globals[callbackName]) {\n globalCallbackValue = globals[callbackName](...data);\n }\n if (options[callbackName]) {\n optionCallbackValue = options[callbackName](...data);\n }\n if (typeof globalCallbackValue !== 'boolean') globalCallbackValue = true;\n if (typeof optionCallbackValue !== 'boolean') optionCallbackValue = true;\n if (\n options.abortController &&\n options.abortController.canceled &&\n (callbackName === 'beforeCreate' ||\n callbackName === 'beforeOpen' ||\n callbackName === 'beforeSend')\n ) {\n return false;\n }\n return globalCallbackValue && optionCallbackValue;\n }\n\n // Before create callback\n proceedRequest = fireCallback('beforeCreate', options);\n if (proceedRequest === false) {\n reject(new RequestError({ options, status: 'canceled', message: 'canceled' }));\n return;\n }\n\n // For jQuery guys\n if (options.type) options.method = options.type;\n\n // Parameters Prefix\n let paramsPrefix = options.url.indexOf('?') >= 0 ? '&' : '?';\n\n // UC method\n const method = options.method.toUpperCase();\n\n // Data to modify GET URL\n if (\n (method === 'GET' || method === 'HEAD' || method === 'OPTIONS' || method === 'DELETE') &&\n options.data\n ) {\n let stringData;\n if (typeof options.data === 'string') {\n // Should be key=value string\n if (options.data.indexOf('?') >= 0) stringData = options.data.split('?')[1];\n else stringData = options.data;\n } else {\n // Should be key=value object\n stringData = serializeObject(options.data);\n }\n if (stringData.length) {\n options.url += paramsPrefix + stringData;\n if (paramsPrefix === '?') paramsPrefix = '&';\n }\n }\n\n // JSONP\n if (options.dataType === 'json' && options.url.indexOf('callback=') >= 0) {\n const callbackName = `f7jsonp_${Date.now() + (jsonpRequests += 1)}`;\n let abortTimeout;\n const callbackSplit = options.url.split('callback=');\n let requestUrl = `${callbackSplit[0]}callback=${callbackName}`;\n if (callbackSplit[1].indexOf('&') >= 0) {\n const addVars = callbackSplit[1]\n .split('&')\n .filter((el) => el.indexOf('=') > 0)\n .join('&');\n if (addVars.length > 0) requestUrl += `&${addVars}`;\n }\n\n // Create script\n let script = document.createElement('script');\n script.type = 'text/javascript';\n script.onerror = function onerror() {\n clearTimeout(abortTimeout);\n fireCallback('error', null, 'scripterror', 'scripterror');\n reject(new RequestError({ options, status: 'scripterror', message: 'scripterror' }));\n fireCallback('complete', null, 'scripterror');\n };\n script.src = requestUrl;\n\n // Handler\n window[callbackName] = function jsonpCallback(data) {\n clearTimeout(abortTimeout);\n fireCallback('success', data);\n script.parentNode.removeChild(script);\n script = null;\n delete window[callbackName];\n resolve(new RequestResponse({ options, data }));\n };\n document.querySelector('head').appendChild(script);\n\n if (options.timeout > 0) {\n abortTimeout = setTimeout(() => {\n script.parentNode.removeChild(script);\n script = null;\n fireCallback('error', null, 'timeout', 'timeout');\n reject(new RequestError({ options, status: 'timeout', message: 'timeout' }));\n }, options.timeout);\n }\n\n return;\n }\n\n // Cache for GET/HEAD requests\n if (method === 'GET' || method === 'HEAD' || method === 'OPTIONS' || method === 'DELETE') {\n if (options.cache === false) {\n options.url += `${paramsPrefix}_nocache${Date.now()}`;\n }\n }\n\n // Create XHR\n const xhr = new XMLHttpRequest();\n\n if (options.abortController) {\n let aborted = false;\n options.abortController.onAbort = () => {\n if (aborted) return;\n aborted = true;\n xhr.abort();\n reject(new RequestError({ options, xhr, status: 'canceled', message: 'canceled' }));\n };\n }\n\n // Save Request URL\n xhr.requestUrl = options.url;\n xhr.requestParameters = options;\n\n // Before open callback\n proceedRequest = fireCallback('beforeOpen', xhr, options);\n if (proceedRequest === false) {\n reject(new RequestError({ options, xhr, status: 'canceled', message: 'canceled' }));\n return;\n }\n\n // Open XHR\n xhr.open(method, options.url, options.async, options.user, options.password);\n\n // Create POST Data\n let postData = null;\n\n if ((method === 'POST' || method === 'PUT' || method === 'PATCH') && options.data) {\n if (options.processData) {\n const postDataInstances = [ArrayBuffer, Blob, Document, FormData];\n // Post Data\n if (postDataInstances.indexOf(options.data.constructor) >= 0) {\n postData = options.data;\n } else {\n // POST Headers\n const boundary = `---------------------------${Date.now().toString(16)}`;\n\n if (options.contentType === 'multipart/form-data') {\n xhr.setRequestHeader('Content-Type', `multipart/form-data; boundary=${boundary}`);\n } else {\n xhr.setRequestHeader('Content-Type', options.contentType);\n }\n postData = '';\n let data = serializeObject(options.data);\n if (options.contentType === 'multipart/form-data') {\n data = data.split('&');\n const newData = [];\n for (let i = 0; i < data.length; i += 1) {\n newData.push(\n `Content-Disposition: form-data; name=\"${data[i].split('=')[0]}\"\\r\\n\\r\\n${\n data[i].split('=')[1]\n }\\r\\n`,\n );\n }\n postData = `--${boundary}\\r\\n${newData.join(`--${boundary}\\r\\n`)}--${boundary}--\\r\\n`;\n } else if (options.contentType === 'application/json') {\n postData = JSON.stringify(options.data);\n } else {\n postData = data;\n }\n }\n } else {\n postData = options.data;\n xhr.setRequestHeader('Content-Type', options.contentType);\n }\n }\n if (options.dataType === 'json' && (!options.headers || !options.headers.Accept)) {\n xhr.setRequestHeader('Accept', 'application/json');\n }\n\n // Additional headers\n if (options.headers) {\n Object.keys(options.headers).forEach((headerName) => {\n if (typeof options.headers[headerName] === 'undefined') return;\n xhr.setRequestHeader(headerName, options.headers[headerName]);\n });\n }\n\n // Check for crossDomain\n if (typeof options.crossDomain === 'undefined') {\n options.crossDomain =\n // eslint-disable-next-line\n /^([\\w-]+:)?\\/\\/([^\\/]+)/.test(options.url) && RegExp.$2 !== window.location.host;\n }\n\n if (!options.crossDomain) {\n xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');\n }\n\n if (options.xhrFields) {\n extend(xhr, options.xhrFields);\n }\n\n // Handle XHR\n xhr.onload = function onload() {\n if ((xhr.status >= 200 && xhr.status < 300) || xhr.status === 0) {\n let responseData;\n if (options.dataType === 'json') {\n let parseError;\n try {\n responseData = JSON.parse(xhr.responseText);\n } catch (err) {\n parseError = true;\n }\n if (!parseError) {\n fireCallback('success', responseData, xhr.status, xhr);\n resolve(new RequestResponse({ options, data: responseData, status: xhr.status, xhr }));\n } else {\n fireCallback('error', xhr, 'parseerror', 'parseerror');\n reject(new RequestError({ options, xhr, status: 'parseerror', message: 'parseerror' }));\n }\n } else {\n responseData =\n xhr.responseType === 'text' || xhr.responseType === ''\n ? xhr.responseText\n : xhr.response;\n fireCallback('success', responseData, xhr.status, xhr);\n resolve(new RequestResponse({ options, data: responseData, status: xhr.status, xhr }));\n }\n } else {\n fireCallback('error', xhr, xhr.status, xhr.statusText);\n reject(new RequestError({ options, xhr, status: xhr.status, message: xhr.statusText }));\n }\n if (options.statusCode) {\n if (globals.statusCode && globals.statusCode[xhr.status])\n globals.statusCode[xhr.status](xhr);\n if (options.statusCode[xhr.status]) options.statusCode[xhr.status](xhr);\n }\n fireCallback('complete', xhr, xhr.status);\n };\n\n xhr.onerror = function onerror() {\n fireCallback('error', xhr, xhr.status, xhr.status);\n reject(new RequestError({ options, xhr, status: xhr.status, message: xhr.statusText }));\n fireCallback('complete', xhr, 'error');\n };\n\n // Timeout\n if (options.timeout > 0) {\n xhr.timeout = options.timeout;\n xhr.ontimeout = () => {\n fireCallback('error', xhr, 'timeout', 'timeout');\n reject(new RequestError({ options, xhr, status: 'timeout', message: 'timeout' }));\n fireCallback('complete', xhr, 'timeout');\n };\n }\n\n // Ajax start callback\n proceedRequest = fireCallback('beforeSend', xhr, options);\n if (proceedRequest === false) {\n reject(new RequestError({ options, xhr, status: 'canceled', message: 'canceled' }));\n return;\n }\n\n // Send XHR\n xhr.send(postData);\n });\n\nfunction requestShortcut(method, ...args) {\n let [url, data, success, error, dataType] = [];\n if (typeof args[1] === 'function') {\n [url, success, error, dataType] = args;\n } else {\n [url, data, success, error, dataType] = args;\n }\n [success, error].forEach((callback) => {\n if (typeof callback === 'string') {\n dataType = callback;\n if (callback === success) success = undefined;\n else error = undefined;\n }\n });\n dataType = dataType || (method === 'json' || method === 'postJSON' ? 'json' : undefined);\n const requestOptions = {\n url,\n method: method === 'post' || method === 'postJSON' ? 'POST' : 'GET',\n data,\n success,\n error,\n dataType,\n };\n if (method === 'postJSON') {\n extend(requestOptions, {\n contentType: 'application/json',\n processData: false,\n crossDomain: true,\n data: typeof data === 'string' ? data : JSON.stringify(data),\n });\n }\n return request(requestOptions);\n}\n\nObject.assign(request, {\n get: (...args) => requestShortcut('get', ...args),\n post: (...args) => requestShortcut('post', ...args),\n json: (...args) => requestShortcut('json', ...args),\n getJSON: (...args) => requestShortcut('json', ...args),\n postJSON: (...args) => requestShortcut('postJSON', ...args),\n});\n\nrequest.abortController = () => {\n const contoller = {\n canceled: false,\n onAbort: null,\n abort() {\n contoller.canceled = true;\n if (contoller.onAbort) contoller.onAbort();\n },\n };\n return contoller;\n};\n\nrequest.setup = function setup(options) {\n if (options.type && !options.method) {\n extend(options, { method: options.type });\n }\n extend(globals, options);\n};\n\nexport default request;\n","/* eslint no-param-reassign: \"off\" */\nimport request from '../../shared/request.js';\n\nexport default {\n name: 'request',\n proto: {\n request,\n },\n static: {\n request,\n },\n};\n","/* eslint-disable no-nested-ternary */\nimport { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { getSupport } from '../../shared/get-support.js';\nimport { getDevice } from '../../shared/get-device.js';\nimport { extend } from '../../shared/utils.js';\n\nfunction initTouch() {\n const app = this;\n const device = getDevice();\n const support = getSupport();\n const window = getWindow();\n const document = getDocument();\n const params = app.params.touch;\n const useRipple = params[`${app.theme}TouchRipple`];\n\n if (device.ios && device.webView) {\n // Strange hack required for iOS 8 webview to work on inputs\n window.addEventListener('touchstart', () => {});\n }\n\n let touchStartX;\n let touchStartY;\n let targetElement;\n let isMoved;\n let tapHoldFired;\n let tapHoldTimeout;\n let preventClick;\n\n let activableElement;\n let activeTimeout;\n\n let rippleWave;\n let rippleTarget;\n let rippleTimeout;\n\n function findActivableElement(el) {\n const target = $(el);\n const parents = target.parents(params.activeStateElements);\n if (target.closest('.no-active-state').length) {\n return null;\n }\n let activable;\n if (target.is(params.activeStateElements)) {\n activable = target;\n }\n if (parents.length > 0) {\n activable = activable ? activable.add(parents) : parents;\n }\n if (activable && activable.length > 1) {\n const newActivable = [];\n let preventPropagation;\n for (let i = 0; i < activable.length; i += 1) {\n if (!preventPropagation) {\n newActivable.push(activable[i]);\n if (\n activable.eq(i).hasClass('prevent-active-state-propagation') ||\n activable.eq(i).hasClass('no-active-state-propagation')\n ) {\n preventPropagation = true;\n }\n }\n }\n activable = $(newActivable);\n }\n return activable || target;\n }\n\n function isInsideScrollableView(el) {\n const pageContent = el.parents('.page-content');\n return pageContent.length > 0;\n }\n\n function addActive() {\n if (!activableElement) return;\n activableElement.addClass('active-state');\n }\n function removeActive() {\n if (!activableElement) return;\n activableElement.removeClass('active-state');\n activableElement = null;\n }\n\n // Ripple handlers\n function findRippleElement(el) {\n const rippleElements = params.touchRippleElements;\n const $el = $(el);\n if ($el.is(rippleElements)) {\n if ($el.hasClass('no-ripple')) {\n return false;\n }\n return $el;\n }\n if ($el.parents(rippleElements).length > 0) {\n const rippleParent = $el.parents(rippleElements).eq(0);\n if (rippleParent.hasClass('no-ripple')) {\n return false;\n }\n return rippleParent;\n }\n return false;\n }\n function createRipple($el, x, y) {\n if (!$el) return;\n rippleWave = app.touchRipple.create(app, $el, x, y);\n }\n\n function removeRipple() {\n if (!rippleWave) return;\n rippleWave.remove();\n rippleWave = undefined;\n rippleTarget = undefined;\n }\n function rippleTouchStart(el) {\n rippleTarget = findRippleElement(el);\n if (!rippleTarget || rippleTarget.length === 0) {\n rippleTarget = undefined;\n return;\n }\n const inScrollable = isInsideScrollableView(rippleTarget);\n\n if (!inScrollable) {\n removeRipple();\n createRipple(rippleTarget, touchStartX, touchStartY);\n } else {\n clearTimeout(rippleTimeout);\n rippleTimeout = setTimeout(() => {\n removeRipple();\n createRipple(rippleTarget, touchStartX, touchStartY);\n }, 80);\n }\n }\n function rippleTouchMove() {\n clearTimeout(rippleTimeout);\n removeRipple();\n }\n function rippleTouchEnd() {\n if (!rippleWave && rippleTarget && !isMoved) {\n clearTimeout(rippleTimeout);\n createRipple(rippleTarget, touchStartX, touchStartY);\n setTimeout(removeRipple, 0);\n } else {\n removeRipple();\n }\n }\n\n // Mouse Handlers\n function handleMouseDown(e) {\n const $activableEl = findActivableElement(e.target);\n if ($activableEl) {\n $activableEl.addClass('active-state');\n if ('which' in e && e.which === 3) {\n setTimeout(() => {\n $('.active-state').removeClass('active-state');\n }, 0);\n }\n }\n\n if (useRipple) {\n touchStartX = e.pageX;\n touchStartY = e.pageY;\n rippleTouchStart(e.target, e.pageX, e.pageY);\n }\n }\n function handleMouseMove() {\n if (!params.activeStateOnMouseMove) {\n $('.active-state').removeClass('active-state');\n }\n if (useRipple) {\n rippleTouchMove();\n }\n }\n function handleMouseUp() {\n $('.active-state').removeClass('active-state');\n if (useRipple) {\n rippleTouchEnd();\n }\n }\n\n function handleTouchCancel() {\n targetElement = null;\n\n // Remove Active State\n clearTimeout(activeTimeout);\n clearTimeout(tapHoldTimeout);\n if (params.activeState) {\n removeActive();\n }\n\n // Remove Ripple\n if (useRipple) {\n rippleTouchEnd();\n }\n }\n\n let isScrolling;\n let isSegmentedStrong = false;\n let segmentedStrongEl = null;\n\n const touchMoveActivableIos = '.dialog-button, .actions-button';\n let isTouchMoveActivable = false;\n let touchmoveActivableEl = null;\n\n function handleTouchStart(e) {\n isMoved = false;\n tapHoldFired = false;\n preventClick = false;\n isScrolling = undefined;\n if (e.targetTouches.length > 1) {\n if (activableElement) removeActive();\n return true;\n }\n if (e.touches.length > 1 && activableElement) {\n removeActive();\n }\n if (params.tapHold) {\n if (tapHoldTimeout) clearTimeout(tapHoldTimeout);\n tapHoldTimeout = setTimeout(() => {\n if (e && e.touches && e.touches.length > 1) return;\n tapHoldFired = true;\n e.preventDefault();\n preventClick = true;\n $(e.target).trigger('taphold', e);\n app.emit('taphold', e);\n }, params.tapHoldDelay);\n }\n targetElement = e.target;\n touchStartX = e.targetTouches[0].pageX;\n touchStartY = e.targetTouches[0].pageY;\n isSegmentedStrong = e.target.closest(\n '.segmented-strong .button-active, .segmented-strong .tab-link-active',\n );\n isTouchMoveActivable = app.theme === 'ios' && e.target.closest(touchMoveActivableIos);\n if (isSegmentedStrong) {\n segmentedStrongEl = isSegmentedStrong.closest('.segmented-strong');\n }\n\n if (params.activeState) {\n activableElement = findActivableElement(targetElement);\n if (activableElement && !isInsideScrollableView(activableElement)) {\n addActive();\n } else if (activableElement) {\n activeTimeout = setTimeout(addActive, 80);\n }\n }\n if (useRipple) {\n rippleTouchStart(targetElement, touchStartX, touchStartY);\n }\n return true;\n }\n function handleTouchMove(e) {\n let touch;\n let distance;\n let shouldRemoveActive = true;\n\n if (e.type === 'touchmove') {\n touch = e.targetTouches[0];\n distance = params.touchClicksDistanceThreshold;\n }\n\n const touchCurrentX = e.targetTouches[0].pageX;\n const touchCurrentY = e.targetTouches[0].pageY;\n\n if (typeof isScrolling === 'undefined') {\n isScrolling = !!(\n isScrolling || Math.abs(touchCurrentY - touchStartY) > Math.abs(touchCurrentX - touchStartX)\n );\n }\n\n if (isTouchMoveActivable || (!isScrolling && isSegmentedStrong && segmentedStrongEl)) {\n if (e.cancelable) e.preventDefault();\n }\n\n if (!isScrolling && isSegmentedStrong && segmentedStrongEl) {\n const elementFromPoint = document.elementFromPoint(\n e.targetTouches[0].clientX,\n e.targetTouches[0].clientY,\n );\n const buttonEl = elementFromPoint.closest(\n '.segmented-strong .button:not(.button-active):not(.tab-link-active)',\n );\n if (buttonEl && segmentedStrongEl.contains(buttonEl)) {\n $(buttonEl).trigger('click', 'f7Segmented');\n targetElement = buttonEl;\n }\n }\n\n if (distance && touch) {\n const pageX = touch.pageX;\n const pageY = touch.pageY;\n if (Math.abs(pageX - touchStartX) > distance || Math.abs(pageY - touchStartY) > distance) {\n isMoved = true;\n }\n } else {\n isMoved = true;\n }\n if (isMoved) {\n preventClick = true;\n // Keep active state on touchMove (for dialog and actions buttons)\n if (isTouchMoveActivable) {\n const elementFromPoint = document.elementFromPoint(\n e.targetTouches[0].clientX,\n e.targetTouches[0].clientY,\n );\n touchmoveActivableEl = elementFromPoint.closest(touchMoveActivableIos);\n if (\n touchmoveActivableEl &&\n activableElement &&\n activableElement[0] === touchmoveActivableEl\n ) {\n shouldRemoveActive = false;\n } else if (touchmoveActivableEl) {\n setTimeout(() => {\n activableElement = findActivableElement(touchmoveActivableEl);\n addActive();\n });\n }\n }\n if (params.tapHold) {\n clearTimeout(tapHoldTimeout);\n }\n if (params.activeState && shouldRemoveActive) {\n clearTimeout(activeTimeout);\n removeActive();\n }\n if (useRipple) {\n rippleTouchMove();\n }\n }\n }\n function handleTouchEnd(e) {\n isScrolling = undefined;\n isSegmentedStrong = false;\n segmentedStrongEl = null;\n isTouchMoveActivable = false;\n clearTimeout(activeTimeout);\n clearTimeout(tapHoldTimeout);\n if (touchmoveActivableEl) {\n $(touchmoveActivableEl).trigger('click', 'f7TouchMoveActivable');\n touchmoveActivableEl = null;\n }\n if (document.activeElement === e.target) {\n if (params.activeState) removeActive();\n if (useRipple) {\n rippleTouchEnd();\n }\n return true;\n }\n if (params.activeState) {\n addActive();\n setTimeout(removeActive, 0);\n }\n if (useRipple) {\n rippleTouchEnd();\n }\n if ((params.tapHoldPreventClicks && tapHoldFired) || preventClick) {\n if (e.cancelable) e.preventDefault();\n preventClick = true;\n return false;\n }\n return true;\n }\n function handleClick(e) {\n const isOverswipe = e && e.detail && e.detail === 'f7Overswipe';\n const isSegmented = e && e.detail && e.detail === 'f7Segmented';\n // eslint-disable-next-line\n const isTouchMoveActivable = e && e.detail && e.detail === 'f7TouchMoveActivable';\n let localPreventClick = preventClick;\n if (targetElement && e.target !== targetElement) {\n if (isOverswipe || isSegmented || isTouchMoveActivable) {\n localPreventClick = false;\n } else {\n localPreventClick = true;\n }\n } else if (isTouchMoveActivable) {\n localPreventClick = false;\n }\n if (params.tapHold && params.tapHoldPreventClicks && tapHoldFired) {\n localPreventClick = true;\n }\n if (localPreventClick) {\n e.stopImmediatePropagation();\n e.stopPropagation();\n e.preventDefault();\n }\n\n if (params.tapHold) {\n tapHoldTimeout = setTimeout(\n () => {\n tapHoldFired = false;\n },\n device.ios || device.androidChrome ? 100 : 400,\n );\n }\n preventClick = false;\n targetElement = null;\n\n return !localPreventClick;\n }\n\n function emitAppTouchEvent(name, e) {\n app.emit({\n events: name,\n data: [e],\n });\n }\n function appClick(e) {\n emitAppTouchEvent('click', e);\n }\n function appTouchStartActive(e) {\n emitAppTouchEvent('touchstart touchstart:active', e);\n }\n function appTouchMoveActive(e) {\n emitAppTouchEvent('touchmove touchmove:active', e);\n }\n function appTouchEndActive(e) {\n emitAppTouchEvent('touchend touchend:active', e);\n }\n function appTouchStartPassive(e) {\n emitAppTouchEvent('touchstart:passive', e);\n }\n function appTouchMovePassive(e) {\n emitAppTouchEvent('touchmove:passive', e);\n }\n function appTouchEndPassive(e) {\n emitAppTouchEvent('touchend:passive', e);\n }\n\n const passiveListener = support.passiveListener ? { passive: true } : false;\n const passiveListenerCapture = support.passiveListener ? { passive: true, capture: true } : true;\n const activeListener = support.passiveListener ? { passive: false } : false;\n const activeListenerCapture = support.passiveListener ? { passive: false, capture: true } : true;\n\n document.addEventListener('click', appClick, true);\n\n if (support.passiveListener) {\n document.addEventListener(app.touchEvents.start, appTouchStartActive, activeListenerCapture);\n document.addEventListener(app.touchEvents.move, appTouchMoveActive, activeListener);\n document.addEventListener(app.touchEvents.end, appTouchEndActive, activeListener);\n\n document.addEventListener(app.touchEvents.start, appTouchStartPassive, passiveListenerCapture);\n document.addEventListener(app.touchEvents.move, appTouchMovePassive, passiveListener);\n document.addEventListener(app.touchEvents.end, appTouchEndPassive, passiveListener);\n } else {\n document.addEventListener(\n app.touchEvents.start,\n (e) => {\n appTouchStartActive(e);\n appTouchStartPassive(e);\n },\n true,\n );\n document.addEventListener(\n app.touchEvents.move,\n (e) => {\n appTouchMoveActive(e);\n appTouchMovePassive(e);\n },\n false,\n );\n document.addEventListener(\n app.touchEvents.end,\n (e) => {\n appTouchEndActive(e);\n appTouchEndPassive(e);\n },\n false,\n );\n }\n\n if (support.touch) {\n app.on('click', handleClick);\n app.on('touchstart', handleTouchStart);\n app.on('touchmove', handleTouchMove);\n app.on('touchend', handleTouchEnd);\n document.addEventListener('touchcancel', handleTouchCancel, { passive: true });\n } else if (params.activeState) {\n app.on('touchstart', handleMouseDown);\n app.on('touchmove', handleMouseMove);\n app.on('touchend', handleMouseUp);\n document.addEventListener('pointercancel', handleMouseUp, { passive: true });\n }\n document.addEventListener('contextmenu', (e) => {\n if (\n params.disableContextMenu &&\n (device.ios ||\n device.android ||\n device.cordova ||\n (window.Capacitor && window.Capacitor.isNative))\n ) {\n e.preventDefault();\n }\n if (useRipple) {\n if (activableElement) removeActive();\n rippleTouchEnd();\n }\n });\n}\n\nexport default {\n name: 'touch',\n params: {\n touch: {\n // Clicks\n touchClicksDistanceThreshold: 5,\n // ContextMenu\n disableContextMenu: false,\n // Tap Hold\n tapHold: false,\n tapHoldDelay: 750,\n tapHoldPreventClicks: true,\n // Active State\n activeState: true,\n activeStateElements:\n 'a, button, label, span, .actions-button, .stepper-button, .stepper-button-plus, .stepper-button-minus, .card-expandable, .menu-item, .link, .item-link, .accordion-item-toggle',\n activeStateOnMouseMove: false,\n mdTouchRipple: true,\n iosTouchRipple: false,\n auroraTouchRipple: false,\n touchRippleElements:\n '.ripple, .link, .item-link, .list-button, .links-list a, .button, button, .input-clear-button, .dialog-button, .tab-link, .item-radio, .item-checkbox, .actions-button, .searchbar-disable-button, .fab a, .checkbox, .radio, .data-table .sortable-cell:not(.input-cell), .notification-close-button, .stepper-button, .stepper-button-minus, .stepper-button-plus, .menu-item-content, .list.accordion-list .accordion-item-toggle',\n touchRippleInsetElements:\n '.ripple-inset, .icon-only, .searchbar-disable-button, .input-clear-button, .notification-close-button, .md .navbar .link.back',\n },\n },\n create() {\n const app = this;\n const support = getSupport();\n extend(app, {\n touchEvents: {\n start: support.touch ? 'touchstart' : support.pointerEvents ? 'pointerdown' : 'mousedown',\n move: support.touch ? 'touchmove' : support.pointerEvents ? 'pointermove' : 'mousemove',\n end: support.touch ? 'touchend' : support.pointerEvents ? 'pointerup' : 'mouseup',\n },\n });\n },\n on: {\n init: initTouch,\n },\n};\n","/**\n * Tokenize input string.\n */\nfunction lexer(str) {\n var tokens = [];\n var i = 0;\n while (i < str.length) {\n var char = str[i];\n if (char === \"*\" || char === \"+\" || char === \"?\") {\n tokens.push({ type: \"MODIFIER\", index: i, value: str[i++] });\n continue;\n }\n if (char === \"\\\\\") {\n tokens.push({ type: \"ESCAPED_CHAR\", index: i++, value: str[i++] });\n continue;\n }\n if (char === \"{\") {\n tokens.push({ type: \"OPEN\", index: i, value: str[i++] });\n continue;\n }\n if (char === \"}\") {\n tokens.push({ type: \"CLOSE\", index: i, value: str[i++] });\n continue;\n }\n if (char === \":\") {\n var name = \"\";\n var j = i + 1;\n while (j < str.length) {\n var code = str.charCodeAt(j);\n if (\n // `0-9`\n (code >= 48 && code <= 57) ||\n // `A-Z`\n (code >= 65 && code <= 90) ||\n // `a-z`\n (code >= 97 && code <= 122) ||\n // `_`\n code === 95) {\n name += str[j++];\n continue;\n }\n break;\n }\n if (!name)\n throw new TypeError(\"Missing parameter name at \" + i);\n tokens.push({ type: \"NAME\", index: i, value: name });\n i = j;\n continue;\n }\n if (char === \"(\") {\n var count = 1;\n var pattern = \"\";\n var j = i + 1;\n if (str[j] === \"?\") {\n throw new TypeError(\"Pattern cannot start with \\\"?\\\" at \" + j);\n }\n while (j < str.length) {\n if (str[j] === \"\\\\\") {\n pattern += str[j++] + str[j++];\n continue;\n }\n if (str[j] === \")\") {\n count--;\n if (count === 0) {\n j++;\n break;\n }\n }\n else if (str[j] === \"(\") {\n count++;\n if (str[j + 1] !== \"?\") {\n throw new TypeError(\"Capturing groups are not allowed at \" + j);\n }\n }\n pattern += str[j++];\n }\n if (count)\n throw new TypeError(\"Unbalanced pattern at \" + i);\n if (!pattern)\n throw new TypeError(\"Missing pattern at \" + i);\n tokens.push({ type: \"PATTERN\", index: i, value: pattern });\n i = j;\n continue;\n }\n tokens.push({ type: \"CHAR\", index: i, value: str[i++] });\n }\n tokens.push({ type: \"END\", index: i, value: \"\" });\n return tokens;\n}\n/**\n * Parse a string for the raw tokens.\n */\nexport function parse(str, options) {\n if (options === void 0) { options = {}; }\n var tokens = lexer(str);\n var _a = options.prefixes, prefixes = _a === void 0 ? \"./\" : _a;\n var defaultPattern = \"[^\" + escapeString(options.delimiter || \"/#?\") + \"]+?\";\n var result = [];\n var key = 0;\n var i = 0;\n var path = \"\";\n var tryConsume = function (type) {\n if (i < tokens.length && tokens[i].type === type)\n return tokens[i++].value;\n };\n var mustConsume = function (type) {\n var value = tryConsume(type);\n if (value !== undefined)\n return value;\n var _a = tokens[i], nextType = _a.type, index = _a.index;\n throw new TypeError(\"Unexpected \" + nextType + \" at \" + index + \", expected \" + type);\n };\n var consumeText = function () {\n var result = \"\";\n var value;\n // tslint:disable-next-line\n while ((value = tryConsume(\"CHAR\") || tryConsume(\"ESCAPED_CHAR\"))) {\n result += value;\n }\n return result;\n };\n while (i < tokens.length) {\n var char = tryConsume(\"CHAR\");\n var name = tryConsume(\"NAME\");\n var pattern = tryConsume(\"PATTERN\");\n if (name || pattern) {\n var prefix = char || \"\";\n if (prefixes.indexOf(prefix) === -1) {\n path += prefix;\n prefix = \"\";\n }\n if (path) {\n result.push(path);\n path = \"\";\n }\n result.push({\n name: name || key++,\n prefix: prefix,\n suffix: \"\",\n pattern: pattern || defaultPattern,\n modifier: tryConsume(\"MODIFIER\") || \"\"\n });\n continue;\n }\n var value = char || tryConsume(\"ESCAPED_CHAR\");\n if (value) {\n path += value;\n continue;\n }\n if (path) {\n result.push(path);\n path = \"\";\n }\n var open = tryConsume(\"OPEN\");\n if (open) {\n var prefix = consumeText();\n var name_1 = tryConsume(\"NAME\") || \"\";\n var pattern_1 = tryConsume(\"PATTERN\") || \"\";\n var suffix = consumeText();\n mustConsume(\"CLOSE\");\n result.push({\n name: name_1 || (pattern_1 ? key++ : \"\"),\n pattern: name_1 && !pattern_1 ? defaultPattern : pattern_1,\n prefix: prefix,\n suffix: suffix,\n modifier: tryConsume(\"MODIFIER\") || \"\"\n });\n continue;\n }\n mustConsume(\"END\");\n }\n return result;\n}\n/**\n * Compile a string to a template function for the path.\n */\nexport function compile(str, options) {\n return tokensToFunction(parse(str, options), options);\n}\n/**\n * Expose a method for transforming tokens into the path function.\n */\nexport function tokensToFunction(tokens, options) {\n if (options === void 0) { options = {}; }\n var reFlags = flags(options);\n var _a = options.encode, encode = _a === void 0 ? function (x) { return x; } : _a, _b = options.validate, validate = _b === void 0 ? true : _b;\n // Compile all the tokens into regexps.\n var matches = tokens.map(function (token) {\n if (typeof token === \"object\") {\n return new RegExp(\"^(?:\" + token.pattern + \")$\", reFlags);\n }\n });\n return function (data) {\n var path = \"\";\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n if (typeof token === \"string\") {\n path += token;\n continue;\n }\n var value = data ? data[token.name] : undefined;\n var optional = token.modifier === \"?\" || token.modifier === \"*\";\n var repeat = token.modifier === \"*\" || token.modifier === \"+\";\n if (Array.isArray(value)) {\n if (!repeat) {\n throw new TypeError(\"Expected \\\"\" + token.name + \"\\\" to not repeat, but got an array\");\n }\n if (value.length === 0) {\n if (optional)\n continue;\n throw new TypeError(\"Expected \\\"\" + token.name + \"\\\" to not be empty\");\n }\n for (var j = 0; j < value.length; j++) {\n var segment = encode(value[j], token);\n if (validate && !matches[i].test(segment)) {\n throw new TypeError(\"Expected all \\\"\" + token.name + \"\\\" to match \\\"\" + token.pattern + \"\\\", but got \\\"\" + segment + \"\\\"\");\n }\n path += token.prefix + segment + token.suffix;\n }\n continue;\n }\n if (typeof value === \"string\" || typeof value === \"number\") {\n var segment = encode(String(value), token);\n if (validate && !matches[i].test(segment)) {\n throw new TypeError(\"Expected \\\"\" + token.name + \"\\\" to match \\\"\" + token.pattern + \"\\\", but got \\\"\" + segment + \"\\\"\");\n }\n path += token.prefix + segment + token.suffix;\n continue;\n }\n if (optional)\n continue;\n var typeOfMessage = repeat ? \"an array\" : \"a string\";\n throw new TypeError(\"Expected \\\"\" + token.name + \"\\\" to be \" + typeOfMessage);\n }\n return path;\n };\n}\n/**\n * Create path match function from `path-to-regexp` spec.\n */\nexport function match(str, options) {\n var keys = [];\n var re = pathToRegexp(str, keys, options);\n return regexpToFunction(re, keys, options);\n}\n/**\n * Create a path match function from `path-to-regexp` output.\n */\nexport function regexpToFunction(re, keys, options) {\n if (options === void 0) { options = {}; }\n var _a = options.decode, decode = _a === void 0 ? function (x) { return x; } : _a;\n return function (pathname) {\n var m = re.exec(pathname);\n if (!m)\n return false;\n var path = m[0], index = m.index;\n var params = Object.create(null);\n var _loop_1 = function (i) {\n // tslint:disable-next-line\n if (m[i] === undefined)\n return \"continue\";\n var key = keys[i - 1];\n if (key.modifier === \"*\" || key.modifier === \"+\") {\n params[key.name] = m[i].split(key.prefix + key.suffix).map(function (value) {\n return decode(value, key);\n });\n }\n else {\n params[key.name] = decode(m[i], key);\n }\n };\n for (var i = 1; i < m.length; i++) {\n _loop_1(i);\n }\n return { path: path, index: index, params: params };\n };\n}\n/**\n * Escape a regular expression string.\n */\nfunction escapeString(str) {\n return str.replace(/([.+*?=^!:${}()[\\]|/\\\\])/g, \"\\\\$1\");\n}\n/**\n * Get the flags for a regexp from the options.\n */\nfunction flags(options) {\n return options && options.sensitive ? \"\" : \"i\";\n}\n/**\n * Pull out keys from a regexp.\n */\nfunction regexpToRegexp(path, keys) {\n if (!keys)\n return path;\n var groupsRegex = /\\((?:\\?<(.*?)>)?(?!\\?)/g;\n var index = 0;\n var execResult = groupsRegex.exec(path.source);\n while (execResult) {\n keys.push({\n // Use parenthesized substring match if available, index otherwise\n name: execResult[1] || index++,\n prefix: \"\",\n suffix: \"\",\n modifier: \"\",\n pattern: \"\"\n });\n execResult = groupsRegex.exec(path.source);\n }\n return path;\n}\n/**\n * Transform an array into a regexp.\n */\nfunction arrayToRegexp(paths, keys, options) {\n var parts = paths.map(function (path) { return pathToRegexp(path, keys, options).source; });\n return new RegExp(\"(?:\" + parts.join(\"|\") + \")\", flags(options));\n}\n/**\n * Create a path regexp from string input.\n */\nfunction stringToRegexp(path, keys, options) {\n return tokensToRegexp(parse(path, options), keys, options);\n}\n/**\n * Expose a function for taking tokens and returning a RegExp.\n */\nexport function tokensToRegexp(tokens, keys, options) {\n if (options === void 0) { options = {}; }\n var _a = options.strict, strict = _a === void 0 ? false : _a, _b = options.start, start = _b === void 0 ? true : _b, _c = options.end, end = _c === void 0 ? true : _c, _d = options.encode, encode = _d === void 0 ? function (x) { return x; } : _d;\n var endsWith = \"[\" + escapeString(options.endsWith || \"\") + \"]|$\";\n var delimiter = \"[\" + escapeString(options.delimiter || \"/#?\") + \"]\";\n var route = start ? \"^\" : \"\";\n // Iterate over the tokens and create our regexp string.\n for (var _i = 0, tokens_1 = tokens; _i < tokens_1.length; _i++) {\n var token = tokens_1[_i];\n if (typeof token === \"string\") {\n route += escapeString(encode(token));\n }\n else {\n var prefix = escapeString(encode(token.prefix));\n var suffix = escapeString(encode(token.suffix));\n if (token.pattern) {\n if (keys)\n keys.push(token);\n if (prefix || suffix) {\n if (token.modifier === \"+\" || token.modifier === \"*\") {\n var mod = token.modifier === \"*\" ? \"?\" : \"\";\n route += \"(?:\" + prefix + \"((?:\" + token.pattern + \")(?:\" + suffix + prefix + \"(?:\" + token.pattern + \"))*)\" + suffix + \")\" + mod;\n }\n else {\n route += \"(?:\" + prefix + \"(\" + token.pattern + \")\" + suffix + \")\" + token.modifier;\n }\n }\n else {\n route += \"(\" + token.pattern + \")\" + token.modifier;\n }\n }\n else {\n route += \"(?:\" + prefix + suffix + \")\" + token.modifier;\n }\n }\n }\n if (end) {\n if (!strict)\n route += delimiter + \"?\";\n route += !options.endsWith ? \"$\" : \"(?=\" + endsWith + \")\";\n }\n else {\n var endToken = tokens[tokens.length - 1];\n var isEndDelimited = typeof endToken === \"string\"\n ? delimiter.indexOf(endToken[endToken.length - 1]) > -1\n : // tslint:disable-next-line\n endToken === undefined;\n if (!strict) {\n route += \"(?:\" + delimiter + \"(?=\" + endsWith + \"))?\";\n }\n if (!isEndDelimited) {\n route += \"(?=\" + delimiter + \"|\" + endsWith + \")\";\n }\n }\n return new RegExp(route, flags(options));\n}\n/**\n * Normalize the given path string, returning a regular expression.\n *\n * An empty array can be passed in for the keys, which will hold the\n * placeholder key descriptions. For example, using `/user/:id`, `keys` will\n * contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`.\n */\nexport function pathToRegexp(path, keys, options) {\n if (path instanceof RegExp)\n return regexpToRegexp(path, keys);\n if (Array.isArray(path))\n return arrayToRegexp(path, keys, options);\n return stringToRegexp(path, keys, options);\n}\n//# sourceMappingURL=index.js.map","import { getWindow, getDocument } from 'ssr-window';\nimport $ from './dom7.js';\nimport { extend } from './utils.js';\n\nconst History = {\n queue: [],\n clearQueue() {\n if (History.queue.length === 0) return;\n const currentQueue = History.queue.shift();\n currentQueue();\n },\n routerQueue: [],\n clearRouterQueue() {\n if (History.routerQueue.length === 0) return;\n const currentQueue = History.routerQueue.pop();\n const { router, stateUrl, action } = currentQueue;\n\n let animate = router.params.animate;\n if (router.params.browserHistoryAnimate === false) animate = false;\n\n if (action === 'back') {\n router.back({ animate, browserHistory: false });\n }\n if (action === 'load') {\n router.navigate(stateUrl, { animate, browserHistory: false });\n }\n },\n handle(e) {\n if (History.blockPopstate) return;\n const app = this;\n // const mainView = app.views.main;\n let state = e.state;\n History.previousState = History.state;\n History.state = state;\n\n History.allowChange = true;\n History.clearQueue();\n\n state = History.state;\n if (!state) state = {};\n\n app.views.forEach((view) => {\n const router = view.router;\n let viewState = state[view.id];\n if (!viewState && view.params.browserHistory) {\n viewState = {\n url: view.router.history[0],\n };\n }\n if (!viewState) return;\n const stateUrl = viewState.url || undefined;\n\n let animate = router.params.animate;\n if (router.params.browserHistoryAnimate === false) animate = false;\n\n if (stateUrl !== router.url) {\n if (router.history.indexOf(stateUrl) >= 0) {\n // Go Back\n if (router.allowPageChange) {\n router.back({ animate, browserHistory: false });\n } else {\n History.routerQueue.push({\n action: 'back',\n router,\n });\n }\n } else if (router.allowPageChange) {\n // Load page\n router.navigate(stateUrl, { animate, browserHistory: false });\n } else {\n History.routerQueue.unshift({\n action: 'load',\n stateUrl,\n router,\n });\n }\n }\n });\n },\n initViewState(viewId, viewState) {\n const window = getWindow();\n const newState = extend({}, History.state || {}, {\n [viewId]: viewState,\n });\n History.state = newState;\n window.history.replaceState(newState, '');\n },\n push(viewId, viewState, url) {\n const window = getWindow();\n if (url.substr(-3) === '#!/') {\n // eslint-disable-next-line\n url = url.replace('#!/', '');\n }\n if (!History.allowChange) {\n History.queue.push(() => {\n History.push(viewId, viewState, url);\n });\n return;\n }\n History.previousState = History.state;\n const newState = extend({}, History.previousState || {}, {\n [viewId]: viewState,\n });\n History.state = newState;\n window.history.pushState(newState, '', url);\n },\n replace(viewId, viewState, url) {\n const window = getWindow();\n if (url.substr(-3) === '#!/') {\n // eslint-disable-next-line\n url = url.replace('#!/', '');\n }\n if (!History.allowChange) {\n History.queue.push(() => {\n History.replace(viewId, viewState, url);\n });\n return;\n }\n History.previousState = History.state;\n const newState = extend({}, History.previousState || {}, {\n [viewId]: viewState,\n });\n History.state = newState;\n window.history.replaceState(newState, '', url);\n },\n go(index) {\n const window = getWindow();\n History.allowChange = false;\n window.history.go(index);\n },\n back() {\n const window = getWindow();\n History.allowChange = false;\n window.history.back();\n },\n allowChange: true,\n previousState: {},\n state: {},\n blockPopstate: true,\n init(app) {\n const window = getWindow();\n const document = getDocument();\n History.state = window.history.state;\n $(window).on('load', () => {\n setTimeout(() => {\n History.blockPopstate = false;\n }, 0);\n });\n\n if (document.readyState && document.readyState === 'complete') {\n History.blockPopstate = false;\n }\n\n $(window).on('popstate', History.handle.bind(app));\n },\n};\n\nexport default History;\n","import $ from '../../shared/dom7.js';\nimport History from '../../shared/history.js';\nimport { getSupport } from '../../shared/get-support.js';\nimport { getDevice } from '../../shared/get-device.js';\nimport { now } from '../../shared/utils.js';\n\nfunction SwipeBack(r) {\n const router = r;\n const { $el, $navbarsEl, app, params } = router;\n const support = getSupport();\n const device = getDevice();\n let isTouched = false;\n let isMoved = false;\n const touchesStart = {};\n let isScrolling;\n let $currentPageEl = [];\n let $previousPageEl = [];\n let viewContainerWidth;\n let touchesDiff;\n let allowViewTouchMove = true;\n let touchStartTime;\n let $currentNavbarEl = [];\n let $previousNavbarEl = [];\n let dynamicNavbar;\n let $pageShadowEl;\n let $pageOpacityEl;\n\n let animatableNavEls;\n\n const paramsSwipeBackAnimateShadow = params[`${app.theme}SwipeBackAnimateShadow`];\n const paramsSwipeBackAnimateOpacity = params[`${app.theme}SwipeBackAnimateOpacity`];\n const paramsSwipeBackActiveArea = params[`${app.theme}SwipeBackActiveArea`];\n const paramsSwipeBackThreshold = params[`${app.theme}SwipeBackThreshold`];\n\n const transformOrigin = app.rtl ? 'right center' : 'left center';\n const transformOriginTitleLarge = app.rtl\n ? 'calc(100% - var(--f7-navbar-large-title-padding-left) - var(--f7-safe-area-left)) center'\n : 'calc(var(--f7-navbar-large-title-padding-left) + var(--f7-safe-area-left)) center';\n\n function animatableNavElements() {\n const els = [];\n const inverter = app.rtl ? -1 : 1;\n const currentNavIsTransparent =\n $currentNavbarEl.hasClass('navbar-transparent') &&\n !$currentNavbarEl.hasClass('navbar-large') &&\n !$currentNavbarEl.hasClass('navbar-transparent-visible');\n const currentNavIsLarge = $currentNavbarEl.hasClass('navbar-large');\n const currentNavIsCollapsed = $currentNavbarEl.hasClass('navbar-large-collapsed');\n const currentNavIsLargeTransparent =\n $currentNavbarEl.hasClass('navbar-large-transparent') ||\n ($currentNavbarEl.hasClass('navbar-large') &&\n $currentNavbarEl.hasClass('navbar-transparent'));\n const previousNavIsTransparent =\n $previousNavbarEl.hasClass('navbar-transparent') &&\n !$previousNavbarEl.hasClass('navbar-large') &&\n !$previousNavbarEl.hasClass('navbar-transparent-visible');\n const previousNavIsLarge = $previousNavbarEl.hasClass('navbar-large');\n const previousNavIsCollapsed = $previousNavbarEl.hasClass('navbar-large-collapsed');\n const previousNavIsLargeTransparent =\n $previousNavbarEl.hasClass('navbar-large-transparent') ||\n ($previousNavbarEl.hasClass('navbar-large') &&\n $previousNavbarEl.hasClass('navbar-transparent'));\n const fromLarge = currentNavIsLarge && !currentNavIsCollapsed;\n const toLarge = previousNavIsLarge && !previousNavIsCollapsed;\n const $currentNavElements = $currentNavbarEl.find(\n '.left, .title, .right, .subnavbar, .fading, .title-large, .navbar-bg',\n );\n const $previousNavElements = $previousNavbarEl.find(\n '.left, .title, .right, .subnavbar, .fading, .title-large, .navbar-bg',\n );\n let activeNavBackIconText;\n let previousNavBackIconText;\n\n if (params.iosAnimateNavbarBackIcon) {\n if (\n $currentNavbarEl.hasClass('sliding') ||\n $currentNavbarEl.find('.navbar-inner.sliding').length\n ) {\n activeNavBackIconText = $currentNavbarEl.find('.left').find('.back .icon + span').eq(0);\n } else {\n activeNavBackIconText = $currentNavbarEl\n .find('.left.sliding')\n .find('.back .icon + span')\n .eq(0);\n }\n if (\n $previousNavbarEl.hasClass('sliding') ||\n $previousNavbarEl.find('.navbar-inner.sliding').length\n ) {\n previousNavBackIconText = $previousNavbarEl.find('.left').find('.back .icon + span').eq(0);\n } else {\n previousNavBackIconText = $previousNavbarEl\n .find('.left.sliding')\n .find('.back .icon + span')\n .eq(0);\n }\n if (activeNavBackIconText.length) {\n $previousNavElements.each((el) => {\n if (!$(el).hasClass('title')) return;\n el.f7NavbarLeftOffset += activeNavBackIconText.prev('.icon')[0].offsetWidth;\n });\n }\n }\n $currentNavElements.each((navEl) => {\n const $navEl = $(navEl);\n const isSubnavbar = $navEl.hasClass('subnavbar');\n const isLeft = $navEl.hasClass('left');\n const isTitle = $navEl.hasClass('title');\n const isBg = $navEl.hasClass('navbar-bg');\n if ((isTitle || isBg) && currentNavIsTransparent) return;\n if (!fromLarge && $navEl.hasClass('.title-large')) return;\n const el = {\n el: navEl,\n };\n if (fromLarge) {\n if (isTitle) return;\n if ($navEl.hasClass('title-large')) {\n if (els.indexOf(el) < 0) els.push(el);\n el.overflow = 'visible';\n $navEl.find('.title-large-text').each((subNavEl) => {\n els.push({\n el: subNavEl,\n transform: (progress) => `translateX(${progress * 100 * inverter}%)`,\n });\n });\n return;\n }\n }\n if (toLarge) {\n if (!fromLarge) {\n if ($navEl.hasClass('title-large')) {\n if (els.indexOf(el) < 0) els.push(el);\n el.opacity = 0;\n }\n }\n if (isLeft) {\n if (els.indexOf(el) < 0) els.push(el);\n el.opacity = (progress) => 1 - progress ** 0.33;\n $navEl.find('.back span').each((subNavEl) => {\n els.push({\n el: subNavEl,\n 'transform-origin': transformOrigin,\n transform: (progress) =>\n `translateX(calc(${progress} * (var(--f7-navbarTitleLargeOffset) - var(--f7-navbarLeftTextOffset)))) translateY(calc(${progress} * (var(--f7-navbar-large-title-height) - var(--f7-navbar-large-title-padding-vertical) / 2))) scale(${\n 1 + 1 * progress\n })`,\n });\n });\n return;\n }\n }\n if (isBg) {\n if (els.indexOf(el) < 0) els.push(el);\n if (!fromLarge && !toLarge) {\n if (currentNavIsCollapsed) {\n if (currentNavIsLargeTransparent) {\n el.className = 'ios-swipeback-navbar-bg-large';\n }\n el.transform = (progress) =>\n `translateX(${\n 100 * progress * inverter\n }%) translateY(calc(-1 * var(--f7-navbar-large-title-height)))`;\n } else {\n el.transform = (progress) => `translateX(${100 * progress * inverter}%)`;\n }\n }\n if (!fromLarge && toLarge) {\n el.className = 'ios-swipeback-navbar-bg-large';\n el.transform = (progress) =>\n `translateX(${100 * progress * inverter}%) translateY(calc(-1 * ${\n 1 - progress\n } * var(--f7-navbar-large-title-height)))`;\n }\n if (fromLarge && toLarge) {\n el.transform = (progress) => `translateX(${100 * progress * inverter}%)`;\n }\n if (fromLarge && !toLarge) {\n el.transform = (progress) =>\n `translateX(${\n 100 * progress * inverter\n }%) translateY(calc(-${progress} * var(--f7-navbar-large-title-height)))`;\n }\n return;\n }\n if ($navEl.hasClass('title-large')) return;\n const isSliding =\n $navEl.hasClass('sliding') || $navEl.parents('.navbar-inner.sliding').length;\n if (els.indexOf(el) < 0) els.push(el);\n if (!isSubnavbar || (isSubnavbar && !isSliding)) {\n el.opacity = (progress) => 1 - progress ** 0.33;\n }\n if (isSliding) {\n let transformTarget = el;\n if (isLeft && activeNavBackIconText.length && params.iosAnimateNavbarBackIcon) {\n const textEl = { el: activeNavBackIconText[0] };\n transformTarget = textEl;\n els.push(textEl);\n }\n transformTarget.transform = (progress) => {\n let activeNavTranslate = progress * transformTarget.el.f7NavbarRightOffset;\n if (device.pixelRatio === 1) activeNavTranslate = Math.round(activeNavTranslate);\n if (isSubnavbar && currentNavIsLarge) {\n return `translate3d(${activeNavTranslate}px, calc(-1 * var(--f7-navbar-large-collapse-progress) * var(--f7-navbar-large-title-height)), 0)`;\n }\n return `translate3d(${activeNavTranslate}px,0,0)`;\n };\n }\n });\n $previousNavElements.each((navEl) => {\n const $navEl = $(navEl);\n const isSubnavbar = $navEl.hasClass('subnavbar');\n const isLeft = $navEl.hasClass('left');\n const isTitle = $navEl.hasClass('title');\n const isBg = $navEl.hasClass('navbar-bg');\n if ((isTitle || isBg) && previousNavIsTransparent) return;\n const el = {\n el: navEl,\n };\n if (toLarge) {\n if (isTitle) return;\n if (els.indexOf(el) < 0) els.push(el);\n\n if ($navEl.hasClass('title-large')) {\n el.opacity = 1;\n el.overflow = 'visible';\n $navEl.find('.title-large-text').each((subNavEl) => {\n els.push({\n el: subNavEl,\n 'transform-origin': transformOriginTitleLarge,\n opacity: (progress) => progress ** 3,\n transform: (progress) =>\n `translateX(calc(${\n 1 - progress\n } * (var(--f7-navbarLeftTextOffset) - var(--f7-navbarTitleLargeOffset)))) translateY(calc(${\n progress - 1\n } * var(--f7-navbar-large-title-height) + ${\n 1 - progress\n } * var(--f7-navbar-large-title-padding-vertical))) scale(${0.5 + progress * 0.5})`,\n });\n });\n return;\n }\n }\n if (isBg) {\n if (els.indexOf(el) < 0) els.push(el);\n if (!fromLarge && !toLarge) {\n if (previousNavIsCollapsed) {\n if (previousNavIsLargeTransparent) {\n el.className = 'ios-swipeback-navbar-bg-large';\n }\n el.transform = (progress) =>\n `translateX(${\n (-100 + 100 * progress) * inverter\n }%) translateY(calc(-1 * var(--f7-navbar-large-title-height)))`;\n } else {\n el.transform = (progress) => `translateX(${(-100 + 100 * progress) * inverter}%)`;\n }\n }\n if (!fromLarge && toLarge) {\n el.transform = (progress) =>\n `translateX(${(-100 + 100 * progress) * inverter}%) translateY(calc(-1 * ${\n 1 - progress\n } * var(--f7-navbar-large-title-height)))`;\n }\n if (fromLarge && !toLarge) {\n el.className = 'ios-swipeback-navbar-bg-large';\n el.transform = (progress) =>\n `translateX(${\n (-100 + 100 * progress) * inverter\n }%) translateY(calc(-${progress} * var(--f7-navbar-large-title-height)))`;\n }\n if (fromLarge && toLarge) {\n el.transform = (progress) => `translateX(${(-100 + 100 * progress) * inverter}%)`;\n }\n\n return;\n }\n if ($navEl.hasClass('title-large')) return;\n const isSliding =\n $navEl.hasClass('sliding') || $previousNavbarEl.children('.navbar-inner.sliding').length;\n if (els.indexOf(el) < 0) els.push(el);\n if (!isSubnavbar || (isSubnavbar && !isSliding)) {\n el.opacity = (progress) => progress ** 3;\n }\n if (isSliding) {\n let transformTarget = el;\n if (isLeft && previousNavBackIconText.length && params.iosAnimateNavbarBackIcon) {\n const textEl = { el: previousNavBackIconText[0] };\n transformTarget = textEl;\n els.push(textEl);\n }\n transformTarget.transform = (progress) => {\n let previousNavTranslate = transformTarget.el.f7NavbarLeftOffset * (1 - progress);\n if (device.pixelRatio === 1) previousNavTranslate = Math.round(previousNavTranslate);\n if (isSubnavbar && previousNavIsLarge) {\n return `translate3d(${previousNavTranslate}px, calc(-1 * var(--f7-navbar-large-collapse-progress) * var(--f7-navbar-large-title-height)), 0)`;\n }\n return `translate3d(${previousNavTranslate}px,0,0)`;\n };\n }\n });\n return els;\n }\n\n function setAnimatableNavElements({ progress, reset, transition, reflow } = {}) {\n const styles = ['overflow', 'transform', 'transform-origin', 'opacity'];\n if (transition === true || transition === false) {\n for (let i = 0; i < animatableNavEls.length; i += 1) {\n const el = animatableNavEls[i];\n if (el && el.el) {\n if (transition === true) el.el.classList.add('navbar-page-transitioning');\n if (transition === false) el.el.classList.remove('navbar-page-transitioning');\n }\n }\n }\n if (reflow && animatableNavEls.length && animatableNavEls[0] && animatableNavEls[0].el) {\n // eslint-disable-next-line\n animatableNavEls[0].el._clientLeft = animatableNavEls[0].el.clientLeft;\n }\n for (let i = 0; i < animatableNavEls.length; i += 1) {\n const el = animatableNavEls[i];\n if (el && el.el) {\n if (el.className && !el.classNameSet && !reset) {\n el.el.classList.add(el.className);\n el.classNameSet = true;\n }\n if (el.className && reset) {\n el.el.classList.remove(el.className);\n }\n for (let j = 0; j < styles.length; j += 1) {\n const styleProp = styles[j];\n if (el[styleProp]) {\n if (reset) {\n el.el.style[styleProp] = '';\n } else if (typeof el[styleProp] === 'function') {\n el.el.style[styleProp] = el[styleProp](progress);\n } else {\n el.el.style[styleProp] = el[styleProp];\n }\n }\n }\n }\n }\n }\n\n function handleTouchStart(e) {\n const swipeBackEnabled = params[`${app.theme}SwipeBack`];\n if (\n !allowViewTouchMove ||\n !swipeBackEnabled ||\n isTouched ||\n (app.swipeout && app.swipeout.el) ||\n !router.allowPageChange\n )\n return;\n if ($(e.target).closest('.range-slider, .calendar-months').length > 0) return;\n if (\n $(e.target).closest('.page-master, .page-master-detail').length > 0 &&\n params.masterDetailBreakpoint > 0 &&\n app.width >= params.masterDetailBreakpoint\n )\n return;\n isMoved = false;\n isTouched = true;\n isScrolling = undefined;\n touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n touchStartTime = now();\n dynamicNavbar = router.dynamicNavbar;\n }\n function handleTouchMove(e) {\n if (!isTouched) return;\n const pageX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n const pageY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n if (typeof isScrolling === 'undefined') {\n isScrolling =\n !!(isScrolling || Math.abs(pageY - touchesStart.y) > Math.abs(pageX - touchesStart.x)) ||\n (pageX < touchesStart.x && !app.rtl) ||\n (pageX > touchesStart.x && app.rtl);\n }\n if (isScrolling || e.f7PreventSwipeBack || app.preventSwipeBack) {\n isTouched = false;\n return;\n }\n if (!isMoved) {\n // Calc values during first move fired\n let cancel = false;\n const target = $(e.target);\n\n const swipeout = target.closest('.swipeout');\n if (swipeout.length > 0) {\n if (!app.rtl && swipeout.find('.swipeout-actions-left').length > 0) cancel = true;\n if (app.rtl && swipeout.find('.swipeout-actions-right').length > 0) cancel = true;\n }\n\n $currentPageEl = target.closest('.page');\n if (\n $currentPageEl.hasClass('no-swipeback') ||\n target.closest('.no-swipeback, .card-opened').length > 0\n )\n cancel = true;\n $previousPageEl = $el.find('.page-previous:not(.stacked)');\n if ($previousPageEl.length > 1) {\n $previousPageEl = $previousPageEl.eq($previousPageEl.length - 1);\n }\n let notFromBorder = touchesStart.x - $el.offset().left > paramsSwipeBackActiveArea;\n viewContainerWidth = $el.width();\n if (app.rtl) {\n notFromBorder =\n touchesStart.x <\n $el.offset().left - $el[0].scrollLeft + (viewContainerWidth - paramsSwipeBackActiveArea);\n } else {\n notFromBorder = touchesStart.x - $el.offset().left > paramsSwipeBackActiveArea;\n }\n if (notFromBorder) cancel = true;\n if ($previousPageEl.length === 0 || $currentPageEl.length === 0) cancel = true;\n if (cancel) {\n isTouched = false;\n return;\n }\n\n if (paramsSwipeBackAnimateShadow) {\n $pageShadowEl = $currentPageEl.find('.page-shadow-effect');\n if ($pageShadowEl.length === 0) {\n $pageShadowEl = $('<div class=\"page-shadow-effect\"></div>');\n $currentPageEl.append($pageShadowEl);\n }\n }\n if (paramsSwipeBackAnimateOpacity) {\n $pageOpacityEl = $previousPageEl.find('.page-opacity-effect');\n if ($pageOpacityEl.length === 0) {\n $pageOpacityEl = $('<div class=\"page-opacity-effect\"></div>');\n $previousPageEl.append($pageOpacityEl);\n }\n }\n\n if (dynamicNavbar) {\n $currentNavbarEl = $navbarsEl.find('.navbar-current:not(.stacked)');\n $previousNavbarEl = $navbarsEl.find('.navbar-previous:not(.stacked)');\n if ($previousNavbarEl.length > 1) {\n $previousNavbarEl = $previousNavbarEl.eq($previousNavbarEl.length - 1);\n }\n\n animatableNavEls = animatableNavElements($previousNavbarEl, $currentNavbarEl);\n }\n\n // Close/Hide Any Picker\n if ($('.sheet.modal-in').length > 0 && app.sheet) {\n app.sheet.close($('.sheet.modal-in'));\n }\n }\n e.f7PreventSwipePanel = true;\n isMoved = true;\n app.preventSwipePanelBySwipeBack = true;\n e.preventDefault();\n\n // RTL inverter\n const inverter = app.rtl ? -1 : 1;\n\n // Touches diff\n touchesDiff = (pageX - touchesStart.x - paramsSwipeBackThreshold) * inverter;\n if (touchesDiff < 0) touchesDiff = 0;\n const percentage = Math.min(Math.max(touchesDiff / viewContainerWidth, 0), 1);\n\n // Swipe Back Callback\n const callbackData = {\n percentage,\n progress: percentage,\n currentPageEl: $currentPageEl[0],\n previousPageEl: $previousPageEl[0],\n currentNavbarEl: $currentNavbarEl[0],\n previousNavbarEl: $previousNavbarEl[0],\n };\n $el.trigger('swipeback:move', callbackData);\n router.emit('swipebackMove', callbackData);\n\n // Transform pages\n let currentPageTranslate = touchesDiff * inverter;\n let previousPageTranslate = (touchesDiff / 5 - viewContainerWidth / 5) * inverter;\n if (!app.rtl) {\n currentPageTranslate = Math.min(currentPageTranslate, viewContainerWidth);\n previousPageTranslate = Math.min(previousPageTranslate, 0);\n } else {\n currentPageTranslate = Math.max(currentPageTranslate, -viewContainerWidth);\n previousPageTranslate = Math.max(previousPageTranslate, 0);\n }\n if (device.pixelRatio === 1) {\n currentPageTranslate = Math.round(currentPageTranslate);\n previousPageTranslate = Math.round(previousPageTranslate);\n }\n\n router.swipeBackActive = true;\n $([$currentPageEl[0], $previousPageEl[0]]).addClass('page-swipeback-active');\n\n $currentPageEl.transform(`translate3d(${currentPageTranslate}px,0,0)`);\n if (paramsSwipeBackAnimateShadow) $pageShadowEl[0].style.opacity = 1 - 1 * percentage;\n\n if (app.theme === 'ios') {\n $previousPageEl.transform(`translate3d(${previousPageTranslate}px,0,0)`);\n }\n if (paramsSwipeBackAnimateOpacity) $pageOpacityEl[0].style.opacity = 1 - 1 * percentage;\n\n // Dynamic Navbars Animation\n if (!dynamicNavbar) return;\n\n setAnimatableNavElements({ progress: percentage });\n }\n function handleTouchEnd() {\n app.preventSwipePanelBySwipeBack = false;\n if (!isTouched || !isMoved) {\n isTouched = false;\n isMoved = false;\n return;\n }\n isTouched = false;\n isMoved = false;\n router.swipeBackActive = false;\n const $pages = $([$currentPageEl[0], $previousPageEl[0]]);\n $pages.removeClass('page-swipeback-active');\n if (touchesDiff === 0) {\n $pages.transform('');\n if ($pageShadowEl && $pageShadowEl.length > 0) $pageShadowEl.remove();\n if ($pageOpacityEl && $pageOpacityEl.length > 0) $pageOpacityEl.remove();\n if (dynamicNavbar) {\n setAnimatableNavElements({ reset: true });\n }\n return;\n }\n const timeDiff = now() - touchStartTime;\n let pageChanged = false;\n // Swipe back to previous page\n if (\n (timeDiff < 300 && touchesDiff > 10) ||\n (timeDiff >= 300 && touchesDiff > viewContainerWidth / 2)\n ) {\n $currentPageEl\n .removeClass('page-current')\n .addClass(`page-next${app.theme !== 'ios' ? ' page-next-on-right' : ''}`);\n $previousPageEl\n .removeClass('page-previous')\n .addClass('page-current')\n .removeAttr('aria-hidden');\n if ($pageShadowEl) $pageShadowEl[0].style.opacity = '';\n if ($pageOpacityEl) $pageOpacityEl[0].style.opacity = '';\n if (dynamicNavbar) {\n router.setNavbarPosition($currentNavbarEl, 'next');\n router.setNavbarPosition($previousNavbarEl, 'current', false);\n }\n pageChanged = true;\n }\n // Reset custom styles\n // Add transitioning class for transition-duration\n $pages.addClass('page-transitioning page-transitioning-swipeback');\n if (device.ios) {\n // eslint-disable-next-line\n $currentPageEl[0]._clientLeft = $currentPageEl[0].clientLeft;\n }\n $pages.transform('');\n\n if (dynamicNavbar) {\n setAnimatableNavElements({\n progress: pageChanged ? 1 : 0,\n transition: true,\n reflow: !!device.ios,\n });\n }\n allowViewTouchMove = false;\n router.allowPageChange = false;\n\n // Swipe Back Callback\n const callbackData = {\n currentPageEl: $currentPageEl[0],\n previousPageEl: $previousPageEl[0],\n currentNavbarEl: $currentNavbarEl[0],\n previousNavbarEl: $previousNavbarEl[0],\n };\n\n if (pageChanged) {\n // Update Route\n router.currentRoute = $previousPageEl[0].f7Page.route;\n router.currentPage = $previousPageEl[0];\n\n // Page before animation callback\n router.pageCallback('beforeOut', $currentPageEl, $currentNavbarEl, 'current', 'next', {\n route: $currentPageEl[0].f7Page.route,\n swipeBack: true,\n });\n router.pageCallback(\n 'beforeIn',\n $previousPageEl,\n $previousNavbarEl,\n 'previous',\n 'current',\n { route: $previousPageEl[0].f7Page.route, swipeBack: true },\n $currentPageEl[0],\n );\n\n $el.trigger('swipeback:beforechange', callbackData);\n router.emit('swipebackBeforeChange', callbackData);\n } else {\n $el.trigger('swipeback:beforereset', callbackData);\n router.emit('swipebackBeforeReset', callbackData);\n }\n\n $currentPageEl.transitionEnd(() => {\n $pages.removeClass('page-transitioning page-transitioning-swipeback');\n if (dynamicNavbar) {\n setAnimatableNavElements({ reset: true, transition: false });\n }\n allowViewTouchMove = true;\n router.allowPageChange = true;\n if (pageChanged) {\n // Update History\n if (router.history.length === 1) {\n router.history.unshift(router.url);\n }\n router.history.pop();\n router.saveHistory();\n\n // Update push state\n if (params.browserHistory) {\n History.back();\n }\n\n // Page after animation callback\n router.pageCallback('afterOut', $currentPageEl, $currentNavbarEl, 'current', 'next', {\n route: $currentPageEl[0].f7Page.route,\n swipeBack: true,\n });\n router.pageCallback('afterIn', $previousPageEl, $previousNavbarEl, 'previous', 'current', {\n route: $previousPageEl[0].f7Page.route,\n swipeBack: true,\n });\n\n // Remove Old Page\n if (params.stackPages && router.initialPages.indexOf($currentPageEl[0]) >= 0) {\n $currentPageEl.addClass('stacked');\n if (dynamicNavbar) {\n $currentNavbarEl.addClass('stacked');\n }\n } else {\n router.pageCallback('beforeRemove', $currentPageEl, $currentNavbarEl, 'next', {\n swipeBack: true,\n });\n router.removePage($currentPageEl);\n if (dynamicNavbar) {\n router.removeNavbar($currentNavbarEl);\n }\n }\n\n $el.trigger('swipeback:afterchange', callbackData);\n router.emit('swipebackAfterChange', callbackData);\n\n router.emit('routeChanged', router.currentRoute, router.previousRoute, router);\n\n if (params.preloadPreviousPage) {\n router.back(router.history[router.history.length - 2], { preload: true });\n }\n } else {\n $el.trigger('swipeback:afterreset', callbackData);\n router.emit('swipebackAfterReset', callbackData);\n }\n if ($pageShadowEl && $pageShadowEl.length > 0) $pageShadowEl.remove();\n if ($pageOpacityEl && $pageOpacityEl.length > 0) $pageOpacityEl.remove();\n });\n }\n\n function attachEvents() {\n const passiveListener =\n app.touchEvents.start === 'touchstart' && support.passiveListener\n ? { passive: true, capture: false }\n : false;\n $el.on(app.touchEvents.start, handleTouchStart, passiveListener);\n app.on('touchmove:active', handleTouchMove);\n app.on('touchend:passive', handleTouchEnd);\n }\n function detachEvents() {\n const passiveListener =\n app.touchEvents.start === 'touchstart' && support.passiveListener\n ? { passive: true, capture: false }\n : false;\n $el.off(app.touchEvents.start, handleTouchStart, passiveListener);\n app.off('touchmove:active', handleTouchMove);\n app.off('touchend:passive', handleTouchEnd);\n }\n\n attachEvents();\n\n router.on('routerDestroy', detachEvents);\n}\n\nexport default SwipeBack;\n","import { extend } from '../../shared/utils.js';\n\nexport default function redirect(direction, route, options) {\n const router = this;\n const r = route.route.redirect;\n const method = direction === 'forward' ? 'navigate' : 'back';\n if (options.initial && router.params.browserHistory) {\n options.replaceState = true; // eslint-disable-line\n options.history = true; // eslint-disable-line\n }\n function redirectResolve(redirectUrl, redirectOptions = {}) {\n router.allowPageChange = true;\n router[method](redirectUrl, extend({}, options, redirectOptions));\n }\n function redirectReject() {\n router.allowPageChange = true;\n }\n if (typeof r === 'function') {\n router.allowPageChange = false;\n const redirectUrl = r.call(router, {\n router,\n to: route,\n resolve: redirectResolve,\n reject: redirectReject,\n direction,\n app: router.app,\n });\n if (redirectUrl && typeof redirectUrl === 'string') {\n router.allowPageChange = true;\n return router[method](redirectUrl, options);\n }\n return router;\n }\n return router[method](r, options);\n}\n","function processQueue(router, routerQueue, routeQueue, to, from, resolve, reject, direction) {\n const queue = [];\n\n if (Array.isArray(routeQueue)) {\n queue.push(...routeQueue);\n } else if (routeQueue && typeof routeQueue === 'function') {\n queue.push(routeQueue);\n }\n if (routerQueue) {\n if (Array.isArray(routerQueue)) {\n queue.push(...routerQueue);\n } else {\n queue.push(routerQueue);\n }\n }\n\n function next() {\n if (queue.length === 0) {\n resolve();\n return;\n }\n const queueItem = queue.shift();\n\n queueItem.call(router, {\n router,\n to,\n from,\n resolve() {\n next();\n },\n reject() {\n reject();\n },\n direction,\n app: router.app,\n });\n }\n next();\n}\n\nexport default function processRouteQueue(to, from, resolve, reject, direction) {\n const router = this;\n function enterNextRoute() {\n if (to && to.route && (router.params.routesBeforeEnter || to.route.beforeEnter)) {\n router.allowPageChange = false;\n processQueue(\n router,\n router.params.routesBeforeEnter,\n to.route.beforeEnter,\n to,\n from,\n () => {\n router.allowPageChange = true;\n resolve();\n },\n () => {\n reject();\n },\n direction,\n );\n } else {\n resolve();\n }\n }\n function leaveCurrentRoute() {\n if (from && from.route && (router.params.routesBeforeLeave || from.route.beforeLeave)) {\n router.allowPageChange = false;\n processQueue(\n router,\n router.params.routesBeforeLeave,\n from.route.beforeLeave,\n to,\n from,\n () => {\n router.allowPageChange = true;\n enterNextRoute();\n },\n () => {\n reject();\n },\n direction,\n );\n } else {\n enterNextRoute();\n }\n }\n leaveCurrentRoute();\n}\n","export default function appRouterCheck(router, method) {\n if (!router.view) {\n throw new Error(\n `Framework7: it is not allowed to use router methods on global app router. Use router methods only on related View, e.g. app.views.main.router.${method}(...)`,\n );\n }\n}\n","export default function asyncComponent(router, component, resolve, reject) {\n function resolvePromise(componentPromise) {\n componentPromise\n .then((c) => {\n // eslint-disable-next-line\n resolve({ component: c.default || c._default || c });\n })\n .catch((err) => {\n reject();\n throw new Error(err);\n });\n }\n if (component instanceof Promise) {\n resolvePromise(component);\n return;\n }\n const asyncComponentResult = component.call(router);\n if (asyncComponentResult instanceof Promise) {\n resolvePromise(asyncComponentResult);\n } else {\n resolve({ component: asyncComponentResult });\n }\n}\n","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { extend, parseUrlQuery } from '../../shared/utils.js';\nimport History from '../../shared/history.js';\nimport redirect from './redirect.js';\nimport processRouteQueue from './process-route-queue.js';\nimport appRouterCheck from './app-router-check.js';\nimport asyncComponent from './async-component.js';\n\nfunction refreshPage() {\n const router = this;\n appRouterCheck(router, 'refreshPage');\n return router.navigate(router.currentRoute.url, {\n ignoreCache: true,\n reloadCurrent: true,\n });\n}\n\nfunction forward(router, el, forwardOptions = {}) {\n const document = getDocument();\n const $el = $(el);\n const app = router.app;\n const view = router.view;\n const options = extend(\n false,\n {\n animate: router.params.animate,\n browserHistory: true,\n replaceState: false,\n history: true,\n reloadCurrent: router.params.reloadPages,\n reloadPrevious: false,\n reloadAll: false,\n clearPreviousHistory: false,\n reloadDetail: router.params.reloadDetail,\n on: {},\n },\n forwardOptions,\n );\n\n const masterDetailEnabled = router.params.masterDetailBreakpoint > 0;\n const isMaster =\n masterDetailEnabled &&\n options.route &&\n options.route.route &&\n (options.route.route.master === true ||\n (typeof options.route.route.master === 'function' &&\n options.route.route.master(app, router)));\n\n let masterPageEl;\n let otherDetailPageEl;\n let detailsInBetweenRemoved = 0;\n\n let currentRouteIsModal = router.currentRoute.modal;\n let modalType;\n if (!currentRouteIsModal) {\n 'popup popover sheet loginScreen actions customModal panel'\n .split(' ')\n .forEach((modalLoadProp) => {\n if (\n router.currentRoute &&\n router.currentRoute.route &&\n router.currentRoute.route[modalLoadProp]\n ) {\n currentRouteIsModal = true;\n modalType = modalLoadProp;\n }\n });\n }\n\n if (currentRouteIsModal) {\n const modalToClose =\n router.currentRoute.modal || router.currentRoute.route.modalInstance || app[modalType].get();\n const previousUrl = router.history[router.history.length - 2];\n let previousRoute = router.findMatchingRoute(previousUrl);\n if (!previousRoute && previousUrl) {\n previousRoute = {\n url: previousUrl,\n path: previousUrl.split('?')[0],\n query: parseUrlQuery(previousUrl),\n route: {\n path: previousUrl.split('?')[0],\n url: previousUrl,\n },\n };\n }\n\n router.modalRemove(modalToClose);\n }\n\n const dynamicNavbar = router.dynamicNavbar;\n\n const $viewEl = router.$el;\n const $newPage = $el;\n const reload = options.reloadPrevious || options.reloadCurrent || options.reloadAll;\n let $oldPage;\n\n let $navbarsEl;\n let $newNavbarEl;\n let $oldNavbarEl;\n\n router.allowPageChange = false;\n if ($newPage.length === 0) {\n router.allowPageChange = true;\n return router;\n }\n\n if ($newPage.length) {\n // Remove theme elements\n router.removeThemeElements($newPage);\n }\n\n if (dynamicNavbar) {\n $newNavbarEl = $newPage.children('.navbar');\n $navbarsEl = router.$navbarsEl;\n if ($newNavbarEl.length === 0 && $newPage[0] && $newPage[0].f7Page) {\n // Try from pageData\n $newNavbarEl = $newPage[0].f7Page.$navbarEl;\n }\n }\n\n // Save Keep Alive Cache\n if (\n options.route &&\n options.route.route &&\n options.route.route.keepAlive &&\n !options.route.route.keepAliveData\n ) {\n options.route.route.keepAliveData = {\n pageEl: $el[0],\n };\n }\n\n // Pages In View\n const $pagesInView = $viewEl\n .children('.page:not(.stacked)')\n .filter((pageInView) => pageInView !== $newPage[0]);\n\n // Navbars In View\n let $navbarsInView;\n if (dynamicNavbar) {\n $navbarsInView = $navbarsEl\n .children('.navbar:not(.stacked)')\n .filter((navbarInView) => navbarInView !== $newNavbarEl[0]);\n }\n\n // Exit when reload previous and only 1 page in view so nothing ro reload\n if (options.reloadPrevious && $pagesInView.length < 2) {\n router.allowPageChange = true;\n return router;\n }\n\n // Find Detail' master page\n let isDetail;\n let reloadDetail;\n let isDetailRoot;\n if (masterDetailEnabled && !options.reloadAll) {\n for (let i = 0; i < $pagesInView.length; i += 1) {\n if (!masterPageEl && $pagesInView[i].classList.contains('page-master')) {\n masterPageEl = $pagesInView[i];\n continue; // eslint-disable-line\n }\n }\n isDetail = !isMaster && masterPageEl;\n\n if (isDetail) {\n // Find Other Detail\n if (masterPageEl) {\n for (let i = 0; i < $pagesInView.length; i += 1) {\n if ($pagesInView[i].classList.contains('page-master-detail')) {\n otherDetailPageEl = $pagesInView[i];\n continue; // eslint-disable-line\n }\n }\n }\n }\n reloadDetail =\n isDetail &&\n options.reloadDetail &&\n app.width >= router.params.masterDetailBreakpoint &&\n masterPageEl;\n }\n if (isDetail) {\n isDetailRoot = !otherDetailPageEl || reloadDetail || options.reloadAll || options.reloadCurrent;\n }\n\n // New Page\n let newPagePosition = 'next';\n if (options.reloadCurrent || options.reloadAll || reloadDetail) {\n newPagePosition = 'current';\n } else if (options.reloadPrevious) {\n newPagePosition = 'previous';\n }\n $newPage\n .removeClass('page-previous page-current page-next')\n .addClass(\n `page-${newPagePosition}${isMaster ? ' page-master' : ''}${\n isDetail ? ' page-master-detail' : ''\n }${isDetailRoot ? ' page-master-detail-root' : ''}`,\n )\n .removeClass('stacked')\n .trigger('page:unstack')\n .trigger('page:position', { position: newPagePosition });\n router.emit('pageUnstack', $newPage[0]);\n router.emit('pagePosition', $newPage[0], newPagePosition);\n\n if (isMaster || isDetail) {\n $newPage.trigger('page:role', { role: isMaster ? 'master' : 'detail', root: !!isDetailRoot });\n router.emit('pageRole', $newPage[0], {\n role: isMaster ? 'master' : 'detail',\n detailRoot: !!isDetailRoot,\n });\n }\n\n if (dynamicNavbar && $newNavbarEl.length) {\n $newNavbarEl\n .removeClass('navbar-previous navbar-current navbar-next')\n .addClass(\n `navbar-${newPagePosition}${isMaster ? ' navbar-master' : ''}${\n isDetail ? ' navbar-master-detail' : ''\n }${isDetailRoot ? ' navbar-master-detail-root' : ''}`,\n )\n .removeClass('stacked');\n $newNavbarEl.trigger('navbar:position', { position: newPagePosition });\n router.emit('navbarPosition', $newNavbarEl[0], newPagePosition);\n if (isMaster || isDetail) {\n router.emit('navbarRole', $newNavbarEl[0], {\n role: isMaster ? 'master' : 'detail',\n detailRoot: !!isDetailRoot,\n });\n }\n }\n\n // Find Old Page\n if (options.reloadCurrent || reloadDetail) {\n if (reloadDetail) {\n $oldPage = $pagesInView.filter((pageEl) => !pageEl.classList.contains('page-master'));\n if (dynamicNavbar) {\n $oldNavbarEl = $($oldPage.map((pageEl) => app.navbar.getElByPage(pageEl)));\n }\n if ($oldPage.length > 1 && masterPageEl) {\n detailsInBetweenRemoved = $oldPage.length - 1;\n $(masterPageEl).removeClass('page-master-stacked').trigger('page:masterunstack');\n router.emit('pageMasterUnstack', masterPageEl);\n if (dynamicNavbar) {\n $(app.navbar.getElByPage(masterPageEl)).removeClass('navbar-master-stacked');\n router.emit('navbarMasterUnstack', app.navbar.getElByPage(masterPageEl));\n }\n }\n } else {\n $oldPage = $pagesInView.eq($pagesInView.length - 1);\n if (dynamicNavbar) {\n $oldNavbarEl = $(app.navbar.getElByPage($oldPage));\n }\n }\n } else if (options.reloadPrevious) {\n $oldPage = $pagesInView.eq($pagesInView.length - 2);\n if (dynamicNavbar) {\n // $oldNavbarEl = $navbarsInView.eq($pagesInView.length - 2);\n $oldNavbarEl = $(app.navbar.getElByPage($oldPage));\n }\n } else if (options.reloadAll) {\n $oldPage = $pagesInView.filter((pageEl) => pageEl !== $newPage[0]);\n if (dynamicNavbar) {\n $oldNavbarEl = $navbarsInView.filter((navbarEl) => navbarEl !== $newNavbarEl[0]);\n }\n } else {\n let removedPageEls = [];\n let removedNavbarEls = [];\n if ($pagesInView.length > 1) {\n let i = 0;\n for (i = 0; i < $pagesInView.length - 1; i += 1) {\n if (masterPageEl && $pagesInView[i] === masterPageEl) {\n $pagesInView.eq(i).addClass('page-master-stacked');\n $pagesInView.eq(i).trigger('page:masterstack');\n router.emit('pageMasterStack', $pagesInView[i]);\n if (dynamicNavbar) {\n $(app.navbar.getElByPage(masterPageEl)).addClass('navbar-master-stacked');\n router.emit('navbarMasterStack', app.navbar.getElByPage(masterPageEl));\n }\n continue; // eslint-disable-line\n }\n const oldNavbarEl = app.navbar.getElByPage($pagesInView.eq(i));\n if (router.params.stackPages) {\n $pagesInView.eq(i).addClass('stacked');\n $pagesInView.eq(i).trigger('page:stack');\n router.emit('pageStack', $pagesInView[i]);\n if (dynamicNavbar) {\n $(oldNavbarEl).addClass('stacked');\n }\n } else {\n // Page remove event\n removedPageEls.push($pagesInView[i]);\n router.pageCallback(\n 'beforeRemove',\n $pagesInView[i],\n $navbarsInView && $navbarsInView[i],\n 'previous',\n undefined,\n options,\n );\n router.removePage($pagesInView[i]);\n if (dynamicNavbar && oldNavbarEl) {\n removedNavbarEls.push(oldNavbarEl);\n router.removeNavbar(oldNavbarEl);\n }\n }\n }\n }\n $oldPage = $viewEl\n .children('.page:not(.stacked)')\n .filter((pageEl) => pageEl !== $newPage[0] && removedPageEls.indexOf(pageEl) < 0);\n if (dynamicNavbar) {\n $oldNavbarEl = $navbarsEl\n .children('.navbar:not(.stacked)')\n .filter(\n (navbarEl) =>\n navbarEl !== $newNavbarEl[0] && removedNavbarEls.indexOf(removedNavbarEls) < 0,\n );\n }\n removedPageEls = [];\n removedNavbarEls = [];\n }\n\n if (isDetail && !options.reloadAll) {\n if ($oldPage.length > 1 || reloadDetail) {\n $oldPage = $oldPage.filter((pageEl) => !pageEl.classList.contains('page-master'));\n }\n if ($oldNavbarEl && ($oldNavbarEl.length > 1 || reloadDetail)) {\n $oldNavbarEl = $oldNavbarEl.filter(\n (navbarEl) => !navbarEl.classList.contains('navbar-master'),\n );\n }\n }\n\n // Push State\n if (\n router.params.browserHistory &&\n (options.browserHistory || options.replaceState) &&\n !options.reloadPrevious\n ) {\n const browserHistoryRoot = router.params.browserHistoryRoot || '';\n History[\n options.reloadCurrent ||\n (reloadDetail && otherDetailPageEl) ||\n options.reloadAll ||\n options.replaceState\n ? 'replace'\n : 'push'\n ](\n view.id,\n {\n url: options.route.url,\n },\n browserHistoryRoot + router.params.browserHistorySeparator + options.route.url,\n );\n }\n\n if (!options.reloadPrevious) {\n // Current Page & Navbar\n router.currentPageEl = $newPage[0];\n if (dynamicNavbar && $newNavbarEl.length) {\n router.currentNavbarEl = $newNavbarEl[0];\n } else {\n delete router.currentNavbarEl;\n }\n\n // Current Route\n router.currentRoute = options.route;\n }\n\n // Update router history\n const url = options.route.url;\n\n if (options.history) {\n if (\n ((options.reloadCurrent || (reloadDetail && otherDetailPageEl)) && router.history.length) >\n 0 ||\n options.replaceState\n ) {\n if (reloadDetail && detailsInBetweenRemoved > 0) {\n router.history = router.history.slice(0, router.history.length - detailsInBetweenRemoved);\n }\n router.history[router.history.length - (options.reloadPrevious ? 2 : 1)] = url;\n } else if (options.reloadPrevious) {\n router.history[router.history.length - 2] = url;\n } else if (options.reloadAll) {\n router.history = [url];\n } else {\n router.history.push(url);\n }\n }\n router.saveHistory();\n\n // Insert new page and navbar\n const newPageInDom = $newPage.parents(document).length > 0;\n const f7Component = $newPage[0].f7Component;\n if (options.reloadPrevious) {\n if (f7Component && !newPageInDom) {\n f7Component.mount((componentEl) => {\n $(componentEl).insertBefore($oldPage);\n });\n } else {\n $newPage.insertBefore($oldPage);\n }\n if (dynamicNavbar && $newNavbarEl.length) {\n if ($newNavbarEl.find('.title-large').length) {\n $newNavbarEl.addClass('navbar-large');\n }\n if ($oldNavbarEl.length) {\n $newNavbarEl.insertBefore($oldNavbarEl);\n } else {\n if (!router.$navbarsEl.parents(document).length) {\n router.$el.prepend(router.$navbarsEl);\n }\n $navbarsEl.append($newNavbarEl);\n }\n }\n } else {\n if ($oldPage.next('.page')[0] !== $newPage[0]) {\n if (f7Component && !newPageInDom) {\n f7Component.mount((componentEl) => {\n $viewEl.append(componentEl);\n });\n } else {\n $viewEl.append($newPage[0]);\n }\n }\n if (dynamicNavbar && $newNavbarEl.length) {\n if ($newNavbarEl.find('.title-large').length) {\n $newNavbarEl.addClass('navbar-large');\n }\n if (!router.$navbarsEl.parents(document).length) {\n router.$el.prepend(router.$navbarsEl);\n }\n $navbarsEl.append($newNavbarEl[0]);\n }\n }\n if (!newPageInDom) {\n router.pageCallback(\n 'mounted',\n $newPage,\n $newNavbarEl,\n newPagePosition,\n reload ? newPagePosition : 'current',\n options,\n $oldPage,\n );\n } else if (\n options.route &&\n options.route.route &&\n options.route.route.keepAlive &&\n !$newPage[0].f7PageMounted\n ) {\n $newPage[0].f7PageMounted = true;\n router.pageCallback(\n 'mounted',\n $newPage,\n $newNavbarEl,\n newPagePosition,\n reload ? newPagePosition : 'current',\n options,\n $oldPage,\n );\n }\n\n // Remove old page\n if ((options.reloadCurrent || reloadDetail) && $oldPage.length > 0) {\n if (router.params.stackPages && router.initialPages.indexOf($oldPage[0]) >= 0) {\n $oldPage.addClass('stacked');\n $oldPage.trigger('page:stack');\n router.emit('pageStack', $oldPage[0]);\n if (dynamicNavbar) {\n $oldNavbarEl.addClass('stacked');\n }\n } else {\n // Page remove event\n router.pageCallback('beforeOut', $oldPage, $oldNavbarEl, 'current', undefined, options);\n router.pageCallback('afterOut', $oldPage, $oldNavbarEl, 'current', undefined, options);\n router.pageCallback('beforeRemove', $oldPage, $oldNavbarEl, 'current', undefined, options);\n router.removePage($oldPage);\n if (dynamicNavbar && $oldNavbarEl && $oldNavbarEl.length) {\n router.removeNavbar($oldNavbarEl);\n }\n }\n } else if (options.reloadAll) {\n $oldPage.each((pageEl, index) => {\n const $oldPageEl = $(pageEl);\n const $oldNavbarElEl = $(app.navbar.getElByPage($oldPageEl));\n if (router.params.stackPages && router.initialPages.indexOf($oldPageEl[0]) >= 0) {\n $oldPageEl.addClass('stacked');\n $oldPageEl.trigger('page:stack');\n router.emit('pageStack', $oldPageEl[0]);\n if (dynamicNavbar) {\n $oldNavbarElEl.addClass('stacked');\n }\n } else {\n // Page remove event\n if ($oldPageEl.hasClass('page-current')) {\n router.pageCallback('beforeOut', $oldPage, $oldNavbarEl, 'current', undefined, options);\n router.pageCallback('afterOut', $oldPage, $oldNavbarEl, 'current', undefined, options);\n }\n router.pageCallback(\n 'beforeRemove',\n $oldPageEl,\n $oldNavbarEl && $oldNavbarEl.eq(index),\n 'previous',\n undefined,\n options,\n );\n router.removePage($oldPageEl);\n if (dynamicNavbar && $oldNavbarElEl.length) {\n router.removeNavbar($oldNavbarElEl);\n }\n }\n });\n } else if (options.reloadPrevious) {\n if (router.params.stackPages && router.initialPages.indexOf($oldPage[0]) >= 0) {\n $oldPage.addClass('stacked');\n $oldPage.trigger('page:stack');\n router.emit('pageStack', $oldPage[0]);\n if (dynamicNavbar) {\n $oldNavbarEl.addClass('stacked');\n }\n } else {\n // Page remove event\n router.pageCallback('beforeRemove', $oldPage, $oldNavbarEl, 'previous', undefined, options);\n router.removePage($oldPage);\n if (dynamicNavbar && $oldNavbarEl && $oldNavbarEl.length) {\n router.removeNavbar($oldNavbarEl);\n }\n }\n }\n\n // Load Tab\n if (options.route.route.tab) {\n router.tabLoad(\n options.route.route.tab,\n extend({}, options, {\n history: false,\n browserHistory: false,\n }),\n );\n }\n\n // Check master detail\n if (masterDetailEnabled) {\n view.checkMasterDetailBreakpoint();\n }\n\n // Page init and before init events\n router.pageCallback(\n 'init',\n $newPage,\n $newNavbarEl,\n newPagePosition,\n reload ? newPagePosition : 'current',\n options,\n $oldPage,\n );\n\n if (options.reloadCurrent || options.reloadAll || reloadDetail) {\n router.allowPageChange = true;\n router.pageCallback('beforeIn', $newPage, $newNavbarEl, newPagePosition, 'current', options);\n $newPage.removeAttr('aria-hidden');\n if (dynamicNavbar && $newNavbarEl) {\n $newNavbarEl.removeAttr('aria-hidden');\n }\n router.pageCallback('afterIn', $newPage, $newNavbarEl, newPagePosition, 'current', options);\n if (options.reloadCurrent && options.clearPreviousHistory) router.clearPreviousHistory();\n if (reloadDetail) {\n router.setPagePosition($(masterPageEl), 'previous');\n if (masterPageEl.f7Page && masterPageEl.f7Page.navbarEl) {\n router.setNavbarPosition($(masterPageEl.f7Page.navbarEl), 'previous');\n }\n }\n return router;\n }\n if (options.reloadPrevious) {\n router.allowPageChange = true;\n return router;\n }\n\n // Before animation event\n router.pageCallback('beforeOut', $oldPage, $oldNavbarEl, 'current', 'previous', options);\n router.pageCallback('beforeIn', $newPage, $newNavbarEl, 'next', 'current', options);\n\n // Animation\n function afterAnimation() {\n router.setPagePosition($newPage, 'current', false);\n router.setPagePosition($oldPage, 'previous', !$oldPage.hasClass('page-master'));\n if (dynamicNavbar) {\n router.setNavbarPosition($newNavbarEl, 'current', false);\n router.setNavbarPosition($oldNavbarEl, 'previous', !$oldNavbarEl.hasClass('navbar-master'));\n }\n // After animation event\n router.allowPageChange = true;\n router.pageCallback('afterOut', $oldPage, $oldNavbarEl, 'current', 'previous', options);\n router.pageCallback('afterIn', $newPage, $newNavbarEl, 'next', 'current', options);\n\n let keepOldPage =\n (router.params.preloadPreviousPage || router.params[`${app.theme}SwipeBack`]) && !isMaster;\n if (!keepOldPage) {\n if (\n $newPage.hasClass('smart-select-page') ||\n $newPage.hasClass('photo-browser-page') ||\n $newPage.hasClass('autocomplete-page') ||\n $newPage.hasClass('color-picker-page')\n ) {\n keepOldPage = true;\n }\n }\n if (!keepOldPage) {\n if (router.params.stackPages) {\n $oldPage.addClass('stacked');\n $oldPage.trigger('page:stack');\n router.emit('pageStack', $oldPage[0]);\n if (dynamicNavbar) {\n $oldNavbarEl.addClass('stacked');\n }\n } else if (\n !($newPage.attr('data-name') && $newPage.attr('data-name') === 'smart-select-page')\n ) {\n // Remove event\n router.pageCallback('beforeRemove', $oldPage, $oldNavbarEl, 'previous', undefined, options);\n router.removePage($oldPage);\n if (dynamicNavbar && $oldNavbarEl.length) {\n router.removeNavbar($oldNavbarEl);\n }\n }\n }\n if (options.clearPreviousHistory) router.clearPreviousHistory();\n router.emit('routeChanged', router.currentRoute, router.previousRoute, router);\n\n if (router.params.browserHistory) {\n History.clearRouterQueue();\n }\n }\n function setPositionClasses() {\n router.setPagePosition($oldPage, 'current', false);\n router.setPagePosition($newPage, 'next', false);\n if (dynamicNavbar) {\n router.setNavbarPosition($oldNavbarEl, 'current', false);\n router.setNavbarPosition($newNavbarEl, 'next', false);\n }\n }\n if (options.animate && !(isMaster && app.width >= router.params.masterDetailBreakpoint)) {\n const delay = router.params[`${router.app.theme}PageLoadDelay`];\n let transition = router.params.transition;\n if (options.transition) transition = options.transition;\n if (!transition && router.currentRoute && router.currentRoute.route) {\n transition = router.currentRoute.route.transition;\n }\n if (!transition && router.currentRoute && router.currentRoute.route.options) {\n transition = router.currentRoute.route.options.transition;\n }\n if (transition) {\n $newPage[0].f7PageTransition = transition;\n }\n\n if (delay) {\n setTimeout(() => {\n setPositionClasses();\n router.animate(\n $oldPage,\n $newPage,\n $oldNavbarEl,\n $newNavbarEl,\n 'forward',\n transition,\n () => {\n afterAnimation();\n },\n );\n }, delay);\n } else {\n setPositionClasses();\n router.animate($oldPage, $newPage, $oldNavbarEl, $newNavbarEl, 'forward', transition, () => {\n afterAnimation();\n });\n }\n } else {\n afterAnimation();\n }\n return router;\n}\nfunction load(router, loadParams = {}, loadOptions = {}, ignorePageChange) {\n if (!router.allowPageChange && !ignorePageChange) return router;\n const params = loadParams;\n const options = loadOptions;\n const { url, content, el, pageName, component, componentUrl } = params;\n\n if (\n !options.reloadCurrent &&\n options.route &&\n options.route.route &&\n options.route.route.parentPath &&\n router.currentRoute.route &&\n router.currentRoute.route.parentPath === options.route.route.parentPath\n ) {\n // Do something nested\n if (options.route.url === router.url) {\n router.allowPageChange = true;\n return false;\n }\n // Check for same params\n let sameParams =\n Object.keys(options.route.params).length === Object.keys(router.currentRoute.params).length;\n if (sameParams) {\n // Check for equal params name\n Object.keys(options.route.params).forEach((paramName) => {\n if (\n !(paramName in router.currentRoute.params) ||\n router.currentRoute.params[paramName] !== options.route.params[paramName]\n ) {\n sameParams = false;\n }\n });\n }\n if (sameParams) {\n if (options.route.route.tab) {\n return router.tabLoad(options.route.route.tab, options);\n }\n return false;\n }\n if (\n !sameParams &&\n options.route.route.tab &&\n router.currentRoute.route.tab &&\n router.currentRoute.parentPath === options.route.parentPath\n ) {\n return router.tabLoad(options.route.route.tab, options);\n }\n }\n\n if (\n options.route &&\n options.route.url &&\n router.url === options.route.url &&\n !(options.reloadCurrent || options.reloadPrevious) &&\n !router.params.allowDuplicateUrls\n ) {\n router.allowPageChange = true;\n return false;\n }\n\n if (!options.route && url) {\n options.route = router.parseRouteUrl(url);\n extend(options.route, { route: { url, path: url } });\n }\n\n // Component Callbacks\n function resolve(pageEl, newOptions) {\n return forward(router, pageEl, extend(options, newOptions));\n }\n function reject() {\n router.allowPageChange = true;\n return router;\n }\n\n if (url || componentUrl || component) {\n router.allowPageChange = false;\n }\n\n // Proceed\n if (content) {\n forward(router, router.getPageEl(content), options);\n } else if (el) {\n // Load page from specified HTMLElement or by page name in pages container\n forward(router, router.getPageEl(el), options);\n } else if (pageName) {\n // Load page by page name in pages container\n forward(router, router.$el.children(`.page[data-name=\"${pageName}\"]`).eq(0), options);\n } else if (component || componentUrl) {\n // Load from component (F7/Vue/React/...)\n try {\n router.pageComponentLoader({\n routerEl: router.el,\n component,\n componentUrl,\n options,\n resolve,\n reject,\n });\n } catch (err) {\n router.allowPageChange = true;\n throw err;\n }\n } else if (url) {\n // Load using XHR\n if (router.xhrAbortController) {\n router.xhrAbortController.abort();\n router.xhrAbortController = false;\n }\n router\n .xhrRequest(url, options)\n .then((pageContent) => {\n forward(router, router.getPageEl(pageContent), options);\n })\n .catch(() => {\n router.allowPageChange = true;\n });\n }\n return router;\n}\n\nfunction navigate(navigateParams, navigateOptions = {}) {\n const router = this;\n\n if (router.swipeBackActive) return router;\n let url;\n let createRoute;\n let name;\n let path;\n let query;\n let params;\n let route;\n if (typeof navigateParams === 'string') {\n url = navigateParams;\n } else {\n url = navigateParams.url;\n createRoute = navigateParams.route;\n name = navigateParams.name;\n path = navigateParams.path;\n query = navigateParams.query;\n params = navigateParams.params;\n }\n if (name || path) {\n url = router.generateUrl({ path, name, params, query });\n if (url) {\n return router.navigate(url, navigateOptions);\n }\n return router;\n }\n const app = router.app;\n appRouterCheck(router, 'navigate');\n if (url === '#' || url === '') {\n return router;\n }\n\n let navigateUrl = url.replace('./', '');\n if (navigateUrl[0] !== '/' && navigateUrl.indexOf('#') !== 0) {\n const currentPath = router.currentRoute.parentPath || router.currentRoute.path;\n navigateUrl = ((currentPath ? `${currentPath}/` : '/') + navigateUrl)\n .replace('///', '/')\n .replace('//', '/');\n }\n if (createRoute) {\n route = extend(router.parseRouteUrl(navigateUrl), {\n route: extend({}, createRoute),\n });\n } else {\n route = router.findMatchingRoute(navigateUrl);\n }\n\n if (!route) {\n return router;\n }\n if (route.route && route.route.viewName) {\n const anotherViewName = route.route.viewName;\n const anotherView = app.views[anotherViewName];\n if (!anotherView) {\n throw new Error(\n `Framework7: There is no View with \"${anotherViewName}\" name that was specified in this route`,\n );\n }\n if (anotherView !== router.view) {\n return anotherView.router.navigate(navigateParams, navigateOptions);\n }\n }\n\n if (route.route.redirect) {\n return redirect.call(router, 'forward', route, navigateOptions);\n }\n\n const options = {};\n if (route.route.options) {\n extend(options, route.route.options, navigateOptions);\n } else {\n extend(options, navigateOptions);\n }\n\n if (\n options.openIn &&\n (!router.params.ignoreOpenIn || (router.params.ignoreOpenIn && router.history.length > 0))\n ) {\n return router.openIn(router, navigateUrl, options);\n }\n\n options.route = route;\n\n function resolve() {\n let routerLoaded = false;\n 'popup popover sheet loginScreen actions customModal panel'\n .split(' ')\n .forEach((modalLoadProp) => {\n if (route.route[modalLoadProp] && !routerLoaded) {\n routerLoaded = true;\n router.modalLoad(modalLoadProp, route, options, 'forward');\n }\n });\n if (route.route.keepAlive && route.route.keepAliveData) {\n load(router, { el: route.route.keepAliveData.pageEl }, options, false);\n routerLoaded = true;\n }\n 'url content component pageName el componentUrl'.split(' ').forEach((pageLoadProp) => {\n if (route.route[pageLoadProp] && !routerLoaded) {\n routerLoaded = true;\n load(router, { [pageLoadProp]: route.route[pageLoadProp] }, options, false);\n }\n });\n if (routerLoaded) return;\n // Async\n function asyncResolve(resolveParams, resolveOptions) {\n router.allowPageChange = false;\n let resolvedAsModal = false;\n\n 'popup popover sheet loginScreen actions customModal panel'\n .split(' ')\n .forEach((modalLoadProp) => {\n if (resolveParams[modalLoadProp]) {\n resolvedAsModal = true;\n const modalRoute = extend({}, route, { route: resolveParams });\n router.allowPageChange = true;\n router.modalLoad(modalLoadProp, modalRoute, extend(options, resolveOptions), 'forward');\n }\n });\n if (resolvedAsModal) return;\n load(router, resolveParams, extend(options, resolveOptions), true);\n }\n function asyncReject() {\n router.allowPageChange = true;\n }\n if (route.route.async) {\n router.allowPageChange = false;\n route.route.async.call(router, {\n router,\n to: options.route,\n from: router.currentRoute,\n resolve: asyncResolve,\n reject: asyncReject,\n direction: 'forward',\n app,\n });\n }\n if (route.route.asyncComponent) {\n asyncComponent(router, route.route.asyncComponent, asyncResolve, asyncReject);\n }\n }\n function reject() {\n router.allowPageChange = true;\n }\n\n if (router.params.masterDetailBreakpoint > 0 && route.route.masterRoute) {\n // load detail route\n let preloadMaster = true;\n let masterLoaded = false;\n if (router.currentRoute && router.currentRoute.route) {\n if (\n (router.currentRoute.route.master === true ||\n (typeof router.currentRoute.route.master === 'function' &&\n router.currentRoute.route.master(app, router))) &&\n (router.currentRoute.route === route.route.masterRoute ||\n router.currentRoute.route.path === route.route.masterRoute.path)\n ) {\n preloadMaster = false;\n }\n if (\n router.currentRoute.route.masterRoute &&\n (router.currentRoute.route.masterRoute === route.route.masterRoute ||\n router.currentRoute.route.masterRoute.path === route.route.masterRoute.path)\n ) {\n preloadMaster = false;\n masterLoaded = true;\n }\n }\n if (preloadMaster || (masterLoaded && navigateOptions.reloadAll)) {\n router.navigate(\n { path: route.route.masterRoute.path, params: route.params || {} },\n {\n animate: false,\n reloadAll: navigateOptions.reloadAll,\n reloadCurrent: navigateOptions.reloadCurrent,\n reloadPrevious: navigateOptions.reloadPrevious,\n browserHistory: !navigateOptions.initial,\n history: !navigateOptions.initial,\n once: {\n pageAfterIn() {\n router.navigate(\n navigateParams,\n extend({}, navigateOptions, {\n animate: false,\n reloadAll: false,\n reloadCurrent: false,\n reloadPrevious: false,\n history: !navigateOptions.initial,\n browserHistory: !navigateOptions.initial,\n }),\n );\n },\n },\n },\n );\n return router;\n }\n }\n\n processRouteQueue.call(\n router,\n route,\n router.currentRoute,\n () => {\n if (route.route.modules) {\n app\n .loadModules(\n Array.isArray(route.route.modules) ? route.route.modules : [route.route.modules],\n )\n .then(() => {\n resolve();\n })\n .catch(() => {\n reject();\n });\n } else {\n resolve();\n }\n },\n () => {\n reject();\n },\n 'forward',\n );\n\n // Return Router\n return router;\n}\nexport { refreshPage, navigate };\n","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { extend, parseUrlQuery } from '../../shared/utils.js';\nimport { getDevice } from '../../shared/get-device.js';\nimport History from '../../shared/history.js';\nimport redirect from './redirect.js';\nimport processRouteQueue from './process-route-queue.js';\nimport appRouterCheck from './app-router-check.js';\nimport asyncComponent from './async-component.js';\n\nfunction backward(router, el, backwardOptions) {\n const device = getDevice();\n const document = getDocument();\n const $el = $(el);\n const app = router.app;\n const view = router.view;\n\n const options = extend(\n false,\n {\n animate: router.params.animate,\n browserHistory: true,\n replaceState: false,\n },\n backwardOptions,\n );\n\n const masterDetailEnabled = router.params.masterDetailBreakpoint > 0;\n const isMaster =\n masterDetailEnabled &&\n options.route &&\n options.route.route &&\n (options.route.route.master === true ||\n (typeof options.route.route.master === 'function' &&\n options.route.route.master(app, router)));\n let masterPageEl;\n let masterPageRemoved;\n\n const dynamicNavbar = router.dynamicNavbar;\n\n const $newPage = $el;\n const $oldPage = router.$el.children('.page-current');\n const initialPreload = $oldPage.length === 0 && options.preload;\n const currentIsMaster = masterDetailEnabled && $oldPage.hasClass('page-master');\n\n if ($newPage.length) {\n // Remove theme elements\n router.removeThemeElements($newPage);\n }\n\n let $navbarsEl;\n let $newNavbarEl;\n let $oldNavbarEl;\n\n if (dynamicNavbar) {\n $newNavbarEl = $newPage.children('.navbar');\n $navbarsEl = router.$navbarsEl;\n if ($newNavbarEl.length === 0 && $newPage[0] && $newPage[0].f7Page) {\n // Try from pageData\n $newNavbarEl = $newPage[0].f7Page.$navbarEl;\n }\n $oldNavbarEl = $navbarsEl.find('.navbar-current');\n }\n\n router.allowPageChange = false;\n if ($newPage.length === 0 || ($oldPage.length === 0 && !options.preload)) {\n router.allowPageChange = true;\n return router;\n }\n\n // Remove theme elements\n router.removeThemeElements($newPage);\n\n // Save Keep Alive Cache\n if (\n options.route &&\n options.route.route &&\n options.route.route.keepAlive &&\n !options.route.route.keepAliveData\n ) {\n options.route.route.keepAliveData = {\n pageEl: $el[0],\n };\n }\n\n // Pages In View\n let isDetail;\n let isDetailRoot;\n if (masterDetailEnabled) {\n const $pagesInView = router.$el\n .children('.page:not(.stacked)')\n .filter((pageInView) => pageInView !== $newPage[0]);\n\n // Find Detail' master page\n for (let i = 0; i < $pagesInView.length; i += 1) {\n if (!masterPageEl && $pagesInView[i].classList.contains('page-master')) {\n masterPageEl = $pagesInView[i];\n continue; // eslint-disable-line\n }\n }\n\n isDetail =\n !isMaster &&\n masterPageEl &&\n router.history.indexOf(options.route.url) >\n router.history.indexOf(masterPageEl.f7Page.route.url);\n\n if (\n !isDetail &&\n !isMaster &&\n masterPageEl &&\n masterPageEl.f7Page &&\n options.route.route.masterRoute\n ) {\n isDetail = options.route.route.masterRoute.path === masterPageEl.f7Page.route.route.path;\n }\n }\n if (isDetail && masterPageEl && masterPageEl.f7Page) {\n isDetailRoot =\n router.history.indexOf(options.route.url) -\n router.history.indexOf(masterPageEl.f7Page.route.url) ===\n 1;\n }\n\n // New Page\n $newPage\n .addClass(\n `page-${initialPreload ? 'current' : 'previous'}${isMaster ? ' page-master' : ''}${\n isDetail ? ' page-master-detail' : ''\n }${isDetailRoot ? ' page-master-detail-root' : ''}`,\n )\n .removeClass('stacked')\n .removeAttr('aria-hidden')\n .trigger('page:unstack')\n .trigger('page:position', { position: initialPreload ? 'current' : 'previous' });\n router.emit('pageUnstack', $newPage[0]);\n router.emit('pagePosition', $newPage[0], initialPreload ? 'current' : 'previous');\n if (isMaster || isDetail) {\n $newPage.trigger('page:role', { role: isMaster ? 'master' : 'detail', root: !!isDetailRoot });\n router.emit('pageRole', $newPage[0], {\n role: isMaster ? 'master' : 'detail',\n detailRoot: !!isDetailRoot,\n });\n }\n\n if (dynamicNavbar && $newNavbarEl.length > 0) {\n $newNavbarEl\n .addClass(\n `navbar-${initialPreload ? 'current' : 'previous'}${isMaster ? ' navbar-master' : ''}${\n isDetail ? ' navbar-master-detail' : ''\n }${isDetailRoot ? ' navbar-master-detail-root' : ''}`,\n )\n .removeClass('stacked')\n .removeAttr('aria-hidden');\n $newNavbarEl.trigger('navbar:position', { position: initialPreload ? 'current' : 'previous' });\n router.emit('navbarPosition', $newNavbarEl[0], initialPreload ? 'current' : 'previous');\n if (isMaster || isDetailRoot) {\n router.emit('navbarRole', $newNavbarEl[0], {\n role: isMaster ? 'master' : 'detail',\n detailRoot: !!isDetailRoot,\n });\n }\n }\n\n // Remove previous page in case of \"forced\"\n let backIndex;\n if (options.force) {\n if (\n $oldPage.prev('.page-previous:not(.stacked)').length > 0 ||\n $oldPage.prev('.page-previous').length === 0\n ) {\n if (router.history.indexOf(options.route.url) >= 0) {\n backIndex = router.history.length - router.history.indexOf(options.route.url) - 1;\n router.history = router.history.slice(0, router.history.indexOf(options.route.url) + 2);\n view.history = router.history;\n } else if (router.history[[router.history.length - 2]]) {\n router.history[router.history.length - 2] = options.route.url;\n } else {\n router.history.unshift(router.url);\n }\n\n if (backIndex && router.params.stackPages) {\n $oldPage.prevAll('.page-previous').each((pageToRemove) => {\n const $pageToRemove = $(pageToRemove);\n let $navbarToRemove;\n if (dynamicNavbar) {\n // $navbarToRemove = $oldNavbarEl.prevAll('.navbar-previous').eq(index);\n $navbarToRemove = $(app.navbar.getElByPage($pageToRemove));\n }\n if ($pageToRemove[0] !== $newPage[0] && $pageToRemove.index() > $newPage.index()) {\n if (router.initialPages.indexOf($pageToRemove[0]) >= 0) {\n $pageToRemove.addClass('stacked');\n $pageToRemove.trigger('page:stack');\n router.emit('pageStack', $pageToRemove[0]);\n if (dynamicNavbar) {\n $navbarToRemove.addClass('stacked');\n }\n } else {\n router.pageCallback(\n 'beforeRemove',\n $pageToRemove,\n $navbarToRemove,\n 'previous',\n undefined,\n options,\n );\n if ($pageToRemove[0] === masterPageEl) {\n masterPageRemoved = true;\n }\n router.removePage($pageToRemove);\n if (dynamicNavbar && $navbarToRemove.length > 0) {\n router.removeNavbar($navbarToRemove);\n }\n }\n }\n });\n } else {\n const $pageToRemove = $oldPage.prev('.page-previous:not(.stacked)');\n let $navbarToRemove;\n if (dynamicNavbar) {\n // $navbarToRemove = $oldNavbarEl.prev('.navbar-inner:not(.stacked)');\n $navbarToRemove = $(app.navbar.getElByPage($pageToRemove));\n }\n if (router.params.stackPages && router.initialPages.indexOf($pageToRemove[0]) >= 0) {\n $pageToRemove.addClass('stacked');\n $pageToRemove.trigger('page:stack');\n router.emit('pageStack', $pageToRemove[0]);\n $navbarToRemove.addClass('stacked');\n } else if ($pageToRemove.length > 0) {\n router.pageCallback(\n 'beforeRemove',\n $pageToRemove,\n $navbarToRemove,\n 'previous',\n undefined,\n options,\n );\n if ($pageToRemove[0] === masterPageEl) {\n masterPageRemoved = true;\n }\n router.removePage($pageToRemove);\n if (dynamicNavbar && $navbarToRemove.length) {\n router.removeNavbar($navbarToRemove);\n }\n }\n }\n }\n }\n\n // Insert new page\n const newPageInDom = $newPage.parents(document).length > 0;\n const f7Component = $newPage[0].f7Component;\n\n function insertPage() {\n if (initialPreload) {\n if (!newPageInDom && f7Component) {\n f7Component.mount((componentEl) => {\n router.$el.append(componentEl);\n });\n } else {\n router.$el.append($newPage);\n }\n }\n if ($newPage.next($oldPage).length === 0) {\n if (!newPageInDom && f7Component) {\n f7Component.mount((componentEl) => {\n $(componentEl).insertBefore($oldPage);\n });\n } else {\n $newPage.insertBefore($oldPage);\n }\n }\n if (dynamicNavbar && $newNavbarEl.length) {\n if ($newNavbarEl.find('.title-large').length) {\n $newNavbarEl.addClass('navbar-large');\n }\n $newNavbarEl.insertBefore($oldNavbarEl);\n if ($oldNavbarEl.length > 0) {\n $newNavbarEl.insertBefore($oldNavbarEl);\n } else {\n if (!router.$navbarsEl.parents(document).length) {\n router.$el.prepend(router.$navbarsEl);\n }\n $navbarsEl.append($newNavbarEl);\n }\n }\n if (!newPageInDom) {\n router.pageCallback(\n 'mounted',\n $newPage,\n $newNavbarEl,\n 'previous',\n 'current',\n options,\n $oldPage,\n );\n } else if (\n options.route &&\n options.route.route &&\n options.route.route.keepAlive &&\n !$newPage[0].f7PageMounted\n ) {\n $newPage[0].f7PageMounted = true;\n router.pageCallback(\n 'mounted',\n $newPage,\n $newNavbarEl,\n 'previous',\n 'current',\n options,\n $oldPage,\n );\n }\n }\n\n if (options.preload) {\n // Insert Page\n insertPage();\n // Tab route\n if (options.route.route.tab) {\n router.tabLoad(\n options.route.route.tab,\n extend({}, options, {\n history: false,\n browserHistory: false,\n preload: true,\n }),\n );\n }\n if (isMaster) {\n $newPage.removeClass('page-master-stacked').trigger('page:masterunstack');\n router.emit('pageMasterUnstack', $newPage[0]);\n if (dynamicNavbar) {\n $(app.navbar.getElByPage($newPage)).removeClass('navbar-master-stacked');\n router.emit('navbarMasterUnstack', app.navbar.getElByPage($newPage));\n }\n }\n // Page init and before init events\n router.pageCallback('init', $newPage, $newNavbarEl, 'previous', 'current', options, $oldPage);\n if (initialPreload) {\n router.pageCallback('beforeIn', $newPage, $newNavbarEl, 'current', undefined, options);\n router.pageCallback('afterIn', $newPage, $newNavbarEl, 'current', undefined, options);\n }\n const $previousPages = $newPage.prevAll('.page-previous:not(.stacked):not(.page-master)');\n if ($previousPages.length > 0) {\n $previousPages.each((pageToRemove) => {\n const $pageToRemove = $(pageToRemove);\n let $navbarToRemove;\n if (dynamicNavbar) {\n // $navbarToRemove = $newNavbarEl.prevAll('.navbar-previous:not(.stacked)').eq(index);\n $navbarToRemove = $(app.navbar.getElByPage($pageToRemove));\n }\n if (router.params.stackPages && router.initialPages.indexOf(pageToRemove) >= 0) {\n $pageToRemove.addClass('stacked');\n $pageToRemove.trigger('page:stack');\n router.emit('pageStack', $pageToRemove[0]);\n if (dynamicNavbar) {\n $navbarToRemove.addClass('stacked');\n }\n } else {\n router.pageCallback(\n 'beforeRemove',\n $pageToRemove,\n $navbarToRemove,\n 'previous',\n undefined,\n );\n router.removePage($pageToRemove);\n if (dynamicNavbar && $navbarToRemove.length) {\n router.removeNavbar($navbarToRemove);\n }\n }\n });\n }\n router.allowPageChange = true;\n return router;\n }\n\n // History State\n if (!(device.ie || device.edge || (device.firefox && !device.ios))) {\n if (router.params.browserHistory && options.browserHistory) {\n if (options.replaceState) {\n const browserHistoryRoot = router.params.browserHistoryRoot || '';\n History.replace(\n view.id,\n {\n url: options.route.url,\n },\n browserHistoryRoot + router.params.browserHistorySeparator + options.route.url,\n );\n } else if (backIndex) {\n History.go(-backIndex);\n } else {\n History.back();\n }\n }\n }\n\n // Update History\n if (options.replaceState) {\n router.history[router.history.length - 1] = options.route.url;\n } else {\n if (router.history.length === 1) {\n router.history.unshift(router.url);\n }\n router.history.pop();\n }\n router.saveHistory();\n\n // Current Page & Navbar\n router.currentPageEl = $newPage[0];\n if (dynamicNavbar && $newNavbarEl.length) {\n router.currentNavbarEl = $newNavbarEl[0];\n } else {\n delete router.currentNavbarEl;\n }\n\n // Current Route\n router.currentRoute = options.route;\n\n // History State\n if (device.ie || device.edge || (device.firefox && !device.ios)) {\n if (router.params.browserHistory && options.browserHistory) {\n if (options.replaceState) {\n const browserHistoryRoot = router.params.browserHistoryRoot || '';\n History.replace(\n view.id,\n {\n url: options.route.url,\n },\n browserHistoryRoot + router.params.browserHistorySeparator + options.route.url,\n );\n } else if (backIndex) {\n History.go(-backIndex);\n } else {\n History.back();\n }\n }\n }\n\n // Insert Page\n insertPage();\n\n // Load Tab\n if (options.route.route.tab) {\n router.tabLoad(\n options.route.route.tab,\n extend({}, options, {\n history: false,\n browserHistory: false,\n }),\n );\n }\n\n // Check master detail\n\n if (masterDetailEnabled && (currentIsMaster || masterPageRemoved)) {\n view.checkMasterDetailBreakpoint(false);\n }\n\n // Page init and before init events\n router.pageCallback('init', $newPage, $newNavbarEl, 'previous', 'current', options, $oldPage);\n\n // Before animation callback\n router.pageCallback('beforeOut', $oldPage, $oldNavbarEl, 'current', 'next', options);\n router.pageCallback('beforeIn', $newPage, $newNavbarEl, 'previous', 'current', options);\n\n // Animation\n function afterAnimation() {\n // Set classes\n router.setPagePosition($newPage, 'current', false);\n router.setPagePosition($oldPage, 'next', true);\n if (dynamicNavbar) {\n router.setNavbarPosition($newNavbarEl, 'current', false);\n router.setNavbarPosition($oldNavbarEl, 'next', true);\n }\n\n // After animation event\n router.pageCallback('afterOut', $oldPage, $oldNavbarEl, 'current', 'next', options);\n router.pageCallback('afterIn', $newPage, $newNavbarEl, 'previous', 'current', options);\n\n // Remove Old Page\n if (router.params.stackPages && router.initialPages.indexOf($oldPage[0]) >= 0) {\n $oldPage.addClass('stacked');\n $oldPage.trigger('page:stack');\n router.emit('pageStack', $oldPage[0]);\n if (dynamicNavbar) {\n $oldNavbarEl.addClass('stacked');\n }\n } else {\n router.pageCallback('beforeRemove', $oldPage, $oldNavbarEl, 'next', undefined, options);\n router.removePage($oldPage);\n if (dynamicNavbar && $oldNavbarEl.length) {\n router.removeNavbar($oldNavbarEl);\n }\n }\n\n router.allowPageChange = true;\n router.emit('routeChanged', router.currentRoute, router.previousRoute, router);\n\n // Preload previous page\n const preloadPreviousPage =\n router.params.preloadPreviousPage || router.params[`${app.theme}SwipeBack`];\n if (preloadPreviousPage && router.history[router.history.length - 2] && !isMaster) {\n router.back(router.history[router.history.length - 2], { preload: true });\n }\n if (router.params.browserHistory) {\n History.clearRouterQueue();\n }\n }\n\n function setPositionClasses() {\n router.setPagePosition($oldPage, 'current');\n router.setPagePosition($newPage, 'previous', false);\n if (dynamicNavbar) {\n router.setNavbarPosition($oldNavbarEl, 'current');\n router.setNavbarPosition($newNavbarEl, 'previous', false);\n }\n }\n\n if (options.animate && !(currentIsMaster && app.width >= router.params.masterDetailBreakpoint)) {\n let transition = router.params.transition;\n if ($oldPage[0] && $oldPage[0].f7PageTransition) {\n transition = $oldPage[0].f7PageTransition;\n delete $oldPage[0].f7PageTransition;\n }\n if (options.transition) transition = options.transition;\n if (!transition && router.previousRoute && router.previousRoute.route) {\n transition = router.previousRoute.route.transition;\n }\n if (\n !transition &&\n router.previousRoute &&\n router.previousRoute.route &&\n router.previousRoute.route.options\n ) {\n transition = router.previousRoute.route.options.transition;\n }\n setPositionClasses();\n router.animate($oldPage, $newPage, $oldNavbarEl, $newNavbarEl, 'backward', transition, () => {\n afterAnimation();\n });\n } else {\n afterAnimation();\n }\n\n return router;\n}\nfunction loadBack(router, backParams, backOptions, ignorePageChange) {\n if (!router.allowPageChange && !ignorePageChange) return router;\n const params = backParams;\n const options = backOptions;\n const { url, content, el, pageName, component, componentUrl } = params;\n\n if (\n options.route.url &&\n router.url === options.route.url &&\n !(options.reloadCurrent || options.reloadPrevious) &&\n !router.params.allowDuplicateUrls\n ) {\n return false;\n }\n\n if (!options.route && url) {\n options.route = router.parseRouteUrl(url);\n }\n\n // Component Callbacks\n function resolve(pageEl, newOptions) {\n return backward(router, pageEl, extend(options, newOptions));\n }\n function reject() {\n router.allowPageChange = true;\n return router;\n }\n\n if (url || componentUrl || component) {\n router.allowPageChange = false;\n }\n\n // Proceed\n if (content) {\n backward(router, router.getPageEl(content), options);\n } else if (el) {\n // Load page from specified HTMLElement or by page name in pages container\n backward(router, router.getPageEl(el), options);\n } else if (pageName) {\n // Load page by page name in pages container\n backward(router, router.$el.children(`.page[data-name=\"${pageName}\"]`).eq(0), options);\n } else if (component || componentUrl) {\n // Load from component (F7/Vue/React/...)\n try {\n router.pageComponentLoader({\n routerEl: router.el,\n component,\n componentUrl,\n options,\n resolve,\n reject,\n });\n } catch (err) {\n router.allowPageChange = true;\n throw err;\n }\n } else if (url) {\n // Load using XHR\n if (router.xhrAbortController) {\n router.xhrAbortController.abort();\n router.xhrAbortController = false;\n }\n router\n .xhrRequest(url, options)\n .then((pageContent) => {\n backward(router, router.getPageEl(pageContent), options);\n })\n .catch(() => {\n router.allowPageChange = true;\n });\n }\n return router;\n}\nfunction back(...args) {\n const router = this;\n const device = getDevice();\n if (router.swipeBackActive) return router;\n let navigateUrl;\n let navigateOptions;\n let route;\n if (typeof args[0] === 'object') {\n navigateOptions = args[0] || {};\n } else {\n navigateUrl = args[0];\n navigateOptions = args[1] || {};\n }\n\n const { name, params, query } = navigateOptions;\n if (name) {\n navigateUrl = router.generateUrl({ name, params, query });\n if (navigateUrl) {\n return router.back(\n navigateUrl,\n extend({}, navigateOptions, {\n name: null,\n params: null,\n query: null,\n }),\n );\n }\n return router;\n }\n\n const app = router.app;\n appRouterCheck(router, 'back');\n\n let currentRouteIsModal = router.currentRoute.modal;\n let modalType;\n if (!currentRouteIsModal) {\n 'popup popover sheet loginScreen actions customModal panel'\n .split(' ')\n .forEach((modalLoadProp) => {\n if (router.currentRoute.route[modalLoadProp]) {\n currentRouteIsModal = true;\n modalType = modalLoadProp;\n }\n });\n }\n if (currentRouteIsModal && !navigateOptions.preload) {\n const modalToClose =\n router.currentRoute.modal || router.currentRoute.route.modalInstance || app[modalType].get();\n const previousUrl = router.history[router.history.length - 2];\n let previousRoute;\n // check if previous route is modal too\n if (modalToClose && modalToClose.$el) {\n const prevOpenedModals = modalToClose.$el.prevAll('.modal-in');\n if (prevOpenedModals.length && prevOpenedModals[0].f7Modal) {\n const modalEl = prevOpenedModals[0];\n // check if current router not inside of the modalEl\n if (!router.$el.parents(modalEl).length) {\n previousRoute = modalEl.f7Modal.route;\n }\n }\n }\n if (!previousRoute) {\n previousRoute = router.findMatchingRoute(previousUrl);\n }\n\n if (!previousRoute && previousUrl) {\n previousRoute = {\n url: previousUrl,\n path: previousUrl.split('?')[0],\n query: parseUrlQuery(previousUrl),\n route: {\n path: previousUrl.split('?')[0],\n url: previousUrl,\n },\n };\n }\n if (!navigateUrl || navigateUrl.replace(/[# ]/g, '').trim().length === 0) {\n if (!previousRoute || !modalToClose) {\n return router;\n }\n }\n const forceOtherUrl = navigateOptions.force && previousRoute && navigateUrl;\n if (previousRoute && modalToClose) {\n const isBrokenBrowserHistory = device.ie || device.edge || (device.firefox && !device.ios);\n const needHistoryBack =\n router.params.browserHistory && navigateOptions.browserHistory !== false;\n const currentRouteWithoutBrowserHistory =\n router.currentRoute &&\n router.currentRoute.route &&\n router.currentRoute.route.options &&\n router.currentRoute.route.options.browserHistory === false;\n if (needHistoryBack && !isBrokenBrowserHistory && !currentRouteWithoutBrowserHistory) {\n History.back();\n }\n router.currentRoute = previousRoute;\n router.history.pop();\n router.saveHistory();\n\n if (needHistoryBack && isBrokenBrowserHistory && !currentRouteWithoutBrowserHistory) {\n History.back();\n }\n\n router.modalRemove(modalToClose);\n if (forceOtherUrl) {\n router.navigate(navigateUrl, { reloadCurrent: true });\n }\n } else if (modalToClose) {\n router.modalRemove(modalToClose);\n if (navigateUrl) {\n router.navigate(navigateUrl, { reloadCurrent: true });\n }\n }\n return router;\n }\n let $previousPage = router.$el\n .children('.page-current')\n .prevAll('.page-previous:not(.page-master)')\n .eq(0);\n\n let skipMaster;\n if (router.params.masterDetailBreakpoint > 0) {\n const classes = [];\n router.$el.children('.page').each((pageEl) => {\n classes.push(pageEl.className);\n });\n\n const $previousMaster = router.$el.children('.page-current').prevAll('.page-master').eq(0);\n if ($previousMaster.length) {\n const expectedPreviousPageUrl = router.history[router.history.length - 2];\n const expectedPreviousPageRoute = router.findMatchingRoute(expectedPreviousPageUrl);\n if (\n expectedPreviousPageRoute &&\n $previousMaster[0].f7Page &&\n expectedPreviousPageRoute.route === $previousMaster[0].f7Page.route.route\n ) {\n $previousPage = $previousMaster;\n if (!navigateOptions.preload) {\n skipMaster = app.width >= router.params.masterDetailBreakpoint;\n }\n }\n }\n }\n\n if (!navigateOptions.force && $previousPage.length && !skipMaster) {\n if (\n router.params.browserHistory &&\n $previousPage[0].f7Page &&\n router.history[router.history.length - 2] !== $previousPage[0].f7Page.route.url\n ) {\n router.back(\n router.history[router.history.length - 2],\n extend(navigateOptions, { force: true }),\n );\n return router;\n }\n const previousPageRoute = $previousPage[0].f7Page.route;\n if (navigateOptions.preload && $previousPage.hasClass('stacked')) {\n loadBack(\n router,\n { el: $previousPage },\n extend(navigateOptions, {\n route: previousPageRoute,\n }),\n );\n return router;\n }\n processRouteQueue.call(\n router,\n previousPageRoute,\n router.currentRoute,\n () => {\n loadBack(\n router,\n { el: $previousPage },\n extend(navigateOptions, {\n route: previousPageRoute,\n }),\n );\n },\n () => {},\n 'backward',\n );\n\n return router;\n }\n\n // Navigate URL\n if (navigateUrl === '#') {\n navigateUrl = undefined;\n }\n if (navigateUrl && navigateUrl[0] !== '/' && navigateUrl.indexOf('#') !== 0) {\n navigateUrl = ((router.path || '/') + navigateUrl).replace('//', '/');\n }\n if (!navigateUrl && router.history.length > 1) {\n navigateUrl = router.history[router.history.length - 2];\n }\n if (skipMaster && !navigateOptions.force && router.history[router.history.length - 3]) {\n return router.back(\n router.history[router.history.length - 3],\n extend({}, navigateOptions || {}, {\n force: true,\n animate: false,\n }),\n );\n }\n if (skipMaster && !navigateOptions.force) {\n return router;\n }\n\n // Find route to load\n route = router.findMatchingRoute(navigateUrl);\n if (!route) {\n if (navigateUrl) {\n route = {\n url: navigateUrl,\n path: navigateUrl.split('?')[0],\n query: parseUrlQuery(navigateUrl),\n route: {\n path: navigateUrl.split('?')[0],\n url: navigateUrl,\n },\n };\n }\n }\n if (!route) {\n return router;\n }\n\n if (route.route.redirect) {\n return redirect.call(router, 'backward', route, navigateOptions);\n }\n\n const options = {};\n if (route.route.options) {\n extend(options, route.route.options, navigateOptions);\n } else {\n extend(options, navigateOptions);\n }\n options.route = route;\n\n let backForceLoaded;\n if (options.force && router.params.stackPages) {\n router.$el.children('.page-previous.stacked').each((pageEl) => {\n if (pageEl.f7Page && pageEl.f7Page.route && pageEl.f7Page.route.url === route.url) {\n backForceLoaded = true;\n loadBack(router, { el: pageEl }, options);\n }\n });\n if (backForceLoaded) {\n return router;\n }\n }\n function resolve() {\n let routerLoaded = false;\n if (route.route.keepAlive && route.route.keepAliveData) {\n loadBack(router, { el: route.route.keepAliveData.pageEl }, options);\n routerLoaded = true;\n }\n 'url content component pageName el componentUrl'.split(' ').forEach((pageLoadProp) => {\n if (route.route[pageLoadProp] && !routerLoaded) {\n routerLoaded = true;\n loadBack(router, { [pageLoadProp]: route.route[pageLoadProp] }, options);\n }\n });\n if (routerLoaded) return;\n // Async\n function asyncResolve(resolveParams, resolveOptions) {\n router.allowPageChange = false;\n loadBack(router, resolveParams, extend(options, resolveOptions), true);\n }\n function asyncReject() {\n router.allowPageChange = true;\n }\n if (route.route.async) {\n router.allowPageChange = false;\n route.route.async.call(router, {\n router,\n to: route,\n from: router.currentRoute,\n resolve: asyncResolve,\n reject: asyncReject,\n direction: 'backward',\n app,\n });\n }\n if (route.route.asyncComponent) {\n asyncComponent(router, route.route.asyncComponent, asyncResolve, asyncReject);\n }\n }\n function reject() {\n router.allowPageChange = true;\n }\n\n if (options.preload) {\n resolve();\n } else {\n processRouteQueue.call(\n router,\n route,\n router.currentRoute,\n () => {\n if (route.route.modules) {\n app\n .loadModules(\n Array.isArray(route.route.modules) ? route.route.modules : [route.route.modules],\n )\n .then(() => {\n resolve();\n })\n .catch(() => {\n reject();\n });\n } else {\n resolve();\n }\n },\n () => {\n reject();\n },\n 'backward',\n );\n }\n\n // Return Router\n return router;\n}\nexport { back };\n","import { getWindow, getDocument } from 'ssr-window';\nimport { pathToRegexp, compile } from 'path-to-regexp';\nimport $ from '../../shared/dom7.js';\nimport Framework7Class from '../../shared/class.js';\nimport {\n extend,\n nextFrame,\n parseUrlQuery,\n serializeObject,\n now,\n eventNameToColonCase,\n} from '../../shared/utils.js';\nimport History from '../../shared/history.js';\nimport SwipeBack from './swipe-back.js';\n\nimport { refreshPage, navigate } from './navigate.js';\nimport { tabLoad, tabRemove } from './tab.js';\nimport { modalLoad, modalRemove } from './modal.js';\nimport { back } from './back.js';\nimport { clearPreviousHistory } from './clear-previous-history.js';\nimport appRouterCheck from './app-router-check.js';\n\nclass Router extends Framework7Class {\n constructor(app, view) {\n super({}, [typeof view === 'undefined' ? app : view]);\n const router = this;\n\n // Is App Router\n router.isAppRouter = typeof view === 'undefined';\n\n if (router.isAppRouter) {\n // App Router\n extend(false, router, {\n app,\n params: app.params.view,\n routes: app.routes || [],\n cache: app.cache,\n });\n } else {\n // View Router\n extend(false, router, {\n app,\n view,\n viewId: view.id,\n id: view.params.routerId,\n params: view.params,\n routes: view.routes,\n history: view.history,\n scrollHistory: view.scrollHistory,\n cache: app.cache,\n dynamicNavbar: app.theme === 'ios' && view.params.iosDynamicNavbar,\n initialPages: [],\n initialNavbars: [],\n });\n }\n\n // Install Modules\n router.useModules();\n\n // AllowPageChage\n router.allowPageChange = true;\n\n // Current Route\n let currentRoute = {};\n let previousRoute = {};\n Object.defineProperty(router, 'currentRoute', {\n enumerable: true,\n configurable: true,\n set(newRoute = {}) {\n previousRoute = extend({}, currentRoute);\n currentRoute = newRoute;\n if (!currentRoute) return;\n router.url = currentRoute.url;\n router.emit('routeChange', newRoute, previousRoute, router);\n },\n get() {\n return currentRoute;\n },\n });\n Object.defineProperty(router, 'previousRoute', {\n enumerable: true,\n configurable: true,\n get() {\n return previousRoute;\n },\n set(newRoute) {\n previousRoute = newRoute;\n },\n });\n\n return router;\n }\n\n mount() {\n const router = this;\n const view = router.view;\n const document = getDocument();\n\n extend(false, router, {\n tempDom: document.createElement('div'),\n $el: view.$el,\n el: view.el,\n $navbarsEl: view.$navbarsEl,\n navbarsEl: view.navbarsEl,\n });\n\n router.emit('local::mount routerMount', router);\n }\n\n animatableNavElements($newNavbarEl, $oldNavbarEl, toLarge, fromLarge, direction) {\n const router = this;\n const dynamicNavbar = router.dynamicNavbar;\n const animateIcon = router.params.iosAnimateNavbarBackIcon;\n\n let newNavEls;\n let oldNavEls;\n function animatableNavEl($el, $navbarInner) {\n const isSliding = $el.hasClass('sliding') || $navbarInner.hasClass('sliding');\n const isSubnavbar = $el.hasClass('subnavbar');\n const needsOpacityTransition = isSliding ? !isSubnavbar : true;\n const $iconEl = $el.find('.back .icon');\n let isIconLabel;\n if (\n isSliding &&\n animateIcon &&\n $el.hasClass('left') &&\n $iconEl.length > 0 &&\n $iconEl.next('span').length\n ) {\n $el = $iconEl.next('span'); // eslint-disable-line\n isIconLabel = true;\n }\n return {\n $el,\n isIconLabel,\n leftOffset: $el[0].f7NavbarLeftOffset,\n rightOffset: $el[0].f7NavbarRightOffset,\n isSliding,\n isSubnavbar,\n needsOpacityTransition,\n };\n }\n if (dynamicNavbar) {\n newNavEls = [];\n oldNavEls = [];\n $newNavbarEl\n .children('.navbar-inner')\n .children('.left, .right, .title, .subnavbar')\n .each((navEl) => {\n const $navEl = $(navEl);\n if ($navEl.hasClass('left') && fromLarge && direction === 'forward') return;\n if ($navEl.hasClass('title') && toLarge) return;\n newNavEls.push(animatableNavEl($navEl, $newNavbarEl.children('.navbar-inner')));\n });\n if (\n !(\n $oldNavbarEl.hasClass('navbar-master') &&\n router.params.masterDetailBreakpoint > 0 &&\n router.app.width >= router.params.masterDetailBreakpoint\n )\n ) {\n $oldNavbarEl\n .children('.navbar-inner')\n .children('.left, .right, .title, .subnavbar')\n .each((navEl) => {\n const $navEl = $(navEl);\n if ($navEl.hasClass('left') && toLarge && !fromLarge && direction === 'forward') return;\n if ($navEl.hasClass('left') && toLarge && direction === 'backward') return;\n if ($navEl.hasClass('title') && fromLarge) {\n return;\n }\n oldNavEls.push(animatableNavEl($navEl, $oldNavbarEl.children('.navbar-inner')));\n });\n }\n [oldNavEls, newNavEls].forEach((navEls) => {\n navEls.forEach((navEl) => {\n const n = navEl;\n const { isSliding, $el } = navEl;\n const otherEls = navEls === oldNavEls ? newNavEls : oldNavEls;\n if (!(isSliding && $el.hasClass('title') && otherEls)) return;\n otherEls.forEach((otherNavEl) => {\n if (otherNavEl.isIconLabel) {\n const iconTextEl = otherNavEl.$el[0];\n n.leftOffset += iconTextEl ? iconTextEl.offsetLeft || 0 : 0;\n }\n });\n });\n });\n }\n\n return { newNavEls, oldNavEls };\n }\n\n animate($oldPageEl, $newPageEl, $oldNavbarEl, $newNavbarEl, direction, transition, callback) {\n const router = this;\n if (router.params.animateCustom) {\n router.params.animateCustom.apply(router, [\n $oldPageEl,\n $newPageEl,\n $oldNavbarEl,\n $newNavbarEl,\n direction,\n callback,\n ]);\n return;\n }\n const dynamicNavbar = router.dynamicNavbar;\n const ios = router.app.theme === 'ios';\n if (transition) {\n const routerCustomTransitionClass = `router-transition-custom router-transition-${transition}-${direction}`;\n // Animate\n const onCustomTransitionDone = () => {\n router.$el.removeClass(routerCustomTransitionClass);\n if (dynamicNavbar && router.$navbarsEl.length) {\n if ($newNavbarEl) {\n router.$navbarsEl.prepend($newNavbarEl);\n }\n if ($oldNavbarEl) {\n router.$navbarsEl.prepend($oldNavbarEl);\n }\n }\n if (callback) callback();\n };\n\n (direction === 'forward' ? $newPageEl : $oldPageEl).animationEnd(onCustomTransitionDone);\n if (dynamicNavbar) {\n if ($newNavbarEl && $newPageEl) {\n router.setNavbarPosition($newNavbarEl, '');\n $newNavbarEl.removeClass('navbar-next navbar-previous navbar-current');\n $newPageEl.prepend($newNavbarEl);\n }\n if ($oldNavbarEl && $oldPageEl) {\n router.setNavbarPosition($oldNavbarEl, '');\n $oldNavbarEl.removeClass('navbar-next navbar-previous navbar-current');\n $oldPageEl.prepend($oldNavbarEl);\n }\n }\n\n router.$el.addClass(routerCustomTransitionClass);\n return;\n }\n\n // Router Animation class\n const routerTransitionClass = `router-transition-${direction} router-transition`;\n\n let newNavEls;\n let oldNavEls;\n\n let fromLarge;\n let toLarge;\n let toDifferent;\n\n let oldIsLarge;\n let newIsLarge;\n\n if (ios && dynamicNavbar) {\n const betweenMasterAndDetail =\n router.params.masterDetailBreakpoint > 0 &&\n router.app.width >= router.params.masterDetailBreakpoint &&\n (($oldNavbarEl.hasClass('navbar-master') &&\n $newNavbarEl.hasClass('navbar-master-detail')) ||\n ($oldNavbarEl.hasClass('navbar-master-detail') &&\n $newNavbarEl.hasClass('navbar-master')));\n if (!betweenMasterAndDetail) {\n oldIsLarge = $oldNavbarEl && $oldNavbarEl.hasClass('navbar-large');\n newIsLarge = $newNavbarEl && $newNavbarEl.hasClass('navbar-large');\n fromLarge = oldIsLarge && !$oldNavbarEl.hasClass('navbar-large-collapsed');\n toLarge = newIsLarge && !$newNavbarEl.hasClass('navbar-large-collapsed');\n toDifferent = (fromLarge && !toLarge) || (toLarge && !fromLarge);\n }\n const navEls = router.animatableNavElements(\n $newNavbarEl,\n $oldNavbarEl,\n toLarge,\n fromLarge,\n direction,\n );\n newNavEls = navEls.newNavEls;\n oldNavEls = navEls.oldNavEls;\n }\n\n function animateNavbars(progress) {\n if (!(ios && dynamicNavbar)) return;\n if (progress === 1) {\n if (toLarge) {\n $newNavbarEl.addClass('router-navbar-transition-to-large');\n $oldNavbarEl.addClass('router-navbar-transition-to-large');\n }\n if (fromLarge) {\n $newNavbarEl.addClass('router-navbar-transition-from-large');\n $oldNavbarEl.addClass('router-navbar-transition-from-large');\n }\n }\n newNavEls.forEach((navEl) => {\n const $el = navEl.$el;\n const offset = direction === 'forward' ? navEl.rightOffset : navEl.leftOffset;\n if (navEl.isSliding) {\n if (navEl.isSubnavbar && newIsLarge) {\n // prettier-ignore\n $el[0].style.setProperty(\n 'transform',\n `translate3d(${offset * (1 - progress)}px, calc(-1 * var(--f7-navbar-large-collapse-progress) * var(--f7-navbar-large-title-height)), 0)`,\n 'important',\n );\n } else {\n $el.transform(`translate3d(${offset * (1 - progress)}px,0,0)`);\n }\n }\n });\n oldNavEls.forEach((navEl) => {\n const $el = navEl.$el;\n const offset = direction === 'forward' ? navEl.leftOffset : navEl.rightOffset;\n if (navEl.isSliding) {\n if (navEl.isSubnavbar && oldIsLarge) {\n $el.transform(\n `translate3d(${\n offset * progress\n }px, calc(-1 * var(--f7-navbar-large-collapse-progress) * var(--f7-navbar-large-title-height)), 0)`,\n );\n } else {\n $el.transform(`translate3d(${offset * progress}px,0,0)`);\n }\n }\n });\n }\n\n // AnimationEnd Callback\n function onDone() {\n if (router.dynamicNavbar) {\n if ($newNavbarEl) {\n $newNavbarEl.removeClass(\n 'router-navbar-transition-to-large router-navbar-transition-from-large',\n );\n $newNavbarEl.addClass('navbar-no-title-large-transition');\n nextFrame(() => {\n $newNavbarEl.removeClass('navbar-no-title-large-transition');\n });\n }\n if ($oldNavbarEl) {\n $oldNavbarEl.removeClass(\n 'router-navbar-transition-to-large router-navbar-transition-from-large',\n );\n }\n if (\n $newNavbarEl.hasClass('sliding') ||\n $newNavbarEl.children('.navbar-inner.sliding').length\n ) {\n $newNavbarEl.find('.title, .left, .right, .left .icon, .subnavbar').transform('');\n } else {\n $newNavbarEl.find('.sliding').transform('');\n }\n if (\n $oldNavbarEl.hasClass('sliding') ||\n $oldNavbarEl.children('.navbar-inner.sliding').length\n ) {\n $oldNavbarEl.find('.title, .left, .right, .left .icon, .subnavbar').transform('');\n } else {\n $oldNavbarEl.find('.sliding').transform('');\n }\n }\n router.$el.removeClass(routerTransitionClass);\n if (callback) callback();\n }\n\n (direction === 'forward' ? $newPageEl : $oldPageEl).animationEnd(() => {\n onDone();\n });\n\n // Animate\n if (dynamicNavbar) {\n // Prepare Navbars\n animateNavbars(0);\n nextFrame(() => {\n // Add class, start animation\n router.$el.addClass(routerTransitionClass);\n if (toDifferent) {\n // eslint-disable-next-line\n router.el._clientLeft = router.el.clientLeft;\n }\n animateNavbars(1);\n });\n } else {\n // Add class, start animation\n router.$el.addClass(routerTransitionClass);\n }\n }\n\n removeModal(modalEl) {\n const router = this;\n router.removeEl(modalEl);\n }\n // eslint-disable-next-line\n removeTabContent(tabEl) {\n const $tabEl = $(tabEl);\n $tabEl.html('');\n }\n\n removeNavbar(el) {\n const router = this;\n router.removeEl(el);\n }\n\n removePage(el) {\n const $el = $(el);\n const f7Page = $el && $el[0] && $el[0].f7Page;\n const router = this;\n if (f7Page && f7Page.route && f7Page.route.route && f7Page.route.route.keepAlive) {\n $el.remove();\n return;\n }\n router.removeEl(el);\n }\n\n removeEl(el) {\n if (!el) return;\n const router = this;\n const $el = $(el);\n if ($el.length === 0) return;\n $el.find('.tab').each((tabEl) => {\n $(tabEl)\n .children()\n .each((tabChild) => {\n if (tabChild.f7Component) {\n $(tabChild).trigger('tab:beforeremove');\n tabChild.f7Component.destroy();\n }\n });\n });\n if ($el[0].f7Component && $el[0].f7Component.destroy) {\n $el[0].f7Component.destroy();\n }\n if (!router.params.removeElements) {\n return;\n }\n if (router.params.removeElementsWithTimeout) {\n setTimeout(() => {\n $el.remove();\n }, router.params.removeElementsTimeout);\n } else {\n $el.remove();\n }\n }\n\n getPageEl(content) {\n const router = this;\n if (typeof content === 'string') {\n router.tempDom.innerHTML = content;\n } else {\n if ($(content).hasClass('page')) {\n return content;\n }\n router.tempDom.innerHTML = '';\n $(router.tempDom).append(content);\n }\n\n return router.findElement('.page', router.tempDom);\n }\n\n findElement(stringSelector, container, notStacked) {\n const router = this;\n const view = router.view;\n const app = router.app;\n\n // Modals Selector\n const modalsSelector =\n '.popup, .dialog, .popover, .actions-modal, .sheet-modal, .login-screen, .page';\n\n const $container = $(container);\n let selector = stringSelector;\n if (notStacked) selector += ':not(.stacked)';\n\n let found = $container\n .find(selector)\n .filter((el) => $(el).parents(modalsSelector).length === 0);\n\n if (found.length > 1) {\n if (typeof view.selector === 'string') {\n // Search in related view\n found = $container.find(`${view.selector} ${selector}`);\n }\n if (found.length > 1) {\n // Search in main view\n found = $container.find(`.${app.params.viewMainClass} ${selector}`);\n }\n }\n if (found.length === 1) return found;\n\n // Try to find not stacked\n if (!notStacked) found = router.findElement(selector, $container, true);\n if (found && found.length === 1) return found;\n if (found && found.length > 1) return $(found[0]);\n return undefined;\n }\n\n flattenRoutes(routes = this.routes) {\n const router = this;\n let flattenedRoutes = [];\n routes.forEach((route) => {\n let hasTabRoutes = false;\n if ('tabs' in route && route.tabs) {\n const mergedPathsRoutes = route.tabs.map((tabRoute) => {\n const tRoute = extend({}, route, {\n path: `${route.path}/${tabRoute.path}`.replace('///', '/').replace('//', '/'),\n parentPath: route.path,\n tab: tabRoute,\n });\n delete tRoute.tabs;\n delete tRoute.routes;\n return tRoute;\n });\n hasTabRoutes = true;\n flattenedRoutes = flattenedRoutes.concat(router.flattenRoutes(mergedPathsRoutes));\n }\n if ('detailRoutes' in route) {\n const mergedPathsRoutes = route.detailRoutes.map((detailRoute) => {\n const dRoute = extend({}, detailRoute);\n dRoute.masterRoute = route;\n dRoute.masterRoutePath = route.path;\n return dRoute;\n });\n flattenedRoutes = flattenedRoutes.concat(route, router.flattenRoutes(mergedPathsRoutes));\n }\n if ('routes' in route) {\n const mergedPathsRoutes = route.routes.map((childRoute) => {\n const cRoute = extend({}, childRoute);\n cRoute.path = `${route.path}/${cRoute.path}`.replace('///', '/').replace('//', '/');\n return cRoute;\n });\n if (hasTabRoutes) {\n flattenedRoutes = flattenedRoutes.concat(router.flattenRoutes(mergedPathsRoutes));\n } else {\n flattenedRoutes = flattenedRoutes.concat(route, router.flattenRoutes(mergedPathsRoutes));\n }\n }\n if (!('routes' in route) && !('tabs' in route && route.tabs) && !('detailRoutes' in route)) {\n flattenedRoutes.push(route);\n }\n });\n return flattenedRoutes;\n }\n\n // eslint-disable-next-line\n parseRouteUrl(url) {\n if (!url) return {};\n const query = parseUrlQuery(url);\n const hash = url.split('#')[1];\n const params = {};\n const path = url.split('#')[0].split('?')[0];\n return {\n query,\n hash,\n params,\n url,\n path,\n };\n }\n\n generateUrl(parameters = {}) {\n if (typeof parameters === 'string') {\n return parameters;\n }\n const { name, path, params, query } = parameters;\n if (!name && !path) {\n throw new Error('Framework7: \"name\" or \"path\" parameter is required');\n }\n const router = this;\n const route = name ? router.findRouteByKey('name', name) : router.findRouteByKey('path', path);\n\n if (!route) {\n if (name) {\n throw new Error(`Framework7: route with name \"${name}\" not found`);\n } else {\n throw new Error(`Framework7: route with path \"${path}\" not found`);\n }\n }\n const url = router.constructRouteUrl(route, { params, query });\n if (!url) {\n throw new Error(`Framework7: can't construct URL for route with name \"${name}\"`);\n }\n return url;\n }\n\n // eslint-disable-next-line\n constructRouteUrl(route, { params, query } = {}) {\n const { path } = route;\n const toUrl = compile(path);\n let url;\n try {\n url = toUrl(params || {});\n } catch (error) {\n throw new Error(\n `Framework7: error constructing route URL from passed params:\\nRoute: ${path}\\n${error.toString()}`,\n );\n }\n\n if (query) {\n if (typeof query === 'string') url += `?${query}`;\n else if (Object.keys(query).length) url += `?${serializeObject(query)}`;\n }\n\n return url;\n }\n\n findTabRouteUrl(tabEl) {\n const router = this;\n const $tabEl = $(tabEl);\n const parentPath = router.currentRoute.route.parentPath;\n const tabId = $tabEl.attr('id');\n const flattenedRoutes = router.flattenRoutes(router.routes);\n let foundTabRouteUrl;\n flattenedRoutes.forEach((route) => {\n if (route.parentPath === parentPath && route.tab && route.tab.id === tabId) {\n if (router.currentRoute.params && Object.keys(router.currentRoute.params).length > 0) {\n foundTabRouteUrl = router.constructRouteUrl(route, {\n params: router.currentRoute.params,\n query: router.currentRoute.query,\n });\n } else {\n foundTabRouteUrl = route.path;\n }\n }\n });\n return foundTabRouteUrl;\n }\n\n findRouteByKey(key, value) {\n const router = this;\n const routes = router.routes;\n const flattenedRoutes = router.flattenRoutes(routes);\n let matchingRoute;\n\n flattenedRoutes.forEach((route) => {\n if (matchingRoute) return;\n if (route[key] === value) {\n matchingRoute = route;\n }\n });\n return matchingRoute;\n }\n\n findMatchingRoute(url) {\n if (!url) return undefined;\n const router = this;\n const routes = router.routes;\n const flattenedRoutes = router.flattenRoutes(routes);\n const { path, query, hash, params } = router.parseRouteUrl(url);\n let matchingRoute;\n flattenedRoutes.forEach((route) => {\n if (matchingRoute) return;\n const keys = [];\n\n const pathsToMatch = [route.path];\n if (route.alias) {\n if (typeof route.alias === 'string') pathsToMatch.push(route.alias);\n else if (Array.isArray(route.alias)) {\n route.alias.forEach((aliasPath) => {\n pathsToMatch.push(aliasPath);\n });\n }\n }\n\n let matched;\n pathsToMatch.forEach((pathToMatch) => {\n if (matched) return;\n matched = pathToRegexp(pathToMatch, keys).exec(path);\n });\n\n if (matched) {\n keys.forEach((keyObj, index) => {\n if (typeof keyObj.name === 'number') return;\n const paramValue = matched[index + 1];\n if (typeof paramValue === 'undefined' || paramValue === null) {\n params[keyObj.name] = paramValue;\n } else {\n params[keyObj.name] = decodeURIComponent(paramValue);\n }\n });\n\n let parentPath;\n if (route.parentPath) {\n parentPath = path\n .split('/')\n .slice(0, route.parentPath.split('/').length - 1)\n .join('/');\n }\n\n matchingRoute = {\n query,\n hash,\n params,\n url,\n path,\n parentPath,\n route,\n name: route.name,\n };\n }\n });\n return matchingRoute;\n }\n\n // eslint-disable-next-line\n replaceRequestUrlParams(url = '', options = {}) {\n let compiledUrl = url;\n if (\n typeof compiledUrl === 'string' &&\n compiledUrl.indexOf('{{') >= 0 &&\n options &&\n options.route &&\n options.route.params &&\n Object.keys(options.route.params).length\n ) {\n Object.keys(options.route.params).forEach((paramName) => {\n const regExp = new RegExp(`{{${paramName}}}`, 'g');\n compiledUrl = compiledUrl.replace(regExp, options.route.params[paramName] || '');\n });\n }\n return compiledUrl;\n }\n\n removeFromXhrCache(url) {\n const router = this;\n const xhrCache = router.cache.xhr;\n let index = false;\n for (let i = 0; i < xhrCache.length; i += 1) {\n if (xhrCache[i].url === url) index = i;\n }\n if (index !== false) xhrCache.splice(index, 1);\n }\n\n xhrRequest(requestUrl, options) {\n const router = this;\n const params = router.params;\n const { ignoreCache } = options;\n let url = requestUrl;\n\n let hasQuery = url.indexOf('?') >= 0;\n if (\n params.passRouteQueryToRequest &&\n options &&\n options.route &&\n options.route.query &&\n Object.keys(options.route.query).length\n ) {\n url += `${hasQuery ? '&' : '?'}${serializeObject(options.route.query)}`;\n hasQuery = true;\n }\n\n if (\n params.passRouteParamsToRequest &&\n options &&\n options.route &&\n options.route.params &&\n Object.keys(options.route.params).length\n ) {\n url += `${hasQuery ? '&' : '?'}${serializeObject(options.route.params)}`;\n hasQuery = true;\n }\n\n if (url.indexOf('{{') >= 0) {\n url = router.replaceRequestUrlParams(url, options);\n }\n // should we ignore get params or not\n if (params.xhrCacheIgnoreGetParameters && url.indexOf('?') >= 0) {\n url = url.split('?')[0];\n }\n return new Promise((resolve, reject) => {\n if (\n params.xhrCache &&\n !ignoreCache &&\n url.indexOf('nocache') < 0 &&\n params.xhrCacheIgnore.indexOf(url) < 0\n ) {\n for (let i = 0; i < router.cache.xhr.length; i += 1) {\n const cachedUrl = router.cache.xhr[i];\n if (cachedUrl.url === url) {\n // Check expiration\n if (now() - cachedUrl.time < params.xhrCacheDuration) {\n // Load from cache\n resolve(cachedUrl.content);\n return;\n }\n }\n }\n }\n router.xhrAbortController = router.app.request.abortController();\n router.app.request({\n abortController: router.xhrAbortController,\n url,\n method: 'GET',\n beforeSend(xhr) {\n router.emit('routerAjaxStart', xhr, options);\n },\n complete(xhr, status) {\n router.emit('routerAjaxComplete', xhr);\n if (\n (status !== 'error' && status !== 'timeout' && xhr.status >= 200 && xhr.status < 300) ||\n xhr.status === 0\n ) {\n if (params.xhrCache && xhr.responseText !== '') {\n router.removeFromXhrCache(url);\n router.cache.xhr.push({\n url,\n time: now(),\n content: xhr.responseText,\n });\n }\n router.emit('routerAjaxSuccess', xhr, options);\n resolve(xhr.responseText);\n } else {\n router.emit('routerAjaxError', xhr, options);\n reject(xhr);\n }\n },\n error(xhr) {\n router.emit('routerAjaxError', xhr, options);\n reject(xhr);\n },\n });\n });\n }\n\n setNavbarPosition($el, position, ariaHidden) {\n const router = this;\n $el.removeClass('navbar-previous navbar-current navbar-next');\n if (position) {\n $el.addClass(`navbar-${position}`);\n }\n\n if (ariaHidden === false) {\n $el.removeAttr('aria-hidden');\n } else if (ariaHidden === true) {\n $el.attr('aria-hidden', 'true');\n }\n $el.trigger('navbar:position', { position });\n router.emit('navbarPosition', $el[0], position);\n }\n\n setPagePosition($el, position, ariaHidden) {\n const router = this;\n $el.removeClass('page-previous page-current page-next');\n $el.addClass(`page-${position}`);\n if (ariaHidden === false) {\n $el.removeAttr('aria-hidden');\n } else if (ariaHidden === true) {\n $el.attr('aria-hidden', 'true');\n }\n $el.trigger('page:position', { position });\n router.emit('pagePosition', $el[0], position);\n }\n\n // Remove theme elements\n removeThemeElements(el) {\n const router = this;\n const theme = router.app.theme;\n let toRemove;\n if (theme === 'ios') {\n toRemove = '.md-only, .aurora-only, .if-md, .if-aurora, .if-not-ios, .not-ios';\n } else if (theme === 'md') {\n toRemove = '.ios-only, .aurora-only, .if-ios, .if-aurora, .if-not-md, .not-md';\n } else if (theme === 'aurora') {\n toRemove = '.ios-only, .md-only, .if-ios, .if-md, .if-not-aurora, .not-aurora';\n }\n $(el).find(toRemove).remove();\n }\n\n getPageData(pageEl, navbarEl, from, to, route = {}, pageFromEl) {\n const router = this;\n const $pageEl = $(pageEl).eq(0);\n const $navbarEl = $(navbarEl).eq(0);\n const currentPage = $pageEl[0].f7Page || {};\n let direction;\n let pageFrom;\n if ((from === 'next' && to === 'current') || (from === 'current' && to === 'previous'))\n direction = 'forward';\n if ((from === 'current' && to === 'next') || (from === 'previous' && to === 'current'))\n direction = 'backward';\n if (currentPage && !currentPage.fromPage) {\n const $pageFromEl = $(pageFromEl);\n if ($pageFromEl.length) {\n pageFrom = $pageFromEl[0].f7Page;\n }\n }\n pageFrom = currentPage.pageFrom || pageFrom;\n if (pageFrom && pageFrom.pageFrom) {\n pageFrom.pageFrom = null;\n }\n const page = {\n app: router.app,\n view: router.view,\n router,\n $el: $pageEl,\n el: $pageEl[0],\n $pageEl,\n pageEl: $pageEl[0],\n $navbarEl,\n navbarEl: $navbarEl[0],\n name: $pageEl.attr('data-name'),\n position: from,\n from,\n to,\n direction,\n route: currentPage.route ? currentPage.route : route,\n pageFrom,\n };\n\n $pageEl[0].f7Page = page;\n return page;\n }\n\n // Callbacks\n pageCallback(callback, pageEl, navbarEl, from, to, options = {}, pageFromEl) {\n if (!pageEl) return;\n const router = this;\n const $pageEl = $(pageEl);\n if (!$pageEl.length) return;\n const $navbarEl = $(navbarEl);\n const { route } = options;\n const restoreScrollTopOnBack =\n router.params.restoreScrollTopOnBack &&\n !(\n router.params.masterDetailBreakpoint > 0 &&\n $pageEl.hasClass('page-master') &&\n router.app.width >= router.params.masterDetailBreakpoint\n );\n const keepAlive =\n $pageEl[0].f7Page &&\n $pageEl[0].f7Page.route &&\n $pageEl[0].f7Page.route.route &&\n $pageEl[0].f7Page.route.route.keepAlive;\n\n if (callback === 'beforeRemove' && keepAlive) {\n callback = 'beforeUnmount'; // eslint-disable-line\n }\n\n const camelName = `page${callback[0].toUpperCase() + callback.slice(1, callback.length)}`;\n const colonName = `page:${callback.toLowerCase()}`;\n\n let page = {};\n if (callback === 'beforeRemove' && $pageEl[0].f7Page) {\n page = extend($pageEl[0].f7Page, { from, to, position: from });\n } else {\n page = router.getPageData($pageEl[0], $navbarEl[0], from, to, route, pageFromEl);\n }\n page.swipeBack = !!options.swipeBack;\n\n const { on = {}, once = {} } = options.route ? options.route.route : {};\n if (options.on) {\n extend(on, options.on);\n }\n if (options.once) {\n extend(once, options.once);\n }\n\n function attachEvents() {\n if ($pageEl[0].f7RouteEventsAttached) return;\n $pageEl[0].f7RouteEventsAttached = true;\n if (on && Object.keys(on).length > 0) {\n $pageEl[0].f7RouteEventsOn = on;\n Object.keys(on).forEach((eventName) => {\n on[eventName] = on[eventName].bind(router);\n $pageEl.on(eventNameToColonCase(eventName), on[eventName]);\n });\n }\n if (once && Object.keys(once).length > 0) {\n $pageEl[0].f7RouteEventsOnce = once;\n Object.keys(once).forEach((eventName) => {\n once[eventName] = once[eventName].bind(router);\n $pageEl.once(eventNameToColonCase(eventName), once[eventName]);\n });\n }\n }\n\n function detachEvents() {\n if (!$pageEl[0].f7RouteEventsAttached) return;\n if ($pageEl[0].f7RouteEventsOn) {\n Object.keys($pageEl[0].f7RouteEventsOn).forEach((eventName) => {\n $pageEl.off(eventNameToColonCase(eventName), $pageEl[0].f7RouteEventsOn[eventName]);\n });\n }\n if ($pageEl[0].f7RouteEventsOnce) {\n Object.keys($pageEl[0].f7RouteEventsOnce).forEach((eventName) => {\n $pageEl.off(eventNameToColonCase(eventName), $pageEl[0].f7RouteEventsOnce[eventName]);\n });\n }\n $pageEl[0].f7RouteEventsAttached = null;\n $pageEl[0].f7RouteEventsOn = null;\n $pageEl[0].f7RouteEventsOnce = null;\n delete $pageEl[0].f7RouteEventsAttached;\n delete $pageEl[0].f7RouteEventsOn;\n delete $pageEl[0].f7RouteEventsOnce;\n }\n\n if (callback === 'mounted') {\n attachEvents();\n }\n if (callback === 'init') {\n if (\n restoreScrollTopOnBack &&\n (from === 'previous' || !from) &&\n to === 'current' &&\n router.scrollHistory[page.route.url] &&\n !$pageEl.hasClass('no-restore-scroll')\n ) {\n let $pageContent = $pageEl.find('.page-content');\n if ($pageContent.length > 0) {\n // eslint-disable-next-line\n $pageContent = $pageContent.filter((pageContentEl) => {\n return (\n $(pageContentEl).parents('.tab:not(.tab-active)').length === 0 &&\n !$(pageContentEl).is('.tab:not(.tab-active)')\n );\n });\n }\n $pageContent.scrollTop(router.scrollHistory[page.route.url]);\n }\n attachEvents();\n if ($pageEl[0].f7PageInitialized) {\n $pageEl.trigger('page:reinit', page);\n router.emit('pageReinit', page);\n return;\n }\n $pageEl[0].f7PageInitialized = true;\n }\n if (\n restoreScrollTopOnBack &&\n callback === 'beforeOut' &&\n from === 'current' &&\n to === 'previous'\n ) {\n // Save scroll position\n let $pageContent = $pageEl.find('.page-content');\n if ($pageContent.length > 0) {\n // eslint-disable-next-line\n $pageContent = $pageContent.filter((pageContentEl) => {\n return (\n $(pageContentEl).parents('.tab:not(.tab-active)').length === 0 &&\n !$(pageContentEl).is('.tab:not(.tab-active)')\n );\n });\n }\n router.scrollHistory[page.route.url] = $pageContent.scrollTop();\n }\n if (restoreScrollTopOnBack && callback === 'beforeOut' && from === 'current' && to === 'next') {\n // Delete scroll position\n delete router.scrollHistory[page.route.url];\n }\n\n $pageEl.trigger(colonName, page);\n router.emit(camelName, page);\n\n if (callback === 'beforeRemove' || callback === 'beforeUnmount') {\n detachEvents();\n if (!keepAlive) {\n if ($pageEl[0].f7Page && $pageEl[0].f7Page.navbarEl) {\n delete $pageEl[0].f7Page.navbarEl.f7Page;\n }\n $pageEl[0].f7Page = null;\n }\n }\n }\n\n saveHistory() {\n const router = this;\n const window = getWindow();\n router.view.history = router.history;\n if (\n router.params.browserHistory &&\n router.params.browserHistoryStoreHistory &&\n window.localStorage\n ) {\n window.localStorage[`f7router-${router.view.id}-history`] = JSON.stringify(router.history);\n }\n }\n\n restoreHistory() {\n const router = this;\n const window = getWindow();\n if (\n router.params.browserHistory &&\n router.params.browserHistoryStoreHistory &&\n window.localStorage &&\n window.localStorage[`f7router-${router.view.id}-history`]\n ) {\n router.history = JSON.parse(window.localStorage[`f7router-${router.view.id}-history`]);\n router.view.history = router.history;\n }\n }\n\n clearHistory() {\n const router = this;\n router.history = [];\n if (router.view) router.view.history = [];\n router.saveHistory();\n }\n\n updateCurrentUrl(newUrl) {\n const router = this;\n appRouterCheck(router, 'updateCurrentUrl');\n // Update history\n if (router.history.length) {\n router.history[router.history.length - 1] = newUrl;\n } else {\n router.history.push(newUrl);\n }\n\n // Update current route params\n const { query, hash, params, url, path } = router.parseRouteUrl(newUrl);\n if (router.currentRoute) {\n extend(router.currentRoute, {\n query,\n hash,\n params,\n url,\n path,\n });\n }\n\n if (router.params.browserHistory) {\n const browserHistoryRoot = router.params.browserHistoryRoot || '';\n History.replace(\n router.view.id,\n {\n url: newUrl,\n },\n browserHistoryRoot + router.params.browserHistorySeparator + newUrl,\n );\n }\n\n // Save History\n router.saveHistory();\n\n router.emit('routeUrlUpdate', router.currentRoute, router);\n }\n\n getInitialUrl() {\n const router = this;\n if (router.initialUrl) {\n return {\n initialUrl: router.initialUrl,\n historyRestored: router.historyRestored,\n };\n }\n const { app, view } = router;\n const document = getDocument();\n const window = getWindow();\n\n const location =\n app.params.url && typeof app.params.url === 'string' && typeof URL !== 'undefined'\n ? new URL(app.params.url)\n : document.location;\n\n let initialUrl = router.params.url;\n let documentUrl = location.href.split(location.origin)[1];\n let historyRestored;\n const { browserHistory, browserHistoryOnLoad, browserHistorySeparator } = router.params;\n let { browserHistoryRoot } = router.params;\n if (\n (window.cordova || (window.Capacitor && window.Capacitor.isNative)) &&\n browserHistory &&\n !browserHistorySeparator &&\n !browserHistoryRoot &&\n location.pathname.indexOf('index.html')\n ) {\n // eslint-disable-next-line\n console.warn(\n 'Framework7: wrong or not complete browserHistory configuration, trying to guess browserHistoryRoot',\n );\n browserHistoryRoot = location.pathname.split('index.html')[0];\n }\n if (!browserHistory || !browserHistoryOnLoad) {\n if (!initialUrl) {\n initialUrl = documentUrl;\n }\n if (location.search && initialUrl.indexOf('?') < 0) {\n initialUrl += location.search;\n }\n if (location.hash && initialUrl.indexOf('#') < 0) {\n initialUrl += location.hash;\n }\n } else {\n if (browserHistoryRoot && documentUrl.indexOf(browserHistoryRoot) >= 0) {\n documentUrl = documentUrl.split(browserHistoryRoot)[1];\n if (documentUrl === '') documentUrl = '/';\n }\n if (browserHistorySeparator.length > 0 && documentUrl.indexOf(browserHistorySeparator) >= 0) {\n initialUrl = documentUrl.split(browserHistorySeparator)[1];\n } else {\n initialUrl = documentUrl;\n }\n router.restoreHistory();\n if (router.history.indexOf(initialUrl) >= 0) {\n router.history = router.history.slice(0, router.history.indexOf(initialUrl) + 1);\n } else if (router.params.url === initialUrl) {\n router.history = [initialUrl];\n } else if (\n History.state &&\n History.state[view.id] &&\n History.state[view.id].url === router.history[router.history.length - 1]\n ) {\n initialUrl = router.history[router.history.length - 1];\n } else {\n router.history = [documentUrl.split(browserHistorySeparator)[0] || '/', initialUrl];\n }\n if (router.history.length > 1) {\n historyRestored = true;\n } else {\n router.history = [];\n }\n router.saveHistory();\n }\n\n router.initialUrl = initialUrl;\n router.historyRestored = historyRestored;\n\n return { initialUrl, historyRestored };\n }\n\n init() {\n const router = this;\n const { app, view } = router;\n const document = getDocument();\n\n router.mount();\n\n const { initialUrl, historyRestored } = router.getInitialUrl();\n\n // Init Swipeback\n if (\n (view && router.params.iosSwipeBack && app.theme === 'ios') ||\n (view && router.params.mdSwipeBack && app.theme === 'md') ||\n (view && router.params.auroraSwipeBack && app.theme === 'aurora')\n ) {\n SwipeBack(router);\n }\n\n const {\n browserHistory,\n browserHistoryOnLoad,\n browserHistoryAnimateOnLoad,\n browserHistoryInitialMatch,\n } = router.params;\n\n let currentRoute;\n if (router.history.length > 1) {\n // Will load page\n const initUrl = browserHistoryInitialMatch ? initialUrl : router.history[0];\n currentRoute = router.findMatchingRoute(initUrl);\n if (!currentRoute) {\n currentRoute = extend(router.parseRouteUrl(initUrl), {\n route: {\n url: initUrl,\n path: initUrl.split('?')[0],\n },\n });\n }\n } else {\n // Don't load page\n currentRoute = router.findMatchingRoute(initialUrl);\n if (!currentRoute) {\n currentRoute = extend(router.parseRouteUrl(initialUrl), {\n route: {\n url: initialUrl,\n path: initialUrl.split('?')[0],\n },\n });\n }\n }\n\n if (router.params.stackPages) {\n router.$el.children('.page').each((pageEl) => {\n const $pageEl = $(pageEl);\n router.initialPages.push($pageEl[0]);\n if (router.dynamicNavbar && $pageEl.children('.navbar').length > 0) {\n router.initialNavbars.push($pageEl.children('.navbar')[0]);\n }\n });\n }\n\n if (\n router.$el.children('.page:not(.stacked)').length === 0 &&\n initialUrl &&\n router.params.loadInitialPage\n ) {\n // No pages presented in DOM, reload new page\n router.navigate(initialUrl, {\n initial: true,\n reloadCurrent: true,\n browserHistory: false,\n animate: false,\n once: {\n modalOpen() {\n if (!historyRestored) return;\n const preloadPreviousPage =\n router.params.preloadPreviousPage || router.params[`${app.theme}SwipeBack`];\n if (preloadPreviousPage && router.history.length > 1) {\n router.back({ preload: true });\n }\n },\n pageAfterIn() {\n if (!historyRestored) return;\n const preloadPreviousPage =\n router.params.preloadPreviousPage || router.params[`${app.theme}SwipeBack`];\n if (preloadPreviousPage && router.history.length > 1) {\n router.back({ preload: true });\n }\n },\n },\n });\n } else if (router.$el.children('.page:not(.stacked)').length) {\n // Init current DOM page\n let hasTabRoute;\n router.currentRoute = currentRoute;\n router.$el.children('.page:not(.stacked)').each((pageEl) => {\n const $pageEl = $(pageEl);\n let $navbarEl;\n router.setPagePosition($pageEl, 'current');\n if (router.dynamicNavbar) {\n $navbarEl = $pageEl.children('.navbar');\n if ($navbarEl.length > 0) {\n if (!router.$navbarsEl.parents(document).length) {\n router.$el.prepend(router.$navbarsEl);\n }\n router.setNavbarPosition($navbarEl, 'current');\n router.$navbarsEl.append($navbarEl);\n if ($navbarEl.children('.title-large').length) {\n $navbarEl.addClass('navbar-large');\n }\n $pageEl.children('.navbar').remove();\n } else {\n router.$navbarsEl.addClass('navbar-hidden');\n if ($navbarEl.children('.title-large').length) {\n router.$navbarsEl.addClass('navbar-hidden navbar-large-hidden');\n }\n }\n }\n if (\n router.currentRoute &&\n router.currentRoute.route &&\n (router.currentRoute.route.master === true ||\n (typeof router.currentRoute.route.master === 'function' &&\n router.currentRoute.route.master(app, router))) &&\n router.params.masterDetailBreakpoint > 0\n ) {\n $pageEl.addClass('page-master');\n $pageEl.trigger('page:role', { role: 'master' });\n if ($navbarEl && $navbarEl.length) {\n $navbarEl.addClass('navbar-master');\n }\n view.checkMasterDetailBreakpoint();\n }\n const initOptions = {\n route: router.currentRoute,\n };\n if (router.currentRoute && router.currentRoute.route && router.currentRoute.route.options) {\n extend(initOptions, router.currentRoute.route.options);\n }\n router.currentPageEl = $pageEl[0];\n if (router.dynamicNavbar && $navbarEl.length) {\n router.currentNavbarEl = $navbarEl[0];\n }\n router.removeThemeElements($pageEl);\n if (router.dynamicNavbar && $navbarEl.length) {\n router.removeThemeElements($navbarEl);\n }\n if (initOptions.route.route.tab) {\n hasTabRoute = true;\n router.tabLoad(initOptions.route.route.tab, extend({}, initOptions));\n }\n router.pageCallback('init', $pageEl, $navbarEl, 'current', undefined, initOptions);\n router.pageCallback('beforeIn', $pageEl, $navbarEl, 'current', undefined, initOptions);\n router.pageCallback('afterIn', $pageEl, $navbarEl, 'current', undefined, initOptions);\n });\n if (historyRestored) {\n if (browserHistoryInitialMatch) {\n const preloadPreviousPage =\n router.params.preloadPreviousPage || router.params[`${app.theme}SwipeBack`];\n if (preloadPreviousPage && router.history.length > 1) {\n router.back({ preload: true });\n }\n } else {\n router.navigate(initialUrl, {\n initial: true,\n browserHistory: false,\n history: false,\n animate: browserHistoryAnimateOnLoad,\n once: {\n pageAfterIn() {\n const preloadPreviousPage =\n router.params.preloadPreviousPage || router.params[`${app.theme}SwipeBack`];\n if (preloadPreviousPage && router.history.length > 2) {\n router.back({ preload: true });\n }\n },\n },\n });\n }\n }\n if (!historyRestored && !hasTabRoute) {\n router.history.push(initialUrl);\n router.saveHistory();\n }\n }\n if (\n initialUrl &&\n browserHistory &&\n browserHistoryOnLoad &&\n (!History.state || !History.state[view.id])\n ) {\n History.initViewState(view.id, {\n url: initialUrl,\n });\n }\n router.emit('local::init routerInit', router);\n }\n\n destroy() {\n let router = this;\n\n router.emit('local::destroy routerDestroy', router);\n\n // Delete props & methods\n Object.keys(router).forEach((routerProp) => {\n router[routerProp] = null;\n delete router[routerProp];\n });\n\n router = null;\n }\n}\n\n// Load\nRouter.prototype.navigate = navigate;\nRouter.prototype.refreshPage = refreshPage;\n// Tab\nRouter.prototype.tabLoad = tabLoad;\nRouter.prototype.tabRemove = tabRemove;\n// Modal\nRouter.prototype.modalLoad = modalLoad;\nRouter.prototype.modalRemove = modalRemove;\n// Back\nRouter.prototype.back = back;\n// Clear history\nRouter.prototype.clearPreviousHistory = clearPreviousHistory;\n\nexport default Router;\n","import $ from '../../shared/dom7.js';\nimport { extend } from '../../shared/utils.js';\nimport History from '../../shared/history.js';\nimport asyncComponent from './async-component.js';\n\nfunction tabLoad(tabRoute, loadOptions = {}) {\n const router = this;\n const options = extend(\n {\n animate: router.params.animate,\n browserHistory: true,\n history: true,\n parentPageEl: null,\n preload: false,\n on: {},\n },\n loadOptions,\n );\n\n let currentRoute;\n let previousRoute;\n if (options.route) {\n // Set Route\n if (!options.preload && options.route !== router.currentRoute) {\n previousRoute = router.previousRoute;\n router.currentRoute = options.route;\n }\n if (options.preload) {\n currentRoute = options.route;\n previousRoute = router.currentRoute;\n } else {\n currentRoute = router.currentRoute;\n if (!previousRoute) previousRoute = router.previousRoute;\n }\n\n // Update Browser History\n if (router.params.browserHistory && options.browserHistory && !options.reloadPrevious) {\n History[router.params.browserHistoryTabs](\n router.view.id,\n {\n url: options.route.url,\n },\n (router.params.browserHistoryRoot || '') +\n router.params.browserHistorySeparator +\n options.route.url,\n );\n }\n\n // Update Router History\n if (options.history) {\n router.history[Math.max(router.history.length - 1, 0)] = options.route.url;\n router.saveHistory();\n }\n }\n\n // Show Tab\n const $parentPageEl = $(options.parentPageEl || router.currentPageEl);\n let tabEl;\n if ($parentPageEl.length && $parentPageEl.find(`#${tabRoute.id}`).length) {\n tabEl = $parentPageEl.find(`#${tabRoute.id}`).eq(0);\n } else if (router.view.selector) {\n tabEl = `${router.view.selector} #${tabRoute.id}`;\n } else {\n tabEl = `#${tabRoute.id}`;\n }\n const tabShowResult = router.app.tab.show({\n tabEl,\n animate: options.animate,\n tabRoute: options.route,\n });\n\n const { $newTabEl, $oldTabEl, animated, onTabsChanged } = tabShowResult;\n\n if ($newTabEl && $newTabEl.parents('.page').length > 0 && options.route) {\n const tabParentPageData = $newTabEl.parents('.page')[0].f7Page;\n if (tabParentPageData && options.route) {\n tabParentPageData.route = options.route;\n }\n }\n\n // Tab Content Loaded\n function onTabLoaded(contentEl) {\n // Remove theme elements\n router.removeThemeElements($newTabEl);\n\n let tabEventTarget = $newTabEl;\n if (typeof contentEl !== 'string') tabEventTarget = $(contentEl);\n\n tabEventTarget.trigger('tab:init tab:mounted', tabRoute);\n router.emit('tabInit tabMounted', $newTabEl[0], tabRoute);\n\n if ($oldTabEl && $oldTabEl.length) {\n if (animated) {\n onTabsChanged(() => {\n router.emit('routeChanged', router.currentRoute, router.previousRoute, router);\n if (router.params.unloadTabContent) {\n router.tabRemove($oldTabEl, $newTabEl, tabRoute);\n }\n });\n } else {\n router.emit('routeChanged', router.currentRoute, router.previousRoute, router);\n if (router.params.unloadTabContent) {\n router.tabRemove($oldTabEl, $newTabEl, tabRoute);\n }\n }\n }\n }\n\n if ($newTabEl[0].f7RouterTabLoaded) {\n if (!$oldTabEl || !$oldTabEl.length) return router;\n if (animated) {\n onTabsChanged(() => {\n router.emit('routeChanged', router.currentRoute, router.previousRoute, router);\n });\n } else {\n router.emit('routeChanged', router.currentRoute, router.previousRoute, router);\n }\n return router;\n }\n\n // Load Tab Content\n function loadTab(loadTabParams, loadTabOptions) {\n // Load Tab Props\n const { url, content, el, component, componentUrl } = loadTabParams;\n // Component/Template Callbacks\n function resolve(contentEl) {\n router.allowPageChange = true;\n if (!contentEl) return;\n if (typeof contentEl === 'string') {\n $newTabEl.html(contentEl);\n } else {\n $newTabEl.html('');\n if (contentEl.f7Component) {\n contentEl.f7Component.mount((componentEl) => {\n $newTabEl.append(componentEl);\n });\n } else {\n $newTabEl.append(contentEl);\n }\n }\n $newTabEl[0].f7RouterTabLoaded = true;\n onTabLoaded(contentEl);\n }\n function reject() {\n router.allowPageChange = true;\n return router;\n }\n\n if (content) {\n resolve(content);\n } else if (el) {\n resolve(el);\n } else if (component || componentUrl) {\n // Load from component (F7/Vue/React/...)\n try {\n router.tabComponentLoader({\n tabEl: $newTabEl[0],\n component,\n componentUrl,\n options: loadTabOptions,\n resolve,\n reject,\n });\n } catch (err) {\n router.allowPageChange = true;\n throw err;\n }\n } else if (url) {\n // Load using XHR\n if (router.xhrAbortController) {\n router.xhrAbortController.abort();\n router.xhrAbortController = false;\n }\n router\n .xhrRequest(url, loadTabOptions)\n .then((tabContent) => {\n resolve(tabContent);\n })\n .catch(() => {\n router.allowPageChange = true;\n });\n }\n }\n\n let hasContentLoadProp;\n 'url content component el componentUrl'.split(' ').forEach((tabLoadProp) => {\n if (tabRoute[tabLoadProp]) {\n hasContentLoadProp = true;\n loadTab({ [tabLoadProp]: tabRoute[tabLoadProp] }, options);\n }\n });\n\n // Async\n function asyncResolve(resolveParams, resolveOptions) {\n loadTab(resolveParams, extend(options, resolveOptions));\n }\n function asyncReject() {\n router.allowPageChange = true;\n }\n if (tabRoute.async) {\n tabRoute.async.call(router, {\n router,\n to: currentRoute,\n from: previousRoute,\n resolve: asyncResolve,\n reject: asyncReject,\n app: router.app,\n });\n } else if (tabRoute.asyncComponent) {\n asyncComponent(router, tabRoute.asyncComponent, asyncResolve, asyncReject);\n } else if (!hasContentLoadProp) {\n router.allowPageChange = true;\n }\n\n return router;\n}\nfunction tabRemove($oldTabEl, $newTabEl, tabRoute) {\n const router = this;\n\n let hasTabComponentChild;\n if ($oldTabEl[0]) {\n $oldTabEl[0].f7RouterTabLoaded = false;\n delete $oldTabEl[0].f7RouterTabLoaded;\n }\n $oldTabEl.children().each((tabChild) => {\n if (tabChild.f7Component) {\n hasTabComponentChild = true;\n $(tabChild).trigger('tab:beforeremove', tabRoute);\n tabChild.f7Component.destroy();\n }\n });\n if (!hasTabComponentChild) {\n $oldTabEl.trigger('tab:beforeremove', tabRoute);\n }\n router.emit('tabBeforeRemove', $oldTabEl[0], $newTabEl[0], tabRoute);\n router.removeTabContent($oldTabEl[0], tabRoute);\n}\n\nexport { tabLoad, tabRemove };\n","import { extend, nextTick } from '../../shared/utils.js';\nimport History from '../../shared/history.js';\nimport asyncComponent from './async-component.js';\n\nfunction modalLoad(modalType, route, loadOptions = {}, direction) {\n const router = this;\n const app = router.app;\n const isPanel = modalType === 'panel';\n const modalOrPanel = isPanel ? 'panel' : 'modal';\n\n const options = extend(\n {\n animate: router.params.animate,\n browserHistory: true,\n history: true,\n on: {},\n once: {},\n },\n loadOptions,\n );\n\n const modalParams = extend({}, route.route[modalType]);\n const modalRoute = route.route;\n\n const routeCallback = (modal, name) => {\n const { on, once } = options;\n let callback;\n if (name === 'open') {\n callback = on.modalOpen || once.modalOpen || on.panelOpen || once.panelOpen;\n }\n if (name === 'close') {\n callback = on.modalClose || once.modalClose || on.panelClose || once.panelClose;\n }\n if (name === 'closed') {\n callback = on.modalClosed || once.modalClosed || on.panelClosed || once.panelClosed;\n }\n if (callback) callback(modal);\n };\n\n function onModalLoaded() {\n // Create Modal\n const modal = app[modalType].create(modalParams);\n modalRoute.modalInstance = modal;\n\n const hasEl = modal.el;\n\n function closeOnSwipeBack() {\n modal.close();\n }\n modal.on(`${modalOrPanel}Open`, () => {\n if (!hasEl) {\n // Remove theme elements\n router.removeThemeElements(modal.el);\n\n // Emit events\n modal.$el.trigger(\n `${modalType.toLowerCase()}:init ${modalType.toLowerCase()}:mounted`,\n route,\n modal,\n );\n router.emit(\n `${!isPanel ? 'modalInit' : ''} ${modalType}Init ${modalType}Mounted`,\n modal.el,\n route,\n modal,\n );\n }\n router.once('swipeBackMove', closeOnSwipeBack);\n routeCallback(modal, 'open');\n });\n modal.on(`${modalOrPanel}Close`, () => {\n router.off('swipeBackMove', closeOnSwipeBack);\n if (!modal.closeByRouter) {\n router.back();\n }\n routeCallback(modal, 'close');\n });\n\n modal.on(`${modalOrPanel}Closed`, () => {\n modal.$el.trigger(`${modalType.toLowerCase()}:beforeremove`, route, modal);\n modal.emit(\n `${!isPanel ? 'modalBeforeRemove ' : ''}${modalType}BeforeRemove`,\n modal.el,\n route,\n modal,\n );\n const modalComponent = modal.el.f7Component;\n routeCallback(modal, 'closed');\n if (modalComponent) {\n modalComponent.destroy();\n }\n nextTick(() => {\n if (modalComponent || modalParams.component || modalParams.asyncComponent) {\n router.removeModal(modal.el);\n }\n modal.destroy();\n delete modal.route;\n delete modalRoute.modalInstance;\n });\n });\n\n if (options.route) {\n // Update Browser History\n if (router.params.browserHistory && options.browserHistory) {\n History.push(\n router.view.id,\n {\n url: options.route.url,\n modal: modalType,\n },\n (router.params.browserHistoryRoot || '') +\n router.params.browserHistorySeparator +\n options.route.url,\n );\n }\n\n // Set Route\n if (options.route !== router.currentRoute) {\n modal.route = extend(options.route, { modal });\n router.currentRoute = modal.route;\n }\n\n // Update Router History\n if (options.history && !options.reloadCurrent) {\n router.history.push(options.route.url);\n router.saveHistory();\n }\n }\n\n if (hasEl) {\n // Remove theme elements\n router.removeThemeElements(modal.el);\n\n // Emit events\n modal.$el.trigger(\n `${modalType.toLowerCase()}:init ${modalType.toLowerCase()}:mounted`,\n route,\n modal,\n );\n router.emit(\n `${modalOrPanel}Init ${modalType}Init ${modalType}Mounted`,\n modal.el,\n route,\n modal,\n );\n }\n\n // Open\n modal.open(options.animate === false || options.animate === true ? options.animate : undefined);\n }\n\n // Load Modal Content\n function loadModal(loadModalParams, loadModalOptions) {\n // Load Modal Props\n const { url, content, component, componentUrl } = loadModalParams;\n\n // Component/Template Callbacks\n function resolve(contentEl) {\n if (contentEl) {\n if (typeof contentEl === 'string') {\n modalParams.content = contentEl;\n } else if (contentEl.f7Component) {\n contentEl.f7Component.mount((componentEl) => {\n modalParams.el = componentEl;\n app.$el.append(componentEl);\n });\n } else {\n modalParams.el = contentEl;\n }\n onModalLoaded();\n }\n }\n function reject() {\n router.allowPageChange = true;\n return router;\n }\n\n if (content) {\n resolve(content);\n } else if (component || componentUrl) {\n // Load from component (F7/Vue/React/...)\n try {\n router.modalComponentLoader({\n rootEl: app.el,\n component,\n componentUrl,\n options: loadModalOptions,\n resolve,\n reject,\n });\n } catch (err) {\n router.allowPageChange = true;\n throw err;\n }\n } else if (url) {\n // Load using XHR\n if (router.xhrAbortController) {\n router.xhrAbortController.abort();\n router.xhrAbortController = false;\n }\n router\n .xhrRequest(url, loadModalOptions)\n .then((modalContent) => {\n modalParams.content = modalContent;\n onModalLoaded();\n })\n .catch(() => {\n router.allowPageChange = true;\n });\n } else {\n onModalLoaded();\n }\n }\n\n let foundLoadProp;\n 'url content component el componentUrl template'.split(' ').forEach((modalLoadProp) => {\n if (modalParams[modalLoadProp] && !foundLoadProp) {\n foundLoadProp = true;\n loadModal({ [modalLoadProp]: modalParams[modalLoadProp] }, options);\n }\n });\n if (!foundLoadProp && modalType === 'actions') {\n onModalLoaded();\n }\n\n // Async\n function asyncResolve(resolveParams, resolveOptions) {\n loadModal(resolveParams, extend(options, resolveOptions));\n }\n function asyncReject() {\n router.allowPageChange = true;\n }\n if (modalParams.async) {\n modalParams.async.call(router, {\n router,\n to: options.route,\n from: router.currentRoute,\n resolve: asyncResolve,\n reject: asyncReject,\n direction,\n app,\n });\n }\n if (modalParams.asyncComponent) {\n asyncComponent(router, modalParams.asyncComponent, asyncResolve, asyncReject);\n }\n return router;\n}\nfunction modalRemove(modal) {\n extend(modal, { closeByRouter: true });\n modal.close();\n}\n\nexport { modalLoad, modalRemove };\n","import $ from '../../shared/dom7.js';\nimport appRouterCheck from './app-router-check.js';\n\nfunction clearPreviousPages(router) {\n appRouterCheck(router, 'clearPreviousPages');\n const app = router.app;\n const dynamicNavbar = router.dynamicNavbar;\n\n const $pagesToRemove = router.$el.children('.page').filter((pageInView) => {\n if (router.currentRoute && (router.currentRoute.modal || router.currentRoute.panel))\n return true;\n return pageInView !== router.currentPageEl;\n });\n\n $pagesToRemove.each((pageEl) => {\n const $oldPageEl = $(pageEl);\n const $oldNavbarEl = $(app.navbar.getElByPage($oldPageEl));\n if (router.params.stackPages && router.initialPages.indexOf($oldPageEl[0]) >= 0) {\n $oldPageEl.addClass('stacked');\n if (dynamicNavbar) {\n $oldNavbarEl.addClass('stacked');\n }\n } else {\n // Page remove event\n router.pageCallback('beforeRemove', $oldPageEl, $oldNavbarEl, 'previous', undefined, {});\n router.removePage($oldPageEl);\n if (dynamicNavbar && $oldNavbarEl.length) {\n router.removeNavbar($oldNavbarEl);\n }\n }\n });\n}\n\nfunction clearPreviousHistory() {\n const router = this;\n appRouterCheck(router, 'clearPreviousHistory');\n const url = router.history[router.history.length - 1];\n\n clearPreviousPages(router);\n\n router.history = [url];\n router.view.history = [url];\n router.saveHistory();\n}\n\nexport { clearPreviousHistory }; // eslint-disable-line\n","import Router from './router-class.js';\n\nexport default {\n name: 'router',\n static: {\n Router,\n },\n instance: {\n cache: {\n xhr: [],\n templates: [],\n components: [],\n },\n },\n create() {\n const instance = this;\n if (instance.app) {\n // View Router\n if (instance.params.router) {\n instance.router = new Router(instance.app, instance);\n }\n } else {\n // App Router\n instance.router = new Router(instance);\n }\n },\n};\n","import $ from '../../shared/dom7.js';\nimport { extend } from '../../shared/utils.js';\nimport { getSupport } from '../../shared/get-support.js';\n\nfunction resizableView(view) {\n const app = view.app;\n const support = getSupport();\n if (view.resizableInitialized) return;\n extend(view, {\n resizable: true,\n resizableWidth: null,\n resizableInitialized: true,\n });\n const $htmlEl = $('html');\n const { $el } = view;\n if (!$el) return;\n\n let $resizeHandlerEl;\n\n let isTouched;\n let isMoved;\n const touchesStart = {};\n let touchesDiff;\n let width;\n\n let minWidth;\n let maxWidth;\n\n function transformCSSWidth(v) {\n if (!v) return null;\n if (v.indexOf('%') >= 0 || v.indexOf('vw') >= 0) {\n return (parseInt(v, 10) / 100) * app.width;\n }\n const newV = parseInt(v, 10);\n if (Number.isNaN(newV)) return null;\n return newV;\n }\n\n function isResizable() {\n return view.resizable && $el.hasClass('view-resizable') && $el.hasClass('view-master-detail');\n }\n\n function handleTouchStart(e) {\n if (!isResizable()) return;\n touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n isMoved = false;\n isTouched = true;\n const $pageMasterEl = $el.children('.page-master');\n minWidth = transformCSSWidth($pageMasterEl.css('min-width'));\n maxWidth = transformCSSWidth($pageMasterEl.css('max-width'));\n }\n function handleTouchMove(e) {\n if (!isTouched) return;\n e.f7PreventSwipePanel = true;\n const pageX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n\n if (!isMoved) {\n width = $resizeHandlerEl[0].offsetLeft + $resizeHandlerEl[0].offsetWidth;\n $el.addClass('view-resizing');\n $htmlEl.css('cursor', 'col-resize');\n }\n\n isMoved = true;\n\n e.preventDefault();\n\n touchesDiff = pageX - touchesStart.x;\n\n let newWidth = width + touchesDiff;\n if (minWidth && !Number.isNaN(minWidth)) {\n newWidth = Math.max(newWidth, minWidth);\n }\n if (maxWidth && !Number.isNaN(maxWidth)) {\n newWidth = Math.min(newWidth, maxWidth);\n }\n newWidth = Math.min(Math.max(newWidth, 0), app.width);\n\n view.resizableWidth = newWidth;\n $htmlEl[0].style.setProperty('--f7-page-master-width', `${newWidth}px`);\n\n $el.trigger('view:resize', newWidth);\n view.emit('local::resize viewResize', view, newWidth);\n }\n function handleTouchEnd() {\n $('html').css('cursor', '');\n if (!isTouched || !isMoved) {\n isTouched = false;\n isMoved = false;\n return;\n }\n isTouched = false;\n isMoved = false;\n\n $htmlEl[0].style.setProperty('--f7-page-master-width', `${view.resizableWidth}px`);\n $el.removeClass('view-resizing');\n }\n\n function handleResize() {\n if (!view.resizableWidth) return;\n minWidth = transformCSSWidth($resizeHandlerEl.css('min-width'));\n maxWidth = transformCSSWidth($resizeHandlerEl.css('max-width'));\n\n if (minWidth && !Number.isNaN(minWidth) && view.resizableWidth < minWidth) {\n view.resizableWidth = Math.max(view.resizableWidth, minWidth);\n }\n if (maxWidth && !Number.isNaN(maxWidth) && view.resizableWidth > maxWidth) {\n view.resizableWidth = Math.min(view.resizableWidth, maxWidth);\n }\n view.resizableWidth = Math.min(Math.max(view.resizableWidth, 0), app.width);\n\n $htmlEl[0].style.setProperty('--f7-page-master-width', `${view.resizableWidth}px`);\n }\n\n $resizeHandlerEl = view.$el.children('.view-resize-handler');\n if (!$resizeHandlerEl.length) {\n view.$el.append('<div class=\"view-resize-handler\"></div>');\n $resizeHandlerEl = view.$el.children('.view-resize-handler');\n }\n view.$resizeHandlerEl = $resizeHandlerEl;\n\n $el.addClass('view-resizable');\n\n // Add Events\n const passive = support.passiveListener ? { passive: true } : false;\n\n view.$el.on(app.touchEvents.start, '.view-resize-handler', handleTouchStart, passive);\n app.on('touchmove:active', handleTouchMove);\n app.on('touchend:passive', handleTouchEnd);\n app.on('resize', handleResize);\n view.on('beforeOpen', handleResize);\n\n view.once('viewDestroy', () => {\n $el.removeClass('view-resizable');\n view.$resizeHandlerEl.remove();\n view.$el.off(app.touchEvents.start, '.view-resize-handler', handleTouchStart, passive);\n app.off('touchmove:active', handleTouchMove);\n app.off('touchend:passive', handleTouchEnd);\n app.off('resize', handleResize);\n view.off('beforeOpen', handleResize);\n });\n}\n\nexport default resizableView;\n","import $ from '../../shared/dom7.js';\nimport { extend } from '../../shared/utils.js';\nimport Router from '../../modules/router/router.js';\nimport Framework7Class from '../../shared/class.js';\nimport resizableView from './resizable-view.js';\n\nclass View extends Framework7Class {\n constructor(app, el, viewParams = {}) {\n super(viewParams, [app]);\n\n const view = this;\n\n const ssr = view.params.routerId;\n\n const defaults = {\n routes: [],\n routesAdd: [],\n };\n\n if (!ssr) {\n const $el = $(el);\n if (!$el.length) {\n let message = \"Framework7: can't create a View instance because \";\n message +=\n typeof el === 'string'\n ? `the selector \"${el}\" didn't match any element`\n : 'el must be an HTMLElement or Dom7 object';\n\n throw new Error(message);\n }\n }\n\n // Default View params\n view.params = extend({ el }, defaults, app.params.view, viewParams);\n\n // Routes\n if (view.params.routes.length > 0) {\n view.routes = view.params.routes;\n } else {\n view.routes = [].concat(app.routes, view.params.routesAdd);\n }\n\n // View Props\n extend(false, view, {\n app,\n name: view.params.name,\n main: view.params.main,\n history: [],\n scrollHistory: {},\n });\n\n // Install Modules\n view.useModules();\n\n // Add to app\n app.views.push(view);\n if (view.main) {\n app.views.main = view;\n }\n if (view.name) {\n app.views[view.name] = view;\n }\n\n // Index\n view.index = app.views.indexOf(view);\n\n // View ID\n let viewId;\n if (view.name) {\n viewId = `view_${view.name}`;\n } else if (view.main) {\n viewId = 'view_main';\n } else {\n viewId = `view_${view.index}`;\n }\n view.id = viewId;\n\n if (!view.params.init) {\n return view;\n }\n // Init View\n if (app.initialized) {\n view.init();\n } else {\n app.on('init', () => {\n view.init();\n });\n }\n\n return view;\n }\n\n destroy() {\n let view = this;\n const app = view.app;\n\n view.$el.trigger('view:beforedestroy');\n view.emit('local::beforeDestroy viewBeforeDestroy', view);\n\n app.off('resize', view.checkMasterDetailBreakpoint);\n\n if (view.main) {\n app.views.main = null;\n delete app.views.main;\n } else if (view.name) {\n app.views[view.name] = null;\n delete app.views[view.name];\n }\n view.$el[0].f7View = null;\n delete view.$el[0].f7View;\n\n app.views.splice(app.views.indexOf(view), 1);\n\n // Destroy Router\n if (view.params.router && view.router) {\n view.router.destroy();\n }\n\n view.emit('local::destroy viewDestroy', view);\n\n // Delete props & methods\n Object.keys(view).forEach((viewProp) => {\n view[viewProp] = null;\n delete view[viewProp];\n });\n\n view = null;\n }\n\n checkMasterDetailBreakpoint(force) {\n const view = this;\n const app = view.app;\n const wasMasterDetail = view.$el.hasClass('view-master-detail');\n const isMasterDetail =\n app.width >= view.params.masterDetailBreakpoint && view.$el.children('.page-master').length;\n if ((typeof force === 'undefined' && isMasterDetail) || force === true) {\n view.$el.addClass('view-master-detail');\n if (!wasMasterDetail) {\n view.emit('local::masterDetailBreakpoint viewMasterDetailBreakpoint', view);\n view.$el.trigger('view:masterDetailBreakpoint');\n }\n } else {\n view.$el.removeClass('view-master-detail');\n if (wasMasterDetail) {\n view.emit('local::masterDetailBreakpoint viewMasterDetailBreakpoint', view);\n view.$el.trigger('view:masterDetailBreakpoint');\n }\n }\n }\n\n initMasterDetail() {\n const view = this;\n const app = view.app;\n view.checkMasterDetailBreakpoint = view.checkMasterDetailBreakpoint.bind(view);\n view.checkMasterDetailBreakpoint();\n if (view.params.masterDetailResizable) {\n resizableView(view);\n }\n app.on('resize', view.checkMasterDetailBreakpoint);\n }\n\n mount(viewEl) {\n const view = this;\n const app = view.app;\n const el = view.params.el || viewEl;\n const $el = $(el);\n\n // Selector\n let selector;\n if (typeof el === 'string') selector = el;\n else {\n // Supposed to be HTMLElement or Dom7\n selector =\n ($el.attr('id') ? `#${$el.attr('id')}` : '') +\n ($el.attr('class')\n ? `.${$el.attr('class').replace(/ /g, '.').replace('.active', '')}`\n : '');\n }\n\n // DynamicNavbar\n let $navbarsEl;\n if (app.theme === 'ios' && view.params.iosDynamicNavbar) {\n $navbarsEl = $el.children('.navbars').eq(0);\n if ($navbarsEl.length === 0) {\n $navbarsEl = $('<div class=\"navbars\"></div>');\n }\n }\n\n extend(view, {\n $el,\n el: $el[0],\n main: view.main || $el.hasClass('view-main'),\n $navbarsEl,\n navbarsEl: $navbarsEl ? $navbarsEl[0] : undefined,\n selector,\n });\n\n if (view.main) {\n app.views.main = view;\n }\n\n // Save in DOM\n if ($el && $el[0]) {\n $el[0].f7View = view;\n }\n\n view.emit('local::mount viewMount', view);\n }\n\n init(viewEl) {\n const view = this;\n view.mount(viewEl);\n if (view.params.router) {\n if (view.params.masterDetailBreakpoint > 0) {\n view.initMasterDetail();\n }\n if (\n view.params.initRouterOnTabShow &&\n view.$el.hasClass('tab') &&\n !view.$el.hasClass('tab-active')\n ) {\n view.$el.once('tab:show', () => {\n view.router.init();\n });\n } else {\n view.router.init();\n }\n\n view.$el.trigger('view:init');\n view.emit('local::init viewInit', view);\n }\n }\n}\n\n// Use Router\nView.use(Router);\n\nexport default View;\n","import { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport ViewClass from '../../components/view/view-class.js';\n\nfunction initClicks(app) {\n function handleClicks(e) {\n const window = getWindow();\n const $clickedEl = $(e.target);\n const $clickedLinkEl = $clickedEl.closest('a');\n const isLink = $clickedLinkEl.length > 0;\n const url = isLink && $clickedLinkEl.attr('href');\n\n // Check if link is external\n if (isLink) {\n if (\n $clickedLinkEl.is(app.params.clicks.externalLinks) ||\n // eslint-disable-next-line\n (url && url.indexOf('javascript:') >= 0)\n ) {\n const target = $clickedLinkEl.attr('target');\n if (\n url &&\n window.cordova &&\n window.cordova.InAppBrowser &&\n (target === '_system' || target === '_blank')\n ) {\n e.preventDefault();\n window.cordova.InAppBrowser.open(url, target);\n } else if (\n url &&\n window.Capacitor &&\n window.Capacitor.Plugins &&\n window.Capacitor.Plugins.Browser &&\n (target === '_system' || target === '_blank')\n ) {\n e.preventDefault();\n window.Capacitor.Plugins.Browser.open({ url });\n }\n return;\n }\n }\n\n // Modules Clicks\n Object.keys(app.modules).forEach((moduleName) => {\n const moduleClicks = app.modules[moduleName].clicks;\n if (!moduleClicks) return;\n if (e.preventF7Router) return;\n Object.keys(moduleClicks).forEach((clickSelector) => {\n const matchingClickedElement = $clickedEl.closest(clickSelector).eq(0);\n if (matchingClickedElement.length > 0) {\n moduleClicks[clickSelector].call(\n app,\n matchingClickedElement,\n matchingClickedElement.dataset(),\n e,\n );\n }\n });\n });\n\n // Load Page\n let clickedLinkData = {};\n if (isLink) {\n e.preventDefault();\n clickedLinkData = $clickedLinkEl.dataset();\n }\n clickedLinkData.clickedEl = $clickedLinkEl[0];\n\n // Prevent Router\n if (e.preventF7Router) return;\n if ($clickedLinkEl.hasClass('prevent-router') || $clickedLinkEl.hasClass('router-prevent'))\n return;\n\n const validUrl = url && url.length > 0 && url[0] !== '#';\n if (validUrl || $clickedLinkEl.hasClass('back')) {\n let view;\n if (clickedLinkData.view && clickedLinkData.view === 'current') {\n view = app.views.current;\n } else if (clickedLinkData.view) {\n view = $(clickedLinkData.view)[0].f7View;\n } else {\n view = $clickedEl.parents('.view')[0] && $clickedEl.parents('.view')[0].f7View;\n if (!$clickedLinkEl.hasClass('back') && view && view.params.linksView) {\n if (typeof view.params.linksView === 'string') view = $(view.params.linksView)[0].f7View;\n else if (view.params.linksView instanceof ViewClass) view = view.params.linksView;\n }\n }\n if (!view) {\n if (app.views.main) view = app.views.main;\n }\n if (!view || !view.router) return;\n if ($clickedLinkEl[0].f7RouteProps) {\n clickedLinkData.props = $clickedLinkEl[0].f7RouteProps;\n }\n if ($clickedLinkEl.hasClass('back')) view.router.back(url, clickedLinkData);\n else view.router.navigate(url, clickedLinkData);\n }\n }\n\n app.on('click', handleClicks);\n}\nexport default {\n name: 'clicks',\n params: {\n clicks: {\n // External Links\n externalLinks: '.external',\n },\n },\n on: {\n init() {\n const app = this;\n initClicks(app);\n },\n },\n};\n","import { merge } from '../../shared/utils.js';\n\nexport default {\n name: 'routerComponentLoader',\n proto: {\n openIn(router, url, options) {\n const navigateOptions = {\n url,\n route: {\n path: url,\n options: {\n ...options,\n openIn: undefined,\n },\n },\n };\n const params = {\n ...options,\n };\n if (options.openIn === 'popup') {\n params.content = `<div class=\"popup popup-router-open-in\" data-url=\"${url}\"><div class=\"view view-init\" data-links-view=\"${router.view.selector}\" data-url=\"${url}\" data-ignore-open-in=\"true\"></div></div>`;\n navigateOptions.route.popup = params;\n }\n if (options.openIn === 'loginScreen') {\n params.content = `<div class=\"login-screen login-screen-router-open-in\" data-url=\"${url}\"><div class=\"view view-init\" data-links-view=\"${router.view.selector}\" data-url=\"${url}\" data-ignore-open-in=\"true\"></div></div>`;\n navigateOptions.route.loginScreen = params;\n }\n if (options.openIn === 'sheet') {\n params.content = `<div class=\"sheet-modal sheet-modal-router-open-in\" data-url=\"${url}\"><div class=\"sheet-modal-inner\"><div class=\"view view-init\" data-links-view=\"${router.view.selector}\" data-url=\"${url}\" data-ignore-open-in=\"true\"></div></div></div>`;\n navigateOptions.route.sheet = params;\n }\n if (options.openIn === 'popover') {\n params.targetEl = options.clickedEl || options.targetEl;\n params.content = `<div class=\"popover popover-router-open-in\" data-url=\"${url}\"><div class=\"popover-inner\"><div class=\"view view-init\" data-links-view=\"${router.view.selector}\" data-url=\"${url}\" data-ignore-open-in=\"true\"></div></div></div>`;\n navigateOptions.route.popover = params;\n }\n if (options.openIn.indexOf('panel') >= 0) {\n const parts = options.openIn.split(':');\n const side = parts[1] || 'left';\n const effect = parts[2] || 'cover';\n params.targetEl = options.clickedEl || options.targetEl;\n params.content = `<div class=\"panel panel-router-open-in panel-${side} panel-${effect}\" data-url=\"${url}\"><div class=\"view view-init\" data-links-view=\"${router.view.selector}\" data-url=\"${url}\" data-ignore-open-in=\"true\"></div></div>`;\n navigateOptions.route.panel = params;\n }\n return router.navigate(navigateOptions);\n },\n componentLoader(component, componentUrl, options = {}, resolve, reject) {\n const router = this;\n const { app } = router;\n const url = typeof component === 'string' ? component : componentUrl;\n const compiledUrl = router.replaceRequestUrlParams(url, options);\n function compile(componentFunction) {\n let context = options.context || {};\n if (typeof context === 'function') context = context.call(router);\n else if (typeof context === 'string') {\n try {\n context = JSON.parse(context);\n } catch (err) {\n reject(err);\n throw err;\n }\n }\n const componentContext = merge({}, context, {\n f7route: options.route,\n f7router: router,\n });\n const componentProps = merge(\n options.route ? options.route.params || {} : {},\n options.props || {},\n options.routeProps || {},\n );\n let componentEl;\n let componentRoot;\n if (options.componentOptions && options.componentOptions.el) {\n componentEl = options.componentOptions.el;\n }\n if (options.componentOptions && options.componentOptions.root) {\n componentRoot = options.componentOptions.root;\n }\n app.component\n .create(componentFunction, componentProps, {\n context: componentContext,\n el: componentEl,\n root: componentRoot,\n })\n .then((createdComponent) => {\n resolve(createdComponent.el);\n })\n .catch((err) => {\n reject(err);\n throw new Error(err);\n });\n }\n let cachedComponent;\n if (compiledUrl && router.params.componentCache) {\n router.cache.components.forEach((cached) => {\n if (cached.url === compiledUrl) cachedComponent = cached.component;\n });\n }\n if (compiledUrl && cachedComponent) {\n compile(cachedComponent);\n } else if (compiledUrl && !cachedComponent) {\n // Load via XHR\n if (router.xhrAbortController) {\n router.xhrAbortController.abort();\n router.xhrAbortController = false;\n }\n router\n .xhrRequest(url, options)\n .then((loadedComponent) => {\n const parsedComponent = app.component.parse(loadedComponent);\n if (router.params.componentCache) {\n router.cache.components.push({\n url: compiledUrl,\n component: parsedComponent,\n });\n }\n compile(parsedComponent);\n })\n .catch((err) => {\n reject();\n throw err;\n });\n } else {\n compile(component);\n }\n },\n\n modalComponentLoader({ component, componentUrl, options, resolve, reject } = {}) {\n const router = this;\n router.componentLoader(\n component,\n componentUrl,\n options,\n (el) => {\n resolve(el);\n },\n reject,\n );\n },\n\n tabComponentLoader({ component, componentUrl, options, resolve, reject } = {}) {\n const router = this;\n router.componentLoader(\n component,\n componentUrl,\n options,\n (el) => {\n resolve(el);\n },\n reject,\n );\n },\n\n pageComponentLoader({ component, componentUrl, options, resolve, reject } = {}) {\n const router = this;\n router.componentLoader(\n component,\n componentUrl,\n options,\n (el, newOptions = {}) => {\n resolve(el, newOptions);\n },\n reject,\n );\n },\n },\n};\n","var n=function(t,s,r,e){var u;s[0]=0;for(var h=1;h<s.length;h++){var p=s[h++],a=s[h]?(s[0]|=p?1:2,r[s[h++]]):s[++h];3===p?e[0]=a:4===p?e[1]=Object.assign(e[1]||{},a):5===p?(e[1]=e[1]||{})[s[++h]]=a:6===p?e[1][s[++h]]+=a+\"\":p?(u=t.apply(a,n(t,a,r,[\"\",null])),e.push(u),a[0]?s[0]|=2:(s[h-2]=0,s[h]=u)):e.push(a)}return e},t=new Map;export default function(s){var r=t.get(this);return r||(r=new Map,t.set(this,r)),(r=n(this,r.get(s)||(r.set(s,r=function(n){for(var t,s,r=1,e=\"\",u=\"\",h=[0],p=function(n){1===r&&(n||(e=e.replace(/^\\s*\\n\\s*|\\s*\\n\\s*$/g,\"\")))?h.push(0,n,e):3===r&&(n||e)?(h.push(3,n,e),r=2):2===r&&\"...\"===e&&n?h.push(4,n,0):2===r&&e&&!n?h.push(5,0,!0,e):r>=5&&((e||!n&&5===r)&&(h.push(r,0,e,s),r=6),n&&(h.push(r,n,0,s),r=6)),e=\"\"},a=0;a<n.length;a++){a&&(1===r&&p(),p(a));for(var l=0;l<n[a].length;l++)t=n[a][l],1===r?\"<\"===t?(p(),h=[h],r=3):e+=t:4===r?\"--\"===e&&\">\"===t?(r=1,e=\"\"):e=t+e[0]:u?t===u?u=\"\":e+=t:'\"'===t||\"'\"===t?u=t:\">\"===t?(p(),r=1):r&&(\"=\"===t?(r=5,s=e,e=\"\"):\"/\"===t&&(r<5||\">\"===n[a][l+1])?(p(),3===r&&(h=h[0]),r=h,(h=h[0]).push(2,0,r),r=0):\" \"===t||\"\\t\"===t||\"\\n\"===t||\"\\r\"===t?(p(),r=2):e+=t),3===r&&\"!--\"===e&&(r=4,h=h[0])}return p(),h}(s)),r),arguments,[])).length>1?r:r[0]}\n","import htm from 'htm';\nimport { flattenArray } from '../../shared/utils.js';\n\nconst ignoreChildren = [false, null, '', undefined];\n\nconst h = (type, props, ...children) => {\n return {\n type,\n props: props || {},\n children: flattenArray(children.filter((child) => ignoreChildren.indexOf(child) < 0)),\n };\n};\n\nconst $h = htm.bind(h);\n\nexport default $h;\n","export function vnode(sel, data, children, text, elm) {\n var key = data === undefined ? undefined : data.key;\n return { sel: sel, data: data, children: children,\n text: text, elm: elm, key: key };\n}\nexport default vnode;\n//# sourceMappingURL=vnode.js.map","export var array = Array.isArray;\nexport function primitive(s) {\n return typeof s === 'string' || typeof s === 'number';\n}\n//# sourceMappingURL=is.js.map","import { vnode } from './vnode.js';\nimport * as is from './is.js';\nfunction addNS(data, children, sel) {\n data.ns = 'http://www.w3.org/2000/svg';\n if (sel !== 'foreignObject' && children !== undefined) {\n for (var i = 0; i < children.length; ++i) {\n var childData = children[i].data;\n if (childData !== undefined) {\n addNS(childData, children[i].children, children[i].sel);\n }\n }\n }\n}\nexport function h(sel, b, c) {\n var data = {}, children, text, i;\n if (c !== undefined) {\n data = b;\n if (is.array(c)) {\n children = c;\n }\n else if (is.primitive(c)) {\n text = c;\n }\n else if (c && c.sel) {\n children = [c];\n }\n }\n else if (b !== undefined) {\n if (is.array(b)) {\n children = b;\n }\n else if (is.primitive(b)) {\n text = b;\n }\n else if (b && b.sel) {\n children = [b];\n }\n else {\n data = b;\n }\n }\n if (is.array(children)) {\n for (i = 0; i < children.length; ++i) {\n if (is.primitive(children[i]))\n children[i] = vnode(undefined, undefined, undefined, children[i], undefined);\n }\n }\n if (sel[0] === 's' && sel[1] === 'v' && sel[2] === 'g' &&\n (sel.length === 3 || sel[3] === '.' || sel[3] === '#')) {\n addNS(data, children, sel);\n }\n return vnode(sel, data, children, text, undefined);\n}\n;\nexport default h;\n//# sourceMappingURL=h.js.map\n","export default {};\n","/* eslint no-use-before-define: \"off\" */\n/* eslint import/no-named-as-default: \"off\" */\nimport h from './snabbdom/h.js';\nimport customComponents from './custom-components.js';\nimport { isObject, eventNameToColonCase } from '../../shared/utils.js';\n\nconst SELF_CLOSING =\n 'area base br col command embed hr img input keygen link menuitem meta param source track wbr'.split(\n ' ',\n );\nconst PROPS_ATTRS =\n 'hidden checked disabled readonly selected autofocus autoplay required multiple value indeterminate routeProps innerHTML'.split(\n ' ',\n );\nconst BOOLEAN_PROPS =\n 'hidden checked disabled readonly selected autofocus autoplay required multiple readOnly indeterminate'.split(\n ' ',\n );\n\nconst getTagName = (treeNode) => {\n return typeof treeNode.type === 'function'\n ? treeNode.type.name || 'CustomComponent'\n : treeNode.type;\n};\n\nconst toCamelCase = (name) => {\n return name\n .split('-')\n .map((word, index) => {\n if (index === 0) return word.toLowerCase();\n return word[0].toUpperCase() + word.substr(1);\n })\n .join('');\n};\nconst propsFromAttrs = (...args) => {\n const context = {};\n args.forEach((obj = {}) => {\n Object.keys(obj).forEach((key) => {\n context[toCamelCase(key)] = obj[key];\n });\n });\n\n return context;\n};\n\nconst createCustomComponent = ({ f7, treeNode, vnode, data }) => {\n const component =\n typeof treeNode.type === 'function' ? treeNode.type : customComponents[treeNode.type];\n f7.component\n .create(component, propsFromAttrs(data.attrs || {}, data.props || {}), {\n el: vnode.elm,\n children: treeNode.children,\n })\n .then((c) => {\n if (vnode.data && vnode.data.on && c && c.$el) {\n Object.keys(vnode.data.on).forEach((eventName) => {\n c.$el.on(eventName, vnode.data.on[eventName]);\n });\n }\n // eslint-disable-next-line\n vnode.elm.__component__ = c;\n });\n};\nconst updateCustomComponent = (vnode) => {\n // eslint-disable-next-line\n const component = vnode && vnode.elm && vnode.elm.__component__;\n if (!component) return;\n const newProps = propsFromAttrs(vnode.data.attrs || {}, vnode.data.props || {});\n component.children = vnode.data.treeNode.children;\n Object.assign(component.props, newProps);\n component.update();\n};\nconst destroyCustomComponent = (vnode) => {\n // eslint-disable-next-line\n const component = vnode && vnode.elm && vnode.elm.__component__;\n\n if (component) {\n const { el, $el } = component;\n if (vnode.data && vnode.data.on && $el) {\n Object.keys(vnode.data.on).forEach((eventName) => {\n $el.off(eventName, vnode.data.on[eventName]);\n });\n }\n if (component.destroy) component.destroy();\n if (el && el.parentNode) el.parentNode.removeChild(el);\n delete vnode.elm.__component__; // eslint-disable-line\n }\n};\n\nconst isCustomComponent = (treeNodeType) => {\n return (\n typeof treeNodeType === 'function' ||\n (treeNodeType && treeNodeType.indexOf('-') > 0 && customComponents[treeNodeType])\n );\n};\n\nfunction getHooks(treeNode, data, f7, initial, isRoot) {\n const hooks = {};\n const insert = [];\n const destroy = [];\n const update = [];\n const postpatch = [];\n let isFakeElement = false;\n let tagName = getTagName(treeNode);\n if (data && data.attrs && data.attrs.component) {\n tagName = data.attrs.component;\n delete data.attrs.component;\n isFakeElement = true;\n }\n\n const isCustom = isCustomComponent(treeNode.type);\n\n if (isCustom) {\n insert.push((vnode) => {\n if (vnode.sel !== tagName && !isFakeElement) return;\n createCustomComponent({ f7, treeNode, vnode, data });\n });\n destroy.push((vnode) => {\n destroyCustomComponent(vnode);\n });\n update.push((oldVnode, vnode) => {\n updateCustomComponent(vnode);\n });\n }\n\n if (!isCustom) {\n if (!data || !data.attrs || !data.attrs.class) return hooks;\n\n const classNames = data.attrs.class;\n classNames.split(' ').forEach((className) => {\n if (!initial) {\n insert.push(...f7.getVnodeHooks('insert', className));\n }\n destroy.push(...f7.getVnodeHooks('destroy', className));\n update.push(...f7.getVnodeHooks('update', className));\n postpatch.push(...f7.getVnodeHooks('postpatch', className));\n });\n }\n\n if (isRoot && !initial) {\n postpatch.push((oldVnode, vnode) => {\n const vn = vnode || oldVnode;\n if (!vn) return;\n if (vn.data && vn.data.component) {\n vn.data.component.hook('onUpdated');\n }\n });\n }\n if (\n insert.length === 0 &&\n destroy.length === 0 &&\n update.length === 0 &&\n postpatch.length === 0\n ) {\n return hooks;\n }\n\n if (insert.length) {\n hooks.insert = (vnode) => {\n insert.forEach((f) => f(vnode));\n };\n }\n if (destroy.length) {\n hooks.destroy = (vnode) => {\n destroy.forEach((f) => f(vnode));\n };\n }\n if (update.length) {\n hooks.update = (oldVnode, vnode) => {\n update.forEach((f) => f(oldVnode, vnode));\n };\n }\n if (postpatch.length) {\n hooks.postpatch = (oldVnode, vnode) => {\n postpatch.forEach((f) => f(oldVnode, vnode));\n };\n }\n\n return hooks;\n}\nconst getEventHandler = (eventHandler, { stop, prevent, once } = {}) => {\n let fired = false;\n\n function handler(...args) {\n const e = args[0];\n if (once && fired) return;\n if (stop) e.stopPropagation();\n if (prevent) e.preventDefault();\n fired = true;\n\n eventHandler(...args);\n }\n\n return handler;\n};\n\nconst getData = (treeNode, component, f7, initial, isRoot) => {\n const data = { component, treeNode };\n const tagName = getTagName(treeNode);\n Object.keys(treeNode.props).forEach((attrName) => {\n const attrValue = treeNode.props[attrName];\n if (typeof attrValue === 'undefined') return;\n if (PROPS_ATTRS.indexOf(attrName) >= 0) {\n // Props\n if (!data.props) data.props = {};\n if (attrName === 'readonly') {\n // eslint-disable-next-line\n attrName = 'readOnly';\n }\n if (attrName === 'routeProps') {\n // eslint-disable-next-line\n attrName = 'f7RouteProps';\n }\n if (tagName === 'option' && attrName === 'value') {\n if (!data.attrs) data.attrs = {};\n data.attrs.value = attrValue;\n }\n if (BOOLEAN_PROPS.indexOf(attrName) >= 0) {\n // eslint-disable-next-line\n data.props[attrName] = attrValue === false ? false : true;\n } else {\n data.props[attrName] = attrValue;\n }\n } else if (attrName === 'key') {\n // Key\n data.key = attrValue;\n } else if (\n attrName.indexOf('@') === 0 ||\n (attrName.indexOf('on') === 0 && attrName.length > 2)\n ) {\n // Events\n if (!data.on) data.on = {};\n let eventName =\n attrName.indexOf('@') === 0 ? attrName.substr(1) : eventNameToColonCase(attrName.substr(2));\n let stop = false;\n let prevent = false;\n let once = false;\n if (eventName.indexOf('.') >= 0) {\n eventName.split('.').forEach((eventNamePart, eventNameIndex) => {\n if (eventNameIndex === 0) eventName = eventNamePart;\n else {\n if (eventNamePart === 'stop') stop = true;\n if (eventNamePart === 'prevent') prevent = true;\n if (eventNamePart === 'once') once = true;\n }\n });\n }\n data.on[eventName] = getEventHandler(attrValue, { stop, prevent, once });\n } else if (attrName === 'style') {\n // Style\n if (typeof attrValue !== 'string') {\n data.style = attrValue;\n } else {\n if (!data.attrs) data.attrs = {};\n data.attrs.style = attrValue;\n }\n } else {\n // Rest of attribures\n if (!data.attrs) data.attrs = {};\n data.attrs[attrName] = attrValue;\n\n // ID -> Key\n if (attrName === 'id' && !data.key && !isRoot) {\n data.key = attrValue;\n }\n }\n });\n\n const hooks = getHooks(treeNode, data, f7, initial, isRoot);\n\n hooks.prepatch = (oldVnode, vnode) => {\n if (!oldVnode || !vnode) return;\n if (oldVnode && oldVnode.data && oldVnode.data.props) {\n Object.keys(oldVnode.data.props).forEach((key) => {\n if (BOOLEAN_PROPS.indexOf(key) < 0) return;\n if (!vnode.data) vnode.data = {};\n if (!vnode.data.props) vnode.data.props = {};\n if (oldVnode.data.props[key] === true && !(key in vnode.data.props)) {\n vnode.data.props[key] = false;\n }\n });\n }\n };\n\n data.hook = hooks;\n\n return data;\n};\n\nconst getChildren = (treeNode, component, f7, initial) => {\n if (treeNode && treeNode.type && SELF_CLOSING.indexOf(treeNode.type) >= 0) {\n return [];\n }\n const children = [];\n const nodes = treeNode.children;\n for (let i = 0; i < nodes.length; i += 1) {\n const childNode = nodes[i];\n const child = treeNodeToVNode(childNode, component, f7, initial, false);\n if (Array.isArray(child)) {\n children.push(...child);\n } else if (child) {\n children.push(child);\n }\n }\n return children;\n};\n\nconst getSlots = (treeNode, component, f7, initial) => {\n const slotName = treeNode.props.name || 'default';\n const slotNodes = (component.children || []).filter((childTreeNode) => {\n let childSlotName = 'default';\n if (childTreeNode.props) {\n childSlotName = childTreeNode.props.slot || 'default';\n }\n return childSlotName === slotName;\n });\n if (slotNodes.length === 0) {\n return getChildren(treeNode, component, f7, initial);\n }\n return slotNodes.map((subTreeNode) => treeNodeToVNode(subTreeNode, component, f7, initial));\n};\n\nconst isTreeNode = (treeNode) => {\n return isObject(treeNode) && 'props' in treeNode && 'type' in treeNode && 'children' in treeNode;\n};\n\nconst treeNodeToVNode = (treeNode, component, f7, initial, isRoot) => {\n if (!isTreeNode(treeNode)) {\n return String(treeNode);\n }\n if (treeNode.type === 'slot') {\n return getSlots(treeNode, component, f7, initial);\n }\n const data = getData(treeNode, component, f7, initial, isRoot);\n const children = isCustomComponent(treeNode.type)\n ? []\n : getChildren(treeNode, component, f7, initial);\n\n return h(getTagName(treeNode), data, children);\n};\n\nexport default function vdom(tree = {}, component, initial) {\n return treeNodeToVNode(tree, component, component.f7, initial, true);\n}\n","function createElement(tagName) {\n return document.createElement(tagName);\n}\nfunction createElementNS(namespaceURI, qualifiedName) {\n return document.createElementNS(namespaceURI, qualifiedName);\n}\nfunction createTextNode(text) {\n return document.createTextNode(text);\n}\nfunction createComment(text) {\n return document.createComment(text);\n}\nfunction insertBefore(parentNode, newNode, referenceNode) {\n if (referenceNode && referenceNode.parentNode !== parentNode) {\n if (referenceNode.__component__) referenceNode = referenceNode.__component__.el;\n }\n parentNode.insertBefore(newNode, referenceNode);\n}\nfunction removeChild(node, child) {\n if (!node) return;\n node.removeChild(child);\n}\nfunction appendChild(node, child) {\n node.appendChild(child);\n}\nfunction parentNode(node) {\n return node.parentNode;\n}\nfunction nextSibling(node) {\n return node.nextSibling;\n}\nfunction tagName(elm) {\n return elm.tagName;\n}\nfunction setTextContent(node, text) {\n node.textContent = text;\n}\nfunction getTextContent(node) {\n return node.textContent;\n}\nfunction isElement(node) {\n return node.nodeType === 1;\n}\nfunction isText(node) {\n return node.nodeType === 3;\n}\nfunction isComment(node) {\n return node.nodeType === 8;\n}\nexport var htmlDomApi = {\n createElement: createElement,\n createElementNS: createElementNS,\n createTextNode: createTextNode,\n createComment: createComment,\n insertBefore: insertBefore,\n removeChild: removeChild,\n appendChild: appendChild,\n parentNode: parentNode,\n nextSibling: nextSibling,\n tagName: tagName,\n setTextContent: setTextContent,\n getTextContent: getTextContent,\n isElement: isElement,\n isText: isText,\n isComment: isComment,\n};\nexport default htmlDomApi;\n//# sourceMappingURL=htmldomapi.js.map\n","import vnode from './vnode.js';\nimport * as is from './is.js';\nimport htmlDomApi from './htmldomapi.js';\nfunction isUndef(s) { return s === undefined; }\nfunction isDef(s) { return s !== undefined; }\nvar emptyNode = vnode('', {}, [], undefined, undefined);\nfunction sameVnode(vnode1, vnode2) {\n return vnode1.key === vnode2.key && vnode1.sel === vnode2.sel;\n}\nfunction isVnode(vnode) {\n return vnode.sel !== undefined;\n}\nfunction createKeyToOldIdx(children, beginIdx, endIdx) {\n var i, map = {}, key, ch;\n for (i = beginIdx; i <= endIdx; ++i) {\n ch = children[i];\n if (ch != null) {\n key = ch.key;\n if (key !== undefined)\n map[key] = i;\n }\n }\n return map;\n}\nvar hooks = ['create', 'update', 'remove', 'destroy', 'pre', 'post'];\nexport { h } from './h';\nexport { thunk } from './thunk';\nexport function init(modules, domApi) {\n var i, j, cbs = {};\n var api = domApi !== undefined ? domApi : htmlDomApi;\n for (i = 0; i < hooks.length; ++i) {\n cbs[hooks[i]] = [];\n for (j = 0; j < modules.length; ++j) {\n var hook = modules[j][hooks[i]];\n if (hook !== undefined) {\n cbs[hooks[i]].push(hook);\n }\n }\n }\n function emptyNodeAt(elm) {\n var id = elm.id ? '#' + elm.id : '';\n var c = elm.className ? '.' + elm.className.split(' ').join('.') : '';\n return vnode(api.tagName(elm).toLowerCase() + id + c, {}, [], undefined, elm);\n }\n function createRmCb(childElm, listeners) {\n return function rmCb() {\n if (--listeners === 0) {\n var parent_1 = api.parentNode(childElm);\n api.removeChild(parent_1, childElm);\n }\n };\n }\n function createElm(vnode, insertedVnodeQueue) {\n var i, data = vnode.data;\n if (data !== undefined) {\n if (isDef(i = data.hook) && isDef(i = i.init)) {\n i(vnode);\n data = vnode.data;\n }\n }\n var children = vnode.children, sel = vnode.sel;\n if (sel === '!') {\n if (isUndef(vnode.text)) {\n vnode.text = '';\n }\n vnode.elm = api.createComment(vnode.text);\n }\n else if (sel !== undefined) {\n // Parse selector\n var hashIdx = sel.indexOf('#');\n var dotIdx = sel.indexOf('.', hashIdx);\n var hash = hashIdx > 0 ? hashIdx : sel.length;\n var dot = dotIdx > 0 ? dotIdx : sel.length;\n var tag = hashIdx !== -1 || dotIdx !== -1 ? sel.slice(0, Math.min(hash, dot)) : sel;\n var elm = vnode.elm = isDef(data) && isDef(i = data.ns) ? api.createElementNS(i, tag)\n : api.createElement(tag);\n if (hash < dot)\n elm.setAttribute('id', sel.slice(hash + 1, dot));\n if (dotIdx > 0)\n elm.setAttribute('class', sel.slice(dot + 1).replace(/\\./g, ' '));\n for (i = 0; i < cbs.create.length; ++i)\n cbs.create[i](emptyNode, vnode);\n if (is.array(children)) {\n for (i = 0; i < children.length; ++i) {\n var ch = children[i];\n if (ch != null) {\n api.appendChild(elm, createElm(ch, insertedVnodeQueue));\n }\n }\n }\n else if (is.primitive(vnode.text)) {\n api.appendChild(elm, api.createTextNode(vnode.text));\n }\n i = vnode.data.hook; // Reuse variable\n if (isDef(i)) {\n if (i.create)\n i.create(emptyNode, vnode);\n if (i.insert)\n insertedVnodeQueue.push(vnode);\n }\n }\n else {\n vnode.elm = api.createTextNode(vnode.text);\n }\n return vnode.elm;\n }\n function addVnodes(parentElm, before, vnodes, startIdx, endIdx, insertedVnodeQueue) {\n for (; startIdx <= endIdx; ++startIdx) {\n var ch = vnodes[startIdx];\n if (ch != null) {\n api.insertBefore(parentElm, createElm(ch, insertedVnodeQueue), before);\n }\n }\n }\n function invokeDestroyHook(vnode) {\n var i, j, data = vnode.data;\n if (data !== undefined) {\n if (isDef(i = data.hook) && isDef(i = i.destroy))\n i(vnode);\n for (i = 0; i < cbs.destroy.length; ++i)\n cbs.destroy[i](vnode);\n if (vnode.children !== undefined) {\n for (j = 0; j < vnode.children.length; ++j) {\n i = vnode.children[j];\n if (i != null && typeof i !== \"string\") {\n invokeDestroyHook(i);\n }\n }\n }\n }\n }\n function removeVnodes(parentElm, vnodes, startIdx, endIdx) {\n for (; startIdx <= endIdx; ++startIdx) {\n var i_1 = void 0, listeners = void 0, rm = void 0, ch = vnodes[startIdx];\n if (ch != null) {\n if (isDef(ch.sel)) {\n invokeDestroyHook(ch);\n listeners = cbs.remove.length + 1;\n rm = createRmCb(ch.elm, listeners);\n for (i_1 = 0; i_1 < cbs.remove.length; ++i_1)\n cbs.remove[i_1](ch, rm);\n if (isDef(i_1 = ch.data) && isDef(i_1 = i_1.hook) && isDef(i_1 = i_1.remove)) {\n i_1(ch, rm);\n }\n else {\n rm();\n }\n }\n else {\n api.removeChild(parentElm, ch.elm);\n }\n }\n }\n }\n function updateChildren(parentElm, oldCh, newCh, insertedVnodeQueue) {\n var oldStartIdx = 0, newStartIdx = 0;\n var oldEndIdx = oldCh.length - 1;\n var oldStartVnode = oldCh[0];\n var oldEndVnode = oldCh[oldEndIdx];\n var newEndIdx = newCh.length - 1;\n var newStartVnode = newCh[0];\n var newEndVnode = newCh[newEndIdx];\n var oldKeyToIdx;\n var idxInOld;\n var elmToMove;\n var before;\n while (oldStartIdx <= oldEndIdx && newStartIdx <= newEndIdx) {\n if (oldStartVnode == null) {\n oldStartVnode = oldCh[++oldStartIdx]; // Vnode might have been moved left\n }\n else if (oldEndVnode == null) {\n oldEndVnode = oldCh[--oldEndIdx];\n }\n else if (newStartVnode == null) {\n newStartVnode = newCh[++newStartIdx];\n }\n else if (newEndVnode == null) {\n newEndVnode = newCh[--newEndIdx];\n }\n else if (sameVnode(oldStartVnode, newStartVnode)) {\n patchVnode(oldStartVnode, newStartVnode, insertedVnodeQueue);\n oldStartVnode = oldCh[++oldStartIdx];\n newStartVnode = newCh[++newStartIdx];\n }\n else if (sameVnode(oldEndVnode, newEndVnode)) {\n patchVnode(oldEndVnode, newEndVnode, insertedVnodeQueue);\n oldEndVnode = oldCh[--oldEndIdx];\n newEndVnode = newCh[--newEndIdx];\n }\n else if (sameVnode(oldStartVnode, newEndVnode)) {\n patchVnode(oldStartVnode, newEndVnode, insertedVnodeQueue);\n api.insertBefore(parentElm, oldStartVnode.elm, api.nextSibling(oldEndVnode.elm));\n oldStartVnode = oldCh[++oldStartIdx];\n newEndVnode = newCh[--newEndIdx];\n }\n else if (sameVnode(oldEndVnode, newStartVnode)) {\n patchVnode(oldEndVnode, newStartVnode, insertedVnodeQueue);\n api.insertBefore(parentElm, oldEndVnode.elm, oldStartVnode.elm);\n oldEndVnode = oldCh[--oldEndIdx];\n newStartVnode = newCh[++newStartIdx];\n }\n else {\n if (oldKeyToIdx === undefined) {\n oldKeyToIdx = createKeyToOldIdx(oldCh, oldStartIdx, oldEndIdx);\n }\n idxInOld = oldKeyToIdx[newStartVnode.key];\n if (isUndef(idxInOld)) {\n api.insertBefore(parentElm, createElm(newStartVnode, insertedVnodeQueue), oldStartVnode.elm);\n newStartVnode = newCh[++newStartIdx];\n }\n else {\n elmToMove = oldCh[idxInOld];\n if (elmToMove.sel !== newStartVnode.sel) {\n api.insertBefore(parentElm, createElm(newStartVnode, insertedVnodeQueue), oldStartVnode.elm);\n }\n else {\n patchVnode(elmToMove, newStartVnode, insertedVnodeQueue);\n oldCh[idxInOld] = undefined;\n api.insertBefore(parentElm, elmToMove.elm, oldStartVnode.elm);\n }\n newStartVnode = newCh[++newStartIdx];\n }\n }\n }\n if (oldStartIdx <= oldEndIdx || newStartIdx <= newEndIdx) {\n if (oldStartIdx > oldEndIdx) {\n before = newCh[newEndIdx + 1] == null ? null : newCh[newEndIdx + 1].elm;\n addVnodes(parentElm, before, newCh, newStartIdx, newEndIdx, insertedVnodeQueue);\n }\n else {\n removeVnodes(parentElm, oldCh, oldStartIdx, oldEndIdx);\n }\n }\n }\n function patchVnode(oldVnode, vnode, insertedVnodeQueue) {\n var i, hook;\n if (isDef(i = vnode.data) && isDef(hook = i.hook) && isDef(i = hook.prepatch)) {\n i(oldVnode, vnode);\n }\n var elm = vnode.elm = oldVnode.elm;\n var oldCh = oldVnode.children;\n var ch = vnode.children;\n if (oldVnode === vnode)\n return;\n if (vnode.data !== undefined) {\n for (i = 0; i < cbs.update.length; ++i)\n cbs.update[i](oldVnode, vnode);\n i = vnode.data.hook;\n if (isDef(i) && isDef(i = i.update))\n i(oldVnode, vnode);\n }\n if (isUndef(vnode.text)) {\n if (isDef(oldCh) && isDef(ch)) {\n if (oldCh !== ch)\n updateChildren(elm, oldCh, ch, insertedVnodeQueue);\n }\n else if (isDef(ch)) {\n if (isDef(oldVnode.text))\n api.setTextContent(elm, '');\n addVnodes(elm, null, ch, 0, ch.length - 1, insertedVnodeQueue);\n }\n else if (isDef(oldCh)) {\n removeVnodes(elm, oldCh, 0, oldCh.length - 1);\n }\n else if (isDef(oldVnode.text)) {\n api.setTextContent(elm, '');\n }\n }\n else if (oldVnode.text !== vnode.text) {\n api.setTextContent(elm, vnode.text);\n }\n if (isDef(hook) && isDef(i = hook.postpatch)) {\n i(oldVnode, vnode);\n }\n }\n return function patch(oldVnode, vnode) {\n var i, elm, parent;\n var insertedVnodeQueue = [];\n for (i = 0; i < cbs.pre.length; ++i)\n cbs.pre[i]();\n if (!isVnode(oldVnode)) {\n oldVnode = emptyNodeAt(oldVnode);\n }\n if (sameVnode(oldVnode, vnode)) {\n patchVnode(oldVnode, vnode, insertedVnodeQueue);\n }\n else {\n elm = oldVnode.elm;\n parent = api.parentNode(elm);\n createElm(vnode, insertedVnodeQueue);\n if (parent !== null) {\n api.insertBefore(parent, vnode.elm, api.nextSibling(elm));\n removeVnodes(parent, [oldVnode], 0, 0);\n }\n }\n for (i = 0; i < insertedVnodeQueue.length; ++i) {\n insertedVnodeQueue[i].data.hook.insert(insertedVnodeQueue[i]);\n }\n for (i = 0; i < cbs.post.length; ++i)\n cbs.post[i]();\n return vnode;\n };\n}\n//# sourceMappingURL=snabbdom.js.map\n","var xlinkNS = 'http://www.w3.org/1999/xlink';\nvar xmlNS = 'http://www.w3.org/XML/1998/namespace';\nvar colonChar = 58;\nvar xChar = 120;\nfunction updateAttrs(oldVnode, vnode) {\n var key, elm = vnode.elm, oldAttrs = oldVnode.data.attrs, attrs = vnode.data.attrs;\n if (!oldAttrs && !attrs)\n return;\n if (oldAttrs === attrs)\n return;\n oldAttrs = oldAttrs || {};\n attrs = attrs || {};\n // update modified attributes, add new attributes\n for (key in attrs) {\n var cur = attrs[key];\n var old = oldAttrs[key];\n if (old !== cur) {\n if (cur === true) {\n elm.setAttribute(key, \"\");\n }\n else if (cur === false) {\n elm.removeAttribute(key);\n }\n else {\n if (key.charCodeAt(0) !== xChar) {\n elm.setAttribute(key, cur);\n }\n else if (key.charCodeAt(3) === colonChar) {\n // Assume xml namespace\n elm.setAttributeNS(xmlNS, key, cur);\n }\n else if (key.charCodeAt(5) === colonChar) {\n // Assume xlink namespace\n elm.setAttributeNS(xlinkNS, key, cur);\n }\n else {\n elm.setAttribute(key, cur);\n }\n }\n }\n }\n // remove removed attributes\n // use `in` operator since the previous `for` iteration uses it (.i.e. add even attributes with undefined value)\n // the other option is to remove all attributes with value == undefined\n for (key in oldAttrs) {\n if (!(key in attrs)) {\n elm.removeAttribute(key);\n }\n }\n}\nexport var attributesModule = { create: updateAttrs, update: updateAttrs };\nexport default attributesModule;\n//# sourceMappingURL=attributes.js.map","function updateProps(oldVnode, vnode) {\n var key, cur, old, elm = vnode.elm, oldProps = oldVnode.data.props, props = vnode.data.props;\n if (!oldProps && !props)\n return;\n if (oldProps === props)\n return;\n oldProps = oldProps || {};\n props = props || {};\n for (key in oldProps) {\n if (!props[key]) {\n delete elm[key];\n }\n }\n for (key in props) {\n cur = props[key];\n old = oldProps[key];\n if (old !== cur && (key !== 'value' || elm[key] !== cur)) {\n elm[key] = cur;\n }\n }\n}\nexport var propsModule = { create: updateProps, update: updateProps };\nexport default propsModule;\n//# sourceMappingURL=props.js.map","var raf = (typeof window !== 'undefined' && window.requestAnimationFrame) || setTimeout;\nvar nextFrame = function (fn) { raf(function () { raf(fn); }); };\nfunction setNextFrame(obj, prop, val) {\n nextFrame(function () { obj[prop] = val; });\n}\nfunction updateStyle(oldVnode, vnode) {\n var cur, name, elm = vnode.elm, oldStyle = oldVnode.data.style, style = vnode.data.style;\n if (!oldStyle && !style)\n return;\n if (oldStyle === style)\n return;\n oldStyle = oldStyle || {};\n style = style || {};\n var oldHasDel = 'delayed' in oldStyle;\n for (name in oldStyle) {\n if (!style[name]) {\n if (name[0] === '-' && name[1] === '-') {\n elm.style.removeProperty(name);\n }\n else {\n elm.style[name] = '';\n }\n }\n }\n for (name in style) {\n cur = style[name];\n if (name === 'delayed' && style.delayed) {\n for (var name2 in style.delayed) {\n cur = style.delayed[name2];\n if (!oldHasDel || cur !== oldStyle.delayed[name2]) {\n setNextFrame(elm.style, name2, cur);\n }\n }\n }\n else if (name !== 'remove' && cur !== oldStyle[name]) {\n if (name[0] === '-' && name[1] === '-') {\n elm.style.setProperty(name, cur);\n }\n else {\n elm.style[name] = cur;\n }\n }\n }\n}\nfunction applyDestroyStyle(vnode) {\n var style, name, elm = vnode.elm, s = vnode.data.style;\n if (!s || !(style = s.destroy))\n return;\n for (name in style) {\n elm.style[name] = style[name];\n }\n}\nfunction applyRemoveStyle(vnode, rm) {\n var s = vnode.data.style;\n if (!s || !s.remove) {\n rm();\n return;\n }\n var name, elm = vnode.elm, i = 0, compStyle, style = s.remove, amount = 0, applied = [];\n for (name in style) {\n applied.push(name);\n elm.style[name] = style[name];\n }\n compStyle = getComputedStyle(elm);\n var props = compStyle['transition-property'].split(', ');\n for (; i < props.length; ++i) {\n if (applied.indexOf(props[i]) !== -1)\n amount++;\n }\n elm.addEventListener('transitionend', function (ev) {\n if (ev.target === elm)\n --amount;\n if (amount === 0)\n rm();\n });\n}\nexport var styleModule = {\n create: updateStyle,\n update: updateStyle,\n destroy: applyDestroyStyle,\n remove: applyRemoveStyle\n};\nexport default styleModule;\n//# sourceMappingURL=style.js.map","import $ from '../../shared/dom7.js';\n\nfunction invokeHandler(handler, event, args) {\n if (typeof handler === 'function') {\n // call function handler\n handler(event, ...args);\n }\n}\nfunction handleEvent(event, args, vnode) {\n const name = event.type;\n const on = vnode.data.on;\n // call event handler(s) if exists\n if (on && on[name]) {\n invokeHandler(on[name], event, args, vnode);\n }\n}\nfunction createListener() {\n return function handler(event, ...args) {\n handleEvent(event, args, handler.vnode);\n };\n}\nfunction updateEvents(oldVnode, vnode) {\n const oldOn = oldVnode.data.on;\n const oldListener = oldVnode.listener;\n const oldElm = oldVnode.elm;\n const on = vnode && vnode.data.on;\n const elm = vnode && vnode.elm;\n // optimization for reused immutable handlers\n if (oldOn === on) {\n return;\n }\n // remove existing listeners which no longer used\n if (oldOn && oldListener) {\n // if element changed or deleted we remove all existing listeners unconditionally\n if (!on) {\n Object.keys(oldOn).forEach((name) => {\n $(oldElm).off(name, oldListener);\n });\n } else {\n Object.keys(oldOn).forEach((name) => {\n if (!on[name]) {\n $(oldElm).off(name, oldListener);\n }\n });\n }\n }\n // add new listeners which has not already attached\n if (on) {\n // reuse existing listener or create new\n const listener = oldVnode.listener || createListener();\n vnode.listener = listener;\n // update vnode for listener\n listener.vnode = vnode;\n // if element changed or added we add all needed listeners unconditionally\n if (!oldOn) {\n Object.keys(on).forEach((name) => {\n $(elm).on(name, listener);\n });\n } else {\n Object.keys(on).forEach((name) => {\n if (!oldOn[name]) {\n $(elm).on(name, listener);\n }\n });\n }\n }\n}\n\nexport default {\n create: updateEvents,\n update: updateEvents,\n destroy: updateEvents,\n};\n","/* eslint import/no-named-as-default: off */\nimport { init } from './snabbdom/snabbdom.js';\nimport attributesModule from './snabbdom/modules/attributes.js';\nimport propsModule from './snabbdom/modules/props.js';\nimport styleModule from './snabbdom/modules/style.js';\nimport eventListenersModule from './eventslisteners.js';\n\nconst patch = init([attributesModule, propsModule, styleModule, eventListenersModule]);\n\nexport default patch;\n","/* eslint no-underscore-dangle: \"off\" */\nimport { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport $h from './$h.js';\nimport { id as generateId, merge, eventNameToColonCase, deleteProps } from '../../shared/utils.js';\nimport vdom from './vdom.js';\nimport patch from './patch.js';\n\nclass Component {\n constructor(app, component, props = {}, { el, context, children } = {}) {\n const document = getDocument();\n merge(this, {\n f7: app,\n props: props || {},\n context: context || {},\n id: component.id || generateId(),\n children: children || [],\n theme: {\n ios: app.theme === 'ios',\n md: app.theme === 'md',\n aurora: app.theme === 'aurora',\n },\n style: component.style,\n __updateQueue: [],\n __eventHandlers: [],\n __onceEventHandlers: [],\n __onBeforeMount: [],\n __onMounted: [],\n __onBeforeUpdate: [],\n __onUpdated: [],\n __onBeforeUnmount: [],\n __onUnmounted: [],\n });\n\n const createComponent = () => {\n return component(this.props, this.getComponentContext(true));\n };\n\n const getRenderFuncion = (componentResult) =>\n new Promise((resolve, reject) => {\n if (typeof componentResult === 'function') {\n resolve(componentResult);\n } else if (componentResult instanceof Promise) {\n componentResult\n .then((render) => {\n resolve(render);\n })\n .catch((err) => {\n reject(err);\n });\n } else {\n reject(\n new Error(\n 'Framework7: Component render function is not a \"function\" type. Didn\\'t you forget to \"return $render\"?',\n ),\n );\n }\n });\n\n return new Promise((resolve, reject) => {\n const componentResult = createComponent();\n getRenderFuncion(componentResult)\n .then((render) => {\n this.renderFunction = render;\n\n const tree = this.render();\n\n if (el) {\n this.vnode = vdom(tree, this, true);\n if (this.style) {\n this.styleEl = document.createElement('style');\n this.styleEl.innerHTML = this.style;\n }\n this.el = el;\n patch(this.el, this.vnode);\n this.el = this.vnode.elm;\n this.$el = $(this.el);\n\n this.attachEvents();\n this.el.f7Component = this;\n this.mount();\n resolve(this);\n return;\n }\n // Make Dom\n if (tree) {\n this.vnode = vdom(tree, this, true);\n this.el = document.createElement(this.vnode.sel || 'div');\n patch(this.el, this.vnode);\n this.$el = $(this.el);\n }\n if (this.style) {\n this.styleEl = document.createElement('style');\n this.styleEl.innerHTML = this.style;\n }\n\n this.attachEvents();\n\n if (this.el) {\n this.el.f7Component = this;\n }\n\n resolve(this);\n })\n .catch((err) => {\n reject(err);\n });\n });\n }\n\n on(eventName, handler) {\n if (!this.__eventHandlers) return;\n this.__eventHandlers.push({ eventName, handler });\n }\n\n once(eventName, handler) {\n if (!this.__eventHandlers) return;\n this.__onceEventHandlers.push({ eventName, handler });\n }\n\n getComponentRef() {\n const self = this;\n return (initialValue) => {\n let value = initialValue;\n const obj = {};\n Object.defineProperty(obj, 'value', {\n get() {\n return value;\n },\n set(v) {\n value = v;\n self.update();\n },\n });\n return obj;\n };\n }\n\n getComponentStore() {\n const { state, _gettersPlain, dispatch } = this.f7.store;\n const $store = {\n state,\n dispatch,\n };\n $store.getters = new Proxy(_gettersPlain, {\n get: (target, prop) => {\n const obj = target[prop];\n const callback = (v) => {\n obj.value = v;\n this.update();\n };\n obj.onUpdated(callback);\n return obj;\n },\n });\n\n return $store;\n }\n\n getComponentContext(includeHooks) {\n const ctx = {\n $f7route: this.context.f7route,\n $f7router: this.context.f7router,\n $h,\n $,\n $id: this.id,\n $f7: this.f7,\n $f7ready: this.f7ready.bind(this),\n $theme: this.theme,\n $tick: this.tick.bind(this),\n $update: this.update.bind(this),\n $emit: this.emit.bind(this),\n $store: this.getComponentStore(),\n $ref: this.getComponentRef(),\n $el: {},\n };\n Object.defineProperty(ctx.$el, 'value', {\n get: () => {\n return this.$el;\n },\n });\n if (includeHooks)\n Object.assign(ctx, {\n $on: this.on.bind(this),\n $once: this.once.bind(this),\n $onBeforeMount: (handler) => this.__onBeforeMount.push(handler),\n $onMounted: (handler) => this.__onMounted.push(handler),\n $onBeforeUpdate: (handler) => this.__onBeforeUpdate.push(handler),\n $onUpdated: (handler) => this.__onUpdated.push(handler),\n $onBeforeUnmount: (handler) => this.__onBeforeUnmount.push(handler),\n $onUnmounted: (handler) => this.__onUnmounted.push(handler),\n });\n\n return ctx;\n }\n\n render() {\n return this.renderFunction(this.getComponentContext());\n }\n\n emit(name, data) {\n if (!this.el) return;\n this.$el.trigger(name, data);\n }\n\n attachEvents() {\n const { $el } = this;\n if (!this.__eventHandlers) return;\n this.__eventHandlers.forEach(({ eventName, handler }) => {\n $el.on(eventNameToColonCase(eventName), handler);\n });\n this.__onceEventHandlers.forEach(({ eventName, handler }) => {\n $el.once(eventNameToColonCase(eventName), handler);\n });\n }\n\n detachEvents() {\n const { $el } = this;\n if (!this.__eventHandlers) return;\n this.__eventHandlers.forEach(({ eventName, handler }) => {\n $el.on(eventNameToColonCase(eventName), handler);\n });\n this.__onceEventHandlers.forEach(({ eventName, handler }) => {\n $el.once(eventNameToColonCase(eventName), handler);\n });\n }\n\n startUpdateQueue() {\n const window = getWindow();\n if (this.__requestAnimationFrameId) return;\n const update = () => {\n this.hook('onBeforeUpdate');\n const tree = this.render();\n\n // Make Dom\n if (tree) {\n const newVNode = vdom(tree, this, false);\n this.vnode = patch(this.vnode, newVNode);\n }\n };\n this.__requestAnimationFrameId = window.requestAnimationFrame(() => {\n if (this.__updateIsPending) update();\n let resolvers = [...this.__updateQueue];\n this.__updateQueue = [];\n this.__updateIsPending = false;\n window.cancelAnimationFrame(this.__requestAnimationFrameId);\n delete this.__requestAnimationFrameId;\n delete this.__updateIsPending;\n resolvers.forEach((resolver) => resolver());\n resolvers = [];\n });\n }\n\n tick(callback) {\n return new Promise((resolve) => {\n function resolver() {\n resolve();\n if (callback) callback();\n }\n this.__updateQueue.push(resolver);\n this.startUpdateQueue();\n });\n }\n\n update(callback) {\n if (this.__destroyed) return new Promise(() => {});\n return new Promise((resolve) => {\n const resolver = () => {\n resolve();\n if (callback) callback();\n };\n this.__updateIsPending = true;\n this.__updateQueue.push(resolver);\n this.startUpdateQueue();\n });\n }\n\n setState(callback) {\n return this.update(callback);\n }\n\n f7ready(callback) {\n if (this.f7.initialized) {\n callback(this.f7);\n return;\n }\n this.f7.once('init', () => {\n callback(this.f7);\n });\n }\n\n mount(mountMethod) {\n this.hook('onBeforeMount', this.$el);\n if (this.styleEl) $('head').append(this.styleEl);\n if (mountMethod) mountMethod(this.el);\n this.hook('onMounted', this.$el);\n }\n\n destroy() {\n if (this.__destroyed) return;\n const window = getWindow();\n this.hook('onBeforeUnmount');\n\n if (this.styleEl) $(this.styleEl).remove();\n\n this.detachEvents();\n this.hook('onUnmounted');\n // Delete component instance\n if (this.el && this.el.f7Component) {\n this.el.f7Component = null;\n delete this.el.f7Component;\n }\n // Patch with empty node\n if (this.vnode) {\n this.vnode = patch(this.vnode, { sel: this.vnode.sel, data: {} });\n }\n // Clear update queue\n window.cancelAnimationFrame(this.__requestAnimationFrameId);\n this.__updateQueue = [];\n this.__eventHandlers = [];\n this.__onceEventHandlers = [];\n this.__onBeforeMount = [];\n this.__onMounted = [];\n this.__onBeforeUpdate = [];\n this.__onUpdated = [];\n this.__onBeforeUnmount = [];\n this.__onUnmounted = [];\n // Delete all props\n deleteProps(this);\n this.__destroyed = true;\n }\n\n hook(name, ...args) {\n if (this.__destroyed) return;\n this[`__${name}`].forEach((handler) => {\n handler(...args);\n });\n }\n}\n\nexport default Component;\n","import Component from './component-class.js';\nimport parseComponent from './parse-component.js';\nimport customComponents from './custom-components.js';\nimport $jsx from './$jsx.js';\n\nfunction registerComponent(tagName, component) {\n customComponents[tagName] = component;\n}\n\nfunction unregisterComponent(tagName) {\n delete customComponents[tagName];\n}\n\nexport { Component, $jsx };\nexport default {\n name: 'component',\n static: {\n Component,\n registerComponent,\n unregisterComponent,\n },\n create() {\n const app = this;\n app.component = {\n registerComponent,\n unregisterComponent,\n parse(componentString) {\n return parseComponent(componentString);\n },\n create(component, props, { root, el, context, children }) {\n return new Component(app, component, props, { root, el, context, children });\n },\n };\n },\n};\n","import { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { id } from '../../shared/utils.js';\n\nfunction parseComponent(componentString) {\n const window = getWindow();\n const document = getDocument();\n const componentId = id();\n const callbackCreateName = `f7_component_create_callback_${componentId}`;\n\n // Template\n let template;\n const hasTemplate = componentString.match(/<template([ ]?)([a-z0-9-]*)>/);\n if (hasTemplate) {\n template = componentString\n .split(/<template[ ]?[a-z0-9-]*>/)\n .filter((item, index) => index > 0)\n .join('<template>')\n .split('</template>')\n .filter((item, index, arr) => index < arr.length - 1)\n .join('</template>')\n .replace(/{{#raw}}([ \\n]*)<template/g, '{{#raw}}<template')\n .replace(/\\/template>([ \\n]*){{\\/raw}}/g, '/template>{{/raw}}')\n .replace(/([ \\n])<template/g, '$1{{#raw}}<template')\n .replace(/\\/template>([ \\n])/g, '/template>{{/raw}}$1');\n }\n\n // Parse Styles\n let style = null;\n\n if (componentString.indexOf('<style>') >= 0) {\n style = componentString.split('<style>')[1].split('</style>')[0];\n }\n if (componentString.indexOf('<style scoped>') >= 0) {\n style = componentString.split('<style scoped>')[1].split('</style>')[0];\n }\n\n // Parse Script\n let scriptContent;\n if (componentString.indexOf('<script>') >= 0) {\n const scripts = componentString.split('<script>');\n scriptContent = scripts[scripts.length - 1].split('</script>')[0].trim();\n } else {\n scriptContent = 'return () => {return $render}';\n }\n if (!scriptContent || !scriptContent.trim()) scriptContent = 'return () => {return $render}';\n\n // Parse Template\n if (template) {\n scriptContent = scriptContent\n .replace(\n '$render',\n `function ($$ctx) {\n var $ = $$ctx.$$;\n var $h = $$ctx.$h;\n var $root = $$ctx.$root;\n var $f7 = $$ctx.$f7;\n var $f7route = $$ctx.$f7route;\n var $f7router = $$ctx.$f7router;\n var $theme = $$ctx.$theme;\n var $update = $$ctx.$update;\n var $store = $$ctx.$store;\n var $ref = $$ctx.$ref;\n\n return $h\\`${template}\\`\n }\n `,\n )\n .replace(/export default/g, 'return');\n }\n\n // Execute Script\n scriptContent = `window.${callbackCreateName} = function () {${scriptContent}}`;\n\n // Insert Script El\n const scriptEl = document.createElement('script');\n scriptEl.innerHTML = scriptContent;\n $('head').append(scriptEl);\n\n const component = window[callbackCreateName]();\n\n // Remove Script El\n $(scriptEl).remove();\n window[callbackCreateName] = null;\n delete window[callbackCreateName];\n\n // Assign Style\n if (style) {\n component.style = style;\n }\n\n // Component ID\n component.id = componentId;\n return component;\n}\n\nexport default parseComponent;\n","import History from '../../shared/history.js';\n\nexport default {\n name: 'history',\n static: {\n history: History,\n },\n on: {\n init() {\n History.init(this);\n },\n },\n};\n","import { getWindow } from 'ssr-window';\nimport { extend } from '../../shared/utils.js';\n\nconst SW = {\n registrations: [],\n register(path, scope) {\n const app = this;\n const window = getWindow();\n\n if (!('serviceWorker' in window.navigator) || !app.serviceWorker.container) {\n return new Promise((resolve, reject) => {\n reject(new Error('Service worker is not supported'));\n });\n }\n return new Promise((resolve, reject) => {\n app.serviceWorker.container\n .register(path, scope ? { scope } : {})\n .then((reg) => {\n SW.registrations.push(reg);\n app.emit('serviceWorkerRegisterSuccess', reg);\n resolve(reg);\n })\n .catch((error) => {\n app.emit('serviceWorkerRegisterError', error);\n reject(error);\n });\n });\n },\n unregister(registration) {\n const app = this;\n const window = getWindow();\n if (!('serviceWorker' in window.navigator) || !app.serviceWorker.container) {\n return new Promise((resolve, reject) => {\n reject(new Error('Service worker is not supported'));\n });\n }\n let registrations;\n if (!registration) registrations = SW.registrations;\n else if (Array.isArray(registration)) registrations = registration;\n else registrations = [registration];\n return Promise.all(\n registrations.map(\n (reg) =>\n new Promise((resolve, reject) => {\n reg\n .unregister()\n .then(() => {\n if (SW.registrations.indexOf(reg) >= 0) {\n SW.registrations.splice(SW.registrations.indexOf(reg), 1);\n }\n app.emit('serviceWorkerUnregisterSuccess', reg);\n resolve();\n })\n .catch((error) => {\n app.emit('serviceWorkerUnregisterError', reg, error);\n reject(error);\n });\n }),\n ),\n );\n },\n};\n\nexport default {\n name: 'sw',\n params: {\n serviceWorker: {\n path: undefined,\n scope: undefined,\n },\n },\n create() {\n const app = this;\n const window = getWindow();\n extend(app, {\n serviceWorker: {\n container: 'serviceWorker' in window.navigator ? window.navigator.serviceWorker : undefined,\n registrations: SW.registrations,\n register: SW.register.bind(app),\n unregister: SW.unregister.bind(app),\n },\n });\n },\n on: {\n init() {\n const window = getWindow();\n if (!('serviceWorker' in window.navigator)) return;\n const app = this;\n if (app.device.cordova || (window.Capacitor && window.Capacitor.isNative)) return;\n if (!app.serviceWorker.container) return;\n const paths = app.params.serviceWorker.path;\n const scope = app.params.serviceWorker.scope;\n if (!paths || (Array.isArray(paths) && !paths.length)) return;\n const toRegister = Array.isArray(paths) ? paths : [paths];\n toRegister.forEach((path) => {\n app.serviceWorker.register(path, scope);\n });\n },\n },\n};\n","/* eslint-disable no-underscore-dangle */\nimport { extend } from '../../shared/utils.js';\n\nfunction createStore(storeParams = {}) {\n const store = {\n __store: true,\n };\n const originalState = { ...(storeParams.state || {}) };\n const actions = { ...(storeParams.actions || {}) };\n const getters = { ...(storeParams.getters || {}) };\n const state = extend({}, originalState);\n\n let propsQueue = [];\n const gettersDependencies = {};\n const gettersCallbacks = {};\n\n Object.keys(getters).forEach((getterKey) => {\n gettersDependencies[getterKey] = [];\n gettersCallbacks[getterKey] = [];\n });\n\n const getGetterValue = (getterKey) => {\n return getters[getterKey]({ state: store.state });\n };\n\n const addGetterDependencies = (getterKey, deps) => {\n if (!gettersDependencies[getterKey]) gettersDependencies[getterKey] = [];\n deps.forEach((dep) => {\n if (gettersDependencies[getterKey].indexOf(dep) < 0) {\n gettersDependencies[getterKey].push(dep);\n }\n });\n };\n\n const addGetterCallback = (getterKey, callback) => {\n if (!gettersCallbacks[getterKey]) gettersCallbacks[getterKey] = [];\n gettersCallbacks[getterKey].push(callback);\n };\n\n const runGetterCallbacks = (stateKey) => {\n const keys = Object.keys(gettersDependencies).filter((getterKey) => {\n return gettersDependencies[getterKey].indexOf(stateKey) >= 0;\n });\n keys.forEach((getterKey) => {\n if (!gettersCallbacks[getterKey] || !gettersCallbacks[getterKey].length) return;\n gettersCallbacks[getterKey].forEach((callback) => {\n callback(getGetterValue(getterKey));\n });\n });\n };\n\n const removeGetterCallback = (callback) => {\n Object.keys(gettersCallbacks).forEach((stateKey) => {\n const callbacks = gettersCallbacks[stateKey];\n\n if (callbacks.indexOf(callback) >= 0) {\n callbacks.splice(callbacks.indexOf(callback), 1);\n }\n });\n };\n\n // eslint-disable-next-line\n store.__removeCallback = (callback) => {\n removeGetterCallback(callback);\n };\n\n const getterValue = (getterKey, addCallback = true) => {\n if (getterKey === 'constructor') return undefined;\n propsQueue = [];\n const value = getGetterValue(getterKey);\n addGetterDependencies(getterKey, propsQueue);\n const onUpdated = (callback) => {\n addGetterCallback(getterKey, callback);\n };\n\n const obj = {\n value,\n onUpdated,\n };\n\n if (!addCallback) {\n return obj;\n }\n\n const callback = (v) => {\n obj.value = v;\n };\n\n obj.__callback = callback;\n addGetterCallback(getterKey, callback);\n // eslint-disable-next-line\n return obj;\n };\n\n store.state = new Proxy(state, {\n set: (target, prop, value) => {\n target[prop] = value;\n runGetterCallbacks(prop);\n return true;\n },\n get: (target, prop) => {\n propsQueue.push(prop);\n return target[prop];\n },\n });\n\n store.getters = new Proxy(getters, {\n set: () => false,\n get: (target, prop) => {\n if (!target[prop]) {\n return undefined;\n }\n return getterValue(prop, true);\n },\n });\n\n store._gettersPlain = new Proxy(getters, {\n set: () => false,\n get: (target, prop) => {\n if (!target[prop]) {\n return undefined;\n }\n return getterValue(prop, false);\n },\n });\n\n store.dispatch = (actionName, data) => {\n return new Promise((resolve, reject) => {\n if (!actions[actionName]) {\n reject();\n throw new Error(`Framework7: Store action \"${actionName}\" is not found`);\n }\n const result = actions[actionName]({ state: store.state, dispatch: store.dispatch }, data);\n resolve(result);\n });\n };\n\n return store;\n}\n\nexport default createStore;\n","import createStore from './create-store.js';\n\nexport { createStore };\nexport default {\n name: 'store',\n static: { createStore },\n proto: { createStore },\n};\n","import { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { bindMethods } from '../../shared/utils.js';\nimport { getDevice } from '../../shared/get-device.js';\n\nconst isCapacitor = () => {\n const window = getWindow();\n return (\n window.Capacitor &&\n window.Capacitor.isNative &&\n window.Capacitor.Plugins &&\n window.Capacitor.Plugins.StatusBar\n );\n};\n\nconst Statusbar = {\n hide() {\n const window = getWindow();\n const device = getDevice();\n if (device.cordova && window.StatusBar) {\n window.StatusBar.hide();\n }\n if (isCapacitor()) {\n window.Capacitor.Plugins.StatusBar.hide();\n }\n },\n show() {\n const window = getWindow();\n const device = getDevice();\n if (device.cordova && window.StatusBar) {\n window.StatusBar.show();\n }\n if (isCapacitor()) {\n window.Capacitor.Plugins.StatusBar.show();\n }\n },\n onClick() {\n const app = this;\n let pageContent;\n if ($('.popup.modal-in').length > 0) {\n // Check for opened popup\n pageContent = $('.popup.modal-in')\n .find('.page:not(.page-previous):not(.page-next):not(.cached)')\n .find('.page-content');\n } else if ($('.panel.panel-in').length > 0) {\n // Check for opened panel\n pageContent = $('.panel.panel-in')\n .find('.page:not(.page-previous):not(.page-next):not(.cached)')\n .find('.page-content');\n } else if ($('.views > .view.tab-active').length > 0) {\n // View in tab bar app layout\n pageContent = $('.views > .view.tab-active')\n .find('.page:not(.page-previous):not(.page-next):not(.cached)')\n .find('.page-content');\n } else if ($('.views').length > 0) {\n pageContent = $('.views')\n .find('.page:not(.page-previous):not(.page-next):not(.cached)')\n .find('.page-content');\n } else {\n pageContent = app.$el\n .children('.view')\n .find('.page:not(.page-previous):not(.page-next):not(.cached)')\n .find('.page-content');\n }\n\n if (pageContent && pageContent.length > 0) {\n // Check for tab\n if (pageContent.hasClass('tab')) {\n pageContent = pageContent.parent('.tabs').children('.page-content.tab-active');\n }\n if (pageContent.length > 0) pageContent.scrollTop(0, 300);\n }\n },\n setTextColor(color) {\n const window = getWindow();\n const device = getDevice();\n if (device.cordova && window.StatusBar) {\n if (color === 'white') {\n window.StatusBar.styleLightContent();\n } else {\n window.StatusBar.styleDefault();\n }\n }\n if (isCapacitor()) {\n if (color === 'white') {\n window.Capacitor.Plugins.StatusBar.setStyle({ style: 'DARK' });\n } else {\n window.Capacitor.Plugins.StatusBar.setStyle({ style: 'LIGHT' });\n }\n }\n },\n setBackgroundColor(color) {\n const window = getWindow();\n const device = getDevice();\n if (device.cordova && window.StatusBar) {\n window.StatusBar.backgroundColorByHexString(color);\n }\n if (isCapacitor()) {\n window.Capacitor.Plugins.StatusBar.setBackgroundColor({ color });\n }\n },\n isVisible() {\n const window = getWindow();\n const device = getDevice();\n return new Promise((resolve) => {\n if (device.cordova && window.StatusBar) {\n resolve(window.StatusBar.isVisible);\n }\n if (isCapacitor()) {\n window.Capacitor.Plugins.StatusBar.getInfo().then((info) => {\n resolve(info.visible);\n });\n }\n resolve(false);\n });\n },\n overlaysWebView(overlays = true) {\n const window = getWindow();\n const device = getDevice();\n if (device.cordova && window.StatusBar) {\n window.StatusBar.overlaysWebView(overlays);\n }\n if (isCapacitor()) {\n window.Capacitor.Plugins.StatusBar.setOverlaysWebView({ overlay: overlays });\n }\n },\n init() {\n const app = this;\n const window = getWindow();\n const device = getDevice();\n const params = app.params.statusbar;\n if (!params.enabled) return;\n const isCordova = device.cordova && window.StatusBar;\n const isCap = isCapacitor();\n\n if (isCordova || isCap) {\n if (params.scrollTopOnClick) {\n $(window).on('statusTap', Statusbar.onClick.bind(app));\n }\n if (device.ios) {\n if (params.iosOverlaysWebView) {\n Statusbar.overlaysWebView(true);\n } else {\n Statusbar.overlaysWebView(false);\n }\n if (params.iosTextColor === 'white') {\n Statusbar.setTextColor('white');\n } else {\n Statusbar.setTextColor('black');\n }\n }\n if (device.android) {\n if (params.androidOverlaysWebView) {\n Statusbar.overlaysWebView(true);\n } else {\n Statusbar.overlaysWebView(false);\n }\n if (params.androidTextColor === 'white') {\n Statusbar.setTextColor('white');\n } else {\n Statusbar.setTextColor('black');\n }\n }\n }\n if (params.iosBackgroundColor && device.ios) {\n Statusbar.setBackgroundColor(params.iosBackgroundColor);\n }\n if (params.androidBackgroundColor && device.android) {\n Statusbar.setBackgroundColor(params.androidBackgroundColor);\n }\n },\n};\n\nexport default {\n name: 'statusbar',\n params: {\n statusbar: {\n enabled: true,\n\n scrollTopOnClick: true,\n\n iosOverlaysWebView: true,\n iosTextColor: 'black',\n iosBackgroundColor: null,\n\n androidOverlaysWebView: false,\n androidTextColor: 'black',\n androidBackgroundColor: null,\n },\n },\n create() {\n const app = this;\n bindMethods(app, {\n statusbar: Statusbar,\n });\n },\n on: {\n init() {\n const app = this;\n Statusbar.init.call(app);\n },\n },\n};\n","import $ from '../../shared/dom7.js';\nimport { extend } from '../../shared/utils.js';\nimport View from './view-class.js';\n\nfunction getCurrentView(app) {\n const $popoverView = $('.popover.modal-in .view');\n const $popupView = $('.popup.modal-in .view');\n const $panelView = $('.panel.panel-in .view');\n let $viewsEl = $('.views');\n if ($viewsEl.length === 0) $viewsEl = app.$el;\n // Find active view as tab\n let $viewEl = $viewsEl.children('.view');\n if ($viewEl.length === 0) {\n $viewEl = $viewsEl.children('.tabs').children('.view');\n }\n // Propably in tabs or split view\n if ($viewEl.length > 1) {\n if ($viewEl.hasClass('tab')) {\n // Tabs\n $viewEl = $viewsEl.children('.view.tab-active');\n if ($viewEl.length === 0) {\n $viewEl = $viewsEl.children('.tabs').children('.view.tab-active');\n }\n } else {\n // Split View, leave appView intact\n }\n }\n if ($popoverView.length > 0 && $popoverView[0].f7View) return $popoverView[0].f7View;\n if ($popupView.length > 0 && $popupView[0].f7View) return $popupView[0].f7View;\n if ($panelView.length > 0 && $panelView[0].f7View) return $panelView[0].f7View;\n if ($viewEl.length > 0) {\n if ($viewEl.length === 1 && $viewEl[0].f7View) return $viewEl[0].f7View;\n if ($viewEl.length > 1) {\n return app.views.main;\n }\n }\n return undefined;\n}\n\nexport default {\n name: 'view',\n params: {\n view: {\n init: true,\n initRouterOnTabShow: false,\n name: undefined,\n main: false,\n router: true,\n linksView: null,\n stackPages: false,\n xhrCache: true,\n xhrCacheIgnore: [],\n xhrCacheIgnoreGetParameters: false,\n xhrCacheDuration: 1000 * 60 * 10, // Ten minutes\n componentCache: true,\n preloadPreviousPage: true,\n allowDuplicateUrls: false,\n reloadPages: false,\n reloadDetail: false,\n masterDetailBreakpoint: 0,\n masterDetailResizable: false,\n removeElements: true,\n removeElementsWithTimeout: false,\n removeElementsTimeout: 0,\n restoreScrollTopOnBack: true,\n unloadTabContent: true,\n passRouteQueryToRequest: true,\n passRouteParamsToRequest: false,\n loadInitialPage: true,\n // Swipe Back\n iosSwipeBack: true,\n iosSwipeBackAnimateShadow: true,\n iosSwipeBackAnimateOpacity: true,\n iosSwipeBackActiveArea: 30,\n iosSwipeBackThreshold: 0,\n mdSwipeBack: false,\n mdSwipeBackAnimateShadow: true,\n mdSwipeBackAnimateOpacity: false,\n mdSwipeBackActiveArea: 30,\n mdSwipeBackThreshold: 0,\n auroraSwipeBack: false,\n auroraSwipeBackAnimateShadow: false,\n auroraSwipeBackAnimateOpacity: true,\n auroraSwipeBackActiveArea: 30,\n auroraSwipeBackThreshold: 0,\n // Push State\n browserHistory: false,\n browserHistoryRoot: undefined,\n browserHistoryAnimate: true,\n browserHistoryAnimateOnLoad: false,\n browserHistorySeparator: '#!',\n browserHistoryOnLoad: true,\n browserHistoryInitialMatch: false,\n browserHistoryStoreHistory: true,\n browserHistoryTabs: 'replace',\n // Animate Pages\n animate: true,\n // iOS Dynamic Navbar\n iosDynamicNavbar: true,\n // Animate iOS Navbar Back Icon\n iosAnimateNavbarBackIcon: true,\n // Delays\n iosPageLoadDelay: 0,\n mdPageLoadDelay: 0,\n auroraPageLoadDelay: 0,\n // Routes hooks\n routesBeforeEnter: null,\n routesBeforeLeave: null,\n },\n },\n static: {\n View,\n },\n create() {\n const app = this;\n extend(app, {\n views: extend([], {\n create(el, params) {\n return new View(app, el, params);\n },\n get(viewEl) {\n const $viewEl = $(viewEl);\n if ($viewEl.length && $viewEl[0].f7View) return $viewEl[0].f7View;\n return undefined;\n },\n }),\n });\n Object.defineProperty(app.views, 'current', {\n enumerable: true,\n configurable: true,\n get() {\n return getCurrentView(app);\n },\n });\n // Alias\n app.view = app.views;\n },\n on: {\n init() {\n const app = this;\n $('.view-init').each((viewEl) => {\n if (viewEl.f7View) return;\n const viewParams = $(viewEl).dataset();\n app.views.create(viewEl, viewParams);\n });\n },\n 'modalOpen panelOpen': function onOpen(instance) {\n const app = this;\n instance.$el.find('.view-init').each((viewEl) => {\n if (viewEl.f7View) return;\n const viewParams = $(viewEl).dataset();\n app.views.create(viewEl, viewParams);\n });\n },\n 'modalBeforeDestroy panelBeforeDestroy': function onClose(instance) {\n if (!instance || !instance.$el) return;\n instance.$el.find('.view-init').each((viewEl) => {\n const view = viewEl.f7View;\n if (!view) return;\n view.destroy();\n });\n },\n },\n vnode: {\n 'view-init': {\n insert(vnode) {\n const app = this;\n const viewEl = vnode.elm;\n if (viewEl.f7View) return;\n const viewParams = $(viewEl).dataset();\n app.views.create(viewEl, viewParams);\n },\n destroy(vnode) {\n const viewEl = vnode.elm;\n const view = viewEl.f7View;\n if (!view) return;\n view.destroy();\n },\n },\n },\n};\n","import $ from '../../shared/dom7.js';\nimport { bindMethods } from '../../shared/utils.js';\nimport { getSupport } from '../../shared/get-support.js';\n\nconst Navbar = {\n size(el) {\n const app = this;\n\n let $el = $(el);\n\n if ($el.hasClass('navbars')) {\n $el = $el.children('.navbar').each((navbarEl) => {\n app.navbar.size(navbarEl);\n });\n return;\n }\n\n const $innerEl = $el.children('.navbar-inner');\n if (!$innerEl.length) return;\n\n const needCenterTitle =\n $innerEl.hasClass('navbar-inner-centered-title') ||\n app.params.navbar[`${app.theme}CenterTitle`];\n const needLeftTitle = app.theme === 'ios' && !app.params.navbar[`${app.theme}CenterTitle`];\n\n if (!needCenterTitle && !needLeftTitle) return;\n\n if (\n $el.hasClass('stacked') ||\n $el.parents('.stacked').length > 0 ||\n $el.parents('.tab:not(.tab-active)').length > 0 ||\n $el.parents('.popup:not(.modal-in)').length > 0\n ) {\n return;\n }\n\n if (app.theme !== 'ios' && app.params.navbar[`${app.theme}CenterTitle`]) {\n $innerEl.addClass('navbar-inner-centered-title');\n }\n if (app.theme === 'ios' && !app.params.navbar.iosCenterTitle) {\n $innerEl.addClass('navbar-inner-left-title');\n }\n\n const $viewEl = $el.parents('.view').eq(0);\n const left = app.rtl ? $innerEl.children('.right') : $innerEl.children('.left');\n const right = app.rtl ? $innerEl.children('.left') : $innerEl.children('.right');\n const title = $innerEl.children('.title');\n const subnavbar = $innerEl.children('.subnavbar');\n const noLeft = left.length === 0;\n const noRight = right.length === 0;\n const leftWidth = noLeft ? 0 : left.outerWidth(true);\n const rightWidth = noRight ? 0 : right.outerWidth(true);\n const titleWidth = title.outerWidth(true);\n const navbarStyles = $innerEl.styles();\n const navbarWidth = $innerEl[0].offsetWidth;\n const navbarInnerWidth =\n navbarWidth -\n parseInt(navbarStyles.paddingLeft, 10) -\n parseInt(navbarStyles.paddingRight, 10);\n const isPrevious = $el.hasClass('navbar-previous');\n const sliding = $innerEl.hasClass('sliding');\n\n let router;\n let dynamicNavbar;\n\n if ($viewEl.length > 0 && $viewEl[0].f7View) {\n router = $viewEl[0].f7View.router;\n dynamicNavbar = router && router.dynamicNavbar;\n }\n\n let currLeft;\n let diff;\n if (noRight) {\n currLeft = navbarInnerWidth - titleWidth;\n }\n if (noLeft) {\n currLeft = 0;\n }\n if (!noLeft && !noRight) {\n currLeft = (navbarInnerWidth - rightWidth - titleWidth + leftWidth) / 2;\n }\n let requiredLeft = (navbarInnerWidth - titleWidth) / 2;\n if (navbarInnerWidth - leftWidth - rightWidth > titleWidth) {\n if (requiredLeft < leftWidth) {\n requiredLeft = leftWidth;\n }\n if (requiredLeft + titleWidth > navbarInnerWidth - rightWidth) {\n requiredLeft = navbarInnerWidth - rightWidth - titleWidth;\n }\n diff = requiredLeft - currLeft;\n } else {\n diff = 0;\n }\n\n // RTL inverter\n const inverter = app.rtl ? -1 : 1;\n\n if (dynamicNavbar && app.theme === 'ios') {\n if (title.hasClass('sliding') || (title.length > 0 && sliding)) {\n let titleLeftOffset = -(currLeft + diff) * inverter;\n const titleRightOffset = (navbarInnerWidth - currLeft - diff - titleWidth) * inverter;\n\n if (isPrevious) {\n if (router && router.params.iosAnimateNavbarBackIcon) {\n const activeNavbarBackLink = $el\n .parent()\n .find('.navbar-current')\n .children('.left.sliding')\n .find('.back .icon ~ span');\n if (activeNavbarBackLink.length > 0) {\n titleLeftOffset += activeNavbarBackLink[0].offsetLeft;\n }\n }\n }\n title[0].f7NavbarLeftOffset = titleLeftOffset;\n title[0].f7NavbarRightOffset = titleRightOffset;\n }\n if (!noLeft && (left.hasClass('sliding') || sliding)) {\n if (app.rtl) {\n left[0].f7NavbarLeftOffset = (-(navbarInnerWidth - left[0].offsetWidth) / 2) * inverter;\n left[0].f7NavbarRightOffset = leftWidth * inverter;\n } else {\n left[0].f7NavbarLeftOffset = -leftWidth;\n left[0].f7NavbarRightOffset = (navbarInnerWidth - left[0].offsetWidth) / 2;\n if (\n router &&\n router.params.iosAnimateNavbarBackIcon &&\n left.find('.back .icon').length > 0\n ) {\n if (left.find('.back .icon ~ span').length) {\n const leftOffset = left[0].f7NavbarLeftOffset;\n const rightOffset = left[0].f7NavbarRightOffset;\n left[0].f7NavbarLeftOffset = 0;\n left[0].f7NavbarRightOffset = 0;\n left.find('.back .icon ~ span')[0].f7NavbarLeftOffset = leftOffset;\n left.find('.back .icon ~ span')[0].f7NavbarRightOffset =\n rightOffset - left.find('.back .icon')[0].offsetWidth;\n }\n }\n }\n }\n if (!noRight && (right.hasClass('sliding') || sliding)) {\n if (app.rtl) {\n right[0].f7NavbarLeftOffset = -rightWidth * inverter;\n right[0].f7NavbarRightOffset = ((navbarInnerWidth - right[0].offsetWidth) / 2) * inverter;\n } else {\n right[0].f7NavbarLeftOffset = -(navbarInnerWidth - right[0].offsetWidth) / 2;\n right[0].f7NavbarRightOffset = rightWidth;\n }\n }\n if (subnavbar.length && (subnavbar.hasClass('sliding') || sliding)) {\n subnavbar[0].f7NavbarLeftOffset = app.rtl\n ? subnavbar[0].offsetWidth\n : -subnavbar[0].offsetWidth;\n subnavbar[0].f7NavbarRightOffset = -subnavbar[0].f7NavbarLeftOffset;\n }\n }\n\n // Center title\n if (needCenterTitle) {\n let titleLeft = diff;\n if (app.rtl && noLeft && noRight && title.length > 0) titleLeft = -titleLeft;\n title.css({ left: `${titleLeft}px` });\n }\n },\n hide(el, animate = true, hideStatusbar = false, hideOnlyCurrent = false) {\n const app = this;\n let $el = $(el);\n const isDynamic = $el.hasClass('navbar') && $el.parent('.navbars').length && !hideOnlyCurrent;\n if (isDynamic) $el = $el.parents('.navbars');\n if (!$el.length) return;\n if ($el.hasClass('navbar-hidden')) return;\n let className = `navbar-hidden${animate ? ' navbar-transitioning' : ''}`;\n const currentIsLarge = isDynamic\n ? $el.find('.navbar-current .title-large').length\n : $el.find('.title-large').length;\n if (currentIsLarge) {\n className += ' navbar-large-hidden';\n }\n if (hideStatusbar) {\n className += ' navbar-hidden-statusbar';\n }\n $el.transitionEnd(() => {\n $el.removeClass('navbar-transitioning');\n });\n $el.addClass(className);\n if (isDynamic) {\n $el.children('.navbar').each((subEl) => {\n $(subEl).trigger('navbar:hide');\n app.emit('navbarHide', subEl);\n });\n } else {\n $el.trigger('navbar:hide');\n app.emit('navbarHide', $el[0]);\n }\n },\n show(el = '.navbar-hidden', animate = true, hideOnlyCurrent = false) {\n const app = this;\n let $el = $(el);\n const isDynamic = $el.hasClass('navbar') && $el.parent('.navbars').length && !hideOnlyCurrent;\n if (isDynamic) $el = $el.parents('.navbars');\n if (!$el.length) return;\n if (!$el.hasClass('navbar-hidden')) return;\n if (animate) {\n $el.addClass('navbar-transitioning');\n $el.transitionEnd(() => {\n $el.removeClass('navbar-transitioning');\n });\n }\n $el.removeClass('navbar-hidden navbar-large-hidden navbar-hidden-statusbar');\n if (isDynamic) {\n $el.children('.navbar').each((subEl) => {\n $(subEl).trigger('navbar:show');\n app.emit('navbarShow', subEl);\n });\n } else {\n $el.trigger('navbar:show');\n app.emit('navbarShow', $el[0]);\n }\n },\n getElByPage(page) {\n let $pageEl;\n let $navbarEl;\n let pageData;\n if (page.$navbarEl || page.$el) {\n pageData = page;\n $pageEl = page.$el;\n } else {\n $pageEl = $(page);\n if ($pageEl.length > 0) pageData = $pageEl[0].f7Page;\n }\n if (pageData && pageData.$navbarEl && pageData.$navbarEl.length > 0) {\n $navbarEl = pageData.$navbarEl;\n } else if ($pageEl) {\n $navbarEl = $pageEl.children('.navbar');\n }\n if (!$navbarEl || ($navbarEl && $navbarEl.length === 0)) return undefined;\n return $navbarEl[0];\n },\n getPageByEl(navbarEl) {\n const $navbarEl = $(navbarEl);\n if ($navbarEl.parents('.page').length) {\n return $navbarEl.parents('.page')[0];\n }\n let pageEl;\n $navbarEl\n .parents('.view')\n .find('.page')\n .each((el) => {\n if (el && el.f7Page && el.f7Page.navbarEl && $navbarEl[0] === el.f7Page.navbarEl) {\n pageEl = el;\n }\n });\n return pageEl;\n },\n\n collapseLargeTitle(navbarEl) {\n const app = this;\n let $navbarEl = $(navbarEl);\n if ($navbarEl.hasClass('navbars')) {\n $navbarEl = $navbarEl.find('.navbar');\n if ($navbarEl.length > 1) {\n $navbarEl = $(navbarEl).find('.navbar-large.navbar-current');\n }\n if ($navbarEl.length > 1 || !$navbarEl.length) {\n return;\n }\n }\n const $pageEl = $(app.navbar.getPageByEl($navbarEl));\n $navbarEl.addClass('navbar-large-collapsed');\n $pageEl.eq(0).addClass('page-with-navbar-large-collapsed').trigger('page:navbarlargecollapsed');\n app.emit('pageNavbarLargeCollapsed', $pageEl[0]);\n $navbarEl.trigger('navbar:collapse');\n app.emit('navbarCollapse', $navbarEl[0]);\n },\n expandLargeTitle(navbarEl) {\n const app = this;\n let $navbarEl = $(navbarEl);\n if ($navbarEl.hasClass('navbars')) {\n $navbarEl = $navbarEl.find('.navbar-large');\n if ($navbarEl.length > 1) {\n $navbarEl = $(navbarEl).find('.navbar-large.navbar-current');\n }\n if ($navbarEl.length > 1 || !$navbarEl.length) {\n return;\n }\n }\n const $pageEl = $(app.navbar.getPageByEl($navbarEl));\n $navbarEl.removeClass('navbar-large-collapsed');\n $pageEl\n .eq(0)\n .removeClass('page-with-navbar-large-collapsed')\n .trigger('page:navbarlargeexpanded');\n app.emit('pageNavbarLargeExpanded', $pageEl[0]);\n $navbarEl.trigger('navbar:expand');\n app.emit('navbarExpand', $navbarEl[0]);\n },\n toggleLargeTitle(navbarEl) {\n const app = this;\n let $navbarEl = $(navbarEl);\n if ($navbarEl.hasClass('navbars')) {\n $navbarEl = $navbarEl.find('.navbar-large');\n if ($navbarEl.length > 1) {\n $navbarEl = $(navbarEl).find('.navbar-large.navbar-current');\n }\n if ($navbarEl.length > 1 || !$navbarEl.length) {\n return;\n }\n }\n if ($navbarEl.hasClass('navbar-large-collapsed')) {\n app.navbar.expandLargeTitle($navbarEl);\n } else {\n app.navbar.collapseLargeTitle($navbarEl);\n }\n },\n initNavbarOnScroll(pageEl, navbarEl, needHide, needCollapse, needTransparent) {\n const app = this;\n const support = getSupport();\n const $pageEl = $(pageEl);\n const $navbarEl = $(navbarEl);\n const $titleLargeEl = $navbarEl.find('.title-large');\n const isLarge = $titleLargeEl.length || $navbarEl.hasClass('.navbar-large');\n let navbarHideHeight = 44;\n const snapPageScrollToLargeTitle = app.params.navbar.snapPageScrollToLargeTitle;\n const snapPageScrollToTransparentNavbar = app.params.navbar.snapPageScrollToTransparentNavbar;\n\n let previousScrollTop;\n let currentScrollTop;\n\n let scrollHeight;\n let offsetHeight;\n let reachEnd;\n let action;\n let navbarHidden;\n\n let navbarCollapsed;\n let navbarTitleLargeHeight;\n\n let navbarOffsetHeight;\n\n if (needCollapse || (needHide && isLarge)) {\n navbarTitleLargeHeight = $navbarEl.css('--f7-navbar-large-title-height');\n\n if (navbarTitleLargeHeight && navbarTitleLargeHeight.indexOf('px') >= 0) {\n navbarTitleLargeHeight = parseInt(navbarTitleLargeHeight, 10);\n if (Number.isNaN(navbarTitleLargeHeight) && $titleLargeEl.length) {\n navbarTitleLargeHeight = $titleLargeEl[0].offsetHeight;\n } else if (Number.isNaN(navbarTitleLargeHeight)) {\n if (app.theme === 'ios') navbarTitleLargeHeight = 52;\n else if (app.theme === 'md') navbarTitleLargeHeight = 48;\n else if (app.theme === 'aurora') navbarTitleLargeHeight = 38;\n }\n } else if ($titleLargeEl.length) {\n navbarTitleLargeHeight = $titleLargeEl[0].offsetHeight;\n } else {\n // eslint-disable-next-line\n if (app.theme === 'ios') navbarTitleLargeHeight = 52;\n else if (app.theme === 'md') navbarTitleLargeHeight = 48;\n else if (app.theme === 'aurora') navbarTitleLargeHeight = 38;\n }\n }\n\n if (needHide && isLarge) {\n navbarHideHeight += navbarTitleLargeHeight;\n }\n\n let scrollChanged;\n let scrollContent;\n let scrollTimeoutId;\n let touchEndTimeoutId;\n const touchSnapTimeout = 70;\n const desktopSnapTimeout = 300;\n\n function calcScrollableDistance() {\n $pageEl.find('.page-content').each((pageContentEl) => {\n pageContentEl.f7ScrollableDistance =\n pageContentEl.scrollHeight - pageContentEl.offsetHeight;\n });\n }\n\n function snapLargeNavbar() {\n const inSearchbarExpanded = $navbarEl.hasClass('with-searchbar-expandable-enabled');\n if (inSearchbarExpanded) return;\n if (!scrollContent || currentScrollTop < 0) return;\n if (\n currentScrollTop >= navbarTitleLargeHeight / 2 &&\n currentScrollTop < navbarTitleLargeHeight\n ) {\n $(scrollContent).scrollTop(navbarTitleLargeHeight, 100);\n } else if (currentScrollTop < navbarTitleLargeHeight) {\n $(scrollContent).scrollTop(0, 200);\n }\n }\n\n function snapTransparentNavbar() {\n const inSearchbarExpanded = $navbarEl.hasClass('with-searchbar-expandable-enabled');\n if (inSearchbarExpanded) return;\n if (!scrollContent || currentScrollTop < 0) return;\n if (currentScrollTop >= navbarOffsetHeight / 2 && currentScrollTop < navbarOffsetHeight) {\n $(scrollContent).scrollTop(navbarOffsetHeight, 100);\n } else if (currentScrollTop < navbarOffsetHeight) {\n $(scrollContent).scrollTop(0, 200);\n }\n }\n\n function handleNavbarTransparent() {\n const isHidden =\n $navbarEl.hasClass('navbar-hidden') ||\n $navbarEl.parent('.navbars').hasClass('navbar-hidden');\n const inSearchbarExpanded = $navbarEl.hasClass('with-searchbar-expandable-enabled');\n if (inSearchbarExpanded || isHidden) return;\n if (!navbarOffsetHeight) {\n navbarOffsetHeight = navbarEl.offsetHeight;\n }\n let opacity = currentScrollTop / navbarOffsetHeight;\n const notTransparent = $navbarEl.hasClass('navbar-transparent-visible');\n opacity = Math.max(Math.min(opacity, 1), 0);\n\n if ((notTransparent && opacity === 1) || (!notTransparent && opacity === 0)) {\n $navbarEl.find('.navbar-bg, .title').css('opacity', '');\n return;\n }\n if (notTransparent && opacity === 0) {\n $navbarEl.trigger('navbar:transparenthide');\n app.emit('navbarTransparentHide', $navbarEl[0]);\n $navbarEl.removeClass('navbar-transparent-visible');\n $navbarEl.find('.navbar-bg, .title').css('opacity', '');\n return;\n }\n if (!notTransparent && opacity === 1) {\n $navbarEl.trigger('navbar:transparentshow');\n app.emit('navbarTransparentShow', $navbarEl[0]);\n $navbarEl.addClass('navbar-transparent-visible');\n $navbarEl.find('.navbar-bg, .title').css('opacity', '');\n return;\n }\n\n $navbarEl.find('.navbar-bg, .title').css('opacity', opacity);\n\n if (snapPageScrollToTransparentNavbar) {\n if (!support.touch) {\n clearTimeout(scrollTimeoutId);\n scrollTimeoutId = setTimeout(() => {\n snapTransparentNavbar();\n }, desktopSnapTimeout);\n } else if (touchEndTimeoutId) {\n clearTimeout(touchEndTimeoutId);\n touchEndTimeoutId = null;\n touchEndTimeoutId = setTimeout(() => {\n snapTransparentNavbar();\n clearTimeout(touchEndTimeoutId);\n touchEndTimeoutId = null;\n }, touchSnapTimeout);\n }\n }\n }\n\n let previousCollapseProgress = null;\n let collapseProgress = null;\n function handleLargeNavbarCollapse(pageContentEl) {\n const isHidden =\n $navbarEl.hasClass('navbar-hidden') ||\n $navbarEl.parent('.navbars').hasClass('navbar-hidden');\n if (isHidden) return;\n const isLargeTransparent =\n $navbarEl.hasClass('navbar-large-transparent') ||\n ($navbarEl.hasClass('navbar-large') && $navbarEl.hasClass('navbar-transparent'));\n previousCollapseProgress = collapseProgress;\n const scrollableDistance = Math.min(\n navbarTitleLargeHeight,\n pageContentEl.f7ScrollableDistance || navbarTitleLargeHeight,\n );\n collapseProgress = Math.min(Math.max(currentScrollTop / scrollableDistance, 0), 1);\n const previousCollapseWasInMiddle =\n previousCollapseProgress > 0 && previousCollapseProgress < 1;\n const inSearchbarExpanded = $navbarEl.hasClass('with-searchbar-expandable-enabled');\n if (inSearchbarExpanded) return;\n navbarCollapsed = $navbarEl.hasClass('navbar-large-collapsed');\n if (collapseProgress === 0 && navbarCollapsed) {\n app.navbar.expandLargeTitle($navbarEl[0]);\n } else if (collapseProgress === 1 && !navbarCollapsed) {\n app.navbar.collapseLargeTitle($navbarEl[0]);\n }\n if (\n (collapseProgress === 0 && navbarCollapsed) ||\n (collapseProgress === 0 && previousCollapseWasInMiddle) ||\n (collapseProgress === 1 && !navbarCollapsed) ||\n (collapseProgress === 1 && previousCollapseWasInMiddle)\n ) {\n if (app.theme === 'md') {\n $navbarEl.find('.navbar-inner').css('overflow', '');\n }\n $navbarEl.find('.title').css('opacity', '');\n $navbarEl.find('.title-large-text, .subnavbar').css('transform', '');\n if (isLargeTransparent) {\n $navbarEl.find('.navbar-bg').css('opacity', '');\n } else {\n $navbarEl.find('.navbar-bg').css('transform', '');\n }\n } else if (collapseProgress > 0 && collapseProgress < 1) {\n if (app.theme === 'md') {\n $navbarEl.find('.navbar-inner').css('overflow', 'visible');\n }\n $navbarEl.find('.title').css('opacity', collapseProgress);\n $navbarEl\n .find('.title-large-text, .subnavbar')\n .css(\n 'transform',\n `translate3d(0px, ${-1 * collapseProgress * navbarTitleLargeHeight}px, 0)`,\n );\n if (isLargeTransparent) {\n $navbarEl.find('.navbar-bg').css('opacity', collapseProgress);\n } else {\n $navbarEl\n .find('.navbar-bg')\n .css(\n 'transform',\n `translate3d(0px, ${-1 * collapseProgress * navbarTitleLargeHeight}px, 0)`,\n );\n }\n }\n\n if (snapPageScrollToLargeTitle) {\n if (!support.touch) {\n clearTimeout(scrollTimeoutId);\n scrollTimeoutId = setTimeout(() => {\n snapLargeNavbar();\n }, desktopSnapTimeout);\n } else if (touchEndTimeoutId) {\n clearTimeout(touchEndTimeoutId);\n touchEndTimeoutId = null;\n touchEndTimeoutId = setTimeout(() => {\n snapLargeNavbar();\n clearTimeout(touchEndTimeoutId);\n touchEndTimeoutId = null;\n }, touchSnapTimeout);\n }\n }\n }\n\n function handleTitleHideShow() {\n if ($pageEl.hasClass('page-with-card-opened')) return;\n scrollHeight = scrollContent.scrollHeight;\n offsetHeight = scrollContent.offsetHeight;\n reachEnd = currentScrollTop + offsetHeight >= scrollHeight;\n navbarHidden =\n $navbarEl.hasClass('navbar-hidden') ||\n $navbarEl.parent('.navbars').hasClass('navbar-hidden');\n if (reachEnd) {\n if (app.params.navbar.showOnPageScrollEnd) {\n action = 'show';\n }\n } else if (previousScrollTop > currentScrollTop) {\n if (app.params.navbar.showOnPageScrollTop || currentScrollTop <= navbarHideHeight) {\n action = 'show';\n } else {\n action = 'hide';\n }\n } else if (currentScrollTop > navbarHideHeight) {\n action = 'hide';\n } else {\n action = 'show';\n }\n\n if (action === 'show' && navbarHidden) {\n app.navbar.show($navbarEl, true, true);\n navbarHidden = false;\n } else if (action === 'hide' && !navbarHidden) {\n app.navbar.hide($navbarEl, true, false, true);\n navbarHidden = true;\n }\n previousScrollTop = currentScrollTop;\n }\n\n function handleScroll(e) {\n scrollContent = this;\n if (e && e.target && e.target !== scrollContent) {\n return;\n }\n currentScrollTop = scrollContent.scrollTop;\n scrollChanged = currentScrollTop;\n if (needCollapse) {\n handleLargeNavbarCollapse(scrollContent);\n } else if (needTransparent) {\n handleNavbarTransparent();\n }\n if ($pageEl.hasClass('page-previous')) return;\n if (needHide) {\n handleTitleHideShow();\n }\n }\n function handeTouchStart() {\n scrollChanged = false;\n }\n function handleTouchEnd() {\n clearTimeout(touchEndTimeoutId);\n touchEndTimeoutId = null;\n touchEndTimeoutId = setTimeout(() => {\n if (scrollChanged !== false) {\n if (needTransparent && !needCollapse) {\n snapTransparentNavbar();\n } else {\n snapLargeNavbar();\n }\n clearTimeout(touchEndTimeoutId);\n touchEndTimeoutId = null;\n }\n }, touchSnapTimeout);\n }\n $pageEl.on('scroll', '.page-content', handleScroll, true);\n\n if (\n support.touch &&\n ((needCollapse && snapPageScrollToLargeTitle) ||\n (needTransparent && snapPageScrollToTransparentNavbar))\n ) {\n app.on('touchstart:passive', handeTouchStart);\n app.on('touchend:passive', handleTouchEnd);\n }\n calcScrollableDistance();\n if (needCollapse || needTransparent) {\n $pageEl.find('.page-content').each((pageContentEl) => {\n if (pageContentEl.scrollTop > 0) handleScroll.call(pageContentEl);\n });\n }\n app.on('resize', calcScrollableDistance);\n $pageEl[0].f7DetachNavbarScrollHandlers = function f7DetachNavbarScrollHandlers() {\n app.off('resize', calcScrollableDistance);\n delete $pageEl[0].f7DetachNavbarScrollHandlers;\n $pageEl.off('scroll', '.page-content', handleScroll, true);\n if (\n support.touch &&\n ((needCollapse && snapPageScrollToLargeTitle) ||\n (needTransparent && snapPageScrollToTransparentNavbar))\n ) {\n app.off('touchstart:passive', handeTouchStart);\n app.off('touchend:passive', handleTouchEnd);\n }\n };\n },\n};\nexport default {\n name: 'navbar',\n create() {\n const app = this;\n bindMethods(app, {\n navbar: Navbar,\n });\n },\n params: {\n navbar: {\n scrollTopOnTitleClick: true,\n iosCenterTitle: true,\n mdCenterTitle: false,\n auroraCenterTitle: true,\n hideOnPageScroll: false,\n showOnPageScrollEnd: true,\n showOnPageScrollTop: true,\n collapseLargeTitleOnScroll: true,\n snapPageScrollToLargeTitle: true,\n snapPageScrollToTransparentNavbar: true,\n },\n },\n on: {\n 'panelBreakpoint panelCollapsedBreakpoint panelResize viewResize resize viewMasterDetailBreakpoint':\n function onPanelResize() {\n const app = this;\n $('.navbar').each((navbarEl) => {\n app.navbar.size(navbarEl);\n });\n },\n pageBeforeRemove(page) {\n if (page.$el[0].f7DetachNavbarScrollHandlers) {\n page.$el[0].f7DetachNavbarScrollHandlers();\n }\n },\n pageBeforeIn(page) {\n const app = this;\n if (app.theme !== 'ios') return;\n let $navbarsEl;\n const view = page.$el.parents('.view')[0].f7View;\n const navbarEl = app.navbar.getElByPage(page);\n if (!navbarEl) {\n $navbarsEl = page.$el.parents('.view').children('.navbars');\n } else {\n $navbarsEl = $(navbarEl).parents('.navbars');\n }\n if (page.$el.hasClass('no-navbar') || (view.router.dynamicNavbar && !navbarEl)) {\n const animate = !!(page.pageFrom && page.router.history.length > 0);\n app.navbar.hide($navbarsEl, animate);\n } else {\n app.navbar.show($navbarsEl);\n }\n },\n pageReinit(page) {\n const app = this;\n const $navbarEl = $(app.navbar.getElByPage(page));\n if (!$navbarEl || $navbarEl.length === 0) return;\n app.navbar.size($navbarEl);\n },\n pageInit(page) {\n const app = this;\n const $navbarEl = $(app.navbar.getElByPage(page));\n if (!$navbarEl || $navbarEl.length === 0) return;\n\n // Size\n app.navbar.size($navbarEl);\n\n // Need Collapse On Scroll\n let needCollapseOnScrollHandler;\n if ($navbarEl.find('.title-large').length > 0) {\n $navbarEl.addClass('navbar-large');\n }\n if ($navbarEl.hasClass('navbar-large')) {\n if (app.params.navbar.collapseLargeTitleOnScroll) needCollapseOnScrollHandler = true;\n page.$el.addClass('page-with-navbar-large');\n }\n\n // Need transparent on scroll\n let needTransparentOnScroll;\n if (!needCollapseOnScrollHandler && $navbarEl.hasClass('navbar-transparent')) {\n needTransparentOnScroll = true;\n }\n\n // Need Hide On Scroll\n let needHideOnScrollHandler;\n if (\n app.params.navbar.hideOnPageScroll ||\n page.$el.find('.hide-navbar-on-scroll').length ||\n page.$el.hasClass('hide-navbar-on-scroll') ||\n page.$el.find('.hide-bars-on-scroll').length ||\n page.$el.hasClass('hide-bars-on-scroll')\n ) {\n if (\n page.$el.find('.keep-navbar-on-scroll').length ||\n page.$el.hasClass('keep-navbar-on-scroll') ||\n page.$el.find('.keep-bars-on-scroll').length ||\n page.$el.hasClass('keep-bars-on-scroll')\n ) {\n needHideOnScrollHandler = false;\n } else {\n needHideOnScrollHandler = true;\n }\n }\n\n if (needCollapseOnScrollHandler || needHideOnScrollHandler || needTransparentOnScroll) {\n app.navbar.initNavbarOnScroll(\n page.el,\n $navbarEl[0],\n needHideOnScrollHandler,\n needCollapseOnScrollHandler,\n needTransparentOnScroll,\n );\n }\n },\n 'panelOpen panelSwipeOpen modalOpen': function onPanelModalOpen(instance) {\n const app = this;\n instance.$el.find('.navbar:not(.navbar-previous):not(.stacked)').each((navbarEl) => {\n app.navbar.size(navbarEl);\n });\n },\n tabShow(tabEl) {\n const app = this;\n $(tabEl)\n .find('.navbar:not(.navbar-previous):not(.stacked)')\n .each((navbarEl) => {\n app.navbar.size(navbarEl);\n });\n },\n },\n clicks: {\n '.navbar .title': function onTitleClick($clickedEl, clickedData, e) {\n const app = this;\n if (!app.params.navbar.scrollTopOnTitleClick) return;\n if ($(e.target).closest('a, button').length > 0) {\n return;\n }\n let $pageContentEl;\n\n // Find active page\n const $navbarEl = $clickedEl.parents('.navbar');\n const $navbarsEl = $navbarEl.parents('.navbars');\n\n // Static Layout\n $pageContentEl = $navbarEl.parents('.page-content');\n\n if ($pageContentEl.length === 0) {\n // Fixed Layout\n if ($navbarEl.parents('.page').length > 0) {\n $pageContentEl = $navbarEl.parents('.page').find('.page-content');\n }\n // Through Layout iOS\n if ($pageContentEl.length === 0 && $navbarsEl.length) {\n if ($navbarsEl.nextAll('.page-current:not(.stacked)').length > 0) {\n $pageContentEl = $navbarsEl\n .nextAll('.page-current:not(.stacked)')\n .find('.page-content');\n }\n }\n // Through Layout\n if ($pageContentEl.length === 0) {\n if ($navbarEl.nextAll('.page-current:not(.stacked)').length > 0) {\n $pageContentEl = $navbarEl.nextAll('.page-current:not(.stacked)').find('.page-content');\n }\n }\n }\n if ($pageContentEl && $pageContentEl.length > 0) {\n // Check for tab\n if ($pageContentEl.hasClass('tab')) {\n $pageContentEl = $pageContentEl.parent('.tabs').children('.page-content.tab-active');\n }\n if ($pageContentEl.length > 0) $pageContentEl.scrollTop(0, 300);\n }\n },\n },\n vnode: {\n navbar: {\n postpatch(vnode) {\n const app = this;\n app.navbar.size(vnode.elm);\n },\n },\n },\n};\n","import $ from '../../shared/dom7.js';\nimport { nextFrame, bindMethods } from '../../shared/utils.js';\n\nconst Toolbar = {\n setHighlight(tabbarEl) {\n const app = this;\n const $tabbarEl = $(tabbarEl);\n if (app.theme === 'ios' && !$tabbarEl.hasClass('tabbar-highlight')) return;\n\n if (\n $tabbarEl.length === 0 ||\n !($tabbarEl.hasClass('tabbar') || $tabbarEl.hasClass('tabbar-labels'))\n )\n return;\n\n let $highlightEl = $tabbarEl.find('.tab-link-highlight');\n const tabLinksCount = $tabbarEl.find('.tab-link').length;\n if (tabLinksCount === 0) {\n $highlightEl.remove();\n return;\n }\n\n if ($highlightEl.length === 0) {\n $tabbarEl.children('.toolbar-inner').append('<span class=\"tab-link-highlight\"></span>');\n $highlightEl = $tabbarEl.find('.tab-link-highlight');\n } else if ($highlightEl.next().length) {\n $tabbarEl.children('.toolbar-inner').append($highlightEl);\n }\n\n const $activeLink = $tabbarEl.find('.tab-link-active');\n let highlightWidth;\n let highlightTranslate;\n\n if ($tabbarEl.hasClass('tabbar-scrollable') && $activeLink && $activeLink[0]) {\n highlightWidth = `${$activeLink[0].offsetWidth}px`;\n highlightTranslate = `${$activeLink[0].offsetLeft}px`;\n } else {\n const activeIndex = $activeLink.index();\n highlightWidth = `${100 / tabLinksCount}%`;\n highlightTranslate = `${(app.rtl ? -activeIndex : activeIndex) * 100}%`;\n }\n\n nextFrame(() => {\n $highlightEl.css('width', highlightWidth).transform(`translate3d(${highlightTranslate},0,0)`);\n });\n },\n init(tabbarEl) {\n const app = this;\n app.toolbar.setHighlight(tabbarEl);\n },\n hide(el, animate = true) {\n const app = this;\n const $el = $(el);\n if ($el.hasClass('toolbar-hidden')) return;\n const className = `toolbar-hidden${animate ? ' toolbar-transitioning' : ''}`;\n $el.transitionEnd(() => {\n $el.removeClass('toolbar-transitioning');\n });\n $el.addClass(className);\n $el.trigger('toolbar:hide');\n app.emit('toolbarHide', $el[0]);\n },\n show(el, animate = true) {\n const app = this;\n const $el = $(el);\n if (!$el.hasClass('toolbar-hidden')) return;\n if (animate) {\n $el.addClass('toolbar-transitioning');\n $el.transitionEnd(() => {\n $el.removeClass('toolbar-transitioning');\n });\n }\n $el.removeClass('toolbar-hidden');\n $el.trigger('toolbar:show');\n app.emit('toolbarShow', $el[0]);\n },\n initToolbarOnScroll(pageEl) {\n const app = this;\n const $pageEl = $(pageEl);\n let $toolbarEl = $pageEl.parents('.view').children('.toolbar');\n if ($toolbarEl.length === 0) {\n $toolbarEl = $pageEl.find('.toolbar');\n }\n if ($toolbarEl.length === 0) {\n $toolbarEl = $pageEl.parents('.views').children('.tabbar, .tabbar-labels');\n }\n if ($toolbarEl.length === 0) {\n return;\n }\n\n let previousScrollTop;\n let currentScrollTop;\n\n let scrollHeight;\n let offsetHeight;\n let reachEnd;\n let action;\n let toolbarHidden;\n function handleScroll(e) {\n if ($pageEl.hasClass('page-with-card-opened')) return;\n if ($pageEl.hasClass('page-previous')) return;\n const scrollContent = this;\n if (e && e.target && e.target !== scrollContent) {\n return;\n }\n currentScrollTop = scrollContent.scrollTop;\n scrollHeight = scrollContent.scrollHeight;\n offsetHeight = scrollContent.offsetHeight;\n reachEnd = currentScrollTop + offsetHeight >= scrollHeight;\n toolbarHidden = $toolbarEl.hasClass('toolbar-hidden');\n\n if (reachEnd) {\n if (app.params.toolbar.showOnPageScrollEnd) {\n action = 'show';\n }\n } else if (previousScrollTop > currentScrollTop) {\n if (app.params.toolbar.showOnPageScrollTop || currentScrollTop <= 44) {\n action = 'show';\n } else {\n action = 'hide';\n }\n } else if (currentScrollTop > 44) {\n action = 'hide';\n } else {\n action = 'show';\n }\n\n if (action === 'show' && toolbarHidden) {\n app.toolbar.show($toolbarEl);\n toolbarHidden = false;\n } else if (action === 'hide' && !toolbarHidden) {\n app.toolbar.hide($toolbarEl);\n toolbarHidden = true;\n }\n\n previousScrollTop = currentScrollTop;\n }\n $pageEl.on('scroll', '.page-content', handleScroll, true);\n $pageEl[0].f7ScrollToolbarHandler = handleScroll;\n },\n};\nexport default {\n name: 'toolbar',\n create() {\n const app = this;\n bindMethods(app, {\n toolbar: Toolbar,\n });\n },\n params: {\n toolbar: {\n hideOnPageScroll: false,\n showOnPageScrollEnd: true,\n showOnPageScrollTop: true,\n },\n },\n on: {\n pageBeforeRemove(page) {\n if (page.$el[0].f7ScrollToolbarHandler) {\n page.$el.off('scroll', '.page-content', page.$el[0].f7ScrollToolbarHandler, true);\n }\n },\n pageBeforeIn(page) {\n const app = this;\n let $toolbarEl = page.$el.parents('.view').children('.toolbar');\n if ($toolbarEl.length === 0) {\n $toolbarEl = page.$el.parents('.views').children('.tabbar, .tabbar-labels');\n }\n if ($toolbarEl.length === 0) {\n $toolbarEl = page.$el.find('.toolbar');\n }\n if ($toolbarEl.length === 0) {\n return;\n }\n if (page.$el.hasClass('no-toolbar')) {\n app.toolbar.hide($toolbarEl);\n } else {\n app.toolbar.show($toolbarEl);\n }\n },\n pageInit(page) {\n const app = this;\n page.$el.find('.tabbar, .tabbar-labels').each((tabbarEl) => {\n app.toolbar.init(tabbarEl);\n });\n if (\n app.params.toolbar.hideOnPageScroll ||\n page.$el.find('.hide-toolbar-on-scroll').length ||\n page.$el.hasClass('hide-toolbar-on-scroll') ||\n page.$el.find('.hide-bars-on-scroll').length ||\n page.$el.hasClass('hide-bars-on-scroll')\n ) {\n if (\n page.$el.find('.keep-toolbar-on-scroll').length ||\n page.$el.hasClass('keep-toolbar-on-scroll') ||\n page.$el.find('.keep-bars-on-scroll').length ||\n page.$el.hasClass('keep-bars-on-scroll')\n ) {\n return;\n }\n app.toolbar.initToolbarOnScroll(page.el);\n }\n },\n init() {\n const app = this;\n app.$el.find('.tabbar, .tabbar-labels').each((tabbarEl) => {\n app.toolbar.init(tabbarEl);\n });\n },\n },\n vnode: {\n tabbar: {\n insert(vnode) {\n const app = this;\n app.toolbar.init(vnode.elm);\n },\n },\n },\n};\n","import $ from '../../shared/dom7.js';\n\nexport default {\n name: 'subnavbar',\n on: {\n pageInit(page) {\n if (page.$navbarEl && page.$navbarEl.length && page.$navbarEl.find('.subnavbar').length) {\n page.$el.addClass('page-with-subnavbar');\n }\n const $innerSubnavbars = page.$el.find('.subnavbar').filter((subnavbarEl) => {\n return $(subnavbarEl).parents('.page')[0] === page.$el[0];\n });\n if ($innerSubnavbars.length) {\n page.$el.addClass('page-with-subnavbar');\n }\n },\n },\n};\n","import $ from '../../shared/dom7.js';\n\nexport default class TouchRipple {\n constructor(app, $el, x, y) {\n const ripple = this;\n\n if (!$el) return undefined;\n\n const { left, top, width, height } = $el[0].getBoundingClientRect();\n const center = {\n x: x - left,\n y: y - top,\n };\n let diameter = Math.max((height ** 2 + width ** 2) ** 0.5, 48);\n\n let isInset = false;\n const insetElements = app.params.touch.touchRippleInsetElements || '';\n if (insetElements && $el.is(insetElements)) {\n isInset = true;\n }\n if (isInset) {\n diameter = Math.max(Math.min(width, height), 48);\n }\n\n if (!isInset && $el.css('overflow') === 'hidden') {\n const distanceFromCenter =\n ((center.x - width / 2) ** 2 + (center.y - height / 2) ** 2) ** 0.5;\n const scale = (diameter / 2 + distanceFromCenter) / (diameter / 2);\n ripple.rippleTransform = `translate3d(0px, 0px, 0) scale(${scale})`;\n } else {\n // prettier-ignore\n ripple.rippleTransform = `translate3d(${-center.x + width / 2}px, ${-center.y + height / 2}px, 0) scale(1)`;\n }\n if (isInset) {\n $el.addClass('ripple-inset');\n }\n\n ripple.$rippleWaveEl = $(\n `<div class=\"ripple-wave\" style=\"width: ${diameter}px; height: ${diameter}px; margin-top:-${\n diameter / 2\n }px; margin-left:-${diameter / 2}px; left:${center.x}px; top:${\n center.y\n }px; --f7-ripple-transform: ${ripple.rippleTransform}\"></div>`,\n );\n\n $el.prepend(ripple.$rippleWaveEl);\n\n ripple.$rippleWaveEl.animationEnd(() => {\n if (!ripple.$rippleWaveEl) return;\n if (ripple.$rippleWaveEl.hasClass('ripple-wave-out')) return;\n ripple.$rippleWaveEl.addClass('ripple-wave-in');\n if (ripple.shouldBeRemoved) {\n ripple.out();\n }\n });\n\n return ripple;\n }\n\n destroy() {\n let ripple = this;\n if (ripple.$rippleWaveEl) {\n ripple.$rippleWaveEl.remove();\n }\n Object.keys(ripple).forEach((key) => {\n ripple[key] = null;\n delete ripple[key];\n });\n ripple = null;\n }\n\n out() {\n const ripple = this;\n const { $rippleWaveEl } = this;\n clearTimeout(ripple.removeTimeout);\n $rippleWaveEl.addClass('ripple-wave-out');\n\n ripple.removeTimeout = setTimeout(() => {\n ripple.destroy();\n }, 300);\n\n $rippleWaveEl.animationEnd(() => {\n clearTimeout(ripple.removeTimeout);\n ripple.destroy();\n });\n }\n\n remove() {\n const ripple = this;\n if (ripple.shouldBeRemoved) return;\n ripple.removeTimeout = setTimeout(() => {\n ripple.destroy();\n }, 400);\n ripple.shouldBeRemoved = true;\n if (ripple.$rippleWaveEl.hasClass('ripple-wave-in')) {\n ripple.out();\n }\n }\n}\n","import TouchRipple from './touch-ripple-class.js';\n\nexport default {\n name: 'touch-ripple',\n static: {\n TouchRipple,\n },\n create() {\n const app = this;\n app.touchRipple = {\n create(...args) {\n return new TouchRipple(...args);\n },\n };\n },\n};\n","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { extend, deleteProps } from '../../shared/utils.js';\nimport Framework7Class from '../../shared/class.js';\n\nconst openedModals = [];\nconst dialogsQueue = [];\nfunction clearDialogsQueue() {\n if (dialogsQueue.length === 0) return;\n const dialog = dialogsQueue.shift();\n dialog.open();\n}\nclass Modal extends Framework7Class {\n constructor(app, params) {\n super(params, [app]);\n\n const modal = this;\n\n const defaults = {};\n\n // Extend defaults with modules params\n modal.useModulesParams(defaults);\n\n modal.params = extend(defaults, params);\n modal.opened = false;\n\n let $containerEl = modal.params.containerEl ? $(modal.params.containerEl).eq(0) : app.$el;\n if (!$containerEl.length) $containerEl = app.$el;\n\n modal.$containerEl = $containerEl;\n modal.containerEl = $containerEl[0];\n\n // Install Modules\n modal.useModules();\n\n return this;\n }\n\n onOpen() {\n const modal = this;\n modal.opened = true;\n openedModals.push(modal);\n $('html').addClass(`with-modal-${modal.type.toLowerCase()}`);\n modal.$el.trigger(`modal:open ${modal.type.toLowerCase()}:open`);\n modal.emit(`local::open modalOpen ${modal.type}Open`, modal);\n }\n\n onOpened() {\n const modal = this;\n modal.$el.trigger(`modal:opened ${modal.type.toLowerCase()}:opened`);\n modal.emit(`local::opened modalOpened ${modal.type}Opened`, modal);\n }\n\n onClose() {\n const modal = this;\n modal.opened = false;\n if (!modal.type || !modal.$el) return;\n openedModals.splice(openedModals.indexOf(modal), 1);\n $('html').removeClass(`with-modal-${modal.type.toLowerCase()}`);\n modal.$el.trigger(`modal:close ${modal.type.toLowerCase()}:close`);\n modal.emit(`local::close modalClose ${modal.type}Close`, modal);\n }\n\n onClosed() {\n const modal = this;\n if (!modal.type || !modal.$el) return;\n modal.$el.removeClass('modal-out');\n modal.$el.hide();\n if (\n modal.params.backdrop &&\n (modal.params.backdropUnique || modal.forceBackdropUnique) &&\n modal.$backdropEl\n ) {\n modal.$backdropEl.remove();\n }\n modal.$el.trigger(`modal:closed ${modal.type.toLowerCase()}:closed`);\n modal.emit(`local::closed modalClosed ${modal.type}Closed`, modal);\n }\n\n open(animateModal) {\n const modal = this;\n const document = getDocument();\n const app = modal.app;\n const $el = modal.$el;\n const $backdropEl = modal.$backdropEl;\n const type = modal.type;\n let animate = true;\n if (typeof animateModal !== 'undefined') animate = animateModal;\n else if (typeof modal.params.animate !== 'undefined') {\n animate = modal.params.animate;\n }\n\n if (!$el || $el.hasClass('modal-in')) {\n if (animateModal === false && $el[0] && type !== 'dialog') {\n $el[0].style.display = 'block';\n }\n return modal;\n }\n\n if (type === 'dialog' && app.params.modal.queueDialogs) {\n let pushToQueue;\n if ($('.dialog.modal-in').length > 0) {\n pushToQueue = true;\n } else if (openedModals.length > 0) {\n openedModals.forEach((openedModal) => {\n if (openedModal.type === 'dialog') pushToQueue = true;\n });\n }\n if (pushToQueue) {\n dialogsQueue.push(modal);\n return modal;\n }\n }\n\n const $modalParentEl = $el.parent();\n const wasInDom = $el.parents(document).length > 0;\n if (!$modalParentEl.is(modal.$containerEl)) {\n modal.$containerEl.append($el);\n modal.once(`${type}Closed`, () => {\n if (wasInDom) {\n $modalParentEl.append($el);\n } else {\n $el.remove();\n }\n });\n }\n // Show Modal\n $el.show();\n\n if (\n modal.params.backdrop &&\n (modal.params.backdropUnique || modal.forceBackdropUnique) &&\n modal.$backdropEl\n ) {\n modal.$backdropEl.insertBefore($el);\n }\n\n /* eslint no-underscore-dangle: [\"error\", { \"allow\": [\"_clientLeft\"] }] */\n modal._clientLeft = $el[0].clientLeft;\n\n // Modal\n function transitionEnd() {\n if ($el.hasClass('modal-out')) {\n modal.onClosed();\n } else if ($el.hasClass('modal-in')) {\n modal.onOpened();\n }\n }\n if (animate) {\n if ($backdropEl) {\n $backdropEl.removeClass('not-animated');\n $backdropEl.addClass('backdrop-in');\n }\n $el.animationEnd(() => {\n transitionEnd();\n });\n $el.transitionEnd(() => {\n transitionEnd();\n });\n $el.removeClass('modal-out not-animated').addClass('modal-in');\n modal.onOpen();\n } else {\n if ($backdropEl) {\n $backdropEl.addClass('backdrop-in not-animated');\n }\n $el.removeClass('modal-out').addClass('modal-in not-animated');\n modal.onOpen();\n modal.onOpened();\n }\n\n return modal;\n }\n\n close(animateModal) {\n const modal = this;\n const $el = modal.$el;\n const $backdropEl = modal.$backdropEl;\n\n let animate = true;\n if (typeof animateModal !== 'undefined') animate = animateModal;\n else if (typeof modal.params.animate !== 'undefined') {\n animate = modal.params.animate;\n }\n\n if (!$el || !$el.hasClass('modal-in')) {\n if (dialogsQueue.indexOf(modal) >= 0) {\n dialogsQueue.splice(dialogsQueue.indexOf(modal), 1);\n }\n return modal;\n }\n\n // backdrop\n if ($backdropEl) {\n let needToHideBackdrop = true;\n if (modal.type === 'popup') {\n modal.$el\n .prevAll('.popup.modal-in')\n .add(modal.$el.nextAll('.popup.modal-in'))\n .each((popupEl) => {\n const popupInstance = popupEl.f7Modal;\n if (!popupInstance) return;\n if (\n popupInstance.params.closeByBackdropClick &&\n popupInstance.params.backdrop &&\n popupInstance.backdropEl === modal.backdropEl\n ) {\n needToHideBackdrop = false;\n }\n });\n }\n if (needToHideBackdrop) {\n $backdropEl[animate ? 'removeClass' : 'addClass']('not-animated');\n $backdropEl.removeClass('backdrop-in');\n }\n }\n\n // Modal\n $el[animate ? 'removeClass' : 'addClass']('not-animated');\n\n function transitionEnd() {\n if ($el.hasClass('modal-out')) {\n modal.onClosed();\n } else if ($el.hasClass('modal-in')) {\n modal.onOpened();\n }\n }\n if (animate) {\n $el.animationEnd(() => {\n transitionEnd();\n });\n $el.transitionEnd(() => {\n transitionEnd();\n });\n $el.removeClass('modal-in').addClass('modal-out');\n // Emit close\n modal.onClose();\n } else {\n $el.addClass('not-animated').removeClass('modal-in').addClass('modal-out');\n // Emit close\n modal.onClose();\n modal.onClosed();\n }\n\n if (modal.type === 'dialog') {\n clearDialogsQueue();\n }\n\n return modal;\n }\n\n destroy() {\n const modal = this;\n if (modal.destroyed) return;\n modal.emit(`local::beforeDestroy modalBeforeDestroy ${modal.type}BeforeDestroy`, modal);\n if (modal.$el) {\n modal.$el.trigger(`modal:beforedestroy ${modal.type.toLowerCase()}:beforedestroy`);\n if (modal.$el.length && modal.$el[0].f7Modal) {\n delete modal.$el[0].f7Modal;\n }\n }\n deleteProps(modal);\n modal.destroyed = true;\n }\n}\n\nexport default Modal;\n","import $ from '../../shared/dom7.js';\nimport { extend } from '../../shared/utils.js';\nimport Modal from './modal-class.js';\n\nclass CustomModal extends Modal {\n constructor(app, params) {\n const extendedParams = extend(\n {\n backdrop: true,\n closeByBackdropClick: true,\n on: {},\n },\n params,\n );\n\n // Extends with open/close Modal methods;\n super(app, extendedParams);\n\n const customModal = this;\n\n customModal.params = extendedParams;\n\n // Find Element\n let $el;\n if (!customModal.params.el) {\n $el = $(customModal.params.content);\n } else {\n $el = $(customModal.params.el);\n }\n\n if ($el && $el.length > 0 && $el[0].f7Modal) {\n return $el[0].f7Modal;\n }\n\n if ($el.length === 0) {\n return customModal.destroy();\n }\n let $backdropEl;\n if (customModal.params.backdrop) {\n $backdropEl = app.$el.children('.custom-modal-backdrop');\n if ($backdropEl.length === 0) {\n $backdropEl = $('<div class=\"custom-modal-backdrop\"></div>');\n app.$el.append($backdropEl);\n }\n }\n\n function handleClick(e) {\n if (!customModal || customModal.destroyed) return;\n if ($backdropEl && e.target === $backdropEl[0]) {\n customModal.close();\n }\n }\n\n customModal.on('customModalOpened', () => {\n if (customModal.params.closeByBackdropClick && customModal.params.backdrop) {\n app.on('click', handleClick);\n }\n });\n customModal.on('customModalClose', () => {\n if (customModal.params.closeByBackdropClick && customModal.params.backdrop) {\n app.off('click', handleClick);\n }\n });\n\n extend(customModal, {\n app,\n $el,\n el: $el[0],\n $backdropEl,\n backdropEl: $backdropEl && $backdropEl[0],\n type: 'customModal',\n });\n\n $el[0].f7Modal = customModal;\n\n return customModal;\n }\n}\nexport default CustomModal;\n","import Modal from './modal-class.js';\nimport CustomModal from './custom-modal-class.js';\n\nexport default {\n name: 'modal',\n static: {\n Modal,\n CustomModal,\n },\n create() {\n const app = this;\n app.customModal = {\n create(params) {\n return new CustomModal(app, params);\n },\n };\n },\n params: {\n modal: {\n queueDialogs: true,\n },\n },\n};\n","import $ from './shared/dom7.js';\n\nimport Framework7 from './components/app/app-class.js';\n\n//IMPORT_HELPERS\n\nimport DeviceModule from './modules/device/device.js';\nimport SupportModule from './modules/support/support.js';\nimport UtilsModule from './modules/utils/utils.js';\nimport ResizeModule from './modules/resize/resize.js';\nimport RequestModule from './modules/request/request.js';\nimport TouchModule from './modules/touch/touch.js';\nimport ClicksModule from './modules/clicks/clicks.js';\nimport RouterModule from './modules/router/router.js';\nimport RouterComponentLoaderModule from './modules/router/component-loader.js';\nimport ComponentModule, { Component, $jsx } from './modules/component/component.js';\nimport HistoryModule from './modules/history/history.js';\nimport ServiceWorkerModule from './modules/service-worker/service-worker.js';\nimport StoreModule, { createStore } from './modules/store/store.js';\n\nimport Statusbar from './components/statusbar/statusbar.js';\nimport View from './components/view/view.js';\nimport Navbar from './components/navbar/navbar.js';\nimport Toolbar from './components/toolbar/toolbar.js';\nimport Subnavbar from './components/subnavbar/subnavbar.js';\nimport TouchRipple from './components/touch-ripple/touch-ripple.js';\nimport Modal from './components/modal/modal.js';\nimport Router from './modules/router/router-class.js';\n\n//IMPORT_COMPONENTS\n\n// UMD_ONLY_START\nif (typeof window !== 'undefined') {\n // Dom7\n if (!window.Dom7) window.Dom7 = $;\n}\n// UMD_ONLY_END\n\nRouter.use([RouterComponentLoaderModule]);\n\nFramework7.use([\n DeviceModule,\n SupportModule,\n UtilsModule,\n ResizeModule,\n RequestModule,\n TouchModule,\n ClicksModule,\n RouterModule,\n HistoryModule,\n ComponentModule,\n ServiceWorkerModule,\n StoreModule,\n Statusbar,\n View,\n Navbar,\n Toolbar,\n Subnavbar,\n TouchRipple,\n Modal,\n //INSTALL_COMPONENTS\n]);\n\n//NAMED_EXPORT\nexport default Framework7;\n"]}
|