403Webshell
Server IP : 209.209.40.120  /  Your IP : 216.73.217.112
Web Server : Microsoft-IIS/10.0
System : Windows NT NEWWWW 10.0 build 17763 (Windows Server 2019) i586
User : NEWWWW$ ( 0)
PHP Version : 8.3.30
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : OFF  |  Perl : OFF  |  Python : OFF  |  Sudo : OFF  |  Pkexec : OFF
Directory :  C:/framework7/node_modules/.vite/deps/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : C:/framework7/node_modules/.vite/deps/chunk-YH2ICC64.js.map
{
  "version": 3,
  "sources": ["../../dom7/dom7.esm.js", "../../ssr-window/ssr-window.esm.js", "../../framework7/shared/dom7.js", "../../framework7/shared/utils.js", "../../framework7/shared/material-color-utils.js", "../../framework7/shared/material-colors.js", "../../framework7/shared/get-support.js", "../../framework7/shared/get-device.js", "../../framework7/shared/events-class.js", "../../framework7/shared/class.js", "../../framework7/shared/constructor-methods.js", "../../framework7/shared/modal-methods.js", "../../framework7/components/app/load-module.js", "../../framework7/shared/$jsx.js", "../../framework7/components/app/app-class.js", "../../framework7/modules/device/device.js", "../../framework7/modules/support/support.js", "../../framework7/modules/utils/utils.js", "../../framework7/modules/resize/resize.js", "../../framework7/modules/touch/touch.js", "../../path-to-regexp/src/index.ts", "../../framework7/shared/history.js", "../../framework7/modules/router/swipe-back.js", "../../framework7/modules/router/redirect.js", "../../framework7/modules/router/process-route-queue.js", "../../framework7/modules/router/app-router-check.js", "../../framework7/modules/router/async-component.js", "../../framework7/modules/router/navigate.js", "../../framework7/modules/router/tab.js", "../../framework7/modules/router/modal.js", "../../framework7/modules/router/back.js", "../../framework7/modules/router/clear-previous-history.js", "../../framework7/modules/router/router-class.js", "../../framework7/modules/router/router.js", "../../framework7/components/view/resizable-view.js", "../../framework7/components/view/view-class.js", "../../framework7/modules/clicks/clicks.js", "../../framework7/modules/history/history.js", "../../framework7/modules/service-worker/service-worker.js", "../../framework7/modules/store/create-store.js", "../../framework7/modules/store/store.js", "../../framework7/components/statusbar/statusbar.js", "../../framework7/components/view/view.js", "../../framework7/components/navbar/navbar.js", "../../framework7/components/toolbar/toolbar.js", "../../framework7/components/subnavbar/subnavbar.js", "../../framework7/components/touch-ripple/touch-ripple-class.js", "../../framework7/components/touch-ripple/touch-ripple.js", "../../framework7/components/modal/modal-class.js", "../../framework7/components/modal/custom-modal-class.js", "../../framework7/components/modal/modal.js"],
  "sourcesContent": ["/**\n * Dom7 4.0.6\n * Minimalistic JavaScript library for DOM manipulation, with a jQuery-compatible API\n * https://framework7.io/docs/dom7.html\n *\n * Copyright 2023, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: February 2, 2023\n */\nimport { getWindow, getDocument } from 'ssr-window';\n\n/* eslint-disable no-proto */\nfunction makeReactive(obj) {\n  const proto = obj.__proto__;\n  Object.defineProperty(obj, '__proto__', {\n    get() {\n      return proto;\n    },\n\n    set(value) {\n      proto.__proto__ = value;\n    }\n\n  });\n}\n\nclass Dom7 extends Array {\n  constructor(items) {\n    if (typeof items === 'number') {\n      super(items);\n    } else {\n      super(...(items || []));\n      makeReactive(this);\n    }\n  }\n\n}\n\nfunction arrayFlat(arr = []) {\n  const res = [];\n  arr.forEach(el => {\n    if (Array.isArray(el)) {\n      res.push(...arrayFlat(el));\n    } else {\n      res.push(el);\n    }\n  });\n  return res;\n}\nfunction arrayFilter(arr, callback) {\n  return Array.prototype.filter.call(arr, callback);\n}\nfunction arrayUnique(arr) {\n  const uniqueArray = [];\n\n  for (let i = 0; i < arr.length; i += 1) {\n    if (uniqueArray.indexOf(arr[i]) === -1) uniqueArray.push(arr[i]);\n  }\n\n  return uniqueArray;\n}\nfunction toCamelCase(string) {\n  return string.toLowerCase().replace(/-(.)/g, (match, group) => group.toUpperCase());\n}\n\n// eslint-disable-next-line\n\nfunction qsa(selector, context) {\n  if (typeof selector !== 'string') {\n    return [selector];\n  }\n\n  const a = [];\n  const res = context.querySelectorAll(selector);\n\n  for (let i = 0; i < res.length; i += 1) {\n    a.push(res[i]);\n  }\n\n  return a;\n}\n\nfunction $(selector, context) {\n  const window = getWindow();\n  const document = getDocument();\n  let arr = [];\n\n  if (!context && selector instanceof Dom7) {\n    return selector;\n  }\n\n  if (!selector) {\n    return new Dom7(arr);\n  }\n\n  if (typeof selector === 'string') {\n    const html = selector.trim();\n\n    if (html.indexOf('<') >= 0 && html.indexOf('>') >= 0) {\n      let toCreate = 'div';\n      if (html.indexOf('<li') === 0) toCreate = 'ul';\n      if (html.indexOf('<tr') === 0) toCreate = 'tbody';\n      if (html.indexOf('<td') === 0 || html.indexOf('<th') === 0) toCreate = 'tr';\n      if (html.indexOf('<tbody') === 0) toCreate = 'table';\n      if (html.indexOf('<option') === 0) toCreate = 'select';\n      const tempParent = document.createElement(toCreate);\n      tempParent.innerHTML = html;\n\n      for (let i = 0; i < tempParent.childNodes.length; i += 1) {\n        arr.push(tempParent.childNodes[i]);\n      }\n    } else {\n      arr = qsa(selector.trim(), context || document);\n    } // arr = qsa(selector, document);\n\n  } else if (selector.nodeType || selector === window || selector === document) {\n    arr.push(selector);\n  } else if (Array.isArray(selector)) {\n    if (selector instanceof Dom7) return selector;\n    arr = selector;\n  }\n\n  return new Dom7(arrayUnique(arr));\n}\n\n$.fn = Dom7.prototype;\n\n// eslint-disable-next-line\n\nfunction addClass(...classes) {\n  const classNames = arrayFlat(classes.map(c => c.split(' ')));\n  this.forEach(el => {\n    el.classList.add(...classNames);\n  });\n  return this;\n}\n\nfunction removeClass(...classes) {\n  const classNames = arrayFlat(classes.map(c => c.split(' ')));\n  this.forEach(el => {\n    el.classList.remove(...classNames);\n  });\n  return this;\n}\n\nfunction toggleClass(...classes) {\n  const classNames = arrayFlat(classes.map(c => c.split(' ')));\n  this.forEach(el => {\n    classNames.forEach(className => {\n      el.classList.toggle(className);\n    });\n  });\n}\n\nfunction hasClass(...classes) {\n  const classNames = arrayFlat(classes.map(c => c.split(' ')));\n  return arrayFilter(this, el => {\n    return classNames.filter(className => el.classList.contains(className)).length > 0;\n  }).length > 0;\n}\n\nfunction attr(attrs, value) {\n  if (arguments.length === 1 && typeof attrs === 'string') {\n    // Get attr\n    if (this[0]) return this[0].getAttribute(attrs);\n    return undefined;\n  } // Set attrs\n\n\n  for (let i = 0; i < this.length; i += 1) {\n    if (arguments.length === 2) {\n      // String\n      this[i].setAttribute(attrs, value);\n    } else {\n      // Object\n      for (const attrName in attrs) {\n        this[i][attrName] = attrs[attrName];\n        this[i].setAttribute(attrName, attrs[attrName]);\n      }\n    }\n  }\n\n  return this;\n}\n\nfunction removeAttr(attr) {\n  for (let i = 0; i < this.length; i += 1) {\n    this[i].removeAttribute(attr);\n  }\n\n  return this;\n}\n\nfunction prop(props, value) {\n  if (arguments.length === 1 && typeof props === 'string') {\n    // Get prop\n    if (this[0]) return this[0][props];\n  } else {\n    // Set props\n    for (let i = 0; i < this.length; i += 1) {\n      if (arguments.length === 2) {\n        // String\n        this[i][props] = value;\n      } else {\n        // Object\n        for (const propName in props) {\n          this[i][propName] = props[propName];\n        }\n      }\n    }\n\n    return this;\n  }\n\n  return this;\n}\n\nfunction data(key, value) {\n  let el;\n\n  if (typeof value === 'undefined') {\n    el = this[0];\n    if (!el) return undefined; // Get value\n\n    if (el.dom7ElementDataStorage && key in el.dom7ElementDataStorage) {\n      return el.dom7ElementDataStorage[key];\n    }\n\n    const dataKey = el.getAttribute(`data-${key}`);\n\n    if (dataKey) {\n      return dataKey;\n    }\n\n    return undefined;\n  } // Set value\n\n\n  for (let i = 0; i < this.length; i += 1) {\n    el = this[i];\n    if (!el.dom7ElementDataStorage) el.dom7ElementDataStorage = {};\n    el.dom7ElementDataStorage[key] = value;\n  }\n\n  return this;\n}\n\nfunction removeData(key) {\n  for (let i = 0; i < this.length; i += 1) {\n    const el = this[i];\n\n    if (el.dom7ElementDataStorage && el.dom7ElementDataStorage[key]) {\n      el.dom7ElementDataStorage[key] = null;\n      delete el.dom7ElementDataStorage[key];\n    }\n  }\n}\n\nfunction dataset() {\n  const el = this[0];\n  if (!el) return undefined;\n  const dataset = {}; // eslint-disable-line\n\n  if (el.dataset) {\n    for (const dataKey in el.dataset) {\n      dataset[dataKey] = el.dataset[dataKey];\n    }\n  } else {\n    for (let i = 0; i < el.attributes.length; i += 1) {\n      const attr = el.attributes[i];\n\n      if (attr.name.indexOf('data-') >= 0) {\n        dataset[toCamelCase(attr.name.split('data-')[1])] = attr.value;\n      }\n    }\n  }\n\n  for (const key in dataset) {\n    if (dataset[key] === 'false') dataset[key] = false;else if (dataset[key] === 'true') dataset[key] = true;else if (parseFloat(dataset[key]) === dataset[key] * 1) dataset[key] *= 1;\n  }\n\n  return dataset;\n}\n\nfunction val(value) {\n  if (typeof value === 'undefined') {\n    // get value\n    const el = this[0];\n    if (!el) return undefined;\n\n    if (el.multiple && el.nodeName.toLowerCase() === 'select') {\n      const values = [];\n\n      for (let i = 0; i < el.selectedOptions.length; i += 1) {\n        values.push(el.selectedOptions[i].value);\n      }\n\n      return values;\n    }\n\n    return el.value;\n  } // set value\n\n\n  for (let i = 0; i < this.length; i += 1) {\n    const el = this[i];\n\n    if (Array.isArray(value) && el.multiple && el.nodeName.toLowerCase() === 'select') {\n      for (let j = 0; j < el.options.length; j += 1) {\n        el.options[j].selected = value.indexOf(el.options[j].value) >= 0;\n      }\n    } else {\n      el.value = value;\n    }\n  }\n\n  return this;\n}\n\nfunction value(value) {\n  return this.val(value);\n}\n\nfunction transform(transform) {\n  for (let i = 0; i < this.length; i += 1) {\n    this[i].style.transform = transform;\n  }\n\n  return this;\n}\n\nfunction transition(duration) {\n  for (let i = 0; i < this.length; i += 1) {\n    this[i].style.transitionDuration = typeof duration !== 'string' ? `${duration}ms` : duration;\n  }\n\n  return this;\n}\n\nfunction on(...args) {\n  let [eventType, targetSelector, listener, capture] = args;\n\n  if (typeof args[1] === 'function') {\n    [eventType, listener, capture] = args;\n    targetSelector = undefined;\n  }\n\n  if (!capture) capture = false;\n\n  function handleLiveEvent(e) {\n    const target = e.target;\n    if (!target) return;\n    const eventData = e.target.dom7EventData || [];\n\n    if (eventData.indexOf(e) < 0) {\n      eventData.unshift(e);\n    }\n\n    if ($(target).is(targetSelector)) listener.apply(target, eventData);else {\n      const parents = $(target).parents(); // eslint-disable-line\n\n      for (let k = 0; k < parents.length; k += 1) {\n        if ($(parents[k]).is(targetSelector)) listener.apply(parents[k], eventData);\n      }\n    }\n  }\n\n  function handleEvent(e) {\n    const eventData = e && e.target ? e.target.dom7EventData || [] : [];\n\n    if (eventData.indexOf(e) < 0) {\n      eventData.unshift(e);\n    }\n\n    listener.apply(this, eventData);\n  }\n\n  const events = eventType.split(' ');\n  let j;\n\n  for (let i = 0; i < this.length; i += 1) {\n    const el = this[i];\n\n    if (!targetSelector) {\n      for (j = 0; j < events.length; j += 1) {\n        const event = events[j];\n        if (!el.dom7Listeners) el.dom7Listeners = {};\n        if (!el.dom7Listeners[event]) el.dom7Listeners[event] = [];\n        el.dom7Listeners[event].push({\n          listener,\n          proxyListener: handleEvent\n        });\n        el.addEventListener(event, handleEvent, capture);\n      }\n    } else {\n      // Live events\n      for (j = 0; j < events.length; j += 1) {\n        const event = events[j];\n        if (!el.dom7LiveListeners) el.dom7LiveListeners = {};\n        if (!el.dom7LiveListeners[event]) el.dom7LiveListeners[event] = [];\n        el.dom7LiveListeners[event].push({\n          listener,\n          proxyListener: handleLiveEvent\n        });\n        el.addEventListener(event, handleLiveEvent, capture);\n      }\n    }\n  }\n\n  return this;\n}\n\nfunction off(...args) {\n  let [eventType, targetSelector, listener, capture] = args;\n\n  if (typeof args[1] === 'function') {\n    [eventType, listener, capture] = args;\n    targetSelector = undefined;\n  }\n\n  if (!capture) capture = false;\n  const events = eventType.split(' ');\n\n  for (let i = 0; i < events.length; i += 1) {\n    const event = events[i];\n\n    for (let j = 0; j < this.length; j += 1) {\n      const el = this[j];\n      let handlers;\n\n      if (!targetSelector && el.dom7Listeners) {\n        handlers = el.dom7Listeners[event];\n      } else if (targetSelector && el.dom7LiveListeners) {\n        handlers = el.dom7LiveListeners[event];\n      }\n\n      if (handlers && handlers.length) {\n        for (let k = handlers.length - 1; k >= 0; k -= 1) {\n          const handler = handlers[k];\n\n          if (listener && handler.listener === listener) {\n            el.removeEventListener(event, handler.proxyListener, capture);\n            handlers.splice(k, 1);\n          } else if (listener && handler.listener && handler.listener.dom7proxy && handler.listener.dom7proxy === listener) {\n            el.removeEventListener(event, handler.proxyListener, capture);\n            handlers.splice(k, 1);\n          } else if (!listener) {\n            el.removeEventListener(event, handler.proxyListener, capture);\n            handlers.splice(k, 1);\n          }\n        }\n      }\n    }\n  }\n\n  return this;\n}\n\nfunction once(...args) {\n  const dom = this;\n  let [eventName, targetSelector, listener, capture] = args;\n\n  if (typeof args[1] === 'function') {\n    [eventName, listener, capture] = args;\n    targetSelector = undefined;\n  }\n\n  function onceHandler(...eventArgs) {\n    listener.apply(this, eventArgs);\n    dom.off(eventName, targetSelector, onceHandler, capture);\n\n    if (onceHandler.dom7proxy) {\n      delete onceHandler.dom7proxy;\n    }\n  }\n\n  onceHandler.dom7proxy = listener;\n  return dom.on(eventName, targetSelector, onceHandler, capture);\n}\n\nfunction trigger(...args) {\n  const window = getWindow();\n  const events = args[0].split(' ');\n  const eventData = args[1];\n\n  for (let i = 0; i < events.length; i += 1) {\n    const event = events[i];\n\n    for (let j = 0; j < this.length; j += 1) {\n      const el = this[j];\n\n      if (window.CustomEvent) {\n        const evt = new window.CustomEvent(event, {\n          detail: eventData,\n          bubbles: true,\n          cancelable: true\n        });\n        el.dom7EventData = args.filter((data, dataIndex) => dataIndex > 0);\n        el.dispatchEvent(evt);\n        el.dom7EventData = [];\n        delete el.dom7EventData;\n      }\n    }\n  }\n\n  return this;\n}\n\nfunction transitionStart(callback) {\n  const dom = this;\n\n  function fireCallBack(e) {\n    if (e.target !== this) return;\n    callback.call(this, e);\n    dom.off('transitionstart', fireCallBack);\n  }\n\n  if (callback) {\n    dom.on('transitionstart', fireCallBack);\n  }\n\n  return this;\n}\n\nfunction transitionEnd(callback) {\n  const dom = this;\n\n  function fireCallBack(e) {\n    if (e.target !== this) return;\n    callback.call(this, e);\n    dom.off('transitionend', fireCallBack);\n  }\n\n  if (callback) {\n    dom.on('transitionend', fireCallBack);\n  }\n\n  return this;\n}\n\nfunction animationEnd(callback) {\n  const dom = this;\n\n  function fireCallBack(e) {\n    if (e.target !== this) return;\n    callback.call(this, e);\n    dom.off('animationend', fireCallBack);\n  }\n\n  if (callback) {\n    dom.on('animationend', fireCallBack);\n  }\n\n  return this;\n}\n\nfunction width() {\n  const window = getWindow();\n\n  if (this[0] === window) {\n    return window.innerWidth;\n  }\n\n  if (this.length > 0) {\n    return parseFloat(this.css('width'));\n  }\n\n  return null;\n}\n\nfunction outerWidth(includeMargins) {\n  if (this.length > 0) {\n    if (includeMargins) {\n      const styles = this.styles();\n      return this[0].offsetWidth + parseFloat(styles.getPropertyValue('margin-right')) + parseFloat(styles.getPropertyValue('margin-left'));\n    }\n\n    return this[0].offsetWidth;\n  }\n\n  return null;\n}\n\nfunction height() {\n  const window = getWindow();\n\n  if (this[0] === window) {\n    return window.innerHeight;\n  }\n\n  if (this.length > 0) {\n    return parseFloat(this.css('height'));\n  }\n\n  return null;\n}\n\nfunction outerHeight(includeMargins) {\n  if (this.length > 0) {\n    if (includeMargins) {\n      const styles = this.styles();\n      return this[0].offsetHeight + parseFloat(styles.getPropertyValue('margin-top')) + parseFloat(styles.getPropertyValue('margin-bottom'));\n    }\n\n    return this[0].offsetHeight;\n  }\n\n  return null;\n}\n\nfunction offset() {\n  if (this.length > 0) {\n    const window = getWindow();\n    const document = getDocument();\n    const el = this[0];\n    const box = el.getBoundingClientRect();\n    const body = document.body;\n    const clientTop = el.clientTop || body.clientTop || 0;\n    const clientLeft = el.clientLeft || body.clientLeft || 0;\n    const scrollTop = el === window ? window.scrollY : el.scrollTop;\n    const scrollLeft = el === window ? window.scrollX : el.scrollLeft;\n    return {\n      top: box.top + scrollTop - clientTop,\n      left: box.left + scrollLeft - clientLeft\n    };\n  }\n\n  return null;\n}\n\nfunction hide() {\n  for (let i = 0; i < this.length; i += 1) {\n    this[i].style.display = 'none';\n  }\n\n  return this;\n}\n\nfunction show() {\n  const window = getWindow();\n\n  for (let i = 0; i < this.length; i += 1) {\n    const el = this[i];\n\n    if (el.style.display === 'none') {\n      el.style.display = '';\n    }\n\n    if (window.getComputedStyle(el, null).getPropertyValue('display') === 'none') {\n      // Still not visible\n      el.style.display = 'block';\n    }\n  }\n\n  return this;\n}\n\nfunction styles() {\n  const window = getWindow();\n  if (this[0]) return window.getComputedStyle(this[0], null);\n  return {};\n}\n\nfunction css(props, value) {\n  const window = getWindow();\n  let i;\n\n  if (arguments.length === 1) {\n    if (typeof props === 'string') {\n      // .css('width')\n      if (this[0]) return window.getComputedStyle(this[0], null).getPropertyValue(props);\n    } else {\n      // .css({ width: '100px' })\n      for (i = 0; i < this.length; i += 1) {\n        for (const prop in props) {\n          this[i].style[prop] = props[prop];\n        }\n      }\n\n      return this;\n    }\n  }\n\n  if (arguments.length === 2 && typeof props === 'string') {\n    // .css('width', '100px')\n    for (i = 0; i < this.length; i += 1) {\n      this[i].style[props] = value;\n    }\n\n    return this;\n  }\n\n  return this;\n}\n\nfunction each(callback) {\n  if (!callback) return this;\n  this.forEach((el, index) => {\n    callback.apply(el, [el, index]);\n  });\n  return this;\n}\n\nfunction filter(callback) {\n  const result = arrayFilter(this, callback);\n  return $(result);\n}\n\nfunction html(html) {\n  if (typeof html === 'undefined') {\n    return this[0] ? this[0].innerHTML : null;\n  }\n\n  for (let i = 0; i < this.length; i += 1) {\n    this[i].innerHTML = html;\n  }\n\n  return this;\n}\n\nfunction text(text) {\n  if (typeof text === 'undefined') {\n    return this[0] ? this[0].textContent.trim() : null;\n  }\n\n  for (let i = 0; i < this.length; i += 1) {\n    this[i].textContent = text;\n  }\n\n  return this;\n}\n\nfunction is(selector) {\n  const window = getWindow();\n  const document = getDocument();\n  const el = this[0];\n  let compareWith;\n  let i;\n  if (!el || typeof selector === 'undefined') return false;\n\n  if (typeof selector === 'string') {\n    if (el.matches) return el.matches(selector);\n    if (el.webkitMatchesSelector) return el.webkitMatchesSelector(selector);\n    if (el.msMatchesSelector) return el.msMatchesSelector(selector);\n    compareWith = $(selector);\n\n    for (i = 0; i < compareWith.length; i += 1) {\n      if (compareWith[i] === el) return true;\n    }\n\n    return false;\n  }\n\n  if (selector === document) {\n    return el === document;\n  }\n\n  if (selector === window) {\n    return el === window;\n  }\n\n  if (selector.nodeType || selector instanceof Dom7) {\n    compareWith = selector.nodeType ? [selector] : selector;\n\n    for (i = 0; i < compareWith.length; i += 1) {\n      if (compareWith[i] === el) return true;\n    }\n\n    return false;\n  }\n\n  return false;\n}\n\nfunction index() {\n  let child = this[0];\n  let i;\n\n  if (child) {\n    i = 0; // eslint-disable-next-line\n\n    while ((child = child.previousSibling) !== null) {\n      if (child.nodeType === 1) i += 1;\n    }\n\n    return i;\n  }\n\n  return undefined;\n}\n\nfunction eq(index) {\n  if (typeof index === 'undefined') return this;\n  const length = this.length;\n\n  if (index > length - 1) {\n    return $([]);\n  }\n\n  if (index < 0) {\n    const returnIndex = length + index;\n    if (returnIndex < 0) return $([]);\n    return $([this[returnIndex]]);\n  }\n\n  return $([this[index]]);\n}\n\nfunction append(...els) {\n  let newChild;\n  const document = getDocument();\n\n  for (let k = 0; k < els.length; k += 1) {\n    newChild = els[k];\n\n    for (let i = 0; i < this.length; i += 1) {\n      if (typeof newChild === 'string') {\n        const tempDiv = document.createElement('div');\n        tempDiv.innerHTML = newChild;\n\n        while (tempDiv.firstChild) {\n          this[i].appendChild(tempDiv.firstChild);\n        }\n      } else if (newChild instanceof Dom7) {\n        for (let j = 0; j < newChild.length; j += 1) {\n          this[i].appendChild(newChild[j]);\n        }\n      } else {\n        this[i].appendChild(newChild);\n      }\n    }\n  }\n\n  return this;\n}\n\nfunction appendTo(parent) {\n  $(parent).append(this);\n  return this;\n}\n\nfunction prepend(newChild) {\n  const document = getDocument();\n  let i;\n  let j;\n\n  for (i = 0; i < this.length; i += 1) {\n    if (typeof newChild === 'string') {\n      const tempDiv = document.createElement('div');\n      tempDiv.innerHTML = newChild;\n\n      for (j = tempDiv.childNodes.length - 1; j >= 0; j -= 1) {\n        this[i].insertBefore(tempDiv.childNodes[j], this[i].childNodes[0]);\n      }\n    } else if (newChild instanceof Dom7) {\n      for (j = 0; j < newChild.length; j += 1) {\n        this[i].insertBefore(newChild[j], this[i].childNodes[0]);\n      }\n    } else {\n      this[i].insertBefore(newChild, this[i].childNodes[0]);\n    }\n  }\n\n  return this;\n}\n\nfunction prependTo(parent) {\n  $(parent).prepend(this);\n  return this;\n}\n\nfunction insertBefore(selector) {\n  const before = $(selector);\n\n  for (let i = 0; i < this.length; i += 1) {\n    if (before.length === 1) {\n      before[0].parentNode.insertBefore(this[i], before[0]);\n    } else if (before.length > 1) {\n      for (let j = 0; j < before.length; j += 1) {\n        before[j].parentNode.insertBefore(this[i].cloneNode(true), before[j]);\n      }\n    }\n  }\n}\n\nfunction insertAfter(selector) {\n  const after = $(selector);\n\n  for (let i = 0; i < this.length; i += 1) {\n    if (after.length === 1) {\n      after[0].parentNode.insertBefore(this[i], after[0].nextSibling);\n    } else if (after.length > 1) {\n      for (let j = 0; j < after.length; j += 1) {\n        after[j].parentNode.insertBefore(this[i].cloneNode(true), after[j].nextSibling);\n      }\n    }\n  }\n}\n\nfunction next(selector) {\n  if (this.length > 0) {\n    if (selector) {\n      if (this[0].nextElementSibling && $(this[0].nextElementSibling).is(selector)) {\n        return $([this[0].nextElementSibling]);\n      }\n\n      return $([]);\n    }\n\n    if (this[0].nextElementSibling) return $([this[0].nextElementSibling]);\n    return $([]);\n  }\n\n  return $([]);\n}\n\nfunction nextAll(selector) {\n  const nextEls = [];\n  let el = this[0];\n  if (!el) return $([]);\n\n  while (el.nextElementSibling) {\n    const next = el.nextElementSibling; // eslint-disable-line\n\n    if (selector) {\n      if ($(next).is(selector)) nextEls.push(next);\n    } else nextEls.push(next);\n\n    el = next;\n  }\n\n  return $(nextEls);\n}\n\nfunction prev(selector) {\n  if (this.length > 0) {\n    const el = this[0];\n\n    if (selector) {\n      if (el.previousElementSibling && $(el.previousElementSibling).is(selector)) {\n        return $([el.previousElementSibling]);\n      }\n\n      return $([]);\n    }\n\n    if (el.previousElementSibling) return $([el.previousElementSibling]);\n    return $([]);\n  }\n\n  return $([]);\n}\n\nfunction prevAll(selector) {\n  const prevEls = [];\n  let el = this[0];\n  if (!el) return $([]);\n\n  while (el.previousElementSibling) {\n    const prev = el.previousElementSibling; // eslint-disable-line\n\n    if (selector) {\n      if ($(prev).is(selector)) prevEls.push(prev);\n    } else prevEls.push(prev);\n\n    el = prev;\n  }\n\n  return $(prevEls);\n}\n\nfunction siblings(selector) {\n  return this.nextAll(selector).add(this.prevAll(selector));\n}\n\nfunction parent(selector) {\n  const parents = []; // eslint-disable-line\n\n  for (let i = 0; i < this.length; i += 1) {\n    if (this[i].parentNode !== null) {\n      if (selector) {\n        if ($(this[i].parentNode).is(selector)) parents.push(this[i].parentNode);\n      } else {\n        parents.push(this[i].parentNode);\n      }\n    }\n  }\n\n  return $(parents);\n}\n\nfunction parents(selector) {\n  const parents = []; // eslint-disable-line\n\n  for (let i = 0; i < this.length; i += 1) {\n    let parent = this[i].parentNode; // eslint-disable-line\n\n    while (parent) {\n      if (selector) {\n        if ($(parent).is(selector)) parents.push(parent);\n      } else {\n        parents.push(parent);\n      }\n\n      parent = parent.parentNode;\n    }\n  }\n\n  return $(parents);\n}\n\nfunction closest(selector) {\n  let closest = this; // eslint-disable-line\n\n  if (typeof selector === 'undefined') {\n    return $([]);\n  }\n\n  if (!closest.is(selector)) {\n    closest = closest.parents(selector).eq(0);\n  }\n\n  return closest;\n}\n\nfunction find(selector) {\n  const foundElements = [];\n\n  for (let i = 0; i < this.length; i += 1) {\n    const found = this[i].querySelectorAll(selector);\n\n    for (let j = 0; j < found.length; j += 1) {\n      foundElements.push(found[j]);\n    }\n  }\n\n  return $(foundElements);\n}\n\nfunction children(selector) {\n  const children = []; // eslint-disable-line\n\n  for (let i = 0; i < this.length; i += 1) {\n    const childNodes = this[i].children;\n\n    for (let j = 0; j < childNodes.length; j += 1) {\n      if (!selector || $(childNodes[j]).is(selector)) {\n        children.push(childNodes[j]);\n      }\n    }\n  }\n\n  return $(children);\n}\n\nfunction remove() {\n  for (let i = 0; i < this.length; i += 1) {\n    if (this[i].parentNode) this[i].parentNode.removeChild(this[i]);\n  }\n\n  return this;\n}\n\nfunction detach() {\n  return this.remove();\n}\n\nfunction add(...els) {\n  const dom = this;\n  let i;\n  let j;\n\n  for (i = 0; i < els.length; i += 1) {\n    const toAdd = $(els[i]);\n\n    for (j = 0; j < toAdd.length; j += 1) {\n      dom.push(toAdd[j]);\n    }\n  }\n\n  return dom;\n}\n\nfunction empty() {\n  for (let i = 0; i < this.length; i += 1) {\n    const el = this[i];\n\n    if (el.nodeType === 1) {\n      for (let j = 0; j < el.childNodes.length; j += 1) {\n        if (el.childNodes[j].parentNode) {\n          el.childNodes[j].parentNode.removeChild(el.childNodes[j]);\n        }\n      }\n\n      el.textContent = '';\n    }\n  }\n\n  return this;\n}\n\n// eslint-disable-next-line\n\nfunction scrollTo(...args) {\n  const window = getWindow();\n  let [left, top, duration, easing, callback] = args;\n\n  if (args.length === 4 && typeof easing === 'function') {\n    callback = easing;\n    [left, top, duration, callback, easing] = args;\n  }\n\n  if (typeof easing === 'undefined') easing = 'swing';\n  return this.each(function animate() {\n    const el = this;\n    let currentTop;\n    let currentLeft;\n    let maxTop;\n    let maxLeft;\n    let newTop;\n    let newLeft;\n    let scrollTop; // eslint-disable-line\n\n    let scrollLeft; // eslint-disable-line\n\n    let animateTop = top > 0 || top === 0;\n    let animateLeft = left > 0 || left === 0;\n\n    if (typeof easing === 'undefined') {\n      easing = 'swing';\n    }\n\n    if (animateTop) {\n      currentTop = el.scrollTop;\n\n      if (!duration) {\n        el.scrollTop = top;\n      }\n    }\n\n    if (animateLeft) {\n      currentLeft = el.scrollLeft;\n\n      if (!duration) {\n        el.scrollLeft = left;\n      }\n    }\n\n    if (!duration) return;\n\n    if (animateTop) {\n      maxTop = el.scrollHeight - el.offsetHeight;\n      newTop = Math.max(Math.min(top, maxTop), 0);\n    }\n\n    if (animateLeft) {\n      maxLeft = el.scrollWidth - el.offsetWidth;\n      newLeft = Math.max(Math.min(left, maxLeft), 0);\n    }\n\n    let startTime = null;\n    if (animateTop && newTop === currentTop) animateTop = false;\n    if (animateLeft && newLeft === currentLeft) animateLeft = false;\n\n    function render(time = new Date().getTime()) {\n      if (startTime === null) {\n        startTime = time;\n      }\n\n      const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n      const easeProgress = easing === 'linear' ? progress : 0.5 - Math.cos(progress * Math.PI) / 2;\n      let done;\n      if (animateTop) scrollTop = currentTop + easeProgress * (newTop - currentTop);\n      if (animateLeft) scrollLeft = currentLeft + easeProgress * (newLeft - currentLeft);\n\n      if (animateTop && newTop > currentTop && scrollTop >= newTop) {\n        el.scrollTop = newTop;\n        done = true;\n      }\n\n      if (animateTop && newTop < currentTop && scrollTop <= newTop) {\n        el.scrollTop = newTop;\n        done = true;\n      }\n\n      if (animateLeft && newLeft > currentLeft && scrollLeft >= newLeft) {\n        el.scrollLeft = newLeft;\n        done = true;\n      }\n\n      if (animateLeft && newLeft < currentLeft && scrollLeft <= newLeft) {\n        el.scrollLeft = newLeft;\n        done = true;\n      }\n\n      if (done) {\n        if (callback) callback();\n        return;\n      }\n\n      if (animateTop) el.scrollTop = scrollTop;\n      if (animateLeft) el.scrollLeft = scrollLeft;\n      window.requestAnimationFrame(render);\n    }\n\n    window.requestAnimationFrame(render);\n  });\n} // scrollTop(top, duration, easing, callback) {\n\n\nfunction scrollTop(...args) {\n  let [top, duration, easing, callback] = args;\n\n  if (args.length === 3 && typeof easing === 'function') {\n    [top, duration, callback, easing] = args;\n  }\n\n  const dom = this;\n\n  if (typeof top === 'undefined') {\n    if (dom.length > 0) return dom[0].scrollTop;\n    return null;\n  }\n\n  return dom.scrollTo(undefined, top, duration, easing, callback);\n}\n\nfunction scrollLeft(...args) {\n  let [left, duration, easing, callback] = args;\n\n  if (args.length === 3 && typeof easing === 'function') {\n    [left, duration, callback, easing] = args;\n  }\n\n  const dom = this;\n\n  if (typeof left === 'undefined') {\n    if (dom.length > 0) return dom[0].scrollLeft;\n    return null;\n  }\n\n  return dom.scrollTo(left, undefined, duration, easing, callback);\n}\n\n// eslint-disable-next-line\n\nfunction animate(initialProps, initialParams) {\n  const window = getWindow();\n  const els = this;\n  const a = {\n    props: Object.assign({}, initialProps),\n    params: Object.assign({\n      duration: 300,\n      easing: 'swing' // or 'linear'\n\n      /* Callbacks\n      begin(elements)\n      complete(elements)\n      progress(elements, complete, remaining, start, tweenValue)\n      */\n\n    }, initialParams),\n    elements: els,\n    animating: false,\n    que: [],\n\n    easingProgress(easing, progress) {\n      if (easing === 'swing') {\n        return 0.5 - Math.cos(progress * Math.PI) / 2;\n      }\n\n      if (typeof easing === 'function') {\n        return easing(progress);\n      }\n\n      return progress;\n    },\n\n    stop() {\n      if (a.frameId) {\n        window.cancelAnimationFrame(a.frameId);\n      }\n\n      a.animating = false;\n      a.elements.each(el => {\n        const element = el;\n        delete element.dom7AnimateInstance;\n      });\n      a.que = [];\n    },\n\n    done(complete) {\n      a.animating = false;\n      a.elements.each(el => {\n        const element = el;\n        delete element.dom7AnimateInstance;\n      });\n      if (complete) complete(els);\n\n      if (a.que.length > 0) {\n        const que = a.que.shift();\n        a.animate(que[0], que[1]);\n      }\n    },\n\n    animate(props, params) {\n      if (a.animating) {\n        a.que.push([props, params]);\n        return a;\n      }\n\n      const elements = []; // Define & Cache Initials & Units\n\n      a.elements.each((el, index) => {\n        let initialFullValue;\n        let initialValue;\n        let unit;\n        let finalValue;\n        let finalFullValue;\n        if (!el.dom7AnimateInstance) a.elements[index].dom7AnimateInstance = a;\n        elements[index] = {\n          container: el\n        };\n        Object.keys(props).forEach(prop => {\n          initialFullValue = window.getComputedStyle(el, null).getPropertyValue(prop).replace(',', '.');\n          initialValue = parseFloat(initialFullValue);\n          unit = initialFullValue.replace(initialValue, '');\n          finalValue = parseFloat(props[prop]);\n          finalFullValue = props[prop] + unit;\n          elements[index][prop] = {\n            initialFullValue,\n            initialValue,\n            unit,\n            finalValue,\n            finalFullValue,\n            currentValue: initialValue\n          };\n        });\n      });\n      let startTime = null;\n      let time;\n      let elementsDone = 0;\n      let propsDone = 0;\n      let done;\n      let began = false;\n      a.animating = true;\n\n      function render() {\n        time = new Date().getTime();\n        let progress;\n        let easeProgress; // let el;\n\n        if (!began) {\n          began = true;\n          if (params.begin) params.begin(els);\n        }\n\n        if (startTime === null) {\n          startTime = time;\n        }\n\n        if (params.progress) {\n          // eslint-disable-next-line\n          params.progress(els, Math.max(Math.min((time - startTime) / params.duration, 1), 0), startTime + params.duration - time < 0 ? 0 : startTime + params.duration - time, startTime);\n        }\n\n        elements.forEach(element => {\n          const el = element;\n          if (done || el.done) return;\n          Object.keys(props).forEach(prop => {\n            if (done || el.done) return;\n            progress = Math.max(Math.min((time - startTime) / params.duration, 1), 0);\n            easeProgress = a.easingProgress(params.easing, progress);\n            const {\n              initialValue,\n              finalValue,\n              unit\n            } = el[prop];\n            el[prop].currentValue = initialValue + easeProgress * (finalValue - initialValue);\n            const currentValue = el[prop].currentValue;\n\n            if (finalValue > initialValue && currentValue >= finalValue || finalValue < initialValue && currentValue <= finalValue) {\n              el.container.style[prop] = finalValue + unit;\n              propsDone += 1;\n\n              if (propsDone === Object.keys(props).length) {\n                el.done = true;\n                elementsDone += 1;\n              }\n\n              if (elementsDone === elements.length) {\n                done = true;\n              }\n            }\n\n            if (done) {\n              a.done(params.complete);\n              return;\n            }\n\n            el.container.style[prop] = currentValue + unit;\n          });\n        });\n        if (done) return; // Then call\n\n        a.frameId = window.requestAnimationFrame(render);\n      }\n\n      a.frameId = window.requestAnimationFrame(render);\n      return a;\n    }\n\n  };\n\n  if (a.elements.length === 0) {\n    return els;\n  }\n\n  let animateInstance;\n\n  for (let i = 0; i < a.elements.length; i += 1) {\n    if (a.elements[i].dom7AnimateInstance) {\n      animateInstance = a.elements[i].dom7AnimateInstance;\n    } else a.elements[i].dom7AnimateInstance = a;\n  }\n\n  if (!animateInstance) {\n    animateInstance = a;\n  }\n\n  if (initialProps === 'stop') {\n    animateInstance.stop();\n  } else {\n    animateInstance.animate(a.props, a.params);\n  }\n\n  return els;\n}\n\nfunction stop() {\n  const els = this;\n\n  for (let i = 0; i < els.length; i += 1) {\n    if (els[i].dom7AnimateInstance) {\n      els[i].dom7AnimateInstance.stop();\n    }\n  }\n}\n\nconst noTrigger = 'resize scroll'.split(' ');\n\nfunction shortcut(name) {\n  function eventHandler(...args) {\n    if (typeof args[0] === 'undefined') {\n      for (let i = 0; i < this.length; i += 1) {\n        if (noTrigger.indexOf(name) < 0) {\n          if (name in this[i]) this[i][name]();else {\n            $(this[i]).trigger(name);\n          }\n        }\n      }\n\n      return this;\n    }\n\n    return this.on(name, ...args);\n  }\n\n  return eventHandler;\n}\n\nconst click = shortcut('click');\nconst blur = shortcut('blur');\nconst focus = shortcut('focus');\nconst focusin = shortcut('focusin');\nconst focusout = shortcut('focusout');\nconst keyup = shortcut('keyup');\nconst keydown = shortcut('keydown');\nconst keypress = shortcut('keypress');\nconst submit = shortcut('submit');\nconst change = shortcut('change');\nconst mousedown = shortcut('mousedown');\nconst mousemove = shortcut('mousemove');\nconst mouseup = shortcut('mouseup');\nconst mouseenter = shortcut('mouseenter');\nconst mouseleave = shortcut('mouseleave');\nconst mouseout = shortcut('mouseout');\nconst mouseover = shortcut('mouseover');\nconst touchstart = shortcut('touchstart');\nconst touchend = shortcut('touchend');\nconst touchmove = shortcut('touchmove');\nconst resize = shortcut('resize');\nconst scroll = shortcut('scroll');\n\nexport default $;\nexport { $, add, addClass, animate, animationEnd, append, appendTo, attr, blur, change, children, click, closest, css, data, dataset, detach, each, empty, eq, filter, find, focus, focusin, focusout, hasClass, height, hide, html, index, insertAfter, insertBefore, is, keydown, keypress, keyup, mousedown, mouseenter, mouseleave, mousemove, mouseout, mouseover, mouseup, next, nextAll, off, offset, on, once, outerHeight, outerWidth, parent, parents, prepend, prependTo, prev, prevAll, prop, remove, removeAttr, removeClass, removeData, resize, scroll, scrollLeft, scrollTo, scrollTop, show, siblings, stop, styles, submit, text, toggleClass, touchend, touchmove, touchstart, transform, transition, transitionEnd, transitionStart, trigger, val, value, width };\n", "/**\n * SSR Window 4.0.2\n * Better handling for window object in SSR environment\n * https://github.com/nolimits4web/ssr-window\n *\n * Copyright 2021, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: December 13, 2021\n */\n/* eslint-disable no-param-reassign */\nfunction isObject(obj) {\n    return (obj !== null &&\n        typeof obj === 'object' &&\n        'constructor' in obj &&\n        obj.constructor === Object);\n}\nfunction extend(target = {}, src = {}) {\n    Object.keys(src).forEach((key) => {\n        if (typeof target[key] === 'undefined')\n            target[key] = src[key];\n        else if (isObject(src[key]) &&\n            isObject(target[key]) &&\n            Object.keys(src[key]).length > 0) {\n            extend(target[key], src[key]);\n        }\n    });\n}\n\nconst ssrDocument = {\n    body: {},\n    addEventListener() { },\n    removeEventListener() { },\n    activeElement: {\n        blur() { },\n        nodeName: '',\n    },\n    querySelector() {\n        return null;\n    },\n    querySelectorAll() {\n        return [];\n    },\n    getElementById() {\n        return null;\n    },\n    createEvent() {\n        return {\n            initEvent() { },\n        };\n    },\n    createElement() {\n        return {\n            children: [],\n            childNodes: [],\n            style: {},\n            setAttribute() { },\n            getElementsByTagName() {\n                return [];\n            },\n        };\n    },\n    createElementNS() {\n        return {};\n    },\n    importNode() {\n        return null;\n    },\n    location: {\n        hash: '',\n        host: '',\n        hostname: '',\n        href: '',\n        origin: '',\n        pathname: '',\n        protocol: '',\n        search: '',\n    },\n};\nfunction getDocument() {\n    const doc = typeof document !== 'undefined' ? document : {};\n    extend(doc, ssrDocument);\n    return doc;\n}\n\nconst ssrWindow = {\n    document: ssrDocument,\n    navigator: {\n        userAgent: '',\n    },\n    location: {\n        hash: '',\n        host: '',\n        hostname: '',\n        href: '',\n        origin: '',\n        pathname: '',\n        protocol: '',\n        search: '',\n    },\n    history: {\n        replaceState() { },\n        pushState() { },\n        go() { },\n        back() { },\n    },\n    CustomEvent: function CustomEvent() {\n        return this;\n    },\n    addEventListener() { },\n    removeEventListener() { },\n    getComputedStyle() {\n        return {\n            getPropertyValue() {\n                return '';\n            },\n        };\n    },\n    Image() { },\n    Date() { },\n    screen: {},\n    setTimeout() { },\n    clearTimeout() { },\n    matchMedia() {\n        return {};\n    },\n    requestAnimationFrame(callback) {\n        if (typeof setTimeout === 'undefined') {\n            callback();\n            return null;\n        }\n        return setTimeout(callback, 0);\n    },\n    cancelAnimationFrame(id) {\n        if (typeof setTimeout === 'undefined') {\n            return;\n        }\n        clearTimeout(id);\n    },\n};\nfunction getWindow() {\n    const win = typeof window !== 'undefined' ? window : {};\n    extend(win, ssrWindow);\n    return win;\n}\n\nexport { extend, getDocument, getWindow, ssrDocument, ssrWindow };\n", "// eslint-disable-next-line\nimport * as methods from 'dom7';\nObject.keys(methods).forEach(methodName => {\n  if (methodName === '$') return;\n  methods.$.fn[methodName] = methods[methodName];\n});\nexport default methods.$;", "import { getWindow } from 'ssr-window';\nimport { materialColors } from './material-colors.js';\nlet uniqueNum = 0;\nexport function uniqueNumber() {\n  uniqueNum += 1;\n  return uniqueNum;\n}\nexport function id(mask, map) {\n  if (mask === void 0) {\n    mask = 'xxxxxxxxxx';\n  }\n  if (map === void 0) {\n    map = '0123456789abcdef';\n  }\n  const length = map.length;\n  return mask.replace(/x/g, () => map[Math.floor(Math.random() * length)]);\n}\nexport const mdPreloaderContent = `\n  <span class=\"preloader-inner\">\n    <svg viewBox=\"0 0 36 36\">\n      <circle cx=\"18\" cy=\"18\" r=\"16\"></circle>\n    </svg>\n  </span>\n`.trim();\nexport const iosPreloaderContent = `\n  <span class=\"preloader-inner\">\n    ${[0, 1, 2, 3, 4, 5, 6, 7].map(() => '<span class=\"preloader-inner-line\"></span>').join('')}\n  </span>\n`.trim();\nexport function eventNameToColonCase(eventName) {\n  let hasColon;\n  return eventName.split('').map((char, index) => {\n    if (char.match(/[A-Z]/) && index !== 0 && !hasColon) {\n      hasColon = true;\n      return `:${char.toLowerCase()}`;\n    }\n    return char.toLowerCase();\n  }).join('');\n}\nexport function deleteProps(obj) {\n  const object = obj;\n  Object.keys(object).forEach(key => {\n    try {\n      object[key] = null;\n    } catch (e) {\n      // no setter for object\n    }\n    try {\n      delete object[key];\n    } catch (e) {\n      // something got wrong\n    }\n  });\n}\nexport function requestAnimationFrame(callback) {\n  const window = getWindow();\n  return window.requestAnimationFrame(callback);\n}\nexport function cancelAnimationFrame(frameId) {\n  const window = getWindow();\n  return window.cancelAnimationFrame(frameId);\n}\nexport function nextTick(callback, delay) {\n  if (delay === void 0) {\n    delay = 0;\n  }\n  return setTimeout(callback, delay);\n}\nexport function nextFrame(callback) {\n  return requestAnimationFrame(() => {\n    requestAnimationFrame(callback);\n  });\n}\nexport function now() {\n  return Date.now();\n}\nexport function parseUrlQuery(url) {\n  const window = getWindow();\n  const query = {};\n  let urlToParse = url || window.location.href;\n  let i;\n  let params;\n  let param;\n  let length;\n  if (typeof urlToParse === 'string' && urlToParse.length) {\n    urlToParse = urlToParse.indexOf('?') > -1 ? urlToParse.replace(/\\S*\\?/, '') : '';\n    params = urlToParse.split('&').filter(paramsPart => paramsPart !== '');\n    length = params.length;\n    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}\nexport function getTranslate(el, axis) {\n  if (axis === void 0) {\n    axis = 'x';\n  }\n  const window = getWindow();\n  let matrix;\n  let curTransform;\n  let transformMatrix;\n  const curStyle = window.getComputedStyle(el, null);\n  if (window.WebKitCSSMatrix) {\n    curTransform = curStyle.transform || curStyle.webkitTransform;\n    if (curTransform.split(',').length > 6) {\n      curTransform = curTransform.split(', ').map(a => 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 window.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  if (axis === 'x') {\n    // Latest Chrome and webkits Fix\n    if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41;\n    // Crazy IE10 Matrix\n    else if (matrix.length === 16) curTransform = parseFloat(matrix[12]);\n    // Normal Browsers\n    else curTransform = parseFloat(matrix[4]);\n  }\n  if (axis === 'y') {\n    // Latest Chrome and webkits Fix\n    if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42;\n    // Crazy IE10 Matrix\n    else if (matrix.length === 16) curTransform = parseFloat(matrix[13]);\n    // Normal Browsers\n    else curTransform = parseFloat(matrix[5]);\n  }\n  return curTransform || 0;\n}\nexport function serializeObject(obj, parents) {\n  if (parents === void 0) {\n    parents = [];\n  }\n  if (typeof obj === 'string') return obj;\n  const resultArray = [];\n  const separator = '&';\n  let newParents;\n  function varName(name) {\n    if (parents.length > 0) {\n      let parentParts = '';\n      for (let j = 0; j < parents.length; j += 1) {\n        if (j === 0) parentParts += parents[j];else parentParts += `[${encodeURIComponent(parents[j])}]`;\n      }\n      return `${parentParts}[${encodeURIComponent(name)}]`;\n    }\n    return encodeURIComponent(name);\n  }\n  function varValue(value) {\n    return encodeURIComponent(value);\n  }\n  Object.keys(obj).forEach(prop => {\n    let toPush;\n    if (Array.isArray(obj[prop])) {\n      toPush = [];\n      for (let i = 0; i < obj[prop].length; i += 1) {\n        if (!Array.isArray(obj[prop][i]) && typeof obj[prop][i] === 'object') {\n          newParents = parents.slice();\n          newParents.push(prop);\n          newParents.push(String(i));\n          toPush.push(serializeObject(obj[prop][i], newParents));\n        } else {\n          toPush.push(`${varName(prop)}[]=${varValue(obj[prop][i])}`);\n        }\n      }\n      if (toPush.length > 0) resultArray.push(toPush.join(separator));\n    } else if (obj[prop] === null || obj[prop] === '') {\n      resultArray.push(`${varName(prop)}=`);\n    } else if (typeof obj[prop] === 'object') {\n      // Object, convert to named array\n      newParents = parents.slice();\n      newParents.push(prop);\n      toPush = serializeObject(obj[prop], newParents);\n      if (toPush !== '') resultArray.push(toPush);\n    } else if (typeof obj[prop] !== 'undefined' && obj[prop] !== '') {\n      // Should be string or plain value\n      resultArray.push(`${varName(prop)}=${varValue(obj[prop])}`);\n    } else if (obj[prop] === '') resultArray.push(varName(prop)); // eslint-disable-line\n  });\n\n  return resultArray.join(separator);\n}\nexport function isObject(o) {\n  return typeof o === 'object' && o !== null && o.constructor && o.constructor === Object;\n}\nexport function merge() {\n  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n    args[_key] = arguments[_key];\n  }\n  const to = args[0];\n  args.splice(0, 1);\n  const from = args;\n  for (let i = 0; i < from.length; i += 1) {\n    const nextSource = args[i];\n    if (nextSource !== undefined && nextSource !== null) {\n      const keysArray = Object.keys(Object(nextSource));\n      for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {\n        const nextKey = keysArray[nextIndex];\n        const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n        if (desc !== undefined && desc.enumerable) {\n          to[nextKey] = nextSource[nextKey];\n        }\n      }\n    }\n  }\n  return to;\n}\nexport function extend() {\n  let deep = true;\n  let to;\n  let from;\n  for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n    args[_key2] = arguments[_key2];\n  }\n  if (typeof args[0] === 'boolean') {\n    deep = args[0];\n    to = args[1];\n    args.splice(0, 2);\n    from = args;\n  } else {\n    to = args[0];\n    args.splice(0, 1);\n    from = args;\n  }\n  for (let i = 0; i < from.length; i += 1) {\n    const nextSource = args[i];\n    if (nextSource !== undefined && nextSource !== null) {\n      const keysArray = Object.keys(Object(nextSource));\n      for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {\n        const nextKey = keysArray[nextIndex];\n        const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n        if (desc !== undefined && desc.enumerable) {\n          if (!deep) {\n            to[nextKey] = nextSource[nextKey];\n          } else if (isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n            extend(to[nextKey], nextSource[nextKey]);\n          } else if (!isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n            to[nextKey] = {};\n            extend(to[nextKey], nextSource[nextKey]);\n          } else {\n            to[nextKey] = nextSource[nextKey];\n          }\n        }\n      }\n    }\n  }\n  return to;\n}\nexport function colorHexToRgb(hex) {\n  const h = hex.replace(/^#?([a-f\\d])([a-f\\d])([a-f\\d])$/i, (m, r, g, b) => r + r + g + g + b + b);\n  const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(h);\n  return result ? result.slice(1).map(n => parseInt(n, 16)) : null;\n}\nexport function colorRgbToHex(r, g, b) {\n  const result = [r, g, b].map(n => {\n    const hex = n.toString(16);\n    return hex.length === 1 ? `0${hex}` : hex;\n  }).join('');\n  return `#${result}`;\n}\nexport function colorRgbToHsl(r, g, b) {\n  r /= 255; // eslint-disable-line\n  g /= 255; // eslint-disable-line\n  b /= 255; // eslint-disable-line\n  const max = Math.max(r, g, b);\n  const min = Math.min(r, g, b);\n  const d = max - min;\n  let h;\n  if (d === 0) h = 0;else if (max === r) h = (g - b) / d % 6;else if (max === g) h = (b - r) / d + 2;else if (max === b) h = (r - g) / d + 4;\n  const l = (min + max) / 2;\n  const s = d === 0 ? 0 : d / (1 - Math.abs(2 * l - 1));\n  if (h < 0) h = 360 / 60 + h;\n  return [h * 60, s, l];\n}\nexport function colorHslToRgb(h, s, l) {\n  const c = (1 - Math.abs(2 * l - 1)) * s;\n  const hp = h / 60;\n  const x = c * (1 - Math.abs(hp % 2 - 1));\n  let rgb1;\n  if (Number.isNaN(h) || typeof h === 'undefined') {\n    rgb1 = [0, 0, 0];\n  } else if (hp <= 1) rgb1 = [c, x, 0];else if (hp <= 2) rgb1 = [x, c, 0];else if (hp <= 3) rgb1 = [0, c, x];else if (hp <= 4) rgb1 = [0, x, c];else if (hp <= 5) rgb1 = [x, 0, c];else if (hp <= 6) rgb1 = [c, 0, x];\n  const m = l - c / 2;\n  return rgb1.map(n => Math.max(0, Math.min(255, Math.round(255 * (n + m)))));\n}\nexport function colorHsbToHsl(h, s, b) {\n  const HSL = {\n    h,\n    s: 0,\n    l: 0\n  };\n  const HSB = {\n    h,\n    s,\n    b\n  };\n  HSL.l = (2 - HSB.s) * HSB.b / 2;\n  HSL.s = HSL.l && HSL.l < 1 ? HSB.s * HSB.b / (HSL.l < 0.5 ? HSL.l * 2 : 2 - HSL.l * 2) : HSL.s;\n  return [HSL.h, HSL.s, HSL.l];\n}\nexport function colorHslToHsb(h, s, l) {\n  const HSB = {\n    h,\n    s: 0,\n    b: 0\n  };\n  const HSL = {\n    h,\n    s,\n    l\n  };\n  const t = HSL.s * (HSL.l < 0.5 ? HSL.l : 1 - HSL.l);\n  HSB.b = HSL.l + t;\n  HSB.s = HSL.l > 0 ? 2 * t / HSB.b : HSB.s;\n  return [HSB.h, HSB.s, HSB.b];\n}\nconst getShadeTintColors = rgb => {\n  const hsl = colorRgbToHsl(...rgb);\n  const hslShade = [hsl[0], hsl[1], Math.max(0, hsl[2] - 0.08)];\n  const hslTint = [hsl[0], hsl[1], Math.max(0, hsl[2] + 0.08)];\n  const shade = colorRgbToHex(...colorHslToRgb(...hslShade));\n  const tint = colorRgbToHex(...colorHslToRgb(...hslTint));\n  return {\n    shade,\n    tint\n  };\n};\nexport function colorThemeCSSProperties() {\n  let hex;\n  let rgb;\n  for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n    args[_key3] = arguments[_key3];\n  }\n  if (args.length === 1) {\n    hex = args[0];\n    rgb = colorHexToRgb(hex);\n  } else if (args.length === 3) {\n    rgb = args;\n    hex = colorRgbToHex(...rgb);\n  }\n  if (!rgb) return {};\n  const {\n    light,\n    dark\n  } = materialColors(hex);\n  const shadeTintIos = getShadeTintColors(rgb);\n  const shadeTintMdLight = getShadeTintColors(colorHexToRgb(light['--f7-md-primary']));\n  const shadeTintMdDark = getShadeTintColors(colorHexToRgb(dark['--f7-md-primary']));\n  Object.keys(light).forEach(key => {\n    if (key.includes('surface-')) {\n      light[`${key}-rgb`] = colorHexToRgb(light[key]);\n    }\n  });\n  Object.keys(dark).forEach(key => {\n    if (key.includes('surface-')) {\n      dark[`${key}-rgb`] = colorHexToRgb(dark[key]);\n    }\n  });\n  return {\n    ios: {\n      '--f7-theme-color': 'var(--f7-ios-primary)',\n      '--f7-theme-color-rgb': 'var(--f7-ios-primary-rgb)',\n      '--f7-theme-color-shade': 'var(--f7-ios-primary-shade)',\n      '--f7-theme-color-tint': 'var(--f7-ios-primary-tint)'\n    },\n    md: {\n      '--f7-theme-color': 'var(--f7-md-primary)',\n      '--f7-theme-color-rgb': 'var(--f7-md-primary-rgb)',\n      '--f7-theme-color-shade': 'var(--f7-md-primary-shade)',\n      '--f7-theme-color-tint': 'var(--f7-md-primary-tint)'\n    },\n    light: {\n      '--f7-ios-primary': hex,\n      '--f7-ios-primary-shade': shadeTintIos.shade,\n      '--f7-ios-primary-tint': shadeTintIos.tint,\n      '--f7-ios-primary-rgb': rgb.join(', '),\n      '--f7-md-primary-shade': shadeTintMdLight.shade,\n      '--f7-md-primary-tint': shadeTintMdLight.tint,\n      '--f7-md-primary-rgb': colorHexToRgb(light['--f7-md-primary']).join(', '),\n      ...light\n    },\n    dark: {\n      '--f7-md-primary-shade': shadeTintMdDark.shade,\n      '--f7-md-primary-tint': shadeTintMdDark.tint,\n      '--f7-md-primary-rgb': colorHexToRgb(dark['--f7-md-primary']).join(', '),\n      ...dark\n    }\n  };\n}\nexport function bindMethods(instance, obj) {\n  Object.keys(obj).forEach(key => {\n    if (isObject(obj[key])) {\n      Object.keys(obj[key]).forEach(subKey => {\n        if (typeof obj[key][subKey] === 'function') {\n          obj[key][subKey] = obj[key][subKey].bind(instance);\n        }\n      });\n    }\n    instance[key] = obj[key];\n  });\n}\nexport function flattenArray() {\n  const arr = [];\n  for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n    args[_key4] = arguments[_key4];\n  }\n  args.forEach(arg => {\n    if (Array.isArray(arg)) arr.push(...flattenArray(...arg));else arr.push(arg);\n  });\n  return arr;\n}\nexport function colorThemeCSSStyles(colors) {\n  if (colors === void 0) {\n    colors = {};\n  }\n  const stringifyObject = obj => {\n    let res = '';\n    Object.keys(obj).forEach(key => {\n      res += `${key}:${obj[key]};`;\n    });\n    return res;\n  };\n  const colorVars = colorThemeCSSProperties(colors.primary);\n  const primary = [`:root{`, stringifyObject(colorVars.light), `--swiper-theme-color:var(--f7-theme-color);`, ...Object.keys(colors).map(colorName => `--f7-color-${colorName}: ${colors[colorName]};`), `}`, `.dark{`, stringifyObject(colorVars.dark), `}`, `.ios, .ios .dark{`, stringifyObject(colorVars.ios), '}', `.md, .md .dark{`, stringifyObject(colorVars.md), '}'].join('');\n  const restVars = {};\n  Object.keys(colors).forEach(colorName => {\n    const colorValue = colors[colorName];\n    restVars[colorName] = colorThemeCSSProperties(colorValue);\n  });\n\n  // rest\n  let rest = '';\n  Object.keys(colors).forEach(colorName => {\n    const {\n      light,\n      dark,\n      ios,\n      md\n    } = restVars[colorName];\n    const whiteColorVars = `\n    --f7-ios-primary: #ffffff;\n    --f7-ios-primary-shade: #ebebeb;\n    --f7-ios-primary-tint: #ffffff;\n    --f7-ios-primary-rgb: 255, 255, 255;\n    --f7-md-primary-shade: #eee;\n    --f7-md-primary-tint: #fff;\n    --f7-md-primary-rgb: 255, 255, 255;\n    --f7-md-primary: #fff;\n    --f7-md-on-primary: #000;\n    --f7-md-primary-container: #fff;\n    --f7-md-on-primary-container: #000;\n    --f7-md-secondary: #fff;\n    --f7-md-on-secondary: #000;\n    --f7-md-secondary-container: #555;\n    --f7-md-on-secondary-container: #fff;\n    --f7-md-surface: #fff;\n    --f7-md-on-surface: #000;\n    --f7-md-surface-variant: #333;\n    --f7-md-on-surface-variant: #fff;\n    --f7-md-outline: #fff;\n    --f7-md-outline-variant: #fff;\n    --f7-md-inverse-surface: #000;\n    --f7-md-inverse-on-surface: #fff;\n    --f7-md-inverse-primary: #000;\n    --f7-md-surface-1: #f8f8f8;\n    --f7-md-surface-2: #f1f1f1;\n    --f7-md-surface-3: #e7e7e7;\n    --f7-md-surface-4: #e1e1e1;\n    --f7-md-surface-5: #d7d7d7;\n    --f7-md-surface-variant-rgb: 51, 51, 51;\n    --f7-md-on-surface-variant-rgb: 255, 255, 255;\n    --f7-md-surface-1-rgb: 248, 248, 248;\n    --f7-md-surface-2-rgb: 241, 241, 241;\n    --f7-md-surface-3-rgb: 231, 231, 231;\n    --f7-md-surface-4-rgb: 225, 225, 225;\n    --f7-md-surface-5-rgb: 215, 215, 215;\n    `;\n    const blackColorVars = `\n    --f7-ios-primary: #000;\n    --f7-ios-primary-shade: #000;\n    --f7-ios-primary-tint: #232323;\n    --f7-ios-primary-rgb: 0, 0, 0;\n    --f7-md-primary-shade: #000;\n    --f7-md-primary-tint: #232323;\n    --f7-md-primary-rgb: 0, 0, 0;\n    --f7-md-primary: #000;\n    --f7-md-on-primary: #fff;\n    --f7-md-primary-container: #000;\n    --f7-md-on-primary-container: #fff;\n    --f7-md-secondary: #000;\n    --f7-md-on-secondary: #fff;\n    --f7-md-secondary-container: #aaa;\n    --f7-md-on-secondary-container: #000;\n    --f7-md-surface: #000;\n    --f7-md-on-surface: #fff;\n    --f7-md-surface-variant: #ccc;\n    --f7-md-on-surface-variant: #000;\n    --f7-md-outline: #000;\n    --f7-md-outline-variant: #000;\n    --f7-md-inverse-surface: #fff;\n    --f7-md-inverse-on-surface: #000;\n    --f7-md-inverse-primary: #fff;\n    --f7-md-surface-1: #070707;\n    --f7-md-surface-2: #161616;\n    --f7-md-surface-3: #232323;\n    --f7-md-surface-4: #303030;\n    --f7-md-surface-5: #373737;\n    --f7-md-surface-variant-rgb: 204, 204, 204;\n    --f7-md-on-surface-variant-rgb: 0, 0, 0;\n    --f7-md-surface-1-rgb: 7, 7, 7;\n    --f7-md-surface-2-rgb: 22, 22, 22;\n    --f7-md-surface-3-rgb: 35, 35, 35;\n    --f7-md-surface-4-rgb: 48, 48, 48;\n    --f7-md-surface-5-rgb: 55, 55, 55;\n    `;\n    /* eslint-disable */\n    const lightString = colorName === 'white' ? whiteColorVars : colorName === 'black' ? blackColorVars : stringifyObject(light);\n    const darkString = colorName === 'white' ? whiteColorVars : colorName === 'black' ? blackColorVars : stringifyObject(dark);\n    /* eslint-enable */\n    rest += [`.color-${colorName} {`, lightString, `--swiper-theme-color: var(--f7-theme-color);`, `}`, `.color-${colorName}.dark, .color-${colorName} .dark, .dark .color-${colorName} {`, darkString, `--swiper-theme-color: var(--f7-theme-color);`, `}`, `.ios .color-${colorName}, .ios.color-${colorName}, .ios .dark .color-${colorName}, .ios .dark.color-${colorName} {`, stringifyObject(ios), `}`, `.md .color-${colorName}, .md.color-${colorName}, .md .dark .color-${colorName}, .md .dark.color-${colorName} {`, stringifyObject(md), `}`,\n    // text color\n    `.text-color-${colorName} {`, `--f7-theme-color-text-color: ${colors[colorName]};`, `}`,\n    // bg color\n    `.bg-color-${colorName} {`, `--f7-theme-color-bg-color: ${colors[colorName]};`, `}`,\n    // border color\n    `.border-color-${colorName} {`, `--f7-theme-color-border-color: ${colors[colorName]};`, `}`,\n    // ripple color\n    `.ripple-color-${colorName} {`, `--f7-theme-color-ripple-color: rgba(${light['--f7-ios-primary-rgb']}, 0.3);`, `}`].join('');\n  });\n  return `${primary}${rest}`;\n}", "/* eslint-disable */\nfunction signum(num) {\n  return num < 0 ? -1 : 0 === num ? 0 : 1;\n}\nfunction lerp(start, stop, amount) {\n  return (1 - amount) * start + amount * stop;\n}\nfunction clampInt(min, max, input) {\n  return input < min ? min : input > max ? max : input;\n}\nfunction clampDouble(min, max, input) {\n  return input < min ? min : input > max ? max : input;\n}\nfunction sanitizeDegreesDouble(degrees) {\n  return (degrees %= 360) < 0 && (degrees += 360), degrees;\n}\nfunction rotationDirection(from, to) {\n  return sanitizeDegreesDouble(to - from) <= 180 ? 1 : -1;\n}\nfunction differenceDegrees(a, b) {\n  return 180 - Math.abs(Math.abs(a - b) - 180);\n}\nfunction matrixMultiply(row, matrix) {\n  return [row[0] * matrix[0][0] + row[1] * matrix[0][1] + row[2] * matrix[0][2], row[0] * matrix[1][0] + row[1] * matrix[1][1] + row[2] * matrix[1][2], row[0] * matrix[2][0] + row[1] * matrix[2][1] + row[2] * matrix[2][2]];\n}\nconst SRGB_TO_XYZ = [[.41233895, .35762064, .18051042], [.2126, .7152, .0722], [.01932141, .11916382, .95034478]],\n  XYZ_TO_SRGB = [[3.2413774792388685, -1.5376652402851851, -.49885366846268053], [-.9691452513005321, 1.8758853451067872, .04156585616912061], [.05562093689691305, -.20395524564742123, 1.0571799111220335]],\n  WHITE_POINT_D65 = [95.047, 100, 108.883];\nfunction argbFromRgb(red, green, blue) {\n  return (255 << 24 | (255 & red) << 16 | (255 & green) << 8 | 255 & blue) >>> 0;\n}\nfunction argbFromLinrgb(linrgb) {\n  return argbFromRgb(delinearized(linrgb[0]), delinearized(linrgb[1]), delinearized(linrgb[2]));\n}\nfunction redFromArgb(argb) {\n  return argb >> 16 & 255;\n}\nfunction greenFromArgb(argb) {\n  return argb >> 8 & 255;\n}\nfunction blueFromArgb(argb) {\n  return 255 & argb;\n}\nfunction argbFromXyz(x, y, z) {\n  const matrix = XYZ_TO_SRGB,\n    linearR = matrix[0][0] * x + matrix[0][1] * y + matrix[0][2] * z,\n    linearG = matrix[1][0] * x + matrix[1][1] * y + matrix[1][2] * z,\n    linearB = matrix[2][0] * x + matrix[2][1] * y + matrix[2][2] * z;\n  return argbFromRgb(delinearized(linearR), delinearized(linearG), delinearized(linearB));\n}\nfunction xyzFromArgb(argb) {\n  return matrixMultiply([linearized(redFromArgb(argb)), linearized(greenFromArgb(argb)), linearized(blueFromArgb(argb))], SRGB_TO_XYZ);\n}\nfunction argbFromLstar(lstar) {\n  const component = delinearized(yFromLstar(lstar));\n  return argbFromRgb(component, component, component);\n}\nfunction lstarFromArgb(argb) {\n  return 116 * labF(xyzFromArgb(argb)[1] / 100) - 16;\n}\nfunction yFromLstar(lstar) {\n  return 100 * labInvf((lstar + 16) / 116);\n}\nfunction lstarFromY(y) {\n  return 116 * labF(y / 100) - 16;\n}\nfunction linearized(rgbComponent) {\n  const normalized = rgbComponent / 255;\n  return normalized <= .040449936 ? normalized / 12.92 * 100 : 100 * Math.pow((normalized + .055) / 1.055, 2.4);\n}\nfunction delinearized(rgbComponent) {\n  const normalized = rgbComponent / 100;\n  let delinearized = 0;\n  return delinearized = normalized <= .0031308 ? 12.92 * normalized : 1.055 * Math.pow(normalized, 1 / 2.4) - .055, clampInt(0, 255, Math.round(255 * delinearized));\n}\nfunction whitePointD65() {\n  return WHITE_POINT_D65;\n}\nfunction labF(t) {\n  return t > 216 / 24389 ? Math.pow(t, 1 / 3) : (903.2962962962963 * t + 16) / 116;\n}\nfunction labInvf(ft) {\n  const ft3 = ft * ft * ft;\n  return ft3 > 216 / 24389 ? ft3 : (116 * ft - 16) / 903.2962962962963;\n}\nclass ViewingConditions {\n  static make(whitePoint, adaptingLuminance, backgroundLstar, surround, discountingIlluminant) {\n    if (whitePoint === void 0) {\n      whitePoint = whitePointD65();\n    }\n    if (adaptingLuminance === void 0) {\n      adaptingLuminance = 200 / Math.PI * yFromLstar(50) / 100;\n    }\n    if (backgroundLstar === void 0) {\n      backgroundLstar = 50;\n    }\n    if (surround === void 0) {\n      surround = 2;\n    }\n    if (discountingIlluminant === void 0) {\n      discountingIlluminant = !1;\n    }\n    const xyz = whitePoint,\n      rW = .401288 * xyz[0] + .650173 * xyz[1] + -.051461 * xyz[2],\n      gW = -.250268 * xyz[0] + 1.204414 * xyz[1] + .045854 * xyz[2],\n      bW = -.002079 * xyz[0] + .048952 * xyz[1] + .953127 * xyz[2],\n      f = .8 + surround / 10,\n      c = f >= .9 ? lerp(.59, .69, 10 * (f - .9)) : lerp(.525, .59, 10 * (f - .8));\n    let d = discountingIlluminant ? 1 : f * (1 - 1 / 3.6 * Math.exp((-adaptingLuminance - 42) / 92));\n    d = d > 1 ? 1 : d < 0 ? 0 : d;\n    const nc = f,\n      rgbD = [d * (100 / rW) + 1 - d, d * (100 / gW) + 1 - d, d * (100 / bW) + 1 - d],\n      k = 1 / (5 * adaptingLuminance + 1),\n      k4 = k * k * k * k,\n      k4F = 1 - k4,\n      fl = k4 * adaptingLuminance + .1 * k4F * k4F * Math.cbrt(5 * adaptingLuminance),\n      n = yFromLstar(backgroundLstar) / whitePoint[1],\n      z = 1.48 + Math.sqrt(n),\n      nbb = .725 / Math.pow(n, .2),\n      ncb = nbb,\n      rgbAFactors = [Math.pow(fl * rgbD[0] * rW / 100, .42), Math.pow(fl * rgbD[1] * gW / 100, .42), Math.pow(fl * rgbD[2] * bW / 100, .42)],\n      rgbA = [400 * rgbAFactors[0] / (rgbAFactors[0] + 27.13), 400 * rgbAFactors[1] / (rgbAFactors[1] + 27.13), 400 * rgbAFactors[2] / (rgbAFactors[2] + 27.13)];\n    return new ViewingConditions(n, (2 * rgbA[0] + rgbA[1] + .05 * rgbA[2]) * nbb, nbb, ncb, c, nc, rgbD, fl, Math.pow(fl, .25), z);\n  }\n  constructor(n, aw, nbb, ncb, c, nc, rgbD, fl, fLRoot, z) {\n    this.n = n, this.aw = aw, this.nbb = nbb, this.ncb = ncb, this.c = c, this.nc = nc, this.rgbD = rgbD, this.fl = fl, this.fLRoot = fLRoot, this.z = z;\n  }\n}\nViewingConditions.DEFAULT = ViewingConditions.make();\nclass Cam16 {\n  constructor(hue, chroma, j, q, m, s, jstar, astar, bstar) {\n    this.hue = hue, this.chroma = chroma, this.j = j, this.q = q, this.m = m, this.s = s, this.jstar = jstar, this.astar = astar, this.bstar = bstar;\n  }\n  distance(other) {\n    const dJ = this.jstar - other.jstar,\n      dA = this.astar - other.astar,\n      dB = this.bstar - other.bstar,\n      dEPrime = Math.sqrt(dJ * dJ + dA * dA + dB * dB);\n    return 1.41 * Math.pow(dEPrime, .63);\n  }\n  static fromInt(argb) {\n    return Cam16.fromIntInViewingConditions(argb, ViewingConditions.DEFAULT);\n  }\n  static fromIntInViewingConditions(argb, viewingConditions) {\n    const green = (65280 & argb) >> 8,\n      blue = 255 & argb,\n      redL = linearized((16711680 & argb) >> 16),\n      greenL = linearized(green),\n      blueL = linearized(blue),\n      x = .41233895 * redL + .35762064 * greenL + .18051042 * blueL,\n      y = .2126 * redL + .7152 * greenL + .0722 * blueL,\n      z = .01932141 * redL + .11916382 * greenL + .95034478 * blueL,\n      rC = .401288 * x + .650173 * y - .051461 * z,\n      gC = -.250268 * x + 1.204414 * y + .045854 * z,\n      bC = -.002079 * x + .048952 * y + .953127 * z,\n      rD = viewingConditions.rgbD[0] * rC,\n      gD = viewingConditions.rgbD[1] * gC,\n      bD = viewingConditions.rgbD[2] * bC,\n      rAF = Math.pow(viewingConditions.fl * Math.abs(rD) / 100, .42),\n      gAF = Math.pow(viewingConditions.fl * Math.abs(gD) / 100, .42),\n      bAF = Math.pow(viewingConditions.fl * Math.abs(bD) / 100, .42),\n      rA = 400 * signum(rD) * rAF / (rAF + 27.13),\n      gA = 400 * signum(gD) * gAF / (gAF + 27.13),\n      bA = 400 * signum(bD) * bAF / (bAF + 27.13),\n      a = (11 * rA + -12 * gA + bA) / 11,\n      b = (rA + gA - 2 * bA) / 9,\n      u = (20 * rA + 20 * gA + 21 * bA) / 20,\n      p2 = (40 * rA + 20 * gA + bA) / 20,\n      atanDegrees = 180 * Math.atan2(b, a) / Math.PI,\n      hue = atanDegrees < 0 ? atanDegrees + 360 : atanDegrees >= 360 ? atanDegrees - 360 : atanDegrees,\n      hueRadians = hue * Math.PI / 180,\n      ac = p2 * viewingConditions.nbb,\n      j = 100 * Math.pow(ac / viewingConditions.aw, viewingConditions.c * viewingConditions.z),\n      q = 4 / viewingConditions.c * Math.sqrt(j / 100) * (viewingConditions.aw + 4) * viewingConditions.fLRoot,\n      huePrime = hue < 20.14 ? hue + 360 : hue,\n      t = 5e4 / 13 * (.25 * (Math.cos(huePrime * Math.PI / 180 + 2) + 3.8)) * viewingConditions.nc * viewingConditions.ncb * Math.sqrt(a * a + b * b) / (u + .305),\n      alpha = Math.pow(t, .9) * Math.pow(1.64 - Math.pow(.29, viewingConditions.n), .73),\n      c = alpha * Math.sqrt(j / 100),\n      m = c * viewingConditions.fLRoot,\n      s = 50 * Math.sqrt(alpha * viewingConditions.c / (viewingConditions.aw + 4)),\n      jstar = (1 + 100 * .007) * j / (1 + .007 * j),\n      mstar = 1 / .0228 * Math.log(1 + .0228 * m),\n      astar = mstar * Math.cos(hueRadians),\n      bstar = mstar * Math.sin(hueRadians);\n    return new Cam16(hue, c, j, q, m, s, jstar, astar, bstar);\n  }\n  static fromJch(j, c, h) {\n    return Cam16.fromJchInViewingConditions(j, c, h, ViewingConditions.DEFAULT);\n  }\n  static fromJchInViewingConditions(j, c, h, viewingConditions) {\n    const q = 4 / viewingConditions.c * Math.sqrt(j / 100) * (viewingConditions.aw + 4) * viewingConditions.fLRoot,\n      m = c * viewingConditions.fLRoot,\n      alpha = c / Math.sqrt(j / 100),\n      s = 50 * Math.sqrt(alpha * viewingConditions.c / (viewingConditions.aw + 4)),\n      hueRadians = h * Math.PI / 180,\n      jstar = (1 + 100 * .007) * j / (1 + .007 * j),\n      mstar = 1 / .0228 * Math.log(1 + .0228 * m),\n      astar = mstar * Math.cos(hueRadians),\n      bstar = mstar * Math.sin(hueRadians);\n    return new Cam16(h, c, j, q, m, s, jstar, astar, bstar);\n  }\n  static fromUcs(jstar, astar, bstar) {\n    return Cam16.fromUcsInViewingConditions(jstar, astar, bstar, ViewingConditions.DEFAULT);\n  }\n  static fromUcsInViewingConditions(jstar, astar, bstar, viewingConditions) {\n    const a = astar,\n      b = bstar,\n      m = Math.sqrt(a * a + b * b),\n      c = (Math.exp(.0228 * m) - 1) / .0228 / viewingConditions.fLRoot;\n    let h = Math.atan2(b, a) * (180 / Math.PI);\n    h < 0 && (h += 360);\n    const j = jstar / (1 - .007 * (jstar - 100));\n    return Cam16.fromJchInViewingConditions(j, c, h, viewingConditions);\n  }\n  toInt() {\n    return this.viewed(ViewingConditions.DEFAULT);\n  }\n  viewed(viewingConditions) {\n    const alpha = 0 === this.chroma || 0 === this.j ? 0 : this.chroma / Math.sqrt(this.j / 100),\n      t = Math.pow(alpha / Math.pow(1.64 - Math.pow(.29, viewingConditions.n), .73), 1 / .9),\n      hRad = this.hue * Math.PI / 180,\n      eHue = .25 * (Math.cos(hRad + 2) + 3.8),\n      ac = viewingConditions.aw * Math.pow(this.j / 100, 1 / viewingConditions.c / viewingConditions.z),\n      p1 = eHue * (5e4 / 13) * viewingConditions.nc * viewingConditions.ncb,\n      p2 = ac / viewingConditions.nbb,\n      hSin = Math.sin(hRad),\n      hCos = Math.cos(hRad),\n      gamma = 23 * (p2 + .305) * t / (23 * p1 + 11 * t * hCos + 108 * t * hSin),\n      a = gamma * hCos,\n      b = gamma * hSin,\n      rA = (460 * p2 + 451 * a + 288 * b) / 1403,\n      gA = (460 * p2 - 891 * a - 261 * b) / 1403,\n      bA = (460 * p2 - 220 * a - 6300 * b) / 1403,\n      rCBase = Math.max(0, 27.13 * Math.abs(rA) / (400 - Math.abs(rA))),\n      rC = signum(rA) * (100 / viewingConditions.fl) * Math.pow(rCBase, 1 / .42),\n      gCBase = Math.max(0, 27.13 * Math.abs(gA) / (400 - Math.abs(gA))),\n      gC = signum(gA) * (100 / viewingConditions.fl) * Math.pow(gCBase, 1 / .42),\n      bCBase = Math.max(0, 27.13 * Math.abs(bA) / (400 - Math.abs(bA))),\n      bC = signum(bA) * (100 / viewingConditions.fl) * Math.pow(bCBase, 1 / .42),\n      rF = rC / viewingConditions.rgbD[0],\n      gF = gC / viewingConditions.rgbD[1],\n      bF = bC / viewingConditions.rgbD[2];\n    return argbFromXyz(1.86206786 * rF - 1.01125463 * gF + .14918677 * bF, .38752654 * rF + .62144744 * gF - .00897398 * bF, -.0158415 * rF - .03412294 * gF + 1.04996444 * bF);\n  }\n  static fromXyzInViewingConditions(x, y, z, viewingConditions) {\n    const rC = .401288 * x + .650173 * y - .051461 * z,\n      gC = -.250268 * x + 1.204414 * y + .045854 * z,\n      bC = -.002079 * x + .048952 * y + .953127 * z,\n      rD = viewingConditions.rgbD[0] * rC,\n      gD = viewingConditions.rgbD[1] * gC,\n      bD = viewingConditions.rgbD[2] * bC,\n      rAF = Math.pow(viewingConditions.fl * Math.abs(rD) / 100, .42),\n      gAF = Math.pow(viewingConditions.fl * Math.abs(gD) / 100, .42),\n      bAF = Math.pow(viewingConditions.fl * Math.abs(bD) / 100, .42),\n      rA = 400 * signum(rD) * rAF / (rAF + 27.13),\n      gA = 400 * signum(gD) * gAF / (gAF + 27.13),\n      bA = 400 * signum(bD) * bAF / (bAF + 27.13),\n      a = (11 * rA + -12 * gA + bA) / 11,\n      b = (rA + gA - 2 * bA) / 9,\n      u = (20 * rA + 20 * gA + 21 * bA) / 20,\n      p2 = (40 * rA + 20 * gA + bA) / 20,\n      atanDegrees = 180 * Math.atan2(b, a) / Math.PI,\n      hue = atanDegrees < 0 ? atanDegrees + 360 : atanDegrees >= 360 ? atanDegrees - 360 : atanDegrees,\n      hueRadians = hue * Math.PI / 180,\n      ac = p2 * viewingConditions.nbb,\n      J = 100 * Math.pow(ac / viewingConditions.aw, viewingConditions.c * viewingConditions.z),\n      Q = 4 / viewingConditions.c * Math.sqrt(J / 100) * (viewingConditions.aw + 4) * viewingConditions.fLRoot,\n      huePrime = hue < 20.14 ? hue + 360 : hue,\n      t = 5e4 / 13 * (1 / 4 * (Math.cos(huePrime * Math.PI / 180 + 2) + 3.8)) * viewingConditions.nc * viewingConditions.ncb * Math.sqrt(a * a + b * b) / (u + .305),\n      alpha = Math.pow(t, .9) * Math.pow(1.64 - Math.pow(.29, viewingConditions.n), .73),\n      C = alpha * Math.sqrt(J / 100),\n      M = C * viewingConditions.fLRoot,\n      s = 50 * Math.sqrt(alpha * viewingConditions.c / (viewingConditions.aw + 4)),\n      jstar = (1 + 100 * .007) * J / (1 + .007 * J),\n      mstar = Math.log(1 + .0228 * M) / .0228,\n      astar = mstar * Math.cos(hueRadians),\n      bstar = mstar * Math.sin(hueRadians);\n    return new Cam16(hue, C, J, Q, M, s, jstar, astar, bstar);\n  }\n  xyzInViewingConditions(viewingConditions) {\n    const alpha = 0 === this.chroma || 0 === this.j ? 0 : this.chroma / Math.sqrt(this.j / 100),\n      t = Math.pow(alpha / Math.pow(1.64 - Math.pow(.29, viewingConditions.n), .73), 1 / .9),\n      hRad = this.hue * Math.PI / 180,\n      eHue = .25 * (Math.cos(hRad + 2) + 3.8),\n      ac = viewingConditions.aw * Math.pow(this.j / 100, 1 / viewingConditions.c / viewingConditions.z),\n      p1 = eHue * (5e4 / 13) * viewingConditions.nc * viewingConditions.ncb,\n      p2 = ac / viewingConditions.nbb,\n      hSin = Math.sin(hRad),\n      hCos = Math.cos(hRad),\n      gamma = 23 * (p2 + .305) * t / (23 * p1 + 11 * t * hCos + 108 * t * hSin),\n      a = gamma * hCos,\n      b = gamma * hSin,\n      rA = (460 * p2 + 451 * a + 288 * b) / 1403,\n      gA = (460 * p2 - 891 * a - 261 * b) / 1403,\n      bA = (460 * p2 - 220 * a - 6300 * b) / 1403,\n      rCBase = Math.max(0, 27.13 * Math.abs(rA) / (400 - Math.abs(rA))),\n      rC = signum(rA) * (100 / viewingConditions.fl) * Math.pow(rCBase, 1 / .42),\n      gCBase = Math.max(0, 27.13 * Math.abs(gA) / (400 - Math.abs(gA))),\n      gC = signum(gA) * (100 / viewingConditions.fl) * Math.pow(gCBase, 1 / .42),\n      bCBase = Math.max(0, 27.13 * Math.abs(bA) / (400 - Math.abs(bA))),\n      bC = signum(bA) * (100 / viewingConditions.fl) * Math.pow(bCBase, 1 / .42),\n      rF = rC / viewingConditions.rgbD[0],\n      gF = gC / viewingConditions.rgbD[1],\n      bF = bC / viewingConditions.rgbD[2];\n    return [1.86206786 * rF - 1.01125463 * gF + .14918677 * bF, .38752654 * rF + .62144744 * gF - .00897398 * bF, -.0158415 * rF - .03412294 * gF + 1.04996444 * bF];\n  }\n}\nclass HctSolver {\n  static sanitizeRadians(angle) {\n    return (angle + 8 * Math.PI) % (2 * Math.PI);\n  }\n  static trueDelinearized(rgbComponent) {\n    const normalized = rgbComponent / 100;\n    let delinearized = 0;\n    return delinearized = normalized <= .0031308 ? 12.92 * normalized : 1.055 * Math.pow(normalized, 1 / 2.4) - .055, 255 * delinearized;\n  }\n  static chromaticAdaptation(component) {\n    const af = Math.pow(Math.abs(component), .42);\n    return 400 * signum(component) * af / (af + 27.13);\n  }\n  static hueOf(linrgb) {\n    const scaledDiscount = matrixMultiply(linrgb, HctSolver.SCALED_DISCOUNT_FROM_LINRGB),\n      rA = HctSolver.chromaticAdaptation(scaledDiscount[0]),\n      gA = HctSolver.chromaticAdaptation(scaledDiscount[1]),\n      bA = HctSolver.chromaticAdaptation(scaledDiscount[2]),\n      a = (11 * rA + -12 * gA + bA) / 11,\n      b = (rA + gA - 2 * bA) / 9;\n    return Math.atan2(b, a);\n  }\n  static areInCyclicOrder(a, b, c) {\n    return HctSolver.sanitizeRadians(b - a) < HctSolver.sanitizeRadians(c - a);\n  }\n  static intercept(source, mid, target) {\n    return (mid - source) / (target - source);\n  }\n  static lerpPoint(source, t, target) {\n    return [source[0] + (target[0] - source[0]) * t, source[1] + (target[1] - source[1]) * t, source[2] + (target[2] - source[2]) * t];\n  }\n  static setCoordinate(source, coordinate, target, axis) {\n    const t = HctSolver.intercept(source[axis], coordinate, target[axis]);\n    return HctSolver.lerpPoint(source, t, target);\n  }\n  static isBounded(x) {\n    return 0 <= x && x <= 100;\n  }\n  static nthVertex(y, n) {\n    const kR = HctSolver.Y_FROM_LINRGB[0],\n      kG = HctSolver.Y_FROM_LINRGB[1],\n      kB = HctSolver.Y_FROM_LINRGB[2],\n      coordA = n % 4 <= 1 ? 0 : 100,\n      coordB = n % 2 == 0 ? 0 : 100;\n    if (n < 4) {\n      const g = coordA,\n        b = coordB,\n        r = (y - g * kG - b * kB) / kR;\n      return HctSolver.isBounded(r) ? [r, g, b] : [-1, -1, -1];\n    }\n    if (n < 8) {\n      const b = coordA,\n        r = coordB,\n        g = (y - r * kR - b * kB) / kG;\n      return HctSolver.isBounded(g) ? [r, g, b] : [-1, -1, -1];\n    }\n    {\n      const r = coordA,\n        g = coordB,\n        b = (y - r * kR - g * kG) / kB;\n      return HctSolver.isBounded(b) ? [r, g, b] : [-1, -1, -1];\n    }\n  }\n  static bisectToSegment(y, targetHue) {\n    let left = [-1, -1, -1],\n      right = left,\n      leftHue = 0,\n      rightHue = 0,\n      initialized = !1,\n      uncut = !0;\n    for (let n = 0; n < 12; n++) {\n      const mid = HctSolver.nthVertex(y, n);\n      if (mid[0] < 0) continue;\n      const midHue = HctSolver.hueOf(mid);\n      initialized ? (uncut || HctSolver.areInCyclicOrder(leftHue, midHue, rightHue)) && (uncut = !1, HctSolver.areInCyclicOrder(leftHue, targetHue, midHue) ? (right = mid, rightHue = midHue) : (left = mid, leftHue = midHue)) : (left = mid, right = mid, leftHue = midHue, rightHue = midHue, initialized = !0);\n    }\n    return [left, right];\n  }\n  static midpoint(a, b) {\n    return [(a[0] + b[0]) / 2, (a[1] + b[1]) / 2, (a[2] + b[2]) / 2];\n  }\n  static criticalPlaneBelow(x) {\n    return Math.floor(x - .5);\n  }\n  static criticalPlaneAbove(x) {\n    return Math.ceil(x - .5);\n  }\n  static bisectToLimit(y, targetHue) {\n    const segment = HctSolver.bisectToSegment(y, targetHue);\n    let left = segment[0],\n      leftHue = HctSolver.hueOf(left),\n      right = segment[1];\n    for (let axis = 0; axis < 3; axis++) if (left[axis] !== right[axis]) {\n      let lPlane = -1,\n        rPlane = 255;\n      left[axis] < right[axis] ? (lPlane = HctSolver.criticalPlaneBelow(HctSolver.trueDelinearized(left[axis])), rPlane = HctSolver.criticalPlaneAbove(HctSolver.trueDelinearized(right[axis]))) : (lPlane = HctSolver.criticalPlaneAbove(HctSolver.trueDelinearized(left[axis])), rPlane = HctSolver.criticalPlaneBelow(HctSolver.trueDelinearized(right[axis])));\n      for (let i = 0; i < 8 && !(Math.abs(rPlane - lPlane) <= 1); i++) {\n        const mPlane = Math.floor((lPlane + rPlane) / 2),\n          midPlaneCoordinate = HctSolver.CRITICAL_PLANES[mPlane],\n          mid = HctSolver.setCoordinate(left, midPlaneCoordinate, right, axis),\n          midHue = HctSolver.hueOf(mid);\n        HctSolver.areInCyclicOrder(leftHue, targetHue, midHue) ? (right = mid, rPlane = mPlane) : (left = mid, leftHue = midHue, lPlane = mPlane);\n      }\n    }\n    return HctSolver.midpoint(left, right);\n  }\n  static inverseChromaticAdaptation(adapted) {\n    const adaptedAbs = Math.abs(adapted),\n      base = Math.max(0, 27.13 * adaptedAbs / (400 - adaptedAbs));\n    return signum(adapted) * Math.pow(base, 1 / .42);\n  }\n  static findResultByJ(hueRadians, chroma, y) {\n    let j = 11 * Math.sqrt(y);\n    const viewingConditions = ViewingConditions.DEFAULT,\n      tInnerCoeff = 1 / Math.pow(1.64 - Math.pow(.29, viewingConditions.n), .73),\n      p1 = .25 * (Math.cos(hueRadians + 2) + 3.8) * (5e4 / 13) * viewingConditions.nc * viewingConditions.ncb,\n      hSin = Math.sin(hueRadians),\n      hCos = Math.cos(hueRadians);\n    for (let iterationRound = 0; iterationRound < 5; iterationRound++) {\n      const jNormalized = j / 100,\n        alpha = 0 === chroma || 0 === j ? 0 : chroma / Math.sqrt(jNormalized),\n        t = Math.pow(alpha * tInnerCoeff, 1 / .9),\n        p2 = viewingConditions.aw * Math.pow(jNormalized, 1 / viewingConditions.c / viewingConditions.z) / viewingConditions.nbb,\n        gamma = 23 * (p2 + .305) * t / (23 * p1 + 11 * t * hCos + 108 * t * hSin),\n        a = gamma * hCos,\n        b = gamma * hSin,\n        rA = (460 * p2 + 451 * a + 288 * b) / 1403,\n        gA = (460 * p2 - 891 * a - 261 * b) / 1403,\n        bA = (460 * p2 - 220 * a - 6300 * b) / 1403,\n        linrgb = matrixMultiply([HctSolver.inverseChromaticAdaptation(rA), HctSolver.inverseChromaticAdaptation(gA), HctSolver.inverseChromaticAdaptation(bA)], HctSolver.LINRGB_FROM_SCALED_DISCOUNT);\n      if (linrgb[0] < 0 || linrgb[1] < 0 || linrgb[2] < 0) return 0;\n      const kR = HctSolver.Y_FROM_LINRGB[0],\n        kG = HctSolver.Y_FROM_LINRGB[1],\n        kB = HctSolver.Y_FROM_LINRGB[2],\n        fnj = kR * linrgb[0] + kG * linrgb[1] + kB * linrgb[2];\n      if (fnj <= 0) return 0;\n      if (4 === iterationRound || Math.abs(fnj - y) < .002) return linrgb[0] > 100.01 || linrgb[1] > 100.01 || linrgb[2] > 100.01 ? 0 : argbFromLinrgb(linrgb);\n      j -= (fnj - y) * j / (2 * fnj);\n    }\n    return 0;\n  }\n  static solveToInt(hueDegrees, chroma, lstar) {\n    if (chroma < 1e-4 || lstar < 1e-4 || lstar > 99.9999) return argbFromLstar(lstar);\n    const hueRadians = (hueDegrees = sanitizeDegreesDouble(hueDegrees)) / 180 * Math.PI,\n      y = yFromLstar(lstar),\n      exactAnswer = HctSolver.findResultByJ(hueRadians, chroma, y);\n    if (0 !== exactAnswer) return exactAnswer;\n    return argbFromLinrgb(HctSolver.bisectToLimit(y, hueRadians));\n  }\n  static solveToCam(hueDegrees, chroma, lstar) {\n    return Cam16.fromInt(HctSolver.solveToInt(hueDegrees, chroma, lstar));\n  }\n}\nHctSolver.SCALED_DISCOUNT_FROM_LINRGB = [[.001200833568784504, .002389694492170889, .0002795742885861124], [.0005891086651375999, .0029785502573438758, .0003270666104008398], [.00010146692491640572, .0005364214359186694, .0032979401770712076]], HctSolver.LINRGB_FROM_SCALED_DISCOUNT = [[1373.2198709594231, -1100.4251190754821, -7.278681089101213], [-271.815969077903, 559.6580465940733, -32.46047482791194], [1.9622899599665666, -57.173814538844006, 308.7233197812385]], HctSolver.Y_FROM_LINRGB = [.2126, .7152, .0722], HctSolver.CRITICAL_PLANES = [.015176349177441876, .045529047532325624, .07588174588720938, .10623444424209313, .13658714259697685, .16693984095186062, .19729253930674434, .2276452376616281, .2579979360165119, .28835063437139563, .3188300904430532, .350925934958123, .3848314933096426, .42057480301049466, .458183274052838, .4976837250274023, .5391024159806381, .5824650784040898, .6277969426914107, .6751227633498623, .7244668422128921, .775853049866786, .829304845476233, .8848452951698498, .942497089126609, 1.0022825574869039, 1.0642236851973577, 1.1283421258858297, 1.1946592148522128, 1.2631959812511864, 1.3339731595349034, 1.407011200216447, 1.4823302800086415, 1.5599503113873272, 1.6398909516233677, 1.7221716113234105, 1.8068114625156377, 1.8938294463134073, 1.9832442801866852, 2.075074464868551, 2.1693382909216234, 2.2660538449872063, 2.36523901573795, 2.4669114995532007, 2.5710888059345764, 2.6777882626779785, 2.7870270208169257, 2.898822059350997, 3.0131901897720907, 3.1301480604002863, 3.2497121605402226, 3.3718988244681087, 3.4967242352587946, 3.624204428461639, 3.754355295633311, 3.887192587735158, 4.022731918402185, 4.160988767090289, 4.301978482107941, 4.445716283538092, 4.592217266055746, 4.741496401646282, 4.893568542229298, 5.048448422192488, 5.20615066083972, 5.3666897647573375, 5.5300801301023865, 5.696336044816294, 5.865471690767354, 6.037501145825082, 6.212438385869475, 6.390297286737924, 6.571091626112461, 6.7548350853498045, 6.941541251256611, 7.131223617812143, 7.323895587840543, 7.5195704746346665, 7.7182615035334345, 7.919981813454504, 8.124744458384042, 8.332562408825165, 8.543448553206703, 8.757415699253682, 8.974476575321063, 9.194643831691977, 9.417930041841839, 9.644347703669503, 9.873909240696694, 10.106627003236781, 10.342513269534024, 10.58158024687427, 10.8238400726681, 11.069304815507364, 11.317986476196008, 11.569896988756009, 11.825048221409341, 12.083451977536606, 12.345119996613247, 12.610063955123938, 12.878295467455942, 13.149826086772048, 13.42466730586372, 13.702830557985108, 13.984327217668513, 14.269168601521828, 14.55736596900856, 14.848930523210871, 15.143873411576273, 15.44220572664832, 15.743938506781891, 16.04908273684337, 16.35764934889634, 16.66964922287304, 16.985093187232053, 17.30399201960269, 17.62635644741625, 17.95219714852476, 18.281524751807332, 18.614349837764564, 18.95068293910138, 19.290534541298456, 19.633915083172692, 19.98083495742689, 20.331304511189067, 20.685334046541502, 21.042933821039977, 21.404114048223256, 21.76888489811322, 22.137256497705877, 22.50923893145328, 22.884842241736916, 23.264076429332462, 23.6469514538663, 24.033477234264016, 24.42366364919083, 24.817520537484558, 25.21505769858089, 25.61628489293138, 26.021211842414342, 26.429848230738664, 26.842203703840827, 27.258287870275353, 27.678110301598522, 28.10168053274597, 28.529008062403893, 28.96010235337422, 29.39497283293396, 29.83362889318845, 30.276079891419332, 30.722335150426627, 31.172403958865512, 31.62629557157785, 32.08401920991837, 32.54558406207592, 33.010999283389665, 33.4802739966603, 33.953417292456834, 34.430438229418264, 34.911345834551085, 35.39614910352207, 35.88485700094671, 36.37747846067349, 36.87402238606382, 37.37449765026789, 37.87891309649659, 38.38727753828926, 38.89959975977785, 39.41588851594697, 39.93615253289054, 40.460400508064545, 40.98864111053629, 41.520882981230194, 42.05713473317016, 42.597404951718396, 43.141702194811224, 43.6900349931913, 44.24241185063697, 44.798841244188324, 45.35933162437017, 45.92389141541209, 46.49252901546552, 47.065252796817916, 47.64207110610409, 48.22299226451468, 48.808024568002054, 49.3971762874833, 49.9904556690408, 50.587870934119984, 51.189430279724725, 51.79514187861014, 52.40501387947288, 53.0190544071392, 53.637271562750364, 54.259673423945976, 54.88626804504493, 55.517063457223934, 56.15206766869424, 56.79128866487574, 57.43473440856916, 58.08241284012621, 58.734331877617365, 59.39049941699807, 60.05092333227251, 60.715611475655585, 61.38457167773311, 62.057811747619894, 62.7353394731159, 63.417162620860914, 64.10328893648692, 64.79372614476921, 65.48848194977529, 66.18756403501224, 66.89098006357258, 67.59873767827808, 68.31084450182222, 69.02730813691093, 69.74813616640164, 70.47333615344107, 71.20291564160104, 71.93688215501312, 72.67524319850172, 73.41800625771542, 74.16517879925733, 74.9167682708136, 75.67278210128072, 76.43322770089146, 77.1981124613393, 77.96744375590167, 78.74122893956174, 79.51947534912904, 80.30219030335869, 81.08938110306934, 81.88105503125999, 82.67721935322541, 83.4778813166706, 84.28304815182372, 85.09272707154808, 85.90692527145302, 86.72564993000343, 87.54890820862819, 88.3767072518277, 89.2090541872801, 90.04595612594655, 90.88742016217518, 91.73345337380438, 92.58406282226491, 93.43925555268066, 94.29903859396902, 95.16341895893969, 96.03240364439274, 96.9059996312159, 97.78421388448044, 98.6670533535366, 99.55452497210776];\nclass Hct {\n  static from(hue, chroma, tone) {\n    return new Hct(HctSolver.solveToInt(hue, chroma, tone));\n  }\n  static fromInt(argb) {\n    return new Hct(argb);\n  }\n  toInt() {\n    return this.argb;\n  }\n  get hue() {\n    return this.internalHue;\n  }\n  set hue(newHue) {\n    this.setInternalState(HctSolver.solveToInt(newHue, this.internalChroma, this.internalTone));\n  }\n  get chroma() {\n    return this.internalChroma;\n  }\n  set chroma(newChroma) {\n    this.setInternalState(HctSolver.solveToInt(this.internalHue, newChroma, this.internalTone));\n  }\n  get tone() {\n    return this.internalTone;\n  }\n  set tone(newTone) {\n    this.setInternalState(HctSolver.solveToInt(this.internalHue, this.internalChroma, newTone));\n  }\n  constructor(argb) {\n    this.argb = argb;\n    const cam = Cam16.fromInt(argb);\n    this.internalHue = cam.hue, this.internalChroma = cam.chroma, this.internalTone = lstarFromArgb(argb), this.argb = argb;\n  }\n  setInternalState(argb) {\n    const cam = Cam16.fromInt(argb);\n    this.internalHue = cam.hue, this.internalChroma = cam.chroma, this.internalTone = lstarFromArgb(argb), this.argb = argb;\n  }\n  inViewingConditions(vc) {\n    const viewedInVc = Cam16.fromInt(this.toInt()).xyzInViewingConditions(vc),\n      recastInVc = Cam16.fromXyzInViewingConditions(viewedInVc[0], viewedInVc[1], viewedInVc[2], ViewingConditions.make());\n    return Hct.from(recastInVc.hue, recastInVc.chroma, lstarFromY(viewedInVc[1]));\n  }\n}\nclass Blend {\n  static harmonize(designColor, sourceColor) {\n    const fromHct = Hct.fromInt(designColor),\n      toHct = Hct.fromInt(sourceColor),\n      differenceDegrees$1 = differenceDegrees(fromHct.hue, toHct.hue),\n      rotationDegrees = Math.min(.5 * differenceDegrees$1, 15),\n      outputHue = sanitizeDegreesDouble(fromHct.hue + rotationDegrees * rotationDirection(fromHct.hue, toHct.hue));\n    return Hct.from(outputHue, fromHct.chroma, fromHct.tone).toInt();\n  }\n  static hctHue(from, to, amount) {\n    const ucs = Blend.cam16Ucs(from, to, amount),\n      ucsCam = Cam16.fromInt(ucs),\n      fromCam = Cam16.fromInt(from);\n    return Hct.from(ucsCam.hue, fromCam.chroma, lstarFromArgb(from)).toInt();\n  }\n  static cam16Ucs(from, to, amount) {\n    const fromCam = Cam16.fromInt(from),\n      toCam = Cam16.fromInt(to),\n      fromJ = fromCam.jstar,\n      fromA = fromCam.astar,\n      fromB = fromCam.bstar,\n      jstar = fromJ + (toCam.jstar - fromJ) * amount,\n      astar = fromA + (toCam.astar - fromA) * amount,\n      bstar = fromB + (toCam.bstar - fromB) * amount;\n    return Cam16.fromUcs(jstar, astar, bstar).toInt();\n  }\n}\nclass Contrast {\n  static ratioOfTones(toneA, toneB) {\n    return toneA = clampDouble(0, 100, toneA), toneB = clampDouble(0, 100, toneB), Contrast.ratioOfYs(yFromLstar(toneA), yFromLstar(toneB));\n  }\n  static ratioOfYs(y1, y2) {\n    const lighter = y1 > y2 ? y1 : y2;\n    return (lighter + 5) / ((lighter === y2 ? y1 : y2) + 5);\n  }\n  static lighter(tone, ratio) {\n    if (tone < 0 || tone > 100) return -1;\n    const darkY = yFromLstar(tone),\n      lightY = ratio * (darkY + 5) - 5,\n      realContrast = Contrast.ratioOfYs(lightY, darkY),\n      delta = Math.abs(realContrast - ratio);\n    if (realContrast < ratio && delta > .04) return -1;\n    const returnValue = lstarFromY(lightY) + .4;\n    return returnValue < 0 || returnValue > 100 ? -1 : returnValue;\n  }\n  static darker(tone, ratio) {\n    if (tone < 0 || tone > 100) return -1;\n    const lightY = yFromLstar(tone),\n      darkY = (lightY + 5) / ratio - 5,\n      realContrast = Contrast.ratioOfYs(lightY, darkY),\n      delta = Math.abs(realContrast - ratio);\n    if (realContrast < ratio && delta > .04) return -1;\n    const returnValue = lstarFromY(darkY) - .4;\n    return returnValue < 0 || returnValue > 100 ? -1 : returnValue;\n  }\n  static lighterUnsafe(tone, ratio) {\n    const lighterSafe = Contrast.lighter(tone, ratio);\n    return lighterSafe < 0 ? 100 : lighterSafe;\n  }\n  static darkerUnsafe(tone, ratio) {\n    const darkerSafe = Contrast.darker(tone, ratio);\n    return darkerSafe < 0 ? 0 : darkerSafe;\n  }\n}\nclass DislikeAnalyzer {\n  static isDisliked(hct) {\n    const huePasses = Math.round(hct.hue) >= 90 && Math.round(hct.hue) <= 111,\n      chromaPasses = Math.round(hct.chroma) > 16,\n      tonePasses = Math.round(hct.tone) < 65;\n    return huePasses && chromaPasses && tonePasses;\n  }\n  static fixIfDisliked(hct) {\n    return DislikeAnalyzer.isDisliked(hct) ? Hct.from(hct.hue, hct.chroma, 70) : hct;\n  }\n}\nclass DynamicColor {\n  static fromPalette(args) {\n    return new DynamicColor(args.name ?? \"\", args.palette, args.tone, args.isBackground ?? !1, args.background, args.secondBackground, args.contrastCurve, args.toneDeltaPair);\n  }\n  constructor(name, palette, tone, isBackground, background, secondBackground, contrastCurve, toneDeltaPair) {\n    if (this.name = name, this.palette = palette, this.tone = tone, this.isBackground = isBackground, this.background = background, this.secondBackground = secondBackground, this.contrastCurve = contrastCurve, this.toneDeltaPair = toneDeltaPair, this.hctCache = new Map(), !background && secondBackground) throw new Error(`Color ${name} has secondBackgrounddefined, but background is not defined.`);\n    if (!background && contrastCurve) throw new Error(`Color ${name} has contrastCurvedefined, but background is not defined.`);\n    if (background && !contrastCurve) throw new Error(`Color ${name} has backgrounddefined, but contrastCurve is not defined.`);\n  }\n  getArgb(scheme) {\n    return this.getHct(scheme).toInt();\n  }\n  getHct(scheme) {\n    const cachedAnswer = this.hctCache.get(scheme);\n    if (null != cachedAnswer) return cachedAnswer;\n    const tone = this.getTone(scheme),\n      answer = this.palette(scheme).getHct(tone);\n    return this.hctCache.size > 4 && this.hctCache.clear(), this.hctCache.set(scheme, answer), answer;\n  }\n  getTone(scheme) {\n    const decreasingContrast = scheme.contrastLevel < 0;\n    if (this.toneDeltaPair) {\n      const toneDeltaPair = this.toneDeltaPair(scheme),\n        roleA = toneDeltaPair.roleA,\n        roleB = toneDeltaPair.roleB,\n        delta = toneDeltaPair.delta,\n        polarity = toneDeltaPair.polarity,\n        stayTogether = toneDeltaPair.stayTogether,\n        bgTone = this.background(scheme).getTone(scheme),\n        aIsNearer = \"nearer\" === polarity || \"lighter\" === polarity && !scheme.isDark || \"darker\" === polarity && scheme.isDark,\n        nearer = aIsNearer ? roleA : roleB,\n        farther = aIsNearer ? roleB : roleA,\n        amNearer = this.name === nearer.name,\n        expansionDir = scheme.isDark ? 1 : -1,\n        nContrast = nearer.contrastCurve.getContrast(scheme.contrastLevel),\n        fContrast = farther.contrastCurve.getContrast(scheme.contrastLevel),\n        nInitialTone = nearer.tone(scheme);\n      let nTone = Contrast.ratioOfTones(bgTone, nInitialTone) >= nContrast ? nInitialTone : DynamicColor.foregroundTone(bgTone, nContrast);\n      const fInitialTone = farther.tone(scheme);\n      let fTone = Contrast.ratioOfTones(bgTone, fInitialTone) >= fContrast ? fInitialTone : DynamicColor.foregroundTone(bgTone, fContrast);\n      return decreasingContrast && (nTone = DynamicColor.foregroundTone(bgTone, nContrast), fTone = DynamicColor.foregroundTone(bgTone, fContrast)), (fTone - nTone) * expansionDir >= delta || (fTone = clampDouble(0, 100, nTone + delta * expansionDir), (fTone - nTone) * expansionDir >= delta || (nTone = clampDouble(0, 100, fTone - delta * expansionDir))), 50 <= nTone && nTone < 60 ? expansionDir > 0 ? (nTone = 60, fTone = Math.max(fTone, nTone + delta * expansionDir)) : (nTone = 49, fTone = Math.min(fTone, nTone + delta * expansionDir)) : 50 <= fTone && fTone < 60 && (stayTogether ? expansionDir > 0 ? (nTone = 60, fTone = Math.max(fTone, nTone + delta * expansionDir)) : (nTone = 49, fTone = Math.min(fTone, nTone + delta * expansionDir)) : fTone = expansionDir > 0 ? 60 : 49), amNearer ? nTone : fTone;\n    }\n    {\n      let answer = this.tone(scheme);\n      if (null == this.background) return answer;\n      const bgTone = this.background(scheme).getTone(scheme),\n        desiredRatio = this.contrastCurve.getContrast(scheme.contrastLevel);\n      if (Contrast.ratioOfTones(bgTone, answer) >= desiredRatio || (answer = DynamicColor.foregroundTone(bgTone, desiredRatio)), decreasingContrast && (answer = DynamicColor.foregroundTone(bgTone, desiredRatio)), this.isBackground && 50 <= answer && answer < 60 && (answer = Contrast.ratioOfTones(49, bgTone) >= desiredRatio ? 49 : 60), this.secondBackground) {\n        const [bg1, bg2] = [this.background, this.secondBackground],\n          [bgTone1, bgTone2] = [bg1(scheme).getTone(scheme), bg2(scheme).getTone(scheme)],\n          [upper, lower] = [Math.max(bgTone1, bgTone2), Math.min(bgTone1, bgTone2)];\n        if (Contrast.ratioOfTones(upper, answer) >= desiredRatio && Contrast.ratioOfTones(lower, answer) >= desiredRatio) return answer;\n        const lightOption = Contrast.lighter(upper, desiredRatio),\n          darkOption = Contrast.darker(lower, desiredRatio),\n          availables = [];\n        -1 !== lightOption && availables.push(lightOption), -1 !== darkOption && availables.push(darkOption);\n        return DynamicColor.tonePrefersLightForeground(bgTone1) || DynamicColor.tonePrefersLightForeground(bgTone2) ? lightOption < 0 ? 100 : lightOption : 1 === availables.length ? availables[0] : darkOption < 0 ? 0 : darkOption;\n      }\n      return answer;\n    }\n  }\n  static foregroundTone(bgTone, ratio) {\n    const lighterTone = Contrast.lighterUnsafe(bgTone, ratio),\n      darkerTone = Contrast.darkerUnsafe(bgTone, ratio),\n      lighterRatio = Contrast.ratioOfTones(lighterTone, bgTone),\n      darkerRatio = Contrast.ratioOfTones(darkerTone, bgTone);\n    if (DynamicColor.tonePrefersLightForeground(bgTone)) {\n      const negligibleDifference = Math.abs(lighterRatio - darkerRatio) < .1 && lighterRatio < ratio && darkerRatio < ratio;\n      return lighterRatio >= ratio || lighterRatio >= darkerRatio || negligibleDifference ? lighterTone : darkerTone;\n    }\n    return darkerRatio >= ratio || darkerRatio >= lighterRatio ? darkerTone : lighterTone;\n  }\n  static tonePrefersLightForeground(tone) {\n    return Math.round(tone) < 60;\n  }\n  static toneAllowsLightForeground(tone) {\n    return Math.round(tone) <= 49;\n  }\n  static enableLightForeground(tone) {\n    return DynamicColor.tonePrefersLightForeground(tone) && !DynamicColor.toneAllowsLightForeground(tone) ? 49 : tone;\n  }\n}\nvar Variant;\n!function (Variant) {\n  Variant[Variant.MONOCHROME = 0] = \"MONOCHROME\", Variant[Variant.NEUTRAL = 1] = \"NEUTRAL\", Variant[Variant.TONAL_SPOT = 2] = \"TONAL_SPOT\", Variant[Variant.VIBRANT = 3] = \"VIBRANT\", Variant[Variant.EXPRESSIVE = 4] = \"EXPRESSIVE\", Variant[Variant.FIDELITY = 5] = \"FIDELITY\", Variant[Variant.CONTENT = 6] = \"CONTENT\", Variant[Variant.RAINBOW = 7] = \"RAINBOW\", Variant[Variant.FRUIT_SALAD = 8] = \"FRUIT_SALAD\";\n}(Variant || (Variant = {}));\nclass ContrastCurve {\n  constructor(low, normal, medium, high) {\n    this.low = low, this.normal = normal, this.medium = medium, this.high = high;\n  }\n  getContrast(contrastLevel) {\n    return contrastLevel <= -1 ? this.low : contrastLevel < 0 ? lerp(this.low, this.normal, (contrastLevel - -1) / 1) : contrastLevel < .5 ? lerp(this.normal, this.medium, (contrastLevel - 0) / .5) : contrastLevel < 1 ? lerp(this.medium, this.high, (contrastLevel - .5) / .5) : this.high;\n  }\n}\nclass ToneDeltaPair {\n  constructor(roleA, roleB, delta, polarity, stayTogether) {\n    this.roleA = roleA, this.roleB = roleB, this.delta = delta, this.polarity = polarity, this.stayTogether = stayTogether;\n  }\n}\nfunction isFidelity(scheme) {\n  return scheme.variant === Variant.FIDELITY || scheme.variant === Variant.CONTENT;\n}\nfunction isMonochrome(scheme) {\n  return scheme.variant === Variant.MONOCHROME;\n}\nfunction findDesiredChromaByTone(hue, chroma, tone, byDecreasingTone) {\n  let answer = tone,\n    closestToChroma = Hct.from(hue, chroma, tone);\n  if (closestToChroma.chroma < chroma) {\n    let chromaPeak = closestToChroma.chroma;\n    for (; closestToChroma.chroma < chroma;) {\n      answer += byDecreasingTone ? -1 : 1;\n      const potentialSolution = Hct.from(hue, chroma, answer);\n      if (chromaPeak > potentialSolution.chroma) break;\n      if (Math.abs(potentialSolution.chroma - chroma) < .4) break;\n      Math.abs(potentialSolution.chroma - chroma) < Math.abs(closestToChroma.chroma - chroma) && (closestToChroma = potentialSolution), chromaPeak = Math.max(chromaPeak, potentialSolution.chroma);\n    }\n  }\n  return answer;\n}\nfunction viewingConditionsForAlbers(scheme) {\n  return ViewingConditions.make(void 0, void 0, scheme.isDark ? 30 : 80, void 0, void 0);\n}\nfunction performAlbers(prealbers, scheme) {\n  const albersd = prealbers.inViewingConditions(viewingConditionsForAlbers(scheme));\n  return DynamicColor.tonePrefersLightForeground(prealbers.tone) && !DynamicColor.toneAllowsLightForeground(albersd.tone) ? DynamicColor.enableLightForeground(prealbers.tone) : DynamicColor.enableLightForeground(albersd.tone);\n}\nclass MaterialDynamicColors {\n  static highestSurface(s) {\n    return s.isDark ? MaterialDynamicColors.surfaceBright : MaterialDynamicColors.surfaceDim;\n  }\n}\nMaterialDynamicColors.contentAccentToneDelta = 15, MaterialDynamicColors.primaryPaletteKeyColor = DynamicColor.fromPalette({\n  name: \"primary_palette_key_color\",\n  palette: s => s.primaryPalette,\n  tone: s => s.primaryPalette.keyColor.tone\n}), MaterialDynamicColors.secondaryPaletteKeyColor = DynamicColor.fromPalette({\n  name: \"secondary_palette_key_color\",\n  palette: s => s.secondaryPalette,\n  tone: s => s.secondaryPalette.keyColor.tone\n}), MaterialDynamicColors.tertiaryPaletteKeyColor = DynamicColor.fromPalette({\n  name: \"tertiary_palette_key_color\",\n  palette: s => s.tertiaryPalette,\n  tone: s => s.tertiaryPalette.keyColor.tone\n}), MaterialDynamicColors.neutralPaletteKeyColor = DynamicColor.fromPalette({\n  name: \"neutral_palette_key_color\",\n  palette: s => s.neutralPalette,\n  tone: s => s.neutralPalette.keyColor.tone\n}), MaterialDynamicColors.neutralVariantPaletteKeyColor = DynamicColor.fromPalette({\n  name: \"neutral_variant_palette_key_color\",\n  palette: s => s.neutralVariantPalette,\n  tone: s => s.neutralVariantPalette.keyColor.tone\n}), MaterialDynamicColors.background = DynamicColor.fromPalette({\n  name: \"background\",\n  palette: s => s.neutralPalette,\n  tone: s => s.isDark ? 6 : 98,\n  isBackground: !0\n}), MaterialDynamicColors.onBackground = DynamicColor.fromPalette({\n  name: \"on_background\",\n  palette: s => s.neutralPalette,\n  tone: s => s.isDark ? 90 : 10,\n  background: s => MaterialDynamicColors.background,\n  contrastCurve: new ContrastCurve(3, 3, 4.5, 7)\n}), MaterialDynamicColors.surface = DynamicColor.fromPalette({\n  name: \"surface\",\n  palette: s => s.neutralPalette,\n  tone: s => s.isDark ? 6 : 98,\n  isBackground: !0\n}), MaterialDynamicColors.surfaceDim = DynamicColor.fromPalette({\n  name: \"surface_dim\",\n  palette: s => s.neutralPalette,\n  tone: s => s.isDark ? 6 : 87,\n  isBackground: !0\n}), MaterialDynamicColors.surfaceBright = DynamicColor.fromPalette({\n  name: \"surface_bright\",\n  palette: s => s.neutralPalette,\n  tone: s => s.isDark ? 24 : 98,\n  isBackground: !0\n}), MaterialDynamicColors.surfaceContainerLowest = DynamicColor.fromPalette({\n  name: \"surface_container_lowest\",\n  palette: s => s.neutralPalette,\n  tone: s => s.isDark ? 4 : 100,\n  isBackground: !0\n}), MaterialDynamicColors.surfaceContainerLow = DynamicColor.fromPalette({\n  name: \"surface_container_low\",\n  palette: s => s.neutralPalette,\n  tone: s => s.isDark ? 10 : 96,\n  isBackground: !0\n}), MaterialDynamicColors.surfaceContainer = DynamicColor.fromPalette({\n  name: \"surface_container\",\n  palette: s => s.neutralPalette,\n  tone: s => s.isDark ? 12 : 94,\n  isBackground: !0\n}), MaterialDynamicColors.surfaceContainerHigh = DynamicColor.fromPalette({\n  name: \"surface_container_high\",\n  palette: s => s.neutralPalette,\n  tone: s => s.isDark ? 17 : 92,\n  isBackground: !0\n}), MaterialDynamicColors.surfaceContainerHighest = DynamicColor.fromPalette({\n  name: \"surface_container_highest\",\n  palette: s => s.neutralPalette,\n  tone: s => s.isDark ? 22 : 90,\n  isBackground: !0\n}), MaterialDynamicColors.onSurface = DynamicColor.fromPalette({\n  name: \"on_surface\",\n  palette: s => s.neutralPalette,\n  tone: s => s.isDark ? 90 : 10,\n  background: s => MaterialDynamicColors.highestSurface(s),\n  contrastCurve: new ContrastCurve(4.5, 7, 11, 21)\n}), MaterialDynamicColors.surfaceVariant = DynamicColor.fromPalette({\n  name: \"surface_variant\",\n  palette: s => s.neutralVariantPalette,\n  tone: s => s.isDark ? 30 : 90,\n  isBackground: !0\n}), MaterialDynamicColors.onSurfaceVariant = DynamicColor.fromPalette({\n  name: \"on_surface_variant\",\n  palette: s => s.neutralVariantPalette,\n  tone: s => s.isDark ? 80 : 30,\n  background: s => MaterialDynamicColors.highestSurface(s),\n  contrastCurve: new ContrastCurve(3, 4.5, 7, 11)\n}), MaterialDynamicColors.inverseSurface = DynamicColor.fromPalette({\n  name: \"inverse_surface\",\n  palette: s => s.neutralPalette,\n  tone: s => s.isDark ? 90 : 20\n}), MaterialDynamicColors.inverseOnSurface = DynamicColor.fromPalette({\n  name: \"inverse_on_surface\",\n  palette: s => s.neutralPalette,\n  tone: s => s.isDark ? 20 : 95,\n  background: s => MaterialDynamicColors.inverseSurface,\n  contrastCurve: new ContrastCurve(4.5, 7, 11, 21)\n}), MaterialDynamicColors.outline = DynamicColor.fromPalette({\n  name: \"outline\",\n  palette: s => s.neutralVariantPalette,\n  tone: s => s.isDark ? 60 : 50,\n  background: s => MaterialDynamicColors.highestSurface(s),\n  contrastCurve: new ContrastCurve(1.5, 3, 4.5, 7)\n}), MaterialDynamicColors.outlineVariant = DynamicColor.fromPalette({\n  name: \"outline_variant\",\n  palette: s => s.neutralVariantPalette,\n  tone: s => s.isDark ? 30 : 80,\n  background: s => MaterialDynamicColors.highestSurface(s),\n  contrastCurve: new ContrastCurve(1, 1, 3, 7)\n}), MaterialDynamicColors.shadow = DynamicColor.fromPalette({\n  name: \"shadow\",\n  palette: s => s.neutralPalette,\n  tone: s => 0\n}), MaterialDynamicColors.scrim = DynamicColor.fromPalette({\n  name: \"scrim\",\n  palette: s => s.neutralPalette,\n  tone: s => 0\n}), MaterialDynamicColors.surfaceTint = DynamicColor.fromPalette({\n  name: \"surface_tint\",\n  palette: s => s.primaryPalette,\n  tone: s => s.isDark ? 80 : 40,\n  isBackground: !0\n}), MaterialDynamicColors.primary = DynamicColor.fromPalette({\n  name: \"primary\",\n  palette: s => s.primaryPalette,\n  tone: s => isMonochrome(s) ? s.isDark ? 100 : 0 : s.isDark ? 80 : 40,\n  isBackground: !0,\n  background: s => MaterialDynamicColors.highestSurface(s),\n  contrastCurve: new ContrastCurve(3, 4.5, 7, 11),\n  toneDeltaPair: s => new ToneDeltaPair(MaterialDynamicColors.primaryContainer, MaterialDynamicColors.primary, 15, \"nearer\", !1)\n}), MaterialDynamicColors.onPrimary = DynamicColor.fromPalette({\n  name: \"on_primary\",\n  palette: s => s.primaryPalette,\n  tone: s => isMonochrome(s) ? s.isDark ? 10 : 90 : s.isDark ? 20 : 100,\n  background: s => MaterialDynamicColors.primary,\n  contrastCurve: new ContrastCurve(4.5, 7, 11, 21)\n}), MaterialDynamicColors.primaryContainer = DynamicColor.fromPalette({\n  name: \"primary_container\",\n  palette: s => s.primaryPalette,\n  tone: s => isFidelity(s) ? performAlbers(s.sourceColorHct, s) : isMonochrome(s) ? s.isDark ? 85 : 25 : s.isDark ? 30 : 90,\n  isBackground: !0,\n  background: s => MaterialDynamicColors.highestSurface(s),\n  contrastCurve: new ContrastCurve(1, 1, 3, 7),\n  toneDeltaPair: s => new ToneDeltaPair(MaterialDynamicColors.primaryContainer, MaterialDynamicColors.primary, 15, \"nearer\", !1)\n}), MaterialDynamicColors.onPrimaryContainer = DynamicColor.fromPalette({\n  name: \"on_primary_container\",\n  palette: s => s.primaryPalette,\n  tone: s => isFidelity(s) ? DynamicColor.foregroundTone(MaterialDynamicColors.primaryContainer.tone(s), 4.5) : isMonochrome(s) ? s.isDark ? 0 : 100 : s.isDark ? 90 : 10,\n  background: s => MaterialDynamicColors.primaryContainer,\n  contrastCurve: new ContrastCurve(4.5, 7, 11, 21)\n}), MaterialDynamicColors.inversePrimary = DynamicColor.fromPalette({\n  name: \"inverse_primary\",\n  palette: s => s.primaryPalette,\n  tone: s => s.isDark ? 40 : 80,\n  background: s => MaterialDynamicColors.inverseSurface,\n  contrastCurve: new ContrastCurve(3, 4.5, 7, 11)\n}), MaterialDynamicColors.secondary = DynamicColor.fromPalette({\n  name: \"secondary\",\n  palette: s => s.secondaryPalette,\n  tone: s => s.isDark ? 80 : 40,\n  isBackground: !0,\n  background: s => MaterialDynamicColors.highestSurface(s),\n  contrastCurve: new ContrastCurve(3, 4.5, 7, 11),\n  toneDeltaPair: s => new ToneDeltaPair(MaterialDynamicColors.secondaryContainer, MaterialDynamicColors.secondary, 15, \"nearer\", !1)\n}), MaterialDynamicColors.onSecondary = DynamicColor.fromPalette({\n  name: \"on_secondary\",\n  palette: s => s.secondaryPalette,\n  tone: s => isMonochrome(s) ? s.isDark ? 10 : 100 : s.isDark ? 20 : 100,\n  background: s => MaterialDynamicColors.secondary,\n  contrastCurve: new ContrastCurve(4.5, 7, 11, 21)\n}), MaterialDynamicColors.secondaryContainer = DynamicColor.fromPalette({\n  name: \"secondary_container\",\n  palette: s => s.secondaryPalette,\n  tone: s => {\n    const initialTone = s.isDark ? 30 : 90;\n    if (isMonochrome(s)) return s.isDark ? 30 : 85;\n    if (!isFidelity(s)) return initialTone;\n    let answer = findDesiredChromaByTone(s.secondaryPalette.hue, s.secondaryPalette.chroma, initialTone, !s.isDark);\n    return answer = performAlbers(s.secondaryPalette.getHct(answer), s), answer;\n  },\n  isBackground: !0,\n  background: s => MaterialDynamicColors.highestSurface(s),\n  contrastCurve: new ContrastCurve(1, 1, 3, 7),\n  toneDeltaPair: s => new ToneDeltaPair(MaterialDynamicColors.secondaryContainer, MaterialDynamicColors.secondary, 15, \"nearer\", !1)\n}), MaterialDynamicColors.onSecondaryContainer = DynamicColor.fromPalette({\n  name: \"on_secondary_container\",\n  palette: s => s.secondaryPalette,\n  tone: s => isFidelity(s) ? DynamicColor.foregroundTone(MaterialDynamicColors.secondaryContainer.tone(s), 4.5) : s.isDark ? 90 : 10,\n  background: s => MaterialDynamicColors.secondaryContainer,\n  contrastCurve: new ContrastCurve(4.5, 7, 11, 21)\n}), MaterialDynamicColors.tertiary = DynamicColor.fromPalette({\n  name: \"tertiary\",\n  palette: s => s.tertiaryPalette,\n  tone: s => isMonochrome(s) ? s.isDark ? 90 : 25 : s.isDark ? 80 : 40,\n  isBackground: !0,\n  background: s => MaterialDynamicColors.highestSurface(s),\n  contrastCurve: new ContrastCurve(3, 4.5, 7, 11),\n  toneDeltaPair: s => new ToneDeltaPair(MaterialDynamicColors.tertiaryContainer, MaterialDynamicColors.tertiary, 15, \"nearer\", !1)\n}), MaterialDynamicColors.onTertiary = DynamicColor.fromPalette({\n  name: \"on_tertiary\",\n  palette: s => s.tertiaryPalette,\n  tone: s => isMonochrome(s) ? s.isDark ? 10 : 90 : s.isDark ? 20 : 100,\n  background: s => MaterialDynamicColors.tertiary,\n  contrastCurve: new ContrastCurve(4.5, 7, 11, 21)\n}), MaterialDynamicColors.tertiaryContainer = DynamicColor.fromPalette({\n  name: \"tertiary_container\",\n  palette: s => s.tertiaryPalette,\n  tone: s => {\n    if (isMonochrome(s)) return s.isDark ? 60 : 49;\n    if (!isFidelity(s)) return s.isDark ? 30 : 90;\n    const albersTone = performAlbers(s.tertiaryPalette.getHct(s.sourceColorHct.tone), s),\n      proposedHct = s.tertiaryPalette.getHct(albersTone);\n    return DislikeAnalyzer.fixIfDisliked(proposedHct).tone;\n  },\n  isBackground: !0,\n  background: s => MaterialDynamicColors.highestSurface(s),\n  contrastCurve: new ContrastCurve(1, 1, 3, 7),\n  toneDeltaPair: s => new ToneDeltaPair(MaterialDynamicColors.tertiaryContainer, MaterialDynamicColors.tertiary, 15, \"nearer\", !1)\n}), MaterialDynamicColors.onTertiaryContainer = DynamicColor.fromPalette({\n  name: \"on_tertiary_container\",\n  palette: s => s.tertiaryPalette,\n  tone: s => isMonochrome(s) ? s.isDark ? 0 : 100 : isFidelity(s) ? DynamicColor.foregroundTone(MaterialDynamicColors.tertiaryContainer.tone(s), 4.5) : s.isDark ? 90 : 10,\n  background: s => MaterialDynamicColors.tertiaryContainer,\n  contrastCurve: new ContrastCurve(4.5, 7, 11, 21)\n}), MaterialDynamicColors.error = DynamicColor.fromPalette({\n  name: \"error\",\n  palette: s => s.errorPalette,\n  tone: s => s.isDark ? 80 : 40,\n  isBackground: !0,\n  background: s => MaterialDynamicColors.highestSurface(s),\n  contrastCurve: new ContrastCurve(3, 4.5, 7, 11),\n  toneDeltaPair: s => new ToneDeltaPair(MaterialDynamicColors.errorContainer, MaterialDynamicColors.error, 15, \"nearer\", !1)\n}), MaterialDynamicColors.onError = DynamicColor.fromPalette({\n  name: \"on_error\",\n  palette: s => s.errorPalette,\n  tone: s => s.isDark ? 20 : 100,\n  background: s => MaterialDynamicColors.error,\n  contrastCurve: new ContrastCurve(4.5, 7, 11, 21)\n}), MaterialDynamicColors.errorContainer = DynamicColor.fromPalette({\n  name: \"error_container\",\n  palette: s => s.errorPalette,\n  tone: s => s.isDark ? 30 : 90,\n  isBackground: !0,\n  background: s => MaterialDynamicColors.highestSurface(s),\n  contrastCurve: new ContrastCurve(1, 1, 3, 7),\n  toneDeltaPair: s => new ToneDeltaPair(MaterialDynamicColors.errorContainer, MaterialDynamicColors.error, 15, \"nearer\", !1)\n}), MaterialDynamicColors.onErrorContainer = DynamicColor.fromPalette({\n  name: \"on_error_container\",\n  palette: s => s.errorPalette,\n  tone: s => s.isDark ? 90 : 10,\n  background: s => MaterialDynamicColors.errorContainer,\n  contrastCurve: new ContrastCurve(4.5, 7, 11, 21)\n}), MaterialDynamicColors.primaryFixed = DynamicColor.fromPalette({\n  name: \"primary_fixed\",\n  palette: s => s.primaryPalette,\n  tone: s => isMonochrome(s) ? 40 : 90,\n  isBackground: !0,\n  background: s => MaterialDynamicColors.highestSurface(s),\n  contrastCurve: new ContrastCurve(1, 1, 3, 7),\n  toneDeltaPair: s => new ToneDeltaPair(MaterialDynamicColors.primaryFixed, MaterialDynamicColors.primaryFixedDim, 10, \"lighter\", !0)\n}), MaterialDynamicColors.primaryFixedDim = DynamicColor.fromPalette({\n  name: \"primary_fixed_dim\",\n  palette: s => s.primaryPalette,\n  tone: s => isMonochrome(s) ? 30 : 80,\n  isBackground: !0,\n  background: s => MaterialDynamicColors.highestSurface(s),\n  contrastCurve: new ContrastCurve(1, 1, 3, 7),\n  toneDeltaPair: s => new ToneDeltaPair(MaterialDynamicColors.primaryFixed, MaterialDynamicColors.primaryFixedDim, 10, \"lighter\", !0)\n}), MaterialDynamicColors.onPrimaryFixed = DynamicColor.fromPalette({\n  name: \"on_primary_fixed\",\n  palette: s => s.primaryPalette,\n  tone: s => isMonochrome(s) ? 100 : 10,\n  background: s => MaterialDynamicColors.primaryFixedDim,\n  secondBackground: s => MaterialDynamicColors.primaryFixed,\n  contrastCurve: new ContrastCurve(4.5, 7, 11, 21)\n}), MaterialDynamicColors.onPrimaryFixedVariant = DynamicColor.fromPalette({\n  name: \"on_primary_fixed_variant\",\n  palette: s => s.primaryPalette,\n  tone: s => isMonochrome(s) ? 90 : 30,\n  background: s => MaterialDynamicColors.primaryFixedDim,\n  secondBackground: s => MaterialDynamicColors.primaryFixed,\n  contrastCurve: new ContrastCurve(3, 4.5, 7, 11)\n}), MaterialDynamicColors.secondaryFixed = DynamicColor.fromPalette({\n  name: \"secondary_fixed\",\n  palette: s => s.secondaryPalette,\n  tone: s => isMonochrome(s) ? 80 : 90,\n  isBackground: !0,\n  background: s => MaterialDynamicColors.highestSurface(s),\n  contrastCurve: new ContrastCurve(1, 1, 3, 7),\n  toneDeltaPair: s => new ToneDeltaPair(MaterialDynamicColors.secondaryFixed, MaterialDynamicColors.secondaryFixedDim, 10, \"lighter\", !0)\n}), MaterialDynamicColors.secondaryFixedDim = DynamicColor.fromPalette({\n  name: \"secondary_fixed_dim\",\n  palette: s => s.secondaryPalette,\n  tone: s => isMonochrome(s) ? 70 : 80,\n  isBackground: !0,\n  background: s => MaterialDynamicColors.highestSurface(s),\n  contrastCurve: new ContrastCurve(1, 1, 3, 7),\n  toneDeltaPair: s => new ToneDeltaPair(MaterialDynamicColors.secondaryFixed, MaterialDynamicColors.secondaryFixedDim, 10, \"lighter\", !0)\n}), MaterialDynamicColors.onSecondaryFixed = DynamicColor.fromPalette({\n  name: \"on_secondary_fixed\",\n  palette: s => s.secondaryPalette,\n  tone: s => 10,\n  background: s => MaterialDynamicColors.secondaryFixedDim,\n  secondBackground: s => MaterialDynamicColors.secondaryFixed,\n  contrastCurve: new ContrastCurve(4.5, 7, 11, 21)\n}), MaterialDynamicColors.onSecondaryFixedVariant = DynamicColor.fromPalette({\n  name: \"on_secondary_fixed_variant\",\n  palette: s => s.secondaryPalette,\n  tone: s => isMonochrome(s) ? 25 : 30,\n  background: s => MaterialDynamicColors.secondaryFixedDim,\n  secondBackground: s => MaterialDynamicColors.secondaryFixed,\n  contrastCurve: new ContrastCurve(3, 4.5, 7, 11)\n}), MaterialDynamicColors.tertiaryFixed = DynamicColor.fromPalette({\n  name: \"tertiary_fixed\",\n  palette: s => s.tertiaryPalette,\n  tone: s => isMonochrome(s) ? 40 : 90,\n  isBackground: !0,\n  background: s => MaterialDynamicColors.highestSurface(s),\n  contrastCurve: new ContrastCurve(1, 1, 3, 7),\n  toneDeltaPair: s => new ToneDeltaPair(MaterialDynamicColors.tertiaryFixed, MaterialDynamicColors.tertiaryFixedDim, 10, \"lighter\", !0)\n}), MaterialDynamicColors.tertiaryFixedDim = DynamicColor.fromPalette({\n  name: \"tertiary_fixed_dim\",\n  palette: s => s.tertiaryPalette,\n  tone: s => isMonochrome(s) ? 30 : 80,\n  isBackground: !0,\n  background: s => MaterialDynamicColors.highestSurface(s),\n  contrastCurve: new ContrastCurve(1, 1, 3, 7),\n  toneDeltaPair: s => new ToneDeltaPair(MaterialDynamicColors.tertiaryFixed, MaterialDynamicColors.tertiaryFixedDim, 10, \"lighter\", !0)\n}), MaterialDynamicColors.onTertiaryFixed = DynamicColor.fromPalette({\n  name: \"on_tertiary_fixed\",\n  palette: s => s.tertiaryPalette,\n  tone: s => isMonochrome(s) ? 100 : 10,\n  background: s => MaterialDynamicColors.tertiaryFixedDim,\n  secondBackground: s => MaterialDynamicColors.tertiaryFixed,\n  contrastCurve: new ContrastCurve(4.5, 7, 11, 21)\n}), MaterialDynamicColors.onTertiaryFixedVariant = DynamicColor.fromPalette({\n  name: \"on_tertiary_fixed_variant\",\n  palette: s => s.tertiaryPalette,\n  tone: s => isMonochrome(s) ? 90 : 30,\n  background: s => MaterialDynamicColors.tertiaryFixedDim,\n  secondBackground: s => MaterialDynamicColors.tertiaryFixed,\n  contrastCurve: new ContrastCurve(3, 4.5, 7, 11)\n});\nclass TonalPalette {\n  static fromInt(argb) {\n    const hct = Hct.fromInt(argb);\n    return TonalPalette.fromHct(hct);\n  }\n  static fromHct(hct) {\n    return new TonalPalette(hct.hue, hct.chroma, hct);\n  }\n  static fromHueAndChroma(hue, chroma) {\n    return new TonalPalette(hue, chroma, TonalPalette.createKeyColor(hue, chroma));\n  }\n  constructor(hue, chroma, keyColor) {\n    this.hue = hue, this.chroma = chroma, this.keyColor = keyColor, this.cache = new Map();\n  }\n  static createKeyColor(hue, chroma) {\n    let smallestDeltaHct = Hct.from(hue, chroma, 50),\n      smallestDelta = Math.abs(smallestDeltaHct.chroma - chroma);\n    for (let delta = 1; delta < 50; delta += 1) {\n      if (Math.round(chroma) === Math.round(smallestDeltaHct.chroma)) return smallestDeltaHct;\n      const hctAdd = Hct.from(hue, chroma, 50 + delta),\n        hctAddDelta = Math.abs(hctAdd.chroma - chroma);\n      hctAddDelta < smallestDelta && (smallestDelta = hctAddDelta, smallestDeltaHct = hctAdd);\n      const hctSubtract = Hct.from(hue, chroma, 50 - delta),\n        hctSubtractDelta = Math.abs(hctSubtract.chroma - chroma);\n      hctSubtractDelta < smallestDelta && (smallestDelta = hctSubtractDelta, smallestDeltaHct = hctSubtract);\n    }\n    return smallestDeltaHct;\n  }\n  tone(tone) {\n    let argb = this.cache.get(tone);\n    return void 0 === argb && (argb = Hct.from(this.hue, this.chroma, tone).toInt(), this.cache.set(tone, argb)), argb;\n  }\n  getHct(tone) {\n    return Hct.fromInt(this.tone(tone));\n  }\n}\nclass CorePalette {\n  static of(argb) {\n    return new CorePalette(argb, !1);\n  }\n  static contentOf(argb) {\n    return new CorePalette(argb, !0);\n  }\n  static fromColors(colors) {\n    return CorePalette.createPaletteFromColors(!1, colors);\n  }\n  static contentFromColors(colors) {\n    return CorePalette.createPaletteFromColors(!0, colors);\n  }\n  static createPaletteFromColors(content, colors) {\n    const palette = new CorePalette(colors.primary, content);\n    if (colors.secondary) {\n      const p = new CorePalette(colors.secondary, content);\n      palette.a2 = p.a1;\n    }\n    if (colors.tertiary) {\n      const p = new CorePalette(colors.tertiary, content);\n      palette.a3 = p.a1;\n    }\n    if (colors.error) {\n      const p = new CorePalette(colors.error, content);\n      palette.error = p.a1;\n    }\n    if (colors.neutral) {\n      const p = new CorePalette(colors.neutral, content);\n      palette.n1 = p.n1;\n    }\n    if (colors.neutralVariant) {\n      const p = new CorePalette(colors.neutralVariant, content);\n      palette.n2 = p.n2;\n    }\n    return palette;\n  }\n  constructor(argb, isContent) {\n    const hct = Hct.fromInt(argb),\n      hue = hct.hue,\n      chroma = hct.chroma;\n    isContent ? (this.a1 = TonalPalette.fromHueAndChroma(hue, chroma), this.a2 = TonalPalette.fromHueAndChroma(hue, chroma / 3), this.a3 = TonalPalette.fromHueAndChroma(hue + 60, chroma / 2), this.n1 = TonalPalette.fromHueAndChroma(hue, Math.min(chroma / 12, 4)), this.n2 = TonalPalette.fromHueAndChroma(hue, Math.min(chroma / 6, 8))) : (this.a1 = TonalPalette.fromHueAndChroma(hue, Math.max(48, chroma)), this.a2 = TonalPalette.fromHueAndChroma(hue, 16), this.a3 = TonalPalette.fromHueAndChroma(hue + 60, 24), this.n1 = TonalPalette.fromHueAndChroma(hue, 4), this.n2 = TonalPalette.fromHueAndChroma(hue, 8)), this.error = TonalPalette.fromHueAndChroma(25, 84);\n  }\n}\nclass Scheme {\n  get primary() {\n    return this.props.primary;\n  }\n  get onPrimary() {\n    return this.props.onPrimary;\n  }\n  get primaryContainer() {\n    return this.props.primaryContainer;\n  }\n  get onPrimaryContainer() {\n    return this.props.onPrimaryContainer;\n  }\n  get secondary() {\n    return this.props.secondary;\n  }\n  get onSecondary() {\n    return this.props.onSecondary;\n  }\n  get secondaryContainer() {\n    return this.props.secondaryContainer;\n  }\n  get onSecondaryContainer() {\n    return this.props.onSecondaryContainer;\n  }\n  get tertiary() {\n    return this.props.tertiary;\n  }\n  get onTertiary() {\n    return this.props.onTertiary;\n  }\n  get tertiaryContainer() {\n    return this.props.tertiaryContainer;\n  }\n  get onTertiaryContainer() {\n    return this.props.onTertiaryContainer;\n  }\n  get error() {\n    return this.props.error;\n  }\n  get onError() {\n    return this.props.onError;\n  }\n  get errorContainer() {\n    return this.props.errorContainer;\n  }\n  get onErrorContainer() {\n    return this.props.onErrorContainer;\n  }\n  get background() {\n    return this.props.background;\n  }\n  get onBackground() {\n    return this.props.onBackground;\n  }\n  get surface() {\n    return this.props.surface;\n  }\n  get onSurface() {\n    return this.props.onSurface;\n  }\n  get surfaceVariant() {\n    return this.props.surfaceVariant;\n  }\n  get onSurfaceVariant() {\n    return this.props.onSurfaceVariant;\n  }\n  get outline() {\n    return this.props.outline;\n  }\n  get outlineVariant() {\n    return this.props.outlineVariant;\n  }\n  get shadow() {\n    return this.props.shadow;\n  }\n  get scrim() {\n    return this.props.scrim;\n  }\n  get inverseSurface() {\n    return this.props.inverseSurface;\n  }\n  get inverseOnSurface() {\n    return this.props.inverseOnSurface;\n  }\n  get inversePrimary() {\n    return this.props.inversePrimary;\n  }\n  static light(argb) {\n    return Scheme.lightFromCorePalette(CorePalette.of(argb));\n  }\n  static dark(argb) {\n    return Scheme.darkFromCorePalette(CorePalette.of(argb));\n  }\n  static lightContent(argb) {\n    return Scheme.lightFromCorePalette(CorePalette.contentOf(argb));\n  }\n  static darkContent(argb) {\n    return Scheme.darkFromCorePalette(CorePalette.contentOf(argb));\n  }\n  static lightFromCorePalette(core) {\n    return new Scheme({\n      primary: core.a1.tone(40),\n      onPrimary: core.a1.tone(100),\n      primaryContainer: core.a1.tone(90),\n      onPrimaryContainer: core.a1.tone(10),\n      secondary: core.a2.tone(40),\n      onSecondary: core.a2.tone(100),\n      secondaryContainer: core.a2.tone(90),\n      onSecondaryContainer: core.a2.tone(10),\n      tertiary: core.a3.tone(40),\n      onTertiary: core.a3.tone(100),\n      tertiaryContainer: core.a3.tone(90),\n      onTertiaryContainer: core.a3.tone(10),\n      error: core.error.tone(40),\n      onError: core.error.tone(100),\n      errorContainer: core.error.tone(90),\n      onErrorContainer: core.error.tone(10),\n      background: core.n1.tone(99),\n      onBackground: core.n1.tone(10),\n      surface: core.n1.tone(99),\n      onSurface: core.n1.tone(10),\n      surfaceVariant: core.n2.tone(90),\n      onSurfaceVariant: core.n2.tone(30),\n      outline: core.n2.tone(50),\n      outlineVariant: core.n2.tone(80),\n      shadow: core.n1.tone(0),\n      scrim: core.n1.tone(0),\n      inverseSurface: core.n1.tone(20),\n      inverseOnSurface: core.n1.tone(95),\n      inversePrimary: core.a1.tone(80)\n    });\n  }\n  static darkFromCorePalette(core) {\n    return new Scheme({\n      primary: core.a1.tone(80),\n      onPrimary: core.a1.tone(20),\n      primaryContainer: core.a1.tone(30),\n      onPrimaryContainer: core.a1.tone(90),\n      secondary: core.a2.tone(80),\n      onSecondary: core.a2.tone(20),\n      secondaryContainer: core.a2.tone(30),\n      onSecondaryContainer: core.a2.tone(90),\n      tertiary: core.a3.tone(80),\n      onTertiary: core.a3.tone(20),\n      tertiaryContainer: core.a3.tone(30),\n      onTertiaryContainer: core.a3.tone(90),\n      error: core.error.tone(80),\n      onError: core.error.tone(20),\n      errorContainer: core.error.tone(30),\n      onErrorContainer: core.error.tone(80),\n      background: core.n1.tone(10),\n      onBackground: core.n1.tone(90),\n      surface: core.n1.tone(10),\n      onSurface: core.n1.tone(90),\n      surfaceVariant: core.n2.tone(30),\n      onSurfaceVariant: core.n2.tone(80),\n      outline: core.n2.tone(60),\n      outlineVariant: core.n2.tone(30),\n      shadow: core.n1.tone(0),\n      scrim: core.n1.tone(0),\n      inverseSurface: core.n1.tone(90),\n      inverseOnSurface: core.n1.tone(20),\n      inversePrimary: core.a1.tone(40)\n    });\n  }\n  constructor(props) {\n    this.props = props;\n  }\n  toJSON() {\n    return {\n      ...this.props\n    };\n  }\n}\nfunction hexFromArgb(argb) {\n  const r = redFromArgb(argb),\n    g = greenFromArgb(argb),\n    b = blueFromArgb(argb),\n    outParts = [r.toString(16), g.toString(16), b.toString(16)];\n  for (const [i, part] of outParts.entries()) 1 === part.length && (outParts[i] = \"0\" + part);\n  return \"#\" + outParts.join(\"\");\n}\nfunction argbFromHex(hex) {\n  const isThree = 3 === (hex = hex.replace(\"#\", \"\")).length,\n    isSix = 6 === hex.length,\n    isEight = 8 === hex.length;\n  if (!isThree && !isSix && !isEight) throw new Error(\"unexpected hex \" + hex);\n  let r = 0,\n    g = 0,\n    b = 0;\n  return isThree ? (r = parseIntHex(hex.slice(0, 1).repeat(2)), g = parseIntHex(hex.slice(1, 2).repeat(2)), b = parseIntHex(hex.slice(2, 3).repeat(2))) : isSix ? (r = parseIntHex(hex.slice(0, 2)), g = parseIntHex(hex.slice(2, 4)), b = parseIntHex(hex.slice(4, 6))) : isEight && (r = parseIntHex(hex.slice(2, 4)), g = parseIntHex(hex.slice(4, 6)), b = parseIntHex(hex.slice(6, 8))), (255 << 24 | (255 & r) << 16 | (255 & g) << 8 | 255 & b) >>> 0;\n}\nfunction parseIntHex(value) {\n  return parseInt(value, 16);\n}\nfunction themeFromSourceColor(source, customColors) {\n  if (customColors === void 0) {\n    customColors = [];\n  }\n  const palette = CorePalette.of(source);\n  return {\n    source: source,\n    schemes: {\n      light: Scheme.light(source),\n      dark: Scheme.dark(source)\n    },\n    palettes: {\n      primary: palette.a1,\n      secondary: palette.a2,\n      tertiary: palette.a3,\n      neutral: palette.n1,\n      neutralVariant: palette.n2,\n      error: palette.error\n    },\n    customColors: customColors.map(c => customColor(source, c))\n  };\n}\nfunction customColor(source, color) {\n  let value = color.value;\n  const from = value,\n    to = source;\n  color.blend && (value = Blend.harmonize(from, to));\n  const tones = CorePalette.of(value).a1;\n  return {\n    color: color,\n    value: value,\n    light: {\n      color: tones.tone(40),\n      onColor: tones.tone(100),\n      colorContainer: tones.tone(90),\n      onColorContainer: tones.tone(10)\n    },\n    dark: {\n      color: tones.tone(80),\n      onColor: tones.tone(20),\n      colorContainer: tones.tone(30),\n      onColorContainer: tones.tone(90)\n    }\n  };\n}\nexport { argbFromHex, hexFromArgb, themeFromSourceColor };", "// eslint-disable-next-line\nimport { argbFromHex, hexFromArgb, themeFromSourceColor } from './material-color-utils.js';\n\n/* eslint-disable */\n// prettier-ignore\nfunction toRGBA(d) {\n  const r = Math.round;\n  const l = d.length;\n  const rgba = {};\n  if (d.slice(0, 3).toLowerCase() === 'rgb') {\n    d = d.replace(' ', '').split(',');\n    rgba[0] = parseInt(d[0].slice(d[3].toLowerCase() === 'a' ? 5 : 4), 10);\n    rgba[1] = parseInt(d[1], 10);\n    rgba[2] = parseInt(d[2], 10);\n    rgba[3] = d[3] ? parseFloat(d[3]) : -1;\n  } else {\n    if (l < 6) d = parseInt(String(d[1]) + d[1] + d[2] + d[2] + d[3] + d[3] + (l > 4 ? String(d[4]) + d[4] : ''), 16);else d = parseInt(d.slice(1), 16);\n    rgba[0] = d >> 16 & 255;\n    rgba[1] = d >> 8 & 255;\n    rgba[2] = d & 255;\n    rgba[3] = l === 9 || l === 5 ? r((d >> 24 & 255) / 255 * 10000) / 10000 : -1;\n  }\n  return rgba;\n}\n\n// prettier-ignore\nfunction blend(from, to, p) {\n  if (p === void 0) {\n    p = 0.5;\n  }\n  const r = Math.round;\n  from = from.trim();\n  to = to.trim();\n  const b = p < 0;\n  p = b ? p * -1 : p;\n  const f = toRGBA(from);\n  const t = toRGBA(to);\n  if (to[0] === 'r') {\n    return 'rgb' + (to[3] === 'a' ? 'a(' : '(') + r((t[0] - f[0]) * p + f[0]) + ',' + r((t[1] - f[1]) * p + f[1]) + ',' + r((t[2] - f[2]) * p + f[2]) + (f[3] < 0 && t[3] < 0 ? '' : ',' + (f[3] > -1 && t[3] > -1 ? r(((t[3] - f[3]) * p + f[3]) * 10000) / 10000 : t[3] < 0 ? f[3] : t[3])) + ')';\n  }\n  return '#' + (0x100000000 + (f[3] > -1 && t[3] > -1 ? r(((t[3] - f[3]) * p + f[3]) * 255) : t[3] > -1 ? r(t[3] * 255) : f[3] > -1 ? r(f[3] * 255) : 255) * 0x1000000 + r((t[0] - f[0]) * p + f[0]) * 0x10000 + r((t[1] - f[1]) * p + f[1]) * 0x100 + r((t[2] - f[2]) * p + f[2])).toString(16).slice(f[3] > -1 || t[3] > -1 ? 1 : 3);\n}\n/* eslint-enable */\n\nexport const materialColors = function (hexColor) {\n  if (hexColor === void 0) {\n    hexColor = '';\n  }\n  const theme = themeFromSourceColor(argbFromHex(`#${hexColor.replace('#', '')}`));\n  [0.05, 0.08, 0.11, 0.12, 0.14].forEach((amount, index) => {\n    theme.schemes.light.props[`surface${index + 1}`] = argbFromHex(blend(hexFromArgb(theme.schemes.light.props.surface), hexFromArgb(theme.schemes.light.props.primary), amount));\n    theme.schemes.dark.props[`surface${index + 1}`] = argbFromHex(blend(hexFromArgb(theme.schemes.dark.props.surface), hexFromArgb(theme.schemes.dark.props.primary), amount));\n  });\n  const name = n => {\n    return n.split('').map(char => char.toUpperCase() === char && char !== '-' && char !== '7' ? `-${char.toLowerCase()}` : char).join('');\n  };\n  const shouldSkip = prop => {\n    const skip = ['tertiary', 'shadow', 'scrim', 'error', 'background'];\n    return skip.filter(v => prop.toLowerCase().includes(v)).length > 0;\n  };\n  const light = {};\n  const dark = {};\n  Object.keys(theme.schemes.light.props).forEach(prop => {\n    if (shouldSkip(prop)) return;\n    light[name(`--f7-md-${prop}`)] = hexFromArgb(theme.schemes.light.props[prop]);\n  });\n  Object.keys(theme.schemes.dark.props).forEach(prop => {\n    if (shouldSkip(prop)) return;\n    dark[name(`--f7-md-${prop}`)] = hexFromArgb(theme.schemes.dark.props[prop]);\n  });\n  return {\n    light,\n    dark\n  };\n};", "import { getWindow, getDocument } from 'ssr-window';\nlet support;\nfunction calcSupport() {\n  const window = getWindow();\n  const document = getDocument();\n  return {\n    touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch),\n    pointerEvents: !!window.PointerEvent && 'maxTouchPoints' in window.navigator && window.navigator.maxTouchPoints >= 0,\n    passiveListener: function checkPassiveListener() {\n      let supportsPassive = false;\n      try {\n        const opts = Object.defineProperty({}, 'passive', {\n          // eslint-disable-next-line\n          get() {\n            supportsPassive = true;\n          }\n        });\n        window.addEventListener('testPassiveListener', null, opts);\n      } catch (e) {\n        // No support\n      }\n      return supportsPassive;\n    }(),\n    intersectionObserver: function checkObserver() {\n      return 'IntersectionObserver' in window;\n    }()\n  };\n}\nfunction getSupport() {\n  if (!support) {\n    support = calcSupport();\n  }\n  return support;\n}\nexport { getSupport };", "import { getWindow, getDocument } from 'ssr-window';\nimport { getSupport } from './get-support.js';\nlet deviceCalculated;\nfunction calcDevice(_temp) {\n  let {\n    userAgent\n  } = _temp === void 0 ? {} : _temp;\n  const support = getSupport();\n  const window = getWindow();\n  const platform = window.navigator.platform;\n  const ua = userAgent || window.navigator.userAgent;\n  const device = {\n    ios: false,\n    android: false,\n    androidChrome: false,\n    desktop: false,\n    iphone: false,\n    ipod: false,\n    ipad: false,\n    edge: false,\n    ie: false,\n    firefox: false,\n    macos: false,\n    windows: false,\n    cordova: !!window.cordova,\n    electron: false,\n    capacitor: !!window.Capacitor,\n    nwjs: false\n  };\n  const screenWidth = window.screen.width;\n  const screenHeight = window.screen.height;\n  const android = ua.match(/(Android);?[\\s\\/]+([\\d.]+)?/); // eslint-disable-line\n  let ipad = ua.match(/(iPad).*OS\\s([\\d_]+)/);\n  const ipod = ua.match(/(iPod)(.*OS\\s([\\d_]+))?/);\n  const iphone = !ipad && ua.match(/(iPhone\\sOS|iOS|iPhone;\\sCPU\\sOS)\\s([\\d_]+)/);\n  const ie = ua.indexOf('MSIE ') >= 0 || ua.indexOf('Trident/') >= 0;\n  const edge = ua.indexOf('Edge/') >= 0;\n  const firefox = ua.indexOf('Gecko/') >= 0 && ua.indexOf('Firefox/') >= 0;\n  const windows = platform === 'Win32';\n  const electron = ua.toLowerCase().indexOf('electron') >= 0;\n  const nwjs = typeof nw !== 'undefined' && typeof process !== 'undefined' && typeof process.versions !== 'undefined' && typeof process.versions.nw !== 'undefined';\n  let macos = platform === 'MacIntel';\n\n  // iPadOs 13 fix\n  const iPadScreens = ['1024x1366', '1366x1024', '834x1194', '1194x834', '834x1112', '1112x834', '768x1024', '1024x768', '820x1180', '1180x820', '810x1080', '1080x810'];\n  if (!ipad && macos && support.touch && iPadScreens.indexOf(`${screenWidth}x${screenHeight}`) >= 0) {\n    ipad = ua.match(/(Version)\\/([\\d.]+)/);\n    if (!ipad) ipad = [0, 1, '13_0_0'];\n    macos = false;\n  }\n  device.ie = ie;\n  device.edge = edge;\n  device.firefox = firefox;\n\n  // Android\n  if (android) {\n    device.os = 'android';\n    device.osVersion = android[2];\n    device.android = true;\n    device.androidChrome = ua.toLowerCase().indexOf('chrome') >= 0;\n  }\n  if (ipad || iphone || ipod) {\n    device.os = 'ios';\n    device.ios = true;\n  }\n  // iOS\n  if (iphone && !ipod) {\n    device.osVersion = iphone[2].replace(/_/g, '.');\n    device.iphone = true;\n  }\n  if (ipad) {\n    device.osVersion = ipad[2].replace(/_/g, '.');\n    device.ipad = true;\n  }\n  if (ipod) {\n    device.osVersion = ipod[3] ? ipod[3].replace(/_/g, '.') : null;\n    device.ipod = true;\n  }\n  // iOS 8+ changed UA\n  if (device.ios && device.osVersion && ua.indexOf('Version/') >= 0) {\n    if (device.osVersion.split('.')[0] === '10') {\n      device.osVersion = ua.toLowerCase().split('version/')[1].split(' ')[0];\n    }\n  }\n\n  // Webview\n  device.webView = !!((iphone || ipad || ipod) && (ua.match(/.*AppleWebKit(?!.*Safari)/i) || window.navigator.standalone)) || window.matchMedia && window.matchMedia('(display-mode: standalone)').matches;\n  device.webview = device.webView;\n  device.standalone = device.webView;\n\n  // Desktop\n  device.desktop = !(device.ios || device.android) || electron || nwjs;\n  if (device.desktop) {\n    device.electron = electron;\n    device.nwjs = nwjs;\n    device.macos = macos;\n    device.windows = windows;\n    if (device.macos) {\n      device.os = 'macos';\n    }\n    if (device.windows) {\n      device.os = 'windows';\n    }\n  }\n\n  // Pixel Ratio\n  device.pixelRatio = window.devicePixelRatio || 1;\n\n  // Color Scheme\n  const DARK = '(prefers-color-scheme: dark)';\n  const LIGHT = '(prefers-color-scheme: light)';\n  device.prefersColorScheme = function prefersColorTheme() {\n    let theme;\n    if (window.matchMedia && window.matchMedia(LIGHT).matches) {\n      theme = 'light';\n    }\n    if (window.matchMedia && window.matchMedia(DARK).matches) {\n      theme = 'dark';\n    }\n    return theme;\n  };\n\n  // Export object\n  return device;\n}\nconst IS_BROWSER = (() => {\n  const document = getDocument();\n  try {\n    // eslint-disable-next-line no-restricted-globals\n    return Boolean(document && document.body && document.body.getBoundingClientRect && document.body.getBoundingClientRect().width > 0);\n  } catch (e) {\n    return false;\n  }\n})();\nfunction getDevice(overrides, reset) {\n  if (overrides === void 0) {\n    overrides = {};\n  }\n  if (reset === void 0) {\n    reset = IS_BROWSER;\n  }\n  if (!deviceCalculated || reset) {\n    deviceCalculated = calcDevice(overrides);\n  }\n  return deviceCalculated;\n}\nexport { getDevice };", "class EventsClass {\n  constructor(parents) {\n    if (parents === void 0) {\n      parents = [];\n    }\n    const self = this;\n    self.eventsParents = parents;\n    self.eventsListeners = {};\n  }\n  on(events, handler, priority) {\n    const self = this;\n    if (typeof handler !== 'function') return self;\n    const method = priority ? 'unshift' : 'push';\n    events.split(' ').forEach(event => {\n      if (!self.eventsListeners[event]) self.eventsListeners[event] = [];\n      self.eventsListeners[event][method](handler);\n    });\n    return self;\n  }\n  once(events, handler, priority) {\n    const self = this;\n    if (typeof handler !== 'function') return self;\n    function onceHandler() {\n      self.off(events, onceHandler);\n      if (onceHandler.f7proxy) {\n        delete onceHandler.f7proxy;\n      }\n      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n        args[_key] = arguments[_key];\n      }\n      handler.apply(self, args);\n    }\n    onceHandler.f7proxy = handler;\n    return self.on(events, onceHandler, priority);\n  }\n  off(events, handler) {\n    const self = this;\n    if (!self.eventsListeners) return self;\n    events.split(' ').forEach(event => {\n      if (typeof handler === 'undefined') {\n        self.eventsListeners[event] = [];\n      } else if (self.eventsListeners[event]) {\n        self.eventsListeners[event].forEach((eventHandler, index) => {\n          if (eventHandler === handler || eventHandler.f7proxy && eventHandler.f7proxy === handler) {\n            self.eventsListeners[event].splice(index, 1);\n          }\n        });\n      }\n    });\n    return self;\n  }\n  emit() {\n    const self = this;\n    if (!self.eventsListeners) return self;\n    let events;\n    let data;\n    let context;\n    let eventsParents;\n    for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n      args[_key2] = arguments[_key2];\n    }\n    if (typeof args[0] === 'string' || Array.isArray(args[0])) {\n      events = args[0];\n      data = args.slice(1, args.length);\n      context = self;\n      eventsParents = self.eventsParents;\n    } else {\n      events = args[0].events;\n      data = args[0].data;\n      context = args[0].context || self;\n      eventsParents = args[0].local ? [] : args[0].parents || self.eventsParents;\n    }\n    const eventsArray = Array.isArray(events) ? events : events.split(' ');\n    const localEvents = eventsArray.map(eventName => eventName.replace('local::', ''));\n    const parentEvents = eventsArray.filter(eventName => eventName.indexOf('local::') < 0);\n    localEvents.forEach(event => {\n      if (self.eventsListeners && self.eventsListeners[event]) {\n        const handlers = [];\n        self.eventsListeners[event].forEach(eventHandler => {\n          handlers.push(eventHandler);\n        });\n        handlers.forEach(eventHandler => {\n          eventHandler.apply(context, data);\n        });\n      }\n    });\n    if (eventsParents && eventsParents.length > 0) {\n      eventsParents.forEach(eventsParent => {\n        eventsParent.emit(parentEvents, ...data);\n      });\n    }\n    return self;\n  }\n}\nexport default EventsClass;", "import { extend, now } from './utils.js';\nimport EventsClass from './events-class.js';\nclass Framework7Class extends EventsClass {\n  constructor(params, parents) {\n    if (params === void 0) {\n      params = {};\n    }\n    if (parents === void 0) {\n      parents = [];\n    }\n    super(parents);\n    const self = this;\n    self.params = params;\n    if (self.params && self.params.on) {\n      Object.keys(self.params.on).forEach(eventName => {\n        self.on(eventName, self.params.on[eventName]);\n      });\n    }\n  }\n\n  // eslint-disable-next-line\n  useModuleParams(module, instanceParams) {\n    if (module.params) {\n      const originalParams = {};\n      Object.keys(module.params).forEach(paramKey => {\n        if (typeof instanceParams[paramKey] === 'undefined') return;\n        originalParams[paramKey] = extend({}, instanceParams[paramKey]);\n      });\n      extend(instanceParams, module.params);\n      Object.keys(originalParams).forEach(paramKey => {\n        extend(instanceParams[paramKey], originalParams[paramKey]);\n      });\n    }\n  }\n  useModulesParams(instanceParams) {\n    const instance = this;\n    if (!instance.modules) return;\n    Object.keys(instance.modules).forEach(moduleName => {\n      const module = instance.modules[moduleName];\n      // Extend params\n      if (module.params) {\n        extend(instanceParams, module.params);\n      }\n    });\n  }\n  useModule(moduleName, moduleParams) {\n    if (moduleName === void 0) {\n      moduleName = '';\n    }\n    if (moduleParams === void 0) {\n      moduleParams = {};\n    }\n    const instance = this;\n    if (!instance.modules) return;\n    const module = typeof moduleName === 'string' ? instance.modules[moduleName] : moduleName;\n    if (!module) return;\n\n    // Extend instance methods and props\n    if (module.instance) {\n      Object.keys(module.instance).forEach(modulePropName => {\n        const moduleProp = module.instance[modulePropName];\n        if (typeof moduleProp === 'function') {\n          instance[modulePropName] = moduleProp.bind(instance);\n        } else {\n          instance[modulePropName] = moduleProp;\n        }\n      });\n    }\n    // Add event listeners\n    if (module.on && instance.on) {\n      Object.keys(module.on).forEach(moduleEventName => {\n        instance.on(moduleEventName, module.on[moduleEventName]);\n      });\n    }\n    // Add vnode hooks\n    if (module.vnode) {\n      if (!instance.vnodeHooks) instance.vnodeHooks = {};\n      Object.keys(module.vnode).forEach(vnodeId => {\n        Object.keys(module.vnode[vnodeId]).forEach(hookName => {\n          const handler = module.vnode[vnodeId][hookName];\n          if (!instance.vnodeHooks[hookName]) instance.vnodeHooks[hookName] = {};\n          if (!instance.vnodeHooks[hookName][vnodeId]) instance.vnodeHooks[hookName][vnodeId] = [];\n          instance.vnodeHooks[hookName][vnodeId].push(handler.bind(instance));\n        });\n      });\n    }\n    // Module create callback\n    if (module.create) {\n      module.create.bind(instance)(moduleParams);\n    }\n  }\n  useModules(modulesParams) {\n    if (modulesParams === void 0) {\n      modulesParams = {};\n    }\n    const instance = this;\n    if (!instance.modules) return;\n    Object.keys(instance.modules).forEach(moduleName => {\n      const moduleParams = modulesParams[moduleName] || {};\n      instance.useModule(moduleName, moduleParams);\n    });\n  }\n  static set components(components) {\n    const Class = this;\n    if (!Class.use) return;\n    Class.use(components);\n  }\n  static installModule(module) {\n    const Class = this;\n    if (!Class.prototype.modules) Class.prototype.modules = {};\n    const name = module.name || `${Object.keys(Class.prototype.modules).length}_${now()}`;\n    Class.prototype.modules[name] = module;\n    // Prototype\n    if (module.proto) {\n      Object.keys(module.proto).forEach(key => {\n        Class.prototype[key] = module.proto[key];\n      });\n    }\n    // Class\n    if (module.static) {\n      Object.keys(module.static).forEach(key => {\n        Class[key] = module.static[key];\n      });\n    }\n    // Callback\n    if (module.install) {\n      for (var _len = arguments.length, params = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n        params[_key - 1] = arguments[_key];\n      }\n      module.install.apply(Class, params);\n    }\n    return Class;\n  }\n  static use(module) {\n    const Class = this;\n    if (Array.isArray(module)) {\n      module.forEach(m => Class.installModule(m));\n      return Class;\n    }\n    for (var _len2 = arguments.length, params = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n      params[_key2 - 1] = arguments[_key2];\n    }\n    return Class.installModule(module, ...params);\n  }\n}\nexport default Framework7Class;", "import $ from './dom7.js';\nexport default function ConstructorMethods(parameters) {\n  if (parameters === void 0) {\n    parameters = {};\n  }\n  const {\n    defaultSelector,\n    constructor: Constructor,\n    domProp,\n    app,\n    addMethods\n  } = parameters;\n  const methods = {\n    create() {\n      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n        args[_key] = arguments[_key];\n      }\n      if (app) return new Constructor(app, ...args);\n      return new Constructor(...args);\n    },\n    get(el) {\n      if (el === void 0) {\n        el = defaultSelector;\n      }\n      if (el instanceof Constructor) return el;\n      const $el = $(el);\n      if ($el.length === 0) return undefined;\n      return $el[0][domProp];\n    },\n    destroy(el) {\n      const instance = methods.get(el);\n      if (instance && instance.destroy) return instance.destroy();\n      return undefined;\n    }\n  };\n  if (addMethods && Array.isArray(addMethods)) {\n    addMethods.forEach(methodName => {\n      methods[methodName] = function (el) {\n        if (el === void 0) {\n          el = defaultSelector;\n        }\n        const instance = methods.get(el);\n        for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n          args[_key2 - 1] = arguments[_key2];\n        }\n        if (instance && instance[methodName]) return instance[methodName](...args);\n        return undefined;\n      };\n    });\n  }\n  return methods;\n}", "import $ from './dom7.js';\nimport { extend } from './utils.js';\nimport ConstructorMethods from './constructor-methods.js';\nexport default function ModalMethods(parameters) {\n  if (parameters === void 0) {\n    parameters = {};\n  }\n  const {\n    defaultSelector,\n    constructor: Constructor,\n    app\n  } = parameters;\n  const methods = extend(ConstructorMethods({\n    defaultSelector,\n    constructor: Constructor,\n    app,\n    domProp: 'f7Modal'\n  }), {\n    open(el, animate, targetEl) {\n      let $el = $(el);\n      if ($el.length > 1 && targetEl) {\n        // check if same modal in other page\n        const $targetPage = $(targetEl).parents('.page');\n        if ($targetPage.length) {\n          $el.each(modalEl => {\n            const $modalEl = $(modalEl);\n            if ($modalEl.parents($targetPage)[0] === $targetPage[0]) {\n              $el = $modalEl;\n            }\n          });\n        }\n      }\n      if ($el.length > 1) {\n        $el = $el.eq($el.length - 1);\n      }\n      if (!$el.length) return undefined;\n      let instance = $el[0].f7Modal;\n      if (!instance) {\n        const params = $el.dataset();\n        instance = new Constructor(app, {\n          el: $el,\n          ...params\n        });\n      }\n      return instance.open(animate);\n    },\n    close(el, animate, targetEl) {\n      if (el === void 0) {\n        el = defaultSelector;\n      }\n      let $el = $(el);\n      if (!$el.length) return undefined;\n      if ($el.length > 1) {\n        // check if close link (targetEl) in this modal\n        let $parentEl;\n        if (targetEl) {\n          const $targetEl = $(targetEl);\n          if ($targetEl.length) {\n            $parentEl = $targetEl.parents($el);\n          }\n        }\n        if ($parentEl && $parentEl.length > 0) {\n          $el = $parentEl;\n        } else {\n          $el = $el.eq($el.length - 1);\n        }\n      }\n      let instance = $el[0].f7Modal;\n      if (!instance) {\n        const params = $el.dataset();\n        instance = new Constructor(app, {\n          el: $el,\n          ...params\n        });\n      }\n      return instance.close(animate);\n    }\n  });\n  return methods;\n}", "import { getWindow, getDocument } from 'ssr-window';\nimport { id } from '../../shared/utils.js';\nimport $ from '../../shared/dom7.js';\nconst fetchedModules = [];\nfunction loadModule(moduleToLoad) {\n  const Framework7 = this;\n  const window = getWindow();\n  const document = getDocument();\n  return new Promise((resolve, reject) => {\n    const app = Framework7.instance;\n    let modulePath;\n    let moduleObj;\n    let moduleFunc;\n    if (!moduleToLoad) {\n      reject(new Error('Framework7: Lazy module must be specified'));\n      return;\n    }\n    function install(module) {\n      Framework7.use(module);\n      if (app) {\n        app.useModuleParams(module, app.params);\n        app.useModule(module);\n      }\n    }\n    if (typeof moduleToLoad === 'string') {\n      const 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}/${moduleToLoad}.lazy.js`;\n      } else {\n        modulePath = moduleToLoad;\n      }\n    } else if (typeof moduleToLoad === 'function') {\n      moduleFunc = moduleToLoad;\n    } else {\n      // considering F7-Plugin object\n      moduleObj = moduleToLoad;\n    }\n    if (moduleFunc) {\n      const 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      resolve();\n    }\n    if (moduleObj) {\n      const module = moduleObj;\n      if (!module) {\n        reject(new Error(\"Framework7: Can't find Framework7 component in specified component\"));\n        return;\n      }\n      // Check if it was added\n      if (Framework7.prototype.modules && Framework7.prototype.modules[module.name]) {\n        resolve();\n        return;\n      }\n      // Install It\n      install(module);\n      resolve();\n    }\n    if (modulePath) {\n      if (fetchedModules.indexOf(modulePath) >= 0) {\n        resolve();\n        return;\n      }\n      fetchedModules.push(modulePath);\n      const scriptLoad = new Promise((resolveScript, rejectScript) => {\n        fetch(modulePath).then(res => res.text()).then(scriptContent => {\n          const callbackId = id();\n          const callbackLoadName = `f7_component_loader_callback_${callbackId}`;\n          const scriptEl = document.createElement('script');\n          scriptEl.innerHTML = `window.${callbackLoadName} = function (Framework7, Framework7AutoInstallComponent) {return ${scriptContent.trim()}}`;\n          $('head').append(scriptEl);\n          const componentLoader = window[callbackLoadName];\n          delete window[callbackLoadName];\n          $(scriptEl).remove();\n          const module = componentLoader(Framework7, false);\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          resolveScript();\n        }).catch(err => {\n          rejectScript(err);\n        });\n      });\n      const styleLoad = new Promise(resolveStyle => {\n        fetch(modulePath.replace('.lazy.js', app.rtl ? '.rtl.css' : '.css').replace('.js', app.rtl ? '.rtl.css' : '.css')).then(res => res.text()).then(styleContent => {\n          const styleEl = document.createElement('style');\n          styleEl.innerHTML = styleContent;\n          $('head').append(styleEl);\n          resolveStyle();\n        }).catch(() => {\n          resolveStyle();\n        });\n      });\n      Promise.all([scriptLoad, styleLoad]).then(() => {\n        resolve();\n      }).catch(err => {\n        reject(err);\n      });\n    }\n  });\n}\nexport default loadModule;", "/* eslint-disable prefer-rest-params */\nconst $jsx = function (tag, props) {\n  const attrs = props || {};\n  for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n    args[_key - 2] = arguments[_key];\n  }\n  const children = args || [];\n  const attrsString = Object.keys(attrs).map(attr => {\n    if (attr[0] === '_') {\n      if (attrs[attr]) return attr.replace('_', '');\n      return '';\n    }\n    return `${attr}=\"${attrs[attr]}\"`;\n  }).filter(attr => !!attr).join(' ');\n  if (['path', 'img', 'circle', 'polygon', 'line', 'input'].indexOf(tag) >= 0) {\n    return `<${tag} ${attrsString} />`.trim();\n  }\n  const childrenContent = children.filter(c => !!c).map(c => Array.isArray(c) ? c.join('') : c).join('');\n  return `<${tag} ${attrsString}>${childrenContent}</${tag}>`.trim();\n};\nexport default $jsx;", "/* eslint-disable no-underscore-dangle */\n\nimport { getWindow, getDocument } from 'ssr-window';\nimport { extend, nextFrame } from '../../shared/utils.js';\nimport { getDevice } from '../../shared/get-device.js';\nimport { getSupport } from '../../shared/get-support.js';\nimport Framework7Class from '../../shared/class.js';\nimport EventsClass from '../../shared/events-class.js';\nimport ConstructorMethods from '../../shared/constructor-methods.js';\nimport ModalMethods from '../../shared/modal-methods.js';\nimport $ from '../../shared/dom7.js';\nimport loadModule from './load-module.js';\nimport $jsx from '../../shared/$jsx.js';\nclass Framework7 extends Framework7Class {\n  constructor(params) {\n    if (params === void 0) {\n      params = {};\n    }\n    super(params);\n    // eslint-disable-next-line\n    if (Framework7.instance && typeof window !== 'undefined') {\n      throw new Error(\"Framework7 is already initialized and can't be initialized more than once\");\n    }\n    const device = getDevice({\n      userAgent: params.userAgent || undefined\n    });\n    const support = getSupport();\n    const passedParams = extend({}, params);\n\n    // App Instance\n    const app = this;\n    app.device = device;\n    app.support = support;\n    const w = getWindow();\n    const d = getDocument();\n    Framework7.instance = app;\n\n    // Default\n    const defaults = {\n      el: 'body',\n      theme: 'auto',\n      routes: [],\n      name: 'Framework7',\n      lazyModulesPath: null,\n      initOnDeviceReady: true,\n      init: true,\n      darkMode: undefined,\n      iosTranslucentBars: true,\n      iosTranslucentModals: true,\n      component: undefined,\n      componentUrl: undefined,\n      userAgent: null,\n      url: null,\n      colors: {\n        primary: '#007aff',\n        red: '#ff3b30',\n        green: '#4cd964',\n        blue: '#2196f3',\n        pink: '#ff2d55',\n        yellow: '#ffcc00',\n        orange: '#ff9500',\n        purple: '#9c27b0',\n        deeppurple: '#673ab7',\n        lightblue: '#5ac8fa',\n        teal: '#009688',\n        lime: '#cddc39',\n        deeporange: '#ff6b22',\n        white: '#ffffff',\n        black: '#000000'\n      }\n    };\n\n    // Extend defaults with modules params\n    app.useModulesParams(defaults);\n\n    // Extend defaults with passed params\n    app.params = extend(defaults, params);\n    extend(app, {\n      // App Name\n      name: app.params.name,\n      // Routes\n      routes: app.params.routes,\n      // Theme\n      theme: function getTheme() {\n        if (app.params.theme === 'auto') {\n          if (device.ios) return 'ios';\n          return 'md';\n        }\n        return app.params.theme;\n      }(),\n      // Initially passed parameters\n      passedParams,\n      online: w.navigator.onLine,\n      colors: app.params.colors,\n      darkMode: app.params.darkMode\n    });\n    if (params.store) app.params.store = params.store;\n\n    // Save Root\n    if (app.$el && app.$el[0]) {\n      app.$el[0].f7 = app;\n    }\n\n    // Install Modules\n    app.useModules();\n\n    // Init Store\n    app.initStore();\n\n    // Init\n    if (app.params.init) {\n      if (device.cordova && app.params.initOnDeviceReady) {\n        $(d).on('deviceready', () => {\n          app.init();\n        });\n      } else {\n        app.init();\n      }\n    }\n\n    // Return app instance\n    return app;\n  }\n  setColorTheme(color) {\n    if (!color) return;\n    const app = this;\n    app.colors.primary = color;\n    app.setColors();\n  }\n  setColors() {\n    const app = this;\n    const document = getDocument();\n    if (!app.colorsStyleEl) {\n      app.colorsStyleEl = document.createElement('style');\n      document.head.prepend(app.colorsStyleEl);\n    }\n    app.colorsStyleEl.textContent = app.utils.colorThemeCSSStyles(app.colors);\n  }\n  mount(rootEl) {\n    const app = this;\n    const window = getWindow();\n    const document = getDocument();\n    const $rootEl = $(rootEl || app.params.el).eq(0);\n    app.$el = $rootEl;\n    if (app.$el && app.$el[0]) {\n      app.el = app.$el[0];\n      app.el.f7 = app;\n      app.rtl = $rootEl.css('direction') === 'rtl';\n    }\n\n    // Auto Dark Mode\n    const DARK = '(prefers-color-scheme: dark)';\n    const LIGHT = '(prefers-color-scheme: light)';\n    app.mq = {};\n    if (window.matchMedia) {\n      app.mq.dark = window.matchMedia(DARK);\n      app.mq.light = window.matchMedia(LIGHT);\n    }\n    app.colorSchemeListener = function colorSchemeListener(_ref) {\n      let {\n        matches,\n        media\n      } = _ref;\n      if (!matches) {\n        return;\n      }\n      const html = document.querySelector('html');\n      if (media === DARK) {\n        html.classList.add('dark');\n        app.darkMode = true;\n        app.emit('darkModeChange', true);\n      } else if (media === LIGHT) {\n        html.classList.remove('dark');\n        app.darkMode = false;\n        app.emit('darkModeChange', false);\n      }\n    };\n    app.emit('mount');\n  }\n  initStore() {\n    const app = this;\n    if (typeof app.params.store !== 'undefined' && app.params.store.__store) {\n      app.store = app.params.store;\n    } else {\n      app.store = app.createStore(app.params.store);\n    }\n  }\n  enableAutoDarkMode() {\n    const window = getWindow();\n    const document = getDocument();\n    if (!window.matchMedia) return;\n    const app = this;\n    const html = document.querySelector('html');\n    if (app.mq.dark && app.mq.light) {\n      app.mq.dark.addEventListener('change', app.colorSchemeListener);\n      app.mq.light.addEventListener('change', app.colorSchemeListener);\n    }\n    if (app.mq.dark && app.mq.dark.matches) {\n      html.classList.add('dark');\n      app.darkMode = true;\n      app.emit('darkModeChange', true);\n    } else if (app.mq.light && app.mq.light.matches) {\n      html.classList.remove('dark');\n      app.darkMode = false;\n      app.emit('darkModeChange', false);\n    }\n  }\n  disableAutoDarkMode() {\n    const window = getWindow();\n    if (!window.matchMedia) return;\n    const app = this;\n    if (app.mq.dark) app.mq.dark.removeEventListener('change', app.colorSchemeListener);\n    if (app.mq.light) app.mq.light.removeEventListener('change', app.colorSchemeListener);\n  }\n  setDarkMode(mode) {\n    const app = this;\n    if (mode === 'auto') {\n      app.enableAutoDarkMode();\n    } else {\n      app.disableAutoDarkMode();\n      $('html')[mode ? 'addClass' : 'removeClass']('dark');\n      app.darkMode = mode;\n    }\n  }\n  initAppComponent(callback) {\n    const app = this;\n    app.router.componentLoader(app.params.component, app.params.componentUrl, {\n      componentOptions: {\n        el: app.$el[0]\n      }\n    }, el => {\n      app.$el = $(el);\n      app.$el[0].f7 = app;\n      app.$elComponent = el.f7Component;\n      app.el = app.$el[0];\n      if (callback) callback();\n    }, () => {});\n  }\n  init(rootEl) {\n    const app = this;\n    app.setColors();\n    app.mount(rootEl);\n    const init = () => {\n      if (app.initialized) return;\n      app.$el.addClass('framework7-initializing');\n\n      // RTL attr\n      if (app.rtl) {\n        $('html').attr('dir', 'rtl');\n      }\n\n      // Auto Dark Mode\n      if (typeof app.params.darkMode === 'undefined') {\n        app.darkMode = $('html').hasClass('dark');\n      } else {\n        app.setDarkMode(app.params.darkMode);\n      }\n\n      // Watch for online/offline state\n      const window = getWindow();\n      window.addEventListener('offline', () => {\n        app.online = false;\n        app.emit('offline');\n        app.emit('connection', false);\n      });\n      window.addEventListener('online', () => {\n        app.online = true;\n        app.emit('online');\n        app.emit('connection', true);\n      });\n\n      // Root class\n      app.$el.addClass('framework7-root');\n\n      // Theme class\n      $('html').removeClass('ios md').addClass(app.theme);\n\n      // iOS Translucent\n      if (app.params.iosTranslucentBars && app.theme === 'ios') {\n        $('html').addClass('ios-translucent-bars');\n      }\n      if (app.params.iosTranslucentModals && app.theme === 'ios') {\n        $('html').addClass('ios-translucent-modals');\n      }\n\n      // Init class\n      nextFrame(() => {\n        app.$el.removeClass('framework7-initializing');\n      });\n      // Emit, init other modules\n      app.initialized = true;\n      app.emit('init');\n    };\n    if (app.params.component || app.params.componentUrl) {\n      app.initAppComponent(() => {\n        init();\n      });\n    } else {\n      init();\n    }\n    return app;\n  }\n\n  // eslint-disable-next-line\n  loadModule() {\n    return Framework7.loadModule(...arguments);\n  }\n\n  // eslint-disable-next-line\n  loadModules() {\n    return Framework7.loadModules(...arguments);\n  }\n  getVnodeHooks(hook, id) {\n    const app = this;\n    if (!app.vnodeHooks || !app.vnodeHooks[hook]) return [];\n    return app.vnodeHooks[hook][id] || [];\n  }\n\n  // eslint-disable-next-line\n  get $() {\n    return $;\n  }\n  static get Dom7() {\n    return $;\n  }\n  static get $() {\n    return $;\n  }\n  static get device() {\n    return getDevice();\n  }\n  static get support() {\n    return getSupport();\n  }\n  static get Class() {\n    return Framework7Class;\n  }\n  static get Events() {\n    return EventsClass;\n  }\n}\nFramework7.$jsx = $jsx;\nFramework7.ModalMethods = ModalMethods;\nFramework7.ConstructorMethods = ConstructorMethods;\nFramework7.loadModule = loadModule;\nFramework7.loadModules = function loadModules(modules) {\n  return Promise.all(modules.map(module => Framework7.loadModule(module)));\n};\nexport default Framework7;", "import { getDocument } from 'ssr-window';\nimport { getDevice } from '../../shared/get-device.js';\nexport default {\n  name: 'device',\n  static: {\n    getDevice\n  },\n  on: {\n    init() {\n      const document = getDocument();\n      const device = getDevice();\n      const classNames = [];\n      const html = document.querySelector('html');\n      const metaStatusbar = document.querySelector('meta[name=\"apple-mobile-web-app-status-bar-style\"]');\n      if (!html) return;\n      if (device.standalone && device.ios && metaStatusbar && metaStatusbar.content === 'black-translucent') {\n        classNames.push('device-full-viewport');\n      }\n\n      // Pixel Ratio\n      classNames.push(`device-pixel-ratio-${Math.floor(device.pixelRatio)}`);\n      // OS classes\n      if (device.os && !device.desktop) {\n        classNames.push(`device-${device.os}`);\n      } else if (device.desktop) {\n        classNames.push('device-desktop');\n        if (device.os) {\n          classNames.push(`device-${device.os}`);\n        }\n      }\n      if (device.cordova) {\n        classNames.push('device-cordova');\n      }\n      if (device.capacitor) {\n        classNames.push('device-capacitor');\n      }\n\n      // Add html classes\n      classNames.forEach(className => {\n        html.classList.add(className);\n      });\n    }\n  }\n};", "import { getSupport } from '../../shared/get-support.js';\nexport default {\n  name: 'support',\n  static: {\n    getSupport\n  }\n};", "import * as utils from '../../shared/utils.js';\nexport default {\n  name: 'utils',\n  proto: {\n    utils\n  },\n  static: {\n    utils\n  }\n};", "import { getWindow, getDocument } from 'ssr-window';\nimport { getDevice } from '../../shared/get-device.js';\nexport default {\n  name: 'resize',\n  create() {\n    const app = this;\n    app.getSize = () => {\n      if (!app.el) return {\n        width: 0,\n        height: 0,\n        left: 0,\n        top: 0\n      };\n      const offset = app.$el.offset();\n      const [width, height, left, top] = [app.el.offsetWidth, app.el.offsetHeight, offset.left, offset.top];\n      app.width = width;\n      app.height = height;\n      app.left = left;\n      app.top = top;\n      return {\n        width,\n        height,\n        left,\n        top\n      };\n    };\n  },\n  on: {\n    init() {\n      const app = this;\n      const window = getWindow();\n\n      // Get Size\n      app.getSize();\n\n      // Emit resize\n      window.addEventListener('resize', () => {\n        app.emit('resize');\n      }, false);\n\n      // Emit orientationchange\n      window.addEventListener('orientationchange', () => {\n        app.emit('orientationchange');\n      });\n    },\n    orientationchange() {\n      const document = getDocument();\n      const device = getDevice();\n      // Fix iPad weird body scroll\n      if (device.ipad) {\n        document.body.scrollLeft = 0;\n        setTimeout(() => {\n          document.body.scrollLeft = 0;\n        }, 0);\n      }\n    },\n    resize() {\n      const app = this;\n      app.getSize();\n    }\n  }\n};", "/* eslint-disable no-nested-ternary */\nimport { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { getSupport } from '../../shared/get-support.js';\nimport { getDevice } from '../../shared/get-device.js';\nimport { extend } from '../../shared/utils.js';\nfunction initTouch() {\n  const app = this;\n  const device = getDevice();\n  const support = getSupport();\n  const window = getWindow();\n  const document = getDocument();\n  const params = app.params.touch;\n  const useRipple = params[`${app.theme}TouchRipple`];\n  if (device.ios && device.webView) {\n    // Strange hack required for iOS 8 webview to work on inputs\n    window.addEventListener('touchstart', () => {});\n  }\n  let touchStartX;\n  let touchStartY;\n  let targetElement;\n  let isMoved;\n  let tapHoldFired;\n  let tapHoldTimeout;\n  let preventClick;\n  let activableElement;\n  let activeTimeout;\n  let rippleWave;\n  let rippleTarget;\n  let rippleTimeout;\n  function findActivableElement(el) {\n    const target = $(el);\n    const parents = target.parents(params.activeStateElements);\n    if (target.closest('.no-active-state').length) {\n      return null;\n    }\n    let activable;\n    if (target.is(params.activeStateElements)) {\n      activable = target;\n    }\n    if (parents.length > 0) {\n      activable = activable ? activable.add(parents) : parents;\n    }\n    if (activable && activable.length > 1) {\n      const newActivable = [];\n      let preventPropagation;\n      for (let i = 0; i < activable.length; i += 1) {\n        if (!preventPropagation) {\n          newActivable.push(activable[i]);\n          if (activable.eq(i).hasClass('prevent-active-state-propagation') || activable.eq(i).hasClass('no-active-state-propagation')) {\n            preventPropagation = true;\n          }\n        }\n      }\n      activable = $(newActivable);\n    }\n    return activable || target;\n  }\n  function isInsideScrollableView(el) {\n    const pageContent = el.parents('.page-content');\n    return pageContent.length > 0;\n  }\n  function addActive() {\n    if (!activableElement) return;\n    activableElement.addClass('active-state');\n  }\n  function removeActive() {\n    if (!activableElement) return;\n    activableElement.removeClass('active-state');\n    activableElement = null;\n  }\n\n  // Ripple handlers\n  function findRippleElement(el) {\n    const rippleElements = params.touchRippleElements;\n    const $el = $(el);\n    if ($el.is(rippleElements)) {\n      if ($el.hasClass('no-ripple')) {\n        return false;\n      }\n      return $el;\n    }\n    if ($el.parents(rippleElements).length > 0) {\n      const rippleParent = $el.parents(rippleElements).eq(0);\n      if (rippleParent.hasClass('no-ripple')) {\n        return false;\n      }\n      return rippleParent;\n    }\n    return false;\n  }\n  function createRipple($el, x, y) {\n    if (!$el) return;\n    rippleWave = app.touchRipple.create(app, $el, x, y);\n  }\n  function removeRipple() {\n    if (!rippleWave) return;\n    rippleWave.remove();\n    rippleWave = undefined;\n    rippleTarget = undefined;\n  }\n  function rippleTouchStart(el) {\n    rippleTarget = findRippleElement(el);\n    if (!rippleTarget || rippleTarget.length === 0) {\n      rippleTarget = undefined;\n      return;\n    }\n    const inScrollable = isInsideScrollableView(rippleTarget);\n    if (!inScrollable) {\n      removeRipple();\n      createRipple(rippleTarget, touchStartX, touchStartY);\n    } else {\n      clearTimeout(rippleTimeout);\n      rippleTimeout = setTimeout(() => {\n        removeRipple();\n        createRipple(rippleTarget, touchStartX, touchStartY);\n      }, 80);\n    }\n  }\n  function rippleTouchMove() {\n    clearTimeout(rippleTimeout);\n    removeRipple();\n  }\n  function rippleTouchEnd() {\n    if (!rippleWave && rippleTarget && !isMoved) {\n      clearTimeout(rippleTimeout);\n      createRipple(rippleTarget, touchStartX, touchStartY);\n      setTimeout(removeRipple, 0);\n    } else {\n      removeRipple();\n    }\n  }\n\n  // Mouse Handlers\n  function handleMouseDown(e) {\n    const $activableEl = findActivableElement(e.target);\n    if ($activableEl) {\n      $activableEl.addClass('active-state');\n      if ('which' in e && e.which === 3) {\n        setTimeout(() => {\n          $('.active-state').removeClass('active-state');\n        }, 0);\n      }\n    }\n    if (useRipple) {\n      touchStartX = e.pageX;\n      touchStartY = e.pageY;\n      rippleTouchStart(e.target, e.pageX, e.pageY);\n    }\n  }\n  function handleMouseMove() {\n    if (!params.activeStateOnMouseMove) {\n      $('.active-state').removeClass('active-state');\n    }\n    if (useRipple) {\n      rippleTouchMove();\n    }\n  }\n  function handleMouseUp() {\n    $('.active-state').removeClass('active-state');\n    if (useRipple) {\n      rippleTouchEnd();\n    }\n  }\n  function handleTouchCancel() {\n    targetElement = null;\n\n    // Remove Active State\n    clearTimeout(activeTimeout);\n    clearTimeout(tapHoldTimeout);\n    if (params.activeState) {\n      removeActive();\n    }\n\n    // Remove Ripple\n    if (useRipple) {\n      rippleTouchEnd();\n    }\n  }\n  let isScrolling;\n  let isSegmentedStrong = false;\n  let segmentedStrongEl = null;\n  const touchMoveActivableIos = '.dialog-button, .actions-button';\n  let isTouchMoveActivable = false;\n  let touchmoveActivableEl = null;\n  function handleTouchStart(e) {\n    if (!e.isTrusted) return true;\n    isMoved = false;\n    tapHoldFired = false;\n    preventClick = false;\n    isScrolling = undefined;\n    if (e.targetTouches.length > 1) {\n      if (activableElement) removeActive();\n      return true;\n    }\n    if (e.touches.length > 1 && activableElement) {\n      removeActive();\n    }\n    if (params.tapHold) {\n      if (tapHoldTimeout) clearTimeout(tapHoldTimeout);\n      tapHoldTimeout = setTimeout(() => {\n        if (e && e.touches && e.touches.length > 1) return;\n        tapHoldFired = true;\n        e.preventDefault();\n        preventClick = true;\n        $(e.target).trigger('taphold', e);\n        app.emit('taphold', e);\n      }, params.tapHoldDelay);\n    }\n    targetElement = e.target;\n    touchStartX = e.targetTouches[0].pageX;\n    touchStartY = e.targetTouches[0].pageY;\n    isSegmentedStrong = e.target.closest('.segmented-strong .button-active, .segmented-strong .tab-link-active');\n    isTouchMoveActivable = app.theme === 'ios' && e.target.closest(touchMoveActivableIos);\n    if (isSegmentedStrong) {\n      segmentedStrongEl = isSegmentedStrong.closest('.segmented-strong');\n    }\n    if (params.activeState) {\n      activableElement = findActivableElement(targetElement);\n      if (activableElement && !isInsideScrollableView(activableElement)) {\n        addActive();\n      } else if (activableElement) {\n        activeTimeout = setTimeout(addActive, 80);\n      }\n    }\n    if (useRipple) {\n      rippleTouchStart(targetElement, touchStartX, touchStartY);\n    }\n    return true;\n  }\n  function handleTouchMove(e) {\n    if (!e.isTrusted) return;\n    let touch;\n    let distance;\n    let shouldRemoveActive = true;\n    if (e.type === 'touchmove') {\n      touch = e.targetTouches[0];\n      distance = params.touchClicksDistanceThreshold;\n    }\n    const touchCurrentX = e.targetTouches[0].pageX;\n    const touchCurrentY = e.targetTouches[0].pageY;\n    if (typeof isScrolling === 'undefined') {\n      isScrolling = !!(isScrolling || Math.abs(touchCurrentY - touchStartY) > Math.abs(touchCurrentX - touchStartX));\n    }\n    if (isTouchMoveActivable || !isScrolling && isSegmentedStrong && segmentedStrongEl) {\n      if (e.cancelable) e.preventDefault();\n    }\n    if (!isScrolling && isSegmentedStrong && segmentedStrongEl) {\n      const elementFromPoint = document.elementFromPoint(e.targetTouches[0].clientX, e.targetTouches[0].clientY);\n      const buttonEl = elementFromPoint.closest('.segmented-strong .button:not(.button-active):not(.tab-link-active)');\n      if (buttonEl && segmentedStrongEl.contains(buttonEl)) {\n        $(buttonEl).trigger('click', 'f7Segmented');\n        targetElement = buttonEl;\n      }\n    }\n    if (distance && touch) {\n      const pageX = touch.pageX;\n      const pageY = touch.pageY;\n      if (Math.abs(pageX - touchStartX) > distance || Math.abs(pageY - touchStartY) > distance) {\n        isMoved = true;\n      }\n    } else {\n      isMoved = true;\n    }\n    if (isMoved) {\n      preventClick = true;\n      // Keep active state on touchMove (for dialog and actions buttons)\n      if (isTouchMoveActivable) {\n        const elementFromPoint = document.elementFromPoint(e.targetTouches[0].clientX, e.targetTouches[0].clientY);\n        touchmoveActivableEl = elementFromPoint.closest(touchMoveActivableIos);\n        if (touchmoveActivableEl && activableElement && activableElement[0] === touchmoveActivableEl) {\n          shouldRemoveActive = false;\n        } else if (touchmoveActivableEl) {\n          setTimeout(() => {\n            activableElement = findActivableElement(touchmoveActivableEl);\n            addActive();\n          });\n        }\n      }\n      if (params.tapHold) {\n        clearTimeout(tapHoldTimeout);\n      }\n      if (params.activeState && shouldRemoveActive) {\n        clearTimeout(activeTimeout);\n        removeActive();\n      }\n      if (useRipple) {\n        rippleTouchMove();\n      }\n    }\n  }\n  function handleTouchEnd(e) {\n    if (!e.isTrusted) return true;\n    isScrolling = undefined;\n    isSegmentedStrong = false;\n    segmentedStrongEl = null;\n    isTouchMoveActivable = false;\n    clearTimeout(activeTimeout);\n    clearTimeout(tapHoldTimeout);\n    if (touchmoveActivableEl) {\n      $(touchmoveActivableEl).trigger('click', 'f7TouchMoveActivable');\n      touchmoveActivableEl = null;\n    }\n    if (document.activeElement === e.target) {\n      if (params.activeState) removeActive();\n      if (useRipple) {\n        rippleTouchEnd();\n      }\n      return true;\n    }\n    if (params.activeState) {\n      addActive();\n      setTimeout(removeActive, 0);\n    }\n    if (useRipple) {\n      rippleTouchEnd();\n    }\n    if (params.tapHoldPreventClicks && tapHoldFired || preventClick) {\n      if (e.cancelable) e.preventDefault();\n      preventClick = true;\n      return false;\n    }\n    return true;\n  }\n  function handleClick(e) {\n    const isOverswipe = e && e.detail && e.detail === 'f7Overswipe';\n    const isSegmented = e && e.detail && e.detail === 'f7Segmented';\n    // eslint-disable-next-line\n    const isTouchMoveActivable = e && e.detail && e.detail === 'f7TouchMoveActivable';\n    let localPreventClick = preventClick;\n    if (targetElement && e.target !== targetElement) {\n      if (isOverswipe || isSegmented || isTouchMoveActivable) {\n        localPreventClick = false;\n      } else {\n        localPreventClick = true;\n      }\n    } else if (isTouchMoveActivable) {\n      localPreventClick = false;\n    }\n    if (params.tapHold && params.tapHoldPreventClicks && tapHoldFired) {\n      localPreventClick = true;\n    }\n    if (localPreventClick) {\n      e.stopImmediatePropagation();\n      e.stopPropagation();\n      e.preventDefault();\n    }\n    if (params.tapHold) {\n      tapHoldTimeout = setTimeout(() => {\n        tapHoldFired = false;\n      }, device.ios || device.androidChrome ? 100 : 400);\n    }\n    preventClick = false;\n    targetElement = null;\n    return !localPreventClick;\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  const passiveListener = support.passiveListener ? {\n    passive: true\n  } : false;\n  const passiveListenerCapture = support.passiveListener ? {\n    passive: true,\n    capture: true\n  } : true;\n  const activeListener = support.passiveListener ? {\n    passive: false\n  } : false;\n  const activeListenerCapture = support.passiveListener ? {\n    passive: false,\n    capture: true\n  } : true;\n  document.addEventListener('click', appClick, true);\n  if (support.passiveListener) {\n    document.addEventListener(app.touchEvents.start, appTouchStartActive, activeListenerCapture);\n    document.addEventListener(app.touchEvents.move, appTouchMoveActive, activeListener);\n    document.addEventListener(app.touchEvents.end, appTouchEndActive, activeListener);\n    document.addEventListener(app.touchEvents.start, appTouchStartPassive, passiveListenerCapture);\n    document.addEventListener(app.touchEvents.move, appTouchMovePassive, passiveListener);\n    document.addEventListener(app.touchEvents.end, appTouchEndPassive, passiveListener);\n  } else {\n    document.addEventListener(app.touchEvents.start, e => {\n      appTouchStartActive(e);\n      appTouchStartPassive(e);\n    }, true);\n    document.addEventListener(app.touchEvents.move, e => {\n      appTouchMoveActive(e);\n      appTouchMovePassive(e);\n    }, false);\n    document.addEventListener(app.touchEvents.end, e => {\n      appTouchEndActive(e);\n      appTouchEndPassive(e);\n    }, false);\n  }\n  if (support.touch) {\n    app.on('click', handleClick);\n    app.on('touchstart', handleTouchStart);\n    app.on('touchmove', handleTouchMove);\n    app.on('touchend', handleTouchEnd);\n    document.addEventListener('touchcancel', handleTouchCancel, {\n      passive: true\n    });\n  } else if (params.activeState) {\n    app.on('touchstart', handleMouseDown);\n    app.on('touchmove', handleMouseMove);\n    app.on('touchend', handleMouseUp);\n    document.addEventListener('pointercancel', handleMouseUp, {\n      passive: true\n    });\n  }\n  document.addEventListener('contextmenu', e => {\n    if (params.disableContextMenu && (device.ios || device.android || device.cordova || window.Capacitor && window.Capacitor.isNative)) {\n      e.preventDefault();\n    }\n    if (useRipple) {\n      if (activableElement) removeActive();\n      rippleTouchEnd();\n    }\n  });\n}\nexport default {\n  name: 'touch',\n  params: {\n    touch: {\n      // Clicks\n      touchClicksDistanceThreshold: 5,\n      // ContextMenu\n      disableContextMenu: false,\n      // Tap Hold\n      tapHold: false,\n      tapHoldDelay: 750,\n      tapHoldPreventClicks: true,\n      // Active State\n      activeState: true,\n      activeStateElements: 'a, button, label, span, .actions-button, .stepper-button, .stepper-button-plus, .stepper-button-minus, .card-expandable, .link, .item-link, .accordion-item-toggle',\n      activeStateOnMouseMove: false,\n      mdTouchRipple: true,\n      iosTouchRipple: false,\n      touchRippleElements: '.ripple, .link, .item-link, .list label.item-content, .list-button, .links-list a, .button, button, .input-clear-button, .dialog-button, .tab-link, .item-radio, .item-checkbox, .actions-button, .searchbar-disable-button, .fab a, .checkbox, .radio, .data-table .sortable-cell:not(.input-cell), .notification-close-button, .stepper-button, .stepper-button-minus, .stepper-button-plus, .list.accordion-list .accordion-item-toggle',\n      touchRippleInsetElements: '.ripple-inset, .icon-only, .searchbar-disable-button, .input-clear-button, .notification-close-button, .md .navbar .link.back'\n    }\n  },\n  create() {\n    const app = this;\n    const support = getSupport();\n    extend(app, {\n      touchEvents: {\n        start: support.touch ? 'touchstart' : support.pointerEvents ? 'pointerdown' : 'mousedown',\n        move: support.touch ? 'touchmove' : support.pointerEvents ? 'pointermove' : 'mousemove',\n        end: support.touch ? 'touchend' : support.pointerEvents ? 'pointerup' : 'mouseup'\n      }\n    });\n  },\n  on: {\n    init: initTouch\n  }\n};", "/**\n * Tokenizer results.\n */\ninterface LexToken {\n  type:\n    | \"OPEN\"\n    | \"CLOSE\"\n    | \"PATTERN\"\n    | \"NAME\"\n    | \"CHAR\"\n    | \"ESCAPED_CHAR\"\n    | \"MODIFIER\"\n    | \"END\";\n  index: number;\n  value: string;\n}\n\n/**\n * Tokenize input string.\n */\nfunction lexer(str: string): LexToken[] {\n  const tokens: LexToken[] = [];\n  let i = 0;\n\n  while (i < str.length) {\n    const char = str[i];\n\n    if (char === \"*\" || char === \"+\" || char === \"?\") {\n      tokens.push({ type: \"MODIFIER\", index: i, value: str[i++] });\n      continue;\n    }\n\n    if (char === \"\\\\\") {\n      tokens.push({ type: \"ESCAPED_CHAR\", index: i++, value: str[i++] });\n      continue;\n    }\n\n    if (char === \"{\") {\n      tokens.push({ type: \"OPEN\", index: i, value: str[i++] });\n      continue;\n    }\n\n    if (char === \"}\") {\n      tokens.push({ type: \"CLOSE\", index: i, value: str[i++] });\n      continue;\n    }\n\n    if (char === \":\") {\n      let name = \"\";\n      let j = i + 1;\n\n      while (j < str.length) {\n        const code = str.charCodeAt(j);\n\n        if (\n          // `0-9`\n          (code >= 48 && code <= 57) ||\n          // `A-Z`\n          (code >= 65 && code <= 90) ||\n          // `a-z`\n          (code >= 97 && code <= 122) ||\n          // `_`\n          code === 95\n        ) {\n          name += str[j++];\n          continue;\n        }\n\n        break;\n      }\n\n      if (!name) throw new TypeError(`Missing parameter name at ${i}`);\n\n      tokens.push({ type: \"NAME\", index: i, value: name });\n      i = j;\n      continue;\n    }\n\n    if (char === \"(\") {\n      let count = 1;\n      let pattern = \"\";\n      let j = i + 1;\n\n      if (str[j] === \"?\") {\n        throw new TypeError(`Pattern cannot start with \"?\" at ${j}`);\n      }\n\n      while (j < str.length) {\n        if (str[j] === \"\\\\\") {\n          pattern += str[j++] + str[j++];\n          continue;\n        }\n\n        if (str[j] === \")\") {\n          count--;\n          if (count === 0) {\n            j++;\n            break;\n          }\n        } else if (str[j] === \"(\") {\n          count++;\n          if (str[j + 1] !== \"?\") {\n            throw new TypeError(`Capturing groups are not allowed at ${j}`);\n          }\n        }\n\n        pattern += str[j++];\n      }\n\n      if (count) throw new TypeError(`Unbalanced pattern at ${i}`);\n      if (!pattern) throw new TypeError(`Missing pattern at ${i}`);\n\n      tokens.push({ type: \"PATTERN\", index: i, value: pattern });\n      i = j;\n      continue;\n    }\n\n    tokens.push({ type: \"CHAR\", index: i, value: str[i++] });\n  }\n\n  tokens.push({ type: \"END\", index: i, value: \"\" });\n\n  return tokens;\n}\n\nexport interface ParseOptions {\n  /**\n   * Set the default delimiter for repeat parameters. (default: `'/'`)\n   */\n  delimiter?: string;\n  /**\n   * List of characters to automatically consider prefixes when parsing.\n   */\n  prefixes?: string;\n}\n\n/**\n * Parse a string for the raw tokens.\n */\nexport function parse(str: string, options: ParseOptions = {}): Token[] {\n  const tokens = lexer(str);\n  const { prefixes = \"./\" } = options;\n  const defaultPattern = `[^${escapeString(options.delimiter || \"/#?\")}]+?`;\n  const result: Token[] = [];\n  let key = 0;\n  let i = 0;\n  let path = \"\";\n\n  const tryConsume = (type: LexToken[\"type\"]): string | undefined => {\n    if (i < tokens.length && tokens[i].type === type) return tokens[i++].value;\n  };\n\n  const mustConsume = (type: LexToken[\"type\"]): string => {\n    const value = tryConsume(type);\n    if (value !== undefined) return value;\n    const { type: nextType, index } = tokens[i];\n    throw new TypeError(`Unexpected ${nextType} at ${index}, expected ${type}`);\n  };\n\n  const consumeText = (): string => {\n    let result = \"\";\n    let value: string | undefined;\n    while ((value = tryConsume(\"CHAR\") || tryConsume(\"ESCAPED_CHAR\"))) {\n      result += value;\n    }\n    return result;\n  };\n\n  while (i < tokens.length) {\n    const char = tryConsume(\"CHAR\");\n    const name = tryConsume(\"NAME\");\n    const pattern = tryConsume(\"PATTERN\");\n\n    if (name || pattern) {\n      let prefix = char || \"\";\n\n      if (prefixes.indexOf(prefix) === -1) {\n        path += prefix;\n        prefix = \"\";\n      }\n\n      if (path) {\n        result.push(path);\n        path = \"\";\n      }\n\n      result.push({\n        name: name || key++,\n        prefix,\n        suffix: \"\",\n        pattern: pattern || defaultPattern,\n        modifier: tryConsume(\"MODIFIER\") || \"\",\n      });\n      continue;\n    }\n\n    const value = char || tryConsume(\"ESCAPED_CHAR\");\n    if (value) {\n      path += value;\n      continue;\n    }\n\n    if (path) {\n      result.push(path);\n      path = \"\";\n    }\n\n    const open = tryConsume(\"OPEN\");\n    if (open) {\n      const prefix = consumeText();\n      const name = tryConsume(\"NAME\") || \"\";\n      const pattern = tryConsume(\"PATTERN\") || \"\";\n      const suffix = consumeText();\n\n      mustConsume(\"CLOSE\");\n\n      result.push({\n        name: name || (pattern ? key++ : \"\"),\n        pattern: name && !pattern ? defaultPattern : pattern,\n        prefix,\n        suffix,\n        modifier: tryConsume(\"MODIFIER\") || \"\",\n      });\n      continue;\n    }\n\n    mustConsume(\"END\");\n  }\n\n  return result;\n}\n\nexport interface TokensToFunctionOptions {\n  /**\n   * When `true` the regexp will be case sensitive. (default: `false`)\n   */\n  sensitive?: boolean;\n  /**\n   * Function for encoding input strings for output.\n   */\n  encode?: (value: string, token: Key) => string;\n  /**\n   * When `false` the function can produce an invalid (unmatched) path. (default: `true`)\n   */\n  validate?: boolean;\n}\n\n/**\n * Compile a string to a template function for the path.\n */\nexport function compile<P extends object = object>(\n  str: string,\n  options?: ParseOptions & TokensToFunctionOptions,\n) {\n  return tokensToFunction<P>(parse(str, options), options);\n}\n\nexport type PathFunction<P extends object = object> = (data?: P) => string;\n\n/**\n * Expose a method for transforming tokens into the path function.\n */\nexport function tokensToFunction<P extends object = object>(\n  tokens: Token[],\n  options: TokensToFunctionOptions = {},\n): PathFunction<P> {\n  const reFlags = flags(options);\n  const { encode = (x: string) => x, validate = true } = options;\n\n  // Compile all the tokens into regexps.\n  const matches = tokens.map((token) => {\n    if (typeof token === \"object\") {\n      return new RegExp(`^(?:${token.pattern})$`, reFlags);\n    }\n  });\n\n  return (data: Record<string, any> | null | undefined) => {\n    let path = \"\";\n\n    for (let i = 0; i < tokens.length; i++) {\n      const token = tokens[i];\n\n      if (typeof token === \"string\") {\n        path += token;\n        continue;\n      }\n\n      const value = data ? data[token.name] : undefined;\n      const optional = token.modifier === \"?\" || token.modifier === \"*\";\n      const repeat = token.modifier === \"*\" || token.modifier === \"+\";\n\n      if (Array.isArray(value)) {\n        if (!repeat) {\n          throw new TypeError(\n            `Expected \"${token.name}\" to not repeat, but got an array`,\n          );\n        }\n\n        if (value.length === 0) {\n          if (optional) continue;\n\n          throw new TypeError(`Expected \"${token.name}\" to not be empty`);\n        }\n\n        for (let j = 0; j < value.length; j++) {\n          const segment = encode(value[j], token);\n\n          if (validate && !(matches[i] as RegExp).test(segment)) {\n            throw new TypeError(\n              `Expected all \"${token.name}\" to match \"${token.pattern}\", but got \"${segment}\"`,\n            );\n          }\n\n          path += token.prefix + segment + token.suffix;\n        }\n\n        continue;\n      }\n\n      if (typeof value === \"string\" || typeof value === \"number\") {\n        const segment = encode(String(value), token);\n\n        if (validate && !(matches[i] as RegExp).test(segment)) {\n          throw new TypeError(\n            `Expected \"${token.name}\" to match \"${token.pattern}\", but got \"${segment}\"`,\n          );\n        }\n\n        path += token.prefix + segment + token.suffix;\n        continue;\n      }\n\n      if (optional) continue;\n\n      const typeOfMessage = repeat ? \"an array\" : \"a string\";\n      throw new TypeError(`Expected \"${token.name}\" to be ${typeOfMessage}`);\n    }\n\n    return path;\n  };\n}\n\nexport interface RegexpToFunctionOptions {\n  /**\n   * Function for decoding strings for params.\n   */\n  decode?: (value: string, token: Key) => string;\n}\n\n/**\n * A match result contains data about the path match.\n */\nexport interface MatchResult<P extends object = object> {\n  path: string;\n  index: number;\n  params: P;\n}\n\n/**\n * A match is either `false` (no match) or a match result.\n */\nexport type Match<P extends object = object> = false | MatchResult<P>;\n\n/**\n * The match function takes a string and returns whether it matched the path.\n */\nexport type MatchFunction<P extends object = object> = (\n  path: string,\n) => Match<P>;\n\n/**\n * Create path match function from `path-to-regexp` spec.\n */\nexport function match<P extends object = object>(\n  str: Path,\n  options?: ParseOptions & TokensToRegexpOptions & RegexpToFunctionOptions,\n) {\n  const keys: Key[] = [];\n  const re = pathToRegexp(str, keys, options);\n  return regexpToFunction<P>(re, keys, options);\n}\n\n/**\n * Create a path match function from `path-to-regexp` output.\n */\nexport function regexpToFunction<P extends object = object>(\n  re: RegExp,\n  keys: Key[],\n  options: RegexpToFunctionOptions = {},\n): MatchFunction<P> {\n  const { decode = (x: string) => x } = options;\n\n  return function (pathname: string) {\n    const m = re.exec(pathname);\n    if (!m) return false;\n\n    const { 0: path, index } = m;\n    const params = Object.create(null);\n\n    for (let i = 1; i < m.length; i++) {\n      if (m[i] === undefined) continue;\n\n      const key = keys[i - 1];\n\n      if (key.modifier === \"*\" || key.modifier === \"+\") {\n        params[key.name] = m[i].split(key.prefix + key.suffix).map((value) => {\n          return decode(value, key);\n        });\n      } else {\n        params[key.name] = decode(m[i], key);\n      }\n    }\n\n    return { path, index, params };\n  };\n}\n\n/**\n * Escape a regular expression string.\n */\nfunction escapeString(str: string) {\n  return str.replace(/([.+*?=^!:${}()[\\]|/\\\\])/g, \"\\\\$1\");\n}\n\n/**\n * Get the flags for a regexp from the options.\n */\nfunction flags(options?: { sensitive?: boolean }) {\n  return options && options.sensitive ? \"\" : \"i\";\n}\n\n/**\n * Metadata about a key.\n */\nexport interface Key {\n  name: string | number;\n  prefix: string;\n  suffix: string;\n  pattern: string;\n  modifier: string;\n}\n\n/**\n * A token is a string (nothing special) or key metadata (capture group).\n */\nexport type Token = string | Key;\n\n/**\n * Pull out keys from a regexp.\n */\nfunction regexpToRegexp(path: RegExp, keys?: Key[]): RegExp {\n  if (!keys) return path;\n\n  const groupsRegex = /\\((?:\\?<(.*?)>)?(?!\\?)/g;\n\n  let index = 0;\n  let execResult = groupsRegex.exec(path.source);\n  while (execResult) {\n    keys.push({\n      // Use parenthesized substring match if available, index otherwise\n      name: execResult[1] || index++,\n      prefix: \"\",\n      suffix: \"\",\n      modifier: \"\",\n      pattern: \"\",\n    });\n    execResult = groupsRegex.exec(path.source);\n  }\n\n  return path;\n}\n\n/**\n * Transform an array into a regexp.\n */\nfunction arrayToRegexp(\n  paths: Array<string | RegExp>,\n  keys?: Key[],\n  options?: TokensToRegexpOptions & ParseOptions,\n): RegExp {\n  const parts = paths.map((path) => pathToRegexp(path, keys, options).source);\n  return new RegExp(`(?:${parts.join(\"|\")})`, flags(options));\n}\n\n/**\n * Create a path regexp from string input.\n */\nfunction stringToRegexp(\n  path: string,\n  keys?: Key[],\n  options?: TokensToRegexpOptions & ParseOptions,\n) {\n  return tokensToRegexp(parse(path, options), keys, options);\n}\n\nexport interface TokensToRegexpOptions {\n  /**\n   * When `true` the regexp will be case sensitive. (default: `false`)\n   */\n  sensitive?: boolean;\n  /**\n   * When `true` the regexp won't allow an optional trailing delimiter to match. (default: `false`)\n   */\n  strict?: boolean;\n  /**\n   * When `true` the regexp will match to the end of the string. (default: `true`)\n   */\n  end?: boolean;\n  /**\n   * When `true` the regexp will match from the beginning of the string. (default: `true`)\n   */\n  start?: boolean;\n  /**\n   * Sets the final character for non-ending optimistic matches. (default: `/`)\n   */\n  delimiter?: string;\n  /**\n   * List of characters that can also be \"end\" characters.\n   */\n  endsWith?: string;\n  /**\n   * Encode path tokens for use in the `RegExp`.\n   */\n  encode?: (value: string) => string;\n}\n\n/**\n * Expose a function for taking tokens and returning a RegExp.\n */\nexport function tokensToRegexp(\n  tokens: Token[],\n  keys?: Key[],\n  options: TokensToRegexpOptions = {},\n) {\n  const {\n    strict = false,\n    start = true,\n    end = true,\n    encode = (x: string) => x,\n    delimiter = \"/#?\",\n    endsWith = \"\",\n  } = options;\n  const endsWithRe = `[${escapeString(endsWith)}]|$`;\n  const delimiterRe = `[${escapeString(delimiter)}]`;\n  let route = start ? \"^\" : \"\";\n\n  // Iterate over the tokens and create our regexp string.\n  for (const token of tokens) {\n    if (typeof token === \"string\") {\n      route += escapeString(encode(token));\n    } else {\n      const prefix = escapeString(encode(token.prefix));\n      const suffix = escapeString(encode(token.suffix));\n\n      if (token.pattern) {\n        if (keys) keys.push(token);\n\n        if (prefix || suffix) {\n          if (token.modifier === \"+\" || token.modifier === \"*\") {\n            const mod = token.modifier === \"*\" ? \"?\" : \"\";\n            route += `(?:${prefix}((?:${token.pattern})(?:${suffix}${prefix}(?:${token.pattern}))*)${suffix})${mod}`;\n          } else {\n            route += `(?:${prefix}(${token.pattern})${suffix})${token.modifier}`;\n          }\n        } else {\n          if (token.modifier === \"+\" || token.modifier === \"*\") {\n            route += `((?:${token.pattern})${token.modifier})`;\n          } else {\n            route += `(${token.pattern})${token.modifier}`;\n          }\n        }\n      } else {\n        route += `(?:${prefix}${suffix})${token.modifier}`;\n      }\n    }\n  }\n\n  if (end) {\n    if (!strict) route += `${delimiterRe}?`;\n\n    route += !options.endsWith ? \"$\" : `(?=${endsWithRe})`;\n  } else {\n    const endToken = tokens[tokens.length - 1];\n    const isEndDelimited =\n      typeof endToken === \"string\"\n        ? delimiterRe.indexOf(endToken[endToken.length - 1]) > -1\n        : endToken === undefined;\n\n    if (!strict) {\n      route += `(?:${delimiterRe}(?=${endsWithRe}))?`;\n    }\n\n    if (!isEndDelimited) {\n      route += `(?=${delimiterRe}|${endsWithRe})`;\n    }\n  }\n\n  return new RegExp(route, flags(options));\n}\n\n/**\n * Supported `path-to-regexp` input types.\n */\nexport type Path = string | RegExp | Array<string | RegExp>;\n\n/**\n * Normalize the given path string, returning a regular expression.\n *\n * An empty array can be passed in for the keys, which will hold the\n * placeholder key descriptions. For example, using `/user/:id`, `keys` will\n * contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`.\n */\nexport function pathToRegexp(\n  path: Path,\n  keys?: Key[],\n  options?: TokensToRegexpOptions & ParseOptions,\n) {\n  if (path instanceof RegExp) return regexpToRegexp(path, keys);\n  if (Array.isArray(path)) return arrayToRegexp(path, keys, options);\n  return stringToRegexp(path, keys, options);\n}\n", "import { getWindow, getDocument } from 'ssr-window';\nimport $ from './dom7.js';\nimport { extend } from './utils.js';\nconst History = {\n  queue: [],\n  clearQueue() {\n    if (History.queue.length === 0) return;\n    const currentQueue = History.queue.shift();\n    currentQueue();\n  },\n  routerQueue: [],\n  clearRouterQueue() {\n    if (History.routerQueue.length === 0) return;\n    const currentQueue = History.routerQueue.pop();\n    const {\n      router,\n      stateUrl,\n      action\n    } = currentQueue;\n    let animate = router.params.animate;\n    if (router.params.browserHistoryAnimate === false) animate = false;\n    if (action === 'back') {\n      router.back({\n        animate,\n        browserHistory: false\n      });\n    }\n    if (action === 'load') {\n      router.navigate(stateUrl, {\n        animate,\n        browserHistory: false\n      });\n    }\n  },\n  handle(e) {\n    if (History.blockPopstate) return;\n    const app = this;\n    // const mainView = app.views.main;\n    let state = e.state;\n    History.previousState = History.state;\n    History.state = state;\n    History.allowChange = true;\n    History.clearQueue();\n    state = History.state;\n    if (!state) state = {};\n    app.views.forEach(view => {\n      const router = view.router;\n      let viewState = state[view.id];\n      if (!viewState && view.params.browserHistory) {\n        viewState = {\n          url: view.router.history[0]\n        };\n      }\n      if (!viewState) return;\n      const stateUrl = viewState.url || undefined;\n      let animate = router.params.animate;\n      if (router.params.browserHistoryAnimate === false) animate = false;\n      if (stateUrl !== router.url) {\n        if (router.history.indexOf(stateUrl) >= 0) {\n          // Go Back\n          if (router.allowPageChange) {\n            router.back({\n              animate,\n              browserHistory: false\n            });\n          } else {\n            History.routerQueue.push({\n              action: 'back',\n              router\n            });\n          }\n        } else if (router.allowPageChange) {\n          // Load page\n          router.navigate(stateUrl, {\n            animate,\n            browserHistory: false\n          });\n        } else {\n          History.routerQueue.unshift({\n            action: 'load',\n            stateUrl,\n            router\n          });\n        }\n      }\n    });\n  },\n  initViewState(viewId, viewState) {\n    const window = getWindow();\n    const newState = extend({}, History.state || {}, {\n      [viewId]: viewState\n    });\n    History.state = newState;\n    window.history.replaceState(newState, '');\n  },\n  push(viewId, viewState, url) {\n    const window = getWindow();\n    const document = getDocument();\n    /* eslint-disable no-param-reassign */\n    if (url.substr(-3) === '#!/') {\n      url = url.replace('#!/', '');\n      if (url === '') {\n        url = document.location.href;\n        if (url.includes('#!/')) {\n          url = document.location.href.split('#!/')[0];\n        }\n      }\n    }\n    /* eslint-enable no-param-reassign */\n    if (!History.allowChange) {\n      History.queue.push(() => {\n        History.push(viewId, viewState, url);\n      });\n      return;\n    }\n    History.previousState = History.state;\n    const newState = extend({}, History.previousState || {}, {\n      [viewId]: viewState\n    });\n    History.state = newState;\n    window.history.pushState(newState, '', url);\n  },\n  replace(viewId, viewState, url) {\n    const window = getWindow();\n    if (url.substr(-3) === '#!/') {\n      // eslint-disable-next-line\n      url = url.replace('#!/', '');\n    }\n    if (!History.allowChange) {\n      History.queue.push(() => {\n        History.replace(viewId, viewState, url);\n      });\n      return;\n    }\n    History.previousState = History.state;\n    const newState = extend({}, History.previousState || {}, {\n      [viewId]: viewState\n    });\n    History.state = newState;\n    window.history.replaceState(newState, '', url);\n  },\n  go(index) {\n    const window = getWindow();\n    History.allowChange = false;\n    window.history.go(index);\n  },\n  back() {\n    const window = getWindow();\n    History.allowChange = false;\n    window.history.back();\n  },\n  allowChange: true,\n  previousState: {},\n  state: {},\n  blockPopstate: true,\n  init(app) {\n    const window = getWindow();\n    const document = getDocument();\n    History.state = window.history.state;\n    $(window).on('load', () => {\n      setTimeout(() => {\n        History.blockPopstate = false;\n      }, 0);\n    });\n    if (document.readyState && document.readyState === 'complete') {\n      History.blockPopstate = false;\n    }\n    $(window).on('popstate', History.handle.bind(app));\n  }\n};\nexport default History;", "import $ from '../../shared/dom7.js';\nimport History from '../../shared/history.js';\nimport { getSupport } from '../../shared/get-support.js';\nimport { getDevice } from '../../shared/get-device.js';\nimport { now } from '../../shared/utils.js';\nfunction SwipeBack(r) {\n  const router = r;\n  const {\n    $el,\n    $navbarsEl,\n    app,\n    params\n  } = router;\n  const support = getSupport();\n  const device = getDevice();\n  let isTouched = false;\n  let isMoved = false;\n  const touchesStart = {};\n  let isScrolling;\n  let $currentPageEl = [];\n  let $previousPageEl = [];\n  let viewContainerWidth;\n  let touchesDiff;\n  let allowViewTouchMove = true;\n  let touchStartTime;\n  let $currentNavbarEl = [];\n  let $previousNavbarEl = [];\n  let dynamicNavbar;\n  let $pageShadowEl;\n  let $pageOpacityEl;\n  let animatableNavEls;\n  const paramsSwipeBackAnimateShadow = params[`${app.theme}SwipeBackAnimateShadow`];\n  const paramsSwipeBackAnimateOpacity = params[`${app.theme}SwipeBackAnimateOpacity`];\n  const paramsSwipeBackActiveArea = params[`${app.theme}SwipeBackActiveArea`];\n  const paramsSwipeBackThreshold = params[`${app.theme}SwipeBackThreshold`];\n  const transformOrigin = app.rtl ? 'right center' : 'left center';\n  const transformOriginTitleLarge = app.rtl ? 'calc(100% - var(--f7-navbar-large-title-padding-left) - var(--f7-safe-area-left)) center' : 'calc(var(--f7-navbar-large-title-padding-left) + var(--f7-safe-area-left)) center';\n  function animatableNavElements() {\n    const els = [];\n    const inverter = app.rtl ? -1 : 1;\n    const currentNavIsTransparent = $currentNavbarEl.hasClass('navbar-transparent') && !$currentNavbarEl.hasClass('navbar-large') && !$currentNavbarEl.hasClass('navbar-transparent-visible');\n    const currentNavIsLarge = $currentNavbarEl.hasClass('navbar-large');\n    const currentNavIsCollapsed = $currentNavbarEl.hasClass('navbar-large-collapsed');\n    const currentNavIsLargeTransparent = $currentNavbarEl.hasClass('navbar-large-transparent') || $currentNavbarEl.hasClass('navbar-large') && $currentNavbarEl.hasClass('navbar-transparent');\n    const previousNavIsTransparent = $previousNavbarEl.hasClass('navbar-transparent') && !$previousNavbarEl.hasClass('navbar-large') && !$previousNavbarEl.hasClass('navbar-transparent-visible');\n    const previousNavIsLarge = $previousNavbarEl.hasClass('navbar-large');\n    const previousNavIsCollapsed = $previousNavbarEl.hasClass('navbar-large-collapsed');\n    const previousNavIsLargeTransparent = $previousNavbarEl.hasClass('navbar-large-transparent') || $previousNavbarEl.hasClass('navbar-large') && $previousNavbarEl.hasClass('navbar-transparent');\n    const fromLarge = currentNavIsLarge && !currentNavIsCollapsed;\n    const toLarge = previousNavIsLarge && !previousNavIsCollapsed;\n    const $currentNavElements = $currentNavbarEl.find('.left, .title, .right, .subnavbar, .fading, .title-large, .navbar-bg');\n    const $previousNavElements = $previousNavbarEl.find('.left, .title, .right, .subnavbar, .fading, .title-large, .navbar-bg');\n    let activeNavBackIconText;\n    let previousNavBackIconText;\n    if (params.iosAnimateNavbarBackIcon) {\n      if ($currentNavbarEl.hasClass('sliding') || $currentNavbarEl.find('.navbar-inner.sliding').length) {\n        activeNavBackIconText = $currentNavbarEl.find('.left').find('.back .icon + span').eq(0);\n      } else {\n        activeNavBackIconText = $currentNavbarEl.find('.left.sliding').find('.back .icon + span').eq(0);\n      }\n      if ($previousNavbarEl.hasClass('sliding') || $previousNavbarEl.find('.navbar-inner.sliding').length) {\n        previousNavBackIconText = $previousNavbarEl.find('.left').find('.back .icon + span').eq(0);\n      } else {\n        previousNavBackIconText = $previousNavbarEl.find('.left.sliding').find('.back .icon + span').eq(0);\n      }\n      if (activeNavBackIconText.length) {\n        $previousNavElements.each(el => {\n          if (!$(el).hasClass('title')) return;\n          el.f7NavbarLeftOffset += activeNavBackIconText.prev('.icon')[0].offsetWidth;\n        });\n      }\n    }\n    $currentNavElements.each(navEl => {\n      const $navEl = $(navEl);\n      const isSubnavbar = $navEl.hasClass('subnavbar');\n      const isLeft = $navEl.hasClass('left');\n      const isTitle = $navEl.hasClass('title');\n      const isBg = $navEl.hasClass('navbar-bg');\n      if ((isTitle || isBg) && currentNavIsTransparent) return;\n      if (!fromLarge && $navEl.hasClass('.title-large')) return;\n      const el = {\n        el: navEl\n      };\n      if (fromLarge) {\n        if (isTitle) return;\n        if ($navEl.hasClass('title-large')) {\n          if (els.indexOf(el) < 0) els.push(el);\n          el.overflow = 'visible';\n          $navEl.find('.title-large-text').each(subNavEl => {\n            els.push({\n              el: subNavEl,\n              transform: progress => `translateX(${progress * 100 * inverter}%)`\n            });\n          });\n          return;\n        }\n      }\n      if (toLarge) {\n        if (!fromLarge) {\n          if ($navEl.hasClass('title-large')) {\n            if (els.indexOf(el) < 0) els.push(el);\n            el.opacity = 0;\n          }\n        }\n        if (isLeft) {\n          if (els.indexOf(el) < 0) els.push(el);\n          el.opacity = progress => 1 - progress ** 0.33;\n          $navEl.find('.back span').each(subNavEl => {\n            els.push({\n              el: subNavEl,\n              'transform-origin': transformOrigin,\n              transform: progress => `translateX(calc(${progress} * (var(--f7-navbarTitleLargeOffset) - var(--f7-navbarLeftTextOffset)))) translateY(calc(${progress} * (var(--f7-navbar-large-title-height) - var(--f7-navbar-large-title-padding-vertical) / 2))) scale(${1 + 1 * progress})`\n            });\n          });\n          return;\n        }\n      }\n      if (isBg) {\n        if (els.indexOf(el) < 0) els.push(el);\n        if (!fromLarge && !toLarge) {\n          if (currentNavIsCollapsed) {\n            if (currentNavIsLargeTransparent) {\n              el.className = 'ios-swipeback-navbar-bg-large';\n            }\n            el.transform = progress => `translateX(${100 * progress * inverter}%) translateY(calc(-1 * var(--f7-navbar-large-title-height)))`;\n          } else {\n            el.transform = progress => `translateX(${100 * progress * inverter}%)`;\n          }\n        }\n        if (!fromLarge && toLarge) {\n          el.className = 'ios-swipeback-navbar-bg-large';\n          el.transform = progress => `translateX(${100 * progress * inverter}%) translateY(calc(-1 * ${1 - progress} * var(--f7-navbar-large-title-height)))`;\n        }\n        if (fromLarge && toLarge) {\n          el.transform = progress => `translateX(${100 * progress * inverter}%)`;\n        }\n        if (fromLarge && !toLarge) {\n          el.transform = progress => `translateX(${100 * progress * inverter}%) translateY(calc(-${progress} * var(--f7-navbar-large-title-height)))`;\n        }\n        return;\n      }\n      if ($navEl.hasClass('title-large')) return;\n      const isSliding = $navEl.hasClass('sliding') || $navEl.parents('.navbar-inner.sliding').length;\n      if (els.indexOf(el) < 0) els.push(el);\n      if (!isSubnavbar || isSubnavbar && !isSliding) {\n        el.opacity = progress => 1 - progress ** 0.33;\n      }\n      if (isSliding) {\n        let transformTarget = el;\n        if (isLeft && activeNavBackIconText.length && params.iosAnimateNavbarBackIcon) {\n          const textEl = {\n            el: activeNavBackIconText[0]\n          };\n          transformTarget = textEl;\n          els.push(textEl);\n        }\n        transformTarget.transform = progress => {\n          let activeNavTranslate = progress * transformTarget.el.f7NavbarRightOffset;\n          if (device.pixelRatio === 1) activeNavTranslate = Math.round(activeNavTranslate);\n          if (isSubnavbar && currentNavIsLarge) {\n            return `translate3d(${activeNavTranslate}px, calc(-1 * var(--f7-navbar-large-collapse-progress) * var(--f7-navbar-large-title-height)), 0)`;\n          }\n          return `translate3d(${activeNavTranslate}px,0,0)`;\n        };\n      }\n    });\n    $previousNavElements.each(navEl => {\n      const $navEl = $(navEl);\n      const isSubnavbar = $navEl.hasClass('subnavbar');\n      const isLeft = $navEl.hasClass('left');\n      const isTitle = $navEl.hasClass('title');\n      const isBg = $navEl.hasClass('navbar-bg');\n      if ((isTitle || isBg) && previousNavIsTransparent) return;\n      const el = {\n        el: navEl\n      };\n      if (toLarge) {\n        if (isTitle) return;\n        if (els.indexOf(el) < 0) els.push(el);\n        if ($navEl.hasClass('title-large')) {\n          el.opacity = 1;\n          el.overflow = 'visible';\n          $navEl.find('.title-large-text').each(subNavEl => {\n            els.push({\n              el: subNavEl,\n              'transform-origin': transformOriginTitleLarge,\n              opacity: progress => progress ** 3,\n              transform: progress => `translateX(calc(${1 - progress} * (var(--f7-navbarLeftTextOffset) - var(--f7-navbarTitleLargeOffset)))) translateY(calc(${progress - 1} * var(--f7-navbar-large-title-height) + ${1 - progress} * var(--f7-navbar-large-title-padding-vertical))) scale(${0.5 + progress * 0.5})`\n            });\n          });\n          return;\n        }\n      }\n      if (isBg) {\n        if (els.indexOf(el) < 0) els.push(el);\n        if (!fromLarge && !toLarge) {\n          if (previousNavIsCollapsed) {\n            if (previousNavIsLargeTransparent) {\n              el.className = 'ios-swipeback-navbar-bg-large';\n            }\n            el.transform = progress => `translateX(${(-100 + 100 * progress) * inverter}%) translateY(calc(-1 * var(--f7-navbar-large-title-height)))`;\n          } else {\n            el.transform = progress => `translateX(${(-100 + 100 * progress) * inverter}%)`;\n          }\n        }\n        if (!fromLarge && toLarge) {\n          el.transform = progress => `translateX(${(-100 + 100 * progress) * inverter}%) translateY(calc(-1 * ${1 - progress} * var(--f7-navbar-large-title-height)))`;\n        }\n        if (fromLarge && !toLarge) {\n          el.className = 'ios-swipeback-navbar-bg-large';\n          el.transform = progress => `translateX(${(-100 + 100 * progress) * inverter}%) translateY(calc(-${progress} * var(--f7-navbar-large-title-height)))`;\n        }\n        if (fromLarge && toLarge) {\n          el.transform = progress => `translateX(${(-100 + 100 * progress) * inverter}%)`;\n        }\n        return;\n      }\n      if ($navEl.hasClass('title-large')) return;\n      const isSliding = $navEl.hasClass('sliding') || $previousNavbarEl.children('.navbar-inner.sliding').length;\n      if (els.indexOf(el) < 0) els.push(el);\n      if (!isSubnavbar || isSubnavbar && !isSliding) {\n        el.opacity = progress => progress ** 3;\n      }\n      if (isSliding) {\n        let transformTarget = el;\n        if (isLeft && previousNavBackIconText.length && params.iosAnimateNavbarBackIcon) {\n          const textEl = {\n            el: previousNavBackIconText[0]\n          };\n          transformTarget = textEl;\n          els.push(textEl);\n        }\n        transformTarget.transform = progress => {\n          let previousNavTranslate = transformTarget.el.f7NavbarLeftOffset * (1 - progress);\n          if (device.pixelRatio === 1) previousNavTranslate = Math.round(previousNavTranslate);\n          if (isSubnavbar && previousNavIsLarge) {\n            return `translate3d(${previousNavTranslate}px, calc(-1 * var(--f7-navbar-large-collapse-progress) * var(--f7-navbar-large-title-height)), 0)`;\n          }\n          return `translate3d(${previousNavTranslate}px,0,0)`;\n        };\n      }\n    });\n    return els;\n  }\n  function setAnimatableNavElements(_temp) {\n    let {\n      progress,\n      reset,\n      transition,\n      reflow\n    } = _temp === void 0 ? {} : _temp;\n    const styles = ['overflow', 'transform', 'transform-origin', 'opacity'];\n    if (transition === true || transition === false) {\n      for (let i = 0; i < animatableNavEls.length; i += 1) {\n        const el = animatableNavEls[i];\n        if (el && el.el) {\n          if (transition === true) el.el.classList.add('navbar-page-transitioning');\n          if (transition === false) el.el.classList.remove('navbar-page-transitioning');\n        }\n      }\n    }\n    if (reflow && animatableNavEls.length && animatableNavEls[0] && animatableNavEls[0].el) {\n      // eslint-disable-next-line\n      animatableNavEls[0].el._clientLeft = animatableNavEls[0].el.clientLeft;\n    }\n    for (let i = 0; i < animatableNavEls.length; i += 1) {\n      const el = animatableNavEls[i];\n      if (el && el.el) {\n        if (el.className && !el.classNameSet && !reset) {\n          el.el.classList.add(el.className);\n          el.classNameSet = true;\n        }\n        if (el.className && reset) {\n          el.el.classList.remove(el.className);\n        }\n        for (let j = 0; j < styles.length; j += 1) {\n          const styleProp = styles[j];\n          if (el[styleProp]) {\n            if (reset) {\n              el.el.style[styleProp] = '';\n            } else if (typeof el[styleProp] === 'function') {\n              el.el.style[styleProp] = el[styleProp](progress);\n            } else {\n              el.el.style[styleProp] = el[styleProp];\n            }\n          }\n        }\n      }\n    }\n  }\n  function handleTouchStart(e) {\n    if (!e.isTrusted) return;\n    const 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    if ($(e.target).closest('.page-master, .page-master-detail').length > 0 && params.masterDetailBreakpoint > 0 && app.width >= params.masterDetailBreakpoint) return;\n    isMoved = false;\n    isTouched = true;\n    isScrolling = undefined;\n    touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n    touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n    touchStartTime = now();\n    dynamicNavbar = router.dynamicNavbar;\n  }\n  function handleTouchMove(e) {\n    if (!e.isTrusted) return;\n    if (!isTouched) return;\n    const pageX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n    const pageY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n    if (typeof isScrolling === 'undefined') {\n      isScrolling = !!(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      let cancel = false;\n      const target = $(e.target);\n      const swipeout = target.closest('.swipeout');\n      if (swipeout.length > 0) {\n        if (!app.rtl && swipeout.find('.swipeout-actions-left').length > 0) cancel = true;\n        if (app.rtl && swipeout.find('.swipeout-actions-right').length > 0) cancel = true;\n      }\n      $currentPageEl = target.closest('.page');\n      if ($currentPageEl.hasClass('no-swipeback') || target.closest('.no-swipeback, .card-opened').length > 0) cancel = true;\n      $previousPageEl = $el.find('.page-previous');\n      if ($previousPageEl.length > 1) {\n        $previousPageEl = $previousPageEl.eq($previousPageEl.length - 1);\n      }\n      let notFromBorder = touchesStart.x - $el.offset().left > paramsSwipeBackActiveArea;\n      viewContainerWidth = $el.width();\n      if (app.rtl) {\n        notFromBorder = 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 ($previousPageEl.length === 0 || $currentPageEl.length === 0) cancel = true;\n      if (cancel) {\n        isTouched = false;\n        return;\n      }\n      if (paramsSwipeBackAnimateShadow) {\n        $pageShadowEl = $currentPageEl.find('.page-shadow-effect');\n        if ($pageShadowEl.length === 0) {\n          $pageShadowEl = $('<div class=\"page-shadow-effect\"></div>');\n          $currentPageEl.append($pageShadowEl);\n        }\n      }\n      if (paramsSwipeBackAnimateOpacity) {\n        $pageOpacityEl = $previousPageEl.find('.page-opacity-effect');\n        if ($pageOpacityEl.length === 0) {\n          $pageOpacityEl = $('<div class=\"page-opacity-effect\"></div>');\n          $previousPageEl.append($pageOpacityEl);\n        }\n      }\n      if (dynamicNavbar) {\n        $currentNavbarEl = $navbarsEl.find('.navbar-current');\n        $previousNavbarEl = $navbarsEl.find('.navbar-previous');\n        if ($previousNavbarEl.length > 1) {\n          $previousNavbarEl = $previousNavbarEl.eq($previousNavbarEl.length - 1);\n        }\n        animatableNavEls = animatableNavElements($previousNavbarEl, $currentNavbarEl);\n      }\n\n      // Close/Hide Any Picker\n      if ($('.sheet.modal-in').length > 0 && app.sheet) {\n        app.sheet.close($('.sheet.modal-in'));\n      }\n    }\n    e.f7PreventSwipePanel = true;\n    isMoved = true;\n    app.preventSwipePanelBySwipeBack = true;\n    e.preventDefault();\n\n    // RTL inverter\n    const inverter = app.rtl ? -1 : 1;\n\n    // Touches diff\n    touchesDiff = (pageX - touchesStart.x - paramsSwipeBackThreshold) * inverter;\n    if (touchesDiff < 0) touchesDiff = 0;\n    const percentage = Math.min(Math.max(touchesDiff / viewContainerWidth, 0), 1);\n\n    // Swipe Back Callback\n    const callbackData = {\n      percentage,\n      progress: percentage,\n      currentPageEl: $currentPageEl[0],\n      previousPageEl: $previousPageEl[0],\n      currentNavbarEl: $currentNavbarEl[0],\n      previousNavbarEl: $previousNavbarEl[0]\n    };\n    $el.trigger('swipeback:move', callbackData);\n    router.emit('swipebackMove', callbackData);\n\n    // Transform pages\n    let currentPageTranslate = touchesDiff * inverter;\n    let previousPageTranslate = (touchesDiff / 5 - viewContainerWidth / 5) * inverter;\n    if (!app.rtl) {\n      currentPageTranslate = Math.min(currentPageTranslate, viewContainerWidth);\n      previousPageTranslate = Math.min(previousPageTranslate, 0);\n    } else {\n      currentPageTranslate = Math.max(currentPageTranslate, -viewContainerWidth);\n      previousPageTranslate = Math.max(previousPageTranslate, 0);\n    }\n    if (device.pixelRatio === 1) {\n      currentPageTranslate = Math.round(currentPageTranslate);\n      previousPageTranslate = Math.round(previousPageTranslate);\n    }\n    router.swipeBackActive = true;\n    $([$currentPageEl[0], $previousPageEl[0]]).addClass('page-swipeback-active');\n    $currentPageEl.transform(`translate3d(${currentPageTranslate}px,0,0)`);\n    if (paramsSwipeBackAnimateShadow) $pageShadowEl[0].style.opacity = 1 - 1 * percentage;\n    if (app.theme === 'ios') {\n      $previousPageEl.transform(`translate3d(${previousPageTranslate}px,0,0)`);\n    }\n    if (paramsSwipeBackAnimateOpacity) $pageOpacityEl[0].style.opacity = 1 - 1 * percentage;\n\n    // Dynamic Navbars Animation\n    if (!dynamicNavbar) return;\n    setAnimatableNavElements({\n      progress: percentage\n    });\n  }\n  function handleTouchEnd(e) {\n    if (!e.isTrusted) return;\n    app.preventSwipePanelBySwipeBack = false;\n    if (!isTouched || !isMoved) {\n      isTouched = false;\n      isMoved = false;\n      return;\n    }\n    isTouched = false;\n    isMoved = false;\n    router.swipeBackActive = false;\n    const $pages = $([$currentPageEl[0], $previousPageEl[0]]);\n    $pages.removeClass('page-swipeback-active');\n    if (touchesDiff === 0) {\n      $pages.transform('');\n      if ($pageShadowEl && $pageShadowEl.length > 0) $pageShadowEl.remove();\n      if ($pageOpacityEl && $pageOpacityEl.length > 0) $pageOpacityEl.remove();\n      if (dynamicNavbar) {\n        setAnimatableNavElements({\n          reset: true\n        });\n      }\n      return;\n    }\n    const timeDiff = now() - touchStartTime;\n    let pageChanged = false;\n    // Swipe back to previous page\n    if (timeDiff < 300 && touchesDiff > 10 || timeDiff >= 300 && touchesDiff > viewContainerWidth / 2) {\n      $currentPageEl.removeClass('page-current').addClass(`page-next${app.theme !== 'ios' ? ' page-next-on-right' : ''}`);\n      $previousPageEl.removeClass('page-previous').addClass('page-current').removeAttr('aria-hidden');\n      if ($pageShadowEl) $pageShadowEl[0].style.opacity = '';\n      if ($pageOpacityEl) $pageOpacityEl[0].style.opacity = '';\n      if (dynamicNavbar) {\n        router.setNavbarPosition($currentNavbarEl, 'next');\n        router.setNavbarPosition($previousNavbarEl, 'current', false);\n      }\n      pageChanged = true;\n    }\n    // Reset custom styles\n    // Add transitioning class for transition-duration\n    $pages.addClass('page-transitioning page-transitioning-swipeback');\n    if (device.ios) {\n      // eslint-disable-next-line\n      $currentPageEl[0]._clientLeft = $currentPageEl[0].clientLeft;\n    }\n    $pages.transform('');\n    if (dynamicNavbar) {\n      setAnimatableNavElements({\n        progress: pageChanged ? 1 : 0,\n        transition: true,\n        reflow: !!device.ios\n      });\n    }\n    allowViewTouchMove = false;\n    router.allowPageChange = false;\n\n    // Swipe Back Callback\n    const callbackData = {\n      currentPageEl: $currentPageEl[0],\n      previousPageEl: $previousPageEl[0],\n      currentNavbarEl: $currentNavbarEl[0],\n      previousNavbarEl: $previousNavbarEl[0]\n    };\n    if (pageChanged) {\n      // Update Route\n      router.currentRoute = $previousPageEl[0].f7Page.route;\n      router.currentPage = $previousPageEl[0];\n\n      // Page before animation callback\n      router.pageCallback('beforeOut', $currentPageEl, $currentNavbarEl, 'current', 'next', {\n        route: $currentPageEl[0].f7Page.route,\n        swipeBack: true\n      });\n      router.pageCallback('beforeIn', $previousPageEl, $previousNavbarEl, 'previous', 'current', {\n        route: $previousPageEl[0].f7Page.route,\n        swipeBack: true\n      }, $currentPageEl[0]);\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    $currentPageEl.transitionEnd(() => {\n      $pages.removeClass('page-transitioning page-transitioning-swipeback');\n      if (dynamicNavbar) {\n        setAnimatableNavElements({\n          reset: true,\n          transition: false\n        });\n      }\n      allowViewTouchMove = true;\n      router.allowPageChange = true;\n      if (pageChanged) {\n        // Update History\n        if (router.history.length === 1) {\n          router.history.unshift(router.url);\n        }\n        router.history.pop();\n        router.saveHistory();\n\n        // Update push state\n        if (params.browserHistory) {\n          History.back();\n        }\n\n        // Page after animation callback\n        router.pageCallback('afterOut', $currentPageEl, $currentNavbarEl, 'current', 'next', {\n          route: $currentPageEl[0].f7Page.route,\n          swipeBack: true\n        });\n        router.pageCallback('afterIn', $previousPageEl, $previousNavbarEl, 'previous', 'current', {\n          route: $previousPageEl[0].f7Page.route,\n          swipeBack: true\n        });\n\n        // Remove Old Page\n\n        router.pageCallback('beforeRemove', $currentPageEl, $currentNavbarEl, 'next', {\n          swipeBack: true\n        });\n        router.removePage($currentPageEl);\n        if (dynamicNavbar) {\n          router.removeNavbar($currentNavbarEl);\n        }\n        $el.trigger('swipeback:afterchange', callbackData);\n        router.emit('swipebackAfterChange', callbackData);\n        router.emit('routeChanged', router.currentRoute, router.previousRoute, router);\n        if (params.preloadPreviousPage) {\n          router.back(router.history[router.history.length - 2], {\n            preload: true\n          });\n        }\n      } else {\n        $el.trigger('swipeback:afterreset', callbackData);\n        router.emit('swipebackAfterReset', callbackData);\n      }\n      if ($pageShadowEl && $pageShadowEl.length > 0) $pageShadowEl.remove();\n      if ($pageOpacityEl && $pageOpacityEl.length > 0) $pageOpacityEl.remove();\n    });\n  }\n  function attachEvents() {\n    const passiveListener = app.touchEvents.start === 'touchstart' && support.passiveListener ? {\n      passive: true,\n      capture: false\n    } : false;\n    $el.on(app.touchEvents.start, handleTouchStart, passiveListener);\n    app.on('touchmove:active', handleTouchMove);\n    app.on('touchend:passive', handleTouchEnd);\n  }\n  function detachEvents() {\n    const passiveListener = app.touchEvents.start === 'touchstart' && support.passiveListener ? {\n      passive: true,\n      capture: false\n    } : false;\n    $el.off(app.touchEvents.start, handleTouchStart, passiveListener);\n    app.off('touchmove:active', handleTouchMove);\n    app.off('touchend:passive', handleTouchEnd);\n  }\n  attachEvents();\n  router.on('routerDestroy', detachEvents);\n}\nexport default SwipeBack;", "import { extend } from '../../shared/utils.js';\nexport default function redirect(direction, route, options) {\n  const router = this;\n  const r = route.route.redirect;\n  const method = direction === 'forward' ? 'navigate' : 'back';\n  if (options.initial && router.params.browserHistory) {\n    options.replaceState = true; // eslint-disable-line\n    options.history = true; // eslint-disable-line\n  }\n\n  function redirectResolve(redirectUrl, redirectOptions) {\n    if (redirectOptions === void 0) {\n      redirectOptions = {};\n    }\n    router.allowPageChange = true;\n    router[method](redirectUrl, extend({}, options, redirectOptions));\n  }\n  function redirectReject() {\n    router.allowPageChange = true;\n  }\n  if (typeof r === 'function') {\n    router.allowPageChange = false;\n    const redirectUrl = r.call(router, {\n      router,\n      to: route,\n      resolve: redirectResolve,\n      reject: redirectReject,\n      direction,\n      app: router.app\n    });\n    if (redirectUrl && typeof redirectUrl === 'string') {\n      router.allowPageChange = true;\n      return router[method](redirectUrl, options);\n    }\n    return router;\n  }\n  return router[method](r, options);\n}", "function processQueue(router, routerQueue, routeQueue, to, from, resolve, reject, direction) {\n  const queue = [];\n  if (Array.isArray(routeQueue)) {\n    queue.push(...routeQueue);\n  } else if (routeQueue && typeof routeQueue === 'function') {\n    queue.push(routeQueue);\n  }\n  if (routerQueue) {\n    if (Array.isArray(routerQueue)) {\n      queue.push(...routerQueue);\n    } else {\n      queue.push(routerQueue);\n    }\n  }\n  function next() {\n    if (queue.length === 0) {\n      resolve();\n      return;\n    }\n    const queueItem = queue.shift();\n    queueItem.call(router, {\n      router,\n      to,\n      from,\n      resolve() {\n        next();\n      },\n      reject() {\n        reject();\n      },\n      direction,\n      app: router.app\n    });\n  }\n  next();\n}\nexport default function processRouteQueue(to, from, resolve, reject, direction) {\n  const router = this;\n  function enterNextRoute() {\n    if (to && to.route && (router.params.routesBeforeEnter || to.route.beforeEnter)) {\n      router.allowPageChange = false;\n      processQueue(router, router.params.routesBeforeEnter, to.route.beforeEnter, to, from, () => {\n        router.allowPageChange = true;\n        resolve();\n      }, () => {\n        reject();\n      }, direction);\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(router, router.params.routesBeforeLeave, from.route.beforeLeave, to, from, () => {\n        router.allowPageChange = true;\n        enterNextRoute();\n      }, () => {\n        reject();\n      }, direction);\n    } else {\n      enterNextRoute();\n    }\n  }\n  leaveCurrentRoute();\n}", "export default 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}", "export default function asyncComponent(router, component, resolve, reject) {\n  function resolvePromise(componentPromise) {\n    componentPromise.then(c => {\n      // eslint-disable-next-line\n      resolve({\n        component: c.default || c._default || c\n      });\n    }).catch(err => {\n      reject();\n      throw new Error(err, {\n        cause: err\n      });\n    });\n  }\n  if (component instanceof Promise) {\n    resolvePromise(component);\n    return;\n  }\n  const asyncComponentResult = component.call(router);\n  if (asyncComponentResult instanceof Promise) {\n    resolvePromise(asyncComponentResult);\n  } else {\n    resolve({\n      component: asyncComponentResult\n    });\n  }\n}", "import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { extend, parseUrlQuery } from '../../shared/utils.js';\nimport History from '../../shared/history.js';\nimport redirect from './redirect.js';\nimport processRouteQueue from './process-route-queue.js';\nimport appRouterCheck from './app-router-check.js';\nimport asyncComponent from './async-component.js';\nfunction refreshPage(props) {\n  if (props === void 0) {\n    props = {};\n  }\n  const router = this;\n  appRouterCheck(router, 'refreshPage');\n  return router.navigate(router.currentRoute.url, {\n    ignoreCache: true,\n    reloadCurrent: true,\n    props\n  });\n}\nfunction forward(router, el, forwardOptions) {\n  if (forwardOptions === void 0) {\n    forwardOptions = {};\n  }\n  const document = getDocument();\n  const $el = $(el);\n  const app = router.app;\n  const view = router.view;\n  const options = extend(false, {\n    animate: router.params.animate,\n    browserHistory: true,\n    replaceState: false,\n    history: true,\n    reloadCurrent: router.params.reloadPages,\n    reloadPrevious: false,\n    reloadAll: false,\n    clearPreviousHistory: false,\n    reloadDetail: router.params.reloadDetail,\n    on: {}\n  }, forwardOptions);\n  const masterDetailEnabled = router.params.masterDetailBreakpoint > 0;\n  const isMaster = masterDetailEnabled && options.route && options.route.route && (options.route.route.master === true || typeof options.route.route.master === 'function' && options.route.route.master(app, router));\n  let masterPageEl;\n  let otherDetailPageEl;\n  let detailsInBetweenRemoved = 0;\n  let currentRouteIsModal = router.currentRoute.modal;\n  let modalType;\n  if (!currentRouteIsModal) {\n    'popup popover sheet loginScreen actions customModal panel'.split(' ').forEach(modalLoadProp => {\n      if (router.currentRoute && router.currentRoute.route && router.currentRoute.route[modalLoadProp]) {\n        currentRouteIsModal = true;\n        modalType = modalLoadProp;\n      }\n    });\n  }\n  if (currentRouteIsModal) {\n    const modalToClose = router.currentRoute.modal || router.currentRoute.route.modalInstance || app[modalType].get();\n    const previousUrl = router.history[router.history.length - 2];\n    let previousRoute = router.findMatchingRoute(previousUrl);\n    if (!previousRoute && previousUrl) {\n      previousRoute = {\n        url: previousUrl,\n        path: previousUrl.split('?')[0],\n        query: parseUrlQuery(previousUrl),\n        route: {\n          path: previousUrl.split('?')[0],\n          url: previousUrl\n        }\n      };\n    }\n    router.modalRemove(modalToClose);\n  }\n  const dynamicNavbar = router.dynamicNavbar;\n  const $viewEl = router.$el;\n  const $newPage = $el;\n  const reload = options.reloadPrevious || options.reloadCurrent || options.reloadAll;\n  let $oldPage;\n  let $navbarsEl;\n  let $newNavbarEl;\n  let $oldNavbarEl;\n  router.allowPageChange = false;\n  if ($newPage.length === 0) {\n    router.allowPageChange = true;\n    return router;\n  }\n  if ($newPage.length) {\n    // Remove theme elements\n    router.removeThemeElements($newPage);\n  }\n  if (dynamicNavbar) {\n    $newNavbarEl = $newPage.children('.navbar');\n    $navbarsEl = router.$navbarsEl;\n    if ($newNavbarEl.length === 0 && $newPage[0] && $newPage[0].f7Page) {\n      // Try from pageData\n      $newNavbarEl = $newPage[0].f7Page.$navbarEl;\n    }\n  }\n\n  // Save Keep Alive Cache\n  if (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  const $pagesInView = $viewEl.children('.page').filter(pageInView => pageInView !== $newPage[0]);\n\n  // Navbars In View\n  let $navbarsInView;\n  if (dynamicNavbar) {\n    $navbarsInView = $navbarsEl.children('.navbar').filter(navbarInView => navbarInView !== $newNavbarEl[0]);\n  }\n\n  // Exit when reload previous and only 1 page in view so nothing ro reload\n  if (options.reloadPrevious && $pagesInView.length < 2) {\n    router.allowPageChange = true;\n    return router;\n  }\n\n  // Find Detail' master page\n  let isDetail;\n  let reloadDetail;\n  let isDetailRoot;\n  if (masterDetailEnabled && !options.reloadAll) {\n    for (let i = 0; i < $pagesInView.length; i += 1) {\n      if (!masterPageEl && $pagesInView[i].classList.contains('page-master')) {\n        masterPageEl = $pagesInView[i];\n        continue; // eslint-disable-line\n      }\n    }\n\n    isDetail = !isMaster && masterPageEl;\n    if (isDetail) {\n      // Find Other Detail\n      if (masterPageEl) {\n        for (let i = 0; i < $pagesInView.length; i += 1) {\n          if ($pagesInView[i].classList.contains('page-master-detail')) {\n            otherDetailPageEl = $pagesInView[i];\n            continue; // eslint-disable-line\n          }\n        }\n      }\n    }\n\n    reloadDetail = isDetail && options.reloadDetail && app.width >= router.params.masterDetailBreakpoint && masterPageEl;\n  }\n  if (isDetail) {\n    isDetailRoot = !otherDetailPageEl || reloadDetail || options.reloadAll || options.reloadCurrent;\n  }\n\n  // New Page\n  let newPagePosition = 'next';\n  if (options.reloadCurrent || options.reloadAll || reloadDetail) {\n    newPagePosition = 'current';\n  } else if (options.reloadPrevious) {\n    newPagePosition = 'previous';\n  }\n  $newPage.removeClass('page-previous page-current page-next').addClass(`page-${newPagePosition}${isMaster ? ' page-master' : ''}${isDetail ? ' page-master-detail' : ''}${isDetailRoot ? ' page-master-detail-root' : ''}`).trigger('page:unstack').trigger('page:position', {\n    position: newPagePosition\n  });\n  router.emit('pageUnstack', $newPage[0]);\n  router.emit('pagePosition', $newPage[0], newPagePosition);\n  if (isMaster || isDetail) {\n    $newPage.trigger('page:role', {\n      role: isMaster ? 'master' : 'detail',\n      root: !!isDetailRoot\n    });\n    router.emit('pageRole', $newPage[0], {\n      role: isMaster ? 'master' : 'detail',\n      detailRoot: !!isDetailRoot\n    });\n  }\n  if (dynamicNavbar && $newNavbarEl.length) {\n    $newNavbarEl.removeClass('navbar-previous navbar-current navbar-next').addClass(`navbar-${newPagePosition}${isMaster ? ' navbar-master' : ''}${isDetail ? ' navbar-master-detail' : ''}${isDetailRoot ? ' navbar-master-detail-root' : ''}`);\n    $newNavbarEl.trigger('navbar:position', {\n      position: newPagePosition\n    });\n    router.emit('navbarPosition', $newNavbarEl[0], newPagePosition);\n    if (isMaster || isDetail) {\n      router.emit('navbarRole', $newNavbarEl[0], {\n        role: isMaster ? 'master' : 'detail',\n        detailRoot: !!isDetailRoot\n      });\n    }\n  }\n\n  // Find Old Page\n  if (options.reloadCurrent || reloadDetail) {\n    if (reloadDetail) {\n      $oldPage = $pagesInView.filter(pageEl => !pageEl.classList.contains('page-master'));\n      if (dynamicNavbar) {\n        $oldNavbarEl = $($oldPage.map(pageEl => app.navbar.getElByPage(pageEl)));\n      }\n      if ($oldPage.length > 1 && masterPageEl) {\n        detailsInBetweenRemoved = $oldPage.length - 1;\n        $(masterPageEl).removeClass('page-master-stacked').trigger('page:masterunstack');\n        router.emit('pageMasterUnstack', masterPageEl);\n        if (dynamicNavbar) {\n          $(app.navbar.getElByPage(masterPageEl)).removeClass('navbar-master-stacked');\n          router.emit('navbarMasterUnstack', app.navbar.getElByPage(masterPageEl));\n        }\n      }\n    } else {\n      $oldPage = $pagesInView.eq($pagesInView.length - 1);\n      if (dynamicNavbar) {\n        $oldNavbarEl = $(app.navbar.getElByPage($oldPage));\n      }\n    }\n  } else if (options.reloadPrevious) {\n    $oldPage = $pagesInView.eq($pagesInView.length - 2);\n    if (dynamicNavbar) {\n      // $oldNavbarEl = $navbarsInView.eq($pagesInView.length - 2);\n      $oldNavbarEl = $(app.navbar.getElByPage($oldPage));\n    }\n  } else if (options.reloadAll) {\n    $oldPage = $pagesInView.filter(pageEl => pageEl !== $newPage[0]);\n    if (dynamicNavbar) {\n      $oldNavbarEl = $navbarsInView.filter(navbarEl => navbarEl !== $newNavbarEl[0]);\n    }\n  } else {\n    let removedPageEls = [];\n    let removedNavbarEls = [];\n    if ($pagesInView.length > 1) {\n      let i = 0;\n      for (i = 0; i < $pagesInView.length - 1; i += 1) {\n        if (masterPageEl && $pagesInView[i] === masterPageEl) {\n          $pagesInView.eq(i).addClass('page-master-stacked');\n          $pagesInView.eq(i).trigger('page:masterstack');\n          router.emit('pageMasterStack', $pagesInView[i]);\n          if (dynamicNavbar) {\n            $(app.navbar.getElByPage(masterPageEl)).addClass('navbar-master-stacked');\n            router.emit('navbarMasterStack', app.navbar.getElByPage(masterPageEl));\n          }\n          continue; // eslint-disable-line\n        }\n\n        const oldNavbarEl = app.navbar.getElByPage($pagesInView.eq(i));\n\n        // Page remove event\n        removedPageEls.push($pagesInView[i]);\n        router.pageCallback('beforeRemove', $pagesInView[i], $navbarsInView && $navbarsInView[i], 'previous', undefined, options);\n        router.removePage($pagesInView[i]);\n        if (dynamicNavbar && oldNavbarEl) {\n          removedNavbarEls.push(oldNavbarEl);\n          router.removeNavbar(oldNavbarEl);\n        }\n      }\n    }\n    $oldPage = $viewEl.children('.page').filter(pageEl => pageEl !== $newPage[0] && removedPageEls.indexOf(pageEl) < 0);\n    if (dynamicNavbar) {\n      $oldNavbarEl = $navbarsEl.children('.navbar').filter(navbarEl => navbarEl !== $newNavbarEl[0] && removedNavbarEls.indexOf(removedNavbarEls) < 0);\n    }\n    removedPageEls = [];\n    removedNavbarEls = [];\n  }\n  if (isDetail && !options.reloadAll) {\n    if ($oldPage.length > 1 || reloadDetail) {\n      $oldPage = $oldPage.filter(pageEl => !pageEl.classList.contains('page-master'));\n    }\n    if ($oldNavbarEl && ($oldNavbarEl.length > 1 || reloadDetail)) {\n      $oldNavbarEl = $oldNavbarEl.filter(navbarEl => !navbarEl.classList.contains('navbar-master'));\n    }\n  }\n\n  // Push State\n  if (router.params.browserHistory && (options.browserHistory || options.replaceState) && !options.reloadPrevious) {\n    const browserHistoryRoot = router.params.browserHistoryRoot || '';\n    History[options.reloadCurrent || reloadDetail && otherDetailPageEl || options.reloadAll || options.replaceState ? 'replace' : 'push'](view.id, {\n      url: options.route.url\n    }, browserHistoryRoot + router.params.browserHistorySeparator + options.route.url);\n  }\n  if (!options.reloadPrevious) {\n    // Current Page & Navbar\n    router.currentPageEl = $newPage[0];\n    if (dynamicNavbar && $newNavbarEl.length) {\n      router.currentNavbarEl = $newNavbarEl[0];\n    } else {\n      delete router.currentNavbarEl;\n    }\n\n    // Current Route\n    router.currentRoute = options.route;\n  }\n\n  // Update router history\n  const url = options.route.url;\n  if (options.history) {\n    if (((options.reloadCurrent || reloadDetail && otherDetailPageEl) && router.history.length) > 0 || options.replaceState) {\n      if (reloadDetail && detailsInBetweenRemoved > 0) {\n        router.history = router.history.slice(0, router.history.length - detailsInBetweenRemoved);\n        router.propsHistory = router.propsHistory.slice(0, router.propsHistory.length - detailsInBetweenRemoved);\n      }\n      router.history[router.history.length - (options.reloadPrevious ? 2 : 1)] = url;\n      router.propsHistory[router.propsHistory.length - (options.reloadPrevious ? 2 : 1)] = options.props || {};\n    } else if (options.reloadPrevious) {\n      router.history[router.history.length - 2] = url;\n      router.propsHistory[router.propsHistory.length - 2] = options.props || {};\n    } else if (options.reloadAll) {\n      router.history = [url];\n      router.propsHistory = [options.props || {}];\n    } else {\n      router.history.push(url);\n      router.propsHistory.push(options.props || {});\n    }\n  }\n  router.saveHistory();\n\n  // Insert new page and navbar\n  const newPageInDom = $newPage.parents(document).length > 0;\n  const f7Component = $newPage[0].f7Component;\n  if (options.reloadPrevious) {\n    if (f7Component && !newPageInDom) {\n      f7Component.mount(componentEl => {\n        $(componentEl).insertBefore($oldPage);\n      });\n    } else {\n      $newPage.insertBefore($oldPage);\n    }\n    if (dynamicNavbar && $newNavbarEl.length) {\n      if ($newNavbarEl.find('.title-large').length) {\n        $newNavbarEl.addClass('navbar-large');\n      }\n      if ($oldNavbarEl.length) {\n        $newNavbarEl.insertBefore($oldNavbarEl);\n      } else {\n        if (!router.$navbarsEl.parents(document).length) {\n          router.$el.prepend(router.$navbarsEl);\n        }\n        $navbarsEl.append($newNavbarEl);\n      }\n    }\n  } else {\n    if ($oldPage.next('.page')[0] !== $newPage[0]) {\n      if (f7Component && !newPageInDom) {\n        f7Component.mount(componentEl => {\n          $viewEl.append(componentEl);\n        });\n      } else {\n        $viewEl.append($newPage[0]);\n      }\n    }\n    if (dynamicNavbar && $newNavbarEl.length) {\n      if ($newNavbarEl.find('.title-large').length) {\n        $newNavbarEl.addClass('navbar-large');\n      }\n      if (!router.$navbarsEl.parents(document).length) {\n        router.$el.prepend(router.$navbarsEl);\n      }\n      $navbarsEl.append($newNavbarEl[0]);\n    }\n  }\n  if (!newPageInDom) {\n    router.pageCallback('mounted', $newPage, $newNavbarEl, 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, $newNavbarEl, newPagePosition, reload ? newPagePosition : 'current', options, $oldPage);\n  }\n\n  // Remove old page\n  if ((options.reloadCurrent || reloadDetail) && $oldPage.length > 0) {\n    // Page remove event\n    router.pageCallback('beforeOut', $oldPage, $oldNavbarEl, 'current', undefined, options);\n    router.pageCallback('afterOut', $oldPage, $oldNavbarEl, 'current', undefined, options);\n    router.pageCallback('beforeRemove', $oldPage, $oldNavbarEl, 'current', undefined, options);\n    router.removePage($oldPage);\n    if (dynamicNavbar && $oldNavbarEl && $oldNavbarEl.length) {\n      router.removeNavbar($oldNavbarEl);\n    }\n  } else if (options.reloadAll) {\n    $oldPage.each((pageEl, index) => {\n      const $oldPageEl = $(pageEl);\n      const $oldNavbarElEl = $(app.navbar.getElByPage($oldPageEl));\n\n      // Page remove event\n      if ($oldPageEl.hasClass('page-current')) {\n        router.pageCallback('beforeOut', $oldPage, $oldNavbarEl, 'current', undefined, options);\n        router.pageCallback('afterOut', $oldPage, $oldNavbarEl, 'current', undefined, options);\n      }\n      router.pageCallback('beforeRemove', $oldPageEl, $oldNavbarEl && $oldNavbarEl.eq(index), 'previous', undefined, options);\n      router.removePage($oldPageEl);\n      if (dynamicNavbar && $oldNavbarElEl.length) {\n        router.removeNavbar($oldNavbarElEl);\n      }\n    });\n  } else if (options.reloadPrevious) {\n    // Page remove event\n    router.pageCallback('beforeRemove', $oldPage, $oldNavbarEl, 'previous', undefined, options);\n    router.removePage($oldPage);\n    if (dynamicNavbar && $oldNavbarEl && $oldNavbarEl.length) {\n      router.removeNavbar($oldNavbarEl);\n    }\n  }\n\n  // Load Tab\n  if (options.route.route.tab) {\n    router.tabLoad(options.route.route.tab, extend({}, options, {\n      history: false,\n      browserHistory: false\n    }));\n  }\n\n  // Check master detail\n  if (masterDetailEnabled) {\n    view.checkMasterDetailBreakpoint();\n  }\n\n  // Page init and before init events\n  router.pageCallback('init', $newPage, $newNavbarEl, newPagePosition, reload ? newPagePosition : 'current', options, $oldPage);\n  if (options.reloadCurrent || options.reloadAll || reloadDetail) {\n    router.allowPageChange = true;\n    router.pageCallback('beforeIn', $newPage, $newNavbarEl, newPagePosition, 'current', options);\n    $newPage.removeAttr('aria-hidden');\n    if (dynamicNavbar && $newNavbarEl) {\n      $newNavbarEl.removeAttr('aria-hidden');\n    }\n    router.pageCallback('afterIn', $newPage, $newNavbarEl, newPagePosition, 'current', options);\n    if (options.reloadCurrent && options.clearPreviousHistory) router.clearPreviousHistory();\n    if (reloadDetail) {\n      router.setPagePosition($(masterPageEl), 'previous');\n      if (masterPageEl.f7Page && masterPageEl.f7Page.navbarEl) {\n        router.setNavbarPosition($(masterPageEl.f7Page.navbarEl), 'previous');\n      }\n    }\n    return router;\n  }\n  if (options.reloadPrevious) {\n    router.allowPageChange = true;\n    return router;\n  }\n\n  // Before animation event\n  router.pageCallback('beforeOut', $oldPage, $oldNavbarEl, 'current', 'previous', options);\n  router.pageCallback('beforeIn', $newPage, $newNavbarEl, 'next', 'current', options);\n\n  // Animation\n  function afterAnimation() {\n    router.setPagePosition($newPage, 'current', false);\n    router.setPagePosition($oldPage, 'previous', !$oldPage.hasClass('page-master'));\n    if (dynamicNavbar) {\n      router.setNavbarPosition($newNavbarEl, 'current', false);\n      router.setNavbarPosition($oldNavbarEl, 'previous', !$oldNavbarEl.hasClass('navbar-master'));\n    }\n    // After animation event\n    router.allowPageChange = true;\n    router.pageCallback('afterOut', $oldPage, $oldNavbarEl, 'current', 'previous', options);\n    router.pageCallback('afterIn', $newPage, $newNavbarEl, 'next', 'current', options);\n    let keepOldPage = (router.params.preloadPreviousPage || router.params[`${app.theme}SwipeBack`]) && !isMaster;\n    if (!keepOldPage) {\n      if ($newPage.hasClass('smart-select-page') || $newPage.hasClass('photo-browser-page') || $newPage.hasClass('autocomplete-page') || $newPage.hasClass('color-picker-page')) {\n        keepOldPage = true;\n      }\n    }\n    if (!keepOldPage) {\n      if (!($newPage.attr('data-name') && $newPage.attr('data-name') === 'smart-select-page')) {\n        // Remove event\n        router.pageCallback('beforeRemove', $oldPage, $oldNavbarEl, 'previous', undefined, options);\n        router.removePage($oldPage);\n        if (dynamicNavbar && $oldNavbarEl.length) {\n          router.removeNavbar($oldNavbarEl);\n        }\n      }\n    }\n    if (options.clearPreviousHistory) router.clearPreviousHistory();\n    router.emit('routeChanged', router.currentRoute, router.previousRoute, router);\n    if (router.params.browserHistory) {\n      History.clearRouterQueue();\n    }\n  }\n  function setPositionClasses() {\n    router.setPagePosition($oldPage, 'current', false);\n    router.setPagePosition($newPage, 'next', false);\n    if (dynamicNavbar) {\n      router.setNavbarPosition($oldNavbarEl, 'current', false);\n      router.setNavbarPosition($newNavbarEl, 'next', false);\n    }\n  }\n  if (options.animate && !(isMaster && app.width >= router.params.masterDetailBreakpoint)) {\n    const delay = router.params[`${router.app.theme}PageLoadDelay`];\n    let transition = router.params.transition;\n    if (options.transition) transition = options.transition;\n    if (!transition && router.currentRoute && router.currentRoute.route) {\n      transition = router.currentRoute.route.transition;\n    }\n    if (!transition && router.currentRoute && router.currentRoute.route.options) {\n      transition = router.currentRoute.route.options.transition;\n    }\n    if (transition) {\n      $newPage[0].f7PageTransition = transition;\n    }\n    if (delay) {\n      setTimeout(() => {\n        setPositionClasses();\n        router.animate($oldPage, $newPage, $oldNavbarEl, $newNavbarEl, 'forward', transition, () => {\n          afterAnimation();\n        });\n      }, delay);\n    } else {\n      setPositionClasses();\n      router.animate($oldPage, $newPage, $oldNavbarEl, $newNavbarEl, 'forward', transition, () => {\n        afterAnimation();\n      });\n    }\n  } else {\n    afterAnimation();\n  }\n  return router;\n}\nfunction load(router, loadParams, loadOptions, ignorePageChange) {\n  if (loadParams === void 0) {\n    loadParams = {};\n  }\n  if (loadOptions === void 0) {\n    loadOptions = {};\n  }\n  if (!router.allowPageChange && !ignorePageChange) return router;\n  const params = loadParams;\n  const options = loadOptions;\n  const {\n    url,\n    content,\n    el,\n    pageName,\n    component,\n    componentUrl\n  } = params;\n  if (!options.reloadCurrent && options.route && options.route.route && options.route.route.parentPath && router.currentRoute.route && 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    let 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(paramName => {\n        if (!(paramName in router.currentRoute.params) || router.currentRoute.params[paramName] !== options.route.params[paramName]) {\n          sameParams = false;\n        }\n      });\n    }\n    if (sameParams) {\n      if (options.route.route.tab) {\n        return router.tabLoad(options.route.route.tab, options);\n      }\n      return false;\n    }\n    if (!sameParams && options.route.route.tab && router.currentRoute.route.tab && router.currentRoute.parentPath === options.route.parentPath) {\n      return router.tabLoad(options.route.route.tab, options);\n    }\n  }\n  if (options.route && options.route.url && router.url === options.route.url && !(options.reloadCurrent || options.reloadPrevious) && !router.params.allowDuplicateUrls) {\n    router.allowPageChange = true;\n    return false;\n  }\n  if (!options.route && url) {\n    options.route = router.parseRouteUrl(url);\n    extend(options.route, {\n      route: {\n        url,\n        path: url\n      }\n    });\n  }\n\n  // Component Callbacks\n  function resolve(pageEl, newOptions) {\n    return forward(router, pageEl, extend(options, newOptions));\n  }\n  function reject() {\n    router.allowPageChange = true;\n    return router;\n  }\n  if (url || componentUrl || component) {\n    router.allowPageChange = false;\n  }\n\n  // Proceed\n  if (content) {\n    forward(router, router.getPageEl(content), options);\n  } else if (el) {\n    // Load page from specified HTMLElement or by page name in pages container\n    forward(router, router.getPageEl(el), options);\n  } else if (pageName) {\n    // Load page by page name in pages container\n    forward(router, router.$el.children(`.page[data-name=\"${pageName}\"]`).eq(0), options);\n  } else if (component || componentUrl) {\n    // Load from component (F7/Vue/React/...)\n    try {\n      router.pageComponentLoader({\n        routerEl: router.el,\n        component,\n        componentUrl,\n        options,\n        resolve,\n        reject\n      });\n    } catch (err) {\n      router.allowPageChange = true;\n      throw err;\n    }\n  } else if (url) {\n    // Load using XHR\n    if (router.xhrAbortController) {\n      router.xhrAbortController.abort();\n      router.xhrAbortController = false;\n    }\n    router.xhrRequest(url, options).then(pageContent => {\n      forward(router, router.getPageEl(pageContent), options);\n    }).catch(() => {\n      router.allowPageChange = true;\n    });\n  }\n  return router;\n}\nfunction navigate(navigateParams, navigateOptions) {\n  if (navigateOptions === void 0) {\n    navigateOptions = {};\n  }\n  const router = this;\n  if (router.swipeBackActive) return router;\n  let url;\n  let createRoute;\n  let name;\n  let path;\n  let query;\n  let params;\n  let route;\n  if (typeof navigateParams === 'string') {\n    url = navigateParams;\n  } else {\n    url = navigateParams.url;\n    createRoute = navigateParams.route;\n    name = navigateParams.name;\n    path = navigateParams.path;\n    query = navigateParams.query;\n    params = navigateParams.params;\n  }\n  if (name || path) {\n    url = router.generateUrl({\n      path,\n      name,\n      params,\n      query\n    });\n    if (url) {\n      return router.navigate(url, navigateOptions);\n    }\n    return router;\n  }\n  const app = router.app;\n  appRouterCheck(router, 'navigate');\n  if (url === '#' || url === '') {\n    return router;\n  }\n  let navigateUrl = url.replace('./', '');\n  if (navigateUrl[0] !== '/' && navigateUrl.indexOf('#') !== 0) {\n    const currentPath = router.currentRoute.parentPath || router.currentRoute.path;\n    navigateUrl = ((currentPath ? `${currentPath}/` : '/') + navigateUrl).replace('///', '/').replace('//', '/');\n  }\n  if (createRoute) {\n    route = extend(router.parseRouteUrl(navigateUrl), {\n      route: extend({}, createRoute)\n    });\n  } else {\n    route = router.findMatchingRoute(navigateUrl);\n  }\n  if (!route) {\n    return router;\n  }\n  if (route.route && route.route.viewName) {\n    const anotherViewName = route.route.viewName;\n    const anotherView = app.views[anotherViewName];\n    if (!anotherView) {\n      throw new Error(`Framework7: There is no View with \"${anotherViewName}\" name that was specified in this route`);\n    }\n    if (anotherView !== router.view) {\n      return anotherView.router.navigate(navigateParams, navigateOptions);\n    }\n  }\n  if (route.route.redirect) {\n    return redirect.call(router, 'forward', route, navigateOptions);\n  }\n  const options = {};\n  if (route.route.options) {\n    extend(options, route.route.options, navigateOptions);\n  } else {\n    extend(options, navigateOptions);\n  }\n  if (options.openIn && (!router.params.ignoreOpenIn || router.params.ignoreOpenIn && router.history.length > 0)) {\n    return router.openIn(router, navigateUrl, options);\n  }\n  options.route = route;\n  function resolve() {\n    let routerLoaded = false;\n    'popup popover sheet loginScreen actions customModal panel'.split(' ').forEach(modalLoadProp => {\n      if (route.route[modalLoadProp] && !routerLoaded) {\n        routerLoaded = true;\n        router.modalLoad(modalLoadProp, route, options, 'forward');\n      }\n    });\n    if (route.route.keepAlive && route.route.keepAliveData) {\n      load(router, {\n        el: route.route.keepAliveData.pageEl\n      }, options, false);\n      routerLoaded = true;\n    }\n    'url content component pageName el componentUrl'.split(' ').forEach(pageLoadProp => {\n      if (route.route[pageLoadProp] && !routerLoaded) {\n        routerLoaded = true;\n        load(router, {\n          [pageLoadProp]: route.route[pageLoadProp]\n        }, options, false);\n      }\n    });\n    if (routerLoaded) return;\n    // Async\n    function asyncResolve(resolveParams, resolveOptions) {\n      router.allowPageChange = false;\n      let resolvedAsModal = false;\n      'popup popover sheet loginScreen actions customModal panel'.split(' ').forEach(modalLoadProp => {\n        if (resolveParams[modalLoadProp]) {\n          resolvedAsModal = true;\n          const modalRoute = extend({}, route, {\n            route: resolveParams\n          });\n          router.allowPageChange = true;\n          router.modalLoad(modalLoadProp, modalRoute, extend(options, resolveOptions), 'forward');\n        }\n      });\n      if (resolvedAsModal) return;\n      load(router, resolveParams, extend(options, resolveOptions), true);\n    }\n    function asyncReject() {\n      router.allowPageChange = true;\n    }\n    if (route.route.async) {\n      router.allowPageChange = false;\n      route.route.async.call(router, {\n        router,\n        to: options.route,\n        from: router.currentRoute,\n        resolve: asyncResolve,\n        reject: asyncReject,\n        direction: 'forward',\n        app\n      });\n    }\n    if (route.route.asyncComponent) {\n      asyncComponent(router, route.route.asyncComponent, asyncResolve, asyncReject);\n    }\n  }\n  function reject() {\n    router.allowPageChange = true;\n  }\n  if (router.params.masterDetailBreakpoint > 0 && route.route.masterRoute) {\n    // load detail route\n    let preloadMaster = true;\n    let masterLoaded = false;\n    if (router.currentRoute && router.currentRoute.route) {\n      if ((router.currentRoute.route.master === true || typeof router.currentRoute.route.master === 'function' && router.currentRoute.route.master(app, router)) && (router.currentRoute.route === route.route.masterRoute || router.currentRoute.route.path === route.route.masterRoute.path)) {\n        preloadMaster = false;\n      }\n      if (router.currentRoute.route.masterRoute && (router.currentRoute.route.masterRoute === route.route.masterRoute || router.currentRoute.route.masterRoute.path === route.route.masterRoute.path)) {\n        preloadMaster = false;\n        masterLoaded = true;\n      }\n    }\n    if (preloadMaster || masterLoaded && navigateOptions.reloadAll) {\n      router.navigate({\n        path: route.route.masterRoute.path,\n        params: route.params || {}\n      }, {\n        animate: false,\n        reloadAll: navigateOptions.reloadAll,\n        reloadCurrent: navigateOptions.reloadCurrent,\n        reloadPrevious: navigateOptions.reloadPrevious,\n        browserHistory: !navigateOptions.initial,\n        history: !navigateOptions.initial,\n        once: {\n          pageAfterIn() {\n            router.navigate(navigateParams, extend({}, navigateOptions, {\n              animate: false,\n              reloadAll: false,\n              reloadCurrent: false,\n              reloadPrevious: false,\n              history: !navigateOptions.initial,\n              browserHistory: !navigateOptions.initial\n            }));\n          }\n        }\n      });\n      return router;\n    }\n  }\n  processRouteQueue.call(router, route, router.currentRoute, () => {\n    if (route.route.modules) {\n      app.loadModules(Array.isArray(route.route.modules) ? route.route.modules : [route.route.modules]).then(() => {\n        resolve();\n      }).catch(() => {\n        reject();\n      });\n    } else {\n      resolve();\n    }\n  }, () => {\n    reject();\n  }, 'forward');\n\n  // Return Router\n  return router;\n}\nexport { refreshPage, navigate };", "import $ from '../../shared/dom7.js';\nimport { extend } from '../../shared/utils.js';\nimport History from '../../shared/history.js';\nimport asyncComponent from './async-component.js';\nfunction tabLoad(tabRoute, loadOptions) {\n  if (loadOptions === void 0) {\n    loadOptions = {};\n  }\n  const router = this;\n  const options = extend({\n    animate: router.params.animate,\n    browserHistory: true,\n    history: true,\n    parentPageEl: null,\n    preload: false,\n    on: {}\n  }, loadOptions);\n  let currentRoute;\n  let previousRoute;\n  if (options.route) {\n    // Set Route\n    if (!options.preload && options.route !== router.currentRoute) {\n      previousRoute = router.previousRoute;\n      router.currentRoute = options.route;\n    }\n    if (options.preload) {\n      currentRoute = options.route;\n      previousRoute = router.currentRoute;\n    } else {\n      currentRoute = router.currentRoute;\n      if (!previousRoute) previousRoute = router.previousRoute;\n    }\n\n    // Update Browser History\n    if (router.params.browserHistory && options.browserHistory && !options.reloadPrevious) {\n      History[router.params.browserHistoryTabs](router.view.id, {\n        url: options.route.url\n      }, (router.params.browserHistoryRoot || '') + router.params.browserHistorySeparator + options.route.url);\n    }\n\n    // Update Router History\n    if (options.history) {\n      router.history[Math.max(router.history.length - 1, 0)] = options.route.url;\n      router.saveHistory();\n    }\n  }\n\n  // Show Tab\n  const $parentPageEl = $(options.parentPageEl || router.currentPageEl);\n  let tabEl;\n  if ($parentPageEl.length && $parentPageEl.find(`#${tabRoute.id}`).length) {\n    tabEl = $parentPageEl.find(`#${tabRoute.id}`).eq(0);\n  } else if (router.view.selector) {\n    tabEl = `${router.view.selector} #${tabRoute.id}`;\n  } else {\n    tabEl = `#${tabRoute.id}`;\n  }\n  const tabShowResult = router.app.tab.show({\n    tabEl,\n    animate: options.animate,\n    tabRoute: options.route\n  });\n  const {\n    $newTabEl,\n    $oldTabEl,\n    animated,\n    onTabsChanged\n  } = tabShowResult;\n  if ($newTabEl && $newTabEl.parents('.page').length > 0 && options.route) {\n    const tabParentPageData = $newTabEl.parents('.page')[0].f7Page;\n    if (tabParentPageData && options.route) {\n      tabParentPageData.route = options.route;\n    }\n  }\n\n  // Tab Content Loaded\n  function onTabLoaded(contentEl) {\n    // Remove theme elements\n    router.removeThemeElements($newTabEl);\n    let tabEventTarget = $newTabEl;\n    if (typeof contentEl !== 'string') tabEventTarget = $(contentEl);\n    tabEventTarget.trigger('tab:init tab:mounted', tabRoute);\n    router.emit('tabInit tabMounted', $newTabEl[0], tabRoute);\n    if ($oldTabEl && $oldTabEl.length) {\n      if (animated) {\n        onTabsChanged(() => {\n          router.emit('routeChanged', router.currentRoute, router.previousRoute, router);\n          if (router.params.unloadTabContent) {\n            router.tabRemove($oldTabEl, $newTabEl, tabRoute);\n          }\n        });\n      } else {\n        router.emit('routeChanged', router.currentRoute, router.previousRoute, router);\n        if (router.params.unloadTabContent) {\n          router.tabRemove($oldTabEl, $newTabEl, tabRoute);\n        }\n      }\n    }\n  }\n  if ($newTabEl[0].f7RouterTabLoaded) {\n    if (!$oldTabEl || !$oldTabEl.length) return router;\n    if (animated) {\n      onTabsChanged(() => {\n        router.emit('routeChanged', router.currentRoute, router.previousRoute, router);\n      });\n    } else {\n      router.emit('routeChanged', router.currentRoute, router.previousRoute, router);\n    }\n    return router;\n  }\n\n  // Load Tab Content\n  function loadTab(loadTabParams, loadTabOptions) {\n    // Load Tab Props\n    const {\n      url,\n      content,\n      el,\n      component,\n      componentUrl\n    } = loadTabParams;\n    // Component/Template Callbacks\n    function resolve(contentEl) {\n      router.allowPageChange = true;\n      if (!contentEl) return;\n      if (typeof contentEl === 'string') {\n        $newTabEl.html(contentEl);\n      } else {\n        $newTabEl.html('');\n        if (contentEl.f7Component) {\n          contentEl.f7Component.mount(componentEl => {\n            $newTabEl.append(componentEl);\n          });\n        } else {\n          $newTabEl.append(contentEl);\n        }\n      }\n      $newTabEl[0].f7RouterTabLoaded = true;\n      onTabLoaded(contentEl);\n    }\n    function reject() {\n      router.allowPageChange = true;\n      return router;\n    }\n    if (content) {\n      resolve(content);\n    } else if (el) {\n      resolve(el);\n    } else if (component || componentUrl) {\n      // Load from component (F7/Vue/React/...)\n      try {\n        router.tabComponentLoader({\n          tabEl: $newTabEl[0],\n          component,\n          componentUrl,\n          options: loadTabOptions,\n          resolve,\n          reject\n        });\n      } catch (err) {\n        router.allowPageChange = true;\n        throw err;\n      }\n    } else if (url) {\n      // Load using XHR\n      if (router.xhrAbortController) {\n        router.xhrAbortController.abort();\n        router.xhrAbortController = false;\n      }\n      router.xhrRequest(url, loadTabOptions).then(tabContent => {\n        resolve(tabContent);\n      }).catch(() => {\n        router.allowPageChange = true;\n      });\n    }\n  }\n  let hasContentLoadProp;\n  'url content component el componentUrl'.split(' ').forEach(tabLoadProp => {\n    if (tabRoute[tabLoadProp]) {\n      hasContentLoadProp = true;\n      loadTab({\n        [tabLoadProp]: tabRoute[tabLoadProp]\n      }, options);\n    }\n  });\n\n  // Async\n  function asyncResolve(resolveParams, resolveOptions) {\n    loadTab(resolveParams, extend(options, resolveOptions));\n  }\n  function asyncReject() {\n    router.allowPageChange = true;\n  }\n  if (tabRoute.async) {\n    tabRoute.async.call(router, {\n      router,\n      to: currentRoute,\n      from: previousRoute,\n      resolve: asyncResolve,\n      reject: asyncReject,\n      app: router.app\n    });\n  } else if (tabRoute.asyncComponent) {\n    asyncComponent(router, tabRoute.asyncComponent, asyncResolve, asyncReject);\n  } else if (!hasContentLoadProp) {\n    router.allowPageChange = true;\n  }\n  return router;\n}\nfunction tabRemove($oldTabEl, $newTabEl, tabRoute) {\n  const router = this;\n  let hasTabComponentChild;\n  if ($oldTabEl[0]) {\n    $oldTabEl[0].f7RouterTabLoaded = false;\n    delete $oldTabEl[0].f7RouterTabLoaded;\n  }\n  $oldTabEl.children().each(tabChild => {\n    if (tabChild.f7Component) {\n      hasTabComponentChild = true;\n      $(tabChild).trigger('tab:beforeremove', tabRoute);\n      tabChild.f7Component.destroy();\n    }\n  });\n  if (!hasTabComponentChild) {\n    $oldTabEl.trigger('tab:beforeremove', tabRoute);\n  }\n  router.emit('tabBeforeRemove', $oldTabEl[0], $newTabEl[0], tabRoute);\n  router.removeTabContent($oldTabEl[0], tabRoute);\n}\nexport { tabLoad, tabRemove };", "import { extend, nextTick } from '../../shared/utils.js';\nimport History from '../../shared/history.js';\nimport asyncComponent from './async-component.js';\nfunction modalLoad(modalType, route, loadOptions, direction) {\n  if (loadOptions === void 0) {\n    loadOptions = {};\n  }\n  const router = this;\n  const app = router.app;\n  const isPanel = modalType === 'panel';\n  const modalOrPanel = isPanel ? 'panel' : 'modal';\n  const options = extend({\n    animate: router.params.animate,\n    browserHistory: true,\n    history: true,\n    on: {},\n    once: {}\n  }, loadOptions);\n  const modalParams = extend({}, route.route[modalType]);\n  const modalRoute = route.route;\n  const routeCallback = (modal, name) => {\n    const {\n      on,\n      once\n    } = options;\n    let callback;\n    if (name === 'open') {\n      callback = on.modalOpen || once.modalOpen || on.panelOpen || once.panelOpen;\n    }\n    if (name === 'close') {\n      callback = on.modalClose || once.modalClose || on.panelClose || once.panelClose;\n    }\n    if (name === 'closed') {\n      callback = on.modalClosed || once.modalClosed || on.panelClosed || once.panelClosed;\n    }\n    if (callback) callback(modal);\n  };\n  function onModalLoaded() {\n    // Create Modal\n    const modal = app[modalType].create(modalParams);\n    modalRoute.modalInstance = modal;\n    const hasEl = modal.el;\n    function closeOnSwipeBack() {\n      modal.close();\n    }\n    modal.on(`${modalOrPanel}Open`, () => {\n      if (!hasEl) {\n        // Remove theme elements\n        router.removeThemeElements(modal.el);\n\n        // Emit events\n        modal.$el.trigger(`${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      routeCallback(modal, 'open');\n    });\n    modal.on(`${modalOrPanel}Close`, () => {\n      router.off('swipeBackMove', closeOnSwipeBack);\n      if (!modal.closeByRouter) {\n        router.back();\n      }\n      routeCallback(modal, 'close');\n    });\n    modal.on(`${modalOrPanel}Closed`, () => {\n      modal.$el.trigger(`${modalType.toLowerCase()}:beforeremove`, route, modal);\n      modal.emit(`${!isPanel ? 'modalBeforeRemove ' : ''}${modalType}BeforeRemove`, modal.el, route, modal);\n      const modalComponent = modal.el.f7Component;\n      routeCallback(modal, 'closed');\n      if (modalComponent) {\n        modalComponent.destroy();\n      }\n      nextTick(() => {\n        if (modalComponent || modalParams.component || modalParams.asyncComponent || modalParams.async) {\n          router.removeModal(modal.el);\n        }\n        modal.destroy();\n        delete modal.route;\n        delete modalRoute.modalInstance;\n      });\n    });\n    if (options.route) {\n      // Update Browser History\n      if (router.params.browserHistory && options.browserHistory) {\n        History.push(router.view.id, {\n          url: options.route.url,\n          modal: modalType\n        }, (router.params.browserHistoryRoot || '') + router.params.browserHistorySeparator + options.route.url);\n      }\n\n      // Set Route\n      if (options.route !== router.currentRoute) {\n        modal.route = extend(options.route, {\n          modal\n        });\n        router.currentRoute = modal.route;\n      }\n\n      // Update Router History\n      if (options.history && !options.reloadCurrent) {\n        router.history.push(options.route.url);\n        router.saveHistory();\n      }\n    }\n    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(options.animate === false || options.animate === true ? options.animate : undefined);\n  }\n\n  // Load Modal Content\n  function loadModal(loadModalParams, loadModalOptions) {\n    // Load Modal Props\n    const {\n      url,\n      content,\n      component,\n      componentUrl\n    } = loadModalParams;\n\n    // Component/Template Callbacks\n    function resolve(contentEl) {\n      if (contentEl) {\n        if (typeof contentEl === 'string') {\n          modalParams.content = contentEl;\n        } else if (contentEl.f7Component) {\n          contentEl.f7Component.mount(componentEl => {\n            modalParams.el = componentEl;\n            app.$el.append(componentEl);\n          });\n        } else {\n          modalParams.el = contentEl;\n        }\n        onModalLoaded();\n      }\n    }\n    function reject() {\n      router.allowPageChange = true;\n      return router;\n    }\n    if (content) {\n      resolve(content);\n    } else if (component || componentUrl) {\n      // Load from component (F7/Vue/React/...)\n      try {\n        router.modalComponentLoader({\n          rootEl: app.el,\n          component,\n          componentUrl,\n          options: loadModalOptions,\n          resolve,\n          reject\n        });\n      } catch (err) {\n        router.allowPageChange = true;\n        throw err;\n      }\n    } else if (url) {\n      // Load using XHR\n      if (router.xhrAbortController) {\n        router.xhrAbortController.abort();\n        router.xhrAbortController = false;\n      }\n      router.xhrRequest(url, loadModalOptions).then(modalContent => {\n        modalParams.content = modalContent;\n        onModalLoaded();\n      }).catch(() => {\n        router.allowPageChange = true;\n      });\n    } else {\n      onModalLoaded();\n    }\n  }\n  let foundLoadProp;\n  'url content component el componentUrl template'.split(' ').forEach(modalLoadProp => {\n    if (modalParams[modalLoadProp] && !foundLoadProp) {\n      foundLoadProp = true;\n      loadModal({\n        [modalLoadProp]: modalParams[modalLoadProp]\n      }, options);\n    }\n  });\n  if (!foundLoadProp && modalType === 'actions') {\n    onModalLoaded();\n  }\n\n  // Async\n  function asyncResolve(resolveParams, resolveOptions) {\n    loadModal(resolveParams, extend(options, resolveOptions));\n  }\n  function asyncReject() {\n    router.allowPageChange = true;\n  }\n  if (modalParams.async) {\n    modalParams.async.call(router, {\n      router,\n      to: options.route,\n      from: router.currentRoute,\n      resolve: asyncResolve,\n      reject: asyncReject,\n      direction,\n      app\n    });\n  }\n  if (modalParams.asyncComponent) {\n    asyncComponent(router, modalParams.asyncComponent, asyncResolve, asyncReject);\n  }\n  return router;\n}\nfunction modalRemove(modal) {\n  extend(modal, {\n    closeByRouter: true\n  });\n  modal.close();\n}\nexport { modalLoad, modalRemove };", "import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { extend, parseUrlQuery } from '../../shared/utils.js';\nimport { getDevice } from '../../shared/get-device.js';\nimport History from '../../shared/history.js';\nimport redirect from './redirect.js';\nimport processRouteQueue from './process-route-queue.js';\nimport appRouterCheck from './app-router-check.js';\nimport asyncComponent from './async-component.js';\nfunction backward(router, el, backwardOptions) {\n  const device = getDevice();\n  const document = getDocument();\n  const $el = $(el);\n  const app = router.app;\n  const view = router.view;\n  const options = extend(false, {\n    animate: router.params.animate,\n    browserHistory: true,\n    replaceState: false\n  }, backwardOptions);\n  const masterDetailEnabled = router.params.masterDetailBreakpoint > 0;\n  const isMaster = masterDetailEnabled && options.route && options.route.route && (options.route.route.master === true || typeof options.route.route.master === 'function' && options.route.route.master(app, router));\n  let masterPageEl;\n  let masterPageRemoved;\n  const dynamicNavbar = router.dynamicNavbar;\n  const $newPage = $el;\n  const $oldPage = router.$el.children('.page-current');\n  const initialPreload = $oldPage.length === 0 && options.preload;\n  const currentIsMaster = masterDetailEnabled && $oldPage.hasClass('page-master');\n  if ($newPage.length) {\n    // Remove theme elements\n    router.removeThemeElements($newPage);\n  }\n  let $navbarsEl;\n  let $newNavbarEl;\n  let $oldNavbarEl;\n  if (dynamicNavbar) {\n    $newNavbarEl = $newPage.children('.navbar');\n    $navbarsEl = router.$navbarsEl;\n    if ($newNavbarEl.length === 0 && $newPage[0] && $newPage[0].f7Page) {\n      // Try from pageData\n      $newNavbarEl = $newPage[0].f7Page.$navbarEl;\n    }\n    $oldNavbarEl = $navbarsEl.find('.navbar-current');\n  }\n  router.allowPageChange = false;\n  if ($newPage.length === 0 || $oldPage.length === 0 && !options.preload) {\n    router.allowPageChange = true;\n    return router;\n  }\n\n  // Remove theme elements\n  router.removeThemeElements($newPage);\n\n  // Save Keep Alive Cache\n  if (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  let isDetail;\n  let isDetailRoot;\n  if (masterDetailEnabled) {\n    const $pagesInView = router.$el.children('.page').filter(pageInView => pageInView !== $newPage[0]);\n\n    // Find Detail' master page\n    for (let i = 0; i < $pagesInView.length; i += 1) {\n      if (!masterPageEl && $pagesInView[i].classList.contains('page-master')) {\n        masterPageEl = $pagesInView[i];\n        continue; // eslint-disable-line\n      }\n    }\n\n    isDetail = !isMaster && masterPageEl && router.history.indexOf(options.route.url) > router.history.indexOf(masterPageEl.f7Page.route.url);\n    if (!isDetail && !isMaster && masterPageEl && masterPageEl.f7Page && options.route.route.masterRoute) {\n      isDetail = options.route.route.masterRoute.path === masterPageEl.f7Page.route.route.path;\n    }\n  }\n  if (isDetail && masterPageEl && masterPageEl.f7Page) {\n    isDetailRoot = router.history.indexOf(options.route.url) - router.history.indexOf(masterPageEl.f7Page.route.url) === 1;\n  }\n\n  // New Page\n  $newPage.addClass(`page-${initialPreload ? 'current' : 'previous'}${isMaster ? ' page-master' : ''}${isDetail ? ' page-master-detail' : ''}${isDetailRoot ? ' page-master-detail-root' : ''}`).removeAttr('aria-hidden').trigger('page:unstack').trigger('page:position', {\n    position: initialPreload ? 'current' : 'previous'\n  });\n  router.emit('pageUnstack', $newPage[0]);\n  router.emit('pagePosition', $newPage[0], initialPreload ? 'current' : 'previous');\n  if (isMaster || isDetail) {\n    $newPage.trigger('page:role', {\n      role: isMaster ? 'master' : 'detail',\n      root: !!isDetailRoot\n    });\n    router.emit('pageRole', $newPage[0], {\n      role: isMaster ? 'master' : 'detail',\n      detailRoot: !!isDetailRoot\n    });\n  }\n  if (dynamicNavbar && $newNavbarEl.length > 0) {\n    $newNavbarEl.addClass(`navbar-${initialPreload ? 'current' : 'previous'}${isMaster ? ' navbar-master' : ''}${isDetail ? ' navbar-master-detail' : ''}${isDetailRoot ? ' navbar-master-detail-root' : ''}`).removeAttr('aria-hidden');\n    $newNavbarEl.trigger('navbar:position', {\n      position: initialPreload ? 'current' : 'previous'\n    });\n    router.emit('navbarPosition', $newNavbarEl[0], initialPreload ? 'current' : 'previous');\n    if (isMaster || isDetailRoot) {\n      router.emit('navbarRole', $newNavbarEl[0], {\n        role: isMaster ? 'master' : 'detail',\n        detailRoot: !!isDetailRoot\n      });\n    }\n  }\n\n  // Remove previous page in case of \"forced\"\n  let backIndex;\n  if (options.force) {\n    if ($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        router.propsHistory = router.propsHistory.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.propsHistory[router.propsHistory.length - 2] = options.props || {};\n      } else {\n        router.history.unshift(router.url);\n        router.propsHistory.unshift(options.props || {});\n      }\n      const $pageToRemove = $oldPage.prev('.page-previous');\n      let $navbarToRemove;\n      if (dynamicNavbar) {\n        $navbarToRemove = $(app.navbar.getElByPage($pageToRemove));\n      }\n      if ($pageToRemove.length > 0) {\n        router.pageCallback('beforeRemove', $pageToRemove, $navbarToRemove, 'previous', undefined, options);\n        if ($pageToRemove[0] === masterPageEl) {\n          masterPageRemoved = true;\n        }\n        router.removePage($pageToRemove);\n        if (dynamicNavbar && $navbarToRemove.length) {\n          router.removeNavbar($navbarToRemove);\n        }\n      }\n    }\n  }\n\n  // Insert new page\n  const newPageInDom = $newPage.parents(document).length > 0;\n  const f7Component = $newPage[0].f7Component;\n  function insertPage() {\n    if (initialPreload) {\n      if (!newPageInDom && f7Component) {\n        f7Component.mount(componentEl => {\n          router.$el.append(componentEl);\n        });\n      } else {\n        router.$el.append($newPage);\n      }\n    }\n    if ($newPage.next($oldPage).length === 0) {\n      if (!newPageInDom && f7Component) {\n        f7Component.mount(componentEl => {\n          $(componentEl).insertBefore($oldPage);\n        });\n      } else {\n        $newPage.insertBefore($oldPage);\n      }\n    }\n    if (dynamicNavbar && $newNavbarEl.length) {\n      if ($newNavbarEl.find('.title-large').length) {\n        $newNavbarEl.addClass('navbar-large');\n      }\n      $newNavbarEl.insertBefore($oldNavbarEl);\n      if ($oldNavbarEl.length > 0) {\n        $newNavbarEl.insertBefore($oldNavbarEl);\n      } else {\n        if (!router.$navbarsEl.parents(document).length) {\n          router.$el.prepend(router.$navbarsEl);\n        }\n        $navbarsEl.append($newNavbarEl);\n      }\n    }\n    if (!newPageInDom) {\n      router.pageCallback('mounted', $newPage, $newNavbarEl, '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, $newNavbarEl, 'previous', 'current', options, $oldPage);\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, extend({}, options, {\n        history: false,\n        browserHistory: false,\n        preload: true\n      }));\n    }\n    if (isMaster) {\n      $newPage.removeClass('page-master-stacked').trigger('page:masterunstack');\n      router.emit('pageMasterUnstack', $newPage[0]);\n      if (dynamicNavbar) {\n        $(app.navbar.getElByPage($newPage)).removeClass('navbar-master-stacked');\n        router.emit('navbarMasterUnstack', app.navbar.getElByPage($newPage));\n      }\n    }\n    // Page init and before init events\n    router.pageCallback('init', $newPage, $newNavbarEl, 'previous', 'current', options, $oldPage);\n    if (initialPreload) {\n      router.pageCallback('beforeIn', $newPage, $newNavbarEl, 'current', undefined, options);\n      router.pageCallback('afterIn', $newPage, $newNavbarEl, 'current', undefined, options);\n    }\n    const $previousPages = $newPage.prevAll('.page-previous:not(.page-master)');\n    if ($previousPages.length > 0) {\n      $previousPages.each(pageToRemove => {\n        const $pageToRemove = $(pageToRemove);\n        let $navbarToRemove;\n        if (dynamicNavbar) {\n          $navbarToRemove = $(app.navbar.getElByPage($pageToRemove));\n        }\n        router.pageCallback('beforeRemove', $pageToRemove, $navbarToRemove, 'previous', undefined);\n        router.removePage($pageToRemove);\n        if (dynamicNavbar && $navbarToRemove.length) {\n          router.removeNavbar($navbarToRemove);\n        }\n      });\n    }\n    router.allowPageChange = true;\n    return router;\n  }\n\n  // History State\n  if (!(device.ie || device.edge || device.firefox && !device.ios)) {\n    if (router.params.browserHistory && options.browserHistory) {\n      if (options.replaceState) {\n        const browserHistoryRoot = router.params.browserHistoryRoot || '';\n        History.replace(view.id, {\n          url: options.route.url\n        }, browserHistoryRoot + router.params.browserHistorySeparator + options.route.url);\n      } else if (backIndex) {\n        History.go(-backIndex);\n      } else {\n        History.back();\n      }\n    }\n  }\n\n  // Update History\n  if (options.replaceState) {\n    router.history[router.history.length - 1] = options.route.url;\n    router.propsHistory[router.propsHistory.length - 1] = options.props || {};\n  } else {\n    if (router.history.length === 1) {\n      router.history.unshift(router.url);\n      router.propsHistory.unshift(options.props || {});\n    }\n    router.history.pop();\n    router.propsHistory.pop();\n  }\n  router.saveHistory();\n\n  // Current Page & Navbar\n  router.currentPageEl = $newPage[0];\n  if (dynamicNavbar && $newNavbarEl.length) {\n    router.currentNavbarEl = $newNavbarEl[0];\n  } else {\n    delete router.currentNavbarEl;\n  }\n\n  // Current Route\n  router.currentRoute = options.route;\n\n  // History State\n  if (device.ie || device.edge || device.firefox && !device.ios) {\n    if (router.params.browserHistory && options.browserHistory) {\n      if (options.replaceState) {\n        const browserHistoryRoot = router.params.browserHistoryRoot || '';\n        History.replace(view.id, {\n          url: options.route.url\n        }, browserHistoryRoot + router.params.browserHistorySeparator + options.route.url);\n      } else if (backIndex) {\n        History.go(-backIndex);\n      } else {\n        History.back();\n      }\n    }\n  }\n\n  // Insert Page\n  insertPage();\n\n  // Load Tab\n  if (options.route.route.tab) {\n    router.tabLoad(options.route.route.tab, extend({}, options, {\n      history: false,\n      browserHistory: false\n    }));\n  }\n\n  // Check master detail\n\n  if (masterDetailEnabled && (currentIsMaster || masterPageRemoved)) {\n    view.checkMasterDetailBreakpoint(false);\n  }\n\n  // Page init and before init events\n  router.pageCallback('init', $newPage, $newNavbarEl, 'previous', 'current', options, $oldPage);\n\n  // Before animation callback\n  router.pageCallback('beforeOut', $oldPage, $oldNavbarEl, 'current', 'next', options);\n  router.pageCallback('beforeIn', $newPage, $newNavbarEl, 'previous', 'current', options);\n\n  // Animation\n  function afterAnimation() {\n    // Set classes\n    router.setPagePosition($newPage, 'current', false);\n    router.setPagePosition($oldPage, 'next', true);\n    if (dynamicNavbar) {\n      router.setNavbarPosition($newNavbarEl, 'current', false);\n      router.setNavbarPosition($oldNavbarEl, 'next', true);\n    }\n\n    // After animation event\n    router.pageCallback('afterOut', $oldPage, $oldNavbarEl, 'current', 'next', options);\n    router.pageCallback('afterIn', $newPage, $newNavbarEl, 'previous', 'current', options);\n\n    // Remove Old Page\n\n    router.pageCallback('beforeRemove', $oldPage, $oldNavbarEl, 'next', undefined, options);\n    router.removePage($oldPage);\n    if (dynamicNavbar && $oldNavbarEl.length) {\n      router.removeNavbar($oldNavbarEl);\n    }\n    router.allowPageChange = true;\n    router.emit('routeChanged', router.currentRoute, router.previousRoute, router);\n\n    // Preload previous page\n    const preloadPreviousPage = router.params.preloadPreviousPage || router.params[`${app.theme}SwipeBack`];\n    if (preloadPreviousPage && router.history[router.history.length - 2] && !isMaster) {\n      router.back(router.history[router.history.length - 2], {\n        preload: true,\n        props: router.propsHistory[router.propsHistory.length - 2] || {}\n      });\n    }\n    if (router.params.browserHistory) {\n      History.clearRouterQueue();\n    }\n  }\n  function setPositionClasses() {\n    router.setPagePosition($oldPage, 'current');\n    router.setPagePosition($newPage, 'previous', false);\n    if (dynamicNavbar) {\n      router.setNavbarPosition($oldNavbarEl, 'current');\n      router.setNavbarPosition($newNavbarEl, 'previous', false);\n    }\n  }\n  if (options.animate && !(currentIsMaster && app.width >= router.params.masterDetailBreakpoint)) {\n    let transition = router.params.transition;\n    if ($oldPage[0] && $oldPage[0].f7PageTransition) {\n      transition = $oldPage[0].f7PageTransition;\n      delete $oldPage[0].f7PageTransition;\n    }\n    if (options.transition) transition = options.transition;\n    if (!transition && router.previousRoute && router.previousRoute.route) {\n      transition = router.previousRoute.route.transition;\n    }\n    if (!transition && router.previousRoute && router.previousRoute.route && router.previousRoute.route.options) {\n      transition = router.previousRoute.route.options.transition;\n    }\n    setPositionClasses();\n    router.animate($oldPage, $newPage, $oldNavbarEl, $newNavbarEl, 'backward', transition, () => {\n      afterAnimation();\n    });\n  } else {\n    afterAnimation();\n  }\n  return router;\n}\nfunction loadBack(router, backParams, backOptions, ignorePageChange) {\n  if (!router.allowPageChange && !ignorePageChange) return router;\n  const params = backParams;\n  const options = backOptions;\n  const {\n    url,\n    content,\n    el,\n    pageName,\n    component,\n    componentUrl\n  } = params;\n  if (options.route.url && router.url === options.route.url && !(options.reloadCurrent || options.reloadPrevious) && !router.params.allowDuplicateUrls) {\n    router.allowPageChange = true;\n    return false;\n  }\n  if (!options.route && url) {\n    options.route = router.parseRouteUrl(url);\n  }\n\n  // Component Callbacks\n  function resolve(pageEl, newOptions) {\n    return backward(router, pageEl, extend(options, newOptions));\n  }\n  function reject() {\n    router.allowPageChange = true;\n    return router;\n  }\n  if (url || componentUrl || component) {\n    router.allowPageChange = false;\n  }\n\n  // Proceed\n  if (content) {\n    backward(router, router.getPageEl(content), options);\n  } else if (el) {\n    // Load page from specified HTMLElement or by page name in pages container\n    backward(router, router.getPageEl(el), options);\n  } else if (pageName) {\n    // Load page by page name in pages container\n    backward(router, router.$el.children(`.page[data-name=\"${pageName}\"]`).eq(0), options);\n  } else if (component || componentUrl) {\n    // Load from component (F7/Vue/React/...)\n    try {\n      router.pageComponentLoader({\n        routerEl: router.el,\n        component,\n        componentUrl,\n        options,\n        resolve,\n        reject\n      });\n    } catch (err) {\n      router.allowPageChange = true;\n      throw err;\n    }\n  } else if (url) {\n    // Load using XHR\n    if (router.xhrAbortController) {\n      router.xhrAbortController.abort();\n      router.xhrAbortController = false;\n    }\n    router.xhrRequest(url, options).then(pageContent => {\n      backward(router, router.getPageEl(pageContent), options);\n    }).catch(() => {\n      router.allowPageChange = true;\n    });\n  }\n  return router;\n}\nfunction back() {\n  const router = this;\n  const device = getDevice();\n  if (router.swipeBackActive) return router;\n  let navigateUrl;\n  let navigateOptions;\n  let navigateProps;\n  let route;\n  if (typeof (arguments.length <= 0 ? undefined : arguments[0]) === 'object') {\n    navigateOptions = (arguments.length <= 0 ? undefined : arguments[0]) || {};\n  } else {\n    navigateUrl = arguments.length <= 0 ? undefined : arguments[0];\n    navigateOptions = (arguments.length <= 1 ? undefined : arguments[1]) || {};\n  }\n  const {\n    name,\n    params,\n    query\n  } = navigateOptions;\n  if (name) {\n    navigateUrl = router.generateUrl({\n      name,\n      params,\n      query\n    });\n    if (navigateUrl) {\n      return router.back(navigateUrl, extend({}, navigateOptions, {\n        name: null,\n        params: null,\n        query: null\n      }));\n    }\n    return router;\n  }\n  const app = router.app;\n  appRouterCheck(router, 'back');\n  let currentRouteIsModal = router.currentRoute.modal;\n  let modalType;\n  if (!currentRouteIsModal) {\n    'popup popover sheet loginScreen actions customModal panel'.split(' ').forEach(modalLoadProp => {\n      if (router.currentRoute.route[modalLoadProp]) {\n        currentRouteIsModal = true;\n        modalType = modalLoadProp;\n      }\n    });\n  }\n  if (currentRouteIsModal && !navigateOptions.preload) {\n    const modalToClose = router.currentRoute.modal || router.currentRoute.route.modalInstance || app[modalType].get();\n    const previousUrl = router.history[router.history.length - 2];\n    let previousRoute;\n    // check if previous route is modal too\n    if (modalToClose && modalToClose.$el) {\n      const prevOpenedModals = modalToClose.$el.prevAll('.modal-in');\n      if (prevOpenedModals.length && prevOpenedModals[0].f7Modal) {\n        const modalEl = prevOpenedModals[0];\n        // check if current router not inside of the modalEl\n        if (!router.$el.parents(modalEl).length) {\n          previousRoute = modalEl.f7Modal.route;\n        }\n      }\n    }\n    if (!previousRoute) {\n      previousRoute = router.findMatchingRoute(previousUrl);\n    }\n    if (!previousRoute && previousUrl) {\n      previousRoute = {\n        url: previousUrl,\n        path: previousUrl.split('?')[0],\n        query: parseUrlQuery(previousUrl),\n        route: {\n          path: previousUrl.split('?')[0],\n          url: previousUrl\n        }\n      };\n    }\n    if (!navigateUrl || navigateUrl.replace(/[# ]/g, '').trim().length === 0) {\n      if (!previousRoute || !modalToClose) {\n        return router;\n      }\n    }\n    const forceOtherUrl = navigateOptions.force && previousRoute && navigateUrl;\n    if (previousRoute && modalToClose) {\n      const isBrokenBrowserHistory = device.ie || device.edge || device.firefox && !device.ios;\n      const needHistoryBack = router.params.browserHistory && navigateOptions.browserHistory !== false;\n      const currentRouteWithoutBrowserHistory = router.currentRoute && router.currentRoute.route && router.currentRoute.route.options && router.currentRoute.route.options.browserHistory === false;\n      if (needHistoryBack && !isBrokenBrowserHistory && !currentRouteWithoutBrowserHistory) {\n        History.back();\n      }\n      router.currentRoute = previousRoute;\n      router.history.pop();\n      router.propsHistory.pop();\n      router.saveHistory();\n      if (needHistoryBack && isBrokenBrowserHistory && !currentRouteWithoutBrowserHistory) {\n        History.back();\n      }\n      router.modalRemove(modalToClose);\n      if (forceOtherUrl) {\n        router.navigate(navigateUrl, {\n          reloadCurrent: true\n        });\n      }\n    } else if (modalToClose) {\n      router.modalRemove(modalToClose);\n      if (navigateUrl) {\n        router.navigate(navigateUrl, {\n          reloadCurrent: true\n        });\n      }\n    }\n    return router;\n  }\n  let $previousPage = router.$el.children('.page-current').prevAll('.page-previous:not(.page-master)').eq(0);\n  let skipMaster;\n  if (router.params.masterDetailBreakpoint > 0) {\n    const classes = [];\n    router.$el.children('.page').each(pageEl => {\n      classes.push(pageEl.className);\n    });\n    const $previousMaster = router.$el.children('.page-current').prevAll('.page-master').eq(0);\n    if ($previousMaster.length) {\n      const expectedPreviousPageUrl = router.history[router.history.length - 2];\n      const expectedPreviousPageRoute = router.findMatchingRoute(expectedPreviousPageUrl);\n      if (expectedPreviousPageRoute && $previousMaster[0].f7Page && expectedPreviousPageRoute.route === $previousMaster[0].f7Page.route.route) {\n        $previousPage = $previousMaster;\n        if (!navigateOptions.preload) {\n          skipMaster = app.width >= router.params.masterDetailBreakpoint;\n        }\n      }\n    }\n  }\n  if (!navigateOptions.force && $previousPage.length && !skipMaster) {\n    const previousPageObj = $previousPage[0].f7Page;\n    if (router.params.browserHistory && previousPageObj && router.history[router.history.length - 2] !== previousPageObj.route.url) {\n      router.back(router.history[router.history.length - 2], extend(navigateOptions, {\n        force: true,\n        props: router.propsHistory[router.propsHistory.length - 2] || {}\n      }));\n      return router;\n    }\n    if (previousPageObj) {\n      const previousPageRoute = previousPageObj.route;\n      processRouteQueue.call(router, previousPageRoute, router.currentRoute, () => {\n        loadBack(router, {\n          el: $previousPage\n        }, extend(navigateOptions, {\n          route: previousPageRoute\n        }));\n      }, () => {}, 'backward');\n      return router;\n    }\n  }\n\n  // Navigate URL\n  if (navigateUrl === '#') {\n    navigateUrl = undefined;\n  }\n  if (navigateUrl && navigateUrl[0] !== '/' && navigateUrl.indexOf('#') !== 0) {\n    navigateUrl = ((router.path || '/') + navigateUrl).replace('//', '/');\n  }\n  if (!navigateUrl && router.history.length > 1) {\n    navigateUrl = router.history[router.history.length - 2];\n    navigateProps = router.propsHistory[router.propsHistory.length - 2] || {};\n  }\n  if (skipMaster && !navigateOptions.force && router.history[router.history.length - 3]) {\n    return router.back(router.history[router.history.length - 3], extend({}, navigateOptions || {}, {\n      force: true,\n      animate: false,\n      props: router.propsHistory[router.propsHistory.length - 3] || {}\n    }));\n  }\n  if (skipMaster && !navigateOptions.force) {\n    return router;\n  }\n\n  // Find route to load\n  route = router.findMatchingRoute(navigateUrl);\n  if (!route) {\n    if (navigateUrl) {\n      route = {\n        url: navigateUrl,\n        path: navigateUrl.split('?')[0],\n        query: parseUrlQuery(navigateUrl),\n        route: {\n          path: navigateUrl.split('?')[0],\n          url: navigateUrl\n        }\n      };\n    }\n  }\n  if (!route) {\n    return router;\n  }\n  if (route.route.redirect) {\n    return redirect.call(router, 'backward', route, navigateOptions);\n  }\n  const options = {};\n  if (route.route.options) {\n    extend(options, route.route.options, navigateOptions, {\n      props: navigateProps || {}\n    });\n  } else {\n    extend(options, navigateOptions, {\n      props: navigateProps || {}\n    });\n  }\n  options.route = route;\n  function resolve() {\n    let routerLoaded = false;\n    if (route.route.keepAlive && route.route.keepAliveData) {\n      loadBack(router, {\n        el: route.route.keepAliveData.pageEl\n      }, options);\n      routerLoaded = true;\n    }\n    'url content component pageName el componentUrl'.split(' ').forEach(pageLoadProp => {\n      if (route.route[pageLoadProp] && !routerLoaded) {\n        routerLoaded = true;\n        loadBack(router, {\n          [pageLoadProp]: route.route[pageLoadProp]\n        }, options);\n      }\n    });\n    if (routerLoaded) return;\n    // Async\n    function asyncResolve(resolveParams, resolveOptions) {\n      router.allowPageChange = false;\n      loadBack(router, resolveParams, extend(options, resolveOptions), true);\n    }\n    function asyncReject() {\n      router.allowPageChange = true;\n    }\n    if (route.route.async) {\n      router.allowPageChange = false;\n      route.route.async.call(router, {\n        router,\n        to: route,\n        from: router.currentRoute,\n        resolve: asyncResolve,\n        reject: asyncReject,\n        direction: 'backward',\n        app\n      });\n    }\n    if (route.route.asyncComponent) {\n      asyncComponent(router, route.route.asyncComponent, asyncResolve, asyncReject);\n    }\n  }\n  function reject() {\n    router.allowPageChange = true;\n  }\n  if (options.preload) {\n    resolve();\n  } else {\n    processRouteQueue.call(router, route, router.currentRoute, () => {\n      if (route.route.modules) {\n        app.loadModules(Array.isArray(route.route.modules) ? route.route.modules : [route.route.modules]).then(() => {\n          resolve();\n        }).catch(() => {\n          reject();\n        });\n      } else {\n        resolve();\n      }\n    }, () => {\n      reject();\n    }, 'backward');\n  }\n\n  // Return Router\n  return router;\n}\nexport { back };", "import $ from '../../shared/dom7.js';\nimport appRouterCheck from './app-router-check.js';\nfunction clearPreviousPages(router) {\n  appRouterCheck(router, 'clearPreviousPages');\n  const app = router.app;\n  const dynamicNavbar = router.dynamicNavbar;\n  const $pagesToRemove = router.$el.children('.page').filter(pageInView => {\n    if (router.currentRoute && (router.currentRoute.modal || router.currentRoute.panel)) return true;\n    return pageInView !== router.currentPageEl;\n  });\n  $pagesToRemove.each(pageEl => {\n    const $oldPageEl = $(pageEl);\n    const $oldNavbarEl = $(app.navbar.getElByPage($oldPageEl));\n    // Page remove event\n    router.pageCallback('beforeRemove', $oldPageEl, $oldNavbarEl, 'previous', undefined, {});\n    router.removePage($oldPageEl);\n    if (dynamicNavbar && $oldNavbarEl.length) {\n      router.removeNavbar($oldNavbarEl);\n    }\n  });\n}\nfunction clearPreviousHistory() {\n  const router = this;\n  appRouterCheck(router, 'clearPreviousHistory');\n  const url = router.history[router.history.length - 1];\n  clearPreviousPages(router);\n  router.history = [url];\n  router.view.history = [url];\n  router.saveHistory();\n}\nexport { clearPreviousHistory }; // eslint-disable-line", "import { getWindow, getDocument } from 'ssr-window';\nimport { pathToRegexp, compile } from 'path-to-regexp';\nimport $ from '../../shared/dom7.js';\nimport Framework7Class from '../../shared/class.js';\nimport { extend, nextFrame, parseUrlQuery, serializeObject, now, eventNameToColonCase } from '../../shared/utils.js';\nimport History from '../../shared/history.js';\nimport SwipeBack from './swipe-back.js';\nimport { refreshPage, navigate } from './navigate.js';\nimport { tabLoad, tabRemove } from './tab.js';\nimport { modalLoad, modalRemove } from './modal.js';\nimport { back } from './back.js';\nimport { clearPreviousHistory } from './clear-previous-history.js';\nimport appRouterCheck from './app-router-check.js';\nclass Router extends Framework7Class {\n  constructor(app, view) {\n    super({}, [typeof view === 'undefined' ? app : view]);\n    const router = this;\n\n    // Is App Router\n    router.isAppRouter = typeof view === 'undefined';\n    if (router.isAppRouter) {\n      // App Router\n      extend(false, router, {\n        app,\n        params: app.params.view,\n        routes: app.routes || [],\n        cache: app.cache\n      });\n    } else {\n      // View Router\n      extend(false, router, {\n        app,\n        view,\n        viewId: view.id,\n        id: view.params.routerId,\n        params: view.params,\n        routes: view.routes,\n        history: view.history,\n        propsHistory: [],\n        scrollHistory: view.scrollHistory,\n        cache: app.cache,\n        dynamicNavbar: app.theme === 'ios' && view.params.iosDynamicNavbar,\n        initialPages: [],\n        initialNavbars: []\n      });\n    }\n\n    // Install Modules\n    router.useModules();\n\n    // AllowPageChage\n    router.allowPageChange = true;\n\n    // Current Route\n    let currentRoute = {};\n    let previousRoute = {};\n    Object.defineProperty(router, 'currentRoute', {\n      enumerable: true,\n      configurable: true,\n      set(newRoute) {\n        if (newRoute === void 0) {\n          newRoute = {};\n        }\n        previousRoute = extend({}, currentRoute);\n        currentRoute = newRoute;\n        if (!currentRoute) return;\n        router.url = currentRoute.url;\n        router.emit('routeChange', newRoute, previousRoute, router);\n      },\n      get() {\n        return currentRoute;\n      }\n    });\n    Object.defineProperty(router, 'previousRoute', {\n      enumerable: true,\n      configurable: true,\n      get() {\n        return previousRoute;\n      },\n      set(newRoute) {\n        previousRoute = newRoute;\n      }\n    });\n    return router;\n  }\n  mount() {\n    const router = this;\n    const view = router.view;\n    const document = getDocument();\n    extend(false, router, {\n      tempDom: document.createElement('div'),\n      $el: view.$el,\n      el: view.el,\n      $navbarsEl: view.$navbarsEl,\n      navbarsEl: view.navbarsEl\n    });\n    router.emit('local::mount routerMount', router);\n  }\n  animatableNavElements($newNavbarEl, $oldNavbarEl, toLarge, fromLarge, direction) {\n    const router = this;\n    const dynamicNavbar = router.dynamicNavbar;\n    const animateIcon = router.params.iosAnimateNavbarBackIcon;\n    let newNavEls;\n    let oldNavEls;\n    function animatableNavEl($el, $navbarInner) {\n      const isSliding = $el.hasClass('sliding') || $navbarInner.hasClass('sliding');\n      const isSubnavbar = $el.hasClass('subnavbar');\n      const needsOpacityTransition = isSliding ? !isSubnavbar : true;\n      const $iconEl = $el.find('.back .icon');\n      let isIconLabel;\n      if (isSliding && animateIcon && $el.hasClass('left') && $iconEl.length > 0 && $iconEl.next('span').length) {\n        $el = $iconEl.next('span'); // eslint-disable-line\n        isIconLabel = true;\n      }\n      return {\n        $el,\n        isIconLabel,\n        leftOffset: $el[0].f7NavbarLeftOffset,\n        rightOffset: $el[0].f7NavbarRightOffset,\n        isSliding,\n        isSubnavbar,\n        needsOpacityTransition\n      };\n    }\n    if (dynamicNavbar) {\n      newNavEls = [];\n      oldNavEls = [];\n      $newNavbarEl.children('.navbar-inner').children('.left, .right, .title, .subnavbar').each(navEl => {\n        const $navEl = $(navEl);\n        if ($navEl.hasClass('left') && fromLarge && direction === 'forward') return;\n        if ($navEl.hasClass('title') && toLarge) return;\n        newNavEls.push(animatableNavEl($navEl, $newNavbarEl.children('.navbar-inner')));\n      });\n      if (!($oldNavbarEl.hasClass('navbar-master') && router.params.masterDetailBreakpoint > 0 && router.app.width >= router.params.masterDetailBreakpoint)) {\n        $oldNavbarEl.children('.navbar-inner').children('.left, .right, .title, .subnavbar').each(navEl => {\n          const $navEl = $(navEl);\n          if ($navEl.hasClass('left') && toLarge && !fromLarge && direction === 'forward') return;\n          if ($navEl.hasClass('left') && toLarge && direction === 'backward') return;\n          if ($navEl.hasClass('title') && fromLarge) {\n            return;\n          }\n          oldNavEls.push(animatableNavEl($navEl, $oldNavbarEl.children('.navbar-inner')));\n        });\n      }\n      [oldNavEls, newNavEls].forEach(navEls => {\n        navEls.forEach(navEl => {\n          const n = navEl;\n          const {\n            isSliding,\n            $el\n          } = navEl;\n          const otherEls = navEls === oldNavEls ? newNavEls : oldNavEls;\n          if (!(isSliding && $el.hasClass('title') && otherEls)) return;\n          otherEls.forEach(otherNavEl => {\n            if (otherNavEl.isIconLabel) {\n              const iconTextEl = otherNavEl.$el[0];\n              n.leftOffset += iconTextEl ? iconTextEl.offsetLeft || 0 : 0;\n            }\n          });\n        });\n      });\n    }\n    return {\n      newNavEls,\n      oldNavEls\n    };\n  }\n  animate($oldPageEl, $newPageEl, $oldNavbarEl, $newNavbarEl, direction, transition, callback) {\n    const router = this;\n    if (router.params.animateCustom) {\n      router.params.animateCustom.apply(router, [$oldPageEl, $newPageEl, $oldNavbarEl, $newNavbarEl, direction, callback]);\n      return;\n    }\n    const dynamicNavbar = router.dynamicNavbar;\n    const ios = router.app.theme === 'ios';\n    if (transition) {\n      const routerCustomTransitionClass = `router-transition-custom router-transition-${transition}-${direction}`;\n      // Animate\n      const onCustomTransitionDone = () => {\n        router.$el.removeClass(routerCustomTransitionClass);\n        if (dynamicNavbar && router.$navbarsEl.length) {\n          if ($newNavbarEl) {\n            router.$navbarsEl.prepend($newNavbarEl);\n          }\n          if ($oldNavbarEl) {\n            router.$navbarsEl.prepend($oldNavbarEl);\n          }\n        }\n        if (callback) callback();\n      };\n      (direction === 'forward' ? $newPageEl : $oldPageEl).animationEnd(onCustomTransitionDone);\n      if (dynamicNavbar) {\n        if ($newNavbarEl && $newPageEl) {\n          router.setNavbarPosition($newNavbarEl, '');\n          $newNavbarEl.removeClass('navbar-next navbar-previous navbar-current');\n          $newPageEl.prepend($newNavbarEl);\n        }\n        if ($oldNavbarEl && $oldPageEl) {\n          router.setNavbarPosition($oldNavbarEl, '');\n          $oldNavbarEl.removeClass('navbar-next navbar-previous navbar-current');\n          $oldPageEl.prepend($oldNavbarEl);\n        }\n      }\n      router.$el.addClass(routerCustomTransitionClass);\n      return;\n    }\n\n    // Router Animation class\n    const routerTransitionClass = `router-transition-${direction} router-transition`;\n    let newNavEls;\n    let oldNavEls;\n    let fromLarge;\n    let toLarge;\n    let toDifferent;\n    let oldIsLarge;\n    let newIsLarge;\n    if (ios && dynamicNavbar) {\n      const betweenMasterAndDetail = router.params.masterDetailBreakpoint > 0 && router.app.width >= router.params.masterDetailBreakpoint && ($oldNavbarEl.hasClass('navbar-master') && $newNavbarEl.hasClass('navbar-master-detail') || $oldNavbarEl.hasClass('navbar-master-detail') && $newNavbarEl.hasClass('navbar-master'));\n      if (!betweenMasterAndDetail) {\n        oldIsLarge = $oldNavbarEl && $oldNavbarEl.hasClass('navbar-large');\n        newIsLarge = $newNavbarEl && $newNavbarEl.hasClass('navbar-large');\n        fromLarge = oldIsLarge && !$oldNavbarEl.hasClass('navbar-large-collapsed');\n        toLarge = newIsLarge && !$newNavbarEl.hasClass('navbar-large-collapsed');\n        toDifferent = fromLarge && !toLarge || toLarge && !fromLarge;\n      }\n      const navEls = router.animatableNavElements($newNavbarEl, $oldNavbarEl, toLarge, fromLarge, direction);\n      newNavEls = navEls.newNavEls;\n      oldNavEls = navEls.oldNavEls;\n    }\n    function animateNavbars(progress) {\n      if (!(ios && dynamicNavbar)) return;\n      if (progress === 1) {\n        if (toLarge) {\n          $newNavbarEl.addClass('router-navbar-transition-to-large');\n          $oldNavbarEl.addClass('router-navbar-transition-to-large');\n        }\n        if (fromLarge) {\n          $newNavbarEl.addClass('router-navbar-transition-from-large');\n          $oldNavbarEl.addClass('router-navbar-transition-from-large');\n        }\n      }\n      newNavEls.forEach(navEl => {\n        const $el = navEl.$el;\n        const offset = direction === 'forward' ? navEl.rightOffset : navEl.leftOffset;\n        if (navEl.isSliding) {\n          if (navEl.isSubnavbar && newIsLarge) {\n            // prettier-ignore\n            $el[0].style.setProperty('transform', `translate3d(${offset * (1 - progress)}px, calc(-1 * var(--f7-navbar-large-collapse-progress) * var(--f7-navbar-large-title-height)), 0)`, 'important');\n          } else {\n            $el.transform(`translate3d(${offset * (1 - progress)}px,0,0)`);\n          }\n        }\n      });\n      oldNavEls.forEach(navEl => {\n        const $el = navEl.$el;\n        const offset = direction === 'forward' ? navEl.leftOffset : navEl.rightOffset;\n        if (navEl.isSliding) {\n          if (navEl.isSubnavbar && oldIsLarge) {\n            $el.transform(`translate3d(${offset * progress}px, calc(-1 * var(--f7-navbar-large-collapse-progress) * var(--f7-navbar-large-title-height)), 0)`);\n          } else {\n            $el.transform(`translate3d(${offset * progress}px,0,0)`);\n          }\n        }\n      });\n    }\n\n    // AnimationEnd Callback\n    function onDone() {\n      if (router.dynamicNavbar) {\n        if ($newNavbarEl) {\n          $newNavbarEl.removeClass('router-navbar-transition-to-large router-navbar-transition-from-large');\n          $newNavbarEl.addClass('navbar-no-title-large-transition');\n          nextFrame(() => {\n            $newNavbarEl.removeClass('navbar-no-title-large-transition');\n          });\n        }\n        if ($oldNavbarEl) {\n          $oldNavbarEl.removeClass('router-navbar-transition-to-large router-navbar-transition-from-large');\n        }\n        if ($newNavbarEl.hasClass('sliding') || $newNavbarEl.children('.navbar-inner.sliding').length) {\n          $newNavbarEl.find('.title, .left, .right, .left .icon, .subnavbar').transform('');\n        } else {\n          $newNavbarEl.find('.sliding').transform('');\n        }\n        if ($oldNavbarEl.hasClass('sliding') || $oldNavbarEl.children('.navbar-inner.sliding').length) {\n          $oldNavbarEl.find('.title, .left, .right, .left .icon, .subnavbar').transform('');\n        } else {\n          $oldNavbarEl.find('.sliding').transform('');\n        }\n      }\n      router.$el.removeClass(routerTransitionClass);\n      if (callback) callback();\n    }\n\n    // eslint-disable-next-line\n    (direction === 'forward' ? $newPageEl : ios ? $oldPageEl : $newPageEl).animationEnd(() => {\n      onDone();\n    });\n\n    // Animate\n    if (dynamicNavbar) {\n      // Prepare Navbars\n      animateNavbars(0);\n      nextFrame(() => {\n        // Add class, start animation\n        router.$el.addClass(routerTransitionClass);\n        if (toDifferent) {\n          // eslint-disable-next-line\n          router.el._clientLeft = router.el.clientLeft;\n        }\n        animateNavbars(1);\n      });\n    } else {\n      // Add class, start animation\n      router.$el.addClass(routerTransitionClass);\n    }\n  }\n  removeModal(modalEl) {\n    const router = this;\n    router.removeEl(modalEl);\n  }\n  // eslint-disable-next-line\n  removeTabContent(tabEl) {\n    const $tabEl = $(tabEl);\n    $tabEl.html('');\n  }\n  removeNavbar(el) {\n    const router = this;\n    router.removeEl(el);\n  }\n  removePage(el) {\n    const $el = $(el);\n    const f7Page = $el && $el[0] && $el[0].f7Page;\n    const router = this;\n    if (f7Page && f7Page.route && f7Page.route.route && f7Page.route.route.keepAlive) {\n      $el.remove();\n      return;\n    }\n    router.removeEl(el);\n  }\n  removeEl(el) {\n    if (!el) return;\n    const router = this;\n    const $el = $(el);\n    if ($el.length === 0) return;\n    $el.find('.tab').each(tabEl => {\n      $(tabEl).children().each(tabChild => {\n        if (tabChild.f7Component) {\n          $(tabChild).trigger('tab:beforeremove');\n          tabChild.f7Component.destroy();\n        }\n      });\n    });\n    if ($el[0].f7Component && $el[0].f7Component.destroy) {\n      $el[0].f7Component.destroy();\n    }\n    if (!router.params.removeElements) {\n      return;\n    }\n    if (router.params.removeElementsWithTimeout) {\n      setTimeout(() => {\n        $el.remove();\n      }, router.params.removeElementsTimeout);\n    } else {\n      $el.remove();\n    }\n  }\n  getPageEl(content) {\n    const router = this;\n    if (typeof content === 'string') {\n      router.tempDom.innerHTML = content;\n    } else {\n      if ($(content).hasClass('page')) {\n        return content;\n      }\n      router.tempDom.innerHTML = '';\n      $(router.tempDom).append(content);\n    }\n    return router.findElement('.page', router.tempDom);\n  }\n  findElement(stringSelector, container) {\n    const router = this;\n    const view = router.view;\n    const app = router.app;\n\n    // Modals Selector\n    const modalsSelector = '.popup, .dialog, .popover, .actions-modal, .sheet-modal, .login-screen, .page';\n    const $container = $(container);\n    const selector = stringSelector;\n    let found = $container.find(selector).filter(el => $(el).parents(modalsSelector).length === 0);\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    found = router.findElement(selector, $container);\n    if (found && found.length === 1) return found;\n    if (found && found.length > 1) return $(found[0]);\n    return undefined;\n  }\n  flattenRoutes(routes) {\n    if (routes === void 0) {\n      routes = this.routes;\n    }\n    const router = this;\n    let flattenedRoutes = [];\n    routes.forEach(route => {\n      let hasTabRoutes = false;\n      if ('tabs' in route && route.tabs) {\n        const mergedPathsRoutes = route.tabs.map(tabRoute => {\n          const tRoute = extend({}, route, {\n            path: `${route.path}/${tabRoute.path}`.replace('///', '/').replace('//', '/'),\n            parentPath: route.path,\n            tab: tabRoute\n          });\n          delete tRoute.tabs;\n          delete tRoute.routes;\n          return tRoute;\n        });\n        hasTabRoutes = true;\n        flattenedRoutes = flattenedRoutes.concat(router.flattenRoutes(mergedPathsRoutes));\n      }\n      if ('detailRoutes' in route) {\n        const mergedPathsRoutes = route.detailRoutes.map(detailRoute => {\n          const dRoute = extend({}, detailRoute);\n          dRoute.masterRoute = route;\n          dRoute.masterRoutePath = route.path;\n          return dRoute;\n        });\n        flattenedRoutes = flattenedRoutes.concat(route, router.flattenRoutes(mergedPathsRoutes));\n      }\n      if ('routes' in route) {\n        const mergedPathsRoutes = route.routes.map(childRoute => {\n          const cRoute = extend({}, childRoute);\n          cRoute.path = `${route.path}/${cRoute.path}`.replace('///', '/').replace('//', '/');\n          return cRoute;\n        });\n        if (hasTabRoutes) {\n          flattenedRoutes = flattenedRoutes.concat(router.flattenRoutes(mergedPathsRoutes));\n        } else {\n          flattenedRoutes = flattenedRoutes.concat(route, router.flattenRoutes(mergedPathsRoutes));\n        }\n      }\n      if (!('routes' in route) && !('tabs' in route && route.tabs) && !('detailRoutes' in route)) {\n        flattenedRoutes.push(route);\n      }\n    });\n    return flattenedRoutes;\n  }\n\n  // eslint-disable-next-line\n  parseRouteUrl(url) {\n    if (!url) return {};\n    const query = parseUrlQuery(url);\n    const hash = url.split('#')[1];\n    const params = {};\n    const path = url.split('#')[0].split('?')[0];\n    return {\n      query,\n      hash,\n      params,\n      url,\n      path\n    };\n  }\n  generateUrl(parameters) {\n    if (parameters === void 0) {\n      parameters = {};\n    }\n    if (typeof parameters === 'string') {\n      return parameters;\n    }\n    const {\n      name,\n      path,\n      params,\n      query\n    } = parameters;\n    if (!name && !path) {\n      throw new Error('Framework7: \"name\" or \"path\" parameter is required');\n    }\n    const router = this;\n    const route = name ? router.findRouteByKey('name', name) : router.findRouteByKey('path', path);\n    if (!route) {\n      if (name) {\n        throw new Error(`Framework7: route with name \"${name}\" not found`);\n      } else {\n        throw new Error(`Framework7: route with path \"${path}\" not found`);\n      }\n    }\n    const url = router.constructRouteUrl(route, {\n      params,\n      query\n    });\n    if (url === '') {\n      return '/';\n    }\n    if (!url) {\n      throw new Error(`Framework7: can't construct URL for route with name \"${name}\"`);\n    }\n    return url;\n  }\n\n  // eslint-disable-next-line\n  constructRouteUrl(route, _temp) {\n    let {\n      params,\n      query\n    } = _temp === void 0 ? {} : _temp;\n    const {\n      path\n    } = route;\n    const toUrl = compile(path);\n    let 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    if (query) {\n      if (typeof query === 'string') url += `?${query}`;else if (Object.keys(query).length) url += `?${serializeObject(query)}`;\n    }\n    return url;\n  }\n  findTabRouteUrl(tabEl) {\n    const router = this;\n    const $tabEl = $(tabEl);\n    const parentPath = router.currentRoute.route.parentPath;\n    const tabId = $tabEl.attr('id');\n    const flattenedRoutes = router.flattenRoutes(router.routes);\n    let foundTabRouteUrl;\n    flattenedRoutes.forEach(route => {\n      if (route.parentPath === parentPath && route.tab && route.tab.id === tabId) {\n        if (router.currentRoute.params && Object.keys(router.currentRoute.params).length > 0) {\n          foundTabRouteUrl = router.constructRouteUrl(route, {\n            params: router.currentRoute.params,\n            query: router.currentRoute.query\n          });\n        } else {\n          foundTabRouteUrl = route.path;\n        }\n      }\n    });\n    return foundTabRouteUrl;\n  }\n  findRouteByKey(key, value) {\n    const router = this;\n    const routes = router.routes;\n    const flattenedRoutes = router.flattenRoutes(routes);\n    let matchingRoute;\n    flattenedRoutes.forEach(route => {\n      if (matchingRoute) return;\n      if (route[key] === value) {\n        matchingRoute = route;\n      }\n    });\n    return matchingRoute;\n  }\n  findMatchingRoute(url) {\n    if (!url) return undefined;\n    const router = this;\n    const routes = router.routes;\n    const flattenedRoutes = router.flattenRoutes(routes);\n    const {\n      path,\n      query,\n      hash,\n      params\n    } = router.parseRouteUrl(url);\n    let matchingRoute;\n    flattenedRoutes.forEach(route => {\n      if (matchingRoute) return;\n      const keys = [];\n      const pathsToMatch = [route.path || '/'];\n      if (route.alias) {\n        if (typeof route.alias === 'string') pathsToMatch.push(route.alias);else if (Array.isArray(route.alias)) {\n          route.alias.forEach(aliasPath => {\n            pathsToMatch.push(aliasPath);\n          });\n        }\n      }\n      let matched;\n      pathsToMatch.forEach(pathToMatch => {\n        if (matched) return;\n        matched = pathToRegexp(pathToMatch, keys).exec(path || '/');\n      });\n      if (matched) {\n        keys.forEach((keyObj, index) => {\n          if (typeof keyObj.name === 'number') return;\n          const paramValue = matched[index + 1];\n          if (typeof paramValue === 'undefined' || paramValue === null) {\n            params[keyObj.name] = paramValue;\n          } else {\n            params[keyObj.name] = decodeURIComponent(paramValue);\n          }\n        });\n        let parentPath;\n        if (route.parentPath) {\n          parentPath = (path || '/').split('/').slice(0, route.parentPath.split('/').length - 1).join('/');\n        }\n        matchingRoute = {\n          query,\n          hash,\n          params,\n          url,\n          path: path || '/',\n          parentPath,\n          route,\n          name: route.name\n        };\n      }\n    });\n    return matchingRoute;\n  }\n\n  // eslint-disable-next-line\n  replaceRequestUrlParams(url, options) {\n    if (url === void 0) {\n      url = '';\n    }\n    if (options === void 0) {\n      options = {};\n    }\n    let compiledUrl = url;\n    if (typeof compiledUrl === 'string' && compiledUrl.indexOf('{{') >= 0 && options && options.route && options.route.params && Object.keys(options.route.params).length) {\n      Object.keys(options.route.params).forEach(paramName => {\n        const regExp = new RegExp(`{{${paramName}}}`, 'g');\n        compiledUrl = compiledUrl.replace(regExp, options.route.params[paramName] || '');\n      });\n    }\n    return compiledUrl;\n  }\n  removeFromXhrCache(url) {\n    const router = this;\n    const xhrCache = router.cache.xhr;\n    let index = false;\n    for (let i = 0; i < xhrCache.length; i += 1) {\n      if (xhrCache[i].url === url) index = i;\n    }\n    if (index !== false) xhrCache.splice(index, 1);\n  }\n  xhrRequest(requestUrl, options) {\n    const router = this;\n    const params = router.params;\n    const {\n      ignoreCache\n    } = options;\n    let url = requestUrl;\n    let hasQuery = url.indexOf('?') >= 0;\n    if (params.passRouteQueryToRequest && options && options.route && options.route.query && Object.keys(options.route.query).length) {\n      url += `${hasQuery ? '&' : '?'}${serializeObject(options.route.query)}`;\n      hasQuery = true;\n    }\n    if (params.passRouteParamsToRequest && options && options.route && options.route.params && Object.keys(options.route.params).length) {\n      url += `${hasQuery ? '&' : '?'}${serializeObject(options.route.params)}`;\n      hasQuery = true;\n    }\n    if (url.indexOf('{{') >= 0) {\n      url = router.replaceRequestUrlParams(url, options);\n    }\n    // should we ignore get params or not\n    if (params.xhrCacheIgnoreGetParameters && url.indexOf('?') >= 0) {\n      url = url.split('?')[0];\n    }\n    return new Promise((resolve, reject) => {\n      if (params.xhrCache && !ignoreCache && url.indexOf('nocache') < 0 && params.xhrCacheIgnore.indexOf(url) < 0) {\n        for (let i = 0; i < router.cache.xhr.length; i += 1) {\n          const cachedUrl = router.cache.xhr[i];\n          if (cachedUrl.url === url) {\n            // Check expiration\n            if (now() - cachedUrl.time < params.xhrCacheDuration) {\n              // Load from cache\n              resolve(cachedUrl.content);\n              return;\n            }\n          }\n        }\n      }\n      router.xhrAbortController = new AbortController();\n      let fetchRes;\n      fetch(url, {\n        signal: router.xhrAbortController.signal,\n        method: 'GET'\n      }).then(res => {\n        fetchRes = res;\n        return res.text();\n      }).then(responseText => {\n        const {\n          status\n        } = fetchRes;\n        router.emit('routerAjaxComplete', fetchRes);\n        if (status !== 'error' && status !== 'timeout' && status >= 200 && status < 300 || status === 0) {\n          if (params.xhrCache && responseText !== '') {\n            router.removeFromXhrCache(url);\n            router.cache.xhr.push({\n              url,\n              time: now(),\n              content: responseText\n            });\n          }\n          router.emit('routerAjaxSuccess', fetchRes, options);\n          resolve(responseText);\n        } else {\n          router.emit('routerAjaxError', fetchRes, options);\n          reject(fetchRes);\n        }\n      }).catch(err => {\n        reject(err);\n      });\n    });\n  }\n  setNavbarPosition($el, position, ariaHidden) {\n    const router = this;\n    $el.removeClass('navbar-previous navbar-current navbar-next');\n    if (position) {\n      $el.addClass(`navbar-${position}`);\n    }\n    if (ariaHidden === false) {\n      $el.removeAttr('aria-hidden');\n    } else if (ariaHidden === true) {\n      $el.attr('aria-hidden', 'true');\n    }\n    $el.trigger('navbar:position', {\n      position\n    });\n    router.emit('navbarPosition', $el[0], position);\n  }\n  setPagePosition($el, position, ariaHidden) {\n    const router = this;\n    $el.removeClass('page-previous page-current page-next');\n    $el.addClass(`page-${position}`);\n    if (ariaHidden === false) {\n      $el.removeAttr('aria-hidden');\n    } else if (ariaHidden === true) {\n      $el.attr('aria-hidden', 'true');\n    }\n    $el.trigger('page:position', {\n      position\n    });\n    router.emit('pagePosition', $el[0], position);\n  }\n\n  // Remove theme elements\n  removeThemeElements(el) {\n    const router = this;\n    const theme = router.app.theme;\n    let toRemove;\n    if (theme === 'ios') {\n      toRemove = '.md-only, .if-md, .if-not-ios, .not-ios';\n    } else if (theme === 'md') {\n      toRemove = '.ios-only, .if-ios, .if-not-md, .not-md';\n    }\n    $(el).find(toRemove).remove();\n  }\n  getPageData(pageEl, navbarEl, from, to, route, pageFromEl) {\n    if (route === void 0) {\n      route = {};\n    }\n    const router = this;\n    const $pageEl = $(pageEl).eq(0);\n    const $navbarEl = $(navbarEl).eq(0);\n    const currentPage = $pageEl[0].f7Page || {};\n    let direction;\n    let pageFrom;\n    if (from === 'next' && to === 'current' || from === 'current' && to === 'previous') direction = 'forward';\n    if (from === 'current' && to === 'next' || from === 'previous' && to === 'current') direction = 'backward';\n    if (currentPage && !currentPage.fromPage) {\n      const $pageFromEl = $(pageFromEl);\n      if ($pageFromEl.length) {\n        pageFrom = $pageFromEl[0].f7Page;\n      }\n    }\n    pageFrom = currentPage.pageFrom || pageFrom;\n    if (pageFrom && pageFrom.pageFrom) {\n      pageFrom.pageFrom = null;\n    }\n    const page = {\n      app: router.app,\n      view: router.view,\n      router,\n      $el: $pageEl,\n      el: $pageEl[0],\n      $pageEl,\n      pageEl: $pageEl[0],\n      $navbarEl,\n      navbarEl: $navbarEl[0],\n      name: $pageEl.attr('data-name'),\n      position: from,\n      from,\n      to,\n      direction,\n      route: currentPage.route ? currentPage.route : route,\n      pageFrom\n    };\n    $pageEl[0].f7Page = page;\n    return page;\n  }\n\n  // Callbacks\n  pageCallback(callback, pageEl, navbarEl, from, to, options, pageFromEl) {\n    if (options === void 0) {\n      options = {};\n    }\n    if (!pageEl) return;\n    const router = this;\n    const $pageEl = $(pageEl);\n    if (!$pageEl.length) return;\n    const $navbarEl = $(navbarEl);\n    const {\n      route\n    } = options;\n    const restoreScrollTopOnBack = router.params.restoreScrollTopOnBack && !(router.params.masterDetailBreakpoint > 0 && $pageEl.hasClass('page-master') && router.app.width >= router.params.masterDetailBreakpoint);\n    const keepAlive = $pageEl[0].f7Page && $pageEl[0].f7Page.route && $pageEl[0].f7Page.route.route && $pageEl[0].f7Page.route.route.keepAlive;\n    if (callback === 'beforeRemove' && keepAlive) {\n      callback = 'beforeUnmount'; // eslint-disable-line\n    }\n\n    const camelName = `page${callback[0].toUpperCase() + callback.slice(1, callback.length)}`;\n    const colonName = `page:${callback.toLowerCase()}`;\n    let page = {};\n    if (callback === 'beforeRemove' && $pageEl[0].f7Page) {\n      page = extend($pageEl[0].f7Page, {\n        from,\n        to,\n        position: from\n      });\n    } else {\n      page = router.getPageData($pageEl[0], $navbarEl[0], from, to, route, pageFromEl);\n    }\n    page.swipeBack = !!options.swipeBack;\n    const {\n      on = {},\n      once = {}\n    } = options.route ? options.route.route : {};\n    if (options.on) {\n      extend(on, options.on);\n    }\n    if (options.once) {\n      extend(once, options.once);\n    }\n    function attachEvents() {\n      if ($pageEl[0].f7RouteEventsAttached) return;\n      $pageEl[0].f7RouteEventsAttached = true;\n      if (on && Object.keys(on).length > 0) {\n        $pageEl[0].f7RouteEventsOn = on;\n        Object.keys(on).forEach(eventName => {\n          on[eventName] = on[eventName].bind(router);\n          $pageEl.on(eventNameToColonCase(eventName), on[eventName]);\n        });\n      }\n      if (once && Object.keys(once).length > 0) {\n        $pageEl[0].f7RouteEventsOnce = once;\n        Object.keys(once).forEach(eventName => {\n          once[eventName] = once[eventName].bind(router);\n          $pageEl.once(eventNameToColonCase(eventName), once[eventName]);\n        });\n      }\n    }\n    function detachEvents() {\n      if (!$pageEl[0].f7RouteEventsAttached) return;\n      if ($pageEl[0].f7RouteEventsOn) {\n        Object.keys($pageEl[0].f7RouteEventsOn).forEach(eventName => {\n          $pageEl.off(eventNameToColonCase(eventName), $pageEl[0].f7RouteEventsOn[eventName]);\n        });\n      }\n      if ($pageEl[0].f7RouteEventsOnce) {\n        Object.keys($pageEl[0].f7RouteEventsOnce).forEach(eventName => {\n          $pageEl.off(eventNameToColonCase(eventName), $pageEl[0].f7RouteEventsOnce[eventName]);\n        });\n      }\n      $pageEl[0].f7RouteEventsAttached = null;\n      $pageEl[0].f7RouteEventsOn = null;\n      $pageEl[0].f7RouteEventsOnce = null;\n      delete $pageEl[0].f7RouteEventsAttached;\n      delete $pageEl[0].f7RouteEventsOn;\n      delete $pageEl[0].f7RouteEventsOnce;\n    }\n    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        let $pageContent = $pageEl.find('.page-content');\n        if ($pageContent.length > 0) {\n          // eslint-disable-next-line\n          $pageContent = $pageContent.filter(pageContentEl => {\n            return $(pageContentEl).parents('.tab:not(.tab-active)').length === 0 && !$(pageContentEl).is('.tab:not(.tab-active)');\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      let $pageContent = $pageEl.find('.page-content');\n      if ($pageContent.length > 0) {\n        // eslint-disable-next-line\n        $pageContent = $pageContent.filter(pageContentEl => {\n          return $(pageContentEl).parents('.tab:not(.tab-active)').length === 0 && !$(pageContentEl).is('.tab:not(.tab-active)');\n        });\n      }\n      router.scrollHistory[page.route.url] = $pageContent.scrollTop();\n    }\n    if (restoreScrollTopOnBack && callback === 'beforeOut' && from === 'current' && to === 'next') {\n      // Delete scroll position\n      delete router.scrollHistory[page.route.url];\n    }\n    $pageEl.trigger(colonName, page);\n    router.emit(camelName, page);\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  saveHistory() {\n    const router = this;\n    const window = getWindow();\n    router.view.history = router.history;\n    if (router.params.browserHistory && router.params.browserHistoryStoreHistory && window.localStorage) {\n      window.localStorage[`f7router-${router.view.id}-history`] = JSON.stringify(router.history);\n    }\n  }\n  restoreHistory() {\n    const router = this;\n    const window = getWindow();\n    if (router.params.browserHistory && router.params.browserHistoryStoreHistory && window.localStorage && window.localStorage[`f7router-${router.view.id}-history`]) {\n      router.history = JSON.parse(window.localStorage[`f7router-${router.view.id}-history`]);\n      router.view.history = router.history;\n    }\n  }\n  clearHistory() {\n    const router = this;\n    router.history = [];\n    if (router.view) router.view.history = [];\n    router.saveHistory();\n  }\n  updateCurrentUrl(newUrl) {\n    const router = this;\n    appRouterCheck(router, 'updateCurrentUrl');\n    // Update history\n    if (router.history.length) {\n      router.history[router.history.length - 1] = newUrl;\n    } else {\n      router.history.push(newUrl);\n    }\n\n    // Update current route params\n    const {\n      query,\n      hash,\n      params,\n      url,\n      path\n    } = router.parseRouteUrl(newUrl);\n    if (router.currentRoute) {\n      extend(router.currentRoute, {\n        query,\n        hash,\n        params,\n        url,\n        path\n      });\n    }\n    if (router.params.browserHistory) {\n      const browserHistoryRoot = router.params.browserHistoryRoot || '';\n      History.replace(router.view.id, {\n        url: newUrl\n      }, browserHistoryRoot + router.params.browserHistorySeparator + newUrl);\n    }\n\n    // Save History\n    router.saveHistory();\n    router.emit('routeUrlUpdate', router.currentRoute, router);\n  }\n  getInitialUrl() {\n    const router = this;\n    if (router.initialUrl) {\n      return {\n        initialUrl: router.initialUrl,\n        historyRestored: router.historyRestored\n      };\n    }\n    const {\n      app,\n      view\n    } = router;\n    const document = getDocument();\n    const window = getWindow();\n    const location = app.params.url && typeof app.params.url === 'string' && typeof URL !== 'undefined' ? new URL(app.params.url) : document.location;\n    let initialUrl = router.params.url;\n    let documentUrl = location.href.split(location.origin)[1];\n    let historyRestored;\n    const {\n      browserHistory,\n      browserHistoryOnLoad,\n      browserHistorySeparator\n    } = router.params;\n    let {\n      browserHistoryRoot\n    } = router.params;\n    if ((window.cordova || window.Capacitor && window.Capacitor.isNative) && browserHistory && !browserHistorySeparator && !browserHistoryRoot && location.pathname.indexOf('index.html')) {\n      // eslint-disable-next-line\n      console.warn('Framework7: wrong or not complete browserHistory configuration, trying to guess browserHistoryRoot');\n      browserHistoryRoot = location.pathname.split('index.html')[0];\n    }\n    if (!browserHistory || !browserHistoryOnLoad) {\n      if (!initialUrl) {\n        initialUrl = documentUrl;\n      }\n      if (location.search && initialUrl.indexOf('?') < 0) {\n        initialUrl += location.search;\n      }\n      if (location.hash && initialUrl.indexOf('#') < 0) {\n        initialUrl += location.hash;\n      }\n    } else {\n      if (browserHistoryRoot && documentUrl.indexOf(browserHistoryRoot) >= 0) {\n        documentUrl = documentUrl.substring(documentUrl.indexOf(browserHistoryRoot) + browserHistoryRoot.length);\n        if (documentUrl === '') documentUrl = '/';\n      }\n      if (browserHistorySeparator.length > 0 && documentUrl.indexOf(browserHistorySeparator) >= 0) {\n        initialUrl = documentUrl.substring(documentUrl.indexOf(browserHistorySeparator) + browserHistorySeparator.length);\n      } else {\n        initialUrl = documentUrl;\n      }\n      router.restoreHistory();\n      if (router.history.indexOf(initialUrl) >= 0) {\n        router.history = router.history.slice(0, router.history.indexOf(initialUrl) + 1);\n      } else if (router.params.url === initialUrl) {\n        router.history = [initialUrl];\n      } else if (History.state && History.state[view.id] && History.state[view.id].url === router.history[router.history.length - 1]) {\n        initialUrl = router.history[router.history.length - 1];\n      } else {\n        router.history = [documentUrl.split(browserHistorySeparator)[0] || '/', initialUrl];\n      }\n      if (router.history.length > 1) {\n        historyRestored = true;\n      } else {\n        router.history = [];\n      }\n      router.saveHistory();\n    }\n    router.initialUrl = initialUrl;\n    router.historyRestored = historyRestored;\n    return {\n      initialUrl,\n      historyRestored\n    };\n  }\n  init() {\n    const router = this;\n    const {\n      app,\n      view\n    } = router;\n    const document = getDocument();\n    router.mount();\n    const {\n      initialUrl,\n      historyRestored\n    } = router.getInitialUrl();\n\n    // Init Swipeback\n    if (view && router.params.iosSwipeBack && app.theme === 'ios' || view && router.params.mdSwipeBack && app.theme === 'md') {\n      SwipeBack(router);\n    }\n    const {\n      browserHistory,\n      browserHistoryOnLoad,\n      browserHistoryAnimateOnLoad,\n      browserHistoryInitialMatch\n    } = router.params;\n    let currentRoute;\n    if (router.history.length > 1) {\n      // Will load page\n      const initUrl = browserHistoryInitialMatch ? initialUrl : router.history[0];\n      currentRoute = router.findMatchingRoute(initUrl);\n      if (!currentRoute) {\n        currentRoute = extend(router.parseRouteUrl(initUrl), {\n          route: {\n            url: initUrl,\n            path: initUrl.split('?')[0]\n          }\n        });\n      }\n    } else {\n      // Don't load page\n      currentRoute = router.findMatchingRoute(initialUrl);\n      if (!currentRoute) {\n        currentRoute = extend(router.parseRouteUrl(initialUrl), {\n          route: {\n            url: initialUrl,\n            path: initialUrl.split('?')[0]\n          }\n        });\n      }\n    }\n    if (router.$el.children('.page').length === 0 && initialUrl && router.params.loadInitialPage) {\n      // No pages presented in DOM, reload new page\n      router.navigate(initialUrl, {\n        initial: true,\n        reloadCurrent: true,\n        browserHistory: false,\n        animate: false,\n        once: {\n          modalOpen() {\n            if (!historyRestored) return;\n            const preloadPreviousPage = router.params.preloadPreviousPage || router.params[`${app.theme}SwipeBack`];\n            if (preloadPreviousPage && router.history.length > 1) {\n              router.back({\n                preload: true\n              });\n            }\n          },\n          pageAfterIn() {\n            if (!historyRestored) return;\n            const preloadPreviousPage = router.params.preloadPreviousPage || router.params[`${app.theme}SwipeBack`];\n            if (preloadPreviousPage && router.history.length > 1) {\n              router.back({\n                preload: true\n              });\n            }\n          }\n        }\n      });\n    } else if (router.$el.children('.page').length) {\n      // Init current DOM page\n      let hasTabRoute;\n      router.currentRoute = currentRoute;\n      router.$el.children('.page').each(pageEl => {\n        const $pageEl = $(pageEl);\n        let $navbarEl;\n        router.setPagePosition($pageEl, 'current');\n        if (router.dynamicNavbar) {\n          $navbarEl = $pageEl.children('.navbar');\n          if ($navbarEl.length > 0) {\n            if (!router.$navbarsEl.parents(document).length) {\n              router.$el.prepend(router.$navbarsEl);\n            }\n            router.setNavbarPosition($navbarEl, 'current');\n            router.$navbarsEl.append($navbarEl);\n            if ($navbarEl.children('.title-large').length) {\n              $navbarEl.addClass('navbar-large');\n            }\n            $pageEl.children('.navbar').remove();\n          } else {\n            router.$navbarsEl.addClass('navbar-hidden');\n            if ($navbarEl.children('.title-large').length) {\n              router.$navbarsEl.addClass('navbar-hidden navbar-large-hidden');\n            }\n          }\n        }\n        if (router.currentRoute && router.currentRoute.route && (router.currentRoute.route.master === true || typeof router.currentRoute.route.master === 'function' && router.currentRoute.route.master(app, router)) && router.params.masterDetailBreakpoint > 0) {\n          $pageEl.addClass('page-master');\n          $pageEl.trigger('page:role', {\n            role: 'master'\n          });\n          if ($navbarEl && $navbarEl.length) {\n            $navbarEl.addClass('navbar-master');\n          }\n          view.checkMasterDetailBreakpoint();\n        }\n        const initOptions = {\n          route: router.currentRoute\n        };\n        if (router.currentRoute && router.currentRoute.route && router.currentRoute.route.options) {\n          extend(initOptions, router.currentRoute.route.options);\n        }\n        router.currentPageEl = $pageEl[0];\n        if (router.dynamicNavbar && $navbarEl.length) {\n          router.currentNavbarEl = $navbarEl[0];\n        }\n        router.removeThemeElements($pageEl);\n        if (router.dynamicNavbar && $navbarEl.length) {\n          router.removeThemeElements($navbarEl);\n        }\n        if (initOptions.route.route.tab) {\n          hasTabRoute = true;\n          router.tabLoad(initOptions.route.route.tab, extend({}, initOptions));\n        }\n        router.pageCallback('init', $pageEl, $navbarEl, 'current', undefined, initOptions);\n        router.pageCallback('beforeIn', $pageEl, $navbarEl, 'current', undefined, initOptions);\n        router.pageCallback('afterIn', $pageEl, $navbarEl, 'current', undefined, initOptions);\n      });\n      if (historyRestored) {\n        if (browserHistoryInitialMatch) {\n          const preloadPreviousPage = router.params.preloadPreviousPage || router.params[`${app.theme}SwipeBack`];\n          if (preloadPreviousPage && router.history.length > 1) {\n            router.back({\n              preload: true\n            });\n          }\n        } else {\n          router.navigate(initialUrl, {\n            initial: true,\n            browserHistory: false,\n            history: false,\n            animate: browserHistoryAnimateOnLoad,\n            once: {\n              pageAfterIn() {\n                const preloadPreviousPage = router.params.preloadPreviousPage || router.params[`${app.theme}SwipeBack`];\n                if (preloadPreviousPage && router.history.length > 2) {\n                  router.back({\n                    preload: true\n                  });\n                }\n              }\n            }\n          });\n        }\n      }\n      if (!historyRestored && !hasTabRoute) {\n        router.history.push(initialUrl);\n        router.saveHistory();\n      }\n    }\n    if (initialUrl && browserHistory && browserHistoryOnLoad && (!History.state || !History.state[view.id])) {\n      History.initViewState(view.id, {\n        url: initialUrl\n      });\n    }\n    router.emit('local::init routerInit', router);\n  }\n  destroy() {\n    let router = this;\n    router.emit('local::destroy routerDestroy', router);\n\n    // Delete props & methods\n    Object.keys(router).forEach(routerProp => {\n      router[routerProp] = null;\n      delete router[routerProp];\n    });\n    router = null;\n  }\n}\n\n// Load\nRouter.prototype.navigate = navigate;\nRouter.prototype.refreshPage = refreshPage;\n// Tab\nRouter.prototype.tabLoad = tabLoad;\nRouter.prototype.tabRemove = tabRemove;\n// Modal\nRouter.prototype.modalLoad = modalLoad;\nRouter.prototype.modalRemove = modalRemove;\n// Back\nRouter.prototype.back = back;\n// Clear history\nRouter.prototype.clearPreviousHistory = clearPreviousHistory;\nexport default Router;", "import Router from './router-class.js';\nexport default {\n  name: 'router',\n  static: {\n    Router\n  },\n  instance: {\n    cache: {\n      xhr: [],\n      templates: [],\n      components: []\n    }\n  },\n  create() {\n    const instance = this;\n    if (instance.app) {\n      // View Router\n      if (instance.params.router) {\n        instance.router = new Router(instance.app, instance);\n      }\n    } else {\n      // App Router\n      instance.router = new Router(instance);\n    }\n  }\n};", "import $ from '../../shared/dom7.js';\nimport { extend } from '../../shared/utils.js';\nimport { getSupport } from '../../shared/get-support.js';\nfunction resizableView(view) {\n  const app = view.app;\n  const support = getSupport();\n  if (view.resizableInitialized) return;\n  extend(view, {\n    resizable: true,\n    resizableWidth: null,\n    resizableInitialized: true\n  });\n  const $htmlEl = $('html');\n  const {\n    $el\n  } = view;\n  if (!$el) return;\n  let $resizeHandlerEl;\n  let isTouched;\n  let isMoved;\n  const touchesStart = {};\n  let touchesDiff;\n  let width;\n  let minWidth;\n  let maxWidth;\n  function transformCSSWidth(v) {\n    if (!v) return null;\n    if (v.indexOf('%') >= 0 || v.indexOf('vw') >= 0) {\n      return parseInt(v, 10) / 100 * app.width;\n    }\n    const newV = parseInt(v, 10);\n    if (Number.isNaN(newV)) return null;\n    return newV;\n  }\n  function isResizable() {\n    return view.resizable && $el.hasClass('view-resizable') && $el.hasClass('view-master-detail');\n  }\n  function handleTouchStart(e) {\n    if (!isResizable()) return;\n    touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n    touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n    isMoved = false;\n    isTouched = true;\n    const $pageMasterEl = $el.children('.page-master');\n    minWidth = transformCSSWidth($pageMasterEl.css('min-width'));\n    maxWidth = transformCSSWidth($pageMasterEl.css('max-width'));\n  }\n  function handleTouchMove(e) {\n    if (!isTouched) return;\n    e.f7PreventSwipePanel = true;\n    const pageX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n    if (!isMoved) {\n      width = $resizeHandlerEl[0].offsetLeft + $resizeHandlerEl[0].offsetWidth;\n      $el.addClass('view-resizing');\n      $htmlEl.css('cursor', 'col-resize');\n    }\n    isMoved = true;\n    e.preventDefault();\n    touchesDiff = pageX - touchesStart.x;\n    let newWidth = width + touchesDiff;\n    if (minWidth && !Number.isNaN(minWidth)) {\n      newWidth = Math.max(newWidth, minWidth);\n    }\n    if (maxWidth && !Number.isNaN(maxWidth)) {\n      newWidth = Math.min(newWidth, maxWidth);\n    }\n    newWidth = Math.min(Math.max(newWidth, 0), app.width);\n    view.resizableWidth = newWidth;\n    $htmlEl[0].style.setProperty('--f7-page-master-width', `${newWidth}px`);\n    $el.trigger('view:resize', newWidth);\n    view.emit('local::resize viewResize', view, newWidth);\n  }\n  function handleTouchEnd() {\n    $('html').css('cursor', '');\n    if (!isTouched || !isMoved) {\n      isTouched = false;\n      isMoved = false;\n      return;\n    }\n    isTouched = false;\n    isMoved = false;\n    $htmlEl[0].style.setProperty('--f7-page-master-width', `${view.resizableWidth}px`);\n    $el.removeClass('view-resizing');\n  }\n  function handleResize() {\n    if (!view.resizableWidth) return;\n    minWidth = transformCSSWidth($resizeHandlerEl.css('min-width'));\n    maxWidth = transformCSSWidth($resizeHandlerEl.css('max-width'));\n    if (minWidth && !Number.isNaN(minWidth) && view.resizableWidth < minWidth) {\n      view.resizableWidth = Math.max(view.resizableWidth, minWidth);\n    }\n    if (maxWidth && !Number.isNaN(maxWidth) && view.resizableWidth > maxWidth) {\n      view.resizableWidth = Math.min(view.resizableWidth, maxWidth);\n    }\n    view.resizableWidth = Math.min(Math.max(view.resizableWidth, 0), app.width);\n    $htmlEl[0].style.setProperty('--f7-page-master-width', `${view.resizableWidth}px`);\n  }\n  $resizeHandlerEl = view.$el.children('.view-resize-handler');\n  if (!$resizeHandlerEl.length) {\n    view.$el.append('<div class=\"view-resize-handler\"></div>');\n    $resizeHandlerEl = view.$el.children('.view-resize-handler');\n  }\n  view.$resizeHandlerEl = $resizeHandlerEl;\n  $el.addClass('view-resizable');\n\n  // Add Events\n  const passive = support.passiveListener ? {\n    passive: true\n  } : false;\n  view.$el.on(app.touchEvents.start, '.view-resize-handler', handleTouchStart, passive);\n  app.on('touchmove:active', handleTouchMove);\n  app.on('touchend:passive', handleTouchEnd);\n  app.on('resize', handleResize);\n  view.on('beforeOpen', handleResize);\n  view.once('viewDestroy', () => {\n    $el.removeClass('view-resizable');\n    view.$resizeHandlerEl.remove();\n    view.$el.off(app.touchEvents.start, '.view-resize-handler', handleTouchStart, passive);\n    app.off('touchmove:active', handleTouchMove);\n    app.off('touchend:passive', handleTouchEnd);\n    app.off('resize', handleResize);\n    view.off('beforeOpen', handleResize);\n  });\n}\nexport default resizableView;", "import $ from '../../shared/dom7.js';\nimport { extend } from '../../shared/utils.js';\nimport Router from '../../modules/router/router.js';\nimport Framework7Class from '../../shared/class.js';\nimport resizableView from './resizable-view.js';\nclass View extends Framework7Class {\n  constructor(app, el, viewParams) {\n    if (viewParams === void 0) {\n      viewParams = {};\n    }\n    super(viewParams, [app]);\n    const view = this;\n    const ssr = view.params.routerId;\n    const defaults = {\n      routes: [],\n      routesAdd: []\n    };\n    if (!ssr) {\n      const $el = $(el);\n      if (!$el.length) {\n        let message = \"Framework7: can't create a View instance because \";\n        message += typeof el === 'string' ? `the selector \"${el}\" didn't match any element` : 'el must be an HTMLElement or Dom7 object';\n        throw new Error(message);\n      }\n    }\n\n    // Default View params\n    view.params = extend({\n      el\n    }, defaults, app.params.view, viewParams);\n\n    // Routes\n    if (view.params.routes.length > 0) {\n      view.routes = view.params.routes;\n    } else {\n      view.routes = [].concat(app.routes, view.params.routesAdd);\n    }\n\n    // View Props\n    extend(false, view, {\n      app,\n      name: view.params.name,\n      main: view.params.main,\n      history: [],\n      scrollHistory: {}\n    });\n\n    // Install Modules\n    view.useModules();\n\n    // Add to app\n    app.views.push(view);\n    if (view.main) {\n      app.views.main = view;\n    }\n    if (view.name) {\n      app.views[view.name] = view;\n    }\n\n    // Index\n    view.index = app.views.indexOf(view);\n\n    // View ID\n    let viewId;\n    if (view.name) {\n      viewId = `view_${view.name}`;\n    } else if (view.main) {\n      viewId = 'view_main';\n    } else {\n      viewId = `view_${view.index}`;\n    }\n    view.id = viewId;\n    if (!view.params.init) {\n      return view;\n    }\n    // Init View\n    if (app.initialized) {\n      view.init();\n    } else {\n      app.on('init', () => {\n        view.init();\n      });\n    }\n    return view;\n  }\n  destroy() {\n    let view = this;\n    const app = view.app;\n    view.$el.trigger('view:beforedestroy');\n    view.emit('local::beforeDestroy viewBeforeDestroy', view);\n    app.off('resize', view.checkMasterDetailBreakpoint);\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    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    view.emit('local::destroy viewDestroy', view);\n\n    // Delete props & methods\n    Object.keys(view).forEach(viewProp => {\n      view[viewProp] = null;\n      delete view[viewProp];\n    });\n    view = null;\n  }\n  checkMasterDetailBreakpoint(force) {\n    const view = this;\n    const app = view.app;\n    const wasMasterDetail = view.$el.hasClass('view-master-detail');\n    const isMasterDetail = app.width >= view.params.masterDetailBreakpoint && view.$el.children('.page-master').length;\n    if (typeof force === 'undefined' && isMasterDetail || force === true) {\n      view.$el.addClass('view-master-detail');\n      if (!wasMasterDetail) {\n        view.emit('local::masterDetailBreakpoint viewMasterDetailBreakpoint', view);\n        view.$el.trigger('view:masterDetailBreakpoint');\n      }\n    } else {\n      view.$el.removeClass('view-master-detail');\n      if (wasMasterDetail) {\n        view.emit('local::masterDetailBreakpoint viewMasterDetailBreakpoint', view);\n        view.$el.trigger('view:masterDetailBreakpoint');\n      }\n    }\n  }\n  initMasterDetail() {\n    const view = this;\n    const app = view.app;\n    view.checkMasterDetailBreakpoint = view.checkMasterDetailBreakpoint.bind(view);\n    view.checkMasterDetailBreakpoint();\n    if (view.params.masterDetailResizable) {\n      resizableView(view);\n    }\n    app.on('resize', view.checkMasterDetailBreakpoint);\n  }\n  mount(viewEl) {\n    const view = this;\n    const app = view.app;\n    const el = view.params.el || viewEl;\n    const $el = $(el);\n\n    // Selector\n    let selector;\n    if (typeof el === 'string') selector = el;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    let $navbarsEl;\n    if (app.theme === 'ios' && view.params.iosDynamicNavbar) {\n      $navbarsEl = $el.children('.navbars').eq(0);\n      if ($navbarsEl.length === 0) {\n        $navbarsEl = $('<div class=\"navbars\"></div>');\n      }\n    }\n    extend(view, {\n      $el,\n      el: $el[0],\n      main: view.main || $el.hasClass('view-main'),\n      $navbarsEl,\n      navbarsEl: $navbarsEl ? $navbarsEl[0] : undefined,\n      selector\n    });\n    if (view.main) {\n      app.views.main = view;\n    }\n\n    // Save in DOM\n    if ($el && $el[0]) {\n      $el[0].f7View = view;\n    }\n    view.emit('local::mount viewMount', view);\n  }\n  init(viewEl) {\n    const view = this;\n    view.mount(viewEl);\n    if (view.params.router) {\n      if (view.params.masterDetailBreakpoint > 0) {\n        view.initMasterDetail();\n      }\n      if (view.params.initRouterOnTabShow && view.$el.hasClass('tab') && !view.$el.hasClass('tab-active')) {\n        view.$el.once('tab:show', () => {\n          view.router.init();\n        });\n      } else {\n        view.router.init();\n      }\n      view.$el.trigger('view:init');\n      view.emit('local::init viewInit', view);\n    }\n  }\n}\n\n// Use Router\nView.use(Router);\nexport default View;", "import { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport ViewClass from '../../components/view/view-class.js';\nfunction initClicks(app) {\n  function handleClicks(e) {\n    const window = getWindow();\n    const $clickedEl = $(e.target);\n    const $clickedLinkEl = $clickedEl.closest('a');\n    const isLink = $clickedLinkEl.length > 0;\n    const url = isLink && $clickedLinkEl.attr('href');\n\n    // Check if link is external\n    if (isLink) {\n      if ($clickedLinkEl.is(app.params.clicks.externalLinks) ||\n      // eslint-disable-next-line\n      url && url.indexOf('javascript:') >= 0) {\n        const target = $clickedLinkEl.attr('target');\n        if (url && window.cordova && window.cordova.InAppBrowser && (target === '_system' || target === '_blank')) {\n          e.preventDefault();\n          window.cordova.InAppBrowser.open(url, target);\n        } else if (url && window.Capacitor && window.Capacitor.Plugins && window.Capacitor.Plugins.Browser && (target === '_system' || target === '_blank')) {\n          e.preventDefault();\n          window.Capacitor.Plugins.Browser.open({\n            url\n          });\n        }\n        return;\n      }\n    }\n\n    // Modules Clicks\n    Object.keys(app.modules).forEach(moduleName => {\n      const moduleClicks = app.modules[moduleName].clicks;\n      if (!moduleClicks) return;\n      if (e.preventF7Router) return;\n      Object.keys(moduleClicks).forEach(clickSelector => {\n        const matchingClickedElement = $clickedEl.closest(clickSelector).eq(0);\n        if (matchingClickedElement.length > 0) {\n          moduleClicks[clickSelector].call(app, matchingClickedElement, matchingClickedElement.dataset(), e);\n        }\n      });\n    });\n\n    // Load Page\n    let clickedLinkData = {};\n    if (isLink) {\n      e.preventDefault();\n      clickedLinkData = $clickedLinkEl.dataset();\n    }\n    clickedLinkData.clickedEl = $clickedLinkEl[0];\n\n    // Prevent Router\n    if (e.preventF7Router) return;\n    if ($clickedLinkEl.hasClass('prevent-router') || $clickedLinkEl.hasClass('router-prevent')) return;\n    const validUrl = url && url.length > 0 && url[0] !== '#';\n    if (validUrl || $clickedLinkEl.hasClass('back')) {\n      let view;\n      if (clickedLinkData.view && clickedLinkData.view === 'current') {\n        view = app.views.current;\n      } else if (clickedLinkData.view) {\n        view = $(clickedLinkData.view)[0].f7View;\n      } else {\n        view = $clickedEl.parents('.view')[0] && $clickedEl.parents('.view')[0].f7View;\n        if (view && view.params.linksView && (!$clickedLinkEl.hasClass('back') || $clickedLinkEl.hasClass('back') && view.router.history.length === 1)) {\n          if (typeof view.params.linksView === 'string') view = $(view.params.linksView)[0].f7View;else if (view.params.linksView instanceof ViewClass) view = view.params.linksView;\n        }\n      }\n      if (!view) {\n        if (app.views.main) view = app.views.main;\n      }\n      if (!view || !view.router) return;\n      if ($clickedLinkEl[0].f7RouteProps) {\n        clickedLinkData.props = $clickedLinkEl[0].f7RouteProps;\n      }\n      if ($clickedLinkEl.hasClass('back')) view.router.back(url, clickedLinkData);else view.router.navigate(url, clickedLinkData);\n    }\n  }\n  app.on('click', handleClicks);\n}\nexport default {\n  name: 'clicks',\n  params: {\n    clicks: {\n      // External Links\n      externalLinks: '.external'\n    }\n  },\n  on: {\n    init() {\n      const app = this;\n      initClicks(app);\n    }\n  }\n};", "import History from '../../shared/history.js';\nexport default {\n  name: 'history',\n  static: {\n    history: History\n  },\n  on: {\n    init() {\n      History.init(this);\n    }\n  }\n};", "import { getWindow } from 'ssr-window';\nimport { extend } from '../../shared/utils.js';\nconst SW = {\n  registrations: [],\n  register(path, scope) {\n    const app = this;\n    const window = getWindow();\n    if (!('serviceWorker' in window.navigator) || !app.serviceWorker.container) {\n      return new Promise((resolve, reject) => {\n        reject(new Error('Service worker is not supported'));\n      });\n    }\n    return new Promise((resolve, reject) => {\n      app.serviceWorker.container.register(path, scope ? {\n        scope\n      } : {}).then(reg => {\n        SW.registrations.push(reg);\n        app.emit('serviceWorkerRegisterSuccess', reg);\n        resolve(reg);\n      }).catch(error => {\n        app.emit('serviceWorkerRegisterError', error);\n        reject(error);\n      });\n    });\n  },\n  unregister(registration) {\n    const app = this;\n    const window = getWindow();\n    if (!('serviceWorker' in window.navigator) || !app.serviceWorker.container) {\n      return new Promise((resolve, reject) => {\n        reject(new Error('Service worker is not supported'));\n      });\n    }\n    let registrations;\n    if (!registration) registrations = SW.registrations;else if (Array.isArray(registration)) registrations = registration;else registrations = [registration];\n    return Promise.all(registrations.map(reg => new Promise((resolve, reject) => {\n      reg.unregister().then(() => {\n        if (SW.registrations.indexOf(reg) >= 0) {\n          SW.registrations.splice(SW.registrations.indexOf(reg), 1);\n        }\n        app.emit('serviceWorkerUnregisterSuccess', reg);\n        resolve();\n      }).catch(error => {\n        app.emit('serviceWorkerUnregisterError', reg, error);\n        reject(error);\n      });\n    })));\n  }\n};\nexport default {\n  name: 'sw',\n  params: {\n    serviceWorker: {\n      path: undefined,\n      scope: undefined\n    }\n  },\n  create() {\n    const app = this;\n    const window = getWindow();\n    extend(app, {\n      serviceWorker: {\n        container: 'serviceWorker' in window.navigator ? window.navigator.serviceWorker : undefined,\n        registrations: SW.registrations,\n        register: SW.register.bind(app),\n        unregister: SW.unregister.bind(app)\n      }\n    });\n  },\n  on: {\n    init() {\n      const window = getWindow();\n      if (!('serviceWorker' in window.navigator)) return;\n      const app = this;\n      if (app.device.cordova || window.Capacitor && window.Capacitor.isNative) return;\n      if (!app.serviceWorker.container) return;\n      const paths = app.params.serviceWorker.path;\n      const scope = app.params.serviceWorker.scope;\n      if (!paths || Array.isArray(paths) && !paths.length) return;\n      const toRegister = Array.isArray(paths) ? paths : [paths];\n      toRegister.forEach(path => {\n        app.serviceWorker.register(path, scope);\n      });\n    }\n  }\n};", "/* eslint-disable no-underscore-dangle */\nimport { extend } from '../../shared/utils.js';\nfunction createStore(storeParams) {\n  if (storeParams === void 0) {\n    storeParams = {};\n  }\n  const store = {\n    __store: true\n  };\n  const originalState = {\n    ...(storeParams.state || {})\n  };\n  const actions = {\n    ...(storeParams.actions || {})\n  };\n  const getters = {\n    ...(storeParams.getters || {})\n  };\n  const state = extend({}, originalState);\n  let propsQueue = [];\n  const gettersDependencies = {};\n  const gettersCallbacks = {};\n  Object.keys(getters).forEach(getterKey => {\n    gettersDependencies[getterKey] = [];\n    gettersCallbacks[getterKey] = [];\n  });\n  const getGetterValue = getterKey => {\n    return getters[getterKey]({\n      state: store.state\n    });\n  };\n  const addGetterDependencies = (getterKey, deps) => {\n    if (!gettersDependencies[getterKey]) gettersDependencies[getterKey] = [];\n    deps.forEach(dep => {\n      if (gettersDependencies[getterKey].indexOf(dep) < 0) {\n        gettersDependencies[getterKey].push(dep);\n      }\n    });\n  };\n  const addGetterCallback = (getterKey, callback) => {\n    if (!gettersCallbacks[getterKey]) gettersCallbacks[getterKey] = [];\n    gettersCallbacks[getterKey].push(callback);\n  };\n  const runGetterCallbacks = stateKey => {\n    const keys = Object.keys(gettersDependencies).filter(getterKey => {\n      return gettersDependencies[getterKey].indexOf(stateKey) >= 0;\n    });\n    keys.forEach(getterKey => {\n      if (!gettersCallbacks[getterKey] || !gettersCallbacks[getterKey].length) return;\n      gettersCallbacks[getterKey].forEach(callback => {\n        callback(getGetterValue(getterKey));\n      });\n    });\n  };\n  const removeGetterCallback = callback => {\n    Object.keys(gettersCallbacks).forEach(stateKey => {\n      const callbacks = gettersCallbacks[stateKey];\n      if (callbacks.indexOf(callback) >= 0) {\n        callbacks.splice(callbacks.indexOf(callback), 1);\n      }\n    });\n  };\n\n  // eslint-disable-next-line\n  store.__removeCallback = callback => {\n    removeGetterCallback(callback);\n  };\n  const getterValue = function (getterKey, addCallback) {\n    if (addCallback === void 0) {\n      addCallback = true;\n    }\n    if (getterKey === 'constructor') return undefined;\n    propsQueue = [];\n    const value = getGetterValue(getterKey);\n    addGetterDependencies(getterKey, propsQueue);\n    const onUpdated = callback => {\n      addGetterCallback(getterKey, callback);\n    };\n    const obj = {\n      value,\n      onUpdated\n    };\n    if (!addCallback) {\n      return obj;\n    }\n    const callback = v => {\n      obj.value = v;\n    };\n    obj.__callback = callback;\n    addGetterCallback(getterKey, callback);\n    // eslint-disable-next-line\n    return obj;\n  };\n  store.state = new Proxy(state, {\n    set: (target, prop, value) => {\n      target[prop] = value;\n      runGetterCallbacks(prop);\n      return true;\n    },\n    get: (target, prop) => {\n      propsQueue.push(prop);\n      return target[prop];\n    }\n  });\n  store.getters = new Proxy(getters, {\n    set: () => false,\n    get: (target, prop) => {\n      if (!target[prop]) {\n        return undefined;\n      }\n      return getterValue(prop, true);\n    }\n  });\n  store._gettersPlain = new Proxy(getters, {\n    set: () => false,\n    get: (target, prop) => {\n      if (!target[prop]) {\n        return undefined;\n      }\n      return getterValue(prop, false);\n    }\n  });\n  store.dispatch = (actionName, data) => {\n    return new Promise((resolve, reject) => {\n      if (!actions[actionName]) {\n        reject();\n        throw new Error(`Framework7: Store action \"${actionName}\" is not found`);\n      }\n      const result = actions[actionName]({\n        state: store.state,\n        dispatch: store.dispatch\n      }, data);\n      resolve(result);\n    });\n  };\n  return store;\n}\nexport default createStore;", "import createStore from './create-store.js';\nexport { createStore };\nexport default {\n  name: 'store',\n  static: {\n    createStore\n  },\n  proto: {\n    createStore\n  }\n};", "import { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { bindMethods } from '../../shared/utils.js';\nimport { getDevice } from '../../shared/get-device.js';\nconst isCapacitor = () => {\n  const window = getWindow();\n  return window.Capacitor && window.Capacitor.isNative && window.Capacitor.Plugins && window.Capacitor.Plugins.StatusBar;\n};\nconst Statusbar = {\n  hide() {\n    const window = getWindow();\n    const device = getDevice();\n    if (device.cordova && window.StatusBar) {\n      window.StatusBar.hide();\n    }\n    if (isCapacitor()) {\n      window.Capacitor.Plugins.StatusBar.hide();\n    }\n  },\n  show() {\n    const window = getWindow();\n    const device = getDevice();\n    if (device.cordova && window.StatusBar) {\n      window.StatusBar.show();\n    }\n    if (isCapacitor()) {\n      window.Capacitor.Plugins.StatusBar.show();\n    }\n  },\n  onClick() {\n    const app = this;\n    let pageContent;\n    if ($('.popup.modal-in').length > 0) {\n      // Check for opened popup\n      pageContent = $('.popup.modal-in').find('.page:not(.page-previous):not(.page-next):not(.cached)').find('.page-content');\n    } else if ($('.panel.panel-in').length > 0) {\n      // Check for opened panel\n      pageContent = $('.panel.panel-in').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.$el.children('.view').find('.page:not(.page-previous):not(.page-next):not(.cached)').find('.page-content');\n    }\n    if (pageContent && pageContent.length > 0) {\n      // Check for tab\n      if (pageContent.hasClass('tab')) {\n        pageContent = pageContent.parent('.tabs').children('.page-content.tab-active');\n      }\n      if (pageContent.length > 0) pageContent.scrollTop(0, 300);\n    }\n  },\n  setTextColor(color) {\n    const window = getWindow();\n    const device = getDevice();\n    if (device.cordova && window.StatusBar) {\n      if (color === 'white') {\n        window.StatusBar.styleLightContent();\n      } else {\n        window.StatusBar.styleDefault();\n      }\n    }\n    if (isCapacitor()) {\n      if (color === 'white') {\n        window.Capacitor.Plugins.StatusBar.setStyle({\n          style: 'DARK'\n        });\n      } else {\n        window.Capacitor.Plugins.StatusBar.setStyle({\n          style: 'LIGHT'\n        });\n      }\n    }\n  },\n  setBackgroundColor(color) {\n    const window = getWindow();\n    const device = getDevice();\n    if (device.cordova && window.StatusBar) {\n      window.StatusBar.backgroundColorByHexString(color);\n    }\n    if (isCapacitor()) {\n      window.Capacitor.Plugins.StatusBar.setBackgroundColor({\n        color\n      });\n    }\n  },\n  isVisible() {\n    const window = getWindow();\n    const device = getDevice();\n    return new Promise(resolve => {\n      if (device.cordova && window.StatusBar) {\n        resolve(window.StatusBar.isVisible);\n      }\n      if (isCapacitor()) {\n        window.Capacitor.Plugins.StatusBar.getInfo().then(info => {\n          resolve(info.visible);\n        });\n      }\n      resolve(false);\n    });\n  },\n  overlaysWebView(overlays) {\n    if (overlays === void 0) {\n      overlays = true;\n    }\n    const window = getWindow();\n    const device = getDevice();\n    if (device.cordova && window.StatusBar) {\n      window.StatusBar.overlaysWebView(overlays);\n    }\n    if (isCapacitor()) {\n      window.Capacitor.Plugins.StatusBar.setOverlaysWebView({\n        overlay: overlays\n      });\n    }\n  },\n  init() {\n    const app = this;\n    const window = getWindow();\n    const device = getDevice();\n    const params = app.params.statusbar;\n    if (!params.enabled) return;\n    const isCordova = device.cordova && window.StatusBar;\n    const isCap = isCapacitor();\n    if (isCordova || isCap) {\n      if (params.scrollTopOnClick) {\n        $(window).on('statusTap', Statusbar.onClick.bind(app));\n      }\n      if (device.ios) {\n        if (params.iosOverlaysWebView) {\n          Statusbar.overlaysWebView(true);\n        } else {\n          Statusbar.overlaysWebView(false);\n        }\n        if (params.iosTextColor === 'white') {\n          Statusbar.setTextColor('white');\n        } else {\n          Statusbar.setTextColor('black');\n        }\n      }\n      if (device.android) {\n        if (params.androidOverlaysWebView) {\n          Statusbar.overlaysWebView(true);\n        } else {\n          Statusbar.overlaysWebView(false);\n        }\n        if (params.androidTextColor === 'white') {\n          Statusbar.setTextColor('white');\n        } else {\n          Statusbar.setTextColor('black');\n        }\n      }\n    }\n    if (params.iosBackgroundColor && device.ios) {\n      Statusbar.setBackgroundColor(params.iosBackgroundColor);\n    }\n    if (params.androidBackgroundColor && device.android) {\n      Statusbar.setBackgroundColor(params.androidBackgroundColor);\n    }\n  }\n};\nexport default {\n  name: 'statusbar',\n  params: {\n    statusbar: {\n      enabled: true,\n      scrollTopOnClick: true,\n      iosOverlaysWebView: true,\n      iosTextColor: 'black',\n      iosBackgroundColor: null,\n      androidOverlaysWebView: false,\n      androidTextColor: 'black',\n      androidBackgroundColor: null\n    }\n  },\n  create() {\n    const app = this;\n    bindMethods(app, {\n      statusbar: Statusbar\n    });\n  },\n  on: {\n    init() {\n      const app = this;\n      Statusbar.init.call(app);\n    }\n  }\n};", "import $ from '../../shared/dom7.js';\nimport { extend } from '../../shared/utils.js';\nimport View from './view-class.js';\nfunction getCurrentView(app) {\n  const $popoverView = $('.popover.modal-in .view');\n  const $popupView = $('.popup.modal-in .view');\n  const $panelView = $('.panel.panel-in .view');\n  let $viewsEl = $('.views');\n  if ($viewsEl.length === 0) $viewsEl = app.$el;\n  // Find active view as tab\n  let $viewEl = $viewsEl.children('.view');\n  if ($viewEl.length === 0) {\n    $viewEl = $viewsEl.children('.tabs').children('.view');\n  }\n  // Propably in tabs or split view\n  if ($viewEl.length > 1) {\n    if ($viewEl.hasClass('tab')) {\n      // Tabs\n      $viewEl = $viewsEl.children('.view.tab-active');\n      if ($viewEl.length === 0) {\n        $viewEl = $viewsEl.children('.tabs').children('.view.tab-active');\n      }\n    } else {\n      // Split View, leave appView intact\n    }\n  }\n  if ($popoverView.length > 0 && $popoverView[0].f7View) return $popoverView[0].f7View;\n  if ($popupView.length > 0 && $popupView[0].f7View) return $popupView[0].f7View;\n  if ($panelView.length > 0 && $panelView[0].f7View) return $panelView[0].f7View;\n  if ($viewEl.length > 0) {\n    if ($viewEl.length === 1 && $viewEl[0].f7View) return $viewEl[0].f7View;\n    if ($viewEl.length > 1) {\n      return app.views.main;\n    }\n  }\n  return undefined;\n}\nexport default {\n  name: 'view',\n  params: {\n    view: {\n      init: true,\n      initRouterOnTabShow: false,\n      name: undefined,\n      main: false,\n      router: true,\n      linksView: null,\n      xhrCache: true,\n      xhrCacheIgnore: [],\n      xhrCacheIgnoreGetParameters: false,\n      xhrCacheDuration: 1000 * 60 * 10,\n      // Ten minutes\n      componentCache: true,\n      preloadPreviousPage: true,\n      allowDuplicateUrls: false,\n      reloadPages: false,\n      reloadDetail: false,\n      masterDetailBreakpoint: 0,\n      masterDetailResizable: false,\n      removeElements: true,\n      removeElementsWithTimeout: false,\n      removeElementsTimeout: 0,\n      restoreScrollTopOnBack: true,\n      unloadTabContent: true,\n      passRouteQueryToRequest: true,\n      passRouteParamsToRequest: false,\n      loadInitialPage: true,\n      // Swipe Back\n      iosSwipeBack: true,\n      iosSwipeBackAnimateShadow: true,\n      iosSwipeBackAnimateOpacity: true,\n      iosSwipeBackActiveArea: 30,\n      iosSwipeBackThreshold: 0,\n      mdSwipeBack: false,\n      mdSwipeBackAnimateShadow: true,\n      mdSwipeBackAnimateOpacity: false,\n      mdSwipeBackActiveArea: 30,\n      mdSwipeBackThreshold: 0,\n      // Push State\n      browserHistory: false,\n      browserHistoryRoot: undefined,\n      browserHistoryAnimate: true,\n      browserHistoryAnimateOnLoad: false,\n      browserHistorySeparator: '#!',\n      browserHistoryOnLoad: true,\n      browserHistoryInitialMatch: false,\n      browserHistoryStoreHistory: true,\n      browserHistoryTabs: 'replace',\n      // Animate Pages\n      animate: true,\n      // iOS Dynamic Navbar\n      iosDynamicNavbar: true,\n      // Animate iOS Navbar Back Icon\n      iosAnimateNavbarBackIcon: true,\n      // Delays\n      iosPageLoadDelay: 0,\n      mdPageLoadDelay: 0,\n      // Routes hooks\n      routesBeforeEnter: null,\n      routesBeforeLeave: null\n    }\n  },\n  static: {\n    View\n  },\n  create() {\n    const app = this;\n    extend(app, {\n      views: extend([], {\n        create(el, params) {\n          return new View(app, el, params);\n        },\n        get(viewEl) {\n          const $viewEl = $(viewEl);\n          if ($viewEl.length && $viewEl[0].f7View) return $viewEl[0].f7View;\n          return undefined;\n        }\n      })\n    });\n    Object.defineProperty(app.views, 'current', {\n      enumerable: true,\n      configurable: true,\n      get() {\n        return getCurrentView(app);\n      }\n    });\n    // Alias\n    app.view = app.views;\n  },\n  on: {\n    init() {\n      const app = this;\n      $('.view-init').each(viewEl => {\n        if (viewEl.f7View) return;\n        const viewParams = $(viewEl).dataset();\n        app.views.create(viewEl, viewParams);\n      });\n    },\n    'modalOpen panelOpen': function onOpen(instance) {\n      const app = this;\n      instance.$el.find('.view-init').each(viewEl => {\n        if (viewEl.f7View) return;\n        const viewParams = $(viewEl).dataset();\n        app.views.create(viewEl, viewParams);\n      });\n    },\n    'modalBeforeDestroy panelBeforeDestroy': function onClose(instance) {\n      if (!instance || !instance.$el) return;\n      instance.$el.find('.view-init').each(viewEl => {\n        const view = viewEl.f7View;\n        if (!view) return;\n        view.destroy();\n      });\n    }\n  },\n  vnode: {\n    'view-init': {\n      insert(vnode) {\n        const app = this;\n        const viewEl = vnode.elm;\n        if (viewEl.f7View) return;\n        const viewParams = $(viewEl).dataset();\n        app.views.create(viewEl, viewParams);\n      },\n      destroy(vnode) {\n        const viewEl = vnode.elm;\n        const view = viewEl.f7View;\n        if (!view) return;\n        view.destroy();\n      }\n    }\n  }\n};", "import $ from '../../shared/dom7.js';\nimport { bindMethods } from '../../shared/utils.js';\nimport { getSupport } from '../../shared/get-support.js';\nconst Navbar = {\n  size(el) {\n    const app = this;\n    let $el = $(el);\n    if ($el.hasClass('navbars')) {\n      $el = $el.children('.navbar').each(navbarEl => {\n        app.navbar.size(navbarEl);\n      });\n      return;\n    }\n    const $innerEl = $el.children('.navbar-inner');\n    if (!$innerEl.length) return;\n    const needCenterTitle = $innerEl.hasClass('navbar-inner-centered-title') || app.params.navbar[`${app.theme}CenterTitle`];\n    const needLeftTitle = app.theme === 'ios' && !app.params.navbar[`${app.theme}CenterTitle`];\n    if (!needCenterTitle && !needLeftTitle) return;\n    if ($el.parents('.tab:not(.tab-active)').length > 0 || $el.parents('.popup:not(.modal-in)').length > 0) {\n      return;\n    }\n    if (app.theme !== 'ios' && app.params.navbar[`${app.theme}CenterTitle`]) {\n      $innerEl.addClass('navbar-inner-centered-title');\n    }\n    if (app.theme === 'ios' && !app.params.navbar.iosCenterTitle) {\n      $innerEl.addClass('navbar-inner-left-title');\n    }\n    const $viewEl = $el.parents('.view').eq(0);\n    const left = app.rtl ? $innerEl.children('.right') : $innerEl.children('.left');\n    const right = app.rtl ? $innerEl.children('.left') : $innerEl.children('.right');\n    const title = $innerEl.children('.title');\n    const subnavbar = $innerEl.children('.subnavbar');\n    const noLeft = left.length === 0;\n    const noRight = right.length === 0;\n    const leftWidth = noLeft ? 0 : left.outerWidth(true);\n    const rightWidth = noRight ? 0 : right.outerWidth(true);\n    const titleWidth = title.outerWidth(true);\n    const navbarStyles = $innerEl.styles();\n    const navbarWidth = $innerEl[0].offsetWidth;\n    const navbarInnerWidth = navbarWidth - parseInt(navbarStyles.paddingLeft, 10) - parseInt(navbarStyles.paddingRight, 10);\n    const isPrevious = $el.hasClass('navbar-previous');\n    const sliding = $innerEl.hasClass('sliding');\n    let router;\n    let dynamicNavbar;\n    if ($viewEl.length > 0 && $viewEl[0].f7View) {\n      router = $viewEl[0].f7View.router;\n      dynamicNavbar = router && router.dynamicNavbar;\n    }\n    let currLeft;\n    let diff;\n    if (noRight) {\n      currLeft = navbarInnerWidth - titleWidth;\n    }\n    if (noLeft) {\n      currLeft = 0;\n    }\n    if (!noLeft && !noRight) {\n      currLeft = (navbarInnerWidth - rightWidth - titleWidth + leftWidth) / 2;\n    }\n    let requiredLeft = (navbarInnerWidth - titleWidth) / 2;\n    if (navbarInnerWidth - leftWidth - rightWidth > titleWidth) {\n      if (requiredLeft < leftWidth) {\n        requiredLeft = leftWidth;\n      }\n      if (requiredLeft + titleWidth > navbarInnerWidth - rightWidth) {\n        requiredLeft = navbarInnerWidth - rightWidth - titleWidth;\n      }\n      diff = requiredLeft - currLeft;\n    } else {\n      diff = 0;\n    }\n\n    // RTL inverter\n    const inverter = app.rtl ? -1 : 1;\n    if (dynamicNavbar && app.theme === 'ios') {\n      if (title.hasClass('sliding') || title.length > 0 && sliding) {\n        let titleLeftOffset = -(currLeft + diff) * inverter;\n        const titleRightOffset = (navbarInnerWidth - currLeft - diff - titleWidth) * inverter;\n        if (isPrevious) {\n          if (router && router.params.iosAnimateNavbarBackIcon) {\n            const 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;\n          left[0].f7NavbarRightOffset = (navbarInnerWidth - left[0].offsetWidth) / 2;\n          if (router && router.params.iosAnimateNavbarBackIcon && left.find('.back .icon').length > 0) {\n            if (left.find('.back .icon ~ span').length) {\n              const leftOffset = left[0].f7NavbarLeftOffset;\n              const rightOffset = left[0].f7NavbarRightOffset;\n              left[0].f7NavbarLeftOffset = 0;\n              left[0].f7NavbarRightOffset = 0;\n              left.find('.back .icon ~ span')[0].f7NavbarLeftOffset = leftOffset;\n              left.find('.back .icon ~ span')[0].f7NavbarRightOffset = rightOffset - left.find('.back .icon')[0].offsetWidth;\n            }\n          }\n        }\n      }\n      if (!noRight && (right.hasClass('sliding') || sliding)) {\n        if (app.rtl) {\n          right[0].f7NavbarLeftOffset = -rightWidth * inverter;\n          right[0].f7NavbarRightOffset = (navbarInnerWidth - right[0].offsetWidth) / 2 * inverter;\n        } else {\n          right[0].f7NavbarLeftOffset = -(navbarInnerWidth - right[0].offsetWidth) / 2;\n          right[0].f7NavbarRightOffset = rightWidth;\n        }\n      }\n      if (subnavbar.length && (subnavbar.hasClass('sliding') || sliding)) {\n        subnavbar[0].f7NavbarLeftOffset = app.rtl ? subnavbar[0].offsetWidth : -subnavbar[0].offsetWidth;\n        subnavbar[0].f7NavbarRightOffset = -subnavbar[0].f7NavbarLeftOffset;\n      }\n    }\n\n    // Center title\n    if (needCenterTitle) {\n      let titleLeft = diff;\n      if (app.rtl && noLeft && noRight && title.length > 0) titleLeft = -titleLeft;\n      title.css({\n        left: `${titleLeft}px`\n      });\n    }\n  },\n  hide(el, animate, hideStatusbar, hideOnlyCurrent) {\n    if (animate === void 0) {\n      animate = true;\n    }\n    if (hideStatusbar === void 0) {\n      hideStatusbar = false;\n    }\n    if (hideOnlyCurrent === void 0) {\n      hideOnlyCurrent = false;\n    }\n    const app = this;\n    let $el = $(el);\n    const isDynamic = $el.hasClass('navbar') && $el.parent('.navbars').length && !hideOnlyCurrent;\n    if (isDynamic) $el = $el.parents('.navbars');\n    if (!$el.length) return;\n    if ($el.hasClass('navbar-hidden')) return;\n    let className = `navbar-hidden${animate ? ' navbar-transitioning' : ''}`;\n    const currentIsLarge = isDynamic ? $el.find('.navbar-current .title-large').length : $el.find('.title-large').length;\n    if (currentIsLarge) {\n      className += ' navbar-large-hidden';\n    }\n    if (hideStatusbar) {\n      className += ' navbar-hidden-statusbar';\n    }\n    $el.transitionEnd(() => {\n      $el.removeClass('navbar-transitioning');\n    });\n    $el.addClass(className);\n    if (isDynamic) {\n      $el.children('.navbar').each(subEl => {\n        $(subEl).trigger('navbar:hide');\n        app.emit('navbarHide', subEl);\n      });\n    } else {\n      $el.trigger('navbar:hide');\n      app.emit('navbarHide', $el[0]);\n    }\n  },\n  show(el, animate, hideOnlyCurrent) {\n    if (el === void 0) {\n      el = '.navbar-hidden';\n    }\n    if (animate === void 0) {\n      animate = true;\n    }\n    if (hideOnlyCurrent === void 0) {\n      hideOnlyCurrent = false;\n    }\n    const app = this;\n    let $el = $(el);\n    const isDynamic = $el.hasClass('navbar') && $el.parent('.navbars').length && !hideOnlyCurrent;\n    if (isDynamic) $el = $el.parents('.navbars');\n    if (!$el.length) return;\n    if (!$el.hasClass('navbar-hidden')) return;\n    if (animate) {\n      $el.addClass('navbar-transitioning');\n      $el.transitionEnd(() => {\n        $el.removeClass('navbar-transitioning');\n      });\n    }\n    $el.removeClass('navbar-hidden navbar-large-hidden navbar-hidden-statusbar');\n    if (isDynamic) {\n      $el.children('.navbar').each(subEl => {\n        $(subEl).trigger('navbar:show');\n        app.emit('navbarShow', subEl);\n      });\n    } else {\n      $el.trigger('navbar:show');\n      app.emit('navbarShow', $el[0]);\n    }\n  },\n  getElByPage(page) {\n    let $pageEl;\n    let $navbarEl;\n    let pageData;\n    if (page.$navbarEl || page.$el) {\n      pageData = page;\n      $pageEl = page.$el;\n    } else {\n      $pageEl = $(page);\n      if ($pageEl.length > 0) pageData = $pageEl[0].f7Page;\n    }\n    if (pageData && pageData.$navbarEl && pageData.$navbarEl.length > 0) {\n      $navbarEl = pageData.$navbarEl;\n    } else if ($pageEl) {\n      $navbarEl = $pageEl.children('.navbar');\n    }\n    if (!$navbarEl || $navbarEl && $navbarEl.length === 0) return undefined;\n    return $navbarEl[0];\n  },\n  getPageByEl(navbarEl) {\n    const $navbarEl = $(navbarEl);\n    if ($navbarEl.parents('.page').length) {\n      return $navbarEl.parents('.page')[0];\n    }\n    let pageEl;\n    $navbarEl.parents('.view').find('.page').each(el => {\n      if (el && el.f7Page && el.f7Page.navbarEl && $navbarEl[0] === el.f7Page.navbarEl) {\n        pageEl = el;\n      }\n    });\n    return pageEl;\n  },\n  collapseLargeTitle(navbarEl) {\n    const app = this;\n    let $navbarEl = $(navbarEl);\n    if ($navbarEl.hasClass('navbars')) {\n      $navbarEl = $navbarEl.find('.navbar');\n      if ($navbarEl.length > 1) {\n        $navbarEl = $(navbarEl).find('.navbar-large.navbar-current');\n      }\n      if ($navbarEl.length > 1 || !$navbarEl.length) {\n        return;\n      }\n    }\n    const $pageEl = $(app.navbar.getPageByEl($navbarEl));\n    $navbarEl.addClass('navbar-large-collapsed');\n    $pageEl.eq(0).addClass('page-with-navbar-large-collapsed').trigger('page:navbarlargecollapsed');\n    app.emit('pageNavbarLargeCollapsed', $pageEl[0]);\n    $navbarEl.trigger('navbar:collapse');\n    app.emit('navbarCollapse', $navbarEl[0]);\n  },\n  expandLargeTitle(navbarEl) {\n    const app = this;\n    let $navbarEl = $(navbarEl);\n    if ($navbarEl.hasClass('navbars')) {\n      $navbarEl = $navbarEl.find('.navbar-large');\n      if ($navbarEl.length > 1) {\n        $navbarEl = $(navbarEl).find('.navbar-large.navbar-current');\n      }\n      if ($navbarEl.length > 1 || !$navbarEl.length) {\n        return;\n      }\n    }\n    const $pageEl = $(app.navbar.getPageByEl($navbarEl));\n    $navbarEl.removeClass('navbar-large-collapsed');\n    $pageEl.eq(0).removeClass('page-with-navbar-large-collapsed').trigger('page:navbarlargeexpanded');\n    app.emit('pageNavbarLargeExpanded', $pageEl[0]);\n    $navbarEl.trigger('navbar:expand');\n    app.emit('navbarExpand', $navbarEl[0]);\n  },\n  toggleLargeTitle(navbarEl) {\n    const app = this;\n    let $navbarEl = $(navbarEl);\n    if ($navbarEl.hasClass('navbars')) {\n      $navbarEl = $navbarEl.find('.navbar-large');\n      if ($navbarEl.length > 1) {\n        $navbarEl = $(navbarEl).find('.navbar-large.navbar-current');\n      }\n      if ($navbarEl.length > 1 || !$navbarEl.length) {\n        return;\n      }\n    }\n    if ($navbarEl.hasClass('navbar-large-collapsed')) {\n      app.navbar.expandLargeTitle($navbarEl);\n    } else {\n      app.navbar.collapseLargeTitle($navbarEl);\n    }\n  },\n  initNavbarOnScroll(pageEl, navbarEl, needHide, needCollapse, needTransparent) {\n    const app = this;\n    const support = getSupport();\n    const $pageEl = $(pageEl);\n    const $navbarEl = $(navbarEl);\n    const $titleLargeEl = $navbarEl.find('.title-large');\n    const isLarge = $titleLargeEl.length || $navbarEl.hasClass('.navbar-large');\n    let navbarHideHeight = 44;\n    const snapPageScrollToLargeTitle = app.params.navbar.snapPageScrollToLargeTitle;\n    const snapPageScrollToTransparentNavbar = app.params.navbar.snapPageScrollToTransparentNavbar;\n    let previousScrollTop;\n    let currentScrollTop;\n    let scrollHeight;\n    let offsetHeight;\n    let reachEnd;\n    let action;\n    let navbarHidden;\n    let navbarCollapsed;\n    let navbarTitleLargeHeight;\n    let navbarOffsetHeight;\n    if (needCollapse || needHide && isLarge) {\n      navbarTitleLargeHeight = $navbarEl.css('--f7-navbar-large-title-height');\n      if (navbarTitleLargeHeight && navbarTitleLargeHeight.indexOf('px') >= 0) {\n        navbarTitleLargeHeight = parseInt(navbarTitleLargeHeight, 10);\n        if (Number.isNaN(navbarTitleLargeHeight) && $titleLargeEl.length) {\n          navbarTitleLargeHeight = $titleLargeEl[0].offsetHeight;\n        } else if (Number.isNaN(navbarTitleLargeHeight)) {\n          if (app.theme === 'ios') navbarTitleLargeHeight = 52;else if (app.theme === 'md') navbarTitleLargeHeight = 88;\n        }\n      } else if ($titleLargeEl.length) {\n        navbarTitleLargeHeight = $titleLargeEl[0].offsetHeight;\n      } else {\n        // eslint-disable-next-line\n        if (app.theme === 'ios') navbarTitleLargeHeight = 52;else if (app.theme === 'md') navbarTitleLargeHeight = 88;\n      }\n    }\n    if (needHide && isLarge) {\n      navbarHideHeight += navbarTitleLargeHeight;\n    }\n    let scrollChanged;\n    let scrollContent;\n    let scrollTimeoutId;\n    let touchEndTimeoutId;\n    const touchSnapTimeout = 70;\n    const desktopSnapTimeout = 300;\n    function calcScrollableDistance() {\n      $pageEl.find('.page-content').each(pageContentEl => {\n        pageContentEl.f7ScrollableDistance = pageContentEl.scrollHeight - pageContentEl.offsetHeight;\n      });\n    }\n    function snapLargeNavbar() {\n      const inSearchbarExpanded = $navbarEl.hasClass('with-searchbar-expandable-enabled');\n      if (inSearchbarExpanded) return;\n      if (!scrollContent || currentScrollTop < 0) return;\n      if (currentScrollTop >= navbarTitleLargeHeight / 2 && currentScrollTop < navbarTitleLargeHeight) {\n        $(scrollContent).scrollTop(navbarTitleLargeHeight, 100);\n      } else if (currentScrollTop < navbarTitleLargeHeight) {\n        $(scrollContent).scrollTop(0, 200);\n      }\n    }\n    function snapTransparentNavbar() {\n      const inSearchbarExpanded = $navbarEl.hasClass('with-searchbar-expandable-enabled');\n      if (inSearchbarExpanded) return;\n      if (!scrollContent || currentScrollTop < 0) return;\n      if (currentScrollTop >= navbarOffsetHeight / 2 && currentScrollTop < navbarOffsetHeight) {\n        $(scrollContent).scrollTop(navbarOffsetHeight, 100);\n      } else if (currentScrollTop < navbarOffsetHeight) {\n        $(scrollContent).scrollTop(0, 200);\n      }\n    }\n    function handleNavbarTransparent() {\n      const isHidden = $navbarEl.hasClass('navbar-hidden') || $navbarEl.parent('.navbars').hasClass('navbar-hidden');\n      const inSearchbarExpanded = $navbarEl.hasClass('with-searchbar-expandable-enabled');\n      if (inSearchbarExpanded || isHidden) return;\n      if (!navbarOffsetHeight) {\n        navbarOffsetHeight = navbarEl.offsetHeight;\n      }\n      let opacity = currentScrollTop / navbarOffsetHeight;\n      const notTransparent = $navbarEl.hasClass('navbar-transparent-visible');\n      opacity = Math.max(Math.min(opacity, 1), 0);\n      if (notTransparent && opacity === 1 || !notTransparent && opacity === 0) {\n        $navbarEl.find('.navbar-bg, .title').css('opacity', '');\n        return;\n      }\n      if (notTransparent && opacity === 0) {\n        $navbarEl.trigger('navbar:transparenthide');\n        app.emit('navbarTransparentHide', $navbarEl[0]);\n        $navbarEl.removeClass('navbar-transparent-visible');\n        $navbarEl.find('.navbar-bg, .title').css('opacity', '');\n        return;\n      }\n      if (!notTransparent && opacity === 1) {\n        $navbarEl.trigger('navbar:transparentshow');\n        app.emit('navbarTransparentShow', $navbarEl[0]);\n        $navbarEl.addClass('navbar-transparent-visible');\n        $navbarEl.find('.navbar-bg, .title').css('opacity', '');\n        return;\n      }\n      $navbarEl.find('.navbar-bg, .title').css('opacity', opacity);\n      if (snapPageScrollToTransparentNavbar) {\n        if (!support.touch) {\n          clearTimeout(scrollTimeoutId);\n          scrollTimeoutId = setTimeout(() => {\n            snapTransparentNavbar();\n          }, desktopSnapTimeout);\n        } else if (touchEndTimeoutId) {\n          clearTimeout(touchEndTimeoutId);\n          touchEndTimeoutId = null;\n          touchEndTimeoutId = setTimeout(() => {\n            snapTransparentNavbar();\n            clearTimeout(touchEndTimeoutId);\n            touchEndTimeoutId = null;\n          }, touchSnapTimeout);\n        }\n      }\n    }\n    let previousCollapseProgress = null;\n    let collapseProgress = null;\n    function handleLargeNavbarCollapse(pageContentEl) {\n      const isHidden = $navbarEl.hasClass('navbar-hidden') || $navbarEl.parent('.navbars').hasClass('navbar-hidden');\n      if (isHidden) return;\n      const isLargeTransparent = $navbarEl.hasClass('navbar-large-transparent') || $navbarEl.hasClass('navbar-large') && $navbarEl.hasClass('navbar-transparent');\n      previousCollapseProgress = collapseProgress;\n      const scrollableDistance = Math.min(navbarTitleLargeHeight, pageContentEl.f7ScrollableDistance || navbarTitleLargeHeight);\n      collapseProgress = Math.min(Math.max(currentScrollTop / scrollableDistance, 0), 1);\n      const previousCollapseWasInMiddle = previousCollapseProgress > 0 && previousCollapseProgress < 1;\n      const inSearchbarExpanded = $navbarEl.hasClass('with-searchbar-expandable-enabled');\n      if (inSearchbarExpanded) return;\n      navbarCollapsed = $navbarEl.hasClass('navbar-large-collapsed');\n      const $bgEl = $navbarEl.find('.navbar-bg');\n      if (collapseProgress === 0 && navbarCollapsed) {\n        app.navbar.expandLargeTitle($navbarEl[0]);\n      } else if (collapseProgress === 1 && !navbarCollapsed) {\n        app.navbar.collapseLargeTitle($navbarEl[0]);\n      }\n      if (collapseProgress === 0 && navbarCollapsed || collapseProgress === 0 && previousCollapseWasInMiddle || collapseProgress === 1 && !navbarCollapsed || collapseProgress === 1 && previousCollapseWasInMiddle) {\n        if (app.theme === 'md') {\n          $navbarEl.find('.navbar-inner').css('overflow', '');\n        }\n        $navbarEl.find('.title').css('opacity', '');\n        $navbarEl.find('.title-large-text, .subnavbar').css('transform', '');\n        $navbarEl.find('.title-large-text').css('opacity', '');\n        if (isLargeTransparent) {\n          $bgEl.css('opacity', '');\n        }\n        $bgEl.css('transform', '');\n      } else if (collapseProgress > 0 && collapseProgress < 1) {\n        if (app.theme === 'md') {\n          $navbarEl.find('.navbar-inner').css('overflow', 'visible');\n        }\n        $navbarEl.find('.title').css('opacity', -0.5 + collapseProgress * 1.5);\n        $navbarEl.find('.title-large-text, .subnavbar').css('transform', `translate3d(0px, ${-1 * collapseProgress * navbarTitleLargeHeight}px, 0)`);\n        $navbarEl.find('.title-large-text').css('opacity', 1 - collapseProgress * 2);\n        if (isLargeTransparent) {\n          $bgEl.css('opacity', collapseProgress);\n        }\n        $bgEl.css('transform', `translate3d(0px, ${-1 * collapseProgress * navbarTitleLargeHeight}px, 0)`);\n      }\n      if (snapPageScrollToLargeTitle) {\n        if (!support.touch) {\n          clearTimeout(scrollTimeoutId);\n          scrollTimeoutId = setTimeout(() => {\n            snapLargeNavbar();\n          }, desktopSnapTimeout);\n        } else if (touchEndTimeoutId) {\n          clearTimeout(touchEndTimeoutId);\n          touchEndTimeoutId = null;\n          touchEndTimeoutId = setTimeout(() => {\n            snapLargeNavbar();\n            clearTimeout(touchEndTimeoutId);\n            touchEndTimeoutId = null;\n          }, touchSnapTimeout);\n        }\n      }\n    }\n    function handleTitleHideShow() {\n      if ($pageEl.hasClass('page-with-card-opened')) return;\n      scrollHeight = scrollContent.scrollHeight;\n      offsetHeight = scrollContent.offsetHeight;\n      reachEnd = currentScrollTop + offsetHeight >= scrollHeight;\n      navbarHidden = $navbarEl.hasClass('navbar-hidden') || $navbarEl.parent('.navbars').hasClass('navbar-hidden');\n      if (reachEnd) {\n        if (app.params.navbar.showOnPageScrollEnd) {\n          action = 'show';\n        }\n      } else if (previousScrollTop > currentScrollTop) {\n        if (app.params.navbar.showOnPageScrollTop || currentScrollTop <= navbarHideHeight) {\n          action = 'show';\n        } else {\n          action = 'hide';\n        }\n      } else if (currentScrollTop > navbarHideHeight) {\n        action = 'hide';\n      } else {\n        action = 'show';\n      }\n      if (action === 'show' && navbarHidden) {\n        app.navbar.show($navbarEl, true, true);\n        navbarHidden = false;\n      } else if (action === 'hide' && !navbarHidden) {\n        app.navbar.hide($navbarEl, true, false, true);\n        navbarHidden = true;\n      }\n      previousScrollTop = currentScrollTop;\n    }\n    function handleScroll(e) {\n      scrollContent = this;\n      if (e && e.target && e.target !== scrollContent) {\n        return;\n      }\n      currentScrollTop = scrollContent.scrollTop;\n      scrollChanged = currentScrollTop;\n      if (needCollapse) {\n        handleLargeNavbarCollapse(scrollContent);\n      } else if (needTransparent) {\n        handleNavbarTransparent();\n      }\n      if ($pageEl.hasClass('page-previous')) return;\n      if (needHide) {\n        handleTitleHideShow();\n      }\n    }\n    function handeTouchStart() {\n      scrollChanged = false;\n    }\n    function handleTouchEnd() {\n      clearTimeout(touchEndTimeoutId);\n      touchEndTimeoutId = null;\n      touchEndTimeoutId = setTimeout(() => {\n        if (scrollChanged !== false) {\n          if (needTransparent && !needCollapse) {\n            snapTransparentNavbar();\n          } else {\n            snapLargeNavbar();\n          }\n          clearTimeout(touchEndTimeoutId);\n          touchEndTimeoutId = null;\n        }\n      }, touchSnapTimeout);\n    }\n    $pageEl.on('scroll', '.page-content', handleScroll, true);\n    if (support.touch && (needCollapse && snapPageScrollToLargeTitle || needTransparent && snapPageScrollToTransparentNavbar)) {\n      app.on('touchstart:passive', handeTouchStart);\n      app.on('touchend:passive', handleTouchEnd);\n    }\n    calcScrollableDistance();\n    if (needCollapse || needTransparent) {\n      $pageEl.find('.page-content').each(pageContentEl => {\n        if (pageContentEl.scrollTop > 0) handleScroll.call(pageContentEl);\n      });\n    }\n    app.on('resize', calcScrollableDistance);\n    $pageEl[0].f7DetachNavbarScrollHandlers = function f7DetachNavbarScrollHandlers() {\n      app.off('resize', calcScrollableDistance);\n      delete $pageEl[0].f7DetachNavbarScrollHandlers;\n      $pageEl.off('scroll', '.page-content', handleScroll, true);\n      if (support.touch && (needCollapse && snapPageScrollToLargeTitle || needTransparent && snapPageScrollToTransparentNavbar)) {\n        app.off('touchstart:passive', handeTouchStart);\n        app.off('touchend:passive', handleTouchEnd);\n      }\n    };\n  }\n};\nexport default {\n  name: 'navbar',\n  create() {\n    const app = this;\n    bindMethods(app, {\n      navbar: Navbar\n    });\n  },\n  params: {\n    navbar: {\n      scrollTopOnTitleClick: true,\n      iosCenterTitle: true,\n      mdCenterTitle: false,\n      hideOnPageScroll: false,\n      showOnPageScrollEnd: true,\n      showOnPageScrollTop: true,\n      collapseLargeTitleOnScroll: true,\n      snapPageScrollToLargeTitle: true,\n      snapPageScrollToTransparentNavbar: true\n    }\n  },\n  on: {\n    'panelBreakpoint panelCollapsedBreakpoint panelResize viewResize resize viewMasterDetailBreakpoint': function onPanelResize() {\n      const app = this;\n      $('.navbar').each(navbarEl => {\n        app.navbar.size(navbarEl);\n      });\n    },\n    pageBeforeRemove(page) {\n      if (page.$el[0].f7DetachNavbarScrollHandlers) {\n        page.$el[0].f7DetachNavbarScrollHandlers();\n      }\n    },\n    pageBeforeIn(page) {\n      const app = this;\n      if (app.theme !== 'ios') return;\n      let $navbarsEl;\n      const view = page.$el.parents('.view')[0].f7View;\n      const navbarEl = app.navbar.getElByPage(page);\n      if (!navbarEl) {\n        $navbarsEl = page.$el.parents('.view').children('.navbars');\n      } else {\n        $navbarsEl = $(navbarEl).parents('.navbars');\n      }\n      if (page.$el.hasClass('no-navbar') || view.router.dynamicNavbar && !navbarEl) {\n        const animate = !!(page.pageFrom && page.router.history.length > 0);\n        app.navbar.hide($navbarsEl, animate);\n      } else {\n        app.navbar.show($navbarsEl);\n      }\n    },\n    pageReinit(page) {\n      const app = this;\n      const $navbarEl = $(app.navbar.getElByPage(page));\n      if (!$navbarEl || $navbarEl.length === 0) return;\n      app.navbar.size($navbarEl);\n    },\n    pageInit(page) {\n      const app = this;\n      const $navbarEl = $(app.navbar.getElByPage(page));\n      if (!$navbarEl || $navbarEl.length === 0) return;\n\n      // Size\n      app.navbar.size($navbarEl);\n\n      // Need Collapse On Scroll\n      let needCollapseOnScrollHandler;\n      if ($navbarEl.find('.title-large').length > 0) {\n        $navbarEl.addClass('navbar-large');\n      }\n      if ($navbarEl.hasClass('navbar-large')) {\n        if (app.params.navbar.collapseLargeTitleOnScroll) needCollapseOnScrollHandler = true;\n        page.$el.addClass('page-with-navbar-large');\n      }\n\n      // Need transparent on scroll\n      let needTransparentOnScroll;\n      if (!needCollapseOnScrollHandler && $navbarEl.hasClass('navbar-transparent')) {\n        needTransparentOnScroll = true;\n      }\n\n      // Need Hide On Scroll\n      let needHideOnScrollHandler;\n      if (app.params.navbar.hideOnPageScroll || page.$el.find('.hide-navbar-on-scroll').length || page.$el.hasClass('hide-navbar-on-scroll') || page.$el.find('.hide-bars-on-scroll').length || page.$el.hasClass('hide-bars-on-scroll')) {\n        if (page.$el.find('.keep-navbar-on-scroll').length || page.$el.hasClass('keep-navbar-on-scroll') || page.$el.find('.keep-bars-on-scroll').length || page.$el.hasClass('keep-bars-on-scroll')) {\n          needHideOnScrollHandler = false;\n        } else {\n          needHideOnScrollHandler = true;\n        }\n      }\n      if (needCollapseOnScrollHandler || needHideOnScrollHandler || needTransparentOnScroll) {\n        app.navbar.initNavbarOnScroll(page.el, $navbarEl[0], needHideOnScrollHandler, needCollapseOnScrollHandler, needTransparentOnScroll);\n      }\n    },\n    'panelOpen panelSwipeOpen modalOpen': function onPanelModalOpen(instance) {\n      const app = this;\n      instance.$el.find('.navbar:not(.navbar-previous)').each(navbarEl => {\n        app.navbar.size(navbarEl);\n      });\n    },\n    tabShow(tabEl) {\n      const app = this;\n      $(tabEl).find('.navbar:not(.navbar-previous)').each(navbarEl => {\n        app.navbar.size(navbarEl);\n      });\n    }\n  },\n  clicks: {\n    '.navbar .title': function onTitleClick($clickedEl, clickedData, e) {\n      const app = this;\n      if (!app.params.navbar.scrollTopOnTitleClick) return;\n      if ($(e.target).closest('a, button').length > 0) {\n        return;\n      }\n      let $pageContentEl;\n\n      // Find active page\n      const $navbarEl = $clickedEl.parents('.navbar');\n      const $navbarsEl = $navbarEl.parents('.navbars');\n\n      // Static Layout\n      $pageContentEl = $navbarEl.parents('.page-content');\n      if ($pageContentEl.length === 0) {\n        // Fixed Layout\n        if ($navbarEl.parents('.page').length > 0) {\n          $pageContentEl = $navbarEl.parents('.page').find('.page-content');\n        }\n        // Through Layout iOS\n        if ($pageContentEl.length === 0 && $navbarsEl.length) {\n          if ($navbarsEl.nextAll('.page-current').length > 0) {\n            $pageContentEl = $navbarsEl.nextAll('.page-current').find('.page-content');\n          }\n        }\n        // Through Layout\n        if ($pageContentEl.length === 0) {\n          if ($navbarEl.nextAll('.page-current').length > 0) {\n            $pageContentEl = $navbarEl.nextAll('.page-current').find('.page-content');\n          }\n        }\n      }\n      if ($pageContentEl && $pageContentEl.length > 0) {\n        // Check for tab\n        if ($pageContentEl.hasClass('tab')) {\n          $pageContentEl = $pageContentEl.parent('.tabs').children('.page-content.tab-active');\n        }\n        if ($pageContentEl.length > 0) $pageContentEl.scrollTop(0, 300);\n      }\n    }\n  },\n  vnode: {\n    navbar: {\n      postpatch(vnode) {\n        const app = this;\n        app.navbar.size(vnode.elm);\n      }\n    }\n  }\n};", "import $ from '../../shared/dom7.js';\nimport { nextFrame, bindMethods } from '../../shared/utils.js';\nconst Toolbar = {\n  setHighlight(tabbarEl) {\n    const app = this;\n    const $tabbarEl = $(tabbarEl);\n    if (app.theme === 'ios' && !$tabbarEl.hasClass('tabbar-highlight')) return;\n    if ($tabbarEl.length === 0 || !($tabbarEl.hasClass('tabbar') || $tabbarEl.hasClass('tabbar-icons'))) return;\n    let $highlightEl = $tabbarEl.find('.tab-link-highlight');\n    const tabLinksCount = $tabbarEl.find('.tab-link').length;\n    if (tabLinksCount === 0) {\n      $highlightEl.remove();\n      return;\n    }\n    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    const $activeLink = $tabbarEl.find('.tab-link-active');\n    let highlightWidth;\n    let highlightTranslate;\n    if ($tabbarEl.hasClass('tabbar-scrollable') && $activeLink && $activeLink[0]) {\n      highlightWidth = `${$activeLink[0].offsetWidth}px`;\n      highlightTranslate = `${$activeLink[0].offsetLeft}px`;\n    } else {\n      const activeIndex = $activeLink.index();\n      highlightWidth = `${100 / tabLinksCount}%`;\n      highlightTranslate = `${(app.rtl ? -activeIndex : activeIndex) * 100}%`;\n    }\n    nextFrame(() => {\n      $highlightEl.css('width', highlightWidth).transform(`translate3d(${highlightTranslate},0,0)`);\n    });\n  },\n  init(tabbarEl) {\n    const app = this;\n    app.toolbar.setHighlight(tabbarEl);\n  },\n  hide(el, animate) {\n    if (animate === void 0) {\n      animate = true;\n    }\n    const app = this;\n    const $el = $(el);\n    if ($el.hasClass('toolbar-hidden')) return;\n    const className = `toolbar-hidden${animate ? ' toolbar-transitioning' : ''}`;\n    $el.transitionEnd(() => {\n      $el.removeClass('toolbar-transitioning');\n    });\n    $el.addClass(className);\n    $el.trigger('toolbar:hide');\n    app.emit('toolbarHide', $el[0]);\n  },\n  show(el, animate) {\n    if (animate === void 0) {\n      animate = true;\n    }\n    const app = this;\n    const $el = $(el);\n    if (!$el.hasClass('toolbar-hidden')) return;\n    if (animate) {\n      $el.addClass('toolbar-transitioning');\n      $el.transitionEnd(() => {\n        $el.removeClass('toolbar-transitioning');\n      });\n    }\n    $el.removeClass('toolbar-hidden');\n    $el.trigger('toolbar:show');\n    app.emit('toolbarShow', $el[0]);\n  },\n  initToolbarOnScroll(pageEl) {\n    const app = this;\n    const $pageEl = $(pageEl);\n    let $toolbarEl = $pageEl.parents('.view').children('.toolbar');\n    if ($toolbarEl.length === 0) {\n      $toolbarEl = $pageEl.find('.toolbar');\n    }\n    if ($toolbarEl.length === 0) {\n      $toolbarEl = $pageEl.parents('.views').children('.tabbar, .tabbar-icons');\n    }\n    if ($toolbarEl.length === 0) {\n      return;\n    }\n    let previousScrollTop;\n    let currentScrollTop;\n    let scrollHeight;\n    let offsetHeight;\n    let reachEnd;\n    let action;\n    let toolbarHidden;\n    function handleScroll(e) {\n      if ($pageEl.hasClass('page-with-card-opened')) return;\n      if ($pageEl.hasClass('page-previous')) return;\n      const scrollContent = this;\n      if (e && e.target && e.target !== scrollContent) {\n        return;\n      }\n      currentScrollTop = scrollContent.scrollTop;\n      scrollHeight = scrollContent.scrollHeight;\n      offsetHeight = scrollContent.offsetHeight;\n      reachEnd = currentScrollTop + offsetHeight >= scrollHeight;\n      toolbarHidden = $toolbarEl.hasClass('toolbar-hidden');\n      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      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      previousScrollTop = currentScrollTop;\n    }\n    $pageEl.on('scroll', '.page-content', handleScroll, true);\n    $pageEl[0].f7ScrollToolbarHandler = handleScroll;\n  }\n};\nexport default {\n  name: 'toolbar',\n  create() {\n    const app = this;\n    bindMethods(app, {\n      toolbar: Toolbar\n    });\n  },\n  params: {\n    toolbar: {\n      hideOnPageScroll: false,\n      showOnPageScrollEnd: true,\n      showOnPageScrollTop: true\n    }\n  },\n  on: {\n    pageBeforeRemove(page) {\n      if (page.$el[0].f7ScrollToolbarHandler) {\n        page.$el.off('scroll', '.page-content', page.$el[0].f7ScrollToolbarHandler, true);\n      }\n    },\n    pageBeforeIn(page) {\n      const app = this;\n      let $toolbarEl = page.$el.parents('.view').children('.toolbar');\n      if ($toolbarEl.length === 0) {\n        $toolbarEl = page.$el.parents('.views').children('.tabbar, .tabbar-icons');\n      }\n      if ($toolbarEl.length === 0) {\n        $toolbarEl = page.$el.find('.toolbar');\n      }\n      if ($toolbarEl.length === 0) {\n        return;\n      }\n      if (page.$el.hasClass('no-toolbar')) {\n        app.toolbar.hide($toolbarEl);\n      } else {\n        app.toolbar.show($toolbarEl);\n      }\n    },\n    pageInit(page) {\n      const app = this;\n      page.$el.find('.tabbar, .tabbar-icons').each(tabbarEl => {\n        app.toolbar.init(tabbarEl);\n      });\n      if (app.params.toolbar.hideOnPageScroll || page.$el.find('.hide-toolbar-on-scroll').length || page.$el.hasClass('hide-toolbar-on-scroll') || page.$el.find('.hide-bars-on-scroll').length || page.$el.hasClass('hide-bars-on-scroll')) {\n        if (page.$el.find('.keep-toolbar-on-scroll').length || page.$el.hasClass('keep-toolbar-on-scroll') || page.$el.find('.keep-bars-on-scroll').length || page.$el.hasClass('keep-bars-on-scroll')) {\n          return;\n        }\n        app.toolbar.initToolbarOnScroll(page.el);\n      }\n    },\n    init() {\n      const app = this;\n      app.$el.find('.tabbar, .tabbar-icons').each(tabbarEl => {\n        app.toolbar.init(tabbarEl);\n      });\n    }\n  },\n  vnode: {\n    tabbar: {\n      insert(vnode) {\n        const app = this;\n        app.toolbar.init(vnode.elm);\n      }\n    }\n  }\n};", "import $ from '../../shared/dom7.js';\nexport default {\n  name: 'subnavbar',\n  on: {\n    pageInit(page) {\n      if (page.$navbarEl && page.$navbarEl.length && page.$navbarEl.find('.subnavbar').length) {\n        page.$el.addClass('page-with-subnavbar');\n      }\n      const $innerSubnavbars = page.$el.find('.subnavbar').filter(subnavbarEl => {\n        return $(subnavbarEl).parents('.page')[0] === page.$el[0];\n      });\n      if ($innerSubnavbars.length) {\n        page.$el.addClass('page-with-subnavbar');\n      }\n    }\n  }\n};", "import $ from '../../shared/dom7.js';\nexport default class TouchRipple {\n  constructor(app, $el, x, y) {\n    const ripple = this;\n    if (!$el) return undefined;\n    const {\n      left,\n      top,\n      width,\n      height\n    } = $el[0].getBoundingClientRect();\n    const center = {\n      x: x - left,\n      y: y - top\n    };\n    let diameter = Math.max((height ** 2 + width ** 2) ** 0.5, 48);\n    let isInset = false;\n    const insetElements = app.params.touch.touchRippleInsetElements || '';\n    if (insetElements && $el.is(insetElements)) {\n      isInset = true;\n    }\n    if (isInset) {\n      diameter = Math.max(Math.min(width, height), 48);\n    }\n    if (!isInset && $el.css('overflow') === 'hidden') {\n      const distanceFromCenter = ((center.x - width / 2) ** 2 + (center.y - height / 2) ** 2) ** 0.5;\n      const scale = (diameter / 2 + distanceFromCenter) / (diameter / 2);\n      ripple.rippleTransform = `translate3d(0px, 0px, 0) scale(${scale * 2})`;\n    } else {\n      // prettier-ignore\n      ripple.rippleTransform = `translate3d(${-center.x + width / 2}px, ${-center.y + height / 2}px, 0) scale(1)`;\n    }\n    if (isInset) {\n      $el.addClass('ripple-inset');\n    }\n    ripple.$rippleWaveEl = $(`<div class=\"ripple-wave${isInset ? ' ripple-wave-inset' : ''}\" 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; --f7-ripple-transform: ${ripple.rippleTransform}\"></div>`);\n    $el.prepend(ripple.$rippleWaveEl);\n    ripple.$rippleWaveEl.animationEnd(() => {\n      if (!ripple.$rippleWaveEl) return;\n      if (ripple.$rippleWaveEl.hasClass('ripple-wave-out')) return;\n      ripple.$rippleWaveEl.addClass('ripple-wave-in');\n      if (ripple.shouldBeRemoved) {\n        ripple.out();\n      }\n    });\n    return ripple;\n  }\n  destroy() {\n    let ripple = this;\n    if (ripple.$rippleWaveEl) {\n      ripple.$rippleWaveEl.remove();\n    }\n    Object.keys(ripple).forEach(key => {\n      ripple[key] = null;\n      delete ripple[key];\n    });\n    ripple = null;\n  }\n  out() {\n    const ripple = this;\n    const {\n      $rippleWaveEl\n    } = this;\n    clearTimeout(ripple.removeTimeout);\n    $rippleWaveEl.addClass('ripple-wave-out');\n    ripple.removeTimeout = setTimeout(() => {\n      ripple.destroy();\n    }, 300);\n    $rippleWaveEl.animationEnd(() => {\n      clearTimeout(ripple.removeTimeout);\n      ripple.destroy();\n    });\n  }\n  remove() {\n    const ripple = this;\n    if (ripple.shouldBeRemoved) return;\n    ripple.removeTimeout = setTimeout(() => {\n      ripple.destroy();\n    }, 400);\n    ripple.shouldBeRemoved = true;\n    if (ripple.$rippleWaveEl.hasClass('ripple-wave-in')) {\n      ripple.out();\n    }\n  }\n}", "import TouchRipple from './touch-ripple-class.js';\nexport default {\n  name: 'touch-ripple',\n  static: {\n    TouchRipple\n  },\n  create() {\n    const app = this;\n    app.touchRipple = {\n      create() {\n        for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n          args[_key] = arguments[_key];\n        }\n        return new TouchRipple(...args);\n      }\n    };\n  }\n};", "import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { extend, deleteProps } from '../../shared/utils.js';\nimport Framework7Class from '../../shared/class.js';\nconst openedModals = [];\nconst dialogsQueue = [];\nfunction clearDialogsQueue() {\n  if (dialogsQueue.length === 0) return;\n  const dialog = dialogsQueue.shift();\n  dialog.open();\n}\nclass Modal extends Framework7Class {\n  constructor(app, params) {\n    super(params, [app]);\n    const modal = this;\n    const defaults = {};\n\n    // Extend defaults with modules params\n    modal.useModulesParams(defaults);\n    modal.params = extend(defaults, params);\n    modal.opened = false;\n    let $containerEl = modal.params.containerEl ? $(modal.params.containerEl).eq(0) : app.$el;\n    if (!$containerEl.length) $containerEl = app.$el;\n    modal.$containerEl = $containerEl;\n    modal.containerEl = $containerEl[0];\n\n    // Install Modules\n    modal.useModules();\n    return this;\n  }\n  onOpen() {\n    const modal = this;\n    modal.opened = true;\n    openedModals.push(modal);\n    $('html').addClass(`with-modal-${modal.type.toLowerCase()}`);\n    modal.$el.trigger(`modal:open ${modal.type.toLowerCase()}:open`);\n    modal.emit(`local::open modalOpen ${modal.type}Open`, modal);\n  }\n  onOpened() {\n    const modal = this;\n    modal.$el.trigger(`modal:opened ${modal.type.toLowerCase()}:opened`);\n    modal.emit(`local::opened modalOpened ${modal.type}Opened`, modal);\n  }\n  onClose() {\n    const modal = this;\n    modal.opened = false;\n    if (!modal.type || !modal.$el) return;\n    openedModals.splice(openedModals.indexOf(modal), 1);\n    $('html').removeClass(`with-modal-${modal.type.toLowerCase()}`);\n    modal.$el.trigger(`modal:close ${modal.type.toLowerCase()}:close`);\n    modal.emit(`local::close modalClose ${modal.type}Close`, modal);\n  }\n  onClosed() {\n    const modal = this;\n    if (!modal.type || !modal.$el) return;\n    modal.$el.removeClass('modal-out');\n    modal.$el.hide();\n    if (modal.params.backdrop && (modal.params.backdropUnique || modal.forceBackdropUnique) && modal.$backdropEl) {\n      modal.$backdropEl.remove();\n    }\n    modal.$el.trigger(`modal:closed ${modal.type.toLowerCase()}:closed`);\n    modal.emit(`local::closed modalClosed ${modal.type}Closed`, modal);\n  }\n  open(animateModal, force) {\n    const modal = this;\n    const document = getDocument();\n    const app = modal.app;\n    const $el = modal.$el;\n    const $backdropEl = modal.$backdropEl;\n    const type = modal.type;\n    let animate = true;\n    if (typeof animateModal !== 'undefined') animate = animateModal;else if (typeof modal.params.animate !== 'undefined') {\n      animate = modal.params.animate;\n    }\n    if (!$el || $el.hasClass('modal-in')) {\n      if (animateModal === false && $el[0] && type !== 'dialog') {\n        $el[0].style.display = 'block';\n      }\n      if (!force) return modal;\n    }\n    if (type === 'dialog' && app.params.modal.queueDialogs) {\n      let pushToQueue;\n      if ($('.dialog.modal-in').length > 0) {\n        pushToQueue = true;\n      } else if (openedModals.length > 0) {\n        openedModals.forEach(openedModal => {\n          if (openedModal.type === 'dialog') pushToQueue = true;\n        });\n      }\n      if (pushToQueue) {\n        dialogsQueue.push(modal);\n        return modal;\n      }\n    }\n    const $modalParentEl = $el.parent();\n    const wasInDom = $el.parents(document).length > 0;\n    if (!$modalParentEl.is(modal.$containerEl)) {\n      modal.$containerEl.append($el);\n      modal.once(`${type}Closed`, () => {\n        if (wasInDom) {\n          $modalParentEl.append($el);\n        } else {\n          $el.remove();\n        }\n      });\n    }\n    // Show Modal\n    $el.show();\n    if (modal.params.backdrop && (modal.params.backdropUnique || modal.forceBackdropUnique) && modal.$backdropEl) {\n      modal.$backdropEl.insertBefore($el);\n    }\n\n    /* eslint no-underscore-dangle: [\"error\", { \"allow\": [\"_clientLeft\"] }] */\n    modal._clientLeft = $el[0].clientLeft;\n\n    // Modal\n    function transitionEnd() {\n      if ($el.hasClass('modal-out')) {\n        modal.onClosed();\n      } else if ($el.hasClass('modal-in')) {\n        modal.onOpened();\n      }\n    }\n    if (animate) {\n      if ($backdropEl) {\n        $backdropEl.removeClass('not-animated');\n        $backdropEl.addClass('backdrop-in');\n      }\n      $el.animationEnd(() => {\n        transitionEnd();\n      });\n      $el.transitionEnd(() => {\n        transitionEnd();\n      });\n      $el.removeClass('modal-out not-animated').addClass('modal-in');\n      modal.onOpen();\n    } else {\n      if ($backdropEl) {\n        $backdropEl.addClass('backdrop-in not-animated');\n      }\n      $el.removeClass('modal-out').addClass('modal-in not-animated');\n      modal.onOpen();\n      modal.onOpened();\n    }\n    return modal;\n  }\n  close(animateModal) {\n    const modal = this;\n    const $el = modal.$el;\n    const $backdropEl = modal.$backdropEl;\n    let animate = true;\n    if (typeof animateModal !== 'undefined') animate = animateModal;else if (typeof modal.params.animate !== 'undefined') {\n      animate = modal.params.animate;\n    }\n    if (!$el || !$el.hasClass('modal-in')) {\n      if (dialogsQueue.indexOf(modal) >= 0) {\n        dialogsQueue.splice(dialogsQueue.indexOf(modal), 1);\n      }\n      return modal;\n    }\n\n    // backdrop\n    if ($backdropEl) {\n      let needToHideBackdrop = true;\n      if (modal.type === 'popup') {\n        modal.$el.prevAll('.popup.modal-in').add(modal.$el.nextAll('.popup.modal-in')).each(popupEl => {\n          const popupInstance = popupEl.f7Modal;\n          if (!popupInstance) return;\n          if (popupInstance.params.closeByBackdropClick && popupInstance.params.backdrop && popupInstance.backdropEl === modal.backdropEl) {\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.animationEnd(() => {\n        transitionEnd();\n      });\n      $el.transitionEnd(() => {\n        transitionEnd();\n      });\n      $el.removeClass('modal-in').addClass('modal-out');\n      // Emit close\n      modal.onClose();\n    } else {\n      $el.addClass('not-animated').removeClass('modal-in').addClass('modal-out');\n      // Emit close\n      modal.onClose();\n      modal.onClosed();\n    }\n    if (modal.type === 'dialog') {\n      clearDialogsQueue();\n    }\n    return modal;\n  }\n  destroy() {\n    const modal = this;\n    if (modal.destroyed) return;\n    modal.emit(`local::beforeDestroy modalBeforeDestroy ${modal.type}BeforeDestroy`, modal);\n    if (modal.$el) {\n      modal.$el.trigger(`modal:beforedestroy ${modal.type.toLowerCase()}:beforedestroy`);\n      if (modal.$el.length && modal.$el[0].f7Modal) {\n        delete modal.$el[0].f7Modal;\n      }\n    }\n    deleteProps(modal);\n    modal.destroyed = true;\n  }\n}\nexport default Modal;", "import $ from '../../shared/dom7.js';\nimport { extend } from '../../shared/utils.js';\nimport Modal from './modal-class.js';\nclass CustomModal extends Modal {\n  constructor(app, params) {\n    const extendedParams = extend({\n      backdrop: true,\n      closeByBackdropClick: true,\n      on: {}\n    }, params);\n\n    // Extends with open/close Modal methods;\n    super(app, extendedParams);\n    const customModal = this;\n    customModal.params = extendedParams;\n\n    // Find Element\n    let $el;\n    if (!customModal.params.el) {\n      $el = $(customModal.params.content);\n    } else {\n      $el = $(customModal.params.el);\n    }\n    if ($el && $el.length > 0 && $el[0].f7Modal) {\n      return $el[0].f7Modal;\n    }\n    if ($el.length === 0) {\n      return customModal.destroy();\n    }\n    let $backdropEl;\n    if (customModal.params.backdrop) {\n      $backdropEl = app.$el.children('.custom-modal-backdrop');\n      if ($backdropEl.length === 0) {\n        $backdropEl = $('<div class=\"custom-modal-backdrop\"></div>');\n        app.$el.append($backdropEl);\n      }\n    }\n    function handleClick(e) {\n      if (!customModal || customModal.destroyed) return;\n      if ($backdropEl && e.target === $backdropEl[0]) {\n        customModal.close();\n      }\n    }\n    customModal.on('customModalOpened', () => {\n      if (customModal.params.closeByBackdropClick && customModal.params.backdrop) {\n        app.on('click', handleClick);\n      }\n    });\n    customModal.on('customModalClose', () => {\n      if (customModal.params.closeByBackdropClick && customModal.params.backdrop) {\n        app.off('click', handleClick);\n      }\n    });\n    extend(customModal, {\n      app,\n      $el,\n      el: $el[0],\n      $backdropEl,\n      backdropEl: $backdropEl && $backdropEl[0],\n      type: 'customModal'\n    });\n    $el[0].f7Modal = customModal;\n    return customModal;\n  }\n}\nexport default CustomModal;", "import Modal from './modal-class.js';\nimport CustomModal from './custom-modal-class.js';\nexport default {\n  name: 'modal',\n  static: {\n    Modal,\n    CustomModal\n  },\n  create() {\n    const app = this;\n    app.customModal = {\n      create(params) {\n        return new CustomModal(app, params);\n      }\n    };\n  },\n  params: {\n    modal: {\n      queueDialogs: true\n    }\n  }\n};"],
  "mappings": "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",
  "names": ["id", "value", "window", "document", "html", "attr", "dataset", "transform", "parents", "data", "styles", "scrollTop", "scrollLeft", "prop", "index", "text", "parent", "next", "prev", "closest", "children", "animate", "extend", "isObject", "stop", "delinearized", "Variant", "value", "index", "prop", "index", "window", "parents", "value", "prop", "isObject", "extend", "window", "document", "support", "window", "document", "parents", "index", "data", "parents", "extend", "extend", "animate", "Framework7", "window", "document", "children", "attr", "support", "extend", "document", "window", "html", "id", "document", "html", "offset", "width", "height", "window", "document", "support", "window", "document", "parents", "isTouchMoveActivable", "extend", "value", "_a", "index", "result", "data", "index", "animate", "window", "extend", "document", "index", "support", "transition", "styles", "extend", "next", "document", "extend", "index", "transition", "extend", "extend", "on", "once", "document", "extend", "transition", "extend", "document", "transition", "offset", "value", "index", "on", "once", "window", "support", "extend", "width", "extend", "window", "history_default", "window", "extend", "extend", "value", "callback", "prop", "data", "window", "extend", "animate", "support", "animate", "width", "height", "extend", "document", "animate", "transitionEnd", "extend"]
}

Youez - 2016 - github.com/yon3zu
LinuXploit