]> git.proxmox.com Git - framework7.git/blob - framework7/js/framework7-lazy.min.js.map
intial commit
[framework7.git] / framework7 / js / framework7-lazy.min.js.map
1 {"version":3,"sources":["framework7-lazy.js"],"names":["global","factory","exports","module","define","amd","self","Framework7","this","t7ctx","window","undefined","Template7Context","Template7Utils","quoteSingleRexExp","RegExp","quoteDoubleRexExp","isFunction","func","escape","string","replace","helperToSlices","shiftIndex","i","j","helperParts","trim","split","slices","length","part","blockQuoteRegExp","openingQuote","push","indexOf","match","hashParts","hashName","hashContent","hash","stringToBlocks","blocks","stringBlocks","block","type","content","contextName","helperSlices","helperName","isPartial","helperContext","helperHash","slice","Array","isArray","helperContent","elseContent","toSkip","foundClosed","foundElse","depth","inverseContent","parseJsVariable","expression","object","reduce","arr","JSON","stringify","variable","forEach","partName","join","parseJsParents","parents","levelsUp","getCompileVar","name","ctx","data","parts","newDepth","dataLevel","Number","isFinite","getCompiledArguments","contextArray","test","Template7Helpers","_partial","partialName","options","p","Template7Class","partials","template","compiled","compile","Object","keys","root","context","Error","if","call","fn","inverse","unless","each","ret","reverse","first","last","index","key","with","delimiter","delimeter","js","execute","prop","re1","re2","Template7","eval","js_if","condition","js_compare","Template7Options","Template7Partials","staticAccessors","configurable","helpers","args","len","arguments","instance","rendered","prototype","t","getCompileFn","getCompileInverse","resultString","compiledArguments","level","parentsString","dynamicHelper","get","defineProperties","registerHelper","unregisterHelper","registerPartial","unregisterPartial","doc","document","body","addEventListener","removeEventListener","activeElement","blur","nodeName","querySelector","querySelectorAll","getElementById","createEvent","initEvent","createElement","children","childNodes","style","setAttribute","getElementsByTagName","location","win","navigator","userAgent","history","CustomEvent","getComputedStyle","getPropertyValue","Image","Date","screen","setTimeout","clearTimeout","Dom7","$","selector","els","tempParent","html","toCreate","innerHTML","nodeType","unique","uniqueArray","toCamelCase","toLowerCase","group1","toUpperCase","requestAnimationFrame","callback","webkitRequestAnimationFrame","cancelAnimationFrame","id","webkitCancelAnimationFrame","addClass","className","classes","classList","add","removeClass","remove","hasClass","contains","toggleClass","toggle","attr","attrs","value","arguments$1","getAttribute","attrName","removeAttr","removeAttribute","props","propName","el","dom7ElementDataStorage","dataKey","removeData","dataset","attributes","parseFloat","val","dom","i$1","multiple","selected","values","selectedOptions","transform","elStyle","webkitTransform","transition","duration","webkitTransitionDuration","transitionDuration","on","assign","eventType","targetSelector","listener","capture","handleLiveEvent","e","target","eventData","dom7EventData","unshift","is","apply","k","handleEvent","events","event$1","dom7LiveListeners","proxyListener","event","dom7Listeners","off","handlers","handler","splice","once","eventName","proxy","eventArgs","trigger","evt","detail","bubbles","cancelable","filter","dataIndex","dispatchEvent","transitionEnd","fireCallBack","animationEnd","width","innerWidth","css","outerWidth","includeMargins","styles","offsetWidth","height","innerHeight","outerHeight","offsetHeight","offset","box","getBoundingClientRect","clientTop","clientLeft","scrollTop","scrollY","scrollLeft","scrollX","top","left","hide","display","show","toArray","matchedItems","map","modifiedItems","text","textContent","compareWith","matches","webkitMatchesSelector","msMatchesSelector","child","previousSibling","eq","returnIndex","append","newChild","tempDiv","firstChild","appendChild","appendTo","parent","prepend","insertBefore","prependTo","before","parentNode","cloneNode","insertAfter","after","nextSibling","next","nextElementSibling","nextAll","nextEls","prev","previousElementSibling","prevAll","prevEls","siblings","closest","find","foundElements","found","removeChild","detach","toAdd","empty","Class","Methods","freeze","scrollTo","easing","currentTop","currentLeft","maxTop","maxLeft","newTop","newLeft","animateTop","animateLeft","scrollHeight","Math","max","min","scrollWidth","startTime","render","time","getTime","done","progress","easeProgress","cos","PI","Scroll","animate","initialProps","initialParams","animateInstance","a","params","elements","animating","que","easingProgress","stop","frameId","dom7AnimateInstance","complete","shift","initialFullValue","initialValue","unit","finalValue","finalFullValue","container","currentValue","elementsDone","propsDone","began","begin","element","ref","Animate","noTrigger","eventShortcut","concat","click","bind","focus","focusin","focusout","keyup","keydown","keypress","submit","change","mousedown","mousemove","mouseup","mouseenter","mouseleave","mouseout","mouseover","touchstart","touchend","touchmove","resize","scroll","eventShortcuts","group","methodName","NEWTON_ITERATIONS","NEWTON_MIN_SLOPE","SUBDIVISION_PRECISION","SUBDIVISION_MAX_ITERATIONS","kSplineTableSize","kSampleStepSize","float32ArraySupported","Float32Array","A","aA1","aA2","B","C","calcBezier","aT","getSlope","binarySubdivide","aX","aA","aB","mX1","mX2","currentX","currentT","abs","newtonRaphsonIterate","aGuessT","currentSlope","bezier","mY1","mY2","sampleValues","x","intervalStart","currentSample","lastSample","guessForT","initialSlope","getTForX","defaultDiacriticsRemovalap","base","letters","diacriticsMap","createPromise","resolveArgs","rejectArgs","resolved","rejected","promiseHandlers","then","catch","promise","thenHandler","catchHandler","uniqueNumber","Utils","mask","floor","random","mdPreloaderContent","eventNameToColonCase","hasColon","char","deleteProps","obj","nextTick","delay","nextFrame","now","Promise","removeDiacritics","str","parseUrlQuery","url","param","query","urlToParse","href","paramsPart","decodeURIComponent","getTranslate","axis","matrix","curTransform","transformMatrix","curStyle","WebKitCSSMatrix","MozTransform","OTransform","MsTransform","msTransform","toString","m41","m42","serializeObject","newParents","resultArray","varName","parentParts","encodeURIComponent","varValue","toPush","String","isObject","o","constructor","merge","len$1","to","from","nextSource","keysArray","nextIndex","nextKey","desc","getOwnPropertyDescriptor","enumerable","extend","deep","Device","platform","ua","device","ios","android","androidChrome","desktop","windowsPhone","iphone","iphoneX","ipod","ipad","edge","ie","firefox","macos","windows","cordova","phonegap","screenWidth","screenHeight","os","osVersion","webView","standalone","matchMedia","webview","osVersionArr","metaViewport","minimalUi","needsStatusbarOverlay","orientation","statusbar","pixelRatio","devicePixelRatio","Framework7Class","eventsParents","eventsListeners","staticAccessors$1","components","ConstructorMethods","parameters","defaultSelector","domProp","app","addMethods","methods","create","Function","$el","destroy","ModalMethods","open","f7Modal","close","priority","method","onceHandler","eventHandler","emit","local","eventsArray","localEvents","parentEvents","eventsParent","useModuleParams","instanceParams","originalParams","paramKey","useModulesParams","modules","moduleName","useModule","moduleParams","modulePropName","moduleProp","moduleEventName","vnode","vnodeHooks","vnodeId","hookName","useModules","modulesParams","set","use","installModule","proto","static","install","m","fetchedModules","loadModule","moduleToLoad","resolve","reject","modulePath","moduleObj","moduleFunc","matchNamePattern","lazyModulesPath","module$1","scriptLoad","resolveScript","rejectScript","request","scriptContent","callbackLoadName","scriptEl","componentLoader","xhr","status","styleLoad","resolveStyle","rtl","styleContent","styleEl","all","err","Framework7Class$$1","passedParams","defaults","version","theme","language","routes","initOnDeviceReady","init","$rootEl","f7","initData","__proto__","prototypeAccessors","t7","initialized","loadModules","getVnodeHooks","hook","DeviceModule","classNames","parseInt","Support","support","div","position","positionSticky","testDiv","touch","maxTouchPoints","DocumentTouch","pointerEvents","pointerEnabled","PointerEvent","prefixedPointerEvents","msPointerEnabled","transforms3d","Modernizr","csstransforms3d","flexbox","observer","passiveListener","supportsPassive","opts","defineProperty","gestures","SupportModule","UtilsModule","utils","ResizeModule","getSize","orientationchange","globals","jsonpRequests","Request","requestOptions","globalsNoCallbacks","callbackName","async","cache","user","password","headers","xhrFields","statusCode","processData","dataType","contentType","timeout","fireCallback","globalCallbackValue","optionCallbackValue","stringData","paramsPrefix","abortTimeout","callbackSplit","requestUrl","addVars","script","onerror","src","XMLHttpRequest","requestParameters","xhrTimeout","postData","ArrayBuffer","Blob","Document","FormData","boundary","setRequestHeader","data$1","newData","headerName","crossDomain","$2","host","onload","responseData","parseError","parse","responseText","responseType","response","onabort","abort","send","RequestShortcut","assign$1","success","error","post","json","getJSON","postJSON","setup","RequestModule","initTouch","touchStartX","touchStartY","touchStartTime","targetElement","trackClick","activeSelection","scrollParent","lastClickTime","isMoved","tapHoldFired","tapHoldTimeout","activableElement","activeTimeout","needsFastClick","needsFastClickTimeOut","rippleWave","rippleTarget","rippleTimeout","useRipple","materialRipple","findActivableElement","activable","activeStateElements","isInsideScrollableView","pageContent","addActive","removeActive","createRipple","y","touchRipple","removeRipple","rippleTouchStart","rippleElements","materialRippleElements","rippleParent","findRippleElement","rippleTouchMove","rippleTouchEnd","emitAppTouchEvent","appTouchStartActive","appTouchMoveActive","appTouchEndActive","appTouchStartPassive","appTouchMovePassive","appTouchEndPassive","passive","activeListener","touchEvents","start","move","end","nodes","prevent","allowClick","forwardedTouchEvent","tapHold","tapHoldPreventClicks","stopImmediatePropagation","stopPropagation","preventDefault","noBlur","this$1","targetTouches","touches","tapHoldDelay","fastClicksExclude","selection","getSelection","rangeCount","focusNode","isCollapsed","pageX","pageY","f7ScrollTop","fastClicksDelayBetweenClicks","activeState","distance","fastClicksDistanceThreshold","touchEndTime","tag","skipInputs","disabled","readOnly","targetNeedsFocus","changedTouches","initMouseEvent","screenX","screenY","clientX","clientY","elementFromPoint","which","disableContextMenu","TouchModule","fastClicks","pathToRegexp_1","pathToRegexp","parse_1","compile_1","tokensToFunction_1","tokensToFunction","tokensToRegExp_1","tokensToRegExp","DEFAULT_DELIMITER","PATH_REGEXP","res","tokens","path","defaultDelimiter","whitelist","pathEscaped","exec","escaped","modifier","c","repeat","optional","pattern","prefix","escapeGroup","escapeString","substr","encode","token","segment","TypeError","flags","sensitive","regexpToRegexp","groups","source","arrayToRegexp","stringToRegexp","strict","endsWith","route","endToken","isEndDelimited","History","queue","clearQueue","currentQueue","routerQueue","clearRouterQueue","pop","router","stateUrl","action","pushStateAnimate","back","pushState","navigate","handle","blockPopstate","state","previousState","allowChange","views","view","viewState","allowPageChange","initViewState","viewId","newState","replaceState","go","readyState","SwipeBack","r","isScrolling","viewContainerWidth","touchesDiff","currentNavElements","previousNavElements","activeNavBackIcon","activeNavBackIconText","previousNavBackIcon","dynamicNavbar","separateNavbar","pageShadow","pageOpacity","navbarWidth","$navbarEl","isTouched","touchesStart","currentPage","previousPage","allowViewTouchMove","currentNavbar","previousNavbar","paramsSwipeBackAnimateShadow","paramsSwipeBackAnimateOpacity","paramsSwipeBackActiveArea","paramsSwipeBackThreshold","handleTouchStart","swipeBackEnabled","swipeout","handleTouchMove","f7PreventSwipeBack","preventSwipeBack","cancel","iosAnimateNavbarBackIcon","sheet","f7PreventPanelSwipe","preventSwipePanelBySwipeBack","inverter","percentage","callbackData","currentPageEl","previousPageEl","currentNavbarEl","previousNavbarEl","currentPageTranslate","previousPageTranslate","round","swipeBackActive","opacity","navEl","$navEl","pow","activeNavTranslate","f7NavbarRightOffset","iconTranslate","previousNavTranslate","f7NavbarLeftOffset","offsetLeft","handleTouchEnd","timeDiff","pageChanged","navElIndex","translate","sliding","currentRoute","f7Page","pageCallback","swipeBack","saveHistory","stackPages","initialPages","removePage","removeNavbar","previousRoute","preloadPreviousPage","preload","redirect","direction","initial","redirectUrl","redirectOptions","processQueue","routeQueue","processRouteQueue","enterNextRoute","routesBeforeEnter","beforeEnter","routesBeforeLeave","beforeLeave","appRouterCheck","refreshPage","ignoreCache","reloadCurrent","forward","forwardOptions","modalType","reloadPages","reloadPrevious","reloadAll","clearPreviousHistory","currentRouteIsModal","modal","modalLoadProp","modalToClose","modalInstance","previousUrl","findMatchingRoute","modalRemove","$oldPage","$newNavbarInner","$oldNavbarInner","$viewEl","$newPage","reload","removeThemeElements","keepAlive","keepAliveData","pageEl","$navbarsInView","$pagesInView","pageInView","navbarInView","newPagePosition","navbar","getElByPage","navbarEl","oldNavbarInnerEl","page","navbarInner","pushStateRoot","pushStateSeparator","newPageInDom","f7Component","$mount","componentEl","f7PageMounted","$oldPageEl","$oldNavbarInnerEl","tab","tabLoad","afterAnimation","pageClasses","navbarClasses","keepOldPage","iosSwipeBack","setPositionClasses","materialPageLoadDelay","iosPageLoadDelay","load","loadParams","loadOptions","ignorePageChange","pageName","templateUrl","component","componentUrl","parentPath","sameParams","paramName","allowDuplicateUrls","newOptions","parseRouteUrl","getPageEl","pageTemplateLoader","pageComponentLoader","xhrRequest","navigateParams","navigateOptions","createRoute","findRouteByKey","constructRouteUrl","navigateUrl","currentPath","routerLoaded","modalLoad","pageLoadProp","resolveParams","resolveOptions","resolvedAsModal","modalRoute","tabRoute","parentPageEl","tabEl","$parentPageEl","hasContentLoadProp","tabShowResult","$newTabEl","$oldTabEl","animated","onTabsChanged","tabParentPageData","f7RouterTabLoaded","loadTab","loadTabParams","loadTabOptions","contentEl","tabEventTarget","unloadTabContent","tabRemove","onTabLoaded","tabTemplateLoader","tabComponentLoader","tabContent","tabLoadProp","hasTabComponentChild","tabChild","$destroy","removeTabContent","foundLoadProp","isPanel","modalOrPanel","modalParams","onModalLoaded","hasEl","closeOnSwipeBack","closeByRouter","modalComponent","removeModal","loadModal","loadModalParams","loadModalOptions","modalTemplateLoader","modalComponentLoader","modalContent","backward","backwardOptions","backIndex","force","pageToRemove","$navbarToRemove","$pageToRemove","insertPage","loadBack","backParams","backOptions","prevOpenedModals","forceOtherUrl","$previousPage","previousPageRoute","backForceLoaded","clearPreviousPages","panel","Router","isAppRouter","scrollHistory","iosDynamicNavbar","iosSeparateDynamicNavbar","initialNavbars","tempDom","newRoute","animatableNavElements","newNavbarInner","oldNavbarInner","newNavEls","oldNavEls","animateIcon","animatableNavEl","$iconEl","isSliding","isSubnavbar","needsOpacityTransition","hasIcon","leftOffset","rightOffset","navEls","n","otherEls","otherNavEl","iconTextEl","animateWithCSS","oldPage","newPage","routerTransitionClass","animateNavbars","animateWithJS","$shadowEl","$opacityEl","animateCustom","modalEl","removeEl","tabIndex","removeElements","removeElementsWithTimeout","removeElementsTimeout","findElement","stringSelector","notStacked","$container","flattenRoutes","flattenedRoutes","hasTabRoutes","tabs","mergedPathsRoutes","tRoute","mergedPathsRoutes$1","childRoute","cRoute","toUrl","findTabRoute","foundTabRoute","$tabEl","tabId","matchingRoute","matched","pathsToMatch","alias","aliasPath","pathToMatch","keyObj","paramValue","replaceRequestUrlParams","compiledUrl","regExp","removeFromXhrCache","xhrCache","hasQuery","passRouteQueryToRequest","passRouteParamsToRequest","xhrCacheIgnoreGetParameters","xhrCacheIgnore","cachedUrl","xhrCacheDuration","beforeSend","templateLoader","compiledHtml","$app","$root","$route","$router","$theme","md","templateContent","cachedComponent","componentOptions","extendContext","createdComponent","cached","loadedComponent","parsedComponent","rootEl","routerEl","getPageData","pageFromEl","pageFrom","$pageEl","fromPage","$pageFromEl","restoreScrollTopOnBack","camelName","colonName","attachEvents","$pageContent","pageContentIndex","pageContentEl","f7PageInitialized","$pageContent$1","f7RouteEventsAttached","f7RouteEventsOn","f7RouteEventsOnce","localStorage","restoreHistory","clearHistory","updateCurrentUrl","newUrl","mdSwipeBack","historyRestored","hasTabRoute","initUrl","documentUrl","origin","pushStateOnLoad","pushStateAnimateOnLoad","pathname","console","warn","search","$navbarInnerEl","initOptions","pageAfterIn","routerProp","Router$1","templates","View","appInstance","viewParams","routesAdd","main","f7View","viewProp","initClicks","$clickedEl","$clickedLinkEl","isLink","isTabLink","clicks","externalLinks","InAppBrowser","moduleClicks","clickSelector","matchingClickedElement","clickedLinkData","linksView","f7RouteProps","ClicksModule","HistoryModule","keyPrefix","Storage","getItem","setItem","removeItem","clear","keyName","StorageModule","storage","sel","elm","array","primitive","s","addNS","ns","childData","h","b","selfClosing","propsAttrs","booleanProps","getHooks","isRoot","hooks","class","insert","update","postpatch","oldVnode","vn","$options","updated","f","getEventHandler","handlerString","fired","customArgs","needMethodBind","pathIndex","argument","arg","isNaN","deepArg","getData","attrValue","eventNamePart","eventNameIndex","prepatch","getChildren","elementToVNode","tagName","vdom","result","createElementNS","namespaceURI","qualifiedName","createTextNode","createComment","insertBefore$1","newNode","referenceNode","node","setTextContent","getTextContent","isElement","isText","isComment","htmlDomApi","isUndef","isDef","emptyNode","sameVnode","vnode1","vnode2","isVnode","vnode$$1","createKeyToOldIdx","beginIdx","endIdx","ch","init$1","domApi","cbs","api","createRmCb","childElm","listeners","parent_1","createElm","insertedVnodeQueue","hashIdx","dotIdx","dot","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","xlinkNS","xmlNS","colonChar","xChar","updateAttrs","oldAttrs","cur","charCodeAt","setAttributeNS","attributesModule","updateProps","oldProps","propsModule","raf","setNextFrame","updateStyle","oldStyle","oldHasDel","removeProperty","delayed","name2","setProperty","applyDestroyStyle","applyRemoveStyle","amount","applied","ev","styleModule","invokeHandler","createListener","updateEvents","oldOn","oldListener","oldElm","eventListenersModule","patch","Framework7Component","$$","$dom7","Proxy","deleteProperty","has","cycleKey","beforeCreate","$render","$vnode","$styleEl","styleScoped","$attachEvents","created","parseComponent","componentString","callbackCreateName","callbackRenderName","hasTemplate","templateType","item","line","scripts","renderContent","$detachEvents","$forceUpdate","newVNode","$setState","mergeState","mountMethod","beforeMount","mounted","beforeDestroy","destroyed","ComponentModule","Statusbar","StatusBar","onClick","setTextColor","color","styleLightContent","styleDefault","setIosTextColor","setBackgroundColor","backgroundColorByHexString","isVisible","overlaysWebView","overlays","iosOverlaysWebView","checkOverlay","enabled","overlay","scrollTopOnClick","iosTextColor","androidOverlaysWebView","androidTextColor","iosBackgroundColor","materialBackgroundColor","androidBackgroundColor","Statusbar$1","iosSetTextColor",".statusbar","getCurrentView","popoverView","popupView","panelView","appViews","appView","View$1","iosSwipeBackAnimateShadow","iosSwipeBackAnimateOpacity","iosSwipeBackActiveArea","iosSwipeBackThreshold","mdSwipeBackAnimateShadow","mdSwipeBackAnimateOpacity","mdSwipeBackActiveArea","mdSwipeBackThreshold","viewEl","modalOpen","modalBeforeDestroy","Navbar","size","currLeft","diff","right","title","subnavbar","noLeft","noRight","leftWidth","rightWidth","titleWidth","navbarStyles","navbarInnerWidth","paddingLeft","paddingRight","isPrevious","separateNavbarRightOffset","separateNavbarLeftOffset","requiredLeft","titleLeftOffset","titleRightOffset","activeNavbarBackLink","iosCenterTitle","titleLeft","pageData","getPageByEl","navbarInnerEl","initHideNavbarOnScroll","previousScrollTop","currentScrollTop","reachEnd","navbarHidden","handleScroll","showOnPageScrollEnd","showOnPageScrollTop","f7ScrollNavbarHandler","Navbar$1","scrollTopOnTitleClick","hideOnPageScroll","panelBreakpoint resize","pageBeforeRemove","pageBeforeIn","pageReinit","pageInit","panelOpen","panelSwipeOpen","tabShow",".navbar .title","navbar-inner","Toolbar","setHighlight","tabbarEl","$tabbarEl","$highlightEl","tabLinksCount","highlightWidth","highlightTranslate","$activeLink","activeIndex","toolbar","initHideToolbarOnScroll","toolbarHidden","$toolbarEl","f7ScrollToolbarHandler","Toolbar$1","Subnavbar","TouchRipple","ripple","center","diameter","$rippleWaveEl","rippleTransform","onRemove","removing","removeTimeout","TouchRipple$1","openedModals","dialogsQueue","clearDialogsQueue","Modal","opened","onOpen","onOpened","onClose","onClosed","animateModal","pushToQueue","$backdropEl","queueDialogs","openedModal","$modalParentEl","wasInDom","moveToRoot","marginTop","_clientLeft","needToHideBackdrop","popupEl","popupInstance","closeByBackdropClick","backdrop","backdropEl","CustomModal","Modal$$1","extendedParams","customModal","handleClick","Modal$1"],"mappings":"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","file":"framework7-lazy.min.js","sourcesContent":["/**\n * Framework7 3.6.6\n * Full featured mobile HTML framework for building iOS & Android apps\n * http://framework7.io/\n *\n * Copyright 2014-2019 Vladimir Kharlampidi\n *\n * Released under the MIT License\n *\n * Released on: February 5, 2019\n */\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global = global || self, global.Framework7 = factory());\n}(this, function () { 'use strict';\n\n /**\n * Template7 1.4.1\n * Mobile-first HTML template engine\n * \n * http://www.idangero.us/template7/\n * \n * Copyright 2019, Vladimir Kharlampidi\n * The iDangero.us\n * http://www.idangero.us/\n * \n * Licensed under MIT\n * \n * Released on: February 5, 2019\n */\n\n var t7ctx;\n if (typeof window !== 'undefined') {\n t7ctx = window;\n } else if (typeof global !== 'undefined') {\n t7ctx = global;\n } else {\n t7ctx = undefined;\n }\n\n var Template7Context = t7ctx;\n\n var Template7Utils = {\n quoteSingleRexExp: new RegExp('\\'', 'g'),\n quoteDoubleRexExp: new RegExp('\"', 'g'),\n isFunction: function isFunction(func) {\n return typeof func === 'function';\n },\n escape: function escape(string) {\n if ( string === void 0 ) string = '';\n\n return string\n .replace(/&/g, '&amp;')\n .replace(/</g, '&lt;')\n .replace(/>/g, '&gt;')\n .replace(/\"/g, '&quot;')\n .replace(/'/g, '&#039;');\n },\n helperToSlices: function helperToSlices(string) {\n var quoteDoubleRexExp = Template7Utils.quoteDoubleRexExp;\n var quoteSingleRexExp = Template7Utils.quoteSingleRexExp;\n var helperParts = string.replace(/[{}#}]/g, '').trim().split(' ');\n var slices = [];\n var shiftIndex;\n var i;\n var j;\n for (i = 0; i < helperParts.length; i += 1) {\n var part = helperParts[i];\n var blockQuoteRegExp = (void 0);\n var openingQuote = (void 0);\n if (i === 0) { slices.push(part); }\n else if (part.indexOf('\"') === 0 || part.indexOf('\\'') === 0) {\n blockQuoteRegExp = part.indexOf('\"') === 0 ? quoteDoubleRexExp : quoteSingleRexExp;\n openingQuote = part.indexOf('\"') === 0 ? '\"' : '\\'';\n // Plain String\n if (part.match(blockQuoteRegExp).length === 2) {\n // One word string\n slices.push(part);\n } else {\n // Find closed Index\n shiftIndex = 0;\n for (j = i + 1; j < helperParts.length; j += 1) {\n part += \" \" + (helperParts[j]);\n if (helperParts[j].indexOf(openingQuote) >= 0) {\n shiftIndex = j;\n slices.push(part);\n break;\n }\n }\n if (shiftIndex) { i = shiftIndex; }\n }\n } else if (part.indexOf('=') > 0) {\n // Hash\n var hashParts = part.split('=');\n var hashName = hashParts[0];\n var hashContent = hashParts[1];\n if (!blockQuoteRegExp) {\n blockQuoteRegExp = hashContent.indexOf('\"') === 0 ? quoteDoubleRexExp : quoteSingleRexExp;\n openingQuote = hashContent.indexOf('\"') === 0 ? '\"' : '\\'';\n }\n if (hashContent.match(blockQuoteRegExp).length !== 2) {\n shiftIndex = 0;\n for (j = i + 1; j < helperParts.length; j += 1) {\n hashContent += \" \" + (helperParts[j]);\n if (helperParts[j].indexOf(openingQuote) >= 0) {\n shiftIndex = j;\n break;\n }\n }\n if (shiftIndex) { i = shiftIndex; }\n }\n var hash = [hashName, hashContent.replace(blockQuoteRegExp, '')];\n slices.push(hash);\n } else {\n // Plain variable\n slices.push(part);\n }\n }\n return slices;\n },\n stringToBlocks: function stringToBlocks(string) {\n var blocks = [];\n var i;\n var j;\n if (!string) { return []; }\n var stringBlocks = string.split(/({{[^{^}]*}})/);\n for (i = 0; i < stringBlocks.length; i += 1) {\n var block = stringBlocks[i];\n if (block === '') { continue; }\n if (block.indexOf('{{') < 0) {\n blocks.push({\n type: 'plain',\n content: block,\n });\n } else {\n if (block.indexOf('{/') >= 0) {\n continue;\n }\n block = block\n .replace(/{{([#/])*([ ])*/, '{{$1')\n .replace(/([ ])*}}/, '}}');\n if (block.indexOf('{#') < 0 && block.indexOf(' ') < 0 && block.indexOf('else') < 0) {\n // Simple variable\n blocks.push({\n type: 'variable',\n contextName: block.replace(/[{}]/g, ''),\n });\n continue;\n }\n // Helpers\n var helperSlices = Template7Utils.helperToSlices(block);\n var helperName = helperSlices[0];\n var isPartial = helperName === '>';\n var helperContext = [];\n var helperHash = {};\n for (j = 1; j < helperSlices.length; j += 1) {\n var slice = helperSlices[j];\n if (Array.isArray(slice)) {\n // Hash\n helperHash[slice[0]] = slice[1] === 'false' ? false : slice[1];\n } else {\n helperContext.push(slice);\n }\n }\n\n if (block.indexOf('{#') >= 0) {\n // Condition/Helper\n var helperContent = '';\n var elseContent = '';\n var toSkip = 0;\n var shiftIndex = (void 0);\n var foundClosed = false;\n var foundElse = false;\n var depth = 0;\n for (j = i + 1; j < stringBlocks.length; j += 1) {\n if (stringBlocks[j].indexOf('{{#') >= 0) {\n depth += 1;\n }\n if (stringBlocks[j].indexOf('{{/') >= 0) {\n depth -= 1;\n }\n if (stringBlocks[j].indexOf((\"{{#\" + helperName)) >= 0) {\n helperContent += stringBlocks[j];\n if (foundElse) { elseContent += stringBlocks[j]; }\n toSkip += 1;\n } else if (stringBlocks[j].indexOf((\"{{/\" + helperName)) >= 0) {\n if (toSkip > 0) {\n toSkip -= 1;\n helperContent += stringBlocks[j];\n if (foundElse) { elseContent += stringBlocks[j]; }\n } else {\n shiftIndex = j;\n foundClosed = true;\n break;\n }\n } else if (stringBlocks[j].indexOf('else') >= 0 && depth === 0) {\n foundElse = true;\n } else {\n if (!foundElse) { helperContent += stringBlocks[j]; }\n if (foundElse) { elseContent += stringBlocks[j]; }\n }\n }\n if (foundClosed) {\n if (shiftIndex) { i = shiftIndex; }\n if (helperName === 'raw') {\n blocks.push({\n type: 'plain',\n content: helperContent,\n });\n } else {\n blocks.push({\n type: 'helper',\n helperName: helperName,\n contextName: helperContext,\n content: helperContent,\n inverseContent: elseContent,\n hash: helperHash,\n });\n }\n }\n } else if (block.indexOf(' ') > 0) {\n if (isPartial) {\n helperName = '_partial';\n if (helperContext[0]) {\n if (helperContext[0].indexOf('[') === 0) { helperContext[0] = helperContext[0].replace(/[[\\]]/g, ''); }\n else { helperContext[0] = \"\\\"\" + (helperContext[0].replace(/\"|'/g, '')) + \"\\\"\"; }\n }\n }\n blocks.push({\n type: 'helper',\n helperName: helperName,\n contextName: helperContext,\n hash: helperHash,\n });\n }\n }\n }\n return blocks;\n },\n parseJsVariable: function parseJsVariable(expression, replace, object) {\n return expression.split(/([+ \\-*/^()&=|<>!%:?])/g).reduce(function (arr, part) {\n if (!part) {\n return arr;\n }\n if (part.indexOf(replace) < 0) {\n arr.push(part);\n return arr;\n }\n if (!object) {\n arr.push(JSON.stringify(''));\n return arr;\n }\n\n var variable = object;\n if (part.indexOf((replace + \".\")) >= 0) {\n part.split((replace + \".\"))[1].split('.').forEach(function (partName) {\n if (partName in variable) { variable = variable[partName]; }\n else { variable = undefined; }\n });\n }\n if (typeof variable === 'string') {\n variable = JSON.stringify(variable);\n }\n if (variable === undefined) { variable = 'undefined'; }\n\n arr.push(variable);\n return arr;\n }, []).join('');\n },\n parseJsParents: function parseJsParents(expression, parents) {\n return expression.split(/([+ \\-*^()&=|<>!%:?])/g).reduce(function (arr, part) {\n if (!part) {\n return arr;\n }\n\n if (part.indexOf('../') < 0) {\n arr.push(part);\n return arr;\n }\n\n if (!parents || parents.length === 0) {\n arr.push(JSON.stringify(''));\n return arr;\n }\n\n var levelsUp = part.split('../').length - 1;\n var parentData = levelsUp > parents.length ? parents[parents.length - 1] : parents[levelsUp - 1];\n\n var variable = parentData;\n var parentPart = part.replace(/..\\//g, '');\n parentPart.split('.').forEach(function (partName) {\n if (typeof variable[partName] !== 'undefined') { variable = variable[partName]; }\n else { variable = 'undefined'; }\n });\n if (variable === false || variable === true) {\n arr.push(JSON.stringify(variable));\n return arr;\n }\n if (variable === null || variable === 'undefined') {\n arr.push(JSON.stringify(''));\n return arr;\n }\n arr.push(JSON.stringify(variable));\n return arr;\n }, []).join('');\n },\n getCompileVar: function getCompileVar(name, ctx, data) {\n if ( data === void 0 ) data = 'data_1';\n\n var variable = ctx;\n var parts;\n var levelsUp = 0;\n var newDepth;\n if (name.indexOf('../') === 0) {\n levelsUp = name.split('../').length - 1;\n newDepth = variable.split('_')[1] - levelsUp;\n variable = \"ctx_\" + (newDepth >= 1 ? newDepth : 1);\n parts = name.split('../')[levelsUp].split('.');\n } else if (name.indexOf('@global') === 0) {\n variable = 'Template7.global';\n parts = name.split('@global.')[1].split('.');\n } else if (name.indexOf('@root') === 0) {\n variable = 'root';\n parts = name.split('@root.')[1].split('.');\n } else {\n parts = name.split('.');\n }\n for (var i = 0; i < parts.length; i += 1) {\n var part = parts[i];\n if (part.indexOf('@') === 0) {\n var dataLevel = data.split('_')[1];\n if (levelsUp > 0) {\n dataLevel = newDepth;\n }\n if (i > 0) {\n variable += \"[(data_\" + dataLevel + \" && data_\" + dataLevel + \".\" + (part.replace('@', '')) + \")]\";\n } else {\n variable = \"(data_\" + dataLevel + \" && data_\" + dataLevel + \".\" + (part.replace('@', '')) + \")\";\n }\n } else if (Number.isFinite ? Number.isFinite(part) : Template7Context.isFinite(part)) {\n variable += \"[\" + part + \"]\";\n } else if (part === 'this' || part.indexOf('this.') >= 0 || part.indexOf('this[') >= 0 || part.indexOf('this(') >= 0) {\n variable = part.replace('this', ctx);\n } else {\n variable += \".\" + part;\n }\n }\n return variable;\n },\n getCompiledArguments: function getCompiledArguments(contextArray, ctx, data) {\n var arr = [];\n for (var i = 0; i < contextArray.length; i += 1) {\n if (/^['\"]/.test(contextArray[i])) { arr.push(contextArray[i]); }\n else if (/^(true|false|\\d+)$/.test(contextArray[i])) { arr.push(contextArray[i]); }\n else {\n arr.push(Template7Utils.getCompileVar(contextArray[i], ctx, data));\n }\n }\n\n return arr.join(', ');\n },\n };\n\n /* eslint no-eval: \"off\" */\n\n var Template7Helpers = {\n _partial: function _partial(partialName, options) {\n var ctx = this;\n var p = Template7Class.partials[partialName];\n if (!p || (p && !p.template)) { return ''; }\n if (!p.compiled) {\n p.compiled = new Template7Class(p.template).compile();\n }\n Object.keys(options.hash).forEach(function (hashName) {\n ctx[hashName] = options.hash[hashName];\n });\n return p.compiled(ctx, options.data, options.root);\n },\n escape: function escape(context) {\n if (typeof context !== 'string') {\n throw new Error('Template7: Passed context to \"escape\" helper should be a string');\n }\n return Template7Utils.escape(context);\n },\n if: function if$1(context, options) {\n var ctx = context;\n if (Template7Utils.isFunction(ctx)) { ctx = ctx.call(this); }\n if (ctx) {\n return options.fn(this, options.data);\n }\n\n return options.inverse(this, options.data);\n },\n unless: function unless(context, options) {\n var ctx = context;\n if (Template7Utils.isFunction(ctx)) { ctx = ctx.call(this); }\n if (!ctx) {\n return options.fn(this, options.data);\n }\n\n return options.inverse(this, options.data);\n },\n each: function each(context, options) {\n var ctx = context;\n var ret = '';\n var i = 0;\n if (Template7Utils.isFunction(ctx)) { ctx = ctx.call(this); }\n if (Array.isArray(ctx)) {\n if (options.hash.reverse) {\n ctx = ctx.reverse();\n }\n for (i = 0; i < ctx.length; i += 1) {\n ret += options.fn(ctx[i], { first: i === 0, last: i === ctx.length - 1, index: i });\n }\n if (options.hash.reverse) {\n ctx = ctx.reverse();\n }\n } else {\n // eslint-disable-next-line\n for (var key in ctx) {\n i += 1;\n ret += options.fn(ctx[key], { key: key });\n }\n }\n if (i > 0) { return ret; }\n return options.inverse(this);\n },\n with: function with$1(context, options) {\n var ctx = context;\n if (Template7Utils.isFunction(ctx)) { ctx = context.call(this); }\n return options.fn(ctx);\n },\n join: function join(context, options) {\n var ctx = context;\n if (Template7Utils.isFunction(ctx)) { ctx = ctx.call(this); }\n return ctx.join(options.hash.delimiter || options.hash.delimeter);\n },\n js: function js(expression, options) {\n var data = options.data;\n var func;\n var execute = expression;\n ('index first last key').split(' ').forEach(function (prop) {\n if (typeof data[prop] !== 'undefined') {\n var re1 = new RegExp((\"this.@\" + prop), 'g');\n var re2 = new RegExp((\"@\" + prop), 'g');\n execute = execute\n .replace(re1, JSON.stringify(data[prop]))\n .replace(re2, JSON.stringify(data[prop]));\n }\n });\n if (options.root && execute.indexOf('@root') >= 0) {\n execute = Template7Utils.parseJsVariable(execute, '@root', options.root);\n }\n if (execute.indexOf('@global') >= 0) {\n execute = Template7Utils.parseJsVariable(execute, '@global', Template7Context.Template7.global);\n }\n if (execute.indexOf('../') >= 0) {\n execute = Template7Utils.parseJsParents(execute, options.parents);\n }\n if (execute.indexOf('return') >= 0) {\n func = \"(function(){\" + execute + \"})\";\n } else {\n func = \"(function(){return (\" + execute + \")})\";\n }\n return eval(func).call(this);\n },\n js_if: function js_if(expression, options) {\n var data = options.data;\n var func;\n var execute = expression;\n ('index first last key').split(' ').forEach(function (prop) {\n if (typeof data[prop] !== 'undefined') {\n var re1 = new RegExp((\"this.@\" + prop), 'g');\n var re2 = new RegExp((\"@\" + prop), 'g');\n execute = execute\n .replace(re1, JSON.stringify(data[prop]))\n .replace(re2, JSON.stringify(data[prop]));\n }\n });\n if (options.root && execute.indexOf('@root') >= 0) {\n execute = Template7Utils.parseJsVariable(execute, '@root', options.root);\n }\n if (execute.indexOf('@global') >= 0) {\n execute = Template7Utils.parseJsVariable(execute, '@global', Template7Context.Template7.global);\n }\n if (execute.indexOf('../') >= 0) {\n execute = Template7Utils.parseJsParents(execute, options.parents);\n }\n if (execute.indexOf('return') >= 0) {\n func = \"(function(){\" + execute + \"})\";\n } else {\n func = \"(function(){return (\" + execute + \")})\";\n }\n var condition = eval(func).call(this);\n if (condition) {\n return options.fn(this, options.data);\n }\n\n return options.inverse(this, options.data);\n },\n };\n Template7Helpers.js_compare = Template7Helpers.js_if;\n\n var Template7Options = {};\n var Template7Partials = {};\n\n var Template7Class = function Template7Class(template) {\n var t = this;\n t.template = template;\n };\n\n var staticAccessors = { options: { configurable: true },partials: { configurable: true },helpers: { configurable: true } };\n Template7Class.prototype.compile = function compile (template, depth) {\n if ( template === void 0 ) template = this.template;\n if ( depth === void 0 ) depth = 1;\n\n var t = this;\n if (t.compiled) { return t.compiled; }\n\n if (typeof template !== 'string') {\n throw new Error('Template7: Template must be a string');\n }\n var stringToBlocks = Template7Utils.stringToBlocks;\n var getCompileVar = Template7Utils.getCompileVar;\n var getCompiledArguments = Template7Utils.getCompiledArguments;\n\n var blocks = stringToBlocks(template);\n var ctx = \"ctx_\" + depth;\n var data = \"data_\" + depth;\n if (blocks.length === 0) {\n return function empty() { return ''; };\n }\n\n function getCompileFn(block, newDepth) {\n if (block.content) { return t.compile(block.content, newDepth); }\n return function empty() { return ''; };\n }\n function getCompileInverse(block, newDepth) {\n if (block.inverseContent) { return t.compile(block.inverseContent, newDepth); }\n return function empty() { return ''; };\n }\n\n var resultString = '';\n if (depth === 1) {\n resultString += \"(function (\" + ctx + \", \" + data + \", root) {\\n\";\n } else {\n resultString += \"(function (\" + ctx + \", \" + data + \") {\\n\";\n }\n if (depth === 1) {\n resultString += 'function isArray(arr){return Array.isArray(arr);}\\n';\n resultString += 'function isFunction(func){return (typeof func === \\'function\\');}\\n';\n resultString += 'function c(val, ctx) {if (typeof val !== \"undefined\" && val !== null) {if (isFunction(val)) {return val.call(ctx);} else return val;} else return \"\";}\\n';\n resultString += 'root = root || ctx_1 || {};\\n';\n }\n resultString += 'var r = \\'\\';\\n';\n var i;\n for (i = 0; i < blocks.length; i += 1) {\n var block = blocks[i];\n // Plain block\n if (block.type === 'plain') {\n // eslint-disable-next-line\n resultString += \"r +='\" + ((block.content).replace(/\\r/g, '\\\\r').replace(/\\n/g, '\\\\n').replace(/'/g, '\\\\' + '\\'')) + \"';\";\n continue;\n }\n var variable = (void 0);\n var compiledArguments = (void 0);\n // Variable block\n if (block.type === 'variable') {\n variable = getCompileVar(block.contextName, ctx, data);\n resultString += \"r += c(\" + variable + \", \" + ctx + \");\";\n }\n // Helpers block\n if (block.type === 'helper') {\n var parents = (void 0);\n if (ctx !== 'ctx_1') {\n var level = ctx.split('_')[1];\n var parentsString = \"ctx_\" + (level - 1);\n for (var j = level - 2; j >= 1; j -= 1) {\n parentsString += \", ctx_\" + j;\n }\n parents = \"[\" + parentsString + \"]\";\n } else {\n parents = \"[\" + ctx + \"]\";\n }\n var dynamicHelper = (void 0);\n if (block.helperName.indexOf('[') === 0) {\n block.helperName = getCompileVar(block.helperName.replace(/[[\\]]/g, ''), ctx, data);\n dynamicHelper = true;\n }\n if (dynamicHelper || block.helperName in Template7Helpers) {\n compiledArguments = getCompiledArguments(block.contextName, ctx, data);\n resultString += \"r += (Template7Helpers\" + (dynamicHelper ? (\"[\" + (block.helperName) + \"]\") : (\".\" + (block.helperName))) + \").call(\" + ctx + \", \" + (compiledArguments && ((compiledArguments + \", \"))) + \"{hash:\" + (JSON.stringify(block.hash)) + \", data: \" + data + \" || {}, fn: \" + (getCompileFn(block, depth + 1)) + \", inverse: \" + (getCompileInverse(block, depth + 1)) + \", root: root, parents: \" + parents + \"});\";\n } else if (block.contextName.length > 0) {\n throw new Error((\"Template7: Missing helper: \\\"\" + (block.helperName) + \"\\\"\"));\n } else {\n variable = getCompileVar(block.helperName, ctx, data);\n resultString += \"if (\" + variable + \") {\";\n resultString += \"if (isArray(\" + variable + \")) {\";\n resultString += \"r += (Template7Helpers.each).call(\" + ctx + \", \" + variable + \", {hash:\" + (JSON.stringify(block.hash)) + \", data: \" + data + \" || {}, fn: \" + (getCompileFn(block, depth + 1)) + \", inverse: \" + (getCompileInverse(block, depth + 1)) + \", root: root, parents: \" + parents + \"});\";\n resultString += '}else {';\n resultString += \"r += (Template7Helpers.with).call(\" + ctx + \", \" + variable + \", {hash:\" + (JSON.stringify(block.hash)) + \", data: \" + data + \" || {}, fn: \" + (getCompileFn(block, depth + 1)) + \", inverse: \" + (getCompileInverse(block, depth + 1)) + \", root: root, parents: \" + parents + \"});\";\n resultString += '}}';\n }\n }\n }\n resultString += '\\nreturn r;})';\n\n if (depth === 1) {\n // eslint-disable-next-line\n t.compiled = eval(resultString);\n return t.compiled;\n }\n return resultString;\n };\n staticAccessors.options.get = function () {\n return Template7Options;\n };\n staticAccessors.partials.get = function () {\n return Template7Partials;\n };\n staticAccessors.helpers.get = function () {\n return Template7Helpers;\n };\n\n Object.defineProperties( Template7Class, staticAccessors );\n\n function Template7() {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var template = args[0];\n var data = args[1];\n if (args.length === 2) {\n var instance = new Template7Class(template);\n var rendered = instance.compile()(data);\n instance = null;\n return (rendered);\n }\n return new Template7Class(template);\n }\n Template7.registerHelper = function registerHelper(name, fn) {\n Template7Class.helpers[name] = fn;\n };\n Template7.unregisterHelper = function unregisterHelper(name) {\n Template7Class.helpers[name] = undefined;\n delete Template7Class.helpers[name];\n };\n Template7.registerPartial = function registerPartial(name, template) {\n Template7Class.partials[name] = { template: template };\n };\n Template7.unregisterPartial = function unregisterPartial(name) {\n if (Template7Class.partials[name]) {\n Template7Class.partials[name] = undefined;\n delete Template7Class.partials[name];\n }\n };\n Template7.compile = function compile(template, options) {\n var instance = new Template7Class(template, options);\n return instance.compile();\n };\n\n Template7.options = Template7Class.options;\n Template7.helpers = Template7Class.helpers;\n Template7.partials = Template7Class.partials;\n\n /**\n * SSR Window 1.0.1\n * Better handling for window object in SSR environment\n * https://github.com/nolimits4web/ssr-window\n *\n * Copyright 2018, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: July 18, 2018\n */\n var doc = (typeof document === 'undefined') ? {\n body: {},\n addEventListener: function addEventListener() {},\n removeEventListener: function removeEventListener() {},\n activeElement: {\n blur: function blur() {},\n nodeName: '',\n },\n querySelector: function querySelector() {\n return null;\n },\n querySelectorAll: function querySelectorAll() {\n return [];\n },\n getElementById: function getElementById() {\n return null;\n },\n createEvent: function createEvent() {\n return {\n initEvent: function initEvent() {},\n };\n },\n createElement: function createElement() {\n return {\n children: [],\n childNodes: [],\n style: {},\n setAttribute: function setAttribute() {},\n getElementsByTagName: function getElementsByTagName() {\n return [];\n },\n };\n },\n location: { hash: '' },\n } : document; // eslint-disable-line\n\n var win = (typeof window === 'undefined') ? {\n document: doc,\n navigator: {\n userAgent: '',\n },\n location: {},\n history: {},\n CustomEvent: function CustomEvent() {\n return this;\n },\n addEventListener: function addEventListener() {},\n removeEventListener: function removeEventListener() {},\n getComputedStyle: function getComputedStyle() {\n return {\n getPropertyValue: function getPropertyValue() {\n return '';\n },\n };\n },\n Image: function Image() {},\n Date: function Date() {},\n screen: {},\n setTimeout: function setTimeout() {},\n clearTimeout: function clearTimeout() {},\n } : window; // eslint-disable-line\n\n /**\n * Dom7 2.1.2\n * Minimalistic JavaScript library for DOM manipulation, with a jQuery-compatible API\n * http://framework7.io/docs/dom.html\n *\n * Copyright 2018, Vladimir Kharlampidi\n * The iDangero.us\n * http://www.idangero.us/\n *\n * Licensed under MIT\n *\n * Released on: September 13, 2018\n */\n\n var Dom7 = function Dom7(arr) {\n var self = this;\n // Create array-like object\n for (var i = 0; i < arr.length; i += 1) {\n self[i] = arr[i];\n }\n self.length = arr.length;\n // Return collection with methods\n return this;\n };\n\n function $(selector, context) {\n var arr = [];\n var i = 0;\n if (selector && !context) {\n if (selector instanceof Dom7) {\n return selector;\n }\n }\n if (selector) {\n // String\n if (typeof selector === 'string') {\n var els;\n var tempParent;\n var html = selector.trim();\n if (html.indexOf('<') >= 0 && html.indexOf('>') >= 0) {\n var 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 tempParent = doc.createElement(toCreate);\n tempParent.innerHTML = html;\n for (i = 0; i < tempParent.childNodes.length; i += 1) {\n arr.push(tempParent.childNodes[i]);\n }\n } else {\n if (!context && selector[0] === '#' && !selector.match(/[ .<>:~]/)) {\n // Pure ID selector\n els = [doc.getElementById(selector.trim().split('#')[1])];\n } else {\n // Other selectors\n els = (context || doc).querySelectorAll(selector.trim());\n }\n for (i = 0; i < els.length; i += 1) {\n if (els[i]) { arr.push(els[i]); }\n }\n }\n } else if (selector.nodeType || selector === win || selector === doc) {\n // Node/element\n arr.push(selector);\n } else if (selector.length > 0 && selector[0].nodeType) {\n // Array of elements or instance of Dom\n for (i = 0; i < selector.length; i += 1) {\n arr.push(selector[i]);\n }\n }\n }\n return new Dom7(arr);\n }\n\n $.fn = Dom7.prototype;\n $.Class = Dom7;\n $.Dom7 = Dom7;\n\n function unique(arr) {\n var uniqueArray = [];\n for (var i = 0; i < arr.length; i += 1) {\n if (uniqueArray.indexOf(arr[i]) === -1) { uniqueArray.push(arr[i]); }\n }\n return uniqueArray;\n }\n function toCamelCase(string) {\n return string.toLowerCase().replace(/-(.)/g, function (match, group1) { return group1.toUpperCase(); });\n }\n\n function requestAnimationFrame(callback) {\n if (win.requestAnimationFrame) { return win.requestAnimationFrame(callback); }\n else if (win.webkitRequestAnimationFrame) { return win.webkitRequestAnimationFrame(callback); }\n return win.setTimeout(callback, 1000 / 60);\n }\n function cancelAnimationFrame(id) {\n if (win.cancelAnimationFrame) { return win.cancelAnimationFrame(id); }\n else if (win.webkitCancelAnimationFrame) { return win.webkitCancelAnimationFrame(id); }\n return win.clearTimeout(id);\n }\n\n // Classes and attributes\n function addClass(className) {\n if (typeof className === 'undefined') {\n return this;\n }\n var classes = className.split(' ');\n for (var i = 0; i < classes.length; i += 1) {\n for (var j = 0; j < this.length; j += 1) {\n if (typeof this[j] !== 'undefined' && typeof this[j].classList !== 'undefined') { this[j].classList.add(classes[i]); }\n }\n }\n return this;\n }\n function removeClass(className) {\n var classes = className.split(' ');\n for (var i = 0; i < classes.length; i += 1) {\n for (var j = 0; j < this.length; j += 1) {\n if (typeof this[j] !== 'undefined' && typeof this[j].classList !== 'undefined') { this[j].classList.remove(classes[i]); }\n }\n }\n return this;\n }\n function hasClass(className) {\n if (!this[0]) { return false; }\n return this[0].classList.contains(className);\n }\n function toggleClass(className) {\n var classes = className.split(' ');\n for (var i = 0; i < classes.length; i += 1) {\n for (var j = 0; j < this.length; j += 1) {\n if (typeof this[j] !== 'undefined' && typeof this[j].classList !== 'undefined') { this[j].classList.toggle(classes[i]); }\n }\n }\n return this;\n }\n function attr(attrs, value) {\n var arguments$1 = arguments;\n\n if (arguments.length === 1 && typeof attrs === 'string') {\n // Get attr\n if (this[0]) { return this[0].getAttribute(attrs); }\n return undefined;\n }\n\n // Set attrs\n for (var i = 0; i < this.length; i += 1) {\n if (arguments$1.length === 2) {\n // String\n this[i].setAttribute(attrs, value);\n } else {\n // Object\n // eslint-disable-next-line\n for (var attrName in attrs) {\n this[i][attrName] = attrs[attrName];\n this[i].setAttribute(attrName, attrs[attrName]);\n }\n }\n }\n return this;\n }\n // eslint-disable-next-line\n function removeAttr(attr) {\n for (var i = 0; i < this.length; i += 1) {\n this[i].removeAttribute(attr);\n }\n return this;\n }\n // eslint-disable-next-line\n function prop(props, value) {\n var arguments$1 = arguments;\n\n if (arguments.length === 1 && typeof props === 'string') {\n // Get prop\n if (this[0]) { return this[0][props]; }\n } else {\n // Set props\n for (var i = 0; i < this.length; i += 1) {\n if (arguments$1.length === 2) {\n // String\n this[i][props] = value;\n } else {\n // Object\n // eslint-disable-next-line\n for (var propName in props) {\n this[i][propName] = props[propName];\n }\n }\n }\n return this;\n }\n }\n function data(key, value) {\n var el;\n if (typeof value === 'undefined') {\n el = this[0];\n // Get value\n if (el) {\n if (el.dom7ElementDataStorage && (key in el.dom7ElementDataStorage)) {\n return el.dom7ElementDataStorage[key];\n }\n\n var dataKey = el.getAttribute((\"data-\" + key));\n if (dataKey) {\n return dataKey;\n }\n return undefined;\n }\n return undefined;\n }\n\n // Set value\n for (var i = 0; i < this.length; i += 1) {\n el = this[i];\n if (!el.dom7ElementDataStorage) { el.dom7ElementDataStorage = {}; }\n el.dom7ElementDataStorage[key] = value;\n }\n return this;\n }\n function removeData(key) {\n for (var i = 0; i < this.length; i += 1) {\n var el = this[i];\n if (el.dom7ElementDataStorage && el.dom7ElementDataStorage[key]) {\n el.dom7ElementDataStorage[key] = null;\n delete el.dom7ElementDataStorage[key];\n }\n }\n }\n function dataset() {\n var el = this[0];\n if (!el) { return undefined; }\n var dataset = {}; // eslint-disable-line\n if (el.dataset) {\n // eslint-disable-next-line\n for (var dataKey in el.dataset) {\n dataset[dataKey] = el.dataset[dataKey];\n }\n } else {\n for (var i = 0; i < el.attributes.length; i += 1) {\n // eslint-disable-next-line\n var attr = el.attributes[i];\n if (attr.name.indexOf('data-') >= 0) {\n dataset[toCamelCase(attr.name.split('data-')[1])] = attr.value;\n }\n }\n }\n // eslint-disable-next-line\n for (var key in dataset) {\n if (dataset[key] === 'false') { dataset[key] = false; }\n else if (dataset[key] === 'true') { dataset[key] = true; }\n else if (parseFloat(dataset[key]) === dataset[key] * 1) { dataset[key] *= 1; }\n }\n return dataset;\n }\n function val(value) {\n var dom = this;\n if (typeof value === 'undefined') {\n if (dom[0]) {\n if (dom[0].multiple && dom[0].nodeName.toLowerCase() === 'select') {\n var values = [];\n for (var i = 0; i < dom[0].selectedOptions.length; i += 1) {\n values.push(dom[0].selectedOptions[i].value);\n }\n return values;\n }\n return dom[0].value;\n }\n return undefined;\n }\n\n for (var i$1 = 0; i$1 < dom.length; i$1 += 1) {\n var el = dom[i$1];\n if (Array.isArray(value) && el.multiple && el.nodeName.toLowerCase() === 'select') {\n for (var j = 0; j < el.options.length; j += 1) {\n el.options[j].selected = value.indexOf(el.options[j].value) >= 0;\n }\n } else {\n el.value = value;\n }\n }\n return dom;\n }\n // Transforms\n // eslint-disable-next-line\n function transform(transform) {\n for (var i = 0; i < this.length; i += 1) {\n var elStyle = this[i].style;\n elStyle.webkitTransform = transform;\n elStyle.transform = transform;\n }\n return this;\n }\n function transition(duration) {\n if (typeof duration !== 'string') {\n duration = duration + \"ms\"; // eslint-disable-line\n }\n for (var i = 0; i < this.length; i += 1) {\n var elStyle = this[i].style;\n elStyle.webkitTransitionDuration = duration;\n elStyle.transitionDuration = duration;\n }\n return this;\n }\n // Events\n function on() {\n var assign;\n\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n var eventType = args[0];\n var targetSelector = args[1];\n var listener = args[2];\n var capture = args[3];\n if (typeof args[1] === 'function') {\n (assign = args, eventType = assign[0], listener = assign[1], capture = assign[2]);\n targetSelector = undefined;\n }\n if (!capture) { capture = false; }\n\n function handleLiveEvent(e) {\n var target = e.target;\n if (!target) { return; }\n var eventData = e.target.dom7EventData || [];\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n if ($(target).is(targetSelector)) { listener.apply(target, eventData); }\n else {\n var parents = $(target).parents(); // eslint-disable-line\n for (var k = 0; k < parents.length; k += 1) {\n if ($(parents[k]).is(targetSelector)) { listener.apply(parents[k], eventData); }\n }\n }\n }\n function handleEvent(e) {\n var eventData = e && e.target ? e.target.dom7EventData || [] : [];\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n listener.apply(this, eventData);\n }\n var events = eventType.split(' ');\n var j;\n for (var i = 0; i < this.length; i += 1) {\n var el = this[i];\n if (!targetSelector) {\n for (j = 0; j < events.length; j += 1) {\n var event = events[j];\n if (!el.dom7Listeners) { el.dom7Listeners = {}; }\n if (!el.dom7Listeners[event]) { el.dom7Listeners[event] = []; }\n el.dom7Listeners[event].push({\n listener: listener,\n proxyListener: handleEvent,\n });\n el.addEventListener(event, handleEvent, capture);\n }\n } else {\n // Live events\n for (j = 0; j < events.length; j += 1) {\n var event$1 = events[j];\n if (!el.dom7LiveListeners) { el.dom7LiveListeners = {}; }\n if (!el.dom7LiveListeners[event$1]) { el.dom7LiveListeners[event$1] = []; }\n el.dom7LiveListeners[event$1].push({\n listener: listener,\n proxyListener: handleLiveEvent,\n });\n el.addEventListener(event$1, handleLiveEvent, capture);\n }\n }\n }\n return this;\n }\n function off() {\n var assign;\n\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n var eventType = args[0];\n var targetSelector = args[1];\n var listener = args[2];\n var capture = args[3];\n if (typeof args[1] === 'function') {\n (assign = args, eventType = assign[0], listener = assign[1], capture = assign[2]);\n targetSelector = undefined;\n }\n if (!capture) { capture = false; }\n\n var events = eventType.split(' ');\n for (var i = 0; i < events.length; i += 1) {\n var event = events[i];\n for (var j = 0; j < this.length; j += 1) {\n var el = this[j];\n var handlers = (void 0);\n if (!targetSelector && el.dom7Listeners) {\n handlers = el.dom7Listeners[event];\n } else if (targetSelector && el.dom7LiveListeners) {\n handlers = el.dom7LiveListeners[event];\n }\n if (handlers && handlers.length) {\n for (var k = handlers.length - 1; k >= 0; k -= 1) {\n var handler = handlers[k];\n if (listener && handler.listener === 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 return this;\n }\n function once() {\n var assign;\n\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n var dom = this;\n var eventName = args[0];\n var targetSelector = args[1];\n var listener = args[2];\n var capture = args[3];\n if (typeof args[1] === 'function') {\n (assign = args, eventName = assign[0], listener = assign[1], capture = assign[2]);\n targetSelector = undefined;\n }\n function proxy() {\n var eventArgs = [], len = arguments.length;\n while ( len-- ) eventArgs[ len ] = arguments[ len ];\n\n listener.apply(this, eventArgs);\n dom.off(eventName, targetSelector, proxy, capture);\n }\n return dom.on(eventName, targetSelector, proxy, capture);\n }\n function trigger() {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var events = args[0].split(' ');\n var eventData = args[1];\n for (var i = 0; i < events.length; i += 1) {\n var event = events[i];\n for (var j = 0; j < this.length; j += 1) {\n var el = this[j];\n var evt = (void 0);\n try {\n evt = new win.CustomEvent(event, {\n detail: eventData,\n bubbles: true,\n cancelable: true,\n });\n } catch (e) {\n evt = doc.createEvent('Event');\n evt.initEvent(event, true, true);\n evt.detail = eventData;\n }\n // eslint-disable-next-line\n el.dom7EventData = args.filter(function (data, dataIndex) { return dataIndex > 0; });\n el.dispatchEvent(evt);\n el.dom7EventData = [];\n delete el.dom7EventData;\n }\n }\n return this;\n }\n function transitionEnd(callback) {\n var events = ['webkitTransitionEnd', 'transitionend'];\n var dom = this;\n var i;\n function fireCallBack(e) {\n /* jshint validthis:true */\n if (e.target !== this) { return; }\n callback.call(this, e);\n for (i = 0; i < events.length; i += 1) {\n dom.off(events[i], fireCallBack);\n }\n }\n if (callback) {\n for (i = 0; i < events.length; i += 1) {\n dom.on(events[i], fireCallBack);\n }\n }\n return this;\n }\n function animationEnd(callback) {\n var events = ['webkitAnimationEnd', 'animationend'];\n var dom = this;\n var i;\n function fireCallBack(e) {\n if (e.target !== this) { return; }\n callback.call(this, e);\n for (i = 0; i < events.length; i += 1) {\n dom.off(events[i], fireCallBack);\n }\n }\n if (callback) {\n for (i = 0; i < events.length; i += 1) {\n dom.on(events[i], fireCallBack);\n }\n }\n return this;\n }\n // Sizing/Styles\n function width() {\n if (this[0] === win) {\n return win.innerWidth;\n }\n\n if (this.length > 0) {\n return parseFloat(this.css('width'));\n }\n\n return null;\n }\n function outerWidth(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n // eslint-disable-next-line\n var styles = this.styles();\n return this[0].offsetWidth + parseFloat(styles.getPropertyValue('margin-right')) + parseFloat(styles.getPropertyValue('margin-left'));\n }\n return this[0].offsetWidth;\n }\n return null;\n }\n function height() {\n if (this[0] === win) {\n return win.innerHeight;\n }\n\n if (this.length > 0) {\n return parseFloat(this.css('height'));\n }\n\n return null;\n }\n function outerHeight(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n // eslint-disable-next-line\n var styles = this.styles();\n return this[0].offsetHeight + parseFloat(styles.getPropertyValue('margin-top')) + parseFloat(styles.getPropertyValue('margin-bottom'));\n }\n return this[0].offsetHeight;\n }\n return null;\n }\n function offset() {\n if (this.length > 0) {\n var el = this[0];\n var box = el.getBoundingClientRect();\n var body = doc.body;\n var clientTop = el.clientTop || body.clientTop || 0;\n var clientLeft = el.clientLeft || body.clientLeft || 0;\n var scrollTop = el === win ? win.scrollY : el.scrollTop;\n var scrollLeft = el === win ? win.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 function hide() {\n for (var i = 0; i < this.length; i += 1) {\n this[i].style.display = 'none';\n }\n return this;\n }\n function show() {\n for (var i = 0; i < this.length; i += 1) {\n var el = this[i];\n if (el.style.display === 'none') {\n el.style.display = '';\n }\n if (win.getComputedStyle(el, null).getPropertyValue('display') === 'none') {\n // Still not visible\n el.style.display = 'block';\n }\n }\n return this;\n }\n function styles() {\n if (this[0]) { return win.getComputedStyle(this[0], null); }\n return {};\n }\n function css(props, value) {\n var i;\n if (arguments.length === 1) {\n if (typeof props === 'string') {\n if (this[0]) { return win.getComputedStyle(this[0], null).getPropertyValue(props); }\n } else {\n for (i = 0; i < this.length; i += 1) {\n // eslint-disable-next-line\n for (var prop in props) {\n this[i].style[prop] = props[prop];\n }\n }\n return this;\n }\n }\n if (arguments.length === 2 && typeof props === 'string') {\n for (i = 0; i < this.length; i += 1) {\n this[i].style[props] = value;\n }\n return this;\n }\n return this;\n }\n\n // Dom manipulation\n function toArray() {\n var arr = [];\n for (var i = 0; i < this.length; i += 1) {\n arr.push(this[i]);\n }\n return arr;\n }\n // Iterate over the collection passing elements to `callback`\n function each(callback) {\n // Don't bother continuing without a callback\n if (!callback) { return this; }\n // Iterate over the current collection\n for (var i = 0; i < this.length; i += 1) {\n // If the callback returns false\n if (callback.call(this[i], i, this[i]) === false) {\n // End the loop early\n return this;\n }\n }\n // Return `this` to allow chained DOM operations\n return this;\n }\n function forEach(callback) {\n // Don't bother continuing without a callback\n if (!callback) { return this; }\n // Iterate over the current collection\n for (var i = 0; i < this.length; i += 1) {\n // If the callback returns false\n if (callback.call(this[i], this[i], i) === false) {\n // End the loop early\n return this;\n }\n }\n // Return `this` to allow chained DOM operations\n return this;\n }\n function filter(callback) {\n var matchedItems = [];\n var dom = this;\n for (var i = 0; i < dom.length; i += 1) {\n if (callback.call(dom[i], i, dom[i])) { matchedItems.push(dom[i]); }\n }\n return new Dom7(matchedItems);\n }\n function map(callback) {\n var modifiedItems = [];\n var dom = this;\n for (var i = 0; i < dom.length; i += 1) {\n modifiedItems.push(callback.call(dom[i], i, dom[i]));\n }\n return new Dom7(modifiedItems);\n }\n // eslint-disable-next-line\n function html(html) {\n if (typeof html === 'undefined') {\n return this[0] ? this[0].innerHTML : undefined;\n }\n\n for (var i = 0; i < this.length; i += 1) {\n this[i].innerHTML = html;\n }\n return this;\n }\n // eslint-disable-next-line\n function text(text) {\n if (typeof text === 'undefined') {\n if (this[0]) {\n return this[0].textContent.trim();\n }\n return null;\n }\n\n for (var i = 0; i < this.length; i += 1) {\n this[i].textContent = text;\n }\n return this;\n }\n function is(selector) {\n var el = this[0];\n var compareWith;\n var i;\n if (!el || typeof selector === 'undefined') { return false; }\n if (typeof selector === 'string') {\n if (el.matches) { return el.matches(selector); }\n else if (el.webkitMatchesSelector) { return el.webkitMatchesSelector(selector); }\n else if (el.msMatchesSelector) { return el.msMatchesSelector(selector); }\n\n compareWith = $(selector);\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) { return true; }\n }\n return false;\n } else if (selector === doc) { return el === doc; }\n else if (selector === win) { return el === win; }\n\n if (selector.nodeType || selector instanceof Dom7) {\n compareWith = selector.nodeType ? [selector] : selector;\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) { return true; }\n }\n return false;\n }\n return false;\n }\n function indexOf(el) {\n for (var i = 0; i < this.length; i += 1) {\n if (this[i] === el) { return i; }\n }\n return -1;\n }\n function index() {\n var child = this[0];\n var i;\n if (child) {\n i = 0;\n // eslint-disable-next-line\n while ((child = child.previousSibling) !== null) {\n if (child.nodeType === 1) { i += 1; }\n }\n return i;\n }\n return undefined;\n }\n // eslint-disable-next-line\n function eq(index) {\n if (typeof index === 'undefined') { return this; }\n var length = this.length;\n var returnIndex;\n if (index > length - 1) {\n return new Dom7([]);\n }\n if (index < 0) {\n returnIndex = length + index;\n if (returnIndex < 0) { return new Dom7([]); }\n return new Dom7([this[returnIndex]]);\n }\n return new Dom7([this[index]]);\n }\n function append() {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var newChild;\n\n for (var k = 0; k < args.length; k += 1) {\n newChild = args[k];\n for (var i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n var tempDiv = doc.createElement('div');\n tempDiv.innerHTML = newChild;\n while (tempDiv.firstChild) {\n this[i].appendChild(tempDiv.firstChild);\n }\n } else if (newChild instanceof Dom7) {\n for (var j = 0; j < newChild.length; j += 1) {\n this[i].appendChild(newChild[j]);\n }\n } else {\n this[i].appendChild(newChild);\n }\n }\n }\n\n return this;\n }\n // eslint-disable-next-line\n function appendTo(parent) {\n $(parent).append(this);\n return this;\n }\n function prepend(newChild) {\n var i;\n var j;\n for (i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n var tempDiv = doc.createElement('div');\n tempDiv.innerHTML = newChild;\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 return this;\n }\n // eslint-disable-next-line\n function prependTo(parent) {\n $(parent).prepend(this);\n return this;\n }\n function insertBefore(selector) {\n var before = $(selector);\n for (var i = 0; i < this.length; i += 1) {\n if (before.length === 1) {\n before[0].parentNode.insertBefore(this[i], before[0]);\n } else if (before.length > 1) {\n for (var j = 0; j < before.length; j += 1) {\n before[j].parentNode.insertBefore(this[i].cloneNode(true), before[j]);\n }\n }\n }\n }\n function insertAfter(selector) {\n var after = $(selector);\n for (var i = 0; i < this.length; i += 1) {\n if (after.length === 1) {\n after[0].parentNode.insertBefore(this[i], after[0].nextSibling);\n } else if (after.length > 1) {\n for (var j = 0; j < after.length; j += 1) {\n after[j].parentNode.insertBefore(this[i].cloneNode(true), after[j].nextSibling);\n }\n }\n }\n }\n function next(selector) {\n if (this.length > 0) {\n if (selector) {\n if (this[0].nextElementSibling && $(this[0].nextElementSibling).is(selector)) {\n return new Dom7([this[0].nextElementSibling]);\n }\n return new Dom7([]);\n }\n\n if (this[0].nextElementSibling) { return new Dom7([this[0].nextElementSibling]); }\n return new Dom7([]);\n }\n return new Dom7([]);\n }\n function nextAll(selector) {\n var nextEls = [];\n var el = this[0];\n if (!el) { return new Dom7([]); }\n while (el.nextElementSibling) {\n var next = el.nextElementSibling; // eslint-disable-line\n if (selector) {\n if ($(next).is(selector)) { nextEls.push(next); }\n } else { nextEls.push(next); }\n el = next;\n }\n return new Dom7(nextEls);\n }\n function prev(selector) {\n if (this.length > 0) {\n var el = this[0];\n if (selector) {\n if (el.previousElementSibling && $(el.previousElementSibling).is(selector)) {\n return new Dom7([el.previousElementSibling]);\n }\n return new Dom7([]);\n }\n\n if (el.previousElementSibling) { return new Dom7([el.previousElementSibling]); }\n return new Dom7([]);\n }\n return new Dom7([]);\n }\n function prevAll(selector) {\n var prevEls = [];\n var el = this[0];\n if (!el) { return new Dom7([]); }\n while (el.previousElementSibling) {\n var prev = el.previousElementSibling; // eslint-disable-line\n if (selector) {\n if ($(prev).is(selector)) { prevEls.push(prev); }\n } else { prevEls.push(prev); }\n el = prev;\n }\n return new Dom7(prevEls);\n }\n function siblings(selector) {\n return this.nextAll(selector).add(this.prevAll(selector));\n }\n function parent(selector) {\n var parents = []; // eslint-disable-line\n for (var i = 0; i < this.length; i += 1) {\n if (this[i].parentNode !== null) {\n if (selector) {\n if ($(this[i].parentNode).is(selector)) { parents.push(this[i].parentNode); }\n } else {\n parents.push(this[i].parentNode);\n }\n }\n }\n return $(unique(parents));\n }\n function parents(selector) {\n var parents = []; // eslint-disable-line\n for (var i = 0; i < this.length; i += 1) {\n var parent = this[i].parentNode; // eslint-disable-line\n while (parent) {\n if (selector) {\n if ($(parent).is(selector)) { parents.push(parent); }\n } else {\n parents.push(parent);\n }\n parent = parent.parentNode;\n }\n }\n return $(unique(parents));\n }\n function closest(selector) {\n var closest = this; // eslint-disable-line\n if (typeof selector === 'undefined') {\n return new Dom7([]);\n }\n if (!closest.is(selector)) {\n closest = closest.parents(selector).eq(0);\n }\n return closest;\n }\n function find(selector) {\n var foundElements = [];\n for (var i = 0; i < this.length; i += 1) {\n var found = this[i].querySelectorAll(selector);\n for (var j = 0; j < found.length; j += 1) {\n foundElements.push(found[j]);\n }\n }\n return new Dom7(foundElements);\n }\n function children(selector) {\n var children = []; // eslint-disable-line\n for (var i = 0; i < this.length; i += 1) {\n var childNodes = this[i].childNodes;\n\n for (var j = 0; j < childNodes.length; j += 1) {\n if (!selector) {\n if (childNodes[j].nodeType === 1) { children.push(childNodes[j]); }\n } else if (childNodes[j].nodeType === 1 && $(childNodes[j]).is(selector)) {\n children.push(childNodes[j]);\n }\n }\n }\n return new Dom7(unique(children));\n }\n function remove() {\n for (var i = 0; i < this.length; i += 1) {\n if (this[i].parentNode) { this[i].parentNode.removeChild(this[i]); }\n }\n return this;\n }\n function detach() {\n return this.remove();\n }\n function add() {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var dom = this;\n var i;\n var j;\n for (i = 0; i < args.length; i += 1) {\n var toAdd = $(args[i]);\n for (j = 0; j < toAdd.length; j += 1) {\n dom[dom.length] = toAdd[j];\n dom.length += 1;\n }\n }\n return dom;\n }\n function empty() {\n for (var i = 0; i < this.length; i += 1) {\n var el = this[i];\n if (el.nodeType === 1) {\n for (var j = 0; j < el.childNodes.length; j += 1) {\n if (el.childNodes[j].parentNode) {\n el.childNodes[j].parentNode.removeChild(el.childNodes[j]);\n }\n }\n el.textContent = '';\n }\n }\n return this;\n }\n\n var Methods = /*#__PURE__*/Object.freeze({\n addClass: addClass,\n removeClass: removeClass,\n hasClass: hasClass,\n toggleClass: toggleClass,\n attr: attr,\n removeAttr: removeAttr,\n prop: prop,\n data: data,\n removeData: removeData,\n dataset: dataset,\n val: val,\n transform: transform,\n transition: transition,\n on: on,\n off: off,\n once: once,\n trigger: trigger,\n transitionEnd: transitionEnd,\n animationEnd: animationEnd,\n width: width,\n outerWidth: outerWidth,\n height: height,\n outerHeight: outerHeight,\n offset: offset,\n hide: hide,\n show: show,\n styles: styles,\n css: css,\n toArray: toArray,\n each: each,\n forEach: forEach,\n filter: filter,\n map: map,\n html: html,\n text: text,\n is: is,\n indexOf: indexOf,\n index: index,\n eq: eq,\n append: append,\n appendTo: appendTo,\n prepend: prepend,\n prependTo: prependTo,\n insertBefore: insertBefore,\n insertAfter: insertAfter,\n next: next,\n nextAll: nextAll,\n prev: prev,\n prevAll: prevAll,\n siblings: siblings,\n parent: parent,\n parents: parents,\n closest: closest,\n find: find,\n children: children,\n remove: remove,\n detach: detach,\n add: add,\n empty: empty\n });\n\n function scrollTo() {\n var assign;\n\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n var left = args[0];\n var top = args[1];\n var duration = args[2];\n var easing = args[3];\n var callback = args[4];\n if (args.length === 4 && typeof easing === 'function') {\n callback = easing;\n (assign = args, left = assign[0], top = assign[1], duration = assign[2], callback = assign[3], easing = assign[4]);\n }\n if (typeof easing === 'undefined') { easing = 'swing'; }\n\n return this.each(function animate() {\n var el = this;\n var currentTop;\n var currentLeft;\n var maxTop;\n var maxLeft;\n var newTop;\n var newLeft;\n var scrollTop; // eslint-disable-line\n var scrollLeft; // eslint-disable-line\n var animateTop = top > 0 || top === 0;\n var animateLeft = left > 0 || left === 0;\n if (typeof easing === 'undefined') {\n easing = 'swing';\n }\n if (animateTop) {\n currentTop = el.scrollTop;\n if (!duration) {\n el.scrollTop = top;\n }\n }\n if (animateLeft) {\n currentLeft = el.scrollLeft;\n if (!duration) {\n el.scrollLeft = left;\n }\n }\n if (!duration) { return; }\n if (animateTop) {\n maxTop = el.scrollHeight - el.offsetHeight;\n newTop = Math.max(Math.min(top, maxTop), 0);\n }\n if (animateLeft) {\n maxLeft = el.scrollWidth - el.offsetWidth;\n newLeft = Math.max(Math.min(left, maxLeft), 0);\n }\n var startTime = null;\n if (animateTop && newTop === currentTop) { animateTop = false; }\n if (animateLeft && newLeft === currentLeft) { animateLeft = false; }\n function render(time) {\n if ( time === void 0 ) time = new Date().getTime();\n\n if (startTime === null) {\n startTime = time;\n }\n var progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n var easeProgress = easing === 'linear' ? progress : (0.5 - (Math.cos(progress * Math.PI) / 2));\n var done;\n if (animateTop) { scrollTop = currentTop + (easeProgress * (newTop - currentTop)); }\n if (animateLeft) { scrollLeft = currentLeft + (easeProgress * (newLeft - currentLeft)); }\n if (animateTop && newTop > currentTop && scrollTop >= newTop) {\n el.scrollTop = newTop;\n done = true;\n }\n if (animateTop && newTop < currentTop && scrollTop <= newTop) {\n el.scrollTop = newTop;\n done = true;\n }\n if (animateLeft && newLeft > currentLeft && scrollLeft >= newLeft) {\n el.scrollLeft = newLeft;\n done = true;\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 if (animateTop) { el.scrollTop = scrollTop; }\n if (animateLeft) { el.scrollLeft = scrollLeft; }\n requestAnimationFrame(render);\n }\n requestAnimationFrame(render);\n });\n }\n // scrollTop(top, duration, easing, callback) {\n function scrollTop() {\n var assign;\n\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n var top = args[0];\n var duration = args[1];\n var easing = args[2];\n var callback = args[3];\n if (args.length === 3 && typeof easing === 'function') {\n (assign = args, top = assign[0], duration = assign[1], callback = assign[2], easing = assign[3]);\n }\n var dom = this;\n if (typeof top === 'undefined') {\n if (dom.length > 0) { return dom[0].scrollTop; }\n return null;\n }\n return dom.scrollTo(undefined, top, duration, easing, callback);\n }\n function scrollLeft() {\n var assign;\n\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n var left = args[0];\n var duration = args[1];\n var easing = args[2];\n var callback = args[3];\n if (args.length === 3 && typeof easing === 'function') {\n (assign = args, left = assign[0], duration = assign[1], callback = assign[2], easing = assign[3]);\n }\n var dom = this;\n if (typeof left === 'undefined') {\n if (dom.length > 0) { return dom[0].scrollLeft; }\n return null;\n }\n return dom.scrollTo(left, undefined, duration, easing, callback);\n }\n\n var Scroll = /*#__PURE__*/Object.freeze({\n scrollTo: scrollTo,\n scrollTop: scrollTop,\n scrollLeft: scrollLeft\n });\n\n function animate(initialProps, initialParams) {\n var els = this;\n var a = {\n props: Object.assign({}, initialProps),\n params: Object.assign({\n duration: 300,\n easing: 'swing', // or 'linear'\n /* Callbacks\n begin(elements)\n complete(elements)\n progress(elements, complete, remaining, start, tweenValue)\n */\n }, initialParams),\n\n elements: els,\n animating: false,\n que: [],\n\n easingProgress: function easingProgress(easing, progress) {\n if (easing === 'swing') {\n return 0.5 - (Math.cos(progress * Math.PI) / 2);\n }\n if (typeof easing === 'function') {\n return easing(progress);\n }\n return progress;\n },\n stop: function stop() {\n if (a.frameId) {\n cancelAnimationFrame(a.frameId);\n }\n a.animating = false;\n a.elements.each(function (index, el) {\n var element = el;\n delete element.dom7AnimateInstance;\n });\n a.que = [];\n },\n done: function done(complete) {\n a.animating = false;\n a.elements.each(function (index, el) {\n var element = el;\n delete element.dom7AnimateInstance;\n });\n if (complete) { complete(els); }\n if (a.que.length > 0) {\n var que = a.que.shift();\n a.animate(que[0], que[1]);\n }\n },\n animate: function animate(props, params) {\n if (a.animating) {\n a.que.push([props, params]);\n return a;\n }\n var elements = [];\n\n // Define & Cache Initials & Units\n a.elements.each(function (index, el) {\n var initialFullValue;\n var initialValue;\n var unit;\n var finalValue;\n var finalFullValue;\n\n if (!el.dom7AnimateInstance) { a.elements[index].dom7AnimateInstance = a; }\n\n elements[index] = {\n container: el,\n };\n Object.keys(props).forEach(function (prop) {\n initialFullValue = win.getComputedStyle(el, null).getPropertyValue(prop).replace(',', '.');\n initialValue = parseFloat(initialFullValue);\n unit = initialFullValue.replace(initialValue, '');\n finalValue = parseFloat(props[prop]);\n finalFullValue = props[prop] + unit;\n elements[index][prop] = {\n initialFullValue: initialFullValue,\n initialValue: initialValue,\n unit: unit,\n finalValue: finalValue,\n finalFullValue: finalFullValue,\n currentValue: initialValue,\n };\n });\n });\n\n var startTime = null;\n var time;\n var elementsDone = 0;\n var propsDone = 0;\n var done;\n var began = false;\n\n a.animating = true;\n\n function render() {\n time = new Date().getTime();\n var progress;\n var easeProgress;\n // let el;\n if (!began) {\n began = true;\n if (params.begin) { params.begin(els); }\n }\n if (startTime === null) {\n startTime = time;\n }\n if (params.progress) {\n // eslint-disable-next-line\n params.progress(els, Math.max(Math.min((time - startTime) / params.duration, 1), 0), ((startTime + params.duration) - time < 0 ? 0 : (startTime + params.duration) - time), startTime);\n }\n\n elements.forEach(function (element) {\n var el = element;\n if (done || el.done) { return; }\n Object.keys(props).forEach(function (prop) {\n if (done || el.done) { return; }\n progress = Math.max(Math.min((time - startTime) / params.duration, 1), 0);\n easeProgress = a.easingProgress(params.easing, progress);\n var ref = el[prop];\n var initialValue = ref.initialValue;\n var finalValue = ref.finalValue;\n var unit = ref.unit;\n el[prop].currentValue = initialValue + (easeProgress * (finalValue - initialValue));\n var currentValue = el[prop].currentValue;\n\n if (\n (finalValue > initialValue && currentValue >= finalValue) ||\n (finalValue < initialValue && currentValue <= finalValue)) {\n el.container.style[prop] = finalValue + unit;\n propsDone += 1;\n if (propsDone === Object.keys(props).length) {\n el.done = true;\n elementsDone += 1;\n }\n if (elementsDone === elements.length) {\n done = true;\n }\n }\n if (done) {\n a.done(params.complete);\n return;\n }\n el.container.style[prop] = currentValue + unit;\n });\n });\n if (done) { return; }\n // Then call\n a.frameId = requestAnimationFrame(render);\n }\n a.frameId = requestAnimationFrame(render);\n return a;\n },\n };\n\n if (a.elements.length === 0) {\n return els;\n }\n\n var animateInstance;\n for (var i = 0; i < a.elements.length; i += 1) {\n if (a.elements[i].dom7AnimateInstance) {\n animateInstance = a.elements[i].dom7AnimateInstance;\n } else { a.elements[i].dom7AnimateInstance = a; }\n }\n 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\n function stop() {\n var els = this;\n for (var i = 0; i < els.length; i += 1) {\n if (els[i].dom7AnimateInstance) {\n els[i].dom7AnimateInstance.stop();\n }\n }\n }\n\n var Animate = /*#__PURE__*/Object.freeze({\n animate: animate,\n stop: stop\n });\n\n var noTrigger = ('resize scroll').split(' ');\n function eventShortcut(name) {\n var ref;\n\n var args = [], len = arguments.length - 1;\n while ( len-- > 0 ) args[ len ] = arguments[ len + 1 ];\n if (typeof args[0] === 'undefined') {\n for (var i = 0; i < this.length; i += 1) {\n if (noTrigger.indexOf(name) < 0) {\n if (name in this[i]) { this[i][name](); }\n else {\n $(this[i]).trigger(name);\n }\n }\n }\n return this;\n }\n return (ref = this).on.apply(ref, [ name ].concat( args ));\n }\n\n function click() {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return eventShortcut.bind(this).apply(void 0, [ 'click' ].concat( args ));\n }\n function blur() {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return eventShortcut.bind(this).apply(void 0, [ 'blur' ].concat( args ));\n }\n function focus() {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return eventShortcut.bind(this).apply(void 0, [ 'focus' ].concat( args ));\n }\n function focusin() {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return eventShortcut.bind(this).apply(void 0, [ 'focusin' ].concat( args ));\n }\n function focusout() {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return eventShortcut.bind(this).apply(void 0, [ 'focusout' ].concat( args ));\n }\n function keyup() {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return eventShortcut.bind(this).apply(void 0, [ 'keyup' ].concat( args ));\n }\n function keydown() {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return eventShortcut.bind(this).apply(void 0, [ 'keydown' ].concat( args ));\n }\n function keypress() {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return eventShortcut.bind(this).apply(void 0, [ 'keypress' ].concat( args ));\n }\n function submit() {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return eventShortcut.bind(this).apply(void 0, [ 'submit' ].concat( args ));\n }\n function change() {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return eventShortcut.bind(this).apply(void 0, [ 'change' ].concat( args ));\n }\n function mousedown() {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return eventShortcut.bind(this).apply(void 0, [ 'mousedown' ].concat( args ));\n }\n function mousemove() {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return eventShortcut.bind(this).apply(void 0, [ 'mousemove' ].concat( args ));\n }\n function mouseup() {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return eventShortcut.bind(this).apply(void 0, [ 'mouseup' ].concat( args ));\n }\n function mouseenter() {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return eventShortcut.bind(this).apply(void 0, [ 'mouseenter' ].concat( args ));\n }\n function mouseleave() {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return eventShortcut.bind(this).apply(void 0, [ 'mouseleave' ].concat( args ));\n }\n function mouseout() {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return eventShortcut.bind(this).apply(void 0, [ 'mouseout' ].concat( args ));\n }\n function mouseover() {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return eventShortcut.bind(this).apply(void 0, [ 'mouseover' ].concat( args ));\n }\n function touchstart() {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return eventShortcut.bind(this).apply(void 0, [ 'touchstart' ].concat( args ));\n }\n function touchend() {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return eventShortcut.bind(this).apply(void 0, [ 'touchend' ].concat( args ));\n }\n function touchmove() {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return eventShortcut.bind(this).apply(void 0, [ 'touchmove' ].concat( args ));\n }\n function resize() {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return eventShortcut.bind(this).apply(void 0, [ 'resize' ].concat( args ));\n }\n function scroll() {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return eventShortcut.bind(this).apply(void 0, [ 'scroll' ].concat( args ));\n }\n\n var eventShortcuts = /*#__PURE__*/Object.freeze({\n click: click,\n blur: blur,\n focus: focus,\n focusin: focusin,\n focusout: focusout,\n keyup: keyup,\n keydown: keydown,\n keypress: keypress,\n submit: submit,\n change: change,\n mousedown: mousedown,\n mousemove: mousemove,\n mouseup: mouseup,\n mouseenter: mouseenter,\n mouseleave: mouseleave,\n mouseout: mouseout,\n mouseover: mouseover,\n touchstart: touchstart,\n touchend: touchend,\n touchmove: touchmove,\n resize: resize,\n scroll: scroll\n });\n\n [Methods, Scroll, Animate, eventShortcuts].forEach(function (group) {\n Object.keys(group).forEach(function (methodName) {\n $.fn[methodName] = group[methodName];\n });\n });\n\n /**\n * https://github.com/gre/bezier-easing\n * BezierEasing - use bezier curve for transition easing function\n * by Gaëtan Renaudeau 2014 - 2015 – MIT License\n */\n\n /* eslint-disable */\n\n // These values are established by empiricism with tests (tradeoff: performance VS precision)\n var NEWTON_ITERATIONS = 4;\n var NEWTON_MIN_SLOPE = 0.001;\n var SUBDIVISION_PRECISION = 0.0000001;\n var SUBDIVISION_MAX_ITERATIONS = 10;\n\n var kSplineTableSize = 11;\n var kSampleStepSize = 1.0 / (kSplineTableSize - 1.0);\n\n var float32ArraySupported = typeof Float32Array === 'function';\n\n function A (aA1, aA2) { return 1.0 - 3.0 * aA2 + 3.0 * aA1; }\n function B (aA1, aA2) { return 3.0 * aA2 - 6.0 * aA1; }\n function C (aA1) { return 3.0 * aA1; }\n\n // Returns x(t) given t, x1, and x2, or y(t) given t, y1, and y2.\n function calcBezier (aT, aA1, aA2) { return ((A(aA1, aA2) * aT + B(aA1, aA2)) * aT + C(aA1)) * aT; }\n\n // Returns dx/dt given t, x1, and x2, or dy/dt given t, y1, and y2.\n function getSlope (aT, aA1, aA2) { return 3.0 * A(aA1, aA2) * aT * aT + 2.0 * B(aA1, aA2) * aT + C(aA1); }\n\n function binarySubdivide (aX, aA, aB, mX1, mX2) {\n var currentX, currentT, i = 0;\n do {\n currentT = aA + (aB - aA) / 2.0;\n currentX = calcBezier(currentT, mX1, mX2) - aX;\n if (currentX > 0.0) {\n aB = currentT;\n } else {\n aA = currentT;\n }\n } while (Math.abs(currentX) > SUBDIVISION_PRECISION && ++i < SUBDIVISION_MAX_ITERATIONS);\n return currentT;\n }\n\n function newtonRaphsonIterate (aX, aGuessT, mX1, mX2) {\n for (var i = 0; i < NEWTON_ITERATIONS; ++i) {\n var currentSlope = getSlope(aGuessT, mX1, mX2);\n if (currentSlope === 0.0) {\n return aGuessT;\n }\n var currentX = calcBezier(aGuessT, mX1, mX2) - aX;\n aGuessT -= currentX / currentSlope;\n }\n return aGuessT;\n }\n\n function bezier (mX1, mY1, mX2, mY2) {\n if (!(0 <= mX1 && mX1 <= 1 && 0 <= mX2 && mX2 <= 1)) {\n throw new Error('bezier x values must be in [0, 1] range');\n }\n\n // Precompute samples table\n var sampleValues = float32ArraySupported ? new Float32Array(kSplineTableSize) : new Array(kSplineTableSize);\n if (mX1 !== mY1 || mX2 !== mY2) {\n for (var i = 0; i < kSplineTableSize; ++i) {\n sampleValues[i] = calcBezier(i * kSampleStepSize, mX1, mX2);\n }\n }\n\n function getTForX (aX) {\n var intervalStart = 0.0;\n var currentSample = 1;\n var lastSample = kSplineTableSize - 1;\n\n for (; currentSample !== lastSample && sampleValues[currentSample] <= aX; ++currentSample) {\n intervalStart += kSampleStepSize;\n }\n --currentSample;\n\n // Interpolate to provide an initial guess for t\n var dist = (aX - sampleValues[currentSample]) / (sampleValues[currentSample + 1] - sampleValues[currentSample]);\n var guessForT = intervalStart + dist * kSampleStepSize;\n\n var initialSlope = getSlope(guessForT, mX1, mX2);\n if (initialSlope >= NEWTON_MIN_SLOPE) {\n return newtonRaphsonIterate(aX, guessForT, mX1, mX2);\n } else if (initialSlope === 0.0) {\n return guessForT;\n } else {\n return binarySubdivide(aX, intervalStart, intervalStart + kSampleStepSize, mX1, mX2);\n }\n }\n\n return function BezierEasing (x) {\n if (mX1 === mY1 && mX2 === mY2) {\n return x; // linear\n }\n // Because JavaScript number are imprecise, we should guarantee the extremes are right.\n if (x === 0) {\n return 0;\n }\n if (x === 1) {\n return 1;\n }\n return calcBezier(getTForX(x), mY1, mY2);\n };\n }\n\n /* eslint no-control-regex: \"off\" */\n\n // Remove Diacritics\n var defaultDiacriticsRemovalap = [\n { base: 'A', letters: '\\u0041\\u24B6\\uFF21\\u00C0\\u00C1\\u00C2\\u1EA6\\u1EA4\\u1EAA\\u1EA8\\u00C3\\u0100\\u0102\\u1EB0\\u1EAE\\u1EB4\\u1EB2\\u0226\\u01E0\\u00C4\\u01DE\\u1EA2\\u00C5\\u01FA\\u01CD\\u0200\\u0202\\u1EA0\\u1EAC\\u1EB6\\u1E00\\u0104\\u023A\\u2C6F' },\n { base: 'AA', letters: '\\uA732' },\n { base: 'AE', letters: '\\u00C6\\u01FC\\u01E2' },\n { base: 'AO', letters: '\\uA734' },\n { base: 'AU', letters: '\\uA736' },\n { base: 'AV', letters: '\\uA738\\uA73A' },\n { base: 'AY', letters: '\\uA73C' },\n { base: 'B', letters: '\\u0042\\u24B7\\uFF22\\u1E02\\u1E04\\u1E06\\u0243\\u0182\\u0181' },\n { base: 'C', letters: '\\u0043\\u24B8\\uFF23\\u0106\\u0108\\u010A\\u010C\\u00C7\\u1E08\\u0187\\u023B\\uA73E' },\n { base: 'D', letters: '\\u0044\\u24B9\\uFF24\\u1E0A\\u010E\\u1E0C\\u1E10\\u1E12\\u1E0E\\u0110\\u018B\\u018A\\u0189\\uA779' },\n { base: 'DZ', letters: '\\u01F1\\u01C4' },\n { base: 'Dz', letters: '\\u01F2\\u01C5' },\n { base: 'E', letters: '\\u0045\\u24BA\\uFF25\\u00C8\\u00C9\\u00CA\\u1EC0\\u1EBE\\u1EC4\\u1EC2\\u1EBC\\u0112\\u1E14\\u1E16\\u0114\\u0116\\u00CB\\u1EBA\\u011A\\u0204\\u0206\\u1EB8\\u1EC6\\u0228\\u1E1C\\u0118\\u1E18\\u1E1A\\u0190\\u018E' },\n { base: 'F', letters: '\\u0046\\u24BB\\uFF26\\u1E1E\\u0191\\uA77B' },\n { base: 'G', letters: '\\u0047\\u24BC\\uFF27\\u01F4\\u011C\\u1E20\\u011E\\u0120\\u01E6\\u0122\\u01E4\\u0193\\uA7A0\\uA77D\\uA77E' },\n { base: 'H', letters: '\\u0048\\u24BD\\uFF28\\u0124\\u1E22\\u1E26\\u021E\\u1E24\\u1E28\\u1E2A\\u0126\\u2C67\\u2C75\\uA78D' },\n { base: 'I', letters: '\\u0049\\u24BE\\uFF29\\u00CC\\u00CD\\u00CE\\u0128\\u012A\\u012C\\u0130\\u00CF\\u1E2E\\u1EC8\\u01CF\\u0208\\u020A\\u1ECA\\u012E\\u1E2C\\u0197' },\n { base: 'J', letters: '\\u004A\\u24BF\\uFF2A\\u0134\\u0248' },\n { base: 'K', letters: '\\u004B\\u24C0\\uFF2B\\u1E30\\u01E8\\u1E32\\u0136\\u1E34\\u0198\\u2C69\\uA740\\uA742\\uA744\\uA7A2' },\n { base: 'L', letters: '\\u004C\\u24C1\\uFF2C\\u013F\\u0139\\u013D\\u1E36\\u1E38\\u013B\\u1E3C\\u1E3A\\u0141\\u023D\\u2C62\\u2C60\\uA748\\uA746\\uA780' },\n { base: 'LJ', letters: '\\u01C7' },\n { base: 'Lj', letters: '\\u01C8' },\n { base: 'M', letters: '\\u004D\\u24C2\\uFF2D\\u1E3E\\u1E40\\u1E42\\u2C6E\\u019C' },\n { base: 'N', letters: '\\u004E\\u24C3\\uFF2E\\u01F8\\u0143\\u00D1\\u1E44\\u0147\\u1E46\\u0145\\u1E4A\\u1E48\\u0220\\u019D\\uA790\\uA7A4' },\n { base: 'NJ', letters: '\\u01CA' },\n { base: 'Nj', letters: '\\u01CB' },\n { base: 'O', letters: '\\u004F\\u24C4\\uFF2F\\u00D2\\u00D3\\u00D4\\u1ED2\\u1ED0\\u1ED6\\u1ED4\\u00D5\\u1E4C\\u022C\\u1E4E\\u014C\\u1E50\\u1E52\\u014E\\u022E\\u0230\\u00D6\\u022A\\u1ECE\\u0150\\u01D1\\u020C\\u020E\\u01A0\\u1EDC\\u1EDA\\u1EE0\\u1EDE\\u1EE2\\u1ECC\\u1ED8\\u01EA\\u01EC\\u00D8\\u01FE\\u0186\\u019F\\uA74A\\uA74C' },\n { base: 'OI', letters: '\\u01A2' },\n { base: 'OO', letters: '\\uA74E' },\n { base: 'OU', letters: '\\u0222' },\n { base: 'OE', letters: '\\u008C\\u0152' },\n { base: 'oe', letters: '\\u009C\\u0153' },\n { base: 'P', letters: '\\u0050\\u24C5\\uFF30\\u1E54\\u1E56\\u01A4\\u2C63\\uA750\\uA752\\uA754' },\n { base: 'Q', letters: '\\u0051\\u24C6\\uFF31\\uA756\\uA758\\u024A' },\n { base: 'R', letters: '\\u0052\\u24C7\\uFF32\\u0154\\u1E58\\u0158\\u0210\\u0212\\u1E5A\\u1E5C\\u0156\\u1E5E\\u024C\\u2C64\\uA75A\\uA7A6\\uA782' },\n { base: 'S', letters: '\\u0053\\u24C8\\uFF33\\u1E9E\\u015A\\u1E64\\u015C\\u1E60\\u0160\\u1E66\\u1E62\\u1E68\\u0218\\u015E\\u2C7E\\uA7A8\\uA784' },\n { base: 'T', letters: '\\u0054\\u24C9\\uFF34\\u1E6A\\u0164\\u1E6C\\u021A\\u0162\\u1E70\\u1E6E\\u0166\\u01AC\\u01AE\\u023E\\uA786' },\n { base: 'TZ', letters: '\\uA728' },\n { base: 'U', letters: '\\u0055\\u24CA\\uFF35\\u00D9\\u00DA\\u00DB\\u0168\\u1E78\\u016A\\u1E7A\\u016C\\u00DC\\u01DB\\u01D7\\u01D5\\u01D9\\u1EE6\\u016E\\u0170\\u01D3\\u0214\\u0216\\u01AF\\u1EEA\\u1EE8\\u1EEE\\u1EEC\\u1EF0\\u1EE4\\u1E72\\u0172\\u1E76\\u1E74\\u0244' },\n { base: 'V', letters: '\\u0056\\u24CB\\uFF36\\u1E7C\\u1E7E\\u01B2\\uA75E\\u0245' },\n { base: 'VY', letters: '\\uA760' },\n { base: 'W', letters: '\\u0057\\u24CC\\uFF37\\u1E80\\u1E82\\u0174\\u1E86\\u1E84\\u1E88\\u2C72' },\n { base: 'X', letters: '\\u0058\\u24CD\\uFF38\\u1E8A\\u1E8C' },\n { base: 'Y', letters: '\\u0059\\u24CE\\uFF39\\u1EF2\\u00DD\\u0176\\u1EF8\\u0232\\u1E8E\\u0178\\u1EF6\\u1EF4\\u01B3\\u024E\\u1EFE' },\n { base: 'Z', letters: '\\u005A\\u24CF\\uFF3A\\u0179\\u1E90\\u017B\\u017D\\u1E92\\u1E94\\u01B5\\u0224\\u2C7F\\u2C6B\\uA762' },\n { base: 'a', letters: '\\u0061\\u24D0\\uFF41\\u1E9A\\u00E0\\u00E1\\u00E2\\u1EA7\\u1EA5\\u1EAB\\u1EA9\\u00E3\\u0101\\u0103\\u1EB1\\u1EAF\\u1EB5\\u1EB3\\u0227\\u01E1\\u00E4\\u01DF\\u1EA3\\u00E5\\u01FB\\u01CE\\u0201\\u0203\\u1EA1\\u1EAD\\u1EB7\\u1E01\\u0105\\u2C65\\u0250' },\n { base: 'aa', letters: '\\uA733' },\n { base: 'ae', letters: '\\u00E6\\u01FD\\u01E3' },\n { base: 'ao', letters: '\\uA735' },\n { base: 'au', letters: '\\uA737' },\n { base: 'av', letters: '\\uA739\\uA73B' },\n { base: 'ay', letters: '\\uA73D' },\n { base: 'b', letters: '\\u0062\\u24D1\\uFF42\\u1E03\\u1E05\\u1E07\\u0180\\u0183\\u0253' },\n { base: 'c', letters: '\\u0063\\u24D2\\uFF43\\u0107\\u0109\\u010B\\u010D\\u00E7\\u1E09\\u0188\\u023C\\uA73F\\u2184' },\n { base: 'd', letters: '\\u0064\\u24D3\\uFF44\\u1E0B\\u010F\\u1E0D\\u1E11\\u1E13\\u1E0F\\u0111\\u018C\\u0256\\u0257\\uA77A' },\n { base: 'dz', letters: '\\u01F3\\u01C6' },\n { base: 'e', letters: '\\u0065\\u24D4\\uFF45\\u00E8\\u00E9\\u00EA\\u1EC1\\u1EBF\\u1EC5\\u1EC3\\u1EBD\\u0113\\u1E15\\u1E17\\u0115\\u0117\\u00EB\\u1EBB\\u011B\\u0205\\u0207\\u1EB9\\u1EC7\\u0229\\u1E1D\\u0119\\u1E19\\u1E1B\\u0247\\u025B\\u01DD' },\n { base: 'f', letters: '\\u0066\\u24D5\\uFF46\\u1E1F\\u0192\\uA77C' },\n { base: 'g', letters: '\\u0067\\u24D6\\uFF47\\u01F5\\u011D\\u1E21\\u011F\\u0121\\u01E7\\u0123\\u01E5\\u0260\\uA7A1\\u1D79\\uA77F' },\n { base: 'h', letters: '\\u0068\\u24D7\\uFF48\\u0125\\u1E23\\u1E27\\u021F\\u1E25\\u1E29\\u1E2B\\u1E96\\u0127\\u2C68\\u2C76\\u0265' },\n { base: 'hv', letters: '\\u0195' },\n { base: 'i', letters: '\\u0069\\u24D8\\uFF49\\u00EC\\u00ED\\u00EE\\u0129\\u012B\\u012D\\u00EF\\u1E2F\\u1EC9\\u01D0\\u0209\\u020B\\u1ECB\\u012F\\u1E2D\\u0268\\u0131' },\n { base: 'j', letters: '\\u006A\\u24D9\\uFF4A\\u0135\\u01F0\\u0249' },\n { base: 'k', letters: '\\u006B\\u24DA\\uFF4B\\u1E31\\u01E9\\u1E33\\u0137\\u1E35\\u0199\\u2C6A\\uA741\\uA743\\uA745\\uA7A3' },\n { base: 'l', letters: '\\u006C\\u24DB\\uFF4C\\u0140\\u013A\\u013E\\u1E37\\u1E39\\u013C\\u1E3D\\u1E3B\\u017F\\u0142\\u019A\\u026B\\u2C61\\uA749\\uA781\\uA747' },\n { base: 'lj', letters: '\\u01C9' },\n { base: 'm', letters: '\\u006D\\u24DC\\uFF4D\\u1E3F\\u1E41\\u1E43\\u0271\\u026F' },\n { base: 'n', letters: '\\u006E\\u24DD\\uFF4E\\u01F9\\u0144\\u00F1\\u1E45\\u0148\\u1E47\\u0146\\u1E4B\\u1E49\\u019E\\u0272\\u0149\\uA791\\uA7A5' },\n { base: 'nj', letters: '\\u01CC' },\n { base: 'o', letters: '\\u006F\\u24DE\\uFF4F\\u00F2\\u00F3\\u00F4\\u1ED3\\u1ED1\\u1ED7\\u1ED5\\u00F5\\u1E4D\\u022D\\u1E4F\\u014D\\u1E51\\u1E53\\u014F\\u022F\\u0231\\u00F6\\u022B\\u1ECF\\u0151\\u01D2\\u020D\\u020F\\u01A1\\u1EDD\\u1EDB\\u1EE1\\u1EDF\\u1EE3\\u1ECD\\u1ED9\\u01EB\\u01ED\\u00F8\\u01FF\\u0254\\uA74B\\uA74D\\u0275' },\n { base: 'oi', letters: '\\u01A3' },\n { base: 'ou', letters: '\\u0223' },\n { base: 'oo', letters: '\\uA74F' },\n { base: 'p', letters: '\\u0070\\u24DF\\uFF50\\u1E55\\u1E57\\u01A5\\u1D7D\\uA751\\uA753\\uA755' },\n { base: 'q', letters: '\\u0071\\u24E0\\uFF51\\u024B\\uA757\\uA759' },\n { base: 'r', letters: '\\u0072\\u24E1\\uFF52\\u0155\\u1E59\\u0159\\u0211\\u0213\\u1E5B\\u1E5D\\u0157\\u1E5F\\u024D\\u027D\\uA75B\\uA7A7\\uA783' },\n { base: 's', letters: '\\u0073\\u24E2\\uFF53\\u00DF\\u015B\\u1E65\\u015D\\u1E61\\u0161\\u1E67\\u1E63\\u1E69\\u0219\\u015F\\u023F\\uA7A9\\uA785\\u1E9B' },\n { base: 't', letters: '\\u0074\\u24E3\\uFF54\\u1E6B\\u1E97\\u0165\\u1E6D\\u021B\\u0163\\u1E71\\u1E6F\\u0167\\u01AD\\u0288\\u2C66\\uA787' },\n { base: 'tz', letters: '\\uA729' },\n { base: 'u', letters: '\\u0075\\u24E4\\uFF55\\u00F9\\u00FA\\u00FB\\u0169\\u1E79\\u016B\\u1E7B\\u016D\\u00FC\\u01DC\\u01D8\\u01D6\\u01DA\\u1EE7\\u016F\\u0171\\u01D4\\u0215\\u0217\\u01B0\\u1EEB\\u1EE9\\u1EEF\\u1EED\\u1EF1\\u1EE5\\u1E73\\u0173\\u1E77\\u1E75\\u0289' },\n { base: 'v', letters: '\\u0076\\u24E5\\uFF56\\u1E7D\\u1E7F\\u028B\\uA75F\\u028C' },\n { base: 'vy', letters: '\\uA761' },\n { base: 'w', letters: '\\u0077\\u24E6\\uFF57\\u1E81\\u1E83\\u0175\\u1E87\\u1E85\\u1E98\\u1E89\\u2C73' },\n { base: 'x', letters: '\\u0078\\u24E7\\uFF58\\u1E8B\\u1E8D' },\n { base: 'y', letters: '\\u0079\\u24E8\\uFF59\\u1EF3\\u00FD\\u0177\\u1EF9\\u0233\\u1E8F\\u00FF\\u1EF7\\u1E99\\u1EF5\\u01B4\\u024F\\u1EFF' },\n { base: 'z', letters: '\\u007A\\u24E9\\uFF5A\\u017A\\u1E91\\u017C\\u017E\\u1E93\\u1E95\\u01B6\\u0225\\u0240\\u2C6C\\uA763' } ];\n\n var diacriticsMap = {};\n for (var i = 0; i < defaultDiacriticsRemovalap.length; i += 1) {\n var letters = defaultDiacriticsRemovalap[i].letters;\n for (var j = 0; j < letters.length; j += 1) {\n diacriticsMap[letters[j]] = defaultDiacriticsRemovalap[i].base;\n }\n }\n\n var createPromise = function createPromise(handler) {\n var resolved = false;\n var rejected = false;\n var resolveArgs;\n var rejectArgs;\n var promiseHandlers = {\n then: undefined,\n catch: undefined,\n };\n var promise = {\n then: function then(thenHandler) {\n if (resolved) {\n thenHandler.apply(void 0, resolveArgs);\n } else {\n promiseHandlers.then = thenHandler;\n }\n return promise;\n },\n catch: function catch$1(catchHandler) {\n if (rejected) {\n catchHandler.apply(void 0, rejectArgs);\n } else {\n promiseHandlers.catch = catchHandler;\n }\n return promise;\n },\n };\n\n function resolve() {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n resolved = true;\n if (promiseHandlers.then) { promiseHandlers.then.apply(promiseHandlers, args); }\n else { resolveArgs = args; }\n }\n function reject() {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n rejected = true;\n if (promiseHandlers.catch) { promiseHandlers.catch.apply(promiseHandlers, args); }\n else { rejectArgs = args; }\n }\n handler(resolve, reject);\n\n return promise;\n };\n\n var uniqueNumber = 1;\n\n var Utils = {\n uniqueNumber: function uniqueNumber$1() {\n uniqueNumber += 1;\n return uniqueNumber;\n },\n id: function id(mask, map) {\n if ( mask === void 0 ) mask = 'xxxxxxxxxx';\n if ( map === void 0 ) map = '0123456789abcdef';\n\n var length = map.length;\n return mask.replace(/x/g, function () { return map[Math.floor((Math.random() * length))]; });\n },\n mdPreloaderContent: \"\\n <span class=\\\"preloader-inner\\\">\\n <span class=\\\"preloader-inner-gap\\\"></span>\\n <span class=\\\"preloader-inner-left\\\">\\n <span class=\\\"preloader-inner-half-circle\\\"></span>\\n </span>\\n <span class=\\\"preloader-inner-right\\\">\\n <span class=\\\"preloader-inner-half-circle\\\"></span>\\n </span>\\n </span>\\n \".trim(),\n eventNameToColonCase: function eventNameToColonCase(eventName) {\n var hasColon;\n return eventName.split('').map(function (char, index) {\n if (char.match(/[A-Z]/) && index !== 0 && !hasColon) {\n hasColon = true;\n return (\":\" + (char.toLowerCase()));\n }\n return char.toLowerCase();\n }).join('');\n },\n deleteProps: function deleteProps(obj) {\n var object = obj;\n Object.keys(object).forEach(function (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 },\n bezier: function bezier$1() {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return bezier.apply(void 0, args);\n },\n nextTick: function nextTick(callback, delay) {\n if ( delay === void 0 ) delay = 0;\n\n return setTimeout(callback, delay);\n },\n nextFrame: function nextFrame(callback) {\n return Utils.requestAnimationFrame(function () {\n Utils.requestAnimationFrame(callback);\n });\n },\n now: function now() {\n return Date.now();\n },\n promise: function promise(handler) {\n return win.Promise ? new Promise(handler) : createPromise(handler);\n },\n requestAnimationFrame: function requestAnimationFrame(callback) {\n if (win.requestAnimationFrame) { return win.requestAnimationFrame(callback); }\n if (win.webkitRequestAnimationFrame) { return win.webkitRequestAnimationFrame(callback); }\n return win.setTimeout(callback, 1000 / 60);\n },\n cancelAnimationFrame: function cancelAnimationFrame(id) {\n if (win.cancelAnimationFrame) { return win.cancelAnimationFrame(id); }\n if (win.webkitCancelAnimationFrame) { return win.webkitCancelAnimationFrame(id); }\n return win.clearTimeout(id);\n },\n removeDiacritics: function removeDiacritics(str) {\n return str.replace(/[^\\u0000-\\u007E]/g, function (a) { return diacriticsMap[a] || a; });\n },\n parseUrlQuery: function parseUrlQuery(url) {\n var query = {};\n var urlToParse = url || win.location.href;\n var i;\n var params;\n var param;\n var length;\n if (typeof urlToParse === 'string' && urlToParse.length) {\n urlToParse = urlToParse.indexOf('?') > -1 ? urlToParse.replace(/\\S*\\?/, '') : '';\n params = urlToParse.split('&').filter(function (paramsPart) { return 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])] = typeof param[1] === 'undefined' ? undefined : decodeURIComponent(param.slice(1).join('=')) || '';\n }\n }\n return query;\n },\n getTranslate: function getTranslate(el, axis) {\n if ( axis === void 0 ) axis = 'x';\n\n var matrix;\n var curTransform;\n var transformMatrix;\n\n var curStyle = win.getComputedStyle(el, null);\n\n if (win.WebKitCSSMatrix) {\n curTransform = curStyle.transform || curStyle.webkitTransform;\n if (curTransform.split(',').length > 6) {\n curTransform = curTransform.split(', ').map(function (a) { return a.replace(',', '.'); }).join(', ');\n }\n // Some old versions of Webkit choke when 'none' is passed; pass\n // empty string instead in this case\n transformMatrix = new win.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);\n } else {\n transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');\n matrix = transformMatrix.toString().split(',');\n }\n\n if (axis === 'x') {\n // Latest Chrome and webkits Fix\n if (win.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 (win.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 },\n serializeObject: function serializeObject(obj, parents) {\n if ( parents === void 0 ) parents = [];\n\n if (typeof obj === 'string') { return obj; }\n var resultArray = [];\n var separator = '&';\n var newParents;\n function varName(name) {\n if (parents.length > 0) {\n var parentParts = '';\n for (var 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(function (prop) {\n var toPush;\n if (Array.isArray(obj[prop])) {\n toPush = [];\n for (var 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(Utils.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 = Utils.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 },\n isObject: function isObject(o) {\n return typeof o === 'object' && o !== null && o.constructor && o.constructor === Object;\n },\n merge: function merge() {\n var args = [], len$1 = arguments.length;\n while ( len$1-- ) args[ len$1 ] = arguments[ len$1 ];\n\n var to = args[0];\n args.splice(0, 1);\n var from = args;\n\n for (var i = 0; i < from.length; i += 1) {\n var nextSource = args[i];\n if (nextSource !== undefined && nextSource !== null) {\n var keysArray = Object.keys(Object(nextSource));\n for (var nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {\n var nextKey = keysArray[nextIndex];\n var desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n if (desc !== undefined && desc.enumerable) {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n return to;\n },\n extend: function extend() {\n var args = [], len$1 = arguments.length;\n while ( len$1-- ) args[ len$1 ] = arguments[ len$1 ];\n\n var deep = true;\n var to;\n var 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 (var i = 0; i < from.length; i += 1) {\n var nextSource = args[i];\n if (nextSource !== undefined && nextSource !== null) {\n var keysArray = Object.keys(Object(nextSource));\n for (var nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {\n var nextKey = keysArray[nextIndex];\n var desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n if (desc !== undefined && desc.enumerable) {\n if (!deep) {\n to[nextKey] = nextSource[nextKey];\n } else if (Utils.isObject(to[nextKey]) && Utils.isObject(nextSource[nextKey])) {\n Utils.extend(to[nextKey], nextSource[nextKey]);\n } else if (!Utils.isObject(to[nextKey]) && Utils.isObject(nextSource[nextKey])) {\n to[nextKey] = {};\n Utils.extend(to[nextKey], nextSource[nextKey]);\n } else {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n }\n return to;\n },\n };\n\n var Device = (function Device() {\n var platform = win.navigator.platform;\n var ua = win.navigator.userAgent;\n\n var device = {\n ios: false,\n android: false,\n androidChrome: false,\n desktop: false,\n windowsPhone: false,\n iphone: false,\n iphoneX: false,\n ipod: false,\n ipad: false,\n edge: false,\n ie: false,\n firefox: false,\n macos: false,\n windows: false,\n cordova: !!(win.cordova || win.phonegap),\n phonegap: !!(win.cordova || win.phonegap),\n };\n\n var screenWidth = win.screen.width;\n var screenHeight = win.screen.height;\n\n var windowsPhone = ua.match(/(Windows Phone);?[\\s\\/]+([\\d.]+)?/); // eslint-disable-line\n var android = ua.match(/(Android);?[\\s\\/]+([\\d.]+)?/); // eslint-disable-line\n var ipad = ua.match(/(iPad).*OS\\s([\\d_]+)/);\n var ipod = ua.match(/(iPod)(.*OS\\s([\\d_]+))?/);\n var iphone = !ipad && ua.match(/(iPhone\\sOS|iOS)\\s([\\d_]+)/);\n var iphoneX = iphone && (\n (screenWidth === 375 && screenHeight === 812) // X/XS\n || (screenWidth === 414 && screenHeight === 896) // XR / XS Max\n );\n var ie = ua.indexOf('MSIE ') >= 0 || ua.indexOf('Trident/') >= 0;\n var edge = ua.indexOf('Edge/') >= 0;\n var firefox = ua.indexOf('Gecko/') >= 0 && ua.indexOf('Firefox/') >= 0;\n var macos = platform === 'MacIntel';\n var windows = platform === 'Win32';\n\n device.ie = ie;\n device.edge = edge;\n device.firefox = firefox;\n\n // Windows\n if (windowsPhone) {\n device.os = 'windows';\n device.osVersion = windowsPhone[2];\n device.windowsPhone = true;\n }\n // Android\n if (android && !windows) {\n device.os = 'android';\n device.osVersion = android[2];\n device.android = true;\n device.androidChrome = ua.toLowerCase().indexOf('chrome') >= 0;\n }\n if (ipad || iphone || ipod) {\n device.os = 'ios';\n device.ios = true;\n }\n // iOS\n if (iphone && !ipod) {\n device.osVersion = iphone[2].replace(/_/g, '.');\n device.iphone = true;\n device.iphoneX = iphoneX;\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.iphone = 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 = !!((iphone || ipad || ipod) && (ua.match(/.*AppleWebKit(?!.*Safari)/i) || win.navigator.standalone))\n || (win.matchMedia && win.matchMedia('(display-mode: standalone)').matches);\n device.webview = device.webView;\n device.standalone = device.webView;\n\n\n // Desktop\n device.desktop = !(device.os || device.android || device.webView);\n if (device.desktop) {\n device.macos = macos;\n device.windows = windows;\n }\n\n // Minimal UI\n if (device.os && device.os === 'ios') {\n var osVersionArr = device.osVersion.split('.');\n var metaViewport = doc.querySelector('meta[name=\"viewport\"]');\n device.minimalUi = !device.webView\n && (ipod || iphone)\n && (osVersionArr[0] * 1 === 7 ? osVersionArr[1] * 1 >= 1 : osVersionArr[0] * 1 > 7)\n && metaViewport && metaViewport.getAttribute('content').indexOf('minimal-ui') >= 0;\n }\n\n // Check for status bar and fullscreen app mode\n device.needsStatusbarOverlay = function needsStatusbarOverlay() {\n if ((device.webView || (device.android && device.cordova)) && (win.innerWidth * win.innerHeight === win.screen.width * win.screen.height)) {\n if (device.iphoneX && (win.orientation === 90 || win.orientation === -90)) {\n return false;\n }\n return true;\n }\n return false;\n };\n device.statusbar = device.needsStatusbarOverlay();\n\n // Pixel Ratio\n device.pixelRatio = win.devicePixelRatio || 1;\n\n // Export object\n return device;\n }());\n\n var Framework7Class = function Framework7Class(params, parents) {\n if ( params === void 0 ) params = {};\n if ( parents === void 0 ) parents = [];\n\n var self = this;\n self.params = params;\n\n // Events\n self.eventsParents = parents;\n self.eventsListeners = {};\n\n if (self.params && self.params.on) {\n Object.keys(self.params.on).forEach(function (eventName) {\n self.on(eventName, self.params.on[eventName]);\n });\n }\n };\n\n var staticAccessors$1 = { components: { configurable: true } };\n\n Framework7Class.prototype.on = function on (events, handler, priority) {\n var self = this;\n if (typeof handler !== 'function') { return self; }\n var method = priority ? 'unshift' : 'push';\n events.split(' ').forEach(function (event) {\n if (!self.eventsListeners[event]) { self.eventsListeners[event] = []; }\n self.eventsListeners[event][method](handler);\n });\n return self;\n };\n\n Framework7Class.prototype.once = function once (events, handler, priority) {\n var self = this;\n if (typeof handler !== 'function') { return self; }\n function onceHandler() {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n handler.apply(self, args);\n self.off(events, onceHandler);\n }\n return self.on(events, onceHandler, priority);\n };\n\n Framework7Class.prototype.off = function off (events, handler) {\n var self = this;\n if (!self.eventsListeners) { return self; }\n events.split(' ').forEach(function (event) {\n if (typeof handler === 'undefined') {\n self.eventsListeners[event] = [];\n } else if (self.eventsListeners[event]) {\n self.eventsListeners[event].forEach(function (eventHandler, index) {\n if (eventHandler === handler) {\n self.eventsListeners[event].splice(index, 1);\n }\n });\n }\n });\n return self;\n };\n\n Framework7Class.prototype.emit = function emit () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var self = this;\n if (!self.eventsListeners) { return self; }\n var events;\n var data;\n var context;\n var 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 var eventsArray = Array.isArray(events) ? events : events.split(' ');\n var localEvents = eventsArray.map(function (eventName) { return eventName.replace('local::', ''); });\n var parentEvents = eventsArray.filter(function (eventName) { return eventName.indexOf('local::') < 0; });\n\n localEvents.forEach(function (event) {\n if (self.eventsListeners && self.eventsListeners[event]) {\n var handlers = [];\n self.eventsListeners[event].forEach(function (eventHandler) {\n handlers.push(eventHandler);\n });\n handlers.forEach(function (eventHandler) {\n eventHandler.apply(context, data);\n });\n }\n });\n if (eventsParents && eventsParents.length > 0) {\n eventsParents.forEach(function (eventsParent) {\n eventsParent.emit.apply(eventsParent, [ parentEvents ].concat( data ));\n });\n }\n return self;\n };\n\n // eslint-disable-next-line\n Framework7Class.prototype.useModuleParams = function useModuleParams (module, instanceParams) {\n if (module.params) {\n var originalParams = {};\n Object.keys(module.params).forEach(function (paramKey) {\n if (typeof instanceParams[paramKey] === 'undefined') { return; }\n originalParams[paramKey] = Utils.extend({}, instanceParams[paramKey]);\n });\n Utils.extend(instanceParams, module.params);\n Object.keys(originalParams).forEach(function (paramKey) {\n Utils.extend(instanceParams[paramKey], originalParams[paramKey]);\n });\n }\n };\n\n Framework7Class.prototype.useModulesParams = function useModulesParams (instanceParams) {\n var instance = this;\n if (!instance.modules) { return; }\n Object.keys(instance.modules).forEach(function (moduleName) {\n var module = instance.modules[moduleName];\n // Extend params\n if (module.params) {\n Utils.extend(instanceParams, module.params);\n }\n });\n };\n\n Framework7Class.prototype.useModule = function useModule (moduleName, moduleParams) {\n if ( moduleName === void 0 ) moduleName = '';\n if ( moduleParams === void 0 ) moduleParams = {};\n\n var instance = this;\n if (!instance.modules) { return; }\n var 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(function (modulePropName) {\n var 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(function (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(function (vnodeId) {\n Object.keys(module.vnode[vnodeId]).forEach(function (hookName) {\n var 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 Framework7Class.prototype.useModules = function useModules (modulesParams) {\n if ( modulesParams === void 0 ) modulesParams = {};\n\n var instance = this;\n if (!instance.modules) { return; }\n Object.keys(instance.modules).forEach(function (moduleName) {\n var moduleParams = modulesParams[moduleName] || {};\n instance.useModule(moduleName, moduleParams);\n });\n };\n\n staticAccessors$1.components.set = function (components) {\n var Class = this;\n if (!Class.use) { return; }\n Class.use(components);\n };\n\n Framework7Class.installModule = function installModule (module) {\n var params = [], len = arguments.length - 1;\n while ( len-- > 0 ) params[ len ] = arguments[ len + 1 ];\n\n var Class = this;\n if (!Class.prototype.modules) { Class.prototype.modules = {}; }\n var name = module.name || (((Object.keys(Class.prototype.modules).length) + \"_\" + (Utils.now())));\n Class.prototype.modules[name] = module;\n // Prototype\n if (module.proto) {\n Object.keys(module.proto).forEach(function (key) {\n Class.prototype[key] = module.proto[key];\n });\n }\n // Class\n if (module.static) {\n Object.keys(module.static).forEach(function (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 Framework7Class.use = function use (module) {\n var params = [], len = arguments.length - 1;\n while ( len-- > 0 ) params[ len ] = arguments[ len + 1 ];\n\n var Class = this;\n if (Array.isArray(module)) {\n module.forEach(function (m) { return Class.installModule(m); });\n return Class;\n }\n return Class.installModule.apply(Class, [ module ].concat( params ));\n };\n\n Object.defineProperties( Framework7Class, staticAccessors$1 );\n\n function ConstructorMethods (parameters) {\n if ( parameters === void 0 ) parameters = {};\n\n var defaultSelector = parameters.defaultSelector;\n var constructor = parameters.constructor;\n var domProp = parameters.domProp;\n var app = parameters.app;\n var addMethods = parameters.addMethods;\n var methods = {\n create: function create() {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n if (app) { return new (Function.prototype.bind.apply( constructor, [ null ].concat( [app], args) )); }\n return new (Function.prototype.bind.apply( constructor, [ null ].concat( args) ));\n },\n get: function get(el) {\n if ( el === void 0 ) el = defaultSelector;\n\n if (el instanceof constructor) { return el; }\n var $el = $(el);\n if ($el.length === 0) { return undefined; }\n return $el[0][domProp];\n },\n destroy: function destroy(el) {\n var 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(function (methodName) {\n methods[methodName] = function (el) {\n if ( el === void 0 ) el = defaultSelector;\n var args = [], len = arguments.length - 1;\n while ( len-- > 0 ) args[ len ] = arguments[ len + 1 ];\n\n var instance = methods.get(el);\n if (instance && instance[methodName]) { return instance[methodName].apply(instance, args); }\n return undefined;\n };\n });\n }\n return methods;\n }\n\n function ModalMethods (parameters) {\n if ( parameters === void 0 ) parameters = {};\n\n var defaultSelector = parameters.defaultSelector;\n var constructor = parameters.constructor;\n var app = parameters.app;\n var methods = Utils.extend(\n ConstructorMethods({\n defaultSelector: defaultSelector,\n constructor: constructor,\n app: app,\n domProp: 'f7Modal',\n }),\n {\n open: function open(el, animate) {\n var $el = $(el);\n var instance = $el[0].f7Modal;\n if (!instance) { instance = new constructor(app, { el: $el }); }\n return instance.open(animate);\n },\n close: function close(el, animate) {\n if ( el === void 0 ) el = defaultSelector;\n\n var $el = $(el);\n if ($el.length === 0) { return undefined; }\n var instance = $el[0].f7Modal;\n if (!instance) { instance = new constructor(app, { el: $el }); }\n return instance.close(animate);\n },\n }\n );\n return methods;\n }\n\n var fetchedModules = [];\n function loadModule(moduleToLoad) {\n var Framework7 = this;\n return new Promise(function (resolve, reject) {\n var app = Framework7.instance;\n var modulePath;\n var moduleObj;\n var 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 var matchNamePattern = moduleToLoad.match(/([a-z0-9-]*)/i);\n if (moduleToLoad.indexOf('.') < 0 && matchNamePattern && matchNamePattern[0].length === moduleToLoad.length) {\n if (!app || (app && !app.params.lazyModulesPath)) {\n reject(new Error('Framework7: \"lazyModulesPath\" app parameter must be specified to fetch module by name'));\n return;\n }\n modulePath = (app.params.lazyModulesPath) + \"/\" + moduleToLoad + \".js\";\n } else {\n modulePath = moduleToLoad;\n }\n } else if (typeof moduleToLoad === 'function') {\n moduleFunc = moduleToLoad;\n } else {\n // considering F7-Plugin object\n moduleObj = moduleToLoad;\n }\n\n if (moduleFunc) {\n var module = moduleFunc(Framework7, false);\n if (!module) {\n reject(new Error('Framework7: Can\\'t find Framework7 component in specified component function'));\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 var module$1 = moduleObj;\n if (!module$1) {\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$1.name]) {\n resolve();\n return;\n }\n // Install It\n install(module$1);\n\n resolve();\n }\n if (modulePath) {\n if (fetchedModules.indexOf(modulePath) >= 0) {\n resolve();\n return;\n }\n fetchedModules.push(modulePath);\n var scriptLoad = new Promise(function (resolveScript, rejectScript) {\n Framework7.request.get(\n modulePath,\n function (scriptContent) {\n var id = Utils.id();\n var callbackLoadName = \"f7_component_loader_callback_\" + id;\n\n var scriptEl = document.createElement('script');\n scriptEl.innerHTML = \"window.\" + callbackLoadName + \" = function (Framework7, Framework7AutoInstallComponent) {return \" + (scriptContent.trim()) + \"}\";\n $('head').append(scriptEl);\n\n var componentLoader = window[callbackLoadName];\n delete window[callbackLoadName];\n $(scriptEl).remove();\n\n var module = componentLoader(Framework7, false);\n\n if (!module) {\n rejectScript(new Error((\"Framework7: Can't find Framework7 component in \" + modulePath + \" file\")));\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 function (xhr, status) {\n rejectScript(xhr, status);\n }\n );\n });\n var styleLoad = new Promise(function (resolveStyle) {\n Framework7.request.get(\n modulePath.replace('.js', app.rtl ? '.rtl.css' : '.css'),\n function (styleContent) {\n var styleEl = document.createElement('style');\n styleEl.innerHTML = styleContent;\n $('head').append(styleEl);\n\n resolveStyle();\n },\n function () {\n resolveStyle();\n }\n );\n });\n\n Promise.all([scriptLoad, styleLoad]).then(function () {\n resolve();\n }).catch(function (err) {\n reject(err);\n });\n }\n });\n }\n\n var Framework7 = /*@__PURE__*/(function (Framework7Class$$1) {\n function Framework7(params) {\n Framework7Class$$1.call(this, params);\n\n var passedParams = Utils.extend({}, params);\n\n // App Instance\n var app = this;\n\n Framework7.instance = app;\n\n // Default\n var defaults = {\n version: '1.0.0',\n id: 'io.framework7.testapp',\n root: 'body',\n theme: 'auto',\n language: win.navigator.language,\n routes: [],\n name: 'Framework7',\n lazyModulesPath: null,\n initOnDeviceReady: true,\n init: true,\n };\n\n // Extend defaults with modules params\n app.useModulesParams(defaults);\n\n // Extend defaults with passed params\n app.params = Utils.extend(defaults, params);\n\n var $rootEl = $(app.params.root);\n\n Utils.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 // Root\n root: $rootEl,\n // RTL\n rtl: $rootEl.css('direction') === 'rtl',\n // Theme\n theme: (function getTheme() {\n if (app.params.theme === 'auto') {\n return Device.ios ? 'ios' : 'md';\n }\n return app.params.theme;\n }()),\n // Initially passed parameters\n passedParams: passedParams,\n });\n\n // Save Root\n if (app.root && app.root[0]) {\n app.root[0].f7 = app;\n }\n\n // Install Modules\n app.useModules();\n\n // Init Data & Methods\n app.initData();\n\n // Init\n if (app.params.init) {\n if (Device.cordova && app.params.initOnDeviceReady) {\n $(doc).on('deviceready', function () {\n app.init();\n });\n } else {\n app.init();\n }\n }\n // Return app instance\n return app;\n }\n\n if ( Framework7Class$$1 ) Framework7.__proto__ = Framework7Class$$1;\n Framework7.prototype = Object.create( Framework7Class$$1 && Framework7Class$$1.prototype );\n Framework7.prototype.constructor = Framework7;\n\n var prototypeAccessors = { $: { configurable: true },t7: { configurable: true } };\n var staticAccessors = { Dom7: { configurable: true },$: { configurable: true },Template7: { configurable: true },Class: { configurable: true } };\n\n Framework7.prototype.initData = function initData () {\n var app = this;\n\n // Data\n app.data = {};\n if (app.params.data && typeof app.params.data === 'function') {\n Utils.extend(app.data, app.params.data.bind(app)());\n } else if (app.params.data) {\n Utils.extend(app.data, app.params.data);\n }\n // Methods\n app.methods = {};\n if (app.params.methods) {\n Object.keys(app.params.methods).forEach(function (methodName) {\n if (typeof app.params.methods[methodName] === 'function') {\n app.methods[methodName] = app.params.methods[methodName].bind(app);\n } else {\n app.methods[methodName] = app.params.methods[methodName];\n }\n });\n }\n };\n\n Framework7.prototype.init = function init () {\n var app = this;\n if (app.initialized) { return app; }\n\n app.root.addClass('framework7-initializing');\n\n // RTL attr\n if (app.rtl) {\n $('html').attr('dir', 'rtl');\n }\n\n // Root class\n app.root.addClass('framework7-root');\n\n // Theme class\n $('html').removeClass('ios md').addClass(app.theme);\n\n // Init class\n Utils.nextFrame(function () {\n app.root.removeClass('framework7-initializing');\n });\n // Emit, init other modules\n app.initialized = true;\n app.emit('init');\n\n return app;\n };\n\n // eslint-disable-next-line\n Framework7.prototype.loadModule = function loadModule$$1 () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return Framework7.loadModule.apply(Framework7, args);\n };\n\n // eslint-disable-next-line\n Framework7.prototype.loadModules = function loadModules () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return Framework7.loadModules.apply(Framework7, args);\n };\n\n Framework7.prototype.getVnodeHooks = function getVnodeHooks (hook, id) {\n var app = this;\n if (!app.vnodeHooks || !app.vnodeHooks[hook]) { return []; }\n return app.vnodeHooks[hook][id] || [];\n };\n\n // eslint-disable-next-line\n prototypeAccessors.$.get = function () {\n return $;\n };\n // eslint-disable-next-line\n prototypeAccessors.t7.get = function () {\n return Template7;\n };\n\n staticAccessors.Dom7.get = function () {\n return $;\n };\n\n staticAccessors.$.get = function () {\n return $;\n };\n\n staticAccessors.Template7.get = function () {\n return Template7;\n };\n\n staticAccessors.Class.get = function () {\n return Framework7Class$$1;\n };\n\n Object.defineProperties( Framework7.prototype, prototypeAccessors );\n Object.defineProperties( Framework7, staticAccessors );\n\n return Framework7;\n }(Framework7Class));\n\n Framework7.ModalMethods = ModalMethods;\n Framework7.ConstructorMethods = ConstructorMethods;\n\n Framework7.loadModule = loadModule;\n Framework7.loadModules = function loadModules(modules) {\n return Promise.all(modules.map(function (module) { return Framework7.loadModule(module); }));\n };\n\n var DeviceModule = {\n name: 'device',\n proto: {\n device: Device,\n },\n static: {\n device: Device,\n },\n on: {\n init: function init() {\n var classNames = [];\n var html = doc.querySelector('html');\n if (!html) { return; }\n // Pixel Ratio\n classNames.push((\"device-pixel-ratio-\" + (Math.floor(Device.pixelRatio))));\n if (Device.pixelRatio >= 2) {\n classNames.push('device-retina');\n }\n // OS classes\n if (Device.os) {\n classNames.push(\n (\"device-\" + (Device.os)),\n (\"device-\" + (Device.os) + \"-\" + (Device.osVersion.split('.')[0])),\n (\"device-\" + (Device.os) + \"-\" + (Device.osVersion.replace(/\\./g, '-')))\n );\n if (Device.os === 'ios') {\n var major = parseInt(Device.osVersion.split('.')[0], 10);\n for (var i = major - 1; i >= 6; i -= 1) {\n classNames.push((\"device-ios-gt-\" + i));\n }\n if (Device.iphoneX) {\n classNames.push('device-iphone-x');\n }\n }\n } else if (Device.desktop) {\n classNames.push('device-desktop');\n if (Device.macos) { classNames.push('device-macos'); }\n else if (Device.windows) { classNames.push('device-windows'); }\n }\n if (Device.cordova || Device.phonegap) {\n classNames.push('device-cordova');\n }\n\n // Add html classes\n classNames.forEach(function (className) {\n html.classList.add(className);\n });\n },\n },\n };\n\n var Support = (function Support() {\n var positionSticky = (function supportPositionSticky() {\n var support = false;\n var div = doc.createElement('div');\n ('sticky -webkit-sticky -moz-sticky').split(' ').forEach(function (prop) {\n if (support) { return; }\n div.style.position = prop;\n if (div.style.position === prop) {\n support = true;\n }\n });\n return support;\n }());\n\n var testDiv = doc.createElement('div');\n\n return {\n positionSticky: positionSticky,\n touch: (function checkTouch() {\n return !!((win.navigator.maxTouchPoints > 0) || ('ontouchstart' in win) || (win.DocumentTouch && doc instanceof win.DocumentTouch));\n }()),\n\n pointerEvents: !!(win.navigator.pointerEnabled || win.PointerEvent || ('maxTouchPoints' in win.navigator)),\n prefixedPointerEvents: !!win.navigator.msPointerEnabled,\n\n transition: (function checkTransition() {\n var style = testDiv.style;\n return ('transition' in style || 'webkitTransition' in style || 'MozTransition' in style);\n }()),\n transforms3d: (win.Modernizr && win.Modernizr.csstransforms3d === true) || (function checkTransforms3d() {\n var style = testDiv.style;\n return ('webkitPerspective' in style || 'MozPerspective' in style || 'OPerspective' in style || 'MsPerspective' in style || 'perspective' in style);\n }()),\n\n flexbox: (function checkFlexbox() {\n var div = doc.createElement('div').style;\n var styles = ('alignItems webkitAlignItems webkitBoxAlign msFlexAlign mozBoxAlign webkitFlexDirection msFlexDirection mozBoxDirection mozBoxOrient webkitBoxDirection webkitBoxOrient').split(' ');\n for (var i = 0; i < styles.length; i += 1) {\n if (styles[i] in div) { return true; }\n }\n return false;\n }()),\n\n observer: (function checkObserver() {\n return ('MutationObserver' in win || 'WebkitMutationObserver' in win);\n }()),\n\n passiveListener: (function checkPassiveListener() {\n var supportsPassive = false;\n try {\n var opts = Object.defineProperty({}, 'passive', {\n // eslint-disable-next-line\n get: function get() {\n supportsPassive = true;\n },\n });\n win.addEventListener('testPassiveListener', null, opts);\n } catch (e) {\n // No support\n }\n return supportsPassive;\n }()),\n\n gestures: (function checkGestures() {\n return 'ongesturestart' in win;\n }()),\n };\n }());\n\n var SupportModule = {\n name: 'support',\n proto: {\n support: Support,\n },\n static: {\n support: Support,\n },\n on: {\n init: function init() {\n var html = doc.querySelector('html');\n if (!html) { return; }\n var classNames = [];\n if (Support.positionSticky) {\n classNames.push('support-position-sticky');\n }\n // Add html classes\n classNames.forEach(function (className) {\n html.classList.add(className);\n });\n },\n },\n };\n\n var UtilsModule = {\n name: 'utils',\n proto: {\n utils: Utils,\n },\n static: {\n utils: Utils,\n },\n };\n\n var ResizeModule = {\n name: 'resize',\n instance: {\n getSize: function getSize() {\n var app = this;\n if (!app.root[0]) { return { width: 0, height: 0, left: 0, top: 0 }; }\n var offset = app.root.offset();\n var ref = [app.root[0].offsetWidth, app.root[0].offsetHeight, offset.left, offset.top];\n var width = ref[0];\n var height = ref[1];\n var left = ref[2];\n var top = ref[3];\n app.width = width;\n app.height = height;\n app.left = left;\n app.top = top;\n return { width: width, height: height, left: left, top: top };\n },\n },\n on: {\n init: function init() {\n var app = this;\n\n // Get Size\n app.getSize();\n\n // Emit resize\n win.addEventListener('resize', function () {\n app.emit('resize');\n }, false);\n\n // Emit orientationchange\n win.addEventListener('orientationchange', function () {\n app.emit('orientationchange');\n });\n },\n orientationchange: function orientationchange() {\n var app = this;\n if (app.device && app.device.minimalUi) {\n if (win.orientation === 90 || win.orientation === -90) {\n doc.body.scrollTop = 0;\n }\n }\n // Fix iPad weird body scroll\n if (app.device.ipad) {\n doc.body.scrollLeft = 0;\n setTimeout(function () {\n doc.body.scrollLeft = 0;\n }, 0);\n }\n },\n resize: function resize() {\n var app = this;\n app.getSize();\n },\n },\n };\n\n var globals = {};\n var jsonpRequests = 0;\n\n function Request(requestOptions) {\n var globalsNoCallbacks = Utils.extend({}, globals);\n ('beforeCreate beforeOpen beforeSend error complete success statusCode').split(' ').forEach(function (callbackName) {\n delete globalsNoCallbacks[callbackName];\n });\n var defaults = Utils.extend({\n url: win.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 }, globalsNoCallbacks);\n\n var options = Utils.extend({}, defaults, requestOptions);\n var proceedRequest;\n\n // Function to run XHR callbacks and events\n function fireCallback(callbackName) {\n var data = [], len = arguments.length - 1;\n while ( len-- > 0 ) data[ len ] = arguments[ len + 1 ];\n\n /*\n Callbacks:\n beforeCreate (options),\n beforeOpen (xhr, options),\n beforeSend (xhr, options),\n error (xhr, status),\n complete (xhr, stautus),\n success (response, status, xhr),\n statusCode ()\n */\n var globalCallbackValue;\n var optionCallbackValue;\n if (globals[callbackName]) {\n globalCallbackValue = globals[callbackName].apply(globals, data);\n }\n if (options[callbackName]) {\n optionCallbackValue = options[callbackName].apply(options, data);\n }\n if (typeof globalCallbackValue !== 'boolean') { globalCallbackValue = true; }\n if (typeof optionCallbackValue !== 'boolean') { optionCallbackValue = true; }\n return (globalCallbackValue && optionCallbackValue);\n }\n\n // Before create callback\n proceedRequest = fireCallback('beforeCreate', options);\n if (proceedRequest === false) { return undefined; }\n\n // For jQuery guys\n if (options.type) { options.method = options.type; }\n\n // Parameters Prefix\n var paramsPrefix = options.url.indexOf('?') >= 0 ? '&' : '?';\n\n // UC method\n var method = options.method.toUpperCase();\n\n // Data to modify GET URL\n if ((method === 'GET' || method === 'HEAD' || method === 'OPTIONS' || method === 'DELETE') && options.data) {\n var 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 = Utils.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 var callbackName = \"f7jsonp_\" + (Date.now() + ((jsonpRequests += 1)));\n var abortTimeout;\n var callbackSplit = options.url.split('callback=');\n var requestUrl = (callbackSplit[0]) + \"callback=\" + callbackName;\n if (callbackSplit[1].indexOf('&') >= 0) {\n var addVars = callbackSplit[1].split('&').filter(function (el) { return el.indexOf('=') > 0; }).join('&');\n if (addVars.length > 0) { requestUrl += \"&\" + addVars; }\n }\n\n // Create script\n var script = doc.createElement('script');\n script.type = 'text/javascript';\n script.onerror = function onerror() {\n clearTimeout(abortTimeout);\n fireCallback('error', null, 'scripterror');\n fireCallback('complete', null, 'scripterror');\n };\n script.src = requestUrl;\n\n // Handler\n win[callbackName] = function jsonpCallback(data) {\n clearTimeout(abortTimeout);\n fireCallback('success', data);\n script.parentNode.removeChild(script);\n script = null;\n delete win[callbackName];\n };\n doc.querySelector('head').appendChild(script);\n\n if (options.timeout > 0) {\n abortTimeout = setTimeout(function () {\n script.parentNode.removeChild(script);\n script = null;\n fireCallback('error', null, 'timeout');\n }, options.timeout);\n }\n\n return undefined;\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 var xhr = new XMLHttpRequest();\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) { return xhr; }\n\n // Open XHR\n xhr.open(method, options.url, options.async, options.user, options.password);\n\n // Create POST Data\n var postData = null;\n\n if ((method === 'POST' || method === 'PUT' || method === 'PATCH') && options.data) {\n if (options.processData) {\n var 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 var 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 var data$1 = Utils.serializeObject(options.data);\n if (options.contentType === 'multipart/form-data') {\n data$1 = data$1.split('&');\n var newData = [];\n for (var i = 0; i < data$1.length; i += 1) {\n newData.push((\"Content-Disposition: form-data; name=\\\"\" + (data$1[i].split('=')[0]) + \"\\\"\\r\\n\\r\\n\" + (data$1[i].split('=')[1]) + \"\\r\\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$1;\n }\n }\n } else {\n postData = options.data;\n xhr.setRequestHeader('Content-Type', options.contentType);\n }\n }\n\n // Additional headers\n if (options.headers) {\n Object.keys(options.headers).forEach(function (headerName) {\n xhr.setRequestHeader(headerName, options.headers[headerName]);\n });\n }\n\n // Check for crossDomain\n if (typeof options.crossDomain === 'undefined') {\n // eslint-disable-next-line\n options.crossDomain = /^([\\w-]+:)?\\/\\/([^\\/]+)/.test(options.url) && RegExp.$2 !== win.location.host;\n }\n\n if (!options.crossDomain) {\n xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');\n }\n\n if (options.xhrFields) {\n Utils.extend(xhr, options.xhrFields);\n }\n\n var xhrTimeout;\n\n // Handle XHR\n xhr.onload = function onload() {\n if (xhrTimeout) { clearTimeout(xhrTimeout); }\n if ((xhr.status >= 200 && xhr.status < 300) || xhr.status === 0) {\n var responseData;\n if (options.dataType === 'json') {\n var 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 } else {\n fireCallback('error', xhr, 'parseerror');\n }\n } else {\n responseData = xhr.responseType === 'text' || xhr.responseType === '' ? xhr.responseText : xhr.response;\n fireCallback('success', responseData, xhr.status, xhr);\n }\n } else {\n fireCallback('error', xhr, xhr.status);\n }\n if (options.statusCode) {\n if (globals.statusCode && globals.statusCode[xhr.status]) { 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 if (xhrTimeout) { clearTimeout(xhrTimeout); }\n fireCallback('error', xhr, xhr.status);\n fireCallback('complete', xhr, 'error');\n };\n\n // Timeout\n if (options.timeout > 0) {\n xhr.onabort = function onabort() {\n if (xhrTimeout) { clearTimeout(xhrTimeout); }\n };\n xhrTimeout = setTimeout(function () {\n xhr.abort();\n fireCallback('error', xhr, 'timeout');\n fireCallback('complete', xhr, 'timeout');\n }, options.timeout);\n }\n\n // Ajax start callback\n proceedRequest = fireCallback('beforeSend', xhr, options);\n if (proceedRequest === false) { return xhr; }\n\n // Send XHR\n xhr.send(postData);\n\n // Return XHR object\n return xhr;\n }\n function RequestShortcut(method) {\n var assign, assign$1;\n\n var args = [], len = arguments.length - 1;\n while ( len-- > 0 ) args[ len ] = arguments[ len + 1 ];\n var ref = [];\n var url = ref[0];\n var data = ref[1];\n var success = ref[2];\n var error = ref[3];\n var dataType = ref[4];\n if (typeof args[1] === 'function') {\n (assign = args, url = assign[0], success = assign[1], error = assign[2], dataType = assign[3]);\n } else {\n (assign$1 = args, url = assign$1[0], data = assign$1[1], success = assign$1[2], error = assign$1[3], dataType = assign$1[4]);\n }\n [success, error].forEach(function (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 var requestOptions = {\n url: url,\n method: method === 'post' || method === 'postJSON' ? 'POST' : 'GET',\n data: data,\n success: success,\n error: error,\n dataType: dataType,\n };\n if (method === 'postJSON') {\n Utils.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 Request.get = function get() {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return RequestShortcut.apply(void 0, [ 'get' ].concat( args ));\n };\n Request.post = function post() {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return RequestShortcut.apply(void 0, [ 'post' ].concat( args ));\n };\n Request.json = function json() {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return RequestShortcut.apply(void 0, [ 'json' ].concat( args ));\n };\n Request.getJSON = Request.json;\n Request.postJSON = function postJSON() {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return RequestShortcut.apply(void 0, [ 'postJSON' ].concat( args ));\n };\n Request.setup = function setup(options) {\n if (options.type && !options.method) {\n Utils.extend(options, { method: options.type });\n }\n Utils.extend(globals, options);\n };\n\n /* eslint no-param-reassign: \"off\" */\n\n var RequestModule = {\n name: 'request',\n proto: {\n request: Request,\n },\n static: {\n request: Request,\n },\n };\n\n function initTouch() {\n var app = this;\n var params = app.params.touch;\n var useRipple = app.theme === 'md' && params.materialRipple;\n\n if (Device.ios && Device.webView) {\n // Strange hack required for iOS 8 webview to work on inputs\n win.addEventListener('touchstart', function () {});\n }\n\n var touchStartX;\n var touchStartY;\n var touchStartTime;\n var targetElement;\n var trackClick;\n var activeSelection;\n var scrollParent;\n var lastClickTime;\n var isMoved;\n var tapHoldFired;\n var tapHoldTimeout;\n\n var activableElement;\n var activeTimeout;\n\n var needsFastClick;\n var needsFastClickTimeOut;\n\n var rippleWave;\n var rippleTarget;\n var rippleTimeout;\n\n function findActivableElement(el) {\n var target = $(el);\n var parents = target.parents(params.activeStateElements);\n var 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 return activable || target;\n }\n\n function isInsideScrollableView(el) {\n var pageContent = el.parents('.page-content, .panel');\n\n if (pageContent.length === 0) {\n return false;\n }\n\n // This event handler covers the \"tap to stop scrolling\".\n if (pageContent.prop('scrollHandlerSet') !== 'yes') {\n pageContent.on('scroll', function () {\n clearTimeout(activeTimeout);\n clearTimeout(rippleTimeout);\n });\n pageContent.prop('scrollHandlerSet', 'yes');\n }\n\n return true;\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 function isFormElement(el) {\n var nodes = ('input select textarea label').split(' ');\n if (el.nodeName && nodes.indexOf(el.nodeName.toLowerCase()) >= 0) { return true; }\n return false;\n }\n function androidNeedsBlur(el) {\n var noBlur = ('button input textarea select').split(' ');\n if (doc.activeElement && el !== doc.activeElement && doc.activeElement !== doc.body) {\n if (noBlur.indexOf(el.nodeName.toLowerCase()) >= 0) {\n return false;\n }\n return true;\n }\n return false;\n }\n function targetNeedsFastClick(el) {\n /*\n if (\n Device.ios\n &&\n (\n Device.osVersion.split('.')[0] > 9\n ||\n (Device.osVersion.split('.')[0] * 1 === 9 && Device.osVersion.split('.')[1] >= 1)\n )\n ) {\n return false;\n }\n */\n var $el = $(el);\n if (el.nodeName.toLowerCase() === 'input' && (el.type === 'file' || el.type === 'range')) { return false; }\n if (el.nodeName.toLowerCase() === 'select' && Device.android) { return false; }\n if ($el.hasClass('no-fastclick') || $el.parents('.no-fastclick').length > 0) { return false; }\n if (params.fastClicksExclude && $el.closest(params.fastClicksExclude).length > 0) { return false; }\n\n return true;\n }\n function targetNeedsFocus(el) {\n if (doc.activeElement === el) {\n return false;\n }\n var tag = el.nodeName.toLowerCase();\n var skipInputs = ('button checkbox file image radio submit').split(' ');\n if (el.disabled || el.readOnly) { return false; }\n if (tag === 'textarea') { return true; }\n if (tag === 'select') {\n if (Device.android) { return false; }\n return true;\n }\n if (tag === 'input' && skipInputs.indexOf(el.type) < 0) { return true; }\n return false;\n }\n function targetNeedsPrevent(el) {\n var $el = $(el);\n var prevent = true;\n if ($el.is('label') || $el.parents('label').length > 0) {\n if (Device.android) {\n prevent = false;\n } else if (Device.ios && $el.is('input')) {\n prevent = true;\n } else { prevent = false; }\n }\n return prevent;\n }\n\n // Ripple handlers\n function findRippleElement(el) {\n var rippleElements = params.materialRippleElements;\n var $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 var 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($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 if (!isInsideScrollableView(rippleTarget)) {\n createRipple(rippleTarget, touchStartX, touchStartY);\n } else {\n rippleTimeout = setTimeout(function () {\n createRipple(rippleTarget, touchStartX, touchStartY);\n }, 80);\n }\n }\n function rippleTouchMove() {\n clearTimeout(rippleTimeout);\n removeRipple();\n }\n function rippleTouchEnd() {\n if (rippleWave) {\n removeRipple();\n } else if (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 findActivableElement(e.target).addClass('active-state');\n if ('which' in e && e.which === 3) {\n setTimeout(function () {\n $('.active-state').removeClass('active-state');\n }, 0);\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 $('.active-state').removeClass('active-state');\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 // Send Click\n function sendClick(e) {\n var touch = e.changedTouches[0];\n var evt = doc.createEvent('MouseEvents');\n var eventType = 'click';\n if (Device.android && targetElement.nodeName.toLowerCase() === 'select') {\n eventType = 'mousedown';\n }\n evt.initMouseEvent(eventType, true, true, win, 1, touch.screenX, touch.screenY, touch.clientX, touch.clientY, false, false, false, false, 0, null);\n evt.forwardedTouchEvent = true;\n\n if (app.device.ios && win.navigator.standalone) {\n // Fix the issue happens in iOS home screen apps where the wrong element is selected during a momentum scroll.\n // Upon tapping, we give the scrolling time to stop, then we grab the element based where the user tapped.\n setTimeout(function () {\n targetElement = doc.elementFromPoint(e.changedTouches[0].clientX, e.changedTouches[0].clientY);\n targetElement.dispatchEvent(evt);\n }, 10);\n } else {\n targetElement.dispatchEvent(evt);\n }\n }\n\n // Touch Handlers\n function handleTouchStart(e) {\n var this$1 = this;\n\n isMoved = false;\n tapHoldFired = false;\n if (e.targetTouches.length > 1) {\n if (activableElement) { removeActive(); }\n return true;\n }\n if (e.touches.length > 1 && activableElement) {\n removeActive();\n }\n if (params.tapHold) {\n if (tapHoldTimeout) { clearTimeout(tapHoldTimeout); }\n tapHoldTimeout = setTimeout(function () {\n if (e && e.touches && e.touches.length > 1) { return; }\n tapHoldFired = true;\n e.preventDefault();\n $(e.target).trigger('taphold');\n }, params.tapHoldDelay);\n }\n if (needsFastClickTimeOut) { clearTimeout(needsFastClickTimeOut); }\n needsFastClick = targetNeedsFastClick(e.target);\n\n if (!needsFastClick) {\n trackClick = false;\n return true;\n }\n if (Device.ios || (Device.android && 'getSelection' in win)) {\n var selection = win.getSelection();\n if (\n selection.rangeCount\n && selection.focusNode !== doc.body\n && (!selection.isCollapsed || doc.activeElement === selection.focusNode)\n ) {\n activeSelection = true;\n return true;\n }\n\n activeSelection = false;\n }\n if (Device.android) {\n if (androidNeedsBlur(e.target)) {\n doc.activeElement.blur();\n }\n }\n\n trackClick = true;\n targetElement = e.target;\n touchStartTime = (new Date()).getTime();\n touchStartX = e.targetTouches[0].pageX;\n touchStartY = e.targetTouches[0].pageY;\n\n // Detect scroll parent\n if (Device.ios) {\n scrollParent = undefined;\n $(targetElement).parents().each(function () {\n var parent = this$1;\n if (parent.scrollHeight > parent.offsetHeight && !scrollParent) {\n scrollParent = parent;\n scrollParent.f7ScrollTop = scrollParent.scrollTop;\n }\n });\n }\n if ((touchStartTime - lastClickTime) < params.fastClicksDelayBetweenClicks) {\n e.preventDefault();\n }\n\n if (params.activeState) {\n activableElement = findActivableElement(targetElement);\n // If it's inside a scrollable view, we don't trigger active-state yet,\n // because it can be a scroll instead. Based on the link:\n // http://labnote.beedesk.com/click-scroll-and-pseudo-active-on-mobile-webk\n if (!isInsideScrollableView(activableElement)) {\n addActive();\n } else {\n activeTimeout = setTimeout(addActive, 80);\n }\n }\n if (useRipple) {\n rippleTouchStart(targetElement, touchStartX, touchStartY);\n }\n return true;\n }\n function handleTouchMove(e) {\n if (!trackClick) { return; }\n var distance = params.fastClicksDistanceThreshold;\n if (distance) {\n var pageX = e.targetTouches[0].pageX;\n var pageY = e.targetTouches[0].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 trackClick = false;\n targetElement = null;\n isMoved = true;\n if (params.tapHold) {\n clearTimeout(tapHoldTimeout);\n }\n if (params.activeState) {\n clearTimeout(activeTimeout);\n removeActive();\n }\n if (useRipple) {\n rippleTouchMove();\n }\n }\n }\n function handleTouchEnd(e) {\n clearTimeout(activeTimeout);\n clearTimeout(tapHoldTimeout);\n\n var touchEndTime = (new Date()).getTime();\n\n if (!trackClick) {\n if (!activeSelection && needsFastClick) {\n if (!(Device.android && !e.cancelable) && e.cancelable) {\n e.preventDefault();\n }\n }\n if (params.activeState) { removeActive(); }\n if (useRipple) {\n rippleTouchEnd();\n }\n return true;\n }\n\n if (doc.activeElement === e.target) {\n if (params.activeState) { removeActive(); }\n if (useRipple) {\n rippleTouchEnd();\n }\n return true;\n }\n\n if (!activeSelection) {\n e.preventDefault();\n }\n\n if ((touchEndTime - lastClickTime) < params.fastClicksDelayBetweenClicks) {\n setTimeout(removeActive, 0);\n if (useRipple) {\n rippleTouchEnd();\n }\n return true;\n }\n\n lastClickTime = touchEndTime;\n\n trackClick = false;\n\n if (Device.ios && scrollParent) {\n if (scrollParent.scrollTop !== scrollParent.f7ScrollTop) {\n return false;\n }\n }\n\n // Add active-state here because, in a very fast tap, the timeout didn't\n // have the chance to execute. Removing active-state in a timeout gives\n // the chance to the animation execute.\n if (params.activeState) {\n addActive();\n setTimeout(removeActive, 0);\n }\n // Remove Ripple\n if (useRipple) {\n rippleTouchEnd();\n }\n\n // Trigger focus when required\n if (targetNeedsFocus(targetElement)) {\n if (Device.ios && Device.webView) {\n targetElement.focus();\n return false;\n }\n\n targetElement.focus();\n }\n\n // Blur active elements\n if (doc.activeElement && targetElement !== doc.activeElement && doc.activeElement !== doc.body && targetElement.nodeName.toLowerCase() !== 'label') {\n doc.activeElement.blur();\n }\n\n // Send click\n e.preventDefault();\n if (params.tapHoldPreventClicks && tapHoldFired) {\n return false;\n }\n sendClick(e);\n return false;\n }\n function handleTouchCancel() {\n trackClick = false;\n targetElement = null;\n\n // Remove Active State\n clearTimeout(activeTimeout);\n clearTimeout(tapHoldTimeout);\n if (params.activeState) {\n removeActive();\n }\n\n // Remove Ripple\n if (useRipple) {\n rippleTouchEnd();\n }\n }\n\n function handleClick(e) {\n var allowClick = false;\n if (trackClick) {\n targetElement = null;\n trackClick = false;\n return true;\n }\n if ((e.target.type === 'submit' && e.detail === 0) || e.target.type === 'file') {\n return true;\n }\n if (!targetElement) {\n if (!isFormElement(e.target)) {\n allowClick = true;\n }\n }\n if (!needsFastClick) {\n allowClick = true;\n }\n if (doc.activeElement === targetElement) {\n allowClick = true;\n }\n if (e.forwardedTouchEvent) {\n allowClick = true;\n }\n if (!e.cancelable) {\n allowClick = true;\n }\n if (params.tapHold && params.tapHoldPreventClicks && tapHoldFired) {\n allowClick = false;\n }\n if (!allowClick) {\n e.stopImmediatePropagation();\n e.stopPropagation();\n if (targetElement) {\n if (targetNeedsPrevent(targetElement) || isMoved) {\n e.preventDefault();\n }\n } else {\n e.preventDefault();\n }\n targetElement = null;\n }\n needsFastClickTimeOut = setTimeout(function () {\n needsFastClick = false;\n }, (Device.ios || Device.androidChrome ? 100 : 400));\n\n if (params.tapHold) {\n tapHoldTimeout = setTimeout(function () {\n tapHoldFired = false;\n }, (Device.ios || Device.androidChrome ? 100 : 400));\n }\n\n return allowClick;\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 var passiveListener = Support.passiveListener ? { passive: true } : false;\n var activeListener = Support.passiveListener ? { passive: false } : false;\n\n doc.addEventListener('click', appClick, true);\n\n if (Support.passiveListener) {\n doc.addEventListener(app.touchEvents.start, appTouchStartActive, activeListener);\n doc.addEventListener(app.touchEvents.move, appTouchMoveActive, activeListener);\n doc.addEventListener(app.touchEvents.end, appTouchEndActive, activeListener);\n\n doc.addEventListener(app.touchEvents.start, appTouchStartPassive, passiveListener);\n doc.addEventListener(app.touchEvents.move, appTouchMovePassive, passiveListener);\n doc.addEventListener(app.touchEvents.end, appTouchEndPassive, passiveListener);\n } else {\n doc.addEventListener(app.touchEvents.start, function (e) {\n appTouchStartActive(e);\n appTouchStartPassive(e);\n }, false);\n doc.addEventListener(app.touchEvents.move, function (e) {\n appTouchMoveActive(e);\n appTouchMovePassive(e);\n }, false);\n doc.addEventListener(app.touchEvents.end, function (e) {\n appTouchEndActive(e);\n appTouchEndPassive(e);\n }, false);\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 doc.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 }\n doc.addEventListener('contextmenu', function (e) {\n if (params.disableContextMenu && (Device.ios || Device.android || Device.cordova)) {\n e.preventDefault();\n }\n if (useRipple) {\n if (activableElement) { removeActive(); }\n rippleTouchEnd();\n }\n });\n }\n\n var TouchModule = {\n name: 'touch',\n params: {\n touch: {\n // Fast clicks\n fastClicks: true,\n fastClicksDistanceThreshold: 10,\n fastClicksDelayBetweenClicks: 50,\n fastClicksExclude: '', // CSS selector\n // ContextMenu\n disableContextMenu: true,\n // Tap Hold\n tapHold: false,\n tapHoldDelay: 750,\n tapHoldPreventClicks: true,\n // Active State\n activeState: true,\n activeStateElements: 'a, button, label, span, .actions-button, .stepper-button, .stepper-button-plus, .stepper-button-minus',\n materialRipple: true,\n materialRippleElements: '.ripple, .link, .item-link, .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',\n },\n },\n instance: {\n touchEvents: {\n start: Support.touch ? 'touchstart' : 'mousedown',\n move: Support.touch ? 'touchmove' : 'mousemove',\n end: Support.touch ? 'touchend' : 'mouseup',\n },\n },\n on: {\n init: initTouch,\n },\n };\n\n /**\n * Expose `pathToRegexp`.\n */\n var pathToRegexp_1 = pathToRegexp;\n var parse_1 = parse;\n var compile_1 = compile;\n var tokensToFunction_1 = tokensToFunction;\n var tokensToRegExp_1 = tokensToRegExp;\n\n /**\n * Default configs.\n */\n var DEFAULT_DELIMITER = '/';\n\n /**\n * The main path matching regexp utility.\n *\n * @type {RegExp}\n */\n var PATH_REGEXP = new RegExp([\n // Match escaped characters that would otherwise appear in future matches.\n // This allows the user to escape special characters that won't transform.\n '(\\\\\\\\.)',\n // Match Express-style parameters and un-named parameters with a prefix\n // and optional suffixes. Matches appear as:\n //\n // \":test(\\\\d+)?\" => [\"test\", \"\\d+\", undefined, \"?\"]\n // \"(\\\\d+)\" => [undefined, undefined, \"\\d+\", undefined]\n '(?:\\\\:(\\\\w+)(?:\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))?|\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))([+*?])?'\n ].join('|'), 'g');\n\n /**\n * Parse a string for the raw tokens.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!Array}\n */\n function parse (str, options) {\n var tokens = [];\n var key = 0;\n var index = 0;\n var path = '';\n var defaultDelimiter = (options && options.delimiter) || DEFAULT_DELIMITER;\n var whitelist = (options && options.whitelist) || undefined;\n var pathEscaped = false;\n var res;\n\n while ((res = PATH_REGEXP.exec(str)) !== null) {\n var m = res[0];\n var escaped = res[1];\n var offset = res.index;\n path += str.slice(index, offset);\n index = offset + m.length;\n\n // Ignore already escaped sequences.\n if (escaped) {\n path += escaped[1];\n pathEscaped = true;\n continue\n }\n\n var prev = '';\n var name = res[2];\n var capture = res[3];\n var group = res[4];\n var modifier = res[5];\n\n if (!pathEscaped && path.length) {\n var k = path.length - 1;\n var c = path[k];\n var matches = whitelist ? whitelist.indexOf(c) > -1 : true;\n\n if (matches) {\n prev = c;\n path = path.slice(0, k);\n }\n }\n\n // Push the current path onto the tokens.\n if (path) {\n tokens.push(path);\n path = '';\n pathEscaped = false;\n }\n\n var repeat = modifier === '+' || modifier === '*';\n var optional = modifier === '?' || modifier === '*';\n var pattern = capture || group;\n var delimiter = prev || defaultDelimiter;\n\n tokens.push({\n name: name || key++,\n prefix: prev,\n delimiter: delimiter,\n optional: optional,\n repeat: repeat,\n pattern: pattern\n ? escapeGroup(pattern)\n : '[^' + escapeString(delimiter === defaultDelimiter ? delimiter : (delimiter + defaultDelimiter)) + ']+?'\n });\n }\n\n // Push any remaining characters.\n if (path || index < str.length) {\n tokens.push(path + str.substr(index));\n }\n\n return tokens\n }\n\n /**\n * Compile a string to a template function for the path.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!function(Object=, Object=)}\n */\n function compile (str, options) {\n return tokensToFunction(parse(str, options))\n }\n\n /**\n * Expose a method for transforming tokens into the path function.\n */\n function tokensToFunction (tokens) {\n // Compile all the tokens into regexps.\n var matches = new Array(tokens.length);\n\n // Compile all the patterns before compilation.\n for (var i = 0; i < tokens.length; i++) {\n if (typeof tokens[i] === 'object') {\n matches[i] = new RegExp('^(?:' + tokens[i].pattern + ')$');\n }\n }\n\n return function (data, options) {\n var path = '';\n var encode = (options && options.encode) || encodeURIComponent;\n\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n\n if (typeof token === 'string') {\n path += token;\n continue\n }\n\n var value = data ? data[token.name] : undefined;\n var segment;\n\n if (Array.isArray(value)) {\n if (!token.repeat) {\n throw new TypeError('Expected \"' + token.name + '\" to not repeat, but got array')\n }\n\n if (value.length === 0) {\n if (token.optional) { continue }\n\n throw new TypeError('Expected \"' + token.name + '\" to not be empty')\n }\n\n for (var j = 0; j < value.length; j++) {\n segment = encode(value[j], token);\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected all \"' + token.name + '\" to match \"' + token.pattern + '\"')\n }\n\n path += (j === 0 ? token.prefix : token.delimiter) + segment;\n }\n\n continue\n }\n\n if (typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean') {\n segment = encode(String(value), token);\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected \"' + token.name + '\" to match \"' + token.pattern + '\", but got \"' + segment + '\"')\n }\n\n path += token.prefix + segment;\n continue\n }\n\n if (token.optional) { continue }\n\n throw new TypeError('Expected \"' + token.name + '\" to be ' + (token.repeat ? 'an array' : 'a string'))\n }\n\n return path\n }\n }\n\n /**\n * Escape a regular expression string.\n *\n * @param {string} str\n * @return {string}\n */\n function escapeString (str) {\n return str.replace(/([.+*?=^!:${}()[\\]|/\\\\])/g, '\\\\$1')\n }\n\n /**\n * Escape the capturing group by escaping special characters and meaning.\n *\n * @param {string} group\n * @return {string}\n */\n function escapeGroup (group) {\n return group.replace(/([=!:$/()])/g, '\\\\$1')\n }\n\n /**\n * Get the flags for a regexp from the options.\n *\n * @param {Object} options\n * @return {string}\n */\n function flags (options) {\n return options && options.sensitive ? '' : 'i'\n }\n\n /**\n * Pull out keys from a regexp.\n *\n * @param {!RegExp} path\n * @param {Array=} keys\n * @return {!RegExp}\n */\n function regexpToRegexp (path, keys) {\n if (!keys) { return path }\n\n // Use a negative lookahead to match only capturing groups.\n var groups = path.source.match(/\\((?!\\?)/g);\n\n if (groups) {\n for (var i = 0; i < groups.length; i++) {\n keys.push({\n name: i,\n prefix: null,\n delimiter: null,\n optional: false,\n repeat: false,\n pattern: null\n });\n }\n }\n\n return path\n }\n\n /**\n * Transform an array into a regexp.\n *\n * @param {!Array} path\n * @param {Array=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\n function arrayToRegexp (path, keys, options) {\n var parts = [];\n\n for (var i = 0; i < path.length; i++) {\n parts.push(pathToRegexp(path[i], keys, options).source);\n }\n\n return new RegExp('(?:' + parts.join('|') + ')', flags(options))\n }\n\n /**\n * Create a path regexp from string input.\n *\n * @param {string} path\n * @param {Array=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\n function stringToRegexp (path, keys, options) {\n return tokensToRegExp(parse(path, options), keys, options)\n }\n\n /**\n * Expose a function for taking tokens and returning a RegExp.\n *\n * @param {!Array} tokens\n * @param {Array=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\n function tokensToRegExp (tokens, keys, options) {\n options = options || {};\n\n var strict = options.strict;\n var start = options.start !== false;\n var end = options.end !== false;\n var delimiter = options.delimiter || DEFAULT_DELIMITER;\n var endsWith = [].concat(options.endsWith || []).map(escapeString).concat('$').join('|');\n var route = start ? '^' : '';\n\n // Iterate over the tokens and create our regexp string.\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n\n if (typeof token === 'string') {\n route += escapeString(token);\n } else {\n var capture = token.repeat\n ? '(?:' + token.pattern + ')(?:' + escapeString(token.delimiter) + '(?:' + token.pattern + '))*'\n : token.pattern;\n\n if (keys) { keys.push(token); }\n\n if (token.optional) {\n if (!token.prefix) {\n route += '(' + capture + ')?';\n } else {\n route += '(?:' + escapeString(token.prefix) + '(' + capture + '))?';\n }\n } else {\n route += escapeString(token.prefix) + '(' + capture + ')';\n }\n }\n }\n\n if (end) {\n if (!strict) { route += '(?:' + escapeString(delimiter) + ')?'; }\n\n route += endsWith === '$' ? '$' : '(?=' + endsWith + ')';\n } else {\n var endToken = tokens[tokens.length - 1];\n var isEndDelimited = typeof endToken === 'string'\n ? endToken[endToken.length - 1] === delimiter\n : endToken === undefined;\n\n if (!strict) { route += '(?:' + escapeString(delimiter) + '(?=' + endsWith + '))?'; }\n if (!isEndDelimited) { route += '(?=' + escapeString(delimiter) + '|' + endsWith + ')'; }\n }\n\n return new RegExp(route, flags(options))\n }\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 *\n * @param {(string|RegExp|Array)} path\n * @param {Array=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\n function pathToRegexp (path, keys, options) {\n if (path instanceof RegExp) {\n return regexpToRegexp(path, keys)\n }\n\n if (Array.isArray(path)) {\n return arrayToRegexp(/** @type {!Array} */ (path), keys, options)\n }\n\n return stringToRegexp(/** @type {string} */ (path), keys, options)\n }\n pathToRegexp_1.parse = parse_1;\n pathToRegexp_1.compile = compile_1;\n pathToRegexp_1.tokensToFunction = tokensToFunction_1;\n pathToRegexp_1.tokensToRegExp = tokensToRegExp_1;\n\n var History = {\n queue: [],\n clearQueue: function clearQueue() {\n if (History.queue.length === 0) { return; }\n var currentQueue = History.queue.shift();\n currentQueue();\n },\n routerQueue: [],\n clearRouterQueue: function clearRouterQueue() {\n if (History.routerQueue.length === 0) { return; }\n var currentQueue = History.routerQueue.pop();\n var router = currentQueue.router;\n var stateUrl = currentQueue.stateUrl;\n var action = currentQueue.action;\n\n var animate = router.params.animate;\n if (router.params.pushStateAnimate === false) { animate = false; }\n\n if (action === 'back') {\n router.back({ animate: animate, pushState: false });\n }\n if (action === 'load') {\n router.navigate(stateUrl, { animate: animate, pushState: false });\n }\n },\n handle: function handle(e) {\n if (History.blockPopstate) { return; }\n var app = this;\n // const mainView = app.views.main;\n var 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(function (view) {\n var router = view.router;\n var viewState = state[view.id];\n if (!viewState && view.params.pushState) {\n viewState = {\n url: view.router.history[0],\n };\n }\n if (!viewState) { return; }\n var stateUrl = viewState.url || undefined;\n\n var animate = router.params.animate;\n if (router.params.pushStateAnimate === 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: animate, pushState: false });\n } else {\n History.routerQueue.push({\n action: 'back',\n router: router,\n });\n }\n } else if (router.allowPageChange) {\n // Load page\n router.navigate(stateUrl, { animate: animate, pushState: false });\n } else {\n History.routerQueue.unshift({\n action: 'load',\n stateUrl: stateUrl,\n router: router,\n });\n }\n }\n });\n },\n initViewState: function initViewState(viewId, viewState) {\n var obj;\n\n var newState = Utils.extend({}, (History.state || {}), ( obj = {}, obj[viewId] = viewState, obj ));\n History.state = newState;\n win.history.replaceState(newState, '');\n },\n push: function push(viewId, viewState, url) {\n var obj;\n\n if (!History.allowChange) {\n History.queue.push(function () {\n History.push(viewId, viewState, url);\n });\n return;\n }\n History.previousState = History.state;\n var newState = Utils.extend({}, (History.previousState || {}), ( obj = {}, obj[viewId] = viewState, obj ));\n History.state = newState;\n win.history.pushState(newState, '', url);\n },\n replace: function replace(viewId, viewState, url) {\n var obj;\n\n if (!History.allowChange) {\n History.queue.push(function () {\n History.replace(viewId, viewState, url);\n });\n return;\n }\n History.previousState = History.state;\n var newState = Utils.extend({}, (History.previousState || {}), ( obj = {}, obj[viewId] = viewState, obj ));\n History.state = newState;\n win.history.replaceState(newState, '', url);\n },\n go: function go(index) {\n History.allowChange = false;\n win.history.go(index);\n },\n back: function back() {\n History.allowChange = false;\n win.history.back();\n },\n allowChange: true,\n previousState: {},\n state: win.history.state,\n blockPopstate: true,\n init: function init(app) {\n $(win).on('load', function () {\n setTimeout(function () {\n History.blockPopstate = false;\n }, 0);\n });\n\n if (doc.readyState && doc.readyState === 'complete') {\n History.blockPopstate = false;\n }\n\n $(win).on('popstate', History.handle.bind(app));\n },\n };\n\n function SwipeBack(r) {\n var router = r;\n var $el = router.$el;\n var $navbarEl = router.$navbarEl;\n var app = router.app;\n var params = router.params;\n var isTouched = false;\n var isMoved = false;\n var touchesStart = {};\n var isScrolling;\n var currentPage = [];\n var previousPage = [];\n var viewContainerWidth;\n var touchesDiff;\n var allowViewTouchMove = true;\n var touchStartTime;\n var currentNavbar = [];\n var previousNavbar = [];\n var currentNavElements;\n var previousNavElements;\n var activeNavBackIcon;\n var activeNavBackIconText;\n var previousNavBackIcon;\n // let previousNavBackIconText;\n var dynamicNavbar;\n var separateNavbar;\n var pageShadow;\n var pageOpacity;\n var navbarWidth;\n\n var paramsSwipeBackAnimateShadow = params[((app.theme) + \"SwipeBackAnimateShadow\")];\n var paramsSwipeBackAnimateOpacity = params[((app.theme) + \"SwipeBackAnimateOpacity\")];\n var paramsSwipeBackActiveArea = params[((app.theme) + \"SwipeBackActiveArea\")];\n var paramsSwipeBackThreshold = params[((app.theme) + \"SwipeBackThreshold\")];\n\n function handleTouchStart(e) {\n var swipeBackEnabled = params[((app.theme) + \"SwipeBack\")];\n if (!allowViewTouchMove || !swipeBackEnabled || isTouched || (app.swipeout && app.swipeout.el) || !router.allowPageChange) { return; }\n if ($(e.target).closest('.range-slider, .calendar-months').length > 0) { 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 = Utils.now();\n dynamicNavbar = router.dynamicNavbar;\n separateNavbar = router.separateNavbar;\n }\n function handleTouchMove(e) {\n if (!isTouched) { return; }\n var pageX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n var pageY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n if (typeof isScrolling === 'undefined') {\n isScrolling = !!(isScrolling || Math.abs(pageY - touchesStart.y) > Math.abs(pageX - touchesStart.x)) || (pageX < touchesStart.x && !app.rtl) || (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 var cancel = false;\n var target = $(e.target);\n\n var 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 currentPage = target.closest('.page');\n if (currentPage.hasClass('no-swipeback') || target.closest('.no-swipeback').length > 0) { cancel = true; }\n previousPage = $el.find('.page-previous:not(.stacked)');\n\n var notFromBorder = touchesStart.x - $el.offset().left > paramsSwipeBackActiveArea;\n viewContainerWidth = $el.width();\n if (app.rtl) {\n notFromBorder = touchesStart.x < ($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 (previousPage.length === 0 || currentPage.length === 0) { cancel = true; }\n if (cancel) {\n isTouched = false;\n return;\n }\n\n if (paramsSwipeBackAnimateShadow) {\n pageShadow = currentPage.find('.page-shadow-effect');\n if (pageShadow.length === 0) {\n pageShadow = $('<div class=\"page-shadow-effect\"></div>');\n currentPage.append(pageShadow);\n }\n }\n if (paramsSwipeBackAnimateOpacity) {\n pageOpacity = previousPage.find('.page-opacity-effect');\n if (pageOpacity.length === 0) {\n pageOpacity = $('<div class=\"page-opacity-effect\"></div>');\n previousPage.append(pageOpacity);\n }\n }\n\n if (dynamicNavbar) {\n if (separateNavbar) {\n currentNavbar = $navbarEl.find('.navbar-current:not(.stacked)');\n previousNavbar = $navbarEl.find('.navbar-previous:not(.stacked)');\n } else {\n currentNavbar = currentPage.children('.navbar').children('.navbar-inner');\n previousNavbar = previousPage.children('.navbar').children('.navbar-inner');\n }\n navbarWidth = $navbarEl[0].offsetWidth;\n currentNavElements = currentNavbar.children('.left, .title, .right, .subnavbar, .fading');\n previousNavElements = previousNavbar.children('.left, .title, .right, .subnavbar, .fading');\n if (params.iosAnimateNavbarBackIcon) {\n if (currentNavbar.hasClass('sliding')) {\n activeNavBackIcon = currentNavbar.children('.left').find('.back .icon');\n activeNavBackIconText = currentNavbar.children('.left').find('.back span').eq(0);\n } else {\n activeNavBackIcon = currentNavbar.children('.left.sliding').find('.back .icon');\n activeNavBackIconText = currentNavbar.children('.left.sliding').find('.back span').eq(0);\n }\n if (previousNavbar.hasClass('sliding')) {\n previousNavBackIcon = previousNavbar.children('.left').find('.back .icon');\n } else {\n previousNavBackIcon = previousNavbar.children('.left.sliding').find('.back .icon');\n }\n }\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.f7PreventPanelSwipe = true;\n isMoved = true;\n app.preventSwipePanelBySwipeBack = true;\n e.preventDefault();\n\n // RTL inverter\n var inverter = app.rtl ? -1 : 1;\n\n // Touches diff\n touchesDiff = (pageX - touchesStart.x - paramsSwipeBackThreshold) * inverter;\n if (touchesDiff < 0) { touchesDiff = 0; }\n var percentage = touchesDiff / viewContainerWidth;\n\n // Swipe Back Callback\n var callbackData = {\n percentage: percentage,\n currentPageEl: currentPage[0],\n previousPageEl: previousPage[0],\n currentNavbarEl: currentNavbar[0],\n previousNavbarEl: previousNavbar[0],\n };\n $el.trigger('swipeback:move', callbackData);\n router.emit('swipebackMove', callbackData);\n\n // Transform pages\n var currentPageTranslate = touchesDiff * inverter;\n var previousPageTranslate = ((touchesDiff / 5) - (viewContainerWidth / 5)) * inverter;\n if (Device.pixelRatio === 1) {\n currentPageTranslate = Math.round(currentPageTranslate);\n previousPageTranslate = Math.round(previousPageTranslate);\n }\n\n router.swipeBackActive = true;\n $([currentPage[0], previousPage[0]]).addClass('page-swipeback-active');\n\n currentPage.transform((\"translate3d(\" + currentPageTranslate + \"px,0,0)\"));\n if (paramsSwipeBackAnimateShadow) { pageShadow[0].style.opacity = 1 - (1 * percentage); }\n\n if (app.theme !== 'md') {\n previousPage.transform((\"translate3d(\" + previousPageTranslate + \"px,0,0)\"));\n }\n if (paramsSwipeBackAnimateOpacity) { pageOpacity[0].style.opacity = 1 - (1 * percentage); }\n\n // Dynamic Navbars Animation\n if (dynamicNavbar) {\n currentNavElements.each(function (index, navEl) {\n var $navEl = $(navEl);\n if (!$navEl.is('.subnavbar')) { $navEl[0].style.opacity = (1 - (Math.pow( percentage, 0.33 ))); }\n if ($navEl[0].className.indexOf('sliding') >= 0 || currentNavbar.hasClass('sliding')) {\n var activeNavTranslate = percentage * $navEl[0].f7NavbarRightOffset;\n if (Device.pixelRatio === 1) { activeNavTranslate = Math.round(activeNavTranslate); }\n $navEl.transform((\"translate3d(\" + activeNavTranslate + \"px,0,0)\"));\n if (params.iosAnimateNavbarBackIcon) {\n if ($navEl[0].className.indexOf('left') >= 0 && activeNavBackIcon.length > 0) {\n var iconTranslate = -activeNavTranslate;\n if (!separateNavbar) {\n iconTranslate -= navbarWidth * percentage;\n }\n activeNavBackIcon.transform((\"translate3d(\" + iconTranslate + \"px,0,0)\"));\n }\n }\n }\n });\n previousNavElements.each(function (index, navEl) {\n var $navEl = $(navEl);\n if (!$navEl.is('.subnavbar')) { $navEl[0].style.opacity = (Math.pow( percentage, 3 )); }\n if ($navEl[0].className.indexOf('sliding') >= 0 || previousNavbar.hasClass('sliding')) {\n var previousNavTranslate = $navEl[0].f7NavbarLeftOffset * (1 - percentage);\n if ($navEl[0].className.indexOf('title') >= 0 && activeNavBackIcon && activeNavBackIcon.length && activeNavBackIconText.length) {\n previousNavTranslate = ($navEl[0].f7NavbarLeftOffset + activeNavBackIconText[0].offsetLeft) * (1 - percentage);\n } else {\n previousNavTranslate = $navEl[0].f7NavbarLeftOffset * (1 - percentage);\n }\n if (Device.pixelRatio === 1) { previousNavTranslate = Math.round(previousNavTranslate); }\n $navEl.transform((\"translate3d(\" + previousNavTranslate + \"px,0,0)\"));\n if (params.iosAnimateNavbarBackIcon) {\n if ($navEl[0].className.indexOf('left') >= 0 && previousNavBackIcon.length > 0) {\n var iconTranslate = -previousNavTranslate;\n if (!separateNavbar) {\n iconTranslate += (navbarWidth / 5) * (1 - percentage);\n }\n previousNavBackIcon.transform((\"translate3d(\" + iconTranslate + \"px,0,0)\"));\n }\n }\n }\n });\n }\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 $([currentPage[0], previousPage[0]]).removeClass('page-swipeback-active');\n if (touchesDiff === 0) {\n $([currentPage[0], previousPage[0]]).transform('');\n if (pageShadow && pageShadow.length > 0) { pageShadow.remove(); }\n if (pageOpacity && pageOpacity.length > 0) { pageOpacity.remove(); }\n if (dynamicNavbar) {\n currentNavElements.transform('').css({ opacity: '' });\n previousNavElements.transform('').css({ opacity: '' });\n if (activeNavBackIcon && activeNavBackIcon.length > 0) { activeNavBackIcon.transform(''); }\n if (previousNavBackIcon && activeNavBackIcon.length > 0) { previousNavBackIcon.transform(''); }\n }\n return;\n }\n var timeDiff = Utils.now() - touchStartTime;\n var pageChanged = false;\n // Swipe back to previous page\n if (\n (timeDiff < 300 && touchesDiff > 10)\n || (timeDiff >= 300 && touchesDiff > viewContainerWidth / 2)\n ) {\n currentPage.removeClass('page-current').addClass((\"page-next\" + (app.theme === 'md' ? ' page-next-on-right' : '')));\n previousPage.removeClass('page-previous').addClass('page-current').removeAttr('aria-hidden');\n if (pageShadow) { pageShadow[0].style.opacity = ''; }\n if (pageOpacity) { pageOpacity[0].style.opacity = ''; }\n if (dynamicNavbar) {\n currentNavbar.removeClass('navbar-current').addClass('navbar-next');\n previousNavbar.removeClass('navbar-previous').addClass('navbar-current').removeAttr('aria-hidden');\n }\n pageChanged = true;\n }\n // Reset custom styles\n // Add transitioning class for transition-duration\n $([currentPage[0], previousPage[0]]).addClass('page-transitioning page-transitioning-swipeback').transform('');\n\n if (dynamicNavbar) {\n currentNavElements.css({ opacity: '' })\n .each(function (navElIndex, navEl) {\n var translate = pageChanged ? navEl.f7NavbarRightOffset : 0;\n var sliding = $(navEl);\n var iconTranslate = pageChanged ? -translate : 0;\n if (!separateNavbar && pageChanged) { iconTranslate -= navbarWidth; }\n sliding.transform((\"translate3d(\" + translate + \"px,0,0)\"));\n if (params.iosAnimateNavbarBackIcon) {\n if (sliding.hasClass('left') && activeNavBackIcon.length > 0) {\n activeNavBackIcon.addClass('navbar-transitioning').transform((\"translate3d(\" + iconTranslate + \"px,0,0)\"));\n }\n }\n }).addClass('navbar-transitioning');\n\n previousNavElements.transform('').css({ opacity: '' }).each(function (navElIndex, navEl) {\n var translate = pageChanged ? 0 : navEl.f7NavbarLeftOffset;\n var sliding = $(navEl);\n var iconTranslate = pageChanged ? 0 : -translate;\n if (!separateNavbar && !pageChanged) { iconTranslate += navbarWidth / 5; }\n sliding.transform((\"translate3d(\" + translate + \"px,0,0)\"));\n if (params.iosAnimateNavbarBackIcon) {\n if (sliding.hasClass('left') && previousNavBackIcon.length > 0) {\n previousNavBackIcon.addClass('navbar-transitioning').transform((\"translate3d(\" + iconTranslate + \"px,0,0)\"));\n }\n }\n }).addClass('navbar-transitioning');\n }\n allowViewTouchMove = false;\n router.allowPageChange = false;\n\n // Swipe Back Callback\n var callbackData = {\n currentPageEl: currentPage[0],\n previousPageEl: previousPage[0],\n currentNavbarEl: currentNavbar[0],\n previousNavbarEl: previousNavbar[0],\n };\n\n if (pageChanged) {\n // Update Route\n router.currentRoute = previousPage[0].f7Page.route;\n router.currentPage = previousPage[0];\n\n // Page before animation callback\n router.pageCallback('beforeOut', currentPage, currentNavbar, 'current', 'next', { route: currentPage[0].f7Page.route, swipeBack: true });\n router.pageCallback('beforeIn', previousPage, previousNavbar, 'previous', 'current', { route: previousPage[0].f7Page.route, swipeBack: true });\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 currentPage.transitionEnd(function () {\n $([currentPage[0], previousPage[0]]).removeClass('page-transitioning page-transitioning-swipeback');\n\n if (dynamicNavbar) {\n currentNavElements.removeClass('navbar-transitioning').css({ opacity: '' }).transform('');\n previousNavElements.removeClass('navbar-transitioning').css({ opacity: '' }).transform('');\n if (activeNavBackIcon && activeNavBackIcon.length > 0) { activeNavBackIcon.removeClass('navbar-transitioning'); }\n if (previousNavBackIcon && previousNavBackIcon.length > 0) { previousNavBackIcon.removeClass('navbar-transitioning'); }\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.pushState) {\n History.back();\n }\n\n // Page after animation callback\n router.pageCallback('afterOut', currentPage, currentNavbar, 'current', 'next', { route: currentPage[0].f7Page.route, swipeBack: true });\n router.pageCallback('afterIn', previousPage, previousNavbar, 'previous', 'current', { route: previousPage[0].f7Page.route, swipeBack: true });\n\n // Remove Old Page\n if (params.stackPages && router.initialPages.indexOf(currentPage[0]) >= 0) {\n currentPage.addClass('stacked');\n if (separateNavbar) {\n currentNavbar.addClass('stacked');\n }\n } else {\n router.pageCallback('beforeRemove', currentPage, currentNavbar, 'next', { swipeBack: true });\n router.removePage(currentPage);\n if (separateNavbar) {\n router.removeNavbar(currentNavbar);\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 (pageShadow && pageShadow.length > 0) { pageShadow.remove(); }\n if (pageOpacity && pageOpacity.length > 0) { pageOpacity.remove(); }\n });\n }\n\n function attachEvents() {\n var passiveListener = (app.touchEvents.start === 'touchstart' && Support.passiveListener) ? { passive: true, capture: false } : 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 var passiveListener = (app.touchEvents.start === 'touchstart' && Support.passiveListener) ? { passive: true, capture: false } : 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\n function redirect (direction, route, options) {\n var router = this;\n var redirect = route.route.redirect;\n if (options.initial && router.params.pushState) {\n options.replaceState = true; // eslint-disable-line\n options.history = true; // eslint-disable-line\n }\n function redirectResolve(redirectUrl, redirectOptions) {\n if ( redirectOptions === void 0 ) redirectOptions = {};\n\n router.allowPageChange = true;\n router[direction](redirectUrl, Utils.extend({}, options, redirectOptions));\n }\n function redirectReject() {\n router.allowPageChange = true;\n }\n if (typeof redirect === 'function') {\n router.allowPageChange = false;\n var redirectUrl = redirect.call(router, route, redirectResolve, redirectReject);\n if (redirectUrl && typeof redirectUrl === 'string') {\n router.allowPageChange = true;\n return router[direction](redirectUrl, options);\n }\n return router;\n }\n return router[direction](redirect, options);\n }\n\n function processQueue(router, routerQueue, routeQueue, to, from, resolve, reject) {\n var queue = [];\n\n if (Array.isArray(routeQueue)) {\n queue.push.apply(queue, routeQueue);\n } else if (routeQueue && typeof routeQueue === 'function') {\n queue.push(routeQueue);\n }\n if (routerQueue) {\n if (Array.isArray(routerQueue)) {\n queue.push.apply(queue, routerQueue);\n } else {\n queue.push(routerQueue);\n }\n }\n\n function next() {\n if (queue.length === 0) {\n resolve();\n return;\n }\n var queueItem = queue.shift();\n\n queueItem.call(\n router,\n to,\n from,\n function () {\n next();\n },\n function () {\n reject();\n }\n );\n }\n next();\n }\n\n function processRouteQueue (to, from, resolve, reject) {\n var 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 function () {\n router.allowPageChange = true;\n resolve();\n },\n function () {\n reject();\n }\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 function () {\n router.allowPageChange = true;\n enterNextRoute();\n },\n function () {\n reject();\n }\n );\n } else {\n enterNextRoute();\n }\n }\n leaveCurrentRoute();\n }\n\n function appRouterCheck (router, method) {\n if (!router.view) {\n throw new Error((\"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 function refreshPage() {\n var router = this;\n appRouterCheck(router, 'refreshPage');\n return router.navigate(router.currentRoute.url, {\n ignoreCache: true,\n reloadCurrent: true,\n });\n }\n\n function forward(el, forwardOptions) {\n if ( forwardOptions === void 0 ) forwardOptions = {};\n\n var router = this;\n var $el = $(el);\n var app = router.app;\n var view = router.view;\n var options = Utils.extend(false, {\n animate: router.params.animate,\n pushState: true,\n replaceState: false,\n history: true,\n reloadCurrent: router.params.reloadPages,\n reloadPrevious: false,\n reloadAll: false,\n clearPreviousHistory: false,\n on: {},\n }, forwardOptions);\n\n var currentRouteIsModal = router.currentRoute.modal;\n var modalType;\n if (!currentRouteIsModal) {\n ('popup popover sheet loginScreen actions customModal panel').split(' ').forEach(function (modalLoadProp) {\n if (router.currentRoute && router.currentRoute.route && router.currentRoute.route[modalLoadProp]) {\n currentRouteIsModal = true;\n modalType = modalLoadProp;\n }\n });\n }\n\n if (currentRouteIsModal) {\n var modalToClose = router.currentRoute.modal\n || router.currentRoute.route.modalInstance\n || app[modalType].get();\n var previousUrl = router.history[router.history.length - 2];\n var previousRoute = router.findMatchingRoute(previousUrl);\n if (!previousRoute && previousUrl) {\n previousRoute = {\n url: previousUrl,\n path: previousUrl.split('?')[0],\n query: Utils.parseUrlQuery(previousUrl),\n route: {\n path: previousUrl.split('?')[0],\n url: previousUrl,\n },\n };\n }\n\n router.modalRemove(modalToClose);\n }\n\n var dynamicNavbar = router.dynamicNavbar;\n var separateNavbar = router.separateNavbar;\n\n var $viewEl = router.$el;\n var $newPage = $el;\n var reload = options.reloadPrevious || options.reloadCurrent || options.reloadAll;\n var $oldPage;\n\n var $navbarEl;\n var $newNavbarInner;\n var $oldNavbarInner;\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 $newNavbarInner = $newPage.children('.navbar').children('.navbar-inner');\n if (separateNavbar) {\n $navbarEl = router.$navbarEl;\n if ($newNavbarInner.length > 0) {\n $newPage.children('.navbar').remove();\n }\n if ($newNavbarInner.length === 0 && $newPage[0] && $newPage[0].f7Page) {\n // Try from pageData\n $newNavbarInner = $newPage[0].f7Page.$navbarEl;\n }\n }\n }\n\n // Save Keep Alive Cache\n if (options.route && options.route.route && options.route.route.keepAlive && !options.route.route.keepAliveData) {\n options.route.route.keepAliveData = {\n pageEl: $el[0],\n };\n }\n\n // Pages In View\n var $pagesInView = $viewEl\n .children('.page:not(.stacked)')\n .filter(function (index, pageInView) { return pageInView !== $newPage[0]; });\n\n // Navbars In View\n var $navbarsInView;\n if (separateNavbar) {\n $navbarsInView = $navbarEl\n .children('.navbar-inner:not(.stacked)')\n .filter(function (index, navbarInView) { return navbarInView !== $newNavbarInner[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 // New Page\n var newPagePosition = 'next';\n if (options.reloadCurrent || options.reloadAll) {\n newPagePosition = 'current';\n } else if (options.reloadPrevious) {\n newPagePosition = 'previous';\n }\n $newPage\n .addClass((\"page-\" + newPagePosition))\n .removeClass('stacked')\n .trigger('page:unstack')\n .trigger('page:position', { position: newPagePosition });\n\n if (dynamicNavbar && $newNavbarInner.length) {\n $newNavbarInner\n .addClass((\"navbar-\" + newPagePosition))\n .removeClass('stacked');\n }\n\n // Find Old Page\n if (options.reloadCurrent) {\n $oldPage = $pagesInView.eq($pagesInView.length - 1);\n if (separateNavbar) {\n // $oldNavbarInner = $navbarsInView.eq($pagesInView.length - 1);\n $oldNavbarInner = $(app.navbar.getElByPage($oldPage));\n }\n } else if (options.reloadPrevious) {\n $oldPage = $pagesInView.eq($pagesInView.length - 2);\n if (separateNavbar) {\n // $oldNavbarInner = $navbarsInView.eq($pagesInView.length - 2);\n $oldNavbarInner = $(app.navbar.getElByPage($oldPage));\n }\n } else if (options.reloadAll) {\n $oldPage = $pagesInView.filter(function (index, pageEl) { return pageEl !== $newPage[0]; });\n if (separateNavbar) {\n $oldNavbarInner = $navbarsInView.filter(function (index, navbarEl) { return navbarEl !== $newNavbarInner[0]; });\n }\n } else {\n if ($pagesInView.length > 1) {\n var i = 0;\n for (i = 0; i < $pagesInView.length - 1; i += 1) {\n var oldNavbarInnerEl = 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 if (separateNavbar) {\n // $navbarsInView.eq(i).addClass('stacked');\n $(oldNavbarInnerEl).addClass('stacked');\n }\n } else {\n // Page remove event\n router.pageCallback('beforeRemove', $pagesInView[i], $navbarsInView && $navbarsInView[i], 'previous', undefined, options);\n router.removePage($pagesInView[i]);\n if (separateNavbar && oldNavbarInnerEl) {\n router.removeNavbar(oldNavbarInnerEl);\n }\n }\n }\n }\n $oldPage = $viewEl\n .children('.page:not(.stacked)')\n .filter(function (index, page) { return page !== $newPage[0]; });\n if (separateNavbar) {\n $oldNavbarInner = $navbarEl\n .children('.navbar-inner:not(.stacked)')\n .filter(function (index, navbarInner) { return navbarInner !== $newNavbarInner[0]; });\n }\n }\n if (dynamicNavbar && !separateNavbar) {\n $oldNavbarInner = $oldPage.children('.navbar').children('.navbar-inner');\n }\n\n // Push State\n if (router.params.pushState && (options.pushState || options.replaceState) && !options.reloadPrevious) {\n var pushStateRoot = router.params.pushStateRoot || '';\n History[options.reloadCurrent || options.reloadAll || options.replaceState ? 'replace' : 'push'](\n view.id,\n {\n url: options.route.url,\n },\n pushStateRoot + router.params.pushStateSeparator + options.route.url\n );\n }\n\n if (!options.reloadPrevious) {\n // Current Page & Navbar\n router.currentPageEl = $newPage[0];\n if (dynamicNavbar && $newNavbarInner.length) {\n router.currentNavbarEl = $newNavbarInner[0];\n } else {\n delete router.currentNavbarEl;\n }\n\n // Current Route\n router.currentRoute = options.route;\n }\n\n // Update router history\n var url = options.route.url;\n\n if (options.history) {\n if ((options.reloadCurrent && router.history.length) > 0 || options.replaceState) {\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 var newPageInDom = $newPage.parents(doc).length > 0;\n var f7Component = $newPage[0].f7Component;\n if (options.reloadPrevious) {\n if (f7Component && !newPageInDom) {\n f7Component.$mount(function (componentEl) {\n $(componentEl).insertBefore($oldPage);\n });\n } else {\n $newPage.insertBefore($oldPage);\n }\n if (separateNavbar && $newNavbarInner.length) {\n if ($oldNavbarInner.length) {\n $newNavbarInner.insertBefore($oldNavbarInner);\n } else {\n if (!router.$navbarEl.parents(doc).length) {\n router.$el.prepend(router.$navbarEl);\n }\n $navbarEl.append($newNavbarInner);\n }\n }\n } else {\n if ($oldPage.next('.page')[0] !== $newPage[0]) {\n if (f7Component && !newPageInDom) {\n f7Component.$mount(function (componentEl) {\n $viewEl.append(componentEl);\n });\n } else {\n $viewEl.append($newPage[0]);\n }\n }\n if (separateNavbar && $newNavbarInner.length) {\n if (!router.$navbarEl.parents(doc).length) {\n router.$el.prepend(router.$navbarEl);\n }\n $navbarEl.append($newNavbarInner[0]);\n }\n }\n if (!newPageInDom) {\n router.pageCallback('mounted', $newPage, $newNavbarInner, newPagePosition, reload ? newPagePosition : 'current', options, $oldPage);\n } else if (options.route && options.route.route && options.route.route.keepAlive && !$newPage[0].f7PageMounted) {\n $newPage[0].f7PageMounted = true;\n router.pageCallback('mounted', $newPage, $newNavbarInner, newPagePosition, reload ? newPagePosition : 'current', options, $oldPage);\n }\n\n // Remove old page\n if (options.reloadCurrent && $oldPage.length > 0) {\n if (router.params.stackPages && router.initialPages.indexOf($oldPage[0]) >= 0) {\n $oldPage.addClass('stacked');\n $oldPage.trigger('page:stack');\n if (separateNavbar) {\n $oldNavbarInner.addClass('stacked');\n }\n } else {\n // Page remove event\n router.pageCallback('beforeRemove', $oldPage, $oldNavbarInner, 'previous', undefined, options);\n router.removePage($oldPage);\n if (separateNavbar && $oldNavbarInner && $oldNavbarInner.length) {\n router.removeNavbar($oldNavbarInner);\n }\n }\n } else if (options.reloadAll) {\n $oldPage.each(function (index, pageEl) {\n var $oldPageEl = $(pageEl);\n var $oldNavbarInnerEl = $(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 if (separateNavbar) {\n $oldNavbarInnerEl.addClass('stacked');\n }\n } else {\n // Page remove event\n router.pageCallback('beforeRemove', $oldPageEl, $oldNavbarInner && $oldNavbarInner.eq(index), 'previous', undefined, options);\n router.removePage($oldPageEl);\n if (separateNavbar && $oldNavbarInnerEl.length) {\n router.removeNavbar($oldNavbarInnerEl);\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 if (separateNavbar) {\n $oldNavbarInner.addClass('stacked');\n }\n } else {\n // Page remove event\n router.pageCallback('beforeRemove', $oldPage, $oldNavbarInner, 'previous', undefined, options);\n router.removePage($oldPage);\n if (separateNavbar && $oldNavbarInner && $oldNavbarInner.length) {\n router.removeNavbar($oldNavbarInner);\n }\n }\n }\n\n // Load Tab\n if (options.route.route.tab) {\n router.tabLoad(options.route.route.tab, Utils.extend({}, options, {\n history: false,\n pushState: false,\n }));\n }\n\n // Page init and before init events\n router.pageCallback('init', $newPage, $newNavbarInner, newPagePosition, reload ? newPagePosition : 'current', options, $oldPage);\n\n if (options.reloadCurrent || options.reloadAll) {\n router.allowPageChange = true;\n router.pageCallback('beforeIn', $newPage, $newNavbarInner, newPagePosition, 'current', options);\n router.pageCallback('afterIn', $newPage, $newNavbarInner, newPagePosition, 'current', options);\n if (options.reloadCurrent && options.clearPreviousHistory) { router.clearPreviousHistory(); }\n return router;\n }\n if (options.reloadPrevious) {\n router.allowPageChange = true;\n return router;\n }\n\n // Before animation event\n router.pageCallback('beforeIn', $newPage, $newNavbarInner, 'next', 'current', options);\n router.pageCallback('beforeOut', $oldPage, $oldNavbarInner, 'current', 'previous', options);\n\n // Animation\n function afterAnimation() {\n var pageClasses = 'page-previous page-current page-next';\n var navbarClasses = 'navbar-previous navbar-current navbar-next';\n $newPage.removeClass(pageClasses).addClass('page-current').removeAttr('aria-hidden');\n $oldPage.removeClass(pageClasses).addClass('page-previous').attr('aria-hidden', 'true');\n if (dynamicNavbar) {\n $newNavbarInner.removeClass(navbarClasses).addClass('navbar-current').removeAttr('aria-hidden');\n $oldNavbarInner.removeClass(navbarClasses).addClass('navbar-previous').attr('aria-hidden', 'true');\n }\n // After animation event\n router.allowPageChange = true;\n router.pageCallback('afterIn', $newPage, $newNavbarInner, 'next', 'current', options);\n router.pageCallback('afterOut', $oldPage, $oldNavbarInner, 'current', 'previous', options);\n\n var keepOldPage = app.theme === 'ios' ? (router.params.preloadPreviousPage || router.params.iosSwipeBack) : router.params.preloadPreviousPage;\n if (!keepOldPage) {\n if ($newPage.hasClass('smart-select-page') || $newPage.hasClass('photo-browser-page') || $newPage.hasClass('autocomplete-page')) {\n keepOldPage = true;\n }\n }\n if (!keepOldPage) {\n if (router.params.stackPages) {\n $oldPage.addClass('stacked');\n $oldPage.trigger('page:stack');\n if (separateNavbar) {\n $oldNavbarInner.addClass('stacked');\n }\n } else if (!($newPage.attr('data-name') && $newPage.attr('data-name') === 'smart-select-page')) {\n // Remove event\n router.pageCallback('beforeRemove', $oldPage, $oldNavbarInner, 'previous', undefined, options);\n router.removePage($oldPage);\n if (separateNavbar && $oldNavbarInner.length) {\n router.removeNavbar($oldNavbarInner);\n }\n }\n }\n if (options.clearPreviousHistory) { router.clearPreviousHistory(); }\n router.emit('routeChanged', router.currentRoute, router.previousRoute, router);\n\n if (router.params.pushState) {\n History.clearRouterQueue();\n }\n }\n function setPositionClasses() {\n var pageClasses = 'page-previous page-current page-next';\n var navbarClasses = 'navbar-previous navbar-current navbar-next';\n $oldPage.removeClass(pageClasses).addClass('page-current').removeAttr('aria-hidden');\n $newPage.removeClass(pageClasses).addClass('page-next').removeAttr('aria-hidden');\n if (dynamicNavbar) {\n $oldNavbarInner.removeClass(navbarClasses).addClass('navbar-current').removeAttr('aria-hidden');\n $newNavbarInner.removeClass(navbarClasses).addClass('navbar-next').removeAttr('aria-hidden');\n }\n }\n if (options.animate) {\n var delay = router.app.theme === 'md' ? router.params.materialPageLoadDelay : router.params.iosPageLoadDelay;\n if (delay) {\n setTimeout(function () {\n setPositionClasses();\n router.animate($oldPage, $newPage, $oldNavbarInner, $newNavbarInner, 'forward', function () {\n afterAnimation();\n });\n }, delay);\n } else {\n setPositionClasses();\n router.animate($oldPage, $newPage, $oldNavbarInner, $newNavbarInner, 'forward', function () {\n afterAnimation();\n });\n }\n } else {\n afterAnimation();\n }\n return router;\n }\n function load(loadParams, loadOptions, ignorePageChange) {\n if ( loadParams === void 0 ) loadParams = {};\n if ( loadOptions === void 0 ) loadOptions = {};\n\n var router = this;\n if (!router.allowPageChange && !ignorePageChange) { return router; }\n var params = loadParams;\n var options = loadOptions;\n var url = params.url;\n var content = params.content;\n var el = params.el;\n var pageName = params.pageName;\n var template = params.template;\n var templateUrl = params.templateUrl;\n var component = params.component;\n var componentUrl = params.componentUrl;\n\n if (!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 // Do something nested\n if (options.route.url === router.url) {\n router.allowPageChange = true;\n return false;\n }\n // Check for same params\n var sameParams = 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(function (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 }\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 Utils.extend(options.route, { route: { url: url, path: url } });\n }\n\n // Component Callbacks\n function resolve(pageEl, newOptions) {\n return router.forward(pageEl, Utils.extend(options, newOptions));\n }\n function reject() {\n router.allowPageChange = true;\n return router;\n }\n\n if (url || templateUrl || componentUrl) {\n router.allowPageChange = false;\n }\n\n // Proceed\n if (content) {\n router.forward(router.getPageEl(content), options);\n } else if (template || templateUrl) {\n // Parse template and send page element\n try {\n router.pageTemplateLoader(template, templateUrl, options, resolve, reject);\n } catch (err) {\n router.allowPageChange = true;\n throw err;\n }\n } else if (el) {\n // Load page from specified HTMLElement or by page name in pages container\n router.forward(router.getPageEl(el), options);\n } else if (pageName) {\n // Load page by page name in pages container\n router.forward(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(router.el, component, componentUrl, options, resolve, reject);\n } catch (err) {\n router.allowPageChange = true;\n throw err;\n }\n } else if (url) {\n // Load using XHR\n if (router.xhr) {\n router.xhr.abort();\n router.xhr = false;\n }\n router.xhrRequest(url, options)\n .then(function (pageContent) {\n router.forward(router.getPageEl(pageContent), options);\n })\n .catch(function () {\n router.allowPageChange = true;\n });\n }\n return router;\n }\n function navigate(navigateParams, navigateOptions) {\n if ( navigateOptions === void 0 ) navigateOptions = {};\n\n var router = this;\n if (router.swipeBackActive) { return router; }\n var url;\n var createRoute;\n var name;\n var query;\n var params;\n var route;\n if (typeof navigateParams === 'string') {\n url = navigateParams;\n } else {\n url = navigateParams.url;\n createRoute = navigateParams.route;\n name = navigateParams.name;\n query = navigateParams.query;\n params = navigateParams.params;\n }\n if (name) {\n // find route by name\n route = router.findRouteByKey('name', name);\n if (!route) {\n throw new Error((\"Framework7: route with name \\\"\" + name + \"\\\" not found\"));\n }\n url = router.constructRouteUrl(route, { params: params, query: query });\n if (url) {\n return router.navigate(url, navigateOptions);\n }\n throw new Error((\"Framework7: can't construct URL for route with name \\\"\" + name + \"\\\"\"));\n }\n var app = router.app;\n appRouterCheck(router, 'navigate');\n if (url === '#' || url === '') {\n return router;\n }\n\n var navigateUrl = url.replace('./', '');\n if (navigateUrl[0] !== '/' && navigateUrl.indexOf('#') !== 0) {\n var currentPath = router.currentRoute.parentPath || router.currentRoute.path;\n navigateUrl = ((currentPath ? (currentPath + \"/\") : '/') + navigateUrl)\n .replace('///', '/')\n .replace('//', '/');\n }\n if (createRoute) {\n route = Utils.extend(router.parseRouteUrl(navigateUrl), {\n route: Utils.extend({}, createRoute),\n });\n } else {\n route = router.findMatchingRoute(navigateUrl);\n }\n\n if (!route) {\n return router;\n }\n\n if (route.route.redirect) {\n return redirect.call(router, 'navigate', route, navigateOptions);\n }\n\n\n var options = {};\n if (route.route.options) {\n Utils.extend(options, route.route.options, navigateOptions);\n } else {\n Utils.extend(options, navigateOptions);\n }\n options.route = route;\n\n if (options && options.context) {\n route.context = options.context;\n options.route.context = options.context;\n }\n\n function resolve() {\n var routerLoaded = false;\n ('popup popover sheet loginScreen actions customModal panel').split(' ').forEach(function (modalLoadProp) {\n if (route.route[modalLoadProp] && !routerLoaded) {\n routerLoaded = true;\n router.modalLoad(modalLoadProp, route, options);\n }\n });\n if (route.route.keepAlive && route.route.keepAliveData) {\n router.load({ el: route.route.keepAliveData.pageEl }, options, false);\n routerLoaded = true;\n }\n ('url content component pageName el componentUrl template templateUrl').split(' ').forEach(function (pageLoadProp) {\n var obj;\n\n if (route.route[pageLoadProp] && !routerLoaded) {\n routerLoaded = true;\n router.load(( obj = {}, obj[pageLoadProp] = route.route[pageLoadProp], obj ), options, false);\n }\n });\n if (routerLoaded) { return; }\n // Async\n function asyncResolve(resolveParams, resolveOptions) {\n router.allowPageChange = false;\n var resolvedAsModal = false;\n if (resolveOptions && resolveOptions.context) {\n if (!route.context) { route.context = resolveOptions.context; }\n else { route.context = Utils.extend({}, route.context, resolveOptions.context); }\n options.route.context = route.context;\n }\n ('popup popover sheet loginScreen actions customModal panel').split(' ').forEach(function (modalLoadProp) {\n if (resolveParams[modalLoadProp]) {\n resolvedAsModal = true;\n var modalRoute = Utils.extend({}, route, { route: resolveParams });\n router.allowPageChange = true;\n router.modalLoad(modalLoadProp, modalRoute, Utils.extend(options, resolveOptions));\n }\n });\n if (resolvedAsModal) { return; }\n router.load(resolveParams, Utils.extend(options, resolveOptions), true);\n }\n function asyncReject() {\n router.allowPageChange = true;\n }\n if (route.route.async) {\n router.allowPageChange = false;\n\n route.route.async.call(router, options.route, router.currentRoute, asyncResolve, asyncReject);\n }\n }\n function reject() {\n router.allowPageChange = true;\n }\n\n processRouteQueue.call(\n router,\n route,\n router.currentRoute,\n function () {\n if (route.route.modules) {\n app\n .loadModules(Array.isArray(route.route.modules) ? route.route.modules : [route.route.modules])\n .then(function () {\n resolve();\n })\n .catch(function () {\n reject();\n });\n } else {\n resolve();\n }\n },\n function () {\n reject();\n }\n );\n\n // Return Router\n return router;\n }\n\n function tabLoad(tabRoute, loadOptions) {\n if ( loadOptions === void 0 ) loadOptions = {};\n\n var router = this;\n var options = Utils.extend({\n animate: router.params.animate,\n pushState: true,\n history: true,\n parentPageEl: null,\n preload: false,\n on: {},\n }, loadOptions);\n\n var currentRoute;\n var 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.pushState && options.pushState && !options.reloadPrevious) {\n History.replace(\n router.view.id,\n {\n url: options.route.url,\n },\n (router.params.pushStateRoot || '') + router.params.pushStateSeparator + 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 var $parentPageEl = $(options.parentPageEl || router.currentPageEl);\n var 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 var tabShowResult = router.app.tab.show({\n tabEl: tabEl,\n animate: options.animate,\n tabRoute: options.route,\n });\n\n var $newTabEl = tabShowResult.$newTabEl;\n var $oldTabEl = tabShowResult.$oldTabEl;\n var animated = tabShowResult.animated;\n var onTabsChanged = tabShowResult.onTabsChanged;\n\n if ($newTabEl && $newTabEl.parents('.page').length > 0 && options.route) {\n var 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 var 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(function () {\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(function () {\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 var url = loadTabParams.url;\n var content = loadTabParams.content;\n var el = loadTabParams.el;\n var template = loadTabParams.template;\n var templateUrl = loadTabParams.templateUrl;\n var component = loadTabParams.component;\n var componentUrl = loadTabParams.componentUrl;\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(function (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 (template || templateUrl) {\n try {\n router.tabTemplateLoader(template, templateUrl, loadTabOptions, resolve, reject);\n } catch (err) {\n router.allowPageChange = true;\n throw err;\n }\n } else if (el) {\n resolve(el);\n } else if (component || componentUrl) {\n // Load from component (F7/Vue/React/...)\n try {\n router.tabComponentLoader($newTabEl[0], component, componentUrl, loadTabOptions, resolve, reject);\n } catch (err) {\n router.allowPageChange = true;\n throw err;\n }\n } else if (url) {\n // Load using XHR\n if (router.xhr) {\n router.xhr.abort();\n router.xhr = false;\n }\n router.xhrRequest(url, loadTabOptions)\n .then(function (tabContent) {\n resolve(tabContent);\n })\n .catch(function () {\n router.allowPageChange = true;\n });\n }\n }\n\n var hasContentLoadProp;\n ('url content component el componentUrl template templateUrl').split(' ').forEach(function (tabLoadProp) {\n var obj;\n\n if (tabRoute[tabLoadProp]) {\n hasContentLoadProp = true;\n loadTab(( obj = {}, obj[tabLoadProp] = tabRoute[tabLoadProp], obj ), options);\n }\n });\n\n // Async\n function asyncResolve(resolveParams, resolveOptions) {\n loadTab(resolveParams, Utils.extend(options, resolveOptions));\n }\n function asyncReject() {\n router.allowPageChange = true;\n }\n if (tabRoute.async) {\n tabRoute.async.call(router, currentRoute, previousRoute, asyncResolve, asyncReject);\n } else if (!hasContentLoadProp) {\n router.allowPageChange = true;\n }\n\n return router;\n }\n function tabRemove($oldTabEl, $newTabEl, tabRoute) {\n var router = this;\n\n var hasTabComponentChild;\n if ($oldTabEl[0]) {\n $oldTabEl[0].f7RouterTabLoaded = false;\n delete $oldTabEl[0].f7RouterTabLoaded;\n }\n $oldTabEl.children().each(function (index, 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\n function modalLoad(modalType, route, loadOptions) {\n if ( loadOptions === void 0 ) loadOptions = {};\n\n var router = this;\n var app = router.app;\n var isPanel = modalType === 'panel';\n var modalOrPanel = isPanel ? 'panel' : 'modal';\n\n var options = Utils.extend({\n animate: router.params.animate,\n pushState: true,\n history: true,\n on: {},\n }, loadOptions);\n\n var modalParams = Utils.extend({}, route.route[modalType]);\n var modalRoute = route.route;\n\n function onModalLoaded() {\n // Create Modal\n var modal = app[modalType].create(modalParams);\n modalRoute.modalInstance = modal;\n\n var hasEl = modal.el;\n\n function closeOnSwipeBack() {\n modal.close();\n }\n modal.on((modalOrPanel + \"Open\"), function () {\n if (!hasEl) {\n // Remove theme elements\n router.removeThemeElements(modal.el);\n\n // Emit events\n modal.$el.trigger(((modalType.toLowerCase()) + \":init \" + (modalType.toLowerCase()) + \":mounted\"), route, modal);\n router.emit(((!isPanel ? 'modalInit' : '') + \" \" + modalType + \"Init \" + modalType + \"Mounted\"), modal.el, route, modal);\n }\n router.once('swipeBackMove', closeOnSwipeBack);\n });\n modal.on((modalOrPanel + \"Close\"), function () {\n router.off('swipeBackMove', closeOnSwipeBack);\n if (!modal.closeByRouter) {\n router.back();\n }\n });\n\n modal.on((modalOrPanel + \"Closed\"), function () {\n modal.$el.trigger(((modalType.toLowerCase()) + \":beforeremove\"), route, modal);\n modal.emit((\"\" + (!isPanel ? 'modalBeforeRemove ' : '') + modalType + \"BeforeRemove\"), modal.el, route, modal);\n var modalComponent = modal.el.f7Component;\n if (modalComponent) {\n modalComponent.$destroy();\n }\n Utils.nextTick(function () {\n if (modalComponent || modalParams.component) {\n router.removeModal(modal.el);\n }\n modal.destroy();\n delete modal.route;\n delete modalRoute.modalInstance;\n });\n });\n\n if (options.route) {\n // Update Browser History\n if (router.params.pushState && options.pushState) {\n History.push(\n router.view.id,\n {\n url: options.route.url,\n modal: modalType,\n },\n (router.params.pushStateRoot || '') + router.params.pushStateSeparator + options.route.url\n );\n }\n\n // Set Route\n if (options.route !== router.currentRoute) {\n modal.route = Utils.extend(options.route, { modal: modal });\n router.currentRoute = modal.route;\n }\n\n // Update Router History\n if (options.history) {\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(((modalType.toLowerCase()) + \":init \" + (modalType.toLowerCase()) + \":mounted\"), route, modal);\n router.emit((modalOrPanel + \"Init \" + modalType + \"Init \" + modalType + \"Mounted\"), modal.el, route, modal);\n }\n\n // Open\n modal.open();\n }\n\n // Load Modal Content\n function loadModal(loadModalParams, loadModalOptions) {\n // Load Modal Props\n var url = loadModalParams.url;\n var content = loadModalParams.content;\n var template = loadModalParams.template;\n var templateUrl = loadModalParams.templateUrl;\n var component = loadModalParams.component;\n var componentUrl = loadModalParams.componentUrl;\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(function (componentEl) {\n modalParams.el = componentEl;\n app.root.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 (template || templateUrl) {\n try {\n router.modalTemplateLoader(template, templateUrl, loadModalOptions, resolve, reject);\n } catch (err) {\n router.allowPageChange = true;\n throw err;\n }\n } else if (component || componentUrl) {\n // Load from component (F7/Vue/React/...)\n try {\n router.modalComponentLoader(app.root[0], component, componentUrl, loadModalOptions, resolve, reject);\n } catch (err) {\n router.allowPageChange = true;\n throw err;\n }\n } else if (url) {\n // Load using XHR\n if (router.xhr) {\n router.xhr.abort();\n router.xhr = false;\n }\n router.xhrRequest(url, loadModalOptions)\n .then(function (modalContent) {\n modalParams.content = modalContent;\n onModalLoaded();\n })\n .catch(function () {\n router.allowPageChange = true;\n });\n } else {\n onModalLoaded();\n }\n }\n\n var foundLoadProp;\n ('url content component el componentUrl template templateUrl').split(' ').forEach(function (modalLoadProp) {\n var obj;\n\n if (modalParams[modalLoadProp] && !foundLoadProp) {\n foundLoadProp = true;\n loadModal(( obj = {}, obj[modalLoadProp] = modalParams[modalLoadProp], obj ), options);\n }\n });\n if (!foundLoadProp && modalType === 'actions') {\n onModalLoaded();\n }\n\n // Async\n function asyncResolve(resolveParams, resolveOptions) {\n loadModal(resolveParams, Utils.extend(options, resolveOptions));\n }\n function asyncReject() {\n router.allowPageChange = true;\n }\n if (modalParams.async) {\n modalParams.async.call(router, options.route, router.currentRoute, asyncResolve, asyncReject);\n }\n return router;\n }\n function modalRemove(modal) {\n Utils.extend(modal, { closeByRouter: true });\n modal.close();\n }\n\n function backward(el, backwardOptions) {\n var router = this;\n var $el = $(el);\n var app = router.app;\n var view = router.view;\n\n var options = Utils.extend({\n animate: router.params.animate,\n pushState: true,\n }, backwardOptions);\n\n var dynamicNavbar = router.dynamicNavbar;\n var separateNavbar = router.separateNavbar;\n\n var $newPage = $el;\n var $oldPage = router.$el.children('.page-current');\n\n if ($newPage.length) {\n // Remove theme elements\n router.removeThemeElements($newPage);\n }\n\n var $navbarEl;\n var $newNavbarInner;\n var $oldNavbarInner;\n\n if (dynamicNavbar) {\n $newNavbarInner = $newPage.children('.navbar').children('.navbar-inner');\n if (separateNavbar) {\n $navbarEl = router.$navbarEl;\n if ($newNavbarInner.length > 0) {\n $newPage.children('.navbar').remove();\n }\n if ($newNavbarInner.length === 0 && $newPage[0] && $newPage[0].f7Page) {\n // Try from pageData\n $newNavbarInner = $newPage[0].f7Page.$navbarEl;\n }\n $oldNavbarInner = $navbarEl.find('.navbar-current');\n } else {\n $oldNavbarInner = $oldPage.children('.navbar').children('.navbar-inner');\n }\n }\n\n router.allowPageChange = false;\n if ($newPage.length === 0 || $oldPage.length === 0) {\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 (options.route && options.route.route && options.route.route.keepAlive && !options.route.route.keepAliveData) {\n options.route.route.keepAliveData = {\n pageEl: $el[0],\n };\n }\n\n // New Page\n $newPage\n .addClass('page-previous')\n .removeClass('stacked')\n .removeAttr('aria-hidden')\n .trigger('page:unstack')\n .trigger('page:position', { position: 'previous' });\n\n if (dynamicNavbar && $newNavbarInner.length > 0) {\n $newNavbarInner\n .addClass('navbar-previous')\n .removeClass('stacked')\n .removeAttr('aria-hidden');\n }\n\n // Remove previous page in case of \"forced\"\n var backIndex;\n if (options.force) {\n if ($oldPage.prev('.page-previous:not(.stacked)').length > 0 || $oldPage.prev('.page-previous').length === 0) {\n if (router.history.indexOf(options.route.url) >= 0) {\n backIndex = router.history.length - router.history.indexOf(options.route.url) - 1;\n router.history = router.history.slice(0, router.history.indexOf(options.route.url) + 2);\n 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(function (index, pageToRemove) {\n var $pageToRemove = $(pageToRemove);\n var $navbarToRemove;\n if (separateNavbar) {\n // $navbarToRemove = $oldNavbarInner.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 if (separateNavbar) {\n $navbarToRemove.addClass('stacked');\n }\n } else {\n router.pageCallback('beforeRemove', $pageToRemove, $navbarToRemove, 'previous', undefined, options);\n router.removePage($pageToRemove);\n if (separateNavbar && $navbarToRemove.length > 0) {\n router.removeNavbar($navbarToRemove);\n }\n }\n }\n });\n } else {\n var $pageToRemove = $oldPage.prev('.page-previous:not(.stacked)');\n var $navbarToRemove;\n if (separateNavbar) {\n // $navbarToRemove = $oldNavbarInner.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 $navbarToRemove.addClass('stacked');\n } else if ($pageToRemove.length > 0) {\n router.pageCallback('beforeRemove', $pageToRemove, $navbarToRemove, 'previous', undefined, options);\n router.removePage($pageToRemove);\n if (separateNavbar && $navbarToRemove.length) {\n router.removeNavbar($navbarToRemove);\n }\n }\n }\n }\n }\n\n // Insert new page\n var newPageInDom = $newPage.parents(doc).length > 0;\n var f7Component = $newPage[0].f7Component;\n\n function insertPage() {\n if ($newPage.next($oldPage).length === 0) {\n if (!newPageInDom && f7Component) {\n f7Component.$mount(function (componentEl) {\n $(componentEl).insertBefore($oldPage);\n });\n } else {\n $newPage.insertBefore($oldPage);\n }\n }\n if (separateNavbar && $newNavbarInner.length) {\n $newNavbarInner.insertBefore($oldNavbarInner);\n if ($oldNavbarInner.length > 0) {\n $newNavbarInner.insertBefore($oldNavbarInner);\n } else {\n if (!router.$navbarEl.parents(doc).length) {\n router.$el.prepend(router.$navbarEl);\n }\n $navbarEl.append($newNavbarInner);\n }\n }\n if (!newPageInDom) {\n router.pageCallback('mounted', $newPage, $newNavbarInner, 'previous', 'current', options, $oldPage);\n } else if (options.route && options.route.route && options.route.route.keepAlive && !$newPage[0].f7PageMounted) {\n $newPage[0].f7PageMounted = true;\n router.pageCallback('mounted', $newPage, $newNavbarInner, 'previous', 'current', options, $oldPage);\n }\n }\n\n if (options.preload) {\n // Insert Page\n insertPage();\n // Tab route\n if (options.route.route.tab) {\n router.tabLoad(options.route.route.tab, Utils.extend({}, options, {\n history: false,\n pushState: false,\n preload: true,\n }));\n }\n // Page init and before init events\n router.pageCallback('init', $newPage, $newNavbarInner, 'previous', 'current', options, $oldPage);\n if ($newPage.prevAll('.page-previous:not(.stacked)').length > 0) {\n $newPage.prevAll('.page-previous:not(.stacked)').each(function (index, pageToRemove) {\n var $pageToRemove = $(pageToRemove);\n var $navbarToRemove;\n if (separateNavbar) {\n // $navbarToRemove = $newNavbarInner.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 if (separateNavbar) {\n $navbarToRemove.addClass('stacked');\n }\n } else {\n router.pageCallback('beforeRemove', $pageToRemove, $navbarToRemove, 'previous', undefined);\n router.removePage($pageToRemove);\n if (separateNavbar && $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.pushState && options.pushState) {\n if (backIndex) { History.go(-backIndex); }\n else { History.back(); }\n }\n }\n\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 // Current Page & Navbar\n router.currentPageEl = $newPage[0];\n if (dynamicNavbar && $newNavbarInner.length) {\n router.currentNavbarEl = $newNavbarInner[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.pushState && options.pushState) {\n if (backIndex) { History.go(-backIndex); }\n else { History.back(); }\n }\n }\n\n // Insert Page\n insertPage();\n\n // Load Tab\n if (options.route.route.tab) {\n router.tabLoad(options.route.route.tab, Utils.extend({}, options, {\n history: false,\n pushState: false,\n }));\n }\n\n // Page init and before init events\n router.pageCallback('init', $newPage, $newNavbarInner, 'previous', 'current', options, $oldPage);\n\n // Before animation callback\n router.pageCallback('beforeIn', $newPage, $newNavbarInner, 'previous', 'current', options);\n router.pageCallback('beforeOut', $oldPage, $oldNavbarInner, 'current', 'next', options);\n\n // Animation\n function afterAnimation() {\n // Set classes\n var pageClasses = 'page-previous page-current page-next';\n var navbarClasses = 'navbar-previous navbar-current navbar-next';\n $newPage.removeClass(pageClasses).addClass('page-current').removeAttr('aria-hidden');\n $oldPage.removeClass(pageClasses).addClass('page-next').attr('aria-hidden', 'true');\n if (dynamicNavbar) {\n $newNavbarInner.removeClass(navbarClasses).addClass('navbar-current').removeAttr('aria-hidden');\n $oldNavbarInner.removeClass(navbarClasses).addClass('navbar-next').attr('aria-hidden', 'true');\n }\n\n // After animation event\n router.pageCallback('afterIn', $newPage, $newNavbarInner, 'previous', 'current', options);\n router.pageCallback('afterOut', $oldPage, $oldNavbarInner, 'current', 'next', 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 if (separateNavbar) {\n $oldNavbarInner.addClass('stacked');\n }\n } else {\n router.pageCallback('beforeRemove', $oldPage, $oldNavbarInner, 'next', undefined, options);\n router.removePage($oldPage);\n if (separateNavbar && $oldNavbarInner.length) {\n router.removeNavbar($oldNavbarInner);\n }\n }\n\n router.allowPageChange = true;\n router.emit('routeChanged', router.currentRoute, router.previousRoute, router);\n\n // Preload previous page\n var preloadPreviousPage = app.theme === 'ios' ? (router.params.preloadPreviousPage || router.params.iosSwipeBack) : router.params.preloadPreviousPage;\n if (preloadPreviousPage && router.history[router.history.length - 2]) {\n router.back(router.history[router.history.length - 2], { preload: true });\n }\n if (router.params.pushState) {\n History.clearRouterQueue();\n }\n }\n\n function setPositionClasses() {\n var pageClasses = 'page-previous page-current page-next';\n var navbarClasses = 'navbar-previous navbar-current navbar-next';\n $oldPage.removeClass(pageClasses).addClass('page-current');\n $newPage.removeClass(pageClasses).addClass('page-previous').removeAttr('aria-hidden');\n if (dynamicNavbar) {\n $oldNavbarInner.removeClass(navbarClasses).addClass('navbar-current');\n $newNavbarInner.removeClass(navbarClasses).addClass('navbar-previous').removeAttr('aria-hidden');\n }\n }\n\n if (options.animate) {\n setPositionClasses();\n router.animate($oldPage, $newPage, $oldNavbarInner, $newNavbarInner, 'backward', function () {\n afterAnimation();\n });\n } else {\n afterAnimation();\n }\n\n return router;\n }\n function loadBack(backParams, backOptions, ignorePageChange) {\n var router = this;\n\n if (!router.allowPageChange && !ignorePageChange) { return router; }\n var params = backParams;\n var options = backOptions;\n var url = params.url;\n var content = params.content;\n var el = params.el;\n var pageName = params.pageName;\n var template = params.template;\n var templateUrl = params.templateUrl;\n var component = params.component;\n var componentUrl = params.componentUrl;\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 router.backward(pageEl, Utils.extend(options, newOptions));\n }\n function reject() {\n router.allowPageChange = true;\n return router;\n }\n\n if (url || templateUrl || componentUrl) {\n router.allowPageChange = false;\n }\n\n // Proceed\n if (content) {\n router.backward(router.getPageEl(content), options);\n } else if (template || templateUrl) {\n // Parse template and send page element\n try {\n router.pageTemplateLoader(template, templateUrl, options, resolve, reject);\n } catch (err) {\n router.allowPageChange = true;\n throw err;\n }\n } else if (el) {\n // Load page from specified HTMLElement or by page name in pages container\n router.backward(router.getPageEl(el), options);\n } else if (pageName) {\n // Load page by page name in pages container\n router.backward(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(router.el, component, componentUrl, options, resolve, reject);\n } catch (err) {\n router.allowPageChange = true;\n throw err;\n }\n } else if (url) {\n // Load using XHR\n if (router.xhr) {\n router.xhr.abort();\n router.xhr = false;\n }\n router.xhrRequest(url, options)\n .then(function (pageContent) {\n router.backward(router.getPageEl(pageContent), options);\n })\n .catch(function () {\n router.allowPageChange = true;\n });\n }\n return router;\n }\n function back() {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var router = this;\n if (router.swipeBackActive) { return router; }\n var navigateUrl;\n var navigateOptions;\n var route;\n if (typeof args[0] === 'object') {\n navigateOptions = args[0] || {};\n } else {\n navigateUrl = args[0];\n navigateOptions = args[1] || {};\n }\n\n var name = navigateOptions.name;\n var params = navigateOptions.params;\n var query = navigateOptions.query;\n if (name) {\n // find route by name\n route = router.findRouteByKey('name', name);\n if (!route) {\n throw new Error((\"Framework7: route with name \\\"\" + name + \"\\\" not found\"));\n }\n navigateUrl = router.constructRouteUrl(route, { params: params, query: query });\n if (navigateUrl) {\n return router.back(navigateUrl, Utils.extend({}, navigateOptions, {\n name: null,\n params: null,\n query: null,\n }));\n }\n throw new Error((\"Framework7: can't construct URL for route with name \\\"\" + name + \"\\\"\"));\n }\n\n var app = router.app;\n appRouterCheck(router, 'back');\n\n var currentRouteIsModal = router.currentRoute.modal;\n var modalType;\n if (!currentRouteIsModal) {\n ('popup popover sheet loginScreen actions customModal panel').split(' ').forEach(function (modalLoadProp) {\n if (router.currentRoute.route[modalLoadProp]) {\n currentRouteIsModal = true;\n modalType = modalLoadProp;\n }\n });\n }\n if (currentRouteIsModal) {\n var modalToClose = router.currentRoute.modal\n || router.currentRoute.route.modalInstance\n || app[modalType].get();\n var previousUrl = router.history[router.history.length - 2];\n var previousRoute;\n // check if previous route is modal too\n if (modalToClose && modalToClose.$el) {\n var prevOpenedModals = modalToClose.$el.prevAll('.modal-in');\n if (prevOpenedModals.length && prevOpenedModals[0].f7Modal) {\n previousRoute = prevOpenedModals[0].f7Modal.route;\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: Utils.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 var forceOtherUrl = navigateOptions.force && previousRoute && navigateUrl;\n if (previousRoute && modalToClose) {\n if (router.params.pushState && navigateOptions.pushState !== false) {\n History.back();\n }\n router.currentRoute = previousRoute;\n router.history.pop();\n router.saveHistory();\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 var $previousPage = router.$el.children('.page-current').prevAll('.page-previous').eq(0);\n if (!navigateOptions.force && $previousPage.length > 0) {\n if (router.params.pushState\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 Utils.extend(navigateOptions, { force: true })\n );\n return router;\n }\n\n var previousPageRoute = $previousPage[0].f7Page.route;\n processRouteQueue.call(\n router,\n previousPageRoute,\n router.currentRoute,\n function () {\n router.loadBack({ el: $previousPage }, Utils.extend(navigateOptions, {\n route: previousPageRoute,\n }));\n },\n function () {}\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\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: Utils.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, 'back', route, navigateOptions);\n }\n\n var options = {};\n if (route.route.options) {\n Utils.extend(options, route.route.options, navigateOptions);\n } else {\n Utils.extend(options, navigateOptions);\n }\n options.route = route;\n\n if (options && options.context) {\n route.context = options.context;\n options.route.context = options.context;\n }\n\n var backForceLoaded;\n if (options.force && router.params.stackPages) {\n router.$el.children('.page-previous.stacked').each(function (index, pageEl) {\n if (pageEl.f7Page && pageEl.f7Page.route && pageEl.f7Page.route.url === route.url) {\n backForceLoaded = true;\n router.loadBack({ el: pageEl }, options);\n }\n });\n if (backForceLoaded) {\n return router;\n }\n }\n function resolve() {\n var routerLoaded = false;\n if (route.route.keepAlive && route.route.keepAliveData) {\n router.loadBack({ el: route.route.keepAliveData.pageEl }, options);\n routerLoaded = true;\n }\n ('url content component pageName el componentUrl template templateUrl').split(' ').forEach(function (pageLoadProp) {\n var obj;\n\n if (route.route[pageLoadProp] && !routerLoaded) {\n routerLoaded = true;\n router.loadBack(( obj = {}, obj[pageLoadProp] = route.route[pageLoadProp], obj ), options);\n }\n });\n if (routerLoaded) { return; }\n // Async\n function asyncResolve(resolveParams, resolveOptions) {\n router.allowPageChange = false;\n if (resolveOptions && resolveOptions.context) {\n if (!route.context) { route.context = resolveOptions.context; }\n else { route.context = Utils.extend({}, route.context, resolveOptions.context); }\n options.route.context = route.context;\n }\n router.loadBack(resolveParams, Utils.extend(options, resolveOptions), true);\n }\n function asyncReject() {\n router.allowPageChange = true;\n }\n if (route.route.async) {\n router.allowPageChange = false;\n\n route.route.async.call(router, route, router.currentRoute, 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 function () {\n if (route.route.modules) {\n app\n .loadModules(Array.isArray(route.route.modules) ? route.route.modules : [route.route.modules])\n .then(function () {\n resolve();\n })\n .catch(function () {\n reject();\n });\n } else {\n resolve();\n }\n },\n function () {\n reject();\n }\n );\n }\n\n // Return Router\n return router;\n }\n\n function clearPreviousPages() {\n var router = this;\n appRouterCheck(router, 'clearPreviousPages');\n var app = router.app;\n var separateNavbar = router.separateNavbar;\n\n var $pagesToRemove = router.$el\n .children('.page')\n .filter(function (index, pageInView) {\n if (router.currentRoute && (router.currentRoute.modal || router.currentRoute.panel)) { return true; }\n return pageInView !== router.currentPageEl;\n });\n\n $pagesToRemove.each(function (index, pageEl) {\n var $oldPageEl = $(pageEl);\n var $oldNavbarInnerEl = $(app.navbar.getElByPage($oldPageEl));\n if (router.params.stackPages && router.initialPages.indexOf($oldPageEl[0]) >= 0) {\n $oldPageEl.addClass('stacked');\n if (separateNavbar) {\n $oldNavbarInnerEl.addClass('stacked');\n }\n } else {\n // Page remove event\n router.pageCallback('beforeRemove', $oldPageEl, $oldNavbarInnerEl, 'previous', undefined, {});\n router.removePage($oldPageEl);\n if (separateNavbar && $oldNavbarInnerEl.length) {\n router.removeNavbar($oldNavbarInnerEl);\n }\n }\n });\n }\n\n function clearPreviousHistory() {\n var router = this;\n appRouterCheck(router, 'clearPreviousHistory');\n var url = router.history[router.history.length - 1];\n\n router.clearPreviousPages();\n\n router.history = [url];\n router.view.history = [url];\n router.saveHistory();\n }\n\n var Router = /*@__PURE__*/(function (Framework7Class$$1) {\n function Router(app, view) {\n Framework7Class$$1.call(this, {}, [typeof view === 'undefined' ? app : view]);\n var router = this;\n\n // Is App Router\n router.isAppRouter = typeof view === 'undefined';\n\n if (router.isAppRouter) {\n // App Router\n Utils.extend(false, router, {\n app: app,\n params: app.params.view,\n routes: app.routes || [],\n cache: app.cache,\n });\n } else {\n // View Router\n Utils.extend(false, router, {\n app: app,\n view: view,\n viewId: view.id,\n params: view.params,\n routes: view.routes,\n $el: view.$el,\n el: view.el,\n $navbarEl: view.$navbarEl,\n navbarEl: view.navbarEl,\n history: view.history,\n scrollHistory: view.scrollHistory,\n cache: app.cache,\n dynamicNavbar: app.theme === 'ios' && view.params.iosDynamicNavbar,\n separateNavbar: app.theme === 'ios' && view.params.iosDynamicNavbar && view.params.iosSeparateDynamicNavbar,\n initialPages: [],\n initialNavbars: [],\n });\n }\n\n // Install Modules\n router.useModules();\n\n // Temporary Dom\n router.tempDom = doc.createElement('div');\n\n // AllowPageChage\n router.allowPageChange = true;\n\n // Current Route\n var currentRoute = {};\n var previousRoute = {};\n Object.defineProperty(router, 'currentRoute', {\n enumerable: true,\n configurable: true,\n set: function set(newRoute) {\n if ( newRoute === void 0 ) newRoute = {};\n\n previousRoute = Utils.extend({}, currentRoute);\n currentRoute = newRoute;\n if (!currentRoute) { return; }\n router.url = currentRoute.url;\n router.emit('routeChange', newRoute, previousRoute, router);\n },\n get: function get() {\n return currentRoute;\n },\n });\n Object.defineProperty(router, 'previousRoute', {\n enumerable: true,\n configurable: true,\n get: function get() {\n return previousRoute;\n },\n set: function set(newRoute) {\n previousRoute = newRoute;\n },\n });\n\n return router;\n }\n\n if ( Framework7Class$$1 ) Router.__proto__ = Framework7Class$$1;\n Router.prototype = Object.create( Framework7Class$$1 && Framework7Class$$1.prototype );\n Router.prototype.constructor = Router;\n\n Router.prototype.animatableNavElements = function animatableNavElements (newNavbarInner, oldNavbarInner) {\n var router = this;\n var dynamicNavbar = router.dynamicNavbar;\n var animateIcon = router.params.iosAnimateNavbarBackIcon;\n\n var newNavEls;\n var oldNavEls;\n function animatableNavEl(el, navbarInner) {\n var $el = $(el);\n var isSliding = $el.hasClass('sliding') || navbarInner.hasClass('sliding');\n var isSubnavbar = $el.hasClass('subnavbar');\n var needsOpacityTransition = isSliding ? !isSubnavbar : true;\n var hasIcon = isSliding && animateIcon && $el.hasClass('left') && $el.find('.back .icon').length > 0;\n var $iconEl;\n if (hasIcon) { $iconEl = $el.find('.back .icon'); }\n return {\n $el: $el,\n $iconEl: $iconEl,\n hasIcon: hasIcon,\n leftOffset: $el[0].f7NavbarLeftOffset,\n rightOffset: $el[0].f7NavbarRightOffset,\n isSliding: isSliding,\n isSubnavbar: isSubnavbar,\n needsOpacityTransition: needsOpacityTransition,\n };\n }\n if (dynamicNavbar) {\n newNavEls = [];\n oldNavEls = [];\n newNavbarInner.children('.left, .right, .title, .subnavbar').each(function (index, navEl) {\n newNavEls.push(animatableNavEl(navEl, newNavbarInner));\n });\n oldNavbarInner.children('.left, .right, .title, .subnavbar').each(function (index, navEl) {\n oldNavEls.push(animatableNavEl(navEl, oldNavbarInner));\n });\n [oldNavEls, newNavEls].forEach(function (navEls) {\n navEls.forEach(function (navEl) {\n var n = navEl;\n var isSliding = navEl.isSliding;\n var $el = navEl.$el;\n var otherEls = navEls === oldNavEls ? newNavEls : oldNavEls;\n if (!(isSliding && $el.hasClass('title') && otherEls)) { return; }\n otherEls.forEach(function (otherNavEl) {\n if (otherNavEl.$el.hasClass('left') && otherNavEl.hasIcon) {\n var iconTextEl = otherNavEl.$el.find('.back span')[0];\n n.leftOffset += iconTextEl ? iconTextEl.offsetLeft : 0;\n }\n });\n });\n });\n }\n\n return { newNavEls: newNavEls, oldNavEls: oldNavEls };\n };\n\n Router.prototype.animateWithCSS = function animateWithCSS (oldPage, newPage, oldNavbarInner, newNavbarInner, direction, callback) {\n var router = this;\n var dynamicNavbar = router.dynamicNavbar;\n var separateNavbar = router.separateNavbar;\n var ios = router.app.theme === 'ios';\n // Router Animation class\n var routerTransitionClass = \"router-transition-\" + direction + \" router-transition-css-\" + direction;\n\n var newNavEls;\n var oldNavEls;\n var navbarWidth = 0;\n\n if (ios && dynamicNavbar) {\n if (!separateNavbar) {\n navbarWidth = newNavbarInner[0].offsetWidth;\n }\n var navEls = router.animatableNavElements(newNavbarInner, oldNavbarInner);\n newNavEls = navEls.newNavEls;\n oldNavEls = navEls.oldNavEls;\n }\n\n function animateNavbars(progress) {\n if (ios && dynamicNavbar) {\n newNavEls.forEach(function (navEl) {\n var $el = navEl.$el;\n var offset = direction === 'forward' ? navEl.rightOffset : navEl.leftOffset;\n if (navEl.isSliding) {\n $el.transform((\"translate3d(\" + (offset * (1 - progress)) + \"px,0,0)\"));\n }\n if (navEl.hasIcon) {\n if (direction === 'forward') {\n navEl.$iconEl.transform((\"translate3d(\" + ((-offset - navbarWidth) * (1 - progress)) + \"px,0,0)\"));\n } else {\n navEl.$iconEl.transform((\"translate3d(\" + ((-offset + (navbarWidth / 5)) * (1 - progress)) + \"px,0,0)\"));\n }\n }\n });\n oldNavEls.forEach(function (navEl) {\n var $el = navEl.$el;\n var offset = direction === 'forward' ? navEl.leftOffset : navEl.rightOffset;\n if (navEl.isSliding) {\n $el.transform((\"translate3d(\" + (offset * (progress)) + \"px,0,0)\"));\n }\n if (navEl.hasIcon) {\n if (direction === 'forward') {\n navEl.$iconEl.transform((\"translate3d(\" + ((-offset + (navbarWidth / 5)) * (progress)) + \"px,0,0)\"));\n } else {\n navEl.$iconEl.transform((\"translate3d(\" + ((-offset - navbarWidth) * (progress)) + \"px,0,0)\"));\n }\n }\n });\n }\n }\n\n // AnimationEnd Callback\n function onDone() {\n if (router.dynamicNavbar) {\n if (newNavbarInner.hasClass('sliding')) {\n newNavbarInner.find('.title, .left, .right, .left .icon, .subnavbar').transform('');\n } else {\n newNavbarInner.find('.sliding').transform('');\n }\n if (oldNavbarInner.hasClass('sliding')) {\n oldNavbarInner.find('.title, .left, .right, .left .icon, .subnavbar').transform('');\n } else {\n oldNavbarInner.find('.sliding').transform('');\n }\n }\n router.$el.removeClass(routerTransitionClass);\n if (callback) { callback(); }\n }\n\n (direction === 'forward' ? newPage : oldPage).animationEnd(function () {\n onDone();\n });\n\n // Animate\n if (dynamicNavbar) {\n // Prepare Navbars\n animateNavbars(0);\n Utils.nextFrame(function () {\n // Add class, start animation\n animateNavbars(1);\n router.$el.addClass(routerTransitionClass);\n });\n } else {\n // Add class, start animation\n router.$el.addClass(routerTransitionClass);\n }\n };\n\n Router.prototype.animateWithJS = function animateWithJS (oldPage, newPage, oldNavbarInner, newNavbarInner, direction, callback) {\n var router = this;\n var dynamicNavbar = router.dynamicNavbar;\n var separateNavbar = router.separateNavbar;\n var ios = router.app.theme === 'ios';\n var duration = ios ? 400 : 250;\n var routerTransitionClass = \"router-transition-\" + direction + \" router-transition-js-\" + direction;\n\n var startTime = null;\n var done = false;\n\n var newNavEls;\n var oldNavEls;\n var navbarWidth = 0;\n\n if (ios && dynamicNavbar) {\n if (!separateNavbar) {\n navbarWidth = newNavbarInner[0].offsetWidth;\n }\n var navEls = router.animatableNavElements(newNavbarInner, oldNavbarInner);\n newNavEls = navEls.newNavEls;\n oldNavEls = navEls.oldNavEls;\n }\n\n var $shadowEl;\n var $opacityEl;\n\n if (ios) {\n $shadowEl = $('<div class=\"page-shadow-effect\"></div>');\n $opacityEl = $('<div class=\"page-opacity-effect\"></div>');\n\n if (direction === 'forward') {\n newPage.append($shadowEl);\n oldPage.append($opacityEl);\n } else {\n newPage.append($opacityEl);\n oldPage.append($shadowEl);\n }\n }\n var easing = Utils.bezier(0.25, 0.1, 0.25, 1);\n\n function onDone() {\n newPage.transform('').css('opacity', '');\n oldPage.transform('').css('opacity', '');\n if (ios) {\n $shadowEl.remove();\n $opacityEl.remove();\n if (dynamicNavbar) {\n newNavEls.forEach(function (navEl) {\n navEl.$el.transform('');\n navEl.$el.css('opacity', '');\n });\n oldNavEls.forEach(function (navEl) {\n navEl.$el.transform('');\n navEl.$el.css('opacity', '');\n });\n newNavEls = [];\n oldNavEls = [];\n }\n }\n\n router.$el.removeClass(routerTransitionClass);\n\n if (callback) { callback(); }\n }\n\n function render() {\n var time = Utils.now();\n if (!startTime) { startTime = time; }\n var progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n var easeProgress = easing(progress);\n\n if (progress >= 1) {\n done = true;\n }\n var inverter = router.app.rtl ? -1 : 1;\n if (ios) {\n if (direction === 'forward') {\n newPage.transform((\"translate3d(\" + ((1 - easeProgress) * 100 * inverter) + \"%,0,0)\"));\n oldPage.transform((\"translate3d(\" + (-easeProgress * 20 * inverter) + \"%,0,0)\"));\n $shadowEl[0].style.opacity = easeProgress;\n $opacityEl[0].style.opacity = easeProgress;\n } else {\n newPage.transform((\"translate3d(\" + (-(1 - easeProgress) * 20 * inverter) + \"%,0,0)\"));\n oldPage.transform((\"translate3d(\" + (easeProgress * 100 * inverter) + \"%,0,0)\"));\n $shadowEl[0].style.opacity = 1 - easeProgress;\n $opacityEl[0].style.opacity = 1 - easeProgress;\n }\n if (dynamicNavbar) {\n newNavEls.forEach(function (navEl) {\n var $el = navEl.$el;\n var offset = direction === 'forward' ? navEl.rightOffset : navEl.leftOffset;\n if (navEl.needsOpacityTransition) {\n $el[0].style.opacity = easeProgress;\n }\n if (navEl.isSliding) {\n $el.transform((\"translate3d(\" + (offset * (1 - easeProgress)) + \"px,0,0)\"));\n }\n if (navEl.hasIcon) {\n if (direction === 'forward') {\n navEl.$iconEl.transform((\"translate3d(\" + ((-offset - navbarWidth) * (1 - easeProgress)) + \"px,0,0)\"));\n } else {\n navEl.$iconEl.transform((\"translate3d(\" + ((-offset + (navbarWidth / 5)) * (1 - easeProgress)) + \"px,0,0)\"));\n }\n }\n });\n oldNavEls.forEach(function (navEl) {\n var $el = navEl.$el;\n var offset = direction === 'forward' ? navEl.leftOffset : navEl.rightOffset;\n if (navEl.needsOpacityTransition) {\n $el[0].style.opacity = (1 - easeProgress);\n }\n if (navEl.isSliding) {\n $el.transform((\"translate3d(\" + (offset * (easeProgress)) + \"px,0,0)\"));\n }\n if (navEl.hasIcon) {\n if (direction === 'forward') {\n navEl.$iconEl.transform((\"translate3d(\" + ((-offset + (navbarWidth / 5)) * (easeProgress)) + \"px,0,0)\"));\n } else {\n navEl.$iconEl.transform((\"translate3d(\" + ((-offset - navbarWidth) * (easeProgress)) + \"px,0,0)\"));\n }\n }\n });\n }\n } else if (direction === 'forward') {\n newPage.transform((\"translate3d(0, \" + ((1 - easeProgress) * 56) + \"px,0)\"));\n newPage.css('opacity', easeProgress);\n } else {\n oldPage.transform((\"translate3d(0, \" + (easeProgress * 56) + \"px,0)\"));\n oldPage.css('opacity', 1 - easeProgress);\n }\n\n if (done) {\n onDone();\n return;\n }\n Utils.requestAnimationFrame(render);\n }\n\n router.$el.addClass(routerTransitionClass);\n\n Utils.requestAnimationFrame(render);\n };\n\n Router.prototype.animate = function animate () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n // Args: oldPage, newPage, oldNavbarInner, newNavbarInner, direction, callback\n var router = this;\n if (router.params.animateCustom) {\n router.params.animateCustom.apply(router, args);\n } else if (router.params.animateWithJS) {\n router.animateWithJS.apply(router, args);\n } else {\n router.animateWithCSS.apply(router, args);\n }\n };\n\n Router.prototype.removeModal = function removeModal (modalEl) {\n var router = this;\n router.removeEl(modalEl);\n };\n // eslint-disable-next-line\n Router.prototype.removeTabContent = function removeTabContent (tabEl) {\n var $tabEl = $(tabEl);\n $tabEl.html('');\n };\n\n Router.prototype.removeNavbar = function removeNavbar (el) {\n var router = this;\n router.removeEl(el);\n };\n\n Router.prototype.removePage = function removePage (el) {\n var $el = $(el);\n var f7Page = $el && $el[0] && $el[0].f7Page;\n var 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 Router.prototype.removeEl = function removeEl (el) {\n if (!el) { return; }\n var router = this;\n var $el = $(el);\n if ($el.length === 0) { return; }\n $el.find('.tab').each(function (tabIndex, tabEl) {\n $(tabEl).children().each(function (index, 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(function () {\n $el.remove();\n }, router.params.removeElementsTimeout);\n } else {\n $el.remove();\n }\n };\n\n Router.prototype.getPageEl = function getPageEl (content) {\n var 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 Router.prototype.findElement = function findElement (stringSelector, container, notStacked) {\n var router = this;\n var view = router.view;\n var app = router.app;\n\n // Modals Selector\n var modalsSelector = '.popup, .dialog, .popover, .actions-modal, .sheet-modal, .login-screen, .page';\n\n var $container = $(container);\n var selector = stringSelector;\n if (notStacked) { selector += ':not(.stacked)'; }\n\n var found = $container\n .find(selector)\n .filter(function (index, el) { return $(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 Router.prototype.flattenRoutes = function flattenRoutes (routes) {\n var this$1 = this;\n if ( routes === void 0 ) routes = this.routes;\n\n var flattenedRoutes = [];\n routes.forEach(function (route) {\n var hasTabRoutes = false;\n if ('tabs' in route && route.tabs) {\n var mergedPathsRoutes = route.tabs.map(function (tabRoute) {\n var tRoute = Utils.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(this$1.flattenRoutes(mergedPathsRoutes));\n }\n if ('routes' in route) {\n var mergedPathsRoutes$1 = route.routes.map(function (childRoute) {\n var cRoute = Utils.extend({}, childRoute);\n cRoute.path = (((route.path) + \"/\" + (cRoute.path))).replace('///', '/').replace('//', '/');\n return cRoute;\n });\n if (hasTabRoutes) {\n flattenedRoutes = flattenedRoutes.concat(this$1.flattenRoutes(mergedPathsRoutes$1));\n } else {\n flattenedRoutes = flattenedRoutes.concat(route, this$1.flattenRoutes(mergedPathsRoutes$1));\n }\n }\n if (!('routes' in route) && !('tabs' in route && route.tabs)) {\n flattenedRoutes.push(route);\n }\n });\n return flattenedRoutes;\n };\n\n // eslint-disable-next-line\n Router.prototype.parseRouteUrl = function parseRouteUrl (url) {\n if (!url) { return {}; }\n var query = Utils.parseUrlQuery(url);\n var hash = url.split('#')[1];\n var params = {};\n var path = url.split('#')[0].split('?')[0];\n return {\n query: query,\n hash: hash,\n params: params,\n url: url,\n path: path,\n };\n };\n\n // eslint-disable-next-line\n Router.prototype.constructRouteUrl = function constructRouteUrl (route, ref) {\n if ( ref === void 0 ) ref = {};\n var params = ref.params;\n var query = ref.query;\n\n var path = route.path;\n var toUrl = pathToRegexp_1.compile(path);\n var url;\n try {\n url = toUrl(params || {});\n } catch (error) {\n throw new Error((\"Framework7: error constructing route URL from passed params:\\nRoute: \" + path + \"\\n\" + (error.toString())));\n }\n\n if (query) {\n if (typeof query === 'string') { url += \"?\" + query; }\n else { url += \"?\" + (Utils.serializeObject(query)); }\n }\n\n return url;\n };\n\n Router.prototype.findTabRoute = function findTabRoute (tabEl) {\n var router = this;\n var $tabEl = $(tabEl);\n var parentPath = router.currentRoute.route.parentPath;\n var tabId = $tabEl.attr('id');\n var flattenedRoutes = router.flattenRoutes(router.routes);\n var foundTabRoute;\n flattenedRoutes.forEach(function (route) {\n if (\n route.parentPath === parentPath\n && route.tab\n && route.tab.id === tabId\n ) {\n foundTabRoute = route;\n }\n });\n return foundTabRoute;\n };\n\n Router.prototype.findRouteByKey = function findRouteByKey (key, value) {\n var router = this;\n var routes = router.routes;\n var flattenedRoutes = router.flattenRoutes(routes);\n var matchingRoute;\n\n flattenedRoutes.forEach(function (route) {\n if (matchingRoute) { return; }\n if (route[key] === value) {\n matchingRoute = route;\n }\n });\n return matchingRoute;\n };\n\n Router.prototype.findMatchingRoute = function findMatchingRoute (url) {\n if (!url) { return undefined; }\n var router = this;\n var routes = router.routes;\n var flattenedRoutes = router.flattenRoutes(routes);\n var ref = router.parseRouteUrl(url);\n var path = ref.path;\n var query = ref.query;\n var hash = ref.hash;\n var params = ref.params;\n var matchingRoute;\n flattenedRoutes.forEach(function (route) {\n if (matchingRoute) { return; }\n var keys = [];\n\n var 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(function (aliasPath) {\n pathsToMatch.push(aliasPath);\n });\n }\n }\n\n var matched;\n pathsToMatch.forEach(function (pathToMatch) {\n if (matched) { return; }\n matched = pathToRegexp_1(pathToMatch, keys).exec(path);\n });\n\n if (matched) {\n keys.forEach(function (keyObj, index) {\n if (typeof keyObj.name === 'number') { return; }\n var paramValue = matched[index + 1];\n params[keyObj.name] = paramValue;\n });\n\n var parentPath;\n if (route.parentPath) {\n parentPath = path.split('/').slice(0, route.parentPath.split('/').length - 1).join('/');\n }\n\n matchingRoute = {\n query: query,\n hash: hash,\n params: params,\n url: url,\n path: path,\n parentPath: parentPath,\n route: route,\n name: route.name,\n };\n }\n });\n return matchingRoute;\n };\n\n // eslint-disable-next-line\n Router.prototype.replaceRequestUrlParams = function replaceRequestUrlParams (url, options) {\n if ( url === void 0 ) url = '';\n if ( options === void 0 ) options = {};\n\n var compiledUrl = url;\n if (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(function (paramName) {\n var regExp = new RegExp((\"{{\" + paramName + \"}}\"), 'g');\n compiledUrl = compiledUrl.replace(regExp, options.route.params[paramName] || '');\n });\n }\n return compiledUrl;\n };\n\n Router.prototype.removeFromXhrCache = function removeFromXhrCache (url) {\n var router = this;\n var xhrCache = router.cache.xhr;\n var index = false;\n for (var 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 Router.prototype.xhrRequest = function xhrRequest (requestUrl, options) {\n var router = this;\n var params = router.params;\n var ignoreCache = options.ignoreCache;\n var url = requestUrl;\n\n var hasQuery = url.indexOf('?') >= 0;\n if (params.passRouteQueryToRequest\n && options\n && options.route\n && options.route.query\n && Object.keys(options.route.query).length\n ) {\n url += \"\" + (hasQuery ? '&' : '?') + (Utils.serializeObject(options.route.query));\n hasQuery = true;\n }\n\n if (params.passRouteParamsToRequest\n && options\n && options.route\n && options.route.params\n && Object.keys(options.route.params).length\n ) {\n url += \"\" + (hasQuery ? '&' : '?') + (Utils.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 Utils.promise(function (resolve, reject) {\n if (params.xhrCache && !ignoreCache && url.indexOf('nocache') < 0 && params.xhrCacheIgnore.indexOf(url) < 0) {\n for (var i = 0; i < router.cache.xhr.length; i += 1) {\n var cachedUrl = router.cache.xhr[i];\n if (cachedUrl.url === url) {\n // Check expiration\n if (Utils.now() - cachedUrl.time < params.xhrCacheDuration) {\n // Load from cache\n resolve(cachedUrl.content);\n return;\n }\n }\n }\n }\n router.xhr = router.app.request({\n url: url,\n method: 'GET',\n beforeSend: function beforeSend(xhr) {\n router.emit('routerAjaxStart', xhr, options);\n },\n complete: function complete(xhr, status) {\n router.emit('routerAjaxComplete', xhr);\n if ((status !== 'error' && status !== 'timeout' && (xhr.status >= 200 && xhr.status < 300)) || xhr.status === 0) {\n if (params.xhrCache && xhr.responseText !== '') {\n router.removeFromXhrCache(url);\n router.cache.xhr.push({\n url: url,\n time: Utils.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: function error(xhr) {\n router.emit('routerAjaxError', xhr, options);\n reject(xhr);\n },\n });\n });\n };\n\n // Remove theme elements\n Router.prototype.removeThemeElements = function removeThemeElements (el) {\n var router = this;\n var theme = router.app.theme;\n $(el).find((\".\" + (theme === 'md' ? 'ios' : 'md') + \"-only, .if-\" + (theme === 'md' ? 'ios' : 'md'))).remove();\n };\n\n Router.prototype.templateLoader = function templateLoader (template, templateUrl, options, resolve, reject) {\n var router = this;\n function compile(t) {\n var compiledHtml;\n var context;\n try {\n 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();\n throw (err);\n }\n }\n if (typeof t === 'function') {\n compiledHtml = t(context);\n } else {\n compiledHtml = Template7.compile(t)(Utils.extend({}, context || {}, {\n $app: router.app,\n $root: Utils.extend({}, router.app.data, router.app.methods),\n $route: options.route,\n $router: router,\n $theme: {\n ios: router.app.theme === 'ios',\n md: router.app.theme === 'md',\n },\n }));\n }\n } catch (err) {\n reject();\n throw (err);\n }\n resolve(compiledHtml, { context: context });\n }\n if (templateUrl) {\n // Load via XHR\n if (router.xhr) {\n router.xhr.abort();\n router.xhr = false;\n }\n router\n .xhrRequest(templateUrl, options)\n .then(function (templateContent) {\n compile(templateContent);\n })\n .catch(function () {\n reject();\n });\n } else {\n compile(template);\n }\n };\n\n Router.prototype.modalTemplateLoader = function modalTemplateLoader (template, templateUrl, options, resolve, reject) {\n var router = this;\n return router.templateLoader(template, templateUrl, options, function (html) {\n resolve(html);\n }, reject);\n };\n\n Router.prototype.tabTemplateLoader = function tabTemplateLoader (template, templateUrl, options, resolve, reject) {\n var router = this;\n return router.templateLoader(template, templateUrl, options, function (html) {\n resolve(html);\n }, reject);\n };\n\n Router.prototype.pageTemplateLoader = function pageTemplateLoader (template, templateUrl, options, resolve, reject) {\n var router = this;\n return router.templateLoader(template, templateUrl, options, function (html, newOptions) {\n if ( newOptions === void 0 ) newOptions = {};\n\n resolve(router.getPageEl(html), newOptions);\n }, reject);\n };\n\n Router.prototype.componentLoader = function componentLoader (component, componentUrl, options, resolve, reject) {\n if ( options === void 0 ) options = {};\n\n var router = this;\n var app = router.app;\n var url = typeof component === 'string' ? component : componentUrl;\n var compiledUrl = router.replaceRequestUrlParams(url, options);\n function compile(componentOptions) {\n var 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();\n throw (err);\n }\n }\n var extendContext = Utils.merge(\n {},\n context,\n {\n $route: options.route,\n $router: router,\n $theme: {\n ios: app.theme === 'ios',\n md: app.theme === 'md',\n },\n }\n );\n var createdComponent = app.component.create(componentOptions, extendContext);\n resolve(createdComponent.el);\n }\n var cachedComponent;\n if (compiledUrl) {\n router.cache.components.forEach(function (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.xhr) {\n router.xhr.abort();\n router.xhr = false;\n }\n router\n .xhrRequest(url, options)\n .then(function (loadedComponent) {\n var parsedComponent = app.component.parse(loadedComponent);\n router.cache.components.push({\n url: compiledUrl,\n component: parsedComponent,\n });\n compile(parsedComponent);\n })\n .catch(function (err) {\n reject();\n throw (err);\n });\n } else {\n compile(component);\n }\n };\n\n Router.prototype.modalComponentLoader = function modalComponentLoader (rootEl, component, componentUrl, options, resolve, reject) {\n var router = this;\n router.componentLoader(component, componentUrl, options, function (el) {\n resolve(el);\n }, reject);\n };\n\n Router.prototype.tabComponentLoader = function tabComponentLoader (tabEl, component, componentUrl, options, resolve, reject) {\n var router = this;\n router.componentLoader(component, componentUrl, options, function (el) {\n resolve(el);\n }, reject);\n };\n\n Router.prototype.pageComponentLoader = function pageComponentLoader (routerEl, component, componentUrl, options, resolve, reject) {\n var router = this;\n router.componentLoader(component, componentUrl, options, function (el, newOptions) {\n if ( newOptions === void 0 ) newOptions = {};\n\n resolve(el, newOptions);\n }, reject);\n };\n\n Router.prototype.getPageData = function getPageData (pageEl, navbarEl, from, to, route, pageFromEl) {\n if ( route === void 0 ) route = {};\n\n var router = this;\n var $pageEl = $(pageEl);\n var $navbarEl = $(navbarEl);\n var currentPage = $pageEl[0].f7Page || {};\n var direction;\n var pageFrom;\n if ((from === 'next' && to === 'current') || (from === 'current' && to === 'previous')) { direction = 'forward'; }\n if ((from === 'current' && to === 'next') || (from === 'previous' && to === 'current')) { direction = 'backward'; }\n if (currentPage && !currentPage.fromPage) {\n var $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 var page = {\n app: router.app,\n view: router.view,\n router: router,\n $el: $pageEl,\n el: $pageEl[0],\n $pageEl: $pageEl,\n pageEl: $pageEl[0],\n $navbarEl: $navbarEl,\n navbarEl: $navbarEl[0],\n name: $pageEl.attr('data-name'),\n position: from,\n from: from,\n to: to,\n direction: direction,\n route: currentPage.route ? currentPage.route : route,\n pageFrom: pageFrom,\n };\n\n $pageEl[0].f7Page = page;\n return page;\n };\n\n // Callbacks\n Router.prototype.pageCallback = function pageCallback (callback, pageEl, navbarEl, from, to, options, pageFromEl) {\n if ( options === void 0 ) options = {};\n\n if (!pageEl) { return; }\n var router = this;\n var $pageEl = $(pageEl);\n if (!$pageEl.length) { return; }\n var route = options.route;\n var restoreScrollTopOnBack = router.params.restoreScrollTopOnBack;\n var keepAlive = $pageEl[0].f7Page && $pageEl[0].f7Page.route && $pageEl[0].f7Page.route.route && $pageEl[0].f7Page.route.route.keepAlive;\n\n if (callback === 'beforeRemove' && keepAlive) {\n callback = 'beforeUnmount'; // eslint-disable-line\n }\n\n var camelName = \"page\" + (callback[0].toUpperCase() + callback.slice(1, callback.length));\n var colonName = \"page:\" + (callback.toLowerCase());\n\n var page = {};\n if (callback === 'beforeRemove' && $pageEl[0].f7Page) {\n page = Utils.extend($pageEl[0].f7Page, { from: from, to: to, position: from });\n } else {\n page = router.getPageData(pageEl, navbarEl, from, to, route, pageFromEl);\n }\n page.swipeBack = !!options.swipeBack;\n\n var ref = options.route ? options.route.route : {};\n var on = ref.on; if ( on === void 0 ) on = {};\n var once = ref.once; if ( once === void 0 ) once = {};\n if (options.on) {\n Utils.extend(on, options.on);\n }\n if (options.once) {\n Utils.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(function (eventName) {\n on[eventName] = on[eventName].bind(router);\n $pageEl.on(Utils.eventNameToColonCase(eventName), on[eventName]);\n });\n }\n if (once && Object.keys(once).length > 0) {\n $pageEl[0].f7RouteEventsOnce = once;\n Object.keys(once).forEach(function (eventName) {\n once[eventName] = once[eventName].bind(router);\n $pageEl.once(Utils.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(function (eventName) {\n $pageEl.off(Utils.eventNameToColonCase(eventName), $pageEl[0].f7RouteEventsOn[eventName]);\n });\n }\n if ($pageEl[0].f7RouteEventsOnce) {\n Object.keys($pageEl[0].f7RouteEventsOnce).forEach(function (eventName) {\n $pageEl.off(Utils.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 (restoreScrollTopOnBack && (from === 'previous' || !from) && to === 'current' && router.scrollHistory[page.route.url] && !$pageEl.hasClass('no-restore-scroll')) {\n var $pageContent = $pageEl.find('.page-content');\n if ($pageContent.length > 0) {\n // eslint-disable-next-line\n $pageContent = $pageContent.filter(function (pageContentIndex, 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 (restoreScrollTopOnBack && callback === 'beforeOut' && from === 'current' && to === 'previous') {\n // Save scroll position\n var $pageContent$1 = $pageEl.find('.page-content');\n if ($pageContent$1.length > 0) {\n // eslint-disable-next-line\n $pageContent$1 = $pageContent$1.filter(function (pageContentIndex, 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$1.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 Router.prototype.saveHistory = function saveHistory () {\n var router = this;\n router.view.history = router.history;\n if (router.params.pushState) {\n win.localStorage[(\"f7router-\" + (router.view.id) + \"-history\")] = JSON.stringify(router.history);\n }\n };\n\n Router.prototype.restoreHistory = function restoreHistory () {\n var router = this;\n if (router.params.pushState && win.localStorage[(\"f7router-\" + (router.view.id) + \"-history\")]) {\n router.history = JSON.parse(win.localStorage[(\"f7router-\" + (router.view.id) + \"-history\")]);\n router.view.history = router.history;\n }\n };\n\n Router.prototype.clearHistory = function clearHistory () {\n var router = this;\n router.history = [];\n if (router.view) { router.view.history = []; }\n router.saveHistory();\n };\n\n Router.prototype.updateCurrentUrl = function updateCurrentUrl (newUrl) {\n var 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 var ref = router.parseRouteUrl(newUrl);\n var query = ref.query;\n var hash = ref.hash;\n var params = ref.params;\n var url = ref.url;\n var path = ref.path;\n if (router.currentRoute) {\n Utils.extend(router.currentRoute, {\n query: query,\n hash: hash,\n params: params,\n url: url,\n path: path,\n });\n }\n\n if (router.params.pushState) {\n var pushStateRoot = router.params.pushStateRoot || '';\n History.replace(\n router.view.id,\n {\n url: newUrl,\n },\n pushStateRoot + router.params.pushStateSeparator + newUrl\n );\n }\n\n // Save History\n router.saveHistory();\n\n router.emit('routeUrlUpdate', router.currentRoute, router);\n };\n\n Router.prototype.init = function init () {\n var router = this;\n var app = router.app;\n var view = router.view;\n\n // Init Swipeback\n {\n if (\n (view && router.params.iosSwipeBack && app.theme === 'ios')\n || (view && router.params.mdSwipeBack && app.theme === 'md')\n ) {\n SwipeBack(router);\n }\n }\n\n // Dynamic not separated navbbar\n if (router.dynamicNavbar && !router.separateNavbar) {\n router.$el.addClass('router-dynamic-navbar-inside');\n }\n\n var initUrl = router.params.url;\n var documentUrl = doc.location.href.split(doc.location.origin)[1];\n var historyRestored;\n var ref = router.params;\n var pushState = ref.pushState;\n var pushStateOnLoad = ref.pushStateOnLoad;\n var pushStateSeparator = ref.pushStateSeparator;\n var pushStateAnimateOnLoad = ref.pushStateAnimateOnLoad;\n var ref$1 = router.params;\n var pushStateRoot = ref$1.pushStateRoot;\n if (win.cordova && pushState && !pushStateSeparator && !pushStateRoot && doc.location.pathname.indexOf('index.html')) {\n // eslint-disable-next-line\n console.warn('Framework7: wrong or not complete pushState configuration, trying to guess pushStateRoot');\n pushStateRoot = doc.location.pathname.split('index.html')[0];\n }\n\n if (!pushState || !pushStateOnLoad) {\n if (!initUrl) {\n initUrl = documentUrl;\n }\n if (doc.location.search && initUrl.indexOf('?') < 0) {\n initUrl += doc.location.search;\n }\n if (doc.location.hash && initUrl.indexOf('#') < 0) {\n initUrl += doc.location.hash;\n }\n } else {\n if (pushStateRoot && documentUrl.indexOf(pushStateRoot) >= 0) {\n documentUrl = documentUrl.split(pushStateRoot)[1];\n if (documentUrl === '') { documentUrl = '/'; }\n }\n if (pushStateSeparator.length > 0 && documentUrl.indexOf(pushStateSeparator) >= 0) {\n initUrl = documentUrl.split(pushStateSeparator)[1];\n } else {\n initUrl = documentUrl;\n }\n router.restoreHistory();\n if (router.history.indexOf(initUrl) >= 0) {\n router.history = router.history.slice(0, router.history.indexOf(initUrl) + 1);\n } else if (router.params.url === initUrl) {\n router.history = [initUrl];\n } else if (History.state && History.state[view.id] && History.state[view.id].url === router.history[router.history.length - 1]) {\n initUrl = router.history[router.history.length - 1];\n } else {\n router.history = [documentUrl.split(pushStateSeparator)[0] || '/', initUrl];\n }\n if (router.history.length > 1) {\n historyRestored = true;\n } else {\n router.history = [];\n }\n router.saveHistory();\n }\n var currentRoute;\n if (router.history.length > 1) {\n // Will load page\n currentRoute = router.findMatchingRoute(router.history[0]);\n if (!currentRoute) {\n currentRoute = Utils.extend(router.parseRouteUrl(router.history[0]), {\n route: {\n url: router.history[0],\n path: router.history[0].split('?')[0],\n },\n });\n }\n } else {\n // Don't load page\n currentRoute = router.findMatchingRoute(initUrl);\n if (!currentRoute) {\n currentRoute = Utils.extend(router.parseRouteUrl(initUrl), {\n route: {\n url: initUrl,\n path: initUrl.split('?')[0],\n },\n });\n }\n }\n\n if (router.params.stackPages) {\n router.$el.children('.page').each(function (index, pageEl) {\n var $pageEl = $(pageEl);\n router.initialPages.push($pageEl[0]);\n if (router.separateNavbar && $pageEl.children('.navbar').length > 0) {\n router.initialNavbars.push($pageEl.children('.navbar').find('.navbar-inner')[0]);\n }\n });\n }\n\n if (router.$el.children('.page:not(.stacked)').length === 0 && initUrl) {\n // No pages presented in DOM, reload new page\n router.navigate(initUrl, {\n initial: true,\n reloadCurrent: true,\n pushState: false,\n });\n } else {\n // Init current DOM page\n var hasTabRoute;\n router.currentRoute = currentRoute;\n router.$el.children('.page:not(.stacked)').each(function (index, pageEl) {\n var $pageEl = $(pageEl);\n var $navbarInnerEl;\n $pageEl.addClass('page-current');\n if (router.separateNavbar) {\n $navbarInnerEl = $pageEl.children('.navbar').children('.navbar-inner');\n if ($navbarInnerEl.length > 0) {\n if (!router.$navbarEl.parents(doc).length) {\n router.$el.prepend(router.$navbarEl);\n }\n router.$navbarEl.append($navbarInnerEl);\n $pageEl.children('.navbar').remove();\n } else {\n router.$navbarEl.addClass('navbar-hidden');\n }\n }\n var initOptions = {\n route: router.currentRoute,\n };\n if (router.currentRoute && router.currentRoute.route && router.currentRoute.route.options) {\n Utils.extend(initOptions, router.currentRoute.route.options);\n }\n router.currentPageEl = $pageEl[0];\n if (router.dynamicNavbar && $navbarInnerEl.length) {\n router.currentNavbarEl = $navbarInnerEl[0];\n }\n router.removeThemeElements($pageEl);\n if (router.dynamicNavbar && $navbarInnerEl.length) {\n router.removeThemeElements($navbarInnerEl);\n }\n if (initOptions.route.route.tab) {\n hasTabRoute = true;\n router.tabLoad(initOptions.route.route.tab, Utils.extend({}, initOptions));\n }\n router.pageCallback('init', $pageEl, $navbarInnerEl, 'current', undefined, initOptions);\n });\n if (historyRestored) {\n router.navigate(initUrl, {\n initial: true,\n pushState: false,\n history: false,\n animate: pushStateAnimateOnLoad,\n once: {\n pageAfterIn: function pageAfterIn() {\n if (router.history.length > 2) {\n router.back({ preload: true });\n }\n },\n },\n });\n }\n if (!historyRestored && !hasTabRoute) {\n router.history.push(initUrl);\n router.saveHistory();\n }\n }\n if (initUrl && pushState && pushStateOnLoad && (!History.state || !History.state[view.id])) {\n History.initViewState(view.id, {\n url: initUrl,\n });\n }\n router.emit('local::init routerInit', router);\n };\n\n Router.prototype.destroy = function destroy () {\n var router = this;\n\n router.emit('local::destroy routerDestroy', router);\n\n // Delete props & methods\n Object.keys(router).forEach(function (routerProp) {\n router[routerProp] = null;\n delete router[routerProp];\n });\n\n router = null;\n };\n\n return Router;\n }(Framework7Class));\n\n // Load\n Router.prototype.forward = forward;\n Router.prototype.load = load;\n Router.prototype.navigate = navigate;\n Router.prototype.refreshPage = refreshPage;\n // Tab\n Router.prototype.tabLoad = tabLoad;\n Router.prototype.tabRemove = tabRemove;\n // Modal\n Router.prototype.modalLoad = modalLoad;\n Router.prototype.modalRemove = modalRemove;\n // Back\n Router.prototype.backward = backward;\n Router.prototype.loadBack = loadBack;\n Router.prototype.back = back;\n // Clear previoius pages from the DOM\n Router.prototype.clearPreviousPages = clearPreviousPages;\n // Clear history\n Router.prototype.clearPreviousHistory = clearPreviousHistory;\n\n var Router$1 = {\n name: 'router',\n static: {\n Router: Router,\n },\n instance: {\n cache: {\n xhr: [],\n templates: [],\n components: [],\n },\n },\n create: function create() {\n var 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\n var View = /*@__PURE__*/(function (Framework7Class$$1) {\n function View(appInstance, el, viewParams) {\n if ( viewParams === void 0 ) viewParams = {};\n\n Framework7Class$$1.call(this, viewParams, [appInstance]);\n\n var app = appInstance;\n var $el = $(el);\n var view = this;\n\n var defaults = {\n routes: [],\n routesAdd: [],\n };\n\n // Default View params\n view.params = Utils.extend(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 // Selector\n var selector;\n if (typeof el === 'string') { selector = el; }\n else {\n // Supposed to be HTMLElement or Dom7\n selector = ($el.attr('id') ? (\"#\" + ($el.attr('id'))) : '') + ($el.attr('class') ? (\".\" + ($el.attr('class').replace(/ /g, '.').replace('.active', ''))) : '');\n }\n\n // DynamicNavbar\n var $navbarEl;\n if (app.theme === 'ios' && view.params.iosDynamicNavbar && view.params.iosSeparateDynamicNavbar) {\n $navbarEl = $el.children('.navbar').eq(0);\n if ($navbarEl.length === 0) {\n $navbarEl = $('<div class=\"navbar\"></div>');\n }\n }\n\n // View Props\n Utils.extend(false, view, {\n app: app,\n $el: $el,\n el: $el[0],\n name: view.params.name,\n main: view.params.main || $el.hasClass('view-main'),\n $navbarEl: $navbarEl,\n navbarEl: $navbarEl ? $navbarEl[0] : undefined,\n selector: selector,\n history: [],\n scrollHistory: {},\n });\n\n // Save in DOM\n $el[0].f7View = view;\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 var 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 // Init View\n if (app.initialized) {\n view.init();\n } else {\n app.on('init', function () {\n view.init();\n });\n }\n\n return view;\n }\n\n if ( Framework7Class$$1 ) View.__proto__ = Framework7Class$$1;\n View.prototype = Object.create( Framework7Class$$1 && Framework7Class$$1.prototype );\n View.prototype.constructor = View;\n\n View.prototype.destroy = function destroy () {\n var view = this;\n var app = view.app;\n\n view.$el.trigger('view:beforedestroy', view);\n view.emit('local::beforeDestroy viewBeforeDestroy', view);\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(function (viewProp) {\n view[viewProp] = null;\n delete view[viewProp];\n });\n\n view = null;\n };\n\n View.prototype.init = function init () {\n var view = this;\n if (view.params.router) {\n view.router.init();\n view.$el.trigger('view:init', view);\n view.emit('local::init viewInit', view);\n }\n };\n\n return View;\n }(Framework7Class));\n\n // Use Router\n View.use(Router$1);\n\n function initClicks(app) {\n function handleClicks(e) {\n var $clickedEl = $(e.target);\n var $clickedLinkEl = $clickedEl.closest('a');\n var isLink = $clickedLinkEl.length > 0;\n var url = isLink && $clickedLinkEl.attr('href');\n var isTabLink = isLink && $clickedLinkEl.hasClass('tab-link') && ($clickedLinkEl.attr('data-tab') || (url && url.indexOf('#') === 0));\n\n // Check if link is external\n if (isLink) {\n // eslint-disable-next-line\n if ($clickedLinkEl.is(app.params.clicks.externalLinks) || (url && url.indexOf('javascript:') >= 0)) {\n var target = $clickedLinkEl.attr('target');\n if (\n url\n && win.cordova\n && win.cordova.InAppBrowser\n && (target === '_system' || target === '_blank')\n ) {\n e.preventDefault();\n win.cordova.InAppBrowser.open(url, target);\n }\n return;\n }\n }\n\n // Modules Clicks\n Object.keys(app.modules).forEach(function (moduleName) {\n var moduleClicks = app.modules[moduleName].clicks;\n if (!moduleClicks) { return; }\n Object.keys(moduleClicks).forEach(function (clickSelector) {\n var matchingClickedElement = $clickedEl.closest(clickSelector).eq(0);\n if (matchingClickedElement.length > 0) {\n moduleClicks[clickSelector].call(app, matchingClickedElement, matchingClickedElement.dataset());\n }\n });\n });\n\n // Load Page\n var clickedLinkData = {};\n if (isLink) {\n e.preventDefault();\n clickedLinkData = $clickedLinkEl.dataset();\n }\n var validUrl = url && url.length > 0 && url !== '#' && !isTabLink;\n if (validUrl || $clickedLinkEl.hasClass('back')) {\n var view;\n 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 View) { 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 (clickedLinkData.context && typeof clickedLinkData.context === 'string') {\n try {\n clickedLinkData.context = JSON.parse(clickedLinkData.context);\n } catch (err) {\n // something wrong there\n }\n }\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\n // Prevent scrolling on overlays\n function preventScrolling(e) {\n e.preventDefault();\n }\n if (Support.touch && !Device.android) {\n var activeListener = Support.passiveListener ? { passive: false, capture: false } : false;\n $(doc).on((app.params.touch.fastClicks ? 'touchstart' : 'touchmove'), '.panel-backdrop, .dialog-backdrop, .preloader-backdrop, .popup-backdrop, .searchbar-backdrop', preventScrolling, activeListener);\n }\n }\n var ClicksModule = {\n name: 'clicks',\n params: {\n clicks: {\n // External Links\n externalLinks: '.external',\n },\n },\n on: {\n init: function init() {\n var app = this;\n initClicks(app);\n },\n },\n };\n\n var HistoryModule = {\n name: 'history',\n static: {\n history: History,\n },\n on: {\n init: function init() {\n History.init(this);\n },\n },\n };\n\n var keyPrefix = 'f7storage-';\n var Storage = {\n get: function get(key) {\n return Utils.promise(function (resolve, reject) {\n try {\n var value = JSON.parse(win.localStorage.getItem((\"\" + keyPrefix + key)));\n resolve(value);\n } catch (e) {\n reject(e);\n }\n });\n },\n set: function set(key, value) {\n return Utils.promise(function (resolve, reject) {\n try {\n win.localStorage.setItem((\"\" + keyPrefix + key), JSON.stringify(value));\n resolve();\n } catch (e) {\n reject(e);\n }\n });\n },\n remove: function remove(key) {\n return Utils.promise(function (resolve, reject) {\n try {\n win.localStorage.removeItem((\"\" + keyPrefix + key));\n resolve();\n } catch (e) {\n reject(e);\n }\n });\n },\n clear: function clear() {\n\n },\n length: function length() {\n\n },\n keys: function keys() {\n return Utils.promise(function (resolve, reject) {\n try {\n var keys = Object.keys(win.localStorage)\n .filter(function (keyName) { return keyName.indexOf(keyPrefix) === 0; })\n .map(function (keyName) { return keyName.replace(keyPrefix, ''); });\n resolve(keys);\n } catch (e) {\n reject(e);\n }\n });\n },\n forEach: function forEach(callback) {\n return Utils.promise(function (resolve, reject) {\n try {\n Object.keys(win.localStorage)\n .filter(function (keyName) { return keyName.indexOf(keyPrefix) === 0; })\n .forEach(function (keyName, index) {\n var key = keyName.replace(keyPrefix, '');\n Storage.get(key).then(function (value) {\n callback(key, value, index);\n });\n });\n resolve();\n } catch (e) {\n reject(e);\n }\n });\n },\n };\n\n var StorageModule = {\n name: 'storage',\n static: {\n Storage: Storage,\n storage: Storage,\n },\n };\n\n 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 }\n\n var array = Array.isArray;\n function primitive(s) {\n return typeof s === 'string' || typeof s === 'number';\n }\n\n function 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 }\n function h(sel, b, c) {\n var data = {}, children, text, i;\n if (c !== undefined) {\n data = b;\n if (array(c)) {\n children = c;\n }\n else if (primitive(c)) {\n text = c;\n }\n else if (c && c.sel) {\n children = [c];\n }\n }\n else if (b !== undefined) {\n if (array(b)) {\n children = b;\n }\n else if (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 (array(children)) {\n for (i = 0; i < children.length; ++i) {\n if (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\n /* eslint no-use-before-define: \"off\" */\n\n var selfClosing = 'area base br col command embed hr img input keygen link menuitem meta param source track wbr'.split(' ');\n var propsAttrs = 'hidden checked disabled readonly selected autocomplete autofocus autoplay required multiple value'.split(' ');\n var booleanProps = 'hidden checked disabled readonly selected autocomplete autofocus autoplay required multiple readOnly'.split(' ');\n var tempDom = doc.createElement('div');\n\n function getHooks(data, app, initial, isRoot) {\n var hooks = {};\n if (!data || !data.attrs || !data.attrs.class) { return hooks; }\n var classNames = data.attrs.class;\n var insert = [];\n var destroy = [];\n var update = [];\n var postpatch = [];\n classNames.split(' ').forEach(function (className) {\n if (!initial) {\n insert.push.apply(insert, app.getVnodeHooks('insert', className));\n }\n destroy.push.apply(destroy, app.getVnodeHooks('destroy', className));\n update.push.apply(update, app.getVnodeHooks('update', className));\n postpatch.push.apply(postpatch, app.getVnodeHooks('postpatch', className));\n });\n\n if (isRoot && !initial) {\n postpatch.push(function (oldVnode, vnode) {\n var vn = vnode || oldVnode;\n if (!vn) { return; }\n if (vn.data && vn.data.context && vn.data.context.$options.updated) {\n vn.data.context.$options.updated();\n }\n });\n }\n if (insert.length === 0 && destroy.length === 0 && update.length === 0 && postpatch.length === 0) {\n return hooks;\n }\n if (insert.length) {\n hooks.insert = function (vnode) {\n insert.forEach(function (f) { return f(vnode); });\n };\n }\n if (destroy.length) {\n hooks.destroy = function (vnode) {\n destroy.forEach(function (f) { return f(vnode); });\n };\n }\n if (update.length) {\n hooks.update = function (oldVnode, vnode) {\n update.forEach(function (f) { return f(oldVnode, vnode); });\n };\n }\n if (postpatch.length) {\n hooks.postpatch = function (oldVnode, vnode) {\n postpatch.forEach(function (f) { return f(oldVnode, vnode); });\n };\n }\n\n return hooks;\n }\n function getEventHandler(handlerString, context, ref) {\n if ( ref === void 0 ) ref = {};\n var stop = ref.stop;\n var prevent = ref.prevent;\n var once = ref.once;\n\n var fired = false;\n\n var methodName;\n var method;\n var customArgs = [];\n var needMethodBind = true;\n\n if (handlerString.indexOf('(') < 0) {\n methodName = handlerString;\n } else {\n methodName = handlerString.split('(')[0];\n }\n if (methodName.indexOf('.') >= 0) {\n methodName.split('.').forEach(function (path, pathIndex) {\n if (pathIndex === 0 && path === 'this') { return; }\n if (pathIndex === 0 && path === 'window') {\n // eslint-disable-next-line\n method = win;\n needMethodBind = false;\n return;\n }\n if (!method) { method = context; }\n if (method[path]) { method = method[path]; }\n else {\n throw new Error((\"Framework7: Component doesn't have method \\\"\" + (methodName.split('.').slice(0, pathIndex + 1).join('.')) + \"\\\"\"));\n }\n });\n } else {\n if (!context[methodName]) {\n throw new Error((\"Framework7: Component doesn't have method \\\"\" + methodName + \"\\\"\"));\n }\n method = context[methodName];\n }\n if (needMethodBind) {\n method = method.bind(context);\n }\n\n function handler() {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var e = args[0];\n if (once && fired) { return; }\n if (stop) { e.stopPropagation(); }\n if (prevent) { e.preventDefault(); }\n fired = true;\n\n if (handlerString.indexOf('(') < 0) {\n customArgs = args;\n } else {\n handlerString.split('(')[1].split(')')[0].split(',').forEach(function (argument) {\n var arg = argument.trim();\n // eslint-disable-next-line\n if (!isNaN(arg)) { arg = parseFloat(arg); }\n else if (arg === 'true') { arg = true; }\n else if (arg === 'false') { arg = false; }\n else if (arg === 'null') { arg = null; }\n else if (arg === 'undefined') { arg = undefined; }\n else if (arg[0] === '\"') { arg = arg.replace(/\"/g, ''); }\n else if (arg[0] === '\\'') { arg = arg.replace(/'/g, ''); }\n else if (arg.indexOf('.') > 0) {\n var deepArg;\n arg.split('.').forEach(function (path) {\n if (!deepArg) { deepArg = context; }\n deepArg = deepArg[path];\n });\n arg = deepArg;\n } else {\n arg = context[arg];\n }\n customArgs.push(arg);\n });\n }\n\n method.apply(void 0, customArgs);\n }\n\n return handler;\n }\n\n function getData(el, context, app, initial, isRoot) {\n var data = {\n context: context,\n };\n var attributes = el.attributes;\n Array.prototype.forEach.call(attributes, function (attr) {\n var attrName = attr.name;\n var attrValue = attr.value;\n if (propsAttrs.indexOf(attrName) >= 0) {\n // Props\n if (!data.props) { data.props = {}; }\n if (attrName === 'readonly') {\n attrName = 'readOnly';\n }\n if (booleanProps.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 (attrName.indexOf('@') === 0) {\n // Events\n if (!data.on) { data.on = {}; }\n var eventName = attrName.substr(1);\n var stop = false;\n var prevent = false;\n var once = false;\n if (eventName.indexOf('.') >= 0) {\n eventName.split('.').forEach(function (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, context, { stop: stop, prevent: prevent, once: once });\n } else if (attrName === 'style') {\n // Style\n if (attrValue.indexOf('{') >= 0 && attrValue.indexOf('}') >= 0) {\n try {\n data.style = JSON.parse(attrValue);\n } catch (e) {\n if (!data.attrs) { data.attrs = {}; }\n data.attrs.style = attrValue;\n }\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 var hooks = getHooks(data, app, initial, isRoot);\n hooks.prepatch = function (oldVnode, vnode) {\n if (!oldVnode || !vnode) { return; }\n if (oldVnode && oldVnode.data && oldVnode.data.props) {\n Object.keys(oldVnode.data.props).forEach(function (key) {\n if (booleanProps.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 if (hooks) {\n data.hook = hooks;\n }\n return data;\n }\n\n function getChildren(el, context, app, initial) {\n var children = [];\n var nodes = el.childNodes;\n for (var i = 0; i < nodes.length; i += 1) {\n var childNode = nodes[i];\n var child = elementToVNode(childNode, context, app, initial);\n if (child) {\n children.push(child);\n }\n }\n return children;\n }\n\n function elementToVNode(el, context, app, initial, isRoot) {\n if (el.nodeType === 1) {\n // element\n var tagName = el.nodeName.toLowerCase();\n return h(\n tagName,\n getData(el, context, app, initial, isRoot),\n selfClosing.indexOf(tagName) >= 0 ? [] : getChildren(el, context, app, initial)\n );\n }\n if (el.nodeType === 3) {\n // text\n return el.textContent;\n }\n return null;\n }\n\n function vdom (html, context, app, initial) {\n if ( html === void 0 ) html = '';\n\n // Save to temp dom\n tempDom.innerHTML = html.trim();\n\n // Parse DOM\n var rootEl;\n for (var i = 0; i < tempDom.childNodes.length; i += 1) {\n if (!rootEl && tempDom.childNodes[i].nodeType === 1) {\n rootEl = tempDom.childNodes[i];\n }\n }\n var result = elementToVNode(rootEl, context, app, initial, true);\n\n // Clean\n tempDom.innerHTML = '';\n\n return result;\n }\n\n function createElement(tagName) {\n return document.createElement(tagName);\n }\n function createElementNS(namespaceURI, qualifiedName) {\n return document.createElementNS(namespaceURI, qualifiedName);\n }\n function createTextNode(text) {\n return document.createTextNode(text);\n }\n function createComment(text) {\n return document.createComment(text);\n }\n function insertBefore$1(parentNode, newNode, referenceNode) {\n parentNode.insertBefore(newNode, referenceNode);\n }\n function removeChild(node, child) {\n if (!node) { return; }\n node.removeChild(child);\n }\n function appendChild(node, child) {\n node.appendChild(child);\n }\n function parentNode(node) {\n return node.parentNode;\n }\n function nextSibling(node) {\n return node.nextSibling;\n }\n function tagName(elm) {\n return elm.tagName;\n }\n function setTextContent(node, text) {\n node.textContent = text;\n }\n function getTextContent(node) {\n return node.textContent;\n }\n function isElement(node) {\n return node.nodeType === 1;\n }\n function isText(node) {\n return node.nodeType === 3;\n }\n function isComment(node) {\n return node.nodeType === 8;\n }\n var htmlDomApi = {\n createElement: createElement,\n createElementNS: createElementNS,\n createTextNode: createTextNode,\n createComment: createComment,\n insertBefore: insertBefore$1,\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 };\n\n function isUndef(s) { return s === undefined; }\n function isDef(s) { return s !== undefined; }\n var emptyNode = vnode('', {}, [], undefined, undefined);\n function sameVnode(vnode1, vnode2) {\n return vnode1.key === vnode2.key && vnode1.sel === vnode2.sel;\n }\n function isVnode(vnode$$1) {\n return vnode$$1.sel !== undefined;\n }\n function 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 }\n var hooks = ['create', 'update', 'remove', 'destroy', 'pre', 'post'];\n function init$1(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$$1, insertedVnodeQueue) {\n var i, data = vnode$$1.data;\n if (data !== undefined) {\n if (isDef(i = data.hook) && isDef(i = i.init)) {\n i(vnode$$1);\n data = vnode$$1.data;\n }\n }\n var children = vnode$$1.children, sel = vnode$$1.sel;\n if (sel === '!') {\n if (isUndef(vnode$$1.text)) {\n vnode$$1.text = '';\n }\n vnode$$1.elm = api.createComment(vnode$$1.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$$1.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$$1); }\n if (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 (primitive(vnode$$1.text)) {\n api.appendChild(elm, api.createTextNode(vnode$$1.text));\n }\n i = vnode$$1.data.hook; // Reuse variable\n if (isDef(i)) {\n if (i.create)\n { i.create(emptyNode, vnode$$1); }\n if (i.insert)\n { insertedVnodeQueue.push(vnode$$1); }\n }\n }\n else {\n vnode$$1.elm = api.createTextNode(vnode$$1.text);\n }\n return vnode$$1.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$$1) {\n var i, j, data = vnode$$1.data;\n if (data !== undefined) {\n if (isDef(i = data.hook) && isDef(i = i.destroy))\n { i(vnode$$1); }\n for (i = 0; i < cbs.destroy.length; ++i)\n { cbs.destroy[i](vnode$$1); }\n if (vnode$$1.children !== undefined) {\n for (j = 0; j < vnode$$1.children.length; ++j) {\n i = vnode$$1.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$$1, insertedVnodeQueue) {\n var i, hook;\n if (isDef(i = vnode$$1.data) && isDef(hook = i.hook) && isDef(i = hook.prepatch)) {\n i(oldVnode, vnode$$1);\n }\n var elm = vnode$$1.elm = oldVnode.elm;\n var oldCh = oldVnode.children;\n var ch = vnode$$1.children;\n if (oldVnode === vnode$$1)\n { return; }\n if (vnode$$1.data !== undefined) {\n for (i = 0; i < cbs.update.length; ++i)\n { cbs.update[i](oldVnode, vnode$$1); }\n i = vnode$$1.data.hook;\n if (isDef(i) && isDef(i = i.update))\n { i(oldVnode, vnode$$1); }\n }\n if (isUndef(vnode$$1.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$$1.text) {\n api.setTextContent(elm, vnode$$1.text);\n }\n if (isDef(hook) && isDef(i = hook.postpatch)) {\n i(oldVnode, vnode$$1);\n }\n }\n return function patch(oldVnode, vnode$$1) {\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$$1)) {\n patchVnode(oldVnode, vnode$$1, insertedVnodeQueue);\n }\n else {\n elm = oldVnode.elm;\n parent = api.parentNode(elm);\n createElm(vnode$$1, insertedVnodeQueue);\n if (parent !== null) {\n api.insertBefore(parent, vnode$$1.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$$1;\n };\n }\n\n var xlinkNS = 'http://www.w3.org/1999/xlink';\n var xmlNS = 'http://www.w3.org/XML/1998/namespace';\n var colonChar = 58;\n var xChar = 120;\n function 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 }\n var attributesModule = { create: updateAttrs, update: updateAttrs };\n\n 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 }\n var propsModule = { create: updateProps, update: updateProps };\n\n var raf = (typeof window !== 'undefined' && window.requestAnimationFrame) || setTimeout;\n var nextFrame = function (fn) { raf(function () { raf(fn); }); };\n function setNextFrame(obj, prop, val) {\n nextFrame(function () { obj[prop] = val; });\n }\n function 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 }\n function 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 }\n function 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 }\n var styleModule = {\n create: updateStyle,\n update: updateStyle,\n destroy: applyDestroyStyle,\n remove: applyRemoveStyle\n };\n\n function invokeHandler(handler, event, args) {\n if (typeof handler === 'function') {\n // call function handler\n handler.apply(void 0, [ event ].concat( args ));\n }\n }\n function handleEvent(event, args, vnode) {\n var name = event.type;\n var 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 }\n function createListener() {\n return function handler(event) {\n var args = [], len = arguments.length - 1;\n while ( len-- > 0 ) args[ len ] = arguments[ len + 1 ];\n\n handleEvent(event, args, handler.vnode);\n };\n }\n function updateEvents(oldVnode, vnode) {\n var oldOn = oldVnode.data.on;\n var oldListener = oldVnode.listener;\n var oldElm = oldVnode.elm;\n var on = vnode && vnode.data.on;\n var 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(function (name) {\n $(oldElm).off(name, oldListener);\n });\n } else {\n Object.keys(oldOn).forEach(function (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 var 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(function (name) {\n $(elm).on(name, listener);\n });\n } else {\n Object.keys(on).forEach(function (name) {\n if (!oldOn[name]) {\n $(elm).on(name, listener);\n }\n });\n }\n }\n }\n\n var eventListenersModule = {\n create: updateEvents,\n update: updateEvents,\n destroy: updateEvents,\n };\n\n /* eslint import/no-named-as-default: off */\n\n var patch = init$1([\n attributesModule,\n propsModule,\n styleModule,\n eventListenersModule ]);\n\n var Framework7Component = function Framework7Component(app, options, extendContext) {\n if ( extendContext === void 0 ) extendContext = {};\n\n var id = Utils.id();\n var self = Utils.merge(\n this,\n extendContext,\n {\n $: $,\n $$: $,\n $dom7: $,\n $app: app,\n $options: Utils.extend({ id: id }, options),\n }\n );\n var $options = self.$options;\n\n // Root data and methods\n Object.defineProperty(self, '$root', {\n enumerable: true,\n configurable: true,\n get: function get() {\n var root = Utils.merge({}, app.data, app.methods);\n if (win && win.Proxy) {\n root = new win.Proxy(root, {\n set: function set(target, name, val) {\n app.data[name] = val;\n },\n deleteProperty: function deleteProperty(target, name) {\n delete app.data[name];\n delete app.methods[name];\n },\n has: function has(target, name) {\n return (name in app.data || name in app.methods);\n },\n });\n }\n return root;\n },\n set: function set() {},\n });\n\n // Apply context\n ('beforeCreate created beforeMount mounted beforeDestroy destroyed updated').split(' ').forEach(function (cycleKey) {\n if ($options[cycleKey]) { $options[cycleKey] = $options[cycleKey].bind(self); }\n });\n\n if ($options.data) {\n $options.data = $options.data.bind(self);\n // Data\n Utils.extend(self, $options.data());\n }\n if ($options.render) { $options.render = $options.render.bind(self); }\n if ($options.methods) {\n Object.keys($options.methods).forEach(function (methodName) {\n self[methodName] = $options.methods[methodName].bind(self);\n });\n }\n\n // Bind Events\n if ($options.on) {\n Object.keys($options.on).forEach(function (eventName) {\n $options.on[eventName] = $options.on[eventName].bind(self);\n });\n }\n if ($options.once) {\n Object.keys($options.once).forEach(function (eventName) {\n $options.once[eventName] = $options.once[eventName].bind(self);\n });\n }\n\n // Before create hook\n if ($options.beforeCreate) { $options.beforeCreate(); }\n\n // Render\n var html = self.$render();\n\n // Make Dom\n if (html && typeof html === 'string') {\n html = html.trim();\n self.$vnode = vdom(html, self, app, true);\n self.el = doc.createElement('div');\n patch(self.el, self.$vnode);\n } else if (html) {\n self.el = html;\n }\n self.$el = $(self.el);\n\n // Set styles scope ID\n if ($options.style) {\n self.$styleEl = doc.createElement('style');\n self.$styleEl.innerHTML = $options.style;\n if ($options.styleScoped) {\n self.el.setAttribute((\"data-f7-\" + ($options.id)), '');\n }\n }\n\n self.$attachEvents();\n\n // Created callback\n if ($options.created) { $options.created(); }\n\n // Store component instance\n self.el.f7Component = self;\n\n return self;\n };\n\n Framework7Component.prototype.$attachEvents = function $attachEvents () {\n var self = this;\n var $options = self.$options;\n var $el = self.$el;\n if ($options.on) {\n Object.keys($options.on).forEach(function (eventName) {\n $el.on(Utils.eventNameToColonCase(eventName), $options.on[eventName]);\n });\n }\n if ($options.once) {\n Object.keys($options.once).forEach(function (eventName) {\n $el.once(Utils.eventNameToColonCase(eventName), $options.once[eventName]);\n });\n }\n };\n\n Framework7Component.prototype.$detachEvents = function $detachEvents () {\n var self = this;\n var $options = self.$options;\n var $el = self.$el;\n if ($options.on) {\n Object.keys($options.on).forEach(function (eventName) {\n $el.off(Utils.eventNameToColonCase(eventName), $options.on[eventName]);\n });\n }\n if ($options.once) {\n Object.keys($options.once).forEach(function (eventName) {\n $el.off(Utils.eventNameToColonCase(eventName), $options.once[eventName]);\n });\n }\n };\n\n Framework7Component.prototype.$render = function $render () {\n var self = this;\n var $options = self.$options;\n var html = '';\n if ($options.render) {\n html = $options.render();\n } else if ($options.template) {\n if (typeof $options.template === 'string') {\n try {\n html = Template7.compile($options.template)(self);\n } catch (err) {\n throw err;\n }\n } else {\n // Supposed to be function\n html = $options.template(self);\n }\n }\n return html;\n };\n\n Framework7Component.prototype.$forceUpdate = function $forceUpdate () {\n var self = this;\n var html = self.$render();\n\n // Make Dom\n if (html && typeof html === 'string') {\n html = html.trim();\n var newVNode = vdom(html, self, self.$app);\n self.$vnode = patch(self.$vnode, newVNode);\n }\n };\n\n Framework7Component.prototype.$setState = function $setState (mergeState) {\n var self = this;\n Utils.merge(self, mergeState);\n self.$forceUpdate();\n };\n\n Framework7Component.prototype.$mount = function $mount (mountMethod) {\n var self = this;\n if (self.$options.beforeMount) { self.$options.beforeMount(); }\n if (self.$styleEl) { $('head').append(self.$styleEl); }\n if (mountMethod) { mountMethod(self.el); }\n if (self.$options.mounted) { self.$options.mounted(); }\n };\n\n Framework7Component.prototype.$destroy = function $destroy () {\n var self = this;\n if (self.$options.beforeDestroy) { self.$options.beforeDestroy(); }\n if (self.$styleEl) { $(self.$styleEl).remove(); }\n self.$detachEvents();\n if (self.$options.destroyed) { self.$options.destroyed(); }\n // Delete component instance\n if (self.el && self.el.f7Component) {\n self.el.f7Component = null;\n delete self.el.f7Component;\n }\n // Patch with empty node\n if (self.$vnode) {\n self.$vnode = patch(self.$vnode, { sel: self.$vnode.sel, data: {} });\n }\n Utils.deleteProps(self);\n };\n\n function parseComponent(componentString) {\n var id = Utils.id();\n var callbackCreateName = \"f7_component_create_callback_\" + id;\n var callbackRenderName = \"f7_component_render_callback_\" + id;\n\n // Template\n var template;\n var hasTemplate = componentString.match(/<template([ ]?)([a-z0-9-]*)>/);\n var templateType = hasTemplate[2] || 't7';\n if (hasTemplate) {\n template = componentString\n .split(/<template[ ]?[a-z0-9-]*>/)\n .filter(function (item, index) { return index > 0; })\n .join('<template>')\n .split('</template>')\n .filter(function (item, index, arr) { return 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 var style = null;\n var styleScoped = false;\n\n if (componentString.indexOf('<style>') >= 0) {\n style = componentString.split('<style>')[1].split('</style>')[0];\n } else if (componentString.indexOf('<style scoped>') >= 0) {\n styleScoped = true;\n style = componentString.split('<style scoped>')[1].split('</style>')[0];\n style = style.split('\\n').map(function (line) {\n var trimmedLine = line.trim();\n if (trimmedLine.indexOf('@') === 0) { return line; }\n if (line.indexOf('{') >= 0) {\n if (line.indexOf('{{this}}') >= 0) {\n return line.replace('{{this}}', (\"[data-f7-\" + id + \"]\"));\n }\n return (\"[data-f7-\" + id + \"] \" + (line.trim()));\n }\n return line;\n }).join('\\n');\n }\n\n // Parse Script\n var scriptContent;\n var scriptEl;\n if (componentString.indexOf('<script>') >= 0) {\n var scripts = componentString.split('<script>');\n scriptContent = scripts[scripts.length - 1].split('</script>')[0].trim();\n } else {\n scriptContent = 'return {}';\n }\n if (!scriptContent || !scriptContent.trim()) { scriptContent = 'return {}'; }\n\n scriptContent = \"window.\" + callbackCreateName + \" = function () {\" + scriptContent + \"}\";\n\n // Insert Script El\n scriptEl = doc.createElement('script');\n scriptEl.innerHTML = scriptContent;\n $('head').append(scriptEl);\n\n var component = win[callbackCreateName]();\n\n // Remove Script El\n $(scriptEl).remove();\n win[callbackCreateName] = null;\n delete win[callbackCreateName];\n\n // Assign Template\n if (!component.template && !component.render) {\n component.template = template;\n component.templateType = templateType;\n }\n if (component.template) {\n if (component.templateType === 't7') {\n component.template = Template7.compile(component.template);\n }\n if (component.templateType === 'es') {\n var renderContent = \"window.\" + callbackRenderName + \" = function () {\\n return function render() {\\n return `\" + (component.template) + \"`;\\n }\\n }\";\n scriptEl = doc.createElement('script');\n scriptEl.innerHTML = renderContent;\n $('head').append(scriptEl);\n\n component.render = win[callbackRenderName]();\n\n // Remove Script El\n $(scriptEl).remove();\n win[callbackRenderName] = null;\n delete win[callbackRenderName];\n }\n }\n\n // Assign Style\n if (style) {\n component.style = style;\n component.styleScoped = styleScoped;\n }\n\n // Component ID\n component.id = id;\n return component;\n }\n\n var ComponentModule = {\n name: 'component',\n create: function create() {\n var app = this;\n app.component = {\n parse: function parse(componentString) {\n return parseComponent(componentString);\n },\n create: function create(options, extendContext) {\n return new Framework7Component(app, options, extendContext);\n },\n };\n },\n };\n\n var Statusbar = {\n hide: function hide() {\n $('html').removeClass('with-statusbar');\n if (Device.cordova && win.StatusBar) {\n win.StatusBar.hide();\n }\n },\n show: function show() {\n if (Device.cordova && win.StatusBar) {\n win.StatusBar.show();\n Utils.nextTick(function () {\n if (Device.needsStatusbarOverlay()) {\n $('html').addClass('with-statusbar');\n }\n });\n return;\n }\n $('html').addClass('with-statusbar');\n },\n onClick: function onClick() {\n var app = this;\n var pageContent;\n if ($('.popup.modal-in').length > 0) {\n // Check for opened popup\n pageContent = $('.popup.modal-in').find('.page:not(.page-previous):not(.page-next):not(.cached)').find('.page-content');\n } else if ($('.panel.panel-active').length > 0) {\n // Check for opened panel\n pageContent = $('.panel.panel-active').find('.page:not(.page-previous):not(.page-next):not(.cached)').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').find('.page:not(.page-previous):not(.page-next):not(.cached)').find('.page-content');\n } else if ($('.views').length > 0) {\n pageContent = $('.views').find('.page:not(.page-previous):not(.page-next):not(.cached)').find('.page-content');\n } else {\n pageContent = app.root.children('.view').find('.page:not(.page-previous):not(.page-next):not(.cached)').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: function setTextColor(color) {\n if (Device.cordova && win.StatusBar) {\n if (color === 'white') {\n win.StatusBar.styleLightContent();\n } else {\n win.StatusBar.styleDefault();\n }\n }\n },\n setIosTextColor: function setIosTextColor(color) {\n if (!Device.ios) { return; }\n Statusbar.setTextColor(color);\n },\n setBackgroundColor: function setBackgroundColor(color) {\n $('.statusbar').css('background-color', color);\n if (Device.cordova && win.StatusBar) {\n win.StatusBar.backgroundColorByHexString(color);\n }\n },\n isVisible: function isVisible() {\n if (Device.cordova && win.StatusBar) {\n return win.StatusBar.isVisible;\n }\n return false;\n },\n overlaysWebView: function overlaysWebView(overlays) {\n if ( overlays === void 0 ) overlays = true;\n\n if (Device.cordova && win.StatusBar) {\n win.StatusBar.overlaysWebView(overlays);\n if (overlays) {\n $('html').addClass('with-statusbar');\n } else {\n $('html').removeClass('with-statusbar');\n }\n }\n },\n iosOverlaysWebView: function iosOverlaysWebView(overlays) {\n if (!Device.ios) { return; }\n Statusbar.overlaysWebView(overlays);\n },\n checkOverlay: function checkOverlay() {\n if (Device.needsStatusbarOverlay()) {\n $('html').addClass('with-statusbar');\n } else {\n $('html').removeClass('with-statusbar');\n }\n },\n init: function init() {\n var app = this;\n var params = app.params.statusbar;\n if (!params.enabled) { return; }\n\n if (params.overlay === 'auto') {\n if (Device.needsStatusbarOverlay()) {\n $('html').addClass('with-statusbar');\n } else {\n $('html').removeClass('with-statusbar');\n }\n\n if (Device.ios && (Device.cordova || Device.webView)) {\n if (win.orientation === 0) {\n app.once('resize', function () {\n Statusbar.checkOverlay();\n });\n }\n\n $(doc).on('resume', function () {\n Statusbar.checkOverlay();\n }, false);\n\n app.on(Device.ios ? 'orientationchange' : 'orientationchange resize', function () {\n Statusbar.checkOverlay();\n });\n }\n } else if (params.overlay === true) {\n $('html').addClass('with-statusbar');\n } else if (params.overlay === false) {\n $('html').removeClass('with-statusbar');\n }\n\n if (Device.cordova && win.StatusBar) {\n if (params.scrollTopOnClick) {\n $(win).on('statusTap', Statusbar.onClick.bind(app));\n }\n if (Device.ios) {\n if (params.iosOverlaysWebView) {\n win.StatusBar.overlaysWebView(true);\n } else {\n win.StatusBar.overlaysWebView(false);\n }\n if (params.iosTextColor === 'white') {\n win.StatusBar.styleLightContent();\n } else {\n win.StatusBar.styleDefault();\n }\n }\n if (Device.android) {\n if (params.androidOverlaysWebView) {\n win.StatusBar.overlaysWebView(true);\n } else {\n win.StatusBar.overlaysWebView(false);\n }\n if (params.androidTextColor === 'white') {\n win.StatusBar.styleLightContent();\n } else {\n win.StatusBar.styleDefault();\n }\n }\n }\n if (params.iosBackgroundColor && Device.ios) {\n Statusbar.setBackgroundColor(params.iosBackgroundColor);\n }\n if ((params.materialBackgroundColor || params.androidBackgroundColor) && Device.android) {\n Statusbar.setBackgroundColor(params.materialBackgroundColor || params.androidBackgroundColor);\n }\n },\n };\n\n var Statusbar$1 = {\n name: 'statusbar',\n params: {\n statusbar: {\n enabled: true,\n overlay: 'auto',\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: function create() {\n var app = this;\n Utils.extend(app, {\n statusbar: {\n checkOverlay: Statusbar.checkOverlay,\n hide: Statusbar.hide,\n show: Statusbar.show,\n overlaysWebView: Statusbar.overlaysWebView,\n setTextColor: Statusbar.setTextColor,\n setBackgroundColor: Statusbar.setBackgroundColor,\n isVisible: Statusbar.isVisible,\n init: Statusbar.init.bind(app),\n\n iosOverlaysWebView: Statusbar.iosOverlaysWebView,\n setIosTextColor: Statusbar.iosSetTextColor,\n },\n });\n },\n on: {\n init: function init() {\n var app = this;\n Statusbar.init.call(app);\n },\n },\n clicks: {\n '.statusbar': function onStatusbarClick() {\n var app = this;\n if (!app.params.statusbar.enabled) { return; }\n if (!app.params.statusbar.scrollTopOnClick) { return; }\n Statusbar.onClick.call(app);\n },\n },\n };\n\n function getCurrentView(app) {\n var popoverView = $('.popover.modal-in .view');\n var popupView = $('.popup.modal-in .view');\n var panelView = $('.panel.panel-active .view');\n var appViews = $('.views');\n if (appViews.length === 0) { appViews = app.root; }\n // Find active view as tab\n var appView = appViews.children('.view');\n // Propably in tabs or split view\n if (appView.length > 1) {\n if (appView.hasClass('tab')) {\n // Tabs\n appView = appViews.children('.view.tab-active');\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 (appView.length > 0) {\n if (appView.length === 1 && appView[0].f7View) { return appView[0].f7View; }\n if (appView.length > 1) {\n return app.views.main;\n }\n }\n return undefined;\n }\n\n var View$1 = {\n name: 'view',\n params: {\n view: {\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 preloadPreviousPage: true,\n allowDuplicateUrls: false,\n reloadPages: false,\n removeElements: true,\n removeElementsWithTimeout: false,\n removeElementsTimeout: 0,\n restoreScrollTopOnBack: true,\n unloadTabContent: true,\n passRouteQueryToRequest: true,\n passRouteParamsToRequest: false,\n // Swipe Back\n iosSwipeBack: true,\n iosSwipeBackAnimateShadow: true,\n iosSwipeBackAnimateOpacity: true,\n iosSwipeBackActiveArea: 30,\n iosSwipeBackThreshold: 0,\n mdSwipeBack: false,\n mdSwipeBackAnimateShadow: true,\n mdSwipeBackAnimateOpacity: false,\n mdSwipeBackActiveArea: 30,\n mdSwipeBackThreshold: 0,\n // Push State\n pushState: false,\n pushStateRoot: undefined,\n pushStateAnimate: true,\n pushStateAnimateOnLoad: false,\n pushStateSeparator: '#!',\n pushStateOnLoad: true,\n // Animate Pages\n animate: true,\n animateWithJS: false,\n // iOS Dynamic Navbar\n iosDynamicNavbar: true,\n iosSeparateDynamicNavbar: true,\n // Animate iOS Navbar Back Icon\n iosAnimateNavbarBackIcon: true,\n // Delays\n iosPageLoadDelay: 0,\n materialPageLoadDelay: 0,\n // Routes hooks\n routesBeforeEnter: null,\n routesBeforeLeave: null,\n },\n },\n static: {\n View: View,\n },\n create: function create() {\n var app = this;\n Utils.extend(app, {\n views: Utils.extend([], {\n create: function create(el, params) {\n return new View(app, el, params);\n },\n get: function get(viewEl) {\n var $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: function get() {\n return getCurrentView(app);\n },\n });\n // Alias\n app.view = app.views;\n },\n on: {\n init: function init() {\n var app = this;\n $('.view-init').each(function (index, viewEl) {\n if (viewEl.f7View) { return; }\n var viewParams = $(viewEl).dataset();\n app.views.create(viewEl, viewParams);\n });\n },\n modalOpen: function modalOpen(modal) {\n var app = this;\n modal.$el.find('.view-init').each(function (index, viewEl) {\n if (viewEl.f7View) { return; }\n var viewParams = $(viewEl).dataset();\n app.views.create(viewEl, viewParams);\n });\n },\n modalBeforeDestroy: function modalBeforeDestroy(modal) {\n if (!modal || !modal.$el) { return; }\n modal.$el.find('.view-init').each(function (index, viewEl) {\n var view = viewEl.f7View;\n if (!view) { return; }\n view.destroy();\n });\n },\n },\n };\n\n var Navbar = {\n size: function size(el) {\n var app = this;\n if (app.theme !== 'ios') { return; }\n var $el = $(el);\n if ($el.hasClass('navbar')) {\n $el = $el.children('.navbar-inner').each(function (index, navbarEl) {\n app.navbar.size(navbarEl);\n });\n 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 var $viewEl = $el.parents('.view').eq(0);\n var left = app.rtl ? $el.children('.right') : $el.children('.left');\n var right = app.rtl ? $el.children('.left') : $el.children('.right');\n var title = $el.children('.title');\n var subnavbar = $el.children('.subnavbar');\n var noLeft = left.length === 0;\n var noRight = right.length === 0;\n var leftWidth = noLeft ? 0 : left.outerWidth(true);\n var rightWidth = noRight ? 0 : right.outerWidth(true);\n var titleWidth = title.outerWidth(true);\n var navbarStyles = $el.styles();\n var navbarWidth = $el[0].offsetWidth;\n var navbarInnerWidth = navbarWidth - parseInt(navbarStyles.paddingLeft, 10) - parseInt(navbarStyles.paddingRight, 10);\n var isPrevious = $el.hasClass('navbar-previous');\n var sliding = $el.hasClass('sliding');\n\n var router;\n var dynamicNavbar;\n var separateNavbar;\n var separateNavbarRightOffset = 0;\n var separateNavbarLeftOffset = 0;\n\n if ($viewEl.length > 0 && $viewEl[0].f7View) {\n router = $viewEl[0].f7View.router;\n dynamicNavbar = router && router.dynamicNavbar;\n separateNavbar = router && router.separateNavbar;\n if (!separateNavbar) {\n separateNavbarRightOffset = navbarWidth;\n separateNavbarLeftOffset = navbarWidth / 5;\n }\n }\n\n var currLeft;\n var 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 var 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 var inverter = app.rtl ? -1 : 1;\n\n if (dynamicNavbar) {\n if (title.hasClass('sliding') || (title.length > 0 && sliding)) {\n var titleLeftOffset = (-(currLeft + diff) * inverter) + separateNavbarLeftOffset;\n var titleRightOffset = ((navbarInnerWidth - currLeft - diff - titleWidth) * inverter) - separateNavbarRightOffset;\n\n if (isPrevious) {\n if (router && router.params.iosAnimateNavbarBackIcon) {\n var activeNavbarBackLink = $el.parent().find('.navbar-current').children('.left.sliding').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 + separateNavbarLeftOffset;\n left[0].f7NavbarRightOffset = ((navbarInnerWidth - left[0].offsetWidth) / 2) - separateNavbarRightOffset;\n if (router && router.params.iosAnimateNavbarBackIcon && left.find('.back .icon').length > 0) {\n left[0].f7NavbarRightOffset -= left.find('.back .icon')[0].offsetWidth;\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) + separateNavbarLeftOffset;\n right[0].f7NavbarRightOffset = rightWidth - separateNavbarRightOffset;\n }\n }\n if (subnavbar.length && (subnavbar.hasClass('sliding') || sliding)) {\n subnavbar[0].f7NavbarLeftOffset = app.rtl ? subnavbar[0].offsetWidth : (-subnavbar[0].offsetWidth + separateNavbarLeftOffset);\n subnavbar[0].f7NavbarRightOffset = (-subnavbar[0].f7NavbarLeftOffset - separateNavbarRightOffset) + separateNavbarLeftOffset;\n }\n }\n\n // Title left\n if (app.params.navbar.iosCenterTitle) {\n var titleLeft = diff;\n if (app.rtl && noLeft && noRight && title.length > 0) { titleLeft = -titleLeft; }\n title.css({ left: (titleLeft + \"px\") });\n }\n },\n hide: function hide(el, animate) {\n if ( animate === void 0 ) animate = true;\n\n var $el = $(el);\n if ($el.hasClass('navbar-inner')) { $el = $el.parents('.navbar'); }\n if (!$el.length) { return; }\n if ($el.hasClass('navbar-hidden')) { return; }\n var className = \"navbar-hidden\" + (animate ? ' navbar-transitioning' : '');\n $el.transitionEnd(function () {\n $el.removeClass('navbar-transitioning');\n });\n $el.addClass(className);\n },\n show: function show(el, animate) {\n if ( el === void 0 ) el = '.navbar-hidden';\n if ( animate === void 0 ) animate = true;\n\n var $el = $(el);\n if ($el.hasClass('navbar-inner')) { $el = $el.parents('.navbar'); }\n if (!$el.length) { return; }\n if (!$el.hasClass('navbar-hidden')) { return; }\n if (animate) {\n $el.addClass('navbar-transitioning');\n $el.transitionEnd(function () {\n $el.removeClass('navbar-transitioning');\n });\n }\n $el.removeClass('navbar-hidden');\n },\n getElByPage: function getElByPage(page) {\n var $pageEl;\n var $navbarEl;\n var 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').children('.navbar-inner');\n }\n if (!$navbarEl || ($navbarEl && $navbarEl.length === 0)) { return undefined; }\n return $navbarEl[0];\n },\n getPageByEl: function getPageByEl(navbarInnerEl) {\n var $navbarInnerEl = $(navbarInnerEl);\n if ($navbarInnerEl.hasClass('navbar')) {\n $navbarInnerEl = $navbarInnerEl.find('.navbar-inner');\n if ($navbarInnerEl.length > 1) { return undefined; }\n }\n if ($navbarInnerEl.parents('.page').length) {\n return $navbarInnerEl.parents('.page')[0];\n }\n var pageEl;\n $navbarInnerEl.parents('.view').find('.page').each(function (index, el) {\n if (el && el.f7Page && el.f7Page.navbarEl && $navbarInnerEl[0] === el.f7Page.navbarEl) {\n pageEl = el;\n }\n });\n return pageEl;\n },\n initHideNavbarOnScroll: function initHideNavbarOnScroll(pageEl, navbarInnerEl) {\n var app = this;\n var $pageEl = $(pageEl);\n var $navbarEl = $(navbarInnerEl || app.navbar.getElByPage(pageEl)).closest('.navbar');\n\n var previousScrollTop;\n var currentScrollTop;\n\n var scrollHeight;\n var offsetHeight;\n var reachEnd;\n var action;\n var navbarHidden;\n function handleScroll() {\n var scrollContent = this;\n if ($pageEl.hasClass('page-previous')) { return; }\n currentScrollTop = scrollContent.scrollTop;\n scrollHeight = scrollContent.scrollHeight;\n offsetHeight = scrollContent.offsetHeight;\n reachEnd = currentScrollTop + offsetHeight >= scrollHeight;\n navbarHidden = $navbarEl.hasClass('navbar-hidden');\n\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 <= 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' && navbarHidden) {\n app.navbar.show($navbarEl);\n navbarHidden = false;\n } else if (action === 'hide' && !navbarHidden) {\n app.navbar.hide($navbarEl);\n navbarHidden = true;\n }\n\n previousScrollTop = currentScrollTop;\n }\n $pageEl.on('scroll', '.page-content', handleScroll, true);\n $pageEl[0].f7ScrollNavbarHandler = handleScroll;\n },\n };\n var Navbar$1 = {\n name: 'navbar',\n create: function create() {\n var app = this;\n Utils.extend(app, {\n navbar: {\n size: Navbar.size.bind(app),\n hide: Navbar.hide.bind(app),\n show: Navbar.show.bind(app),\n getElByPage: Navbar.getElByPage.bind(app),\n getPageByEl: Navbar.getPageByEl.bind(app),\n initHideNavbarOnScroll: Navbar.initHideNavbarOnScroll.bind(app),\n },\n });\n },\n params: {\n navbar: {\n scrollTopOnTitleClick: true,\n iosCenterTitle: true,\n hideOnPageScroll: false,\n showOnPageScrollEnd: true,\n showOnPageScrollTop: true,\n },\n },\n on: {\n 'panelBreakpoint resize': function onResize() {\n var app = this;\n if (app.theme !== 'ios') { return; }\n $('.navbar').each(function (index, navbarEl) {\n app.navbar.size(navbarEl);\n });\n },\n pageBeforeRemove: function pageBeforeRemove(page) {\n if (page.$el[0].f7ScrollNavbarHandler) {\n page.$el.off('scroll', '.page-content', page.$el[0].f7ScrollNavbarHandler, true);\n }\n },\n pageBeforeIn: function pageBeforeIn(page) {\n var app = this;\n if (app.theme !== 'ios') { return; }\n var $navbarEl;\n var view = page.$el.parents('.view')[0].f7View;\n var navbarInnerEl = app.navbar.getElByPage(page);\n if (!navbarInnerEl) {\n $navbarEl = page.$el.parents('.view').children('.navbar');\n } else {\n $navbarEl = $(navbarInnerEl).parents('.navbar');\n }\n if (page.$el.hasClass('no-navbar') || (view.router.dynamicNavbar && !navbarInnerEl)) {\n var animate = !!(page.pageFrom && page.router.history.length > 0);\n app.navbar.hide($navbarEl, animate);\n } else {\n app.navbar.show($navbarEl);\n }\n },\n pageReinit: function pageReinit(page) {\n var app = this;\n if (app.theme !== 'ios') { return; }\n var $navbarEl = $(app.navbar.getElByPage(page));\n if (!$navbarEl || $navbarEl.length === 0) { return; }\n app.navbar.size($navbarEl);\n },\n pageInit: function pageInit(page) {\n var app = this;\n var $navbarEl = $(app.navbar.getElByPage(page));\n if (!$navbarEl || $navbarEl.length === 0) { return; }\n if (app.theme === 'ios') {\n app.navbar.size($navbarEl);\n }\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 return;\n }\n app.navbar.initHideNavbarOnScroll(page.el, $navbarEl[0]);\n }\n },\n modalOpen: function modalOpen(modal) {\n var app = this;\n if (app.theme !== 'ios') { return; }\n modal.$el.find('.navbar:not(.navbar-previous):not(.stacked)').each(function (index, navbarEl) {\n app.navbar.size(navbarEl);\n });\n },\n panelOpen: function panelOpen(panel) {\n var app = this;\n if (app.theme !== 'ios') { return; }\n panel.$el.find('.navbar:not(.navbar-previous):not(.stacked)').each(function (index, navbarEl) {\n app.navbar.size(navbarEl);\n });\n },\n panelSwipeOpen: function panelSwipeOpen(panel) {\n var app = this;\n if (app.theme !== 'ios') { return; }\n panel.$el.find('.navbar:not(.navbar-previous):not(.stacked)').each(function (index, navbarEl) {\n app.navbar.size(navbarEl);\n });\n },\n tabShow: function tabShow(tabEl) {\n var app = this;\n $(tabEl).find('.navbar:not(.navbar-previous):not(.stacked)').each(function (index, navbarEl) {\n app.navbar.size(navbarEl);\n });\n },\n },\n clicks: {\n '.navbar .title': function onTitleClick($clickedEl) {\n var app = this;\n if (!app.params.navbar.scrollTopOnTitleClick) { return; }\n if ($clickedEl.closest('a').length > 0) {\n return;\n }\n var pageContent;\n // Find active page\n var navbar = $clickedEl.parents('.navbar');\n\n // Static Layout\n pageContent = navbar.parents('.page-content');\n\n if (pageContent.length === 0) {\n // Fixed Layout\n if (navbar.parents('.page').length > 0) {\n pageContent = navbar.parents('.page').find('.page-content');\n }\n // Through Layout\n if (pageContent.length === 0) {\n if (navbar.nextAll('.page-current:not(.stacked)').length > 0) {\n pageContent = navbar.nextAll('.page-current:not(.stacked)').find('.page-content');\n }\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 },\n vnode: {\n 'navbar-inner': {\n postpatch: function postpatch(vnode) {\n var app = this;\n if (app.theme !== 'ios') { return; }\n app.navbar.size(vnode.elm);\n },\n },\n },\n };\n\n var Toolbar = {\n setHighlight: function setHighlight(tabbarEl) {\n var app = this;\n if (app.theme !== 'md') { return; }\n\n var $tabbarEl = $(tabbarEl);\n\n if ($tabbarEl.length === 0 || !($tabbarEl.hasClass('tabbar') || $tabbarEl.hasClass('tabbar-labels'))) { return; }\n\n var $highlightEl = $tabbarEl.find('.tab-link-highlight');\n var 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 var $activeLink = $tabbarEl.find('.tab-link-active');\n var highlightWidth;\n var 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 var activeIndex = $activeLink.index();\n highlightWidth = (100 / tabLinksCount) + \"%\";\n highlightTranslate = ((app.rtl ? -activeIndex : activeIndex) * 100) + \"%\";\n }\n\n Utils.nextFrame(function () {\n $highlightEl\n .css('width', highlightWidth)\n .transform((\"translate3d(\" + highlightTranslate + \",0,0)\"));\n });\n },\n init: function init(tabbarEl) {\n var app = this;\n app.toolbar.setHighlight(tabbarEl);\n },\n hide: function hide(el, animate) {\n if ( animate === void 0 ) animate = true;\n\n var $el = $(el);\n if ($el.hasClass('toolbar-hidden')) { return; }\n var className = \"toolbar-hidden\" + (animate ? ' toolbar-transitioning' : '');\n $el.transitionEnd(function () {\n $el.removeClass('toolbar-transitioning');\n });\n $el.addClass(className);\n },\n show: function show(el, animate) {\n if ( animate === void 0 ) animate = true;\n\n var $el = $(el);\n if (!$el.hasClass('toolbar-hidden')) { return; }\n if (animate) {\n $el.addClass('toolbar-transitioning');\n $el.transitionEnd(function () {\n $el.removeClass('toolbar-transitioning');\n });\n }\n $el.removeClass('toolbar-hidden');\n },\n initHideToolbarOnScroll: function initHideToolbarOnScroll(pageEl) {\n var app = this;\n var $pageEl = $(pageEl);\n var $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 var previousScrollTop;\n var currentScrollTop;\n\n var scrollHeight;\n var offsetHeight;\n var reachEnd;\n var action;\n var toolbarHidden;\n function handleScroll() {\n var scrollContent = this;\n if ($pageEl.hasClass('page-previous')) { return; }\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 };\n var Toolbar$1 = {\n name: 'toolbar',\n create: function create() {\n var app = this;\n Utils.extend(app, {\n toolbar: {\n hide: Toolbar.hide.bind(app),\n show: Toolbar.show.bind(app),\n setHighlight: Toolbar.setHighlight.bind(app),\n initHideToolbarOnScroll: Toolbar.initHideToolbarOnScroll.bind(app),\n init: Toolbar.init.bind(app),\n },\n });\n },\n params: {\n toolbar: {\n hideOnPageScroll: false,\n showOnPageScrollEnd: true,\n showOnPageScrollTop: true,\n },\n },\n on: {\n pageBeforeRemove: function pageBeforeRemove(page) {\n if (page.$el[0].f7ScrollToolbarHandler) {\n page.$el.off('scroll', '.page-content', page.$el[0].f7ScrollToolbarHandler, true);\n }\n },\n pageBeforeIn: function pageBeforeIn(page) {\n var app = this;\n var $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: function pageInit(page) {\n var app = this;\n page.$el.find('.tabbar, .tabbar-labels').each(function (index, 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.initHideToolbarOnScroll(page.el);\n }\n },\n init: function init() {\n var app = this;\n app.root.find('.tabbar, .tabbar-labels').each(function (index, tabbarEl) {\n app.toolbar.init(tabbarEl);\n });\n },\n },\n };\n\n var Subnavbar = {\n name: 'subnavbar',\n on: {\n pageInit: function pageInit(page) {\n if (page.$navbarEl && page.$navbarEl.length && page.$navbarEl.find('.subnavbar').length) {\n page.$el.addClass('page-with-subnavbar');\n }\n if (page.$el.find('.subnavbar').length) {\n page.$el.addClass('page-with-subnavbar');\n }\n },\n },\n };\n\n var TouchRipple = function TouchRipple($el, x, y) {\n var ripple = this;\n if (!$el) { return undefined; }\n var box = $el[0].getBoundingClientRect();\n var center = {\n x: x - box.left,\n y: y - box.top,\n };\n var width = box.width;\n var height = box.height;\n var diameter = Math.max((Math.pow( ((Math.pow( height, 2 )) + (Math.pow( width, 2 ))), 0.5 )), 48);\n\n ripple.$rippleWaveEl = $((\"<div class=\\\"ripple-wave\\\" style=\\\"width: \" + diameter + \"px; height: \" + diameter + \"px; margin-top:-\" + (diameter / 2) + \"px; margin-left:-\" + (diameter / 2) + \"px; left:\" + (center.x) + \"px; top:\" + (center.y) + \"px;\\\"></div>\"));\n\n $el.prepend(ripple.$rippleWaveEl);\n\n /* eslint no-underscore-dangle: [\"error\", { \"allow\": [\"_clientLeft\"] }] */\n // ripple._clientLeft = ripple.$rippleWaveEl[0].clientLeft;\n ripple.rippleTransform = \"translate3d(\" + (-center.x + (width / 2)) + \"px, \" + (-center.y + (height / 2)) + \"px, 0) scale(1)\";\n\n Utils.nextFrame(function () {\n if (!ripple || !ripple.$rippleWaveEl) { return; }\n ripple.$rippleWaveEl.transform(ripple.rippleTransform);\n });\n\n return ripple;\n };\n\n TouchRipple.prototype.onRemove = function onRemove () {\n var ripple = this;\n if (ripple.$rippleWaveEl) {\n ripple.$rippleWaveEl.remove();\n }\n Object.keys(ripple).forEach(function (key) {\n ripple[key] = null;\n delete ripple[key];\n });\n ripple = null;\n };\n\n TouchRipple.prototype.remove = function remove () {\n var ripple = this;\n if (ripple.removing) { return; }\n var $rippleWaveEl = this.$rippleWaveEl;\n var rippleTransform = this.rippleTransform;\n var removeTimeout = Utils.nextTick(function () {\n ripple.onRemove();\n }, 400);\n ripple.removing = true;\n $rippleWaveEl\n .addClass('ripple-wave-fill')\n .transform(rippleTransform.replace('scale(1)', 'scale(1.01)'))\n .transitionEnd(function () {\n clearTimeout(removeTimeout);\n Utils.nextFrame(function () {\n $rippleWaveEl\n .addClass('ripple-wave-out')\n .transform(rippleTransform.replace('scale(1)', 'scale(1.01)'));\n\n removeTimeout = Utils.nextTick(function () {\n ripple.onRemove();\n }, 700);\n\n $rippleWaveEl.transitionEnd(function () {\n clearTimeout(removeTimeout);\n ripple.onRemove();\n });\n });\n });\n };\n\n var TouchRipple$1 = {\n name: 'touch-ripple',\n static: {\n TouchRipple: TouchRipple,\n },\n create: function create() {\n var app = this;\n app.touchRipple = {\n create: function create() {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( TouchRipple, [ null ].concat( args) ));\n },\n };\n },\n };\n\n var openedModals = [];\n var dialogsQueue = [];\n function clearDialogsQueue() {\n if (dialogsQueue.length === 0) { return; }\n var dialog = dialogsQueue.shift();\n dialog.open();\n }\n var Modal = /*@__PURE__*/(function (Framework7Class$$1) {\n function Modal(app, params) {\n Framework7Class$$1.call(this, params, [app]);\n\n var modal = this;\n\n var defaults = {};\n\n // Extend defaults with modules params\n modal.useModulesParams(defaults);\n\n modal.params = Utils.extend(defaults, params);\n modal.opened = false;\n\n // Install Modules\n modal.useModules();\n\n return this;\n }\n\n if ( Framework7Class$$1 ) Modal.__proto__ = Framework7Class$$1;\n Modal.prototype = Object.create( Framework7Class$$1 && Framework7Class$$1.prototype );\n Modal.prototype.constructor = Modal;\n\n Modal.prototype.onOpen = function onOpen () {\n var 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\"), modal);\n modal.emit((\"local::open modalOpen \" + (modal.type) + \"Open\"), modal);\n };\n\n Modal.prototype.onOpened = function onOpened () {\n var modal = this;\n modal.$el.trigger((\"modal:opened \" + (modal.type.toLowerCase()) + \":opened\"), modal);\n modal.emit((\"local::opened modalOpened \" + (modal.type) + \"Opened\"), modal);\n };\n\n Modal.prototype.onClose = function onClose () {\n var 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\"), modal);\n modal.emit((\"local::close modalClose \" + (modal.type) + \"Close\"), modal);\n };\n\n Modal.prototype.onClosed = function onClosed () {\n var 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\"), modal);\n modal.emit((\"local::closed modalClosed \" + (modal.type) + \"Closed\"), modal);\n };\n\n Modal.prototype.open = function open (animateModal) {\n var modal = this;\n var app = modal.app;\n var $el = modal.$el;\n var $backdropEl = modal.$backdropEl;\n var type = modal.type;\n var 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 return modal;\n }\n\n if (type === 'dialog' && app.params.modal.queueDialogs) {\n var pushToQueue;\n if ($('.dialog.modal-in').length > 0) {\n pushToQueue = true;\n } else if (openedModals.length > 0) {\n openedModals.forEach(function (openedModal) {\n if (openedModal.type === 'dialog') { pushToQueue = true; }\n });\n }\n if (pushToQueue) {\n dialogsQueue.push(modal);\n return modal;\n }\n }\n\n var $modalParentEl = $el.parent();\n var wasInDom = $el.parents(doc).length > 0;\n if (app.params.modal.moveToRoot && !$modalParentEl.is(app.root)) {\n app.root.append($el);\n modal.once((type + \"Closed\"), function () {\n if (wasInDom) {\n $modalParentEl.append($el);\n } else {\n $el.remove();\n }\n });\n }\n // Show Modal\n $el.show();\n\n // Set Dialog offset\n if (type === 'dialog') {\n $el.css({\n marginTop: ((-Math.round($el.outerHeight() / 2)) + \"px\"),\n });\n }\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\n .animationEnd(function () {\n transitionEnd();\n });\n $el\n .transitionEnd(function () {\n transitionEnd();\n });\n $el\n .removeClass('modal-out not-animated')\n .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 Modal.prototype.close = function close (animateModal) {\n var modal = this;\n var $el = modal.$el;\n var $backdropEl = modal.$backdropEl;\n\n var 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 return modal;\n }\n\n // backdrop\n if ($backdropEl) {\n var needToHideBackdrop = true;\n if (modal.type === 'popup') {\n modal.$el.prevAll('.popup.modal-in').each(function (index, popupEl) {\n var 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 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\n .animationEnd(function () {\n transitionEnd();\n });\n $el\n .transitionEnd(function () {\n transitionEnd();\n });\n $el\n .removeClass('modal-in')\n .addClass('modal-out');\n // Emit close\n modal.onClose();\n } else {\n $el\n .addClass('not-animated')\n .removeClass('modal-in')\n .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 Modal.prototype.destroy = function destroy () {\n var 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\"), modal);\n if (modal.$el.length && modal.$el[0].f7Modal) {\n delete modal.$el[0].f7Modal;\n }\n }\n Utils.deleteProps(modal);\n modal.destroyed = true;\n };\n\n return Modal;\n }(Framework7Class));\n\n var CustomModal = /*@__PURE__*/(function (Modal$$1) {\n function CustomModal(app, params) {\n var extendedParams = Utils.extend({\n backdrop: true,\n closeByBackdropClick: true,\n on: {},\n }, params);\n\n // Extends with open/close Modal methods;\n Modal$$1.call(this, app, extendedParams);\n\n var customModal = this;\n\n customModal.params = extendedParams;\n\n // Find Element\n var $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 var $backdropEl;\n if (customModal.params.backdrop) {\n $backdropEl = app.root.children('.custom-modal-backdrop');\n if ($backdropEl.length === 0) {\n $backdropEl = $('<div class=\"custom-modal-backdrop\"></div>');\n app.root.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', function () {\n if (customModal.params.closeByBackdropClick && customModal.params.backdrop) {\n app.on('click', handleClick);\n }\n });\n customModal.on('customModalClose', function () {\n if (customModal.params.closeByBackdropClick && customModal.params.backdrop) {\n app.off('click', handleClick);\n }\n });\n\n Utils.extend(customModal, {\n app: app,\n $el: $el,\n el: $el[0],\n $backdropEl: $backdropEl,\n backdropEl: $backdropEl && $backdropEl[0],\n type: 'customModal',\n });\n\n $el[0].f7Modal = customModal;\n\n return customModal;\n }\n\n if ( Modal$$1 ) CustomModal.__proto__ = Modal$$1;\n CustomModal.prototype = Object.create( Modal$$1 && Modal$$1.prototype );\n CustomModal.prototype.constructor = CustomModal;\n\n return CustomModal;\n }(Modal));\n\n var Modal$1 = {\n name: 'modal',\n static: {\n Modal: Modal,\n CustomModal: CustomModal,\n },\n create: function create() {\n var app = this;\n app.customModal = {\n create: function create(params) {\n return new CustomModal(app, params);\n },\n };\n },\n params: {\n modal: {\n moveToRoot: true,\n queueDialogs: true,\n },\n },\n };\n\n {\n if (typeof window !== 'undefined') {\n // Template7\n if (!window.Template7) { window.Template7 = Template7; }\n\n // Dom7\n if (!window.Dom7) { window.Dom7 = $; }\n }\n }\n\n // Install Core Modules & Components\n Framework7.use([\n DeviceModule,\n SupportModule,\n UtilsModule,\n ResizeModule,\n RequestModule,\n TouchModule,\n ClicksModule,\n Router$1,\n HistoryModule,\n StorageModule,\n ComponentModule,\n Statusbar$1,\n View$1,\n Navbar$1,\n Toolbar$1,\n Subnavbar,\n TouchRipple$1,\n Modal$1 ]);\n\n return Framework7;\n\n}));\n"]}