\\n
\\n
\" + (item.text) + \"
\\n
\\n \\n \\n \";\n }\n return itemHtml.trim();\n };\n\n Autocomplete.prototype.renderNavbar = function renderNavbar () {\n var ac = this;\n if (ac.params.renderNavbar) { return ac.params.renderNavbar.call(ac); }\n var pageTitle = ac.params.pageTitle;\n if (typeof pageTitle === 'undefined' && ac.$openerEl && ac.$openerEl.length) {\n pageTitle = ac.$openerEl.find('.item-title').text().trim();\n }\n var navbarHtml = (\"\\n
\\n
\\n
\\n \" + (pageTitle ? (\"
\" + pageTitle + \"
\") : '') + \"\\n \" + (ac.params.preloader ? (\"\\n
\\n \" + (ac.renderPreloader()) + \"\\n
\\n \") : '') + \"\\n
\" + (ac.renderSearchbar()) + \"
\\n
\\n
\\n \").trim();\n return navbarHtml;\n };\n\n Autocomplete.prototype.renderDropdown = function renderDropdown () {\n var ac = this;\n if (ac.params.renderDropdown) { return ac.params.renderDropdown.call(ac, ac.items); }\n var dropdownHtml = (\"\\n
\\n
\\n \" + (ac.params.preloader ? ac.renderPreloader() : '') + \"\\n
\\n \").trim();\n return dropdownHtml;\n };\n\n Autocomplete.prototype.renderPage = function renderPage () {\n var ac = this;\n if (ac.params.renderPage) { return ac.params.renderPage.call(ac, ac.items); }\n\n var pageHtml = (\"\\n
\\n \" + (ac.renderNavbar()) + \"\\n
\\n
\\n
\\n
\\n
\\n \" + (ac.params.notFoundText) + \"
\\n \\n
\\n
\\n
\\n
\\n \").trim();\n return pageHtml;\n };\n\n Autocomplete.prototype.renderPopup = function renderPopup () {\n var ac = this;\n if (ac.params.renderPopup) { return ac.params.renderPopup.call(ac, ac.items); }\n var popupHtml = (\"\\n \\n \").trim();\n return popupHtml;\n };\n\n Autocomplete.prototype.onOpen = function onOpen (type, el) {\n var ac = this;\n var app = ac.app;\n var $el = $$1(el);\n ac.$el = $el;\n ac.el = $el[0];\n ac.openedIn = type;\n ac.opened = true;\n\n if (ac.params.openIn === 'dropdown') {\n ac.attachDropdownEvents();\n\n ac.$dropdownEl.addClass('autocomplete-dropdown-in');\n ac.$inputEl.trigger('input');\n } else {\n // Init SB\n var $searchbarEl = $el.find('.searchbar');\n if (ac.params.openIn === 'page' && app.theme === 'ios' && $searchbarEl.length === 0) {\n $searchbarEl = $$1(app.navbar.getElByPage($el)).find('.searchbar');\n }\n ac.searchbar = app.searchbar.create({\n el: $searchbarEl,\n backdropEl: $el.find('.searchbar-backdrop'),\n customSearch: true,\n on: {\n search: function search(sb, query) {\n if (query.length === 0 && ac.searchbar.enabled) {\n ac.searchbar.backdropShow();\n } else {\n ac.searchbar.backdropHide();\n }\n ac.source(query);\n },\n },\n });\n\n // Attach page events\n ac.attachPageEvents();\n\n // Update Values On Page Init\n ac.updateValues();\n\n // Source on load\n if (ac.params.requestSourceOnOpen) { ac.source(''); }\n }\n\n ac.emit('local::open autocompleteOpen', ac);\n };\n\n Autocomplete.prototype.autoFocus = function autoFocus () {\n var ac = this;\n if (ac.searchbar && ac.searchbar.$inputEl) {\n ac.searchbar.$inputEl.focus();\n }\n return ac;\n };\n\n Autocomplete.prototype.onOpened = function onOpened () {\n var ac = this;\n if (ac.params.openIn !== 'dropdown' && ac.params.autoFocus) {\n ac.autoFocus();\n }\n ac.emit('local::opened autocompleteOpened', ac);\n };\n\n Autocomplete.prototype.onClose = function onClose () {\n var ac = this;\n if (ac.destroyed) { return; }\n\n // Destroy SB\n if (ac.searchbar && ac.searchbar.destroy) {\n ac.searchbar.destroy();\n ac.searchbar = null;\n delete ac.searchbar;\n }\n\n if (ac.params.openIn === 'dropdown') {\n ac.detachDropdownEvents();\n ac.$dropdownEl.removeClass('autocomplete-dropdown-in').remove();\n ac.$inputEl.parents('.item-content-dropdown-expanded').removeClass('item-content-dropdown-expanded');\n } else {\n ac.detachPageEvents();\n }\n\n ac.emit('local::close autocompleteClose', ac);\n };\n\n Autocomplete.prototype.onClosed = function onClosed () {\n var ac = this;\n if (ac.destroyed) { return; }\n ac.opened = false;\n ac.$el = null;\n ac.el = null;\n delete ac.$el;\n delete ac.el;\n\n ac.emit('local::closed autocompleteClosed', ac);\n };\n\n Autocomplete.prototype.openPage = function openPage () {\n var ac = this;\n if (ac.opened) { return ac; }\n var pageHtml = ac.renderPage();\n ac.view.router.navigate({\n url: ac.url,\n route: {\n content: pageHtml,\n path: ac.url,\n on: {\n pageBeforeIn: function pageBeforeIn(e, page) {\n ac.onOpen('page', page.el);\n },\n pageAfterIn: function pageAfterIn(e, page) {\n ac.onOpened('page', page.el);\n },\n pageBeforeOut: function pageBeforeOut(e, page) {\n ac.onClose('page', page.el);\n },\n pageAfterOut: function pageAfterOut(e, page) {\n ac.onClosed('page', page.el);\n },\n },\n options: {\n animate: ac.params.animate,\n },\n },\n });\n return ac;\n };\n\n Autocomplete.prototype.openPopup = function openPopup () {\n var ac = this;\n if (ac.opened) { return ac; }\n var popupHtml = ac.renderPopup();\n\n var popupParams = {\n content: popupHtml,\n animate: ac.params.animate,\n on: {\n popupOpen: function popupOpen(popup) {\n ac.onOpen('popup', popup.el);\n },\n popupOpened: function popupOpened(popup) {\n ac.onOpened('popup', popup.el);\n },\n popupClose: function popupClose(popup) {\n ac.onClose('popup', popup.el);\n },\n popupClosed: function popupClosed(popup) {\n ac.onClosed('popup', popup.el);\n },\n },\n };\n\n if (ac.params.routableModals) {\n ac.view.router.navigate({\n url: ac.url,\n route: {\n path: ac.url,\n popup: popupParams,\n },\n });\n } else {\n ac.modal = ac.app.popup.create(popupParams).open(ac.params.animate);\n }\n return ac;\n };\n\n Autocomplete.prototype.openDropdown = function openDropdown () {\n var ac = this;\n\n if (!ac.$dropdownEl) {\n ac.$dropdownEl = $$1(ac.renderDropdown());\n }\n var $listEl = ac.$inputEl.parents('.list');\n if ($listEl.length && ac.$inputEl.parents('.item-content').length > 0 && ac.params.expandInput) {\n ac.$inputEl.parents('.item-content').addClass('item-content-dropdown-expanded');\n }\n\n var $pageContentEl = ac.$inputEl.parents('.page-content');\n if (ac.params.dropdownContainerEl) {\n $$1(ac.params.dropdownContainerEl).append(ac.$dropdownEl);\n } else if ($pageContentEl.length === 0) {\n ac.$dropdownEl.insertAfter(ac.$inputEl);\n } else {\n ac.positionDropdown();\n $pageContentEl.append(ac.$dropdownEl);\n }\n ac.onOpen('dropdown', ac.$dropdownEl);\n ac.onOpened('dropdown', ac.$dropdownEl);\n };\n\n Autocomplete.prototype.open = function open () {\n var ac = this;\n if (ac.opened) { return ac; }\n var openIn = ac.params.openIn;\n ac[(\"open\" + (openIn.split('').map(function (el, index) {\n if (index === 0) { return el.toUpperCase(); }\n return el;\n }).join('')))]();\n return ac;\n };\n\n Autocomplete.prototype.close = function close () {\n var ac = this;\n if (!ac.opened) { return ac; }\n if (ac.params.openIn === 'dropdown') {\n ac.onClose();\n ac.onClosed();\n } else if (ac.params.routableModals || ac.openedIn === 'page') {\n ac.view.router.back({ animate: ac.params.animate });\n } else {\n ac.modal.once('modalClosed', function () {\n Utils.nextTick(function () {\n ac.modal.destroy();\n delete ac.modal;\n });\n });\n ac.modal.close();\n }\n return ac;\n };\n\n Autocomplete.prototype.init = function init () {\n var ac = this;\n ac.attachEvents();\n };\n\n Autocomplete.prototype.destroy = function destroy () {\n var ac = this;\n ac.emit('local::beforeDestroy autocompleteBeforeDestroy', ac);\n ac.detachEvents();\n if (ac.$inputEl && ac.$inputEl[0]) {\n delete ac.$inputEl[0].f7Autocomplete;\n }\n if (ac.$openerEl && ac.$openerEl[0]) {\n delete ac.$openerEl[0].f7Autocomplete;\n }\n Utils.deleteProps(ac);\n ac.destroyed = true;\n };\n\n return Autocomplete;\n }(Framework7Class));\n\n var Autocomplete$1 = {\n name: 'autocomplete',\n params: {\n autocomplete: {\n openerEl: undefined,\n inputEl: undefined,\n view: undefined,\n\n // DropDown\n dropdownContainerEl: undefined,\n dropdownPlaceholderText: undefined,\n typeahead: false,\n highlightMatches: true,\n expandInput: false,\n updateInputValueOnSelect: true,\n inputEvents: 'input',\n\n value: undefined,\n multiple: false,\n\n source: undefined,\n limit: undefined,\n valueProperty: 'id',\n textProperty: 'text',\n\n openIn: 'page', // or 'popup' or 'dropdown'\n pageBackLinkText: 'Back',\n popupCloseLinkText: 'Close',\n pageTitle: undefined,\n searchbarPlaceholder: 'Search...',\n searchbarDisableText: 'Cancel',\n\n animate: true,\n\n autoFocus: false,\n closeOnSelect: false,\n notFoundText: 'Nothing found',\n requestSourceOnOpen: false,\n\n // Preloader\n preloaderColor: undefined,\n preloader: false,\n\n // Colors\n formColorTheme: undefined,\n navbarColorTheme: undefined,\n\n // Routing\n routableModals: true,\n url: 'select/',\n\n // Custom render functions\n renderDropdown: undefined,\n renderPage: undefined,\n renderPopup: undefined,\n renderItem: undefined,\n renderSearchbar: undefined,\n renderNavbar: undefined,\n\n },\n },\n static: {\n Autocomplete: Autocomplete,\n },\n create: function create() {\n var app = this;\n app.autocomplete = Utils.extend(\n ConstructorMethods({\n defaultSelector: undefined,\n constructor: Autocomplete,\n app: app,\n domProp: 'f7Autocomplete',\n }),\n {\n open: function open(autocompleteEl) {\n var ac = app.autocomplete.get(autocompleteEl);\n if (ac && ac.open) { return ac.open(); }\n return undefined;\n },\n close: function close(autocompleteEl) {\n var ac = app.autocomplete.get(autocompleteEl);\n if (ac && ac.close) { return ac.close(); }\n return undefined;\n },\n }\n );\n },\n };\n\n var Tooltip = (function (Framework7Class$$1) {\n function Tooltip(app, params) {\n if ( params === void 0 ) params = {};\n\n Framework7Class$$1.call(this, app, params);\n\n var tooltip = this;\n\n var defaults = Utils.extend({}, app.params.tooltip);\n\n // Extend defaults with modules params\n tooltip.useModulesParams(defaults);\n\n tooltip.params = Utils.extend(defaults, params);\n\n var ref = tooltip.params;\n var targetEl = ref.targetEl;\n if (!targetEl) { return tooltip; }\n\n var $targetEl = $$1(targetEl);\n if ($targetEl.length === 0) { return tooltip; }\n\n var $el = $$1(tooltip.render()).eq(0);\n\n Utils.extend(tooltip, {\n app: app,\n $targetEl: $targetEl,\n targetEl: $targetEl && $targetEl[0],\n $el: $el,\n el: $el && $el[0],\n text: tooltip.params.text || '',\n visible: false,\n opened: false,\n });\n\n $targetEl[0].f7Tooltip = tooltip;\n\n var touchesStart = {};\n var isTouched;\n function handleTouchStart(e) {\n if (isTouched) { return; }\n isTouched = true;\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 tooltip.show(this);\n }\n function handleTouchMove(e) {\n if (!isTouched) { return; }\n var x = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n var y = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n var distance = Math.pow( (\n (Math.pow( (x - touchesStart.x), 2 ))\n + (Math.pow( (y - touchesStart.y), 2 ))\n ), 0.5 );\n if (distance > 50) {\n isTouched = false;\n tooltip.hide();\n }\n }\n function handleTouchEnd() {\n if (!isTouched) { return; }\n isTouched = false;\n tooltip.hide();\n }\n function handleMouseEnter() {\n tooltip.show(this);\n }\n function handleMouseLeave() {\n tooltip.hide();\n }\n function handleTransitionEnd() {\n if (!$el.hasClass('tooltip-in')) {\n $el.removeClass('tooltip-out').remove();\n }\n }\n\n tooltip.attachEvents = function attachEvents() {\n $el.on('transitionend webkitTransitionEnd', handleTransitionEnd);\n if (Support.touch) {\n var passive = Support.passiveListener ? { passive: true } : false;\n $targetEl.on(app.touchEvents.start, handleTouchStart, passive);\n app.on('touchmove', handleTouchMove);\n app.on('touchend:passive', handleTouchEnd);\n } else {\n $targetEl.on('mouseenter', handleMouseEnter);\n $targetEl.on('mouseleave', handleMouseLeave);\n }\n };\n tooltip.detachEvents = function detachEvents() {\n $el.off('transitionend webkitTransitionEnd', handleTransitionEnd);\n if (Support.touch) {\n var passive = Support.passiveListener ? { passive: true } : false;\n $targetEl.off(app.touchEvents.start, handleTouchStart, passive);\n app.off('touchmove', handleTouchMove);\n app.off('touchend:passive', handleTouchEnd);\n } else {\n $targetEl.off('mouseenter', handleMouseEnter);\n $targetEl.off('mouseleave', handleMouseLeave);\n }\n };\n\n // Install Modules\n tooltip.useModules();\n\n tooltip.init();\n\n return tooltip;\n }\n\n if ( Framework7Class$$1 ) Tooltip.__proto__ = Framework7Class$$1;\n Tooltip.prototype = Object.create( Framework7Class$$1 && Framework7Class$$1.prototype );\n Tooltip.prototype.constructor = Tooltip;\n\n Tooltip.prototype.position = function position (targetEl) {\n var tooltip = this;\n var $el = tooltip.$el;\n var app = tooltip.app;\n $el.css({ left: '', top: '' });\n var $targetEl = $$1(targetEl || tooltip.el);\n var ref = [$el.width(), $el.height()];\n var width = ref[0];\n var height = ref[1];\n\n $el.css({ left: '', top: '' });\n\n var targetWidth;\n var targetHeight;\n var targetOffsetLeft;\n var targetOffsetTop;\n if ($targetEl && $targetEl.length > 0) {\n targetWidth = $targetEl.outerWidth();\n targetHeight = $targetEl.outerHeight();\n\n var targetOffset = $targetEl.offset();\n targetOffsetLeft = targetOffset.left - app.left;\n targetOffsetTop = targetOffset.top - app.top;\n\n var targetParentPage = $targetEl.parents('.page');\n if (targetParentPage.length > 0) {\n targetOffsetTop -= targetParentPage[0].scrollTop;\n }\n }\n var ref$1 = [0, 0, 0];\n var left = ref$1[0];\n var top = ref$1[1];\n\n // Top Position\n var position = 'top';\n\n if (height < targetOffsetTop) {\n // On top\n top = targetOffsetTop - height;\n } else if (height < app.height - targetOffsetTop - targetHeight) {\n // On bottom\n position = 'bottom';\n top = targetOffsetTop + targetHeight;\n } else {\n // On middle\n position = 'middle';\n top = ((targetHeight / 2) + targetOffsetTop) - (height / 2);\n if (top <= 0) {\n top = 8;\n } else if (top + height >= app.height) {\n top = app.height - height - 8;\n }\n }\n\n // Horizontal Position\n if (position === 'top' || position === 'bottom') {\n left = ((targetWidth / 2) + targetOffsetLeft) - (width / 2);\n if (left < 8) { left = 8; }\n if (left + width > app.width) { left = app.width - width - 8; }\n if (left < 0) { left = 0; }\n } else if (position === 'middle') {\n left = targetOffsetLeft - width;\n if (left < 8 || (left + width > app.width)) {\n if (left < 8) { left = targetOffsetLeft + targetWidth; }\n if (left + width > app.width) { left = app.width - width - 8; }\n }\n }\n\n // Apply Styles\n $el.css({ top: (top + \"px\"), left: (left + \"px\") });\n };\n\n Tooltip.prototype.show = function show (aroundEl) {\n var tooltip = this;\n var app = tooltip.app;\n var $el = tooltip.$el;\n var $targetEl = tooltip.$targetEl;\n app.root.append($el);\n tooltip.position(aroundEl);\n var $aroundEl = $$1(aroundEl);\n tooltip.visible = true;\n tooltip.opened = true;\n $targetEl.trigger('tooltip:show', tooltip);\n $el.trigger('tooltip:show', tooltip);\n if ($aroundEl.length && $aroundEl[0] !== $targetEl[0]) {\n $aroundEl.trigger('tooltip:show', tooltip);\n }\n tooltip.emit('local::show tooltipShow', tooltip);\n $el.removeClass('tooltip-out').addClass('tooltip-in');\n return tooltip;\n };\n\n Tooltip.prototype.hide = function hide () {\n var tooltip = this;\n var $el = tooltip.$el;\n var $targetEl = tooltip.$targetEl;\n tooltip.visible = false;\n tooltip.opened = false;\n $targetEl.trigger('tooltip:hide', tooltip);\n $el.trigger('tooltip:hide', tooltip);\n tooltip.emit('local::hide tooltipHide', tooltip);\n $el.addClass('tooltip-out').removeClass('tooltip-in');\n return tooltip;\n };\n\n Tooltip.prototype.render = function render () {\n var tooltip = this;\n if (tooltip.params.render) { return tooltip.params.render.call(tooltip, tooltip); }\n var ref = tooltip.params;\n var cssClass = ref.cssClass;\n var text = ref.text;\n return (\"\\n
\\n \").trim();\n };\n\n Tooltip.prototype.setText = function setText (newText) {\n var tooltip = this;\n if (typeof newText === 'undefined') {\n return tooltip;\n }\n tooltip.params.text = newText;\n tooltip.text = newText;\n if (tooltip.$el) {\n tooltip.$el.children('.tooltip-content').html(newText);\n }\n if (tooltip.opened) {\n tooltip.position();\n }\n return tooltip;\n };\n\n Tooltip.prototype.init = function init () {\n var tooltip = this;\n tooltip.attachEvents();\n };\n\n Tooltip.prototype.destroy = function destroy () {\n var tooltip = this;\n if (!tooltip.$targetEl || tooltip.destroyed) { return; }\n tooltip.$targetEl.trigger('tooltip:beforedestroy', tooltip);\n tooltip.emit('local::beforeDestroy tooltipBeforeDestroy', tooltip);\n tooltip.$el.remove();\n delete tooltip.$targetEl[0].f7Tooltip;\n tooltip.detachEvents();\n Utils.deleteProps(tooltip);\n tooltip.destroyed = true;\n };\n\n return Tooltip;\n }(Framework7Class));\n\n var Tooltip$1 = {\n name: 'tooltip',\n static: {\n Tooltip: Tooltip,\n },\n create: function create() {\n var app = this;\n app.tooltip = ConstructorMethods({\n defaultSelector: '.tooltip',\n constructor: Tooltip,\n app: app,\n domProp: 'f7Tooltip',\n });\n app.tooltip.show = function show(el) {\n var $el = $$1(el);\n if ($el.length === 0) { return undefined; }\n var tooltip = $el[0].f7Tooltip;\n if (!tooltip) { return undefined; }\n tooltip.show($el[0]);\n return tooltip;\n };\n app.tooltip.hide = function hide(el) {\n var $el = $$1(el);\n if ($el.length === 0) { return undefined; }\n var tooltip = $el[0].f7Tooltip;\n if (!tooltip) { return undefined; }\n tooltip.hide();\n return tooltip;\n };\n app.tooltip.setText = function text(el, newText) {\n var $el = $$1(el);\n if ($el.length === 0) { return undefined; }\n var tooltip = $el[0].f7Tooltip;\n if (!tooltip) { return undefined; }\n tooltip.setText(newText);\n return tooltip;\n };\n },\n params: {\n tooltip: {\n targetEl: null,\n text: null,\n cssClass: null,\n render: null,\n },\n },\n on: {\n tabMounted: function tabMounted(tabEl) {\n var app = this;\n $$1(tabEl).find('.tooltip-init').each(function (index, el) {\n var text = $$1(el).attr('data-tooltip');\n if (!text) { return; }\n app.tooltip.create({ targetEl: el, text: text });\n });\n },\n tabBeforeRemove: function tabBeforeRemove(tabEl) {\n $$1(tabEl).find('.tooltip-init').each(function (index, el) {\n if (el.f7Tooltip) { el.f7Tooltip.destroy(); }\n });\n },\n pageInit: function pageInit(page) {\n var app = this;\n page.$el.find('.tooltip-init').each(function (index, el) {\n var text = $$1(el).attr('data-tooltip');\n if (!text) { return; }\n app.tooltip.create({ targetEl: el, text: text });\n });\n },\n pageBeforeRemove: function pageBeforeRemove(page) {\n page.$el.find('.tooltip-init').each(function (index, el) {\n if (el.f7Tooltip) { el.f7Tooltip.destroy(); }\n });\n },\n },\n };\n\n /* eslint no-nested-ternary: off */\n\n var Gauge = (function (Framework7Class$$1) {\n function Gauge(app, params) {\n if ( params === void 0 ) params = {};\n\n // Extends with open/close Modal methods;\n Framework7Class$$1.call(this, app, params);\n\n var gauge = this;\n\n var defaults = Utils.extend({}, app.params.gauge);\n\n // Extend defaults with modules params\n gauge.useModulesParams(defaults);\n\n gauge.params = Utils.extend(defaults, params);\n\n var ref = gauge.params;\n var el = ref.el;\n if (!el) { return gauge; }\n\n var $el = $$1(el);\n if ($el.length === 0) { return gauge; }\n\n\n Utils.extend(gauge, {\n app: app,\n $el: $el,\n el: $el && $el[0],\n });\n\n $el[0].f7Gauge = gauge;\n\n // Install Modules\n gauge.useModules();\n\n gauge.init();\n\n return gauge;\n }\n\n if ( Framework7Class$$1 ) Gauge.__proto__ = Framework7Class$$1;\n Gauge.prototype = Object.create( Framework7Class$$1 && Framework7Class$$1.prototype );\n Gauge.prototype.constructor = Gauge;\n\n Gauge.prototype.calcRadius = function calcRadius () {\n var gauge = this;\n var ref = gauge.params;\n var size = ref.size;\n var borderWidth = ref.borderWidth;\n return (size / 2) - (borderWidth / 2);\n };\n\n Gauge.prototype.calcBorderLength = function calcBorderLength () {\n var gauge = this;\n var radius = gauge.calcRadius();\n return 2 * Math.PI * radius;\n };\n\n Gauge.prototype.render = function render () {\n var gauge = this;\n if (gauge.params.render) { return gauge.params.render.call(gauge, gauge); }\n\n var ref = gauge.params;\n var type = ref.type;\n var value = ref.value;\n var size = ref.size;\n var bgColor = ref.bgColor;\n var borderBgColor = ref.borderBgColor;\n var borderColor = ref.borderColor;\n var borderWidth = ref.borderWidth;\n var valueText = ref.valueText;\n var valueTextColor = ref.valueTextColor;\n var valueFontSize = ref.valueFontSize;\n var valueFontWeight = ref.valueFontWeight;\n var labelText = ref.labelText;\n var labelTextColor = ref.labelTextColor;\n var labelFontSize = ref.labelFontSize;\n var labelFontWeight = ref.labelFontWeight;\n\n var semiCircle = type === 'semicircle';\n var radius = gauge.calcRadius();\n var length = gauge.calcBorderLength();\n var progress = Math.max(Math.min(value, 1), 0);\n\n return (\"\\n
\\n \" + (semiCircle ? (\"\\n \\n \\n \") : (\"\\n \" + (borderBgColor ? (\"\\n \\n \") : '') + \"\\n \\n \")) + \"\\n \" + (valueText ? (\"\\n \" + valueText + \" \\n \") : '') + \"\\n \" + (labelText ? (\"\\n \" + labelText + \" \\n \") : '') + \"\\n \\n \").trim();\n };\n\n Gauge.prototype.update = function update (newParams) {\n if ( newParams === void 0 ) newParams = {};\n\n var gauge = this;\n var params = gauge.params;\n var $gaugeSvgEl = gauge.$gaugeSvgEl;\n\n Object.keys(newParams).forEach(function (param) {\n if (typeof newParams[param] !== 'undefined') {\n params[param] = newParams[param];\n }\n });\n if ($gaugeSvgEl.length === 0) { return gauge; }\n\n var value = params.value;\n var size = params.size;\n var bgColor = params.bgColor;\n var borderBgColor = params.borderBgColor;\n var borderColor = params.borderColor;\n var borderWidth = params.borderWidth;\n var valueText = params.valueText;\n var valueTextColor = params.valueTextColor;\n var valueFontSize = params.valueFontSize;\n var valueFontWeight = params.valueFontWeight;\n var labelText = params.labelText;\n var labelTextColor = params.labelTextColor;\n var labelFontSize = params.labelFontSize;\n var labelFontWeight = params.labelFontWeight;\n\n var length = gauge.calcBorderLength();\n var progress = Math.max(Math.min(value, 1), 0);\n var radius = gauge.calcRadius();\n var semiCircle = params.type === 'semicircle';\n\n var svgAttrs = {\n width: (size + \"px\"),\n height: ((semiCircle ? size / 2 : size) + \"px\"),\n viewBox: (\"0 0 \" + size + \" \" + (semiCircle ? size / 2 : size)),\n };\n Object.keys(svgAttrs).forEach(function (attr) {\n $gaugeSvgEl.attr(attr, svgAttrs[attr]);\n });\n if (semiCircle) {\n var backAttrs = {\n d: (\"M\" + (size - (borderWidth / 2)) + \",\" + (size / 2) + \" a1,1 0 0,0 -\" + (size - borderWidth) + \",0\"),\n stroke: borderBgColor,\n 'stroke-width': borderWidth,\n fill: bgColor || 'none',\n };\n var frontAttrs = {\n d: (\"M\" + (size - (borderWidth / 2)) + \",\" + (size / 2) + \" a1,1 0 0,0 -\" + (size - borderWidth) + \",0\"),\n stroke: borderColor,\n 'stroke-width': borderWidth,\n 'stroke-dasharray': length / 2,\n 'stroke-dashoffset': (length / 2) * (progress - 1),\n fill: borderBgColor ? 'none' : (bgColor || 'none'),\n };\n Object.keys(backAttrs).forEach(function (attr) {\n $gaugeSvgEl.find('.gauge-back-semi').attr(attr, backAttrs[attr]);\n });\n Object.keys(frontAttrs).forEach(function (attr) {\n $gaugeSvgEl.find('.gauge-front-semi').attr(attr, frontAttrs[attr]);\n });\n } else {\n var backAttrs$1 = {\n stroke: borderBgColor,\n 'stroke-width': borderWidth,\n fill: bgColor || 'none',\n cx: size / 2,\n cy: size / 2,\n r: radius,\n };\n var frontAttrs$1 = {\n transform: (\"rotate(-90 \" + (size / 2) + \" \" + (size / 2) + \")\"),\n stroke: borderColor,\n 'stroke-width': borderWidth,\n 'stroke-dasharray': length,\n 'stroke-dashoffset': length * (1 - progress),\n fill: borderBgColor ? 'none' : bgColor || 'none',\n cx: size / 2,\n cy: size / 2,\n r: radius,\n };\n Object.keys(backAttrs$1).forEach(function (attr) {\n $gaugeSvgEl.find('.gauge-back-circle').attr(attr, backAttrs$1[attr]);\n });\n Object.keys(frontAttrs$1).forEach(function (attr) {\n $gaugeSvgEl.find('.gauge-front-circle').attr(attr, frontAttrs$1[attr]);\n });\n }\n if (valueText) {\n if (!$gaugeSvgEl.find('.gauge-value-text').length) {\n $gaugeSvgEl.append('
');\n }\n var textAttrs = {\n x: '50%',\n y: semiCircle ? '100%' : '50%',\n 'font-weight': valueFontWeight,\n 'font-size': valueFontSize,\n fill: valueTextColor,\n dy: semiCircle ? (labelText ? -labelFontSize - 15 : -5) : 0,\n 'text-anchor': 'middle',\n 'dominant-baseline': !semiCircle && 'middle',\n };\n Object.keys(textAttrs).forEach(function (attr) {\n $gaugeSvgEl.find('.gauge-value-text').attr(attr, textAttrs[attr]);\n });\n $gaugeSvgEl.find('.gauge-value-text').text(valueText);\n } else {\n $gaugeSvgEl.find('.gauge-value-text').remove();\n }\n if (labelText) {\n if (!$gaugeSvgEl.find('.gauge-label-text').length) {\n $gaugeSvgEl.append('
');\n }\n var labelAttrs = {\n x: '50%',\n y: semiCircle ? '100%' : '50%',\n 'font-weight': labelFontWeight,\n 'font-size': labelFontSize,\n fill: labelTextColor,\n dy: semiCircle ? -5 : (valueText ? ((valueFontSize / 2) + 10) : 0),\n 'text-anchor': 'middle',\n 'dominant-baseline': !semiCircle && 'middle',\n };\n Object.keys(labelAttrs).forEach(function (attr) {\n $gaugeSvgEl.find('.gauge-label-text').attr(attr, labelAttrs[attr]);\n });\n $gaugeSvgEl.find('.gauge-label-text').text(labelText);\n } else {\n $gaugeSvgEl.find('.gauge-label-text').remove();\n }\n return gauge;\n };\n\n Gauge.prototype.init = function init () {\n var gauge = this;\n var $gaugeSvgEl = $$1(gauge.render()).eq(0);\n $gaugeSvgEl.f7Gauge = gauge;\n Utils.extend(gauge, {\n $gaugeSvgEl: $gaugeSvgEl,\n gaugeSvgEl: $gaugeSvgEl && $gaugeSvgEl[0],\n });\n gauge.$el.append($gaugeSvgEl);\n return gauge;\n };\n\n Gauge.prototype.destroy = function destroy () {\n var gauge = this;\n if (!gauge.$el || gauge.destroyed) { return; }\n gauge.$el.trigger('gauge:beforedestroy', gauge);\n gauge.emit('local::beforeDestroy gaugeBeforeDestroy', gauge);\n gauge.$gaugeSvgEl.remove();\n delete gauge.$el[0].f7Gauge;\n Utils.deleteProps(gauge);\n gauge.destroyed = true;\n };\n\n return Gauge;\n }(Framework7Class));\n\n var Gauge$1 = {\n name: 'gauge',\n static: {\n Gauge: Gauge,\n },\n create: function create() {\n var app = this;\n app.gauge = ConstructorMethods({\n defaultSelector: '.gauge',\n constructor: Gauge,\n app: app,\n domProp: 'f7Gauge',\n });\n app.gauge.update = function update(el, newParams) {\n var $el = $$1(el);\n if ($el.length === 0) { return undefined; }\n var gauge = app.gauge.get(el);\n if (!gauge) { return undefined; }\n gauge.update(newParams);\n return gauge;\n };\n },\n params: {\n gauge: {\n el: null,\n type: 'circle',\n value: 0,\n size: 200,\n bgColor: 'transparent',\n borderBgColor: '#eeeeee',\n borderColor: '#000000',\n borderWidth: 10,\n valueText: null,\n valueTextColor: '#000000',\n valueFontSize: 31,\n valueFontWeight: 500,\n labelText: null,\n labelTextColor: '#888888',\n labelFontSize: 14,\n labelFontWeight: 400,\n },\n },\n on: {\n tabMounted: function tabMounted(tabEl) {\n var app = this;\n $$1(tabEl).find('.gauge-init').each(function (index, el) {\n app.gauge.create(Utils.extend({ el: el }, $$1(el).dataset() || {}));\n });\n },\n tabBeforeRemove: function tabBeforeRemove(tabEl) {\n $$1(tabEl).find('.gauge-init').each(function (index, el) {\n if (el.f7Gauge) { el.f7Gauge.destroy(); }\n });\n },\n pageInit: function pageInit(page) {\n var app = this;\n page.$el.find('.gauge-init').each(function (index, el) {\n app.gauge.create(Utils.extend({ el: el }, $$1(el).dataset() || {}));\n });\n },\n pageBeforeRemove: function pageBeforeRemove(page) {\n page.$el.find('.gauge-init').each(function (index, el) {\n if (el.f7Gauge) { el.f7Gauge.destroy(); }\n });\n },\n },\n };\n\n var ViAd = (function (Framework7Class$$1) {\n function ViAd(app, params) {\n if ( params === void 0 ) params = {};\n\n Framework7Class$$1.call(this, params, [app]);\n var vi = this;\n if (!win.vi) {\n throw new Error('Framework7: vi SDK not found.');\n }\n\n var orientation;\n if (typeof win.orientation !== 'undefined') {\n orientation = win.orientation === -90 || win.orientation === 90 ? 'horizontal' : 'vertical';\n }\n var defaults = Utils.extend(\n {},\n app.params.vi,\n {\n appId: app.id,\n appVer: app.version,\n language: app.language,\n width: app.width,\n height: app.height,\n os: Device.os,\n osVersion: Device.osVersion,\n orientation: orientation,\n }\n );\n\n // Extend defaults with modules params\n vi.useModulesParams(defaults);\n\n vi.params = Utils.extend(defaults, params);\n\n var adParams = {};\n var skipParams = ('on autoplay fallbackOverlay fallbackOverlayText enabled').split(' ');\n Object.keys(vi.params).forEach(function (paramName) {\n if (skipParams.indexOf(paramName) >= 0) { return; }\n var paramValue = vi.params[paramName];\n if ([null, undefined].indexOf(paramValue) >= 0) { return; }\n adParams[paramName] = paramValue;\n });\n\n if (!vi.params.appId) {\n throw new Error('Framework7: \"app.id\" is required to display an ad. Make sure you have specified it on app initialization.');\n }\n if (!vi.params.placementId) {\n throw new Error('Framework7: \"placementId\" is required to display an ad.');\n }\n\n function onResize() {\n var $viFrame = $$1('iframe#viAd');\n if ($viFrame.length === 0) { return; }\n $viFrame\n .css({\n width: ((app.width) + \"px\"),\n height: ((app.height) + \"px\"),\n });\n }\n\n function removeOverlay() {\n if (!vi.$overlayEl) { return; }\n vi.$overlayEl.off('click touchstart');\n vi.$overlayEl.remove();\n }\n function createOverlay(videoEl) {\n if (!videoEl) { return; }\n vi.$overlayEl = $$1((\"\\n
\\n \" + (vi.params.fallbackOverlayText ? (\"
\" + (vi.params.fallbackOverlayText) + \"
\") : '') + \"\\n
\\n
\\n \").trim());\n\n var touchStartTime;\n vi.$overlayEl.on('touchstart', function () {\n touchStartTime = Utils.now();\n });\n vi.$overlayEl.on('click', function () {\n var timeDiff = Utils.now() - touchStartTime;\n if (timeDiff > 300) { return; }\n if (videoEl) {\n videoEl.play();\n removeOverlay();\n return;\n }\n vi.start();\n removeOverlay();\n });\n app.root.append(vi.$overlayEl);\n }\n\n // Create ad\n vi.ad = new win.vi.Ad(adParams);\n\n Utils.extend(vi.ad, {\n onAdReady: function onAdReady() {\n app.on('resize', onResize);\n vi.emit('local::ready');\n if (vi.params.autoplay) {\n vi.start();\n }\n },\n onAdStarted: function onAdStarted() {\n vi.emit('local::started');\n },\n onAdClick: function onAdClick(targetUrl) {\n vi.emit('local::click', targetUrl);\n },\n onAdImpression: function onAdImpression() {\n vi.emit('local::impression');\n },\n onAdStopped: function onAdStopped(reason) {\n app.off('resize', onResize);\n removeOverlay();\n\n vi.emit('local::stopped', reason);\n if (reason === 'complete') {\n vi.emit('local::complete');\n vi.emit('local::completed');\n }\n if (reason === 'userexit') {\n vi.emit('local::userexit');\n }\n vi.destroyed = true;\n },\n onAutoPlayFailed: function onAutoPlayFailed(reason, videoEl) {\n vi.emit('local::autoplayFailed', reason, videoEl);\n if (reason && reason.name && reason.name.indexOf('NotAllowedError') !== -1 && vi.params.fallbackOverlay) {\n createOverlay(videoEl);\n }\n },\n onAdError: function onAdError(msg) {\n removeOverlay();\n app.off('resize', onResize);\n vi.emit('local::error', msg);\n vi.destroyed = true;\n },\n });\n\n vi.init();\n\n Utils.extend(vi, {\n app: app,\n });\n }\n\n if ( Framework7Class$$1 ) ViAd.__proto__ = Framework7Class$$1;\n ViAd.prototype = Object.create( Framework7Class$$1 && Framework7Class$$1.prototype );\n ViAd.prototype.constructor = ViAd;\n\n ViAd.prototype.start = function start () {\n var vi = this;\n if (vi.destroyed) { return; }\n if (vi.ad) { vi.ad.startAd(); }\n };\n\n ViAd.prototype.pause = function pause () {\n var vi = this;\n if (vi.destroyed) { return; }\n if (vi.ad) { vi.ad.pauseAd(); }\n };\n\n ViAd.prototype.resume = function resume () {\n var vi = this;\n if (vi.destroyed) { return; }\n if (vi.ad) { vi.ad.resumeAd(); }\n };\n\n ViAd.prototype.stop = function stop () {\n var vi = this;\n if (vi.destroyed) { return; }\n if (vi.ad) { vi.ad.stopAd(); }\n };\n\n ViAd.prototype.init = function init () {\n var vi = this;\n if (vi.destroyed) { return; }\n if (vi.ad) { vi.ad.initAd(); }\n };\n\n ViAd.prototype.destroy = function destroy () {\n var vi = this;\n vi.destroyed = true;\n vi.emit('local::beforeDestroy');\n Utils.deleteProps(vi);\n };\n\n return ViAd;\n }(Framework7Class));\n\n var Vi = {\n name: 'vi',\n params: {\n vi: {\n enabled: false,\n autoplay: true,\n fallbackOverlay: true,\n fallbackOverlayText: 'Please watch this ad',\n showMute: true,\n startMuted: (Device.ios || Device.android) && !Device.cordova,\n appId: null,\n appVer: null,\n language: null,\n width: null,\n height: null,\n placementId: 'pltd4o7ibb9rc653x14',\n placementType: 'interstitial',\n videoSlot: null,\n showProgress: true,\n showBranding: true,\n os: null,\n osVersion: null,\n orientation: null,\n age: null,\n gender: null,\n advertiserId: null,\n latitude: null,\n longitude: null,\n accuracy: null,\n storeId: null,\n ip: null,\n manufacturer: null,\n model: null,\n connectionType: null,\n connectionProvider: null,\n },\n },\n create: function create() {\n var app = this;\n app.vi = {\n sdkReady: false,\n createAd: function createAd(adParams) {\n return new ViAd(app, adParams);\n },\n loadSdk: function loadSdk() {\n if (app.vi.skdReady) { return; }\n var script = doc.createElement('script');\n script.onload = function onload() {\n app.emit('viSdkReady');\n app.vi.skdReady = true;\n };\n script.src = 'https://c.vi-serve.com/viadshtml/vi.min.js';\n $$1('head').append(script);\n },\n };\n },\n on: {\n init: function init() {\n var app = this;\n if (app.params.vi.enabled || (app.passedParams.vi && app.passedParams.vi.enabled !== false)) { app.vi.loadSdk(); }\n },\n },\n };\n\n var Elevation = {\n name: 'elevation',\n };\n\n var Typography = {\n name: 'typography',\n };\n\n {\n if (typeof window !== 'undefined') {\n // Template7\n if (!window.Template7) { window.Template7 = Template7; }\n\n // Dom7\n if (!window.Dom7) { window.Dom7 = $$1; }\n }\n }\n\n // Install Core Modules & Components\n Framework7.use([\n DeviceModule,\n SupportModule,\n UtilsModule,\n ResizeModule,\n RequestModule,\n TouchModule,\n ClicksModule,\n Router$1,\n HistoryModule,\n StorageModule,\n Statusbar$1,\n View$1,\n Navbar$1,\n Toolbar$1,\n Subnavbar,\n TouchRipple$1,\n Modal$1,\n Dialog$1,\n Popup$1,\n LoginScreen$1,\n Popover$1,\n Actions$1,\n Sheet$1,\n Toast$1,\n Preloader$1,\n Progressbar$1,\n Sortable$1,\n Swipeout$1,\n Accordion$1,\n VirtualList$1,\n ListIndex$1,\n Timeline,\n Tabs,\n Panel$1,\n Card,\n Chip,\n Form,\n Input$1,\n Checkbox,\n Radio,\n Toggle$1,\n Range$1,\n Stepper$1,\n SmartSelect$1,\n Grid,\n Calendar$1,\n Picker$1,\n InfiniteScroll$1,\n PullToRefresh$1,\n Lazy$1,\n DataTable$1,\n Fab$1,\n Searchbar$1,\n Messages$1,\n Messagebar$1,\n Swiper$1,\n PhotoBrowser$1,\n Notification$1,\n Autocomplete$1,\n Tooltip$1,\n Gauge$1,\n Vi,\n Elevation,\n Typography\n ]);\n\n return Framework7;\n\n})));\n"]}
\ No newline at end of file
+{"version":3,"sources":["framework7.js"],"names":["global","factory","exports","module","define","amd","Framework7","this","t7ctx","window","undefined","Template7Context","Template7Utils","quoteSingleRexExp","RegExp","quoteDoubleRexExp","isFunction","func","escape","string","replace","helperToSlices","shiftIndex","i","j","helperParts","trim","split","slices","length","part","blockQuoteRegExp","openingQuote","push","indexOf","match","hashParts","hashName","hashContent","hash","stringToBlocks","blocks","stringBlocks","block","type","content","contextName","helperSlices","helperName","isPartial","helperContext","helperHash","slice","Array","isArray","helperContent","elseContent","toSkip","foundClosed","foundElse","depth","inverseContent","parseJsVariable","expression","object","map","JSON","stringify","variable","forEach","partName","join","parseJsParents","parents","levelsUp","getCompileVar","name","ctx","data","parts","newDepth","dataLevel","Number","isFinite","getCompiledArguments","contextArray","arr","test","Template7Helpers","_partial","partialName","options","p","Template7Class","partials","template","compiled","compile","Object","keys","root","context","Error","if","call","fn","inverse","unless","each","ret","reverse","first","last","index","key","with","delimiter","delimeter","js","execute","prop","re1","re2","Template7","eval","js_if","condition","js_compare","Template7Options","Template7Partials","staticAccessors","configurable","helpers","args","len","arguments","instance","rendered","prototype","t","getCompileFn","getCompileInverse","resultString","compiledArguments","level","parentsString","dynamicHelper","get","defineProperties","registerHelper","unregisterHelper","registerPartial","unregisterPartial","doc","document","body","addEventListener","removeEventListener","activeElement","blur","nodeName","querySelector","querySelectorAll","getElementById","createEvent","initEvent","createElement","children","childNodes","style","setAttribute","getElementsByTagName","location","win","navigator","userAgent","history","CustomEvent","getComputedStyle","getPropertyValue","Image","Date","screen","setTimeout","clearTimeout","Dom7","$$1","selector","els","tempParent","html","toCreate","innerHTML","nodeType","unique","uniqueArray","toCamelCase","toLowerCase","group1","toUpperCase","requestAnimationFrame","callback","webkitRequestAnimationFrame","cancelAnimationFrame","id","webkitCancelAnimationFrame","addClass","className","classes","classList","add","removeClass","remove","hasClass","contains","toggleClass","toggle","attr","attrs","value","arguments$1","getAttribute","attrName","removeAttr","removeAttribute","props","propName","el","dom7ElementDataStorage","dataKey","removeData","dataset","attributes","parseFloat","val","dom","i$1","multiple","selected","values","selectedOptions","transform","elStyle","webkitTransform","transition","duration","webkitTransitionDuration","transitionDuration","on","assign","eventType","targetSelector","listener","capture","handleLiveEvent","e","target","eventData","dom7EventData","unshift","is","apply","k","handleEvent","events","event$1","dom7LiveListeners","proxyListener","event","dom7Listeners","off","handlers","handler","splice","once","eventName","proxy","eventArgs","trigger","evt","detail","bubbles","cancelable","filter","dataIndex","dispatchEvent","transitionEnd","fireCallBack","animationEnd","width","innerWidth","css","outerWidth","includeMargins","styles","offsetWidth","height","innerHeight","outerHeight","offsetHeight","offset","box","getBoundingClientRect","clientTop","clientLeft","scrollTop","scrollY","scrollLeft","scrollX","top","left","hide","display","show","toArray","matchedItems","modifiedItems","text","textContent","compareWith","matches","webkitMatchesSelector","msMatchesSelector","child","previousSibling","eq","returnIndex","append","newChild","tempDiv","firstChild","appendChild","appendTo","parent","prepend","this$1","insertBefore","prependTo","before","parentNode","cloneNode","insertAfter","after","nextSibling","next","nextElementSibling","nextAll","nextEls","prev","previousElementSibling","prevAll","prevEls","siblings","closest","find","foundElements","found","removeChild","detach","toAdd","empty","Class","Methods","freeze","scrollTo","easing","currentTop","currentLeft","maxTop","maxLeft","newTop","newLeft","animateTop","animateLeft","scrollHeight","Math","max","min","scrollWidth","startTime","render","time","getTime","done","progress","easeProgress","cos","PI","Scroll","animate","initialProps","initialParams","animateInstance","a","params","elements","animating","que","easingProgress","stop","frameId","dom7AnimateInstance","complete","shift","initialFullValue","initialValue","unit","finalValue","finalFullValue","container","currentValue","elementsDone","propsDone","began","begin","element","ref","Animate","noTrigger","eventShortcut","concat","click","bind","focus","focusin","focusout","keyup","keydown","keypress","submit","change","mousedown","mousemove","mouseup","mouseenter","mouseleave","mouseout","mouseover","touchstart","touchend","touchmove","resize","scroll","eventShortcuts","group","methodName","NEWTON_ITERATIONS","NEWTON_MIN_SLOPE","SUBDIVISION_PRECISION","SUBDIVISION_MAX_ITERATIONS","kSplineTableSize","kSampleStepSize","float32ArraySupported","Float32Array","A","aA1","aA2","B","C","calcBezier","aT","getSlope","binarySubdivide","aX","aA","aB","mX1","mX2","currentX","currentT","abs","newtonRaphsonIterate","aGuessT","currentSlope","bezier","mY1","mY2","sampleValues","x","intervalStart","currentSample","lastSample","guessForT","initialSlope","getTForX","defaultDiacriticsRemovalap","base","letters","diacriticsMap","createPromise","resolveArgs","rejectArgs","resolved","rejected","promiseHandlers","then","catch","promise","thenHandler","catchHandler","Utils","mdPreloaderContent","eventNameToColonCase","hasColon","char","deleteProps","obj","nextTick","delay","nextFrame","now","Promise","removeDiacritics","str","parseUrlQuery","url","param","query","urlToParse","href","paramsPart","decodeURIComponent","getTranslate","axis","matrix","curTransform","transformMatrix","curStyle","WebKitCSSMatrix","MozTransform","OTransform","MsTransform","msTransform","toString","m41","m42","serializeObject","newParents","resultArray","varName","parentParts","encodeURIComponent","varValue","toPush","String","isObject","o","constructor","merge","len$1","to","from","nextSource","keysArray","nextIndex","nextKey","desc","getOwnPropertyDescriptor","enumerable","extend","deep","Device","platform","ua","device","ios","android","androidChrome","desktop","windowsPhone","iphone","iphoneX","ipod","ipad","edge","ie","macos","windows","cordova","phonegap","os","osVersion","webView","standalone","webview","osVersionArr","metaViewport","minimalUi","needsStatusbarOverlay","orientation","statusbar","pixelRatio","devicePixelRatio","Framework7Class","self","eventsParents","eventsListeners","staticAccessors$1","components","priority","method","onceHandler","eventHandler","emit","local","eventsArray","localEvents","parentEvents","eventsParent","useModulesParams","instanceParams","modules","moduleName","useModules","modulesParams","moduleParams","modulePropName","moduleProp","moduleEventName","create","set","use","installModule","proto","static","install","m","Framework7Class$$1","passedParams","app","defaults","version","theme","language","routes","initOnDeviceReady","init","$rootEl","rtl","f7","__proto__","prototypeAccessors","$","t7","initialized","methods","DeviceModule","classNames","floor","parseInt","Support","support","div","position","positionSticky","testDiv","touch","DocumentTouch","pointerEvents","pointerEnabled","PointerEvent","prefixedPointerEvents","msPointerEnabled","transforms3d","Modernizr","csstransforms3d","flexbox","observer","passiveListener","supportsPassive","opts","defineProperty","gestures","SupportModule","UtilsModule","utils","ResizeModule","getSize","orientationchange","globals","jsonpRequests","Request","requestOptions","globalsNoCallbacks","callbackName","async","cache","user","password","headers","xhrFields","statusCode","processData","dataType","contentType","timeout","fireCallback","globalCallbackValue","optionCallbackValue","stringData","paramsPrefix","abortTimeout","callbackSplit","requestUrl","addVars","script","onerror","src","xhr","XMLHttpRequest","requestParameters","open","xhrTimeout","postData","ArrayBuffer","Blob","Document","FormData","boundary","setRequestHeader","data$1","newData","headerName","crossDomain","$2","host","onload","responseData","status","parseError","parse","responseText","err","responseType","response","onabort","abort","send","RequestShortcut","assign$1","success","error","post","json","getJSON","postJSON","setup","RequestModule","request","initTouch","touchStartX","touchStartY","touchStartTime","targetElement","trackClick","activeSelection","scrollParent","lastClickTime","isMoved","tapHoldFired","tapHoldTimeout","activableElement","activeTimeout","needsFastClick","needsFastClickTimeOut","rippleWave","rippleTarget","rippleTimeout","useRipple","materialRipple","findActivableElement","activable","activeStateElements","isInsideScrollableView","pageContent","addActive","removeActive","createRipple","$el","y","touchRipple","removeRipple","rippleTouchStart","rippleElements","materialRippleElements","rippleParent","findRippleElement","rippleTouchMove","rippleTouchEnd","emitAppTouchEvent","appTouchStartActive","appTouchMoveActive","appTouchEndActive","appTouchStartPassive","appTouchMovePassive","appTouchEndPassive","passive","activeListener","touchEvents","start","move","end","nodes","prevent","allowClick","forwardedTouchEvent","tapHold","tapHoldPreventClicks","stopImmediatePropagation","stopPropagation","preventDefault","noBlur","targetTouches","touches","tapHoldDelay","fastClicksExclude","selection","getSelection","rangeCount","focusNode","isCollapsed","pageX","pageY","f7ScrollTop","fastClicksDelayBetweenClicks","activeState","distance","fastClicksDistanceThreshold","touchEndTime","tag","skipInputs","disabled","readOnly","targetNeedsFocus","changedTouches","initMouseEvent","screenX","screenY","clientX","clientY","elementFromPoint","which","disableContextMenu","TouchModule","fastClicks","pathToRegexp_1","pathToRegexp","parse_1","compile_1","tokensToFunction_1","tokensToFunction","tokensToRegExp_1","tokensToRegExp","DEFAULT_DELIMITER","DEFAULT_DELIMITERS","PATH_REGEXP","res","tokens","path","defaultDelimiter","delimiters","pathEscaped","exec","escaped","modifier","partial","repeat","optional","pattern","prefix","escapeGroup","escapeString","substr","encode","token","segment","TypeError","flags","sensitive","regexpToRegexp","groups","source","arrayToRegexp","stringToRegexp","strict","endsWith","route","isEndDelimited","tempDom","Framework7Component","extendContext","component","$options","cycleKey","beforeCreate","watch","watchKey","dataKeyValue","newValue","previousValue","styleEl","eventNamePart","eventNameIndex","customArgs","argument","arg","isNaN","deepArg","pathIndex","styleScopeId","created","$mount","mountMethod","beforeMount","mounted","$destroy","beforeDestroy","destroyed","f7Component","Component","componentString","item","scriptContent","line","scripts","scriptEl","c","History","queue","clearQueue","currentQueue","routerQueue","clearRouterQueue","pop","router","stateUrl","action","pushStateAnimate","back","pushState","navigate","handle","blockPopstate","state","previousState","allowChange","views","view","viewState","allowPageChange","initViewState","viewId","newState","replaceState","go","readyState","SwipeBack","r","isScrolling","viewContainerWidth","touchesDiff","currentNavElements","previousNavElements","activeNavBackIcon","activeNavBackIconText","previousNavBackIcon","dynamicNavbar","separateNavbar","pageShadow","pageOpacity","navbarWidth","$navbarEl","isTouched","touchesStart","currentPage","previousPage","allowViewTouchMove","currentNavbar","previousNavbar","paramsSwipeBackAnimateShadow","paramsSwipeBackAnimateOpacity","paramsSwipeBackActiveArea","paramsSwipeBackThreshold","handleTouchStart","swipeBackEnabled","swipeout","handleTouchMove","f7PreventSwipeBack","preventSwipeBack","cancel","iosAnimateNavbarBackIcon","sheet","close","f7PreventPanelSwipe","preventSwipePanelBySwipeBack","inverter","percentage","callbackData","currentPageEl","previousPageEl","currentNavbarEl","previousNavbarEl","currentPageTranslate","previousPageTranslate","round","opacity","navEl","$navEl","pow","activeNavTranslate","f7NavbarRightOffset","iconTranslate","previousNavTranslate","f7NavbarLeftOffset","offsetLeft","handleTouchEnd","timeDiff","pageChanged","navElIndex","translate","sliding","currentRoute","f7Page","pageCallback","swipeBack","saveHistory","stackPages","initialPages","removePage","removeNavbar","previousRoute","preloadPreviousPage","preload","redirect","direction","initial","redirectUrl","redirectOptions","processQueue","routeQueue","resolve","reject","processRouteQueue","enterNextRoute","routesBeforeEnter","beforeEnter","routesBeforeLeave","beforeLeave","refreshPage","ignoreCache","reloadCurrent","forward","forwardOptions","$oldPage","$newNavbarInner","$oldNavbarInner","reloadPages","reloadPrevious","reloadAll","clearPreviousHistory","$viewEl","$newPage","reload","removeThemeElements","$navbarsInView","$pagesInView","pageInView","navbarInView","newPagePosition","navbar","getElByPage","pageEl","navbarEl","oldNavbarInnerEl","page","navbarInner","pushStateRoot","pushStateSeparator","newPageInDom","componentEl","$oldPageEl","$oldNavbarInnerEl","tab","tabLoad","afterAnimation","pageClasses","navbarClasses","keepOldPage","iosSwipeBack","setPositionClasses","materialPageLoadDelay","iosPageLoadDelay","load","loadParams","loadOptions","ignorePageChange","pageName","templateUrl","componentUrl","parentPath","sameParams","paramName","allowDuplicateUrls","newOptions","parseRouteUrl","getPageEl","pageTemplateLoader","pageComponentLoader","xhrRequest","navigateParams","navigateOptions","createRoute","main","navigateUrl","currentPath","findMatchingRoute","routerLoaded","modalLoadProp","modalLoad","pageLoadProp","resolveParams","resolveOptions","resolvedAsModal","modalRoute","tabRoute","parentPageEl","tabEl","$parentPageEl","tabShowResult","$newTabEl","$oldTabEl","animated","onTabsChanged","tabParentPageData","unloadTabContent","f7RouterTabLoaded","loadTab","loadTabParams","loadTabOptions","contentEl","tabEventTarget","tabRemove","onTabLoaded","tabTemplateLoader","tabComponentLoader","tabContent","tabLoadProp","hasTabComponentChild","tabChild","removeTabContent","modalType","foundLoadProp","modalParams","onModalLoaded","modal","modalInstance","hasEl","closeOnSwipeBack","closeByRouter","modalComponent","removeModal","destroy","loadModal","loadModalParams","loadModalOptions","modalTemplateLoader","modalComponentLoader","modalContent","modalRemove","backward","backwardOptions","backIndex","force","pageToRemove","$navbarToRemove","$pageToRemove","insertPage","loadBack","backParams","backOptions","currentRouteIsModal","modalToClose","previousUrl","$previousPage","previousPageRoute","backForceLoaded","$currentPageEl","Router","isAppRouter","scrollHistory","iosDynamicNavbar","iosSeparateDynamicNavbar","initialNavbars","newRoute","animatableNavElements","newNavbarInner","oldNavbarInner","newNavEls","oldNavEls","animateIcon","animatableNavEl","$iconEl","isSliding","isSubnavbar","needsOpacityTransition","hasIcon","leftOffset","rightOffset","navEls","n","otherEls","otherNavEl","iconTextEl","animateWithCSS","oldPage","newPage","routerTransitionClass","animateNavbars","animateWithJS","$shadowEl","$opacityEl","animateCustom","modalEl","removeEl","tabIndex","removeElements","removeElementsWithTimeout","removeElementsTimeout","findElement","stringSelector","notStacked","$container","flattenRoutes","flattenedRoutes","mergedPathsRoutes","childRoute","cRoute","tabs","mergedPathsRoutes$1","tRoute","findTabRoute","foundTabRoute","$tabEl","tabId","findRouteByKey","matchingRoute","matched","pathsToMatch","alias","aliasPath","pathToMatch","keyObj","paramValue","removeFromXhrCache","xhrCache","hasQuery","passRouteQueryToRequest","passRouteParamsToRequest","regExp","xhrCacheIgnoreGetParameters","xhrCacheIgnore","cachedUrl","xhrCacheDuration","beforeSend","templateLoader","compiledHtml","$app","$root","$route","$router","$theme","md","templateContent","componentLoader","$$","$dom7","createdComponent","loadedComponent","rootEl","routerEl","getPageData","pageFromEl","pageFrom","$pageEl","fromPage","$pageFromEl","restoreScrollTopOnBack","camelName","colonName","attachEvents","$pageContent","pageContentIndex","pageContentEl","f7PageInitialized","$pageContent$1","f7RouteEventsAttached","f7RouteEventsOn","f7RouteEventsOnce","localStorage","restoreHistory","clearHistory","mdSwipeBack","historyRestored","hasTabRoute","initUrl","documentUrl","origin","pushStateOnLoad","pushStateAnimateOnLoad","pathname","console","warn","search","$navbarInnerEl","initOptions","pageAfterIn","routerProp","Router$1","templates","View","appInstance","viewParams","routesAdd","f7View","viewProp","initClicks","clicked","clickedLink","isLink","isTabLink","clicks","externalLinks","InAppBrowser","moduleClicks","clickSelector","matchingClickedElement","clickedLinkData","validUrl","linksView","ClicksModule","HistoryModule","keyPrefix","Storage","getItem","setItem","removeItem","clear","keyName","StorageModule","storage","Statusbar","StatusBar","onClick","setIosTextColor","color","styleLightContent","styleDefault","setBackgroundColor","backgroundColorByHexString","isVisible","iosOverlaysWebView","overlays","overlaysWebView","checkOverlay","enabled","overlay","scrollTopOnClick","iosTextColor","iosBackgroundColor","materialBackgroundColor","Statusbar$1",".statusbar","getCurrentView","popoverView","popupView","panelView","appViews","appView","View$1","uniqueHistory","uniqueHistoryIgnoreGetParameters","iosSwipeBackAnimateShadow","iosSwipeBackAnimateOpacity","iosSwipeBackActiveArea","iosSwipeBackThreshold","mdSwipeBackAnimateShadow","mdSwipeBackAnimateOpacity","mdSwipeBackActiveArea","mdSwipeBackThreshold","viewEl","modalOpen","modalBeforeDestroy","Navbar","size","currLeft","diff","right","title","subnavbar","noLeft","noRight","leftWidth","rightWidth","titleWidth","navbarStyles","navbarInnerWidth","paddingLeft","paddingRight","isPrevious","separateNavbarRightOffset","separateNavbarLeftOffset","requiredLeft","titleLeftOffset","titleRightOffset","activeNavbarBackLink","iosCenterTitle","titleLeft","pageData","getPageByEl","navbarInnerEl","initHideNavbarOnScroll","previousScrollTop","currentScrollTop","reachEnd","navbarHidden","handleScroll","showOnPageScrollEnd","showOnPageScrollTop","f7ScrollNavbarHandler","Navbar$1","scrollTopOnTitleClick","hideOnPageScroll","panelBreakpoint resize","pageBeforeRemove","pageBeforeIn","pageReinit","pageInit","panelOpen","panel","panelSwipeOpen","tabShow",".navbar .title","$clickedEl","Toolbar","setHighlight","tabbarEl","$tabbarEl","highlightWidth","highlightTranslate","$highlightEl","$activeLink","activeIndex","toolbar","initHideToolbarOnScroll","toolbarHidden","$toolbarEl","f7ScrollToolbarHandler","Toolbar$1","Subnavbar","TouchRipple","ripple","center","diameter","$rippleWaveEl","_clientLeft","rippleTransform","onRemove","removing","removeTimeout","TouchRipple$1","Function","openedModals","dialogsQueue","clearDialogsQueue","Modal","opened","onOpen","onOpened","onClose","onClosed","animateModal","pushToQueue","$backdropEl","queueDialogs","openedModal","$modalParentEl","wasInDom","moveToRoot","marginTop","f7Modal","CustomModal","Modal$$1","extendedParams","backdrop","closeByBackdropClick","customModal","handleClick","backdropEl","Modal$1","Dialog","dialog","buttons","verticalButtons","cssClass","destroyOnClose","dialogClasses","buttonsHTML","button","bold","dialogHtml","addKeyboardHander","buttonOnClick","onKeyPress","keyCode","keyCodes","buttonEl","setProgress","progressbar","setText","newText","$textEl","setTitle","newTitle","$titleEl","ConstructorMethods","parameters","defaultSelector","domProp","addMethods","ModalMethods","Dialog$1","buttonOk","buttonCancel","usernamePlaceholder","passwordPlaceholder","preloaderTitle","progressTitle","destroyPredefinedDialogs","keyboardActions","defaultDialogTitle","alert","callbackOk","prompt","callbackCancel","inputValue","confirm","login","username","preloader","preloaderInner","assign$2","infinite","Popup","popup","Popup$1",".popup-open",".popup-close","LoginScreen","loginScreen","LoginScreen$1",".login-screen-open",".login-screen-close","Popover","popover","$angleEl","$targetEl","targetEl","originalOpen","handleResize","closeByOutsideClick","angleEl","targetX","targetY","angleLeft","angleTop","targetWidth","targetHeight","targetOffsetLeft","targetOffsetTop","ref$1","angleSize","targetOffset","targetParentPage","ref$2","Popover$1","popoverEl","$popoverEl",".popover-open",".popover-close","Actions","actions","convertToPopover","popoverHtml","renderPopover","actionsHtml","originalClose","buttonIndex","groupIndex","forceToPopover","grid","buttonClasses","label","bg","icon","itemClasses","Actions$1",".actions-open",".actions-close","Sheet","$pageContentEl","scrollToEl","$scrollEl","newPaddingBottom","paddingTop","paddingBottom","pageHeight","pageScrollHeight","pageScroll","scrollElTop","padding-bottom","scrollToOpen","Sheet$1",".sheet-open",".sheet-close","Toast","toast","timeoutId","closeButton","closeTimeout","toastHtml","openedEl","toastInstance","closeButtonColor","closeButtonText","Toast$1","Preloader","visible","Preloader$1","photoBrowserOpen","pb","preloaderEl","Progressbar","$progressbarEl","progressNormalized","$progressbarLine","removeAfterHide","Progressbar$1","progressbarEl","Sortable","$sortingEl","$sortingItems","$sortableContainer","sortingElHeight","minTop","$insertAfterEl","$insertBeforeEl","indexFrom","pageOffset","sortingElOffsetLocal","sortingElOffsetTop","initialScrollTop","$listGroup","allowOpen","allow","offsetTop","f7PreventSwipePanel","translateScrollOffset","scrollDiff","allowScroll","$currentEl","currentElOffset","currentElHeight","sortingElOffset","virtualList","oldIndex","newIndex","sortable","moveElements","f7VirtualList","f7VirtualListIndex","moveItem","enable","disable","Sortable$1",".sortable-enable",".sortable-disable",".sortable-toggle","Swipeout","$swipeoutEl","$swipeoutContent","$actionsRight","$actionsLeft","actionsLeftWidth","actionsRightWidth","openedActionsSide","$leftButtons","$rightButtons","$overswipeLeftButton","$overswipeRightButton","overswipeLeft","overswipeRight","noFollow","buttonOffset","buttonTranslate","$buttonEl","f7SwipeoutButtonOffset","buttonTranslate$1","$buttons","$actions","actionsWidth","newTranslate","side","$swipeoutActions","swipeoutActionsWidth","onSwipeoutClose","delete","virtualIndex","deleteItem","Swipeout$1","actionsNoFold",".swipeout-open",".swipeout-close",".swipeout-delete","confirmTitle","Accordion","toggleClicked","$accordionItemEl","accordion","$list","$contentEl","$openedItem","Accordion$1",".accordion-item .item-link, .accordion-item-toggle, .links-list.accordion-list > ul > li > a","VirtualList","vl","cols","dynamicHeightBufferSize","showFilteredItemsOnly","renderExternal","setListHeight","searchByItem","searchAll","itemTemplate","ul","createUl","renderItem","items","filteredItems","updatableScroll","$itemsWrapEl","$ul","itemsWrapEl","domCache","displayDomCache","tempDomElement","lastRepaintY","fragment","createDocumentFragment","rowsPerScreen","rowsBefore","rowsAfter","rowsToRender","maxBufferHeight","listHeight","dynamicHeight","$panelEl","$popupEl","handleScrollBound","handleResizeBound","detachEvents","setListSize","heights","itemHeight","ceil","forceScrollTop","fromIndex","toIndex","topPosition","heightBeforeFirstItem","heightBeforeLastItem","itemTop","renderExternalItems","itemEl","currentFromIndex","currentToIndex","emptyTemplate","filterItems","indexes","resetScrollTop","update","resetFilter","scrollToItem","listTop","getClientRects","appendItems","appendItem","replaceAllItems","replaceItem","prependItems","newCache","cached","prependItem","cachedIndex","leftIndex","rightIndex","indexShift","insertItemBefore","deleteItems","prevIndex","loop","deletedItem","deleteAllItems","clearCache","deleteCache","VirtualList$1","ListIndex","$listEl","listEl","iosItemHeight","mdItemHeight","scrollList","itemContent","itemIndex","renderSkipPlaceholder","calcSize","$clickedLi","skipRate","scrollListToIndex","f7ListIndex","topPoint","bottomPoint","$labelEl","previousIndex","$children","ulHeight","bubbleBottom","$scrollToEl","elIndex","parentTop","scrollToElTop","wasSkipped","itemHtml","maxItems","calcIndexes","elContent","ListIndex$1","listIndex","tabMounted","listIndexEl","tabBeforeRemove","Timeline","Tab","tabLinkEl","$tabLinkEl","f7TabRoute","newTabEl","$tabsEl","tabsChangedCallbacks","tabsChanged","tabsTranslate","swiper","slideTo","tabLinkElement","$oldTabLinkEl","oldTabId","oldTabEl","Tabs",".tab-link","swipePanel","swipeable","swipeInitialized","otherPanel","backdropOpacity","panelWidth","effect","touchMoves","swipe","swipeOnlyClose","swipeCloseOpposite","swipeActiveArea","swipeCloseActiveAreaSide","getViewEl","preventSwipePanel","swipeNoFollow","threshold","swipeThreshold","Panel","f7Panel","initBreakpoints","initSwipePanel","setBreakpoint","obj$1","breakpoint","wasVisible","allowPanelOpen","resizeHandler","transitionEndTarget","panelTransitionEnd","Panel$1","leftBreakpoint","rightBreakpoint","disableSwipe","panels","panelInstance","enableSwipe","panelSide","panelEl",".panel-open","clickedEl",".panel-close",".panel-backdrop","Card","Chip","FormData$1","store","form","formId","$formEl","FormStorage","formEl","initialData","getFormData","fillFromData","convertToData","storeFormData","formToData","skipTypes","skipNames","inputIndex","inputEl","$inputEl","checked","formFromData","formData","selectEl","checkboxEl","radioEl","initAjaxForm","fromData","Form","removeFormData","Input","ignoreTypes","createTextareaResizableShadow","readonly","textareaResizableShadow","resizeTextarea","textareaEl","$textareaEl","styleValue","currentHeight","clientHeight","initialHeight","validate","$itemInputEl","$inputWrapEl","validity","validationMessage","errorMessage","valid","$errorEl","validateInputs","input","checkEmptyState","scrollIntoView","centered","$scrollableEl","contentHeight","contentScrollTop","contentPaddingTop","contentPaddingBottom","contentOffsetTop","inputOffsetTop","centeredPosition","scrollIntoViewOnFocus","scrollIntoViewDuration","scrollIntoViewCentered","scrollIntoViewAlways","Input$1","itemInputIndex","itemInputEl","textareaIndex","Checkbox","Radio","Toggle","f7Toggle","toggleWidth","touchStartChecked","changed","handleInputChange","Toggle$1","toggleEl","Range","range","dual","step","draggableBar","valueLeft","valueRight","$barEl","$barActiveEl","knobHTML","knobs","labels","$knobEl","f7Range","rangeOffsetLeft","$touchedKnobEl","dualValueIndex","valueChangedByTouch","onTouchChange","rangeWidth","setValue","leftValue","rightValue","layout","knobWidth","positionProperty","knobIndex","leftPos","realLeft","progress$1","byTouchMove","valueChanged","oldValue","newValues","valueIndex","getValue","Range$1","rangeEl","Stepper","stepper","valueEl","formatValue","watchInput","autorepeat","autorepeatDynamic","wraps","$valueEl","$buttonPlusEl","$buttonMinusEl","buttonPlusEl","buttonMinusEl","f7Stepper","preventButtonClick","intervalId","autorepeatAction","autorepeatInAction","onTouchStart","dynamicRepeat","current","progressions","startsIn","progressionStep","repeatEvery","clearInterval","setInterval","onTouchMove","onTouchEnd","onMinusClick","decrement","onPlusClick","increment","onInput","sentByF7Stepper","minus","plus","forceUpdate","formattedValue","Stepper$1","stepperEl","SmartSelect","ss","smartSelect","$selectEl","openIn","routableModals","inputType","onChange","optionEl","displayAs","optionText","maxLength","checkMaxLength","closeOnSelect","inputName","selectName","f7SmartSelect","attachInputsEvents","$containerEl","detachInputsEvents","valueArray","optionIndex","$optionEl","getItemsData","previousGroupEl","optionData","optionImage","optionIcon","optionHasMedia","optionColor","optionClassName","optionClass","optionGroupEl","optionGroupLabel","optionIsLabel","groupLabel","isLabel","groupEl","image","hasMedia","checkbox","radio","renderSearchbar","renderItems","renderPage","pageTitle","navbarColorTheme","searchbar","formColorTheme","renderPopup","renderSheet","toolbarColorTheme","containerEl","openedIn","virtualListHeight","$searchbarEl","searchContainer","searchIn","openPage","pageHtml","pageBeforeOut","pageAfterOut","openPopup","popupParams","popupOpen","popupOpened","popupClose","popupClosed","openSheet","sheetParams","sheetOpen","sheetOpened","sheetClose","sheetClosed","openPopover","popoverParams","popoverOpen","popoverOpened","popoverClose","popoverClosed","SmartSelect$1","pageBackLinkText","popupCloseLinkText","sheetCloseLinkText","searchbarPlaceholder","searchbarDisableText","smartSelectEl",".smart-select","Grid","commonjsGlobal","unwrapExports","__esModule","hasOwnProperty","createCommonjsModule","idate_min","l","d","default","s","u","writable","f","g","h","ReferenceError","getPrototypeOf","fixDate","toGregorian","gy","gm","gd","gdate","toJalaali","getFullYear","getMonth","getDate","jdate","jy","jm","jd","setPrototypeOf","syncDate","getDay","setFullYear","setMonth","setDate","getHours","getMinutes","getSeconds","leap","march","monthLength","IDate","idate_min_1","Calendar","calendar","calendarType","jalali","DateHandleClass","isHorizontal","onInputClick","onInputFocus","onHtmlClick","isPopover","closing","inline","attachInputEvents","inputReadOnly","detachInputEvents","attachHtmlEvents","detachHtmlEvents","attachCalendarEvents","touchCurrentX","touchCurrentY","currentTranslate","wrapperWidth","wrapperHeight","allowItemClick","$wrapperEl","monthsTranslate","isH","resetMonth","nextMonth","prevMonth","handleDayClick","$dayEl","rangePicker","dateYear","dateMonth","dateDay","addValue","onNextMonthClick","onPrevMonthClick","onNextYearClick","nextYear","onPrevYearClick","prevYear","touchMove","detachCalendarEvents","normalizeDate","date","normalizeValues","initInput","formatDate","year","month","month1","day","weekDay","dateFormat","monthNames","monthNamesShort","dayNames","dayNamesShort","substring","v","rangePickerMinDays","rangePickerMaxDays","inValuesIndex","updateValue","sort","b","onlyHeader","valueDate","header","updateCurrentMonthYear","dir","$months","currentMonth","currentYear","currentDate","prevMonthHtml","renderMonth","currentMonthHtml","nextMonthHtml","setMonthsTranslate","monthEl","onMonthChangeStart","currentIndex","onMonthChangeEnd","rebuildBoth","prevMonthTranslate","currentMonthTranslate","nextMonthTranslate","nextDateTime","transitionEndCallback","maxDate","prevDateTime","minDate","setYearMonth","targetDate","newMonthHTML","monthTranslate","prevTranslate","wrapperTranslate","dateInRange","dayDate","daysInMonth","renderMonths","hasEvent","currentValues","today","setHours","daysInPrevMonth","minDayNumber","firstDay","monthHtml","dayIndex","firstDayOfMonthIndex","row","rowHtml","col","dayNumber","weekDayIndex","weekendDays","rangesClasses","dayYear","dayMonth","renderWeekHeader","weekDaysHtml","renderMonthSelector","needsBlackIcon","iconColor","renderYearSelector","renderHeader","renderFooter","renderToolbar","renderInline","footer","weekHeader","renderCustomModal","opening","f7Calendar","scrollToInput","closed","Calendar$1","monthSelector","yearSelector","headerPlaceholder","toolbarCloseText","pickerColumn","colEl","updateItems","picker","$colEl","colIndex","divider","itemsHeight","minTranslate","maxTranslate","animationFrameId","$itemsEl","replaceValues","displayValues","renderColumn","rotateEffect","colWidth","colHeight","valueCallbacks","newActiveIndex","updateValuesOnMomentum","updateDuringScroll","previousActiveIndex","selectedItem","$itemEl","itemsFit","angle","needsOriginFix","displayValue","startTranslate","returnTo","velocityTranslate","updateValuesOnTouchmove","momentumRatio","freeMode","Picker","onResize","resizeCols","attachResizeEvent","detachResizeEvent","forceValues","column","newDisplayValue","noDividerColumns","initColumn","destroyColumn","onlyItems","columnHtml","columnItemsHtml","colClasses","textAlign","f7Picker","Picker$1","InfiniteScroll","virtualListContainer","onTop","infiniteScroll","InfiniteScroll$1","PullToRefresh","ptr","$preloaderEl","touchId","isMaterial","refresh","wasScrolled","triggerDistance","dynamicTriggerDistance","pullStarted","useTranslate","hasNavbar","identifier","f7PullToRefresh","PullToRefresh$1","Lazy","f7LazyDestroy","lazyLoadImages","placeholderSrc","lazy","placeholder","lazyEl","imagesSequence","imageIsLoading","f7LazyAttached","lazyHandler","onImageComplete","sequential","loadImage","isInViewport","rect","imageEl","$imageEl","Lazy$1","DataTable","table","f7DataTable","collapsible","$headerEl","$headerSelectedEl","handleChange","handleSortableClick","sentByF7DataTable","columnIndex","checkSelectedHeader","newSort","$cellEl","isActive","currentSort","setCollapsibleLabels","collpsibleTitle","checkedItems","DataTable$1","dataTable","tableEl","Fab","morphOpen","fabEl","$fabEl","borderRadius","zIndex","fab","translateX","translateY","f7FabMorphData","diffX","diffY","scaleX","scaleY","f7FabMorphResizeHandler","diffXNew","diffYNew","scaleXNew","scaleYNew","morphClose","morphData","$buttonsEl","Fab$1",".fab > a",".fab-open",".fab-close","Searchbar","FrameworkClass","sb","disableButton","disableButtonEl","searchItem","ignore","foundEl","notFoundEl","hideOnEnableEl","hideOnSearchEl","customSearch","hideDividers","hideGroups","disableOnBackdropClick","expandable","$foundEl","$notFoundEl","$hideOnEnableEl","$hideOnSearchEl","$searchContainer","$disableButtonEl","f7Searchbar","preventSubmit","onInputBlur","onInputChange","isVirtualList","onInputClear","disableOnClick","onPageBeforeOut","onPageBeforeIn","disableButtonHasMargin","previousQuery","setDisableButtonMargin","setFocus","backdropShow","needsFocus","backdropHide","internal","vlQuery","foundItems","compareWithText","$searchIn","searchInIndex","searchInEl","itemText","wordsMatch","titleIndex","titleEl","$nextElements","$nextEl","$groupEl","Searchbar$1","searchbarEl",".searchbar-clear",".searchbar-enable",".searchbar-disable",".searchbar-toggle","Messages","autoLayout","messages","newMessagesFirst","scrollMessages","scrollMessagesOnEdge","firstMessageRule","lastMessageRule","tailMessageRule","sameNameMessageRule","sameHeaderMessageRule","sameFooterMessageRule","sameAvatarMessageRule","customClassMessageRule","renderMessage","f7Messages","getMessageData","messageEl","$messageEl","textHeader","textFooter","isTitle","imageSrc","typing","avatar","getMessagesData","messageToRender","message","isTyping","renderMessages","messagesToRender","isFirstMessage","isLastMessage","isTailMessage","isSameNameMessage","isSameHeaderMessage","isSameFooterMessage","isSameAvatarMessage","isCustomClassMessage","previousMessage","nextMessage","customMessageClasses","customClass","removeMessage","messageToRemove","removeMessages","messagesToRemove","messagesToRemoveEls","messageToRemoveIndex","addMessage","messageToAdd","addMessages","messagesToAdd","scrollHeightBefore","heightBefore","scrollBefore","messagesHTML","typingMessage","$messagesEls","onEdge","showTyping","hideTyping","typingMessageIndex","typingFound","$typingMessageEl","newScrollTop","currentScroll","Messages$1","messagesEl","Messagebar","messagebar","topOffset","bottomOffset","attachments","renderAttachments","renderAttachment","maxHeight","resizePage","f7Messagebar","$areaEl","$attachmentsEl","$sheetEl","onAppResize","onSubmit","onAttachmentClick","onTextareaChange","onTextareaFocus","sheetHide","onTextareaBlur","areaEl","attachmentsEl","attachmentsVisible","sheetEl","sheetVisible","setPlaceholder","elHeight","currentPaddingBottom","requiredPaddingBottom","currentPaddingTop","pageOffsetHeight","scrollOnBottom","attachmentsCreate","attachmentsShow","attachmentsHide","attachmentsToggle","attachment","sheetCreate","sheetShow","sheetToggle","Messagebar$1","messagebarEl","updateSize","clientWidth","isVertical","updateSlides","swiperSize","rtlTranslate","wrongRTL","isVirtual","virtual","previousSlidesLength","slides","slidesLength","snapGrid","slidesGrid","slidesSizesGrid","offsetBefore","slidesOffsetBefore","offsetAfter","slidesOffsetAfter","previousSnapGridLength","previousSlidesGridLength","spaceBetween","slidePosition","prevSlideSize","slidesNumberEvenToRows","slideSize","virtualSize","marginLeft","marginRight","marginBottom","slidesPerColumn","slidesPerView","slidesPerColumnFill","newSlidesGrid","slidesPerRow","numFullColumns","slide","newSlideOrderIndex","-webkit-box-ordinal-group","-moz-box-ordinal-group","-ms-flex-order","-webkit-order","order","slideStyles","currentTransform","currentWebKitTransform","roundLengths","swiperSlideSize","centeredSlides","slidesPerGroup","setWrapperSize","slidesGridItem","i$2","slidesGridItem$1","watchOverflow","checkOverflow","watchSlidesProgress","watchSlidesVisibility","updateSlidesOffset","updateAutoHeight","speed","activeSlides","newHeight","setTransition","swiperSlideOffset","updateSlidesProgress","offsetCenter","slideVisibleClass","slideProgress","slideBefore","slideAfter","updateProgress","translatesDiff","isBeginning","isEnd","wasBeginning","wasEnd","updateSlidesClasses","activeSlide","realIndex","slideActiveClass","slideDuplicateClass","slideDuplicateActiveClass","nextSlide","slideNextClass","prevSlide","slidePrevClass","slideDuplicateNextClass","slideDuplicatePrevClass","updateActiveIndex","snapIndex","previousRealIndex","previousSnapIndex","normalizeSlideIndex","updateClickedSlide","slideFound","clickedSlide","clickedIndex","slideToClickedSlide","virtualTranslate","setTranslate","byController","previousTranslate","transitionStart","runCallbacks","autoHeight","transitionEnd$1","transition$1","slideIndex","preventIntercationOnTransition","initialSlide","allowSlideNext","allowSlidePrev","onSlideToWrapperTransitionEnd","slideToLoop","loopedSlides","slideNext","loopFix","slidePrev","normalize","normalizedTranslate","normalizedSnapGrid","prevSnap","slideReset","slideToClosest","currentSnap","slidesPerViewDynamic","slideToIndex","loopCreate","loopFillGroupWithBlank","blankSlidesNum","blankNode","loopAdditionalSlides","prependSlides","appendSlides","loopDestroy","setGrabCursor","moving","simulateTouch","isLocked","cursor","unsetGrabCursor","grabCursor","appendSlide","prependSlide","addSlide","activeIndexBuffer","baseLength","slidesBuffer","currentSlide","removeSlide","slidesIndexes","indexToRemove","removeAllSlides","manipulation","touchEventsData","originalEvent","isTouchEvent","noSwiping","noSwipingSelector","swipeHandler","currentY","startX","startY","iOSEdgeSwipeDetection","iOSEdgeSwipeThreshold","allowTouchCallbacks","startMoving","swipeDirection","allowThresholdMove","formElements","allowTouchMove","preventedByNestedSwiper","touchReleaseOnEdges","touchAngle","atan2","touchMoveStopPropagation","nested","allowMomentumBounce","touchRatio","disableParentSwiper","resistanceRatio","resistance","followFinger","velocities","currentPos","clickTimeout","freeModeMomentum","lastMoveEvent","velocityEvent","velocity","freeModeMinimumVelocity","freeModeMomentumVelocityRatio","momentumDuration","freeModeMomentumRatio","momentumDistance","newPosition","afterBouncePosition","needsLoopFix","doBounce","bounceAmount","freeModeMomentumBounceRatio","freeModeMomentumBounce","freeModeSticky","longSwipesMs","stopIndex","groupSize","ratio","longSwipes","longSwipesRatio","shortSwipes","breakpoints","preventClicks","preventClicksPropagation","wrapperEl","touchEventsTarget","passiveListeners","getBreakpoint","currentBreakpoint","breakPointsParams","originalParams","needsReLoop","points","point","Browser","isIE","isSafari","isUiWebView","addClasses","suffixes","suffix","containerModifierClass","removeClasses","srcset","sizes","checkForComplete","onReady","preloadImages","imagesLoaded","imagesToLoad","updateOnImagesReady","currentSrc","images","wasLocked","navigation","checkOverflow$1","uniqueNavElements","noSwipingClass","slideClass","slideBlankClass","wrapperClass","runCallbacksOnInit","prototypes","extendedDefaults","Swiper","SwiperClass","prototypeGroup","protoMethod","moduleParamName","swiperParams","swipers","newParams","touchEventsTouch","touchEventsDesktop","spv","breakLoop","translateValue","deleteInstance","cleanStyles","extendDefaults","newDefaults","Device$1","Support$1","Browser$1","browser","Resize","orientationChangeHandler","Observer","MutationObserver","WebkitMutationObserver","attach","ObserverFunc","mutations","mutation","observe","childList","characterData","observers","observeParents","containerParents","disconnect","Observer$1","Virtual","previousFrom","previousTo","previousSlidesGrid","renderSlide","previousOffset","offsetProp","slidesAfter","slidesBefore","onRendered","slidesToRender","prependIndexes","appendIndexes","$slideEl","Virtual$1","beforeInit","overwriteParams","Navigation","$prevEl","disabledClass","lockClass","nextEl","prevEl","Navigation$1","hideOnClick","hiddenClass","toEdge","fromEdge","Pagination","pagination","total","paginationType","bullets","firstIndex","lastIndex","midIndex","dynamicBullets","bulletSize","dynamicMainBullets","dynamicBulletIndex","bullet","$bullet","bulletIndex","bulletActiveClass","$firstDisplayedBullet","$lastDisplayedBullet","dynamicBulletsLength","bulletsOffset","formatFractionCurrent","formatFractionTotal","progressbarDirection","progressbarOpposite","scale","renderCustom","paginationHTML","numberOfBullets","renderBullet","bulletClass","renderFraction","currentClass","totalClass","renderProgressbar","progressbarFillClass","clickable","clickableClass","modifierClass","progressbarOppositeClass","Pagination$1","bulletElement","number","activeIndexChange","snapIndexChange","slidesLengthChange","snapGridLengthChange","Scrollbar","scrollbar","dragSize","trackSize","$dragEl","newSize","newPos","moveDivider","scrollbarHide","setDragPosition","positionRatio","onDragStart","dragTimeout","onDragMove","returnValue","onDragEnd","snapOnRelease","enableDraggable","disableDraggable","$swiperEl","dragEl","draggable","Scrollbar$1","dragClass","observerUpdate","Parallax","setTransform","rtlFactor","currentOpacity","currentScale","parallax","slideEl","parallaxEl","$parallaxEl","parallaxDuration","Parallax$1","Zoom","getDistanceBetweenTouches","x1","y1","x2","y2","sqrt","onGestureStart","zoom","gesture","fakeGestureTouched","fakeGestureMoved","scaleStart","$imageWrapEl","maxRatio","isScaling","onGestureChange","scaleMove","minRatio","onGestureEnd","slideWidth","slideHeight","scaledWidth","scaledHeight","minX","maxX","minY","maxY","touchesCurrent","prevPositionX","prevPositionY","prevTime","momentumDurationX","momentumDurationY","momentumDistanceX","newPositionX","momentumDistanceY","newPositionY","onTransitionEnd","out","in","touchX","touchY","imageWidth","imageHeight","translateMinX","translateMinY","translateMaxX","translateMaxY","Zoom$1","containerClass","zoomedSlideClass","touchStart","touchEnd","doubleTap","Lazy$2","loadInSlide","loadInDuplicate","$images","elementClass","loadedClass","loadingClass","imageIndex","background","slideOriginalIndex","originalSlide","duplicatedSlide","slideExist","initialImageLoaded","loadPrevNext","loadPrevNextAmount","amount","maxIndex","minIndex","Lazy$3","loadOnTransitionStart","preloaderClass","scrollbarDragMove","Controller","LinearSpline","guess","i1","i3","binarySearch","array","interpolate","getInterpolateFunction","controller","spline","setTranslate$1","multiplier","controlledTranslate","controlled","control","setControlledTranslate","by","setControlledTransition","Controller$1","a11y","makeElFocusable","addElRole","role","addElLabel","disableEl","enableEl","onEnterKey","notify","lastSlideMessage","nextSlideMessage","firstSlideMessage","prevSlideMessage","notification","liveRegion","updateNavigation","updatePagination","bulletEl","$bulletEl","paginationBulletMessage","A11y","notificationClass","paginationUpdate","Autoplay","run","$activeSlideEl","autoplay","reverseDirection","stopOnLastSlide","running","pause","paused","waitForTransition","Autoplay$1","disableOnInteraction","beforeTransitionStart","sliderFirstMove","Fade","tx","ty","slideOpacity","fadeEffect","crossFade","eventTriggered","triggerEvents","EffectFade","Cube","$cubeShadowEl","swiperWidth","swiperHeight","cubeEffect","wrapperRotate","shadow","slideAngle","tz","slideShadows","shadowBefore","shadowAfter","-webkit-transform-origin","-moz-transform-origin","-ms-transform-origin","transform-origin","shadowOffset","shadowAngle","sin","scale1","shadowScale","scale2","zFactor","EffectCube","Flip","flipEffect","limitRotation","rotateY","rotateX","EffectFlip","Coverflow","coverflowEffect","rotate","offsetMultiplier","translateZ","stretch","slideTransform","$shadowBeforeEl","$shadowAfterEl","perspectiveOrigin","EffectCoverflow","initSwipers","swiperEl","isTabs","isRoutableTabs","Swiper$1","pageMounted","PhotoBrowser","photoBrowser","exposed","swipeToClose","started","timeStart","onSlideChange","virtualSlides","photos","$previousSlideEl","$totalEl","captions","captionIndex","$captionsContainerEl","previousSlideVideo","renderNavbar","iconsColor","backLinkText","isPopup","renderCaption","caption","renderObject","photo","renderLazyPhoto","renderPhoto","captionsTheme","renderStandalone","f7PhotoBrowser","$swiperContainerEl","$swiperWrapperEl","tap","exposition","expositionToggle","slideChange","slideChangeTransitionStart","slideChangeTransitionEnd","lazyImageLoad","lazyImageReady","touchMoveOpposite","openStandalone","expositionEnable","expositionHideCaptions","expositionDisable","PhotoBrowser$1","navbarOfText","Notification","notificationHeight","titleRightText","subtitle","closeOnClick","notificationHtml","notificationInstance","closeOnTimeout","Notification$1","Autocomplete","ac","$openerEl","autocomplete","openerEl","f7Autocomplete","$modalEl","$dropdownEl","firstValue","firstItem","itemsHTML","limit","highlightMatches","itemValue","valueProperty","textProperty","dropdownPlaceholderText","typeahead","setSelectionRange","onPageInputChange","aValue","updateValues","onOpenerClick","positionDropdown","onKeyDown","onDropdownclick","clickedItem","updateInputValueOnSelect","inputEvents","attachDropdownEvents","detachDropdownEvents","attachPageEvents","detachPageEvents","$listParent","inputOffset","inputOffsetWidth","inputOffsetHeight","parentEl","$parentEl","paddingValue","listOffset","listOffsetLeft","inputOffsetLeft","paddingProp","expandInput","valuesHTML","preloaderHide","preloaderShow","renderPreloader","preloaderColor","renderDropdown","requestSourceOnOpen","autoFocus","openDropdown","dropdownContainerEl","Autocomplete$1","notFoundText","autocompleteEl","Tooltip","tooltip","f7Tooltip","handleMouseEnter","handleMouseLeave","handleTransitionEnd","aroundEl","$aroundEl","Tooltip$1","Gauge","gauge","f7Gauge","calcRadius","borderWidth","calcBorderLength","radius","bgColor","borderBgColor","borderColor","valueText","valueTextColor","valueFontSize","valueFontWeight","labelText","labelTextColor","labelFontSize","labelFontWeight","semiCircle","$gaugeSvgEl","svgAttrs","viewBox","backAttrs","stroke","stroke-width","fill","frontAttrs","stroke-dasharray","stroke-dashoffset","backAttrs$1","cx","cy","frontAttrs$1","textAttrs","font-weight","font-size","dy","text-anchor","dominant-baseline","labelAttrs","gaugeSvgEl","Gauge$1","ViAd","vi","appId","appVer","adParams","skipParams","placementId","$viFrame","removeOverlay","$overlayEl","ad","Ad","onAdReady","onAdStarted","onAdClick","targetUrl","onAdImpression","onAdStopped","reason","onAutoPlayFailed","videoEl","fallbackOverlay","fallbackOverlayText","play","onAdError","msg","startAd","pauseAd","resume","resumeAd","stopAd","initAd","Vi","showMute","startMuted","placementType","videoSlot","showProgress","showBranding","age","gender","advertiserId","latitude","longitude","accuracy","storeId","ip","manufacturer","model","connectionType","connectionProvider","sdkReady","createAd","loadSdk","skdReady","Elevation","Typography"],"mappings":"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uF,KAAsC,IAD3Ej1G,KAC+C6mB,aAAaouF,GAAGpgE,UAD/D70C,KACyFi1G,GAAGoD,aAKxGE,WACFl0G,KAAM,aAGJm0G,YACFn0G,KAAM,cAiFR,MA7EwB,oBAAXnE,SAEJA,OAAOkH,YAAalH,OAAOkH,UAAYA,WAGvClH,OAAOgL,OAAQhL,OAAOgL,KAAOC,MAKtCpL,WAAWumB,KACTyB,aACA2B,cACAC,YACAE,aACAuE,cACAgG,YACAgf,aACAtB,SACAuB,cACAQ,cACAsB,YACAQ,OACAmD,SACA4B,UACAC,UACAW,cACA6B,QACAgC,SACAwB,QACAK,cACAyB,UACAqB,UACAgB,QACAa,QACAG,YACAS,cACAqC,WACAmC,WACAa,YACAmF,cACA+B,YACAK,SACAgB,KACAgC,QACAa,KACAC,KACA2B,KACAuC,QACAI,SACAC,MACAO,SACAsC,QACAyC,UACAkF,cACAQ,KACA2L,WACAyD,SACAK,iBACAe,gBACAmB,OACAmB,YACAyB,MACAwD,YACAyE,WACA0C,aACAilB,SACA6C,eACAU,eACAwD,eACAW,UACA0C,QACAiC,GACAuB,UACAC,aAGKz4G","file":"framework7.min.js","sourcesContent":["/**\n * Framework7 3.0.7\n * Full featured mobile HTML framework for building iOS & Android apps\n * http://framework7.io/\n *\n * Copyright 2014-2018 Vladimir Kharlampidi\n *\n * Released under the MIT License\n *\n * Released on: July 20, 2018\n */\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global.Framework7 = factory());\n}(this, (function () { 'use strict';\n\n /**\n * Template7 1.3.7\n * Mobile-first HTML template engine\n * \n * http://www.idangero.us/template7/\n * \n * Copyright 2018, Vladimir Kharlampidi\n * The iDangero.us\n * http://www.idangero.us/\n * \n * Licensed under MIT\n * \n * Released on: July 17, 2018\n */\n var t7ctx;\n if (typeof window !== 'undefined') {\n t7ctx = window;\n } else if (typeof global !== 'undefined') {\n t7ctx = global;\n } else {\n t7ctx = undefined;\n }\n\n var Template7Context = t7ctx;\n\n var Template7Utils = {\n quoteSingleRexExp: new RegExp('\\'', 'g'),\n quoteDoubleRexExp: new RegExp('\"', 'g'),\n isFunction: function isFunction(func) {\n return typeof func === 'function';\n },\n escape: function escape(string) {\n return (typeof Template7Context !== 'undefined' && Template7Context.escape) ?\n Template7Context.escape(string) :\n string\n .replace(/&/g, '&')\n .replace(//g, '>')\n .replace(/\"/g, '"');\n },\n helperToSlices: function helperToSlices(string) {\n var quoteDoubleRexExp = Template7Utils.quoteDoubleRexExp;\n var quoteSingleRexExp = Template7Utils.quoteSingleRexExp;\n var helperParts = string.replace(/[{}#}]/g, '').trim().split(' ');\n var slices = [];\n var shiftIndex;\n var i;\n var j;\n for (i = 0; i < helperParts.length; i += 1) {\n var part = helperParts[i];\n var blockQuoteRegExp = (void 0);\n var openingQuote = (void 0);\n if (i === 0) { slices.push(part); }\n else if (part.indexOf('\"') === 0 || part.indexOf('\\'') === 0) {\n blockQuoteRegExp = part.indexOf('\"') === 0 ? quoteDoubleRexExp : quoteSingleRexExp;\n openingQuote = part.indexOf('\"') === 0 ? '\"' : '\\'';\n // Plain String\n if (part.match(blockQuoteRegExp).length === 2) {\n // One word string\n slices.push(part);\n } else {\n // Find closed Index\n shiftIndex = 0;\n for (j = i + 1; j < helperParts.length; j += 1) {\n part += \" \" + (helperParts[j]);\n if (helperParts[j].indexOf(openingQuote) >= 0) {\n shiftIndex = j;\n slices.push(part);\n break;\n }\n }\n if (shiftIndex) { i = shiftIndex; }\n }\n } else if (part.indexOf('=') > 0) {\n // Hash\n var hashParts = part.split('=');\n var hashName = hashParts[0];\n var hashContent = hashParts[1];\n if (!blockQuoteRegExp) {\n blockQuoteRegExp = hashContent.indexOf('\"') === 0 ? quoteDoubleRexExp : quoteSingleRexExp;\n openingQuote = hashContent.indexOf('\"') === 0 ? '\"' : '\\'';\n }\n if (hashContent.match(blockQuoteRegExp).length !== 2) {\n shiftIndex = 0;\n for (j = i + 1; j < helperParts.length; j += 1) {\n hashContent += \" \" + (helperParts[j]);\n if (helperParts[j].indexOf(openingQuote) >= 0) {\n shiftIndex = j;\n break;\n }\n }\n if (shiftIndex) { i = shiftIndex; }\n }\n var hash = [hashName, hashContent.replace(blockQuoteRegExp, '')];\n slices.push(hash);\n } else {\n // Plain variable\n slices.push(part);\n }\n }\n return slices;\n },\n stringToBlocks: function stringToBlocks(string) {\n var blocks = [];\n var i;\n var j;\n if (!string) { return []; }\n var stringBlocks = string.split(/({{[^{^}]*}})/);\n for (i = 0; i < stringBlocks.length; i += 1) {\n var block = stringBlocks[i];\n if (block === '') { continue; }\n if (block.indexOf('{{') < 0) {\n blocks.push({\n type: 'plain',\n content: block,\n });\n } else {\n if (block.indexOf('{/') >= 0) {\n continue;\n }\n block = block\n .replace(/{{([#/])*([ ])*/, '{{$1')\n .replace(/([ ])*}}/, '}}');\n if (block.indexOf('{#') < 0 && block.indexOf(' ') < 0 && block.indexOf('else') < 0) {\n // Simple variable\n blocks.push({\n type: 'variable',\n contextName: block.replace(/[{}]/g, ''),\n });\n continue;\n }\n // Helpers\n var helperSlices = Template7Utils.helperToSlices(block);\n var helperName = helperSlices[0];\n var isPartial = helperName === '>';\n var helperContext = [];\n var helperHash = {};\n for (j = 1; j < helperSlices.length; j += 1) {\n var slice = helperSlices[j];\n if (Array.isArray(slice)) {\n // Hash\n helperHash[slice[0]] = slice[1] === 'false' ? false : slice[1];\n } else {\n helperContext.push(slice);\n }\n }\n\n if (block.indexOf('{#') >= 0) {\n // Condition/Helper\n var helperContent = '';\n var elseContent = '';\n var toSkip = 0;\n var shiftIndex = (void 0);\n var foundClosed = false;\n var foundElse = false;\n var depth = 0;\n for (j = i + 1; j < stringBlocks.length; j += 1) {\n if (stringBlocks[j].indexOf('{{#') >= 0) {\n depth += 1;\n }\n if (stringBlocks[j].indexOf('{{/') >= 0) {\n depth -= 1;\n }\n if (stringBlocks[j].indexOf((\"{{#\" + helperName)) >= 0) {\n helperContent += stringBlocks[j];\n if (foundElse) { elseContent += stringBlocks[j]; }\n toSkip += 1;\n } else if (stringBlocks[j].indexOf((\"{{/\" + helperName)) >= 0) {\n if (toSkip > 0) {\n toSkip -= 1;\n helperContent += stringBlocks[j];\n if (foundElse) { elseContent += stringBlocks[j]; }\n } else {\n shiftIndex = j;\n foundClosed = true;\n break;\n }\n } else if (stringBlocks[j].indexOf('else') >= 0 && depth === 0) {\n foundElse = true;\n } else {\n if (!foundElse) { helperContent += stringBlocks[j]; }\n if (foundElse) { elseContent += stringBlocks[j]; }\n }\n }\n if (foundClosed) {\n if (shiftIndex) { i = shiftIndex; }\n if (helperName === 'raw') {\n blocks.push({\n type: 'plain',\n content: helperContent,\n });\n } else {\n blocks.push({\n type: 'helper',\n helperName: helperName,\n contextName: helperContext,\n content: helperContent,\n inverseContent: elseContent,\n hash: helperHash,\n });\n }\n }\n } else if (block.indexOf(' ') > 0) {\n if (isPartial) {\n helperName = '_partial';\n if (helperContext[0]) {\n if (helperContext[0].indexOf('[') === 0) { helperContext[0] = helperContext[0].replace(/[[\\]]/g, ''); }\n else { helperContext[0] = \"\\\"\" + (helperContext[0].replace(/\"|'/g, '')) + \"\\\"\"; }\n }\n }\n blocks.push({\n type: 'helper',\n helperName: helperName,\n contextName: helperContext,\n hash: helperHash,\n });\n }\n }\n }\n return blocks;\n },\n parseJsVariable: function parseJsVariable(expression, replace, object) {\n return expression.split(/([+ -*/^])/g).map(function (part) {\n if (part.indexOf(replace) < 0) { return part; }\n if (!object) { return JSON.stringify(''); }\n var variable = object;\n if (part.indexOf((replace + \".\")) >= 0) {\n part.split((replace + \".\"))[1].split('.').forEach(function (partName) {\n if (partName in variable) { variable = variable[partName]; }\n else { variable = undefined; }\n });\n }\n if (typeof variable === 'string') {\n variable = JSON.stringify(variable);\n }\n if (variable === undefined) { variable = 'undefined'; }\n return variable;\n }).join('');\n },\n parseJsParents: function parseJsParents(expression, parents) {\n return expression.split(/([+ -*^])/g).map(function (part) {\n if (part.indexOf('../') < 0) { return part; }\n if (!parents || parents.length === 0) { return JSON.stringify(''); }\n var levelsUp = part.split('../').length - 1;\n var parentData = levelsUp > parents.length ? parents[parents.length - 1] : parents[levelsUp - 1];\n\n var variable = parentData;\n var parentPart = part.replace(/..\\//g, '');\n parentPart.split('.').forEach(function (partName) {\n if (variable[partName]) { variable = variable[partName]; }\n else { variable = 'undefined'; }\n });\n return JSON.stringify(variable);\n }).join('');\n },\n getCompileVar: function getCompileVar(name, ctx, data) {\n if ( data === void 0 ) data = 'data_1';\n\n var variable = ctx;\n var parts;\n var levelsUp = 0;\n var newDepth;\n if (name.indexOf('../') === 0) {\n levelsUp = name.split('../').length - 1;\n newDepth = variable.split('_')[1] - levelsUp;\n variable = \"ctx_\" + (newDepth >= 1 ? newDepth : 1);\n parts = name.split('../')[levelsUp].split('.');\n } else if (name.indexOf('@global') === 0) {\n variable = 'Template7.global';\n parts = name.split('@global.')[1].split('.');\n } else if (name.indexOf('@root') === 0) {\n variable = 'root';\n parts = name.split('@root.')[1].split('.');\n } else {\n parts = name.split('.');\n }\n for (var i = 0; i < parts.length; i += 1) {\n var part = parts[i];\n if (part.indexOf('@') === 0) {\n var dataLevel = data.split('_')[1];\n if (levelsUp > 0) {\n dataLevel = newDepth;\n }\n if (i > 0) {\n variable += \"[(data_\" + dataLevel + \" && data_\" + dataLevel + \".\" + (part.replace('@', '')) + \")]\";\n } else {\n variable = \"(data_\" + dataLevel + \" && data_\" + dataLevel + \".\" + (part.replace('@', '')) + \")\";\n }\n } else if (Number.isFinite ? Number.isFinite(part) : Template7Context.isFinite(part)) {\n variable += \"[\" + part + \"]\";\n } else if (part === 'this' || part.indexOf('this.') >= 0 || part.indexOf('this[') >= 0 || part.indexOf('this(') >= 0) {\n variable = part.replace('this', ctx);\n } else {\n variable += \".\" + part;\n }\n }\n return variable;\n },\n getCompiledArguments: function getCompiledArguments(contextArray, ctx, data) {\n var arr = [];\n for (var i = 0; i < contextArray.length; i += 1) {\n if (/^['\"]/.test(contextArray[i])) { arr.push(contextArray[i]); }\n else if (/^(true|false|\\d+)$/.test(contextArray[i])) { arr.push(contextArray[i]); }\n else {\n arr.push(Template7Utils.getCompileVar(contextArray[i], ctx, data));\n }\n }\n\n return arr.join(', ');\n },\n };\n\n /* eslint no-eval: \"off\" */\n var Template7Helpers = {\n _partial: function _partial(partialName, options) {\n var ctx = this;\n var p = Template7Class.partials[partialName];\n if (!p || (p && !p.template)) { return ''; }\n if (!p.compiled) {\n p.compiled = new Template7Class(p.template).compile();\n }\n Object.keys(options.hash).forEach(function (hashName) {\n ctx[hashName] = options.hash[hashName];\n });\n return p.compiled(ctx, options.data, options.root);\n },\n escape: function escape(context) {\n if (typeof context !== 'string') {\n throw new Error('Template7: Passed context to \"escape\" helper should be a string');\n }\n return Template7Utils.escape(context);\n },\n if: function if$1(context, options) {\n var ctx = context;\n if (Template7Utils.isFunction(ctx)) { ctx = ctx.call(this); }\n if (ctx) {\n return options.fn(this, options.data);\n }\n\n return options.inverse(this, options.data);\n },\n unless: function unless(context, options) {\n var ctx = context;\n if (Template7Utils.isFunction(ctx)) { ctx = ctx.call(this); }\n if (!ctx) {\n return options.fn(this, options.data);\n }\n\n return options.inverse(this, options.data);\n },\n each: function each(context, options) {\n var ctx = context;\n var ret = '';\n var i = 0;\n if (Template7Utils.isFunction(ctx)) { ctx = ctx.call(this); }\n if (Array.isArray(ctx)) {\n if (options.hash.reverse) {\n ctx = ctx.reverse();\n }\n for (i = 0; i < ctx.length; i += 1) {\n ret += options.fn(ctx[i], { first: i === 0, last: i === ctx.length - 1, index: i });\n }\n if (options.hash.reverse) {\n ctx = ctx.reverse();\n }\n } else {\n // eslint-disable-next-line\n for (var key in ctx) {\n i += 1;\n ret += options.fn(ctx[key], { key: key });\n }\n }\n if (i > 0) { return ret; }\n return options.inverse(this);\n },\n with: function with$1(context, options) {\n var ctx = context;\n if (Template7Utils.isFunction(ctx)) { ctx = context.call(this); }\n return options.fn(ctx);\n },\n join: function join(context, options) {\n var ctx = context;\n if (Template7Utils.isFunction(ctx)) { ctx = ctx.call(this); }\n return ctx.join(options.hash.delimiter || options.hash.delimeter);\n },\n js: function js(expression, options) {\n var data = options.data;\n var func;\n var execute = expression;\n ('index first last key').split(' ').forEach(function (prop) {\n if (typeof data[prop] !== 'undefined') {\n var re1 = new RegExp((\"this.@\" + prop), 'g');\n var re2 = new RegExp((\"@\" + prop), 'g');\n execute = execute\n .replace(re1, JSON.stringify(data[prop]))\n .replace(re2, JSON.stringify(data[prop]));\n }\n });\n if (options.root && execute.indexOf('@root') >= 0) {\n execute = Template7Utils.parseJsVariable(execute, '@root', options.root);\n }\n if (execute.indexOf('@global') >= 0) {\n execute = Template7Utils.parseJsVariable(execute, '@global', Template7Context.Template7.global);\n }\n if (execute.indexOf('../') >= 0) {\n execute = Template7Utils.parseJsParents(execute, options.parents);\n }\n if (execute.indexOf('return') >= 0) {\n func = \"(function(){\" + execute + \"})\";\n } else {\n func = \"(function(){return (\" + execute + \")})\";\n }\n return eval(func).call(this);\n },\n js_if: function js_if(expression, options) {\n var data = options.data;\n var func;\n var execute = expression;\n ('index first last key').split(' ').forEach(function (prop) {\n if (typeof data[prop] !== 'undefined') {\n var re1 = new RegExp((\"this.@\" + prop), 'g');\n var re2 = new RegExp((\"@\" + prop), 'g');\n execute = execute\n .replace(re1, JSON.stringify(data[prop]))\n .replace(re2, JSON.stringify(data[prop]));\n }\n });\n if (options.root && execute.indexOf('@root') >= 0) {\n execute = Template7Utils.parseJsVariable(execute, '@root', options.root);\n }\n if (execute.indexOf('@global') >= 0) {\n execute = Template7Utils.parseJsVariable(execute, '@global', Template7Context.Template7.global);\n }\n if (execute.indexOf('../') >= 0) {\n execute = Template7Utils.parseJsParents(execute, options.parents);\n }\n if (execute.indexOf('return') >= 0) {\n func = \"(function(){\" + execute + \"})\";\n } else {\n func = \"(function(){return (\" + execute + \")})\";\n }\n var condition = eval(func).call(this);\n if (condition) {\n return options.fn(this, options.data);\n }\n\n return options.inverse(this, options.data);\n },\n };\n Template7Helpers.js_compare = Template7Helpers.js_if;\n\n var Template7Options = {};\n var Template7Partials = {};\n\n var Template7Class = function Template7Class(template) {\n var t = this;\n t.template = template;\n };\n\n var staticAccessors = { options: { configurable: true },partials: { configurable: true },helpers: { configurable: true } };\n Template7Class.prototype.compile = function compile (template, depth) {\n if ( template === void 0 ) template = this.template;\n if ( depth === void 0 ) depth = 1;\n\n var t = this;\n if (t.compiled) { return t.compiled; }\n\n if (typeof template !== 'string') {\n throw new Error('Template7: Template must be a string');\n }\n var stringToBlocks = Template7Utils.stringToBlocks;\n var getCompileVar = Template7Utils.getCompileVar;\n var getCompiledArguments = Template7Utils.getCompiledArguments;\n\n var blocks = stringToBlocks(template);\n var ctx = \"ctx_\" + depth;\n var data = \"data_\" + depth;\n if (blocks.length === 0) {\n return function empty() { return ''; };\n }\n\n function getCompileFn(block, newDepth) {\n if (block.content) { return t.compile(block.content, newDepth); }\n return function empty() { return ''; };\n }\n function getCompileInverse(block, newDepth) {\n if (block.inverseContent) { return t.compile(block.inverseContent, newDepth); }\n return function empty() { return ''; };\n }\n\n var resultString = '';\n if (depth === 1) {\n resultString += \"(function (\" + ctx + \", \" + data + \", root) {\\n\";\n } else {\n resultString += \"(function (\" + ctx + \", \" + data + \") {\\n\";\n }\n if (depth === 1) {\n resultString += 'function isArray(arr){return Array.isArray(arr);}\\n';\n resultString += 'function isFunction(func){return (typeof func === \\'function\\');}\\n';\n resultString += 'function c(val, ctx) {if (typeof val !== \"undefined\" && val !== null) {if (isFunction(val)) {return val.call(ctx);} else return val;} else return \"\";}\\n';\n resultString += 'root = root || ctx_1 || {};\\n';\n }\n resultString += 'var r = \\'\\';\\n';\n var i;\n for (i = 0; i < blocks.length; i += 1) {\n var block = blocks[i];\n // Plain block\n if (block.type === 'plain') {\n // eslint-disable-next-line\n resultString += \"r +='\" + ((block.content).replace(/\\r/g, '\\\\r').replace(/\\n/g, '\\\\n').replace(/'/g, '\\\\' + '\\'')) + \"';\";\n continue;\n }\n var variable = (void 0);\n var compiledArguments = (void 0);\n // Variable block\n if (block.type === 'variable') {\n variable = getCompileVar(block.contextName, ctx, data);\n resultString += \"r += c(\" + variable + \", \" + ctx + \");\";\n }\n // Helpers block\n if (block.type === 'helper') {\n var parents = (void 0);\n if (ctx !== 'ctx_1') {\n var level = ctx.split('_')[1];\n var parentsString = \"ctx_\" + (level - 1);\n for (var j = level - 2; j >= 1; j -= 1) {\n parentsString += \", ctx_\" + j;\n }\n parents = \"[\" + parentsString + \"]\";\n } else {\n parents = \"[\" + ctx + \"]\";\n }\n var dynamicHelper = (void 0);\n if (block.helperName.indexOf('[') === 0) {\n block.helperName = getCompileVar(block.helperName.replace(/[[\\]]/g, ''), ctx, data);\n dynamicHelper = true;\n }\n if (dynamicHelper || block.helperName in Template7Helpers) {\n compiledArguments = getCompiledArguments(block.contextName, ctx, data);\n resultString += \"r += (Template7Helpers\" + (dynamicHelper ? (\"[\" + (block.helperName) + \"]\") : (\".\" + (block.helperName))) + \").call(\" + ctx + \", \" + (compiledArguments && ((compiledArguments + \", \"))) + \"{hash:\" + (JSON.stringify(block.hash)) + \", data: \" + data + \" || {}, fn: \" + (getCompileFn(block, depth + 1)) + \", inverse: \" + (getCompileInverse(block, depth + 1)) + \", root: root, parents: \" + parents + \"});\";\n } else if (block.contextName.length > 0) {\n throw new Error((\"Template7: Missing helper: \\\"\" + (block.helperName) + \"\\\"\"));\n } else {\n variable = getCompileVar(block.helperName, ctx, data);\n resultString += \"if (\" + variable + \") {\";\n resultString += \"if (isArray(\" + variable + \")) {\";\n resultString += \"r += (Template7Helpers.each).call(\" + ctx + \", \" + variable + \", {hash:\" + (JSON.stringify(block.hash)) + \", data: \" + data + \" || {}, fn: \" + (getCompileFn(block, depth + 1)) + \", inverse: \" + (getCompileInverse(block, depth + 1)) + \", root: root, parents: \" + parents + \"});\";\n resultString += '}else {';\n resultString += \"r += (Template7Helpers.with).call(\" + ctx + \", \" + variable + \", {hash:\" + (JSON.stringify(block.hash)) + \", data: \" + data + \" || {}, fn: \" + (getCompileFn(block, depth + 1)) + \", inverse: \" + (getCompileInverse(block, depth + 1)) + \", root: root, parents: \" + parents + \"});\";\n resultString += '}}';\n }\n }\n }\n resultString += '\\nreturn r;})';\n\n if (depth === 1) {\n // eslint-disable-next-line\n t.compiled = eval(resultString);\n return t.compiled;\n }\n return resultString;\n };\n staticAccessors.options.get = function () {\n return Template7Options;\n };\n staticAccessors.partials.get = function () {\n return Template7Partials;\n };\n staticAccessors.helpers.get = function () {\n return Template7Helpers;\n };\n\n Object.defineProperties( Template7Class, staticAccessors );\n\n function Template7() {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var template = args[0];\n var data = args[1];\n if (args.length === 2) {\n var instance = new Template7Class(template);\n var rendered = instance.compile()(data);\n instance = null;\n return (rendered);\n }\n return new Template7Class(template);\n }\n Template7.registerHelper = function registerHelper(name, fn) {\n Template7Class.helpers[name] = fn;\n };\n Template7.unregisterHelper = function unregisterHelper(name) {\n Template7Class.helpers[name] = undefined;\n delete Template7Class.helpers[name];\n };\n Template7.registerPartial = function registerPartial(name, template) {\n Template7Class.partials[name] = { template: template };\n };\n Template7.unregisterPartial = function unregisterPartial(name) {\n if (Template7Class.partials[name]) {\n Template7Class.partials[name] = undefined;\n delete Template7Class.partials[name];\n }\n };\n Template7.compile = function compile(template, options) {\n var instance = new Template7Class(template, options);\n return instance.compile();\n };\n\n Template7.options = Template7Class.options;\n Template7.helpers = Template7Class.helpers;\n Template7.partials = Template7Class.partials;\n\n /**\n * SSR Window 1.0.1\n * Better handling for window object in SSR environment\n * https://github.com/nolimits4web/ssr-window\n *\n * Copyright 2018, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: July 18, 2018\n */\n var doc = (typeof document === 'undefined') ? {\n body: {},\n addEventListener: function addEventListener() {},\n removeEventListener: function removeEventListener() {},\n activeElement: {\n blur: function blur() {},\n nodeName: '',\n },\n querySelector: function querySelector() {\n return null;\n },\n querySelectorAll: function querySelectorAll() {\n return [];\n },\n getElementById: function getElementById() {\n return null;\n },\n createEvent: function createEvent() {\n return {\n initEvent: function initEvent() {},\n };\n },\n createElement: function createElement() {\n return {\n children: [],\n childNodes: [],\n style: {},\n setAttribute: function setAttribute() {},\n getElementsByTagName: function getElementsByTagName() {\n return [];\n },\n };\n },\n location: { hash: '' },\n } : document; // eslint-disable-line\n\n var win = (typeof window === 'undefined') ? {\n document: doc,\n navigator: {\n userAgent: '',\n },\n location: {},\n history: {},\n CustomEvent: function CustomEvent() {\n return this;\n },\n addEventListener: function addEventListener() {},\n removeEventListener: function removeEventListener() {},\n getComputedStyle: function getComputedStyle() {\n return {\n getPropertyValue: function getPropertyValue() {\n return '';\n },\n };\n },\n Image: function Image() {},\n Date: function Date() {},\n screen: {},\n setTimeout: function setTimeout() {},\n clearTimeout: function clearTimeout() {},\n } : window; // eslint-disable-line\n\n /**\n * Dom7 2.0.7\n * Minimalistic JavaScript library for DOM manipulation, with a jQuery-compatible API\n * http://framework7.io/docs/dom.html\n *\n * Copyright 2018, Vladimir Kharlampidi\n * The iDangero.us\n * http://www.idangero.us/\n *\n * Licensed under MIT\n *\n * Released on: June 14, 2018\n */\n\n var Dom7 = function Dom7(arr) {\n var self = this;\n // Create array-like object\n for (var i = 0; i < arr.length; i += 1) {\n self[i] = arr[i];\n }\n self.length = arr.length;\n // Return collection with methods\n return this;\n };\n\n function $$1(selector, context) {\n var arr = [];\n var i = 0;\n if (selector && !context) {\n if (selector instanceof Dom7) {\n return selector;\n }\n }\n if (selector) {\n // String\n if (typeof selector === 'string') {\n var els;\n var tempParent;\n var html = selector.trim();\n if (html.indexOf('<') >= 0 && html.indexOf('>') >= 0) {\n var toCreate = 'div';\n if (html.indexOf('
:~]/)) {\n // Pure ID selector\n els = [doc.getElementById(selector.trim().split('#')[1])];\n } else {\n // Other selectors\n els = (context || doc).querySelectorAll(selector.trim());\n }\n for (i = 0; i < els.length; i += 1) {\n if (els[i]) { arr.push(els[i]); }\n }\n }\n } else if (selector.nodeType || selector === win || selector === doc) {\n // Node/element\n arr.push(selector);\n } else if (selector.length > 0 && selector[0].nodeType) {\n // Array of elements or instance of Dom\n for (i = 0; i < selector.length; i += 1) {\n arr.push(selector[i]);\n }\n }\n }\n return new Dom7(arr);\n }\n\n $$1.fn = Dom7.prototype;\n $$1.Class = Dom7;\n $$1.Dom7 = Dom7;\n\n function unique(arr) {\n var uniqueArray = [];\n for (var i = 0; i < arr.length; i += 1) {\n if (uniqueArray.indexOf(arr[i]) === -1) { uniqueArray.push(arr[i]); }\n }\n return uniqueArray;\n }\n function toCamelCase(string) {\n return string.toLowerCase().replace(/-(.)/g, function (match, group1) { return group1.toUpperCase(); });\n }\n\n function requestAnimationFrame(callback) {\n if (win.requestAnimationFrame) { return win.requestAnimationFrame(callback); }\n else if (win.webkitRequestAnimationFrame) { return win.webkitRequestAnimationFrame(callback); }\n return win.setTimeout(callback, 1000 / 60);\n }\n function cancelAnimationFrame(id) {\n if (win.cancelAnimationFrame) { return win.cancelAnimationFrame(id); }\n else if (win.webkitCancelAnimationFrame) { return win.webkitCancelAnimationFrame(id); }\n return win.clearTimeout(id);\n }\n\n // Classes and attributes\n function addClass(className) {\n var this$1 = this;\n\n if (typeof className === 'undefined') {\n return this;\n }\n var classes = className.split(' ');\n for (var i = 0; i < classes.length; i += 1) {\n for (var j = 0; j < this.length; j += 1) {\n if (typeof this$1[j] !== 'undefined' && typeof this$1[j].classList !== 'undefined') { this$1[j].classList.add(classes[i]); }\n }\n }\n return this;\n }\n function removeClass(className) {\n var this$1 = this;\n\n var classes = className.split(' ');\n for (var i = 0; i < classes.length; i += 1) {\n for (var j = 0; j < this.length; j += 1) {\n if (typeof this$1[j] !== 'undefined' && typeof this$1[j].classList !== 'undefined') { this$1[j].classList.remove(classes[i]); }\n }\n }\n return this;\n }\n function hasClass(className) {\n if (!this[0]) { return false; }\n return this[0].classList.contains(className);\n }\n function toggleClass(className) {\n var this$1 = this;\n\n var classes = className.split(' ');\n for (var i = 0; i < classes.length; i += 1) {\n for (var j = 0; j < this.length; j += 1) {\n if (typeof this$1[j] !== 'undefined' && typeof this$1[j].classList !== 'undefined') { this$1[j].classList.toggle(classes[i]); }\n }\n }\n return this;\n }\n function attr(attrs, value) {\n var arguments$1 = arguments;\n var this$1 = this;\n\n if (arguments.length === 1 && typeof attrs === 'string') {\n // Get attr\n if (this[0]) { return this[0].getAttribute(attrs); }\n return undefined;\n }\n\n // Set attrs\n for (var i = 0; i < this.length; i += 1) {\n if (arguments$1.length === 2) {\n // String\n this$1[i].setAttribute(attrs, value);\n } else {\n // Object\n // eslint-disable-next-line\n for (var attrName in attrs) {\n this$1[i][attrName] = attrs[attrName];\n this$1[i].setAttribute(attrName, attrs[attrName]);\n }\n }\n }\n return this;\n }\n // eslint-disable-next-line\n function removeAttr(attr) {\n var this$1 = this;\n\n for (var i = 0; i < this.length; i += 1) {\n this$1[i].removeAttribute(attr);\n }\n return this;\n }\n // eslint-disable-next-line\n function prop(props, value) {\n var arguments$1 = arguments;\n var this$1 = this;\n\n if (arguments.length === 1 && typeof props === 'string') {\n // Get prop\n if (this[0]) { return this[0][props]; }\n } else {\n // Set props\n for (var i = 0; i < this.length; i += 1) {\n if (arguments$1.length === 2) {\n // String\n this$1[i][props] = value;\n } else {\n // Object\n // eslint-disable-next-line\n for (var propName in props) {\n this$1[i][propName] = props[propName];\n }\n }\n }\n return this;\n }\n }\n function data(key, value) {\n var this$1 = this;\n\n var el;\n if (typeof value === 'undefined') {\n el = this[0];\n // Get value\n if (el) {\n if (el.dom7ElementDataStorage && (key in el.dom7ElementDataStorage)) {\n return el.dom7ElementDataStorage[key];\n }\n\n var dataKey = el.getAttribute((\"data-\" + key));\n if (dataKey) {\n return dataKey;\n }\n return undefined;\n }\n return undefined;\n }\n\n // Set value\n for (var i = 0; i < this.length; i += 1) {\n el = this$1[i];\n if (!el.dom7ElementDataStorage) { el.dom7ElementDataStorage = {}; }\n el.dom7ElementDataStorage[key] = value;\n }\n return this;\n }\n function removeData(key) {\n var this$1 = this;\n\n for (var i = 0; i < this.length; i += 1) {\n var el = this$1[i];\n if (el.dom7ElementDataStorage && el.dom7ElementDataStorage[key]) {\n el.dom7ElementDataStorage[key] = null;\n delete el.dom7ElementDataStorage[key];\n }\n }\n }\n function dataset() {\n var el = this[0];\n if (!el) { return undefined; }\n var dataset = {}; // eslint-disable-line\n if (el.dataset) {\n // eslint-disable-next-line\n for (var dataKey in el.dataset) {\n dataset[dataKey] = el.dataset[dataKey];\n }\n } else {\n for (var i = 0; i < el.attributes.length; i += 1) {\n // eslint-disable-next-line\n var attr = el.attributes[i];\n if (attr.name.indexOf('data-') >= 0) {\n dataset[toCamelCase(attr.name.split('data-')[1])] = attr.value;\n }\n }\n }\n // eslint-disable-next-line\n for (var key in dataset) {\n if (dataset[key] === 'false') { dataset[key] = false; }\n else if (dataset[key] === 'true') { dataset[key] = true; }\n else if (parseFloat(dataset[key]) === dataset[key] * 1) { dataset[key] *= 1; }\n }\n return dataset;\n }\n function val(value) {\n var dom = this;\n if (typeof value === 'undefined') {\n if (dom[0]) {\n if (dom[0].multiple && dom[0].nodeName.toLowerCase() === 'select') {\n var values = [];\n for (var i = 0; i < dom[0].selectedOptions.length; i += 1) {\n values.push(dom[0].selectedOptions[i].value);\n }\n return values;\n }\n return dom[0].value;\n }\n return undefined;\n }\n\n for (var i$1 = 0; i$1 < dom.length; i$1 += 1) {\n var el = dom[i$1];\n if (Array.isArray(value) && el.multiple && el.nodeName.toLowerCase() === 'select') {\n for (var j = 0; j < el.options.length; j += 1) {\n el.options[j].selected = value.indexOf(el.options[j].value) >= 0;\n }\n } else {\n el.value = value;\n }\n }\n return dom;\n }\n // Transforms\n // eslint-disable-next-line\n function transform(transform) {\n var this$1 = this;\n\n for (var i = 0; i < this.length; i += 1) {\n var elStyle = this$1[i].style;\n elStyle.webkitTransform = transform;\n elStyle.transform = transform;\n }\n return this;\n }\n function transition(duration) {\n var this$1 = this;\n\n if (typeof duration !== 'string') {\n duration = duration + \"ms\"; // eslint-disable-line\n }\n for (var i = 0; i < this.length; i += 1) {\n var elStyle = this$1[i].style;\n elStyle.webkitTransitionDuration = duration;\n elStyle.transitionDuration = duration;\n }\n return this;\n }\n // Events\n function on() {\n var this$1 = this;\n var assign;\n\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n var eventType = args[0];\n var targetSelector = args[1];\n var listener = args[2];\n var capture = args[3];\n if (typeof args[1] === 'function') {\n (assign = args, eventType = assign[0], listener = assign[1], capture = assign[2]);\n targetSelector = undefined;\n }\n if (!capture) { capture = false; }\n\n function handleLiveEvent(e) {\n var target = e.target;\n if (!target) { return; }\n var eventData = e.target.dom7EventData || [];\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n if ($$1(target).is(targetSelector)) { listener.apply(target, eventData); }\n else {\n var parents = $$1(target).parents(); // eslint-disable-line\n for (var k = 0; k < parents.length; k += 1) {\n if ($$1(parents[k]).is(targetSelector)) { listener.apply(parents[k], eventData); }\n }\n }\n }\n function handleEvent(e) {\n var eventData = e && e.target ? e.target.dom7EventData || [] : [];\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n listener.apply(this, eventData);\n }\n var events = eventType.split(' ');\n var j;\n for (var i = 0; i < this.length; i += 1) {\n var el = this$1[i];\n if (!targetSelector) {\n for (j = 0; j < events.length; j += 1) {\n var event = events[j];\n if (!el.dom7Listeners) { el.dom7Listeners = {}; }\n if (!el.dom7Listeners[event]) { el.dom7Listeners[event] = []; }\n el.dom7Listeners[event].push({\n listener: listener,\n proxyListener: handleEvent,\n });\n el.addEventListener(event, handleEvent, capture);\n }\n } else {\n // Live events\n for (j = 0; j < events.length; j += 1) {\n var event$1 = events[j];\n if (!el.dom7LiveListeners) { el.dom7LiveListeners = {}; }\n if (!el.dom7LiveListeners[event$1]) { el.dom7LiveListeners[event$1] = []; }\n el.dom7LiveListeners[event$1].push({\n listener: listener,\n proxyListener: handleLiveEvent,\n });\n el.addEventListener(event$1, handleLiveEvent, capture);\n }\n }\n }\n return this;\n }\n function off() {\n var this$1 = this;\n var assign;\n\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n var eventType = args[0];\n var targetSelector = args[1];\n var listener = args[2];\n var capture = args[3];\n if (typeof args[1] === 'function') {\n (assign = args, eventType = assign[0], listener = assign[1], capture = assign[2]);\n targetSelector = undefined;\n }\n if (!capture) { capture = false; }\n\n var events = eventType.split(' ');\n for (var i = 0; i < events.length; i += 1) {\n var event = events[i];\n for (var j = 0; j < this.length; j += 1) {\n var el = this$1[j];\n var handlers = (void 0);\n if (!targetSelector && el.dom7Listeners) {\n handlers = el.dom7Listeners[event];\n } else if (targetSelector && el.dom7LiveListeners) {\n handlers = el.dom7LiveListeners[event];\n }\n if (handlers && handlers.length) {\n for (var k = handlers.length - 1; k >= 0; k -= 1) {\n var handler = handlers[k];\n if (listener && handler.listener === listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n } else if (!listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n }\n }\n }\n }\n }\n return this;\n }\n function once() {\n var assign;\n\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n var dom = this;\n var eventName = args[0];\n var targetSelector = args[1];\n var listener = args[2];\n var capture = args[3];\n if (typeof args[1] === 'function') {\n (assign = args, eventName = assign[0], listener = assign[1], capture = assign[2]);\n targetSelector = undefined;\n }\n function proxy() {\n var eventArgs = [], len = arguments.length;\n while ( len-- ) eventArgs[ len ] = arguments[ len ];\n\n listener.apply(this, eventArgs);\n dom.off(eventName, targetSelector, proxy, capture);\n }\n return dom.on(eventName, targetSelector, proxy, capture);\n }\n function trigger() {\n var this$1 = this;\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var events = args[0].split(' ');\n var eventData = args[1];\n for (var i = 0; i < events.length; i += 1) {\n var event = events[i];\n for (var j = 0; j < this.length; j += 1) {\n var el = this$1[j];\n var evt = (void 0);\n try {\n evt = new win.CustomEvent(event, {\n detail: eventData,\n bubbles: true,\n cancelable: true,\n });\n } catch (e) {\n evt = doc.createEvent('Event');\n evt.initEvent(event, true, true);\n evt.detail = eventData;\n }\n // eslint-disable-next-line\n el.dom7EventData = args.filter(function (data, dataIndex) { return dataIndex > 0; });\n el.dispatchEvent(evt);\n el.dom7EventData = [];\n delete el.dom7EventData;\n }\n }\n return this;\n }\n function transitionEnd(callback) {\n var events = ['webkitTransitionEnd', 'transitionend'];\n var dom = this;\n var i;\n function fireCallBack(e) {\n /* jshint validthis:true */\n if (e.target !== this) { return; }\n callback.call(this, e);\n for (i = 0; i < events.length; i += 1) {\n dom.off(events[i], fireCallBack);\n }\n }\n if (callback) {\n for (i = 0; i < events.length; i += 1) {\n dom.on(events[i], fireCallBack);\n }\n }\n return this;\n }\n function animationEnd(callback) {\n var events = ['webkitAnimationEnd', 'animationend'];\n var dom = this;\n var i;\n function fireCallBack(e) {\n if (e.target !== this) { return; }\n callback.call(this, e);\n for (i = 0; i < events.length; i += 1) {\n dom.off(events[i], fireCallBack);\n }\n }\n if (callback) {\n for (i = 0; i < events.length; i += 1) {\n dom.on(events[i], fireCallBack);\n }\n }\n return this;\n }\n // Sizing/Styles\n function width() {\n if (this[0] === win) {\n return win.innerWidth;\n }\n\n if (this.length > 0) {\n return parseFloat(this.css('width'));\n }\n\n return null;\n }\n function outerWidth(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n // eslint-disable-next-line\n var styles = this.styles();\n return this[0].offsetWidth + parseFloat(styles.getPropertyValue('margin-right')) + parseFloat(styles.getPropertyValue('margin-left'));\n }\n return this[0].offsetWidth;\n }\n return null;\n }\n function height() {\n if (this[0] === win) {\n return win.innerHeight;\n }\n\n if (this.length > 0) {\n return parseFloat(this.css('height'));\n }\n\n return null;\n }\n function outerHeight(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n // eslint-disable-next-line\n var styles = this.styles();\n return this[0].offsetHeight + parseFloat(styles.getPropertyValue('margin-top')) + parseFloat(styles.getPropertyValue('margin-bottom'));\n }\n return this[0].offsetHeight;\n }\n return null;\n }\n function offset() {\n if (this.length > 0) {\n var el = this[0];\n var box = el.getBoundingClientRect();\n var body = doc.body;\n var clientTop = el.clientTop || body.clientTop || 0;\n var clientLeft = el.clientLeft || body.clientLeft || 0;\n var scrollTop = el === win ? win.scrollY : el.scrollTop;\n var scrollLeft = el === win ? win.scrollX : el.scrollLeft;\n return {\n top: (box.top + scrollTop) - clientTop,\n left: (box.left + scrollLeft) - clientLeft,\n };\n }\n\n return null;\n }\n function hide() {\n var this$1 = this;\n\n for (var i = 0; i < this.length; i += 1) {\n this$1[i].style.display = 'none';\n }\n return this;\n }\n function show() {\n var this$1 = this;\n\n for (var i = 0; i < this.length; i += 1) {\n var el = this$1[i];\n if (el.style.display === 'none') {\n el.style.display = '';\n }\n if (win.getComputedStyle(el, null).getPropertyValue('display') === 'none') {\n // Still not visible\n el.style.display = 'block';\n }\n }\n return this;\n }\n function styles() {\n if (this[0]) { return win.getComputedStyle(this[0], null); }\n return {};\n }\n function css(props, value) {\n var this$1 = this;\n\n var i;\n if (arguments.length === 1) {\n if (typeof props === 'string') {\n if (this[0]) { return win.getComputedStyle(this[0], null).getPropertyValue(props); }\n } else {\n for (i = 0; i < this.length; i += 1) {\n // eslint-disable-next-line\n for (var prop in props) {\n this$1[i].style[prop] = props[prop];\n }\n }\n return this;\n }\n }\n if (arguments.length === 2 && typeof props === 'string') {\n for (i = 0; i < this.length; i += 1) {\n this$1[i].style[props] = value;\n }\n return this;\n }\n return this;\n }\n\n // Dom manipulation\n function toArray() {\n var this$1 = this;\n\n var arr = [];\n for (var i = 0; i < this.length; i += 1) {\n arr.push(this$1[i]);\n }\n return arr;\n }\n // Iterate over the collection passing elements to `callback`\n function each(callback) {\n var this$1 = this;\n\n // Don't bother continuing without a callback\n if (!callback) { return this; }\n // Iterate over the current collection\n for (var i = 0; i < this.length; i += 1) {\n // If the callback returns false\n if (callback.call(this$1[i], i, this$1[i]) === false) {\n // End the loop early\n return this$1;\n }\n }\n // Return `this` to allow chained DOM operations\n return this;\n }\n function forEach(callback) {\n var this$1 = this;\n\n // Don't bother continuing without a callback\n if (!callback) { return this; }\n // Iterate over the current collection\n for (var i = 0; i < this.length; i += 1) {\n // If the callback returns false\n if (callback.call(this$1[i], this$1[i], i) === false) {\n // End the loop early\n return this$1;\n }\n }\n // Return `this` to allow chained DOM operations\n return this;\n }\n function filter(callback) {\n var matchedItems = [];\n var dom = this;\n for (var i = 0; i < dom.length; i += 1) {\n if (callback.call(dom[i], i, dom[i])) { matchedItems.push(dom[i]); }\n }\n return new Dom7(matchedItems);\n }\n function map(callback) {\n var modifiedItems = [];\n var dom = this;\n for (var i = 0; i < dom.length; i += 1) {\n modifiedItems.push(callback.call(dom[i], i, dom[i]));\n }\n return new Dom7(modifiedItems);\n }\n // eslint-disable-next-line\n function html(html) {\n var this$1 = this;\n\n if (typeof html === 'undefined') {\n return this[0] ? this[0].innerHTML : undefined;\n }\n\n for (var i = 0; i < this.length; i += 1) {\n this$1[i].innerHTML = html;\n }\n return this;\n }\n // eslint-disable-next-line\n function text(text) {\n var this$1 = this;\n\n if (typeof text === 'undefined') {\n if (this[0]) {\n return this[0].textContent.trim();\n }\n return null;\n }\n\n for (var i = 0; i < this.length; i += 1) {\n this$1[i].textContent = text;\n }\n return this;\n }\n function is(selector) {\n var el = this[0];\n var compareWith;\n var i;\n if (!el || typeof selector === 'undefined') { return false; }\n if (typeof selector === 'string') {\n if (el.matches) { return el.matches(selector); }\n else if (el.webkitMatchesSelector) { return el.webkitMatchesSelector(selector); }\n else if (el.msMatchesSelector) { return el.msMatchesSelector(selector); }\n\n compareWith = $$1(selector);\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) { return true; }\n }\n return false;\n } else if (selector === doc) { return el === doc; }\n else if (selector === win) { return el === win; }\n\n if (selector.nodeType || selector instanceof Dom7) {\n compareWith = selector.nodeType ? [selector] : selector;\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) { return true; }\n }\n return false;\n }\n return false;\n }\n function indexOf(el) {\n var this$1 = this;\n\n for (var i = 0; i < this.length; i += 1) {\n if (this$1[i] === el) { return i; }\n }\n return -1;\n }\n function index() {\n var child = this[0];\n var i;\n if (child) {\n i = 0;\n // eslint-disable-next-line\n while ((child = child.previousSibling) !== null) {\n if (child.nodeType === 1) { i += 1; }\n }\n return i;\n }\n return undefined;\n }\n // eslint-disable-next-line\n function eq(index) {\n if (typeof index === 'undefined') { return this; }\n var length = this.length;\n var returnIndex;\n if (index > length - 1) {\n return new Dom7([]);\n }\n if (index < 0) {\n returnIndex = length + index;\n if (returnIndex < 0) { return new Dom7([]); }\n return new Dom7([this[returnIndex]]);\n }\n return new Dom7([this[index]]);\n }\n function append() {\n var this$1 = this;\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var newChild;\n\n for (var k = 0; k < args.length; k += 1) {\n newChild = args[k];\n for (var i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n var tempDiv = doc.createElement('div');\n tempDiv.innerHTML = newChild;\n while (tempDiv.firstChild) {\n this$1[i].appendChild(tempDiv.firstChild);\n }\n } else if (newChild instanceof Dom7) {\n for (var j = 0; j < newChild.length; j += 1) {\n this$1[i].appendChild(newChild[j]);\n }\n } else {\n this$1[i].appendChild(newChild);\n }\n }\n }\n\n return this;\n }\n // eslint-disable-next-line\n function appendTo(parent) {\n $$1(parent).append(this);\n return this;\n }\n function prepend(newChild) {\n var this$1 = this;\n\n var i;\n var j;\n for (i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n var tempDiv = doc.createElement('div');\n tempDiv.innerHTML = newChild;\n for (j = tempDiv.childNodes.length - 1; j >= 0; j -= 1) {\n this$1[i].insertBefore(tempDiv.childNodes[j], this$1[i].childNodes[0]);\n }\n } else if (newChild instanceof Dom7) {\n for (j = 0; j < newChild.length; j += 1) {\n this$1[i].insertBefore(newChild[j], this$1[i].childNodes[0]);\n }\n } else {\n this$1[i].insertBefore(newChild, this$1[i].childNodes[0]);\n }\n }\n return this;\n }\n // eslint-disable-next-line\n function prependTo(parent) {\n $$1(parent).prepend(this);\n return this;\n }\n function insertBefore(selector) {\n var this$1 = this;\n\n var before = $$1(selector);\n for (var i = 0; i < this.length; i += 1) {\n if (before.length === 1) {\n before[0].parentNode.insertBefore(this$1[i], before[0]);\n } else if (before.length > 1) {\n for (var j = 0; j < before.length; j += 1) {\n before[j].parentNode.insertBefore(this$1[i].cloneNode(true), before[j]);\n }\n }\n }\n }\n function insertAfter(selector) {\n var this$1 = this;\n\n var after = $$1(selector);\n for (var i = 0; i < this.length; i += 1) {\n if (after.length === 1) {\n after[0].parentNode.insertBefore(this$1[i], after[0].nextSibling);\n } else if (after.length > 1) {\n for (var j = 0; j < after.length; j += 1) {\n after[j].parentNode.insertBefore(this$1[i].cloneNode(true), after[j].nextSibling);\n }\n }\n }\n }\n function next(selector) {\n if (this.length > 0) {\n if (selector) {\n if (this[0].nextElementSibling && $$1(this[0].nextElementSibling).is(selector)) {\n return new Dom7([this[0].nextElementSibling]);\n }\n return new Dom7([]);\n }\n\n if (this[0].nextElementSibling) { return new Dom7([this[0].nextElementSibling]); }\n return new Dom7([]);\n }\n return new Dom7([]);\n }\n function nextAll(selector) {\n var nextEls = [];\n var el = this[0];\n if (!el) { return new Dom7([]); }\n while (el.nextElementSibling) {\n var next = el.nextElementSibling; // eslint-disable-line\n if (selector) {\n if ($$1(next).is(selector)) { nextEls.push(next); }\n } else { nextEls.push(next); }\n el = next;\n }\n return new Dom7(nextEls);\n }\n function prev(selector) {\n if (this.length > 0) {\n var el = this[0];\n if (selector) {\n if (el.previousElementSibling && $$1(el.previousElementSibling).is(selector)) {\n return new Dom7([el.previousElementSibling]);\n }\n return new Dom7([]);\n }\n\n if (el.previousElementSibling) { return new Dom7([el.previousElementSibling]); }\n return new Dom7([]);\n }\n return new Dom7([]);\n }\n function prevAll(selector) {\n var prevEls = [];\n var el = this[0];\n if (!el) { return new Dom7([]); }\n while (el.previousElementSibling) {\n var prev = el.previousElementSibling; // eslint-disable-line\n if (selector) {\n if ($$1(prev).is(selector)) { prevEls.push(prev); }\n } else { prevEls.push(prev); }\n el = prev;\n }\n return new Dom7(prevEls);\n }\n function siblings(selector) {\n return this.nextAll(selector).add(this.prevAll(selector));\n }\n function parent(selector) {\n var this$1 = this;\n\n var parents = []; // eslint-disable-line\n for (var i = 0; i < this.length; i += 1) {\n if (this$1[i].parentNode !== null) {\n if (selector) {\n if ($$1(this$1[i].parentNode).is(selector)) { parents.push(this$1[i].parentNode); }\n } else {\n parents.push(this$1[i].parentNode);\n }\n }\n }\n return $$1(unique(parents));\n }\n function parents(selector) {\n var this$1 = this;\n\n var parents = []; // eslint-disable-line\n for (var i = 0; i < this.length; i += 1) {\n var parent = this$1[i].parentNode; // eslint-disable-line\n while (parent) {\n if (selector) {\n if ($$1(parent).is(selector)) { parents.push(parent); }\n } else {\n parents.push(parent);\n }\n parent = parent.parentNode;\n }\n }\n return $$1(unique(parents));\n }\n function closest(selector) {\n var closest = this; // eslint-disable-line\n if (typeof selector === 'undefined') {\n return new Dom7([]);\n }\n if (!closest.is(selector)) {\n closest = closest.parents(selector).eq(0);\n }\n return closest;\n }\n function find(selector) {\n var this$1 = this;\n\n var foundElements = [];\n for (var i = 0; i < this.length; i += 1) {\n var found = this$1[i].querySelectorAll(selector);\n for (var j = 0; j < found.length; j += 1) {\n foundElements.push(found[j]);\n }\n }\n return new Dom7(foundElements);\n }\n function children(selector) {\n var this$1 = this;\n\n var children = []; // eslint-disable-line\n for (var i = 0; i < this.length; i += 1) {\n var childNodes = this$1[i].childNodes;\n\n for (var j = 0; j < childNodes.length; j += 1) {\n if (!selector) {\n if (childNodes[j].nodeType === 1) { children.push(childNodes[j]); }\n } else if (childNodes[j].nodeType === 1 && $$1(childNodes[j]).is(selector)) {\n children.push(childNodes[j]);\n }\n }\n }\n return new Dom7(unique(children));\n }\n function remove() {\n var this$1 = this;\n\n for (var i = 0; i < this.length; i += 1) {\n if (this$1[i].parentNode) { this$1[i].parentNode.removeChild(this$1[i]); }\n }\n return this;\n }\n function detach() {\n return this.remove();\n }\n function add() {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var dom = this;\n var i;\n var j;\n for (i = 0; i < args.length; i += 1) {\n var toAdd = $$1(args[i]);\n for (j = 0; j < toAdd.length; j += 1) {\n dom[dom.length] = toAdd[j];\n dom.length += 1;\n }\n }\n return dom;\n }\n function empty() {\n var this$1 = this;\n\n for (var i = 0; i < this.length; i += 1) {\n var el = this$1[i];\n if (el.nodeType === 1) {\n for (var j = 0; j < el.childNodes.length; j += 1) {\n if (el.childNodes[j].parentNode) {\n el.childNodes[j].parentNode.removeChild(el.childNodes[j]);\n }\n }\n el.textContent = '';\n }\n }\n return this;\n }\n\n\n\n\n var Methods = Object.freeze({\n \taddClass: addClass,\n \tremoveClass: removeClass,\n \thasClass: hasClass,\n \ttoggleClass: toggleClass,\n \tattr: attr,\n \tremoveAttr: removeAttr,\n \tprop: prop,\n \tdata: data,\n \tremoveData: removeData,\n \tdataset: dataset,\n \tval: val,\n \ttransform: transform,\n \ttransition: transition,\n \ton: on,\n \toff: off,\n \tonce: once,\n \ttrigger: trigger,\n \ttransitionEnd: transitionEnd,\n \tanimationEnd: animationEnd,\n \twidth: width,\n \touterWidth: outerWidth,\n \theight: height,\n \touterHeight: outerHeight,\n \toffset: offset,\n \thide: hide,\n \tshow: show,\n \tstyles: styles,\n \tcss: css,\n \ttoArray: toArray,\n \teach: each,\n \tforEach: forEach,\n \tfilter: filter,\n \tmap: map,\n \thtml: html,\n \ttext: text,\n \tis: is,\n \tindexOf: indexOf,\n \tindex: index,\n \teq: eq,\n \tappend: append,\n \tappendTo: appendTo,\n \tprepend: prepend,\n \tprependTo: prependTo,\n \tinsertBefore: insertBefore,\n \tinsertAfter: insertAfter,\n \tnext: next,\n \tnextAll: nextAll,\n \tprev: prev,\n \tprevAll: prevAll,\n \tsiblings: siblings,\n \tparent: parent,\n \tparents: parents,\n \tclosest: closest,\n \tfind: find,\n \tchildren: children,\n \tremove: remove,\n \tdetach: detach,\n \tadd: add,\n \tempty: empty\n });\n\n function scrollTo() {\n var assign;\n\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n var left = args[0];\n var top = args[1];\n var duration = args[2];\n var easing = args[3];\n var callback = args[4];\n if (args.length === 4 && typeof easing === 'function') {\n callback = easing;\n (assign = args, left = assign[0], top = assign[1], duration = assign[2], callback = assign[3], easing = assign[4]);\n }\n if (typeof easing === 'undefined') { easing = 'swing'; }\n\n return this.each(function animate() {\n var el = this;\n var currentTop;\n var currentLeft;\n var maxTop;\n var maxLeft;\n var newTop;\n var newLeft;\n var scrollTop; // eslint-disable-line\n var scrollLeft; // eslint-disable-line\n var animateTop = top > 0 || top === 0;\n var animateLeft = left > 0 || left === 0;\n if (typeof easing === 'undefined') {\n easing = 'swing';\n }\n if (animateTop) {\n currentTop = el.scrollTop;\n if (!duration) {\n el.scrollTop = top;\n }\n }\n if (animateLeft) {\n currentLeft = el.scrollLeft;\n if (!duration) {\n el.scrollLeft = left;\n }\n }\n if (!duration) { return; }\n if (animateTop) {\n maxTop = el.scrollHeight - el.offsetHeight;\n newTop = Math.max(Math.min(top, maxTop), 0);\n }\n if (animateLeft) {\n maxLeft = el.scrollWidth - el.offsetWidth;\n newLeft = Math.max(Math.min(left, maxLeft), 0);\n }\n var startTime = null;\n if (animateTop && newTop === currentTop) { animateTop = false; }\n if (animateLeft && newLeft === currentLeft) { animateLeft = false; }\n function render(time) {\n if ( time === void 0 ) time = new Date().getTime();\n\n if (startTime === null) {\n startTime = time;\n }\n var progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n var easeProgress = easing === 'linear' ? progress : (0.5 - (Math.cos(progress * Math.PI) / 2));\n var done;\n if (animateTop) { scrollTop = currentTop + (easeProgress * (newTop - currentTop)); }\n if (animateLeft) { scrollLeft = currentLeft + (easeProgress * (newLeft - currentLeft)); }\n if (animateTop && newTop > currentTop && scrollTop >= newTop) {\n el.scrollTop = newTop;\n done = true;\n }\n if (animateTop && newTop < currentTop && scrollTop <= newTop) {\n el.scrollTop = newTop;\n done = true;\n }\n if (animateLeft && newLeft > currentLeft && scrollLeft >= newLeft) {\n el.scrollLeft = newLeft;\n done = true;\n }\n if (animateLeft && newLeft < currentLeft && scrollLeft <= newLeft) {\n el.scrollLeft = newLeft;\n done = true;\n }\n\n if (done) {\n if (callback) { callback(); }\n return;\n }\n if (animateTop) { el.scrollTop = scrollTop; }\n if (animateLeft) { el.scrollLeft = scrollLeft; }\n requestAnimationFrame(render);\n }\n requestAnimationFrame(render);\n });\n }\n // scrollTop(top, duration, easing, callback) {\n function scrollTop() {\n var assign;\n\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n var top = args[0];\n var duration = args[1];\n var easing = args[2];\n var callback = args[3];\n if (args.length === 3 && typeof easing === 'function') {\n (assign = args, top = assign[0], duration = assign[1], callback = assign[2], easing = assign[3]);\n }\n var dom = this;\n if (typeof top === 'undefined') {\n if (dom.length > 0) { return dom[0].scrollTop; }\n return null;\n }\n return dom.scrollTo(undefined, top, duration, easing, callback);\n }\n function scrollLeft() {\n var assign;\n\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n var left = args[0];\n var duration = args[1];\n var easing = args[2];\n var callback = args[3];\n if (args.length === 3 && typeof easing === 'function') {\n (assign = args, left = assign[0], duration = assign[1], callback = assign[2], easing = assign[3]);\n }\n var dom = this;\n if (typeof left === 'undefined') {\n if (dom.length > 0) { return dom[0].scrollLeft; }\n return null;\n }\n return dom.scrollTo(left, undefined, duration, easing, callback);\n }\n\n\n\n\n var Scroll = Object.freeze({\n \tscrollTo: scrollTo,\n \tscrollTop: scrollTop,\n \tscrollLeft: scrollLeft\n });\n\n function animate(initialProps, initialParams) {\n var els = this;\n var a = {\n props: Object.assign({}, initialProps),\n params: Object.assign({\n duration: 300,\n easing: 'swing', // or 'linear'\n /* Callbacks\n begin(elements)\n complete(elements)\n progress(elements, complete, remaining, start, tweenValue)\n */\n }, initialParams),\n\n elements: els,\n animating: false,\n que: [],\n\n easingProgress: function easingProgress(easing, progress) {\n if (easing === 'swing') {\n return 0.5 - (Math.cos(progress * Math.PI) / 2);\n }\n if (typeof easing === 'function') {\n return easing(progress);\n }\n return progress;\n },\n stop: function stop() {\n if (a.frameId) {\n cancelAnimationFrame(a.frameId);\n }\n a.animating = false;\n a.elements.each(function (index, el) {\n var element = el;\n delete element.dom7AnimateInstance;\n });\n a.que = [];\n },\n done: function done(complete) {\n a.animating = false;\n a.elements.each(function (index, el) {\n var element = el;\n delete element.dom7AnimateInstance;\n });\n if (complete) { complete(els); }\n if (a.que.length > 0) {\n var que = a.que.shift();\n a.animate(que[0], que[1]);\n }\n },\n animate: function animate(props, params) {\n if (a.animating) {\n a.que.push([props, params]);\n return a;\n }\n var elements = [];\n\n // Define & Cache Initials & Units\n a.elements.each(function (index, el) {\n var initialFullValue;\n var initialValue;\n var unit;\n var finalValue;\n var finalFullValue;\n\n if (!el.dom7AnimateInstance) { a.elements[index].dom7AnimateInstance = a; }\n\n elements[index] = {\n container: el,\n };\n Object.keys(props).forEach(function (prop) {\n initialFullValue = win.getComputedStyle(el, null).getPropertyValue(prop).replace(',', '.');\n initialValue = parseFloat(initialFullValue);\n unit = initialFullValue.replace(initialValue, '');\n finalValue = parseFloat(props[prop]);\n finalFullValue = props[prop] + unit;\n elements[index][prop] = {\n initialFullValue: initialFullValue,\n initialValue: initialValue,\n unit: unit,\n finalValue: finalValue,\n finalFullValue: finalFullValue,\n currentValue: initialValue,\n };\n });\n });\n\n var startTime = null;\n var time;\n var elementsDone = 0;\n var propsDone = 0;\n var done;\n var began = false;\n\n a.animating = true;\n\n function render() {\n time = new Date().getTime();\n var progress;\n var easeProgress;\n // let el;\n if (!began) {\n began = true;\n if (params.begin) { params.begin(els); }\n }\n if (startTime === null) {\n startTime = time;\n }\n if (params.progress) {\n // eslint-disable-next-line\n params.progress(els, Math.max(Math.min((time - startTime) / params.duration, 1), 0), ((startTime + params.duration) - time < 0 ? 0 : (startTime + params.duration) - time), startTime);\n }\n\n elements.forEach(function (element) {\n var el = element;\n if (done || el.done) { return; }\n Object.keys(props).forEach(function (prop) {\n if (done || el.done) { return; }\n progress = Math.max(Math.min((time - startTime) / params.duration, 1), 0);\n easeProgress = a.easingProgress(params.easing, progress);\n var ref = el[prop];\n var initialValue = ref.initialValue;\n var finalValue = ref.finalValue;\n var unit = ref.unit;\n el[prop].currentValue = initialValue + (easeProgress * (finalValue - initialValue));\n var currentValue = el[prop].currentValue;\n\n if (\n (finalValue > initialValue && currentValue >= finalValue) ||\n (finalValue < initialValue && currentValue <= finalValue)) {\n el.container.style[prop] = finalValue + unit;\n propsDone += 1;\n if (propsDone === Object.keys(props).length) {\n el.done = true;\n elementsDone += 1;\n }\n if (elementsDone === elements.length) {\n done = true;\n }\n }\n if (done) {\n a.done(params.complete);\n return;\n }\n el.container.style[prop] = currentValue + unit;\n });\n });\n if (done) { return; }\n // Then call\n a.frameId = requestAnimationFrame(render);\n }\n a.frameId = requestAnimationFrame(render);\n return a;\n },\n };\n\n if (a.elements.length === 0) {\n return els;\n }\n\n var animateInstance;\n for (var i = 0; i < a.elements.length; i += 1) {\n if (a.elements[i].dom7AnimateInstance) {\n animateInstance = a.elements[i].dom7AnimateInstance;\n } else { a.elements[i].dom7AnimateInstance = a; }\n }\n if (!animateInstance) {\n animateInstance = a;\n }\n\n if (initialProps === 'stop') {\n animateInstance.stop();\n } else {\n animateInstance.animate(a.props, a.params);\n }\n\n return els;\n }\n\n function stop() {\n var els = this;\n for (var i = 0; i < els.length; i += 1) {\n if (els[i].dom7AnimateInstance) {\n els[i].dom7AnimateInstance.stop();\n }\n }\n }\n\n\n\n\n var Animate = Object.freeze({\n \tanimate: animate,\n \tstop: stop\n });\n\n var noTrigger = ('resize scroll').split(' ');\n function eventShortcut(name) {\n var this$1 = this;\n var ref;\n\n var args = [], len = arguments.length - 1;\n while ( len-- > 0 ) args[ len ] = arguments[ len + 1 ];\n if (typeof args[0] === 'undefined') {\n for (var i = 0; i < this.length; i += 1) {\n if (noTrigger.indexOf(name) < 0) {\n if (name in this$1[i]) { this$1[i][name](); }\n else {\n $$1(this$1[i]).trigger(name);\n }\n }\n }\n return this;\n }\n return (ref = this).on.apply(ref, [ name ].concat( args ));\n }\n\n function click() {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return eventShortcut.bind(this).apply(void 0, [ 'click' ].concat( args ));\n }\n function blur() {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return eventShortcut.bind(this).apply(void 0, [ 'blur' ].concat( args ));\n }\n function focus() {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return eventShortcut.bind(this).apply(void 0, [ 'focus' ].concat( args ));\n }\n function focusin() {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return eventShortcut.bind(this).apply(void 0, [ 'focusin' ].concat( args ));\n }\n function focusout() {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return eventShortcut.bind(this).apply(void 0, [ 'focusout' ].concat( args ));\n }\n function keyup() {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return eventShortcut.bind(this).apply(void 0, [ 'keyup' ].concat( args ));\n }\n function keydown() {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return eventShortcut.bind(this).apply(void 0, [ 'keydown' ].concat( args ));\n }\n function keypress() {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return eventShortcut.bind(this).apply(void 0, [ 'keypress' ].concat( args ));\n }\n function submit() {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return eventShortcut.bind(this).apply(void 0, [ 'submit' ].concat( args ));\n }\n function change() {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return eventShortcut.bind(this).apply(void 0, [ 'change' ].concat( args ));\n }\n function mousedown() {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return eventShortcut.bind(this).apply(void 0, [ 'mousedown' ].concat( args ));\n }\n function mousemove() {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return eventShortcut.bind(this).apply(void 0, [ 'mousemove' ].concat( args ));\n }\n function mouseup() {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return eventShortcut.bind(this).apply(void 0, [ 'mouseup' ].concat( args ));\n }\n function mouseenter() {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return eventShortcut.bind(this).apply(void 0, [ 'mouseenter' ].concat( args ));\n }\n function mouseleave() {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return eventShortcut.bind(this).apply(void 0, [ 'mouseleave' ].concat( args ));\n }\n function mouseout() {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return eventShortcut.bind(this).apply(void 0, [ 'mouseout' ].concat( args ));\n }\n function mouseover() {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return eventShortcut.bind(this).apply(void 0, [ 'mouseover' ].concat( args ));\n }\n function touchstart() {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return eventShortcut.bind(this).apply(void 0, [ 'touchstart' ].concat( args ));\n }\n function touchend() {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return eventShortcut.bind(this).apply(void 0, [ 'touchend' ].concat( args ));\n }\n function touchmove() {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return eventShortcut.bind(this).apply(void 0, [ 'touchmove' ].concat( args ));\n }\n function resize() {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return eventShortcut.bind(this).apply(void 0, [ 'resize' ].concat( args ));\n }\n function scroll() {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return eventShortcut.bind(this).apply(void 0, [ 'scroll' ].concat( args ));\n }\n\n\n\n\n var eventShortcuts = Object.freeze({\n \tclick: click,\n \tblur: blur,\n \tfocus: focus,\n \tfocusin: focusin,\n \tfocusout: focusout,\n \tkeyup: keyup,\n \tkeydown: keydown,\n \tkeypress: keypress,\n \tsubmit: submit,\n \tchange: change,\n \tmousedown: mousedown,\n \tmousemove: mousemove,\n \tmouseup: mouseup,\n \tmouseenter: mouseenter,\n \tmouseleave: mouseleave,\n \tmouseout: mouseout,\n \tmouseover: mouseover,\n \ttouchstart: touchstart,\n \ttouchend: touchend,\n \ttouchmove: touchmove,\n \tresize: resize,\n \tscroll: scroll\n });\n\n [Methods, Scroll, Animate, eventShortcuts].forEach(function (group) {\n Object.keys(group).forEach(function (methodName) {\n $$1.fn[methodName] = group[methodName];\n });\n });\n\n /**\n * https://github.com/gre/bezier-easing\n * BezierEasing - use bezier curve for transition easing function\n * by Gaëtan Renaudeau 2014 - 2015 – MIT License\n */\n\n /* eslint-disable */\n\n // These values are established by empiricism with tests (tradeoff: performance VS precision)\n var NEWTON_ITERATIONS = 4;\n var NEWTON_MIN_SLOPE = 0.001;\n var SUBDIVISION_PRECISION = 0.0000001;\n var SUBDIVISION_MAX_ITERATIONS = 10;\n\n var kSplineTableSize = 11;\n var kSampleStepSize = 1.0 / (kSplineTableSize - 1.0);\n\n var float32ArraySupported = typeof Float32Array === 'function';\n\n function A (aA1, aA2) { return 1.0 - 3.0 * aA2 + 3.0 * aA1; }\n function B (aA1, aA2) { return 3.0 * aA2 - 6.0 * aA1; }\n function C (aA1) { return 3.0 * aA1; }\n\n // Returns x(t) given t, x1, and x2, or y(t) given t, y1, and y2.\n function calcBezier (aT, aA1, aA2) { return ((A(aA1, aA2) * aT + B(aA1, aA2)) * aT + C(aA1)) * aT; }\n\n // Returns dx/dt given t, x1, and x2, or dy/dt given t, y1, and y2.\n function getSlope (aT, aA1, aA2) { return 3.0 * A(aA1, aA2) * aT * aT + 2.0 * B(aA1, aA2) * aT + C(aA1); }\n\n function binarySubdivide (aX, aA, aB, mX1, mX2) {\n var currentX, currentT, i = 0;\n do {\n currentT = aA + (aB - aA) / 2.0;\n currentX = calcBezier(currentT, mX1, mX2) - aX;\n if (currentX > 0.0) {\n aB = currentT;\n } else {\n aA = currentT;\n }\n } while (Math.abs(currentX) > SUBDIVISION_PRECISION && ++i < SUBDIVISION_MAX_ITERATIONS);\n return currentT;\n }\n\n function newtonRaphsonIterate (aX, aGuessT, mX1, mX2) {\n for (var i = 0; i < NEWTON_ITERATIONS; ++i) {\n var currentSlope = getSlope(aGuessT, mX1, mX2);\n if (currentSlope === 0.0) {\n return aGuessT;\n }\n var currentX = calcBezier(aGuessT, mX1, mX2) - aX;\n aGuessT -= currentX / currentSlope;\n }\n return aGuessT;\n }\n\n function bezier (mX1, mY1, mX2, mY2) {\n if (!(0 <= mX1 && mX1 <= 1 && 0 <= mX2 && mX2 <= 1)) {\n throw new Error('bezier x values must be in [0, 1] range');\n }\n\n // Precompute samples table\n var sampleValues = float32ArraySupported ? new Float32Array(kSplineTableSize) : new Array(kSplineTableSize);\n if (mX1 !== mY1 || mX2 !== mY2) {\n for (var i = 0; i < kSplineTableSize; ++i) {\n sampleValues[i] = calcBezier(i * kSampleStepSize, mX1, mX2);\n }\n }\n\n function getTForX (aX) {\n var intervalStart = 0.0;\n var currentSample = 1;\n var lastSample = kSplineTableSize - 1;\n\n for (; currentSample !== lastSample && sampleValues[currentSample] <= aX; ++currentSample) {\n intervalStart += kSampleStepSize;\n }\n --currentSample;\n\n // Interpolate to provide an initial guess for t\n var dist = (aX - sampleValues[currentSample]) / (sampleValues[currentSample + 1] - sampleValues[currentSample]);\n var guessForT = intervalStart + dist * kSampleStepSize;\n\n var initialSlope = getSlope(guessForT, mX1, mX2);\n if (initialSlope >= NEWTON_MIN_SLOPE) {\n return newtonRaphsonIterate(aX, guessForT, mX1, mX2);\n } else if (initialSlope === 0.0) {\n return guessForT;\n } else {\n return binarySubdivide(aX, intervalStart, intervalStart + kSampleStepSize, mX1, mX2);\n }\n }\n\n return function BezierEasing (x) {\n if (mX1 === mY1 && mX2 === mY2) {\n return x; // linear\n }\n // Because JavaScript number are imprecise, we should guarantee the extremes are right.\n if (x === 0) {\n return 0;\n }\n if (x === 1) {\n return 1;\n }\n return calcBezier(getTForX(x), mY1, mY2);\n };\n }\n\n /* eslint no-control-regex: \"off\" */\n\n // Remove Diacritics\n var defaultDiacriticsRemovalap = [\n { base: 'A', letters: '\\u0041\\u24B6\\uFF21\\u00C0\\u00C1\\u00C2\\u1EA6\\u1EA4\\u1EAA\\u1EA8\\u00C3\\u0100\\u0102\\u1EB0\\u1EAE\\u1EB4\\u1EB2\\u0226\\u01E0\\u00C4\\u01DE\\u1EA2\\u00C5\\u01FA\\u01CD\\u0200\\u0202\\u1EA0\\u1EAC\\u1EB6\\u1E00\\u0104\\u023A\\u2C6F' },\n { base: 'AA', letters: '\\uA732' },\n { base: 'AE', letters: '\\u00C6\\u01FC\\u01E2' },\n { base: 'AO', letters: '\\uA734' },\n { base: 'AU', letters: '\\uA736' },\n { base: 'AV', letters: '\\uA738\\uA73A' },\n { base: 'AY', letters: '\\uA73C' },\n { base: 'B', letters: '\\u0042\\u24B7\\uFF22\\u1E02\\u1E04\\u1E06\\u0243\\u0182\\u0181' },\n { base: 'C', letters: '\\u0043\\u24B8\\uFF23\\u0106\\u0108\\u010A\\u010C\\u00C7\\u1E08\\u0187\\u023B\\uA73E' },\n { base: 'D', letters: '\\u0044\\u24B9\\uFF24\\u1E0A\\u010E\\u1E0C\\u1E10\\u1E12\\u1E0E\\u0110\\u018B\\u018A\\u0189\\uA779' },\n { base: 'DZ', letters: '\\u01F1\\u01C4' },\n { base: 'Dz', letters: '\\u01F2\\u01C5' },\n { base: 'E', letters: '\\u0045\\u24BA\\uFF25\\u00C8\\u00C9\\u00CA\\u1EC0\\u1EBE\\u1EC4\\u1EC2\\u1EBC\\u0112\\u1E14\\u1E16\\u0114\\u0116\\u00CB\\u1EBA\\u011A\\u0204\\u0206\\u1EB8\\u1EC6\\u0228\\u1E1C\\u0118\\u1E18\\u1E1A\\u0190\\u018E' },\n { base: 'F', letters: '\\u0046\\u24BB\\uFF26\\u1E1E\\u0191\\uA77B' },\n { base: 'G', letters: '\\u0047\\u24BC\\uFF27\\u01F4\\u011C\\u1E20\\u011E\\u0120\\u01E6\\u0122\\u01E4\\u0193\\uA7A0\\uA77D\\uA77E' },\n { base: 'H', letters: '\\u0048\\u24BD\\uFF28\\u0124\\u1E22\\u1E26\\u021E\\u1E24\\u1E28\\u1E2A\\u0126\\u2C67\\u2C75\\uA78D' },\n { base: 'I', letters: '\\u0049\\u24BE\\uFF29\\u00CC\\u00CD\\u00CE\\u0128\\u012A\\u012C\\u0130\\u00CF\\u1E2E\\u1EC8\\u01CF\\u0208\\u020A\\u1ECA\\u012E\\u1E2C\\u0197' },\n { base: 'J', letters: '\\u004A\\u24BF\\uFF2A\\u0134\\u0248' },\n { base: 'K', letters: '\\u004B\\u24C0\\uFF2B\\u1E30\\u01E8\\u1E32\\u0136\\u1E34\\u0198\\u2C69\\uA740\\uA742\\uA744\\uA7A2' },\n { base: 'L', letters: '\\u004C\\u24C1\\uFF2C\\u013F\\u0139\\u013D\\u1E36\\u1E38\\u013B\\u1E3C\\u1E3A\\u0141\\u023D\\u2C62\\u2C60\\uA748\\uA746\\uA780' },\n { base: 'LJ', letters: '\\u01C7' },\n { base: 'Lj', letters: '\\u01C8' },\n { base: 'M', letters: '\\u004D\\u24C2\\uFF2D\\u1E3E\\u1E40\\u1E42\\u2C6E\\u019C' },\n { base: 'N', letters: '\\u004E\\u24C3\\uFF2E\\u01F8\\u0143\\u00D1\\u1E44\\u0147\\u1E46\\u0145\\u1E4A\\u1E48\\u0220\\u019D\\uA790\\uA7A4' },\n { base: 'NJ', letters: '\\u01CA' },\n { base: 'Nj', letters: '\\u01CB' },\n { base: 'O', letters: '\\u004F\\u24C4\\uFF2F\\u00D2\\u00D3\\u00D4\\u1ED2\\u1ED0\\u1ED6\\u1ED4\\u00D5\\u1E4C\\u022C\\u1E4E\\u014C\\u1E50\\u1E52\\u014E\\u022E\\u0230\\u00D6\\u022A\\u1ECE\\u0150\\u01D1\\u020C\\u020E\\u01A0\\u1EDC\\u1EDA\\u1EE0\\u1EDE\\u1EE2\\u1ECC\\u1ED8\\u01EA\\u01EC\\u00D8\\u01FE\\u0186\\u019F\\uA74A\\uA74C' },\n { base: 'OI', letters: '\\u01A2' },\n { base: 'OO', letters: '\\uA74E' },\n { base: 'OU', letters: '\\u0222' },\n { base: 'OE', letters: '\\u008C\\u0152' },\n { base: 'oe', letters: '\\u009C\\u0153' },\n { base: 'P', letters: '\\u0050\\u24C5\\uFF30\\u1E54\\u1E56\\u01A4\\u2C63\\uA750\\uA752\\uA754' },\n { base: 'Q', letters: '\\u0051\\u24C6\\uFF31\\uA756\\uA758\\u024A' },\n { base: 'R', letters: '\\u0052\\u24C7\\uFF32\\u0154\\u1E58\\u0158\\u0210\\u0212\\u1E5A\\u1E5C\\u0156\\u1E5E\\u024C\\u2C64\\uA75A\\uA7A6\\uA782' },\n { base: 'S', letters: '\\u0053\\u24C8\\uFF33\\u1E9E\\u015A\\u1E64\\u015C\\u1E60\\u0160\\u1E66\\u1E62\\u1E68\\u0218\\u015E\\u2C7E\\uA7A8\\uA784' },\n { base: 'T', letters: '\\u0054\\u24C9\\uFF34\\u1E6A\\u0164\\u1E6C\\u021A\\u0162\\u1E70\\u1E6E\\u0166\\u01AC\\u01AE\\u023E\\uA786' },\n { base: 'TZ', letters: '\\uA728' },\n { base: 'U', letters: '\\u0055\\u24CA\\uFF35\\u00D9\\u00DA\\u00DB\\u0168\\u1E78\\u016A\\u1E7A\\u016C\\u00DC\\u01DB\\u01D7\\u01D5\\u01D9\\u1EE6\\u016E\\u0170\\u01D3\\u0214\\u0216\\u01AF\\u1EEA\\u1EE8\\u1EEE\\u1EEC\\u1EF0\\u1EE4\\u1E72\\u0172\\u1E76\\u1E74\\u0244' },\n { base: 'V', letters: '\\u0056\\u24CB\\uFF36\\u1E7C\\u1E7E\\u01B2\\uA75E\\u0245' },\n { base: 'VY', letters: '\\uA760' },\n { base: 'W', letters: '\\u0057\\u24CC\\uFF37\\u1E80\\u1E82\\u0174\\u1E86\\u1E84\\u1E88\\u2C72' },\n { base: 'X', letters: '\\u0058\\u24CD\\uFF38\\u1E8A\\u1E8C' },\n { base: 'Y', letters: '\\u0059\\u24CE\\uFF39\\u1EF2\\u00DD\\u0176\\u1EF8\\u0232\\u1E8E\\u0178\\u1EF6\\u1EF4\\u01B3\\u024E\\u1EFE' },\n { base: 'Z', letters: '\\u005A\\u24CF\\uFF3A\\u0179\\u1E90\\u017B\\u017D\\u1E92\\u1E94\\u01B5\\u0224\\u2C7F\\u2C6B\\uA762' },\n { base: 'a', letters: '\\u0061\\u24D0\\uFF41\\u1E9A\\u00E0\\u00E1\\u00E2\\u1EA7\\u1EA5\\u1EAB\\u1EA9\\u00E3\\u0101\\u0103\\u1EB1\\u1EAF\\u1EB5\\u1EB3\\u0227\\u01E1\\u00E4\\u01DF\\u1EA3\\u00E5\\u01FB\\u01CE\\u0201\\u0203\\u1EA1\\u1EAD\\u1EB7\\u1E01\\u0105\\u2C65\\u0250' },\n { base: 'aa', letters: '\\uA733' },\n { base: 'ae', letters: '\\u00E6\\u01FD\\u01E3' },\n { base: 'ao', letters: '\\uA735' },\n { base: 'au', letters: '\\uA737' },\n { base: 'av', letters: '\\uA739\\uA73B' },\n { base: 'ay', letters: '\\uA73D' },\n { base: 'b', letters: '\\u0062\\u24D1\\uFF42\\u1E03\\u1E05\\u1E07\\u0180\\u0183\\u0253' },\n { base: 'c', letters: '\\u0063\\u24D2\\uFF43\\u0107\\u0109\\u010B\\u010D\\u00E7\\u1E09\\u0188\\u023C\\uA73F\\u2184' },\n { base: 'd', letters: '\\u0064\\u24D3\\uFF44\\u1E0B\\u010F\\u1E0D\\u1E11\\u1E13\\u1E0F\\u0111\\u018C\\u0256\\u0257\\uA77A' },\n { base: 'dz', letters: '\\u01F3\\u01C6' },\n { base: 'e', letters: '\\u0065\\u24D4\\uFF45\\u00E8\\u00E9\\u00EA\\u1EC1\\u1EBF\\u1EC5\\u1EC3\\u1EBD\\u0113\\u1E15\\u1E17\\u0115\\u0117\\u00EB\\u1EBB\\u011B\\u0205\\u0207\\u1EB9\\u1EC7\\u0229\\u1E1D\\u0119\\u1E19\\u1E1B\\u0247\\u025B\\u01DD' },\n { base: 'f', letters: '\\u0066\\u24D5\\uFF46\\u1E1F\\u0192\\uA77C' },\n { base: 'g', letters: '\\u0067\\u24D6\\uFF47\\u01F5\\u011D\\u1E21\\u011F\\u0121\\u01E7\\u0123\\u01E5\\u0260\\uA7A1\\u1D79\\uA77F' },\n { base: 'h', letters: '\\u0068\\u24D7\\uFF48\\u0125\\u1E23\\u1E27\\u021F\\u1E25\\u1E29\\u1E2B\\u1E96\\u0127\\u2C68\\u2C76\\u0265' },\n { base: 'hv', letters: '\\u0195' },\n { base: 'i', letters: '\\u0069\\u24D8\\uFF49\\u00EC\\u00ED\\u00EE\\u0129\\u012B\\u012D\\u00EF\\u1E2F\\u1EC9\\u01D0\\u0209\\u020B\\u1ECB\\u012F\\u1E2D\\u0268\\u0131' },\n { base: 'j', letters: '\\u006A\\u24D9\\uFF4A\\u0135\\u01F0\\u0249' },\n { base: 'k', letters: '\\u006B\\u24DA\\uFF4B\\u1E31\\u01E9\\u1E33\\u0137\\u1E35\\u0199\\u2C6A\\uA741\\uA743\\uA745\\uA7A3' },\n { base: 'l', letters: '\\u006C\\u24DB\\uFF4C\\u0140\\u013A\\u013E\\u1E37\\u1E39\\u013C\\u1E3D\\u1E3B\\u017F\\u0142\\u019A\\u026B\\u2C61\\uA749\\uA781\\uA747' },\n { base: 'lj', letters: '\\u01C9' },\n { base: 'm', letters: '\\u006D\\u24DC\\uFF4D\\u1E3F\\u1E41\\u1E43\\u0271\\u026F' },\n { base: 'n', letters: '\\u006E\\u24DD\\uFF4E\\u01F9\\u0144\\u00F1\\u1E45\\u0148\\u1E47\\u0146\\u1E4B\\u1E49\\u019E\\u0272\\u0149\\uA791\\uA7A5' },\n { base: 'nj', letters: '\\u01CC' },\n { base: 'o', letters: '\\u006F\\u24DE\\uFF4F\\u00F2\\u00F3\\u00F4\\u1ED3\\u1ED1\\u1ED7\\u1ED5\\u00F5\\u1E4D\\u022D\\u1E4F\\u014D\\u1E51\\u1E53\\u014F\\u022F\\u0231\\u00F6\\u022B\\u1ECF\\u0151\\u01D2\\u020D\\u020F\\u01A1\\u1EDD\\u1EDB\\u1EE1\\u1EDF\\u1EE3\\u1ECD\\u1ED9\\u01EB\\u01ED\\u00F8\\u01FF\\u0254\\uA74B\\uA74D\\u0275' },\n { base: 'oi', letters: '\\u01A3' },\n { base: 'ou', letters: '\\u0223' },\n { base: 'oo', letters: '\\uA74F' },\n { base: 'p', letters: '\\u0070\\u24DF\\uFF50\\u1E55\\u1E57\\u01A5\\u1D7D\\uA751\\uA753\\uA755' },\n { base: 'q', letters: '\\u0071\\u24E0\\uFF51\\u024B\\uA757\\uA759' },\n { base: 'r', letters: '\\u0072\\u24E1\\uFF52\\u0155\\u1E59\\u0159\\u0211\\u0213\\u1E5B\\u1E5D\\u0157\\u1E5F\\u024D\\u027D\\uA75B\\uA7A7\\uA783' },\n { base: 's', letters: '\\u0073\\u24E2\\uFF53\\u00DF\\u015B\\u1E65\\u015D\\u1E61\\u0161\\u1E67\\u1E63\\u1E69\\u0219\\u015F\\u023F\\uA7A9\\uA785\\u1E9B' },\n { base: 't', letters: '\\u0074\\u24E3\\uFF54\\u1E6B\\u1E97\\u0165\\u1E6D\\u021B\\u0163\\u1E71\\u1E6F\\u0167\\u01AD\\u0288\\u2C66\\uA787' },\n { base: 'tz', letters: '\\uA729' },\n { base: 'u', letters: '\\u0075\\u24E4\\uFF55\\u00F9\\u00FA\\u00FB\\u0169\\u1E79\\u016B\\u1E7B\\u016D\\u00FC\\u01DC\\u01D8\\u01D6\\u01DA\\u1EE7\\u016F\\u0171\\u01D4\\u0215\\u0217\\u01B0\\u1EEB\\u1EE9\\u1EEF\\u1EED\\u1EF1\\u1EE5\\u1E73\\u0173\\u1E77\\u1E75\\u0289' },\n { base: 'v', letters: '\\u0076\\u24E5\\uFF56\\u1E7D\\u1E7F\\u028B\\uA75F\\u028C' },\n { base: 'vy', letters: '\\uA761' },\n { base: 'w', letters: '\\u0077\\u24E6\\uFF57\\u1E81\\u1E83\\u0175\\u1E87\\u1E85\\u1E98\\u1E89\\u2C73' },\n { base: 'x', letters: '\\u0078\\u24E7\\uFF58\\u1E8B\\u1E8D' },\n { base: 'y', letters: '\\u0079\\u24E8\\uFF59\\u1EF3\\u00FD\\u0177\\u1EF9\\u0233\\u1E8F\\u00FF\\u1EF7\\u1E99\\u1EF5\\u01B4\\u024F\\u1EFF' },\n { base: 'z', letters: '\\u007A\\u24E9\\uFF5A\\u017A\\u1E91\\u017C\\u017E\\u1E93\\u1E95\\u01B6\\u0225\\u0240\\u2C6C\\uA763' } ];\n\n var diacriticsMap = {};\n for (var i = 0; i < defaultDiacriticsRemovalap.length; i += 1) {\n var letters = defaultDiacriticsRemovalap[i].letters;\n for (var j = 0; j < letters.length; j += 1) {\n diacriticsMap[letters[j]] = defaultDiacriticsRemovalap[i].base;\n }\n }\n\n var createPromise = function createPromise(handler) {\n var resolved = false;\n var rejected = false;\n var resolveArgs;\n var rejectArgs;\n var promiseHandlers = {\n then: undefined,\n catch: undefined,\n };\n var promise = {\n then: function then(thenHandler) {\n if (resolved) {\n thenHandler.apply(void 0, resolveArgs);\n } else {\n promiseHandlers.then = thenHandler;\n }\n return promise;\n },\n catch: function catch$1(catchHandler) {\n if (rejected) {\n catchHandler.apply(void 0, rejectArgs);\n } else {\n promiseHandlers.catch = catchHandler;\n }\n return promise;\n },\n };\n\n function resolve() {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n resolved = true;\n if (promiseHandlers.then) { promiseHandlers.then.apply(promiseHandlers, args); }\n else { resolveArgs = args; }\n }\n function reject() {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n rejected = true;\n if (promiseHandlers.catch) { promiseHandlers.catch.apply(promiseHandlers, args); }\n else { rejectArgs = args; }\n }\n handler(resolve, reject);\n\n return promise;\n };\n\n var Utils = {\n mdPreloaderContent: \"\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \".trim(),\n eventNameToColonCase: function eventNameToColonCase(eventName) {\n var hasColon;\n return eventName.split('').map(function (char, index) {\n if (char.match(/[A-Z]/) && index !== 0 && !hasColon) {\n hasColon = true;\n return (\":\" + (char.toLowerCase()));\n }\n return char.toLowerCase();\n }).join('');\n },\n deleteProps: function deleteProps(obj) {\n var object = obj;\n Object.keys(object).forEach(function (key) {\n try {\n object[key] = null;\n } catch (e) {\n // no setter for object\n }\n try {\n delete object[key];\n } catch (e) {\n // something got wrong\n }\n });\n },\n bezier: function bezier$1() {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return bezier.apply(void 0, args);\n },\n nextTick: function nextTick(callback, delay) {\n if ( delay === void 0 ) delay = 0;\n\n return setTimeout(callback, delay);\n },\n nextFrame: function nextFrame(callback) {\n return Utils.requestAnimationFrame(callback);\n },\n now: function now() {\n return Date.now();\n },\n promise: function promise(handler) {\n return win.Promise ? new Promise(handler) : createPromise(handler);\n },\n requestAnimationFrame: function requestAnimationFrame(callback) {\n if (win.requestAnimationFrame) { return win.requestAnimationFrame(callback); }\n if (win.webkitRequestAnimationFrame) { return win.webkitRequestAnimationFrame(callback); }\n return win.setTimeout(callback, 1000 / 60);\n },\n cancelAnimationFrame: function cancelAnimationFrame(id) {\n if (win.cancelAnimationFrame) { return win.cancelAnimationFrame(id); }\n if (win.webkitCancelAnimationFrame) { return win.webkitCancelAnimationFrame(id); }\n return win.clearTimeout(id);\n },\n removeDiacritics: function removeDiacritics(str) {\n return str.replace(/[^\\u0000-\\u007E]/g, function (a) { return diacriticsMap[a] || a; });\n },\n parseUrlQuery: function parseUrlQuery(url) {\n var query = {};\n var urlToParse = url || win.location.href;\n var i;\n var params;\n var param;\n var length;\n if (typeof urlToParse === 'string' && urlToParse.length) {\n urlToParse = urlToParse.indexOf('?') > -1 ? urlToParse.replace(/\\S*\\?/, '') : '';\n params = urlToParse.split('&').filter(function (paramsPart) { return paramsPart !== ''; });\n length = params.length;\n\n for (i = 0; i < length; i += 1) {\n param = params[i].replace(/#\\S+/g, '').split('=');\n query[decodeURIComponent(param[0])] = typeof param[1] === 'undefined' ? undefined : decodeURIComponent(param[1]) || '';\n }\n }\n return query;\n },\n getTranslate: function getTranslate(el, axis) {\n if ( axis === void 0 ) axis = 'x';\n\n var matrix;\n var curTransform;\n var transformMatrix;\n\n var curStyle = win.getComputedStyle(el, null);\n\n if (win.WebKitCSSMatrix) {\n curTransform = curStyle.transform || curStyle.webkitTransform;\n if (curTransform.split(',').length > 6) {\n curTransform = curTransform.split(', ').map(function (a) { return a.replace(',', '.'); }).join(', ');\n }\n // Some old versions of Webkit choke when 'none' is passed; pass\n // empty string instead in this case\n transformMatrix = new win.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);\n } else {\n transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');\n matrix = transformMatrix.toString().split(',');\n }\n\n if (axis === 'x') {\n // Latest Chrome and webkits Fix\n if (win.WebKitCSSMatrix) { curTransform = transformMatrix.m41; }\n // Crazy IE10 Matrix\n else if (matrix.length === 16) { curTransform = parseFloat(matrix[12]); }\n // Normal Browsers\n else { curTransform = parseFloat(matrix[4]); }\n }\n if (axis === 'y') {\n // Latest Chrome and webkits Fix\n if (win.WebKitCSSMatrix) { curTransform = transformMatrix.m42; }\n // Crazy IE10 Matrix\n else if (matrix.length === 16) { curTransform = parseFloat(matrix[13]); }\n // Normal Browsers\n else { curTransform = parseFloat(matrix[5]); }\n }\n return curTransform || 0;\n },\n serializeObject: function serializeObject(obj, parents) {\n if ( parents === void 0 ) parents = [];\n\n if (typeof obj === 'string') { return obj; }\n var resultArray = [];\n var separator = '&';\n var newParents;\n function varName(name) {\n if (parents.length > 0) {\n var parentParts = '';\n for (var j = 0; j < parents.length; j += 1) {\n if (j === 0) { parentParts += parents[j]; }\n else { parentParts += \"[\" + (encodeURIComponent(parents[j])) + \"]\"; }\n }\n return (parentParts + \"[\" + (encodeURIComponent(name)) + \"]\");\n }\n return encodeURIComponent(name);\n }\n function varValue(value) {\n return encodeURIComponent(value);\n }\n Object.keys(obj).forEach(function (prop) {\n var toPush;\n if (Array.isArray(obj[prop])) {\n toPush = [];\n for (var i = 0; i < obj[prop].length; i += 1) {\n if (!Array.isArray(obj[prop][i]) && typeof obj[prop][i] === 'object') {\n newParents = parents.slice();\n newParents.push(prop);\n newParents.push(String(i));\n toPush.push(Utils.serializeObject(obj[prop][i], newParents));\n } else {\n toPush.push(((varName(prop)) + \"[]=\" + (varValue(obj[prop][i]))));\n }\n }\n if (toPush.length > 0) { resultArray.push(toPush.join(separator)); }\n } else if (obj[prop] === null || obj[prop] === '') {\n resultArray.push(((varName(prop)) + \"=\"));\n } else if (typeof obj[prop] === 'object') {\n // Object, convert to named array\n newParents = parents.slice();\n newParents.push(prop);\n toPush = Utils.serializeObject(obj[prop], newParents);\n if (toPush !== '') { resultArray.push(toPush); }\n } else if (typeof obj[prop] !== 'undefined' && obj[prop] !== '') {\n // Should be string or plain value\n resultArray.push(((varName(prop)) + \"=\" + (varValue(obj[prop]))));\n } else if (obj[prop] === '') { resultArray.push(varName(prop)); }\n });\n return resultArray.join(separator);\n },\n isObject: function isObject(o) {\n return typeof o === 'object' && o !== null && o.constructor && o.constructor === Object;\n },\n merge: function merge() {\n var args = [], len$1 = arguments.length;\n while ( len$1-- ) args[ len$1 ] = arguments[ len$1 ];\n\n var to = args[0];\n args.splice(0, 1);\n var from = args;\n\n for (var i = 0; i < from.length; i += 1) {\n var nextSource = args[i];\n if (nextSource !== undefined && nextSource !== null) {\n var keysArray = Object.keys(Object(nextSource));\n for (var nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {\n var nextKey = keysArray[nextIndex];\n var desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n if (desc !== undefined && desc.enumerable) {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n return to;\n },\n extend: function extend() {\n var args = [], len$1 = arguments.length;\n while ( len$1-- ) args[ len$1 ] = arguments[ len$1 ];\n\n var deep = true;\n var to;\n var from;\n if (typeof args[0] === 'boolean') {\n deep = args[0];\n to = args[1];\n args.splice(0, 2);\n from = args;\n } else {\n to = args[0];\n args.splice(0, 1);\n from = args;\n }\n for (var i = 0; i < from.length; i += 1) {\n var nextSource = args[i];\n if (nextSource !== undefined && nextSource !== null) {\n var keysArray = Object.keys(Object(nextSource));\n for (var nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {\n var nextKey = keysArray[nextIndex];\n var desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n if (desc !== undefined && desc.enumerable) {\n if (!deep) {\n to[nextKey] = nextSource[nextKey];\n } else if (Utils.isObject(to[nextKey]) && Utils.isObject(nextSource[nextKey])) {\n Utils.extend(to[nextKey], nextSource[nextKey]);\n } else if (!Utils.isObject(to[nextKey]) && Utils.isObject(nextSource[nextKey])) {\n to[nextKey] = {};\n Utils.extend(to[nextKey], nextSource[nextKey]);\n } else {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n }\n return to;\n },\n };\n\n var Device = (function Device() {\n var platform = win.navigator.platform;\n var ua = win.navigator.userAgent;\n\n var device = {\n ios: false,\n android: false,\n androidChrome: false,\n desktop: false,\n windowsPhone: false,\n iphone: false,\n iphoneX: false,\n ipod: false,\n ipad: false,\n edge: false,\n ie: false,\n macos: false,\n windows: false,\n cordova: !!(win.cordova || win.phonegap),\n phonegap: !!(win.cordova || win.phonegap),\n };\n\n var windowsPhone = ua.match(/(Windows Phone);?[\\s\\/]+([\\d.]+)?/); // eslint-disable-line\n var android = ua.match(/(Android);?[\\s\\/]+([\\d.]+)?/); // eslint-disable-line\n var ipad = ua.match(/(iPad).*OS\\s([\\d_]+)/);\n var ipod = ua.match(/(iPod)(.*OS\\s([\\d_]+))?/);\n var iphone = !ipad && ua.match(/(iPhone\\sOS|iOS)\\s([\\d_]+)/);\n var iphoneX = iphone && win.screen.width === 375 && win.screen.height === 812;\n var ie = ua.indexOf('MSIE ') >= 0 || ua.indexOf('Trident/') >= 0;\n var edge = ua.indexOf('Edge/') >= 0;\n var macos = platform === 'MacIntel';\n var windows = platform === 'Win32';\n\n device.ie = ie;\n device.edge = edge;\n\n // Windows\n if (windowsPhone) {\n device.os = 'windows';\n device.osVersion = windows[2];\n device.windowsPhone = true;\n }\n // Android\n if (android && !windows) {\n device.os = 'android';\n device.osVersion = android[2];\n device.android = true;\n device.androidChrome = ua.toLowerCase().indexOf('chrome') >= 0;\n }\n if (ipad || iphone || ipod) {\n device.os = 'ios';\n device.ios = true;\n }\n // iOS\n if (iphone && !ipod) {\n device.osVersion = iphone[2].replace(/_/g, '.');\n device.iphone = true;\n device.iphoneX = iphoneX;\n }\n if (ipad) {\n device.osVersion = ipad[2].replace(/_/g, '.');\n device.ipad = true;\n }\n if (ipod) {\n device.osVersion = ipod[3] ? ipod[3].replace(/_/g, '.') : null;\n device.iphone = true;\n }\n // iOS 8+ changed UA\n if (device.ios && device.osVersion && ua.indexOf('Version/') >= 0) {\n if (device.osVersion.split('.')[0] === '10') {\n device.osVersion = ua.toLowerCase().split('version/')[1].split(' ')[0];\n }\n }\n\n // Webview\n device.webView = (iphone || ipad || ipod) && (ua.match(/.*AppleWebKit(?!.*Safari)/i) || win.navigator.standalone);\n device.webview = device.webView;\n\n\n // Desktop\n device.desktop = !(device.os || device.android || device.webView);\n if (device.desktop) {\n device.macos = macos;\n device.windows = windows;\n }\n\n // Minimal UI\n if (device.os && device.os === 'ios') {\n var osVersionArr = device.osVersion.split('.');\n var metaViewport = doc.querySelector('meta[name=\"viewport\"]');\n device.minimalUi = !device.webView\n && (ipod || iphone)\n && (osVersionArr[0] * 1 === 7 ? osVersionArr[1] * 1 >= 1 : osVersionArr[0] * 1 > 7)\n && metaViewport && metaViewport.getAttribute('content').indexOf('minimal-ui') >= 0;\n }\n\n // Check for status bar and fullscreen app mode\n device.needsStatusbarOverlay = function needsStatusbarOverlay() {\n if ((device.webView || (device.android && device.cordova)) && (win.innerWidth * win.innerHeight === win.screen.width * win.screen.height)) {\n if (device.iphoneX && (win.orientation === 90 || win.orientation === -90)) {\n return false;\n }\n return true;\n }\n return false;\n };\n device.statusbar = device.needsStatusbarOverlay();\n\n // Pixel Ratio\n device.pixelRatio = win.devicePixelRatio || 1;\n\n // Export object\n return device;\n }());\n\n var Framework7Class = function Framework7Class(params, parents) {\n if ( params === void 0 ) params = {};\n if ( parents === void 0 ) parents = [];\n\n var self = this;\n self.params = params;\n\n // Events\n self.eventsParents = parents;\n self.eventsListeners = {};\n\n if (self.params && self.params.on) {\n Object.keys(self.params.on).forEach(function (eventName) {\n self.on(eventName, self.params.on[eventName]);\n });\n }\n };\n\n var staticAccessors$1 = { components: { configurable: true } };\n\n Framework7Class.prototype.on = function on (events, handler, priority) {\n var self = this;\n if (typeof handler !== 'function') { return self; }\n var method = priority ? 'unshift' : 'push';\n events.split(' ').forEach(function (event) {\n if (!self.eventsListeners[event]) { self.eventsListeners[event] = []; }\n self.eventsListeners[event][method](handler);\n });\n return self;\n };\n\n Framework7Class.prototype.once = function once (events, handler, priority) {\n var self = this;\n if (typeof handler !== 'function') { return self; }\n function onceHandler() {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n handler.apply(self, args);\n self.off(events, onceHandler);\n }\n return self.on(events, onceHandler, priority);\n };\n\n Framework7Class.prototype.off = function off (events, handler) {\n var self = this;\n if (!self.eventsListeners) { return self; }\n events.split(' ').forEach(function (event) {\n if (typeof handler === 'undefined') {\n self.eventsListeners[event] = [];\n } else {\n self.eventsListeners[event].forEach(function (eventHandler, index) {\n if (eventHandler === handler) {\n self.eventsListeners[event].splice(index, 1);\n }\n });\n }\n });\n return self;\n };\n\n Framework7Class.prototype.emit = function emit () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var self = this;\n if (!self.eventsListeners) { return self; }\n var events;\n var data;\n var context;\n var eventsParents;\n if (typeof args[0] === 'string' || Array.isArray(args[0])) {\n events = args[0];\n data = args.slice(1, args.length);\n context = self;\n eventsParents = self.eventsParents;\n } else {\n events = args[0].events;\n data = args[0].data;\n context = args[0].context || self;\n eventsParents = args[0].local ? [] : args[0].parents || self.eventsParents;\n }\n var eventsArray = Array.isArray(events) ? events : events.split(' ');\n var localEvents = eventsArray.map(function (eventName) { return eventName.replace('local::', ''); });\n var parentEvents = eventsArray.filter(function (eventName) { return eventName.indexOf('local::') < 0; });\n\n localEvents.forEach(function (event) {\n if (self.eventsListeners && self.eventsListeners[event]) {\n var handlers = [];\n self.eventsListeners[event].forEach(function (eventHandler) {\n handlers.push(eventHandler);\n });\n handlers.forEach(function (eventHandler) {\n eventHandler.apply(context, data);\n });\n }\n });\n if (eventsParents && eventsParents.length > 0) {\n eventsParents.forEach(function (eventsParent) {\n eventsParent.emit.apply(eventsParent, [ parentEvents ].concat( data ));\n });\n }\n return self;\n };\n\n Framework7Class.prototype.useModulesParams = function useModulesParams (instanceParams) {\n var instance = this;\n if (!instance.modules) { return; }\n Object.keys(instance.modules).forEach(function (moduleName) {\n var module = instance.modules[moduleName];\n // Extend params\n if (module.params) {\n Utils.extend(instanceParams, module.params);\n }\n });\n };\n\n Framework7Class.prototype.useModules = function useModules (modulesParams) {\n if ( modulesParams === void 0 ) modulesParams = {};\n\n var instance = this;\n if (!instance.modules) { return; }\n Object.keys(instance.modules).forEach(function (moduleName) {\n var module = instance.modules[moduleName];\n var moduleParams = modulesParams[moduleName] || {};\n // Extend instance methods and props\n if (module.instance) {\n Object.keys(module.instance).forEach(function (modulePropName) {\n var moduleProp = module.instance[modulePropName];\n if (typeof moduleProp === 'function') {\n instance[modulePropName] = moduleProp.bind(instance);\n } else {\n instance[modulePropName] = moduleProp;\n }\n });\n }\n // Add event listeners\n if (module.on && instance.on) {\n Object.keys(module.on).forEach(function (moduleEventName) {\n instance.on(moduleEventName, module.on[moduleEventName]);\n });\n }\n\n // Module create callback\n if (module.create) {\n module.create.bind(instance)(moduleParams);\n }\n });\n };\n\n staticAccessors$1.components.set = function (components) {\n var Class = this;\n if (!Class.use) { return; }\n Class.use(components);\n };\n\n Framework7Class.installModule = function installModule (module) {\n var params = [], len = arguments.length - 1;\n while ( len-- > 0 ) params[ len ] = arguments[ len + 1 ];\n\n var Class = this;\n if (!Class.prototype.modules) { Class.prototype.modules = {}; }\n var name = module.name || (((Object.keys(Class.prototype.modules).length) + \"_\" + (Utils.now())));\n Class.prototype.modules[name] = module;\n // Prototype\n if (module.proto) {\n Object.keys(module.proto).forEach(function (key) {\n Class.prototype[key] = module.proto[key];\n });\n }\n // Class\n if (module.static) {\n Object.keys(module.static).forEach(function (key) {\n Class[key] = module.static[key];\n });\n }\n // Callback\n if (module.install) {\n module.install.apply(Class, params);\n }\n return Class;\n };\n\n Framework7Class.use = function use (module) {\n var params = [], len = arguments.length - 1;\n while ( len-- > 0 ) params[ len ] = arguments[ len + 1 ];\n\n var Class = this;\n if (Array.isArray(module)) {\n module.forEach(function (m) { return Class.installModule(m); });\n return Class;\n }\n return Class.installModule.apply(Class, [ module ].concat( params ));\n };\n\n Object.defineProperties( Framework7Class, staticAccessors$1 );\n\n var Framework7 = (function (Framework7Class$$1) {\n function Framework7(params) {\n Framework7Class$$1.call(this, params);\n\n var passedParams = Utils.extend({}, params);\n\n // App Instance\n var app = this;\n\n // Default\n var defaults = {\n version: '1.0.0',\n id: 'io.framework7.testapp',\n root: 'body',\n theme: 'auto',\n language: win.navigator.language,\n routes: [],\n name: 'Framework7',\n initOnDeviceReady: true,\n init: true,\n };\n\n // Extend defaults with modules params\n app.useModulesParams(defaults);\n\n // Extend defaults with passed params\n app.params = Utils.extend(defaults, params);\n\n var $rootEl = $$1(app.params.root);\n\n Utils.extend(app, {\n // App Id\n id: app.params.id,\n // App Name\n name: app.params.name,\n // App version\n version: app.params.version,\n // Routes\n routes: app.params.routes,\n // Lang\n language: app.params.language,\n // Root\n root: $rootEl,\n // RTL\n rtl: $rootEl.css('direction') === 'rtl',\n // Theme\n theme: (function getTheme() {\n if (app.params.theme === 'auto') {\n return Device.ios ? 'ios' : 'md';\n }\n return app.params.theme;\n }()),\n // Initially passed parameters\n passedParams: passedParams,\n });\n\n // Save Root\n if (app.root && app.root[0]) {\n app.root[0].f7 = app;\n }\n\n // Install Modules\n app.useModules();\n\n // Init\n if (app.params.init) {\n if (Device.cordova && app.params.initOnDeviceReady) {\n $$1(doc).on('deviceready', function () {\n app.init();\n });\n } else {\n app.init();\n }\n }\n // Return app instance\n return app;\n }\n\n if ( Framework7Class$$1 ) Framework7.__proto__ = Framework7Class$$1;\n Framework7.prototype = Object.create( Framework7Class$$1 && Framework7Class$$1.prototype );\n Framework7.prototype.constructor = Framework7;\n\n var prototypeAccessors = { $: { configurable: true },t7: { configurable: true } };\n var staticAccessors = { Dom7: { configurable: true },$: { configurable: true },Template7: { configurable: true },Class: { configurable: true } };\n\n Framework7.prototype.init = function init () {\n var app = this;\n if (app.initialized) { return app; }\n\n app.root.addClass('framework7-initializing');\n\n // RTL attr\n if (app.rtl) {\n $$1('html').attr('dir', 'rtl');\n }\n\n // Root class\n app.root.addClass('framework7-root');\n\n // Theme class\n $$1('html').removeClass('ios md').addClass(app.theme);\n\n // Data\n app.data = {};\n if (app.params.data && typeof app.params.data === 'function') {\n Utils.extend(app.data, app.params.data.bind(app)());\n } else if (app.params.data) {\n Utils.extend(app.data, app.params.data);\n }\n // Methods\n app.methods = {};\n if (app.params.methods) {\n Object.keys(app.params.methods).forEach(function (methodName) {\n if (typeof app.params.methods[methodName] === 'function') {\n app.methods[methodName] = app.params.methods[methodName].bind(app);\n } else {\n app.methods[methodName] = app.params.methods[methodName];\n }\n });\n }\n // Init class\n Utils.nextFrame(function () {\n app.root.removeClass('framework7-initializing');\n });\n // Emit, init other modules\n app.initialized = true;\n app.emit('init');\n\n return app;\n };\n // eslint-disable-next-line\n prototypeAccessors.$.get = function () {\n return $$1;\n };\n // eslint-disable-next-line\n prototypeAccessors.t7.get = function () {\n return Template7;\n };\n\n staticAccessors.Dom7.get = function () {\n return $$1;\n };\n\n staticAccessors.$.get = function () {\n return $$1;\n };\n\n staticAccessors.Template7.get = function () {\n return Template7;\n };\n\n staticAccessors.Class.get = function () {\n return Framework7Class$$1;\n };\n\n Object.defineProperties( Framework7.prototype, prototypeAccessors );\n Object.defineProperties( Framework7, staticAccessors );\n\n return Framework7;\n }(Framework7Class));\n\n var DeviceModule = {\n name: 'device',\n proto: {\n device: Device,\n },\n static: {\n device: Device,\n },\n on: {\n init: function init() {\n var classNames = [];\n var html = doc.querySelector('html');\n if (!html) { return; }\n // Pixel Ratio\n classNames.push((\"device-pixel-ratio-\" + (Math.floor(Device.pixelRatio))));\n if (Device.pixelRatio >= 2) {\n classNames.push('device-retina');\n }\n // OS classes\n if (Device.os) {\n classNames.push(\n (\"device-\" + (Device.os)),\n (\"device-\" + (Device.os) + \"-\" + (Device.osVersion.split('.')[0])),\n (\"device-\" + (Device.os) + \"-\" + (Device.osVersion.replace(/\\./g, '-')))\n );\n if (Device.os === 'ios') {\n var major = parseInt(Device.osVersion.split('.')[0], 10);\n for (var i = major - 1; i >= 6; i -= 1) {\n classNames.push((\"device-ios-gt-\" + i));\n }\n if (Device.iphoneX) {\n classNames.push('device-iphone-x');\n }\n }\n } else if (Device.desktop) {\n classNames.push('device-desktop');\n }\n if (Device.cordova || Device.phonegap) {\n classNames.push('device-cordova');\n }\n\n // Add html classes\n classNames.forEach(function (className) {\n html.classList.add(className);\n });\n },\n },\n };\n\n var Support = (function Support() {\n var positionSticky = (function supportPositionSticky() {\n var support = false;\n var div = doc.createElement('div');\n ('sticky -webkit-sticky -moz-sticky').split(' ').forEach(function (prop) {\n if (support) { return; }\n div.style.position = prop;\n if (div.style.position === prop) {\n support = true;\n }\n });\n return support;\n }());\n\n var testDiv = doc.createElement('div');\n\n return {\n positionSticky: positionSticky,\n touch: (function checkTouch() {\n return !!(('ontouchstart' in win) || (win.DocumentTouch && doc instanceof win.DocumentTouch));\n }()),\n\n pointerEvents: !!(win.navigator.pointerEnabled || win.PointerEvent),\n prefixedPointerEvents: !!win.navigator.msPointerEnabled,\n\n transition: (function checkTransition() {\n var style = testDiv.style;\n return ('transition' in style || 'webkitTransition' in style || 'MozTransition' in style);\n }()),\n transforms3d: (win.Modernizr && win.Modernizr.csstransforms3d === true) || (function checkTransforms3d() {\n var style = testDiv.style;\n return ('webkitPerspective' in style || 'MozPerspective' in style || 'OPerspective' in style || 'MsPerspective' in style || 'perspective' in style);\n }()),\n\n flexbox: (function checkFlexbox() {\n var div = doc.createElement('div').style;\n var styles = ('alignItems webkitAlignItems webkitBoxAlign msFlexAlign mozBoxAlign webkitFlexDirection msFlexDirection mozBoxDirection mozBoxOrient webkitBoxDirection webkitBoxOrient').split(' ');\n for (var i = 0; i < styles.length; i += 1) {\n if (styles[i] in div) { return true; }\n }\n return false;\n }()),\n\n observer: (function checkObserver() {\n return ('MutationObserver' in win || 'WebkitMutationObserver' in win);\n }()),\n\n passiveListener: (function checkPassiveListener() {\n var supportsPassive = false;\n try {\n var opts = Object.defineProperty({}, 'passive', {\n // eslint-disable-next-line\n get: function get() {\n supportsPassive = true;\n },\n });\n win.addEventListener('testPassiveListener', null, opts);\n } catch (e) {\n // No support\n }\n return supportsPassive;\n }()),\n\n gestures: (function checkGestures() {\n return 'ongesturestart' in win;\n }()),\n };\n }());\n\n var SupportModule = {\n name: 'support',\n proto: {\n support: Support,\n },\n static: {\n support: Support,\n },\n on: {\n init: function init() {\n var html = doc.querySelector('html');\n if (!html) { return; }\n var classNames = [];\n if (Support.positionSticky) {\n classNames.push('support-position-sticky');\n }\n // Add html classes\n classNames.forEach(function (className) {\n html.classList.add(className);\n });\n },\n },\n };\n\n var UtilsModule = {\n name: 'utils',\n proto: {\n utils: Utils,\n },\n static: {\n utils: Utils,\n },\n };\n\n var ResizeModule = {\n name: 'resize',\n instance: {\n getSize: function getSize() {\n var app = this;\n if (!app.root[0]) { return { width: 0, height: 0, left: 0, top: 0 }; }\n var offset = app.root.offset();\n var ref = [app.root[0].offsetWidth, app.root[0].offsetHeight, offset.left, offset.top];\n var width = ref[0];\n var height = ref[1];\n var left = ref[2];\n var top = ref[3];\n app.width = width;\n app.height = height;\n app.left = left;\n app.top = top;\n return { width: width, height: height, left: left, top: top };\n },\n },\n on: {\n init: function init() {\n var app = this;\n\n // Get Size\n app.getSize();\n\n // Emit resize\n win.addEventListener('resize', function () {\n app.emit('resize');\n }, false);\n\n // Emit orientationchange\n win.addEventListener('orientationchange', function () {\n app.emit('orientationchange');\n });\n },\n orientationchange: function orientationchange() {\n var app = this;\n if (app.device && app.device.minimalUi) {\n if (win.orientation === 90 || win.orientation === -90) {\n doc.body.scrollTop = 0;\n }\n }\n // Fix iPad weird body scroll\n if (app.device.ipad) {\n doc.body.scrollLeft = 0;\n setTimeout(function () {\n doc.body.scrollLeft = 0;\n }, 0);\n }\n },\n resize: function resize() {\n var app = this;\n app.getSize();\n },\n },\n };\n\n var globals = {};\n var jsonpRequests = 0;\n\n function Request(requestOptions) {\n var globalsNoCallbacks = Utils.extend({}, globals);\n ('beforeCreate beforeOpen beforeSend error complete success statusCode').split(' ').forEach(function (callbackName) {\n delete globalsNoCallbacks[callbackName];\n });\n var defaults = Utils.extend({\n url: win.location.toString(),\n method: 'GET',\n data: false,\n async: true,\n cache: true,\n user: '',\n password: '',\n headers: {},\n xhrFields: {},\n statusCode: {},\n processData: true,\n dataType: 'text',\n contentType: 'application/x-www-form-urlencoded',\n timeout: 0,\n }, globalsNoCallbacks);\n\n var options = Utils.extend({}, defaults, requestOptions);\n var proceedRequest;\n\n // Function to run XHR callbacks and events\n function fireCallback(callbackName) {\n var data = [], len = arguments.length - 1;\n while ( len-- > 0 ) data[ len ] = arguments[ len + 1 ];\n\n /*\n Callbacks:\n beforeCreate (options),\n beforeOpen (xhr, options),\n beforeSend (xhr, options),\n error (xhr, status),\n complete (xhr, stautus),\n success (response, status, xhr),\n statusCode ()\n */\n var globalCallbackValue;\n var optionCallbackValue;\n if (globals[callbackName]) {\n globalCallbackValue = globals[callbackName].apply(globals, data);\n }\n if (options[callbackName]) {\n optionCallbackValue = options[callbackName].apply(options, data);\n }\n if (typeof globalCallbackValue !== 'boolean') { globalCallbackValue = true; }\n if (typeof optionCallbackValue !== 'boolean') { optionCallbackValue = true; }\n return (globalCallbackValue && optionCallbackValue);\n }\n\n // Before create callback\n proceedRequest = fireCallback('beforeCreate', options);\n if (proceedRequest === false) { return undefined; }\n\n // For jQuery guys\n if (options.type) { options.method = options.type; }\n\n // Parameters Prefix\n var paramsPrefix = options.url.indexOf('?') >= 0 ? '&' : '?';\n\n // UC method\n var method = options.method.toUpperCase();\n\n // Data to modify GET URL\n if ((method === 'GET' || method === 'HEAD' || method === 'OPTIONS' || method === 'DELETE') && options.data) {\n var stringData;\n if (typeof options.data === 'string') {\n // Should be key=value string\n if (options.data.indexOf('?') >= 0) { stringData = options.data.split('?')[1]; }\n else { stringData = options.data; }\n } else {\n // Should be key=value object\n stringData = Utils.serializeObject(options.data);\n }\n if (stringData.length) {\n options.url += paramsPrefix + stringData;\n if (paramsPrefix === '?') { paramsPrefix = '&'; }\n }\n }\n\n // JSONP\n if (options.dataType === 'json' && options.url.indexOf('callback=') >= 0) {\n var callbackName = \"f7jsonp_\" + (Date.now() + ((jsonpRequests += 1)));\n var abortTimeout;\n var callbackSplit = options.url.split('callback=');\n var requestUrl = (callbackSplit[0]) + \"callback=\" + callbackName;\n if (callbackSplit[1].indexOf('&') >= 0) {\n var addVars = callbackSplit[1].split('&').filter(function (el) { return el.indexOf('=') > 0; }).join('&');\n if (addVars.length > 0) { requestUrl += \"&\" + addVars; }\n }\n\n // Create script\n var script = doc.createElement('script');\n script.type = 'text/javascript';\n script.onerror = function onerror() {\n clearTimeout(abortTimeout);\n fireCallback('error', null, 'scripterror');\n fireCallback('complete', null, 'scripterror');\n };\n script.src = requestUrl;\n\n // Handler\n win[callbackName] = function jsonpCallback(data) {\n clearTimeout(abortTimeout);\n fireCallback('success', data);\n script.parentNode.removeChild(script);\n script = null;\n delete win[callbackName];\n };\n doc.querySelector('head').appendChild(script);\n\n if (options.timeout > 0) {\n abortTimeout = setTimeout(function () {\n script.parentNode.removeChild(script);\n script = null;\n fireCallback('error', null, 'timeout');\n }, options.timeout);\n }\n\n return undefined;\n }\n\n // Cache for GET/HEAD requests\n if (method === 'GET' || method === 'HEAD' || method === 'OPTIONS' || method === 'DELETE') {\n if (options.cache === false) {\n options.url += paramsPrefix + \"_nocache\" + (Date.now());\n }\n }\n\n // Create XHR\n var xhr = new XMLHttpRequest();\n\n // Save Request URL\n xhr.requestUrl = options.url;\n xhr.requestParameters = options;\n\n // Before open callback\n proceedRequest = fireCallback('beforeOpen', xhr, options);\n if (proceedRequest === false) { return xhr; }\n\n // Open XHR\n xhr.open(method, options.url, options.async, options.user, options.password);\n\n // Create POST Data\n var postData = null;\n\n if ((method === 'POST' || method === 'PUT' || method === 'PATCH') && options.data) {\n if (options.processData) {\n var postDataInstances = [ArrayBuffer, Blob, Document, FormData];\n // Post Data\n if (postDataInstances.indexOf(options.data.constructor) >= 0) {\n postData = options.data;\n } else {\n // POST Headers\n var boundary = \"---------------------------\" + (Date.now().toString(16));\n\n if (options.contentType === 'multipart/form-data') {\n xhr.setRequestHeader('Content-Type', (\"multipart/form-data; boundary=\" + boundary));\n } else {\n xhr.setRequestHeader('Content-Type', options.contentType);\n }\n postData = '';\n var data$1 = Utils.serializeObject(options.data);\n if (options.contentType === 'multipart/form-data') {\n data$1 = data$1.split('&');\n var newData = [];\n for (var i = 0; i < data$1.length; i += 1) {\n newData.push((\"Content-Disposition: form-data; name=\\\"\" + (data$1[i].split('=')[0]) + \"\\\"\\r\\n\\r\\n\" + (data$1[i].split('=')[1]) + \"\\r\\n\"));\n }\n postData = \"--\" + boundary + \"\\r\\n\" + (newData.join((\"--\" + boundary + \"\\r\\n\"))) + \"--\" + boundary + \"--\\r\\n\";\n } else {\n postData = data$1;\n }\n }\n } else {\n postData = options.data;\n xhr.setRequestHeader('Content-Type', options.contentType);\n }\n }\n\n // Additional headers\n if (options.headers) {\n Object.keys(options.headers).forEach(function (headerName) {\n xhr.setRequestHeader(headerName, options.headers[headerName]);\n });\n }\n\n // Check for crossDomain\n if (typeof options.crossDomain === 'undefined') {\n // eslint-disable-next-line\n options.crossDomain = /^([\\w-]+:)?\\/\\/([^\\/]+)/.test(options.url) && RegExp.$2 !== win.location.host;\n }\n\n if (!options.crossDomain) {\n xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');\n }\n\n if (options.xhrFields) {\n Utils.extend(xhr, options.xhrFields);\n }\n\n var xhrTimeout;\n\n // Handle XHR\n xhr.onload = function onload() {\n if (xhrTimeout) { clearTimeout(xhrTimeout); }\n if ((xhr.status >= 200 && xhr.status < 300) || xhr.status === 0) {\n var responseData;\n if (options.dataType === 'json') {\n var parseError;\n try {\n responseData = JSON.parse(xhr.responseText);\n } catch (err) {\n parseError = true;\n }\n if (!parseError) {\n fireCallback('success', responseData, xhr.status, xhr);\n } else {\n fireCallback('error', xhr, 'parseerror');\n }\n } else {\n responseData = xhr.responseType === 'text' || xhr.responseType === '' ? xhr.responseText : xhr.response;\n fireCallback('success', responseData, xhr.status, xhr);\n }\n } else {\n fireCallback('error', xhr, xhr.status);\n }\n if (options.statusCode) {\n if (globals.statusCode && globals.statusCode[xhr.status]) { globals.statusCode[xhr.status](xhr); }\n if (options.statusCode[xhr.status]) { options.statusCode[xhr.status](xhr); }\n }\n fireCallback('complete', xhr, xhr.status);\n };\n\n xhr.onerror = function onerror() {\n if (xhrTimeout) { clearTimeout(xhrTimeout); }\n fireCallback('error', xhr, xhr.status);\n fireCallback('complete', xhr, 'error');\n };\n\n // Timeout\n if (options.timeout > 0) {\n xhr.onabort = function onabort() {\n if (xhrTimeout) { clearTimeout(xhrTimeout); }\n };\n xhrTimeout = setTimeout(function () {\n xhr.abort();\n fireCallback('error', xhr, 'timeout');\n fireCallback('complete', xhr, 'timeout');\n }, options.timeout);\n }\n\n // Ajax start callback\n proceedRequest = fireCallback('beforeSend', xhr, options);\n if (proceedRequest === false) { return xhr; }\n\n // Send XHR\n xhr.send(postData);\n\n // Return XHR object\n return xhr;\n }\n function RequestShortcut(method) {\n var assign, assign$1;\n\n var args = [], len = arguments.length - 1;\n while ( len-- > 0 ) args[ len ] = arguments[ len + 1 ];\n var ref = [];\n var url = ref[0];\n var data = ref[1];\n var success = ref[2];\n var error = ref[3];\n var dataType = ref[4];\n if (typeof args[1] === 'function') {\n (assign = args, url = assign[0], success = assign[1], error = assign[2], dataType = assign[3]);\n } else {\n (assign$1 = args, url = assign$1[0], data = assign$1[1], success = assign$1[2], error = assign$1[3], dataType = assign$1[4]);\n }\n [success, error].forEach(function (callback) {\n if (typeof callback === 'string') {\n dataType = callback;\n if (callback === success) { success = undefined; }\n else { error = undefined; }\n }\n });\n dataType = dataType || (method === 'json' || method === 'postJSON' ? 'json' : undefined);\n var requestOptions = {\n url: url,\n method: method === 'post' || method === 'postJSON' ? 'POST' : 'GET',\n data: data,\n success: success,\n error: error,\n dataType: dataType,\n };\n if (method === 'postJSON') {\n Utils.extend(requestOptions, {\n contentType: 'application/json',\n processData: false,\n crossDomain: true,\n data: typeof data === 'string' ? data : JSON.stringify(data),\n });\n }\n return Request(requestOptions);\n }\n Request.get = function get() {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return RequestShortcut.apply(void 0, [ 'get' ].concat( args ));\n };\n Request.post = function post() {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return RequestShortcut.apply(void 0, [ 'post' ].concat( args ));\n };\n Request.json = function json() {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return RequestShortcut.apply(void 0, [ 'json' ].concat( args ));\n };\n Request.getJSON = Request.json;\n Request.postJSON = function postJSON() {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return RequestShortcut.apply(void 0, [ 'postJSON' ].concat( args ));\n };\n Request.setup = function setup(options) {\n if (options.type && !options.method) {\n Utils.extend(options, { method: options.type });\n }\n Utils.extend(globals, options);\n };\n\n /* eslint no-param-reassign: \"off\" */\n\n var RequestModule = {\n name: 'request',\n proto: {\n request: Request,\n },\n static: {\n request: Request,\n },\n };\n\n function initTouch() {\n var app = this;\n var params = app.params.touch;\n var useRipple = app.theme === 'md' && params.materialRipple;\n\n if (Device.ios && Device.webView) {\n // Strange hack required for iOS 8 webview to work on inputs\n win.addEventListener('touchstart', function () {});\n }\n\n var touchStartX;\n var touchStartY;\n var touchStartTime;\n var targetElement;\n var trackClick;\n var activeSelection;\n var scrollParent;\n var lastClickTime;\n var isMoved;\n var tapHoldFired;\n var tapHoldTimeout;\n\n var activableElement;\n var activeTimeout;\n\n var needsFastClick;\n var needsFastClickTimeOut;\n\n var rippleWave;\n var rippleTarget;\n var rippleTimeout;\n\n function findActivableElement(el) {\n var target = $$1(el);\n var parents = target.parents(params.activeStateElements);\n var activable;\n if (target.is(params.activeStateElements)) {\n activable = target;\n }\n if (parents.length > 0) {\n activable = activable ? activable.add(parents) : parents;\n }\n return activable || target;\n }\n\n function isInsideScrollableView(el) {\n var pageContent = el.parents('.page-content, .panel');\n\n if (pageContent.length === 0) {\n return false;\n }\n\n // This event handler covers the \"tap to stop scrolling\".\n if (pageContent.prop('scrollHandlerSet') !== 'yes') {\n pageContent.on('scroll', function () {\n clearTimeout(activeTimeout);\n clearTimeout(rippleTimeout);\n });\n pageContent.prop('scrollHandlerSet', 'yes');\n }\n\n return true;\n }\n function addActive() {\n if (!activableElement) { return; }\n activableElement.addClass('active-state');\n }\n function removeActive() {\n if (!activableElement) { return; }\n activableElement.removeClass('active-state');\n activableElement = null;\n }\n function isFormElement(el) {\n var nodes = ('input select textarea label').split(' ');\n if (el.nodeName && nodes.indexOf(el.nodeName.toLowerCase()) >= 0) { return true; }\n return false;\n }\n function androidNeedsBlur(el) {\n var noBlur = ('button input textarea select').split(' ');\n if (doc.activeElement && el !== doc.activeElement && doc.activeElement !== doc.body) {\n if (noBlur.indexOf(el.nodeName.toLowerCase()) >= 0) {\n return false;\n }\n return true;\n }\n return false;\n }\n function targetNeedsFastClick(el) {\n /*\n if (\n Device.ios\n &&\n (\n Device.osVersion.split('.')[0] > 9\n ||\n (Device.osVersion.split('.')[0] * 1 === 9 && Device.osVersion.split('.')[1] >= 1)\n )\n ) {\n return false;\n }\n */\n var $el = $$1(el);\n if (el.nodeName.toLowerCase() === 'input' && (el.type === 'file' || el.type === 'range')) { return false; }\n if (el.nodeName.toLowerCase() === 'select' && Device.android) { return false; }\n if ($el.hasClass('no-fastclick') || $el.parents('.no-fastclick').length > 0) { return false; }\n if (params.fastClicksExclude && $el.is(params.fastClicksExclude)) { return false; }\n return true;\n }\n function targetNeedsFocus(el) {\n if (doc.activeElement === el) {\n return false;\n }\n var tag = el.nodeName.toLowerCase();\n var skipInputs = ('button checkbox file image radio submit').split(' ');\n if (el.disabled || el.readOnly) { return false; }\n if (tag === 'textarea') { return true; }\n if (tag === 'select') {\n if (Device.android) { return false; }\n return true;\n }\n if (tag === 'input' && skipInputs.indexOf(el.type) < 0) { return true; }\n return false;\n }\n function targetNeedsPrevent(el) {\n var $el = $$1(el);\n var prevent = true;\n if ($el.is('label') || $el.parents('label').length > 0) {\n if (Device.android) {\n prevent = false;\n } else if (Device.ios && $el.is('input')) {\n prevent = true;\n } else { prevent = false; }\n }\n return prevent;\n }\n\n // Ripple handlers\n function findRippleElement(el) {\n var rippleElements = params.materialRippleElements;\n var $el = $$1(el);\n if ($el.is(rippleElements)) {\n if ($el.hasClass('no-ripple')) {\n return false;\n }\n return $el;\n }\n if ($el.parents(rippleElements).length > 0) {\n var rippleParent = $el.parents(rippleElements).eq(0);\n if (rippleParent.hasClass('no-ripple')) {\n return false;\n }\n return rippleParent;\n }\n return false;\n }\n function createRipple($el, x, y) {\n if (!$el) { return; }\n rippleWave = app.touchRipple.create($el, x, y);\n }\n\n function removeRipple() {\n if (!rippleWave) { return; }\n rippleWave.remove();\n rippleWave = undefined;\n rippleTarget = undefined;\n }\n function rippleTouchStart(el) {\n rippleTarget = findRippleElement(el);\n if (!rippleTarget || rippleTarget.length === 0) {\n rippleTarget = undefined;\n return;\n }\n if (!isInsideScrollableView(rippleTarget)) {\n createRipple(rippleTarget, touchStartX, touchStartY);\n } else {\n rippleTimeout = setTimeout(function () {\n createRipple(rippleTarget, touchStartX, touchStartY);\n }, 80);\n }\n }\n function rippleTouchMove() {\n clearTimeout(rippleTimeout);\n removeRipple();\n }\n function rippleTouchEnd() {\n if (rippleWave) {\n removeRipple();\n } else if (rippleTarget && !isMoved) {\n clearTimeout(rippleTimeout);\n createRipple(rippleTarget, touchStartX, touchStartY);\n setTimeout(removeRipple, 0);\n } else {\n removeRipple();\n }\n }\n\n // Mouse Handlers\n function handleMouseDown(e) {\n findActivableElement(e.target).addClass('active-state');\n if ('which' in e && e.which === 3) {\n setTimeout(function () {\n $$1('.active-state').removeClass('active-state');\n }, 0);\n }\n if (useRipple) {\n touchStartX = e.pageX;\n touchStartY = e.pageY;\n rippleTouchStart(e.target, e.pageX, e.pageY);\n }\n }\n function handleMouseMove() {\n $$1('.active-state').removeClass('active-state');\n if (useRipple) {\n rippleTouchMove();\n }\n }\n function handleMouseUp() {\n $$1('.active-state').removeClass('active-state');\n if (useRipple) {\n rippleTouchEnd();\n }\n }\n\n // Send Click\n function sendClick(e) {\n var touch = e.changedTouches[0];\n var evt = doc.createEvent('MouseEvents');\n var eventType = 'click';\n if (Device.android && targetElement.nodeName.toLowerCase() === 'select') {\n eventType = 'mousedown';\n }\n evt.initMouseEvent(eventType, true, true, win, 1, touch.screenX, touch.screenY, touch.clientX, touch.clientY, false, false, false, false, 0, null);\n evt.forwardedTouchEvent = true;\n\n if (app.device.ios && win.navigator.standalone) {\n // Fix the issue happens in iOS home screen apps where the wrong element is selected during a momentum scroll.\n // Upon tapping, we give the scrolling time to stop, then we grab the element based where the user tapped.\n setTimeout(function () {\n targetElement = doc.elementFromPoint(e.changedTouches[0].clientX, e.changedTouches[0].clientY);\n targetElement.dispatchEvent(evt);\n }, 10);\n } else {\n targetElement.dispatchEvent(evt);\n }\n }\n\n // Touch Handlers\n function handleTouchStart(e) {\n var this$1 = this;\n\n isMoved = false;\n tapHoldFired = false;\n if (e.targetTouches.length > 1) {\n if (activableElement) { removeActive(); }\n return true;\n }\n if (e.touches.length > 1 && activableElement) {\n removeActive();\n }\n if (params.tapHold) {\n if (tapHoldTimeout) { clearTimeout(tapHoldTimeout); }\n tapHoldTimeout = setTimeout(function () {\n if (e && e.touches && e.touches.length > 1) { return; }\n tapHoldFired = true;\n e.preventDefault();\n $$1(e.target).trigger('taphold');\n }, params.tapHoldDelay);\n }\n if (needsFastClickTimeOut) { clearTimeout(needsFastClickTimeOut); }\n needsFastClick = targetNeedsFastClick(e.target);\n\n if (!needsFastClick) {\n trackClick = false;\n return true;\n }\n if (Device.ios || (Device.android && 'getSelection' in win)) {\n var selection = win.getSelection();\n if (\n selection.rangeCount\n && selection.focusNode !== doc.body\n && (!selection.isCollapsed || doc.activeElement === selection.focusNode)\n ) {\n activeSelection = true;\n return true;\n }\n\n activeSelection = false;\n }\n if (Device.android) {\n if (androidNeedsBlur(e.target)) {\n doc.activeElement.blur();\n }\n }\n\n trackClick = true;\n targetElement = e.target;\n touchStartTime = (new Date()).getTime();\n touchStartX = e.targetTouches[0].pageX;\n touchStartY = e.targetTouches[0].pageY;\n\n // Detect scroll parent\n if (Device.ios) {\n scrollParent = undefined;\n $$1(targetElement).parents().each(function () {\n var parent = this$1;\n if (parent.scrollHeight > parent.offsetHeight && !scrollParent) {\n scrollParent = parent;\n scrollParent.f7ScrollTop = scrollParent.scrollTop;\n }\n });\n }\n if ((touchStartTime - lastClickTime) < params.fastClicksDelayBetweenClicks) {\n e.preventDefault();\n }\n\n if (params.activeState) {\n activableElement = findActivableElement(targetElement);\n // If it's inside a scrollable view, we don't trigger active-state yet,\n // because it can be a scroll instead. Based on the link:\n // http://labnote.beedesk.com/click-scroll-and-pseudo-active-on-mobile-webk\n if (!isInsideScrollableView(activableElement)) {\n addActive();\n } else {\n activeTimeout = setTimeout(addActive, 80);\n }\n }\n if (useRipple) {\n rippleTouchStart(targetElement, touchStartX, touchStartY);\n }\n return true;\n }\n function handleTouchMove(e) {\n if (!trackClick) { return; }\n var distance = params.fastClicksDistanceThreshold;\n if (distance) {\n var pageX = e.targetTouches[0].pageX;\n var pageY = e.targetTouches[0].pageY;\n if (Math.abs(pageX - touchStartX) > distance || Math.abs(pageY - touchStartY) > distance) {\n isMoved = true;\n }\n } else {\n isMoved = true;\n }\n if (isMoved) {\n trackClick = false;\n targetElement = null;\n isMoved = true;\n if (params.tapHold) {\n clearTimeout(tapHoldTimeout);\n }\n if (params.activeState) {\n clearTimeout(activeTimeout);\n removeActive();\n }\n if (useRipple) {\n rippleTouchMove();\n }\n }\n }\n function handleTouchEnd(e) {\n clearTimeout(activeTimeout);\n clearTimeout(tapHoldTimeout);\n\n var touchEndTime = (new Date()).getTime();\n\n if (!trackClick) {\n if (!activeSelection && needsFastClick) {\n if (!(Device.android && !e.cancelable) && e.cancelable) {\n e.preventDefault();\n }\n }\n return true;\n }\n\n if (doc.activeElement === e.target) {\n if (params.activeState) { removeActive(); }\n if (useRipple) {\n rippleTouchEnd();\n }\n return true;\n }\n\n if (!activeSelection) {\n e.preventDefault();\n }\n\n if ((touchEndTime - lastClickTime) < params.fastClicksDelayBetweenClicks) {\n setTimeout(removeActive, 0);\n return true;\n }\n\n lastClickTime = touchEndTime;\n\n trackClick = false;\n\n if (Device.ios && scrollParent) {\n if (scrollParent.scrollTop !== scrollParent.f7ScrollTop) {\n return false;\n }\n }\n\n // Add active-state here because, in a very fast tap, the timeout didn't\n // have the chance to execute. Removing active-state in a timeout gives\n // the chance to the animation execute.\n if (params.activeState) {\n addActive();\n setTimeout(removeActive, 0);\n }\n // Remove Ripple\n if (useRipple) {\n rippleTouchEnd();\n }\n\n // Trigger focus when required\n if (targetNeedsFocus(targetElement)) {\n if (Device.ios && Device.webView) {\n targetElement.focus();\n return false;\n }\n\n targetElement.focus();\n }\n\n // Blur active elements\n if (doc.activeElement && targetElement !== doc.activeElement && doc.activeElement !== doc.body && targetElement.nodeName.toLowerCase() !== 'label') {\n doc.activeElement.blur();\n }\n\n // Send click\n e.preventDefault();\n if (params.tapHoldPreventClicks && tapHoldFired) {\n return false;\n }\n sendClick(e);\n return false;\n }\n function handleTouchCancel() {\n trackClick = false;\n targetElement = null;\n\n // Remove Active State\n clearTimeout(activeTimeout);\n clearTimeout(tapHoldTimeout);\n if (params.activeState) {\n removeActive();\n }\n\n // Remove Ripple\n if (useRipple) {\n rippleTouchEnd();\n }\n }\n\n function handleClick(e) {\n var allowClick = false;\n if (trackClick) {\n targetElement = null;\n trackClick = false;\n return true;\n }\n if ((e.target.type === 'submit' && e.detail === 0) || e.target.type === 'file') {\n return true;\n }\n if (!targetElement) {\n if (!isFormElement(e.target)) {\n allowClick = true;\n }\n }\n if (!needsFastClick) {\n allowClick = true;\n }\n if (doc.activeElement === targetElement) {\n allowClick = true;\n }\n if (e.forwardedTouchEvent) {\n allowClick = true;\n }\n if (!e.cancelable) {\n allowClick = true;\n }\n if (params.tapHold && params.tapHoldPreventClicks && tapHoldFired) {\n allowClick = false;\n }\n if (!allowClick) {\n e.stopImmediatePropagation();\n e.stopPropagation();\n if (targetElement) {\n if (targetNeedsPrevent(targetElement) || isMoved) {\n e.preventDefault();\n }\n } else {\n e.preventDefault();\n }\n targetElement = null;\n }\n needsFastClickTimeOut = setTimeout(function () {\n needsFastClick = false;\n }, (Device.ios || Device.androidChrome ? 100 : 400));\n\n if (params.tapHold) {\n tapHoldTimeout = setTimeout(function () {\n tapHoldFired = false;\n }, (Device.ios || Device.androidChrome ? 100 : 400));\n }\n\n return allowClick;\n }\n\n function emitAppTouchEvent(name, e) {\n app.emit({\n events: name,\n data: [e],\n });\n }\n function appClick(e) {\n emitAppTouchEvent('click', e);\n }\n function appTouchStartActive(e) {\n emitAppTouchEvent('touchstart touchstart:active', e);\n }\n function appTouchMoveActive(e) {\n emitAppTouchEvent('touchmove touchmove:active', e);\n }\n function appTouchEndActive(e) {\n emitAppTouchEvent('touchend touchend:active', e);\n }\n function appTouchStartPassive(e) {\n emitAppTouchEvent('touchstart:passive', e);\n }\n function appTouchMovePassive(e) {\n emitAppTouchEvent('touchmove:passive', e);\n }\n function appTouchEndPassive(e) {\n emitAppTouchEvent('touchend:passive', e);\n }\n\n var passiveListener = Support.passiveListener ? { passive: true } : false;\n var activeListener = Support.passiveListener ? { passive: false } : false;\n\n doc.addEventListener('click', appClick, true);\n\n if (Support.passiveListener) {\n doc.addEventListener(app.touchEvents.start, appTouchStartActive, activeListener);\n doc.addEventListener(app.touchEvents.move, appTouchMoveActive, activeListener);\n doc.addEventListener(app.touchEvents.end, appTouchEndActive, activeListener);\n\n doc.addEventListener(app.touchEvents.start, appTouchStartPassive, passiveListener);\n doc.addEventListener(app.touchEvents.move, appTouchMovePassive, passiveListener);\n doc.addEventListener(app.touchEvents.end, appTouchEndPassive, passiveListener);\n } else {\n doc.addEventListener(app.touchEvents.start, function (e) {\n appTouchStartActive(e);\n appTouchStartPassive(e);\n }, false);\n doc.addEventListener(app.touchEvents.move, function (e) {\n appTouchMoveActive(e);\n appTouchMovePassive(e);\n }, false);\n doc.addEventListener(app.touchEvents.end, function (e) {\n appTouchEndActive(e);\n appTouchEndPassive(e);\n }, false);\n }\n\n if (Support.touch) {\n app.on('click', handleClick);\n app.on('touchstart', handleTouchStart);\n app.on('touchmove', handleTouchMove);\n app.on('touchend', handleTouchEnd);\n doc.addEventListener('touchcancel', handleTouchCancel, { passive: true });\n } else if (params.activeState) {\n app.on('touchstart', handleMouseDown);\n app.on('touchmove', handleMouseMove);\n app.on('touchend', handleMouseUp);\n }\n doc.addEventListener('contextmenu', function (e) {\n if (params.disableContextMenu && (Device.ios || Device.android || Device.cordova)) {\n e.preventDefault();\n }\n if (useRipple) {\n if (activableElement) { removeActive(); }\n rippleTouchEnd();\n }\n });\n }\n\n var TouchModule = {\n name: 'touch',\n params: {\n touch: {\n // Fast clicks\n fastClicks: true,\n fastClicksDistanceThreshold: 10,\n fastClicksDelayBetweenClicks: 50,\n fastClicksExclude: '', // CSS selector\n // ContextMenu\n disableContextMenu: true,\n // Tap Hold\n tapHold: false,\n tapHoldDelay: 750,\n tapHoldPreventClicks: true,\n // Active State\n activeState: true,\n activeStateElements: 'a, button, label, span, .actions-button, .stepper-button, .stepper-button-plus, .stepper-button-minus',\n materialRipple: true,\n materialRippleElements: '.ripple, .link, .item-link, .links-list a, .button, button, .input-clear-button, .dialog-button, .tab-link, .item-radio, .item-checkbox, .actions-button, .searchbar-disable-button, .fab a, .checkbox, .radio, .data-table .sortable-cell:not(.input-cell), .notification-close-button, .stepper-button, .stepper-button-minus, .stepper-button-plus',\n },\n },\n instance: {\n touchEvents: {\n start: Support.touch ? 'touchstart' : 'mousedown',\n move: Support.touch ? 'touchmove' : 'mousemove',\n end: Support.touch ? 'touchend' : 'mouseup',\n },\n },\n on: {\n init: initTouch,\n },\n };\n\n /**\n * Expose `pathToRegexp`.\n */\n var pathToRegexp_1 = pathToRegexp;\n var parse_1 = parse;\n var compile_1 = compile;\n var tokensToFunction_1 = tokensToFunction;\n var tokensToRegExp_1 = tokensToRegExp;\n\n /**\n * Default configs.\n */\n var DEFAULT_DELIMITER = '/';\n var DEFAULT_DELIMITERS = './';\n\n /**\n * The main path matching regexp utility.\n *\n * @type {RegExp}\n */\n var PATH_REGEXP = new RegExp([\n // Match escaped characters that would otherwise appear in future matches.\n // This allows the user to escape special characters that won't transform.\n '(\\\\\\\\.)',\n // Match Express-style parameters and un-named parameters with a prefix\n // and optional suffixes. Matches appear as:\n //\n // \"/:test(\\\\d+)?\" => [\"/\", \"test\", \"\\d+\", undefined, \"?\"]\n // \"/route(\\\\d+)\" => [undefined, undefined, undefined, \"\\d+\", undefined]\n '(?:\\\\:(\\\\w+)(?:\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))?|\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))([+*?])?'\n ].join('|'), 'g');\n\n /**\n * Parse a string for the raw tokens.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!Array}\n */\n function parse (str, options) {\n var tokens = [];\n var key = 0;\n var index = 0;\n var path = '';\n var defaultDelimiter = (options && options.delimiter) || DEFAULT_DELIMITER;\n var delimiters = (options && options.delimiters) || DEFAULT_DELIMITERS;\n var pathEscaped = false;\n var res;\n\n while ((res = PATH_REGEXP.exec(str)) !== null) {\n var m = res[0];\n var escaped = res[1];\n var offset = res.index;\n path += str.slice(index, offset);\n index = offset + m.length;\n\n // Ignore already escaped sequences.\n if (escaped) {\n path += escaped[1];\n pathEscaped = true;\n continue\n }\n\n var prev = '';\n var next = str[index];\n var name = res[2];\n var capture = res[3];\n var group = res[4];\n var modifier = res[5];\n\n if (!pathEscaped && path.length) {\n var k = path.length - 1;\n\n if (delimiters.indexOf(path[k]) > -1) {\n prev = path[k];\n path = path.slice(0, k);\n }\n }\n\n // Push the current path onto the tokens.\n if (path) {\n tokens.push(path);\n path = '';\n pathEscaped = false;\n }\n\n var partial = prev !== '' && next !== undefined && next !== prev;\n var repeat = modifier === '+' || modifier === '*';\n var optional = modifier === '?' || modifier === '*';\n var delimiter = prev || defaultDelimiter;\n var pattern = capture || group;\n\n tokens.push({\n name: name || key++,\n prefix: prev,\n delimiter: delimiter,\n optional: optional,\n repeat: repeat,\n partial: partial,\n pattern: pattern ? escapeGroup(pattern) : '[^' + escapeString(delimiter) + ']+?'\n });\n }\n\n // Push any remaining characters.\n if (path || index < str.length) {\n tokens.push(path + str.substr(index));\n }\n\n return tokens\n }\n\n /**\n * Compile a string to a template function for the path.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!function(Object=, Object=)}\n */\n function compile (str, options) {\n return tokensToFunction(parse(str, options))\n }\n\n /**\n * Expose a method for transforming tokens into the path function.\n */\n function tokensToFunction (tokens) {\n // Compile all the tokens into regexps.\n var matches = new Array(tokens.length);\n\n // Compile all the patterns before compilation.\n for (var i = 0; i < tokens.length; i++) {\n if (typeof tokens[i] === 'object') {\n matches[i] = new RegExp('^(?:' + tokens[i].pattern + ')$');\n }\n }\n\n return function (data, options) {\n var path = '';\n var encode = (options && options.encode) || encodeURIComponent;\n\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n\n if (typeof token === 'string') {\n path += token;\n continue\n }\n\n var value = data ? data[token.name] : undefined;\n var segment;\n\n if (Array.isArray(value)) {\n if (!token.repeat) {\n throw new TypeError('Expected \"' + token.name + '\" to not repeat, but got array')\n }\n\n if (value.length === 0) {\n if (token.optional) { continue }\n\n throw new TypeError('Expected \"' + token.name + '\" to not be empty')\n }\n\n for (var j = 0; j < value.length; j++) {\n segment = encode(value[j], token);\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected all \"' + token.name + '\" to match \"' + token.pattern + '\"')\n }\n\n path += (j === 0 ? token.prefix : token.delimiter) + segment;\n }\n\n continue\n }\n\n if (typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean') {\n segment = encode(String(value), token);\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected \"' + token.name + '\" to match \"' + token.pattern + '\", but got \"' + segment + '\"')\n }\n\n path += token.prefix + segment;\n continue\n }\n\n if (token.optional) {\n // Prepend partial segment prefixes.\n if (token.partial) { path += token.prefix; }\n\n continue\n }\n\n throw new TypeError('Expected \"' + token.name + '\" to be ' + (token.repeat ? 'an array' : 'a string'))\n }\n\n return path\n }\n }\n\n /**\n * Escape a regular expression string.\n *\n * @param {string} str\n * @return {string}\n */\n function escapeString (str) {\n return str.replace(/([.+*?=^!:${}()[\\]|/\\\\])/g, '\\\\$1')\n }\n\n /**\n * Escape the capturing group by escaping special characters and meaning.\n *\n * @param {string} group\n * @return {string}\n */\n function escapeGroup (group) {\n return group.replace(/([=!:$/()])/g, '\\\\$1')\n }\n\n /**\n * Get the flags for a regexp from the options.\n *\n * @param {Object} options\n * @return {string}\n */\n function flags (options) {\n return options && options.sensitive ? '' : 'i'\n }\n\n /**\n * Pull out keys from a regexp.\n *\n * @param {!RegExp} path\n * @param {Array=} keys\n * @return {!RegExp}\n */\n function regexpToRegexp (path, keys) {\n if (!keys) { return path }\n\n // Use a negative lookahead to match only capturing groups.\n var groups = path.source.match(/\\((?!\\?)/g);\n\n if (groups) {\n for (var i = 0; i < groups.length; i++) {\n keys.push({\n name: i,\n prefix: null,\n delimiter: null,\n optional: false,\n repeat: false,\n partial: false,\n pattern: null\n });\n }\n }\n\n return path\n }\n\n /**\n * Transform an array into a regexp.\n *\n * @param {!Array} path\n * @param {Array=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\n function arrayToRegexp (path, keys, options) {\n var parts = [];\n\n for (var i = 0; i < path.length; i++) {\n parts.push(pathToRegexp(path[i], keys, options).source);\n }\n\n return new RegExp('(?:' + parts.join('|') + ')', flags(options))\n }\n\n /**\n * Create a path regexp from string input.\n *\n * @param {string} path\n * @param {Array=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\n function stringToRegexp (path, keys, options) {\n return tokensToRegExp(parse(path, options), keys, options)\n }\n\n /**\n * Expose a function for taking tokens and returning a RegExp.\n *\n * @param {!Array} tokens\n * @param {Array=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\n function tokensToRegExp (tokens, keys, options) {\n options = options || {};\n\n var strict = options.strict;\n var end = options.end !== false;\n var delimiter = escapeString(options.delimiter || DEFAULT_DELIMITER);\n var delimiters = options.delimiters || DEFAULT_DELIMITERS;\n var endsWith = [].concat(options.endsWith || []).map(escapeString).concat('$').join('|');\n var route = '';\n var isEndDelimited = tokens.length === 0;\n\n // Iterate over the tokens and create our regexp string.\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n\n if (typeof token === 'string') {\n route += escapeString(token);\n isEndDelimited = i === tokens.length - 1 && delimiters.indexOf(token[token.length - 1]) > -1;\n } else {\n var prefix = escapeString(token.prefix);\n var capture = token.repeat\n ? '(?:' + token.pattern + ')(?:' + prefix + '(?:' + token.pattern + '))*'\n : token.pattern;\n\n if (keys) { keys.push(token); }\n\n if (token.optional) {\n if (token.partial) {\n route += prefix + '(' + capture + ')?';\n } else {\n route += '(?:' + prefix + '(' + capture + '))?';\n }\n } else {\n route += prefix + '(' + capture + ')';\n }\n }\n }\n\n if (end) {\n if (!strict) { route += '(?:' + delimiter + ')?'; }\n\n route += endsWith === '$' ? '$' : '(?=' + endsWith + ')';\n } else {\n if (!strict) { route += '(?:' + delimiter + '(?=' + endsWith + '))?'; }\n if (!isEndDelimited) { route += '(?=' + delimiter + '|' + endsWith + ')'; }\n }\n\n return new RegExp('^' + route, flags(options))\n }\n\n /**\n * Normalize the given path string, returning a regular expression.\n *\n * An empty array can be passed in for the keys, which will hold the\n * placeholder key descriptions. For example, using `/user/:id`, `keys` will\n * contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`.\n *\n * @param {(string|RegExp|Array)} path\n * @param {Array=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\n function pathToRegexp (path, keys, options) {\n if (path instanceof RegExp) {\n return regexpToRegexp(path, keys)\n }\n\n if (Array.isArray(path)) {\n return arrayToRegexp(/** @type {!Array} */ (path), keys, options)\n }\n\n return stringToRegexp(/** @type {string} */ (path), keys, options)\n }\n pathToRegexp_1.parse = parse_1;\n pathToRegexp_1.compile = compile_1;\n pathToRegexp_1.tokensToFunction = tokensToFunction_1;\n pathToRegexp_1.tokensToRegExp = tokensToRegExp_1;\n\n var tempDom = doc.createElement('div');\n\n var Framework7Component = function Framework7Component(opts, extendContext) {\n if ( extendContext === void 0 ) extendContext = {};\n\n var options = Utils.extend({}, opts);\n var component = Utils.merge(this, extendContext, { $options: options });\n\n // Apply context\n ('beforeCreate created beforeMount mounted beforeDestroy destroyed').split(' ').forEach(function (cycleKey) {\n if (options[cycleKey]) { options[cycleKey] = options[cycleKey].bind(component); }\n });\n\n if (options.data) {\n options.data = options.data.bind(component);\n // Data\n Utils.extend(component, options.data());\n }\n if (options.render) { options.render = options.render.bind(component); }\n if (options.methods) {\n Object.keys(options.methods).forEach(function (methodName) {\n component[methodName] = options.methods[methodName].bind(component);\n });\n }\n\n // Bind Events\n if (options.on) {\n Object.keys(options.on).forEach(function (eventName) {\n options.on[eventName] = options.on[eventName].bind(component);\n });\n }\n if (options.once) {\n Object.keys(options.once).forEach(function (eventName) {\n options.once[eventName] = options.once[eventName].bind(component);\n });\n }\n\n if (options.beforeCreate) { options.beforeCreate(); }\n\n // Watchers\n if (options.watch) {\n Object.keys(options.watch).forEach(function (watchKey) {\n var dataKeyValue = component[watchKey];\n Object.defineProperty(component, watchKey, {\n enumerable: true,\n configurable: true,\n set: function set(newValue) {\n var previousValue = dataKeyValue;\n dataKeyValue = newValue;\n if (previousValue === newValue) { return; }\n options.watch[watchKey].call(component, newValue, previousValue);\n },\n get: function get() {\n return dataKeyValue;\n },\n });\n });\n }\n\n // Render template\n\n function render() {\n var html = '';\n if (options.render) {\n html = options.render();\n } else if (options.template) {\n if (typeof options.template === 'string') {\n try {\n html = Template7.compile(options.template)(component);\n } catch (err) {\n throw err;\n }\n } else {\n // Supposed to be function\n html = options.template(component);\n }\n }\n return html;\n }\n\n var html = render();\n\n // Make Dom\n if (html && typeof html === 'string') {\n html = html.trim();\n tempDom.innerHTML = html;\n } else if (html) {\n tempDom.innerHTML = '';\n tempDom.appendChild(html);\n }\n\n // Extend component with $el\n var el = tempDom.children[0];\n var $el = $$1(el);\n component.$el = $el;\n component.el = el;\n component.el = el;\n\n // Find Events\n var events = [];\n $$1(tempDom).find('*').each(function (index, element) {\n var attrs = [];\n for (var i = 0; i < element.attributes.length; i += 1) {\n var attr = element.attributes[i];\n if (attr.name.indexOf('@') === 0) {\n attrs.push({\n name: attr.name,\n value: attr.value,\n });\n }\n }\n attrs.forEach(function (attr) {\n element.removeAttribute(attr.name);\n var event = attr.name.replace('@', '');\n var name = event;\n var stop = false;\n var prevent = false;\n var once = false;\n if (event.indexOf('.') >= 0) {\n event.split('.').forEach(function (eventNamePart, eventNameIndex) {\n if (eventNameIndex === 0) { name = eventNamePart; }\n else {\n if (eventNamePart === 'stop') { stop = true; }\n if (eventNamePart === 'prevent') { prevent = true; }\n if (eventNamePart === 'once') { once = true; }\n }\n });\n }\n var value = attr.value.toString();\n events.push({\n el: element,\n name: name,\n once: once,\n handler: function handler() {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var e = args[0];\n if (stop) { e.stopPropagation(); }\n if (prevent) { e.preventDefault(); }\n var methodName;\n var method;\n var customArgs = [];\n if (value.indexOf('(') < 0) {\n customArgs = args;\n methodName = value;\n } else {\n methodName = value.split('(')[0];\n value.split('(')[1].split(')')[0].split(',').forEach(function (argument) {\n var arg = argument.trim();\n // eslint-disable-next-line\n if (!isNaN(arg)) { arg = parseFloat(arg); }\n else if (arg === 'true') { arg = true; }\n else if (arg === 'false') { arg = false; }\n else if (arg === 'null') { arg = null; }\n else if (arg === 'undefined') { arg = undefined; }\n else if (arg[0] === '\"') { arg = arg.replace(/\"/g, ''); }\n else if (arg[0] === '\\'') { arg = arg.replace(/'/g, ''); }\n else if (arg.indexOf('.') > 0) {\n var deepArg;\n arg.split('.').forEach(function (path) {\n if (!deepArg) { deepArg = component; }\n deepArg = deepArg[path];\n });\n arg = deepArg;\n } else {\n arg = component[arg];\n }\n customArgs.push(arg);\n });\n }\n if (methodName.indexOf('.') >= 0) {\n methodName.split('.').forEach(function (path, pathIndex) {\n if (!method) { method = component; }\n if (method[path]) { method = method[path]; }\n else {\n throw new Error((\"Component doesn't have method \\\"\" + (methodName.split('.').slice(0, pathIndex + 1).join('.')) + \"\\\"\"));\n }\n });\n } else {\n if (!component[methodName]) {\n throw new Error((\"Component doesn't have method \\\"\" + methodName + \"\\\"\"));\n }\n method = component[methodName];\n }\n method.apply(void 0, customArgs);\n },\n });\n });\n });\n\n // Set styles scope ID\n var styleEl;\n if (options.style) {\n styleEl = doc.createElement('style');\n styleEl.innerHTML = options.style;\n }\n if (options.styleScopeId) {\n el.setAttribute('data-scope', options.styleScopeId);\n }\n\n // Attach events\n function attachEvents() {\n if (options.on) {\n Object.keys(options.on).forEach(function (eventName) {\n $el.on(Utils.eventNameToColonCase(eventName), options.on[eventName]);\n });\n }\n if (options.once) {\n Object.keys(options.once).forEach(function (eventName) {\n $el.once(Utils.eventNameToColonCase(eventName), options.once[eventName]);\n });\n }\n events.forEach(function (event) {\n $$1(event.el)[event.once ? 'once' : 'on'](event.name, event.handler);\n });\n }\n\n function detachEvents() {\n if (options.on) {\n Object.keys(options.on).forEach(function (eventName) {\n $el.off(Utils.eventNameToColonCase(eventName), options.on[eventName]);\n });\n }\n if (options.once) {\n Object.keys(options.once).forEach(function (eventName) {\n $el.off(Utils.eventNameToColonCase(eventName), options.once[eventName]);\n });\n }\n events.forEach(function (event) {\n $$1(event.el).off(event.name, event.handler);\n });\n }\n\n attachEvents();\n\n // Created callback\n if (options.created) { options.created(); }\n\n // Mount\n component.$mount = function mount(mountMethod) {\n if (options.beforeMount) { options.beforeMount(); }\n if (styleEl) { $$1('head').append(styleEl); }\n if (mountMethod) { mountMethod(el); }\n if (options.mounted) { options.mounted(); }\n };\n\n // Destroy\n component.$destroy = function destroy() {\n if (options.beforeDestroy) { options.beforeDestroy(); }\n if (styleEl) { $$1(styleEl).remove(); }\n detachEvents();\n if (options.destroyed) { options.destroyed(); }\n // Delete component instance\n if (el && el.f7Component) {\n el.f7Component = null;\n delete el.f7Component;\n }\n Utils.deleteProps(component);\n component = null;\n };\n\n // Store component instance\n for (var i = 0; i < tempDom.children.length; i += 1) {\n tempDom.children[i].f7Component = component;\n }\n\n return component;\n };\n\n\n var Component = {\n parse: function parse(componentString) {\n var callbackName = \"f7_component_callback_\" + (new Date().getTime());\n\n // Template\n var template;\n if (componentString.indexOf('') >= 0) {\n template = componentString\n .split('')\n .filter(function (item, index) { return index > 0; })\n .join('')\n .split(' ')\n .filter(function (item, index, arr) { return index < arr.length - 1; })\n .join(' ')\n .replace(/{{#raw}}([ \\n]*)([ \\n]*){{\\/raw}}/g, '/template>{{/raw}}')\n .replace(/([ \\n])([ \\n])/g, '/template>{{/raw}}$1');\n }\n\n // Styles\n var style;\n var styleScopeId = Utils.now();\n if (componentString.indexOf('')[0];\n } else if (componentString.indexOf('')[0];\n style = style.split('\\n').map(function (line) {\n if (line.indexOf('{') >= 0) {\n if (line.indexOf('{{this}}') >= 0) {\n return line.replace('{{this}}', (\"[data-scope=\\\"\" + styleScopeId + \"\\\"]\"));\n }\n return (\"[data-scope=\\\"\" + styleScopeId + \"\\\"] \" + (line.trim()));\n }\n return line;\n }).join('\\n');\n }\n\n var scriptContent;\n if (componentString.indexOf('')[0].trim();\n } else {\n scriptContent = 'return {}';\n }\n scriptContent = \"window.\" + callbackName + \" = function () {\" + scriptContent + \"}\";\n\n // Insert Script El\n var scriptEl = doc.createElement('script');\n scriptEl.innerHTML = scriptContent;\n $$1('head').append(scriptEl);\n\n var component = win[callbackName]();\n\n // Remove Script El\n $$1(scriptEl).remove();\n\n if (!component.template && !component.render) {\n component.template = template;\n }\n if (style) {\n component.style = style;\n component.styleScopeId = styleScopeId;\n }\n return component;\n },\n create: function create(c, extendContext) {\n if ( extendContext === void 0 ) extendContext = {};\n\n return new Framework7Component(c, extendContext);\n },\n };\n\n var History = {\n queue: [],\n clearQueue: function clearQueue() {\n if (History.queue.length === 0) { return; }\n var currentQueue = History.queue.shift();\n currentQueue();\n },\n routerQueue: [],\n clearRouterQueue: function clearRouterQueue() {\n if (History.routerQueue.length === 0) { return; }\n var currentQueue = History.routerQueue.pop();\n var router = currentQueue.router;\n var stateUrl = currentQueue.stateUrl;\n var action = currentQueue.action;\n\n var animate = router.params.animate;\n if (router.params.pushStateAnimate === false) { animate = false; }\n\n if (action === 'back') {\n router.back({ animate: animate, pushState: false });\n }\n if (action === 'load') {\n router.navigate(stateUrl, { animate: animate, pushState: false });\n }\n },\n handle: function handle(e) {\n if (History.blockPopstate) { return; }\n var app = this;\n // const mainView = app.views.main;\n var state = e.state;\n History.previousState = History.state;\n History.state = state;\n\n History.allowChange = true;\n History.clearQueue();\n\n state = History.state;\n if (!state) { state = {}; }\n\n app.views.forEach(function (view) {\n var router = view.router;\n var viewState = state[view.id];\n if (!viewState && view.params.pushState) {\n viewState = {\n url: view.router.history[0],\n };\n }\n if (!viewState) { return; }\n var stateUrl = viewState.url || undefined;\n\n var animate = router.params.animate;\n if (router.params.pushStateAnimate === false) { animate = false; }\n\n if (stateUrl !== router.url) {\n if (router.history.indexOf(stateUrl) >= 0) {\n // Go Back\n if (router.allowPageChange) {\n router.back({ animate: animate, pushState: false });\n } else {\n History.routerQueue.push({\n action: 'back',\n router: router,\n });\n }\n } else if (router.allowPageChange) {\n // Load page\n router.navigate(stateUrl, { animate: animate, pushState: false });\n } else {\n History.routerQueue.unshift({\n action: 'load',\n stateUrl: stateUrl,\n router: router,\n });\n }\n }\n });\n },\n initViewState: function initViewState(viewId, viewState) {\n var obj;\n\n var newState = Utils.extend({}, (History.state || {}), ( obj = {}, obj[viewId] = viewState, obj ));\n History.state = newState;\n win.history.replaceState(newState, '');\n },\n push: function push(viewId, viewState, url) {\n var obj;\n\n if (!History.allowChange) {\n History.queue.push(function () {\n History.push(viewId, viewState, url);\n });\n return;\n }\n History.previousState = History.state;\n var newState = Utils.extend({}, (History.previousState || {}), ( obj = {}, obj[viewId] = viewState, obj ));\n History.state = newState;\n win.history.pushState(newState, '', url);\n },\n replace: function replace(viewId, viewState, url) {\n var obj;\n\n if (!History.allowChange) {\n History.queue.push(function () {\n History.replace(viewId, viewState, url);\n });\n return;\n }\n History.previousState = History.state;\n var newState = Utils.extend({}, (History.previousState || {}), ( obj = {}, obj[viewId] = viewState, obj ));\n History.state = newState;\n win.history.replaceState(newState, '', url);\n },\n go: function go(index) {\n History.allowChange = false;\n win.history.go(index);\n },\n back: function back() {\n History.allowChange = false;\n win.history.back();\n },\n allowChange: true,\n previousState: {},\n state: win.history.state,\n blockPopstate: true,\n init: function init(app) {\n $$1(win).on('load', function () {\n setTimeout(function () {\n History.blockPopstate = false;\n }, 0);\n });\n\n if (doc.readyState && doc.readyState === 'complete') {\n History.blockPopstate = false;\n }\n\n $$1(win).on('popstate', History.handle.bind(app));\n },\n };\n\n function SwipeBack(r) {\n var router = r;\n var $el = router.$el;\n var $navbarEl = router.$navbarEl;\n var app = router.app;\n var params = router.params;\n var isTouched = false;\n var isMoved = false;\n var touchesStart = {};\n var isScrolling;\n var currentPage = [];\n var previousPage = [];\n var viewContainerWidth;\n var touchesDiff;\n var allowViewTouchMove = true;\n var touchStartTime;\n var currentNavbar = [];\n var previousNavbar = [];\n var currentNavElements;\n var previousNavElements;\n var activeNavBackIcon;\n var activeNavBackIconText;\n var previousNavBackIcon;\n // let previousNavBackIconText;\n var dynamicNavbar;\n var separateNavbar;\n var pageShadow;\n var pageOpacity;\n var navbarWidth;\n\n var paramsSwipeBackAnimateShadow = params[((app.theme) + \"SwipeBackAnimateShadow\")];\n var paramsSwipeBackAnimateOpacity = params[((app.theme) + \"SwipeBackAnimateOpacity\")];\n var paramsSwipeBackActiveArea = params[((app.theme) + \"SwipeBackActiveArea\")];\n var paramsSwipeBackThreshold = params[((app.theme) + \"SwipeBackThreshold\")];\n\n function handleTouchStart(e) {\n var swipeBackEnabled = params[((app.theme) + \"SwipeBack\")];\n if (!allowViewTouchMove || !swipeBackEnabled || isTouched || (app.swipeout && app.swipeout.el) || !router.allowPageChange) { return; }\n if ($$1(e.target).closest('.range-slider, .calendar-months').length > 0) { return; }\n isMoved = false;\n isTouched = true;\n isScrolling = undefined;\n touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n touchStartTime = Utils.now();\n dynamicNavbar = router.dynamicNavbar;\n separateNavbar = router.separateNavbar;\n }\n function handleTouchMove(e) {\n if (!isTouched) { return; }\n var pageX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n var pageY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n if (typeof isScrolling === 'undefined') {\n isScrolling = !!(isScrolling || Math.abs(pageY - touchesStart.y) > Math.abs(pageX - touchesStart.x)) || pageX < touchesStart.x;\n }\n if (isScrolling || e.f7PreventSwipeBack || app.preventSwipeBack) {\n isTouched = false;\n return;\n }\n if (!isMoved) {\n // Calc values during first move fired\n var cancel = false;\n var target = $$1(e.target);\n\n var swipeout = target.closest('.swipeout');\n if (swipeout.length > 0) {\n if (!app.rtl && swipeout.find('.swipeout-actions-left').length > 0) { cancel = true; }\n if (app.rtl && swipeout.find('.swipeout-actions-right').length > 0) { cancel = true; }\n }\n\n currentPage = target.closest('.page');\n if (currentPage.hasClass('no-swipeback') || target.closest('.no-swipeback').length > 0) { cancel = true; }\n previousPage = $el.find('.page-previous:not(.stacked)');\n\n var notFromBorder = touchesStart.x - $el.offset().left > paramsSwipeBackActiveArea;\n viewContainerWidth = $el.width();\n if (app.rtl) {\n notFromBorder = touchesStart.x < ($el.offset().left - $el[0].scrollLeft) + (viewContainerWidth - paramsSwipeBackActiveArea);\n } else {\n notFromBorder = touchesStart.x - $el.offset().left > paramsSwipeBackActiveArea;\n }\n if (notFromBorder) { cancel = true; }\n if (previousPage.length === 0 || currentPage.length === 0) { cancel = true; }\n if (cancel) {\n isTouched = false;\n return;\n }\n\n if (paramsSwipeBackAnimateShadow) {\n pageShadow = currentPage.find('.page-shadow-effect');\n if (pageShadow.length === 0) {\n pageShadow = $$1('
');\n currentPage.append(pageShadow);\n }\n }\n if (paramsSwipeBackAnimateOpacity) {\n pageOpacity = previousPage.find('.page-opacity-effect');\n if (pageOpacity.length === 0) {\n pageOpacity = $$1('
');\n previousPage.append(pageOpacity);\n }\n }\n\n if (dynamicNavbar) {\n if (separateNavbar) {\n currentNavbar = $navbarEl.find('.navbar-current:not(.stacked)');\n previousNavbar = $navbarEl.find('.navbar-previous:not(.stacked)');\n } else {\n currentNavbar = currentPage.children('.navbar').children('.navbar-inner');\n previousNavbar = previousPage.children('.navbar').children('.navbar-inner');\n }\n navbarWidth = $navbarEl[0].offsetWidth;\n currentNavElements = currentNavbar.children('.left, .title, .right, .subnavbar, .fading');\n previousNavElements = previousNavbar.children('.left, .title, .right, .subnavbar, .fading');\n if (params.iosAnimateNavbarBackIcon) {\n if (currentNavbar.hasClass('sliding')) {\n activeNavBackIcon = currentNavbar.children('.left').find('.back .icon');\n activeNavBackIconText = currentNavbar.children('.left').find('.back span').eq(0);\n } else {\n activeNavBackIcon = currentNavbar.children('.left.sliding').find('.back .icon');\n activeNavBackIconText = currentNavbar.children('.left.sliding').find('.back span').eq(0);\n }\n if (previousNavbar.hasClass('sliding')) {\n previousNavBackIcon = previousNavbar.children('.left').find('.back .icon');\n // previousNavBackIconText = previousNavbar.children('left').find('.back span').eq(0);\n } else {\n previousNavBackIcon = previousNavbar.children('.left.sliding').find('.back .icon');\n // previousNavBackIconText = previousNavbar.children('.left.sliding').find('.back span').eq(0);\n }\n }\n }\n\n // Close/Hide Any Picker\n if ($$1('.sheet.modal-in').length > 0 && app.sheet) {\n app.sheet.close($$1('.sheet.modal-in'));\n }\n }\n e.f7PreventPanelSwipe = true;\n isMoved = true;\n app.preventSwipePanelBySwipeBack = true;\n e.preventDefault();\n\n // RTL inverter\n var inverter = app.rtl ? -1 : 1;\n\n // Touches diff\n touchesDiff = (pageX - touchesStart.x - paramsSwipeBackThreshold) * inverter;\n if (touchesDiff < 0) { touchesDiff = 0; }\n var percentage = touchesDiff / viewContainerWidth;\n\n // Swipe Back Callback\n var callbackData = {\n percentage: percentage,\n currentPageEl: currentPage[0],\n previousPageEl: previousPage[0],\n currentNavbarEl: currentNavbar[0],\n previousNavbarEl: previousNavbar[0],\n };\n $el.trigger('swipeback:move', callbackData);\n router.emit('swipebackMove', callbackData);\n\n // Transform pages\n var currentPageTranslate = touchesDiff * inverter;\n var previousPageTranslate = ((touchesDiff / 5) - (viewContainerWidth / 5)) * inverter;\n if (Device.pixelRatio === 1) {\n currentPageTranslate = Math.round(currentPageTranslate);\n previousPageTranslate = Math.round(previousPageTranslate);\n }\n\n currentPage.transform((\"translate3d(\" + currentPageTranslate + \"px,0,0)\"));\n if (paramsSwipeBackAnimateShadow) { pageShadow[0].style.opacity = 1 - (1 * percentage); }\n\n if (app.theme !== 'md') {\n previousPage.transform((\"translate3d(\" + previousPageTranslate + \"px,0,0)\"));\n }\n if (paramsSwipeBackAnimateOpacity) { pageOpacity[0].style.opacity = 1 - (1 * percentage); }\n\n // Dynamic Navbars Animation\n if (dynamicNavbar) {\n currentNavElements.each(function (index, navEl) {\n var $navEl = $$1(navEl);\n if (!$navEl.is('.subnavbar')) { $navEl[0].style.opacity = (1 - (Math.pow( percentage, 0.33 ))); }\n if ($navEl[0].className.indexOf('sliding') >= 0 || currentNavbar.hasClass('sliding')) {\n var activeNavTranslate = percentage * $navEl[0].f7NavbarRightOffset;\n if (Device.pixelRatio === 1) { activeNavTranslate = Math.round(activeNavTranslate); }\n $navEl.transform((\"translate3d(\" + activeNavTranslate + \"px,0,0)\"));\n if (params.iosAnimateNavbarBackIcon) {\n if ($navEl[0].className.indexOf('left') >= 0 && activeNavBackIcon.length > 0) {\n var iconTranslate = -activeNavTranslate;\n if (!separateNavbar) {\n iconTranslate -= navbarWidth * percentage;\n }\n activeNavBackIcon.transform((\"translate3d(\" + iconTranslate + \"px,0,0)\"));\n }\n }\n }\n });\n previousNavElements.each(function (index, navEl) {\n var $navEl = $$1(navEl);\n if (!$navEl.is('.subnavbar')) { $navEl[0].style.opacity = (Math.pow( percentage, 3 )); }\n if ($navEl[0].className.indexOf('sliding') >= 0 || previousNavbar.hasClass('sliding')) {\n var previousNavTranslate = $navEl[0].f7NavbarLeftOffset * (1 - percentage);\n if ($navEl[0].className.indexOf('title') >= 0 && activeNavBackIcon && activeNavBackIcon.length && activeNavBackIconText.length) {\n previousNavTranslate = ($navEl[0].f7NavbarLeftOffset + activeNavBackIconText[0].offsetLeft) * (1 - percentage);\n } else {\n previousNavTranslate = $navEl[0].f7NavbarLeftOffset * (1 - percentage);\n }\n if (Device.pixelRatio === 1) { previousNavTranslate = Math.round(previousNavTranslate); }\n $navEl.transform((\"translate3d(\" + previousNavTranslate + \"px,0,0)\"));\n if (params.iosAnimateNavbarBackIcon) {\n if ($navEl[0].className.indexOf('left') >= 0 && previousNavBackIcon.length > 0) {\n var iconTranslate = -previousNavTranslate;\n if (!separateNavbar) {\n iconTranslate += (navbarWidth / 5) * (1 - percentage);\n }\n previousNavBackIcon.transform((\"translate3d(\" + iconTranslate + \"px,0,0)\"));\n }\n }\n }\n });\n }\n }\n function handleTouchEnd() {\n app.preventSwipePanelBySwipeBack = false;\n if (!isTouched || !isMoved) {\n isTouched = false;\n isMoved = false;\n return;\n }\n isTouched = false;\n isMoved = false;\n if (touchesDiff === 0) {\n $$1([currentPage[0], previousPage[0]]).transform('');\n if (pageShadow && pageShadow.length > 0) { pageShadow.remove(); }\n if (pageOpacity && pageOpacity.length > 0) { pageOpacity.remove(); }\n if (dynamicNavbar) {\n currentNavElements.transform('').css({ opacity: '' });\n previousNavElements.transform('').css({ opacity: '' });\n if (activeNavBackIcon && activeNavBackIcon.length > 0) { activeNavBackIcon.transform(''); }\n if (previousNavBackIcon && activeNavBackIcon.length > 0) { previousNavBackIcon.transform(''); }\n }\n return;\n }\n var timeDiff = Utils.now() - touchStartTime;\n var pageChanged = false;\n // Swipe back to previous page\n if (\n (timeDiff < 300 && touchesDiff > 10)\n || (timeDiff >= 300 && touchesDiff > viewContainerWidth / 2)\n ) {\n currentPage.removeClass('page-current').addClass((\"page-next\" + (app.theme === 'md' ? ' page-next-on-right' : '')));\n previousPage.removeClass('page-previous').addClass('page-current').removeAttr('aria-hidden');\n if (pageShadow) { pageShadow[0].style.opacity = ''; }\n if (pageOpacity) { pageOpacity[0].style.opacity = ''; }\n if (dynamicNavbar) {\n currentNavbar.removeClass('navbar-current').addClass('navbar-next');\n previousNavbar.removeClass('navbar-previous').addClass('navbar-current').removeAttr('aria-hidden');\n }\n pageChanged = true;\n }\n // Reset custom styles\n // Add transitioning class for transition-duration\n $$1([currentPage[0], previousPage[0]]).addClass('page-transitioning page-transitioning-swipeback').transform('');\n\n if (dynamicNavbar) {\n currentNavElements.css({ opacity: '' })\n .each(function (navElIndex, navEl) {\n var translate = pageChanged ? navEl.f7NavbarRightOffset : 0;\n var sliding = $$1(navEl);\n var iconTranslate = pageChanged ? -translate : 0;\n if (!separateNavbar && pageChanged) { iconTranslate -= navbarWidth; }\n sliding.transform((\"translate3d(\" + translate + \"px,0,0)\"));\n if (params.iosAnimateNavbarBackIcon) {\n if (sliding.hasClass('left') && activeNavBackIcon.length > 0) {\n activeNavBackIcon.addClass('navbar-transitioning').transform((\"translate3d(\" + iconTranslate + \"px,0,0)\"));\n }\n }\n }).addClass('navbar-transitioning');\n\n previousNavElements.transform('').css({ opacity: '' }).each(function (navElIndex, navEl) {\n var translate = pageChanged ? 0 : navEl.f7NavbarLeftOffset;\n var sliding = $$1(navEl);\n var iconTranslate = pageChanged ? 0 : -translate;\n if (!separateNavbar && !pageChanged) { iconTranslate += navbarWidth / 5; }\n sliding.transform((\"translate3d(\" + translate + \"px,0,0)\"));\n if (params.iosAnimateNavbarBackIcon) {\n if (sliding.hasClass('left') && previousNavBackIcon.length > 0) {\n previousNavBackIcon.addClass('navbar-transitioning').transform((\"translate3d(\" + iconTranslate + \"px,0,0)\"));\n }\n }\n }).addClass('navbar-transitioning');\n }\n allowViewTouchMove = false;\n router.allowPageChange = false;\n\n // Swipe Back Callback\n var callbackData = {\n currentPage: currentPage[0],\n previousPage: previousPage[0],\n currentNavbar: currentNavbar[0],\n previousNavbar: previousNavbar[0],\n };\n\n if (pageChanged) {\n // Update Route\n router.currentRoute = previousPage[0].f7Page.route;\n router.currentPage = previousPage[0];\n\n // Page before animation callback\n router.pageCallback('beforeOut', currentPage, currentNavbar, 'current', 'next', { route: currentPage[0].f7Page.route, swipeBack: true });\n router.pageCallback('beforeIn', previousPage, previousNavbar, 'previous', 'current', { route: previousPage[0].f7Page.route, swipeBack: true });\n\n $el.trigger('swipeback:beforechange', callbackData);\n router.emit('swipebackBeforeChange', callbackData);\n } else {\n $el.trigger('swipeback:beforereset', callbackData);\n router.emit('swipebackBeforeReset', callbackData);\n }\n\n currentPage.transitionEnd(function () {\n $$1([currentPage[0], previousPage[0]]).removeClass('page-transitioning page-transitioning-swipeback');\n\n if (dynamicNavbar) {\n currentNavElements.removeClass('navbar-transitioning').css({ opacity: '' }).transform('');\n previousNavElements.removeClass('navbar-transitioning').css({ opacity: '' }).transform('');\n if (activeNavBackIcon && activeNavBackIcon.length > 0) { activeNavBackIcon.removeClass('navbar-transitioning'); }\n if (previousNavBackIcon && previousNavBackIcon.length > 0) { previousNavBackIcon.removeClass('navbar-transitioning'); }\n }\n allowViewTouchMove = true;\n router.allowPageChange = true;\n if (pageChanged) {\n // Update History\n if (router.history.length === 1) {\n router.history.unshift(router.url);\n }\n router.history.pop();\n router.saveHistory();\n\n // Update push state\n if (params.pushState) {\n History.back();\n }\n\n // Page after animation callback\n router.pageCallback('afterOut', currentPage, currentNavbar, 'current', 'next', { route: currentPage[0].f7Page.route, swipeBack: true });\n router.pageCallback('afterIn', previousPage, previousNavbar, 'previous', 'current', { route: previousPage[0].f7Page.route, swipeBack: true });\n\n // Remove Old Page\n if (params.stackPages && router.initialPages.indexOf(currentPage[0]) >= 0) {\n currentPage.addClass('stacked');\n if (separateNavbar) {\n currentNavbar.addClass('stacked');\n }\n } else {\n router.pageCallback('beforeRemove', currentPage, currentNavbar, 'next', { swipeBack: true });\n router.removePage(currentPage);\n if (separateNavbar) {\n router.removeNavbar(currentNavbar);\n }\n }\n\n $el.trigger('swipeback:afterchange', callbackData);\n router.emit('swipebackAfterChange', callbackData);\n\n router.emit('routeChanged', router.currentRoute, router.previousRoute, router);\n\n if (params.preloadPreviousPage) {\n router.back(router.history[router.history.length - 2], { preload: true });\n }\n } else {\n $el.trigger('swipeback:afterreset', callbackData);\n router.emit('swipebackAfterReset', callbackData);\n }\n if (pageShadow && pageShadow.length > 0) { pageShadow.remove(); }\n if (pageOpacity && pageOpacity.length > 0) { pageOpacity.remove(); }\n });\n }\n\n function attachEvents() {\n var passiveListener = (app.touchEvents.start === 'touchstart' && Support.passiveListener) ? { passive: true, capture: false } : false;\n $el.on(app.touchEvents.start, handleTouchStart, passiveListener);\n app.on('touchmove:active', handleTouchMove);\n app.on('touchend:passive', handleTouchEnd);\n }\n function detachEvents() {\n var passiveListener = (app.touchEvents.start === 'touchstart' && Support.passiveListener) ? { passive: true, capture: false } : false;\n $el.off(app.touchEvents.start, handleTouchStart, passiveListener);\n app.off('touchmove:active', handleTouchMove);\n app.off('touchend:passive', handleTouchEnd);\n }\n\n attachEvents();\n\n router.on('routerDestroy', detachEvents);\n }\n\n function redirect (direction, route, options) {\n var router = this;\n var redirect = route.route.redirect;\n if (options.initial && router.params.pushState) {\n options.replaceState = true; // eslint-disable-line\n options.history = true; // eslint-disable-line\n }\n function redirectResolve(redirectUrl, redirectOptions) {\n if ( redirectOptions === void 0 ) redirectOptions = {};\n\n router.allowPageChange = true;\n router[direction](redirectUrl, Utils.extend({}, options, redirectOptions));\n }\n function redirectReject() {\n router.allowPageChange = true;\n }\n if (typeof redirect === 'function') {\n router.allowPageChange = false;\n var redirectUrl = redirect.call(router, route, redirectResolve, redirectReject);\n if (redirectUrl && typeof redirectUrl === 'string') {\n router.allowPageChange = true;\n return router[direction](redirectUrl, options);\n }\n return router;\n }\n return router[direction](redirect, options);\n }\n\n function processQueue(router, routerQueue, routeQueue, to, from, resolve, reject) {\n var queue = [];\n\n if (Array.isArray(routeQueue)) {\n queue.push.apply(queue, routeQueue);\n } else if (routeQueue && typeof routeQueue === 'function') {\n queue.push(routeQueue);\n }\n if (routerQueue) {\n if (Array.isArray(routerQueue)) {\n queue.push.apply(queue, routerQueue);\n } else {\n queue.push(routerQueue);\n }\n }\n\n function next() {\n if (queue.length === 0) {\n resolve();\n return;\n }\n var queueItem = queue.shift();\n\n queueItem.call(\n router,\n to,\n from,\n function () {\n next();\n },\n function () {\n reject();\n }\n );\n }\n next();\n }\n\n function processRouteQueue (to, from, resolve, reject) {\n var router = this;\n function enterNextRoute() {\n if (to && to.route && (router.params.routesBeforeEnter || to.route.beforeEnter)) {\n router.allowPageChange = false;\n processQueue(\n router,\n router.params.routesBeforeEnter,\n to.route.beforeEnter,\n to,\n from,\n function () {\n router.allowPageChange = true;\n resolve();\n },\n function () {\n reject();\n }\n );\n } else {\n resolve();\n }\n }\n function leaveCurrentRoute() {\n if (from && from.route && (router.params.routesBeforeLeave || from.route.beforeLeave)) {\n router.allowPageChange = false;\n processQueue(\n router,\n router.params.routesBeforeLeave,\n from.route.beforeLeave,\n to,\n from,\n function () {\n router.allowPageChange = true;\n enterNextRoute();\n },\n function () {\n reject();\n }\n );\n } else {\n enterNextRoute();\n }\n }\n leaveCurrentRoute();\n }\n\n function refreshPage() {\n var router = this;\n return router.navigate(router.currentRoute.url, {\n ignoreCache: true,\n reloadCurrent: true,\n });\n }\n\n function forward(el, forwardOptions) {\n if ( forwardOptions === void 0 ) forwardOptions = {};\n\n var router = this;\n var app = router.app;\n var view = router.view;\n\n var options = Utils.extend({\n animate: router.params.animate,\n pushState: true,\n replaceState: false,\n history: true,\n reloadCurrent: router.params.reloadPages,\n reloadPrevious: false,\n reloadAll: false,\n clearPreviousHistory: false,\n on: {},\n }, forwardOptions);\n\n var dynamicNavbar = router.dynamicNavbar;\n var separateNavbar = router.separateNavbar;\n\n var $viewEl = router.$el;\n var $newPage = $$1(el);\n var reload = options.reloadPrevious || options.reloadCurrent || options.reloadAll;\n var $oldPage;\n\n var $navbarEl;\n var $newNavbarInner;\n var $oldNavbarInner;\n\n if ($newPage.length) {\n // Remove theme elements\n router.removeThemeElements($newPage);\n }\n\n if (dynamicNavbar) {\n $newNavbarInner = $newPage.children('.navbar').children('.navbar-inner');\n if (separateNavbar) {\n $navbarEl = router.$navbarEl;\n if ($newNavbarInner.length > 0) {\n $newPage.children('.navbar').remove();\n }\n if ($newNavbarInner.length === 0 && $newPage[0].f7Page) {\n // Try from pageData\n $newNavbarInner = $newPage[0].f7Page.$navbarEl;\n }\n }\n }\n\n router.allowPageChange = false;\n if ($newPage.length === 0) {\n router.allowPageChange = true;\n return router;\n }\n\n // Pages In View\n var $pagesInView = $viewEl\n .children('.page:not(.stacked)')\n .filter(function (index, pageInView) { return pageInView !== $newPage[0]; });\n\n // Navbars In View\n var $navbarsInView;\n if (separateNavbar) {\n $navbarsInView = $navbarEl\n .children('.navbar-inner:not(.stacked)')\n .filter(function (index, navbarInView) { return navbarInView !== $newNavbarInner[0]; });\n }\n\n // Exit when reload previous and only 1 page in view so nothing ro reload\n if (options.reloadPrevious && $pagesInView.length < 2) {\n router.allowPageChange = true;\n return router;\n }\n\n // New Page\n var newPagePosition = 'next';\n if (options.reloadCurrent || options.reloadAll) {\n newPagePosition = 'current';\n } else if (options.reloadPrevious) {\n newPagePosition = 'previous';\n }\n $newPage\n .addClass((\"page-\" + newPagePosition))\n .removeClass('stacked');\n\n if (dynamicNavbar && $newNavbarInner.length) {\n $newNavbarInner\n .addClass((\"navbar-\" + newPagePosition))\n .removeClass('stacked');\n }\n\n // Find Old Page\n if (options.reloadCurrent) {\n $oldPage = $pagesInView.eq($pagesInView.length - 1);\n if (separateNavbar) {\n // $oldNavbarInner = $navbarsInView.eq($pagesInView.length - 1);\n $oldNavbarInner = $$1(app.navbar.getElByPage($oldPage));\n }\n } else if (options.reloadPrevious) {\n $oldPage = $pagesInView.eq($pagesInView.length - 2);\n if (separateNavbar) {\n // $oldNavbarInner = $navbarsInView.eq($pagesInView.length - 2);\n $oldNavbarInner = $$1(app.navbar.getElByPage($oldPage));\n }\n } else if (options.reloadAll) {\n $oldPage = $pagesInView.filter(function (index, pageEl) { return pageEl !== $newPage[0]; });\n if (separateNavbar) {\n $oldNavbarInner = $navbarsInView.filter(function (index, navbarEl) { return navbarEl !== $newNavbarInner[0]; });\n }\n } else {\n if ($pagesInView.length > 1) {\n var i = 0;\n for (i = 0; i < $pagesInView.length - 1; i += 1) {\n var oldNavbarInnerEl = app.navbar.getElByPage($pagesInView.eq(i));\n if (router.params.stackPages) {\n $pagesInView.eq(i).addClass('stacked');\n if (separateNavbar) {\n // $navbarsInView.eq(i).addClass('stacked');\n $$1(oldNavbarInnerEl).addClass('stacked');\n }\n } else {\n // Page remove event\n router.pageCallback('beforeRemove', $pagesInView[i], $navbarsInView && $navbarsInView[i], 'previous', undefined, options);\n router.removePage($pagesInView[i]);\n if (separateNavbar && oldNavbarInnerEl) {\n router.removeNavbar(oldNavbarInnerEl);\n }\n }\n }\n }\n $oldPage = $viewEl\n .children('.page:not(.stacked)')\n .filter(function (index, page) { return page !== $newPage[0]; });\n if (separateNavbar) {\n $oldNavbarInner = $navbarEl\n .children('.navbar-inner:not(.stacked)')\n .filter(function (index, navbarInner) { return navbarInner !== $newNavbarInner[0]; });\n }\n }\n if (dynamicNavbar && !separateNavbar) {\n $oldNavbarInner = $oldPage.children('.navbar').children('.navbar-inner');\n }\n\n // Push State\n if (router.params.pushState && (options.pushState || options.replaceState) && !options.reloadPrevious) {\n var pushStateRoot = router.params.pushStateRoot || '';\n History[options.reloadCurrent || options.reloadAll || options.replaceState ? 'replace' : 'push'](\n view.id,\n {\n url: options.route.url,\n },\n pushStateRoot + router.params.pushStateSeparator + options.route.url\n );\n }\n\n if (!options.reloadPrevious) {\n // Current Page & Navbar\n router.currentPageEl = $newPage[0];\n if (dynamicNavbar && $newNavbarInner.length) {\n router.currentNavbarEl = $newNavbarInner[0];\n } else {\n delete router.currentNavbarEl;\n }\n\n // Current Route\n router.currentRoute = options.route;\n }\n\n // Update router history\n var url = options.route.url;\n\n if (options.history) {\n if ((options.reloadCurrent && router.history.length) > 0 || options.replaceState) {\n router.history[router.history.length - (options.reloadPrevious ? 2 : 1)] = url;\n } else if (options.reloadPrevious) {\n router.history[router.history.length - 2] = url;\n } else if (options.reloadAll) {\n router.history = [url];\n } else {\n router.history.push(url);\n }\n }\n router.saveHistory();\n\n // Insert new page and navbar\n var newPageInDom = $newPage.parents(doc).length > 0;\n var f7Component = $newPage[0].f7Component;\n if (options.reloadPrevious) {\n if (f7Component && !newPageInDom) {\n f7Component.$mount(function (componentEl) {\n $$1(componentEl).insertBefore($oldPage);\n });\n } else {\n $newPage.insertBefore($oldPage);\n }\n if (separateNavbar && $newNavbarInner.length) {\n if ($oldNavbarInner.length) {\n $newNavbarInner.insertBefore($oldNavbarInner);\n } else {\n if (!router.$navbarEl.parents(doc).length) {\n router.$el.prepend(router.$navbarEl);\n }\n $navbarEl.append($newNavbarInner);\n }\n }\n } else {\n if ($oldPage.next('.page')[0] !== $newPage[0]) {\n if (f7Component && !newPageInDom) {\n f7Component.$mount(function (componentEl) {\n $viewEl.append(componentEl);\n });\n } else {\n $viewEl.append($newPage[0]);\n }\n }\n if (separateNavbar && $newNavbarInner.length) {\n if (!router.$navbarEl.parents(doc).length) {\n router.$el.prepend(router.$navbarEl);\n }\n $navbarEl.append($newNavbarInner[0]);\n }\n }\n if (!newPageInDom) {\n router.pageCallback('mounted', $newPage, $newNavbarInner, newPagePosition, reload ? newPagePosition : 'current', options, $oldPage);\n }\n\n // Remove old page\n if (options.reloadCurrent && $oldPage.length > 0) {\n if (router.params.stackPages && router.initialPages.indexOf($oldPage[0]) >= 0) {\n $oldPage.addClass('stacked');\n if (separateNavbar) {\n $oldNavbarInner.addClass('stacked');\n }\n } else {\n // Page remove event\n router.pageCallback('beforeRemove', $oldPage, $oldNavbarInner, 'previous', undefined, options);\n router.removePage($oldPage);\n if (separateNavbar && $oldNavbarInner && $oldNavbarInner.length) {\n router.removeNavbar($oldNavbarInner);\n }\n }\n } else if (options.reloadAll) {\n $oldPage.each(function (index, pageEl) {\n var $oldPageEl = $$1(pageEl);\n var $oldNavbarInnerEl = $$1(app.navbar.getElByPage($oldPageEl));\n if (router.params.stackPages && router.initialPages.indexOf($oldPageEl[0]) >= 0) {\n $oldPageEl.addClass('stacked');\n if (separateNavbar) {\n $oldNavbarInnerEl.addClass('stacked');\n }\n } else {\n // Page remove event\n router.pageCallback('beforeRemove', $oldPageEl, $oldNavbarInner && $oldNavbarInner.eq(index), 'previous', undefined, options);\n router.removePage($oldPageEl);\n if (separateNavbar && $oldNavbarInnerEl.length) {\n router.removeNavbar($oldNavbarInnerEl);\n }\n }\n });\n } else if (options.reloadPrevious) {\n if (router.params.stackPages && router.initialPages.indexOf($oldPage[0]) >= 0) {\n $oldPage.addClass('stacked');\n if (separateNavbar) {\n $oldNavbarInner.addClass('stacked');\n }\n } else {\n // Page remove event\n router.pageCallback('beforeRemove', $oldPage, $oldNavbarInner, 'previous', undefined, options);\n router.removePage($oldPage);\n if (separateNavbar && $oldNavbarInner && $oldNavbarInner.length) {\n router.removeNavbar($oldNavbarInner);\n }\n }\n }\n\n // Load Tab\n if (options.route.route.tab) {\n router.tabLoad(options.route.route.tab, Utils.extend({}, options, {\n history: false,\n pushState: false,\n }));\n }\n\n // Page init and before init events\n router.pageCallback('init', $newPage, $newNavbarInner, newPagePosition, reload ? newPagePosition : 'current', options, $oldPage);\n\n if (options.reloadCurrent || options.reloadAll) {\n router.allowPageChange = true;\n router.pageCallback('beforeIn', $newPage, $newNavbarInner, newPagePosition, 'current', options);\n router.pageCallback('afterIn', $newPage, $newNavbarInner, newPagePosition, 'current', options);\n if (options.reloadCurrent && options.clearPreviousHistory) { router.clearPreviousHistory(); }\n return router;\n }\n if (options.reloadPrevious) {\n router.allowPageChange = true;\n return router;\n }\n\n // Before animation event\n router.pageCallback('beforeIn', $newPage, $newNavbarInner, 'next', 'current', options);\n router.pageCallback('beforeOut', $oldPage, $oldNavbarInner, 'current', 'previous', options);\n\n // Animation\n function afterAnimation() {\n var pageClasses = 'page-previous page-current page-next';\n var navbarClasses = 'navbar-previous navbar-current navbar-next';\n $newPage.removeClass(pageClasses).addClass('page-current').removeAttr('aria-hidden');\n $oldPage.removeClass(pageClasses).addClass('page-previous').attr('aria-hidden', 'true');\n if (dynamicNavbar) {\n $newNavbarInner.removeClass(navbarClasses).addClass('navbar-current').removeAttr('aria-hidden');\n $oldNavbarInner.removeClass(navbarClasses).addClass('navbar-previous').attr('aria-hidden', 'true');\n }\n // After animation event\n router.allowPageChange = true;\n router.pageCallback('afterIn', $newPage, $newNavbarInner, 'next', 'current', options);\n router.pageCallback('afterOut', $oldPage, $oldNavbarInner, 'current', 'previous', options);\n\n var keepOldPage = app.theme === 'ios' ? (router.params.preloadPreviousPage || router.params.iosSwipeBack) : router.params.preloadPreviousPage;\n if (!keepOldPage) {\n if ($newPage.hasClass('smart-select-page') || $newPage.hasClass('photo-browser-page') || $newPage.hasClass('autocomplete-page')) {\n keepOldPage = true;\n }\n }\n if (!keepOldPage) {\n if (router.params.stackPages) {\n $oldPage.addClass('stacked');\n if (separateNavbar) {\n $oldNavbarInner.addClass('stacked');\n }\n } else if (!($newPage.attr('data-name') && $newPage.attr('data-name') === 'smart-select-page')) {\n // Remove event\n router.pageCallback('beforeRemove', $oldPage, $oldNavbarInner, 'previous', undefined, options);\n router.removePage($oldPage);\n if (separateNavbar && $oldNavbarInner.length) {\n router.removeNavbar($oldNavbarInner);\n }\n }\n }\n if (options.clearPreviousHistory) { router.clearPreviousHistory(); }\n router.emit('routeChanged', router.currentRoute, router.previousRoute, router);\n\n if (router.params.pushState) {\n History.clearRouterQueue();\n }\n }\n function setPositionClasses() {\n var pageClasses = 'page-previous page-current page-next';\n var navbarClasses = 'navbar-previous navbar-current navbar-next';\n $oldPage.removeClass(pageClasses).addClass('page-current').removeAttr('aria-hidden');\n $newPage.removeClass(pageClasses).addClass('page-next').removeAttr('aria-hidden');\n if (dynamicNavbar) {\n $oldNavbarInner.removeClass(navbarClasses).addClass('navbar-current').removeAttr('aria-hidden');\n $newNavbarInner.removeClass(navbarClasses).addClass('navbar-next').removeAttr('aria-hidden');\n }\n }\n if (options.animate) {\n var delay = router.app.theme === 'md' ? router.params.materialPageLoadDelay : router.params.iosPageLoadDelay;\n if (delay) {\n setTimeout(function () {\n setPositionClasses();\n router.animate($oldPage, $newPage, $oldNavbarInner, $newNavbarInner, 'forward', function () {\n afterAnimation();\n });\n }, delay);\n } else {\n setPositionClasses();\n router.animate($oldPage, $newPage, $oldNavbarInner, $newNavbarInner, 'forward', function () {\n afterAnimation();\n });\n }\n } else {\n afterAnimation();\n }\n return router;\n }\n function load(loadParams, loadOptions, ignorePageChange) {\n if ( loadParams === void 0 ) loadParams = {};\n if ( loadOptions === void 0 ) loadOptions = {};\n\n var router = this;\n if (!router.allowPageChange && !ignorePageChange) { return router; }\n var params = loadParams;\n var options = loadOptions;\n var url = params.url;\n var content = params.content;\n var el = params.el;\n var pageName = params.pageName;\n var template = params.template;\n var templateUrl = params.templateUrl;\n var component = params.component;\n var componentUrl = params.componentUrl;\n\n if (!options.reloadCurrent\n && options.route\n && options.route.route\n && options.route.route.parentPath\n && router.currentRoute.route\n && router.currentRoute.route.parentPath === options.route.route.parentPath) {\n // Do something nested\n if (options.route.url === router.url) {\n return false;\n }\n // Check for same params\n var sameParams = Object.keys(options.route.params).length === Object.keys(router.currentRoute.params).length;\n if (sameParams) {\n // Check for equal params name\n Object.keys(options.route.params).forEach(function (paramName) {\n if (\n !(paramName in router.currentRoute.params)\n || (router.currentRoute.params[paramName] !== options.route.params[paramName])\n ) {\n sameParams = false;\n }\n });\n }\n if (sameParams) {\n if (options.route.route.tab) {\n return router.tabLoad(options.route.route.tab, options);\n }\n return false;\n }\n }\n\n if (\n options.route\n && options.route.url\n && router.url === options.route.url\n && !(options.reloadCurrent || options.reloadPrevious)\n && !router.params.allowDuplicateUrls\n ) {\n router.allowPageChange = true;\n return false;\n }\n\n if (!options.route && url) {\n options.route = router.parseRouteUrl(url);\n Utils.extend(options.route, { route: { url: url, path: url } });\n }\n\n // Component Callbacks\n function resolve(pageEl, newOptions) {\n return router.forward(pageEl, Utils.extend(options, newOptions));\n }\n function reject() {\n router.allowPageChange = true;\n return router;\n }\n\n if (url || templateUrl || componentUrl) {\n router.allowPageChange = false;\n }\n\n // Proceed\n if (content) {\n router.forward(router.getPageEl(content), options);\n } else if (template || templateUrl) {\n // Parse template and send page element\n try {\n router.pageTemplateLoader(template, templateUrl, options, resolve, reject);\n } catch (err) {\n router.allowPageChange = true;\n throw err;\n }\n } else if (el) {\n // Load page from specified HTMLElement or by page name in pages container\n router.forward(router.getPageEl(el), options);\n } else if (pageName) {\n // Load page by page name in pages container\n router.forward(router.$el.children((\".page[data-name=\\\"\" + pageName + \"\\\"]\")).eq(0), options);\n } else if (component || componentUrl) {\n // Load from component (F7/Vue/React/...)\n try {\n router.pageComponentLoader(router.el, component, componentUrl, options, resolve, reject);\n } catch (err) {\n router.allowPageChange = true;\n throw err;\n }\n } else if (url) {\n // Load using XHR\n if (router.xhr) {\n router.xhr.abort();\n router.xhr = false;\n }\n router.xhrRequest(url, options)\n .then(function (pageContent) {\n router.forward(router.getPageEl(pageContent), options);\n })\n .catch(function () {\n router.allowPageChange = true;\n });\n }\n return router;\n }\n function navigate(navigateParams, navigateOptions) {\n if ( navigateOptions === void 0 ) navigateOptions = {};\n\n var router = this;\n var url;\n var createRoute;\n if (typeof navigateParams === 'string') {\n url = navigateParams;\n } else {\n url = navigateParams.url;\n createRoute = navigateParams.route;\n }\n var app = router.app;\n if (!router.view) {\n if (app.views.main) {\n app.views.main.router.navigate(url, navigateOptions);\n }\n return router;\n }\n if (url === '#' || url === '') {\n return router;\n }\n\n var navigateUrl = url.replace('./', '');\n if (navigateUrl[0] !== '/' && navigateUrl.indexOf('#') !== 0) {\n var currentPath = router.currentRoute.parentPath || router.currentRoute.path;\n navigateUrl = ((currentPath ? (currentPath + \"/\") : '/') + navigateUrl)\n .replace('///', '/')\n .replace('//', '/');\n }\n var route;\n if (createRoute) {\n route = Utils.extend(router.parseRouteUrl(navigateUrl), {\n route: Utils.extend({}, createRoute),\n });\n } else {\n route = router.findMatchingRoute(navigateUrl);\n }\n\n if (!route) {\n return router;\n }\n\n if (route.route.redirect) {\n return redirect.call(router, 'navigate', route, navigateOptions);\n }\n\n\n var options = {};\n if (route.route.options) {\n Utils.extend(options, route.route.options, navigateOptions, { route: route });\n } else {\n Utils.extend(options, navigateOptions, { route: route });\n }\n\n if (options && options.context) {\n route.context = options.context;\n options.route.context = options.context;\n }\n\n function resolve() {\n var routerLoaded = false;\n ('popup popover sheet loginScreen actions customModal').split(' ').forEach(function (modalLoadProp) {\n if (route.route[modalLoadProp] && !routerLoaded) {\n routerLoaded = true;\n router.modalLoad(modalLoadProp, route, options);\n }\n });\n ('url content component pageName el componentUrl template templateUrl').split(' ').forEach(function (pageLoadProp) {\n var obj;\n\n if (route.route[pageLoadProp] && !routerLoaded) {\n routerLoaded = true;\n router.load(( obj = {}, obj[pageLoadProp] = route.route[pageLoadProp], obj ), options);\n }\n });\n if (routerLoaded) { return; }\n // Async\n function asyncResolve(resolveParams, resolveOptions) {\n router.allowPageChange = false;\n var resolvedAsModal = false;\n if (resolveOptions && resolveOptions.context) {\n if (!route.context) { route.context = resolveOptions.context; }\n else { route.context = Utils.extend({}, route.context, resolveOptions.context); }\n options.route.context = route.context;\n }\n ('popup popover sheet loginScreen actions customModal').split(' ').forEach(function (modalLoadProp) {\n if (resolveParams[modalLoadProp]) {\n resolvedAsModal = true;\n var modalRoute = Utils.extend({}, route, { route: resolveParams });\n router.allowPageChange = true;\n router.modalLoad(modalLoadProp, modalRoute, Utils.extend(options, resolveOptions));\n }\n });\n if (resolvedAsModal) { return; }\n router.load(resolveParams, Utils.extend(options, resolveOptions), true);\n }\n function asyncReject() {\n router.allowPageChange = true;\n }\n if (route.route.async) {\n router.allowPageChange = false;\n\n route.route.async.call(router, route, router.currentRoute, asyncResolve, asyncReject);\n }\n }\n function reject() {\n router.allowPageChange = true;\n }\n\n processRouteQueue.call(\n router,\n route,\n router.currentRoute,\n function () {\n resolve();\n },\n function () {\n reject();\n }\n );\n\n // Return Router\n return router;\n }\n\n function tabLoad(tabRoute, loadOptions) {\n if ( loadOptions === void 0 ) loadOptions = {};\n\n var router = this;\n var options = Utils.extend({\n animate: router.params.animate,\n pushState: true,\n history: true,\n parentPageEl: null,\n preload: false,\n on: {},\n }, loadOptions);\n\n var currentRoute;\n var previousRoute;\n if (options.route) {\n // Set Route\n if (!options.preload && options.route !== router.currentRoute) {\n previousRoute = router.previousRoute;\n router.currentRoute = options.route;\n }\n if (options.preload) {\n currentRoute = options.route;\n previousRoute = router.currentRoute;\n } else {\n currentRoute = router.currentRoute;\n if (!previousRoute) { previousRoute = router.previousRoute; }\n }\n\n // Update Browser History\n if (router.params.pushState && options.pushState && !options.reloadPrevious) {\n History.replace(\n router.view.id,\n {\n url: options.route.url,\n },\n (router.params.pushStateRoot || '') + router.params.pushStateSeparator + options.route.url\n );\n }\n\n // Update Router History\n if (options.history) {\n router.history[Math.max(router.history.length - 1, 0)] = options.route.url;\n router.saveHistory();\n }\n }\n\n // Show Tab\n var $parentPageEl = $$1(options.parentPageEl || router.currentPageEl);\n var tabEl;\n if ($parentPageEl.length && $parentPageEl.find((\"#\" + (tabRoute.id))).length) {\n tabEl = $parentPageEl.find((\"#\" + (tabRoute.id))).eq(0);\n } else if (router.view.selector) {\n tabEl = (router.view.selector) + \" #\" + (tabRoute.id);\n } else {\n tabEl = \"#\" + (tabRoute.id);\n }\n var tabShowResult = router.app.tab.show({\n tabEl: tabEl,\n animate: options.animate,\n tabRoute: options.route,\n });\n\n var $newTabEl = tabShowResult.$newTabEl;\n var $oldTabEl = tabShowResult.$oldTabEl;\n var animated = tabShowResult.animated;\n var onTabsChanged = tabShowResult.onTabsChanged;\n\n if ($newTabEl && $newTabEl.parents('.page').length > 0 && options.route) {\n var tabParentPageData = $newTabEl.parents('.page')[0].f7Page;\n if (tabParentPageData && options.route) {\n tabParentPageData.route = options.route;\n }\n }\n\n // Tab Content Loaded\n function onTabLoaded(contentEl) {\n // Remove theme elements\n router.removeThemeElements($newTabEl);\n\n var tabEventTarget = $newTabEl;\n if (typeof contentEl !== 'string') { tabEventTarget = $$1(contentEl); }\n\n tabEventTarget.trigger('tab:init tab:mounted', tabRoute);\n router.emit('tabInit tabMounted', $newTabEl[0], tabRoute);\n\n if ($oldTabEl) {\n if (animated) {\n onTabsChanged(function () {\n if ($oldTabEl.length) {\n router.emit('routeChanged', router.currentRoute, router.previousRoute, router);\n }\n if (router.params.unloadTabContent) {\n router.tabRemove($oldTabEl, $newTabEl, tabRoute);\n }\n });\n } else {\n if ($oldTabEl.length) {\n router.emit('routeChanged', router.currentRoute, router.previousRoute, router);\n }\n if (router.params.unloadTabContent) {\n router.tabRemove($oldTabEl, $newTabEl, tabRoute);\n }\n }\n }\n }\n if (!router.params.unloadTabContent) {\n if ($newTabEl[0].f7RouterTabLoaded) {\n if ($oldTabEl && $oldTabEl.length) {\n if (animated) {\n onTabsChanged(function () {\n router.emit('routeChanged', router.currentRoute, router.previousRoute, router);\n });\n } else {\n router.emit('routeChanged', router.currentRoute, router.previousRoute, router);\n }\n }\n return router;\n }\n }\n\n // Load Tab Content\n function loadTab(loadTabParams, loadTabOptions) {\n // Load Tab Props\n var url = loadTabParams.url;\n var content = loadTabParams.content;\n var el = loadTabParams.el;\n var template = loadTabParams.template;\n var templateUrl = loadTabParams.templateUrl;\n var component = loadTabParams.component;\n var componentUrl = loadTabParams.componentUrl;\n // Component/Template Callbacks\n function resolve(contentEl) {\n router.allowPageChange = true;\n if (!contentEl) { return; }\n if (typeof contentEl === 'string') {\n $newTabEl.html(contentEl);\n } else {\n $newTabEl.html('');\n if (contentEl.f7Component) {\n contentEl.f7Component.$mount(function (componentEl) {\n $newTabEl.append(componentEl);\n });\n } else {\n $newTabEl.append(contentEl);\n }\n }\n if (!router.params.unloadTabContent) {\n $newTabEl[0].f7RouterTabLoaded = true;\n }\n onTabLoaded(contentEl);\n }\n function reject() {\n router.allowPageChange = true;\n return router;\n }\n\n if (content) {\n resolve(content);\n } else if (template || templateUrl) {\n try {\n router.tabTemplateLoader(template, templateUrl, loadTabOptions, resolve, reject);\n } catch (err) {\n router.allowPageChange = true;\n throw err;\n }\n } else if (el) {\n resolve(el);\n } else if (component || componentUrl) {\n // Load from component (F7/Vue/React/...)\n try {\n router.tabComponentLoader($newTabEl[0], component, componentUrl, loadTabOptions, resolve, reject);\n } catch (err) {\n router.allowPageChange = true;\n throw err;\n }\n } else if (url) {\n // Load using XHR\n if (router.xhr) {\n router.xhr.abort();\n router.xhr = false;\n }\n router.xhrRequest(url, loadTabOptions)\n .then(function (tabContent) {\n resolve(tabContent);\n })\n .catch(function () {\n router.allowPageChange = true;\n });\n }\n }\n\n ('url content component el componentUrl template templateUrl').split(' ').forEach(function (tabLoadProp) {\n var obj;\n\n if (tabRoute[tabLoadProp]) {\n loadTab(( obj = {}, obj[tabLoadProp] = tabRoute[tabLoadProp], obj ), options);\n }\n });\n\n // Async\n function asyncResolve(resolveParams, resolveOptions) {\n loadTab(resolveParams, Utils.extend(options, resolveOptions));\n }\n function asyncReject() {\n router.allowPageChange = true;\n }\n if (tabRoute.async) {\n tabRoute.async.call(router, currentRoute, previousRoute, asyncResolve, asyncReject);\n }\n return router;\n }\n function tabRemove($oldTabEl, $newTabEl, tabRoute) {\n var router = this;\n var hasTabComponentChild;\n $oldTabEl.children().each(function (index, tabChild) {\n if (tabChild.f7Component) {\n hasTabComponentChild = true;\n $$1(tabChild).trigger('tab:beforeremove', tabRoute);\n tabChild.f7Component.$destroy();\n }\n });\n if (!hasTabComponentChild) {\n $oldTabEl.trigger('tab:beforeremove', tabRoute);\n }\n router.emit('tabBeforeRemove', $oldTabEl[0], $newTabEl[0], tabRoute);\n router.removeTabContent($oldTabEl[0], tabRoute);\n }\n\n function modalLoad(modalType, route, loadOptions) {\n if ( loadOptions === void 0 ) loadOptions = {};\n\n var router = this;\n var app = router.app;\n\n var options = Utils.extend({\n animate: router.params.animate,\n pushState: true,\n history: true,\n on: {},\n }, loadOptions);\n\n var modalParams = Utils.extend({}, route.route[modalType]);\n var modalRoute = route.route;\n\n function onModalLoaded() {\n // Create Modal\n var modal = app[modalType].create(modalParams);\n modalRoute.modalInstance = modal;\n\n var hasEl = modal.el;\n\n function closeOnSwipeBack() {\n modal.close();\n }\n modal.on('modalOpen', function () {\n if (!hasEl) {\n // Remove theme elements\n router.removeThemeElements(modal.el);\n\n // Emit events\n modal.$el.trigger(((modalType.toLowerCase()) + \":init \" + (modalType.toLowerCase()) + \":mounted\"), route, modal);\n router.emit((\"modalInit \" + modalType + \"Init \" + modalType + \"Mounted\"), modal.el, route, modal);\n }\n router.once('swipeBackMove', closeOnSwipeBack);\n });\n modal.on('modalClose', function () {\n router.off('swipeBackMove', closeOnSwipeBack);\n if (!modal.closeByRouter) {\n router.back();\n }\n });\n\n modal.on('modalClosed', function () {\n modal.$el.trigger(((modalType.toLowerCase()) + \":beforeremove\"), route, modal);\n modal.emit((\"modalBeforeRemove \" + modalType + \"BeforeRemove\"), modal.el, route, modal);\n var modalComponent = modal.el.f7Component;\n if (modalComponent) {\n modalComponent.$destroy();\n }\n Utils.nextTick(function () {\n if (modalComponent || modalParams.component) {\n router.removeModal(modal.el);\n }\n modal.destroy();\n delete modalRoute.modalInstance;\n });\n });\n\n if (options.route) {\n // Update Browser History\n if (router.params.pushState && options.pushState) {\n History.push(\n router.view.id,\n {\n url: options.route.url,\n modal: modalType,\n },\n (router.params.pushStateRoot || '') + router.params.pushStateSeparator + options.route.url\n );\n }\n\n // Set Route\n if (options.route !== router.currentRoute) {\n router.currentRoute = Utils.extend(options.route, { modal: modal });\n }\n\n // Update Router History\n if (options.history) {\n router.history.push(options.route.url);\n router.saveHistory();\n }\n }\n\n if (hasEl) {\n // Remove theme elements\n router.removeThemeElements(modal.el);\n\n // Emit events\n modal.$el.trigger(((modalType.toLowerCase()) + \":init \" + (modalType.toLowerCase()) + \":mounted\"), route, modal);\n router.emit((\"modalInit \" + modalType + \"Init \" + modalType + \"Mounted\"), modal.el, route, modal);\n }\n\n // Open\n modal.open();\n }\n\n // Load Modal Content\n function loadModal(loadModalParams, loadModalOptions) {\n // Load Modal Props\n var url = loadModalParams.url;\n var content = loadModalParams.content;\n var template = loadModalParams.template;\n var templateUrl = loadModalParams.templateUrl;\n var component = loadModalParams.component;\n var componentUrl = loadModalParams.componentUrl;\n\n // Component/Template Callbacks\n function resolve(contentEl) {\n if (contentEl) {\n if (typeof contentEl === 'string') {\n modalParams.content = contentEl;\n } else if (contentEl.f7Component) {\n contentEl.f7Component.$mount(function (componentEl) {\n modalParams.el = componentEl;\n app.root.append(componentEl);\n });\n } else {\n modalParams.el = contentEl;\n }\n onModalLoaded();\n }\n }\n function reject() {\n router.allowPageChange = true;\n return router;\n }\n\n if (content) {\n resolve(content);\n } else if (template || templateUrl) {\n try {\n router.modalTemplateLoader(template, templateUrl, loadModalOptions, resolve, reject);\n } catch (err) {\n router.allowPageChange = true;\n throw err;\n }\n } else if (component || componentUrl) {\n // Load from component (F7/Vue/React/...)\n try {\n router.modalComponentLoader(app.root[0], component, componentUrl, loadModalOptions, resolve, reject);\n } catch (err) {\n router.allowPageChange = true;\n throw err;\n }\n } else if (url) {\n // Load using XHR\n if (router.xhr) {\n router.xhr.abort();\n router.xhr = false;\n }\n router.xhrRequest(url, loadModalOptions)\n .then(function (modalContent) {\n modalParams.content = modalContent;\n onModalLoaded();\n })\n .catch(function () {\n router.allowPageChange = true;\n });\n } else {\n onModalLoaded();\n }\n }\n\n var foundLoadProp;\n ('url content component el componentUrl template templateUrl').split(' ').forEach(function (modalLoadProp) {\n var obj;\n\n if (modalParams[modalLoadProp] && !foundLoadProp) {\n foundLoadProp = true;\n loadModal(( obj = {}, obj[modalLoadProp] = modalParams[modalLoadProp], obj ), options);\n }\n });\n if (!foundLoadProp && modalType === 'actions') {\n onModalLoaded();\n }\n\n // Async\n function asyncResolve(resolveParams, resolveOptions) {\n loadModal(resolveParams, Utils.extend(options, resolveOptions));\n }\n function asyncReject() {\n router.allowPageChange = true;\n }\n if (modalParams.async) {\n modalParams.async.call(router, options.route, router.currentRoute, asyncResolve, asyncReject);\n }\n return router;\n }\n function modalRemove(modal) {\n Utils.extend(modal, { closeByRouter: true });\n modal.close();\n }\n\n function backward(el, backwardOptions) {\n var router = this;\n var app = router.app;\n var view = router.view;\n\n var options = Utils.extend({\n animate: router.params.animate,\n pushState: true,\n }, backwardOptions);\n\n var dynamicNavbar = router.dynamicNavbar;\n var separateNavbar = router.separateNavbar;\n\n var $newPage = $$1(el);\n var $oldPage = router.$el.children('.page-current');\n\n if ($newPage.length) {\n // Remove theme elements\n router.removeThemeElements($newPage);\n }\n\n var $navbarEl;\n var $newNavbarInner;\n var $oldNavbarInner;\n\n if (dynamicNavbar) {\n $newNavbarInner = $newPage.children('.navbar').children('.navbar-inner');\n if (separateNavbar) {\n $navbarEl = router.$navbarEl;\n if ($newNavbarInner.length > 0) {\n $newPage.children('.navbar').remove();\n }\n if ($newNavbarInner.length === 0 && $newPage[0].f7Page) {\n // Try from pageData\n $newNavbarInner = $newPage[0].f7Page.$navbarEl;\n }\n $oldNavbarInner = $navbarEl.find('.navbar-current');\n } else {\n $oldNavbarInner = $oldPage.children('.navbar').children('.navbar-inner');\n }\n }\n\n router.allowPageChange = false;\n if ($newPage.length === 0 || $oldPage.length === 0) {\n router.allowPageChange = true;\n return router;\n }\n\n // Remove theme elements\n router.removeThemeElements($newPage);\n\n // New Page\n $newPage\n .addClass('page-previous')\n .removeClass('stacked')\n .removeAttr('aria-hidden');\n\n if (dynamicNavbar && $newNavbarInner.length > 0) {\n $newNavbarInner\n .addClass('navbar-previous')\n .removeClass('stacked')\n .removeAttr('aria-hidden');\n }\n\n\n // Remove previous page in case of \"forced\"\n var backIndex;\n if (options.force) {\n if ($oldPage.prev('.page-previous:not(.stacked)').length > 0 || $oldPage.prev('.page-previous').length === 0) {\n if (router.history.indexOf(options.route.url) >= 0) {\n backIndex = router.history.length - router.history.indexOf(options.route.url) - 1;\n router.history = router.history.slice(0, router.history.indexOf(options.route.url) + 2);\n view.history = router.history;\n } else if (router.history[[router.history.length - 2]]) {\n router.history[router.history.length - 2] = options.route.url;\n } else {\n router.history.unshift(router.url);\n }\n\n if (backIndex && router.params.stackPages) {\n $oldPage.prevAll('.page-previous').each(function (index, pageToRemove) {\n var $pageToRemove = $$1(pageToRemove);\n var $navbarToRemove;\n if (separateNavbar) {\n // $navbarToRemove = $oldNavbarInner.prevAll('.navbar-previous').eq(index);\n $navbarToRemove = $$1(app.navbar.getElByPage($pageToRemove));\n }\n if ($pageToRemove[0] !== $newPage[0] && $pageToRemove.index() > $newPage.index()) {\n if (router.initialPages.indexOf($pageToRemove[0]) >= 0) {\n $pageToRemove.addClass('stacked');\n if (separateNavbar) {\n $navbarToRemove.addClass('stacked');\n }\n } else {\n router.pageCallback('beforeRemove', $pageToRemove, $navbarToRemove, 'previous', undefined, options);\n router.removePage($pageToRemove);\n if (separateNavbar && $navbarToRemove.length > 0) {\n router.removeNavbar($navbarToRemove);\n }\n }\n }\n });\n } else {\n var $pageToRemove = $oldPage.prev('.page-previous:not(.stacked)');\n var $navbarToRemove;\n if (separateNavbar) {\n // $navbarToRemove = $oldNavbarInner.prev('.navbar-inner:not(.stacked)');\n $navbarToRemove = $$1(app.navbar.getElByPage($pageToRemove));\n }\n if (router.params.stackPages && router.initialPages.indexOf($pageToRemove[0]) >= 0) {\n $pageToRemove.addClass('stacked');\n $navbarToRemove.addClass('stacked');\n } else if ($pageToRemove.length > 0) {\n router.pageCallback('beforeRemove', $pageToRemove, $navbarToRemove, 'previous', undefined, options);\n router.removePage($pageToRemove);\n if (separateNavbar && $navbarToRemove.length) {\n router.removeNavbar($navbarToRemove);\n }\n }\n }\n }\n }\n\n // Insert new page\n var newPageInDom = $newPage.parents(doc).length > 0;\n var f7Component = $newPage[0].f7Component;\n\n function insertPage() {\n if ($newPage.next($oldPage).length === 0) {\n if (!newPageInDom && f7Component) {\n f7Component.$mount(function (componentEl) {\n $$1(componentEl).insertBefore($oldPage);\n });\n } else {\n $newPage.insertBefore($oldPage);\n }\n }\n if (separateNavbar && $newNavbarInner.length) {\n $newNavbarInner.insertBefore($oldNavbarInner);\n if ($oldNavbarInner.length > 0) {\n $newNavbarInner.insertBefore($oldNavbarInner);\n } else {\n if (!router.$navbarEl.parents(doc).length) {\n router.$el.prepend(router.$navbarEl);\n }\n $navbarEl.append($newNavbarInner);\n }\n }\n if (!newPageInDom) {\n router.pageCallback('mounted', $newPage, $newNavbarInner, 'previous', 'current', options, $oldPage);\n }\n }\n\n if (options.preload) {\n // Insert Page\n insertPage();\n // Tab route\n if (options.route.route.tab) {\n router.tabLoad(options.route.route.tab, Utils.extend({}, options, {\n history: false,\n pushState: false,\n preload: true,\n }));\n }\n // Page init and before init events\n router.pageCallback('init', $newPage, $newNavbarInner, 'previous', 'current', options, $oldPage);\n if ($newPage.prevAll('.page-previous:not(.stacked)').length > 0) {\n $newPage.prevAll('.page-previous:not(.stacked)').each(function (index, pageToRemove) {\n var $pageToRemove = $$1(pageToRemove);\n var $navbarToRemove;\n if (separateNavbar) {\n // $navbarToRemove = $newNavbarInner.prevAll('.navbar-previous:not(.stacked)').eq(index);\n $navbarToRemove = $$1(app.navbar.getElByPage($pageToRemove));\n }\n if (router.params.stackPages && router.initialPages.indexOf(pageToRemove) >= 0) {\n $pageToRemove.addClass('stacked');\n if (separateNavbar) {\n $navbarToRemove.addClass('stacked');\n }\n } else {\n router.pageCallback('beforeRemove', $pageToRemove, $navbarToRemove, 'previous', undefined);\n router.removePage($pageToRemove);\n if (separateNavbar && $navbarToRemove.length) {\n router.removeNavbar($navbarToRemove);\n }\n }\n });\n }\n router.allowPageChange = true;\n return router;\n }\n\n // History State\n if (!(Device.ie || Device.edge)) {\n if (router.params.pushState && options.pushState) {\n if (backIndex) { History.go(-backIndex); }\n else { History.back(); }\n }\n }\n\n // Update History\n if (router.history.length === 1) {\n router.history.unshift(router.url);\n }\n router.history.pop();\n router.saveHistory();\n\n // Current Page & Navbar\n router.currentPageEl = $newPage[0];\n if (dynamicNavbar && $newNavbarInner.length) {\n router.currentNavbarEl = $newNavbarInner[0];\n } else {\n delete router.currentNavbarEl;\n }\n\n // Current Route\n router.currentRoute = options.route;\n\n // History State\n if (Device.ie || Device.edge) {\n if (router.params.pushState && options.pushState) {\n if (backIndex) { History.go(-backIndex); }\n else { History.back(); }\n }\n }\n\n // Insert Page\n insertPage();\n\n // Load Tab\n if (options.route.route.tab) {\n router.tabLoad(options.route.route.tab, Utils.extend({}, options, {\n history: false,\n pushState: false,\n }));\n }\n\n // Page init and before init events\n router.pageCallback('init', $newPage, $newNavbarInner, 'previous', 'current', options, $oldPage);\n\n // Before animation callback\n router.pageCallback('beforeIn', $newPage, $newNavbarInner, 'previous', 'current', options);\n router.pageCallback('beforeOut', $oldPage, $oldNavbarInner, 'current', 'next', options);\n\n // Animation\n function afterAnimation() {\n // Set classes\n var pageClasses = 'page-previous page-current page-next';\n var navbarClasses = 'navbar-previous navbar-current navbar-next';\n $newPage.removeClass(pageClasses).addClass('page-current').removeAttr('aria-hidden');\n $oldPage.removeClass(pageClasses).addClass('page-next').attr('aria-hidden', 'true');\n if (dynamicNavbar) {\n $newNavbarInner.removeClass(navbarClasses).addClass('navbar-current').removeAttr('aria-hidden');\n $oldNavbarInner.removeClass(navbarClasses).addClass('navbar-next').attr('aria-hidden', 'true');\n }\n\n // After animation event\n router.pageCallback('afterIn', $newPage, $newNavbarInner, 'previous', 'current', options);\n router.pageCallback('afterOut', $oldPage, $oldNavbarInner, 'current', 'next', options);\n\n // Remove Old Page\n if (router.params.stackPages && router.initialPages.indexOf($oldPage[0]) >= 0) {\n $oldPage.addClass('stacked');\n if (separateNavbar) {\n $oldNavbarInner.addClass('stacked');\n }\n } else {\n router.pageCallback('beforeRemove', $oldPage, $oldNavbarInner, 'next', undefined, options);\n router.removePage($oldPage);\n if (separateNavbar && $oldNavbarInner.length) {\n router.removeNavbar($oldNavbarInner);\n }\n }\n\n router.allowPageChange = true;\n router.emit('routeChanged', router.currentRoute, router.previousRoute, router);\n\n // Preload previous page\n var preloadPreviousPage = app.theme === 'ios' ? (router.params.preloadPreviousPage || router.params.iosSwipeBack) : router.params.preloadPreviousPage;\n if (preloadPreviousPage && router.history[router.history.length - 2]) {\n router.back(router.history[router.history.length - 2], { preload: true });\n }\n if (router.params.pushState) {\n History.clearRouterQueue();\n }\n }\n\n function setPositionClasses() {\n var pageClasses = 'page-previous page-current page-next';\n var navbarClasses = 'navbar-previous navbar-current navbar-next';\n $oldPage.removeClass(pageClasses).addClass('page-current');\n $newPage.removeClass(pageClasses).addClass('page-previous').removeAttr('aria-hidden');\n if (dynamicNavbar) {\n $oldNavbarInner.removeClass(navbarClasses).addClass('navbar-current');\n $newNavbarInner.removeClass(navbarClasses).addClass('navbar-previous').removeAttr('aria-hidden');\n }\n }\n\n if (options.animate) {\n setPositionClasses();\n router.animate($oldPage, $newPage, $oldNavbarInner, $newNavbarInner, 'backward', function () {\n afterAnimation();\n });\n } else {\n afterAnimation();\n }\n\n return router;\n }\n function loadBack(backParams, backOptions, ignorePageChange) {\n var router = this;\n\n if (!router.allowPageChange && !ignorePageChange) { return router; }\n var params = backParams;\n var options = backOptions;\n var url = params.url;\n var content = params.content;\n var el = params.el;\n var pageName = params.pageName;\n var template = params.template;\n var templateUrl = params.templateUrl;\n var component = params.component;\n var componentUrl = params.componentUrl;\n\n if (\n options.route.url\n && router.url === options.route.url\n && !(options.reloadCurrent || options.reloadPrevious)\n && !router.params.allowDuplicateUrls\n ) {\n return false;\n }\n\n if (!options.route && url) {\n options.route = router.parseRouteUrl(url);\n }\n\n // Component Callbacks\n function resolve(pageEl, newOptions) {\n return router.backward(pageEl, Utils.extend(options, newOptions));\n }\n function reject() {\n router.allowPageChange = true;\n return router;\n }\n\n if (url || templateUrl || componentUrl) {\n router.allowPageChange = false;\n }\n\n // Proceed\n if (content) {\n router.backward(router.getPageEl(content), options);\n } else if (template || templateUrl) {\n // Parse template and send page element\n try {\n router.pageTemplateLoader(template, templateUrl, options, resolve, reject);\n } catch (err) {\n router.allowPageChange = true;\n throw err;\n }\n } else if (el) {\n // Load page from specified HTMLElement or by page name in pages container\n router.backward(router.getPageEl(el), options);\n } else if (pageName) {\n // Load page by page name in pages container\n router.backward(router.$el.children((\".page[data-name=\\\"\" + pageName + \"\\\"]\")).eq(0), options);\n } else if (component || componentUrl) {\n // Load from component (F7/Vue/React/...)\n try {\n router.pageComponentLoader(router.el, component, componentUrl, options, resolve, reject);\n } catch (err) {\n router.allowPageChange = true;\n throw err;\n }\n } else if (url) {\n // Load using XHR\n if (router.xhr) {\n router.xhr.abort();\n router.xhr = false;\n }\n router.xhrRequest(url, options)\n .then(function (pageContent) {\n router.backward(router.getPageEl(pageContent), options);\n })\n .catch(function () {\n router.allowPageChange = true;\n });\n }\n return router;\n }\n function back() {\n var ref;\n\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n var navigateUrl;\n var navigateOptions;\n if (typeof args[0] === 'object') {\n navigateOptions = args[0] || {};\n } else {\n navigateUrl = args[0];\n navigateOptions = args[1] || {};\n }\n\n var router = this;\n var app = router.app;\n if (!router.view) {\n (ref = app.views.main.router).back.apply(ref, args);\n return router;\n }\n\n var currentRouteIsModal = router.currentRoute.modal;\n var modalType;\n if (!currentRouteIsModal) {\n ('popup popover sheet loginScreen actions customModal').split(' ').forEach(function (modalLoadProp) {\n if (router.currentRoute.route[modalLoadProp]) {\n currentRouteIsModal = true;\n modalType = modalLoadProp;\n }\n });\n }\n if (currentRouteIsModal) {\n var modalToClose = router.currentRoute.modal\n || router.currentRoute.route.modalInstance\n || app[modalType].get();\n var previousUrl = router.history[router.history.length - 2];\n var previousRoute = router.findMatchingRoute(previousUrl);\n if (!previousRoute && previousUrl) {\n previousRoute = {\n url: previousUrl,\n path: previousUrl.split('?')[0],\n query: Utils.parseUrlQuery(previousUrl),\n route: {\n path: previousUrl.split('?')[0],\n url: previousUrl,\n },\n };\n }\n if (!previousRoute || !modalToClose) {\n return router;\n }\n if (router.params.pushState && navigateOptions.pushState !== false) {\n History.back();\n }\n router.currentRoute = previousRoute;\n router.history.pop();\n router.saveHistory();\n router.modalRemove(modalToClose);\n return router;\n }\n var $previousPage = router.$el.children('.page-current').prevAll('.page-previous').eq(0);\n if (!navigateOptions.force && $previousPage.length > 0) {\n if (router.params.pushState\n && $previousPage[0].f7Page\n && router.history[router.history.length - 2] !== $previousPage[0].f7Page.route.url\n ) {\n router.back(\n router.history[router.history.length - 2],\n Utils.extend(navigateOptions, { force: true })\n );\n return router;\n }\n\n var previousPageRoute = $previousPage[0].f7Page.route;\n processRouteQueue.call(\n router,\n previousPageRoute,\n router.currentRoute,\n function () {\n router.loadBack({ el: $previousPage }, Utils.extend(navigateOptions, {\n route: previousPageRoute,\n }));\n },\n function () {}\n );\n\n return router;\n }\n\n // Navigate URL\n if (navigateUrl === '#') {\n navigateUrl = undefined;\n }\n if (navigateUrl && navigateUrl[0] !== '/' && navigateUrl.indexOf('#') !== 0) {\n navigateUrl = ((router.path || '/') + navigateUrl).replace('//', '/');\n }\n if (!navigateUrl && router.history.length > 1) {\n navigateUrl = router.history[router.history.length - 2];\n }\n\n // Find route to load\n var route = router.findMatchingRoute(navigateUrl);\n if (!route) {\n if (navigateUrl) {\n route = {\n url: navigateUrl,\n path: navigateUrl.split('?')[0],\n query: Utils.parseUrlQuery(navigateUrl),\n route: {\n path: navigateUrl.split('?')[0],\n url: navigateUrl,\n },\n };\n }\n }\n if (!route) {\n return router;\n }\n\n if (route.route.redirect) {\n return redirect.call(router, 'back', route, navigateOptions);\n }\n\n var options = {};\n if (route.route.options) {\n Utils.extend(options, route.route.options, navigateOptions, { route: route });\n } else {\n Utils.extend(options, navigateOptions, { route: route });\n }\n\n if (options && options.context) {\n route.context = options.context;\n options.route.context = options.context;\n }\n\n var backForceLoaded;\n if (options.force && router.params.stackPages) {\n router.$el.children('.page-previous.stacked').each(function (index, pageEl) {\n if (pageEl.f7Page && pageEl.f7Page.route && pageEl.f7Page.route.url === route.url) {\n backForceLoaded = true;\n router.loadBack({ el: pageEl }, options);\n }\n });\n if (backForceLoaded) {\n return router;\n }\n }\n function resolve() {\n var routerLoaded = false;\n ('url content component pageName el componentUrl template templateUrl').split(' ').forEach(function (pageLoadProp) {\n var obj;\n\n if (route.route[pageLoadProp] && !routerLoaded) {\n routerLoaded = true;\n router.loadBack(( obj = {}, obj[pageLoadProp] = route.route[pageLoadProp], obj ), options);\n }\n });\n if (routerLoaded) { return; }\n // Async\n function asyncResolve(resolveParams, resolveOptions) {\n router.allowPageChange = false;\n if (resolveOptions && resolveOptions.context) {\n if (!route.context) { route.context = resolveOptions.context; }\n else { route.context = Utils.extend({}, route.context, resolveOptions.context); }\n options.route.context = route.context;\n }\n router.loadBack(resolveParams, Utils.extend(options, resolveOptions), true);\n }\n function asyncReject() {\n router.allowPageChange = true;\n }\n if (route.route.async) {\n router.allowPageChange = false;\n\n route.route.async.call(router, route, router.currentRoute, asyncResolve, asyncReject);\n }\n }\n function reject() {\n router.allowPageChange = true;\n }\n\n if (options.preload) {\n resolve();\n } else {\n processRouteQueue.call(\n router,\n route,\n router.currentRoute,\n function () {\n resolve();\n },\n function () {\n reject();\n }\n );\n }\n\n // Return Router\n return router;\n }\n\n function clearPreviousHistory() {\n var router = this;\n var app = router.app;\n var separateNavbar = router.separateNavbar;\n var url = router.history[router.history.length - 1];\n\n var $currentPageEl = $$1(router.currentPageEl);\n\n var $pagesToRemove = router.$el\n .children('.page:not(.stacked)')\n .filter(function (index, pageInView) { return pageInView !== $currentPageEl[0]; });\n\n $pagesToRemove.each(function (index, pageEl) {\n var $oldPageEl = $$1(pageEl);\n var $oldNavbarInnerEl = $$1(app.navbar.getElByPage($oldPageEl));\n if (router.params.stackPages && router.initialPages.indexOf($oldPageEl[0]) >= 0) {\n $oldPageEl.addClass('stacked');\n if (separateNavbar) {\n $oldNavbarInnerEl.addClass('stacked');\n }\n } else {\n // Page remove event\n router.pageCallback('beforeRemove', $oldPageEl, $oldNavbarInnerEl, 'previous', undefined, {});\n router.removePage($oldPageEl);\n if (separateNavbar && $oldNavbarInnerEl.length) {\n router.removeNavbar($oldNavbarInnerEl);\n }\n }\n });\n\n router.history = [url];\n router.view.history = [url];\n router.saveHistory();\n }\n\n var Router = (function (Framework7Class$$1) {\n function Router(app, view) {\n Framework7Class$$1.call(this, {}, [typeof view === 'undefined' ? app : view]);\n var router = this;\n\n // Is App Router\n router.isAppRouter = typeof view === 'undefined';\n\n if (router.isAppRouter) {\n // App Router\n Utils.extend(false, router, {\n app: app,\n params: app.params.view,\n routes: app.routes || [],\n cache: app.cache,\n });\n } else {\n // View Router\n Utils.extend(false, router, {\n app: app,\n view: view,\n viewId: view.id,\n params: view.params,\n routes: view.routes,\n $el: view.$el,\n el: view.el,\n $navbarEl: view.$navbarEl,\n navbarEl: view.navbarEl,\n history: view.history,\n scrollHistory: view.scrollHistory,\n cache: app.cache,\n dynamicNavbar: app.theme === 'ios' && view.params.iosDynamicNavbar,\n separateNavbar: app.theme === 'ios' && view.params.iosDynamicNavbar && view.params.iosSeparateDynamicNavbar,\n initialPages: [],\n initialNavbars: [],\n });\n }\n\n // Install Modules\n router.useModules();\n\n // Temporary Dom\n router.tempDom = doc.createElement('div');\n\n // AllowPageChage\n router.allowPageChange = true;\n\n // Current Route\n var currentRoute = {};\n var previousRoute = {};\n Object.defineProperty(router, 'currentRoute', {\n enumerable: true,\n configurable: true,\n set: function set(newRoute) {\n if ( newRoute === void 0 ) newRoute = {};\n\n previousRoute = Utils.extend({}, currentRoute);\n currentRoute = newRoute;\n if (!currentRoute) { return; }\n router.url = currentRoute.url;\n router.emit('routeChange', newRoute, previousRoute, router);\n },\n get: function get() {\n return currentRoute;\n },\n });\n Object.defineProperty(router, 'previousRoute', {\n enumerable: true,\n configurable: true,\n get: function get() {\n return previousRoute;\n },\n set: function set(newRoute) {\n previousRoute = newRoute;\n },\n });\n\n Utils.extend(router, {\n // Load\n forward: forward,\n load: load,\n navigate: navigate,\n refreshPage: refreshPage,\n // Tab\n tabLoad: tabLoad,\n tabRemove: tabRemove,\n // Modal\n modalLoad: modalLoad,\n modalRemove: modalRemove,\n // Back\n backward: backward,\n loadBack: loadBack,\n back: back,\n // Clear history\n clearPreviousHistory: clearPreviousHistory,\n });\n\n return router;\n }\n\n if ( Framework7Class$$1 ) Router.__proto__ = Framework7Class$$1;\n Router.prototype = Object.create( Framework7Class$$1 && Framework7Class$$1.prototype );\n Router.prototype.constructor = Router;\n\n Router.prototype.animatableNavElements = function animatableNavElements (newNavbarInner, oldNavbarInner) {\n var router = this;\n var dynamicNavbar = router.dynamicNavbar;\n var animateIcon = router.params.iosAnimateNavbarBackIcon;\n\n var newNavEls;\n var oldNavEls;\n function animatableNavEl(el, navbarInner) {\n var $el = $$1(el);\n var isSliding = $el.hasClass('sliding') || navbarInner.hasClass('sliding');\n var isSubnavbar = $el.hasClass('subnavbar');\n var needsOpacityTransition = isSliding ? !isSubnavbar : true;\n var hasIcon = isSliding && animateIcon && $el.hasClass('left') && $el.find('.back .icon').length > 0;\n var $iconEl;\n if (hasIcon) { $iconEl = $el.find('.back .icon'); }\n return {\n $el: $el,\n $iconEl: $iconEl,\n hasIcon: hasIcon,\n leftOffset: $el[0].f7NavbarLeftOffset,\n rightOffset: $el[0].f7NavbarRightOffset,\n isSliding: isSliding,\n isSubnavbar: isSubnavbar,\n needsOpacityTransition: needsOpacityTransition,\n };\n }\n if (dynamicNavbar) {\n newNavEls = [];\n oldNavEls = [];\n newNavbarInner.children('.left, .right, .title, .subnavbar').each(function (index, navEl) {\n newNavEls.push(animatableNavEl(navEl, newNavbarInner));\n });\n oldNavbarInner.children('.left, .right, .title, .subnavbar').each(function (index, navEl) {\n oldNavEls.push(animatableNavEl(navEl, oldNavbarInner));\n });\n [oldNavEls, newNavEls].forEach(function (navEls) {\n navEls.forEach(function (navEl) {\n var n = navEl;\n var isSliding = navEl.isSliding;\n var $el = navEl.$el;\n var otherEls = navEls === oldNavEls ? newNavEls : oldNavEls;\n if (!(isSliding && $el.hasClass('title') && otherEls)) { return; }\n otherEls.forEach(function (otherNavEl) {\n if (otherNavEl.$el.hasClass('left') && otherNavEl.hasIcon) {\n var iconTextEl = otherNavEl.$el.find('.back span')[0];\n n.leftOffset += iconTextEl ? iconTextEl.offsetLeft : 0;\n }\n });\n });\n });\n }\n\n return { newNavEls: newNavEls, oldNavEls: oldNavEls };\n };\n\n Router.prototype.animateWithCSS = function animateWithCSS (oldPage, newPage, oldNavbarInner, newNavbarInner, direction, callback) {\n var router = this;\n var dynamicNavbar = router.dynamicNavbar;\n var separateNavbar = router.separateNavbar;\n var ios = router.app.theme === 'ios';\n // Router Animation class\n var routerTransitionClass = \"router-transition-\" + direction + \" router-transition-css-\" + direction;\n\n var newNavEls;\n var oldNavEls;\n var navbarWidth = 0;\n\n if (ios && dynamicNavbar) {\n if (!separateNavbar) {\n navbarWidth = newNavbarInner[0].offsetWidth;\n }\n var navEls = router.animatableNavElements(newNavbarInner, oldNavbarInner);\n newNavEls = navEls.newNavEls;\n oldNavEls = navEls.oldNavEls;\n }\n\n function animateNavbars(progress) {\n if (ios && dynamicNavbar) {\n newNavEls.forEach(function (navEl) {\n var $el = navEl.$el;\n var offset = direction === 'forward' ? navEl.rightOffset : navEl.leftOffset;\n if (navEl.isSliding) {\n $el.transform((\"translate3d(\" + (offset * (1 - progress)) + \"px,0,0)\"));\n }\n if (navEl.hasIcon) {\n if (direction === 'forward') {\n navEl.$iconEl.transform((\"translate3d(\" + ((-offset - navbarWidth) * (1 - progress)) + \"px,0,0)\"));\n } else {\n navEl.$iconEl.transform((\"translate3d(\" + ((-offset + (navbarWidth / 5)) * (1 - progress)) + \"px,0,0)\"));\n }\n }\n });\n oldNavEls.forEach(function (navEl) {\n var $el = navEl.$el;\n var offset = direction === 'forward' ? navEl.leftOffset : navEl.rightOffset;\n if (navEl.isSliding) {\n $el.transform((\"translate3d(\" + (offset * (progress)) + \"px,0,0)\"));\n }\n if (navEl.hasIcon) {\n if (direction === 'forward') {\n navEl.$iconEl.transform((\"translate3d(\" + ((-offset + (navbarWidth / 5)) * (progress)) + \"px,0,0)\"));\n } else {\n navEl.$iconEl.transform((\"translate3d(\" + ((-offset - navbarWidth) * (progress)) + \"px,0,0)\"));\n }\n }\n });\n }\n }\n\n // AnimationEnd Callback\n function onDone() {\n if (router.dynamicNavbar) {\n if (newNavbarInner.hasClass('sliding')) {\n newNavbarInner.find('.title, .left, .right, .left .icon, .subnavbar').transform('');\n } else {\n newNavbarInner.find('.sliding').transform('');\n }\n if (oldNavbarInner.hasClass('sliding')) {\n oldNavbarInner.find('.title, .left, .right, .left .icon, .subnavbar').transform('');\n } else {\n oldNavbarInner.find('.sliding').transform('');\n }\n }\n router.$el.removeClass(routerTransitionClass);\n if (callback) { callback(); }\n }\n\n (direction === 'forward' ? newPage : oldPage).animationEnd(function () {\n onDone();\n });\n\n // Animate\n if (dynamicNavbar) {\n // Prepare Navbars\n animateNavbars(0);\n Utils.nextTick(function () {\n // Add class, start animation\n animateNavbars(1);\n router.$el.addClass(routerTransitionClass);\n });\n } else {\n // Add class, start animation\n router.$el.addClass(routerTransitionClass);\n }\n };\n\n Router.prototype.animateWithJS = function animateWithJS (oldPage, newPage, oldNavbarInner, newNavbarInner, direction, callback) {\n var router = this;\n var dynamicNavbar = router.dynamicNavbar;\n var separateNavbar = router.separateNavbar;\n var ios = router.app.theme === 'ios';\n var duration = ios ? 400 : 250;\n var routerTransitionClass = \"router-transition-\" + direction + \" router-transition-js-\" + direction;\n\n var startTime = null;\n var done = false;\n\n var newNavEls;\n var oldNavEls;\n var navbarWidth = 0;\n\n if (ios && dynamicNavbar) {\n if (!separateNavbar) {\n navbarWidth = newNavbarInner[0].offsetWidth;\n }\n var navEls = router.animatableNavElements(newNavbarInner, oldNavbarInner);\n newNavEls = navEls.newNavEls;\n oldNavEls = navEls.oldNavEls;\n }\n\n var $shadowEl;\n var $opacityEl;\n\n if (ios) {\n $shadowEl = $$1('
');\n $opacityEl = $$1('
');\n\n if (direction === 'forward') {\n newPage.append($shadowEl);\n oldPage.append($opacityEl);\n } else {\n newPage.append($opacityEl);\n oldPage.append($shadowEl);\n }\n }\n var easing = Utils.bezier(0.25, 0.1, 0.25, 1);\n\n function onDone() {\n newPage.transform('').css('opacity', '');\n oldPage.transform('').css('opacity', '');\n if (ios) {\n $shadowEl.remove();\n $opacityEl.remove();\n if (dynamicNavbar) {\n newNavEls.forEach(function (navEl) {\n navEl.$el.transform('');\n navEl.$el.css('opacity', '');\n });\n oldNavEls.forEach(function (navEl) {\n navEl.$el.transform('');\n navEl.$el.css('opacity', '');\n });\n newNavEls = [];\n oldNavEls = [];\n }\n }\n\n router.$el.removeClass(routerTransitionClass);\n\n if (callback) { callback(); }\n }\n\n function render() {\n var time = Utils.now();\n if (!startTime) { startTime = time; }\n var progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n var easeProgress = easing(progress);\n\n if (progress >= 1) {\n done = true;\n }\n var inverter = router.app.rtl ? -1 : 1;\n if (ios) {\n if (direction === 'forward') {\n newPage.transform((\"translate3d(\" + ((1 - easeProgress) * 100 * inverter) + \"%,0,0)\"));\n oldPage.transform((\"translate3d(\" + (-easeProgress * 20 * inverter) + \"%,0,0)\"));\n $shadowEl[0].style.opacity = easeProgress;\n $opacityEl[0].style.opacity = easeProgress;\n } else {\n newPage.transform((\"translate3d(\" + (-(1 - easeProgress) * 20 * inverter) + \"%,0,0)\"));\n oldPage.transform((\"translate3d(\" + (easeProgress * 100 * inverter) + \"%,0,0)\"));\n $shadowEl[0].style.opacity = 1 - easeProgress;\n $opacityEl[0].style.opacity = 1 - easeProgress;\n }\n if (dynamicNavbar) {\n newNavEls.forEach(function (navEl) {\n var $el = navEl.$el;\n var offset = direction === 'forward' ? navEl.rightOffset : navEl.leftOffset;\n if (navEl.needsOpacityTransition) {\n $el[0].style.opacity = easeProgress;\n }\n if (navEl.isSliding) {\n $el.transform((\"translate3d(\" + (offset * (1 - easeProgress)) + \"px,0,0)\"));\n }\n if (navEl.hasIcon) {\n if (direction === 'forward') {\n navEl.$iconEl.transform((\"translate3d(\" + ((-offset - navbarWidth) * (1 - easeProgress)) + \"px,0,0)\"));\n } else {\n navEl.$iconEl.transform((\"translate3d(\" + ((-offset + (navbarWidth / 5)) * (1 - easeProgress)) + \"px,0,0)\"));\n }\n }\n });\n oldNavEls.forEach(function (navEl) {\n var $el = navEl.$el;\n var offset = direction === 'forward' ? navEl.leftOffset : navEl.rightOffset;\n if (navEl.needsOpacityTransition) {\n $el[0].style.opacity = (1 - easeProgress);\n }\n if (navEl.isSliding) {\n $el.transform((\"translate3d(\" + (offset * (easeProgress)) + \"px,0,0)\"));\n }\n if (navEl.hasIcon) {\n if (direction === 'forward') {\n navEl.$iconEl.transform((\"translate3d(\" + ((-offset + (navbarWidth / 5)) * (easeProgress)) + \"px,0,0)\"));\n } else {\n navEl.$iconEl.transform((\"translate3d(\" + ((-offset - navbarWidth) * (easeProgress)) + \"px,0,0)\"));\n }\n }\n });\n }\n } else if (direction === 'forward') {\n newPage.transform((\"translate3d(0, \" + ((1 - easeProgress) * 56) + \"px,0)\"));\n newPage.css('opacity', easeProgress);\n } else {\n oldPage.transform((\"translate3d(0, \" + (easeProgress * 56) + \"px,0)\"));\n oldPage.css('opacity', 1 - easeProgress);\n }\n\n if (done) {\n onDone();\n return;\n }\n Utils.nextFrame(render);\n }\n\n router.$el.addClass(routerTransitionClass);\n\n Utils.nextFrame(render);\n };\n\n Router.prototype.animate = function animate () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n // Args: oldPage, newPage, oldNavbarInner, newNavbarInner, direction, callback\n var router = this;\n if (router.params.animateCustom) {\n router.params.animateCustom.apply(router, args);\n } else if (router.params.animateWithJS) {\n router.animateWithJS.apply(router, args);\n } else {\n router.animateWithCSS.apply(router, args);\n }\n };\n\n Router.prototype.removeModal = function removeModal (modalEl) {\n var router = this;\n router.removeEl(modalEl);\n };\n // eslint-disable-next-line\n Router.prototype.removeTabContent = function removeTabContent (tabEl) {\n var $tabEl = $$1(tabEl);\n $tabEl.html('');\n };\n\n Router.prototype.removeNavbar = function removeNavbar (el) {\n var router = this;\n router.removeEl(el);\n };\n\n Router.prototype.removePage = function removePage (el) {\n var router = this;\n router.removeEl(el);\n };\n\n Router.prototype.removeEl = function removeEl (el) {\n if (!el) { return; }\n var router = this;\n var $el = $$1(el);\n if ($el.length === 0) { return; }\n if ($el[0].f7Component && $el[0].f7Component.$destroy) {\n $el[0].f7Component.$destroy();\n }\n $el.find('.tab').each(function (tabIndex, tabEl) {\n $$1(tabEl).children().each(function (index, tabChild) {\n if (tabChild.f7Component) {\n $$1(tabChild).trigger('tab:beforeremove');\n tabChild.f7Component.$destroy();\n }\n });\n });\n if (!router.params.removeElements) {\n return;\n }\n if (router.params.removeElementsWithTimeout) {\n setTimeout(function () {\n $el.remove();\n }, router.params.removeElementsTimeout);\n } else {\n $el.remove();\n }\n };\n\n Router.prototype.getPageEl = function getPageEl (content) {\n var router = this;\n if (typeof content === 'string') {\n router.tempDom.innerHTML = content;\n } else {\n if ($$1(content).hasClass('page')) {\n return content;\n }\n router.tempDom.innerHTML = '';\n $$1(router.tempDom).append(content);\n }\n\n return router.findElement('.page', router.tempDom);\n };\n\n Router.prototype.findElement = function findElement (stringSelector, container, notStacked) {\n var router = this;\n var view = router.view;\n var app = router.app;\n\n // Modals Selector\n var modalsSelector = '.popup, .dialog, .popover, .actions-modal, .sheet-modal, .login-screen, .page';\n\n var $container = $$1(container);\n var selector = stringSelector;\n if (notStacked) { selector += ':not(.stacked)'; }\n\n var found = $container\n .find(selector)\n .filter(function (index, el) { return $$1(el).parents(modalsSelector).length === 0; });\n\n if (found.length > 1) {\n if (typeof view.selector === 'string') {\n // Search in related view\n found = $container.find(((view.selector) + \" \" + selector));\n }\n if (found.length > 1) {\n // Search in main view\n found = $container.find((\".\" + (app.params.viewMainClass) + \" \" + selector));\n }\n }\n if (found.length === 1) { return found; }\n\n // Try to find not stacked\n if (!notStacked) { found = router.findElement(selector, $container, true); }\n if (found && found.length === 1) { return found; }\n if (found && found.length > 1) { return $$1(found[0]); }\n return undefined;\n };\n\n Router.prototype.flattenRoutes = function flattenRoutes (routes) {\n var this$1 = this;\n if ( routes === void 0 ) routes = this.routes;\n\n var flattenedRoutes = [];\n routes.forEach(function (route) {\n if ('routes' in route) {\n var mergedPathsRoutes = route.routes.map(function (childRoute) {\n var cRoute = Utils.extend({}, childRoute);\n cRoute.path = (((route.path) + \"/\" + (cRoute.path))).replace('///', '/').replace('//', '/');\n return cRoute;\n });\n flattenedRoutes = flattenedRoutes.concat(route, this$1.flattenRoutes(mergedPathsRoutes));\n } else if ('tabs' in route && route.tabs) {\n var mergedPathsRoutes$1 = route.tabs.map(function (tabRoute) {\n var tRoute = Utils.extend({}, route, {\n path: (((route.path) + \"/\" + (tabRoute.path))).replace('///', '/').replace('//', '/'),\n parentPath: route.path,\n tab: tabRoute,\n });\n delete tRoute.tabs;\n return tRoute;\n });\n flattenedRoutes = flattenedRoutes.concat(this$1.flattenRoutes(mergedPathsRoutes$1));\n } else {\n flattenedRoutes.push(route);\n }\n });\n return flattenedRoutes;\n };\n // eslint-disable-next-line\n Router.prototype.parseRouteUrl = function parseRouteUrl (url) {\n if (!url) { return {}; }\n var query = Utils.parseUrlQuery(url);\n var hash = url.split('#')[1];\n var params = {};\n var path = url.split('#')[0].split('?')[0];\n return {\n query: query,\n hash: hash,\n params: params,\n url: url,\n path: path,\n };\n };\n\n Router.prototype.findTabRoute = function findTabRoute (tabEl) {\n var router = this;\n var $tabEl = $$1(tabEl);\n var parentPath = router.currentRoute.route.parentPath;\n var tabId = $tabEl.attr('id');\n var flattenedRoutes = router.flattenRoutes(router.routes);\n var foundTabRoute;\n flattenedRoutes.forEach(function (route) {\n if (\n route.parentPath === parentPath\n && route.tab\n && route.tab.id === tabId\n ) {\n foundTabRoute = route;\n }\n });\n return foundTabRoute;\n };\n\n Router.prototype.findRouteByKey = function findRouteByKey (key, value) {\n var router = this;\n var routes = router.routes;\n var flattenedRoutes = router.flattenRoutes(routes);\n var matchingRoute;\n\n flattenedRoutes.forEach(function (route) {\n if (matchingRoute) { return; }\n if (route[key] === value) {\n matchingRoute = route;\n }\n });\n return matchingRoute;\n };\n\n Router.prototype.findMatchingRoute = function findMatchingRoute (url) {\n if (!url) { return undefined; }\n var router = this;\n var routes = router.routes;\n var flattenedRoutes = router.flattenRoutes(routes);\n var ref = router.parseRouteUrl(url);\n var path = ref.path;\n var query = ref.query;\n var hash = ref.hash;\n var params = ref.params;\n var matchingRoute;\n flattenedRoutes.forEach(function (route) {\n if (matchingRoute) { return; }\n var keys = [];\n\n var pathsToMatch = [route.path];\n if (route.alias) {\n if (typeof route.alias === 'string') { pathsToMatch.push(route.alias); }\n else if (Array.isArray(route.alias)) {\n route.alias.forEach(function (aliasPath) {\n pathsToMatch.push(aliasPath);\n });\n }\n }\n\n var matched;\n pathsToMatch.forEach(function (pathToMatch) {\n if (matched) { return; }\n matched = pathToRegexp_1(pathToMatch, keys).exec(path);\n });\n\n if (matched) {\n keys.forEach(function (keyObj, index) {\n if (typeof keyObj.name === 'number') { return; }\n var paramValue = matched[index + 1];\n params[keyObj.name] = paramValue;\n });\n\n var parentPath;\n if (route.parentPath) {\n parentPath = path.split('/').slice(0, route.parentPath.split('/').length - 1).join('/');\n }\n\n matchingRoute = {\n query: query,\n hash: hash,\n params: params,\n url: url,\n path: path,\n parentPath: parentPath,\n route: route,\n name: route.name,\n };\n }\n });\n return matchingRoute;\n };\n\n Router.prototype.removeFromXhrCache = function removeFromXhrCache (url) {\n var router = this;\n var xhrCache = router.cache.xhr;\n var index = false;\n for (var i = 0; i < xhrCache.length; i += 1) {\n if (xhrCache[i].url === url) { index = i; }\n }\n if (index !== false) { xhrCache.splice(index, 1); }\n };\n\n Router.prototype.xhrRequest = function xhrRequest (requestUrl, options) {\n var router = this;\n var params = router.params;\n var ignoreCache = options.ignoreCache;\n var url = requestUrl;\n\n var hasQuery = url.indexOf('?') >= 0;\n if (params.passRouteQueryToRequest\n && options\n && options.route\n && options.route.query\n && Object.keys(options.route.query).length\n ) {\n url += \"\" + (hasQuery ? '&' : '?') + (Utils.serializeObject(options.route.query));\n hasQuery = true;\n }\n\n if (params.passRouteParamsToRequest\n && options\n && options.route\n && options.route.params\n && Object.keys(options.route.params).length\n ) {\n url += \"\" + (hasQuery ? '&' : '?') + (Utils.serializeObject(options.route.params));\n hasQuery = true;\n }\n\n if (url.indexOf('{{') >= 0\n && options\n && options.route\n && options.route.params\n && Object.keys(options.route.params).length\n ) {\n Object.keys(options.route.params).forEach(function (paramName) {\n var regExp = new RegExp((\"{{\" + paramName + \"}}\"), 'g');\n url = url.replace(regExp, options.route.params[paramName] || '');\n });\n }\n // should we ignore get params or not\n if (params.xhrCacheIgnoreGetParameters && url.indexOf('?') >= 0) {\n url = url.split('?')[0];\n }\n return Utils.promise(function (resolve, reject) {\n if (params.xhrCache && !ignoreCache && url.indexOf('nocache') < 0 && params.xhrCacheIgnore.indexOf(url) < 0) {\n for (var i = 0; i < router.cache.xhr.length; i += 1) {\n var cachedUrl = router.cache.xhr[i];\n if (cachedUrl.url === url) {\n // Check expiration\n if (Utils.now() - cachedUrl.time < params.xhrCacheDuration) {\n // Load from cache\n resolve(cachedUrl.content);\n return;\n }\n }\n }\n }\n router.xhr = router.app.request({\n url: url,\n method: 'GET',\n beforeSend: function beforeSend(xhr) {\n router.emit('routerAjaxStart', xhr, options);\n },\n complete: function complete(xhr, status) {\n router.emit('routerAjaxComplete', xhr);\n if ((status !== 'error' && status !== 'timeout' && (xhr.status >= 200 && xhr.status < 300)) || xhr.status === 0) {\n if (params.xhrCache && xhr.responseText !== '') {\n router.removeFromXhrCache(url);\n router.cache.xhr.push({\n url: url,\n time: Utils.now(),\n content: xhr.responseText,\n });\n }\n router.emit('routerAjaxSuccess', xhr, options);\n resolve(xhr.responseText);\n } else {\n router.emit('routerAjaxError', xhr, options);\n reject(xhr);\n }\n },\n error: function error(xhr) {\n router.emit('routerAjaxError', xhr, options);\n reject(xhr);\n },\n });\n });\n };\n\n // Remove theme elements\n Router.prototype.removeThemeElements = function removeThemeElements (el) {\n var router = this;\n var theme = router.app.theme;\n $$1(el).find((\".\" + (theme === 'md' ? 'ios' : 'md') + \"-only, .if-\" + (theme === 'md' ? 'ios' : 'md'))).remove();\n };\n\n Router.prototype.templateLoader = function templateLoader (template, templateUrl, options, resolve, reject) {\n var router = this;\n function compile(t) {\n var compiledHtml;\n var context;\n try {\n context = options.context || {};\n if (typeof context === 'function') { context = context.call(router); }\n else if (typeof context === 'string') {\n try {\n context = JSON.parse(context);\n } catch (err) {\n reject();\n throw (err);\n }\n }\n if (typeof t === 'function') {\n compiledHtml = t(context);\n } else {\n compiledHtml = Template7.compile(t)(Utils.extend({}, context || {}, {\n $app: router.app,\n $root: Utils.extend({}, router.app.data, router.app.methods),\n $route: options.route,\n $router: router,\n $theme: {\n ios: router.app.theme === 'ios',\n md: router.app.theme === 'md',\n },\n }));\n }\n } catch (err) {\n reject();\n throw (err);\n }\n resolve(compiledHtml, { context: context });\n }\n if (templateUrl) {\n // Load via XHR\n if (router.xhr) {\n router.xhr.abort();\n router.xhr = false;\n }\n router\n .xhrRequest(templateUrl, options)\n .then(function (templateContent) {\n compile(templateContent);\n })\n .catch(function () {\n reject();\n });\n } else {\n compile(template);\n }\n };\n\n Router.prototype.modalTemplateLoader = function modalTemplateLoader (template, templateUrl, options, resolve, reject) {\n var router = this;\n return router.templateLoader(template, templateUrl, options, function (html) {\n resolve(html);\n }, reject);\n };\n\n Router.prototype.tabTemplateLoader = function tabTemplateLoader (template, templateUrl, options, resolve, reject) {\n var router = this;\n return router.templateLoader(template, templateUrl, options, function (html) {\n resolve(html);\n }, reject);\n };\n\n Router.prototype.pageTemplateLoader = function pageTemplateLoader (template, templateUrl, options, resolve, reject) {\n var router = this;\n return router.templateLoader(template, templateUrl, options, function (html, newOptions) {\n if ( newOptions === void 0 ) newOptions = {};\n\n resolve(router.getPageEl(html), newOptions);\n }, reject);\n };\n\n Router.prototype.componentLoader = function componentLoader (component, componentUrl, options, resolve, reject) {\n if ( options === void 0 ) options = {};\n\n var router = this;\n var url = typeof component === 'string' ? component : componentUrl;\n function compile(c) {\n var context = options.context || {};\n if (typeof context === 'function') { context = context.call(router); }\n else if (typeof context === 'string') {\n try {\n context = JSON.parse(context);\n } catch (err) {\n reject();\n throw (err);\n }\n }\n var extendContext = Utils.merge(\n {},\n context,\n {\n $: $$1,\n $$: $$1,\n $app: router.app,\n $root: Utils.merge({}, router.app.data, router.app.methods),\n $route: options.route,\n $router: router,\n $dom7: $$1,\n $theme: {\n ios: router.app.theme === 'ios',\n md: router.app.theme === 'md',\n },\n }\n );\n var createdComponent = Component.create(c, extendContext);\n resolve(createdComponent.el);\n }\n if (url) {\n // Load via XHR\n if (router.xhr) {\n router.xhr.abort();\n router.xhr = false;\n }\n router\n .xhrRequest(url, options)\n .then(function (loadedComponent) {\n compile(Component.parse(loadedComponent));\n })\n .catch(function (err) {\n reject();\n throw (err);\n });\n } else {\n compile(component);\n }\n };\n\n Router.prototype.modalComponentLoader = function modalComponentLoader (rootEl, component, componentUrl, options, resolve, reject) {\n var router = this;\n router.componentLoader(component, componentUrl, options, function (el) {\n resolve(el);\n }, reject);\n };\n\n Router.prototype.tabComponentLoader = function tabComponentLoader (tabEl, component, componentUrl, options, resolve, reject) {\n var router = this;\n router.componentLoader(component, componentUrl, options, function (el) {\n resolve(el);\n }, reject);\n };\n\n Router.prototype.pageComponentLoader = function pageComponentLoader (routerEl, component, componentUrl, options, resolve, reject) {\n var router = this;\n router.componentLoader(component, componentUrl, options, function (el, newOptions) {\n if ( newOptions === void 0 ) newOptions = {};\n\n resolve(el, newOptions);\n }, reject);\n };\n\n Router.prototype.getPageData = function getPageData (pageEl, navbarEl, from, to, route, pageFromEl) {\n if ( route === void 0 ) route = {};\n\n var router = this;\n var $pageEl = $$1(pageEl);\n var $navbarEl = $$1(navbarEl);\n var currentPage = $pageEl[0].f7Page || {};\n var direction;\n var pageFrom;\n if ((from === 'next' && to === 'current') || (from === 'current' && to === 'previous')) { direction = 'forward'; }\n if ((from === 'current' && to === 'next') || (from === 'previous' && to === 'current')) { direction = 'backward'; }\n if (currentPage && !currentPage.fromPage) {\n var $pageFromEl = $$1(pageFromEl);\n if ($pageFromEl.length) {\n pageFrom = $pageFromEl[0].f7Page;\n }\n }\n pageFrom = currentPage.pageFrom || pageFrom;\n if (pageFrom && pageFrom.pageFrom) {\n pageFrom.pageFrom = null;\n }\n var page = {\n app: router.app,\n view: router.view,\n router: router,\n $el: $pageEl,\n el: $pageEl[0],\n $pageEl: $pageEl,\n pageEl: $pageEl[0],\n $navbarEl: $navbarEl,\n navbarEl: $navbarEl[0],\n name: $pageEl.attr('data-name'),\n position: from,\n from: from,\n to: to,\n direction: direction,\n route: currentPage.route ? currentPage.route : route,\n pageFrom: pageFrom,\n };\n\n if ($navbarEl && $navbarEl[0]) {\n $navbarEl[0].f7Page = page;\n }\n $pageEl[0].f7Page = page;\n return page;\n };\n\n // Callbacks\n Router.prototype.pageCallback = function pageCallback (callback, pageEl, navbarEl, from, to, options, pageFromEl) {\n if ( options === void 0 ) options = {};\n\n if (!pageEl) { return; }\n var router = this;\n var $pageEl = $$1(pageEl);\n if (!$pageEl.length) { return; }\n var route = options.route;\n var restoreScrollTopOnBack = router.params.restoreScrollTopOnBack;\n\n var camelName = \"page\" + (callback[0].toUpperCase() + callback.slice(1, callback.length));\n var colonName = \"page:\" + (callback.toLowerCase());\n\n var page = {};\n if (callback === 'beforeRemove' && $pageEl[0].f7Page) {\n page = Utils.extend($pageEl[0].f7Page, { from: from, to: to, position: from });\n } else {\n page = router.getPageData(pageEl, navbarEl, from, to, route, pageFromEl);\n }\n page.swipeBack = !!options.swipeBack;\n\n var ref = options.route ? options.route.route : {};\n var on = ref.on; if ( on === void 0 ) on = {};\n var once = ref.once; if ( once === void 0 ) once = {};\n if (options.on) {\n Utils.extend(on, options.on);\n }\n if (options.once) {\n Utils.extend(once, options.once);\n }\n\n function attachEvents() {\n if ($pageEl[0].f7RouteEventsAttached) { return; }\n $pageEl[0].f7RouteEventsAttached = true;\n if (on && Object.keys(on).length > 0) {\n $pageEl[0].f7RouteEventsOn = on;\n Object.keys(on).forEach(function (eventName) {\n on[eventName] = on[eventName].bind(router);\n $pageEl.on(Utils.eventNameToColonCase(eventName), on[eventName]);\n });\n }\n if (once && Object.keys(once).length > 0) {\n $pageEl[0].f7RouteEventsOnce = once;\n Object.keys(once).forEach(function (eventName) {\n once[eventName] = once[eventName].bind(router);\n $pageEl.once(Utils.eventNameToColonCase(eventName), once[eventName]);\n });\n }\n }\n\n function detachEvents() {\n if (!$pageEl[0].f7RouteEventsAttached) { return; }\n if ($pageEl[0].f7RouteEventsOn) {\n Object.keys($pageEl[0].f7RouteEventsOn).forEach(function (eventName) {\n $pageEl.off(Utils.eventNameToColonCase(eventName), $pageEl[0].f7RouteEventsOn[eventName]);\n });\n }\n if ($pageEl[0].f7RouteEventsOnce) {\n Object.keys($pageEl[0].f7RouteEventsOnce).forEach(function (eventName) {\n $pageEl.off(Utils.eventNameToColonCase(eventName), $pageEl[0].f7RouteEventsOnce[eventName]);\n });\n }\n $pageEl[0].f7RouteEventsAttached = null;\n $pageEl[0].f7RouteEventsOn = null;\n $pageEl[0].f7RouteEventsOnce = null;\n delete $pageEl[0].f7RouteEventsAttached;\n delete $pageEl[0].f7RouteEventsOn;\n delete $pageEl[0].f7RouteEventsOnce;\n }\n\n if (callback === 'mounted') {\n attachEvents();\n }\n if (callback === 'init') {\n if (restoreScrollTopOnBack && (from === 'previous' || !from) && to === 'current' && router.scrollHistory[page.route.url] && !$pageEl.hasClass('no-restore-scroll')) {\n var $pageContent = $pageEl.find('.page-content');\n if ($pageContent.length > 0) {\n // eslint-disable-next-line\n $pageContent = $pageContent.filter(function (pageContentIndex, pageContentEl) {\n return (\n $$1(pageContentEl).parents('.tab:not(.tab-active)').length === 0\n && !$$1(pageContentEl).is('.tab:not(.tab-active)')\n );\n });\n }\n $pageContent.scrollTop(router.scrollHistory[page.route.url]);\n }\n attachEvents();\n if ($pageEl[0].f7PageInitialized) {\n $pageEl.trigger('page:reinit', page);\n router.emit('pageReinit', page);\n return;\n }\n $pageEl[0].f7PageInitialized = true;\n }\n if (restoreScrollTopOnBack && callback === 'beforeOut' && from === 'current' && to === 'previous') {\n // Save scroll position\n var $pageContent$1 = $pageEl.find('.page-content');\n if ($pageContent$1.length > 0) {\n // eslint-disable-next-line\n $pageContent$1 = $pageContent$1.filter(function (pageContentIndex, pageContentEl) {\n return (\n $$1(pageContentEl).parents('.tab:not(.tab-active)').length === 0\n && !$$1(pageContentEl).is('.tab:not(.tab-active)')\n );\n });\n }\n router.scrollHistory[page.route.url] = $pageContent$1.scrollTop();\n }\n if (restoreScrollTopOnBack && callback === 'beforeOut' && from === 'current' && to === 'next') {\n // Delete scroll position\n delete router.scrollHistory[page.route.url];\n }\n\n $pageEl.trigger(colonName, page);\n router.emit(camelName, page);\n\n if (callback === 'beforeRemove') {\n detachEvents();\n $pageEl[0].f7Page = null;\n }\n };\n\n Router.prototype.saveHistory = function saveHistory () {\n var router = this;\n router.view.history = router.history;\n if (router.params.pushState) {\n win.localStorage[(\"f7router-\" + (router.view.id) + \"-history\")] = JSON.stringify(router.history);\n }\n };\n\n Router.prototype.restoreHistory = function restoreHistory () {\n var router = this;\n if (router.params.pushState && win.localStorage[(\"f7router-\" + (router.view.id) + \"-history\")]) {\n router.history = JSON.parse(win.localStorage[(\"f7router-\" + (router.view.id) + \"-history\")]);\n router.view.history = router.history;\n }\n };\n\n Router.prototype.clearHistory = function clearHistory () {\n var router = this;\n router.history = [];\n if (router.view) { router.view.history = []; }\n router.saveHistory();\n };\n\n Router.prototype.init = function init () {\n var router = this;\n var app = router.app;\n var view = router.view;\n\n // Init Swipeback\n {\n if (\n (view && router.params.iosSwipeBack && app.theme === 'ios')\n || (view && router.params.mdSwipeBack && app.theme === 'md')\n ) {\n SwipeBack(router);\n }\n }\n\n // Dynamic not separated navbbar\n if (router.dynamicNavbar && !router.separateNavbar) {\n router.$el.addClass('router-dynamic-navbar-inside');\n }\n\n var initUrl = router.params.url;\n var documentUrl = doc.location.href.split(doc.location.origin)[1];\n var historyRestored;\n var ref = router.params;\n var pushState = ref.pushState;\n var pushStateOnLoad = ref.pushStateOnLoad;\n var pushStateSeparator = ref.pushStateSeparator;\n var pushStateAnimateOnLoad = ref.pushStateAnimateOnLoad;\n var ref$1 = router.params;\n var pushStateRoot = ref$1.pushStateRoot;\n if (win.cordova && pushState && !pushStateSeparator && !pushStateRoot && doc.location.pathname.indexOf('index.html')) {\n // eslint-disable-next-line\n console.warn('Framework7: wrong or not complete pushState configuration, trying to guess pushStateRoot');\n pushStateRoot = doc.location.pathname.split('index.html')[0];\n }\n\n if (!pushState || !pushStateOnLoad) {\n if (!initUrl) {\n initUrl = documentUrl;\n }\n if (doc.location.search && initUrl.indexOf('?') < 0) {\n initUrl += doc.location.search;\n }\n if (doc.location.hash && initUrl.indexOf('#') < 0) {\n initUrl += doc.location.hash;\n }\n } else {\n if (pushStateRoot && documentUrl.indexOf(pushStateRoot) >= 0) {\n documentUrl = documentUrl.split(pushStateRoot)[1];\n if (documentUrl === '') { documentUrl = '/'; }\n }\n if (pushStateSeparator.length > 0 && documentUrl.indexOf(pushStateSeparator) >= 0) {\n initUrl = documentUrl.split(pushStateSeparator)[1];\n } else {\n initUrl = documentUrl;\n }\n router.restoreHistory();\n if (router.history.indexOf(initUrl) >= 0) {\n router.history = router.history.slice(0, router.history.indexOf(initUrl) + 1);\n } else if (router.params.url === initUrl) {\n router.history = [initUrl];\n } else if (History.state && History.state[view.id] && History.state[view.id].url === router.history[router.history.length - 1]) {\n initUrl = router.history[router.history.length - 1];\n } else {\n router.history = [documentUrl.split(pushStateSeparator)[0] || '/', initUrl];\n }\n if (router.history.length > 1) {\n historyRestored = true;\n } else {\n router.history = [];\n }\n router.saveHistory();\n }\n var currentRoute;\n if (router.history.length > 1) {\n // Will load page\n currentRoute = router.findMatchingRoute(router.history[0]);\n if (!currentRoute) {\n currentRoute = Utils.extend(router.parseRouteUrl(router.history[0]), {\n route: {\n url: router.history[0],\n path: router.history[0].split('?')[0],\n },\n });\n }\n } else {\n // Don't load page\n currentRoute = router.findMatchingRoute(initUrl);\n if (!currentRoute) {\n currentRoute = Utils.extend(router.parseRouteUrl(initUrl), {\n route: {\n url: initUrl,\n path: initUrl.split('?')[0],\n },\n });\n }\n }\n\n if (router.params.stackPages) {\n router.$el.children('.page').each(function (index, pageEl) {\n var $pageEl = $$1(pageEl);\n router.initialPages.push($pageEl[0]);\n if (router.separateNavbar && $pageEl.children('.navbar').length > 0) {\n router.initialNavbars.push($pageEl.children('.navbar').find('.navbar-inner')[0]);\n }\n });\n }\n\n if (router.$el.children('.page:not(.stacked)').length === 0 && initUrl) {\n // No pages presented in DOM, reload new page\n router.navigate(initUrl, {\n initial: true,\n reloadCurrent: true,\n pushState: false,\n });\n } else {\n // Init current DOM page\n var hasTabRoute;\n router.currentRoute = currentRoute;\n router.$el.children('.page:not(.stacked)').each(function (index, pageEl) {\n var $pageEl = $$1(pageEl);\n var $navbarInnerEl;\n $pageEl.addClass('page-current');\n if (router.separateNavbar) {\n $navbarInnerEl = $pageEl.children('.navbar').children('.navbar-inner');\n if ($navbarInnerEl.length > 0) {\n if (!router.$navbarEl.parents(doc).length) {\n router.$el.prepend(router.$navbarEl);\n }\n router.$navbarEl.append($navbarInnerEl);\n $pageEl.children('.navbar').remove();\n } else {\n router.$navbarEl.addClass('navbar-hidden');\n }\n }\n var initOptions = {\n route: router.currentRoute,\n };\n if (router.currentRoute && router.currentRoute.route && router.currentRoute.route.options) {\n Utils.extend(initOptions, router.currentRoute.route.options);\n }\n router.currentPageEl = $pageEl[0];\n if (router.dynamicNavbar && $navbarInnerEl.length) {\n router.currentNavbarEl = $navbarInnerEl[0];\n }\n router.removeThemeElements($pageEl);\n if (router.dynamicNavbar && $navbarInnerEl.length) {\n router.removeThemeElements($navbarInnerEl);\n }\n if (initOptions.route.route.tab) {\n hasTabRoute = true;\n router.tabLoad(initOptions.route.route.tab, Utils.extend({}, initOptions));\n }\n router.pageCallback('init', $pageEl, $navbarInnerEl, 'current', undefined, initOptions);\n });\n if (historyRestored) {\n router.navigate(initUrl, {\n initial: true,\n pushState: false,\n history: false,\n animate: pushStateAnimateOnLoad,\n once: {\n pageAfterIn: function pageAfterIn() {\n if (router.history.length > 2) {\n router.back({ preload: true });\n }\n },\n },\n });\n }\n if (!historyRestored && !hasTabRoute) {\n router.history.push(initUrl);\n router.saveHistory();\n }\n }\n if (initUrl && pushState && pushStateOnLoad && (!History.state || !History.state[view.id])) {\n History.initViewState(view.id, {\n url: initUrl,\n });\n }\n router.emit('local::init routerInit', router);\n };\n\n Router.prototype.destroy = function destroy () {\n var router = this;\n\n router.emit('local::destroy routerDestroy', router);\n\n // Delete props & methods\n Object.keys(router).forEach(function (routerProp) {\n router[routerProp] = null;\n delete router[routerProp];\n });\n\n router = null;\n };\n\n return Router;\n }(Framework7Class));\n\n var Router$1 = {\n name: 'router',\n static: {\n Router: Router,\n },\n instance: {\n cache: {\n xhr: [],\n templates: [],\n components: [],\n },\n },\n create: function create() {\n var instance = this;\n if (instance.app) {\n // View Router\n if (instance.params.router) {\n instance.router = new Router(instance.app, instance);\n }\n } else {\n // App Router\n instance.router = new Router(instance);\n }\n },\n };\n\n var View = (function (Framework7Class$$1) {\n function View(appInstance, el, viewParams) {\n if ( viewParams === void 0 ) viewParams = {};\n\n Framework7Class$$1.call(this, viewParams, [appInstance]);\n\n var app = appInstance;\n var $el = $$1(el);\n var view = this;\n\n var defaults = {\n routes: [],\n routesAdd: [],\n };\n\n // Default View params\n view.params = Utils.extend(defaults, app.params.view, viewParams);\n\n // Routes\n if (view.params.routes.length > 0) {\n view.routes = view.params.routes;\n } else {\n view.routes = [].concat(app.routes, view.params.routesAdd);\n }\n\n // Selector\n var selector;\n if (typeof el === 'string') { selector = el; }\n else {\n // Supposed to be HTMLElement or Dom7\n selector = ($el.attr('id') ? (\"#\" + ($el.attr('id'))) : '') + ($el.attr('class') ? (\".\" + ($el.attr('class').replace(/ /g, '.').replace('.active', ''))) : '');\n }\n\n // DynamicNavbar\n var $navbarEl;\n if (app.theme === 'ios' && view.params.iosDynamicNavbar && view.params.iosSeparateDynamicNavbar) {\n $navbarEl = $el.children('.navbar').eq(0);\n if ($navbarEl.length === 0) {\n $navbarEl = $$1('
');\n }\n }\n\n // View Props\n Utils.extend(false, view, {\n app: app,\n $el: $el,\n el: $el[0],\n name: view.params.name,\n main: view.params.main || $el.hasClass('view-main'),\n $navbarEl: $navbarEl,\n navbarEl: $navbarEl ? $navbarEl[0] : undefined,\n selector: selector,\n history: [],\n scrollHistory: {},\n });\n\n // Save in DOM\n $el[0].f7View = view;\n\n // Install Modules\n view.useModules();\n\n // Add to app\n app.views.push(view);\n if (view.main) {\n app.views.main = view;\n }\n if (view.name) {\n app.views[view.name] = view;\n }\n\n // Index\n view.index = app.views.indexOf(view);\n\n // View ID\n var viewId;\n if (view.name) {\n viewId = \"view_\" + (view.name);\n } else if (view.main) {\n viewId = 'view_main';\n } else {\n viewId = \"view_\" + (view.index);\n }\n view.id = viewId;\n\n // Init View\n if (app.initialized) {\n view.init();\n } else {\n app.on('init', function () {\n view.init();\n });\n }\n\n return view;\n }\n\n if ( Framework7Class$$1 ) View.__proto__ = Framework7Class$$1;\n View.prototype = Object.create( Framework7Class$$1 && Framework7Class$$1.prototype );\n View.prototype.constructor = View;\n\n View.prototype.destroy = function destroy () {\n var view = this;\n var app = view.app;\n\n view.$el.trigger('view:beforedestroy', view);\n view.emit('local::beforeDestroy viewBeforeDestroy', view);\n\n if (view.main) {\n app.views.main = null;\n delete app.views.main;\n } else if (view.name) {\n app.views[view.name] = null;\n delete app.views[view.name];\n }\n view.$el[0].f7View = null;\n delete view.$el[0].f7View;\n\n app.views.splice(app.views.indexOf(view), 1);\n\n // Destroy Router\n if (view.params.router && view.router) {\n view.router.destroy();\n }\n\n view.emit('local::destroy viewDestroy', view);\n\n // Delete props & methods\n Object.keys(view).forEach(function (viewProp) {\n view[viewProp] = null;\n delete view[viewProp];\n });\n\n view = null;\n };\n\n View.prototype.init = function init () {\n var view = this;\n if (view.params.router) {\n view.router.init();\n }\n };\n\n return View;\n }(Framework7Class));\n\n // Use Router\n View.use(Router$1);\n\n function initClicks(app) {\n function handleClicks(e) {\n var clicked = $$1(e.target);\n var clickedLink = clicked.closest('a');\n var isLink = clickedLink.length > 0;\n var url = isLink && clickedLink.attr('href');\n var isTabLink = isLink && clickedLink.hasClass('tab-link') && (clickedLink.attr('data-tab') || (url && url.indexOf('#') === 0));\n\n // Check if link is external\n if (isLink) {\n // eslint-disable-next-line\n if (clickedLink.is(app.params.clicks.externalLinks) || (url && url.indexOf('javascript:') >= 0)) {\n var target = clickedLink.attr('target');\n if (\n url\n && win.cordova\n && win.cordova.InAppBrowser\n && (target === '_system' || target === '_blank')\n ) {\n e.preventDefault();\n win.cordova.InAppBrowser.open(url, target);\n }\n return;\n }\n }\n\n // Modules Clicks\n Object.keys(app.modules).forEach(function (moduleName) {\n var moduleClicks = app.modules[moduleName].clicks;\n if (!moduleClicks) { return; }\n Object.keys(moduleClicks).forEach(function (clickSelector) {\n var matchingClickedElement = clicked.closest(clickSelector).eq(0);\n if (matchingClickedElement.length > 0) {\n moduleClicks[clickSelector].call(app, matchingClickedElement, matchingClickedElement.dataset());\n }\n });\n });\n\n // Load Page\n var clickedLinkData = {};\n if (isLink) {\n e.preventDefault();\n clickedLinkData = clickedLink.dataset();\n }\n var validUrl = url && url.length > 0 && url !== '#' && !isTabLink;\n var template = clickedLinkData.template;\n if (validUrl || clickedLink.hasClass('back') || template) {\n var view;\n if (clickedLinkData.view) {\n view = $$1(clickedLinkData.view)[0].f7View;\n } else {\n view = clicked.parents('.view')[0] && clicked.parents('.view')[0].f7View;\n if (!clickedLink.hasClass('back') && view && view.params.linksView) {\n if (typeof view.params.linksView === 'string') { view = $$1(view.params.linksView)[0].f7View; }\n else if (view.params.linksView instanceof View) { view = view.params.linksView; }\n }\n }\n if (!view) {\n if (app.views.main) { view = app.views.main; }\n }\n if (!view || !view.router) { return; }\n if (clickedLinkData.context && typeof clickedLinkData.context === 'string') {\n try {\n clickedLinkData.context = JSON.parse(clickedLinkData.context);\n } catch (err) {\n // something wrong there\n }\n }\n if (clickedLink.hasClass('back')) { view.router.back(url, clickedLinkData); }\n else { view.router.navigate(url, clickedLinkData); }\n }\n }\n\n app.on('click', handleClicks);\n\n // Prevent scrolling on overlays\n function preventScrolling(e) {\n e.preventDefault();\n }\n if (Support.touch && !Device.android) {\n var activeListener = Support.passiveListener ? { passive: false, capture: false } : false;\n $$1(doc).on((app.params.touch.fastClicks ? 'touchstart' : 'touchmove'), '.panel-backdrop, .dialog-backdrop, .preloader-backdrop, .popup-backdrop, .searchbar-backdrop', preventScrolling, activeListener);\n }\n }\n var ClicksModule = {\n name: 'clicks',\n params: {\n clicks: {\n // External Links\n externalLinks: '.external',\n },\n },\n on: {\n init: function init() {\n var app = this;\n initClicks(app);\n },\n },\n };\n\n var HistoryModule = {\n name: 'history',\n static: {\n history: History,\n },\n on: {\n init: function init() {\n History.init(this);\n },\n },\n };\n\n var keyPrefix = 'f7storage-';\n var Storage = {\n get: function get(key) {\n return Utils.promise(function (resolve, reject) {\n try {\n var value = JSON.parse(win.localStorage.getItem((\"\" + keyPrefix + key)));\n resolve(value);\n } catch (e) {\n reject(e);\n }\n });\n },\n set: function set(key, value) {\n return Utils.promise(function (resolve, reject) {\n try {\n win.localStorage.setItem((\"\" + keyPrefix + key), JSON.stringify(value));\n resolve();\n } catch (e) {\n reject(e);\n }\n });\n },\n remove: function remove(key) {\n return Utils.promise(function (resolve, reject) {\n try {\n win.localStorage.removeItem((\"\" + keyPrefix + key));\n resolve();\n } catch (e) {\n reject(e);\n }\n });\n },\n clear: function clear() {\n\n },\n length: function length() {\n\n },\n keys: function keys() {\n return Utils.promise(function (resolve, reject) {\n try {\n var keys = Object.keys(win.localStorage)\n .filter(function (keyName) { return keyName.indexOf(keyPrefix) === 0; })\n .map(function (keyName) { return keyName.replace(keyPrefix, ''); });\n resolve(keys);\n } catch (e) {\n reject(e);\n }\n });\n },\n forEach: function forEach(callback) {\n return Utils.promise(function (resolve, reject) {\n try {\n Object.keys(win.localStorage)\n .filter(function (keyName) { return keyName.indexOf(keyPrefix) === 0; })\n .forEach(function (keyName, index) {\n var key = keyName.replace(keyPrefix, '');\n Storage.get(key).then(function (value) {\n callback(key, value, index);\n });\n });\n resolve();\n } catch (e) {\n reject(e);\n }\n });\n },\n };\n\n var StorageModule = {\n name: 'storage',\n static: {\n Storage: Storage,\n storage: Storage,\n },\n };\n\n var Statusbar = {\n hide: function hide() {\n $$1('html').removeClass('with-statusbar');\n if (Device.cordova && win.StatusBar) {\n win.StatusBar.hide();\n }\n },\n show: function show() {\n if (Device.cordova && win.StatusBar) {\n win.StatusBar.show();\n Utils.nextTick(function () {\n if (Device.needsStatusbarOverlay()) {\n $$1('html').addClass('with-statusbar');\n }\n });\n return;\n }\n $$1('html').addClass('with-statusbar');\n },\n onClick: function onClick() {\n var app = this;\n var pageContent;\n if ($$1('.popup.modal-in').length > 0) {\n // Check for opened popup\n pageContent = $$1('.popup.modal-in').find('.page:not(.page-previous):not(.page-next):not(.cached)').find('.page-content');\n } else if ($$1('.panel.panel-active').length > 0) {\n // Check for opened panel\n pageContent = $$1('.panel.panel-active').find('.page:not(.page-previous):not(.page-next):not(.cached)').find('.page-content');\n } else if ($$1('.views > .view.tab-active').length > 0) {\n // View in tab bar app layout\n pageContent = $$1('.views > .view.tab-active').find('.page:not(.page-previous):not(.page-next):not(.cached)').find('.page-content');\n } else if ($$1('.views').length > 0) {\n pageContent = $$1('.views').find('.page:not(.page-previous):not(.page-next):not(.cached)').find('.page-content');\n } else {\n pageContent = app.root.children('.view').find('.page:not(.page-previous):not(.page-next):not(.cached)').find('.page-content');\n }\n\n if (pageContent && pageContent.length > 0) {\n // Check for tab\n if (pageContent.hasClass('tab')) {\n pageContent = pageContent.parent('.tabs').children('.page-content.tab-active');\n }\n if (pageContent.length > 0) { pageContent.scrollTop(0, 300); }\n }\n },\n setIosTextColor: function setIosTextColor(color) {\n if (Device.cordova && win.StatusBar) {\n if (color === 'white') {\n win.StatusBar.styleLightContent();\n } else {\n win.StatusBar.styleDefault();\n }\n }\n },\n setBackgroundColor: function setBackgroundColor(color) {\n $$1('.statusbar').css('background-color', color);\n if (Device.cordova && win.StatusBar) {\n win.StatusBar.backgroundColorByHexString(color);\n }\n },\n isVisible: function isVisible() {\n if (Device.cordova && win.StatusBar) {\n return win.StatusBar.isVisible;\n }\n return false;\n },\n iosOverlaysWebView: function iosOverlaysWebView(overlays) {\n if ( overlays === void 0 ) overlays = true;\n\n if (!Device.ios) { return; }\n if (Device.cordova && win.StatusBar) {\n win.StatusBar.overlaysWebView(overlays);\n if (overlays) {\n $$1('html').addClass('with-statusbar');\n } else {\n $$1('html').removeClass('with-statusbar');\n }\n }\n },\n checkOverlay: function checkOverlay() {\n if (Device.needsStatusbarOverlay()) {\n $$1('html').addClass('with-statusbar');\n } else {\n $$1('html').removeClass('with-statusbar');\n }\n },\n init: function init() {\n var app = this;\n var params = app.params.statusbar;\n if (!params.enabled) { return; }\n\n if (params.overlay === 'auto') {\n if (Device.needsStatusbarOverlay()) {\n $$1('html').addClass('with-statusbar');\n } else {\n $$1('html').removeClass('with-statusbar');\n }\n\n if (Device.ios && (Device.cordova || Device.webView)) {\n if (win.orientation === 0) {\n app.once('resize', function () {\n Statusbar.checkOverlay();\n });\n }\n\n $$1(doc).on('resume', function () {\n Statusbar.checkOverlay();\n }, false);\n\n app.on(Device.ios ? 'orientationchange' : 'orientationchange resize', function () {\n Statusbar.checkOverlay();\n });\n }\n } else if (params.overlay === true) {\n $$1('html').addClass('with-statusbar');\n } else if (params.overlay === false) {\n $$1('html').removeClass('with-statusbar');\n }\n\n if (Device.cordova && win.StatusBar) {\n if (params.scrollTopOnClick) {\n $$1(win).on('statusTap', Statusbar.onClick.bind(app));\n }\n if (params.iosOverlaysWebView) {\n win.StatusBar.overlaysWebView(true);\n } else {\n win.StatusBar.overlaysWebView(false);\n }\n\n if (params.iosTextColor === 'white') {\n win.StatusBar.styleLightContent();\n } else {\n win.StatusBar.styleDefault();\n }\n }\n if (params.iosBackgroundColor && app.theme === 'ios') {\n Statusbar.setBackgroundColor(params.iosBackgroundColor);\n }\n if (params.materialBackgroundColor && app.theme === 'md') {\n Statusbar.setBackgroundColor(params.materialBackgroundColor);\n }\n },\n };\n\n var Statusbar$1 = {\n name: 'statusbar',\n params: {\n statusbar: {\n enabled: true,\n overlay: 'auto',\n scrollTopOnClick: true,\n iosOverlaysWebView: true,\n iosTextColor: 'black',\n iosBackgroundColor: null,\n materialBackgroundColor: null,\n },\n },\n create: function create() {\n var app = this;\n Utils.extend(app, {\n statusbar: {\n checkOverlay: Statusbar.checkOverlay,\n hide: Statusbar.hide,\n show: Statusbar.show,\n iosOverlaysWebView: Statusbar.iosOverlaysWebView,\n setIosTextColor: Statusbar.setIosTextColor,\n setBackgroundColor: Statusbar.setBackgroundColor,\n isVisible: Statusbar.isVisible,\n init: Statusbar.init.bind(app),\n },\n });\n },\n on: {\n init: function init() {\n var app = this;\n Statusbar.init.call(app);\n },\n },\n clicks: {\n '.statusbar': function onStatusbarClick() {\n var app = this;\n if (!app.params.statusbar.enabled) { return; }\n if (!app.params.statusbar.scrollTopOnClick) { return; }\n Statusbar.onClick.call(app);\n },\n },\n };\n\n function getCurrentView(app) {\n var popoverView = $$1('.popover.modal-in .view');\n var popupView = $$1('.popup.modal-in .view');\n var panelView = $$1('.panel.panel-active .view');\n var appViews = $$1('.views');\n if (appViews.length === 0) { appViews = app.root; }\n // Find active view as tab\n var appView = appViews.children('.view');\n // Propably in tabs or split view\n if (appView.length > 1) {\n if (appView.hasClass('tab')) {\n // Tabs\n appView = appViews.children('.view.tab-active');\n }\n }\n if (popoverView.length > 0 && popoverView[0].f7View) { return popoverView[0].f7View; }\n if (popupView.length > 0 && popupView[0].f7View) { return popupView[0].f7View; }\n if (panelView.length > 0 && panelView[0].f7View) { return panelView[0].f7View; }\n if (appView.length > 0) {\n if (appView.length === 1 && appView[0].f7View) { return appView[0].f7View; }\n if (appView.length > 1) {\n return app.views.main;\n }\n }\n return undefined;\n }\n\n var View$1 = {\n name: 'view',\n params: {\n view: {\n name: undefined,\n main: false,\n router: true,\n linksView: null,\n stackPages: false,\n xhrCache: true,\n xhrCacheIgnore: [],\n xhrCacheIgnoreGetParameters: false,\n xhrCacheDuration: 1000 * 60 * 10, // Ten minutes\n preloadPreviousPage: true,\n uniqueHistory: false,\n uniqueHistoryIgnoreGetParameters: false,\n allowDuplicateUrls: false,\n reloadPages: false,\n removeElements: true,\n removeElementsWithTimeout: false,\n removeElementsTimeout: 0,\n restoreScrollTopOnBack: true,\n unloadTabContent: true,\n passRouteQueryToRequest: true,\n passRouteParamsToRequest: false,\n // Swipe Back\n iosSwipeBack: true,\n iosSwipeBackAnimateShadow: true,\n iosSwipeBackAnimateOpacity: true,\n iosSwipeBackActiveArea: 30,\n iosSwipeBackThreshold: 0,\n mdSwipeBack: false,\n mdSwipeBackAnimateShadow: true,\n mdSwipeBackAnimateOpacity: false,\n mdSwipeBackActiveArea: 30,\n mdSwipeBackThreshold: 0,\n // Push State\n pushState: false,\n pushStateRoot: undefined,\n pushStateAnimate: true,\n pushStateAnimateOnLoad: false,\n pushStateSeparator: '#!',\n pushStateOnLoad: true,\n // Animate Pages\n animate: true,\n animateWithJS: false,\n // iOS Dynamic Navbar\n iosDynamicNavbar: true,\n iosSeparateDynamicNavbar: true,\n // Animate iOS Navbar Back Icon\n iosAnimateNavbarBackIcon: true,\n // Delays\n iosPageLoadDelay: 0,\n materialPageLoadDelay: 0,\n // Routes hooks\n routesBeforeEnter: null,\n routesBeforeLeave: null,\n },\n },\n static: {\n View: View,\n },\n create: function create() {\n var app = this;\n Utils.extend(app, {\n views: Utils.extend([], {\n create: function create(el, params) {\n return new View(app, el, params);\n },\n get: function get(viewEl) {\n var $viewEl = $$1(viewEl);\n if ($viewEl.length && $viewEl[0].f7View) { return $viewEl[0].f7View; }\n return undefined;\n },\n }),\n });\n Object.defineProperty(app.views, 'current', {\n enumerable: true,\n configurable: true,\n get: function get() {\n return getCurrentView(app);\n },\n });\n // Alias\n app.view = app.views;\n },\n on: {\n init: function init() {\n var app = this;\n $$1('.view-init').each(function (index, viewEl) {\n if (viewEl.f7View) { return; }\n var viewParams = $$1(viewEl).dataset();\n app.views.create(viewEl, viewParams);\n });\n },\n modalOpen: function modalOpen(modal) {\n var app = this;\n modal.$el.find('.view-init').each(function (index, viewEl) {\n if (viewEl.f7View) { return; }\n var viewParams = $$1(viewEl).dataset();\n app.views.create(viewEl, viewParams);\n });\n },\n modalBeforeDestroy: function modalBeforeDestroy(modal) {\n if (!modal || !modal.$el) { return; }\n modal.$el.find('.view-init').each(function (index, viewEl) {\n var view = viewEl.f7View;\n if (!view) { return; }\n view.destroy();\n });\n },\n },\n };\n\n var Navbar = {\n size: function size(el) {\n var app = this;\n if (app.theme !== 'ios') { return; }\n var $el = $$1(el);\n if ($el.hasClass('navbar')) {\n $el = $el.children('.navbar-inner').each(function (index, navbarEl) {\n app.navbar.size(navbarEl);\n });\n return;\n }\n if (\n $el.hasClass('stacked')\n || $el.parents('.stacked').length > 0\n || $el.parents('.tab:not(.tab-active)').length > 0\n || $el.parents('.popup:not(.modal-in)').length > 0\n ) {\n return;\n }\n var $viewEl = $el.parents('.view').eq(0);\n var left = app.rtl ? $el.children('.right') : $el.children('.left');\n var right = app.rtl ? $el.children('.left') : $el.children('.right');\n var title = $el.children('.title');\n var subnavbar = $el.children('.subnavbar');\n var noLeft = left.length === 0;\n var noRight = right.length === 0;\n var leftWidth = noLeft ? 0 : left.outerWidth(true);\n var rightWidth = noRight ? 0 : right.outerWidth(true);\n var titleWidth = title.outerWidth(true);\n var navbarStyles = $el.styles();\n var navbarWidth = $el[0].offsetWidth;\n var navbarInnerWidth = navbarWidth - parseInt(navbarStyles.paddingLeft, 10) - parseInt(navbarStyles.paddingRight, 10);\n var isPrevious = $el.hasClass('navbar-previous');\n var sliding = $el.hasClass('sliding');\n\n var router;\n var dynamicNavbar;\n var separateNavbar;\n var separateNavbarRightOffset = 0;\n var separateNavbarLeftOffset = 0;\n\n if ($viewEl.length > 0 && $viewEl[0].f7View) {\n router = $viewEl[0].f7View.router;\n dynamicNavbar = router && router.dynamicNavbar;\n separateNavbar = router && router.separateNavbar;\n if (!separateNavbar) {\n separateNavbarRightOffset = navbarWidth;\n separateNavbarLeftOffset = navbarWidth / 5;\n }\n }\n\n var currLeft;\n var diff;\n if (noRight) {\n currLeft = navbarInnerWidth - titleWidth;\n }\n if (noLeft) {\n currLeft = 0;\n }\n if (!noLeft && !noRight) {\n currLeft = ((navbarInnerWidth - rightWidth - titleWidth) + leftWidth) / 2;\n }\n var requiredLeft = (navbarInnerWidth - titleWidth) / 2;\n if (navbarInnerWidth - leftWidth - rightWidth > titleWidth) {\n if (requiredLeft < leftWidth) {\n requiredLeft = leftWidth;\n }\n if (requiredLeft + titleWidth > navbarInnerWidth - rightWidth) {\n requiredLeft = navbarInnerWidth - rightWidth - titleWidth;\n }\n diff = requiredLeft - currLeft;\n } else {\n diff = 0;\n }\n\n // RTL inverter\n var inverter = app.rtl ? -1 : 1;\n\n if (dynamicNavbar) {\n if (title.hasClass('sliding') || (title.length > 0 && sliding)) {\n var titleLeftOffset = (-(currLeft + diff) * inverter) + separateNavbarLeftOffset;\n var titleRightOffset = ((navbarInnerWidth - currLeft - diff - titleWidth) * inverter) - separateNavbarRightOffset;\n\n if (isPrevious) {\n if (router && router.params.iosAnimateNavbarBackIcon) {\n var activeNavbarBackLink = $el.parent().find('.navbar-current').children('.left.sliding').find('.back .icon ~ span');\n if (activeNavbarBackLink.length > 0) {\n titleLeftOffset += activeNavbarBackLink[0].offsetLeft;\n }\n }\n }\n title[0].f7NavbarLeftOffset = titleLeftOffset;\n title[0].f7NavbarRightOffset = titleRightOffset;\n }\n if (!noLeft && (left.hasClass('sliding') || sliding)) {\n if (app.rtl) {\n left[0].f7NavbarLeftOffset = (-(navbarInnerWidth - left[0].offsetWidth) / 2) * inverter;\n left[0].f7NavbarRightOffset = leftWidth * inverter;\n } else {\n left[0].f7NavbarLeftOffset = -leftWidth + separateNavbarLeftOffset;\n left[0].f7NavbarRightOffset = ((navbarInnerWidth - left[0].offsetWidth) / 2) - separateNavbarRightOffset;\n if (router && router.params.iosAnimateNavbarBackIcon && left.find('.back .icon').length > 0) {\n left[0].f7NavbarRightOffset -= left.find('.back .icon')[0].offsetWidth;\n }\n }\n }\n if (!noRight && (right.hasClass('sliding') || sliding)) {\n if (app.rtl) {\n right[0].f7NavbarLeftOffset = -rightWidth * inverter;\n right[0].f7NavbarRightOffset = ((navbarInnerWidth - right[0].offsetWidth) / 2) * inverter;\n } else {\n right[0].f7NavbarLeftOffset = (-(navbarInnerWidth - right[0].offsetWidth) / 2) + separateNavbarLeftOffset;\n right[0].f7NavbarRightOffset = rightWidth - separateNavbarRightOffset;\n }\n }\n if (subnavbar.length && (subnavbar.hasClass('sliding') || sliding)) {\n subnavbar[0].f7NavbarLeftOffset = app.rtl ? subnavbar[0].offsetWidth : (-subnavbar[0].offsetWidth + separateNavbarLeftOffset);\n subnavbar[0].f7NavbarRightOffset = (-subnavbar[0].f7NavbarLeftOffset - separateNavbarRightOffset) + separateNavbarLeftOffset;\n }\n }\n\n // Title left\n if (app.params.navbar.iosCenterTitle) {\n var titleLeft = diff;\n if (app.rtl && noLeft && noRight && title.length > 0) { titleLeft = -titleLeft; }\n title.css({ left: (titleLeft + \"px\") });\n }\n },\n hide: function hide(el, animate) {\n if ( animate === void 0 ) animate = true;\n\n var $el = $$1(el);\n if ($el.hasClass('navbar-inner')) { $el = $el.parents('.navbar'); }\n if (!$el.length) { return; }\n if ($el.hasClass('navbar-hidden')) { return; }\n var className = \"navbar-hidden\" + (animate ? ' navbar-transitioning' : '');\n $el.transitionEnd(function () {\n $el.removeClass('navbar-transitioning');\n });\n $el.addClass(className);\n },\n show: function show(el, animate) {\n if ( el === void 0 ) el = '.navbar-hidden';\n if ( animate === void 0 ) animate = true;\n\n var $el = $$1(el);\n if ($el.hasClass('navbar-inner')) { $el = $el.parents('.navbar'); }\n if (!$el.length) { return; }\n if (!$el.hasClass('navbar-hidden')) { return; }\n if (animate) {\n $el.addClass('navbar-transitioning');\n $el.transitionEnd(function () {\n $el.removeClass('navbar-transitioning');\n });\n }\n $el.removeClass('navbar-hidden');\n },\n getElByPage: function getElByPage(page) {\n var $pageEl;\n var $navbarEl;\n var pageData;\n if (page.$navbarEl || page.$el) {\n pageData = page;\n $pageEl = page.$el;\n } else {\n $pageEl = $$1(page);\n if ($pageEl.length > 0) { pageData = $pageEl[0].f7Page; }\n }\n if (pageData && pageData.$navbarEl && pageData.$navbarEl.length > 0) {\n $navbarEl = pageData.$navbarEl;\n } else if ($pageEl) {\n $navbarEl = $pageEl.children('.navbar').children('.navbar-inner');\n }\n if (!$navbarEl || ($navbarEl && $navbarEl.length === 0)) { return undefined; }\n return $navbarEl[0];\n },\n getPageByEl: function getPageByEl(navbarInnerEl) {\n var $navbarInnerEl = $$1(navbarInnerEl);\n if ($navbarInnerEl.hasClass('navbar')) {\n $navbarInnerEl = $navbarInnerEl.find('.navbar-inner');\n if ($navbarInnerEl.length > 1) { return undefined; }\n }\n return $navbarInnerEl[0].f7Page;\n },\n initHideNavbarOnScroll: function initHideNavbarOnScroll(pageEl, navbarInnerEl) {\n var app = this;\n var $pageEl = $$1(pageEl);\n var $navbarEl = $$1(navbarInnerEl || app.navbar.getElByPage(pageEl)).closest('.navbar');\n\n var previousScrollTop;\n var currentScrollTop;\n\n var scrollHeight;\n var offsetHeight;\n var reachEnd;\n var action;\n var navbarHidden;\n function handleScroll() {\n var scrollContent = this;\n if ($pageEl.hasClass('page-previous')) { return; }\n currentScrollTop = scrollContent.scrollTop;\n scrollHeight = scrollContent.scrollHeight;\n offsetHeight = scrollContent.offsetHeight;\n reachEnd = currentScrollTop + offsetHeight >= scrollHeight;\n navbarHidden = $navbarEl.hasClass('navbar-hidden');\n\n if (reachEnd) {\n if (app.params.navbar.showOnPageScrollEnd) {\n action = 'show';\n }\n } else if (previousScrollTop > currentScrollTop) {\n if (app.params.navbar.showOnPageScrollTop || currentScrollTop <= 44) {\n action = 'show';\n } else {\n action = 'hide';\n }\n } else if (currentScrollTop > 44) {\n action = 'hide';\n } else {\n action = 'show';\n }\n\n if (action === 'show' && navbarHidden) {\n app.navbar.show($navbarEl);\n navbarHidden = false;\n } else if (action === 'hide' && !navbarHidden) {\n app.navbar.hide($navbarEl);\n navbarHidden = true;\n }\n\n previousScrollTop = currentScrollTop;\n }\n $pageEl.on('scroll', '.page-content', handleScroll, true);\n $pageEl[0].f7ScrollNavbarHandler = handleScroll;\n },\n };\n var Navbar$1 = {\n name: 'navbar',\n create: function create() {\n var app = this;\n Utils.extend(app, {\n navbar: {\n size: Navbar.size.bind(app),\n hide: Navbar.hide.bind(app),\n show: Navbar.show.bind(app),\n getElByPage: Navbar.getElByPage.bind(app),\n initHideNavbarOnScroll: Navbar.initHideNavbarOnScroll.bind(app),\n },\n });\n },\n params: {\n navbar: {\n scrollTopOnTitleClick: true,\n iosCenterTitle: true,\n hideOnPageScroll: false,\n showOnPageScrollEnd: true,\n showOnPageScrollTop: true,\n },\n },\n on: {\n 'panelBreakpoint resize': function onResize() {\n var app = this;\n if (app.theme !== 'ios') { return; }\n $$1('.navbar').each(function (index, navbarEl) {\n app.navbar.size(navbarEl);\n });\n },\n pageBeforeRemove: function pageBeforeRemove(page) {\n if (page.$el[0].f7ScrollNavbarHandler) {\n page.$el.off('scroll', '.page-content', page.$el[0].f7ScrollNavbarHandler, true);\n }\n },\n pageBeforeIn: function pageBeforeIn(page) {\n var app = this;\n if (app.theme !== 'ios') { return; }\n var $navbarEl;\n var view = page.$el.parents('.view')[0].f7View;\n var navbarInnerEl = app.navbar.getElByPage(page);\n if (!navbarInnerEl) {\n $navbarEl = page.$el.parents('.view').children('.navbar');\n } else {\n $navbarEl = $$1(navbarInnerEl).parents('.navbar');\n }\n if (page.$el.hasClass('no-navbar') || (view.router.dynamicNavbar && !navbarInnerEl)) {\n var animate = !!(page.pageFrom && page.router.history.length > 0);\n app.navbar.hide($navbarEl, animate);\n } else {\n app.navbar.show($navbarEl);\n }\n },\n pageReinit: function pageReinit(page) {\n var app = this;\n if (app.theme !== 'ios') { return; }\n var $navbarEl = $$1(app.navbar.getElByPage(page));\n if (!$navbarEl || $navbarEl.length === 0) { return; }\n app.navbar.size($navbarEl);\n },\n pageInit: function pageInit(page) {\n var app = this;\n var $navbarEl = $$1(app.navbar.getElByPage(page));\n if (!$navbarEl || $navbarEl.length === 0) { return; }\n if (app.theme === 'ios') {\n app.navbar.size($navbarEl);\n }\n if (\n app.params.navbar.hideOnPageScroll\n || page.$el.find('.hide-navbar-on-scroll').length\n || page.$el.hasClass('hide-navbar-on-scroll')\n || page.$el.find('.hide-bars-on-scroll').length\n || page.$el.hasClass('hide-bars-on-scroll')\n ) {\n if (\n page.$el.find('.keep-navbar-on-scroll').length\n || page.$el.hasClass('keep-navbar-on-scroll')\n || page.$el.find('.keep-bars-on-scroll').length\n || page.$el.hasClass('keep-bars-on-scroll')\n ) {\n return;\n }\n app.navbar.initHideNavbarOnScroll(page.el, $navbarEl[0]);\n }\n },\n modalOpen: function modalOpen(modal) {\n var app = this;\n if (app.theme !== 'ios') { return; }\n modal.$el.find('.navbar:not(.navbar-previous):not(.stacked)').each(function (index, navbarEl) {\n app.navbar.size(navbarEl);\n });\n },\n panelOpen: function panelOpen(panel) {\n var app = this;\n if (app.theme !== 'ios') { return; }\n panel.$el.find('.navbar:not(.navbar-previous):not(.stacked)').each(function (index, navbarEl) {\n app.navbar.size(navbarEl);\n });\n },\n panelSwipeOpen: function panelSwipeOpen(panel) {\n var app = this;\n if (app.theme !== 'ios') { return; }\n panel.$el.find('.navbar:not(.navbar-previous):not(.stacked)').each(function (index, navbarEl) {\n app.navbar.size(navbarEl);\n });\n },\n tabShow: function tabShow(tabEl) {\n var app = this;\n $$1(tabEl).find('.navbar:not(.navbar-previous):not(.stacked)').each(function (index, navbarEl) {\n app.navbar.size(navbarEl);\n });\n },\n },\n clicks: {\n '.navbar .title': function onTitleClick($clickedEl) {\n var app = this;\n if (!app.params.navbar.scrollTopOnTitleClick) { return; }\n if ($clickedEl.closest('a').length > 0) {\n return;\n }\n var pageContent;\n // Find active page\n var navbar = $clickedEl.parents('.navbar');\n\n // Static Layout\n pageContent = navbar.parents('.page-content');\n\n if (pageContent.length === 0) {\n // Fixed Layout\n if (navbar.parents('.page').length > 0) {\n pageContent = navbar.parents('.page').find('.page-content');\n }\n // Through Layout\n if (pageContent.length === 0) {\n if (navbar.nextAll('.page-current:not(.stacked)').length > 0) {\n pageContent = navbar.nextAll('.page-current:not(.stacked)').find('.page-content');\n }\n }\n }\n if (pageContent && pageContent.length > 0) {\n // Check for tab\n if (pageContent.hasClass('tab')) {\n pageContent = pageContent.parent('.tabs').children('.page-content.tab-active');\n }\n if (pageContent.length > 0) { pageContent.scrollTop(0, 300); }\n }\n },\n },\n };\n\n var Toolbar = {\n setHighlight: function setHighlight(tabbarEl) {\n var app = this;\n if (app.theme !== 'md') { return; }\n\n var $tabbarEl = $$1(tabbarEl);\n\n if ($tabbarEl.length === 0 || !($tabbarEl.hasClass('tabbar') || $tabbarEl.hasClass('tabbar-labels'))) { return; }\n\n if ($tabbarEl.find('.tab-link-highlight').length === 0) {\n $tabbarEl.children('.toolbar-inner').append(' ');\n }\n\n var $highlightEl = $tabbarEl.find('.tab-link-highlight');\n var $activeLink = $tabbarEl.find('.tab-link-active');\n var highlightWidth;\n var highlightTranslate;\n\n if ($tabbarEl.hasClass('tabbar-scrollable') && $activeLink && $activeLink[0]) {\n highlightWidth = ($activeLink[0].offsetWidth) + \"px\";\n highlightTranslate = ($activeLink[0].offsetLeft) + \"px\";\n } else {\n var activeIndex = $activeLink.index();\n var tabLinksCount = $tabbarEl.find('.tab-link').length;\n highlightWidth = (100 / tabLinksCount) + \"%\";\n highlightTranslate = ((app.rtl ? -activeIndex : activeIndex) * 100) + \"%\";\n }\n\n $highlightEl\n .css('width', highlightWidth)\n .transform((\"translate3d(\" + highlightTranslate + \",0,0)\"));\n },\n init: function init(tabbarEl) {\n var app = this;\n app.toolbar.setHighlight(tabbarEl);\n },\n hide: function hide(el, animate) {\n if ( animate === void 0 ) animate = true;\n\n var $el = $$1(el);\n if ($el.hasClass('toolbar-hidden')) { return; }\n var className = \"toolbar-hidden\" + (animate ? ' toolbar-transitioning' : '');\n $el.transitionEnd(function () {\n $el.removeClass('toolbar-transitioning');\n });\n $el.addClass(className);\n },\n show: function show(el, animate) {\n if ( animate === void 0 ) animate = true;\n\n var $el = $$1(el);\n if (!$el.hasClass('toolbar-hidden')) { return; }\n if (animate) {\n $el.addClass('toolbar-transitioning');\n $el.transitionEnd(function () {\n $el.removeClass('toolbar-transitioning');\n });\n }\n $el.removeClass('toolbar-hidden');\n },\n initHideToolbarOnScroll: function initHideToolbarOnScroll(pageEl) {\n var app = this;\n var $pageEl = $$1(pageEl);\n var $toolbarEl = $pageEl.parents('.view').children('.toolbar');\n if ($toolbarEl.length === 0) {\n $toolbarEl = $pageEl.find('.toolbar');\n }\n if ($toolbarEl.length === 0) {\n $toolbarEl = $pageEl.parents('.views').children('.tabbar, .tabbar-labels');\n }\n if ($toolbarEl.length === 0) {\n return;\n }\n\n var previousScrollTop;\n var currentScrollTop;\n\n var scrollHeight;\n var offsetHeight;\n var reachEnd;\n var action;\n var toolbarHidden;\n function handleScroll() {\n var scrollContent = this;\n if ($pageEl.hasClass('page-previous')) { return; }\n currentScrollTop = scrollContent.scrollTop;\n scrollHeight = scrollContent.scrollHeight;\n offsetHeight = scrollContent.offsetHeight;\n reachEnd = currentScrollTop + offsetHeight >= scrollHeight;\n toolbarHidden = $toolbarEl.hasClass('toolbar-hidden');\n\n if (reachEnd) {\n if (app.params.toolbar.showOnPageScrollEnd) {\n action = 'show';\n }\n } else if (previousScrollTop > currentScrollTop) {\n if (app.params.toolbar.showOnPageScrollTop || currentScrollTop <= 44) {\n action = 'show';\n } else {\n action = 'hide';\n }\n } else if (currentScrollTop > 44) {\n action = 'hide';\n } else {\n action = 'show';\n }\n\n if (action === 'show' && toolbarHidden) {\n app.toolbar.show($toolbarEl);\n toolbarHidden = false;\n } else if (action === 'hide' && !toolbarHidden) {\n app.toolbar.hide($toolbarEl);\n toolbarHidden = true;\n }\n\n previousScrollTop = currentScrollTop;\n }\n $pageEl.on('scroll', '.page-content', handleScroll, true);\n $pageEl[0].f7ScrollToolbarHandler = handleScroll;\n },\n };\n var Toolbar$1 = {\n name: 'toolbar',\n create: function create() {\n var app = this;\n Utils.extend(app, {\n toolbar: {\n hide: Toolbar.hide.bind(app),\n show: Toolbar.show.bind(app),\n setHighlight: Toolbar.setHighlight.bind(app),\n initHideToolbarOnScroll: Toolbar.initHideToolbarOnScroll.bind(app),\n init: Toolbar.init.bind(app),\n },\n });\n },\n params: {\n toolbar: {\n hideOnPageScroll: false,\n showOnPageScrollEnd: true,\n showOnPageScrollTop: true,\n },\n },\n on: {\n pageBeforeRemove: function pageBeforeRemove(page) {\n if (page.$el[0].f7ScrollToolbarHandler) {\n page.$el.off('scroll', '.page-content', page.$el[0].f7ScrollToolbarHandler, true);\n }\n },\n pageBeforeIn: function pageBeforeIn(page) {\n var app = this;\n var $toolbarEl = page.$el.parents('.view').children('.toolbar');\n if ($toolbarEl.length === 0) {\n $toolbarEl = page.$el.find('.toolbar');\n }\n if ($toolbarEl.length === 0) {\n $toolbarEl = page.$el.parents('.views').children('.tabbar, .tabbar-labels');\n }\n if ($toolbarEl.length === 0) {\n return;\n }\n if (page.$el.hasClass('no-toolbar')) {\n app.toolbar.hide($toolbarEl);\n } else {\n app.toolbar.show($toolbarEl);\n }\n },\n pageInit: function pageInit(page) {\n var app = this;\n page.$el.find('.tabbar, .tabbar-labels').each(function (index, tabbarEl) {\n app.toolbar.init(tabbarEl);\n });\n if (\n app.params.toolbar.hideOnPageScroll\n || page.$el.find('.hide-toolbar-on-scroll').length\n || page.$el.hasClass('hide-toolbar-on-scroll')\n || page.$el.find('.hide-bars-on-scroll').length\n || page.$el.hasClass('hide-bars-on-scroll')\n ) {\n if (\n page.$el.find('.keep-toolbar-on-scroll').length\n || page.$el.hasClass('keep-toolbar-on-scroll')\n || page.$el.find('.keep-bars-on-scroll').length\n || page.$el.hasClass('keep-bars-on-scroll')\n ) {\n return;\n }\n app.toolbar.initHideToolbarOnScroll(page.el);\n }\n },\n init: function init() {\n var app = this;\n app.root.find('.tabbar, .tabbar-labels').each(function (index, tabbarEl) {\n app.toolbar.init(tabbarEl);\n });\n },\n },\n };\n\n var Subnavbar = {\n name: 'subnavbar',\n on: {\n pageInit: function pageInit(page) {\n if (page.$navbarEl && page.$navbarEl.length && page.$navbarEl.find('.subnavbar').length) {\n page.$el.addClass('page-with-subnavbar');\n }\n if (page.$el.find('.subnavbar').length) {\n page.$el.addClass('page-with-subnavbar');\n }\n },\n },\n };\n\n var TouchRipple = function TouchRipple($el, x, y) {\n var ripple = this;\n if (!$el) { return undefined; }\n var box = $el[0].getBoundingClientRect();\n var center = {\n x: x - box.left,\n y: y - box.top,\n };\n var width = box.width;\n var height = box.height;\n var diameter = Math.max((Math.pow( ((Math.pow( height, 2 )) + (Math.pow( width, 2 ))), 0.5 )), 48);\n\n ripple.$rippleWaveEl = $$1((\"
\"));\n\n $el.prepend(ripple.$rippleWaveEl);\n\n /* eslint no-underscore-dangle: [\"error\", { \"allow\": [\"_clientLeft\"] }] */\n ripple._clientLeft = ripple.$rippleWaveEl[0].clientLeft;\n\n ripple.rippleTransform = \"translate3d(\" + (-center.x + (width / 2)) + \"px, \" + (-center.y + (height / 2)) + \"px, 0) scale(1)\";\n\n ripple.$rippleWaveEl.transform(ripple.rippleTransform);\n\n return ripple;\n };\n\n TouchRipple.prototype.onRemove = function onRemove () {\n var ripple = this;\n if (ripple.$rippleWaveEl) {\n ripple.$rippleWaveEl.remove();\n }\n Object.keys(ripple).forEach(function (key) {\n ripple[key] = null;\n delete ripple[key];\n });\n ripple = null;\n };\n\n TouchRipple.prototype.remove = function remove () {\n var ripple = this;\n if (ripple.removing) { return; }\n var $rippleWaveEl = this.$rippleWaveEl;\n var rippleTransform = this.rippleTransform;\n var removeTimeout = Utils.nextTick(function () {\n ripple.onRemove();\n }, 400);\n ripple.removing = true;\n $rippleWaveEl\n .addClass('ripple-wave-fill')\n .transform(rippleTransform.replace('scale(1)', 'scale(1.01)'))\n .transitionEnd(function () {\n clearTimeout(removeTimeout);\n Utils.nextFrame(function () {\n $rippleWaveEl\n .addClass('ripple-wave-out')\n .transform(rippleTransform.replace('scale(1)', 'scale(1.01)'));\n\n removeTimeout = Utils.nextTick(function () {\n ripple.onRemove();\n }, 700);\n\n $rippleWaveEl.transitionEnd(function () {\n clearTimeout(removeTimeout);\n ripple.onRemove();\n });\n });\n });\n };\n\n var TouchRipple$1 = {\n name: 'touch-ripple',\n static: {\n TouchRipple: TouchRipple,\n },\n create: function create() {\n var app = this;\n app.touchRipple = {\n create: function create() {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( TouchRipple, [ null ].concat( args) ));\n },\n };\n },\n };\n\n var openedModals = [];\n var dialogsQueue = [];\n function clearDialogsQueue() {\n if (dialogsQueue.length === 0) { return; }\n var dialog = dialogsQueue.shift();\n dialog.open();\n }\n var Modal = (function (Framework7Class$$1) {\n function Modal(app, params) {\n Framework7Class$$1.call(this, params, [app]);\n\n var modal = this;\n\n var defaults = {};\n\n // Extend defaults with modules params\n modal.useModulesParams(defaults);\n\n modal.params = Utils.extend(defaults, params);\n modal.opened = false;\n\n // Install Modules\n modal.useModules();\n\n return this;\n }\n\n if ( Framework7Class$$1 ) Modal.__proto__ = Framework7Class$$1;\n Modal.prototype = Object.create( Framework7Class$$1 && Framework7Class$$1.prototype );\n Modal.prototype.constructor = Modal;\n\n Modal.prototype.onOpen = function onOpen () {\n var modal = this;\n modal.opened = true;\n openedModals.push(modal);\n $$1('html').addClass((\"with-modal-\" + (modal.type.toLowerCase())));\n modal.$el.trigger((\"modal:open \" + (modal.type.toLowerCase()) + \":open\"), modal);\n modal.emit((\"local::open modalOpen \" + (modal.type) + \"Open\"), modal);\n };\n\n Modal.prototype.onOpened = function onOpened () {\n var modal = this;\n modal.$el.trigger((\"modal:opened \" + (modal.type.toLowerCase()) + \":opened\"), modal);\n modal.emit((\"local::opened modalOpened \" + (modal.type) + \"Opened\"), modal);\n };\n\n Modal.prototype.onClose = function onClose () {\n var modal = this;\n modal.opened = false;\n if (!modal.type || !modal.$el) { return; }\n openedModals.splice(openedModals.indexOf(modal), 1);\n $$1('html').removeClass((\"with-modal-\" + (modal.type.toLowerCase())));\n modal.$el.trigger((\"modal:close \" + (modal.type.toLowerCase()) + \":close\"), modal);\n modal.emit((\"local::close modalClose \" + (modal.type) + \"Close\"), modal);\n };\n\n Modal.prototype.onClosed = function onClosed () {\n var modal = this;\n if (!modal.type || !modal.$el) { return; }\n modal.$el.removeClass('modal-out');\n modal.$el.hide();\n modal.$el.trigger((\"modal:closed \" + (modal.type.toLowerCase()) + \":closed\"), modal);\n modal.emit((\"local::closed modalClosed \" + (modal.type) + \"Closed\"), modal);\n };\n\n Modal.prototype.open = function open (animateModal) {\n var modal = this;\n var app = modal.app;\n var $el = modal.$el;\n var $backdropEl = modal.$backdropEl;\n var type = modal.type;\n var animate = true;\n if (typeof animateModal !== 'undefined') { animate = animateModal; }\n else if (typeof modal.params.animate !== 'undefined') {\n animate = modal.params.animate;\n }\n\n if (!$el || $el.hasClass('modal-in')) {\n return modal;\n }\n\n if (type === 'dialog' && app.params.modal.queueDialogs) {\n var pushToQueue;\n if ($$1('.dialog.modal-in').length > 0) {\n pushToQueue = true;\n } else if (openedModals.length > 0) {\n openedModals.forEach(function (openedModal) {\n if (openedModal.type === 'dialog') { pushToQueue = true; }\n });\n }\n if (pushToQueue) {\n dialogsQueue.push(modal);\n return modal;\n }\n }\n\n var $modalParentEl = $el.parent();\n var wasInDom = $el.parents(doc).length > 0;\n if (app.params.modal.moveToRoot && !$modalParentEl.is(app.root)) {\n app.root.append($el);\n modal.once((type + \"Closed\"), function () {\n if (wasInDom) {\n $modalParentEl.append($el);\n } else {\n $el.remove();\n }\n });\n }\n // Show Modal\n $el.show();\n\n // Set Dialog offset\n if (type === 'dialog') {\n $el.css({\n marginTop: ((-Math.round($el.outerHeight() / 2)) + \"px\"),\n });\n }\n\n // Emit open\n /* eslint no-underscore-dangle: [\"error\", { \"allow\": [\"_clientLeft\"] }] */\n modal._clientLeft = $el[0].clientLeft;\n\n // Backdrop\n if ($backdropEl) {\n $backdropEl[animate ? 'removeClass' : 'addClass']('not-animated');\n $backdropEl.addClass('backdrop-in');\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 $el\n .animationEnd(function () {\n transitionEnd();\n });\n $el\n .transitionEnd(function () {\n transitionEnd();\n });\n $el\n .removeClass('modal-out not-animated')\n .addClass('modal-in');\n modal.onOpen();\n } else {\n $el.removeClass('modal-out').addClass('modal-in not-animated');\n modal.onOpen();\n modal.onOpened();\n }\n\n return modal;\n };\n\n Modal.prototype.close = function close (animateModal) {\n var modal = this;\n var $el = modal.$el;\n var $backdropEl = modal.$backdropEl;\n\n var animate = true;\n if (typeof animateModal !== 'undefined') { animate = animateModal; }\n else if (typeof modal.params.animate !== 'undefined') {\n animate = modal.params.animate;\n }\n\n if (!$el || !$el.hasClass('modal-in')) {\n return modal;\n }\n\n // backdrop\n if ($backdropEl) {\n $backdropEl[animate ? 'removeClass' : 'addClass']('not-animated');\n $backdropEl.removeClass('backdrop-in');\n }\n\n // Modal\n $el[animate ? 'removeClass' : 'addClass']('not-animated');\n function transitionEnd() {\n if ($el.hasClass('modal-out')) {\n modal.onClosed();\n } else if ($el.hasClass('modal-in')) {\n modal.onOpened();\n }\n }\n if (animate) {\n $el\n .animationEnd(function () {\n transitionEnd();\n });\n $el\n .transitionEnd(function () {\n transitionEnd();\n });\n $el\n .removeClass('modal-in')\n .addClass('modal-out');\n // Emit close\n modal.onClose();\n } else {\n $el\n .addClass('not-animated')\n .removeClass('modal-in')\n .addClass('modal-out');\n // Emit close\n modal.onClose();\n modal.onClosed();\n }\n\n if (modal.type === 'dialog') {\n clearDialogsQueue();\n }\n\n return modal;\n };\n\n Modal.prototype.destroy = function destroy () {\n var modal = this;\n if (modal.destroyed) { return; }\n modal.emit((\"local::beforeDestroy modalBeforeDestroy \" + (modal.type) + \"BeforeDestroy\"), modal);\n if (modal.$el) {\n modal.$el.trigger((\"modal:beforedestroy \" + (modal.type.toLowerCase()) + \":beforedestroy\"), modal);\n if (modal.$el.length && modal.$el[0].f7Modal) {\n delete modal.$el[0].f7Modal;\n }\n }\n Utils.deleteProps(modal);\n modal.destroyed = true;\n };\n\n return Modal;\n }(Framework7Class));\n\n var CustomModal = (function (Modal$$1) {\n function CustomModal(app, params) {\n var extendedParams = Utils.extend({\n backdrop: true,\n closeByBackdropClick: true,\n on: {},\n }, params);\n\n // Extends with open/close Modal methods;\n Modal$$1.call(this, app, extendedParams);\n\n var customModal = this;\n\n customModal.params = extendedParams;\n\n // Find Element\n var $el;\n if (!customModal.params.el) {\n $el = $$1(customModal.params.content);\n } else {\n $el = $$1(customModal.params.el);\n }\n\n if ($el && $el.length > 0 && $el[0].f7Modal) {\n return $el[0].f7Modal;\n }\n\n if ($el.length === 0) {\n return customModal.destroy();\n }\n var $backdropEl;\n if (customModal.params.backdrop) {\n $backdropEl = app.root.children('.custom-modal-backdrop');\n if ($backdropEl.length === 0) {\n $backdropEl = $$1('
');\n app.root.append($backdropEl);\n }\n }\n\n function handleClick(e) {\n if (!customModal || customModal.destroyed) { return; }\n if ($backdropEl && e.target === $backdropEl[0]) {\n customModal.close();\n }\n }\n\n customModal.on('customModalOpened', function () {\n if (customModal.params.closeByBackdropClick && customModal.params.backdrop) {\n app.on('click', handleClick);\n }\n });\n customModal.on('customModalClose', function () {\n if (customModal.params.closeByBackdropClick && customModal.params.backdrop) {\n app.off('click', handleClick);\n }\n });\n\n Utils.extend(customModal, {\n app: app,\n $el: $el,\n el: $el[0],\n $backdropEl: $backdropEl,\n backdropEl: $backdropEl && $backdropEl[0],\n type: 'customModal',\n });\n\n $el[0].f7Modal = customModal;\n\n return customModal;\n }\n\n if ( Modal$$1 ) CustomModal.__proto__ = Modal$$1;\n CustomModal.prototype = Object.create( Modal$$1 && Modal$$1.prototype );\n CustomModal.prototype.constructor = CustomModal;\n\n return CustomModal;\n }(Modal));\n\n var Modal$1 = {\n name: 'modal',\n static: {\n Modal: Modal,\n CustomModal: CustomModal,\n },\n create: function create() {\n var app = this;\n app.customModal = {\n create: function create(params) {\n return new CustomModal(app, params);\n },\n };\n },\n params: {\n modal: {\n moveToRoot: true,\n queueDialogs: true,\n },\n },\n };\n\n var Dialog = (function (Modal$$1) {\n function Dialog(app, params) {\n var extendedParams = Utils.extend({\n title: app.params.dialog.title,\n text: undefined,\n content: '',\n buttons: [],\n verticalButtons: false,\n onClick: undefined,\n cssClass: undefined,\n destroyOnClose: false,\n on: {},\n }, params);\n if (typeof extendedParams.closeByBackdropClick === 'undefined') {\n extendedParams.closeByBackdropClick = app.params.dialog.closeByBackdropClick;\n }\n\n // Extends with open/close Modal methods;\n Modal$$1.call(this, app, extendedParams);\n\n var dialog = this;\n\n var title = extendedParams.title;\n var text = extendedParams.text;\n var content = extendedParams.content;\n var buttons = extendedParams.buttons;\n var verticalButtons = extendedParams.verticalButtons;\n var cssClass = extendedParams.cssClass;\n\n dialog.params = extendedParams;\n\n // Find Element\n var $el;\n if (!dialog.params.el) {\n var dialogClasses = ['dialog'];\n if (buttons.length === 0) { dialogClasses.push('dialog-no-buttons'); }\n if (buttons.length > 0) { dialogClasses.push((\"dialog-buttons-\" + (buttons.length))); }\n if (verticalButtons) { dialogClasses.push('dialog-buttons-vertical'); }\n if (cssClass) { dialogClasses.push(cssClass); }\n\n var buttonsHTML = '';\n if (buttons.length > 0) {\n buttonsHTML = \"\\n \\n \" + (buttons.map(function (button) { return (\"\\n \" + (button.text) + \" \\n \"); }).join('')) + \"\\n
\\n \";\n }\n\n var dialogHtml = \"\\n \\n
\\n \" + (title ? (\"
\" + title + \"
\") : '') + \"\\n \" + (text ? (\"
\" + text + \"
\") : '') + \"\\n \" + content + \"\\n
\\n \" + buttonsHTML + \"\\n
\\n \";\n $el = $$1(dialogHtml);\n } else {\n $el = $$1(dialog.params.el);\n }\n\n if ($el && $el.length > 0 && $el[0].f7Modal) {\n return $el[0].f7Modal;\n }\n\n if ($el.length === 0) {\n return dialog.destroy();\n }\n\n var $backdropEl = app.root.children('.dialog-backdrop');\n if ($backdropEl.length === 0) {\n $backdropEl = $$1('
');\n app.root.append($backdropEl);\n }\n\n // Assign events\n function buttonOnClick(e) {\n var buttonEl = this;\n var index = $$1(buttonEl).index();\n var button = buttons[index];\n if (button.onClick) { button.onClick(dialog, e); }\n if (dialog.params.onClick) { dialog.params.onClick(dialog, index); }\n if (button.close !== false) { dialog.close(); }\n }\n var addKeyboardHander;\n function onKeyPress(e) {\n var keyCode = e.keyCode;\n buttons.forEach(function (button, index) {\n if (button.keyCodes && button.keyCodes.indexOf(keyCode) >= 0) {\n if (doc.activeElement) { doc.activeElement.blur(); }\n if (button.onClick) { button.onClick(dialog, e); }\n if (dialog.params.onClick) { dialog.params.onClick(dialog, index); }\n if (button.close !== false) { dialog.close(); }\n }\n });\n }\n if (buttons && buttons.length > 0) {\n dialog.on('open', function () {\n $el.find('.dialog-button').each(function (index, buttonEl) {\n var button = buttons[index];\n if (button.keyCodes) { addKeyboardHander = true; }\n $$1(buttonEl).on('click', buttonOnClick);\n });\n if (\n addKeyboardHander\n && !app.device.ios\n && !app.device.android\n && !app.device.cordova\n ) {\n $$1(doc).on('keydown', onKeyPress);\n }\n });\n dialog.on('close', function () {\n $el.find('.dialog-button').each(function (index, buttonEl) {\n $$1(buttonEl).off('click', buttonOnClick);\n });\n if (\n addKeyboardHander\n && !app.device.ios\n && !app.device.android\n && !app.device.cordova\n ) {\n $$1(doc).off('keydown', onKeyPress);\n }\n addKeyboardHander = false;\n });\n }\n Utils.extend(dialog, {\n app: app,\n $el: $el,\n el: $el[0],\n $backdropEl: $backdropEl,\n backdropEl: $backdropEl[0],\n type: 'dialog',\n setProgress: function setProgress(progress, duration) {\n app.progressbar.set($el.find('.progressbar'), progress, duration);\n return dialog;\n },\n setText: function setText(newText) {\n var $textEl = $el.find('.dialog-text');\n if ($textEl.length === 0) {\n $textEl = $$1('
');\n if (typeof title !== 'undefined') {\n $textEl.insertAfter($el.find('.dialog-title'));\n } else {\n $el.find('.dialog-inner').prepend($textEl);\n }\n }\n $textEl.html(newText);\n dialog.params.text = newText;\n return dialog;\n },\n setTitle: function setTitle(newTitle) {\n var $titleEl = $el.find('.dialog-title');\n if ($titleEl.length === 0) {\n $titleEl = $$1('
');\n $el.find('.dialog-inner').prepend($titleEl);\n }\n $titleEl.html(newTitle);\n dialog.params.title = newTitle;\n return dialog;\n },\n });\n\n function handleClick(e) {\n var target = e.target;\n var $target = $$1(target);\n if ($target.closest(dialog.el).length === 0) {\n if (\n dialog.params.closeByBackdropClick\n && dialog.backdropEl\n && dialog.backdropEl === target\n ) {\n dialog.close();\n }\n }\n }\n\n dialog.on('opened', function () {\n if (dialog.params.closeByBackdropClick) {\n app.on('click', handleClick);\n }\n });\n dialog.on('close', function () {\n if (dialog.params.closeByBackdropClick) {\n app.off('click', handleClick);\n }\n });\n\n $el[0].f7Modal = dialog;\n\n if (dialog.params.destroyOnClose) {\n dialog.once('closed', function () {\n setTimeout(function () {\n dialog.destroy();\n }, 0);\n });\n }\n\n return dialog;\n }\n\n if ( Modal$$1 ) Dialog.__proto__ = Modal$$1;\n Dialog.prototype = Object.create( Modal$$1 && Modal$$1.prototype );\n Dialog.prototype.constructor = Dialog;\n\n return Dialog;\n }(Modal));\n\n function ConstructorMethods (parameters) {\n if ( parameters === void 0 ) parameters = {};\n\n var defaultSelector = parameters.defaultSelector;\n var constructor = parameters.constructor;\n var domProp = parameters.domProp;\n var app = parameters.app;\n var addMethods = parameters.addMethods;\n var methods = {\n create: function create() {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n if (app) { return new (Function.prototype.bind.apply( constructor, [ null ].concat( [app], args) )); }\n return new (Function.prototype.bind.apply( constructor, [ null ].concat( args) ));\n },\n get: function get(el) {\n if ( el === void 0 ) el = defaultSelector;\n\n if (el instanceof constructor) { return el; }\n var $el = $$1(el);\n if ($el.length === 0) { return undefined; }\n return $el[0][domProp];\n },\n destroy: function destroy(el) {\n var instance = methods.get(el);\n if (instance && instance.destroy) { return instance.destroy(); }\n return undefined;\n },\n };\n if (addMethods && Array.isArray(addMethods)) {\n addMethods.forEach(function (methodName) {\n methods[methodName] = function (el) {\n if ( el === void 0 ) el = defaultSelector;\n var args = [], len = arguments.length - 1;\n while ( len-- > 0 ) args[ len ] = arguments[ len + 1 ];\n\n var instance = methods.get(el);\n if (instance && instance[methodName]) { return instance[methodName].apply(instance, args); }\n return undefined;\n };\n });\n }\n return methods;\n }\n\n function ModalMethods (parameters) {\n if ( parameters === void 0 ) parameters = {};\n\n var defaultSelector = parameters.defaultSelector;\n var constructor = parameters.constructor;\n var app = parameters.app;\n var methods = Utils.extend(\n ConstructorMethods({\n defaultSelector: defaultSelector,\n constructor: constructor,\n app: app,\n domProp: 'f7Modal',\n }),\n {\n open: function open(el, animate) {\n var $el = $$1(el);\n var instance = $el[0].f7Modal;\n if (!instance) { instance = new constructor(app, { el: $el }); }\n return instance.open(animate);\n },\n close: function close(el, animate) {\n if ( el === void 0 ) el = defaultSelector;\n\n var $el = $$1(el);\n if ($el.length === 0) { return undefined; }\n var instance = $el[0].f7Modal;\n if (!instance) { instance = new constructor(app, { el: $el }); }\n return instance.close(animate);\n },\n }\n );\n return methods;\n }\n\n var Dialog$1 = {\n name: 'dialog',\n params: {\n dialog: {\n title: undefined,\n buttonOk: 'OK',\n buttonCancel: 'Cancel',\n usernamePlaceholder: 'Username',\n passwordPlaceholder: 'Password',\n preloaderTitle: 'Loading... ',\n progressTitle: 'Loading... ',\n closeByBackdropClick: false,\n destroyPredefinedDialogs: true,\n keyboardActions: true,\n },\n },\n static: {\n Dialog: Dialog,\n },\n create: function create() {\n var app = this;\n var defaultDialogTitle = app.params.dialog.title || app.name;\n var destroyOnClose = app.params.dialog.destroyPredefinedDialogs;\n var keyboardActions = app.params.dialog.keyboardActions;\n app.dialog = Utils.extend(\n ModalMethods({\n app: app,\n constructor: Dialog,\n defaultSelector: '.dialog.modal-in',\n }),\n {\n // Shortcuts\n alert: function alert() {\n var assign;\n\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n var text = args[0];\n var title = args[1];\n var callbackOk = args[2];\n if (args.length === 2 && typeof args[1] === 'function') {\n (assign = args, text = assign[0], callbackOk = assign[1], title = assign[2]);\n }\n return new Dialog(app, {\n title: typeof title === 'undefined' ? defaultDialogTitle : title,\n text: text,\n buttons: [{\n text: app.params.dialog.buttonOk,\n bold: true,\n onClick: callbackOk,\n keyCodes: keyboardActions ? [13, 27] : null,\n }],\n destroyOnClose: destroyOnClose,\n }).open();\n },\n prompt: function prompt() {\n var assign;\n\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n var text = args[0];\n var title = args[1];\n var callbackOk = args[2];\n var callbackCancel = args[3];\n if (typeof args[1] === 'function') {\n (assign = args, text = assign[0], callbackOk = assign[1], callbackCancel = assign[2], title = assign[3]);\n }\n return new Dialog(app, {\n title: typeof title === 'undefined' ? defaultDialogTitle : title,\n text: text,\n content: '',\n buttons: [\n {\n text: app.params.dialog.buttonCancel,\n keyCodes: keyboardActions ? [27] : null,\n },\n {\n text: app.params.dialog.buttonOk,\n bold: true,\n keyCodes: keyboardActions ? [13] : null,\n } ],\n onClick: function onClick(dialog, index) {\n var inputValue = dialog.$el.find('.dialog-input').val();\n if (index === 0 && callbackCancel) { callbackCancel(inputValue); }\n if (index === 1 && callbackOk) { callbackOk(inputValue); }\n },\n destroyOnClose: destroyOnClose,\n }).open();\n },\n confirm: function confirm() {\n var assign;\n\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n var text = args[0];\n var title = args[1];\n var callbackOk = args[2];\n var callbackCancel = args[3];\n if (typeof args[1] === 'function') {\n (assign = args, text = assign[0], callbackOk = assign[1], callbackCancel = assign[2], title = assign[3]);\n }\n return new Dialog(app, {\n title: typeof title === 'undefined' ? defaultDialogTitle : title,\n text: text,\n buttons: [\n {\n text: app.params.dialog.buttonCancel,\n onClick: callbackCancel,\n keyCodes: keyboardActions ? [27] : null,\n },\n {\n text: app.params.dialog.buttonOk,\n bold: true,\n onClick: callbackOk,\n keyCodes: keyboardActions ? [13] : null,\n } ],\n destroyOnClose: destroyOnClose,\n }).open();\n },\n login: function login() {\n var assign;\n\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n var text = args[0];\n var title = args[1];\n var callbackOk = args[2];\n var callbackCancel = args[3];\n if (typeof args[1] === 'function') {\n (assign = args, text = assign[0], callbackOk = assign[1], callbackCancel = assign[2], title = assign[3]);\n }\n return new Dialog(app, {\n title: typeof title === 'undefined' ? defaultDialogTitle : title,\n text: text,\n content: (\"\\n \\n \"),\n buttons: [\n {\n text: app.params.dialog.buttonCancel,\n keyCodes: keyboardActions ? [27] : null,\n },\n {\n text: app.params.dialog.buttonOk,\n bold: true,\n keyCodes: keyboardActions ? [13] : null,\n } ],\n onClick: function onClick(dialog, index) {\n var username = dialog.$el.find('[name=\"dialog-username\"]').val();\n var password = dialog.$el.find('[name=\"dialog-password\"]').val();\n if (index === 0 && callbackCancel) { callbackCancel(username, password); }\n if (index === 1 && callbackOk) { callbackOk(username, password); }\n },\n destroyOnClose: destroyOnClose,\n }).open();\n },\n password: function password() {\n var assign;\n\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n var text = args[0];\n var title = args[1];\n var callbackOk = args[2];\n var callbackCancel = args[3];\n if (typeof args[1] === 'function') {\n (assign = args, text = assign[0], callbackOk = assign[1], callbackCancel = assign[2], title = assign[3]);\n }\n return new Dialog(app, {\n title: typeof title === 'undefined' ? defaultDialogTitle : title,\n text: text,\n content: (\"\\n \"),\n buttons: [\n {\n text: app.params.dialog.buttonCancel,\n keyCodes: keyboardActions ? [27] : null,\n },\n {\n text: app.params.dialog.buttonOk,\n bold: true,\n keyCodes: keyboardActions ? [13] : null,\n } ],\n onClick: function onClick(dialog, index) {\n var password = dialog.$el.find('[name=\"dialog-password\"]').val();\n if (index === 0 && callbackCancel) { callbackCancel(password); }\n if (index === 1 && callbackOk) { callbackOk(password); }\n },\n destroyOnClose: destroyOnClose,\n }).open();\n },\n preloader: function preloader(title, color) {\n var preloaderInner = app.theme !== 'md' ? '' : Utils.mdPreloaderContent;\n return new Dialog(app, {\n title: typeof title === 'undefined' || title === null ? app.params.dialog.preloaderTitle : title,\n content: (\"\" + preloaderInner + \"
\"),\n cssClass: 'dialog-preloader',\n destroyOnClose: destroyOnClose,\n }).open();\n },\n progress: function progress() {\n var assign, assign$1, assign$2;\n\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n var title = args[0];\n var progress = args[1];\n var color = args[2];\n if (args.length === 2) {\n if (typeof args[0] === 'number') {\n (assign = args, progress = assign[0], color = assign[1], title = assign[2]);\n } else if (typeof args[0] === 'string' && typeof args[1] === 'string') {\n (assign$1 = args, title = assign$1[0], color = assign$1[1], progress = assign$1[2]);\n }\n } else if (args.length === 1) {\n if (typeof args[0] === 'number') {\n (assign$2 = args, progress = assign$2[0], title = assign$2[1], color = assign$2[2]);\n }\n }\n var infinite = typeof progress === 'undefined';\n var dialog = new Dialog(app, {\n title: typeof title === 'undefined' ? app.params.dialog.progressTitle : title,\n cssClass: 'dialog-progress',\n content: (\"\\n \\n \" + (!infinite ? ' ' : '') + \"\\n
\\n \"),\n destroyOnClose: destroyOnClose,\n });\n if (!infinite) { dialog.setProgress(progress); }\n return dialog.open();\n },\n }\n );\n },\n };\n\n var Popup = (function (Modal$$1) {\n function Popup(app, params) {\n var extendedParams = Utils.extend(\n { on: {} },\n app.params.popup,\n params\n );\n\n // Extends with open/close Modal methods;\n Modal$$1.call(this, app, extendedParams);\n\n var popup = this;\n\n popup.params = extendedParams;\n\n // Find Element\n var $el;\n if (!popup.params.el) {\n $el = $$1(popup.params.content);\n } else {\n $el = $$1(popup.params.el);\n }\n\n if ($el && $el.length > 0 && $el[0].f7Modal) {\n return $el[0].f7Modal;\n }\n\n if ($el.length === 0) {\n return popup.destroy();\n }\n\n var $backdropEl;\n if (popup.params.backdrop) {\n $backdropEl = app.root.children('.popup-backdrop');\n if ($backdropEl.length === 0) {\n $backdropEl = $$1('');\n app.root.append($backdropEl);\n }\n }\n\n Utils.extend(popup, {\n app: app,\n $el: $el,\n el: $el[0],\n $backdropEl: $backdropEl,\n backdropEl: $backdropEl && $backdropEl[0],\n type: 'popup',\n });\n\n function handleClick(e) {\n var target = e.target;\n var $target = $$1(target);\n if ($target.closest(popup.el).length === 0) {\n if (\n popup.params\n && popup.params.closeByBackdropClick\n && popup.params.backdrop\n && popup.backdropEl\n && popup.backdropEl === target\n ) {\n popup.close();\n }\n }\n }\n\n popup.on('popupOpened', function () {\n if (popup.params.closeByBackdropClick) {\n app.on('click', handleClick);\n }\n });\n popup.on('popupClose', function () {\n if (popup.params.closeByBackdropClick) {\n app.off('click', handleClick);\n }\n });\n\n $el[0].f7Modal = popup;\n\n return popup;\n }\n\n if ( Modal$$1 ) Popup.__proto__ = Modal$$1;\n Popup.prototype = Object.create( Modal$$1 && Modal$$1.prototype );\n Popup.prototype.constructor = Popup;\n\n return Popup;\n }(Modal));\n\n var Popup$1 = {\n name: 'popup',\n params: {\n popup: {\n backdrop: true,\n closeByBackdropClick: true,\n },\n },\n static: {\n Popup: Popup,\n },\n create: function create() {\n var app = this;\n app.popup = ModalMethods({\n app: app,\n constructor: Popup,\n defaultSelector: '.popup.modal-in',\n });\n },\n clicks: {\n '.popup-open': function openPopup($clickedEl, data) {\n if ( data === void 0 ) data = {};\n\n var app = this;\n app.popup.open(data.popup, data.animate);\n },\n '.popup-close': function closePopup($clickedEl, data) {\n if ( data === void 0 ) data = {};\n\n var app = this;\n app.popup.close(data.popup, data.animate);\n },\n },\n };\n\n var LoginScreen = (function (Modal$$1) {\n function LoginScreen(app, params) {\n var extendedParams = Utils.extend({\n on: {},\n }, params);\n\n // Extends with open/close Modal methods;\n Modal$$1.call(this, app, extendedParams);\n\n var loginScreen = this;\n\n loginScreen.params = extendedParams;\n\n // Find Element\n var $el;\n if (!loginScreen.params.el) {\n $el = $$1(loginScreen.params.content);\n } else {\n $el = $$1(loginScreen.params.el);\n }\n\n if ($el && $el.length > 0 && $el[0].f7Modal) {\n return $el[0].f7Modal;\n }\n\n if ($el.length === 0) {\n return loginScreen.destroy();\n }\n\n Utils.extend(loginScreen, {\n app: app,\n $el: $el,\n el: $el[0],\n type: 'loginScreen',\n });\n\n $el[0].f7Modal = loginScreen;\n\n return loginScreen;\n }\n\n if ( Modal$$1 ) LoginScreen.__proto__ = Modal$$1;\n LoginScreen.prototype = Object.create( Modal$$1 && Modal$$1.prototype );\n LoginScreen.prototype.constructor = LoginScreen;\n\n return LoginScreen;\n }(Modal));\n\n var LoginScreen$1 = {\n name: 'loginScreen',\n static: {\n LoginScreen: LoginScreen,\n },\n create: function create() {\n var app = this;\n app.loginScreen = ModalMethods({\n app: app,\n constructor: LoginScreen,\n defaultSelector: '.login-screen.modal-in',\n });\n },\n clicks: {\n '.login-screen-open': function openLoginScreen($clickedEl, data) {\n if ( data === void 0 ) data = {};\n\n var app = this;\n app.loginScreen.open(data.loginScreen, data.animate);\n },\n '.login-screen-close': function closeLoginScreen($clickedEl, data) {\n if ( data === void 0 ) data = {};\n\n var app = this;\n app.loginScreen.close(data.loginScreen, data.animate);\n },\n },\n };\n\n var Popover = (function (Modal$$1) {\n function Popover(app, params) {\n var extendedParams = Utils.extend(\n { on: {} },\n app.params.popover,\n params\n );\n\n // Extends with open/close Modal methods;\n Modal$$1.call(this, app, extendedParams);\n\n var popover = this;\n\n popover.params = extendedParams;\n\n // Find Element\n var $el;\n if (!popover.params.el) {\n $el = $$1(popover.params.content);\n } else {\n $el = $$1(popover.params.el);\n }\n\n if ($el && $el.length > 0 && $el[0].f7Modal) {\n return $el[0].f7Modal;\n }\n\n // Find Target\n var $targetEl = $$1(popover.params.targetEl).eq(0);\n\n if ($el.length === 0) {\n return popover.destroy();\n }\n\n // Backdrop\n var $backdropEl;\n if (popover.params.backdrop) {\n $backdropEl = app.root.children('.popover-backdrop');\n if ($backdropEl.length === 0) {\n $backdropEl = $$1('
');\n app.root.append($backdropEl);\n }\n }\n\n // Find Angle\n var $angleEl;\n if ($el.find('.popover-angle').length === 0) {\n $angleEl = $$1('
');\n $el.prepend($angleEl);\n } else {\n $angleEl = $el.find('.popover-angle');\n }\n\n // Open\n var originalOpen = popover.open;\n\n Utils.extend(popover, {\n app: app,\n $el: $el,\n el: $el[0],\n $targetEl: $targetEl,\n targetEl: $targetEl[0],\n $angleEl: $angleEl,\n angleEl: $angleEl[0],\n $backdropEl: $backdropEl,\n backdropEl: $backdropEl && $backdropEl[0],\n type: 'popover',\n open: function open() {\n var assign;\n\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n var targetEl = args[0];\n var animate = args[1];\n if (typeof args[0] === 'boolean') { (assign = args, animate = assign[0], targetEl = assign[1]); }\n if (targetEl) {\n popover.$targetEl = $$1(targetEl);\n popover.targetEl = popover.$targetEl[0];\n }\n originalOpen.call(popover, animate);\n },\n });\n\n function handleResize() {\n popover.resize();\n }\n popover.on('popoverOpen', function () {\n popover.resize();\n app.on('resize', handleResize);\n popover.on('popoverClose popoverBeforeDestroy', function () {\n app.off('resize', handleResize);\n });\n });\n\n function handleClick(e) {\n var target = e.target;\n var $target = $$1(target);\n if ($target.closest(popover.el).length === 0) {\n if (\n popover.params.closeByBackdropClick\n && popover.params.backdrop\n && popover.backdropEl\n && popover.backdropEl === target\n ) {\n popover.close();\n } else if (popover.params.closeByOutsideClick) {\n popover.close();\n }\n }\n }\n\n popover.on('popoverOpened', function () {\n if (popover.params.closeByOutsideClick || popover.params.closeByBackdropClick) {\n app.on('click', handleClick);\n }\n });\n popover.on('popoverClose', function () {\n if (popover.params.closeByOutsideClick || popover.params.closeByBackdropClick) {\n app.off('click', handleClick);\n }\n });\n\n $el[0].f7Modal = popover;\n\n return popover;\n }\n\n if ( Modal$$1 ) Popover.__proto__ = Modal$$1;\n Popover.prototype = Object.create( Modal$$1 && Modal$$1.prototype );\n Popover.prototype.constructor = Popover;\n\n Popover.prototype.resize = function resize () {\n var popover = this;\n var app = popover.app;\n var $el = popover.$el;\n var $targetEl = popover.$targetEl;\n var $angleEl = popover.$angleEl;\n var ref = popover.params;\n var targetX = ref.targetX;\n var targetY = ref.targetY;\n $el.css({ left: '', top: '' });\n var ref$1 = [$el.width(), $el.height()];\n var width = ref$1[0];\n var height = ref$1[1];\n var angleSize = 0;\n var angleLeft;\n var angleTop;\n if (app.theme === 'ios') {\n $angleEl.removeClass('on-left on-right on-top on-bottom').css({ left: '', top: '' });\n angleSize = $angleEl.width() / 2;\n } else {\n $el.removeClass('popover-on-left popover-on-right popover-on-top popover-on-bottom').css({ left: '', top: '' });\n }\n\n var targetWidth;\n var targetHeight;\n var targetOffsetLeft;\n var targetOffsetTop;\n if ($targetEl && $targetEl.length > 0) {\n targetWidth = $targetEl.outerWidth();\n targetHeight = $targetEl.outerHeight();\n\n var targetOffset = $targetEl.offset();\n targetOffsetLeft = targetOffset.left - app.left;\n targetOffsetTop = targetOffset.top - app.top;\n\n var targetParentPage = $targetEl.parents('.page');\n if (targetParentPage.length > 0) {\n targetOffsetTop -= targetParentPage[0].scrollTop;\n }\n } else if (typeof targetX !== 'undefined' && targetY !== 'undefined') {\n targetOffsetLeft = targetX;\n targetOffsetTop = targetY;\n targetWidth = popover.params.targetWidth || 0;\n targetHeight = popover.params.targetHeight || 0;\n }\n\n var ref$2 = [0, 0, 0];\n var left = ref$2[0];\n var top = ref$2[1];\n var diff = ref$2[2];\n // Top Position\n var position = app.theme === 'md' ? 'bottom' : 'top';\n if (app.theme === 'md') {\n if (height < app.height - targetOffsetTop - targetHeight) {\n // On bottom\n position = 'bottom';\n top = targetOffsetTop;\n } else if (height < targetOffsetTop) {\n // On top\n top = (targetOffsetTop - height) + targetHeight;\n position = 'top';\n } else {\n // On middle\n position = 'bottom';\n top = targetOffsetTop;\n }\n\n if (top <= 0) {\n top = 8;\n } else if (top + height >= app.height) {\n top = app.height - height - 8;\n }\n\n // Horizontal Position\n left = (targetOffsetLeft + targetWidth) - width - 8;\n if (left + width >= app.width - 8) {\n left = (targetOffsetLeft + targetWidth) - width - 8;\n }\n if (left < 8) {\n left = 8;\n }\n if (position === 'top') {\n $el.addClass('popover-on-top');\n }\n if (position === 'bottom') {\n $el.addClass('popover-on-bottom');\n }\n } else {\n if ((height + angleSize) < targetOffsetTop) {\n // On top\n top = targetOffsetTop - height - angleSize;\n } else if ((height + angleSize) < app.height - targetOffsetTop - targetHeight) {\n // On bottom\n position = 'bottom';\n top = targetOffsetTop + targetHeight + angleSize;\n } else {\n // On middle\n position = 'middle';\n top = ((targetHeight / 2) + targetOffsetTop) - (height / 2);\n diff = top;\n if (top <= 0) {\n top = 5;\n } else if (top + height >= app.height) {\n top = app.height - height - 5;\n }\n diff -= top;\n }\n\n // Horizontal Position\n if (position === 'top' || position === 'bottom') {\n left = ((targetWidth / 2) + targetOffsetLeft) - (width / 2);\n diff = left;\n if (left < 5) { left = 5; }\n if (left + width > app.width) { left = app.width - width - 5; }\n if (left < 0) { left = 0; }\n if (position === 'top') {\n $angleEl.addClass('on-bottom');\n }\n if (position === 'bottom') {\n $angleEl.addClass('on-top');\n }\n diff -= left;\n angleLeft = ((width / 2) - angleSize) + diff;\n angleLeft = Math.max(Math.min(angleLeft, width - (angleSize * 2) - 13), 13);\n $angleEl.css({ left: (angleLeft + \"px\") });\n } else if (position === 'middle') {\n left = targetOffsetLeft - width - angleSize;\n $angleEl.addClass('on-right');\n if (left < 5 || (left + width > app.width)) {\n if (left < 5) { left = targetOffsetLeft + targetWidth + angleSize; }\n if (left + width > app.width) { left = app.width - width - 5; }\n $angleEl.removeClass('on-right').addClass('on-left');\n }\n angleTop = ((height / 2) - angleSize) + diff;\n angleTop = Math.max(Math.min(angleTop, height - (angleSize * 2) - 13), 13);\n $angleEl.css({ top: (angleTop + \"px\") });\n }\n }\n\n // Apply Styles\n $el.css({ top: (top + \"px\"), left: (left + \"px\") });\n };\n\n return Popover;\n }(Modal));\n\n var Popover$1 = {\n name: 'popover',\n params: {\n popover: {\n closeByBackdropClick: true,\n closeByOutsideClick: false,\n backdrop: true,\n },\n },\n static: {\n Popover: Popover,\n },\n create: function create() {\n var app = this;\n app.popover = Utils.extend(\n ModalMethods({\n app: app,\n constructor: Popover,\n defaultSelector: '.popover.modal-in',\n }),\n {\n open: function open(popoverEl, targetEl, animate) {\n var $popoverEl = $$1(popoverEl);\n var popover = $popoverEl[0].f7Modal;\n if (!popover) { popover = new Popover(app, { el: $popoverEl, targetEl: targetEl }); }\n return popover.open(targetEl, animate);\n },\n }\n );\n },\n clicks: {\n '.popover-open': function openPopover($clickedEl, data) {\n if ( data === void 0 ) data = {};\n\n var app = this;\n app.popover.open(data.popover, $clickedEl, data.animate);\n },\n '.popover-close': function closePopover($clickedEl, data) {\n if ( data === void 0 ) data = {};\n\n var app = this;\n app.popover.close(data.popover, data.animate);\n },\n },\n };\n\n /* eslint indent: [\"off\"] */\n\n var Actions = (function (Modal$$1) {\n function Actions(app, params) {\n var extendedParams = Utils.extend(\n { on: {} },\n app.params.actions,\n params\n );\n\n // Extends with open/close Modal methods;\n Modal$$1.call(this, app, extendedParams);\n\n var actions = this;\n\n actions.params = extendedParams;\n\n // Buttons\n var groups;\n if (actions.params.buttons) {\n groups = actions.params.buttons;\n if (!Array.isArray(groups[0])) { groups = [groups]; }\n }\n actions.groups = groups;\n\n // Find Element\n var $el;\n if (actions.params.el) {\n $el = $$1(actions.params.el);\n } else if (actions.params.content) {\n $el = $$1(actions.params.content);\n } else if (actions.params.buttons) {\n if (actions.params.convertToPopover) {\n actions.popoverHtml = actions.renderPopover();\n }\n actions.actionsHtml = actions.render();\n }\n\n if ($el && $el.length > 0 && $el[0].f7Modal) {\n return $el[0].f7Modal;\n }\n\n if ($el && $el.length === 0 && !(actions.actionsHtml || actions.popoverHtml)) {\n return actions.destroy();\n }\n\n // Backdrop\n var $backdropEl;\n if (actions.params.backdrop) {\n $backdropEl = app.root.children('.actions-backdrop');\n if ($backdropEl.length === 0) {\n $backdropEl = $$1('
');\n app.root.append($backdropEl);\n }\n }\n\n var originalOpen = actions.open;\n var originalClose = actions.close;\n\n var popover;\n function buttonOnClick(e) {\n var buttonEl = this;\n var buttonIndex;\n var groupIndex;\n if ($$1(buttonEl).hasClass('item-link')) {\n buttonIndex = $$1(buttonEl).parents('li').index();\n groupIndex = $$1(buttonEl).parents('.list').index();\n } else {\n buttonIndex = $$1(buttonEl).index();\n groupIndex = $$1(buttonEl).parents('.actions-group').index();\n }\n if (typeof groups !== 'undefined') {\n var button = groups[groupIndex][buttonIndex];\n if (button.onClick) { button.onClick(actions, e); }\n if (actions.params.onClick) { actions.params.onClick(actions, e); }\n if (button.close !== false) { actions.close(); }\n }\n }\n actions.open = function open(animate) {\n var convertToPopover = false;\n var ref = actions.params;\n var targetEl = ref.targetEl;\n var targetX = ref.targetX;\n var targetY = ref.targetY;\n var targetWidth = ref.targetWidth;\n var targetHeight = ref.targetHeight;\n if (actions.params.convertToPopover && (targetEl || (targetX !== undefined && targetY !== undefined))) {\n // Popover\n if (\n actions.params.forceToPopover\n || (app.device.ios && app.device.ipad)\n || app.width >= 768\n ) {\n convertToPopover = true;\n }\n }\n if (convertToPopover && actions.popoverHtml) {\n popover = app.popover.create({\n content: actions.popoverHtml,\n backdrop: actions.params.backdrop,\n targetEl: targetEl,\n targetX: targetX,\n targetY: targetY,\n targetWidth: targetWidth,\n targetHeight: targetHeight,\n });\n popover.open(animate);\n popover.once('popoverOpened', function () {\n popover.$el.find('.item-link').each(function (groupIndex, buttonEl) {\n $$1(buttonEl).on('click', buttonOnClick);\n });\n });\n popover.once('popoverClosed', function () {\n popover.$el.find('.item-link').each(function (groupIndex, buttonEl) {\n $$1(buttonEl).off('click', buttonOnClick);\n });\n Utils.nextTick(function () {\n popover.destroy();\n popover = undefined;\n });\n });\n } else {\n actions.$el = actions.actionsHtml ? $$1(actions.actionsHtml) : actions.$el;\n actions.$el[0].f7Modal = actions;\n if (actions.groups) {\n actions.$el.find('.actions-button').each(function (groupIndex, buttonEl) {\n $$1(buttonEl).on('click', buttonOnClick);\n });\n actions.once('actionsClosed', function () {\n actions.$el.find('.actions-button').each(function (groupIndex, buttonEl) {\n $$1(buttonEl).off('click', buttonOnClick);\n });\n });\n }\n actions.el = actions.$el[0];\n originalOpen.call(actions, animate);\n }\n return actions;\n };\n\n actions.close = function close(animate) {\n if (popover) {\n popover.close(animate);\n } else {\n originalClose.call(actions, animate);\n }\n return actions;\n };\n\n Utils.extend(actions, {\n app: app,\n $el: $el,\n el: $el ? $el[0] : undefined,\n $backdropEl: $backdropEl,\n backdropEl: $backdropEl && $backdropEl[0],\n type: 'actions',\n });\n\n function handleClick(e) {\n var target = e.target;\n var $target = $$1(target);\n if ($target.closest(actions.el).length === 0) {\n if (\n actions.params.closeByBackdropClick\n && actions.params.backdrop\n && actions.backdropEl\n && actions.backdropEl === target\n ) {\n actions.close();\n } else if (actions.params.closeByOutsideClick) {\n actions.close();\n }\n }\n }\n\n actions.on('opened', function () {\n if (actions.params.closeByBackdropClick || actions.params.closeByOutsideClick) {\n app.on('click', handleClick);\n }\n });\n actions.on('close', function () {\n if (actions.params.closeByBackdropClick || actions.params.closeByOutsideClick) {\n app.off('click', handleClick);\n }\n });\n\n if ($el) {\n $el[0].f7Modal = actions;\n }\n\n return actions;\n }\n\n if ( Modal$$1 ) Actions.__proto__ = Modal$$1;\n Actions.prototype = Object.create( Modal$$1 && Modal$$1.prototype );\n Actions.prototype.constructor = Actions;\n\n Actions.prototype.render = function render () {\n var actions = this;\n if (actions.params.render) { return actions.params.render.call(actions, actions); }\n var groups = actions.groups;\n return (\"\\n \\n \" + (groups.map(function (group) { return (\"
\\n \" + (group.map(function (button) {\n var buttonClasses = [(\"actions-\" + (button.label ? 'label' : 'button'))];\n var color = button.color;\n var bg = button.bg;\n var bold = button.bold;\n var disabled = button.disabled;\n var label = button.label;\n var text = button.text;\n var icon = button.icon;\n if (color) { buttonClasses.push((\"color-\" + color)); }\n if (bg) { buttonClasses.push((\"bg-color-\" + bg)); }\n if (bold) { buttonClasses.push('actions-button-bold'); }\n if (disabled) { buttonClasses.push('disabled'); }\n if (label) {\n return (\"
\" + text + \"
\");\n }\n return (\"\\n
\\n \" + (icon ? (\"
\" + icon + \"
\") : '') + \"\\n
\" + text + \"
\\n
\").trim();\n }).join('')) + \"\\n
\"); }).join('')) + \"\\n
\\n \").trim();\n };\n\n Actions.prototype.renderPopover = function renderPopover () {\n var actions = this;\n if (actions.params.renderPopover) { return actions.params.renderPopover.call(actions, actions); }\n var groups = actions.groups;\n return (\"\\n \\n
\\n \" + (groups.map(function (group) { return (\"\\n
\\n
\\n \" + (group.map(function (button) {\n var itemClasses = [];\n var color = button.color;\n var bg = button.bg;\n var bold = button.bold;\n var disabled = button.disabled;\n var label = button.label;\n var text = button.text;\n var icon = button.icon;\n if (color) { itemClasses.push((\"color-\" + color)); }\n if (bg) { itemClasses.push((\"bg-color-\" + bg)); }\n if (bold) { itemClasses.push('popover-from-actions-bold'); }\n if (disabled) { itemClasses.push('disabled'); }\n if (label) {\n itemClasses.push('popover-from-actions-label');\n return (\"\" + text + \" \");\n }\n itemClasses.push('item-link');\n if (icon) {\n itemClasses.push('item-content');\n return (\"\\n \\n \\n \\n \" + icon + \"\\n
\\n \\n
\\n \" + text + \"\\n
\\n
\\n \\n \\n \");\n }\n itemClasses.push('list-button');\n return (\"\\n \\n \" + text + \" \\n \\n \");\n }).join('')) + \"\\n \\n
\\n \"); }).join('')) + \"\\n
\\n
\\n \").trim();\n };\n\n return Actions;\n }(Modal));\n\n var Actions$1 = {\n name: 'actions',\n params: {\n actions: {\n convertToPopover: true,\n forceToPopover: false,\n closeByBackdropClick: true,\n render: null,\n renderPopover: null,\n backdrop: true,\n },\n },\n static: {\n Actions: Actions,\n },\n create: function create() {\n var app = this;\n app.actions = ModalMethods({\n app: app,\n constructor: Actions,\n defaultSelector: '.actions-modal.modal-in',\n });\n },\n clicks: {\n '.actions-open': function openActions($clickedEl, data) {\n if ( data === void 0 ) data = {};\n\n var app = this;\n app.actions.open(data.actions, data.animate);\n },\n '.actions-close': function closeActions($clickedEl, data) {\n if ( data === void 0 ) data = {};\n\n var app = this;\n app.actions.close(data.actions, data.animate);\n },\n },\n };\n\n var Sheet = (function (Modal$$1) {\n function Sheet(app, params) {\n var extendedParams = Utils.extend(\n { on: {} },\n app.params.sheet,\n params\n );\n\n // Extends with open/close Modal methods;\n Modal$$1.call(this, app, extendedParams);\n\n var sheet = this;\n\n sheet.params = extendedParams;\n\n // Find Element\n var $el;\n if (!sheet.params.el) {\n $el = $$1(sheet.params.content);\n } else {\n $el = $$1(sheet.params.el);\n }\n\n if ($el && $el.length > 0 && $el[0].f7Modal) {\n return $el[0].f7Modal;\n }\n\n if ($el.length === 0) {\n return sheet.destroy();\n }\n var $backdropEl;\n if (sheet.params.backdrop) {\n $backdropEl = app.root.children('.sheet-backdrop');\n if ($backdropEl.length === 0) {\n $backdropEl = $$1('
');\n app.root.append($backdropEl);\n }\n }\n\n var $pageContentEl;\n function scrollToOpen() {\n var $scrollEl = $$1(sheet.params.scrollToEl).eq(0);\n if ($scrollEl.length === 0) { return; }\n $pageContentEl = $scrollEl.parents('.page-content');\n if ($pageContentEl.length === 0) { return; }\n\n var paddingTop = parseInt($pageContentEl.css('padding-top'), 10);\n var paddingBottom = parseInt($pageContentEl.css('padding-bottom'), 10);\n var pageHeight = $pageContentEl[0].offsetHeight - paddingTop - $el.height();\n var pageScrollHeight = $pageContentEl[0].scrollHeight - paddingTop - $el.height();\n var pageScroll = $pageContentEl.scrollTop();\n\n var newPaddingBottom;\n\n var scrollElTop = ($scrollEl.offset().top - paddingTop) + $scrollEl[0].offsetHeight;\n if (scrollElTop > pageHeight) {\n var scrollTop = (pageScroll + scrollElTop) - pageHeight;\n if (scrollTop + pageHeight > pageScrollHeight) {\n newPaddingBottom = ((scrollTop + pageHeight) - pageScrollHeight) + paddingBottom;\n if (pageHeight === pageScrollHeight) {\n newPaddingBottom = $el.height();\n }\n $pageContentEl.css({\n 'padding-bottom': (newPaddingBottom + \"px\"),\n });\n }\n $pageContentEl.scrollTop(scrollTop, 300);\n }\n }\n\n function scrollToClose() {\n if ($pageContentEl && $pageContentEl.length > 0) {\n $pageContentEl.css({\n 'padding-bottom': '',\n });\n }\n }\n function handleClick(e) {\n var target = e.target;\n var $target = $$1(target);\n if ($target.closest(sheet.el).length === 0) {\n if (\n sheet.params.closeByBackdropClick\n && sheet.params.backdrop\n && sheet.backdropEl\n && sheet.backdropEl === target\n ) {\n sheet.close();\n } else if (sheet.params.closeByOutsideClick) {\n sheet.close();\n }\n }\n }\n\n sheet.on('sheetOpen', function () {\n if (sheet.params.scrollToEl) {\n scrollToOpen();\n }\n });\n sheet.on('sheetOpened', function () {\n if (sheet.params.closeByOutsideClick || sheet.params.closeByBackdropClick) {\n app.on('click', handleClick);\n }\n });\n sheet.on('sheetClose', function () {\n if (sheet.params.scrollToEl) {\n scrollToClose();\n }\n if (sheet.params.closeByOutsideClick || sheet.params.closeByBackdropClick) {\n app.off('click', handleClick);\n }\n });\n\n Utils.extend(sheet, {\n app: app,\n $el: $el,\n el: $el[0],\n $backdropEl: $backdropEl,\n backdropEl: $backdropEl && $backdropEl[0],\n type: 'sheet',\n });\n\n $el[0].f7Modal = sheet;\n\n return sheet;\n }\n\n if ( Modal$$1 ) Sheet.__proto__ = Modal$$1;\n Sheet.prototype = Object.create( Modal$$1 && Modal$$1.prototype );\n Sheet.prototype.constructor = Sheet;\n\n return Sheet;\n }(Modal));\n\n var Sheet$1 = {\n name: 'sheet',\n params: {\n sheet: {\n closeByBackdropClick: true,\n closeByOutsideClick: false,\n },\n },\n static: {\n Sheet: Sheet,\n },\n create: function create() {\n var app = this;\n if (!app.passedParams.sheet || app.passedParams.sheet.backdrop === undefined) {\n app.params.sheet.backdrop = app.theme === 'md';\n }\n app.sheet = Utils.extend(\n {},\n ModalMethods({\n app: app,\n constructor: Sheet,\n defaultSelector: '.sheet-modal.modal-in',\n })\n );\n },\n clicks: {\n '.sheet-open': function openSheet($clickedEl, data) {\n if ( data === void 0 ) data = {};\n\n var app = this;\n if ($$1('.sheet-modal.modal-in').length > 0 && data.sheet && $$1(data.sheet)[0] !== $$1('.sheet-modal.modal-in')[0]) {\n app.sheet.close('.sheet-modal.modal-in');\n }\n app.sheet.open(data.sheet, data.animate);\n },\n '.sheet-close': function closeSheet($clickedEl, data) {\n if ( data === void 0 ) data = {};\n\n var app = this;\n app.sheet.close(data.sheet, data.animate);\n },\n },\n };\n\n var Toast = (function (Modal$$1) {\n function Toast(app, params) {\n var extendedParams = Utils.extend({\n on: {},\n }, app.params.toast, params);\n\n // Extends with open/close Modal methods;\n Modal$$1.call(this, app, extendedParams);\n\n var toast = this;\n\n toast.app = app;\n\n toast.params = extendedParams;\n\n var ref = toast.params;\n var closeButton = ref.closeButton;\n var closeTimeout = ref.closeTimeout;\n\n var $el;\n if (!toast.params.el) {\n // Find Element\n var toastHtml = toast.render();\n\n $el = $$1(toastHtml);\n } else {\n $el = $$1(toast.params.el);\n }\n\n if ($el && $el.length > 0 && $el[0].f7Modal) {\n return $el[0].f7Modal;\n }\n\n if ($el.length === 0) {\n return toast.destroy();\n }\n\n Utils.extend(toast, {\n $el: $el,\n el: $el[0],\n type: 'toast',\n });\n\n $el[0].f7Modal = toast;\n\n if (closeButton) {\n $el.find('.toast-button').on('click', function () {\n toast.emit('local::closeButtonClick toastCloseButtonClick', toast);\n toast.close();\n });\n\n toast.on('beforeDestroy', function () {\n $el.find('.toast-button').off('click');\n });\n }\n\n var timeoutId;\n toast.on('open', function () {\n $$1('.toast.modal-in').each(function (index, openedEl) {\n var toastInstance = app.toast.get(openedEl);\n if (openedEl !== toast.el && toastInstance) {\n toastInstance.close();\n }\n });\n if (closeTimeout) {\n timeoutId = Utils.nextTick(function () {\n toast.close();\n }, closeTimeout);\n }\n });\n toast.on('close', function () {\n win.clearTimeout(timeoutId);\n });\n\n if (toast.params.destroyOnClose) {\n toast.once('closed', function () {\n setTimeout(function () {\n toast.destroy();\n }, 0);\n });\n }\n\n return toast;\n }\n\n if ( Modal$$1 ) Toast.__proto__ = Modal$$1;\n Toast.prototype = Object.create( Modal$$1 && Modal$$1.prototype );\n Toast.prototype.constructor = Toast;\n\n Toast.prototype.render = function render () {\n var toast = this;\n var app = toast.app;\n if (toast.params.render) { return toast.params.render.call(toast, toast); }\n var ref = toast.params;\n var position = ref.position;\n var cssClass = ref.cssClass;\n var icon = ref.icon;\n var text = ref.text;\n var closeButton = ref.closeButton;\n var closeButtonColor = ref.closeButtonColor;\n var closeButtonText = ref.closeButtonText;\n return (\"\\n \\n
\\n \" + (icon ? (\"
\" + icon + \"
\") : '') + \"\\n
\" + text + \"
\\n \" + (closeButton && !icon ? (\"\\n
\" + closeButtonText + \" \\n \").trim() : '') + \"\\n
\\n
\\n \").trim();\n };\n\n return Toast;\n }(Modal));\n\n var Toast$1 = {\n name: 'toast',\n static: {\n Toast: Toast,\n },\n create: function create() {\n var app = this;\n app.toast = Utils.extend(\n {},\n ModalMethods({\n app: app,\n constructor: Toast,\n defaultSelector: '.toast.modal-in',\n }),\n {\n // Shortcuts\n show: function show(params) {\n Utils.extend(params, {\n destroyOnClose: true,\n });\n return new Toast(app, params).open();\n },\n }\n );\n },\n params: {\n toast: {\n icon: null,\n text: null,\n position: 'bottom',\n closeButton: false,\n closeButtonColor: null,\n closeButtonText: 'Ok',\n closeTimeout: null,\n cssClass: null,\n render: null,\n },\n },\n };\n\n var Preloader = {\n init: function init(el) {\n var app = this;\n if (app.theme !== 'md') { return; }\n var $el = $$1(el);\n if ($el.length === 0 || $el.children('.preloader-inner').length > 0) { return; }\n $el.append(Utils.mdPreloaderContent);\n },\n // Modal\n visible: false,\n show: function show(color) {\n if ( color === void 0 ) color = 'white';\n\n var app = this;\n if (Preloader.visible) { return; }\n var preloaderInner = app.theme !== 'md' ? '' : Utils.mdPreloaderContent;\n $$1('html').addClass('with-modal-preloader');\n app.root.append((\"\\n
\\n \\n
\" + preloaderInner + \"
\\n
\\n \"));\n Preloader.visible = true;\n },\n hide: function hide() {\n var app = this;\n if (!Preloader.visible) { return; }\n $$1('html').removeClass('with-modal-preloader');\n app.root.find('.preloader-backdrop, .preloader-modal').remove();\n Preloader.visible = false;\n },\n };\n var Preloader$1 = {\n name: 'preloader',\n create: function create() {\n var app = this;\n Utils.extend(app, {\n preloader: {\n init: Preloader.init.bind(app),\n show: Preloader.show.bind(app),\n hide: Preloader.hide.bind(app),\n },\n });\n },\n on: {\n photoBrowserOpen: function photoBrowserOpen(pb) {\n var app = this;\n if (app.theme !== 'md') { return; }\n pb.$el.find('.preloader').each(function (index, preloaderEl) {\n app.preloader.init(preloaderEl);\n });\n },\n pageInit: function pageInit(page) {\n var app = this;\n if (app.theme !== 'md') { return; }\n page.$el.find('.preloader').each(function (index, preloaderEl) {\n app.preloader.init(preloaderEl);\n });\n },\n },\n };\n\n var Progressbar = {\n set: function set() {\n var assign;\n\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n var app = this;\n var el = args[0];\n var progress = args[1];\n var duration = args[2];\n if (typeof args[0] === 'number') {\n (assign = args, progress = assign[0], duration = assign[1]);\n el = app.root;\n }\n if (typeof progress === 'undefined' || progress === null) { return el; }\n if (!progress) { progress = 0; }\n\n var $el = $$1(el || app.root);\n if ($el.length === 0) {\n return el;\n }\n var progressNormalized = Math.min(Math.max(progress, 0), 100);\n var $progressbarEl;\n if ($el.hasClass('progressbar')) { $progressbarEl = $el.eq(0); }\n else {\n $progressbarEl = $el.children('.progressbar');\n }\n if ($progressbarEl.length === 0 || $progressbarEl.hasClass('progressbar-infinite')) {\n return $progressbarEl;\n }\n var $progressbarLine = $progressbarEl.children('span');\n if ($progressbarLine.length === 0) {\n $progressbarLine = $$1(' ');\n $progressbarEl.append($progressbarLine);\n }\n $progressbarLine\n .transition(typeof duration !== 'undefined' ? duration : '')\n .transform((\"translate3d(\" + ((-100 + progressNormalized)) + \"%,0,0)\"));\n\n return $progressbarEl[0];\n },\n show: function show() {\n var assign, assign$1;\n\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n var app = this;\n\n // '.page', 50, 'multi'\n var el = args[0];\n var progress = args[1];\n var color = args[2];\n var type = 'determined';\n\n if (args.length === 2) {\n if ((typeof args[0] === 'string' || typeof args[0] === 'object') && typeof args[1] === 'string') {\n // '.page', 'multi'\n (assign = args, el = assign[0], color = assign[1], progress = assign[2]);\n type = 'infinite';\n } else if (typeof args[0] === 'number' && typeof args[1] === 'string') {\n // 50, 'multi'\n (assign$1 = args, progress = assign$1[0], color = assign$1[1]);\n el = app.root;\n }\n } else if (args.length === 1) {\n if (typeof args[0] === 'number') {\n el = app.root;\n progress = args[0];\n } else if (typeof args[0] === 'string') {\n type = 'infinite';\n el = app.root;\n color = args[0];\n }\n } else if (args.length === 0) {\n type = 'infinite';\n el = app.root;\n }\n\n var $el = $$1(el);\n if ($el.length === 0) { return undefined; }\n\n var $progressbarEl;\n if ($el.hasClass('progressbar') || $el.hasClass('progressbar-infinite')) {\n $progressbarEl = $el;\n } else {\n $progressbarEl = $el.children('.progressbar:not(.progressbar-out), .progressbar-infinite:not(.progressbar-out)');\n if ($progressbarEl.length === 0) {\n $progressbarEl = $$1((\"\\n \\n \" + (type === 'infinite' ? '' : ' ') + \"\\n \"));\n $el.append($progressbarEl);\n }\n }\n\n if (typeof progress !== 'undefined') {\n app.progressbar.set($progressbarEl, progress);\n }\n\n return $progressbarEl[0];\n },\n hide: function hide(el, removeAfterHide) {\n if ( removeAfterHide === void 0 ) removeAfterHide = true;\n\n var app = this;\n var $el = $$1(el || app.root);\n if ($el.length === 0) { return undefined; }\n var $progressbarEl;\n if ($el.hasClass('progressbar') || $el.hasClass('progressbar-infinite')) {\n $progressbarEl = $el;\n } else {\n $progressbarEl = $el.children('.progressbar, .progressbar-infinite');\n }\n if ($progressbarEl.length === 0 || !$progressbarEl.hasClass('progressbar-in') || $progressbarEl.hasClass('progressbar-out')) {\n return $progressbarEl;\n }\n $progressbarEl\n .removeClass('progressbar-in')\n .addClass('progressbar-out')\n .animationEnd(function () {\n if (removeAfterHide) {\n $progressbarEl.remove();\n }\n });\n return $progressbarEl;\n },\n };\n\n var Progressbar$1 = {\n name: 'progressbar',\n create: function create() {\n var app = this;\n Utils.extend(app, {\n progressbar: {\n set: Progressbar.set.bind(app),\n show: Progressbar.show.bind(app),\n hide: Progressbar.hide.bind(app),\n },\n });\n },\n on: {\n pageInit: function pageInit(page) {\n var app = this;\n page.$el.find('.progressbar').each(function (index, progressbarEl) {\n var $progressbarEl = $$1(progressbarEl);\n app.progressbar.set($progressbarEl, $progressbarEl.attr('data-progress'));\n });\n },\n },\n };\n\n var Sortable = {\n init: function init() {\n var app = this;\n var isTouched;\n var isMoved;\n var touchStartY;\n var touchesDiff;\n var $sortingEl;\n var $sortingItems;\n var $sortableContainer;\n var sortingElHeight;\n var minTop;\n var maxTop;\n var $insertAfterEl;\n var $insertBeforeEl;\n var indexFrom;\n var $pageEl;\n var $pageContentEl;\n var pageHeight;\n var pageOffset;\n var sortingElOffsetLocal;\n var sortingElOffsetTop;\n var initialScrollTop;\n\n function handleTouchStart(e) {\n isMoved = false;\n isTouched = true;\n touchStartY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n $sortingEl = $$1(this).parent('li');\n indexFrom = $sortingEl.index();\n $sortableContainer = $sortingEl.parents('.sortable');\n var $listGroup = $sortingEl.parents('.list-group');\n if ($listGroup.length && $listGroup.parents($sortableContainer).length) {\n $sortableContainer = $listGroup;\n }\n $sortingItems = $sortableContainer.children('ul').children('li');\n if (app.panel) { app.panel.allowOpen = false; }\n if (app.swipeout) { app.swipeout.allow = false; }\n }\n function handleTouchMove(e) {\n if (!isTouched || !$sortingEl) { return; }\n var pageY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n if (!isMoved) {\n $pageEl = $sortingEl.parents('.page');\n $pageContentEl = $sortingEl.parents('.page-content');\n var paddingTop = parseInt($pageContentEl.css('padding-top'), 10);\n var paddingBottom = parseInt($pageContentEl.css('padding-bottom'), 10);\n initialScrollTop = $pageContentEl[0].scrollTop;\n pageOffset = $pageEl.offset().top + paddingTop;\n pageHeight = $pageEl.height() - paddingTop - paddingBottom;\n $sortingEl.addClass('sorting');\n $sortableContainer.addClass('sortable-sorting');\n sortingElOffsetLocal = $sortingEl[0].offsetTop;\n minTop = $sortingEl[0].offsetTop;\n maxTop = $sortingEl.parent().height() - sortingElOffsetLocal - $sortingEl.height();\n sortingElHeight = $sortingEl[0].offsetHeight;\n sortingElOffsetTop = $sortingEl.offset().top;\n }\n isMoved = true;\n\n e.preventDefault();\n e.f7PreventSwipePanel = true;\n\n touchesDiff = pageY - touchStartY;\n\n var translateScrollOffset = $pageContentEl[0].scrollTop - initialScrollTop;\n var translate = Math.min(Math.max(touchesDiff + translateScrollOffset, -minTop), maxTop);\n $sortingEl.transform((\"translate3d(0,\" + translate + \"px,0)\"));\n\n var scrollAddition = 44;\n var allowScroll = true;\n if ((touchesDiff + translateScrollOffset) + scrollAddition < -minTop) {\n allowScroll = false;\n }\n if ((touchesDiff + translateScrollOffset) - scrollAddition > maxTop) {\n allowScroll = false;\n }\n\n $insertBeforeEl = undefined;\n $insertAfterEl = undefined;\n\n var scrollDiff;\n if (allowScroll) {\n if (sortingElOffsetTop + touchesDiff + sortingElHeight + scrollAddition > pageOffset + pageHeight) {\n // To Bottom\n scrollDiff = (sortingElOffsetTop + touchesDiff + sortingElHeight + scrollAddition) - (pageOffset + pageHeight);\n }\n if (sortingElOffsetTop + touchesDiff < pageOffset + scrollAddition) {\n // To Top\n scrollDiff = (sortingElOffsetTop + touchesDiff) - pageOffset - scrollAddition;\n }\n if (scrollDiff) {\n $pageContentEl[0].scrollTop += scrollDiff;\n }\n }\n\n $sortingItems.each(function (index, el) {\n var $currentEl = $$1(el);\n if ($currentEl[0] === $sortingEl[0]) { return; }\n var currentElOffset = $currentEl[0].offsetTop;\n var currentElHeight = $currentEl.height();\n var sortingElOffset = sortingElOffsetLocal + translate;\n\n if ((sortingElOffset >= currentElOffset - (currentElHeight / 2)) && $sortingEl.index() < $currentEl.index()) {\n $currentEl.transform((\"translate3d(0, \" + (-sortingElHeight) + \"px,0)\"));\n $insertAfterEl = $currentEl;\n $insertBeforeEl = undefined;\n } else if ((sortingElOffset <= currentElOffset + (currentElHeight / 2)) && $sortingEl.index() > $currentEl.index()) {\n $currentEl.transform((\"translate3d(0, \" + sortingElHeight + \"px,0)\"));\n $insertAfterEl = undefined;\n if (!$insertBeforeEl) { $insertBeforeEl = $currentEl; }\n } else {\n $currentEl.transform('translate3d(0, 0%,0)');\n }\n });\n }\n function handleTouchEnd() {\n if (!isTouched || !isMoved) {\n isTouched = false;\n isMoved = false;\n if (isTouched && !isMoved) {\n if (app.panel) { app.panel.allowOpen = true; }\n if (app.swipeout) { app.swipeout.allow = true; }\n }\n return;\n }\n if (app.panel) { app.panel.allowOpen = true; }\n if (app.swipeout) { app.swipeout.allow = true; }\n\n $sortingItems.transform('');\n $sortingEl.removeClass('sorting');\n $sortableContainer.removeClass('sortable-sorting');\n\n var virtualList;\n var oldIndex;\n var newIndex;\n if (app.params.sortable.moveElements) {\n if ($insertAfterEl) {\n $sortingEl.insertAfter($insertAfterEl);\n }\n if ($insertBeforeEl) {\n $sortingEl.insertBefore($insertBeforeEl);\n }\n }\n\n if (($insertAfterEl || $insertBeforeEl)\n && $sortableContainer.hasClass('virtual-list')\n ) {\n virtualList = $sortableContainer[0].f7VirtualList;\n oldIndex = $sortingEl[0].f7VirtualListIndex;\n newIndex = $insertBeforeEl ? $insertBeforeEl[0].f7VirtualListIndex : $insertAfterEl[0].f7VirtualListIndex;\n if (virtualList) { virtualList.moveItem(oldIndex, newIndex); }\n }\n\n $sortingEl.trigger('sortable:sort', { from: indexFrom, to: $sortingEl.index() });\n app.emit('sortableSort', $sortingEl[0], { from: indexFrom, to: $sortingEl.index() });\n\n $insertBeforeEl = undefined;\n $insertAfterEl = undefined;\n isTouched = false;\n isMoved = false;\n }\n\n var activeListener = app.support.passiveListener ? { passive: false, capture: false } : false;\n\n $$1(doc).on(app.touchEvents.start, '.list.sortable .sortable-handler', handleTouchStart, activeListener);\n app.on('touchmove:active', handleTouchMove);\n app.on('touchend:passive', handleTouchEnd);\n },\n enable: function enable(el) {\n if ( el === void 0 ) el = '.list.sortable';\n\n var app = this;\n var $el = $$1(el);\n if ($el.length === 0) { return; }\n $el.addClass('sortable-enabled');\n $el.trigger('sortable:enable');\n app.emit('sortableEnable', $el[0]);\n },\n disable: function disable(el) {\n if ( el === void 0 ) el = '.list.sortable';\n\n var app = this;\n var $el = $$1(el);\n if ($el.length === 0) { return; }\n $el.removeClass('sortable-enabled');\n $el.trigger('sortable:disable');\n app.emit('sortableDisable', $el[0]);\n },\n toggle: function toggle(el) {\n if ( el === void 0 ) el = '.list.sortable';\n\n var app = this;\n var $el = $$1(el);\n if ($el.length === 0) { return; }\n if ($el.hasClass('sortable-enabled')) {\n app.sortable.disable($el);\n } else {\n app.sortable.enable($el);\n }\n },\n };\n var Sortable$1 = {\n name: 'sortable',\n params: {\n sortable: {\n moveElements: true,\n },\n },\n create: function create() {\n var app = this;\n Utils.extend(app, {\n sortable: {\n init: Sortable.init.bind(app),\n enable: Sortable.enable.bind(app),\n disable: Sortable.disable.bind(app),\n toggle: Sortable.toggle.bind(app),\n },\n });\n },\n on: {\n init: function init() {\n var app = this;\n if (!app.params.sortable) { return; }\n app.sortable.init();\n },\n },\n clicks: {\n '.sortable-enable': function enable($clickedEl, data) {\n if ( data === void 0 ) data = {};\n\n var app = this;\n app.sortable.enable(data.sortable);\n },\n '.sortable-disable': function disable($clickedEl, data) {\n if ( data === void 0 ) data = {};\n\n var app = this;\n app.sortable.disable(data.sortable);\n },\n '.sortable-toggle': function toggle($clickedEl, data) {\n if ( data === void 0 ) data = {};\n\n var app = this;\n app.sortable.toggle(data.sortable);\n },\n },\n };\n\n var Swipeout = {\n init: function init() {\n var app = this;\n var touchesStart = {};\n var isTouched;\n var isMoved;\n var isScrolling;\n var touchStartTime;\n var touchesDiff;\n var $swipeoutEl;\n var $swipeoutContent;\n var $actionsRight;\n var $actionsLeft;\n var actionsLeftWidth;\n var actionsRightWidth;\n var translate;\n var opened;\n var openedActionsSide;\n var $leftButtons;\n var $rightButtons;\n var direction;\n var $overswipeLeftButton;\n var $overswipeRightButton;\n var overswipeLeft;\n var overswipeRight;\n\n function handleTouchStart(e) {\n if (!Swipeout.allow) { 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 = (new Date()).getTime();\n $swipeoutEl = $$1(this);\n }\n function handleTouchMove(e) {\n if (!isTouched) { return; }\n var pageX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n var pageY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n if (typeof isScrolling === 'undefined') {\n isScrolling = !!(isScrolling || Math.abs(pageY - touchesStart.y) > Math.abs(pageX - touchesStart.x));\n }\n if (isScrolling) {\n isTouched = false;\n return;\n }\n\n if (!isMoved) {\n if ($$1('.list.sortable-opened').length > 0) { return; }\n $swipeoutContent = $swipeoutEl.find('.swipeout-content');\n $actionsRight = $swipeoutEl.find('.swipeout-actions-right');\n $actionsLeft = $swipeoutEl.find('.swipeout-actions-left');\n actionsLeftWidth = null;\n actionsRightWidth = null;\n $leftButtons = null;\n $rightButtons = null;\n $overswipeRightButton = null;\n $overswipeLeftButton = null;\n if ($actionsLeft.length > 0) {\n actionsLeftWidth = $actionsLeft.outerWidth();\n $leftButtons = $actionsLeft.children('a');\n $overswipeLeftButton = $actionsLeft.find('.swipeout-overswipe');\n }\n if ($actionsRight.length > 0) {\n actionsRightWidth = $actionsRight.outerWidth();\n $rightButtons = $actionsRight.children('a');\n $overswipeRightButton = $actionsRight.find('.swipeout-overswipe');\n }\n opened = $swipeoutEl.hasClass('swipeout-opened');\n if (opened) {\n openedActionsSide = $swipeoutEl.find('.swipeout-actions-left.swipeout-actions-opened').length > 0 ? 'left' : 'right';\n }\n $swipeoutEl.removeClass('swipeout-transitioning');\n if (!app.params.swipeout.noFollow) {\n $swipeoutEl.find('.swipeout-actions-opened').removeClass('swipeout-actions-opened');\n $swipeoutEl.removeClass('swipeout-opened');\n }\n }\n isMoved = true;\n e.preventDefault();\n\n touchesDiff = pageX - touchesStart.x;\n translate = touchesDiff;\n\n if (opened) {\n if (openedActionsSide === 'right') { translate -= actionsRightWidth; }\n else { translate += actionsLeftWidth; }\n }\n\n if (\n (translate > 0 && $actionsLeft.length === 0)\n || (translate < 0 && $actionsRight.length === 0)\n ) {\n if (!opened) {\n isTouched = false;\n isMoved = false;\n $swipeoutContent.transform('');\n if ($rightButtons && $rightButtons.length > 0) {\n $rightButtons.transform('');\n }\n if ($leftButtons && $leftButtons.length > 0) {\n $leftButtons.transform('');\n }\n return;\n }\n translate = 0;\n }\n\n if (translate < 0) { direction = 'to-left'; }\n else if (translate > 0) { direction = 'to-right'; }\n else if (!direction) { direction = 'to-left'; }\n\n var buttonOffset;\n var progress;\n\n e.f7PreventSwipePanel = true;\n if (app.params.swipeout.noFollow) {\n if (opened) {\n if (openedActionsSide === 'right' && touchesDiff > 0) {\n app.swipeout.close($swipeoutEl);\n }\n if (openedActionsSide === 'left' && touchesDiff < 0) {\n app.swipeout.close($swipeoutEl);\n }\n } else {\n if (touchesDiff < 0 && $actionsRight.length > 0) {\n app.swipeout.open($swipeoutEl, 'right');\n }\n if (touchesDiff > 0 && $actionsLeft.length > 0) {\n app.swipeout.open($swipeoutEl, 'left');\n }\n }\n isTouched = false;\n isMoved = false;\n return;\n }\n overswipeLeft = false;\n overswipeRight = false;\n if ($actionsRight.length > 0) {\n // Show right actions\n var buttonTranslate = translate;\n progress = buttonTranslate / actionsRightWidth;\n if (buttonTranslate < -actionsRightWidth) {\n buttonTranslate = -actionsRightWidth - (Math.pow( (-buttonTranslate - actionsRightWidth), 0.8 ));\n translate = buttonTranslate;\n if ($overswipeRightButton.length > 0) {\n overswipeRight = true;\n }\n }\n if (direction !== 'to-left') {\n progress = 0;\n buttonTranslate = 0;\n }\n $rightButtons.each(function (index, buttonEl) {\n var $buttonEl = $$1(buttonEl);\n if (typeof buttonEl.f7SwipeoutButtonOffset === 'undefined') {\n $buttonEl[0].f7SwipeoutButtonOffset = buttonEl.offsetLeft;\n }\n buttonOffset = buttonEl.f7SwipeoutButtonOffset;\n if ($overswipeRightButton.length > 0 && $buttonEl.hasClass('swipeout-overswipe') && direction === 'to-left') {\n $buttonEl.css({ left: ((overswipeRight ? -buttonOffset : 0) + \"px\") });\n if (overswipeRight) {\n $buttonEl.addClass('swipeout-overswipe-active');\n } else {\n $buttonEl.removeClass('swipeout-overswipe-active');\n }\n }\n $buttonEl.transform((\"translate3d(\" + (buttonTranslate - (buttonOffset * (1 + Math.max(progress, -1)))) + \"px,0,0)\"));\n });\n }\n if ($actionsLeft.length > 0) {\n // Show left actions\n var buttonTranslate$1 = translate;\n progress = buttonTranslate$1 / actionsLeftWidth;\n if (buttonTranslate$1 > actionsLeftWidth) {\n buttonTranslate$1 = actionsLeftWidth + (Math.pow( (buttonTranslate$1 - actionsLeftWidth), 0.8 ));\n translate = buttonTranslate$1;\n if ($overswipeLeftButton.length > 0) {\n overswipeLeft = true;\n }\n }\n if (direction !== 'to-right') {\n buttonTranslate$1 = 0;\n progress = 0;\n }\n $leftButtons.each(function (index, buttonEl) {\n var $buttonEl = $$1(buttonEl);\n if (typeof buttonEl.f7SwipeoutButtonOffset === 'undefined') {\n $buttonEl[0].f7SwipeoutButtonOffset = actionsLeftWidth - buttonEl.offsetLeft - buttonEl.offsetWidth;\n }\n buttonOffset = buttonEl.f7SwipeoutButtonOffset;\n if ($overswipeLeftButton.length > 0 && $buttonEl.hasClass('swipeout-overswipe') && direction === 'to-right') {\n $buttonEl.css({ left: ((overswipeLeft ? buttonOffset : 0) + \"px\") });\n if (overswipeLeft) {\n $buttonEl.addClass('swipeout-overswipe-active');\n } else {\n $buttonEl.removeClass('swipeout-overswipe-active');\n }\n }\n if ($leftButtons.length > 1) {\n $buttonEl.css('z-index', $leftButtons.length - index);\n }\n $buttonEl.transform((\"translate3d(\" + (buttonTranslate$1 + (buttonOffset * (1 - Math.min(progress, 1)))) + \"px,0,0)\"));\n });\n }\n $swipeoutEl.trigger('swipeout', progress);\n app.emit('swipeout', $swipeoutEl[0], progress);\n $swipeoutContent.transform((\"translate3d(\" + translate + \"px,0,0)\"));\n }\n function handleTouchEnd() {\n if (!isTouched || !isMoved) {\n isTouched = false;\n isMoved = false;\n return;\n }\n\n isTouched = false;\n isMoved = false;\n var timeDiff = (new Date()).getTime() - touchStartTime;\n var $actions = direction === 'to-left' ? $actionsRight : $actionsLeft;\n var actionsWidth = direction === 'to-left' ? actionsRightWidth : actionsLeftWidth;\n var action;\n var $buttons;\n var i;\n\n if (\n (\n timeDiff < 300\n && (\n (touchesDiff < -10 && direction === 'to-left')\n || (touchesDiff > 10 && direction === 'to-right')\n )\n )\n || (\n timeDiff >= 300\n && (Math.abs(translate) > actionsWidth / 2)\n )\n ) {\n action = 'open';\n } else {\n action = 'close';\n }\n if (timeDiff < 300) {\n if (Math.abs(translate) === 0) { action = 'close'; }\n if (Math.abs(translate) === actionsWidth) { action = 'open'; }\n }\n\n if (action === 'open') {\n Swipeout.el = $swipeoutEl[0];\n $swipeoutEl.trigger('swipeout:open');\n app.emit('swipeoutOpen', $swipeoutEl[0]);\n $swipeoutEl.addClass('swipeout-opened swipeout-transitioning');\n var newTranslate = direction === 'to-left' ? -actionsWidth : actionsWidth;\n $swipeoutContent.transform((\"translate3d(\" + newTranslate + \"px,0,0)\"));\n $actions.addClass('swipeout-actions-opened');\n $buttons = direction === 'to-left' ? $rightButtons : $leftButtons;\n if ($buttons) {\n for (i = 0; i < $buttons.length; i += 1) {\n $$1($buttons[i]).transform((\"translate3d(\" + newTranslate + \"px,0,0)\"));\n }\n }\n if (overswipeRight) {\n $actionsRight.find('.swipeout-overswipe')[0].click();\n }\n if (overswipeLeft) {\n $actionsLeft.find('.swipeout-overswipe')[0].click();\n }\n } else {\n $swipeoutEl.trigger('swipeout:close');\n app.emit('swipeoutClose', $swipeoutEl[0]);\n Swipeout.el = undefined;\n $swipeoutEl.addClass('swipeout-transitioning').removeClass('swipeout-opened');\n $swipeoutContent.transform('');\n $actions.removeClass('swipeout-actions-opened');\n }\n\n var buttonOffset;\n if ($leftButtons && $leftButtons.length > 0 && $leftButtons !== $buttons) {\n $leftButtons.each(function (index, buttonEl) {\n var $buttonEl = $$1(buttonEl);\n buttonOffset = buttonEl.f7SwipeoutButtonOffset;\n if (typeof buttonOffset === 'undefined') {\n $buttonEl[0].f7SwipeoutButtonOffset = actionsLeftWidth - buttonEl.offsetLeft - buttonEl.offsetWidth;\n }\n $buttonEl.transform((\"translate3d(\" + buttonOffset + \"px,0,0)\"));\n });\n }\n if ($rightButtons && $rightButtons.length > 0 && $rightButtons !== $buttons) {\n $rightButtons.each(function (index, buttonEl) {\n var $buttonEl = $$1(buttonEl);\n buttonOffset = buttonEl.f7SwipeoutButtonOffset;\n if (typeof buttonOffset === 'undefined') {\n $buttonEl[0].f7SwipeoutButtonOffset = buttonEl.offsetLeft;\n }\n $buttonEl.transform((\"translate3d(\" + (-buttonOffset) + \"px,0,0)\"));\n });\n }\n $swipeoutContent.transitionEnd(function () {\n if ((opened && action === 'open') || (!opened && action === 'close')) { return; }\n $swipeoutEl.trigger(action === 'open' ? 'swipeout:opened' : 'swipeout:closed');\n app.emit(action === 'open' ? 'swipeoutOpened' : 'swipeoutClosed', $swipeoutEl[0]);\n $swipeoutEl.removeClass('swipeout-transitioning');\n if (opened && action === 'close') {\n if ($actionsRight.length > 0) {\n $rightButtons.transform('');\n }\n if ($actionsLeft.length > 0) {\n $leftButtons.transform('');\n }\n }\n });\n }\n\n var passiveListener = app.support.passiveListener ? { passive: true } : false;\n\n app.on('touchstart', function (e) {\n if (Swipeout.el) {\n var $targetEl = $$1(e.target);\n if (!(\n $$1(Swipeout.el).is($targetEl[0])\n || $targetEl.parents('.swipeout').is(Swipeout.el)\n || $targetEl.hasClass('modal-in')\n || ($targetEl.attr('class') || '').indexOf('-backdrop') > 0\n || $targetEl.hasClass('actions-modal')\n || $targetEl.parents('.actions-modal.modal-in, .dialog.modal-in').length > 0\n )) {\n app.swipeout.close(Swipeout.el);\n }\n }\n });\n $$1(doc).on(app.touchEvents.start, 'li.swipeout', handleTouchStart, passiveListener);\n app.on('touchmove:active', handleTouchMove);\n app.on('touchend:passive', handleTouchEnd);\n },\n allow: true,\n el: undefined,\n open: function open() {\n var assign;\n\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n var app = this;\n var el = args[0];\n var side = args[1];\n var callback = args[2];\n if (typeof args[1] === 'function') {\n (assign = args, el = assign[0], callback = assign[1], side = assign[2]);\n }\n var $el = $$1(el).eq(0);\n\n if ($el.length === 0) { return; }\n if (!$el.hasClass('swipeout') || $el.hasClass('swipeout-opened')) { return; }\n if (!side) {\n if ($el.find('.swipeout-actions-right').length > 0) { side = 'right'; }\n else { side = 'left'; }\n }\n var $swipeoutActions = $el.find((\".swipeout-actions-\" + side));\n var $swipeoutContent = $el.find('.swipeout-content');\n if ($swipeoutActions.length === 0) { return; }\n $el.trigger('swipeout:open').addClass('swipeout-opened').removeClass('swipeout-transitioning');\n app.emit('swipeoutOpen', $el[0]);\n $swipeoutActions.addClass('swipeout-actions-opened');\n var $buttons = $swipeoutActions.children('a');\n var swipeoutActionsWidth = $swipeoutActions.outerWidth();\n var translate = side === 'right' ? -swipeoutActionsWidth : swipeoutActionsWidth;\n if ($buttons.length > 1) {\n $buttons.each(function (buttonIndex, buttonEl) {\n var $buttonEl = $$1(buttonEl);\n if (side === 'right') {\n $buttonEl.transform((\"translate3d(\" + (-buttonEl.offsetLeft) + \"px,0,0)\"));\n } else {\n $buttonEl.css('z-index', $buttons.length - buttonIndex).transform((\"translate3d(\" + (swipeoutActionsWidth - buttonEl.offsetWidth - buttonEl.offsetLeft) + \"px,0,0)\"));\n }\n });\n }\n $el.addClass('swipeout-transitioning');\n $swipeoutContent.transitionEnd(function () {\n $el.trigger('swipeout:opened');\n app.emit('swipeoutOpened', $el[0]);\n if (callback) { callback.call($el[0]); }\n });\n Utils.nextFrame(function () {\n $buttons.transform((\"translate3d(\" + translate + \"px,0,0)\"));\n $swipeoutContent.transform((\"translate3d(\" + translate + \"px,0,0)\"));\n });\n Swipeout.el = $el[0];\n },\n close: function close(el, callback) {\n var app = this;\n var $el = $$1(el).eq(0);\n if ($el.length === 0) { return; }\n if (!$el.hasClass('swipeout-opened')) { return; }\n var side = $el.find('.swipeout-actions-opened').hasClass('swipeout-actions-right') ? 'right' : 'left';\n var $swipeoutActions = $el.find('.swipeout-actions-opened').removeClass('swipeout-actions-opened');\n var $buttons = $swipeoutActions.children('a');\n var swipeoutActionsWidth = $swipeoutActions.outerWidth();\n Swipeout.allow = false;\n $el.trigger('swipeout:close');\n app.emit('swipeoutClose', $el[0]);\n $el.removeClass('swipeout-opened').addClass('swipeout-transitioning');\n\n var closeTimeout;\n function onSwipeoutClose() {\n Swipeout.allow = true;\n if ($el.hasClass('swipeout-opened')) { return; }\n $el.removeClass('swipeout-transitioning');\n $buttons.transform('');\n $el.trigger('swipeout:closed');\n app.emit('swipeoutClosed', $el[0]);\n if (callback) { callback.call($el[0]); }\n if (closeTimeout) { clearTimeout(closeTimeout); }\n }\n $el.find('.swipeout-content').transform('').transitionEnd(onSwipeoutClose);\n closeTimeout = setTimeout(onSwipeoutClose, 500);\n\n $buttons.each(function (index, buttonEl) {\n var $buttonEl = $$1(buttonEl);\n if (side === 'right') {\n $buttonEl.transform((\"translate3d(\" + (-buttonEl.offsetLeft) + \"px,0,0)\"));\n } else {\n $buttonEl.transform((\"translate3d(\" + (swipeoutActionsWidth - buttonEl.offsetWidth - buttonEl.offsetLeft) + \"px,0,0)\"));\n }\n $buttonEl.css({ left: '0px' }).removeClass('swipeout-overswipe-active');\n });\n if (Swipeout.el && Swipeout.el === $el[0]) { Swipeout.el = undefined; }\n },\n delete: function delete$1(el, callback) {\n var app = this;\n var $el = $$1(el).eq(0);\n if ($el.length === 0) { return; }\n Swipeout.el = undefined;\n $el.trigger('swipeout:delete');\n app.emit('swipeoutDelete', $el[0]);\n $el.css({ height: (($el.outerHeight()) + \"px\") });\n $el.transitionEnd(function () {\n $el.trigger('swipeout:deleted');\n app.emit('swipeoutDeleted', $el[0]);\n if (callback) { callback.call($el[0]); }\n if ($el.parents('.virtual-list').length > 0) {\n var virtualList = $el.parents('.virtual-list')[0].f7VirtualList;\n var virtualIndex = $el[0].f7VirtualListIndex;\n if (virtualList && typeof virtualIndex !== 'undefined') { virtualList.deleteItem(virtualIndex); }\n } else if (app.params.swipeout.removeElements) {\n if (app.params.swipeout.removeElementsWithTimeout) {\n setTimeout(function () {\n $el.remove();\n }, app.params.swipeout.removeElementsTimeout);\n } else {\n $el.remove();\n }\n } else {\n $el.removeClass('swipeout-deleting swipeout-transitioning');\n }\n });\n // eslint-disable-next-line\n $el[0]._clientLeft = $el[0].clientLeft;\n $el\n .addClass('swipeout-deleting swipeout-transitioning')\n .css({ height: '0px' })\n .find('.swipeout-content')\n .transform('translate3d(-100%,0,0)');\n },\n };\n var Swipeout$1 = {\n name: 'swipeout',\n params: {\n swipeout: {\n actionsNoFold: false,\n noFollow: false,\n removeElements: true,\n removeElementsWithTimeout: false,\n removeElementsTimeout: 0,\n },\n },\n create: function create() {\n var app = this;\n Utils.extend(app, {\n swipeout: {\n init: Swipeout.init.bind(app),\n open: Swipeout.open.bind(app),\n close: Swipeout.close.bind(app),\n delete: Swipeout.delete.bind(app),\n },\n });\n Object.defineProperty(app.swipeout, 'el', {\n enumerable: true,\n configurable: true,\n get: function () { return Swipeout.el; },\n set: function set(el) {\n Swipeout.el = el;\n },\n });\n Object.defineProperty(app.swipeout, 'allow', {\n enumerable: true,\n configurable: true,\n get: function () { return Swipeout.allow; },\n set: function set(allow) {\n Swipeout.allow = allow;\n },\n });\n },\n clicks: {\n '.swipeout-open': function openSwipeout($clickedEl, data) {\n if ( data === void 0 ) data = {};\n\n var app = this;\n app.swipeout.open(data.swipeout, data.side);\n },\n '.swipeout-close': function closeSwipeout($clickedEl) {\n var app = this;\n var $swipeoutEl = $clickedEl.closest('.swipeout');\n if ($swipeoutEl.length === 0) { return; }\n app.swipeout.close($swipeoutEl);\n },\n '.swipeout-delete': function deleteSwipeout($clickedEl, data) {\n if ( data === void 0 ) data = {};\n\n var app = this;\n var $swipeoutEl = $clickedEl.closest('.swipeout');\n if ($swipeoutEl.length === 0) { return; }\n var confirm = data.confirm;\n var confirmTitle = data.confirmTitle;\n if (data.confirm) {\n app.dialog.confirm(confirm, confirmTitle, function () {\n app.swipeout.delete($swipeoutEl);\n });\n } else {\n app.swipeout.delete($swipeoutEl);\n }\n },\n },\n on: {\n init: function init() {\n var app = this;\n if (!app.params.swipeout) { return; }\n app.swipeout.init();\n },\n },\n };\n\n /* eslint no-underscore-dangle: [\"error\", { \"allow\": [\"_clientLeft\"] }] */\n\n var Accordion = {\n toggleClicked: function toggleClicked($clickedEl) {\n var app = this;\n var $accordionItemEl = $clickedEl.closest('.accordion-item').eq(0);\n if (!$accordionItemEl.length) { $accordionItemEl = $clickedEl.parents('li').eq(0); }\n if ($clickedEl.parents('li').length > 1 && $clickedEl.parents('li')[0] !== $accordionItemEl[0]) { return; }\n app.accordion.toggle($accordionItemEl);\n },\n open: function open(el) {\n var app = this;\n var $el = $$1(el);\n var $list = $el.parents('.accordion-list').eq(0);\n var $contentEl = $el.children('.accordion-item-content');\n $contentEl.removeAttr('aria-hidden');\n if ($contentEl.length === 0) { $contentEl = $el.find('.accordion-item-content'); }\n if ($contentEl.length === 0) { return; }\n var $openedItem = $list.length > 0 && $el.parent().children('.accordion-item-opened');\n if ($openedItem.length > 0) {\n app.accordion.close($openedItem);\n }\n $contentEl.transitionEnd(function () {\n if ($el.hasClass('accordion-item-opened')) {\n $contentEl.transition(0);\n $contentEl.css('height', 'auto');\n $contentEl._clientLeft = $contentEl[0].clientLeft;\n $contentEl.transition('');\n $el.trigger('accordion:opened');\n app.emit('accordionOpened', $el[0]);\n } else {\n $contentEl.css('height', '');\n $el.trigger('accordion:closed');\n app.emit('accordionClosed', $el[0]);\n }\n });\n $contentEl.css('height', (($contentEl[0].scrollHeight) + \"px\"));\n $el.trigger('accordion:open');\n $el.addClass('accordion-item-opened');\n app.emit('accordionOpen', $el[0]);\n },\n close: function close(el) {\n var app = this;\n var $el = $$1(el);\n var $contentEl = $el.children('.accordion-item-content');\n if ($contentEl.length === 0) { $contentEl = $el.find('.accordion-item-content'); }\n $el.removeClass('accordion-item-opened');\n $contentEl.attr('aria-hidden', true);\n $contentEl.transition(0);\n $contentEl.css('height', (($contentEl[0].scrollHeight) + \"px\"));\n $contentEl._clientLeft = $contentEl[0].clientLeft;\n $contentEl.transition('');\n // Close\n $contentEl.transitionEnd(function () {\n if ($el.hasClass('accordion-item-opened')) {\n $contentEl.transition(0);\n $contentEl.css('height', 'auto');\n $contentEl._clientLeft = $contentEl[0].clientLeft;\n $contentEl.transition('');\n $el.trigger('accordion:opened');\n app.emit('accordionOpened', $el[0]);\n } else {\n $contentEl.css('height', '');\n $el.trigger('accordion:closed');\n app.emit('accordionClosed', $el[0]);\n }\n });\n Utils.nextFrame(function () {\n $contentEl.transition('');\n $contentEl.css('height', '');\n $el.trigger('accordion:close');\n app.emit('accordionClose');\n });\n },\n toggle: function toggle(el) {\n var app = this;\n var $el = $$1(el);\n if ($el.length === 0) { return; }\n if ($el.hasClass('accordion-item-opened')) { app.accordion.close(el); }\n else { app.accordion.open(el); }\n },\n };\n\n var Accordion$1 = {\n name: 'accordion',\n create: function create() {\n var app = this;\n Utils.extend(app, {\n accordion: {\n open: Accordion.open.bind(app),\n close: Accordion.close.bind(app),\n toggle: Accordion.toggle.bind(app),\n },\n });\n },\n clicks: {\n '.accordion-item .item-link, .accordion-item-toggle, .links-list.accordion-list > ul > li > a': function open($clickedEl) {\n var app = this;\n Accordion.toggleClicked.call(app, $clickedEl);\n },\n },\n };\n\n var VirtualList = (function (Framework7Class$$1) {\n function VirtualList(app, params) {\n if ( params === void 0 ) params = {};\n\n Framework7Class$$1.call(this, params, [app]);\n var vl = this;\n\n var defaults = {\n cols: 1,\n height: app.theme === 'md' ? 48 : 44,\n cache: true,\n dynamicHeightBufferSize: 1,\n showFilteredItemsOnly: false,\n renderExternal: undefined,\n setListHeight: true,\n searchByItem: undefined,\n searchAll: undefined,\n itemTemplate: undefined,\n ul: null,\n createUl: true,\n renderItem: function renderItem(item) {\n return (\"\\n \\n \\n \\n \").trim();\n },\n on: {},\n };\n\n // Extend defaults with modules params\n vl.useModulesParams(defaults);\n\n vl.params = Utils.extend(defaults, params);\n if (vl.params.height === undefined || !vl.params.height) {\n vl.params.height = app.theme === 'md' ? 48 : 44;\n }\n\n vl.$el = $$1(params.el);\n vl.el = vl.$el[0];\n\n if (vl.$el.length === 0) { return undefined; }\n vl.$el[0].f7VirtualList = vl;\n\n vl.items = vl.params.items;\n if (vl.params.showFilteredItemsOnly) {\n vl.filteredItems = [];\n }\n if (vl.params.itemTemplate) {\n if (typeof vl.params.itemTemplate === 'string') { vl.renderItem = Template7.compile(vl.params.itemTemplate); }\n else if (typeof vl.params.itemTemplate === 'function') { vl.renderItem = vl.params.itemTemplate; }\n } else if (vl.params.renderItem) {\n vl.renderItem = vl.params.renderItem;\n }\n vl.$pageContentEl = vl.$el.parents('.page-content');\n vl.pageContentEl = vl.$pageContentEl[0];\n\n // Bad scroll\n if (typeof vl.params.updatableScroll !== 'undefined') {\n vl.updatableScroll = vl.params.updatableScroll;\n } else {\n vl.updatableScroll = true;\n if (Device.ios && Device.osVersion.split('.')[0] < 8) {\n vl.updatableScroll = false;\n }\n }\n\n // Append \\n \";\n return searchbarHTML;\n };\n\n SmartSelect.prototype.renderItem = function renderItem (item, index) {\n var ss = this;\n if (ss.params.renderItem) { return ss.params.renderItem.call(ss, item, index); }\n var itemHtml;\n if (item.isLabel) {\n itemHtml = \"\" + (item.groupLabel) + \" \";\n } else {\n itemHtml = \"\\n \\n \\n \\n \\n \" + (item.hasMedia ? (\"\\n \\n \") : '') + \"\\n \\n
\" + (item.text) + \"
\\n
\\n \\n \\n \";\n }\n return itemHtml;\n };\n\n SmartSelect.prototype.renderItems = function renderItems () {\n var ss = this;\n if (ss.params.renderItems) { return ss.params.renderItems.call(ss, ss.items); }\n var itemsHtml = \"\\n \" + (ss.items.map(function (item, index) { return (\"\" + (ss.renderItem(item, index))); }).join('')) + \"\\n \";\n return itemsHtml;\n };\n\n SmartSelect.prototype.renderPage = function renderPage () {\n var ss = this;\n if (ss.params.renderPage) { return ss.params.renderPage.call(ss, ss.items); }\n var pageTitle = ss.params.pageTitle;\n if (typeof pageTitle === 'undefined') {\n pageTitle = ss.$el.find('.item-title').text().trim();\n }\n var pageHtml = \"\\n \\n
\\n
\\n
\\n \" + (pageTitle ? (\"
\" + pageTitle + \"
\") : '') + \"\\n \" + (ss.params.searchbar ? (\"
\" + (ss.renderSearchbar()) + \"
\") : '') + \"\\n
\\n
\\n \" + (ss.params.searchbar ? '
' : '') + \"\\n
\\n
\\n
\" + (!ss.params.virtualList && ss.renderItems(ss.items)) + \" \\n
\\n
\\n
\\n \";\n return pageHtml;\n };\n\n SmartSelect.prototype.renderPopup = function renderPopup () {\n var ss = this;\n if (ss.params.renderPopup) { return ss.params.renderPopup.call(ss, ss.items); }\n var pageTitle = ss.params.pageTitle;\n if (typeof pageTitle === 'undefined') {\n pageTitle = ss.$el.find('.item-title').text().trim();\n }\n var popupHtml = \"\\n \\n \";\n return popupHtml;\n };\n\n SmartSelect.prototype.renderSheet = function renderSheet () {\n var ss = this;\n if (ss.params.renderSheet) { return ss.params.renderSheet.call(ss, ss.items); }\n var sheetHtml = \"\\n \\n
\\n
\\n
\\n
\\n
\" + (!ss.params.virtualList && ss.renderItems(ss.items)) + \" \\n
\\n
\\n
\\n
\\n \";\n return sheetHtml;\n };\n\n SmartSelect.prototype.renderPopover = function renderPopover () {\n var ss = this;\n if (ss.params.renderPopover) { return ss.params.renderPopover.call(ss, ss.items); }\n var popoverHtml = \"\\n \\n
\\n
\\n
\" + (!ss.params.virtualList && ss.renderItems(ss.items)) + \" \\n
\\n
\\n
\\n \";\n return popoverHtml;\n };\n\n SmartSelect.prototype.onOpen = function onOpen (type, containerEl) {\n var ss = this;\n var app = ss.app;\n var $containerEl = $$1(containerEl);\n ss.$containerEl = $containerEl;\n ss.openedIn = type;\n ss.opened = true;\n\n // Init VL\n if (ss.params.virtualList) {\n ss.vl = app.virtualList.create({\n el: $containerEl.find('.virtual-list'),\n items: ss.items,\n renderItem: ss.renderItem.bind(ss),\n height: ss.params.virtualListHeight,\n searchByItem: function searchByItem(query, item) {\n if (item.text && item.text.toLowerCase().indexOf(query.trim().toLowerCase()) >= 0) { return true; }\n return false;\n },\n });\n }\n\n // Init SB\n if (ss.params.searchbar) {\n var $searchbarEl = $containerEl.find('.searchbar');\n if (type === 'page' && app.theme === 'ios') {\n $searchbarEl = $$1(app.navbar.getElByPage($containerEl)).find('.searchbar');\n }\n ss.searchbar = app.searchbar.create({\n el: $searchbarEl,\n backdropEl: $containerEl.find('.searchbar-backdrop'),\n searchContainer: (\".smart-select-list-\" + (ss.id)),\n searchIn: '.item-title',\n });\n }\n\n // Check for max length\n if (ss.maxLength) {\n ss.checkMaxLength();\n }\n\n // Close on select\n if (ss.params.closeOnSelect) {\n ss.$containerEl.find((\"input[type=\\\"radio\\\"][name=\\\"\" + (ss.inputName) + \"\\\"]:checked\")).parents('label').once('click', function () {\n ss.close();\n });\n }\n\n // Attach input events\n ss.attachInputsEvents();\n\n ss.$el.trigger('smartselect:open', ss);\n ss.emit('local::open smartSelectOpen', ss);\n };\n\n SmartSelect.prototype.onOpened = function onOpened () {\n var ss = this;\n\n ss.$el.trigger('smartselect:opened', ss);\n ss.emit('local::opened smartSelectOpened', ss);\n };\n\n SmartSelect.prototype.onClose = function onClose () {\n var ss = this;\n if (ss.destroyed) { return; }\n\n // Destroy VL\n if (ss.vl && ss.vl.destroy) {\n ss.vl.destroy();\n ss.vl = null;\n delete ss.vl;\n }\n\n // Destroy SB\n if (ss.searchbar && ss.searchbar.destroy) {\n ss.searchbar.destroy();\n ss.searchbar = null;\n delete ss.searchbar;\n }\n // Detach events\n ss.detachInputsEvents();\n\n ss.$el.trigger('smartselect:close', ss);\n ss.emit('local::close smartSelectClose', ss);\n };\n\n SmartSelect.prototype.onClosed = function onClosed () {\n var ss = this;\n if (ss.destroyed) { return; }\n ss.opened = false;\n ss.$containerEl = null;\n delete ss.$containerEl;\n\n ss.$el.trigger('smartselect:closed', ss);\n ss.emit('local::closed smartSelectClosed', ss);\n };\n\n SmartSelect.prototype.openPage = function openPage () {\n var ss = this;\n if (ss.opened) { return ss; }\n ss.getItemsData();\n var pageHtml = ss.renderPage(ss.items);\n\n ss.view.router.navigate({\n url: ss.url,\n route: {\n content: pageHtml,\n path: ss.url,\n on: {\n pageBeforeIn: function pageBeforeIn(e, page) {\n ss.onOpen('page', page.el);\n },\n pageAfterIn: function pageAfterIn(e, page) {\n ss.onOpened('page', page.el);\n },\n pageBeforeOut: function pageBeforeOut(e, page) {\n ss.onClose('page', page.el);\n },\n pageAfterOut: function pageAfterOut(e, page) {\n ss.onClosed('page', page.el);\n },\n },\n },\n });\n return ss;\n };\n\n SmartSelect.prototype.openPopup = function openPopup () {\n var ss = this;\n if (ss.opened) { return ss; }\n ss.getItemsData();\n var popupHtml = ss.renderPopup(ss.items);\n\n var popupParams = {\n content: popupHtml,\n on: {\n popupOpen: function popupOpen(popup) {\n ss.onOpen('popup', popup.el);\n },\n popupOpened: function popupOpened(popup) {\n ss.onOpened('popup', popup.el);\n },\n popupClose: function popupClose(popup) {\n ss.onClose('popup', popup.el);\n },\n popupClosed: function popupClosed(popup) {\n ss.onClosed('popup', popup.el);\n },\n },\n };\n\n if (ss.params.routableModals) {\n ss.view.router.navigate({\n url: ss.url,\n route: {\n path: ss.url,\n popup: popupParams,\n },\n });\n } else {\n ss.modal = ss.app.popup.create(popupParams).open();\n }\n return ss;\n };\n\n SmartSelect.prototype.openSheet = function openSheet () {\n var ss = this;\n if (ss.opened) { return ss; }\n ss.getItemsData();\n var sheetHtml = ss.renderSheet(ss.items);\n\n var sheetParams = {\n content: sheetHtml,\n backdrop: false,\n scrollToEl: ss.$el,\n closeByOutsideClick: true,\n on: {\n sheetOpen: function sheetOpen(sheet) {\n ss.onOpen('sheet', sheet.el);\n },\n sheetOpened: function sheetOpened(sheet) {\n ss.onOpened('sheet', sheet.el);\n },\n sheetClose: function sheetClose(sheet) {\n ss.onClose('sheet', sheet.el);\n },\n sheetClosed: function sheetClosed(sheet) {\n ss.onClosed('sheet', sheet.el);\n },\n },\n };\n\n if (ss.params.routableModals) {\n ss.view.router.navigate({\n url: ss.url,\n route: {\n path: ss.url,\n sheet: sheetParams,\n },\n });\n } else {\n ss.modal = ss.app.sheet.create(sheetParams).open();\n }\n return ss;\n };\n\n SmartSelect.prototype.openPopover = function openPopover () {\n var ss = this;\n if (ss.opened) { return ss; }\n ss.getItemsData();\n var popoverHtml = ss.renderPopover(ss.items);\n var popoverParams = {\n content: popoverHtml,\n targetEl: ss.$el,\n on: {\n popoverOpen: function popoverOpen(popover) {\n ss.onOpen('popover', popover.el);\n },\n popoverOpened: function popoverOpened(popover) {\n ss.onOpened('popover', popover.el);\n },\n popoverClose: function popoverClose(popover) {\n ss.onClose('popover', popover.el);\n },\n popoverClosed: function popoverClosed(popover) {\n ss.onClosed('popover', popover.el);\n },\n },\n };\n if (ss.params.routableModals) {\n ss.view.router.navigate({\n url: ss.url,\n route: {\n path: ss.url,\n popover: popoverParams,\n },\n });\n } else {\n ss.modal = ss.app.popover.create(popoverParams).open();\n }\n return ss;\n };\n\n SmartSelect.prototype.open = function open (type) {\n var ss = this;\n if (ss.opened) { return ss; }\n var openIn = type || ss.params.openIn;\n ss[(\"open\" + (openIn.split('').map(function (el, index) {\n if (index === 0) { return el.toUpperCase(); }\n return el;\n }).join('')))]();\n return ss;\n };\n\n SmartSelect.prototype.close = function close () {\n var ss = this;\n if (!ss.opened) { return ss; }\n if (ss.params.routableModals || ss.openedIn === 'page') {\n ss.view.router.back();\n } else {\n ss.modal.once('modalClosed', function () {\n Utils.nextTick(function () {\n ss.modal.destroy();\n delete ss.modal;\n });\n });\n ss.modal.close();\n }\n return ss;\n };\n\n SmartSelect.prototype.init = function init () {\n var ss = this;\n ss.attachEvents();\n ss.setValue();\n };\n\n SmartSelect.prototype.destroy = function destroy () {\n var ss = this;\n ss.emit('local::beforeDestroy smartSelectBeforeDestroy', ss);\n ss.$el.trigger('smartselect:beforedestroy', ss);\n ss.detachEvents();\n delete ss.$el[0].f7SmartSelect;\n Utils.deleteProps(ss);\n ss.destroyed = true;\n };\n\n return SmartSelect;\n }(Framework7Class));\n\n var SmartSelect$1 = {\n name: 'smartSelect',\n params: {\n smartSelect: {\n el: undefined,\n valueEl: undefined,\n openIn: 'page', // or 'popup' or 'sheet' or 'popover'\n pageTitle: undefined,\n pageBackLinkText: 'Back',\n popupCloseLinkText: 'Close',\n sheetCloseLinkText: 'Done',\n searchbar: false,\n searchbarPlaceholder: 'Search',\n searchbarDisableText: 'Cancel',\n closeOnSelect: false,\n virtualList: false,\n virtualListHeight: undefined,\n formColorTheme: undefined,\n navbarColorTheme: undefined,\n routableModals: true,\n url: 'select/',\n /*\n Custom render functions\n */\n renderPage: undefined,\n renderPopup: undefined,\n renderSheet: undefined,\n renderPopover: undefined,\n renderItems: undefined,\n renderItem: undefined,\n renderSearchbar: undefined,\n },\n },\n static: {\n SmartSelect: SmartSelect,\n },\n create: function create() {\n var app = this;\n app.smartSelect = Utils.extend(\n ConstructorMethods({\n defaultSelector: '.smart-select',\n constructor: SmartSelect,\n app: app,\n domProp: 'f7SmartSelect',\n }),\n {\n open: function open(smartSelectEl) {\n var ss = app.smartSelect.get(smartSelectEl);\n if (ss && ss.open) { return ss.open(); }\n return undefined;\n },\n close: function close(smartSelectEl) {\n var ss = app.smartSelect.get(smartSelectEl);\n if (ss && ss.close) { return ss.close(); }\n return undefined;\n },\n }\n );\n },\n\n on: {\n tabMounted: function tabMounted(tabEl) {\n var app = this;\n $$1(tabEl).find('.smart-select-init').each(function (index, smartSelectEl) {\n app.smartSelect.create(Utils.extend({ el: smartSelectEl }, $$1(smartSelectEl).dataset()));\n });\n },\n tabBeforeRemove: function tabBeforeRemove(tabEl) {\n $$1(tabEl).find('.smart-select-init').each(function (index, smartSelectEl) {\n if (smartSelectEl.f7SmartSelect && smartSelectEl.f7SmartSelect.destroy) {\n smartSelectEl.f7SmartSelect.destroy();\n }\n });\n },\n pageInit: function pageInit(page) {\n var app = this;\n page.$el.find('.smart-select-init').each(function (index, smartSelectEl) {\n app.smartSelect.create(Utils.extend({ el: smartSelectEl }, $$1(smartSelectEl).dataset()));\n });\n },\n pageBeforeRemove: function pageBeforeRemove(page) {\n page.$el.find('.smart-select-init').each(function (index, smartSelectEl) {\n if (smartSelectEl.f7SmartSelect && smartSelectEl.f7SmartSelect.destroy) {\n smartSelectEl.f7SmartSelect.destroy();\n }\n });\n },\n },\n clicks: {\n '.smart-select': function open($clickedEl, data) {\n var app = this;\n if (!$clickedEl[0].f7SmartSelect) {\n var ss = app.smartSelect.create(Utils.extend({ el: $clickedEl }, data));\n ss.open();\n }\n },\n },\n };\n\n var Grid = {\n name: 'grid',\n };\n\n var commonjsGlobal = typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\n\n function unwrapExports (x) {\n \treturn x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;\n }\n\n function createCommonjsModule(fn, module) {\n \treturn module = { exports: {} }, fn(module, module.exports), module.exports;\n }\n\n var idate_min = createCommonjsModule(function (module, exports) {\n !function(t,e){module.exports=e();}(\"undefined\"!=typeof self?self:commonjsGlobal,function(){return function(t){function e(r){if(n[r]){ return n[r].exports; }var o=n[r]={i:r,l:!1,exports:{}};return t[r].call(o.exports,o,o.exports,e),o.l=!0,o.exports}var n={};return e.m=t,e.c=n,e.d=function(t,n,r){e.o(t,n)||Object.defineProperty(t,n,{configurable:!1,enumerable:!0,get:r});},e.n=function(t){var n=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(n,\"a\",n),n},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p=\"\",e(e.s=0)}([function(t,e,n){function r(t){if(Array.isArray(t)){for(var e=0,n=Array(t.length);e0&&void 0!==arguments[0])||arguments[0],e=function(t){return 1===t.toString().length?\"0\"+t:t.toString()},n=e(this.getHours())+\":\"+e(this.getMinutes())+\":\"+e(this.getSeconds());return t?function(t){return t.replace(/./g,function(t){return d[t]||t})}(l[this.getDay()]+\" \"+this.getDate()+\" \"+h[this.getMonth()]+\" \"+this.getFullYear()+\" ساعت \"+n):f[this.getDay()]+\" \"+this.getDate()+\" \"+g[this.getMonth()]+\" \"+this.getFullYear()+\" \"+n}}]),e}(Date);e.default=y,t.exports=e.default;},function(t,e,n){function r(t,e,n){return \"[object Date]\"===Object.prototype.toString.call(t)&&(n=t.getDate(),e=t.getMonth()+1,t=t.getFullYear()),c(f(t,e,n))}function o(t,e,n){return l(s(t,e,n))}function a(t){return 0===u(t).leap}function i(t,e){return e<=6?31:e<=11?30:a(t)?30:29}function u(t){var e,n,r,o,a,i,u,s=[-61,9,38,199,426,686,756,818,1111,1181,1210,1635,2060,2097,2192,2262,2324,2394,2456,3178],c=s.length,f=t+621,l=-14,d=s[0];if(t=s[c-1]){ throw new Error(\"Invalid Jalaali year \"+t); }for(u=1;u=0){if(r<=185){ return n=1+g(r,31),e=h(r,31)+1,{jy:a,jm:n,jd:e}; }r-=186;}else { a-=1,r+=179,1===i.leap&&(r+=1); }return n=7+g(r,30),e=h(r,30)+1,{jy:a,jm:n,jd:e}}function f(t,e,n){var r=g(1461*(t+g(e-8,6)+100100),4)+g(153*h(e+9,12)+2,5)+n-34840408;return r=r-g(3*g(t+100100+g(e-8,6),100),4)+752}function l(t){var e,n,r,o,a;return e=4*t+139361631,e=e+4*g(3*g(4*t+183187720,146097),4)-3908,n=5*g(h(e,1461),4)+308,r=g(h(n,153),5)+1,o=h(g(n,153),12)+1,a=g(e,1461)-100100+g(8-o,6),{gy:a,gm:o,gd:r}}function g(t,e){return ~~(t/e)}function h(t,e){return t-~~(t/e)*e}function d(t,e,n){for(e>11&&(t+=Math.floor(e/12),e%=12);e<0;){ t-=1,e+=12; }for(;n>i(t,e+1);){ e=11!==e?e+1:0,t=0===e?t+1:t,n-=i(t,e+1); }for(;n<=0;){ e=0!==e?e-1:11,t=11===e?t-1:t,n+=i(t,e+1); }return [t,e||0,n||1]}Object.defineProperty(e,\"__esModule\",{value:!0}),e.toJalaali=r,e.toGregorian=o,e.monthLength=i,e.fixDate=d;}])});\n });\n\n var IDate = unwrapExports(idate_min);\n var idate_min_1 = idate_min.IDate;\n\n var Calendar = (function (Framework7Class$$1) {\n function Calendar(app, params) {\n if ( params === void 0 ) params = {};\n\n Framework7Class$$1.call(this, params, [app]);\n var calendar = this;\n\n calendar.params = Utils.extend({}, app.params.calendar, params);\n\n if (calendar.params.calendarType === 'jalali') {\n Object.keys(calendar.params.jalali).forEach(function (param) {\n if (!params[param]) {\n calendar.params[param] = calendar.params.jalali[param];\n }\n });\n }\n\n if (calendar.params.calendarType === 'jalali') {\n calendar.DateHandleClass = IDate;\n } else {\n calendar.DateHandleClass = Date;\n }\n\n var $containerEl;\n if (calendar.params.containerEl) {\n $containerEl = $$1(calendar.params.containerEl);\n if ($containerEl.length === 0) { return calendar; }\n }\n\n var $inputEl;\n if (calendar.params.inputEl) {\n $inputEl = $$1(calendar.params.inputEl);\n }\n\n var view;\n if ($inputEl) {\n view = $inputEl.parents('.view').length && $inputEl.parents('.view')[0].f7View;\n }\n if (!view) { view = app.views.main; }\n\n var isHorizontal = calendar.params.direction === 'horizontal';\n\n var inverter = 1;\n if (isHorizontal) {\n inverter = app.rtl ? -1 : 1;\n }\n\n Utils.extend(calendar, {\n app: app,\n $containerEl: $containerEl,\n containerEl: $containerEl && $containerEl[0],\n inline: $containerEl && $containerEl.length > 0,\n $inputEl: $inputEl,\n inputEl: $inputEl && $inputEl[0],\n initialized: false,\n opened: false,\n url: calendar.params.url,\n isHorizontal: isHorizontal,\n inverter: inverter,\n view: view,\n animating: false,\n });\n\n function onInputClick() {\n calendar.open();\n }\n function onInputFocus(e) {\n e.preventDefault();\n }\n function onHtmlClick(e) {\n var $targetEl = $$1(e.target);\n if (calendar.isPopover()) { return; }\n if (!calendar.opened || calendar.closing) { return; }\n if ($targetEl.closest('[class*=\"backdrop\"]').length) { return; }\n if ($inputEl && $inputEl.length > 0) {\n if ($targetEl[0] !== $inputEl[0] && $targetEl.closest('.sheet-modal, .calendar-modal').length === 0) {\n calendar.close();\n }\n } else if ($$1(e.target).closest('.sheet-modal, .calendar-modal').length === 0) {\n calendar.close();\n }\n }\n\n // Events\n Utils.extend(calendar, {\n attachInputEvents: function attachInputEvents() {\n calendar.$inputEl.on('click', onInputClick);\n if (calendar.params.inputReadOnly) {\n calendar.$inputEl.on('focus mousedown', onInputFocus);\n }\n },\n detachInputEvents: function detachInputEvents() {\n calendar.$inputEl.off('click', onInputClick);\n if (calendar.params.inputReadOnly) {\n calendar.$inputEl.off('focus mousedown', onInputFocus);\n }\n },\n attachHtmlEvents: function attachHtmlEvents() {\n app.on('click', onHtmlClick);\n },\n detachHtmlEvents: function detachHtmlEvents() {\n app.off('click', onHtmlClick);\n },\n });\n calendar.attachCalendarEvents = function attachCalendarEvents() {\n var allowItemClick = true;\n var isTouched;\n var isMoved;\n var touchStartX;\n var touchStartY;\n var touchCurrentX;\n var touchCurrentY;\n var touchStartTime;\n var touchEndTime;\n var currentTranslate;\n var wrapperWidth;\n var wrapperHeight;\n var percentage;\n var touchesDiff;\n var isScrolling;\n\n var $el = calendar.$el;\n var $wrapperEl = calendar.$wrapperEl;\n\n function handleTouchStart(e) {\n if (isMoved || isTouched) { return; }\n isTouched = true;\n touchStartX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touchCurrentX = touchStartX;\n touchStartY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n touchCurrentY = touchStartY;\n touchStartTime = (new calendar.DateHandleClass()).getTime();\n percentage = 0;\n allowItemClick = true;\n isScrolling = undefined;\n currentTranslate = calendar.monthsTranslate;\n }\n function handleTouchMove(e) {\n if (!isTouched) { return; }\n var isH = calendar.isHorizontal;\n\n touchCurrentX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n touchCurrentY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n if (typeof isScrolling === 'undefined') {\n isScrolling = !!(isScrolling || Math.abs(touchCurrentY - touchStartY) > Math.abs(touchCurrentX - touchStartX));\n }\n if (isH && isScrolling) {\n isTouched = false;\n return;\n }\n e.preventDefault();\n if (calendar.animating) {\n isTouched = false;\n return;\n }\n allowItemClick = false;\n if (!isMoved) {\n // First move\n isMoved = true;\n wrapperWidth = $wrapperEl[0].offsetWidth;\n wrapperHeight = $wrapperEl[0].offsetHeight;\n $wrapperEl.transition(0);\n }\n\n touchesDiff = isH ? touchCurrentX - touchStartX : touchCurrentY - touchStartY;\n percentage = touchesDiff / (isH ? wrapperWidth : wrapperHeight);\n currentTranslate = ((calendar.monthsTranslate * calendar.inverter) + percentage) * 100;\n\n // Transform wrapper\n $wrapperEl.transform((\"translate3d(\" + (isH ? currentTranslate : 0) + \"%, \" + (isH ? 0 : currentTranslate) + \"%, 0)\"));\n }\n function handleTouchEnd() {\n if (!isTouched || !isMoved) {\n isTouched = false;\n isMoved = false;\n return;\n }\n isTouched = false;\n isMoved = false;\n\n touchEndTime = new calendar.DateHandleClass().getTime();\n if (touchEndTime - touchStartTime < 300) {\n if (Math.abs(touchesDiff) < 10) {\n calendar.resetMonth();\n } else if (touchesDiff >= 10) {\n if (app.rtl) { calendar.nextMonth(); }\n else { calendar.prevMonth(); }\n } else if (app.rtl) { calendar.prevMonth(); }\n else { calendar.nextMonth(); }\n } else if (percentage <= -0.5) {\n if (app.rtl) { calendar.prevMonth(); }\n else { calendar.nextMonth(); }\n } else if (percentage >= 0.5) {\n if (app.rtl) { calendar.nextMonth(); }\n else { calendar.prevMonth(); }\n } else {\n calendar.resetMonth();\n }\n\n // Allow click\n setTimeout(function () {\n allowItemClick = true;\n }, 100);\n }\n\n function handleDayClick(e) {\n if (!allowItemClick) { return; }\n var $dayEl = $$1(e.target).parents('.calendar-day');\n if ($dayEl.length === 0 && $$1(e.target).hasClass('calendar-day')) {\n $dayEl = $$1(e.target);\n }\n if ($dayEl.length === 0) { return; }\n if ($dayEl.hasClass('calendar-day-disabled')) { return; }\n if (!calendar.params.rangePicker) {\n if ($dayEl.hasClass('calendar-day-next')) { calendar.nextMonth(); }\n if ($dayEl.hasClass('calendar-day-prev')) { calendar.prevMonth(); }\n }\n var dateYear = parseInt($dayEl.attr('data-year'), 10);\n var dateMonth = parseInt($dayEl.attr('data-month'), 10);\n var dateDay = parseInt($dayEl.attr('data-day'), 10);\n calendar.emit(\n 'local::dayClick calendarDayClick',\n calendar,\n $dayEl[0],\n dateYear,\n dateMonth,\n dateDay\n );\n if (!$dayEl.hasClass('calendar-day-selected') || calendar.params.multiple || calendar.params.rangePicker) {\n calendar.addValue(new calendar.DateHandleClass(dateYear, dateMonth, dateDay, 0, 0, 0));\n }\n if (calendar.params.closeOnSelect) {\n if (\n (calendar.params.rangePicker && calendar.value.length === 2)\n || !calendar.params.rangePicker\n ) {\n calendar.close();\n }\n }\n }\n\n function onNextMonthClick() {\n calendar.nextMonth();\n }\n\n function onPrevMonthClick() {\n calendar.prevMonth();\n }\n\n function onNextYearClick() {\n calendar.nextYear();\n }\n\n function onPrevYearClick() {\n calendar.prevYear();\n }\n\n var passiveListener = app.touchEvents.start === 'touchstart' && app.support.passiveListener ? { passive: true, capture: false } : false;\n // Selectors clicks\n $el.find('.calendar-prev-month-button').on('click', onPrevMonthClick);\n $el.find('.calendar-next-month-button').on('click', onNextMonthClick);\n $el.find('.calendar-prev-year-button').on('click', onPrevYearClick);\n $el.find('.calendar-next-year-button').on('click', onNextYearClick);\n // Day clicks\n $wrapperEl.on('click', handleDayClick);\n // Touch events\n {\n if (calendar.params.touchMove) {\n $wrapperEl.on(app.touchEvents.start, handleTouchStart, passiveListener);\n app.on('touchmove:active', handleTouchMove);\n app.on('touchend:passive', handleTouchEnd);\n }\n }\n\n calendar.detachCalendarEvents = function detachCalendarEvents() {\n $el.find('.calendar-prev-month-button').off('click', onPrevMonthClick);\n $el.find('.calendar-next-month-button').off('click', onNextMonthClick);\n $el.find('.calendar-prev-year-button').off('click', onPrevYearClick);\n $el.find('.calendar-next-year-button').off('click', onNextYearClick);\n $wrapperEl.off('click', handleDayClick);\n {\n if (calendar.params.touchMove) {\n $wrapperEl.off(app.touchEvents.start, handleTouchStart, passiveListener);\n app.off('touchmove:active', handleTouchMove);\n app.off('touchend:passive', handleTouchEnd);\n }\n }\n };\n };\n\n calendar.init();\n\n return calendar;\n }\n\n if ( Framework7Class$$1 ) Calendar.__proto__ = Framework7Class$$1;\n Calendar.prototype = Object.create( Framework7Class$$1 && Framework7Class$$1.prototype );\n Calendar.prototype.constructor = Calendar;\n // eslint-disable-next-line\n Calendar.prototype.normalizeDate = function normalizeDate (date) {\n var calendar = this;\n var d = new calendar.DateHandleClass(date);\n return new calendar.DateHandleClass(d.getFullYear(), d.getMonth(), d.getDate());\n };\n\n Calendar.prototype.normalizeValues = function normalizeValues (values) {\n var calendar = this;\n var newValues = [];\n if (values && Array.isArray(values)) {\n newValues = values.map(function (val) { return calendar.normalizeDate(val); });\n }\n return newValues;\n };\n\n Calendar.prototype.initInput = function initInput () {\n var calendar = this;\n if (!calendar.$inputEl) { return; }\n if (calendar.params.inputReadOnly) { calendar.$inputEl.prop('readOnly', true); }\n };\n\n Calendar.prototype.isPopover = function isPopover () {\n var calendar = this;\n var app = calendar.app;\n var modal = calendar.modal;\n var params = calendar.params;\n if (params.openIn === 'sheet') { return false; }\n if (modal && modal.type !== 'popover') { return false; }\n\n if (!calendar.inline && calendar.inputEl) {\n if (params.openIn === 'popover') { return true; }\n if (app.device.ios) {\n return !!app.device.ipad;\n }\n if (app.width >= 768) {\n return true;\n }\n }\n return false;\n };\n\n Calendar.prototype.formatDate = function formatDate (d) {\n var calendar = this;\n var date = new calendar.DateHandleClass(d);\n var year = date.getFullYear();\n var month = date.getMonth();\n var month1 = month + 1;\n var day = date.getDate();\n var weekDay = date.getDay();\n var ref = calendar.params;\n var dateFormat = ref.dateFormat;\n var monthNames = ref.monthNames;\n var monthNamesShort = ref.monthNamesShort;\n var dayNames = ref.dayNames;\n var dayNamesShort = ref.dayNamesShort;\n\n return dateFormat\n .replace(/yyyy/g, year)\n .replace(/yy/g, String(year).substring(2))\n .replace(/mm/g, month1 < 10 ? (\"0\" + month1) : month1)\n .replace(/m(\\W+)/g, (month1 + \"$1\"))\n .replace(/MM/g, monthNames[month])\n .replace(/M(\\W+)/g, ((monthNamesShort[month]) + \"$1\"))\n .replace(/dd/g, day < 10 ? (\"0\" + day) : day)\n .replace(/d(\\W+)/g, (day + \"$1\"))\n .replace(/DD/g, dayNames[weekDay])\n .replace(/D(\\W+)/g, ((dayNamesShort[weekDay]) + \"$1\"));\n };\n\n Calendar.prototype.formatValue = function formatValue () {\n var calendar = this;\n var value = calendar.value;\n if (calendar.params.formatValue) {\n return calendar.params.formatValue.call(calendar, value);\n }\n return value\n .map(function (v) { return calendar.formatDate(v); })\n .join(calendar.params.rangePicker ? ' - ' : ', ');\n };\n\n Calendar.prototype.addValue = function addValue (newValue) {\n var calendar = this;\n var ref = calendar.params;\n var multiple = ref.multiple;\n var rangePicker = ref.rangePicker;\n var rangePickerMinDays = ref.rangePickerMinDays;\n var rangePickerMaxDays = ref.rangePickerMaxDays;\n if (multiple) {\n if (!calendar.value) { calendar.value = []; }\n var inValuesIndex;\n for (var i = 0; i < calendar.value.length; i += 1) {\n if (new calendar.DateHandleClass(newValue).getTime() === new calendar.DateHandleClass(calendar.value[i]).getTime()) {\n inValuesIndex = i;\n }\n }\n if (typeof inValuesIndex === 'undefined') {\n calendar.value.push(newValue);\n } else {\n calendar.value.splice(inValuesIndex, 1);\n }\n calendar.updateValue();\n } else if (rangePicker) {\n if (!calendar.value) { calendar.value = []; }\n if (calendar.value.length === 2 || calendar.value.length === 0) {\n calendar.value = [];\n }\n\n if ((calendar.value.length === 0\n || ((Math.abs(calendar.value[0].getTime() - newValue.getTime()) >= (rangePickerMinDays - 1) * 60 * 60 * 24 * 1000) && (rangePickerMaxDays === 0 || Math.abs(calendar.value[0].getTime() - newValue.getTime()) <= (rangePickerMaxDays - 1) * 60 * 60 * 24 * 1000)))) { calendar.value.push(newValue); }\n else { calendar.value = []; }\n\n calendar.value.sort(function (a, b) { return a - b; });\n calendar.updateValue();\n } else {\n calendar.value = [newValue];\n calendar.updateValue();\n }\n };\n\n Calendar.prototype.setValue = function setValue (values) {\n var calendar = this;\n calendar.value = values;\n calendar.updateValue();\n };\n\n Calendar.prototype.getValue = function getValue () {\n var calendar = this;\n return calendar.value;\n };\n\n Calendar.prototype.updateValue = function updateValue (onlyHeader) {\n var calendar = this;\n var $el = calendar.$el;\n var $wrapperEl = calendar.$wrapperEl;\n var $inputEl = calendar.$inputEl;\n var value = calendar.value;\n var params = calendar.params;\n var i;\n if ($el && $el.length > 0) {\n $wrapperEl.find('.calendar-day-selected').removeClass('calendar-day-selected');\n var valueDate;\n if (params.rangePicker && value.length === 2) {\n for (i = new calendar.DateHandleClass(value[0]).getTime(); i <= new calendar.DateHandleClass(value[1]).getTime(); i += 24 * 60 * 60 * 1000) {\n valueDate = new calendar.DateHandleClass(i);\n $wrapperEl.find((\".calendar-day[data-date=\\\"\" + (valueDate.getFullYear()) + \"-\" + (valueDate.getMonth()) + \"-\" + (valueDate.getDate()) + \"\\\"]\")).addClass('calendar-day-selected');\n }\n } else {\n for (i = 0; i < calendar.value.length; i += 1) {\n valueDate = new calendar.DateHandleClass(value[i]);\n $wrapperEl.find((\".calendar-day[data-date=\\\"\" + (valueDate.getFullYear()) + \"-\" + (valueDate.getMonth()) + \"-\" + (valueDate.getDate()) + \"\\\"]\")).addClass('calendar-day-selected');\n }\n }\n }\n if (!onlyHeader) {\n calendar.emit('local::change calendarChange', calendar, value);\n }\n\n\n if (($inputEl && $inputEl.length) || params.header) {\n var inputValue = calendar.formatValue(value);\n if (params.header && $el && $el.length) {\n $el.find('.calendar-selected-date').text(inputValue);\n }\n if ($inputEl && $inputEl.length && !onlyHeader) {\n $inputEl.val(inputValue);\n $inputEl.trigger('change');\n }\n }\n };\n\n Calendar.prototype.updateCurrentMonthYear = function updateCurrentMonthYear (dir) {\n var calendar = this;\n var $months = calendar.$months;\n var $el = calendar.$el;\n var params = calendar.params;\n if (typeof dir === 'undefined') {\n calendar.currentMonth = parseInt($months.eq(1).attr('data-month'), 10);\n calendar.currentYear = parseInt($months.eq(1).attr('data-year'), 10);\n } else {\n calendar.currentMonth = parseInt($months.eq(dir === 'next' ? ($months.length - 1) : 0).attr('data-month'), 10);\n calendar.currentYear = parseInt($months.eq(dir === 'next' ? ($months.length - 1) : 0).attr('data-year'), 10);\n }\n $el.find('.current-month-value').text(params.monthNames[calendar.currentMonth]);\n $el.find('.current-year-value').text(calendar.currentYear);\n };\n\n Calendar.prototype.update = function update () {\n var calendar = this;\n var currentYear = calendar.currentYear;\n var currentMonth = calendar.currentMonth;\n var $wrapperEl = calendar.$wrapperEl;\n var currentDate = new calendar.DateHandleClass(currentYear, currentMonth);\n var prevMonthHtml = calendar.renderMonth(currentDate, 'prev');\n var currentMonthHtml = calendar.renderMonth(currentDate);\n var nextMonthHtml = calendar.renderMonth(currentDate, 'next');\n\n $wrapperEl\n .transition(0)\n .html((\"\" + prevMonthHtml + currentMonthHtml + nextMonthHtml))\n .transform('translate3d(0,0,0)');\n calendar.$months = $wrapperEl.find('.calendar-month');\n calendar.monthsTranslate = 0;\n calendar.setMonthsTranslate();\n calendar.$months.each(function (index, monthEl) {\n calendar.emit(\n 'local::monthAdd calendarMonthAdd',\n monthEl\n );\n });\n };\n\n Calendar.prototype.onMonthChangeStart = function onMonthChangeStart (dir) {\n var calendar = this;\n var $months = calendar.$months;\n var currentYear = calendar.currentYear;\n var currentMonth = calendar.currentMonth;\n calendar.updateCurrentMonthYear(dir);\n $months.removeClass('calendar-month-current calendar-month-prev calendar-month-next');\n var currentIndex = dir === 'next' ? $months.length - 1 : 0;\n\n $months.eq(currentIndex).addClass('calendar-month-current');\n $months.eq(dir === 'next' ? currentIndex - 1 : currentIndex + 1).addClass(dir === 'next' ? 'calendar-month-prev' : 'calendar-month-next');\n\n calendar.emit(\n 'local::monthYearChangeStart calendarMonthYearChangeStart',\n calendar,\n currentYear,\n currentMonth\n );\n };\n\n Calendar.prototype.onMonthChangeEnd = function onMonthChangeEnd (dir, rebuildBoth) {\n var calendar = this;\n var currentYear = calendar.currentYear;\n var currentMonth = calendar.currentMonth;\n var $wrapperEl = calendar.$wrapperEl;\n var monthsTranslate = calendar.monthsTranslate;\n calendar.animating = false;\n var nextMonthHtml;\n var prevMonthHtml;\n var currentMonthHtml;\n $wrapperEl\n .find('.calendar-month:not(.calendar-month-prev):not(.calendar-month-current):not(.calendar-month-next)')\n .remove();\n\n if (typeof dir === 'undefined') {\n dir = 'next'; // eslint-disable-line\n rebuildBoth = true; // eslint-disable-line\n }\n if (!rebuildBoth) {\n currentMonthHtml = calendar.renderMonth(new calendar.DateHandleClass(currentYear, currentMonth), dir);\n } else {\n $wrapperEl.find('.calendar-month-next, .calendar-month-prev').remove();\n prevMonthHtml = calendar.renderMonth(new calendar.DateHandleClass(currentYear, currentMonth), 'prev');\n nextMonthHtml = calendar.renderMonth(new calendar.DateHandleClass(currentYear, currentMonth), 'next');\n }\n if (dir === 'next' || rebuildBoth) {\n $wrapperEl.append(currentMonthHtml || nextMonthHtml);\n }\n if (dir === 'prev' || rebuildBoth) {\n $wrapperEl.prepend(currentMonthHtml || prevMonthHtml);\n }\n var $months = $wrapperEl.find('.calendar-month');\n calendar.$months = $months;\n calendar.setMonthsTranslate(monthsTranslate);\n calendar.emit(\n 'local::monthAdd calendarMonthAdd',\n calendar,\n dir === 'next' ? $months.eq($months.length - 1)[0] : $months.eq(0)[0]\n );\n calendar.emit(\n 'local::monthYearChangeEnd calendarMonthYearChangeEnd',\n calendar,\n currentYear,\n currentMonth\n );\n };\n\n Calendar.prototype.setMonthsTranslate = function setMonthsTranslate (translate) {\n var calendar = this;\n var $months = calendar.$months;\n var isH = calendar.isHorizontal;\n var inverter = calendar.inverter;\n // eslint-disable-next-line\n translate = translate || calendar.monthsTranslate || 0;\n if (typeof calendar.monthsTranslate === 'undefined') {\n calendar.monthsTranslate = translate;\n }\n $months.removeClass('calendar-month-current calendar-month-prev calendar-month-next');\n var prevMonthTranslate = -(translate + 1) * 100 * inverter;\n var currentMonthTranslate = -translate * 100 * inverter;\n var nextMonthTranslate = -(translate - 1) * 100 * inverter;\n $months.eq(0)\n .transform((\"translate3d(\" + (isH ? prevMonthTranslate : 0) + \"%, \" + (isH ? 0 : prevMonthTranslate) + \"%, 0)\"))\n .addClass('calendar-month-prev');\n $months.eq(1)\n .transform((\"translate3d(\" + (isH ? currentMonthTranslate : 0) + \"%, \" + (isH ? 0 : currentMonthTranslate) + \"%, 0)\"))\n .addClass('calendar-month-current');\n $months.eq(2)\n .transform((\"translate3d(\" + (isH ? nextMonthTranslate : 0) + \"%, \" + (isH ? 0 : nextMonthTranslate) + \"%, 0)\"))\n .addClass('calendar-month-next');\n };\n\n Calendar.prototype.nextMonth = function nextMonth (transition) {\n var calendar = this;\n var params = calendar.params;\n var $wrapperEl = calendar.$wrapperEl;\n var inverter = calendar.inverter;\n var isH = calendar.isHorizontal;\n if (typeof transition === 'undefined' || typeof transition === 'object') {\n transition = ''; // eslint-disable-line\n if (!params.animate) { transition = 0; } // eslint-disable-line\n }\n var nextMonth = parseInt(calendar.$months.eq(calendar.$months.length - 1).attr('data-month'), 10);\n var nextYear = parseInt(calendar.$months.eq(calendar.$months.length - 1).attr('data-year'), 10);\n var nextDate = new calendar.DateHandleClass(nextYear, nextMonth);\n var nextDateTime = nextDate.getTime();\n var transitionEndCallback = !calendar.animating;\n if (params.maxDate) {\n if (nextDateTime > new calendar.DateHandleClass(params.maxDate).getTime()) {\n calendar.resetMonth();\n return;\n }\n }\n calendar.monthsTranslate -= 1;\n if (nextMonth === calendar.currentMonth) {\n var nextMonthTranslate = -(calendar.monthsTranslate) * 100 * inverter;\n var nextMonthHtml = $$1(calendar.renderMonth(nextDateTime, 'next'))\n .transform((\"translate3d(\" + (isH ? nextMonthTranslate : 0) + \"%, \" + (isH ? 0 : nextMonthTranslate) + \"%, 0)\"))\n .addClass('calendar-month-next');\n $wrapperEl.append(nextMonthHtml[0]);\n calendar.$months = $wrapperEl.find('.calendar-month');\n calendar.emit(\n 'local::monthAdd calendarMonthAdd',\n calendar.$months.eq(calendar.$months.length - 1)[0]\n );\n }\n calendar.animating = true;\n calendar.onMonthChangeStart('next');\n var translate = (calendar.monthsTranslate * 100) * inverter;\n\n $wrapperEl.transition(transition).transform((\"translate3d(\" + (isH ? translate : 0) + \"%, \" + (isH ? 0 : translate) + \"%, 0)\"));\n if (transitionEndCallback) {\n $wrapperEl.transitionEnd(function () {\n calendar.onMonthChangeEnd('next');\n });\n }\n if (!params.animate) {\n calendar.onMonthChangeEnd('next');\n }\n };\n\n Calendar.prototype.prevMonth = function prevMonth (transition) {\n var calendar = this;\n var params = calendar.params;\n var $wrapperEl = calendar.$wrapperEl;\n var inverter = calendar.inverter;\n var isH = calendar.isHorizontal;\n if (typeof transition === 'undefined' || typeof transition === 'object') {\n transition = ''; // eslint-disable-line\n if (!params.animate) { transition = 0; } // eslint-disable-line\n }\n var prevMonth = parseInt(calendar.$months.eq(0).attr('data-month'), 10);\n var prevYear = parseInt(calendar.$months.eq(0).attr('data-year'), 10);\n var prevDate = new calendar.DateHandleClass(prevYear, prevMonth + 1, -1);\n var prevDateTime = prevDate.getTime();\n var transitionEndCallback = !calendar.animating;\n if (params.minDate) {\n var minDate = new calendar.DateHandleClass(params.minDate);\n minDate = new calendar.DateHandleClass(minDate.getFullYear(), minDate.getMonth(), 1);\n if (prevDateTime < minDate.getTime()) {\n calendar.resetMonth();\n return;\n }\n }\n calendar.monthsTranslate += 1;\n if (prevMonth === calendar.currentMonth) {\n var prevMonthTranslate = -(calendar.monthsTranslate) * 100 * inverter;\n var prevMonthHtml = $$1(calendar.renderMonth(prevDateTime, 'prev'))\n .transform((\"translate3d(\" + (isH ? prevMonthTranslate : 0) + \"%, \" + (isH ? 0 : prevMonthTranslate) + \"%, 0)\"))\n .addClass('calendar-month-prev');\n $wrapperEl.prepend(prevMonthHtml[0]);\n calendar.$months = $wrapperEl.find('.calendar-month');\n calendar.emit(\n 'local::monthAdd calendarMonthAdd',\n calendar.$months.eq(0)[0]\n );\n }\n calendar.animating = true;\n calendar.onMonthChangeStart('prev');\n var translate = (calendar.monthsTranslate * 100) * inverter;\n $wrapperEl\n .transition(transition)\n .transform((\"translate3d(\" + (isH ? translate : 0) + \"%, \" + (isH ? 0 : translate) + \"%, 0)\"));\n if (transitionEndCallback) {\n $wrapperEl.transitionEnd(function () {\n calendar.onMonthChangeEnd('prev');\n });\n }\n if (!params.animate) {\n calendar.onMonthChangeEnd('prev');\n }\n };\n\n Calendar.prototype.resetMonth = function resetMonth (transition) {\n if ( transition === void 0 ) transition = '';\n\n var calendar = this;\n var $wrapperEl = calendar.$wrapperEl;\n var inverter = calendar.inverter;\n var isH = calendar.isHorizontal;\n var monthsTranslate = calendar.monthsTranslate;\n var translate = (monthsTranslate * 100) * inverter;\n $wrapperEl\n .transition(transition)\n .transform((\"translate3d(\" + (isH ? translate : 0) + \"%, \" + (isH ? 0 : translate) + \"%, 0)\"));\n };\n // eslint-disable-next-line\n Calendar.prototype.setYearMonth = function setYearMonth (year, month, transition) {\n var calendar = this;\n var params = calendar.params;\n var isH = calendar.isHorizontal;\n var $wrapperEl = calendar.$wrapperEl;\n var inverter = calendar.inverter;\n // eslint-disable-next-line\n if (typeof year === 'undefined') { year = calendar.currentYear; }\n // eslint-disable-next-line\n if (typeof month === 'undefined') { month = calendar.currentMonth; }\n if (typeof transition === 'undefined' || typeof transition === 'object') {\n // eslint-disable-next-line\n transition = '';\n // eslint-disable-next-line\n if (!params.animate) { transition = 0; }\n }\n var targetDate;\n if (year < calendar.currentYear) {\n targetDate = new calendar.DateHandleClass(year, month + 1, -1).getTime();\n } else {\n targetDate = new calendar.DateHandleClass(year, month).getTime();\n }\n if (params.maxDate && targetDate > new calendar.DateHandleClass(params.maxDate).getTime()) {\n return false;\n }\n if (params.minDate) {\n var minDate = new calendar.DateHandleClass(params.minDate);\n minDate = new calendar.DateHandleClass(minDate.getFullYear(), minDate.getMonth(), 1);\n if (targetDate < minDate.getTime()) {\n return false;\n }\n }\n var currentDate = new calendar.DateHandleClass(calendar.currentYear, calendar.currentMonth).getTime();\n var dir = targetDate > currentDate ? 'next' : 'prev';\n var newMonthHTML = calendar.renderMonth(new calendar.DateHandleClass(year, month));\n calendar.monthsTranslate = calendar.monthsTranslate || 0;\n var prevTranslate = calendar.monthsTranslate;\n var monthTranslate;\n var transitionEndCallback = !calendar.animating;\n if (targetDate > currentDate) {\n // To next\n calendar.monthsTranslate -= 1;\n if (!calendar.animating) { calendar.$months.eq(calendar.$months.length - 1).remove(); }\n $wrapperEl.append(newMonthHTML);\n calendar.$months = $wrapperEl.find('.calendar-month');\n monthTranslate = -(prevTranslate - 1) * 100 * inverter;\n calendar.$months\n .eq(calendar.$months.length - 1)\n .transform((\"translate3d(\" + (isH ? monthTranslate : 0) + \"%, \" + (isH ? 0 : monthTranslate) + \"%, 0)\"))\n .addClass('calendar-month-next');\n } else {\n // To prev\n calendar.monthsTranslate += 1;\n if (!calendar.animating) { calendar.$months.eq(0).remove(); }\n $wrapperEl.prepend(newMonthHTML);\n calendar.$months = $wrapperEl.find('.calendar-month');\n monthTranslate = -(prevTranslate + 1) * 100 * inverter;\n calendar.$months\n .eq(0)\n .transform((\"translate3d(\" + (isH ? monthTranslate : 0) + \"%, \" + (isH ? 0 : monthTranslate) + \"%, 0)\"))\n .addClass('calendar-month-prev');\n }\n calendar.emit(\n 'local::monthAdd calendarMonthAdd',\n dir === 'next'\n ? calendar.$months.eq(calendar.$months.length - 1)[0]\n : calendar.$months.eq(0)[0]\n );\n\n calendar.animating = true;\n calendar.onMonthChangeStart(dir);\n var wrapperTranslate = (calendar.monthsTranslate * 100) * inverter;\n $wrapperEl\n .transition(transition)\n .transform((\"translate3d(\" + (isH ? wrapperTranslate : 0) + \"%, \" + (isH ? 0 : wrapperTranslate) + \"%, 0)\"));\n if (transitionEndCallback) {\n $wrapperEl.transitionEnd(function () {\n calendar.onMonthChangeEnd(dir, true);\n });\n }\n if (!params.animate) {\n calendar.onMonthChangeEnd(dir);\n }\n };\n\n Calendar.prototype.nextYear = function nextYear () {\n var calendar = this;\n calendar.setYearMonth(calendar.currentYear + 1);\n };\n\n Calendar.prototype.prevYear = function prevYear () {\n var calendar = this;\n calendar.setYearMonth(calendar.currentYear - 1);\n };\n // eslint-disable-next-line\n Calendar.prototype.dateInRange = function dateInRange (dayDate, range) {\n var calendar = this;\n var match = false;\n var i;\n if (!range) { return false; }\n if (Array.isArray(range)) {\n for (i = 0; i < range.length; i += 1) {\n if (range[i].from || range[i].to) {\n if (range[i].from && range[i].to) {\n if ((dayDate <= new calendar.DateHandleClass(range[i].to).getTime()) && (dayDate >= new calendar.DateHandleClass(range[i].from).getTime())) {\n match = true;\n }\n } else if (range[i].from) {\n if (dayDate >= new calendar.DateHandleClass(range[i].from).getTime()) {\n match = true;\n }\n } else if (range[i].to) {\n if (dayDate <= new calendar.DateHandleClass(range[i].to).getTime()) {\n match = true;\n }\n }\n } else if (dayDate === new calendar.DateHandleClass(range[i]).getTime()) {\n match = true;\n }\n }\n } else if (range.from || range.to) {\n if (range.from && range.to) {\n if ((dayDate <= new calendar.DateHandleClass(range.to).getTime()) && (dayDate >= new calendar.DateHandleClass(range.from).getTime())) {\n match = true;\n }\n } else if (range.from) {\n if (dayDate >= new calendar.DateHandleClass(range.from).getTime()) {\n match = true;\n }\n } else if (range.to) {\n if (dayDate <= new calendar.DateHandleClass(range.to).getTime()) {\n match = true;\n }\n }\n } else if (typeof range === 'function') {\n match = range(new calendar.DateHandleClass(dayDate));\n }\n return match;\n };\n // eslint-disable-next-line\n Calendar.prototype.daysInMonth = function daysInMonth (date) {\n var calendar = this;\n var d = new calendar.DateHandleClass(date);\n return new calendar.DateHandleClass(d.getFullYear(), d.getMonth() + 1, 0).getDate();\n };\n\n Calendar.prototype.renderMonths = function renderMonths (date) {\n var calendar = this;\n if (calendar.params.renderMonths) {\n return calendar.params.renderMonths.call(calendar, date);\n }\n return (\"\\n \\n \" + (calendar.renderMonth(date, 'prev')) + \"\\n \" + (calendar.renderMonth(date)) + \"\\n \" + (calendar.renderMonth(date, 'next')) + \"\\n
\\n \").trim();\n };\n\n Calendar.prototype.renderMonth = function renderMonth (d, offset) {\n var calendar = this;\n var params = calendar.params;\n var value = calendar.value;\n if (params.renderMonth) {\n return params.renderMonth.call(calendar, d, offset);\n }\n var date = new calendar.DateHandleClass(d);\n var year = date.getFullYear();\n var month = date.getMonth();\n\n if (offset === 'next') {\n if (month === 11) { date = new calendar.DateHandleClass(year + 1, 0); }\n else { date = new calendar.DateHandleClass(year, month + 1, 1); }\n }\n if (offset === 'prev') {\n if (month === 0) { date = new calendar.DateHandleClass(year - 1, 11); }\n else { date = new calendar.DateHandleClass(year, month - 1, 1); }\n }\n if (offset === 'next' || offset === 'prev') {\n month = date.getMonth();\n year = date.getFullYear();\n }\n\n var currentValues = [];\n var today = new calendar.DateHandleClass().setHours(0, 0, 0, 0);\n var minDate = params.minDate ? new calendar.DateHandleClass(params.minDate).getTime() : null;\n var maxDate = params.maxDate ? new calendar.DateHandleClass(params.maxDate).getTime() : null;\n var rows = 6;\n var cols = 7;\n var daysInPrevMonth = calendar.daysInMonth(new calendar.DateHandleClass(date.getFullYear(), date.getMonth()).getTime() - (10 * 24 * 60 * 60 * 1000));\n var daysInMonth = calendar.daysInMonth(date);\n var minDayNumber = params.firstDay === 6 ? 0 : 1;\n\n var monthHtml = '';\n var dayIndex = 0 + (params.firstDay - 1);\n var disabled;\n var hasEvent;\n var firstDayOfMonthIndex = new calendar.DateHandleClass(date.getFullYear(), date.getMonth()).getDay();\n if (firstDayOfMonthIndex === 0) { firstDayOfMonthIndex = 7; }\n\n if (value && value.length) {\n for (var i = 0; i < value.length; i += 1) {\n currentValues.push(new calendar.DateHandleClass(value[i]).setHours(0, 0, 0, 0));\n }\n }\n\n for (var row = 1; row <= rows; row += 1) {\n var rowHtml = '';\n for (var col = 1; col <= cols; col += 1) {\n dayIndex += 1;\n var dayDate = (void 0);\n var dayNumber = dayIndex - firstDayOfMonthIndex;\n var addClass = '';\n if (row === 1 && col === 1 && dayNumber > minDayNumber && params.firstDay !== 1) {\n dayIndex -= 7;\n dayNumber = dayIndex - firstDayOfMonthIndex;\n }\n\n var weekDayIndex = ((col - 1) + params.firstDay > 6)\n ? ((col - 1 - 7) + params.firstDay)\n : ((col - 1) + params.firstDay);\n\n if (dayNumber < 0) {\n dayNumber = daysInPrevMonth + dayNumber + 1;\n addClass += ' calendar-day-prev';\n dayDate = new calendar.DateHandleClass(month - 1 < 0 ? year - 1 : year, month - 1 < 0 ? 11 : month - 1, dayNumber).getTime();\n } else {\n dayNumber += 1;\n if (dayNumber > daysInMonth) {\n dayNumber -= daysInMonth;\n addClass += ' calendar-day-next';\n dayDate = new calendar.DateHandleClass(month + 1 > 11 ? year + 1 : year, month + 1 > 11 ? 0 : month + 1, dayNumber).getTime();\n } else {\n dayDate = new calendar.DateHandleClass(year, month, dayNumber).getTime();\n }\n }\n // Today\n if (dayDate === today) { addClass += ' calendar-day-today'; }\n\n // Selected\n if (params.rangePicker && currentValues.length === 2) {\n if (dayDate >= currentValues[0] && dayDate <= currentValues[1]) { addClass += ' calendar-day-selected'; }\n } else if (currentValues.indexOf(dayDate) >= 0) { addClass += ' calendar-day-selected'; }\n // Weekend\n if (params.weekendDays.indexOf(weekDayIndex) >= 0) {\n addClass += ' calendar-day-weekend';\n }\n // Has Events\n hasEvent = false;\n if (params.events) {\n if (calendar.dateInRange(dayDate, params.events)) {\n hasEvent = true;\n }\n }\n if (hasEvent) {\n addClass += ' calendar-day-has-events';\n }\n // Custom Ranges\n if (params.rangesClasses) {\n for (var k = 0; k < params.rangesClasses.length; k += 1) {\n if (calendar.dateInRange(dayDate, params.rangesClasses[k].range)) {\n addClass += \" \" + (params.rangesClasses[k].cssClass);\n }\n }\n }\n // Disabled\n disabled = false;\n if ((minDate && dayDate < minDate) || (maxDate && dayDate > maxDate)) {\n disabled = true;\n }\n if (params.disabled) {\n if (calendar.dateInRange(dayDate, params.disabled)) {\n disabled = true;\n }\n }\n if (disabled) {\n addClass += ' calendar-day-disabled';\n }\n\n dayDate = new calendar.DateHandleClass(dayDate);\n var dayYear = dayDate.getFullYear();\n var dayMonth = dayDate.getMonth();\n rowHtml += (\"\\n \\n \" + dayNumber + \" \\n
\").trim();\n }\n monthHtml += \"\" + rowHtml + \"
\";\n }\n monthHtml = \"\" + monthHtml + \"
\";\n return monthHtml;\n };\n\n Calendar.prototype.renderWeekHeader = function renderWeekHeader () {\n var calendar = this;\n if (calendar.params.renderWeekHeader) {\n return calendar.params.renderWeekHeader.call(calendar);\n }\n var params = calendar.params;\n var weekDaysHtml = '';\n for (var i = 0; i < 7; i += 1) {\n var dayIndex = (i + params.firstDay > 6)\n ? ((i - 7) + params.firstDay)\n : (i + params.firstDay);\n var dayName = params.dayNamesShort[dayIndex];\n weekDaysHtml += \"\" + dayName + \"
\";\n }\n return (\"\\n \\n \").trim();\n };\n\n Calendar.prototype.renderMonthSelector = function renderMonthSelector () {\n var calendar = this;\n var app = calendar.app;\n if (calendar.params.renderMonthSelector) {\n return calendar.params.renderMonthSelector.call(calendar);\n }\n\n var needsBlackIcon;\n if (calendar.inline && calendar.$containerEl.closest('.theme-dark').length === 0) {\n needsBlackIcon = true;\n } else if (app.root.closest('.theme-dark').length === 0) {\n needsBlackIcon = true;\n }\n\n var iconColor = app.theme === 'md' && needsBlackIcon ? 'color-black' : '';\n return (\"\\n \\n \").trim();\n };\n\n Calendar.prototype.renderYearSelector = function renderYearSelector () {\n var calendar = this;\n var app = calendar.app;\n if (calendar.params.renderYearSelector) {\n return calendar.params.renderYearSelector.call(calendar);\n }\n\n var needsBlackIcon;\n if (calendar.inline && calendar.$containerEl.closest('.theme-dark').length === 0) {\n needsBlackIcon = true;\n } else if (app.root.closest('.theme-dark').length === 0) {\n needsBlackIcon = true;\n }\n\n var iconColor = app.theme === 'md' && needsBlackIcon ? 'color-black' : '';\n return (\"\\n \\n \").trim();\n };\n\n Calendar.prototype.renderHeader = function renderHeader () {\n var calendar = this;\n if (calendar.params.renderHeader) {\n return calendar.params.renderHeader.call(calendar);\n }\n return (\"\\n \\n \").trim();\n };\n\n Calendar.prototype.renderFooter = function renderFooter () {\n var calendar = this;\n var app = calendar.app;\n if (calendar.params.renderFooter) {\n return calendar.params.renderFooter.call(calendar);\n }\n return (\"\\n \\n \").trim();\n };\n\n Calendar.prototype.renderToolbar = function renderToolbar () {\n var calendar = this;\n if (calendar.params.renderToolbar) {\n return calendar.params.renderToolbar.call(calendar, calendar);\n }\n return (\"\\n \\n \").trim();\n };\n // eslint-disable-next-line\n Calendar.prototype.renderInline = function renderInline () {\n var calendar = this;\n var ref = calendar.params;\n var cssClass = ref.cssClass;\n var toolbar = ref.toolbar;\n var header = ref.header;\n var footer = ref.footer;\n var rangePicker = ref.rangePicker;\n var weekHeader = ref.weekHeader;\n var value = calendar.value;\n var date = value && value.length ? value[0] : new calendar.DateHandleClass().setHours(0, 0, 0);\n var inlineHtml = (\"\\n \\n \" + (header ? calendar.renderHeader() : '') + \"\\n \" + (toolbar ? calendar.renderToolbar() : '') + \"\\n \" + (weekHeader ? calendar.renderWeekHeader() : '') + \"\\n
\\n \" + (calendar.renderMonths(date)) + \"\\n
\\n \" + (footer ? calendar.renderFooter() : '') + \"\\n
\\n \").trim();\n\n return inlineHtml;\n };\n\n Calendar.prototype.renderCustomModal = function renderCustomModal () {\n var calendar = this;\n var ref = calendar.params;\n var cssClass = ref.cssClass;\n var toolbar = ref.toolbar;\n var header = ref.header;\n var footer = ref.footer;\n var rangePicker = ref.rangePicker;\n var weekHeader = ref.weekHeader;\n var value = calendar.value;\n var date = value && value.length ? value[0] : new calendar.DateHandleClass().setHours(0, 0, 0);\n var sheetHtml = (\"\\n \\n \" + (header ? calendar.renderHeader() : '') + \"\\n \" + (toolbar ? calendar.renderToolbar() : '') + \"\\n \" + (weekHeader ? calendar.renderWeekHeader() : '') + \"\\n
\\n \" + (calendar.renderMonths(date)) + \"\\n
\\n \" + (footer ? calendar.renderFooter() : '') + \"\\n
\\n \").trim();\n\n return sheetHtml;\n };\n\n Calendar.prototype.renderSheet = function renderSheet () {\n var calendar = this;\n var ref = calendar.params;\n var cssClass = ref.cssClass;\n var toolbar = ref.toolbar;\n var header = ref.header;\n var footer = ref.footer;\n var rangePicker = ref.rangePicker;\n var weekHeader = ref.weekHeader;\n var value = calendar.value;\n var date = value && value.length ? value[0] : new calendar.DateHandleClass().setHours(0, 0, 0);\n var sheetHtml = (\"\\n \\n \" + (header ? calendar.renderHeader() : '') + \"\\n \" + (toolbar ? calendar.renderToolbar() : '') + \"\\n \" + (weekHeader ? calendar.renderWeekHeader() : '') + \"\\n
\\n \" + (calendar.renderMonths(date)) + \"\\n
\\n \" + (footer ? calendar.renderFooter() : '') + \"\\n
\\n \").trim();\n\n return sheetHtml;\n };\n\n Calendar.prototype.renderPopover = function renderPopover () {\n var calendar = this;\n var ref = calendar.params;\n var cssClass = ref.cssClass;\n var toolbar = ref.toolbar;\n var header = ref.header;\n var footer = ref.footer;\n var rangePicker = ref.rangePicker;\n var weekHeader = ref.weekHeader;\n var value = calendar.value;\n var date = value && value.length ? value[0] : new calendar.DateHandleClass().setHours(0, 0, 0);\n var popoverHtml = (\"\\n \\n
\\n
\\n \" + (header ? calendar.renderHeader() : '') + \"\\n \" + (toolbar ? calendar.renderToolbar() : '') + \"\\n \" + (weekHeader ? calendar.renderWeekHeader() : '') + \"\\n
\\n \" + (calendar.renderMonths(date)) + \"\\n
\\n \" + (footer ? calendar.renderFooter() : '') + \"\\n
\\n
\\n
\\n \").trim();\n\n return popoverHtml;\n };\n\n Calendar.prototype.render = function render () {\n var calendar = this;\n var params = calendar.params;\n if (params.render) { return params.render.call(calendar); }\n if (!calendar.inline) {\n var modalType = params.openIn;\n if (modalType === 'auto') { modalType = calendar.isPopover() ? 'popover' : 'sheet'; }\n\n if (modalType === 'popover') { return calendar.renderPopover(); }\n if (modalType === 'sheet') { return calendar.renderSheet(); }\n return calendar.renderCustomModal();\n }\n return calendar.renderInline();\n };\n\n Calendar.prototype.onOpen = function onOpen () {\n var calendar = this;\n var initialized = calendar.initialized;\n var $el = calendar.$el;\n var app = calendar.app;\n var $inputEl = calendar.$inputEl;\n var inline = calendar.inline;\n var value = calendar.value;\n var params = calendar.params;\n calendar.closing = false;\n calendar.opened = true;\n calendar.opening = true;\n\n // Init main events\n calendar.attachCalendarEvents();\n\n var updateValue = !value && params.value;\n\n // Set value\n if (!initialized) {\n if (value) { calendar.setValue(value, 0); }\n else if (params.value) {\n calendar.setValue(calendar.normalizeValues(params.value), 0);\n }\n } else if (value) {\n calendar.setValue(value, 0);\n }\n\n // Update current month and year\n calendar.updateCurrentMonthYear();\n\n // Set initial translate\n calendar.monthsTranslate = 0;\n calendar.setMonthsTranslate();\n\n // Update input value\n if (updateValue) { calendar.updateValue(); }\n else if (params.header && value) {\n calendar.updateValue(true);\n }\n\n // Extra focus\n if (!inline && $inputEl.length && app.theme === 'md') {\n $inputEl.trigger('focus');\n }\n\n calendar.initialized = true;\n\n calendar.$months.each(function (index, monthEl) {\n calendar.emit('local::monthAdd calendarMonthAdd', monthEl);\n });\n\n // Trigger events\n if ($el) {\n $el.trigger('calendar:open', calendar);\n }\n if ($inputEl) {\n $inputEl.trigger('calendar:open', calendar);\n }\n calendar.emit('local::open calendarOpen', calendar);\n };\n\n Calendar.prototype.onOpened = function onOpened () {\n var calendar = this;\n calendar.opening = false;\n if (calendar.$el) {\n calendar.$el.trigger('calendar:opened', calendar);\n }\n if (calendar.$inputEl) {\n calendar.$inputEl.trigger('calendar:opened', calendar);\n }\n calendar.emit('local::opened calendarOpened', calendar);\n };\n\n Calendar.prototype.onClose = function onClose () {\n var calendar = this;\n var app = calendar.app;\n calendar.opening = false;\n calendar.closing = true;\n\n if (calendar.$inputEl && app.theme === 'md') {\n calendar.$inputEl.trigger('blur');\n }\n if (calendar.detachCalendarEvents) {\n calendar.detachCalendarEvents();\n }\n\n if (calendar.$el) {\n calendar.$el.trigger('calendar:close', calendar);\n }\n if (calendar.$inputEl) {\n calendar.$inputEl.trigger('calendar:close', calendar);\n }\n calendar.emit('local::close calendarClose', calendar);\n };\n\n Calendar.prototype.onClosed = function onClosed () {\n var calendar = this;\n calendar.opened = false;\n calendar.closing = false;\n\n if (!calendar.inline) {\n Utils.nextTick(function () {\n if (calendar.modal && calendar.modal.el && calendar.modal.destroy) {\n if (!calendar.params.routableModals) {\n calendar.modal.destroy();\n }\n }\n delete calendar.modal;\n });\n }\n if (calendar.$el) {\n calendar.$el.trigger('calendar:closed', calendar);\n }\n if (calendar.$inputEl) {\n calendar.$inputEl.trigger('calendar:closed', calendar);\n }\n calendar.emit('local::closed calendarClosed', calendar);\n };\n\n Calendar.prototype.open = function open () {\n var obj;\n\n var calendar = this;\n var app = calendar.app;\n var opened = calendar.opened;\n var inline = calendar.inline;\n var $inputEl = calendar.$inputEl;\n var params = calendar.params;\n if (opened) { return; }\n\n if (inline) {\n calendar.$el = $$1(calendar.render());\n calendar.$el[0].f7Calendar = calendar;\n calendar.$wrapperEl = calendar.$el.find('.calendar-months-wrapper');\n calendar.$months = calendar.$wrapperEl.find('.calendar-month');\n calendar.$containerEl.append(calendar.$el);\n calendar.onOpen();\n calendar.onOpened();\n return;\n }\n var modalType = params.openIn;\n if (modalType === 'auto') {\n modalType = calendar.isPopover() ? 'popover' : 'sheet';\n }\n var modalContent = calendar.render();\n\n var modalParams = {\n targetEl: $inputEl,\n scrollToEl: calendar.params.scrollToInput ? $inputEl : undefined,\n content: modalContent,\n backdrop: modalType === 'popover' && app.params.popover.backdrop !== false,\n on: {\n open: function open() {\n var modal = this;\n calendar.modal = modal;\n calendar.$el = modalType === 'popover' ? modal.$el.find('.calendar') : modal.$el;\n calendar.$wrapperEl = calendar.$el.find('.calendar-months-wrapper');\n calendar.$months = calendar.$wrapperEl.find('.calendar-month');\n calendar.$el[0].f7Calendar = calendar;\n if (modalType === 'customModal') {\n $$1(calendar.$el).find('.calendar-close').once('click', function () {\n calendar.close();\n });\n }\n calendar.onOpen();\n },\n opened: function opened() { calendar.onOpened(); },\n close: function close() { calendar.onClose(); },\n closed: function closed() { calendar.onClosed(); },\n },\n };\n if (calendar.params.routableModals) {\n calendar.view.router.navigate({\n url: calendar.url,\n route: ( obj = {\n path: calendar.url\n }, obj[modalType] = modalParams, obj ),\n });\n } else {\n calendar.modal = app[modalType].create(modalParams);\n calendar.modal.open();\n }\n };\n\n Calendar.prototype.close = function close () {\n var calendar = this;\n var opened = calendar.opened;\n var inline = calendar.inline;\n if (!opened) { return; }\n if (inline) {\n calendar.onClose();\n calendar.onClosed();\n return;\n }\n if (calendar.params.routableModals) {\n calendar.view.router.back();\n } else {\n calendar.modal.close();\n }\n };\n\n Calendar.prototype.init = function init () {\n var calendar = this;\n\n calendar.initInput();\n\n if (calendar.inline) {\n calendar.open();\n calendar.emit('local::init calendarInit', calendar);\n return;\n }\n\n if (!calendar.initialized && calendar.params.value) {\n calendar.setValue(calendar.normalizeValues(calendar.params.value));\n }\n\n // Attach input Events\n if (calendar.$inputEl) {\n calendar.attachInputEvents();\n }\n if (calendar.params.closeByOutsideClick) {\n calendar.attachHtmlEvents();\n }\n calendar.emit('local::init calendarInit', calendar);\n };\n\n Calendar.prototype.destroy = function destroy () {\n var calendar = this;\n if (calendar.destroyed) { return; }\n var $el = calendar.$el;\n calendar.emit('local::beforeDestroy calendarBeforeDestroy', calendar);\n if ($el) { $el.trigger('calendar:beforedestroy', calendar); }\n\n calendar.close();\n\n // Detach Events\n if (calendar.$inputEl) {\n calendar.detachInputEvents();\n }\n if (calendar.params.closeByOutsideClick) {\n calendar.detachHtmlEvents();\n }\n\n if ($el && $el.length) { delete calendar.$el[0].f7Calendar; }\n Utils.deleteProps(calendar);\n calendar.destroyed = true;\n };\n\n return Calendar;\n }(Framework7Class));\n\n var Calendar$1 = {\n name: 'calendar',\n static: {\n Calendar: Calendar,\n },\n create: function create() {\n var app = this;\n app.calendar = ConstructorMethods({\n defaultSelector: '.calendar',\n constructor: Calendar,\n app: app,\n domProp: 'f7Calendar',\n });\n app.calendar.close = function close(el) {\n if ( el === void 0 ) el = '.calendar';\n\n var $el = $$1(el);\n if ($el.length === 0) { return; }\n var calendar = $el[0].f7Calendar;\n if (!calendar || (calendar && !calendar.opened)) { return; }\n calendar.close();\n };\n },\n params: {\n calendar: {\n // Calendar settings\n calendarType: 'gregorian', // or 'jalali'\n monthNames: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],\n monthNamesShort: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n dayNames: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],\n dayNamesShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n firstDay: 1, // First day of the week, Monday\n weekendDays: [0, 6], // Sunday and Saturday\n jalali: {\n monthNames: ['فروردین', 'اردیبهشت', 'خرداد', 'تیر', 'مرداد', 'شهریور', 'مهر', 'آبان', 'آذر', 'دی', 'بهمن', 'اسفند'],\n monthNamesShort: ['فَر', 'اُر', 'خُر', 'تیر', 'مُر', 'شَه', 'مهر', 'آب', 'آذر', 'دی', 'بَه', 'اِس'],\n dayNames: ['یکشنبه', 'دوشنبه', 'سهشنبه', 'چهارشنبه', 'پنجشنبه', 'جمعه', 'شنبه'],\n dayNamesShort: ['1ش', '۲ش', '۳ش', '۴ش', '۵ش', 'ج', 'ش'],\n firstDay: 6, // Saturday\n weekendDays: [5], // Friday\n },\n multiple: false,\n rangePicker: false,\n rangePickerMinDays: 1, // when calendar is used as rangePicker\n rangePickerMaxDays: 0, // when calendar is used as rangePicker, 0 means unlimited\n dateFormat: 'yyyy-mm-dd',\n direction: 'horizontal', // or 'vertical'\n minDate: null,\n maxDate: null,\n disabled: null, // dates range of disabled days\n events: null, // dates range of days with events\n rangesClasses: null, // array with custom classes date ranges\n touchMove: true,\n animate: true,\n closeOnSelect: false,\n monthSelector: true,\n yearSelector: true,\n weekHeader: true,\n value: null,\n // Common opener settings\n containerEl: null,\n openIn: 'auto', // or 'popover' or 'sheet' or 'customModal'\n formatValue: null,\n inputEl: null,\n inputReadOnly: true,\n closeByOutsideClick: true,\n scrollToInput: true,\n header: false,\n headerPlaceholder: 'Select date',\n footer: false,\n toolbar: true,\n toolbarCloseText: 'Done',\n cssClass: null,\n routableModals: true,\n view: null,\n url: 'date/',\n // Render functions\n renderWeekHeader: null,\n renderMonths: null,\n renderMonth: null,\n renderMonthSelector: null,\n renderYearSelector: null,\n renderHeader: null,\n renderFooter: null,\n renderToolbar: null,\n renderInline: null,\n renderPopover: null,\n renderSheet: null,\n render: null,\n },\n },\n };\n\n function pickerColumn (colEl, updateItems) {\n var picker = this;\n var app = picker.app;\n var $colEl = $$1(colEl);\n var colIndex = $colEl.index();\n var col = picker.cols[colIndex];\n if (col.divider) { return; }\n\n col.$el = $colEl;\n col.el = $colEl[0];\n col.$itemsEl = col.$el.find('.picker-items');\n col.items = col.$itemsEl.find('.picker-item');\n\n var itemHeight;\n var itemsHeight;\n var minTranslate;\n var maxTranslate;\n var animationFrameId;\n\n function updateDuringScroll() {\n animationFrameId = Utils.requestAnimationFrame(function () {\n col.updateItems(undefined, undefined, 0);\n updateDuringScroll();\n });\n }\n\n col.replaceValues = function replaceColValues(values, displayValues) {\n col.detachEvents();\n col.values = values;\n col.displayValues = displayValues;\n col.$itemsEl.html(picker.renderColumn(col, true));\n col.items = col.$itemsEl.find('.picker-item');\n col.calcSize();\n col.setValue(col.values[0], 0, true);\n col.attachEvents();\n };\n col.calcSize = function calcColSize() {\n if (picker.params.rotateEffect) {\n col.$el.removeClass('picker-column-absolute');\n if (!col.width) { col.$el.css({ width: '' }); }\n }\n var colWidth = 0;\n var colHeight = col.$el[0].offsetHeight;\n itemHeight = col.items[0].offsetHeight;\n itemsHeight = itemHeight * col.items.length;\n minTranslate = ((colHeight / 2) - itemsHeight) + (itemHeight / 2);\n maxTranslate = (colHeight / 2) - (itemHeight / 2);\n if (col.width) {\n colWidth = col.width;\n if (parseInt(colWidth, 10) === colWidth) { colWidth += 'px'; }\n col.$el.css({ width: colWidth });\n }\n if (picker.params.rotateEffect) {\n if (!col.width) {\n col.items.each(function (index, itemEl) {\n var item = $$1(itemEl).children('span');\n colWidth = Math.max(colWidth, item[0].offsetWidth);\n });\n col.$el.css({ width: ((colWidth + 2) + \"px\") });\n }\n col.$el.addClass('picker-column-absolute');\n }\n };\n\n col.setValue = function setColValue(newValue, transition, valueCallbacks) {\n if ( transition === void 0 ) transition = '';\n\n var newActiveIndex = col.$itemsEl.find((\".picker-item[data-picker-value=\\\"\" + newValue + \"\\\"]\")).index();\n if (typeof newActiveIndex === 'undefined' || newActiveIndex === -1) {\n return;\n }\n var newTranslate = (-newActiveIndex * itemHeight) + maxTranslate;\n // Update wrapper\n col.$itemsEl.transition(transition);\n col.$itemsEl.transform((\"translate3d(0,\" + newTranslate + \"px,0)\"));\n\n // Watch items\n if (picker.params.updateValuesOnMomentum && col.activeIndex && col.activeIndex !== newActiveIndex) {\n Utils.cancelAnimationFrame(animationFrameId);\n col.$itemsEl.transitionEnd(function () {\n Utils.cancelAnimationFrame(animationFrameId);\n });\n updateDuringScroll();\n }\n\n // Update items\n col.updateItems(newActiveIndex, newTranslate, transition, valueCallbacks);\n };\n\n col.updateItems = function updateColItems(activeIndex, translate, transition, valueCallbacks) {\n if (typeof translate === 'undefined') {\n // eslint-disable-next-line\n translate = Utils.getTranslate(col.$itemsEl[0], 'y');\n }\n // eslint-disable-next-line\n if (typeof activeIndex === 'undefined') { activeIndex = -Math.round((translate - maxTranslate) / itemHeight); }\n // eslint-disable-next-line\n if (activeIndex < 0) { activeIndex = 0; }\n // eslint-disable-next-line\n if (activeIndex >= col.items.length) { activeIndex = col.items.length - 1; }\n var previousActiveIndex = col.activeIndex;\n col.activeIndex = activeIndex;\n col.$itemsEl.find('.picker-item-selected').removeClass('picker-item-selected');\n\n col.items.transition(transition);\n\n var selectedItem = col.items.eq(activeIndex).addClass('picker-item-selected').transform('');\n\n // Set 3D rotate effect\n if (picker.params.rotateEffect) {\n col.items.each(function (index, itemEl) {\n var $itemEl = $$1(itemEl);\n var itemOffsetTop = $itemEl.index() * itemHeight;\n var translateOffset = maxTranslate - translate;\n var itemOffset = itemOffsetTop - translateOffset;\n var percentage = itemOffset / itemHeight;\n var itemsFit = Math.ceil(col.height / itemHeight / 2) + 1;\n\n var angle = (-18 * percentage);\n if (angle > 180) { angle = 180; }\n if (angle < -180) { angle = -180; }\n if (Math.abs(percentage) > itemsFit) {\n $itemEl.addClass('picker-item-far');\n } else {\n $itemEl.removeClass('picker-item-far');\n }\n $itemEl.transform((\"translate3d(0, \" + (-translate + maxTranslate) + \"px, \" + (picker.needsOriginFix ? -110 : 0) + \"px) rotateX(\" + angle + \"deg)\"));\n });\n }\n\n if (valueCallbacks || typeof valueCallbacks === 'undefined') {\n // Update values\n col.value = selectedItem.attr('data-picker-value');\n col.displayValue = col.displayValues ? col.displayValues[activeIndex] : col.value;\n // On change callback\n if (previousActiveIndex !== activeIndex) {\n if (col.onChange) {\n col.onChange(picker, col.value, col.displayValue);\n }\n picker.updateValue();\n }\n }\n };\n\n var allowItemClick = true;\n var isTouched;\n var isMoved;\n var touchStartY;\n var touchCurrentY;\n var touchStartTime;\n var touchEndTime;\n var startTranslate;\n var returnTo;\n var currentTranslate;\n var prevTranslate;\n var velocityTranslate;\n function handleTouchStart(e) {\n if (isMoved || isTouched) { return; }\n e.preventDefault();\n isTouched = true;\n touchStartY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n touchCurrentY = touchStartY;\n touchStartTime = (new Date()).getTime();\n\n allowItemClick = true;\n startTranslate = Utils.getTranslate(col.$itemsEl[0], 'y');\n currentTranslate = startTranslate;\n }\n function handleTouchMove(e) {\n if (!isTouched) { return; }\n e.preventDefault();\n allowItemClick = false;\n touchCurrentY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n if (!isMoved) {\n // First move\n Utils.cancelAnimationFrame(animationFrameId);\n isMoved = true;\n startTranslate = Utils.getTranslate(col.$itemsEl[0], 'y');\n currentTranslate = startTranslate;\n col.$itemsEl.transition(0);\n }\n\n var diff = touchCurrentY - touchStartY;\n currentTranslate = startTranslate + diff;\n returnTo = undefined;\n\n // Normalize translate\n if (currentTranslate < minTranslate) {\n currentTranslate = minTranslate - (Math.pow( (minTranslate - currentTranslate), 0.8 ));\n returnTo = 'min';\n }\n if (currentTranslate > maxTranslate) {\n currentTranslate = maxTranslate + (Math.pow( (currentTranslate - maxTranslate), 0.8 ));\n returnTo = 'max';\n }\n // Transform wrapper\n col.$itemsEl.transform((\"translate3d(0,\" + currentTranslate + \"px,0)\"));\n\n // Update items\n col.updateItems(undefined, currentTranslate, 0, picker.params.updateValuesOnTouchmove);\n\n // Calc velocity\n velocityTranslate = currentTranslate - prevTranslate || currentTranslate;\n prevTranslate = currentTranslate;\n }\n function handleTouchEnd() {\n if (!isTouched || !isMoved) {\n isTouched = false;\n isMoved = false;\n return;\n }\n isTouched = false;\n isMoved = false;\n col.$itemsEl.transition('');\n if (returnTo) {\n if (returnTo === 'min') {\n col.$itemsEl.transform((\"translate3d(0,\" + minTranslate + \"px,0)\"));\n } else { col.$itemsEl.transform((\"translate3d(0,\" + maxTranslate + \"px,0)\")); }\n }\n touchEndTime = new Date().getTime();\n var newTranslate;\n if (touchEndTime - touchStartTime > 300) {\n newTranslate = currentTranslate;\n } else {\n newTranslate = currentTranslate + (velocityTranslate * picker.params.momentumRatio);\n }\n\n newTranslate = Math.max(Math.min(newTranslate, maxTranslate), minTranslate);\n\n // Active Index\n var activeIndex = -Math.floor((newTranslate - maxTranslate) / itemHeight);\n\n // Normalize translate\n if (!picker.params.freeMode) { newTranslate = (-activeIndex * itemHeight) + maxTranslate; }\n\n // Transform wrapper\n col.$itemsEl.transform((\"translate3d(0,\" + (parseInt(newTranslate, 10)) + \"px,0)\"));\n\n // Update items\n col.updateItems(activeIndex, newTranslate, '', true);\n\n // Watch items\n if (picker.params.updateValuesOnMomentum) {\n updateDuringScroll();\n col.$itemsEl.transitionEnd(function () {\n Utils.cancelAnimationFrame(animationFrameId);\n });\n }\n\n // Allow click\n setTimeout(function () {\n allowItemClick = true;\n }, 100);\n }\n\n function handleClick() {\n if (!allowItemClick) { return; }\n Utils.cancelAnimationFrame(animationFrameId);\n var value = $$1(this).attr('data-picker-value');\n col.setValue(value);\n }\n\n var activeListener = app.support.passiveListener ? { passive: false, capture: false } : false;\n col.attachEvents = function attachColEvents() {\n col.$el.on(app.touchEvents.start, handleTouchStart, activeListener);\n app.on('touchmove:active', handleTouchMove);\n app.on('touchend:passive', handleTouchEnd);\n col.items.on('click', handleClick);\n };\n col.detachEvents = function detachColEvents() {\n col.$el.off(app.touchEvents.start, handleTouchStart, activeListener);\n app.off('touchmove:active', handleTouchMove);\n app.off('touchend:passive', handleTouchEnd);\n col.items.off('click', handleClick);\n };\n\n col.init = function initCol() {\n col.calcSize();\n col.$itemsEl.transform((\"translate3d(0,\" + maxTranslate + \"px,0)\")).transition(0);\n if (colIndex === 0) { col.$el.addClass('picker-column-first'); }\n if (colIndex === picker.cols.length - 1) { col.$el.addClass('picker-column-last'); }\n // Update items on init\n if (updateItems) { col.updateItems(0, maxTranslate, 0); }\n\n col.attachEvents();\n };\n\n col.destroy = function destroyCol() {\n col.detachEvents();\n };\n\n col.init();\n }\n\n var Picker = (function (Framework7Class$$1) {\n function Picker(app, params) {\n if ( params === void 0 ) params = {};\n\n Framework7Class$$1.call(this, params, [app]);\n var picker = this;\n picker.params = Utils.extend({}, app.params.picker, params);\n\n var $containerEl;\n if (picker.params.containerEl) {\n $containerEl = $$1(picker.params.containerEl);\n if ($containerEl.length === 0) { return picker; }\n }\n\n var $inputEl;\n if (picker.params.inputEl) {\n $inputEl = $$1(picker.params.inputEl);\n }\n\n var view;\n if ($inputEl) {\n view = $inputEl.parents('.view').length && $inputEl.parents('.view')[0].f7View;\n }\n if (!view) { view = app.views.main; }\n\n Utils.extend(picker, {\n app: app,\n $containerEl: $containerEl,\n containerEl: $containerEl && $containerEl[0],\n inline: $containerEl && $containerEl.length > 0,\n needsOriginFix: app.device.ios || ((win.navigator.userAgent.toLowerCase().indexOf('safari') >= 0 && win.navigator.userAgent.toLowerCase().indexOf('chrome') < 0) && !app.device.android),\n cols: [],\n $inputEl: $inputEl,\n inputEl: $inputEl && $inputEl[0],\n initialized: false,\n opened: false,\n url: picker.params.url,\n view: view,\n });\n\n function onResize() {\n picker.resizeCols();\n }\n function onInputClick() {\n picker.open();\n }\n function onInputFocus(e) {\n e.preventDefault();\n }\n function onHtmlClick(e) {\n var $targetEl = $$1(e.target);\n if (picker.isPopover()) { return; }\n if (!picker.opened) { return; }\n if ($targetEl.closest('[class*=\"backdrop\"]').length) { return; }\n if ($inputEl && $inputEl.length > 0) {\n if ($targetEl[0] !== $inputEl[0] && $targetEl.closest('.sheet-modal').length === 0) {\n picker.close();\n }\n } else if ($$1(e.target).closest('.sheet-modal').length === 0) {\n picker.close();\n }\n }\n\n // Events\n Utils.extend(picker, {\n attachResizeEvent: function attachResizeEvent() {\n app.on('resize', onResize);\n },\n detachResizeEvent: function detachResizeEvent() {\n app.off('resize', onResize);\n },\n attachInputEvents: function attachInputEvents() {\n picker.$inputEl.on('click', onInputClick);\n if (picker.params.inputReadOnly) {\n picker.$inputEl.on('focus mousedown', onInputFocus);\n }\n },\n detachInputEvents: function detachInputEvents() {\n picker.$inputEl.off('click', onInputClick);\n if (picker.params.inputReadOnly) {\n picker.$inputEl.off('focus mousedown', onInputFocus);\n }\n },\n attachHtmlEvents: function attachHtmlEvents() {\n app.on('click', onHtmlClick);\n },\n detachHtmlEvents: function detachHtmlEvents() {\n app.off('click', onHtmlClick);\n },\n });\n\n picker.init();\n\n return picker;\n }\n\n if ( Framework7Class$$1 ) Picker.__proto__ = Framework7Class$$1;\n Picker.prototype = Object.create( Framework7Class$$1 && Framework7Class$$1.prototype );\n Picker.prototype.constructor = Picker;\n\n Picker.prototype.initInput = function initInput () {\n var picker = this;\n if (!picker.$inputEl) { return; }\n if (picker.params.inputReadOnly) { picker.$inputEl.prop('readOnly', true); }\n };\n\n Picker.prototype.resizeCols = function resizeCols () {\n var picker = this;\n if (!picker.opened) { return; }\n for (var i = 0; i < picker.cols.length; i += 1) {\n if (!picker.cols[i].divider) {\n picker.cols[i].calcSize();\n picker.cols[i].setValue(picker.cols[i].value, 0, false);\n }\n }\n };\n\n Picker.prototype.isPopover = function isPopover () {\n var picker = this;\n var app = picker.app;\n var modal = picker.modal;\n var params = picker.params;\n if (params.openIn === 'sheet') { return false; }\n if (modal && modal.type !== 'popover') { return false; }\n\n if (!picker.inline && picker.inputEl) {\n if (params.openIn === 'popover') { return true; }\n if (app.device.ios) {\n return !!app.device.ipad;\n } if (app.width >= 768) {\n return true;\n }\n }\n return false;\n };\n\n Picker.prototype.formatValue = function formatValue () {\n var picker = this;\n var value = picker.value;\n var displayValue = picker.displayValue;\n if (picker.params.formatValue) {\n return picker.params.formatValue.call(picker, value, displayValue);\n }\n return value.join(' ');\n };\n\n Picker.prototype.setValue = function setValue (values, transition) {\n var picker = this;\n var valueIndex = 0;\n if (picker.cols.length === 0) {\n picker.value = values;\n picker.updateValue(values);\n return;\n }\n for (var i = 0; i < picker.cols.length; i += 1) {\n if (picker.cols[i] && !picker.cols[i].divider) {\n picker.cols[i].setValue(values[valueIndex], transition);\n valueIndex += 1;\n }\n }\n };\n\n Picker.prototype.getValue = function getValue () {\n var picker = this;\n return picker.value;\n };\n\n Picker.prototype.updateValue = function updateValue (forceValues) {\n var picker = this;\n var newValue = forceValues || [];\n var newDisplayValue = [];\n var column;\n if (picker.cols.length === 0) {\n var noDividerColumns = picker.params.cols.filter(function (c) { return !c.divider; });\n for (var i = 0; i < noDividerColumns.length; i += 1) {\n column = noDividerColumns[i];\n if (column.displayValues !== undefined && column.values !== undefined && column.values.indexOf(newValue[i]) !== -1) {\n newDisplayValue.push(column.displayValues[column.values.indexOf(newValue[i])]);\n } else {\n newDisplayValue.push(newValue[i]);\n }\n }\n } else {\n for (var i$1 = 0; i$1 < picker.cols.length; i$1 += 1) {\n if (!picker.cols[i$1].divider) {\n newValue.push(picker.cols[i$1].value);\n newDisplayValue.push(picker.cols[i$1].displayValue);\n }\n }\n }\n\n if (newValue.indexOf(undefined) >= 0) {\n return;\n }\n picker.value = newValue;\n picker.displayValue = newDisplayValue;\n picker.emit('local::change pickerChange', picker, picker.value, picker.displayValue);\n if (picker.inputEl) {\n picker.$inputEl.val(picker.formatValue());\n picker.$inputEl.trigger('change');\n }\n };\n\n Picker.prototype.initColumn = function initColumn (colEl, updateItems) {\n var picker = this;\n pickerColumn.call(picker, colEl, updateItems);\n };\n // eslint-disable-next-line\n Picker.prototype.destroyColumn = function destroyColumn (colEl) {\n var picker = this;\n var $colEl = $$1(colEl);\n var index = $colEl.index();\n if (picker.cols[index] && picker.cols[index].destroy) {\n picker.cols[index].destroy();\n }\n };\n\n Picker.prototype.renderToolbar = function renderToolbar () {\n var picker = this;\n if (picker.params.renderToolbar) { return picker.params.renderToolbar.call(picker, picker); }\n return (\"\\n \\n \").trim();\n };\n // eslint-disable-next-line\n Picker.prototype.renderColumn = function renderColumn (col, onlyItems) {\n var colClasses = \"picker-column \" + (col.textAlign ? (\"picker-column-\" + (col.textAlign)) : '') + \" \" + (col.cssClass || '');\n var columnHtml;\n var columnItemsHtml;\n\n if (col.divider) {\n columnHtml = \"\\n \" + (col.content) + \"
\\n \";\n } else {\n columnItemsHtml = col.values.map(function (value, index) { return (\"\\n \\n \" + (col.displayValues ? col.displayValues[index] : value) + \" \\n
\\n \"); }).join('');\n columnHtml = \"\\n \\n
\" + columnItemsHtml + \"
\\n
\\n \";\n }\n\n return onlyItems ? columnItemsHtml.trim() : columnHtml.trim();\n };\n\n Picker.prototype.renderInline = function renderInline () {\n var picker = this;\n var ref = picker.params;\n var rotateEffect = ref.rotateEffect;\n var cssClass = ref.cssClass;\n var toolbar = ref.toolbar;\n var inlineHtml = (\"\\n \\n \" + (toolbar ? picker.renderToolbar() : '') + \"\\n
\\n \" + (picker.cols.map(function (col) { return picker.renderColumn(col); }).join('')) + \"\\n
\\n
\\n
\\n \").trim();\n\n return inlineHtml;\n };\n\n Picker.prototype.renderSheet = function renderSheet () {\n var picker = this;\n var ref = picker.params;\n var rotateEffect = ref.rotateEffect;\n var cssClass = ref.cssClass;\n var toolbar = ref.toolbar;\n var sheetHtml = (\"\\n \\n \" + (toolbar ? picker.renderToolbar() : '') + \"\\n
\\n \" + (picker.cols.map(function (col) { return picker.renderColumn(col); }).join('')) + \"\\n
\\n
\\n
\\n \").trim();\n\n return sheetHtml;\n };\n\n Picker.prototype.renderPopover = function renderPopover () {\n var picker = this;\n var ref = picker.params;\n var rotateEffect = ref.rotateEffect;\n var cssClass = ref.cssClass;\n var toolbar = ref.toolbar;\n var popoverHtml = (\"\\n \\n
\\n
\\n \" + (toolbar ? picker.renderToolbar() : '') + \"\\n
\\n \" + (picker.cols.map(function (col) { return picker.renderColumn(col); }).join('')) + \"\\n
\\n
\\n
\\n
\\n
\\n \").trim();\n\n return popoverHtml;\n };\n\n Picker.prototype.render = function render () {\n var picker = this;\n if (picker.params.render) { return picker.params.render.call(picker); }\n if (!picker.inline) {\n if (picker.isPopover()) { return picker.renderPopover(); }\n return picker.renderSheet();\n }\n return picker.renderInline();\n };\n\n Picker.prototype.onOpen = function onOpen () {\n var picker = this;\n var initialized = picker.initialized;\n var $el = picker.$el;\n var app = picker.app;\n var $inputEl = picker.$inputEl;\n var inline = picker.inline;\n var value = picker.value;\n var params = picker.params;\n picker.opened = true;\n\n // Init main events\n picker.attachResizeEvent();\n\n // Init cols\n $el.find('.picker-column').each(function (index, colEl) {\n var updateItems = true;\n if (\n (!initialized && params.value)\n || (initialized && value)\n ) {\n updateItems = false;\n }\n picker.initColumn(colEl, updateItems);\n });\n\n // Set value\n if (!initialized) {\n if (value) { picker.setValue(value, 0); }\n else if (params.value) {\n picker.setValue(params.value, 0);\n }\n } else if (value) {\n picker.setValue(value, 0);\n }\n\n // Extra focus\n if (!inline && $inputEl.length && app.theme === 'md') {\n $inputEl.trigger('focus');\n }\n\n picker.initialized = true;\n\n // Trigger events\n if ($el) {\n $el.trigger('picker:open', picker);\n }\n if ($inputEl) {\n $inputEl.trigger('picker:open', picker);\n }\n picker.emit('local::open pickerOpen', picker);\n };\n\n Picker.prototype.onOpened = function onOpened () {\n var picker = this;\n\n if (picker.$el) {\n picker.$el.trigger('picker:opened', picker);\n }\n if (picker.$inputEl) {\n picker.$inputEl.trigger('picker:opened', picker);\n }\n picker.emit('local::opened pickerOpened', picker);\n };\n\n Picker.prototype.onClose = function onClose () {\n var picker = this;\n var app = picker.app;\n\n // Detach events\n picker.detachResizeEvent();\n\n picker.cols.forEach(function (col) {\n if (col.destroy) { col.destroy(); }\n });\n if (picker.$inputEl && app.theme === 'md') {\n picker.$inputEl.trigger('blur');\n }\n\n if (picker.$el) {\n picker.$el.trigger('picker:close', picker);\n }\n if (picker.$inputEl) {\n picker.$inputEl.trigger('picker:close', picker);\n }\n picker.emit('local::close pickerClose', picker);\n };\n\n Picker.prototype.onClosed = function onClosed () {\n var picker = this;\n picker.opened = false;\n\n if (!picker.inline) {\n Utils.nextTick(function () {\n if (picker.modal && picker.modal.el && picker.modal.destroy) {\n if (!picker.params.routableModals) {\n picker.modal.destroy();\n }\n }\n delete picker.modal;\n });\n }\n\n if (picker.$el) {\n picker.$el.trigger('picker:closed', picker);\n }\n if (picker.$inputEl) {\n picker.$inputEl.trigger('picker:closed', picker);\n }\n picker.emit('local::closed pickerClosed', picker);\n };\n\n Picker.prototype.open = function open () {\n var obj;\n\n var picker = this;\n var app = picker.app;\n var opened = picker.opened;\n var inline = picker.inline;\n var $inputEl = picker.$inputEl;\n if (opened) { return; }\n if (picker.cols.length === 0 && picker.params.cols.length) {\n picker.params.cols.forEach(function (col) {\n picker.cols.push(col);\n });\n }\n if (inline) {\n picker.$el = $$1(picker.render());\n picker.$el[0].f7Picker = picker;\n picker.$containerEl.append(picker.$el);\n picker.onOpen();\n picker.onOpened();\n return;\n }\n var isPopover = picker.isPopover();\n var modalType = isPopover ? 'popover' : 'sheet';\n var modalParams = {\n targetEl: $inputEl,\n scrollToEl: picker.params.scrollToInput ? $inputEl : undefined,\n content: picker.render(),\n backdrop: isPopover,\n on: {\n open: function open() {\n var modal = this;\n picker.modal = modal;\n picker.$el = isPopover ? modal.$el.find('.picker') : modal.$el;\n picker.$el[0].f7Picker = picker;\n picker.onOpen();\n },\n opened: function opened() { picker.onOpened(); },\n close: function close() { picker.onClose(); },\n closed: function closed() { picker.onClosed(); },\n },\n };\n if (picker.params.routableModals) {\n picker.view.router.navigate({\n url: picker.url,\n route: ( obj = {\n path: picker.url\n }, obj[modalType] = modalParams, obj ),\n });\n } else {\n picker.modal = app[modalType].create(modalParams);\n picker.modal.open();\n }\n };\n\n Picker.prototype.close = function close () {\n var picker = this;\n var opened = picker.opened;\n var inline = picker.inline;\n if (!opened) { return; }\n if (inline) {\n picker.onClose();\n picker.onClosed();\n return;\n }\n if (picker.params.routableModals) {\n picker.view.router.back();\n } else {\n picker.modal.close();\n }\n };\n\n Picker.prototype.init = function init () {\n var picker = this;\n\n picker.initInput();\n\n if (picker.inline) {\n picker.open();\n picker.emit('local::init pickerInit', picker);\n return;\n }\n\n if (!picker.initialized && picker.params.value) {\n picker.setValue(picker.params.value);\n }\n\n // Attach input Events\n if (picker.$inputEl) {\n picker.attachInputEvents();\n }\n if (picker.params.closeByOutsideClick) {\n picker.attachHtmlEvents();\n }\n picker.emit('local::init pickerInit', picker);\n };\n\n Picker.prototype.destroy = function destroy () {\n var picker = this;\n if (picker.destroyed) { return; }\n var $el = picker.$el;\n picker.emit('local::beforeDestroy pickerBeforeDestroy', picker);\n if ($el) { $el.trigger('picker:beforedestroy', picker); }\n\n picker.close();\n\n // Detach Events\n if (picker.$inputEl) {\n picker.detachInputEvents();\n }\n if (picker.params.closeByOutsideClick) {\n picker.detachHtmlEvents();\n }\n\n if ($el && $el.length) { delete picker.$el[0].f7Picker; }\n Utils.deleteProps(picker);\n picker.destroyed = true;\n };\n\n return Picker;\n }(Framework7Class));\n\n var Picker$1 = {\n name: 'picker',\n static: {\n Picker: Picker,\n },\n create: function create() {\n var app = this;\n app.picker = ConstructorMethods({\n defaultSelector: '.picker',\n constructor: Picker,\n app: app,\n domProp: 'f7Picker',\n });\n app.picker.close = function close(el) {\n if ( el === void 0 ) el = '.picker';\n\n var $el = $$1(el);\n if ($el.length === 0) { return; }\n var picker = $el[0].f7Picker;\n if (!picker || (picker && !picker.opened)) { return; }\n picker.close();\n };\n },\n params: {\n picker: {\n // Picker settings\n updateValuesOnMomentum: false,\n updateValuesOnTouchmove: true,\n rotateEffect: false,\n momentumRatio: 7,\n freeMode: false,\n cols: [],\n // Common opener settings\n containerEl: null,\n openIn: 'auto', // or 'popover' or 'sheet'\n formatValue: null,\n inputEl: null,\n inputReadOnly: true,\n closeByOutsideClick: true,\n scrollToInput: true,\n toolbar: true,\n toolbarCloseText: 'Done',\n cssClass: null,\n routableModals: true,\n view: null,\n url: 'select/',\n // Render functions\n renderToolbar: null,\n render: null,\n },\n },\n };\n\n var InfiniteScroll = {\n handleScroll: function handleScroll(el, e) {\n var app = this;\n var $el = $$1(el);\n var scrollTop = $el[0].scrollTop;\n var scrollHeight = $el[0].scrollHeight;\n var height = $el[0].offsetHeight;\n var distance = $el[0].getAttribute('data-infinite-distance');\n\n var virtualListContainer = $el.find('.virtual-list');\n var virtualList;\n\n var onTop = $el.hasClass('infinite-scroll-top');\n if (!distance) { distance = 50; }\n if (typeof distance === 'string' && distance.indexOf('%') >= 0) {\n distance = (parseInt(distance, 10) / 100) * height;\n }\n if (distance > height) { distance = height; }\n if (onTop) {\n if (scrollTop < distance) {\n $el.trigger('infinite', e);\n app.emit('infinite', $el[0], e);\n }\n } else if (scrollTop + height >= scrollHeight - distance) {\n if (virtualListContainer.length > 0) {\n virtualList = virtualListContainer.eq(-1)[0].f7VirtualList;\n if (virtualList && !virtualList.reachEnd && !virtualList.params.updatableScroll) {\n return;\n }\n }\n $el.trigger('infinite', e);\n app.emit('infinite', $el[0], e);\n }\n },\n create: function create(el) {\n var $el = $$1(el);\n var app = this;\n $el.on('scroll', function handle(e) {\n app.infiniteScroll.handle(this, e);\n });\n },\n destroy: function destroy(el) {\n var $el = $$1(el);\n $el.off('scroll');\n },\n };\n var InfiniteScroll$1 = {\n name: 'infiniteScroll',\n create: function create() {\n var app = this;\n Utils.extend(app, {\n infiniteScroll: {\n handle: InfiniteScroll.handleScroll.bind(app),\n create: InfiniteScroll.create.bind(app),\n destroy: InfiniteScroll.destroy.bind(app),\n },\n });\n },\n on: {\n tabMounted: function tabMounted(tabEl) {\n var app = this;\n var $tabEl = $$1(tabEl);\n $tabEl.find('.infinite-scroll-content').each(function (index, el) {\n app.infiniteScroll.create(el);\n });\n },\n tabBeforeRemove: function tabBeforeRemove(tabEl) {\n var $tabEl = $$1(tabEl);\n var app = this;\n $tabEl.find('.infinite-scroll-content').each(function (index, el) {\n app.infiniteScroll.destroy(el);\n });\n },\n pageInit: function pageInit(page) {\n var app = this;\n page.$el.find('.infinite-scroll-content').each(function (index, el) {\n app.infiniteScroll.create(el);\n });\n },\n pageBeforeRemove: function pageBeforeRemove(page) {\n var app = this;\n page.$el.find('.infinite-scroll-content').each(function (index, el) {\n app.infiniteScroll.destroy(el);\n });\n },\n },\n };\n\n var PullToRefresh = (function (Framework7Class$$1) {\n function PullToRefresh(app, el) {\n Framework7Class$$1.call(this, {}, [app]);\n var ptr = this;\n var $el = $$1(el);\n var $preloaderEl = $el.find('.ptr-preloader');\n\n ptr.$el = $el;\n ptr.el = $el[0];\n ptr.app = app;\n\n // Extend defaults with modules params\n ptr.useModulesParams({});\n\n var isMaterial = app.theme === 'md';\n\n // Done\n ptr.done = function done() {\n var $transitionTarget = isMaterial ? $preloaderEl : $el;\n $transitionTarget.transitionEnd(function () {\n $el.removeClass('ptr-transitioning ptr-pull-up ptr-pull-down');\n $el.trigger('ptr:done');\n ptr.emit('local::done ptrDone', $el[0]);\n });\n $el.removeClass('ptr-refreshing').addClass('ptr-transitioning');\n return ptr;\n };\n\n ptr.refresh = function refresh() {\n if ($el.hasClass('ptr-refreshing')) { return ptr; }\n $el.addClass('ptr-transitioning ptr-refreshing');\n $el.trigger('ptr:refresh', ptr.done);\n ptr.emit('local::refresh ptrRefresh', $el[0], ptr.done);\n return ptr;\n };\n\n // Events handling\n var touchId;\n var isTouched;\n var isMoved;\n var touchesStart = {};\n var isScrolling;\n var touchesDiff;\n var refresh = false;\n var useTranslate = false;\n var startTranslate = 0;\n var translate;\n var scrollTop;\n var wasScrolled;\n var triggerDistance;\n var dynamicTriggerDistance;\n var pullStarted;\n var hasNavbar = false;\n var $pageEl = $el.parents('.page');\n\n if ($pageEl.find('.navbar').length > 0 || $pageEl.parents('.view').children('.navbar').length > 0) { hasNavbar = true; }\n if ($pageEl.hasClass('no-navbar')) { hasNavbar = false; }\n if (!hasNavbar) { $el.addClass('ptr-no-navbar'); }\n\n // Define trigger distance\n if ($el.attr('data-ptr-distance')) {\n dynamicTriggerDistance = true;\n } else {\n triggerDistance = isMaterial ? 66 : 44;\n }\n\n function handleTouchStart(e) {\n if (isTouched) {\n if (Device.os === 'android') {\n if ('targetTouches' in e && e.targetTouches.length > 1) { return; }\n } else { return; }\n }\n\n if ($el.hasClass('ptr-refreshing')) {\n return;\n }\n if ($$1(e.target).closest('.sortable-handler').length) { return; }\n\n isMoved = false;\n pullStarted = false;\n isTouched = true;\n isScrolling = undefined;\n wasScrolled = undefined;\n if (e.type === 'touchstart') { touchId = e.targetTouches[0].identifier; }\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 }\n\n function handleTouchMove(e) {\n if (!isTouched) { return; }\n var pageX;\n var pageY;\n var touch;\n if (e.type === 'touchmove') {\n if (touchId && e.touches) {\n for (var i = 0; i < e.touches.length; i += 1) {\n if (e.touches[i].identifier === touchId) {\n touch = e.touches[i];\n }\n }\n }\n if (!touch) { touch = e.targetTouches[0]; }\n pageX = touch.pageX;\n pageY = touch.pageY;\n } else {\n pageX = e.pageX;\n pageY = e.pageY;\n }\n if (!pageX || !pageY) { return; }\n\n\n if (typeof isScrolling === 'undefined') {\n isScrolling = !!(isScrolling || Math.abs(pageY - touchesStart.y) > Math.abs(pageX - touchesStart.x));\n }\n if (!isScrolling) {\n isTouched = false;\n return;\n }\n\n scrollTop = $el[0].scrollTop;\n if (typeof wasScrolled === 'undefined' && scrollTop !== 0) { wasScrolled = true; }\n\n if (!isMoved) {\n $el.removeClass('ptr-transitioning');\n if (scrollTop > $el[0].offsetHeight) {\n isTouched = false;\n return;\n }\n if (dynamicTriggerDistance) {\n triggerDistance = $el.attr('data-ptr-distance');\n if (triggerDistance.indexOf('%') >= 0) { triggerDistance = ($el[0].offsetHeight * parseInt(triggerDistance, 10)) / 100; }\n }\n startTranslate = $el.hasClass('ptr-refreshing') ? triggerDistance : 0;\n if ($el[0].scrollHeight === $el[0].offsetHeight || Device.os !== 'ios' || isMaterial) {\n useTranslate = true;\n } else {\n useTranslate = false;\n }\n }\n isMoved = true;\n touchesDiff = pageY - touchesStart.y;\n\n if ((touchesDiff > 0 && scrollTop <= 0) || scrollTop < 0) {\n // iOS 8 fix\n if (Device.os === 'ios' && parseInt(Device.osVersion.split('.')[0], 10) > 7 && scrollTop === 0 && !wasScrolled) { useTranslate = true; }\n\n if (useTranslate) {\n e.preventDefault();\n translate = (Math.pow( touchesDiff, 0.85 )) + startTranslate;\n if (isMaterial) {\n $preloaderEl.transform((\"translate3d(0,\" + translate + \"px,0)\"))\n .find('.ptr-arrow').transform((\"rotate(\" + ((180 * (touchesDiff / 66)) + 100) + \"deg)\"));\n } else {\n $el.transform((\"translate3d(0,\" + translate + \"px,0)\"));\n }\n }\n if ((useTranslate && (Math.pow( touchesDiff, 0.85 )) > triggerDistance) || (!useTranslate && touchesDiff >= triggerDistance * 2)) {\n refresh = true;\n $el.addClass('ptr-pull-up').removeClass('ptr-pull-down');\n } else {\n refresh = false;\n $el.removeClass('ptr-pull-up').addClass('ptr-pull-down');\n }\n if (!pullStarted) {\n $el.trigger('ptr:pullstart');\n ptr.emit('local::pullStart ptrPullStart', $el[0]);\n pullStarted = true;\n }\n $el.trigger('ptr:pullmove', {\n event: e,\n scrollTop: scrollTop,\n translate: translate,\n touchesDiff: touchesDiff,\n });\n ptr.emit('local::pullMove ptrPullMove', $el[0], {\n event: e,\n scrollTop: scrollTop,\n translate: translate,\n touchesDiff: touchesDiff,\n });\n } else {\n pullStarted = false;\n $el.removeClass('ptr-pull-up ptr-pull-down');\n refresh = false;\n }\n }\n function handleTouchEnd(e) {\n if (e.type === 'touchend' && e.changedTouches && e.changedTouches.length > 0 && touchId) {\n if (e.changedTouches[0].identifier !== touchId) {\n isTouched = false;\n isScrolling = false;\n isMoved = false;\n touchId = null;\n return;\n }\n }\n if (!isTouched || !isMoved) {\n isTouched = false;\n isMoved = false;\n return;\n }\n if (translate) {\n $el.addClass('ptr-transitioning');\n translate = 0;\n }\n if (isMaterial) {\n $preloaderEl.transform('')\n .find('.ptr-arrow').transform('');\n } else {\n $el.transform('');\n }\n\n if (refresh) {\n $el.addClass('ptr-refreshing');\n $el.trigger('ptr:refresh', ptr.done);\n ptr.emit('local::refresh ptrRefresh', $el[0], ptr.done);\n } else {\n $el.removeClass('ptr-pull-down');\n }\n isTouched = false;\n isMoved = false;\n if (pullStarted) {\n $el.trigger('ptr:pullend');\n ptr.emit('local::pullEnd ptrPullEnd', $el[0]);\n }\n }\n\n if (!$pageEl.length || !$el.length) { return ptr; }\n\n $el[0].f7PullToRefresh = ptr;\n\n // Events\n ptr.attachEvents = function attachEvents() {\n var passive = Support.passiveListener ? { passive: true } : false;\n $el.on(app.touchEvents.start, handleTouchStart, passive);\n app.on('touchmove', handleTouchMove);\n app.on('touchend:passive', handleTouchEnd);\n };\n ptr.detachEvents = function detachEvents() {\n var passive = Support.passiveListener ? { passive: true } : false;\n $el.off(app.touchEvents.start, handleTouchStart, passive);\n app.off('touchmove', handleTouchMove);\n app.off('touchend:passive', handleTouchEnd);\n };\n\n // Install Modules\n ptr.useModules();\n\n // Init\n ptr.init();\n\n return ptr;\n }\n\n if ( Framework7Class$$1 ) PullToRefresh.__proto__ = Framework7Class$$1;\n PullToRefresh.prototype = Object.create( Framework7Class$$1 && Framework7Class$$1.prototype );\n PullToRefresh.prototype.constructor = PullToRefresh;\n\n PullToRefresh.prototype.init = function init () {\n var ptr = this;\n ptr.attachEvents();\n };\n\n PullToRefresh.prototype.destroy = function destroy () {\n var ptr = this;\n ptr.emit('local::beforeDestroy ptrBeforeDestroy', ptr);\n ptr.$el.trigger('ptr:beforedestroy', ptr);\n delete ptr.el.f7PullToRefresh;\n ptr.detachEvents();\n Utils.deleteProps(ptr);\n ptr = null;\n };\n\n return PullToRefresh;\n }(Framework7Class));\n\n var PullToRefresh$1 = {\n name: 'pullToRefresh',\n create: function create() {\n var app = this;\n app.ptr = Utils.extend(\n ConstructorMethods({\n defaultSelector: '.ptr-content',\n constructor: PullToRefresh,\n app: app,\n domProp: 'f7PullToRefresh',\n }),\n {\n done: function done(el) {\n var ptr = app.ptr.get(el);\n if (ptr) { return ptr.done(); }\n return undefined;\n },\n refresh: function refresh(el) {\n var ptr = app.ptr.get(el);\n if (ptr) { return ptr.refresh(); }\n return undefined;\n },\n }\n );\n },\n static: {\n PullToRefresh: PullToRefresh,\n },\n on: {\n tabMounted: function tabMounted(tabEl) {\n var app = this;\n var $tabEl = $$1(tabEl);\n $tabEl.find('.ptr-content').each(function (index, el) {\n app.ptr.create(el);\n });\n },\n tabBeforeRemove: function tabBeforeRemove(tabEl) {\n var $tabEl = $$1(tabEl);\n var app = this;\n $tabEl.find('.ptr-content').each(function (index, el) {\n app.ptr.destroy(el);\n });\n },\n pageInit: function pageInit(page) {\n var app = this;\n page.$el.find('.ptr-content').each(function (index, el) {\n app.ptr.create(el);\n });\n },\n pageBeforeRemove: function pageBeforeRemove(page) {\n var app = this;\n page.$el.find('.ptr-content').each(function (index, el) {\n app.ptr.destroy(el);\n });\n },\n },\n };\n\n var Lazy = {\n destroy: function destroy(pageEl) {\n var $pageEl = $$1(pageEl).closest('.page');\n if (!$pageEl.length) { return; }\n if ($pageEl[0].f7LazyDestroy) {\n $pageEl[0].f7LazyDestroy();\n }\n },\n create: function create(pageEl) {\n var app = this;\n var $pageEl = $$1(pageEl).closest('.page').eq(0);\n\n // Lazy images\n var lazyLoadImages = $pageEl.find('.lazy');\n if (lazyLoadImages.length === 0 && !$pageEl.hasClass('lazy')) { return; }\n\n // Placeholder\n var placeholderSrc = app.params.lazy.placeholder;\n\n if (placeholderSrc !== false) {\n lazyLoadImages.each(function (index, lazyEl) {\n if ($$1(lazyEl).attr('data-src') && !$$1(lazyEl).attr('src')) { $$1(lazyEl).attr('src', placeholderSrc); }\n });\n }\n\n // load image\n var imagesSequence = [];\n var imageIsLoading = false;\n\n function onImageComplete(lazyEl) {\n if (imagesSequence.indexOf(lazyEl) >= 0) {\n imagesSequence.splice(imagesSequence.indexOf(lazyEl), 1);\n }\n imageIsLoading = false;\n if (app.params.lazy.sequential && imagesSequence.length > 0) {\n imageIsLoading = true;\n app.lazy.loadImage(imagesSequence[0], onImageComplete);\n }\n }\n\n function lazyHandler() {\n app.lazy.load($pageEl, function (lazyEl) {\n if (app.params.lazy.sequential && imageIsLoading) {\n if (imagesSequence.indexOf(lazyEl) < 0) { imagesSequence.push(lazyEl); }\n return;\n }\n imageIsLoading = true;\n app.lazy.loadImage(lazyEl, onImageComplete);\n });\n }\n\n function attachEvents() {\n $pageEl[0].f7LazyAttached = true;\n $pageEl.on('lazy', lazyHandler);\n $pageEl.on('scroll', lazyHandler, true);\n $pageEl.find('.tab').on('tab:mounted tab:show', lazyHandler);\n app.on('resize', lazyHandler);\n }\n function detachEvents() {\n $pageEl[0].f7LazyAttached = false;\n delete $pageEl[0].f7LazyAttached;\n $pageEl.off('lazy', lazyHandler);\n $pageEl.off('scroll', lazyHandler, true);\n $pageEl.find('.tab').off('tab:mounted tab:show', lazyHandler);\n app.off('resize', lazyHandler);\n }\n\n // Store detach function\n if (!$pageEl[0].f7LazyDestroy) {\n $pageEl[0].f7LazyDestroy = detachEvents;\n }\n\n // Attach events\n if (!$pageEl[0].f7LazyAttached) {\n attachEvents();\n }\n\n // Run loader on page load/init\n lazyHandler();\n },\n isInViewport: function isInViewport(lazyEl) {\n var app = this;\n var rect = lazyEl.getBoundingClientRect();\n var threshold = app.params.lazy.threshold || 0;\n\n return (\n rect.top >= (0 - threshold)\n && rect.left >= (0 - threshold)\n && rect.top <= (app.height + threshold)\n && rect.left <= (app.width + threshold)\n );\n },\n loadImage: function loadImage(imageEl, callback) {\n var app = this;\n var $imageEl = $$1(imageEl);\n\n var bg = $imageEl.attr('data-background');\n var src = bg || $imageEl.attr('data-src');\n if (!src) { return; }\n function onLoad() {\n $imageEl.removeClass('lazy').addClass('lazy-loaded');\n if (bg) {\n $imageEl.css('background-image', (\"url(\" + src + \")\"));\n } else {\n $imageEl.attr('src', src);\n }\n if (callback) { callback(imageEl); }\n $imageEl.trigger('lazy:loaded');\n app.emit('lazyLoaded', $imageEl[0]);\n }\n\n function onError() {\n $imageEl.removeClass('lazy').addClass('lazy-loaded');\n if (bg) {\n $imageEl.css('background-image', (\"url(\" + (app.params.lazy.placeholder || '') + \")\"));\n } else {\n $imageEl.attr('src', app.params.lazy.placeholder || '');\n }\n if (callback) { callback(imageEl); }\n $imageEl.trigger('lazy:error');\n app.emit('lazyError', $imageEl[0]);\n }\n var image = new win.Image();\n image.onload = onLoad;\n image.onerror = onError;\n image.src = src;\n\n $imageEl.removeAttr('data-src').removeAttr('data-background');\n\n // Add loaded callback and events\n $imageEl.trigger('lazy:load');\n app.emit('lazyLoad', $imageEl[0]);\n },\n load: function load(pageEl, callback) {\n var app = this;\n var $pageEl = $$1(pageEl);\n if (!$pageEl.hasClass('page')) { $pageEl = $pageEl.parents('.page').eq(0); }\n if ($pageEl.length === 0) {\n return;\n }\n $pageEl.find('.lazy').each(function (index, lazyEl) {\n var $lazyEl = $$1(lazyEl);\n if ($lazyEl.parents('.tab:not(.tab-active)').length > 0) {\n return;\n }\n if (app.lazy.isInViewport(lazyEl)) {\n if (callback) { callback(lazyEl); }\n else { app.lazy.loadImage(lazyEl); }\n }\n });\n },\n\n };\n var Lazy$1 = {\n name: 'lazy',\n params: {\n lazy: {\n placeholder: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAAl21bKAAAAA1BMVEXCwsK592mkAAAACklEQVQI12NgAAAAAgAB4iG8MwAAAABJRU5ErkJggg==',\n threshold: 0,\n sequential: true,\n },\n },\n create: function create() {\n var app = this;\n Utils.extend(app, {\n lazy: {\n create: Lazy.create.bind(app),\n destroy: Lazy.destroy.bind(app),\n loadImage: Lazy.loadImage.bind(app),\n load: Lazy.load.bind(app),\n isInViewport: Lazy.isInViewport.bind(app),\n },\n });\n },\n on: {\n pageInit: function pageInit(page) {\n var app = this;\n if (page.$el.find('.lazy').length > 0 || page.$el.hasClass('lazy')) {\n app.lazy.create(page.$el);\n }\n },\n pageAfterIn: function pageAfterIn(page) {\n var app = this;\n if (page.$el.find('.lazy').length > 0 || page.$el.hasClass('lazy')) {\n app.lazy.create(page.$el);\n }\n },\n pageBeforeRemove: function pageBeforeRemove(page) {\n var app = this;\n if (page.$el.find('.lazy').length > 0 || page.$el.hasClass('lazy')) {\n app.lazy.destroy(page.$el);\n }\n },\n tabMounted: function tabMounted(tabEl) {\n var app = this;\n var $tabEl = $$1(tabEl);\n if ($tabEl.find('.lazy').length > 0 || $tabEl.hasClass('lazy')) {\n app.lazy.create($tabEl);\n }\n },\n tabBeforeRemove: function tabBeforeRemove(tabEl) {\n var app = this;\n var $tabEl = $$1(tabEl);\n if ($tabEl.find('.lazy').length > 0 || $tabEl.hasClass('lazy')) {\n app.lazy.destroy($tabEl);\n }\n },\n },\n };\n\n var DataTable = (function (Framework7Class$$1) {\n function DataTable(app, params) {\n if ( params === void 0 ) params = {};\n\n Framework7Class$$1.call(this, params, [app]);\n\n var table = this;\n\n var defaults = {\n\n };\n\n // Extend defaults with modules params\n table.useModulesParams(defaults);\n\n table.params = Utils.extend(defaults, params);\n\n // El\n var $el = $$1(table.params.el);\n if ($el.length === 0) { return undefined; }\n\n table.$el = $el;\n table.el = $el[0];\n\n if (table.$el[0].f7DataTable) {\n var instance = table.$el[0].f7DataTable;\n table.destroy();\n return instance;\n }\n\n table.$el[0].f7DataTable = table;\n\n Utils.extend(table, {\n collapsible: $el.hasClass('data-table-collapsible'),\n // Headers\n $headerEl: $el.find('.data-table-header'),\n $headerSelectedEl: $el.find('.data-table-header-selected'),\n });\n\n // Events\n function handleChange(e) {\n if (e.detail && e.detail.sentByF7DataTable) {\n // Scripted event, don't do anything\n return;\n }\n var $inputEl = $$1(this);\n var checked = $inputEl[0].checked;\n var columnIndex = $inputEl.parents('td,th').index();\n\n if ($inputEl.parents('thead').length > 0) {\n if (columnIndex === 0) {\n $el\n .find('tbody tr')[checked ? 'addClass' : 'removeClass']('data-table-row-selected');\n }\n $el\n .find((\"tbody tr td:nth-child(\" + (columnIndex + 1) + \") input\"))\n .prop('checked', checked)\n .trigger('change', { sentByF7DataTable: true });\n } else {\n if (columnIndex === 0) {\n $inputEl.parents('tr')[checked ? 'addClass' : 'removeClass']('data-table-row-selected');\n }\n\n if (!checked) {\n $el.find((\"thead .checkbox-cell:nth-child(\" + (columnIndex + 1) + \") input[type=\\\"checkbox\\\"]\")).prop('checked', false);\n } else if ($el.find((\"tbody .checkbox-cell:nth-child(\" + (columnIndex + 1) + \") input[type=\\\"checkbox\\\"]:checked\")).length === $el.find('tbody tr').length) {\n $el.find((\"thead .checkbox-cell:nth-child(\" + (columnIndex + 1) + \") input[type=\\\"checkbox\\\"]\")).prop('checked', true).trigger('change', { sentByF7DataTable: true });\n }\n }\n table.checkSelectedHeader();\n }\n function handleSortableClick() {\n var $cellEl = $$1(this);\n var isActive = $cellEl.hasClass('sortable-cell-active');\n var currentSort = $cellEl.hasClass('sortable-desc') ? 'desc' : 'asc';\n var newSort;\n if (isActive) {\n newSort = currentSort === 'desc' ? 'asc' : 'desc';\n $cellEl.removeClass('sortable-desc sortable-asc').addClass((\"sortable-\" + newSort));\n } else {\n $el.find('thead .sortable-cell-active').removeClass('sortable-cell-active');\n $cellEl.addClass('sortable-cell-active');\n newSort = currentSort;\n }\n $cellEl.trigger('datatable:sort', newSort);\n table.emit('local::sort dataTableSort', table, newSort);\n }\n table.attachEvents = function attachEvents() {\n table.$el.on('change', '.checkbox-cell input[type=\"checkbox\"]', handleChange);\n table.$el.find('thead .sortable-cell').on('click', handleSortableClick);\n };\n table.detachEvents = function detachEvents() {\n table.$el.off('change', '.checkbox-cell input[type=\"checkbox\"]', handleChange);\n table.$el.find('thead .sortable-cell').off('click', handleSortableClick);\n };\n\n // Install Modules\n table.useModules();\n\n // Init\n table.init();\n\n return table;\n }\n\n if ( Framework7Class$$1 ) DataTable.__proto__ = Framework7Class$$1;\n DataTable.prototype = Object.create( Framework7Class$$1 && Framework7Class$$1.prototype );\n DataTable.prototype.constructor = DataTable;\n\n DataTable.prototype.setCollapsibleLabels = function setCollapsibleLabels () {\n var table = this;\n if (!table.collapsible) { return; }\n table.$el.find('tbody td:not(.checkbox-cell)').each(function (index, el) {\n var $el = $$1(el);\n var elIndex = $el.index();\n var collpsibleTitle = $el.attr('data-collapsible-title');\n if (!collpsibleTitle && collpsibleTitle !== '') {\n $el.attr('data-collapsible-title', table.$el.find('thead th').eq(elIndex).text());\n }\n });\n };\n\n DataTable.prototype.checkSelectedHeader = function checkSelectedHeader () {\n var table = this;\n if (table.$headerEl.length > 0 && table.$headerSelectedEl.length > 0) {\n var checkedItems = table.$el.find('tbody .checkbox-cell input:checked').length;\n table.$el[checkedItems > 0 ? 'addClass' : 'removeClass']('data-table-has-checked');\n table.$headerSelectedEl.find('.data-table-selected-count').text(checkedItems);\n }\n };\n\n DataTable.prototype.init = function init () {\n var table = this;\n table.attachEvents();\n table.setCollapsibleLabels();\n table.checkSelectedHeader();\n };\n\n DataTable.prototype.destroy = function destroy () {\n var table = this;\n\n table.$el.trigger('datatable:beforedestroy', table);\n table.emit('local::beforeDestroy datatableBeforeDestroy', table);\n\n table.attachEvents();\n table.$el[0].f7DataTable = null;\n delete table.$el[0].f7DataTable;\n Utils.deleteProps(table);\n table = null;\n };\n\n return DataTable;\n }(Framework7Class));\n\n var DataTable$1 = {\n name: 'dataTable',\n static: {\n DataTable: DataTable,\n },\n create: function create() {\n var app = this;\n app.dataTable = ConstructorMethods({\n defaultSelector: '.data-table',\n constructor: DataTable,\n app: app,\n domProp: 'f7DataTable',\n });\n },\n on: {\n tabBeforeRemove: function tabBeforeRemove(tabEl) {\n var app = this;\n $$1(tabEl).find('.data-table-init').each(function (index, tableEl) {\n app.dataTable.destroy(tableEl);\n });\n },\n tabMounted: function tabMounted(tabEl) {\n var app = this;\n $$1(tabEl).find('.data-table-init').each(function (index, tableEl) {\n app.dataTable.create({ el: tableEl });\n });\n },\n pageBeforeRemove: function pageBeforeRemove(page) {\n var app = this;\n page.$el.find('.data-table-init').each(function (index, tableEl) {\n app.dataTable.destroy(tableEl);\n });\n },\n pageInit: function pageInit(page) {\n var app = this;\n page.$el.find('.data-table-init').each(function (index, tableEl) {\n app.dataTable.create({ el: tableEl });\n });\n },\n },\n clicks: {\n\n },\n };\n\n var Fab = {\n morphOpen: function morphOpen(fabEl, targetEl) {\n var app = this;\n var $fabEl = $$1(fabEl);\n var $targetEl = $$1(targetEl);\n if ($targetEl.length === 0) { return; }\n\n $targetEl.transition(0).addClass('fab-morph-target-visible');\n var target = {\n width: $targetEl[0].offsetWidth,\n height: $targetEl[0].offsetHeight,\n offset: $targetEl.offset(),\n borderRadius: $targetEl.css('border-radius'),\n zIndex: $targetEl.css('z-index'),\n };\n var fab = {\n width: $fabEl[0].offsetWidth,\n height: $fabEl[0].offsetHeight,\n offset: $fabEl.offset(),\n translateX: Utils.getTranslate($fabEl[0], 'x'),\n translateY: Utils.getTranslate($fabEl[0], 'y'),\n };\n\n $fabEl[0].f7FabMorphData = {\n $targetEl: $targetEl,\n target: target,\n fab: fab,\n };\n\n var diffX = (fab.offset.left + (fab.width / 2))\n - (target.offset.left + (target.width / 2))\n - fab.translateX;\n var diffY = (fab.offset.top + (fab.height / 2))\n - (target.offset.top + (target.height / 2))\n - fab.translateY;\n var scaleX = target.width / fab.width;\n var scaleY = target.height / fab.height;\n\n var borderRadius = Math.ceil(parseInt(target.borderRadius, 10) / Math.max(scaleX, scaleY));\n if (borderRadius > 0) { borderRadius += 2; }\n\n $fabEl[0].f7FabMorphResizeHandler = function resizeHandler() {\n $fabEl.transition(0).transform('');\n $targetEl.transition(0);\n target.width = $targetEl[0].offsetWidth;\n target.height = $targetEl[0].offsetHeight;\n target.offset = $targetEl.offset();\n fab.offset = $fabEl.offset();\n\n var diffXNew = (fab.offset.left + (fab.width / 2))\n - (target.offset.left + (target.width / 2))\n - fab.translateX;\n var diffYNew = (fab.offset.top + (fab.height / 2))\n - (target.offset.top + (target.height / 2))\n - fab.translateY;\n var scaleXNew = target.width / fab.width;\n var scaleYNew = target.height / fab.height;\n\n $fabEl.transform((\"translate3d(\" + (-diffXNew) + \"px, \" + (-diffYNew) + \"px, 0) scale(\" + scaleXNew + \", \" + scaleYNew + \")\"));\n };\n\n $targetEl\n .css('opacity', 0)\n .transform((\"scale(\" + (1 / scaleX) + \", \" + (1 / scaleY) + \")\"));\n $fabEl\n .addClass('fab-opened')\n .css('z-index', target.zIndex - 1)\n .transform((\"translate3d(\" + (-diffX) + \"px, \" + (-diffY) + \"px, 0)\"));\n $fabEl.transitionEnd(function () {\n $targetEl.transition('');\n Utils.nextTick(function () {\n $targetEl.css('opacity', 1).transform('scale(1,1)');\n });\n $fabEl.transform((\"translate3d(\" + (-diffX) + \"px, \" + (-diffY) + \"px, 0) scale(\" + scaleX + \", \" + scaleY + \")\"))\n .css('border-radius', (borderRadius + \"px\"))\n .css('box-shadow', 'none');\n app.on('resize', $fabEl[0].f7FabMorphResizeHandler);\n if ($targetEl.parents('.page-content').length > 0) {\n $targetEl.parents('.page-content').on('scroll', $fabEl[0].f7FabMorphResizeHandler);\n }\n });\n },\n morphClose: function morphClose(fabEl) {\n var app = this;\n var $fabEl = $$1(fabEl);\n var morphData = $fabEl[0].f7FabMorphData;\n if (!morphData) { return; }\n var $targetEl = morphData.$targetEl;\n var target = morphData.target;\n var fab = morphData.fab;\n if ($targetEl.length === 0) { return; }\n\n var diffX = (fab.offset.left + (fab.width / 2))\n - (target.offset.left + (target.width / 2))\n - fab.translateX;\n var diffY = (fab.offset.top + (fab.height / 2))\n - (target.offset.top + (target.height / 2))\n - fab.translateY;\n var scaleX = target.width / fab.width;\n var scaleY = target.height / fab.height;\n\n app.off('resize', $fabEl[0].f7FabMorphResizeHandler);\n if ($targetEl.parents('.page-content').length > 0) {\n $targetEl.parents('.page-content').off('scroll', $fabEl[0].f7FabMorphResizeHandler);\n }\n\n $targetEl\n .css('opacity', 0)\n .transform((\"scale(\" + (1 / scaleX) + \", \" + (1 / scaleY) + \")\"));\n $fabEl\n .transition('')\n .css('box-shadow', '')\n .css('border-radius', '')\n .transform((\"translate3d(\" + (-diffX) + \"px, \" + (-diffY) + \"px, 0)\"));\n $fabEl.transitionEnd(function () {\n $fabEl\n .css('z-index', '')\n .removeClass('fab-opened')\n .transform('');\n Utils.nextTick(function () {\n $fabEl.transitionEnd(function () {\n $targetEl\n .removeClass('fab-morph-target-visible')\n .css('opacity', '')\n .transform('')\n .transition('');\n });\n });\n });\n },\n open: function open(fabEl, targetEl) {\n var app = this;\n var $fabEl = $$1(fabEl).eq(0);\n var $buttonsEl = $fabEl.find('.fab-buttons');\n if (!$fabEl.length) { return; }\n if ($fabEl.hasClass('fab-opened')) { return; }\n if (!$buttonsEl.length && !$fabEl.hasClass('fab-morph')) { return; }\n\n if (app.fab.openedEl) {\n if (app.fab.openedEl === $fabEl[0]) { return; }\n app.fab.close(app.fab.openedEl);\n }\n app.fab.openedEl = $fabEl[0];\n if ($fabEl.hasClass('fab-morph')) {\n app.fab.morphOpen($fabEl, targetEl || $fabEl.attr('data-morph-to'));\n } else {\n $fabEl.addClass('fab-opened');\n }\n $fabEl.trigger('fab:open');\n },\n close: function close(fabEl) {\n if ( fabEl === void 0 ) fabEl = '.fab-opened';\n\n var app = this;\n var $fabEl = $$1(fabEl).eq(0);\n var $buttonsEl = $fabEl.find('.fab-buttons');\n if (!$fabEl.length) { return; }\n if (!$fabEl.hasClass('fab-opened')) { return; }\n if (!$buttonsEl.length && !$fabEl.hasClass('fab-morph')) { return; }\n app.fab.openedEl = null;\n if ($fabEl.hasClass('fab-morph')) {\n app.fab.morphClose($fabEl);\n } else {\n $fabEl.removeClass('fab-opened');\n }\n $fabEl.trigger('fab:close');\n },\n toggle: function toggle(fabEl) {\n var app = this;\n var $fabEl = $$1(fabEl);\n if (!$fabEl.hasClass('fab-opened')) { app.fab.open(fabEl); }\n else { app.fab.close(fabEl); }\n },\n };\n\n var Fab$1 = {\n name: 'fab',\n create: function create() {\n var app = this;\n Utils.extend(app, {\n fab: {\n openedEl: null,\n morphOpen: Fab.morphOpen.bind(app),\n morphClose: Fab.morphClose.bind(app),\n open: Fab.open.bind(app),\n close: Fab.close.bind(app),\n toggle: Fab.toggle.bind(app),\n },\n });\n },\n clicks: {\n '.fab > a': function open($clickedEl) {\n var app = this;\n app.fab.toggle($clickedEl.parents('.fab'));\n },\n '.fab-open': function open($clickedEl, data) {\n if ( data === void 0 ) data = {};\n\n var app = this;\n app.fab.open(data.fab);\n },\n '.fab-close': function close($clickedEl, data) {\n if ( data === void 0 ) data = {};\n\n var app = this;\n app.fab.close(data.fab);\n },\n },\n };\n\n var Searchbar = (function (FrameworkClass) {\n function Searchbar(app, params) {\n if ( params === void 0 ) params = {};\n\n FrameworkClass.call(this, params, [app]);\n\n var sb = this;\n\n var defaults = {\n el: undefined,\n inputEl: undefined,\n disableButton: true,\n disableButtonEl: undefined,\n backdropEl: undefined,\n searchContainer: undefined, // container to search, HTMLElement or CSS selector\n searchItem: 'li', // single item selector, CSS selector\n searchIn: undefined, // where to search in item, CSS selector\n ignore: '.searchbar-ignore',\n foundEl: '.searchbar-found',\n notFoundEl: '.searchbar-not-found',\n hideOnEnableEl: '.searchbar-hide-on-enable',\n hideOnSearchEl: '.searchbar-hide-on-search',\n backdrop: true,\n removeDiacritics: true,\n customSearch: false,\n hideDividers: true,\n hideGroups: true,\n disableOnBackdropClick: true,\n expandable: false,\n };\n\n // Extend defaults with modules params\n sb.useModulesParams(defaults);\n\n sb.params = Utils.extend(defaults, params);\n\n var $el = $$1(sb.params.el);\n if ($el.length === 0) { return sb; }\n\n $el[0].f7Searchbar = sb;\n\n var $pageEl;\n var $navbarEl;\n if ($el.parents('.page').length > 0) {\n $pageEl = $el.parents('.page');\n } else {\n $navbarEl = $el.parents('.navbar-inner');\n if ($navbarEl.length > 0) {\n if ($navbarEl[0].f7Page) {\n $pageEl = $navbarEl[0].f7Page.$el;\n } else {\n var $currentPageEl = $el.parents('.view').find('.page-current');\n if ($currentPageEl[0] && $currentPageEl[0].f7Page && $currentPageEl[0].f7Page.navbarEl === $navbarEl[0]) {\n $pageEl = $currentPageEl;\n }\n }\n }\n }\n\n var $foundEl;\n if (params.foundEl) {\n $foundEl = $$1(params.foundEl);\n } else if (typeof sb.params.foundEl === 'string' && $pageEl) {\n $foundEl = $pageEl.find(sb.params.foundEl);\n }\n\n var $notFoundEl;\n if (params.notFoundEl) {\n $notFoundEl = $$1(params.notFoundEl);\n } else if (typeof sb.params.notFoundEl === 'string' && $pageEl) {\n $notFoundEl = $pageEl.find(sb.params.notFoundEl);\n }\n\n var $hideOnEnableEl;\n if (params.hideOnEnableEl) {\n $hideOnEnableEl = $$1(params.hideOnEnableEl);\n } else if (typeof sb.params.hideOnEnableEl === 'string' && $pageEl) {\n $hideOnEnableEl = $pageEl.find(sb.params.hideOnEnableEl);\n }\n\n var $hideOnSearchEl;\n if (params.hideOnSearchEl) {\n $hideOnSearchEl = $$1(params.hideOnSearchEl);\n } else if (typeof sb.params.hideOnSearchEl === 'string' && $pageEl) {\n $hideOnSearchEl = $pageEl.find(sb.params.hideOnSearchEl);\n }\n\n var $backdropEl;\n if (sb.params.backdrop) {\n if (sb.params.backdropEl) {\n $backdropEl = $$1(sb.params.backdropEl);\n } else if ($pageEl && $pageEl.length > 0) {\n $backdropEl = $pageEl.find('.searchbar-backdrop');\n } else {\n $backdropEl = $el.siblings('.searchbar-backdrop');\n }\n if ($backdropEl.length === 0) {\n $backdropEl = $$1('
');\n if ($pageEl && $pageEl.length) {\n if ($el.parents($pageEl).length > 0 && $navbarEl && $el.parents($navbarEl).length === 0) {\n $backdropEl.insertBefore($el);\n } else {\n $backdropEl.insertBefore($pageEl.find('.page-content').eq(0));\n }\n } else {\n $backdropEl.insertBefore($el);\n }\n }\n }\n\n var $searchContainer;\n if (sb.params.searchContainer) {\n $searchContainer = $$1(sb.params.searchContainer);\n }\n\n var $inputEl;\n if (sb.params.inputEl) {\n $inputEl = $$1(sb.params.inputEl);\n } else {\n $inputEl = $el.find('input[type=\"search\"]').eq(0);\n }\n\n var $disableButtonEl;\n if (sb.params.disableButton) {\n if (sb.params.disableButtonEl) {\n $disableButtonEl = $$1(sb.params.disableButtonEl);\n } else {\n $disableButtonEl = $el.find('.searchbar-disable-button');\n }\n }\n\n Utils.extend(sb, {\n app: app,\n view: app.views.get($el.parents('.view')),\n $el: $el,\n el: $el[0],\n $backdropEl: $backdropEl,\n backdropEl: $backdropEl && $backdropEl[0],\n $searchContainer: $searchContainer,\n searchContainer: $searchContainer && $searchContainer[0],\n $inputEl: $inputEl,\n inputEl: $inputEl[0],\n $disableButtonEl: $disableButtonEl,\n disableButtonEl: $disableButtonEl && $disableButtonEl[0],\n disableButtonHasMargin: false,\n $pageEl: $pageEl,\n pageEl: $pageEl && $pageEl[0],\n $navbarEl: $navbarEl,\n navbarEl: $navbarEl && $navbarEl[0],\n $foundEl: $foundEl,\n foundEl: $foundEl && $foundEl[0],\n $notFoundEl: $notFoundEl,\n notFoundEl: $notFoundEl && $notFoundEl[0],\n $hideOnEnableEl: $hideOnEnableEl,\n hideOnEnableEl: $hideOnEnableEl && $hideOnEnableEl[0],\n $hideOnSearchEl: $hideOnSearchEl,\n hideOnSearchEl: $hideOnSearchEl && $hideOnSearchEl[0],\n previousQuery: '',\n query: '',\n isVirtualList: $searchContainer && $searchContainer.hasClass('virtual-list'),\n virtualList: undefined,\n enabled: false,\n expandable: sb.params.expandable || $el.hasClass('searchbar-expandable'),\n });\n\n // Events\n function preventSubmit(e) {\n e.preventDefault();\n }\n function onInputFocus(e) {\n sb.enable(e);\n sb.$el.addClass('searchbar-focused');\n }\n function onInputBlur() {\n sb.$el.removeClass('searchbar-focused');\n }\n function onInputChange() {\n var value = sb.$inputEl.val().trim();\n if (\n (\n (sb.$searchContainer && sb.$searchContainer.length > 0)\n && (sb.params.searchIn || sb.isVirtualList || sb.params.searchIn === sb.params.searchItem)\n )\n || sb.params.customSearch\n ) {\n sb.search(value, true);\n }\n }\n function onInputClear(e, previousValue) {\n sb.$el.trigger('searchbar:clear', previousValue);\n sb.emit('local::clear searchbarClear', sb, previousValue);\n }\n function disableOnClick(e) {\n sb.disable(e);\n }\n function onPageBeforeOut() {\n if (!sb || (sb && !sb.$el)) { return; }\n if (sb.enabled) {\n sb.$el.removeClass('searchbar-enabled');\n }\n }\n function onPageBeforeIn() {\n if (!sb || (sb && !sb.$el)) { return; }\n if (sb.enabled) {\n sb.$el.addClass('searchbar-enabled');\n }\n }\n sb.attachEvents = function attachEvents() {\n $el.on('submit', preventSubmit);\n if (sb.params.disableButton) {\n sb.$disableButtonEl.on('click', disableOnClick);\n }\n if (sb.params.disableOnBackdropClick && sb.$backdropEl) {\n sb.$backdropEl.on('click', disableOnClick);\n }\n if (sb.expandable && app.theme === 'ios' && sb.view && $navbarEl && sb.$pageEl) {\n sb.$pageEl.on('page:beforeout', onPageBeforeOut);\n sb.$pageEl.on('page:beforein', onPageBeforeIn);\n }\n sb.$inputEl.on('focus', onInputFocus);\n sb.$inputEl.on('blur', onInputBlur);\n sb.$inputEl.on('change input compositionend', onInputChange);\n sb.$inputEl.on('input:clear', onInputClear);\n };\n sb.detachEvents = function detachEvents() {\n $el.off('submit', preventSubmit);\n if (sb.params.disableButton) {\n sb.$disableButtonEl.off('click', disableOnClick);\n }\n if (sb.params.disableOnBackdropClick && sb.$backdropEl) {\n sb.$backdropEl.off('click', disableOnClick);\n }\n if (sb.expandable && app.theme === 'ios' && sb.view && $navbarEl && sb.$pageEl) {\n sb.$pageEl.off('page:beforeout', onPageBeforeOut);\n sb.$pageEl.off('page:beforein', onPageBeforeIn);\n }\n sb.$inputEl.off('focus', onInputFocus);\n sb.$inputEl.off('blur', onInputBlur);\n sb.$inputEl.off('change input compositionend', onInputChange);\n sb.$inputEl.off('input:clear', onInputClear);\n };\n\n // Install Modules\n sb.useModules();\n\n // Init\n sb.init();\n\n return sb;\n }\n\n if ( FrameworkClass ) Searchbar.__proto__ = FrameworkClass;\n Searchbar.prototype = Object.create( FrameworkClass && FrameworkClass.prototype );\n Searchbar.prototype.constructor = Searchbar;\n\n Searchbar.prototype.clear = function clear (e) {\n var sb = this;\n if (!sb.query && e && $$1(e.target).hasClass('searchbar-clear')) {\n sb.disable();\n return sb;\n }\n var previousQuery = sb.value;\n sb.$inputEl.val('').trigger('change').focus();\n sb.$el.trigger('searchbar:clear', previousQuery);\n sb.emit('local::clear searchbarClear', sb, previousQuery);\n return sb;\n };\n\n Searchbar.prototype.setDisableButtonMargin = function setDisableButtonMargin () {\n var sb = this;\n if (sb.expandable) { return; }\n var app = sb.app;\n sb.$disableButtonEl.transition(0).show();\n sb.$disableButtonEl.css((\"margin-\" + (app.rtl ? 'left' : 'right')), ((-sb.disableButtonEl.offsetWidth) + \"px\"));\n /* eslint no-underscore-dangle: [\"error\", { \"allow\": [\"_clientLeft\"] }] */\n sb._clientLeft = sb.$disableButtonEl[0].clientLeft;\n sb.$disableButtonEl.transition('');\n sb.disableButtonHasMargin = true;\n };\n\n Searchbar.prototype.enable = function enable (setFocus) {\n var sb = this;\n if (sb.enabled) { return sb; }\n var app = sb.app;\n sb.enabled = true;\n function enable() {\n if (sb.$backdropEl && ((sb.$searchContainer && sb.$searchContainer.length) || sb.params.customSearch) && !sb.$el.hasClass('searchbar-enabled') && !sb.query) {\n sb.backdropShow();\n }\n sb.$el.addClass('searchbar-enabled');\n if (!sb.expandable && sb.$disableButtonEl && sb.$disableButtonEl.length > 0 && app.theme === 'ios') {\n if (!sb.disableButtonHasMargin) {\n sb.setDisableButtonMargin();\n }\n sb.$disableButtonEl.css((\"margin-\" + (app.rtl ? 'left' : 'right')), '0px');\n }\n if (sb.$hideOnEnableEl) { sb.$hideOnEnableEl.addClass('hidden-by-searchbar'); }\n sb.$el.trigger('searchbar:enable');\n sb.emit('local::enable searchbarEnable', sb);\n }\n var needsFocus = false;\n if (setFocus === true) {\n if (doc.activeElement !== sb.inputEl) {\n needsFocus = true;\n }\n }\n var isIos = app.device.ios && app.theme === 'ios';\n if (isIos) {\n if (sb.expandable) {\n if (needsFocus) { sb.$inputEl.focus(); }\n enable();\n } else {\n if (needsFocus) { sb.$inputEl.focus(); }\n if (setFocus && (setFocus.type === 'focus' || setFocus === true)) {\n Utils.nextTick(function () {\n enable();\n }, 400);\n } else {\n enable();\n }\n }\n } else {\n if (needsFocus) { sb.$inputEl.focus(); }\n if (app.theme === 'md' && sb.expandable) {\n sb.$el.parents('.page, .view, .navbar-inner').scrollLeft(0);\n }\n enable();\n }\n return sb;\n };\n\n Searchbar.prototype.disable = function disable () {\n var sb = this;\n if (!sb.enabled) { return sb; }\n var app = sb.app;\n sb.$inputEl.val('').trigger('change');\n sb.$el.removeClass('searchbar-enabled');\n sb.$el.removeClass('searchbar-focused');\n if (!sb.expandable && sb.$disableButtonEl && sb.$disableButtonEl.length > 0 && app.theme === 'ios') {\n sb.$disableButtonEl.css((\"margin-\" + (app.rtl ? 'left' : 'right')), ((-sb.disableButtonEl.offsetWidth) + \"px\"));\n }\n\n if (sb.$backdropEl && ((sb.$searchContainer && sb.$searchContainer.length) || sb.params.customSearch)) {\n sb.backdropHide();\n }\n\n sb.enabled = false;\n\n sb.$inputEl.blur();\n\n if (sb.$hideOnEnableEl) { sb.$hideOnEnableEl.removeClass('hidden-by-searchbar'); }\n\n sb.$el.trigger('searchbar:disable');\n sb.emit('local::disable searchbarDisable', sb);\n return sb;\n };\n\n Searchbar.prototype.toggle = function toggle () {\n var sb = this;\n if (sb.enabled) { sb.disable(); }\n else { sb.enable(true); }\n return sb;\n };\n\n Searchbar.prototype.backdropShow = function backdropShow () {\n var sb = this;\n if (sb.$backdropEl) {\n sb.$backdropEl.addClass('searchbar-backdrop-in');\n }\n return sb;\n };\n\n Searchbar.prototype.backdropHide = function backdropHide () {\n var sb = this;\n if (sb.$backdropEl) {\n sb.$backdropEl.removeClass('searchbar-backdrop-in');\n }\n return sb;\n };\n\n Searchbar.prototype.search = function search (query, internal) {\n var sb = this;\n sb.previousQuery = sb.query || '';\n if (query === sb.previousQuery) { return sb; }\n\n if (!internal) {\n if (!sb.enabled) {\n sb.enable();\n }\n sb.$inputEl.val(query);\n }\n sb.query = query;\n sb.value = query;\n\n var $searchContainer = sb.$searchContainer;\n var $el = sb.$el;\n var $foundEl = sb.$foundEl;\n var $notFoundEl = sb.$notFoundEl;\n var $hideOnSearchEl = sb.$hideOnSearchEl;\n var isVirtualList = sb.isVirtualList;\n\n // Hide on search element\n if (query.length > 0 && $hideOnSearchEl) {\n $hideOnSearchEl.addClass('hidden-by-searchbar');\n } else if ($hideOnSearchEl) {\n $hideOnSearchEl.removeClass('hidden-by-searchbar');\n }\n // Add active/inactive classes on overlay\n if (\n ($searchContainer && $searchContainer.length && $el.hasClass('searchbar-enabled'))\n || (sb.params.customSearch && $el.hasClass('searchbar-enabled'))\n ) {\n if (query.length === 0) {\n sb.backdropShow();\n } else {\n sb.backdropHide();\n }\n }\n\n if (sb.params.customSearch) {\n $el.trigger('searchbar:search', query, sb.previousQuery);\n sb.emit('local::search searchbarSearch', sb, query, sb.previousQuery);\n return sb;\n }\n\n var foundItems = [];\n var vlQuery;\n if (isVirtualList) {\n sb.virtualList = $searchContainer[0].f7VirtualList;\n if (query.trim() === '') {\n sb.virtualList.resetFilter();\n if ($notFoundEl) { $notFoundEl.hide(); }\n if ($foundEl) { $foundEl.show(); }\n return sb;\n }\n vlQuery = sb.params.removeDiacritics ? Utils.removeDiacritics(query) : query;\n if (sb.virtualList.params.searchAll) {\n foundItems = sb.virtualList.params.searchAll(vlQuery, sb.virtualList.items) || [];\n } else if (sb.virtualList.params.searchByItem) {\n for (var i = 0; i < sb.virtualList.items.length; i += 1) {\n if (sb.virtualList.params.searchByItem(vlQuery, sb.virtualList.params.items[i], i)) {\n foundItems.push(i);\n }\n }\n }\n } else {\n var values;\n if (sb.params.removeDiacritics) { values = Utils.removeDiacritics(query.trim().toLowerCase()).split(' '); }\n else {\n values = query.trim().toLowerCase().split(' ');\n }\n $searchContainer.find(sb.params.searchItem).removeClass('hidden-by-searchbar').each(function (itemIndex, itemEl) {\n var $itemEl = $$1(itemEl);\n var compareWithText = [];\n var $searchIn = sb.params.searchIn ? $itemEl.find(sb.params.searchIn) : $itemEl;\n if (sb.params.searchIn === sb.params.searchItem) {\n $searchIn = $itemEl;\n }\n $searchIn.each(function (searchInIndex, searchInEl) {\n var itemText = $$1(searchInEl).text().trim().toLowerCase();\n if (sb.params.removeDiacritics) { itemText = Utils.removeDiacritics(itemText); }\n compareWithText.push(itemText);\n });\n compareWithText = compareWithText.join(' ');\n var wordsMatch = 0;\n for (var i = 0; i < values.length; i += 1) {\n if (compareWithText.indexOf(values[i]) >= 0) { wordsMatch += 1; }\n }\n if (wordsMatch !== values.length && !(sb.params.ignore && $itemEl.is(sb.params.ignore))) {\n $itemEl.addClass('hidden-by-searchbar');\n } else {\n foundItems.push($itemEl[0]);\n }\n });\n\n if (sb.params.hideDividers) {\n $searchContainer.find('.item-divider, .list-group-title').each(function (titleIndex, titleEl) {\n var $titleEl = $$1(titleEl);\n var $nextElements = $titleEl.nextAll('li');\n var hide = true;\n for (var i = 0; i < $nextElements.length; i += 1) {\n var $nextEl = $nextElements.eq(i);\n if ($nextEl.hasClass('list-group-title') || $nextEl.hasClass('item-divider')) { break; }\n if (!$nextEl.hasClass('hidden-by-searchbar')) {\n hide = false;\n }\n }\n var ignore = sb.params.ignore && $titleEl.is(sb.params.ignore);\n if (hide && !ignore) { $titleEl.addClass('hidden-by-searchbar'); }\n else { $titleEl.removeClass('hidden-by-searchbar'); }\n });\n }\n if (sb.params.hideGroups) {\n $searchContainer.find('.list-group').each(function (groupIndex, groupEl) {\n var $groupEl = $$1(groupEl);\n var ignore = sb.params.ignore && $groupEl.is(sb.params.ignore);\n var notHidden = $groupEl.find('li:not(.hidden-by-searchbar)');\n if (notHidden.length === 0 && !ignore) {\n $groupEl.addClass('hidden-by-searchbar');\n } else {\n $groupEl.removeClass('hidden-by-searchbar');\n }\n });\n }\n }\n\n if (foundItems.length === 0) {\n if ($notFoundEl) { $notFoundEl.show(); }\n if ($foundEl) { $foundEl.hide(); }\n } else {\n if ($notFoundEl) { $notFoundEl.hide(); }\n if ($foundEl) { $foundEl.show(); }\n }\n if (isVirtualList && sb.virtualList) {\n sb.virtualList.filterItems(foundItems);\n }\n\n $el.trigger('searchbar:search', query, sb.previousQuery, foundItems);\n sb.emit('local::search searchbarSearch', sb, query, sb.previousQuery, foundItems);\n\n return sb;\n };\n\n Searchbar.prototype.init = function init () {\n var sb = this;\n sb.attachEvents();\n };\n\n Searchbar.prototype.destroy = function destroy () {\n var sb = this;\n sb.emit('local::beforeDestroy searchbarBeforeDestroy', sb);\n sb.$el.trigger('searchbar:beforedestroy', sb);\n sb.detachEvents();\n delete sb.$el.f7Searchbar;\n Utils.deleteProps(sb);\n };\n\n return Searchbar;\n }(Framework7Class));\n\n var Searchbar$1 = {\n name: 'searchbar',\n static: {\n Searchbar: Searchbar,\n },\n create: function create() {\n var app = this;\n app.searchbar = ConstructorMethods({\n defaultSelector: '.searchbar',\n constructor: Searchbar,\n app: app,\n domProp: 'f7Searchbar',\n addMethods: 'clear enable disable toggle search'.split(' '),\n });\n },\n on: {\n tabMounted: function tabMounted(tabEl) {\n var app = this;\n $$1(tabEl).find('.searchbar-init').each(function (index, searchbarEl) {\n var $searchbarEl = $$1(searchbarEl);\n app.searchbar.create(Utils.extend($searchbarEl.dataset(), { el: searchbarEl }));\n });\n },\n tabBeforeRemove: function tabBeforeRemove(tabEl) {\n $$1(tabEl).find('.searchbar-init').each(function (index, searchbarEl) {\n if (searchbarEl.f7Searchbar && searchbarEl.f7Searchbar.destroy) {\n searchbarEl.f7Searchbar.destroy();\n }\n });\n },\n pageInit: function pageInit(page) {\n var app = this;\n page.$el.find('.searchbar-init').each(function (index, searchbarEl) {\n var $searchbarEl = $$1(searchbarEl);\n app.searchbar.create(Utils.extend($searchbarEl.dataset(), { el: searchbarEl }));\n });\n if (app.theme === 'ios' && page.view && page.view.router.separateNavbar && page.$navbarEl && page.$navbarEl.length > 0) {\n page.$navbarEl.find('.searchbar-init').each(function (index, searchbarEl) {\n var $searchbarEl = $$1(searchbarEl);\n app.searchbar.create(Utils.extend($searchbarEl.dataset(), { el: searchbarEl }));\n });\n }\n },\n pageBeforeRemove: function pageBeforeRemove(page) {\n var app = this;\n page.$el.find('.searchbar-init').each(function (index, searchbarEl) {\n if (searchbarEl.f7Searchbar && searchbarEl.f7Searchbar.destroy) {\n searchbarEl.f7Searchbar.destroy();\n }\n });\n if (app.theme === 'ios' && page.view && page.view.router.separateNavbar && page.$navbarEl && page.$navbarEl.length > 0) {\n page.$navbarEl.find('.searchbar-init').each(function (index, searchbarEl) {\n if (searchbarEl.f7Searchbar && searchbarEl.f7Searchbar.destroy) {\n searchbarEl.f7Searchbar.destroy();\n }\n });\n }\n },\n },\n clicks: {\n '.searchbar-clear': function clear($clickedEl, data) {\n if ( data === void 0 ) data = {};\n\n var app = this;\n var sb = app.searchbar.get(data.searchbar);\n if (sb) { sb.clear(); }\n },\n '.searchbar-enable': function enable($clickedEl, data) {\n if ( data === void 0 ) data = {};\n\n var app = this;\n var sb = app.searchbar.get(data.searchbar);\n if (sb) { sb.enable(true); }\n },\n '.searchbar-disable': function disable($clickedEl, data) {\n if ( data === void 0 ) data = {};\n\n var app = this;\n var sb = app.searchbar.get(data.searchbar);\n if (sb) { sb.disable(); }\n },\n '.searchbar-toggle': function toggle($clickedEl, data) {\n if ( data === void 0 ) data = {};\n\n var app = this;\n var sb = app.searchbar.get(data.searchbar);\n if (sb) { sb.toggle(); }\n },\n },\n };\n\n var Messages = (function (Framework7Class$$1) {\n function Messages(app, params) {\n if ( params === void 0 ) params = {};\n\n Framework7Class$$1.call(this, params, [app]);\n\n var m = this;\n\n var defaults = {\n autoLayout: true,\n messages: [],\n newMessagesFirst: false,\n scrollMessages: true,\n scrollMessagesOnEdge: true,\n firstMessageRule: undefined,\n lastMessageRule: undefined,\n tailMessageRule: undefined,\n sameNameMessageRule: undefined,\n sameHeaderMessageRule: undefined,\n sameFooterMessageRule: undefined,\n sameAvatarMessageRule: undefined,\n customClassMessageRule: undefined,\n renderMessage: undefined,\n };\n\n // Extend defaults with modules params\n m.useModulesParams(defaults);\n\n m.params = Utils.extend(defaults, params);\n\n var $el = $$1(params.el).eq(0);\n if ($el.length === 0) { return m; }\n\n $el[0].f7Messages = m;\n\n var $pageContentEl = $el.closest('.page-content').eq(0);\n\n Utils.extend(m, {\n messages: m.params.messages,\n $el: $el,\n el: $el[0],\n $pageContentEl: $pageContentEl,\n pageContentEl: $pageContentEl[0],\n\n });\n // Install Modules\n m.useModules();\n\n // Init\n m.init();\n\n return m;\n }\n\n if ( Framework7Class$$1 ) Messages.__proto__ = Framework7Class$$1;\n Messages.prototype = Object.create( Framework7Class$$1 && Framework7Class$$1.prototype );\n Messages.prototype.constructor = Messages;\n // eslint-disable-next-line\n Messages.prototype.getMessageData = function getMessageData (messageEl) {\n var $messageEl = $$1(messageEl);\n var data = {\n name: $messageEl.find('.message-name').html(),\n header: $messageEl.find('.message-header').html(),\n textHeader: $messageEl.find('.message-text-header').html(),\n textFooter: $messageEl.find('.message-text-footer').html(),\n footer: $messageEl.find('.message-footer').html(),\n isTitle: $messageEl.hasClass('messages-title'),\n type: $messageEl.hasClass('message-sent') ? 'sent' : 'received',\n text: $messageEl.find('.message-text').html(),\n image: $messageEl.find('.message-image').html(),\n imageSrc: $messageEl.find('.message-image img').attr('src'),\n typing: $messageEl.hasClass('message-typing'),\n };\n if (data.isTitle) {\n data.text = $messageEl.html();\n }\n if (data.text && data.textHeader) {\n data.text = data.text.replace((\"\"), '');\n }\n if (data.text && data.textFooter) {\n data.text = data.text.replace((\"\"), '');\n }\n var avatar = $messageEl.find('.message-avatar').css('background-image');\n if (avatar === 'none' || avatar === '') { avatar = undefined; }\n if (avatar && typeof avatar === 'string') {\n avatar = avatar.replace('url(', '').replace(')', '').replace(/\"/g, '').replace(/'/g, '');\n } else {\n avatar = undefined;\n }\n data.avatar = avatar;\n\n return data;\n };\n\n Messages.prototype.getMessagesData = function getMessagesData () {\n var m = this;\n var data = [];\n m.$el.find('.message, .messages-title').each(function (index, messageEl) {\n data.push(m.getMessageData(messageEl));\n });\n return data;\n };\n\n Messages.prototype.renderMessage = function renderMessage (messageToRender) {\n var m = this;\n var message = Utils.extend({\n type: 'sent',\n }, messageToRender);\n if (m.params.renderMessage) {\n return m.params.renderMessage.call(m, message);\n }\n if (message.isTitle) {\n return (\"\" + (message.text) + \"
\");\n }\n return (\"\\n \\n \" + (message.avatar ? (\"\\n
\\n \") : '') + \"\\n
\\n \" + (message.name ? (\"
\" + (message.name) + \"
\") : '') + \"\\n \" + (message.header ? (\"\") : '') + \"\\n
\\n \" + (message.textHeader ? (\"\") : '') + \"\\n \" + (message.image ? (\"
\" + (message.image) + \"
\") : '') + \"\\n \" + (message.imageSrc && !message.image ? (\"
\") : '') + \"\\n \" + (message.text || message.isTyping ? (\"
\" + (message.text || '') + (message.isTyping ? '
' : '') + \"
\") : '') + \"\\n \" + (message.textFooter ? (\"\") : '') + \"\\n
\\n \" + (message.footer ? (\"\") : '') + \"\\n
\\n
\\n \");\n };\n\n Messages.prototype.renderMessages = function renderMessages (messagesToRender, method) {\n if ( messagesToRender === void 0 ) messagesToRender = this.messages;\n if ( method === void 0 ) method = this.params.newMessagesFirst ? 'prepend' : 'append';\n\n var m = this;\n var html = messagesToRender.map(function (message) { return m.renderMessage(message); }).join('');\n m.$el[method](html);\n };\n\n Messages.prototype.isFirstMessage = function isFirstMessage () {\n var ref;\n\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n var m = this;\n if (m.params.firstMessageRule) { return (ref = m.params).firstMessageRule.apply(ref, args); }\n return false;\n };\n\n Messages.prototype.isLastMessage = function isLastMessage () {\n var ref;\n\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n var m = this;\n if (m.params.lastMessageRule) { return (ref = m.params).lastMessageRule.apply(ref, args); }\n return false;\n };\n\n Messages.prototype.isTailMessage = function isTailMessage () {\n var ref;\n\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n var m = this;\n if (m.params.tailMessageRule) { return (ref = m.params).tailMessageRule.apply(ref, args); }\n return false;\n };\n\n Messages.prototype.isSameNameMessage = function isSameNameMessage () {\n var ref;\n\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n var m = this;\n if (m.params.sameNameMessageRule) { return (ref = m.params).sameNameMessageRule.apply(ref, args); }\n return false;\n };\n\n Messages.prototype.isSameHeaderMessage = function isSameHeaderMessage () {\n var ref;\n\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n var m = this;\n if (m.params.sameHeaderMessageRule) { return (ref = m.params).sameHeaderMessageRule.apply(ref, args); }\n return false;\n };\n\n Messages.prototype.isSameFooterMessage = function isSameFooterMessage () {\n var ref;\n\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n var m = this;\n if (m.params.sameFooterMessageRule) { return (ref = m.params).sameFooterMessageRule.apply(ref, args); }\n return false;\n };\n\n Messages.prototype.isSameAvatarMessage = function isSameAvatarMessage () {\n var ref;\n\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n var m = this;\n if (m.params.sameAvatarMessageRule) { return (ref = m.params).sameAvatarMessageRule.apply(ref, args); }\n return false;\n };\n\n Messages.prototype.isCustomClassMessage = function isCustomClassMessage () {\n var ref;\n\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n var m = this;\n if (m.params.customClassMessageRule) { return (ref = m.params).customClassMessageRule.apply(ref, args); }\n return undefined;\n };\n\n Messages.prototype.layout = function layout () {\n var m = this;\n m.$el.find('.message, .messages-title').each(function (index, messageEl) {\n var $messageEl = $$1(messageEl);\n if (!m.messages) {\n m.messages = m.getMessagesData();\n }\n var classes = [];\n var message = m.messages[index];\n var previousMessage = m.messages[index - 1];\n var nextMessage = m.messages[index + 1];\n if (m.isFirstMessage(message, previousMessage, nextMessage)) {\n classes.push('message-first');\n }\n if (m.isLastMessage(message, previousMessage, nextMessage)) {\n classes.push('message-last');\n }\n if (m.isTailMessage(message, previousMessage, nextMessage)) {\n classes.push('message-tail');\n }\n if (m.isSameNameMessage(message, previousMessage, nextMessage)) {\n classes.push('message-same-name');\n }\n if (m.isSameHeaderMessage(message, previousMessage, nextMessage)) {\n classes.push('message-same-header');\n }\n if (m.isSameFooterMessage(message, previousMessage, nextMessage)) {\n classes.push('message-same-footer');\n }\n if (m.isSameAvatarMessage(message, previousMessage, nextMessage)) {\n classes.push('message-same-avatar');\n }\n var customMessageClasses = m.isCustomClassMessage(message, previousMessage, nextMessage);\n if (customMessageClasses && customMessageClasses.length) {\n if (typeof customMessageClasses === 'string') {\n customMessageClasses = customMessageClasses.split(' ');\n }\n customMessageClasses.forEach(function (customClass) {\n classes.push(customClass);\n });\n }\n $messageEl.removeClass('message-first message-last message-tail message-same-name message-same-header message-same-footer message-same-avatar');\n classes.forEach(function (className) {\n $messageEl.addClass(className);\n });\n });\n };\n\n Messages.prototype.clear = function clear () {\n var m = this;\n m.messages = [];\n m.$el.html('');\n };\n\n Messages.prototype.removeMessage = function removeMessage (messageToRemove, layout) {\n if ( layout === void 0 ) layout = true;\n\n var m = this;\n // Index or El\n var index;\n var $el;\n if (typeof messageToRemove === 'number') {\n index = messageToRemove;\n $el = m.$el.find('.message, .messages-title').eq(index);\n } else if (m.messages && m.messages.indexOf(messageToRemove) >= 0) {\n index = m.messages.indexOf(messageToRemove);\n $el = m.$el.children().eq(index);\n } else {\n $el = $$1(messageToRemove);\n index = $el.index();\n }\n if ($el.length === 0) {\n return m;\n }\n $el.remove();\n m.messages.splice(index, 1);\n if (m.params.autoLayout && layout) { m.layout(); }\n return m;\n };\n\n Messages.prototype.removeMessages = function removeMessages (messagesToRemove, layout) {\n if ( layout === void 0 ) layout = true;\n\n var m = this;\n if (Array.isArray(messagesToRemove)) {\n var messagesToRemoveEls = [];\n messagesToRemove.forEach(function (messageToRemoveIndex) {\n messagesToRemoveEls.push(m.$el.find('.message, .messages-title').eq(messageToRemoveIndex));\n });\n messagesToRemoveEls.forEach(function (messageToRemove) {\n m.removeMessage(messageToRemove, false);\n });\n } else {\n $$1(messagesToRemove).each(function (index, messageToRemove) {\n m.removeMessage(messageToRemove, false);\n });\n }\n if (m.params.autoLayout && layout) { m.layout(); }\n return m;\n };\n\n Messages.prototype.addMessage = function addMessage () {\n var assign, assign$1;\n\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n var m = this;\n var messageToAdd;\n var animate;\n var method;\n if (typeof args[1] === 'boolean') {\n (assign = args, messageToAdd = assign[0], animate = assign[1], method = assign[2]);\n } else {\n (assign$1 = args, messageToAdd = assign$1[0], method = assign$1[1], animate = assign$1[2]);\n }\n if (typeof animate === 'undefined') {\n animate = true;\n }\n if (typeof method === 'undefined') {\n method = m.params.newMessagesFirst ? 'prepend' : 'append';\n }\n\n return m.addMessages([messageToAdd], animate, method);\n };\n\n Messages.prototype.addMessages = function addMessages () {\n var assign, assign$1;\n\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n var m = this;\n var messagesToAdd;\n var animate;\n var method;\n if (typeof args[1] === 'boolean') {\n (assign = args, messagesToAdd = assign[0], animate = assign[1], method = assign[2]);\n } else {\n (assign$1 = args, messagesToAdd = assign$1[0], method = assign$1[1], animate = assign$1[2]);\n }\n if (typeof animate === 'undefined') {\n animate = true;\n }\n if (typeof method === 'undefined') {\n method = m.params.newMessagesFirst ? 'prepend' : 'append';\n }\n\n // Define scroll positions before new messages added\n var scrollHeightBefore = m.pageContentEl.scrollHeight;\n var heightBefore = m.pageContentEl.offsetHeight;\n var scrollBefore = m.pageContentEl.scrollTop;\n\n // Add message to DOM and data\n var messagesHTML = '';\n var typingMessage = m.messages.filter(function (el) { return el.isTyping; })[0];\n messagesToAdd.forEach(function (messageToAdd) {\n if (typingMessage) {\n if (method === 'append') {\n m.messages.splice(m.messages.indexOf(typingMessage), 0, messageToAdd);\n } else {\n m.messages.splice(m.messages.indexOf(typingMessage) + 1, 0, messageToAdd);\n }\n } else {\n m.messages[method === 'append' ? 'push' : 'unshift'](messageToAdd);\n }\n messagesHTML += m.renderMessage(messageToAdd);\n });\n var $messagesEls = $$1(messagesHTML);\n if (animate) {\n if (method === 'append' && !m.params.newMessagesFirst) {\n $messagesEls.addClass('message-appear-from-bottom');\n }\n if (method === 'prepend' && m.params.newMessagesFirst) {\n $messagesEls.addClass('message-appear-from-top');\n }\n }\n if (typingMessage) {\n if (method === 'append') {\n $messagesEls.insertBefore(m.$el.find('.message-typing'));\n } else {\n $messagesEls.insertAfter(m.$el.find('.message-typing'));\n }\n } else {\n m.$el[method]($messagesEls);\n }\n\n // Layout\n if (m.params.autoLayout) { m.layout(); }\n\n if (method === 'prepend' && !typingMessage) {\n m.pageContentEl.scrollTop = scrollBefore + (m.pageContentEl.scrollHeight - scrollHeightBefore);\n }\n\n if (m.params.scrollMessages && ((method === 'append' && !m.params.newMessagesFirst) || (method === 'prepend' && m.params.newMessagesFirst && !typingMessage))) {\n if (m.params.scrollMessagesOnEdge) {\n var onEdge = false;\n if (m.params.newMessagesFirst && scrollBefore === 0) {\n onEdge = true;\n }\n if (!m.params.newMessagesFirst && (scrollBefore - (scrollHeightBefore - heightBefore) >= -10)) {\n onEdge = true;\n }\n if (onEdge) { m.scroll(animate ? undefined : 0); }\n } else {\n m.scroll(animate ? undefined : 0);\n }\n }\n\n return m;\n };\n\n Messages.prototype.showTyping = function showTyping (message) {\n if ( message === void 0 ) message = {};\n\n var m = this;\n var typingMessage = m.messages.filter(function (el) { return el.isTyping; })[0];\n if (typingMessage) {\n m.removeMessage(m.messages.indexOf(typingMessage));\n }\n m.addMessage(Utils.extend({\n type: 'received',\n isTyping: true,\n }, message));\n return m;\n };\n\n Messages.prototype.hideTyping = function hideTyping () {\n var m = this;\n var typingMessageIndex;\n var typingFound;\n m.messages.forEach(function (message, index) {\n if (message.isTyping) { typingMessageIndex = index; }\n });\n if (typeof typingMessageIndex !== 'undefined') {\n if (m.$el.find('.message').eq(typingMessageIndex).hasClass('message-typing')) {\n typingFound = true;\n m.removeMessage(typingMessageIndex);\n }\n }\n if (!typingFound) {\n var $typingMessageEl = m.$el.find('.message-typing');\n if ($typingMessageEl.length) {\n m.removeMessage($typingMessageEl);\n }\n }\n return m;\n };\n\n Messages.prototype.scroll = function scroll (duration, scrollTop) {\n if ( duration === void 0 ) duration = 300;\n\n var m = this;\n var currentScroll = m.pageContentEl.scrollTop;\n var newScrollTop;\n if (typeof scrollTop !== 'undefined') { newScrollTop = scrollTop; }\n else {\n newScrollTop = m.params.newMessagesFirst ? 0 : m.pageContentEl.scrollHeight - m.pageContentEl.offsetHeight;\n if (newScrollTop === currentScroll) { return m; }\n }\n m.$pageContentEl.scrollTop(newScrollTop, duration);\n return m;\n };\n\n Messages.prototype.init = function init () {\n var m = this;\n if (!m.messages || m.messages.length === 0) {\n m.messages = m.getMessagesData();\n }\n if (m.params.messages && m.params.messages.length) {\n m.renderMessages();\n }\n if (m.params.autoLayout) { m.layout(); }\n if (m.params.scrollMessages) { m.scroll(0); }\n };\n\n Messages.prototype.destroy = function destroy () {\n var m = this;\n m.emit('local::beforeDestroy messagesBeforeDestroy', m);\n m.$el.trigger('messages:beforedestroy', m);\n m.$el[0].f7Messages = null;\n delete m.$el[0].f7Messages;\n Utils.deleteProps(m);\n };\n\n return Messages;\n }(Framework7Class));\n\n var Messages$1 = {\n name: 'messages',\n static: {\n Messages: Messages,\n },\n create: function create() {\n var app = this;\n app.messages = ConstructorMethods({\n defaultSelector: '.messages',\n constructor: Messages,\n app: app,\n domProp: 'f7Messages',\n addMethods: 'renderMessages layout scroll clear removeMessage removeMessages addMessage addMessages'.split(' '),\n });\n },\n on: {\n tabBeforeRemove: function tabBeforeRemove(tabEl) {\n var app = this;\n $$1(tabEl).find('.messages-init').each(function (index, messagesEl) {\n app.messages.destroy(messagesEl);\n });\n },\n tabMounted: function tabMounted(tabEl) {\n var app = this;\n $$1(tabEl).find('.messages-init').each(function (index, messagesEl) {\n app.messages.create({ el: messagesEl });\n });\n },\n pageBeforeRemove: function pageBeforeRemove(page) {\n var app = this;\n page.$el.find('.messages-init').each(function (index, messagesEl) {\n app.messages.destroy(messagesEl);\n });\n },\n pageInit: function pageInit(page) {\n var app = this;\n page.$el.find('.messages-init').each(function (index, messagesEl) {\n app.messages.create({ el: messagesEl });\n });\n },\n },\n clicks: {\n\n },\n };\n\n var Messagebar = (function (Framework7Class$$1) {\n function Messagebar(app, params) {\n if ( params === void 0 ) params = {};\n\n Framework7Class$$1.call(this, params, [app]);\n\n var messagebar = this;\n\n var defaults = {\n top: false,\n topOffset: 0,\n bottomOffset: 0,\n attachments: [],\n renderAttachments: undefined,\n renderAttachment: undefined,\n maxHeight: null,\n resizePage: true,\n };\n\n // Extend defaults with modules params\n messagebar.useModulesParams(defaults);\n\n messagebar.params = Utils.extend(defaults, params);\n\n // El\n var $el = $$1(messagebar.params.el);\n if ($el.length === 0) { return messagebar; }\n\n $el[0].f7Messagebar = messagebar;\n\n // Page and PageContent\n var $pageEl = $el.parents('.page').eq(0);\n var $pageContentEl = $pageEl.find('.page-content').eq(0);\n\n // Area\n var $areaEl = $el.find('.messagebar-area');\n\n // Textarea\n var $textareaEl;\n if (messagebar.params.textareaEl) {\n $textareaEl = $$1(messagebar.params.textareaEl);\n } else {\n $textareaEl = $el.find('textarea');\n }\n\n // Attachments & Library\n var $attachmentsEl = $el.find('.messagebar-attachments');\n var $sheetEl = $el.find('.messagebar-sheet');\n\n if (messagebar.params.top) {\n $el.addClass('messagebar-top');\n }\n\n Utils.extend(messagebar, {\n $el: $el,\n el: $el[0],\n $areaEl: $areaEl,\n areaEl: $areaEl[0],\n $textareaEl: $textareaEl,\n textareaEl: $textareaEl[0],\n $attachmentsEl: $attachmentsEl,\n attachmentsEl: $attachmentsEl[0],\n attachmentsVisible: $attachmentsEl.hasClass('messagebar-attachments-visible'),\n $sheetEl: $sheetEl,\n sheetEl: $sheetEl[0],\n sheetVisible: $sheetEl.hasClass('messagebar-sheet-visible'),\n $pageEl: $pageEl,\n pageEl: $pageEl[0],\n $pageContentEl: $pageContentEl,\n pageContentEl: $pageContentEl,\n top: $el.hasClass('messagebar-top') || messagebar.params.top,\n attachments: [],\n });\n\n // Events\n function onAppResize() {\n if (messagebar.params.resizePage) {\n messagebar.resizePage();\n }\n }\n function onSubmit(e) {\n e.preventDefault();\n }\n function onAttachmentClick(e) {\n var index = $$1(this).index();\n if ($$1(e.target).closest('.messagebar-attachment-delete').length) {\n $$1(this).trigger('messagebar:attachmentdelete', index);\n messagebar.emit('local::attachmentDelete messagebarAttachmentDelete', messagebar, this, index);\n } else {\n $$1(this).trigger('messagebar:attachmentclick', index);\n messagebar.emit('local::attachmentClick messagebarAttachmentClick', messagebar, this, index);\n }\n }\n function onTextareaChange() {\n messagebar.checkEmptyState();\n messagebar.$el.trigger('messagebar:change');\n messagebar.emit('local::change messagebarChange', messagebar);\n }\n function onTextareaFocus() {\n messagebar.sheetHide();\n messagebar.$el.addClass('messagebar-focused');\n messagebar.$el.trigger('messagebar:focus');\n messagebar.emit('local::focus messagebarFocus', messagebar);\n }\n function onTextareaBlur() {\n messagebar.$el.removeClass('messagebar-focused');\n messagebar.$el.trigger('messagebar:blur');\n messagebar.emit('local::blur messagebarBlur', messagebar);\n }\n\n messagebar.attachEvents = function attachEvents() {\n $el.on('textarea:resize', onAppResize);\n $el.on('submit', onSubmit);\n $el.on('click', '.messagebar-attachment', onAttachmentClick);\n $textareaEl.on('change input', onTextareaChange);\n $textareaEl.on('focus', onTextareaFocus);\n $textareaEl.on('blur', onTextareaBlur);\n app.on('resize', onAppResize);\n };\n messagebar.detachEvents = function detachEvents() {\n $el.off('textarea:resize', onAppResize);\n $el.off('submit', onSubmit);\n $el.off('click', '.messagebar-attachment', onAttachmentClick);\n $textareaEl.off('change input', onTextareaChange);\n $textareaEl.off('focus', onTextareaFocus);\n $textareaEl.off('blur', onTextareaBlur);\n app.off('resize', onAppResize);\n };\n\n\n // Install Modules\n messagebar.useModules();\n\n // Init\n messagebar.init();\n\n return messagebar;\n }\n\n if ( Framework7Class$$1 ) Messagebar.__proto__ = Framework7Class$$1;\n Messagebar.prototype = Object.create( Framework7Class$$1 && Framework7Class$$1.prototype );\n Messagebar.prototype.constructor = Messagebar;\n\n Messagebar.prototype.focus = function focus () {\n var messagebar = this;\n messagebar.$textareaEl.focus();\n return messagebar;\n };\n\n Messagebar.prototype.blur = function blur () {\n var messagebar = this;\n messagebar.$textareaEl.blur();\n return messagebar;\n };\n\n Messagebar.prototype.clear = function clear () {\n var messagebar = this;\n messagebar.$textareaEl.val('').trigger('change');\n return messagebar;\n };\n\n Messagebar.prototype.getValue = function getValue () {\n var messagebar = this;\n return messagebar.$textareaEl.val().trim();\n };\n\n Messagebar.prototype.setValue = function setValue (value) {\n var messagebar = this;\n messagebar.$textareaEl.val(value).trigger('change');\n return messagebar;\n };\n\n Messagebar.prototype.setPlaceholder = function setPlaceholder (placeholder) {\n var messagebar = this;\n messagebar.$textareaEl.attr('placeholder', placeholder);\n return messagebar;\n };\n\n Messagebar.prototype.resizePage = function resizePage () {\n var messagebar = this;\n var params = messagebar.params;\n var $el = messagebar.$el;\n var top = messagebar.top;\n var $pageEl = messagebar.$pageEl;\n var $pageContentEl = messagebar.$pageContentEl;\n var $areaEl = messagebar.$areaEl;\n var $textareaEl = messagebar.$textareaEl;\n var $sheetEl = messagebar.$sheetEl;\n var $attachmentsEl = messagebar.$attachmentsEl;\n var elHeight = $el[0].offsetHeight;\n var maxHeight = params.maxHeight;\n if (top) ; else {\n var currentPaddingBottom = parseInt($pageContentEl.css('padding-bottom'), 10);\n var requiredPaddingBottom = elHeight + params.bottomOffset;\n if (requiredPaddingBottom !== currentPaddingBottom && $pageContentEl.length) {\n var currentPaddingTop = parseInt($pageContentEl.css('padding-top'), 10);\n var pageScrollHeight = $pageContentEl[0].scrollHeight;\n var pageOffsetHeight = $pageContentEl[0].offsetHeight;\n var pageScrollTop = $pageContentEl[0].scrollTop;\n var scrollOnBottom = (pageScrollTop === pageScrollHeight - pageOffsetHeight);\n if (!maxHeight) {\n maxHeight = $pageEl[0].offsetHeight - currentPaddingTop - $sheetEl.outerHeight() - $attachmentsEl.outerHeight() - parseInt($areaEl.css('margin-top'), 10) - parseInt($areaEl.css('margin-bottom'), 10);\n }\n $textareaEl.css('max-height', (maxHeight + \"px\"));\n $pageContentEl.css('padding-bottom', (requiredPaddingBottom + \"px\"));\n if (scrollOnBottom) {\n $pageContentEl.scrollTop($pageContentEl[0].scrollHeight - pageOffsetHeight);\n }\n $el.trigger('messagebar:resizepage');\n messagebar.emit('local::resizePage messagebarResizePage', messagebar);\n }\n }\n };\n\n Messagebar.prototype.checkEmptyState = function checkEmptyState () {\n var messagebar = this;\n var $el = messagebar.$el;\n var $textareaEl = messagebar.$textareaEl;\n var value = $textareaEl.val().trim();\n if (value && value.length) {\n $el.addClass('messagebar-with-value');\n } else {\n $el.removeClass('messagebar-with-value');\n }\n };\n\n Messagebar.prototype.attachmentsCreate = function attachmentsCreate (innerHTML) {\n if ( innerHTML === void 0 ) innerHTML = '';\n\n var messagebar = this;\n var $attachmentsEl = $$1((\"\" + innerHTML + \"
\"));\n $attachmentsEl.insertBefore(messagebar.$textareaEl);\n Utils.extend(messagebar, {\n $attachmentsEl: $attachmentsEl,\n attachmentsEl: $attachmentsEl[0],\n });\n return messagebar;\n };\n\n Messagebar.prototype.attachmentsShow = function attachmentsShow (innerHTML) {\n if ( innerHTML === void 0 ) innerHTML = '';\n\n var messagebar = this;\n messagebar.$attachmentsEl = messagebar.$el.find('.messagebar-attachments');\n if (messagebar.$attachmentsEl.length === 0) {\n messagebar.attachmentsCreate(innerHTML);\n }\n messagebar.$el.addClass('messagebar-attachments-visible');\n messagebar.attachmentsVisible = true;\n if (messagebar.params.resizePage) {\n messagebar.resizePage();\n }\n return messagebar;\n };\n\n Messagebar.prototype.attachmentsHide = function attachmentsHide () {\n var messagebar = this;\n messagebar.$el.removeClass('messagebar-attachments-visible');\n messagebar.attachmentsVisible = false;\n if (messagebar.params.resizePage) {\n messagebar.resizePage();\n }\n return messagebar;\n };\n\n Messagebar.prototype.attachmentsToggle = function attachmentsToggle () {\n var messagebar = this;\n if (messagebar.attachmentsVisible) {\n messagebar.attachmentsHide();\n } else {\n messagebar.attachmentsShow();\n }\n return messagebar;\n };\n\n Messagebar.prototype.renderAttachment = function renderAttachment (attachment) {\n var messagebar = this;\n if (messagebar.params.renderAttachment) {\n return messagebar.params.renderAttachment.call(messagebar, attachment);\n }\n return (\"\\n \\n
\\n
\\n
\\n \");\n };\n\n Messagebar.prototype.renderAttachments = function renderAttachments () {\n var messagebar = this;\n var html;\n if (messagebar.params.renderAttachments) {\n html = messagebar.params.renderAttachments.call(messagebar, messagebar.attachments);\n } else {\n html = \"\" + (messagebar.attachments.map(function (attachment) { return messagebar.renderAttachment(attachment); }).join(''));\n }\n if (messagebar.$attachmentsEl.length === 0) {\n messagebar.attachmentsCreate(html);\n } else {\n messagebar.$attachmentsEl.html(html);\n }\n };\n\n Messagebar.prototype.sheetCreate = function sheetCreate (innerHTML) {\n if ( innerHTML === void 0 ) innerHTML = '';\n\n var messagebar = this;\n var $sheetEl = $$1((\"\" + innerHTML + \"
\"));\n messagebar.$el.append($sheetEl);\n Utils.extend(messagebar, {\n $sheetEl: $sheetEl,\n sheetEl: $sheetEl[0],\n });\n return messagebar;\n };\n\n Messagebar.prototype.sheetShow = function sheetShow (innerHTML) {\n if ( innerHTML === void 0 ) innerHTML = '';\n\n var messagebar = this;\n messagebar.$sheetEl = messagebar.$el.find('.messagebar-sheet');\n if (messagebar.$sheetEl.length === 0) {\n messagebar.sheetCreate(innerHTML);\n }\n messagebar.$el.addClass('messagebar-sheet-visible');\n messagebar.sheetVisible = true;\n if (messagebar.params.resizePage) {\n messagebar.resizePage();\n }\n return messagebar;\n };\n\n Messagebar.prototype.sheetHide = function sheetHide () {\n var messagebar = this;\n messagebar.$el.removeClass('messagebar-sheet-visible');\n messagebar.sheetVisible = false;\n if (messagebar.params.resizePage) {\n messagebar.resizePage();\n }\n return messagebar;\n };\n\n Messagebar.prototype.sheetToggle = function sheetToggle () {\n var messagebar = this;\n if (messagebar.sheetVisible) {\n messagebar.sheetHide();\n } else {\n messagebar.sheetShow();\n }\n return messagebar;\n };\n\n Messagebar.prototype.init = function init () {\n var messagebar = this;\n messagebar.attachEvents();\n messagebar.checkEmptyState();\n return messagebar;\n };\n\n Messagebar.prototype.destroy = function destroy () {\n var messagebar = this;\n messagebar.emit('local::beforeDestroy messagebarBeforeDestroy', messagebar);\n messagebar.$el.trigger('messagebar:beforedestroy', messagebar);\n messagebar.detachEvents();\n messagebar.$el[0].f7Messagebar = null;\n delete messagebar.$el[0].f7Messagebar;\n Utils.deleteProps(messagebar);\n };\n\n return Messagebar;\n }(Framework7Class));\n\n var Messagebar$1 = {\n name: 'messagebar',\n static: {\n Messagebar: Messagebar,\n },\n create: function create() {\n var app = this;\n app.messagebar = ConstructorMethods({\n defaultSelector: '.messagebar',\n constructor: Messagebar,\n app: app,\n domProp: 'f7Messagebar',\n addMethods: 'clear getValue setValue setPlaceholder resizePage focus blur attachmentsCreate attachmentsShow attachmentsHide attachmentsToggle renderAttachments sheetCreate sheetShow sheetHide sheetToggle'.split(' '),\n });\n },\n on: {\n tabBeforeRemove: function tabBeforeRemove(tabEl) {\n var app = this;\n $$1(tabEl).find('.messagebar-init').each(function (index, messagebarEl) {\n app.messagebar.destroy(messagebarEl);\n });\n },\n tabMounted: function tabMounted(tabEl) {\n var app = this;\n $$1(tabEl).find('.messagebar-init').each(function (index, messagebarEl) {\n app.messagebar.create(Utils.extend({ el: messagebarEl }, $$1(messagebarEl).dataset()));\n });\n },\n pageBeforeRemove: function pageBeforeRemove(page) {\n var app = this;\n page.$el.find('.messagebar-init').each(function (index, messagebarEl) {\n app.messagebar.destroy(messagebarEl);\n });\n },\n pageInit: function pageInit(page) {\n var app = this;\n page.$el.find('.messagebar-init').each(function (index, messagebarEl) {\n app.messagebar.create(Utils.extend({ el: messagebarEl }, $$1(messagebarEl).dataset()));\n });\n },\n },\n };\n\n function updateSize () {\n var swiper = this;\n var width;\n var height;\n var $el = swiper.$el;\n if (typeof swiper.params.width !== 'undefined') {\n width = swiper.params.width;\n } else {\n width = $el[0].clientWidth;\n }\n if (typeof swiper.params.height !== 'undefined') {\n height = swiper.params.height;\n } else {\n height = $el[0].clientHeight;\n }\n if ((width === 0 && swiper.isHorizontal()) || (height === 0 && swiper.isVertical())) {\n return;\n }\n\n // Subtract paddings\n width = width - parseInt($el.css('padding-left'), 10) - parseInt($el.css('padding-right'), 10);\n height = height - parseInt($el.css('padding-top'), 10) - parseInt($el.css('padding-bottom'), 10);\n\n Utils.extend(swiper, {\n width: width,\n height: height,\n size: swiper.isHorizontal() ? width : height,\n });\n }\n\n function updateSlides () {\n var swiper = this;\n var params = swiper.params;\n\n var $wrapperEl = swiper.$wrapperEl;\n var swiperSize = swiper.size;\n var rtl = swiper.rtlTranslate;\n var wrongRTL = swiper.wrongRTL;\n var isVirtual = swiper.virtual && params.virtual.enabled;\n var previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length;\n var slides = $wrapperEl.children((\".\" + (swiper.params.slideClass)));\n var slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length;\n var snapGrid = [];\n var slidesGrid = [];\n var slidesSizesGrid = [];\n\n var offsetBefore = params.slidesOffsetBefore;\n if (typeof offsetBefore === 'function') {\n offsetBefore = params.slidesOffsetBefore.call(swiper);\n }\n\n var offsetAfter = params.slidesOffsetAfter;\n if (typeof offsetAfter === 'function') {\n offsetAfter = params.slidesOffsetAfter.call(swiper);\n }\n\n var previousSnapGridLength = swiper.snapGrid.length;\n var previousSlidesGridLength = swiper.snapGrid.length;\n\n var spaceBetween = params.spaceBetween;\n var slidePosition = -offsetBefore;\n var prevSlideSize = 0;\n var index = 0;\n if (typeof swiperSize === 'undefined') {\n return;\n }\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = (parseFloat(spaceBetween.replace('%', '')) / 100) * swiperSize;\n }\n\n swiper.virtualSize = -spaceBetween;\n\n // reset margins\n if (rtl) { slides.css({ marginLeft: '', marginTop: '' }); }\n else { slides.css({ marginRight: '', marginBottom: '' }); }\n\n var slidesNumberEvenToRows;\n if (params.slidesPerColumn > 1) {\n if (Math.floor(slidesLength / params.slidesPerColumn) === slidesLength / swiper.params.slidesPerColumn) {\n slidesNumberEvenToRows = slidesLength;\n } else {\n slidesNumberEvenToRows = Math.ceil(slidesLength / params.slidesPerColumn) * params.slidesPerColumn;\n }\n if (params.slidesPerView !== 'auto' && params.slidesPerColumnFill === 'row') {\n slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, params.slidesPerView * params.slidesPerColumn);\n }\n }\n\n // Calc slides\n var slideSize;\n var slidesPerColumn = params.slidesPerColumn;\n var slidesPerRow = slidesNumberEvenToRows / slidesPerColumn;\n var numFullColumns = slidesPerRow - ((params.slidesPerColumn * slidesPerRow) - slidesLength);\n for (var i = 0; i < slidesLength; i += 1) {\n slideSize = 0;\n var slide = slides.eq(i);\n if (params.slidesPerColumn > 1) {\n // Set slides order\n var newSlideOrderIndex = (void 0);\n var column = (void 0);\n var row = (void 0);\n if (params.slidesPerColumnFill === 'column') {\n column = Math.floor(i / slidesPerColumn);\n row = i - (column * slidesPerColumn);\n if (column > numFullColumns || (column === numFullColumns && row === slidesPerColumn - 1)) {\n row += 1;\n if (row >= slidesPerColumn) {\n row = 0;\n column += 1;\n }\n }\n newSlideOrderIndex = column + ((row * slidesNumberEvenToRows) / slidesPerColumn);\n slide\n .css({\n '-webkit-box-ordinal-group': newSlideOrderIndex,\n '-moz-box-ordinal-group': newSlideOrderIndex,\n '-ms-flex-order': newSlideOrderIndex,\n '-webkit-order': newSlideOrderIndex,\n order: newSlideOrderIndex,\n });\n } else {\n row = Math.floor(i / slidesPerRow);\n column = i - (row * slidesPerRow);\n }\n slide\n .css(\n (\"margin-\" + (swiper.isHorizontal() ? 'top' : 'left')),\n (row !== 0 && params.spaceBetween) && (((params.spaceBetween) + \"px\"))\n )\n .attr('data-swiper-column', column)\n .attr('data-swiper-row', row);\n }\n if (slide.css('display') === 'none') { continue; } // eslint-disable-line\n\n if (params.slidesPerView === 'auto') {\n var slideStyles = win.getComputedStyle(slide[0], null);\n var currentTransform = slide[0].style.transform;\n var currentWebKitTransform = slide[0].style.webkitTransform;\n if (currentTransform) {\n slide[0].style.transform = 'none';\n }\n if (currentWebKitTransform) {\n slide[0].style.webkitTransform = 'none';\n }\n if (swiper.isHorizontal()) {\n slideSize = slide[0].getBoundingClientRect().width +\n parseFloat(slideStyles.getPropertyValue('margin-left')) +\n parseFloat(slideStyles.getPropertyValue('margin-right'));\n } else {\n slideSize = slide[0].getBoundingClientRect().height +\n parseFloat(slideStyles.getPropertyValue('margin-top')) +\n parseFloat(slideStyles.getPropertyValue('margin-bottom'));\n }\n if (currentTransform) {\n slide[0].style.transform = currentTransform;\n }\n if (currentWebKitTransform) {\n slide[0].style.webkitTransform = currentWebKitTransform;\n }\n if (params.roundLengths) { slideSize = Math.floor(slideSize); }\n } else {\n slideSize = (swiperSize - ((params.slidesPerView - 1) * spaceBetween)) / params.slidesPerView;\n if (params.roundLengths) { slideSize = Math.floor(slideSize); }\n\n if (slides[i]) {\n if (swiper.isHorizontal()) {\n slides[i].style.width = slideSize + \"px\";\n } else {\n slides[i].style.height = slideSize + \"px\";\n }\n }\n }\n if (slides[i]) {\n slides[i].swiperSlideSize = slideSize;\n }\n slidesSizesGrid.push(slideSize);\n\n\n if (params.centeredSlides) {\n slidePosition = slidePosition + (slideSize / 2) + (prevSlideSize / 2) + spaceBetween;\n if (prevSlideSize === 0 && i !== 0) { slidePosition = slidePosition - (swiperSize / 2) - spaceBetween; }\n if (i === 0) { slidePosition = slidePosition - (swiperSize / 2) - spaceBetween; }\n if (Math.abs(slidePosition) < 1 / 1000) { slidePosition = 0; }\n if (params.roundLengths) { slidePosition = Math.floor(slidePosition); }\n if ((index) % params.slidesPerGroup === 0) { snapGrid.push(slidePosition); }\n slidesGrid.push(slidePosition);\n } else {\n if (params.roundLengths) { slidePosition = Math.floor(slidePosition); }\n if ((index) % params.slidesPerGroup === 0) { snapGrid.push(slidePosition); }\n slidesGrid.push(slidePosition);\n slidePosition = slidePosition + slideSize + spaceBetween;\n }\n\n swiper.virtualSize += slideSize + spaceBetween;\n\n prevSlideSize = slideSize;\n\n index += 1;\n }\n swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;\n var newSlidesGrid;\n\n if (\n rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {\n $wrapperEl.css({ width: ((swiper.virtualSize + params.spaceBetween) + \"px\") });\n }\n if (!Support.flexbox || params.setWrapperSize) {\n if (swiper.isHorizontal()) { $wrapperEl.css({ width: ((swiper.virtualSize + params.spaceBetween) + \"px\") }); }\n else { $wrapperEl.css({ height: ((swiper.virtualSize + params.spaceBetween) + \"px\") }); }\n }\n\n if (params.slidesPerColumn > 1) {\n swiper.virtualSize = (slideSize + params.spaceBetween) * slidesNumberEvenToRows;\n swiper.virtualSize = Math.ceil(swiper.virtualSize / params.slidesPerColumn) - params.spaceBetween;\n if (swiper.isHorizontal()) { $wrapperEl.css({ width: ((swiper.virtualSize + params.spaceBetween) + \"px\") }); }\n else { $wrapperEl.css({ height: ((swiper.virtualSize + params.spaceBetween) + \"px\") }); }\n if (params.centeredSlides) {\n newSlidesGrid = [];\n for (var i$1 = 0; i$1 < snapGrid.length; i$1 += 1) {\n var slidesGridItem = snapGrid[i$1];\n if (params.roundLengths) { slidesGridItem = Math.floor(slidesGridItem); }\n if (snapGrid[i$1] < swiper.virtualSize + snapGrid[0]) { newSlidesGrid.push(slidesGridItem); }\n }\n snapGrid = newSlidesGrid;\n }\n }\n\n // Remove last grid elements depending on width\n if (!params.centeredSlides) {\n newSlidesGrid = [];\n for (var i$2 = 0; i$2 < snapGrid.length; i$2 += 1) {\n var slidesGridItem$1 = snapGrid[i$2];\n if (params.roundLengths) { slidesGridItem$1 = Math.floor(slidesGridItem$1); }\n if (snapGrid[i$2] <= swiper.virtualSize - swiperSize) {\n newSlidesGrid.push(slidesGridItem$1);\n }\n }\n snapGrid = newSlidesGrid;\n if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) {\n snapGrid.push(swiper.virtualSize - swiperSize);\n }\n }\n if (snapGrid.length === 0) { snapGrid = [0]; }\n\n if (params.spaceBetween !== 0) {\n if (swiper.isHorizontal()) {\n if (rtl) { slides.css({ marginLeft: (spaceBetween + \"px\") }); }\n else { slides.css({ marginRight: (spaceBetween + \"px\") }); }\n } else { slides.css({ marginBottom: (spaceBetween + \"px\") }); }\n }\n\n Utils.extend(swiper, {\n slides: slides,\n snapGrid: snapGrid,\n slidesGrid: slidesGrid,\n slidesSizesGrid: slidesSizesGrid,\n });\n\n if (slidesLength !== previousSlidesLength) {\n swiper.emit('slidesLengthChange');\n }\n if (snapGrid.length !== previousSnapGridLength) {\n if (swiper.params.watchOverflow) { swiper.checkOverflow(); }\n swiper.emit('snapGridLengthChange');\n }\n if (slidesGrid.length !== previousSlidesGridLength) {\n swiper.emit('slidesGridLengthChange');\n }\n\n if (params.watchSlidesProgress || params.watchSlidesVisibility) {\n swiper.updateSlidesOffset();\n }\n }\n\n function updateAutoHeight (speed) {\n var swiper = this;\n var activeSlides = [];\n var newHeight = 0;\n var i;\n if (typeof speed === 'number') {\n swiper.setTransition(speed);\n } else if (speed === true) {\n swiper.setTransition(swiper.params.speed);\n }\n // Find slides currently in view\n if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {\n for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) {\n var index = swiper.activeIndex + i;\n if (index > swiper.slides.length) { break; }\n activeSlides.push(swiper.slides.eq(index)[0]);\n }\n } else {\n activeSlides.push(swiper.slides.eq(swiper.activeIndex)[0]);\n }\n\n // Find new height from highest slide in view\n for (i = 0; i < activeSlides.length; i += 1) {\n if (typeof activeSlides[i] !== 'undefined') {\n var height = activeSlides[i].offsetHeight;\n newHeight = height > newHeight ? height : newHeight;\n }\n }\n\n // Update Height\n if (newHeight) { swiper.$wrapperEl.css('height', (newHeight + \"px\")); }\n }\n\n function updateSlidesOffset () {\n var swiper = this;\n var slides = swiper.slides;\n for (var i = 0; i < slides.length; i += 1) {\n slides[i].swiperSlideOffset = swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop;\n }\n }\n\n function updateSlidesProgress (translate) {\n if ( translate === void 0 ) translate = (this && this.translate) || 0;\n\n var swiper = this;\n var params = swiper.params;\n\n var slides = swiper.slides;\n var rtl = swiper.rtlTranslate;\n\n if (slides.length === 0) { return; }\n if (typeof slides[0].swiperSlideOffset === 'undefined') { swiper.updateSlidesOffset(); }\n\n var offsetCenter = -translate;\n if (rtl) { offsetCenter = translate; }\n\n // Visible Slides\n slides.removeClass(params.slideVisibleClass);\n\n for (var i = 0; i < slides.length; i += 1) {\n var slide = slides[i];\n var slideProgress =\n (\n (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0)) - slide.swiperSlideOffset\n ) / (slide.swiperSlideSize + params.spaceBetween);\n if (params.watchSlidesVisibility) {\n var slideBefore = -(offsetCenter - slide.swiperSlideOffset);\n var slideAfter = slideBefore + swiper.slidesSizesGrid[i];\n var isVisible =\n (slideBefore >= 0 && slideBefore < swiper.size) ||\n (slideAfter > 0 && slideAfter <= swiper.size) ||\n (slideBefore <= 0 && slideAfter >= swiper.size);\n if (isVisible) {\n slides.eq(i).addClass(params.slideVisibleClass);\n }\n }\n slide.progress = rtl ? -slideProgress : slideProgress;\n }\n }\n\n function updateProgress (translate) {\n if ( translate === void 0 ) translate = (this && this.translate) || 0;\n\n var swiper = this;\n var params = swiper.params;\n\n var translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n var progress = swiper.progress;\n var isBeginning = swiper.isBeginning;\n var isEnd = swiper.isEnd;\n var wasBeginning = isBeginning;\n var wasEnd = isEnd;\n if (translatesDiff === 0) {\n progress = 0;\n isBeginning = true;\n isEnd = true;\n } else {\n progress = (translate - swiper.minTranslate()) / (translatesDiff);\n isBeginning = progress <= 0;\n isEnd = progress >= 1;\n }\n Utils.extend(swiper, {\n progress: progress,\n isBeginning: isBeginning,\n isEnd: isEnd,\n });\n\n if (params.watchSlidesProgress || params.watchSlidesVisibility) { swiper.updateSlidesProgress(translate); }\n\n if (isBeginning && !wasBeginning) {\n swiper.emit('reachBeginning toEdge');\n }\n if (isEnd && !wasEnd) {\n swiper.emit('reachEnd toEdge');\n }\n if ((wasBeginning && !isBeginning) || (wasEnd && !isEnd)) {\n swiper.emit('fromEdge');\n }\n\n swiper.emit('progress', progress);\n }\n\n function updateSlidesClasses () {\n var swiper = this;\n\n var slides = swiper.slides;\n var params = swiper.params;\n var $wrapperEl = swiper.$wrapperEl;\n var activeIndex = swiper.activeIndex;\n var realIndex = swiper.realIndex;\n var isVirtual = swiper.virtual && params.virtual.enabled;\n\n slides.removeClass(((params.slideActiveClass) + \" \" + (params.slideNextClass) + \" \" + (params.slidePrevClass) + \" \" + (params.slideDuplicateActiveClass) + \" \" + (params.slideDuplicateNextClass) + \" \" + (params.slideDuplicatePrevClass)));\n\n var activeSlide;\n if (isVirtual) {\n activeSlide = swiper.$wrapperEl.find((\".\" + (params.slideClass) + \"[data-swiper-slide-index=\\\"\" + activeIndex + \"\\\"]\"));\n } else {\n activeSlide = slides.eq(activeIndex);\n }\n\n // Active classes\n activeSlide.addClass(params.slideActiveClass);\n\n if (params.loop) {\n // Duplicate to all looped slides\n if (activeSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl\n .children((\".\" + (params.slideClass) + \":not(.\" + (params.slideDuplicateClass) + \")[data-swiper-slide-index=\\\"\" + realIndex + \"\\\"]\"))\n .addClass(params.slideDuplicateActiveClass);\n } else {\n $wrapperEl\n .children((\".\" + (params.slideClass) + \".\" + (params.slideDuplicateClass) + \"[data-swiper-slide-index=\\\"\" + realIndex + \"\\\"]\"))\n .addClass(params.slideDuplicateActiveClass);\n }\n }\n // Next Slide\n var nextSlide = activeSlide.nextAll((\".\" + (params.slideClass))).eq(0).addClass(params.slideNextClass);\n if (params.loop && nextSlide.length === 0) {\n nextSlide = slides.eq(0);\n nextSlide.addClass(params.slideNextClass);\n }\n // Prev Slide\n var prevSlide = activeSlide.prevAll((\".\" + (params.slideClass))).eq(0).addClass(params.slidePrevClass);\n if (params.loop && prevSlide.length === 0) {\n prevSlide = slides.eq(-1);\n prevSlide.addClass(params.slidePrevClass);\n }\n if (params.loop) {\n // Duplicate to all looped slides\n if (nextSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl\n .children((\".\" + (params.slideClass) + \":not(.\" + (params.slideDuplicateClass) + \")[data-swiper-slide-index=\\\"\" + (nextSlide.attr('data-swiper-slide-index')) + \"\\\"]\"))\n .addClass(params.slideDuplicateNextClass);\n } else {\n $wrapperEl\n .children((\".\" + (params.slideClass) + \".\" + (params.slideDuplicateClass) + \"[data-swiper-slide-index=\\\"\" + (nextSlide.attr('data-swiper-slide-index')) + \"\\\"]\"))\n .addClass(params.slideDuplicateNextClass);\n }\n if (prevSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl\n .children((\".\" + (params.slideClass) + \":not(.\" + (params.slideDuplicateClass) + \")[data-swiper-slide-index=\\\"\" + (prevSlide.attr('data-swiper-slide-index')) + \"\\\"]\"))\n .addClass(params.slideDuplicatePrevClass);\n } else {\n $wrapperEl\n .children((\".\" + (params.slideClass) + \".\" + (params.slideDuplicateClass) + \"[data-swiper-slide-index=\\\"\" + (prevSlide.attr('data-swiper-slide-index')) + \"\\\"]\"))\n .addClass(params.slideDuplicatePrevClass);\n }\n }\n }\n\n function updateActiveIndex (newActiveIndex) {\n var swiper = this;\n var translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n var slidesGrid = swiper.slidesGrid;\n var snapGrid = swiper.snapGrid;\n var params = swiper.params;\n var previousIndex = swiper.activeIndex;\n var previousRealIndex = swiper.realIndex;\n var previousSnapIndex = swiper.snapIndex;\n var activeIndex = newActiveIndex;\n var snapIndex;\n if (typeof activeIndex === 'undefined') {\n for (var i = 0; i < slidesGrid.length; i += 1) {\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - ((slidesGrid[i + 1] - slidesGrid[i]) / 2)) {\n activeIndex = i;\n } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) {\n activeIndex = i + 1;\n }\n } else if (translate >= slidesGrid[i]) {\n activeIndex = i;\n }\n }\n // Normalize slideIndex\n if (params.normalizeSlideIndex) {\n if (activeIndex < 0 || typeof activeIndex === 'undefined') { activeIndex = 0; }\n }\n }\n if (snapGrid.indexOf(translate) >= 0) {\n snapIndex = snapGrid.indexOf(translate);\n } else {\n snapIndex = Math.floor(activeIndex / params.slidesPerGroup);\n }\n if (snapIndex >= snapGrid.length) { snapIndex = snapGrid.length - 1; }\n if (activeIndex === previousIndex) {\n if (snapIndex !== previousSnapIndex) {\n swiper.snapIndex = snapIndex;\n swiper.emit('snapIndexChange');\n }\n return;\n }\n\n // Get real index\n var realIndex = parseInt(swiper.slides.eq(activeIndex).attr('data-swiper-slide-index') || activeIndex, 10);\n\n Utils.extend(swiper, {\n snapIndex: snapIndex,\n realIndex: realIndex,\n previousIndex: previousIndex,\n activeIndex: activeIndex,\n });\n swiper.emit('activeIndexChange');\n swiper.emit('snapIndexChange');\n if (previousRealIndex !== realIndex) {\n swiper.emit('realIndexChange');\n }\n swiper.emit('slideChange');\n }\n\n function updateClickedSlide (e) {\n var swiper = this;\n var params = swiper.params;\n var slide = $$1(e.target).closest((\".\" + (params.slideClass)))[0];\n var slideFound = false;\n if (slide) {\n for (var i = 0; i < swiper.slides.length; i += 1) {\n if (swiper.slides[i] === slide) { slideFound = true; }\n }\n }\n\n if (slide && slideFound) {\n swiper.clickedSlide = slide;\n if (swiper.virtual && swiper.params.virtual.enabled) {\n swiper.clickedIndex = parseInt($$1(slide).attr('data-swiper-slide-index'), 10);\n } else {\n swiper.clickedIndex = $$1(slide).index();\n }\n } else {\n swiper.clickedSlide = undefined;\n swiper.clickedIndex = undefined;\n return;\n }\n if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) {\n swiper.slideToClickedSlide();\n }\n }\n\n var update = {\n updateSize: updateSize,\n updateSlides: updateSlides,\n updateAutoHeight: updateAutoHeight,\n updateSlidesOffset: updateSlidesOffset,\n updateSlidesProgress: updateSlidesProgress,\n updateProgress: updateProgress,\n updateSlidesClasses: updateSlidesClasses,\n updateActiveIndex: updateActiveIndex,\n updateClickedSlide: updateClickedSlide,\n };\n\n function getTranslate (axis) {\n if ( axis === void 0 ) axis = this.isHorizontal() ? 'x' : 'y';\n\n var swiper = this;\n\n var params = swiper.params;\n var rtl = swiper.rtlTranslate;\n var translate = swiper.translate;\n var $wrapperEl = swiper.$wrapperEl;\n\n if (params.virtualTranslate) {\n return rtl ? -translate : translate;\n }\n\n var currentTranslate = Utils.getTranslate($wrapperEl[0], axis);\n if (rtl) { currentTranslate = -currentTranslate; }\n\n return currentTranslate || 0;\n }\n\n function setTranslate (translate, byController) {\n var swiper = this;\n var rtl = swiper.rtlTranslate;\n var params = swiper.params;\n var $wrapperEl = swiper.$wrapperEl;\n var progress = swiper.progress;\n var x = 0;\n var y = 0;\n var z = 0;\n\n if (swiper.isHorizontal()) {\n x = rtl ? -translate : translate;\n } else {\n y = translate;\n }\n\n if (params.roundLengths) {\n x = Math.floor(x);\n y = Math.floor(y);\n }\n\n if (!params.virtualTranslate) {\n if (Support.transforms3d) { $wrapperEl.transform((\"translate3d(\" + x + \"px, \" + y + \"px, \" + z + \"px)\")); }\n else { $wrapperEl.transform((\"translate(\" + x + \"px, \" + y + \"px)\")); }\n }\n swiper.previousTranslate = swiper.translate;\n swiper.translate = swiper.isHorizontal() ? x : y;\n\n // Check if we need to update progress\n var newProgress;\n var translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (translate - swiper.minTranslate()) / (translatesDiff);\n }\n if (newProgress !== progress) {\n swiper.updateProgress(translate);\n }\n\n swiper.emit('setTranslate', swiper.translate, byController);\n }\n\n function minTranslate () {\n return (-this.snapGrid[0]);\n }\n\n function maxTranslate () {\n return (-this.snapGrid[this.snapGrid.length - 1]);\n }\n\n var translate = {\n getTranslate: getTranslate,\n setTranslate: setTranslate,\n minTranslate: minTranslate,\n maxTranslate: maxTranslate,\n };\n\n function setTransition (duration, byController) {\n var swiper = this;\n\n swiper.$wrapperEl.transition(duration);\n\n swiper.emit('setTransition', duration, byController);\n }\n\n function transitionStart (runCallbacks, direction) {\n if ( runCallbacks === void 0 ) runCallbacks = true;\n\n var swiper = this;\n var activeIndex = swiper.activeIndex;\n var params = swiper.params;\n var previousIndex = swiper.previousIndex;\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n\n var dir = direction;\n if (!dir) {\n if (activeIndex > previousIndex) { dir = 'next'; }\n else if (activeIndex < previousIndex) { dir = 'prev'; }\n else { dir = 'reset'; }\n }\n\n swiper.emit('transitionStart');\n\n if (runCallbacks && activeIndex !== previousIndex) {\n if (dir === 'reset') {\n swiper.emit('slideResetTransitionStart');\n return;\n }\n swiper.emit('slideChangeTransitionStart');\n if (dir === 'next') {\n swiper.emit('slideNextTransitionStart');\n } else {\n swiper.emit('slidePrevTransitionStart');\n }\n }\n }\n\n function transitionEnd$1 (runCallbacks, direction) {\n if ( runCallbacks === void 0 ) runCallbacks = true;\n\n var swiper = this;\n var activeIndex = swiper.activeIndex;\n var previousIndex = swiper.previousIndex;\n swiper.animating = false;\n swiper.setTransition(0);\n\n var dir = direction;\n if (!dir) {\n if (activeIndex > previousIndex) { dir = 'next'; }\n else if (activeIndex < previousIndex) { dir = 'prev'; }\n else { dir = 'reset'; }\n }\n\n swiper.emit('transitionEnd');\n\n if (runCallbacks && activeIndex !== previousIndex) {\n if (dir === 'reset') {\n swiper.emit('slideResetTransitionEnd');\n return;\n }\n swiper.emit('slideChangeTransitionEnd');\n if (dir === 'next') {\n swiper.emit('slideNextTransitionEnd');\n } else {\n swiper.emit('slidePrevTransitionEnd');\n }\n }\n }\n\n var transition$1 = {\n setTransition: setTransition,\n transitionStart: transitionStart,\n transitionEnd: transitionEnd$1,\n };\n\n function slideTo (index, speed, runCallbacks, internal) {\n if ( index === void 0 ) index = 0;\n if ( speed === void 0 ) speed = this.params.speed;\n if ( runCallbacks === void 0 ) runCallbacks = true;\n\n var swiper = this;\n var slideIndex = index;\n if (slideIndex < 0) { slideIndex = 0; }\n\n var params = swiper.params;\n var snapGrid = swiper.snapGrid;\n var slidesGrid = swiper.slidesGrid;\n var previousIndex = swiper.previousIndex;\n var activeIndex = swiper.activeIndex;\n var rtl = swiper.rtlTranslate;\n if (swiper.animating && params.preventIntercationOnTransition) {\n return false;\n }\n\n var snapIndex = Math.floor(slideIndex / params.slidesPerGroup);\n if (snapIndex >= snapGrid.length) { snapIndex = snapGrid.length - 1; }\n\n if ((activeIndex || params.initialSlide || 0) === (previousIndex || 0) && runCallbacks) {\n swiper.emit('beforeSlideChangeStart');\n }\n\n var translate = -snapGrid[snapIndex];\n\n // Update progress\n swiper.updateProgress(translate);\n\n // Normalize slideIndex\n if (params.normalizeSlideIndex) {\n for (var i = 0; i < slidesGrid.length; i += 1) {\n if (-Math.floor(translate * 100) >= Math.floor(slidesGrid[i] * 100)) {\n slideIndex = i;\n }\n }\n }\n // Directions locks\n if (swiper.initialized && slideIndex !== activeIndex) {\n if (!swiper.allowSlideNext && translate < swiper.translate && translate < swiper.minTranslate()) {\n return false;\n }\n if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) {\n if ((activeIndex || 0) !== slideIndex) { return false; }\n }\n }\n\n var direction;\n if (slideIndex > activeIndex) { direction = 'next'; }\n else if (slideIndex < activeIndex) { direction = 'prev'; }\n else { direction = 'reset'; }\n\n\n // Update Index\n if ((rtl && -translate === swiper.translate) || (!rtl && translate === swiper.translate)) {\n swiper.updateActiveIndex(slideIndex);\n // Update Height\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n swiper.updateSlidesClasses();\n if (params.effect !== 'slide') {\n swiper.setTranslate(translate);\n }\n if (direction !== 'reset') {\n swiper.transitionStart(runCallbacks, direction);\n swiper.transitionEnd(runCallbacks, direction);\n }\n return false;\n }\n\n if (speed === 0 || !Support.transition) {\n swiper.setTransition(0);\n swiper.setTranslate(translate);\n swiper.updateActiveIndex(slideIndex);\n swiper.updateSlidesClasses();\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.transitionStart(runCallbacks, direction);\n swiper.transitionEnd(runCallbacks, direction);\n } else {\n swiper.setTransition(speed);\n swiper.setTranslate(translate);\n swiper.updateActiveIndex(slideIndex);\n swiper.updateSlidesClasses();\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.transitionStart(runCallbacks, direction);\n if (!swiper.animating) {\n swiper.animating = true;\n if (!swiper.onSlideToWrapperTransitionEnd) {\n swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) { return; }\n if (e.target !== this) { return; }\n swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);\n swiper.transitionEnd(runCallbacks, direction);\n };\n }\n swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);\n }\n }\n\n return true;\n }\n\n function slideToLoop (index, speed, runCallbacks, internal) {\n if ( index === void 0 ) index = 0;\n if ( speed === void 0 ) speed = this.params.speed;\n if ( runCallbacks === void 0 ) runCallbacks = true;\n\n var swiper = this;\n var newIndex = index;\n if (swiper.params.loop) {\n newIndex += swiper.loopedSlides;\n }\n\n return swiper.slideTo(newIndex, speed, runCallbacks, internal);\n }\n\n /* eslint no-unused-vars: \"off\" */\n function slideNext (speed, runCallbacks, internal) {\n if ( speed === void 0 ) speed = this.params.speed;\n if ( runCallbacks === void 0 ) runCallbacks = true;\n\n var swiper = this;\n var params = swiper.params;\n var animating = swiper.animating;\n if (params.loop) {\n if (animating) { return false; }\n swiper.loopFix();\n // eslint-disable-next-line\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n return swiper.slideTo(swiper.activeIndex + params.slidesPerGroup, speed, runCallbacks, internal);\n }\n return swiper.slideTo(swiper.activeIndex + params.slidesPerGroup, speed, runCallbacks, internal);\n }\n\n /* eslint no-unused-vars: \"off\" */\n function slidePrev (speed, runCallbacks, internal) {\n if ( speed === void 0 ) speed = this.params.speed;\n if ( runCallbacks === void 0 ) runCallbacks = true;\n\n var swiper = this;\n var params = swiper.params;\n var animating = swiper.animating;\n var snapGrid = swiper.snapGrid;\n var slidesGrid = swiper.slidesGrid;\n var rtlTranslate = swiper.rtlTranslate;\n\n if (params.loop) {\n if (animating) { return false; }\n swiper.loopFix();\n // eslint-disable-next-line\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n }\n var translate = rtlTranslate ? swiper.translate : -swiper.translate;\n function normalize(val) {\n if (val < 0) { return -Math.floor(Math.abs(val)); }\n return Math.floor(val);\n }\n var normalizedTranslate = normalize(translate);\n var normalizedSnapGrid = snapGrid.map(function (val) { return normalize(val); });\n var normalizedSlidesGrid = slidesGrid.map(function (val) { return normalize(val); });\n\n var currentSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate)];\n var prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];\n var prevIndex;\n if (typeof prevSnap !== 'undefined') {\n prevIndex = slidesGrid.indexOf(prevSnap);\n if (prevIndex < 0) { prevIndex = swiper.activeIndex - 1; }\n }\n return swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n }\n\n /* eslint no-unused-vars: \"off\" */\n function slideReset (speed, runCallbacks, internal) {\n if ( speed === void 0 ) speed = this.params.speed;\n if ( runCallbacks === void 0 ) runCallbacks = true;\n\n var swiper = this;\n return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);\n }\n\n /* eslint no-unused-vars: \"off\" */\n function slideToClosest (speed, runCallbacks, internal) {\n if ( speed === void 0 ) speed = this.params.speed;\n if ( runCallbacks === void 0 ) runCallbacks = true;\n\n var swiper = this;\n var index = swiper.activeIndex;\n var snapIndex = Math.floor(index / swiper.params.slidesPerGroup);\n\n if (snapIndex < swiper.snapGrid.length - 1) {\n var translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n\n var currentSnap = swiper.snapGrid[snapIndex];\n var nextSnap = swiper.snapGrid[snapIndex + 1];\n\n if ((translate - currentSnap) > (nextSnap - currentSnap) / 2) {\n index = swiper.params.slidesPerGroup;\n }\n }\n\n return swiper.slideTo(index, speed, runCallbacks, internal);\n }\n\n function slideToClickedSlide () {\n var swiper = this;\n var params = swiper.params;\n var $wrapperEl = swiper.$wrapperEl;\n\n var slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;\n var slideToIndex = swiper.clickedIndex;\n var realIndex;\n if (params.loop) {\n if (swiper.animating) { return; }\n realIndex = parseInt($$1(swiper.clickedSlide).attr('data-swiper-slide-index'), 10);\n if (params.centeredSlides) {\n if (\n (slideToIndex < swiper.loopedSlides - (slidesPerView / 2)) ||\n (slideToIndex > (swiper.slides.length - swiper.loopedSlides) + (slidesPerView / 2))\n ) {\n swiper.loopFix();\n slideToIndex = $wrapperEl\n .children((\".\" + (params.slideClass) + \"[data-swiper-slide-index=\\\"\" + realIndex + \"\\\"]:not(.\" + (params.slideDuplicateClass) + \")\"))\n .eq(0)\n .index();\n\n Utils.nextTick(function () {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else if (slideToIndex > swiper.slides.length - slidesPerView) {\n swiper.loopFix();\n slideToIndex = $wrapperEl\n .children((\".\" + (params.slideClass) + \"[data-swiper-slide-index=\\\"\" + realIndex + \"\\\"]:not(.\" + (params.slideDuplicateClass) + \")\"))\n .eq(0)\n .index();\n\n Utils.nextTick(function () {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else {\n swiper.slideTo(slideToIndex);\n }\n }\n\n var slide = {\n slideTo: slideTo,\n slideToLoop: slideToLoop,\n slideNext: slideNext,\n slidePrev: slidePrev,\n slideReset: slideReset,\n slideToClosest: slideToClosest,\n slideToClickedSlide: slideToClickedSlide,\n };\n\n function loopCreate () {\n var swiper = this;\n var params = swiper.params;\n var $wrapperEl = swiper.$wrapperEl;\n // Remove duplicated slides\n $wrapperEl.children((\".\" + (params.slideClass) + \".\" + (params.slideDuplicateClass))).remove();\n\n var slides = $wrapperEl.children((\".\" + (params.slideClass)));\n\n if (params.loopFillGroupWithBlank) {\n var blankSlidesNum = params.slidesPerGroup - (slides.length % params.slidesPerGroup);\n if (blankSlidesNum !== params.slidesPerGroup) {\n for (var i = 0; i < blankSlidesNum; i += 1) {\n var blankNode = $$1(doc.createElement('div')).addClass(((params.slideClass) + \" \" + (params.slideBlankClass)));\n $wrapperEl.append(blankNode);\n }\n slides = $wrapperEl.children((\".\" + (params.slideClass)));\n }\n }\n\n if (params.slidesPerView === 'auto' && !params.loopedSlides) { params.loopedSlides = slides.length; }\n\n swiper.loopedSlides = parseInt(params.loopedSlides || params.slidesPerView, 10);\n swiper.loopedSlides += params.loopAdditionalSlides;\n if (swiper.loopedSlides > slides.length) {\n swiper.loopedSlides = slides.length;\n }\n\n var prependSlides = [];\n var appendSlides = [];\n slides.each(function (index, el) {\n var slide = $$1(el);\n if (index < swiper.loopedSlides) { appendSlides.push(el); }\n if (index < slides.length && index >= slides.length - swiper.loopedSlides) { prependSlides.push(el); }\n slide.attr('data-swiper-slide-index', index);\n });\n for (var i$1 = 0; i$1 < appendSlides.length; i$1 += 1) {\n $wrapperEl.append($$1(appendSlides[i$1].cloneNode(true)).addClass(params.slideDuplicateClass));\n }\n for (var i$2 = prependSlides.length - 1; i$2 >= 0; i$2 -= 1) {\n $wrapperEl.prepend($$1(prependSlides[i$2].cloneNode(true)).addClass(params.slideDuplicateClass));\n }\n }\n\n function loopFix () {\n var swiper = this;\n var params = swiper.params;\n var activeIndex = swiper.activeIndex;\n var slides = swiper.slides;\n var loopedSlides = swiper.loopedSlides;\n var allowSlidePrev = swiper.allowSlidePrev;\n var allowSlideNext = swiper.allowSlideNext;\n var snapGrid = swiper.snapGrid;\n var rtl = swiper.rtlTranslate;\n var newIndex;\n swiper.allowSlidePrev = true;\n swiper.allowSlideNext = true;\n\n var snapTranslate = -snapGrid[activeIndex];\n var diff = snapTranslate - swiper.getTranslate();\n\n\n // Fix For Negative Oversliding\n if (activeIndex < loopedSlides) {\n newIndex = (slides.length - (loopedSlides * 3)) + activeIndex;\n newIndex += loopedSlides;\n var slideChanged = swiper.slideTo(newIndex, 0, false, true);\n if (slideChanged && diff !== 0) {\n swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n }\n } else if ((params.slidesPerView === 'auto' && activeIndex >= loopedSlides * 2) || (activeIndex >= slides.length - loopedSlides)) {\n // Fix For Positive Oversliding\n newIndex = -slides.length + activeIndex + loopedSlides;\n newIndex += loopedSlides;\n var slideChanged$1 = swiper.slideTo(newIndex, 0, false, true);\n if (slideChanged$1 && diff !== 0) {\n swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n }\n }\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n }\n\n function loopDestroy () {\n var swiper = this;\n var $wrapperEl = swiper.$wrapperEl;\n var params = swiper.params;\n var slides = swiper.slides;\n $wrapperEl.children((\".\" + (params.slideClass) + \".\" + (params.slideDuplicateClass))).remove();\n slides.removeAttr('data-swiper-slide-index');\n }\n\n var loop = {\n loopCreate: loopCreate,\n loopFix: loopFix,\n loopDestroy: loopDestroy,\n };\n\n function setGrabCursor (moving) {\n var swiper = this;\n if (Support.touch || !swiper.params.simulateTouch || (swiper.params.watchOverflow && swiper.isLocked)) { return; }\n var el = swiper.el;\n el.style.cursor = 'move';\n el.style.cursor = moving ? '-webkit-grabbing' : '-webkit-grab';\n el.style.cursor = moving ? '-moz-grabbin' : '-moz-grab';\n el.style.cursor = moving ? 'grabbing' : 'grab';\n }\n\n function unsetGrabCursor () {\n var swiper = this;\n if (Support.touch || (swiper.params.watchOverflow && swiper.isLocked)) { return; }\n swiper.el.style.cursor = '';\n }\n\n var grabCursor = {\n setGrabCursor: setGrabCursor,\n unsetGrabCursor: unsetGrabCursor,\n };\n\n function appendSlide (slides) {\n var swiper = this;\n var $wrapperEl = swiper.$wrapperEl;\n var params = swiper.params;\n if (params.loop) {\n swiper.loopDestroy();\n }\n if (typeof slides === 'object' && 'length' in slides) {\n for (var i = 0; i < slides.length; i += 1) {\n if (slides[i]) { $wrapperEl.append(slides[i]); }\n }\n } else {\n $wrapperEl.append(slides);\n }\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!(params.observer && Support.observer)) {\n swiper.update();\n }\n }\n\n function prependSlide (slides) {\n var swiper = this;\n var params = swiper.params;\n var $wrapperEl = swiper.$wrapperEl;\n var activeIndex = swiper.activeIndex;\n\n if (params.loop) {\n swiper.loopDestroy();\n }\n var newActiveIndex = activeIndex + 1;\n if (typeof slides === 'object' && 'length' in slides) {\n for (var i = 0; i < slides.length; i += 1) {\n if (slides[i]) { $wrapperEl.prepend(slides[i]); }\n }\n newActiveIndex = activeIndex + slides.length;\n } else {\n $wrapperEl.prepend(slides);\n }\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!(params.observer && Support.observer)) {\n swiper.update();\n }\n swiper.slideTo(newActiveIndex, 0, false);\n }\n\n function addSlide (index, slides) {\n var swiper = this;\n var $wrapperEl = swiper.$wrapperEl;\n var params = swiper.params;\n var activeIndex = swiper.activeIndex;\n var activeIndexBuffer = activeIndex;\n if (params.loop) {\n activeIndexBuffer -= swiper.loopedSlides;\n swiper.loopDestroy();\n swiper.slides = $wrapperEl.children((\".\" + (params.slideClass)));\n }\n var baseLength = swiper.slides.length;\n if (index <= 0) {\n swiper.prependSlide(slides);\n return;\n } else if (index >= baseLength) {\n swiper.appendSlide(slides);\n return;\n }\n var newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + 1 : activeIndexBuffer;\n\n var slidesBuffer = [];\n for (var i = baseLength - 1; i >= index; i -= 1) {\n var currentSlide = swiper.slides.eq(i);\n currentSlide.remove();\n slidesBuffer.unshift(currentSlide);\n }\n\n if (typeof slides === 'object' && 'length' in slides) {\n for (var i$1 = 0; i$1 < slides.length; i$1 += 1) {\n if (slides[i$1]) { $wrapperEl.append(slides[i$1]); }\n }\n newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + slides.length : activeIndexBuffer;\n } else {\n $wrapperEl.append(slides);\n }\n\n for (var i$2 = 0; i$2 < slidesBuffer.length; i$2 += 1) {\n $wrapperEl.append(slidesBuffer[i$2]);\n }\n\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!(params.observer && Support.observer)) {\n swiper.update();\n }\n if (params.loop) {\n swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n } else {\n swiper.slideTo(newActiveIndex, 0, false);\n }\n }\n\n function removeSlide (slidesIndexes) {\n var swiper = this;\n var params = swiper.params;\n var $wrapperEl = swiper.$wrapperEl;\n var activeIndex = swiper.activeIndex;\n\n var activeIndexBuffer = activeIndex;\n if (params.loop) {\n activeIndexBuffer -= swiper.loopedSlides;\n swiper.loopDestroy();\n swiper.slides = $wrapperEl.children((\".\" + (params.slideClass)));\n }\n var newActiveIndex = activeIndexBuffer;\n var indexToRemove;\n\n if (typeof slidesIndexes === 'object' && 'length' in slidesIndexes) {\n for (var i = 0; i < slidesIndexes.length; i += 1) {\n indexToRemove = slidesIndexes[i];\n if (swiper.slides[indexToRemove]) { swiper.slides.eq(indexToRemove).remove(); }\n if (indexToRemove < newActiveIndex) { newActiveIndex -= 1; }\n }\n newActiveIndex = Math.max(newActiveIndex, 0);\n } else {\n indexToRemove = slidesIndexes;\n if (swiper.slides[indexToRemove]) { swiper.slides.eq(indexToRemove).remove(); }\n if (indexToRemove < newActiveIndex) { newActiveIndex -= 1; }\n newActiveIndex = Math.max(newActiveIndex, 0);\n }\n\n if (params.loop) {\n swiper.loopCreate();\n }\n\n if (!(params.observer && Support.observer)) {\n swiper.update();\n }\n if (params.loop) {\n swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n } else {\n swiper.slideTo(newActiveIndex, 0, false);\n }\n }\n\n function removeAllSlides () {\n var swiper = this;\n\n var slidesIndexes = [];\n for (var i = 0; i < swiper.slides.length; i += 1) {\n slidesIndexes.push(i);\n }\n swiper.removeSlide(slidesIndexes);\n }\n\n var manipulation = {\n appendSlide: appendSlide,\n prependSlide: prependSlide,\n addSlide: addSlide,\n removeSlide: removeSlide,\n removeAllSlides: removeAllSlides,\n };\n\n function onTouchStart (event) {\n var swiper = this;\n var data = swiper.touchEventsData;\n var params = swiper.params;\n var touches = swiper.touches;\n if (swiper.animating && params.preventIntercationOnTransition) {\n return;\n }\n var e = event;\n if (e.originalEvent) { e = e.originalEvent; }\n data.isTouchEvent = e.type === 'touchstart';\n if (!data.isTouchEvent && 'which' in e && e.which === 3) { return; }\n if (data.isTouched && data.isMoved) { return; }\n if (params.noSwiping && $$1(e.target).closest(params.noSwipingSelector ? params.noSwipingSelector : (\".\" + (params.noSwipingClass)))[0]) {\n swiper.allowClick = true;\n return;\n }\n if (params.swipeHandler) {\n if (!$$1(e).closest(params.swipeHandler)[0]) { return; }\n }\n\n touches.currentX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touches.currentY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n var startX = touches.currentX;\n var startY = touches.currentY;\n\n // Do NOT start if iOS edge swipe is detected. Otherwise iOS app (UIWebView) cannot swipe-to-go-back anymore\n\n if (\n Device.ios &&\n !Device.cordova &&\n params.iOSEdgeSwipeDetection &&\n ((startX <= params.iOSEdgeSwipeThreshold) ||\n (startX >= win.screen.width - params.iOSEdgeSwipeThreshold))\n ) {\n return;\n }\n\n Utils.extend(data, {\n isTouched: true,\n isMoved: false,\n allowTouchCallbacks: true,\n isScrolling: undefined,\n startMoving: undefined,\n });\n\n touches.startX = startX;\n touches.startY = startY;\n data.touchStartTime = Utils.now();\n swiper.allowClick = true;\n swiper.updateSize();\n swiper.swipeDirection = undefined;\n if (params.threshold > 0) { data.allowThresholdMove = false; }\n if (e.type !== 'touchstart') {\n var preventDefault = true;\n if ($$1(e.target).is(data.formElements)) { preventDefault = false; }\n if (\n doc.activeElement &&\n $$1(doc.activeElement).is(data.formElements) &&\n doc.activeElement !== e.target\n ) {\n doc.activeElement.blur();\n }\n if (preventDefault && swiper.allowTouchMove) {\n e.preventDefault();\n }\n }\n swiper.emit('touchStart', e);\n }\n\n function onTouchMove (event) {\n var swiper = this;\n var data = swiper.touchEventsData;\n var params = swiper.params;\n var touches = swiper.touches;\n var rtl = swiper.rtlTranslate;\n var e = event;\n if (e.originalEvent) { e = e.originalEvent; }\n if (!data.isTouched) {\n if (data.startMoving && data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n return;\n }\n if (data.isTouchEvent && e.type === 'mousemove') { return; }\n var pageX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n var pageY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n if (e.preventedByNestedSwiper) {\n touches.startX = pageX;\n touches.startY = pageY;\n return;\n }\n if (!swiper.allowTouchMove) {\n // isMoved = true;\n swiper.allowClick = false;\n if (data.isTouched) {\n Utils.extend(touches, {\n startX: pageX,\n startY: pageY,\n currentX: pageX,\n currentY: pageY,\n });\n data.touchStartTime = Utils.now();\n }\n return;\n }\n if (data.isTouchEvent && params.touchReleaseOnEdges && !params.loop) {\n if (swiper.isVertical()) {\n // Vertical\n if (\n (pageY < touches.startY && swiper.translate <= swiper.maxTranslate()) ||\n (pageY > touches.startY && swiper.translate >= swiper.minTranslate())\n ) {\n data.isTouched = false;\n data.isMoved = false;\n return;\n }\n } else if (\n (pageX < touches.startX && swiper.translate <= swiper.maxTranslate()) ||\n (pageX > touches.startX && swiper.translate >= swiper.minTranslate())\n ) {\n return;\n }\n }\n if (data.isTouchEvent && doc.activeElement) {\n if (e.target === doc.activeElement && $$1(e.target).is(data.formElements)) {\n data.isMoved = true;\n swiper.allowClick = false;\n return;\n }\n }\n if (data.allowTouchCallbacks) {\n swiper.emit('touchMove', e);\n }\n if (e.targetTouches && e.targetTouches.length > 1) { return; }\n\n touches.currentX = pageX;\n touches.currentY = pageY;\n\n var diffX = touches.currentX - touches.startX;\n var diffY = touches.currentY - touches.startY;\n\n if (typeof data.isScrolling === 'undefined') {\n var touchAngle;\n if ((swiper.isHorizontal() && touches.currentY === touches.startY) || (swiper.isVertical() && touches.currentX === touches.startX)) {\n data.isScrolling = false;\n } else {\n // eslint-disable-next-line\n if ((diffX * diffX) + (diffY * diffY) >= 25) {\n touchAngle = (Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180) / Math.PI;\n data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : (90 - touchAngle > params.touchAngle);\n }\n }\n }\n if (data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n if (typeof startMoving === 'undefined') {\n if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {\n data.startMoving = true;\n }\n }\n if (data.isScrolling) {\n data.isTouched = false;\n return;\n }\n if (!data.startMoving) {\n return;\n }\n swiper.allowClick = false;\n e.preventDefault();\n if (params.touchMoveStopPropagation && !params.nested) {\n e.stopPropagation();\n }\n\n if (!data.isMoved) {\n if (params.loop) {\n swiper.loopFix();\n }\n data.startTranslate = swiper.getTranslate();\n swiper.setTransition(0);\n if (swiper.animating) {\n swiper.$wrapperEl.trigger('webkitTransitionEnd transitionend');\n }\n data.allowMomentumBounce = false;\n // Grab Cursor\n if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(true);\n }\n swiper.emit('sliderFirstMove', e);\n }\n swiper.emit('sliderMove', e);\n data.isMoved = true;\n\n var diff = swiper.isHorizontal() ? diffX : diffY;\n touches.diff = diff;\n\n diff *= params.touchRatio;\n if (rtl) { diff = -diff; }\n\n swiper.swipeDirection = diff > 0 ? 'prev' : 'next';\n data.currentTranslate = diff + data.startTranslate;\n\n var disableParentSwiper = true;\n var resistanceRatio = params.resistanceRatio;\n if (params.touchReleaseOnEdges) {\n resistanceRatio = 0;\n }\n if ((diff > 0 && data.currentTranslate > swiper.minTranslate())) {\n disableParentSwiper = false;\n if (params.resistance) { data.currentTranslate = (swiper.minTranslate() - 1) + (Math.pow( (-swiper.minTranslate() + data.startTranslate + diff), resistanceRatio )); }\n } else if (diff < 0 && data.currentTranslate < swiper.maxTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) { data.currentTranslate = (swiper.maxTranslate() + 1) - (Math.pow( (swiper.maxTranslate() - data.startTranslate - diff), resistanceRatio )); }\n }\n\n if (disableParentSwiper) {\n e.preventedByNestedSwiper = true;\n }\n\n // Directions locks\n if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n\n\n // Threshold\n if (params.threshold > 0) {\n if (Math.abs(diff) > params.threshold || data.allowThresholdMove) {\n if (!data.allowThresholdMove) {\n data.allowThresholdMove = true;\n touches.startX = touches.currentX;\n touches.startY = touches.currentY;\n data.currentTranslate = data.startTranslate;\n touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY;\n return;\n }\n } else {\n data.currentTranslate = data.startTranslate;\n return;\n }\n }\n\n if (!params.followFinger) { return; }\n\n // Update active index in free mode\n if (params.freeMode || params.watchSlidesProgress || params.watchSlidesVisibility) {\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n if (params.freeMode) {\n // Velocity\n if (data.velocities.length === 0) {\n data.velocities.push({\n position: touches[swiper.isHorizontal() ? 'startX' : 'startY'],\n time: data.touchStartTime,\n });\n }\n data.velocities.push({\n position: touches[swiper.isHorizontal() ? 'currentX' : 'currentY'],\n time: Utils.now(),\n });\n }\n // Update progress\n swiper.updateProgress(data.currentTranslate);\n // Update translate\n swiper.setTranslate(data.currentTranslate);\n }\n\n function onTouchEnd (event) {\n var swiper = this;\n var data = swiper.touchEventsData;\n\n var params = swiper.params;\n var touches = swiper.touches;\n var rtl = swiper.rtlTranslate;\n var $wrapperEl = swiper.$wrapperEl;\n var slidesGrid = swiper.slidesGrid;\n var snapGrid = swiper.snapGrid;\n var e = event;\n if (e.originalEvent) { e = e.originalEvent; }\n if (data.allowTouchCallbacks) {\n swiper.emit('touchEnd', e);\n }\n data.allowTouchCallbacks = false;\n if (!data.isTouched) {\n if (data.isMoved && params.grabCursor) {\n swiper.setGrabCursor(false);\n }\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n // Return Grab Cursor\n if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(false);\n }\n\n // Time diff\n var touchEndTime = Utils.now();\n var timeDiff = touchEndTime - data.touchStartTime;\n\n // Tap, doubleTap, Click\n if (swiper.allowClick) {\n swiper.updateClickedSlide(e);\n swiper.emit('tap', e);\n if (timeDiff < 300 && (touchEndTime - data.lastClickTime) > 300) {\n if (data.clickTimeout) { clearTimeout(data.clickTimeout); }\n data.clickTimeout = Utils.nextTick(function () {\n if (!swiper || swiper.destroyed) { return; }\n swiper.emit('click', e);\n }, 300);\n }\n if (timeDiff < 300 && (touchEndTime - data.lastClickTime) < 300) {\n if (data.clickTimeout) { clearTimeout(data.clickTimeout); }\n swiper.emit('doubleTap', e);\n }\n }\n\n data.lastClickTime = Utils.now();\n Utils.nextTick(function () {\n if (!swiper.destroyed) { swiper.allowClick = true; }\n });\n\n if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 || data.currentTranslate === data.startTranslate) {\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n\n var currentPos;\n if (params.followFinger) {\n currentPos = rtl ? swiper.translate : -swiper.translate;\n } else {\n currentPos = -data.currentTranslate;\n }\n\n if (params.freeMode) {\n if (currentPos < -swiper.minTranslate()) {\n swiper.slideTo(swiper.activeIndex);\n return;\n } else if (currentPos > -swiper.maxTranslate()) {\n if (swiper.slides.length < snapGrid.length) {\n swiper.slideTo(snapGrid.length - 1);\n } else {\n swiper.slideTo(swiper.slides.length - 1);\n }\n return;\n }\n\n if (params.freeModeMomentum) {\n if (data.velocities.length > 1) {\n var lastMoveEvent = data.velocities.pop();\n var velocityEvent = data.velocities.pop();\n\n var distance = lastMoveEvent.position - velocityEvent.position;\n var time = lastMoveEvent.time - velocityEvent.time;\n swiper.velocity = distance / time;\n swiper.velocity /= 2;\n if (Math.abs(swiper.velocity) < params.freeModeMinimumVelocity) {\n swiper.velocity = 0;\n }\n // this implies that the user stopped moving a finger then released.\n // There would be no events with distance zero, so the last event is stale.\n if (time > 150 || (Utils.now() - lastMoveEvent.time) > 300) {\n swiper.velocity = 0;\n }\n } else {\n swiper.velocity = 0;\n }\n swiper.velocity *= params.freeModeMomentumVelocityRatio;\n\n data.velocities.length = 0;\n var momentumDuration = 1000 * params.freeModeMomentumRatio;\n var momentumDistance = swiper.velocity * momentumDuration;\n\n var newPosition = swiper.translate + momentumDistance;\n if (rtl) { newPosition = -newPosition; }\n\n var doBounce = false;\n var afterBouncePosition;\n var bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeModeMomentumBounceRatio;\n var needsLoopFix;\n if (newPosition < swiper.maxTranslate()) {\n if (params.freeModeMomentumBounce) {\n if (newPosition + swiper.maxTranslate() < -bounceAmount) {\n newPosition = swiper.maxTranslate() - bounceAmount;\n }\n afterBouncePosition = swiper.maxTranslate();\n doBounce = true;\n data.allowMomentumBounce = true;\n } else {\n newPosition = swiper.maxTranslate();\n }\n if (params.loop && params.centeredSlides) { needsLoopFix = true; }\n } else if (newPosition > swiper.minTranslate()) {\n if (params.freeModeMomentumBounce) {\n if (newPosition - swiper.minTranslate() > bounceAmount) {\n newPosition = swiper.minTranslate() + bounceAmount;\n }\n afterBouncePosition = swiper.minTranslate();\n doBounce = true;\n data.allowMomentumBounce = true;\n } else {\n newPosition = swiper.minTranslate();\n }\n if (params.loop && params.centeredSlides) { needsLoopFix = true; }\n } else if (params.freeModeSticky) {\n var nextSlide;\n for (var j = 0; j < snapGrid.length; j += 1) {\n if (snapGrid[j] > -newPosition) {\n nextSlide = j;\n break;\n }\n }\n\n if (Math.abs(snapGrid[nextSlide] - newPosition) < Math.abs(snapGrid[nextSlide - 1] - newPosition) || swiper.swipeDirection === 'next') {\n newPosition = snapGrid[nextSlide];\n } else {\n newPosition = snapGrid[nextSlide - 1];\n }\n newPosition = -newPosition;\n }\n if (needsLoopFix) {\n swiper.once('transitionEnd', function () {\n swiper.loopFix();\n });\n }\n // Fix duration\n if (swiper.velocity !== 0) {\n if (rtl) {\n momentumDuration = Math.abs((-newPosition - swiper.translate) / swiper.velocity);\n } else {\n momentumDuration = Math.abs((newPosition - swiper.translate) / swiper.velocity);\n }\n } else if (params.freeModeSticky) {\n swiper.slideToClosest();\n return;\n }\n\n if (params.freeModeMomentumBounce && doBounce) {\n swiper.updateProgress(afterBouncePosition);\n swiper.setTransition(momentumDuration);\n swiper.setTranslate(newPosition);\n swiper.transitionStart(true, swiper.swipeDirection);\n swiper.animating = true;\n $wrapperEl.transitionEnd(function () {\n if (!swiper || swiper.destroyed || !data.allowMomentumBounce) { return; }\n swiper.emit('momentumBounce');\n\n swiper.setTransition(params.speed);\n swiper.setTranslate(afterBouncePosition);\n $wrapperEl.transitionEnd(function () {\n if (!swiper || swiper.destroyed) { return; }\n swiper.transitionEnd();\n });\n });\n } else if (swiper.velocity) {\n swiper.updateProgress(newPosition);\n swiper.setTransition(momentumDuration);\n swiper.setTranslate(newPosition);\n swiper.transitionStart(true, swiper.swipeDirection);\n if (!swiper.animating) {\n swiper.animating = true;\n $wrapperEl.transitionEnd(function () {\n if (!swiper || swiper.destroyed) { return; }\n swiper.transitionEnd();\n });\n }\n } else {\n swiper.updateProgress(newPosition);\n }\n\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n } else if (params.freeModeSticky) {\n swiper.slideToClosest();\n return;\n }\n\n if (!params.freeModeMomentum || timeDiff >= params.longSwipesMs) {\n swiper.updateProgress();\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n return;\n }\n\n // Find current slide\n var stopIndex = 0;\n var groupSize = swiper.slidesSizesGrid[0];\n for (var i = 0; i < slidesGrid.length; i += params.slidesPerGroup) {\n if (typeof slidesGrid[i + params.slidesPerGroup] !== 'undefined') {\n if (currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + params.slidesPerGroup]) {\n stopIndex = i;\n groupSize = slidesGrid[i + params.slidesPerGroup] - slidesGrid[i];\n }\n } else if (currentPos >= slidesGrid[i]) {\n stopIndex = i;\n groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];\n }\n }\n\n // Find current slide size\n var ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;\n\n if (timeDiff > params.longSwipesMs) {\n // Long touches\n if (!params.longSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n if (swiper.swipeDirection === 'next') {\n if (ratio >= params.longSwipesRatio) { swiper.slideTo(stopIndex + params.slidesPerGroup); }\n else { swiper.slideTo(stopIndex); }\n }\n if (swiper.swipeDirection === 'prev') {\n if (ratio > (1 - params.longSwipesRatio)) { swiper.slideTo(stopIndex + params.slidesPerGroup); }\n else { swiper.slideTo(stopIndex); }\n }\n } else {\n // Short swipes\n if (!params.shortSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n if (swiper.swipeDirection === 'next') {\n swiper.slideTo(stopIndex + params.slidesPerGroup);\n }\n if (swiper.swipeDirection === 'prev') {\n swiper.slideTo(stopIndex);\n }\n }\n }\n\n function onResize () {\n var swiper = this;\n\n var params = swiper.params;\n var el = swiper.el;\n\n if (el && el.offsetWidth === 0) { return; }\n\n // Breakpoints\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n // Save locks\n var allowSlideNext = swiper.allowSlideNext;\n var allowSlidePrev = swiper.allowSlidePrev;\n var snapGrid = swiper.snapGrid;\n\n // Disable locks on resize\n swiper.allowSlideNext = true;\n swiper.allowSlidePrev = true;\n\n swiper.updateSize();\n swiper.updateSlides();\n\n if (params.freeMode) {\n var newTranslate = Math.min(Math.max(swiper.translate, swiper.maxTranslate()), swiper.minTranslate());\n swiper.setTranslate(newTranslate);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n } else {\n swiper.updateSlidesClasses();\n if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.params.centeredSlides) {\n swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n } else {\n swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n }\n // Return locks after resize\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n\n if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n }\n\n function onClick (e) {\n var swiper = this;\n if (!swiper.allowClick) {\n if (swiper.params.preventClicks) { e.preventDefault(); }\n if (swiper.params.preventClicksPropagation && swiper.animating) {\n e.stopPropagation();\n e.stopImmediatePropagation();\n }\n }\n }\n\n function attachEvents() {\n var swiper = this;\n var params = swiper.params;\n var touchEvents = swiper.touchEvents;\n var el = swiper.el;\n var wrapperEl = swiper.wrapperEl;\n\n {\n swiper.onTouchStart = onTouchStart.bind(swiper);\n swiper.onTouchMove = onTouchMove.bind(swiper);\n swiper.onTouchEnd = onTouchEnd.bind(swiper);\n }\n\n swiper.onClick = onClick.bind(swiper);\n\n var target = params.touchEventsTarget === 'container' ? el : wrapperEl;\n var capture = !!params.nested;\n\n // Touch Events\n {\n if (!Support.touch && (Support.pointerEvents || Support.prefixedPointerEvents)) {\n target.addEventListener(touchEvents.start, swiper.onTouchStart, false);\n doc.addEventListener(touchEvents.move, swiper.onTouchMove, capture);\n doc.addEventListener(touchEvents.end, swiper.onTouchEnd, false);\n } else {\n if (Support.touch) {\n var passiveListener = touchEvents.start === 'touchstart' && Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false;\n target.addEventListener(touchEvents.start, swiper.onTouchStart, passiveListener);\n target.addEventListener(touchEvents.move, swiper.onTouchMove, Support.passiveListener ? { passive: false, capture: capture } : capture);\n target.addEventListener(touchEvents.end, swiper.onTouchEnd, passiveListener);\n }\n if ((params.simulateTouch && !Device.ios && !Device.android) || (params.simulateTouch && !Support.touch && Device.ios)) {\n target.addEventListener('mousedown', swiper.onTouchStart, false);\n doc.addEventListener('mousemove', swiper.onTouchMove, capture);\n doc.addEventListener('mouseup', swiper.onTouchEnd, false);\n }\n }\n // Prevent Links Clicks\n if (params.preventClicks || params.preventClicksPropagation) {\n target.addEventListener('click', swiper.onClick, true);\n }\n }\n\n // Resize handler\n swiper.on((Device.ios || Device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate'), onResize, true);\n }\n\n function detachEvents() {\n var swiper = this;\n\n var params = swiper.params;\n var touchEvents = swiper.touchEvents;\n var el = swiper.el;\n var wrapperEl = swiper.wrapperEl;\n\n var target = params.touchEventsTarget === 'container' ? el : wrapperEl;\n var capture = !!params.nested;\n\n // Touch Events\n {\n if (!Support.touch && (Support.pointerEvents || Support.prefixedPointerEvents)) {\n target.removeEventListener(touchEvents.start, swiper.onTouchStart, false);\n doc.removeEventListener(touchEvents.move, swiper.onTouchMove, capture);\n doc.removeEventListener(touchEvents.end, swiper.onTouchEnd, false);\n } else {\n if (Support.touch) {\n var passiveListener = touchEvents.start === 'onTouchStart' && Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false;\n target.removeEventListener(touchEvents.start, swiper.onTouchStart, passiveListener);\n target.removeEventListener(touchEvents.move, swiper.onTouchMove, capture);\n target.removeEventListener(touchEvents.end, swiper.onTouchEnd, passiveListener);\n }\n if ((params.simulateTouch && !Device.ios && !Device.android) || (params.simulateTouch && !Support.touch && Device.ios)) {\n target.removeEventListener('mousedown', swiper.onTouchStart, false);\n doc.removeEventListener('mousemove', swiper.onTouchMove, capture);\n doc.removeEventListener('mouseup', swiper.onTouchEnd, false);\n }\n }\n // Prevent Links Clicks\n if (params.preventClicks || params.preventClicksPropagation) {\n target.removeEventListener('click', swiper.onClick, true);\n }\n }\n\n // Resize handler\n swiper.off((Device.ios || Device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate'), onResize);\n }\n\n var events = {\n attachEvents: attachEvents,\n detachEvents: detachEvents,\n };\n\n function setBreakpoint () {\n var swiper = this;\n var activeIndex = swiper.activeIndex;\n var initialized = swiper.initialized;\n var loopedSlides = swiper.loopedSlides; if ( loopedSlides === void 0 ) loopedSlides = 0;\n var params = swiper.params;\n var breakpoints = params.breakpoints;\n if (!breakpoints || (breakpoints && Object.keys(breakpoints).length === 0)) { return; }\n // Set breakpoint for window width and update parameters\n var breakpoint = swiper.getBreakpoint(breakpoints);\n if (breakpoint && swiper.currentBreakpoint !== breakpoint) {\n var breakPointsParams = breakpoint in breakpoints ? breakpoints[breakpoint] : swiper.originalParams;\n var needsReLoop = params.loop && (breakPointsParams.slidesPerView !== params.slidesPerView);\n\n Utils.extend(swiper.params, breakPointsParams);\n\n Utils.extend(swiper, {\n allowTouchMove: swiper.params.allowTouchMove,\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev,\n });\n\n swiper.currentBreakpoint = breakpoint;\n\n if (needsReLoop && initialized) {\n swiper.loopDestroy();\n swiper.loopCreate();\n swiper.updateSlides();\n swiper.slideTo((activeIndex - loopedSlides) + swiper.loopedSlides, 0, false);\n }\n swiper.emit('breakpoint', breakPointsParams);\n }\n }\n\n function getBreakpoint (breakpoints) {\n // Get breakpoint for window width\n if (!breakpoints) { return undefined; }\n var breakpoint = false;\n var points = [];\n Object.keys(breakpoints).forEach(function (point) {\n points.push(point);\n });\n points.sort(function (a, b) { return parseInt(a, 10) - parseInt(b, 10); });\n for (var i = 0; i < points.length; i += 1) {\n var point = points[i];\n if (point >= win.innerWidth && !breakpoint) {\n breakpoint = point;\n }\n }\n return breakpoint || 'max';\n }\n\n var breakpoints = { setBreakpoint: setBreakpoint, getBreakpoint: getBreakpoint };\n\n var Browser = (function Browser() {\n function isSafari() {\n var ua = win.navigator.userAgent.toLowerCase();\n return (ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0);\n }\n return {\n isIE: !!win.navigator.userAgent.match(/Trident/g) || !!win.navigator.userAgent.match(/MSIE/g),\n isSafari: isSafari(),\n isUiWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(win.navigator.userAgent),\n };\n }());\n\n function addClasses () {\n var swiper = this;\n var classNames = swiper.classNames;\n var params = swiper.params;\n var rtl = swiper.rtl;\n var $el = swiper.$el;\n var suffixes = [];\n\n suffixes.push(params.direction);\n\n if (params.freeMode) {\n suffixes.push('free-mode');\n }\n if (!Support.flexbox) {\n suffixes.push('no-flexbox');\n }\n if (params.autoHeight) {\n suffixes.push('autoheight');\n }\n if (rtl) {\n suffixes.push('rtl');\n }\n if (params.slidesPerColumn > 1) {\n suffixes.push('multirow');\n }\n if (Device.android) {\n suffixes.push('android');\n }\n if (Device.ios) {\n suffixes.push('ios');\n }\n // WP8 Touch Events Fix\n if (Browser.isIE && (Support.pointerEvents || Support.prefixedPointerEvents)) {\n suffixes.push((\"wp8-\" + (params.direction)));\n }\n\n suffixes.forEach(function (suffix) {\n classNames.push(params.containerModifierClass + suffix);\n });\n\n $el.addClass(classNames.join(' '));\n }\n\n function removeClasses () {\n var swiper = this;\n var $el = swiper.$el;\n var classNames = swiper.classNames;\n\n $el.removeClass(classNames.join(' '));\n }\n\n var classes = { addClasses: addClasses, removeClasses: removeClasses };\n\n function loadImage (imageEl, src, srcset, sizes, checkForComplete, callback) {\n var image;\n function onReady() {\n if (callback) { callback(); }\n }\n if (!imageEl.complete || !checkForComplete) {\n if (src) {\n image = new win.Image();\n image.onload = onReady;\n image.onerror = onReady;\n if (sizes) {\n image.sizes = sizes;\n }\n if (srcset) {\n image.srcset = srcset;\n }\n if (src) {\n image.src = src;\n }\n } else {\n onReady();\n }\n } else {\n // image already loaded...\n onReady();\n }\n }\n\n function preloadImages () {\n var swiper = this;\n swiper.imagesToLoad = swiper.$el.find('img');\n function onReady() {\n if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper.destroyed) { return; }\n if (swiper.imagesLoaded !== undefined) { swiper.imagesLoaded += 1; }\n if (swiper.imagesLoaded === swiper.imagesToLoad.length) {\n if (swiper.params.updateOnImagesReady) { swiper.update(); }\n swiper.emit('imagesReady');\n }\n }\n for (var i = 0; i < swiper.imagesToLoad.length; i += 1) {\n var imageEl = swiper.imagesToLoad[i];\n swiper.loadImage(\n imageEl,\n imageEl.currentSrc || imageEl.getAttribute('src'),\n imageEl.srcset || imageEl.getAttribute('srcset'),\n imageEl.sizes || imageEl.getAttribute('sizes'),\n true,\n onReady\n );\n }\n }\n\n var images = {\n loadImage: loadImage,\n preloadImages: preloadImages,\n };\n\n function checkOverflow() {\n var swiper = this;\n var wasLocked = swiper.isLocked;\n\n swiper.isLocked = swiper.snapGrid.length === 1;\n swiper.allowSlideNext = !swiper.isLocked;\n swiper.allowSlidePrev = !swiper.isLocked;\n\n // events\n if (wasLocked !== swiper.isLocked) { swiper.emit(swiper.isLocked ? 'lock' : 'unlock'); }\n\n if (wasLocked && wasLocked !== swiper.isLocked) {\n swiper.isEnd = false;\n swiper.navigation.update();\n }\n }\n\n var checkOverflow$1 = { checkOverflow: checkOverflow };\n\n var defaults = {\n init: true,\n direction: 'horizontal',\n touchEventsTarget: 'container',\n initialSlide: 0,\n speed: 300,\n //\n preventIntercationOnTransition: false,\n\n // To support iOS's swipe-to-go-back gesture (when being used in-app, with UIWebView).\n iOSEdgeSwipeDetection: false,\n iOSEdgeSwipeThreshold: 20,\n\n // Free mode\n freeMode: false,\n freeModeMomentum: true,\n freeModeMomentumRatio: 1,\n freeModeMomentumBounce: true,\n freeModeMomentumBounceRatio: 1,\n freeModeMomentumVelocityRatio: 1,\n freeModeSticky: false,\n freeModeMinimumVelocity: 0.02,\n\n // Autoheight\n autoHeight: false,\n\n // Set wrapper width\n setWrapperSize: false,\n\n // Virtual Translate\n virtualTranslate: false,\n\n // Effects\n effect: 'slide', // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'\n\n // Breakpoints\n breakpoints: undefined,\n\n // Slides grid\n spaceBetween: 0,\n slidesPerView: 1,\n slidesPerColumn: 1,\n slidesPerColumnFill: 'column',\n slidesPerGroup: 1,\n centeredSlides: false,\n slidesOffsetBefore: 0, // in px\n slidesOffsetAfter: 0, // in px\n normalizeSlideIndex: true,\n\n // Disable swiper and hide navigation when container not overflow\n watchOverflow: false,\n\n // Round length\n roundLengths: false,\n\n // Touches\n touchRatio: 1,\n touchAngle: 45,\n simulateTouch: true,\n shortSwipes: true,\n longSwipes: true,\n longSwipesRatio: 0.5,\n longSwipesMs: 300,\n followFinger: true,\n allowTouchMove: true,\n threshold: 0,\n touchMoveStopPropagation: true,\n touchReleaseOnEdges: false,\n\n // Unique Navigation Elements\n uniqueNavElements: true,\n\n // Resistance\n resistance: true,\n resistanceRatio: 0.85,\n\n // Progress\n watchSlidesProgress: false,\n watchSlidesVisibility: false,\n\n // Cursor\n grabCursor: false,\n\n // Clicks\n preventClicks: true,\n preventClicksPropagation: true,\n slideToClickedSlide: false,\n\n // Images\n preloadImages: true,\n updateOnImagesReady: true,\n\n // loop\n loop: false,\n loopAdditionalSlides: 0,\n loopedSlides: null,\n loopFillGroupWithBlank: false,\n\n // Swiping/no swiping\n allowSlidePrev: true,\n allowSlideNext: true,\n swipeHandler: null, // '.swipe-handler',\n noSwiping: true,\n noSwipingClass: 'swiper-no-swiping',\n noSwipingSelector: null,\n\n // Passive Listeners\n passiveListeners: true,\n\n // NS\n containerModifierClass: 'swiper-container-', // NEW\n slideClass: 'swiper-slide',\n slideBlankClass: 'swiper-slide-invisible-blank',\n slideActiveClass: 'swiper-slide-active',\n slideDuplicateActiveClass: 'swiper-slide-duplicate-active',\n slideVisibleClass: 'swiper-slide-visible',\n slideDuplicateClass: 'swiper-slide-duplicate',\n slideNextClass: 'swiper-slide-next',\n slideDuplicateNextClass: 'swiper-slide-duplicate-next',\n slidePrevClass: 'swiper-slide-prev',\n slideDuplicatePrevClass: 'swiper-slide-duplicate-prev',\n wrapperClass: 'swiper-wrapper',\n\n // Callbacks\n runCallbacksOnInit: true,\n };\n\n var prototypes = {\n update: update,\n translate: translate,\n transition: transition$1,\n slide: slide,\n loop: loop,\n grabCursor: grabCursor,\n manipulation: manipulation,\n events: events,\n breakpoints: breakpoints,\n checkOverflow: checkOverflow$1,\n classes: classes,\n images: images,\n };\n\n var extendedDefaults = {};\n\n var Swiper = (function (SwiperClass) {\n function Swiper() {\n var assign;\n\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n var el;\n var params;\n if (args.length === 1 && args[0].constructor && args[0].constructor === Object) {\n params = args[0];\n } else {\n (assign = args, el = assign[0], params = assign[1]);\n }\n if (!params) { params = {}; }\n\n params = Utils.extend({}, params);\n if (el && !params.el) { params.el = el; }\n\n SwiperClass.call(this, params);\n\n Object.keys(prototypes).forEach(function (prototypeGroup) {\n Object.keys(prototypes[prototypeGroup]).forEach(function (protoMethod) {\n if (!Swiper.prototype[protoMethod]) {\n Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];\n }\n });\n });\n\n // Swiper Instance\n var swiper = this;\n if (typeof swiper.modules === 'undefined') {\n swiper.modules = {};\n }\n Object.keys(swiper.modules).forEach(function (moduleName) {\n var module = swiper.modules[moduleName];\n if (module.params) {\n var moduleParamName = Object.keys(module.params)[0];\n var moduleParams = module.params[moduleParamName];\n if (typeof moduleParams !== 'object') { return; }\n if (!(moduleParamName in params && 'enabled' in moduleParams)) { return; }\n if (params[moduleParamName] === true) {\n params[moduleParamName] = { enabled: true };\n }\n if (\n typeof params[moduleParamName] === 'object' &&\n !('enabled' in params[moduleParamName])\n ) {\n params[moduleParamName].enabled = true;\n }\n if (!params[moduleParamName]) { params[moduleParamName] = { enabled: false }; }\n }\n });\n\n // Extend defaults with modules params\n var swiperParams = Utils.extend({}, defaults);\n swiper.useModulesParams(swiperParams);\n\n // Extend defaults with passed params\n swiper.params = Utils.extend({}, swiperParams, extendedDefaults, params);\n swiper.originalParams = Utils.extend({}, swiper.params);\n swiper.passedParams = Utils.extend({}, params);\n\n // Save Dom lib\n swiper.$ = $$1;\n\n // Find el\n var $el = $$1(swiper.params.el);\n el = $el[0];\n\n if (!el) {\n return undefined;\n }\n\n if ($el.length > 1) {\n var swipers = [];\n $el.each(function (index, containerEl) {\n var newParams = Utils.extend({}, params, { el: containerEl });\n swipers.push(new Swiper(newParams));\n });\n return swipers;\n }\n\n el.swiper = swiper;\n $el.data('swiper', swiper);\n\n // Find Wrapper\n var $wrapperEl = $el.children((\".\" + (swiper.params.wrapperClass)));\n\n // Extend Swiper\n Utils.extend(swiper, {\n $el: $el,\n el: el,\n $wrapperEl: $wrapperEl,\n wrapperEl: $wrapperEl[0],\n\n // Classes\n classNames: [],\n\n // Slides\n slides: $$1(),\n slidesGrid: [],\n snapGrid: [],\n slidesSizesGrid: [],\n\n // isDirection\n isHorizontal: function isHorizontal() {\n return swiper.params.direction === 'horizontal';\n },\n isVertical: function isVertical() {\n return swiper.params.direction === 'vertical';\n },\n // RTL\n rtl: (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'),\n rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'),\n wrongRTL: $wrapperEl.css('display') === '-webkit-box',\n\n // Indexes\n activeIndex: 0,\n realIndex: 0,\n\n //\n isBeginning: true,\n isEnd: false,\n\n // Props\n translate: 0,\n previousTranslate: 0,\n progress: 0,\n velocity: 0,\n animating: false,\n\n // Locks\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev,\n\n // Touch Events\n touchEvents: (function touchEvents() {\n var touch = ['touchstart', 'touchmove', 'touchend'];\n var desktop = ['mousedown', 'mousemove', 'mouseup'];\n if (Support.pointerEvents) {\n desktop = ['pointerdown', 'pointermove', 'pointerup'];\n } else if (Support.prefixedPointerEvents) {\n desktop = ['MSPointerDown', 'MSPointerMove', 'MSPointerUp'];\n }\n swiper.touchEventsTouch = {\n start: touch[0],\n move: touch[1],\n end: touch[2],\n };\n swiper.touchEventsDesktop = {\n start: desktop[0],\n move: desktop[1],\n end: desktop[2],\n };\n return Support.touch || !swiper.params.simulateTouch ? swiper.touchEventsTouch : swiper.touchEventsDesktop;\n }()),\n touchEventsData: {\n isTouched: undefined,\n isMoved: undefined,\n allowTouchCallbacks: undefined,\n touchStartTime: undefined,\n isScrolling: undefined,\n currentTranslate: undefined,\n startTranslate: undefined,\n allowThresholdMove: undefined,\n // Form elements to match\n formElements: 'input, select, option, textarea, button, video',\n // Last click time\n lastClickTime: Utils.now(),\n clickTimeout: undefined,\n // Velocities\n velocities: [],\n allowMomentumBounce: undefined,\n isTouchEvent: undefined,\n startMoving: undefined,\n },\n\n // Clicks\n allowClick: true,\n\n // Touches\n allowTouchMove: swiper.params.allowTouchMove,\n\n touches: {\n startX: 0,\n startY: 0,\n currentX: 0,\n currentY: 0,\n diff: 0,\n },\n\n // Images\n imagesToLoad: [],\n imagesLoaded: 0,\n\n });\n\n // Install Modules\n swiper.useModules();\n\n // Init\n if (swiper.params.init) {\n swiper.init();\n }\n\n // Return app instance\n return swiper;\n }\n\n if ( SwiperClass ) Swiper.__proto__ = SwiperClass;\n Swiper.prototype = Object.create( SwiperClass && SwiperClass.prototype );\n Swiper.prototype.constructor = Swiper;\n\n var staticAccessors = { extendedDefaults: { configurable: true },defaults: { configurable: true },Class: { configurable: true },$: { configurable: true } };\n Swiper.prototype.slidesPerViewDynamic = function slidesPerViewDynamic () {\n var swiper = this;\n var params = swiper.params;\n var slides = swiper.slides;\n var slidesGrid = swiper.slidesGrid;\n var swiperSize = swiper.size;\n var activeIndex = swiper.activeIndex;\n var spv = 1;\n if (params.centeredSlides) {\n var slideSize = slides[activeIndex].swiperSlideSize;\n var breakLoop;\n for (var i = activeIndex + 1; i < slides.length; i += 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) { breakLoop = true; }\n }\n }\n for (var i$1 = activeIndex - 1; i$1 >= 0; i$1 -= 1) {\n if (slides[i$1] && !breakLoop) {\n slideSize += slides[i$1].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) { breakLoop = true; }\n }\n }\n } else {\n for (var i$2 = activeIndex + 1; i$2 < slides.length; i$2 += 1) {\n if (slidesGrid[i$2] - slidesGrid[activeIndex] < swiperSize) {\n spv += 1;\n }\n }\n }\n return spv;\n };\n Swiper.prototype.update = function update$$1 () {\n var swiper = this;\n if (!swiper || swiper.destroyed) { return; }\n var snapGrid = swiper.snapGrid;\n var params = swiper.params;\n // Breakpoints\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n\n function setTranslate() {\n var translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate;\n var newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate());\n swiper.setTranslate(newTranslate);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n var translated;\n if (swiper.params.freeMode) {\n setTranslate();\n if (swiper.params.autoHeight) {\n swiper.updateAutoHeight();\n }\n } else {\n if ((swiper.params.slidesPerView === 'auto' || swiper.params.slidesPerView > 1) && swiper.isEnd && !swiper.params.centeredSlides) {\n translated = swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n } else {\n translated = swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n if (!translated) {\n setTranslate();\n }\n }\n if (params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n swiper.emit('update');\n };\n Swiper.prototype.init = function init () {\n var swiper = this;\n if (swiper.initialized) { return; }\n\n swiper.emit('beforeInit');\n\n // Set breakpoint\n if (swiper.params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n // Add Classes\n swiper.addClasses();\n\n // Create loop\n if (swiper.params.loop) {\n swiper.loopCreate();\n }\n\n // Update size\n swiper.updateSize();\n\n // Update slides\n swiper.updateSlides();\n\n if (swiper.params.watchOverflow) {\n swiper.checkOverflow();\n }\n\n // Set Grab Cursor\n if (swiper.params.grabCursor) {\n swiper.setGrabCursor();\n }\n\n if (swiper.params.preloadImages) {\n swiper.preloadImages();\n }\n\n // Slide To Initial Slide\n if (swiper.params.loop) {\n swiper.slideTo(swiper.params.initialSlide + swiper.loopedSlides, 0, swiper.params.runCallbacksOnInit);\n } else {\n swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit);\n }\n\n // Attach events\n swiper.attachEvents();\n\n // Init Flag\n swiper.initialized = true;\n\n // Emit\n swiper.emit('init');\n };\n Swiper.prototype.destroy = function destroy (deleteInstance, cleanStyles) {\n if ( deleteInstance === void 0 ) deleteInstance = true;\n if ( cleanStyles === void 0 ) cleanStyles = true;\n\n var swiper = this;\n var params = swiper.params;\n var $el = swiper.$el;\n var $wrapperEl = swiper.$wrapperEl;\n var slides = swiper.slides;\n\n if (typeof swiper.params === 'undefined' || swiper.destroyed) {\n return null;\n }\n\n swiper.emit('beforeDestroy');\n\n // Init Flag\n swiper.initialized = false;\n\n // Detach events\n swiper.detachEvents();\n\n // Destroy loop\n if (params.loop) {\n swiper.loopDestroy();\n }\n\n // Cleanup styles\n if (cleanStyles) {\n swiper.removeClasses();\n $el.removeAttr('style');\n $wrapperEl.removeAttr('style');\n if (slides && slides.length) {\n slides\n .removeClass([\n params.slideVisibleClass,\n params.slideActiveClass,\n params.slideNextClass,\n params.slidePrevClass ].join(' '))\n .removeAttr('style')\n .removeAttr('data-swiper-slide-index')\n .removeAttr('data-swiper-column')\n .removeAttr('data-swiper-row');\n }\n }\n\n swiper.emit('destroy');\n\n // Detach emitter events\n Object.keys(swiper.eventsListeners).forEach(function (eventName) {\n swiper.off(eventName);\n });\n\n if (deleteInstance !== false) {\n swiper.$el[0].swiper = null;\n swiper.$el.data('swiper', null);\n Utils.deleteProps(swiper);\n }\n swiper.destroyed = true;\n\n return null;\n };\n Swiper.extendDefaults = function extendDefaults (newDefaults) {\n Utils.extend(extendedDefaults, newDefaults);\n };\n staticAccessors.extendedDefaults.get = function () {\n return extendedDefaults;\n };\n staticAccessors.defaults.get = function () {\n return defaults;\n };\n staticAccessors.Class.get = function () {\n return SwiperClass;\n };\n staticAccessors.$.get = function () {\n return $$1;\n };\n\n Object.defineProperties( Swiper, staticAccessors );\n\n return Swiper;\n }(Framework7Class));\n\n var Device$1 = {\n name: 'device',\n proto: {\n device: Device,\n },\n static: {\n device: Device,\n },\n };\n\n var Support$1 = {\n name: 'support',\n proto: {\n support: Support,\n },\n static: {\n support: Support,\n },\n };\n\n var Browser$1 = {\n name: 'browser',\n proto: {\n browser: Browser,\n },\n static: {\n browser: Browser,\n },\n };\n\n var Resize = {\n name: 'resize',\n create: function create() {\n var swiper = this;\n Utils.extend(swiper, {\n resize: {\n resizeHandler: function resizeHandler() {\n if (!swiper || swiper.destroyed || !swiper.initialized) { return; }\n swiper.emit('beforeResize');\n swiper.emit('resize');\n },\n orientationChangeHandler: function orientationChangeHandler() {\n if (!swiper || swiper.destroyed || !swiper.initialized) { return; }\n swiper.emit('orientationchange');\n },\n },\n });\n },\n on: {\n init: function init() {\n var swiper = this;\n // Emit resize\n win.addEventListener('resize', swiper.resize.resizeHandler);\n\n // Emit orientationchange\n win.addEventListener('orientationchange', swiper.resize.orientationChangeHandler);\n },\n destroy: function destroy() {\n var swiper = this;\n win.removeEventListener('resize', swiper.resize.resizeHandler);\n win.removeEventListener('orientationchange', swiper.resize.orientationChangeHandler);\n },\n },\n };\n\n var Observer = {\n func: win.MutationObserver || win.WebkitMutationObserver,\n attach: function attach(target, options) {\n if ( options === void 0 ) options = {};\n\n var swiper = this;\n\n var ObserverFunc = Observer.func;\n var observer = new ObserverFunc(function (mutations) {\n mutations.forEach(function (mutation) {\n swiper.emit('observerUpdate', mutation);\n });\n });\n\n observer.observe(target, {\n attributes: typeof options.attributes === 'undefined' ? true : options.attributes,\n childList: typeof options.childList === 'undefined' ? true : options.childList,\n characterData: typeof options.characterData === 'undefined' ? true : options.characterData,\n });\n\n swiper.observer.observers.push(observer);\n },\n init: function init() {\n var swiper = this;\n if (!Support.observer || !swiper.params.observer) { return; }\n if (swiper.params.observeParents) {\n var containerParents = swiper.$el.parents();\n for (var i = 0; i < containerParents.length; i += 1) {\n swiper.observer.attach(containerParents[i]);\n }\n }\n // Observe container\n swiper.observer.attach(swiper.$el[0], { childList: false });\n\n // Observe wrapper\n swiper.observer.attach(swiper.$wrapperEl[0], { attributes: false });\n },\n destroy: function destroy() {\n var swiper = this;\n swiper.observer.observers.forEach(function (observer) {\n observer.disconnect();\n });\n swiper.observer.observers = [];\n },\n };\n\n var Observer$1 = {\n name: 'observer',\n params: {\n observer: false,\n observeParents: false,\n },\n create: function create() {\n var swiper = this;\n Utils.extend(swiper, {\n observer: {\n init: Observer.init.bind(swiper),\n attach: Observer.attach.bind(swiper),\n destroy: Observer.destroy.bind(swiper),\n observers: [],\n },\n });\n },\n on: {\n init: function init() {\n var swiper = this;\n swiper.observer.init();\n },\n destroy: function destroy() {\n var swiper = this;\n swiper.observer.destroy();\n },\n },\n };\n\n var Virtual = {\n update: function update(force) {\n var swiper = this;\n var ref = swiper.params;\n var slidesPerView = ref.slidesPerView;\n var slidesPerGroup = ref.slidesPerGroup;\n var centeredSlides = ref.centeredSlides;\n var ref$1 = swiper.virtual;\n var previousFrom = ref$1.from;\n var previousTo = ref$1.to;\n var slides = ref$1.slides;\n var previousSlidesGrid = ref$1.slidesGrid;\n var renderSlide = ref$1.renderSlide;\n var previousOffset = ref$1.offset;\n swiper.updateActiveIndex();\n var activeIndex = swiper.activeIndex || 0;\n\n var offsetProp;\n if (swiper.rtlTranslate) { offsetProp = 'right'; }\n else { offsetProp = swiper.isHorizontal() ? 'left' : 'top'; }\n\n var slidesAfter;\n var slidesBefore;\n if (centeredSlides) {\n slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup;\n slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup;\n } else {\n slidesAfter = slidesPerView + (slidesPerGroup - 1);\n slidesBefore = slidesPerGroup;\n }\n var from = Math.max((activeIndex || 0) - slidesBefore, 0);\n var to = Math.min((activeIndex || 0) + slidesAfter, slides.length - 1);\n var offset = (swiper.slidesGrid[from] || 0) - (swiper.slidesGrid[0] || 0);\n\n Utils.extend(swiper.virtual, {\n from: from,\n to: to,\n offset: offset,\n slidesGrid: swiper.slidesGrid,\n });\n\n function onRendered() {\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n if (swiper.lazy && swiper.params.lazy.enabled) {\n swiper.lazy.load();\n }\n }\n\n if (previousFrom === from && previousTo === to && !force) {\n if (swiper.slidesGrid !== previousSlidesGrid && offset !== previousOffset) {\n swiper.slides.css(offsetProp, (offset + \"px\"));\n }\n swiper.updateProgress();\n return;\n }\n if (swiper.params.virtual.renderExternal) {\n swiper.params.virtual.renderExternal.call(swiper, {\n offset: offset,\n from: from,\n to: to,\n slides: (function getSlides() {\n var slidesToRender = [];\n for (var i = from; i <= to; i += 1) {\n slidesToRender.push(slides[i]);\n }\n return slidesToRender;\n }()),\n });\n onRendered();\n return;\n }\n var prependIndexes = [];\n var appendIndexes = [];\n if (force) {\n swiper.$wrapperEl.find((\".\" + (swiper.params.slideClass))).remove();\n } else {\n for (var i = previousFrom; i <= previousTo; i += 1) {\n if (i < from || i > to) {\n swiper.$wrapperEl.find((\".\" + (swiper.params.slideClass) + \"[data-swiper-slide-index=\\\"\" + i + \"\\\"]\")).remove();\n }\n }\n }\n for (var i$1 = 0; i$1 < slides.length; i$1 += 1) {\n if (i$1 >= from && i$1 <= to) {\n if (typeof previousTo === 'undefined' || force) {\n appendIndexes.push(i$1);\n } else {\n if (i$1 > previousTo) { appendIndexes.push(i$1); }\n if (i$1 < previousFrom) { prependIndexes.push(i$1); }\n }\n }\n }\n appendIndexes.forEach(function (index) {\n swiper.$wrapperEl.append(renderSlide(slides[index], index));\n });\n prependIndexes.sort(function (a, b) { return a < b; }).forEach(function (index) {\n swiper.$wrapperEl.prepend(renderSlide(slides[index], index));\n });\n swiper.$wrapperEl.children('.swiper-slide').css(offsetProp, (offset + \"px\"));\n onRendered();\n },\n renderSlide: function renderSlide(slide, index) {\n var swiper = this;\n var params = swiper.params.virtual;\n if (params.cache && swiper.virtual.cache[index]) {\n return swiper.virtual.cache[index];\n }\n var $slideEl = params.renderSlide\n ? $$1(params.renderSlide.call(swiper, slide, index))\n : $$1((\"\" + slide + \"
\"));\n if (!$slideEl.attr('data-swiper-slide-index')) { $slideEl.attr('data-swiper-slide-index', index); }\n if (params.cache) { swiper.virtual.cache[index] = $slideEl; }\n return $slideEl;\n },\n appendSlide: function appendSlide(slide) {\n var swiper = this;\n swiper.virtual.slides.push(slide);\n swiper.virtual.update(true);\n },\n prependSlide: function prependSlide(slide) {\n var swiper = this;\n swiper.virtual.slides.unshift(slide);\n if (swiper.params.virtual.cache) {\n var cache = swiper.virtual.cache;\n var newCache = {};\n Object.keys(cache).forEach(function (cachedIndex) {\n newCache[cachedIndex + 1] = cache[cachedIndex];\n });\n swiper.virtual.cache = newCache;\n }\n swiper.virtual.update(true);\n swiper.slideNext(0);\n },\n };\n\n var Virtual$1 = {\n name: 'virtual',\n params: {\n virtual: {\n enabled: false,\n slides: [],\n cache: true,\n renderSlide: null,\n renderExternal: null,\n },\n },\n create: function create() {\n var swiper = this;\n Utils.extend(swiper, {\n virtual: {\n update: Virtual.update.bind(swiper),\n appendSlide: Virtual.appendSlide.bind(swiper),\n prependSlide: Virtual.prependSlide.bind(swiper),\n renderSlide: Virtual.renderSlide.bind(swiper),\n slides: swiper.params.virtual.slides,\n cache: {},\n },\n });\n },\n on: {\n beforeInit: function beforeInit() {\n var swiper = this;\n if (!swiper.params.virtual.enabled) { return; }\n swiper.classNames.push(((swiper.params.containerModifierClass) + \"virtual\"));\n var overwriteParams = {\n watchSlidesProgress: true,\n };\n Utils.extend(swiper.params, overwriteParams);\n Utils.extend(swiper.originalParams, overwriteParams);\n\n swiper.virtual.update();\n },\n setTranslate: function setTranslate() {\n var swiper = this;\n if (!swiper.params.virtual.enabled) { return; }\n swiper.virtual.update();\n },\n },\n };\n\n var Navigation = {\n update: function update() {\n // Update Navigation Buttons\n var swiper = this;\n var params = swiper.params.navigation;\n\n if (swiper.params.loop) { return; }\n var ref = swiper.navigation;\n var $nextEl = ref.$nextEl;\n var $prevEl = ref.$prevEl;\n\n if ($prevEl && $prevEl.length > 0) {\n if (swiper.isBeginning) {\n $prevEl.addClass(params.disabledClass);\n } else {\n $prevEl.removeClass(params.disabledClass);\n }\n $prevEl[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n }\n if ($nextEl && $nextEl.length > 0) {\n if (swiper.isEnd) {\n $nextEl.addClass(params.disabledClass);\n } else {\n $nextEl.removeClass(params.disabledClass);\n }\n $nextEl[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n }\n },\n init: function init() {\n var swiper = this;\n var params = swiper.params.navigation;\n if (!(params.nextEl || params.prevEl)) { return; }\n\n var $nextEl;\n var $prevEl;\n if (params.nextEl) {\n $nextEl = $$1(params.nextEl);\n if (\n swiper.params.uniqueNavElements &&\n typeof params.nextEl === 'string' &&\n $nextEl.length > 1 &&\n swiper.$el.find(params.nextEl).length === 1\n ) {\n $nextEl = swiper.$el.find(params.nextEl);\n }\n }\n if (params.prevEl) {\n $prevEl = $$1(params.prevEl);\n if (\n swiper.params.uniqueNavElements &&\n typeof params.prevEl === 'string' &&\n $prevEl.length > 1 &&\n swiper.$el.find(params.prevEl).length === 1\n ) {\n $prevEl = swiper.$el.find(params.prevEl);\n }\n }\n\n if ($nextEl && $nextEl.length > 0) {\n $nextEl.on('click', function (e) {\n e.preventDefault();\n if (swiper.isEnd && !swiper.params.loop) { return; }\n swiper.slideNext();\n });\n }\n if ($prevEl && $prevEl.length > 0) {\n $prevEl.on('click', function (e) {\n e.preventDefault();\n if (swiper.isBeginning && !swiper.params.loop) { return; }\n swiper.slidePrev();\n });\n }\n\n Utils.extend(swiper.navigation, {\n $nextEl: $nextEl,\n nextEl: $nextEl && $nextEl[0],\n $prevEl: $prevEl,\n prevEl: $prevEl && $prevEl[0],\n });\n },\n destroy: function destroy() {\n var swiper = this;\n var ref = swiper.navigation;\n var $nextEl = ref.$nextEl;\n var $prevEl = ref.$prevEl;\n if ($nextEl && $nextEl.length) {\n $nextEl.off('click');\n $nextEl.removeClass(swiper.params.navigation.disabledClass);\n }\n if ($prevEl && $prevEl.length) {\n $prevEl.off('click');\n $prevEl.removeClass(swiper.params.navigation.disabledClass);\n }\n },\n };\n\n var Navigation$1 = {\n name: 'navigation',\n params: {\n navigation: {\n nextEl: null,\n prevEl: null,\n\n hideOnClick: false,\n disabledClass: 'swiper-button-disabled',\n hiddenClass: 'swiper-button-hidden',\n lockClass: 'swiper-button-lock',\n },\n },\n create: function create() {\n var swiper = this;\n Utils.extend(swiper, {\n navigation: {\n init: Navigation.init.bind(swiper),\n update: Navigation.update.bind(swiper),\n destroy: Navigation.destroy.bind(swiper),\n },\n });\n },\n on: {\n init: function init() {\n var swiper = this;\n swiper.navigation.init();\n swiper.navigation.update();\n },\n toEdge: function toEdge() {\n var swiper = this;\n swiper.navigation.update();\n },\n fromEdge: function fromEdge() {\n var swiper = this;\n swiper.navigation.update();\n },\n destroy: function destroy() {\n var swiper = this;\n swiper.navigation.destroy();\n },\n click: function click(e) {\n var swiper = this;\n var ref = swiper.navigation;\n var $nextEl = ref.$nextEl;\n var $prevEl = ref.$prevEl;\n if (\n swiper.params.navigation.hideOnClick &&\n !$$1(e.target).is($prevEl) &&\n !$$1(e.target).is($nextEl)\n ) {\n if ($nextEl) { $nextEl.toggleClass(swiper.params.navigation.hiddenClass); }\n if ($prevEl) { $prevEl.toggleClass(swiper.params.navigation.hiddenClass); }\n }\n },\n },\n };\n\n var Pagination = {\n update: function update() {\n // Render || Update Pagination bullets/items\n var swiper = this;\n var rtl = swiper.rtl;\n var params = swiper.params.pagination;\n if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) { return; }\n var slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n var $el = swiper.pagination.$el;\n // Current/Total\n var current;\n var total = swiper.params.loop ? Math.ceil((slidesLength - (swiper.loopedSlides * 2)) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n if (swiper.params.loop) {\n current = Math.ceil((swiper.activeIndex - swiper.loopedSlides) / swiper.params.slidesPerGroup);\n if (current > slidesLength - 1 - (swiper.loopedSlides * 2)) {\n current -= (slidesLength - (swiper.loopedSlides * 2));\n }\n if (current > total - 1) { current -= total; }\n if (current < 0 && swiper.params.paginationType !== 'bullets') { current = total + current; }\n } else if (typeof swiper.snapIndex !== 'undefined') {\n current = swiper.snapIndex;\n } else {\n current = swiper.activeIndex || 0;\n }\n // Types\n if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) {\n var bullets = swiper.pagination.bullets;\n var firstIndex;\n var lastIndex;\n var midIndex;\n if (params.dynamicBullets) {\n swiper.pagination.bulletSize = bullets.eq(0)[swiper.isHorizontal() ? 'outerWidth' : 'outerHeight'](true);\n $el.css(swiper.isHorizontal() ? 'width' : 'height', ((swiper.pagination.bulletSize * (params.dynamicMainBullets + 4)) + \"px\"));\n if (params.dynamicMainBullets > 1 && swiper.previousIndex !== undefined) {\n swiper.pagination.dynamicBulletIndex += (current - swiper.previousIndex);\n if (swiper.pagination.dynamicBulletIndex > (params.dynamicMainBullets - 1)) {\n swiper.pagination.dynamicBulletIndex = params.dynamicMainBullets - 1;\n } else if (swiper.pagination.dynamicBulletIndex < 0) {\n swiper.pagination.dynamicBulletIndex = 0;\n }\n }\n firstIndex = current - swiper.pagination.dynamicBulletIndex;\n lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1);\n midIndex = (lastIndex + firstIndex) / 2;\n }\n bullets.removeClass(((params.bulletActiveClass) + \" \" + (params.bulletActiveClass) + \"-next \" + (params.bulletActiveClass) + \"-next-next \" + (params.bulletActiveClass) + \"-prev \" + (params.bulletActiveClass) + \"-prev-prev \" + (params.bulletActiveClass) + \"-main\"));\n if ($el.length > 1) {\n bullets.each(function (index, bullet) {\n var $bullet = $$1(bullet);\n var bulletIndex = $bullet.index();\n if (bulletIndex === current) {\n $bullet.addClass(params.bulletActiveClass);\n }\n if (params.dynamicBullets) {\n if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) {\n $bullet.addClass(((params.bulletActiveClass) + \"-main\"));\n }\n if (bulletIndex === firstIndex) {\n $bullet\n .prev()\n .addClass(((params.bulletActiveClass) + \"-prev\"))\n .prev()\n .addClass(((params.bulletActiveClass) + \"-prev-prev\"));\n }\n if (bulletIndex === lastIndex) {\n $bullet\n .next()\n .addClass(((params.bulletActiveClass) + \"-next\"))\n .next()\n .addClass(((params.bulletActiveClass) + \"-next-next\"));\n }\n }\n });\n } else {\n var $bullet = bullets.eq(current);\n $bullet.addClass(params.bulletActiveClass);\n if (params.dynamicBullets) {\n var $firstDisplayedBullet = bullets.eq(firstIndex);\n var $lastDisplayedBullet = bullets.eq(lastIndex);\n for (var i = firstIndex; i <= lastIndex; i += 1) {\n bullets.eq(i).addClass(((params.bulletActiveClass) + \"-main\"));\n }\n $firstDisplayedBullet\n .prev()\n .addClass(((params.bulletActiveClass) + \"-prev\"))\n .prev()\n .addClass(((params.bulletActiveClass) + \"-prev-prev\"));\n $lastDisplayedBullet\n .next()\n .addClass(((params.bulletActiveClass) + \"-next\"))\n .next()\n .addClass(((params.bulletActiveClass) + \"-next-next\"));\n }\n }\n if (params.dynamicBullets) {\n var dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4);\n var bulletsOffset = (((swiper.pagination.bulletSize * dynamicBulletsLength) - (swiper.pagination.bulletSize)) / 2) - (midIndex * swiper.pagination.bulletSize);\n var offsetProp = rtl ? 'right' : 'left';\n bullets.css(swiper.isHorizontal() ? offsetProp : 'top', (bulletsOffset + \"px\"));\n }\n }\n if (params.type === 'fraction') {\n $el.find((\".\" + (params.currentClass))).text(params.formatFractionCurrent(current + 1));\n $el.find((\".\" + (params.totalClass))).text(params.formatFractionTotal(total));\n }\n if (params.type === 'progressbar') {\n var progressbarDirection;\n if (params.progressbarOpposite) {\n progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal';\n } else {\n progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical';\n }\n var scale = (current + 1) / total;\n var scaleX = 1;\n var scaleY = 1;\n if (progressbarDirection === 'horizontal') {\n scaleX = scale;\n } else {\n scaleY = scale;\n }\n $el.find((\".\" + (params.progressbarFillClass))).transform((\"translate3d(0,0,0) scaleX(\" + scaleX + \") scaleY(\" + scaleY + \")\")).transition(swiper.params.speed);\n }\n if (params.type === 'custom' && params.renderCustom) {\n $el.html(params.renderCustom(swiper, current + 1, total));\n swiper.emit('paginationRender', swiper, $el[0]);\n } else {\n swiper.emit('paginationUpdate', swiper, $el[0]);\n }\n $el[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n },\n render: function render() {\n // Render Container\n var swiper = this;\n var params = swiper.params.pagination;\n if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) { return; }\n var slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n\n var $el = swiper.pagination.$el;\n var paginationHTML = '';\n if (params.type === 'bullets') {\n var numberOfBullets = swiper.params.loop ? Math.ceil((slidesLength - (swiper.loopedSlides * 2)) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n for (var i = 0; i < numberOfBullets; i += 1) {\n if (params.renderBullet) {\n paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass);\n } else {\n paginationHTML += \"<\" + (params.bulletElement) + \" class=\\\"\" + (params.bulletClass) + \"\\\">\" + (params.bulletElement) + \">\";\n }\n }\n $el.html(paginationHTML);\n swiper.pagination.bullets = $el.find((\".\" + (params.bulletClass)));\n }\n if (params.type === 'fraction') {\n if (params.renderFraction) {\n paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass);\n } else {\n paginationHTML =\n \" \" +\n ' / ' +\n \" \";\n }\n $el.html(paginationHTML);\n }\n if (params.type === 'progressbar') {\n if (params.renderProgressbar) {\n paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass);\n } else {\n paginationHTML = \" \";\n }\n $el.html(paginationHTML);\n }\n if (params.type !== 'custom') {\n swiper.emit('paginationRender', swiper.pagination.$el[0]);\n }\n },\n init: function init() {\n var swiper = this;\n var params = swiper.params.pagination;\n if (!params.el) { return; }\n\n var $el = $$1(params.el);\n if ($el.length === 0) { return; }\n\n if (\n swiper.params.uniqueNavElements &&\n typeof params.el === 'string' &&\n $el.length > 1 &&\n swiper.$el.find(params.el).length === 1\n ) {\n $el = swiper.$el.find(params.el);\n }\n\n if (params.type === 'bullets' && params.clickable) {\n $el.addClass(params.clickableClass);\n }\n\n $el.addClass(params.modifierClass + params.type);\n\n if (params.type === 'bullets' && params.dynamicBullets) {\n $el.addClass((\"\" + (params.modifierClass) + (params.type) + \"-dynamic\"));\n swiper.pagination.dynamicBulletIndex = 0;\n if (params.dynamicMainBullets < 1) {\n params.dynamicMainBullets = 1;\n }\n }\n if (params.type === 'progressbar' && params.progressbarOpposite) {\n $el.addClass(params.progressbarOppositeClass);\n }\n\n if (params.clickable) {\n $el.on('click', (\".\" + (params.bulletClass)), function onClick(e) {\n e.preventDefault();\n var index = $$1(this).index() * swiper.params.slidesPerGroup;\n if (swiper.params.loop) { index += swiper.loopedSlides; }\n swiper.slideTo(index);\n });\n }\n\n Utils.extend(swiper.pagination, {\n $el: $el,\n el: $el[0],\n });\n },\n destroy: function destroy() {\n var swiper = this;\n var params = swiper.params.pagination;\n if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) { return; }\n var $el = swiper.pagination.$el;\n\n $el.removeClass(params.hiddenClass);\n $el.removeClass(params.modifierClass + params.type);\n if (swiper.pagination.bullets) { swiper.pagination.bullets.removeClass(params.bulletActiveClass); }\n if (params.clickable) {\n $el.off('click', (\".\" + (params.bulletClass)));\n }\n },\n };\n\n var Pagination$1 = {\n name: 'pagination',\n params: {\n pagination: {\n el: null,\n bulletElement: 'span',\n clickable: false,\n hideOnClick: false,\n renderBullet: null,\n renderProgressbar: null,\n renderFraction: null,\n renderCustom: null,\n progressbarOpposite: false,\n type: 'bullets', // 'bullets' or 'progressbar' or 'fraction' or 'custom'\n dynamicBullets: false,\n dynamicMainBullets: 1,\n formatFractionCurrent: function (number) { return number; },\n formatFractionTotal: function (number) { return number; },\n bulletClass: 'swiper-pagination-bullet',\n bulletActiveClass: 'swiper-pagination-bullet-active',\n modifierClass: 'swiper-pagination-', // NEW\n currentClass: 'swiper-pagination-current',\n totalClass: 'swiper-pagination-total',\n hiddenClass: 'swiper-pagination-hidden',\n progressbarFillClass: 'swiper-pagination-progressbar-fill',\n progressbarOppositeClass: 'swiper-pagination-progressbar-opposite',\n clickableClass: 'swiper-pagination-clickable', // NEW\n lockClass: 'swiper-pagination-lock',\n },\n },\n create: function create() {\n var swiper = this;\n Utils.extend(swiper, {\n pagination: {\n init: Pagination.init.bind(swiper),\n render: Pagination.render.bind(swiper),\n update: Pagination.update.bind(swiper),\n destroy: Pagination.destroy.bind(swiper),\n dynamicBulletIndex: 0,\n },\n });\n },\n on: {\n init: function init() {\n var swiper = this;\n swiper.pagination.init();\n swiper.pagination.render();\n swiper.pagination.update();\n },\n activeIndexChange: function activeIndexChange() {\n var swiper = this;\n if (swiper.params.loop) {\n swiper.pagination.update();\n } else if (typeof swiper.snapIndex === 'undefined') {\n swiper.pagination.update();\n }\n },\n snapIndexChange: function snapIndexChange() {\n var swiper = this;\n if (!swiper.params.loop) {\n swiper.pagination.update();\n }\n },\n slidesLengthChange: function slidesLengthChange() {\n var swiper = this;\n if (swiper.params.loop) {\n swiper.pagination.render();\n swiper.pagination.update();\n }\n },\n snapGridLengthChange: function snapGridLengthChange() {\n var swiper = this;\n if (!swiper.params.loop) {\n swiper.pagination.render();\n swiper.pagination.update();\n }\n },\n destroy: function destroy() {\n var swiper = this;\n swiper.pagination.destroy();\n },\n click: function click(e) {\n var swiper = this;\n if (\n swiper.params.pagination.el &&\n swiper.params.pagination.hideOnClick &&\n swiper.pagination.$el.length > 0 &&\n !$$1(e.target).hasClass(swiper.params.pagination.bulletClass)\n ) {\n swiper.pagination.$el.toggleClass(swiper.params.pagination.hiddenClass);\n }\n },\n },\n };\n\n var Scrollbar = {\n setTranslate: function setTranslate() {\n var swiper = this;\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) { return; }\n var scrollbar = swiper.scrollbar;\n var rtl = swiper.rtlTranslate;\n var progress = swiper.progress;\n var dragSize = scrollbar.dragSize;\n var trackSize = scrollbar.trackSize;\n var $dragEl = scrollbar.$dragEl;\n var $el = scrollbar.$el;\n var params = swiper.params.scrollbar;\n\n var newSize = dragSize;\n var newPos = (trackSize - dragSize) * progress;\n if (rtl) {\n newPos = -newPos;\n if (newPos > 0) {\n newSize = dragSize - newPos;\n newPos = 0;\n } else if (-newPos + dragSize > trackSize) {\n newSize = trackSize + newPos;\n }\n } else if (newPos < 0) {\n newSize = dragSize + newPos;\n newPos = 0;\n } else if (newPos + dragSize > trackSize) {\n newSize = trackSize - newPos;\n }\n if (swiper.isHorizontal()) {\n if (Support.transforms3d) {\n $dragEl.transform((\"translate3d(\" + newPos + \"px, 0, 0)\"));\n } else {\n $dragEl.transform((\"translateX(\" + newPos + \"px)\"));\n }\n $dragEl[0].style.width = newSize + \"px\";\n } else {\n if (Support.transforms3d) {\n $dragEl.transform((\"translate3d(0px, \" + newPos + \"px, 0)\"));\n } else {\n $dragEl.transform((\"translateY(\" + newPos + \"px)\"));\n }\n $dragEl[0].style.height = newSize + \"px\";\n }\n if (params.hide) {\n clearTimeout(swiper.scrollbar.timeout);\n $el[0].style.opacity = 1;\n swiper.scrollbar.timeout = setTimeout(function () {\n $el[0].style.opacity = 0;\n $el.transition(400);\n }, 1000);\n }\n },\n setTransition: function setTransition(duration) {\n var swiper = this;\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) { return; }\n swiper.scrollbar.$dragEl.transition(duration);\n },\n updateSize: function updateSize() {\n var swiper = this;\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) { return; }\n\n var scrollbar = swiper.scrollbar;\n var $dragEl = scrollbar.$dragEl;\n var $el = scrollbar.$el;\n\n $dragEl[0].style.width = '';\n $dragEl[0].style.height = '';\n var trackSize = swiper.isHorizontal() ? $el[0].offsetWidth : $el[0].offsetHeight;\n\n var divider = swiper.size / swiper.virtualSize;\n var moveDivider = divider * (trackSize / swiper.size);\n var dragSize;\n if (swiper.params.scrollbar.dragSize === 'auto') {\n dragSize = trackSize * divider;\n } else {\n dragSize = parseInt(swiper.params.scrollbar.dragSize, 10);\n }\n\n if (swiper.isHorizontal()) {\n $dragEl[0].style.width = dragSize + \"px\";\n } else {\n $dragEl[0].style.height = dragSize + \"px\";\n }\n\n if (divider >= 1) {\n $el[0].style.display = 'none';\n } else {\n $el[0].style.display = '';\n }\n if (swiper.params.scrollbarHide) {\n $el[0].style.opacity = 0;\n }\n Utils.extend(scrollbar, {\n trackSize: trackSize,\n divider: divider,\n moveDivider: moveDivider,\n dragSize: dragSize,\n });\n scrollbar.$el[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](swiper.params.scrollbar.lockClass);\n },\n setDragPosition: function setDragPosition(e) {\n var swiper = this;\n var scrollbar = swiper.scrollbar;\n var rtl = swiper.rtlTranslate;\n var $el = scrollbar.$el;\n var dragSize = scrollbar.dragSize;\n var trackSize = scrollbar.trackSize;\n\n var pointerPosition;\n if (swiper.isHorizontal()) {\n pointerPosition = ((e.type === 'touchstart' || e.type === 'touchmove') ? e.targetTouches[0].pageX : e.pageX || e.clientX);\n } else {\n pointerPosition = ((e.type === 'touchstart' || e.type === 'touchmove') ? e.targetTouches[0].pageY : e.pageY || e.clientY);\n }\n var positionRatio;\n positionRatio = ((pointerPosition) - $el.offset()[swiper.isHorizontal() ? 'left' : 'top'] - (dragSize / 2)) / (trackSize - dragSize);\n positionRatio = Math.max(Math.min(positionRatio, 1), 0);\n if (rtl) {\n positionRatio = 1 - positionRatio;\n }\n\n var position = swiper.minTranslate() + ((swiper.maxTranslate() - swiper.minTranslate()) * positionRatio);\n\n swiper.updateProgress(position);\n swiper.setTranslate(position);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n },\n onDragStart: function onDragStart(e) {\n var swiper = this;\n var params = swiper.params.scrollbar;\n var scrollbar = swiper.scrollbar;\n var $wrapperEl = swiper.$wrapperEl;\n var $el = scrollbar.$el;\n var $dragEl = scrollbar.$dragEl;\n swiper.scrollbar.isTouched = true;\n e.preventDefault();\n e.stopPropagation();\n\n $wrapperEl.transition(100);\n $dragEl.transition(100);\n scrollbar.setDragPosition(e);\n\n clearTimeout(swiper.scrollbar.dragTimeout);\n\n $el.transition(0);\n if (params.hide) {\n $el.css('opacity', 1);\n }\n swiper.emit('scrollbarDragStart', e);\n },\n onDragMove: function onDragMove(e) {\n var swiper = this;\n var scrollbar = swiper.scrollbar;\n var $wrapperEl = swiper.$wrapperEl;\n var $el = scrollbar.$el;\n var $dragEl = scrollbar.$dragEl;\n\n if (!swiper.scrollbar.isTouched) { return; }\n if (e.preventDefault) { e.preventDefault(); }\n else { e.returnValue = false; }\n scrollbar.setDragPosition(e);\n $wrapperEl.transition(0);\n $el.transition(0);\n $dragEl.transition(0);\n swiper.emit('scrollbarDragMove', e);\n },\n onDragEnd: function onDragEnd(e) {\n var swiper = this;\n\n var params = swiper.params.scrollbar;\n var scrollbar = swiper.scrollbar;\n var $el = scrollbar.$el;\n\n if (!swiper.scrollbar.isTouched) { return; }\n swiper.scrollbar.isTouched = false;\n if (params.hide) {\n clearTimeout(swiper.scrollbar.dragTimeout);\n swiper.scrollbar.dragTimeout = Utils.nextTick(function () {\n $el.css('opacity', 0);\n $el.transition(400);\n }, 1000);\n }\n swiper.emit('scrollbarDragEnd', e);\n if (params.snapOnRelease) {\n swiper.slideToClosest();\n }\n },\n enableDraggable: function enableDraggable() {\n var swiper = this;\n if (!swiper.params.scrollbar.el) { return; }\n var scrollbar = swiper.scrollbar;\n var touchEvents = swiper.touchEvents;\n var touchEventsDesktop = swiper.touchEventsDesktop;\n var params = swiper.params;\n var $el = scrollbar.$el;\n var target = $el[0];\n var activeListener = Support.passiveListener && params.passiveListener ? { passive: false, capture: false } : false;\n var passiveListener = Support.passiveListener && params.passiveListener ? { passive: true, capture: false } : false;\n if (!Support.touch && (Support.pointerEvents || Support.prefixedPointerEvents)) {\n target.addEventListener(touchEventsDesktop.start, swiper.scrollbar.onDragStart, activeListener);\n doc.addEventListener(touchEventsDesktop.move, swiper.scrollbar.onDragMove, activeListener);\n doc.addEventListener(touchEventsDesktop.end, swiper.scrollbar.onDragEnd, passiveListener);\n } else {\n if (Support.touch) {\n target.addEventListener(touchEvents.start, swiper.scrollbar.onDragStart, activeListener);\n target.addEventListener(touchEvents.move, swiper.scrollbar.onDragMove, activeListener);\n target.addEventListener(touchEvents.end, swiper.scrollbar.onDragEnd, passiveListener);\n }\n if ((params.simulateTouch && !Device.ios && !Device.android) || (params.simulateTouch && !Support.touch && Device.ios)) {\n target.addEventListener('mousedown', swiper.scrollbar.onDragStart, activeListener);\n doc.addEventListener('mousemove', swiper.scrollbar.onDragMove, activeListener);\n doc.addEventListener('mouseup', swiper.scrollbar.onDragEnd, passiveListener);\n }\n }\n },\n disableDraggable: function disableDraggable() {\n var swiper = this;\n if (!swiper.params.scrollbar.el) { return; }\n var scrollbar = swiper.scrollbar;\n var touchEvents = swiper.touchEvents;\n var touchEventsDesktop = swiper.touchEventsDesktop;\n var params = swiper.params;\n var $el = scrollbar.$el;\n var target = $el[0];\n var activeListener = Support.passiveListener && params.passiveListener ? { passive: false, capture: false } : false;\n var passiveListener = Support.passiveListener && params.passiveListener ? { passive: true, capture: false } : false;\n if (!Support.touch && (Support.pointerEvents || Support.prefixedPointerEvents)) {\n target.removeEventListener(touchEventsDesktop.start, swiper.scrollbar.onDragStart, activeListener);\n doc.removeEventListener(touchEventsDesktop.move, swiper.scrollbar.onDragMove, activeListener);\n doc.removeEventListener(touchEventsDesktop.end, swiper.scrollbar.onDragEnd, passiveListener);\n } else {\n if (Support.touch) {\n target.removeEventListener(touchEvents.start, swiper.scrollbar.onDragStart, activeListener);\n target.removeEventListener(touchEvents.move, swiper.scrollbar.onDragMove, activeListener);\n target.removeEventListener(touchEvents.end, swiper.scrollbar.onDragEnd, passiveListener);\n }\n if ((params.simulateTouch && !Device.ios && !Device.android) || (params.simulateTouch && !Support.touch && Device.ios)) {\n target.removeEventListener('mousedown', swiper.scrollbar.onDragStart, activeListener);\n doc.removeEventListener('mousemove', swiper.scrollbar.onDragMove, activeListener);\n doc.removeEventListener('mouseup', swiper.scrollbar.onDragEnd, passiveListener);\n }\n }\n },\n init: function init() {\n var swiper = this;\n if (!swiper.params.scrollbar.el) { return; }\n var scrollbar = swiper.scrollbar;\n var $swiperEl = swiper.$el;\n var params = swiper.params.scrollbar;\n\n var $el = $$1(params.el);\n if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1 && $swiperEl.find(params.el).length === 1) {\n $el = $swiperEl.find(params.el);\n }\n\n var $dragEl = $el.find((\".\" + (swiper.params.scrollbar.dragClass)));\n if ($dragEl.length === 0) {\n $dragEl = $$1((\"
\"));\n $el.append($dragEl);\n }\n\n Utils.extend(scrollbar, {\n $el: $el,\n el: $el[0],\n $dragEl: $dragEl,\n dragEl: $dragEl[0],\n });\n\n if (params.draggable) {\n scrollbar.enableDraggable();\n }\n },\n destroy: function destroy() {\n var swiper = this;\n swiper.scrollbar.disableDraggable();\n },\n };\n\n var Scrollbar$1 = {\n name: 'scrollbar',\n params: {\n scrollbar: {\n el: null,\n dragSize: 'auto',\n hide: false,\n draggable: false,\n snapOnRelease: true,\n lockClass: 'swiper-scrollbar-lock',\n dragClass: 'swiper-scrollbar-drag',\n },\n },\n create: function create() {\n var swiper = this;\n Utils.extend(swiper, {\n scrollbar: {\n init: Scrollbar.init.bind(swiper),\n destroy: Scrollbar.destroy.bind(swiper),\n updateSize: Scrollbar.updateSize.bind(swiper),\n setTranslate: Scrollbar.setTranslate.bind(swiper),\n setTransition: Scrollbar.setTransition.bind(swiper),\n enableDraggable: Scrollbar.enableDraggable.bind(swiper),\n disableDraggable: Scrollbar.disableDraggable.bind(swiper),\n setDragPosition: Scrollbar.setDragPosition.bind(swiper),\n onDragStart: Scrollbar.onDragStart.bind(swiper),\n onDragMove: Scrollbar.onDragMove.bind(swiper),\n onDragEnd: Scrollbar.onDragEnd.bind(swiper),\n isTouched: false,\n timeout: null,\n dragTimeout: null,\n },\n });\n },\n on: {\n init: function init() {\n var swiper = this;\n swiper.scrollbar.init();\n swiper.scrollbar.updateSize();\n swiper.scrollbar.setTranslate();\n },\n update: function update() {\n var swiper = this;\n swiper.scrollbar.updateSize();\n },\n resize: function resize() {\n var swiper = this;\n swiper.scrollbar.updateSize();\n },\n observerUpdate: function observerUpdate() {\n var swiper = this;\n swiper.scrollbar.updateSize();\n },\n setTranslate: function setTranslate() {\n var swiper = this;\n swiper.scrollbar.setTranslate();\n },\n setTransition: function setTransition(duration) {\n var swiper = this;\n swiper.scrollbar.setTransition(duration);\n },\n destroy: function destroy() {\n var swiper = this;\n swiper.scrollbar.destroy();\n },\n },\n };\n\n var Parallax = {\n setTransform: function setTransform(el, progress) {\n var swiper = this;\n var rtl = swiper.rtl;\n\n var $el = $$1(el);\n var rtlFactor = rtl ? -1 : 1;\n\n var p = $el.attr('data-swiper-parallax') || '0';\n var x = $el.attr('data-swiper-parallax-x');\n var y = $el.attr('data-swiper-parallax-y');\n var scale = $el.attr('data-swiper-parallax-scale');\n var opacity = $el.attr('data-swiper-parallax-opacity');\n\n if (x || y) {\n x = x || '0';\n y = y || '0';\n } else if (swiper.isHorizontal()) {\n x = p;\n y = '0';\n } else {\n y = p;\n x = '0';\n }\n\n if ((x).indexOf('%') >= 0) {\n x = (parseInt(x, 10) * progress * rtlFactor) + \"%\";\n } else {\n x = (x * progress * rtlFactor) + \"px\";\n }\n if ((y).indexOf('%') >= 0) {\n y = (parseInt(y, 10) * progress) + \"%\";\n } else {\n y = (y * progress) + \"px\";\n }\n\n if (typeof opacity !== 'undefined' && opacity !== null) {\n var currentOpacity = opacity - ((opacity - 1) * (1 - Math.abs(progress)));\n $el[0].style.opacity = currentOpacity;\n }\n if (typeof scale === 'undefined' || scale === null) {\n $el.transform((\"translate3d(\" + x + \", \" + y + \", 0px)\"));\n } else {\n var currentScale = scale - ((scale - 1) * (1 - Math.abs(progress)));\n $el.transform((\"translate3d(\" + x + \", \" + y + \", 0px) scale(\" + currentScale + \")\"));\n }\n },\n setTranslate: function setTranslate() {\n var swiper = this;\n var $el = swiper.$el;\n var slides = swiper.slides;\n var progress = swiper.progress;\n var snapGrid = swiper.snapGrid;\n $el.children('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y]')\n .each(function (index, el) {\n swiper.parallax.setTransform(el, progress);\n });\n slides.each(function (slideIndex, slideEl) {\n var slideProgress = slideEl.progress;\n if (swiper.params.slidesPerGroup > 1 && swiper.params.slidesPerView !== 'auto') {\n slideProgress += Math.ceil(slideIndex / 2) - (progress * (snapGrid.length - 1));\n }\n slideProgress = Math.min(Math.max(slideProgress, -1), 1);\n $$1(slideEl).find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y]')\n .each(function (index, el) {\n swiper.parallax.setTransform(el, slideProgress);\n });\n });\n },\n setTransition: function setTransition(duration) {\n if ( duration === void 0 ) duration = this.params.speed;\n\n var swiper = this;\n var $el = swiper.$el;\n $el.find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y]')\n .each(function (index, parallaxEl) {\n var $parallaxEl = $$1(parallaxEl);\n var parallaxDuration = parseInt($parallaxEl.attr('data-swiper-parallax-duration'), 10) || duration;\n if (duration === 0) { parallaxDuration = 0; }\n $parallaxEl.transition(parallaxDuration);\n });\n },\n };\n\n var Parallax$1 = {\n name: 'parallax',\n params: {\n parallax: {\n enabled: false,\n },\n },\n create: function create() {\n var swiper = this;\n Utils.extend(swiper, {\n parallax: {\n setTransform: Parallax.setTransform.bind(swiper),\n setTranslate: Parallax.setTranslate.bind(swiper),\n setTransition: Parallax.setTransition.bind(swiper),\n },\n });\n },\n on: {\n beforeInit: function beforeInit() {\n var swiper = this;\n if (!swiper.params.parallax.enabled) { return; }\n swiper.params.watchSlidesProgress = true;\n },\n init: function init() {\n var swiper = this;\n if (!swiper.params.parallax) { return; }\n swiper.parallax.setTranslate();\n },\n setTranslate: function setTranslate() {\n var swiper = this;\n if (!swiper.params.parallax) { return; }\n swiper.parallax.setTranslate();\n },\n setTransition: function setTransition(duration) {\n var swiper = this;\n if (!swiper.params.parallax) { return; }\n swiper.parallax.setTransition(duration);\n },\n },\n };\n\n var Zoom = {\n // Calc Scale From Multi-touches\n getDistanceBetweenTouches: function getDistanceBetweenTouches(e) {\n if (e.targetTouches.length < 2) { return 1; }\n var x1 = e.targetTouches[0].pageX;\n var y1 = e.targetTouches[0].pageY;\n var x2 = e.targetTouches[1].pageX;\n var y2 = e.targetTouches[1].pageY;\n var distance = Math.sqrt((Math.pow( (x2 - x1), 2 )) + (Math.pow( (y2 - y1), 2 )));\n return distance;\n },\n // Events\n onGestureStart: function onGestureStart(e) {\n var swiper = this;\n var params = swiper.params.zoom;\n var zoom = swiper.zoom;\n var gesture = zoom.gesture;\n zoom.fakeGestureTouched = false;\n zoom.fakeGestureMoved = false;\n if (!Support.gestures) {\n if (e.type !== 'touchstart' || (e.type === 'touchstart' && e.targetTouches.length < 2)) {\n return;\n }\n zoom.fakeGestureTouched = true;\n gesture.scaleStart = Zoom.getDistanceBetweenTouches(e);\n }\n if (!gesture.$slideEl || !gesture.$slideEl.length) {\n gesture.$slideEl = $$1(e.target).closest('.swiper-slide');\n if (gesture.$slideEl.length === 0) { gesture.$slideEl = swiper.slides.eq(swiper.activeIndex); }\n gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas');\n gesture.$imageWrapEl = gesture.$imageEl.parent((\".\" + (params.containerClass)));\n gesture.maxRatio = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n if (gesture.$imageWrapEl.length === 0) {\n gesture.$imageEl = undefined;\n return;\n }\n }\n gesture.$imageEl.transition(0);\n swiper.zoom.isScaling = true;\n },\n onGestureChange: function onGestureChange(e) {\n var swiper = this;\n var params = swiper.params.zoom;\n var zoom = swiper.zoom;\n var gesture = zoom.gesture;\n if (!Support.gestures) {\n if (e.type !== 'touchmove' || (e.type === 'touchmove' && e.targetTouches.length < 2)) {\n return;\n }\n zoom.fakeGestureMoved = true;\n gesture.scaleMove = Zoom.getDistanceBetweenTouches(e);\n }\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) { return; }\n if (Support.gestures) {\n swiper.zoom.scale = e.scale * zoom.currentScale;\n } else {\n zoom.scale = (gesture.scaleMove / gesture.scaleStart) * zoom.currentScale;\n }\n if (zoom.scale > gesture.maxRatio) {\n zoom.scale = (gesture.maxRatio - 1) + (Math.pow( ((zoom.scale - gesture.maxRatio) + 1), 0.5 ));\n }\n if (zoom.scale < params.minRatio) {\n zoom.scale = (params.minRatio + 1) - (Math.pow( ((params.minRatio - zoom.scale) + 1), 0.5 ));\n }\n gesture.$imageEl.transform((\"translate3d(0,0,0) scale(\" + (zoom.scale) + \")\"));\n },\n onGestureEnd: function onGestureEnd(e) {\n var swiper = this;\n var params = swiper.params.zoom;\n var zoom = swiper.zoom;\n var gesture = zoom.gesture;\n if (!Support.gestures) {\n if (!zoom.fakeGestureTouched || !zoom.fakeGestureMoved) {\n return;\n }\n if (e.type !== 'touchend' || (e.type === 'touchend' && e.changedTouches.length < 2 && !Device.android)) {\n return;\n }\n zoom.fakeGestureTouched = false;\n zoom.fakeGestureMoved = false;\n }\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) { return; }\n zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio);\n gesture.$imageEl.transition(swiper.params.speed).transform((\"translate3d(0,0,0) scale(\" + (zoom.scale) + \")\"));\n zoom.currentScale = zoom.scale;\n zoom.isScaling = false;\n if (zoom.scale === 1) { gesture.$slideEl = undefined; }\n },\n onTouchStart: function onTouchStart(e) {\n var swiper = this;\n var zoom = swiper.zoom;\n var gesture = zoom.gesture;\n var image = zoom.image;\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) { return; }\n if (image.isTouched) { return; }\n if (Device.android) { e.preventDefault(); }\n image.isTouched = true;\n image.touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n image.touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n },\n onTouchMove: function onTouchMove(e) {\n var swiper = this;\n var zoom = swiper.zoom;\n var gesture = zoom.gesture;\n var image = zoom.image;\n var velocity = zoom.velocity;\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) { return; }\n swiper.allowClick = false;\n if (!image.isTouched || !gesture.$slideEl) { return; }\n\n if (!image.isMoved) {\n image.width = gesture.$imageEl[0].offsetWidth;\n image.height = gesture.$imageEl[0].offsetHeight;\n image.startX = Utils.getTranslate(gesture.$imageWrapEl[0], 'x') || 0;\n image.startY = Utils.getTranslate(gesture.$imageWrapEl[0], 'y') || 0;\n gesture.slideWidth = gesture.$slideEl[0].offsetWidth;\n gesture.slideHeight = gesture.$slideEl[0].offsetHeight;\n gesture.$imageWrapEl.transition(0);\n if (swiper.rtl) {\n image.startX = -image.startX;\n image.startY = -image.startY;\n }\n }\n // Define if we need image drag\n var scaledWidth = image.width * zoom.scale;\n var scaledHeight = image.height * zoom.scale;\n\n if (scaledWidth < gesture.slideWidth && scaledHeight < gesture.slideHeight) { return; }\n\n image.minX = Math.min(((gesture.slideWidth / 2) - (scaledWidth / 2)), 0);\n image.maxX = -image.minX;\n image.minY = Math.min(((gesture.slideHeight / 2) - (scaledHeight / 2)), 0);\n image.maxY = -image.minY;\n\n image.touchesCurrent.x = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n image.touchesCurrent.y = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n\n if (!image.isMoved && !zoom.isScaling) {\n if (\n swiper.isHorizontal() &&\n (\n (Math.floor(image.minX) === Math.floor(image.startX) && image.touchesCurrent.x < image.touchesStart.x) ||\n (Math.floor(image.maxX) === Math.floor(image.startX) && image.touchesCurrent.x > image.touchesStart.x)\n )\n ) {\n image.isTouched = false;\n return;\n } else if (\n !swiper.isHorizontal() &&\n (\n (Math.floor(image.minY) === Math.floor(image.startY) && image.touchesCurrent.y < image.touchesStart.y) ||\n (Math.floor(image.maxY) === Math.floor(image.startY) && image.touchesCurrent.y > image.touchesStart.y)\n )\n ) {\n image.isTouched = false;\n return;\n }\n }\n e.preventDefault();\n e.stopPropagation();\n\n image.isMoved = true;\n image.currentX = (image.touchesCurrent.x - image.touchesStart.x) + image.startX;\n image.currentY = (image.touchesCurrent.y - image.touchesStart.y) + image.startY;\n\n if (image.currentX < image.minX) {\n image.currentX = (image.minX + 1) - (Math.pow( ((image.minX - image.currentX) + 1), 0.8 ));\n }\n if (image.currentX > image.maxX) {\n image.currentX = (image.maxX - 1) + (Math.pow( ((image.currentX - image.maxX) + 1), 0.8 ));\n }\n\n if (image.currentY < image.minY) {\n image.currentY = (image.minY + 1) - (Math.pow( ((image.minY - image.currentY) + 1), 0.8 ));\n }\n if (image.currentY > image.maxY) {\n image.currentY = (image.maxY - 1) + (Math.pow( ((image.currentY - image.maxY) + 1), 0.8 ));\n }\n\n // Velocity\n if (!velocity.prevPositionX) { velocity.prevPositionX = image.touchesCurrent.x; }\n if (!velocity.prevPositionY) { velocity.prevPositionY = image.touchesCurrent.y; }\n if (!velocity.prevTime) { velocity.prevTime = Date.now(); }\n velocity.x = (image.touchesCurrent.x - velocity.prevPositionX) / (Date.now() - velocity.prevTime) / 2;\n velocity.y = (image.touchesCurrent.y - velocity.prevPositionY) / (Date.now() - velocity.prevTime) / 2;\n if (Math.abs(image.touchesCurrent.x - velocity.prevPositionX) < 2) { velocity.x = 0; }\n if (Math.abs(image.touchesCurrent.y - velocity.prevPositionY) < 2) { velocity.y = 0; }\n velocity.prevPositionX = image.touchesCurrent.x;\n velocity.prevPositionY = image.touchesCurrent.y;\n velocity.prevTime = Date.now();\n\n gesture.$imageWrapEl.transform((\"translate3d(\" + (image.currentX) + \"px, \" + (image.currentY) + \"px,0)\"));\n },\n onTouchEnd: function onTouchEnd() {\n var swiper = this;\n var zoom = swiper.zoom;\n var gesture = zoom.gesture;\n var image = zoom.image;\n var velocity = zoom.velocity;\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) { return; }\n if (!image.isTouched || !image.isMoved) {\n image.isTouched = false;\n image.isMoved = false;\n return;\n }\n image.isTouched = false;\n image.isMoved = false;\n var momentumDurationX = 300;\n var momentumDurationY = 300;\n var momentumDistanceX = velocity.x * momentumDurationX;\n var newPositionX = image.currentX + momentumDistanceX;\n var momentumDistanceY = velocity.y * momentumDurationY;\n var newPositionY = image.currentY + momentumDistanceY;\n\n // Fix duration\n if (velocity.x !== 0) { momentumDurationX = Math.abs((newPositionX - image.currentX) / velocity.x); }\n if (velocity.y !== 0) { momentumDurationY = Math.abs((newPositionY - image.currentY) / velocity.y); }\n var momentumDuration = Math.max(momentumDurationX, momentumDurationY);\n\n image.currentX = newPositionX;\n image.currentY = newPositionY;\n\n // Define if we need image drag\n var scaledWidth = image.width * zoom.scale;\n var scaledHeight = image.height * zoom.scale;\n image.minX = Math.min(((gesture.slideWidth / 2) - (scaledWidth / 2)), 0);\n image.maxX = -image.minX;\n image.minY = Math.min(((gesture.slideHeight / 2) - (scaledHeight / 2)), 0);\n image.maxY = -image.minY;\n image.currentX = Math.max(Math.min(image.currentX, image.maxX), image.minX);\n image.currentY = Math.max(Math.min(image.currentY, image.maxY), image.minY);\n\n gesture.$imageWrapEl.transition(momentumDuration).transform((\"translate3d(\" + (image.currentX) + \"px, \" + (image.currentY) + \"px,0)\"));\n },\n onTransitionEnd: function onTransitionEnd() {\n var swiper = this;\n var zoom = swiper.zoom;\n var gesture = zoom.gesture;\n if (gesture.$slideEl && swiper.previousIndex !== swiper.activeIndex) {\n gesture.$imageEl.transform('translate3d(0,0,0) scale(1)');\n gesture.$imageWrapEl.transform('translate3d(0,0,0)');\n gesture.$slideEl = undefined;\n gesture.$imageEl = undefined;\n gesture.$imageWrapEl = undefined;\n\n zoom.scale = 1;\n zoom.currentScale = 1;\n }\n },\n // Toggle Zoom\n toggle: function toggle(e) {\n var swiper = this;\n var zoom = swiper.zoom;\n\n if (zoom.scale && zoom.scale !== 1) {\n // Zoom Out\n zoom.out();\n } else {\n // Zoom In\n zoom.in(e);\n }\n },\n in: function in$1(e) {\n var swiper = this;\n\n var zoom = swiper.zoom;\n var params = swiper.params.zoom;\n var gesture = zoom.gesture;\n var image = zoom.image;\n\n if (!gesture.$slideEl) {\n gesture.$slideEl = swiper.clickedSlide ? $$1(swiper.clickedSlide) : swiper.slides.eq(swiper.activeIndex);\n gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas');\n gesture.$imageWrapEl = gesture.$imageEl.parent((\".\" + (params.containerClass)));\n }\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) { return; }\n\n gesture.$slideEl.addClass((\"\" + (params.zoomedSlideClass)));\n\n var touchX;\n var touchY;\n var offsetX;\n var offsetY;\n var diffX;\n var diffY;\n var translateX;\n var translateY;\n var imageWidth;\n var imageHeight;\n var scaledWidth;\n var scaledHeight;\n var translateMinX;\n var translateMinY;\n var translateMaxX;\n var translateMaxY;\n var slideWidth;\n var slideHeight;\n\n if (typeof image.touchesStart.x === 'undefined' && e) {\n touchX = e.type === 'touchend' ? e.changedTouches[0].pageX : e.pageX;\n touchY = e.type === 'touchend' ? e.changedTouches[0].pageY : e.pageY;\n } else {\n touchX = image.touchesStart.x;\n touchY = image.touchesStart.y;\n }\n\n zoom.scale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n zoom.currentScale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n if (e) {\n slideWidth = gesture.$slideEl[0].offsetWidth;\n slideHeight = gesture.$slideEl[0].offsetHeight;\n offsetX = gesture.$slideEl.offset().left;\n offsetY = gesture.$slideEl.offset().top;\n diffX = (offsetX + (slideWidth / 2)) - touchX;\n diffY = (offsetY + (slideHeight / 2)) - touchY;\n\n imageWidth = gesture.$imageEl[0].offsetWidth;\n imageHeight = gesture.$imageEl[0].offsetHeight;\n scaledWidth = imageWidth * zoom.scale;\n scaledHeight = imageHeight * zoom.scale;\n\n translateMinX = Math.min(((slideWidth / 2) - (scaledWidth / 2)), 0);\n translateMinY = Math.min(((slideHeight / 2) - (scaledHeight / 2)), 0);\n translateMaxX = -translateMinX;\n translateMaxY = -translateMinY;\n\n translateX = diffX * zoom.scale;\n translateY = diffY * zoom.scale;\n\n if (translateX < translateMinX) {\n translateX = translateMinX;\n }\n if (translateX > translateMaxX) {\n translateX = translateMaxX;\n }\n\n if (translateY < translateMinY) {\n translateY = translateMinY;\n }\n if (translateY > translateMaxY) {\n translateY = translateMaxY;\n }\n } else {\n translateX = 0;\n translateY = 0;\n }\n gesture.$imageWrapEl.transition(300).transform((\"translate3d(\" + translateX + \"px, \" + translateY + \"px,0)\"));\n gesture.$imageEl.transition(300).transform((\"translate3d(0,0,0) scale(\" + (zoom.scale) + \")\"));\n },\n out: function out() {\n var swiper = this;\n\n var zoom = swiper.zoom;\n var params = swiper.params.zoom;\n var gesture = zoom.gesture;\n\n if (!gesture.$slideEl) {\n gesture.$slideEl = swiper.clickedSlide ? $$1(swiper.clickedSlide) : swiper.slides.eq(swiper.activeIndex);\n gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas');\n gesture.$imageWrapEl = gesture.$imageEl.parent((\".\" + (params.containerClass)));\n }\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) { return; }\n\n zoom.scale = 1;\n zoom.currentScale = 1;\n gesture.$imageWrapEl.transition(300).transform('translate3d(0,0,0)');\n gesture.$imageEl.transition(300).transform('translate3d(0,0,0) scale(1)');\n gesture.$slideEl.removeClass((\"\" + (params.zoomedSlideClass)));\n gesture.$slideEl = undefined;\n },\n // Attach/Detach Events\n enable: function enable() {\n var swiper = this;\n var zoom = swiper.zoom;\n if (zoom.enabled) { return; }\n zoom.enabled = true;\n\n var passiveListener = swiper.touchEvents.start === 'touchstart' && Support.passiveListener && swiper.params.passiveListeners ? { passive: true, capture: false } : false;\n\n // Scale image\n if (Support.gestures) {\n swiper.$wrapperEl.on('gesturestart', '.swiper-slide', zoom.onGestureStart, passiveListener);\n swiper.$wrapperEl.on('gesturechange', '.swiper-slide', zoom.onGestureChange, passiveListener);\n swiper.$wrapperEl.on('gestureend', '.swiper-slide', zoom.onGestureEnd, passiveListener);\n } else if (swiper.touchEvents.start === 'touchstart') {\n swiper.$wrapperEl.on(swiper.touchEvents.start, '.swiper-slide', zoom.onGestureStart, passiveListener);\n swiper.$wrapperEl.on(swiper.touchEvents.move, '.swiper-slide', zoom.onGestureChange, passiveListener);\n swiper.$wrapperEl.on(swiper.touchEvents.end, '.swiper-slide', zoom.onGestureEnd, passiveListener);\n }\n\n // Move image\n swiper.$wrapperEl.on(swiper.touchEvents.move, (\".\" + (swiper.params.zoom.containerClass)), zoom.onTouchMove);\n },\n disable: function disable() {\n var swiper = this;\n var zoom = swiper.zoom;\n if (!zoom.enabled) { return; }\n\n swiper.zoom.enabled = false;\n\n var passiveListener = swiper.touchEvents.start === 'touchstart' && Support.passiveListener && swiper.params.passiveListeners ? { passive: true, capture: false } : false;\n\n // Scale image\n if (Support.gestures) {\n swiper.$wrapperEl.off('gesturestart', '.swiper-slide', zoom.onGestureStart, passiveListener);\n swiper.$wrapperEl.off('gesturechange', '.swiper-slide', zoom.onGestureChange, passiveListener);\n swiper.$wrapperEl.off('gestureend', '.swiper-slide', zoom.onGestureEnd, passiveListener);\n } else if (swiper.touchEvents.start === 'touchstart') {\n swiper.$wrapperEl.off(swiper.touchEvents.start, '.swiper-slide', zoom.onGestureStart, passiveListener);\n swiper.$wrapperEl.off(swiper.touchEvents.move, '.swiper-slide', zoom.onGestureChange, passiveListener);\n swiper.$wrapperEl.off(swiper.touchEvents.end, '.swiper-slide', zoom.onGestureEnd, passiveListener);\n }\n\n // Move image\n swiper.$wrapperEl.off(swiper.touchEvents.move, (\".\" + (swiper.params.zoom.containerClass)), zoom.onTouchMove);\n },\n };\n\n var Zoom$1 = {\n name: 'zoom',\n params: {\n zoom: {\n enabled: false,\n maxRatio: 3,\n minRatio: 1,\n toggle: true,\n containerClass: 'swiper-zoom-container',\n zoomedSlideClass: 'swiper-slide-zoomed',\n },\n },\n create: function create() {\n var swiper = this;\n var zoom = {\n enabled: false,\n scale: 1,\n currentScale: 1,\n isScaling: false,\n gesture: {\n $slideEl: undefined,\n slideWidth: undefined,\n slideHeight: undefined,\n $imageEl: undefined,\n $imageWrapEl: undefined,\n maxRatio: 3,\n },\n image: {\n isTouched: undefined,\n isMoved: undefined,\n currentX: undefined,\n currentY: undefined,\n minX: undefined,\n minY: undefined,\n maxX: undefined,\n maxY: undefined,\n width: undefined,\n height: undefined,\n startX: undefined,\n startY: undefined,\n touchesStart: {},\n touchesCurrent: {},\n },\n velocity: {\n x: undefined,\n y: undefined,\n prevPositionX: undefined,\n prevPositionY: undefined,\n prevTime: undefined,\n },\n };\n ('onGestureStart onGestureChange onGestureEnd onTouchStart onTouchMove onTouchEnd onTransitionEnd toggle enable disable in out').split(' ').forEach(function (methodName) {\n zoom[methodName] = Zoom[methodName].bind(swiper);\n });\n Utils.extend(swiper, {\n zoom: zoom,\n });\n },\n on: {\n init: function init() {\n var swiper = this;\n if (swiper.params.zoom.enabled) {\n swiper.zoom.enable();\n }\n },\n destroy: function destroy() {\n var swiper = this;\n swiper.zoom.disable();\n },\n touchStart: function touchStart(e) {\n var swiper = this;\n if (!swiper.zoom.enabled) { return; }\n swiper.zoom.onTouchStart(e);\n },\n touchEnd: function touchEnd(e) {\n var swiper = this;\n if (!swiper.zoom.enabled) { return; }\n swiper.zoom.onTouchEnd(e);\n },\n doubleTap: function doubleTap(e) {\n var swiper = this;\n if (swiper.params.zoom.enabled && swiper.zoom.enabled && swiper.params.zoom.toggle) {\n swiper.zoom.toggle(e);\n }\n },\n transitionEnd: function transitionEnd() {\n var swiper = this;\n if (swiper.zoom.enabled && swiper.params.zoom.enabled) {\n swiper.zoom.onTransitionEnd();\n }\n },\n },\n };\n\n var Lazy$2 = {\n loadInSlide: function loadInSlide(index, loadInDuplicate) {\n if ( loadInDuplicate === void 0 ) loadInDuplicate = true;\n\n var swiper = this;\n var params = swiper.params.lazy;\n if (typeof index === 'undefined') { return; }\n if (swiper.slides.length === 0) { return; }\n var isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n\n var $slideEl = isVirtual\n ? swiper.$wrapperEl.children((\".\" + (swiper.params.slideClass) + \"[data-swiper-slide-index=\\\"\" + index + \"\\\"]\"))\n : swiper.slides.eq(index);\n\n var $images = $slideEl.find((\".\" + (params.elementClass) + \":not(.\" + (params.loadedClass) + \"):not(.\" + (params.loadingClass) + \")\"));\n if ($slideEl.hasClass(params.elementClass) && !$slideEl.hasClass(params.loadedClass) && !$slideEl.hasClass(params.loadingClass)) {\n $images = $images.add($slideEl[0]);\n }\n if ($images.length === 0) { return; }\n\n $images.each(function (imageIndex, imageEl) {\n var $imageEl = $$1(imageEl);\n $imageEl.addClass(params.loadingClass);\n\n var background = $imageEl.attr('data-background');\n var src = $imageEl.attr('data-src');\n var srcset = $imageEl.attr('data-srcset');\n var sizes = $imageEl.attr('data-sizes');\n\n swiper.loadImage($imageEl[0], (src || background), srcset, sizes, false, function () {\n if (typeof swiper === 'undefined' || swiper === null || !swiper || (swiper && !swiper.params) || swiper.destroyed) { return; }\n if (background) {\n $imageEl.css('background-image', (\"url(\\\"\" + background + \"\\\")\"));\n $imageEl.removeAttr('data-background');\n } else {\n if (srcset) {\n $imageEl.attr('srcset', srcset);\n $imageEl.removeAttr('data-srcset');\n }\n if (sizes) {\n $imageEl.attr('sizes', sizes);\n $imageEl.removeAttr('data-sizes');\n }\n if (src) {\n $imageEl.attr('src', src);\n $imageEl.removeAttr('data-src');\n }\n }\n\n $imageEl.addClass(params.loadedClass).removeClass(params.loadingClass);\n $slideEl.find((\".\" + (params.preloaderClass))).remove();\n if (swiper.params.loop && loadInDuplicate) {\n var slideOriginalIndex = $slideEl.attr('data-swiper-slide-index');\n if ($slideEl.hasClass(swiper.params.slideDuplicateClass)) {\n var originalSlide = swiper.$wrapperEl.children((\"[data-swiper-slide-index=\\\"\" + slideOriginalIndex + \"\\\"]:not(.\" + (swiper.params.slideDuplicateClass) + \")\"));\n swiper.lazy.loadInSlide(originalSlide.index(), false);\n } else {\n var duplicatedSlide = swiper.$wrapperEl.children((\".\" + (swiper.params.slideDuplicateClass) + \"[data-swiper-slide-index=\\\"\" + slideOriginalIndex + \"\\\"]\"));\n swiper.lazy.loadInSlide(duplicatedSlide.index(), false);\n }\n }\n swiper.emit('lazyImageReady', $slideEl[0], $imageEl[0]);\n });\n\n swiper.emit('lazyImageLoad', $slideEl[0], $imageEl[0]);\n });\n },\n load: function load() {\n var swiper = this;\n var $wrapperEl = swiper.$wrapperEl;\n var swiperParams = swiper.params;\n var slides = swiper.slides;\n var activeIndex = swiper.activeIndex;\n var isVirtual = swiper.virtual && swiperParams.virtual.enabled;\n var params = swiperParams.lazy;\n\n var slidesPerView = swiperParams.slidesPerView;\n if (slidesPerView === 'auto') {\n slidesPerView = 0;\n }\n\n function slideExist(index) {\n if (isVirtual) {\n if ($wrapperEl.children((\".\" + (swiperParams.slideClass) + \"[data-swiper-slide-index=\\\"\" + index + \"\\\"]\")).length) {\n return true;\n }\n } else if (slides[index]) { return true; }\n return false;\n }\n function slideIndex(slideEl) {\n if (isVirtual) {\n return $$1(slideEl).attr('data-swiper-slide-index');\n }\n return $$1(slideEl).index();\n }\n\n if (!swiper.lazy.initialImageLoaded) { swiper.lazy.initialImageLoaded = true; }\n if (swiper.params.watchSlidesVisibility) {\n $wrapperEl.children((\".\" + (swiperParams.slideVisibleClass))).each(function (elIndex, slideEl) {\n var index = isVirtual ? $$1(slideEl).attr('data-swiper-slide-index') : $$1(slideEl).index();\n swiper.lazy.loadInSlide(index);\n });\n } else if (slidesPerView > 1) {\n for (var i = activeIndex; i < activeIndex + slidesPerView; i += 1) {\n if (slideExist(i)) { swiper.lazy.loadInSlide(i); }\n }\n } else {\n swiper.lazy.loadInSlide(activeIndex);\n }\n if (params.loadPrevNext) {\n if (slidesPerView > 1 || (params.loadPrevNextAmount && params.loadPrevNextAmount > 1)) {\n var amount = params.loadPrevNextAmount;\n var spv = slidesPerView;\n var maxIndex = Math.min(activeIndex + spv + Math.max(amount, spv), slides.length);\n var minIndex = Math.max(activeIndex - Math.max(spv, amount), 0);\n // Next Slides\n for (var i$1 = activeIndex + slidesPerView; i$1 < maxIndex; i$1 += 1) {\n if (slideExist(i$1)) { swiper.lazy.loadInSlide(i$1); }\n }\n // Prev Slides\n for (var i$2 = minIndex; i$2 < activeIndex; i$2 += 1) {\n if (slideExist(i$2)) { swiper.lazy.loadInSlide(i$2); }\n }\n } else {\n var nextSlide = $wrapperEl.children((\".\" + (swiperParams.slideNextClass)));\n if (nextSlide.length > 0) { swiper.lazy.loadInSlide(slideIndex(nextSlide)); }\n\n var prevSlide = $wrapperEl.children((\".\" + (swiperParams.slidePrevClass)));\n if (prevSlide.length > 0) { swiper.lazy.loadInSlide(slideIndex(prevSlide)); }\n }\n }\n },\n };\n\n var Lazy$3 = {\n name: 'lazy',\n params: {\n lazy: {\n enabled: false,\n loadPrevNext: false,\n loadPrevNextAmount: 1,\n loadOnTransitionStart: false,\n\n elementClass: 'swiper-lazy',\n loadingClass: 'swiper-lazy-loading',\n loadedClass: 'swiper-lazy-loaded',\n preloaderClass: 'swiper-lazy-preloader',\n },\n },\n create: function create() {\n var swiper = this;\n Utils.extend(swiper, {\n lazy: {\n initialImageLoaded: false,\n load: Lazy$2.load.bind(swiper),\n loadInSlide: Lazy$2.loadInSlide.bind(swiper),\n },\n });\n },\n on: {\n beforeInit: function beforeInit() {\n var swiper = this;\n if (swiper.params.lazy.enabled && swiper.params.preloadImages) {\n swiper.params.preloadImages = false;\n }\n },\n init: function init() {\n var swiper = this;\n if (swiper.params.lazy.enabled && !swiper.params.loop && swiper.params.initialSlide === 0) {\n swiper.lazy.load();\n }\n },\n scroll: function scroll() {\n var swiper = this;\n if (swiper.params.freeMode && !swiper.params.freeModeSticky) {\n swiper.lazy.load();\n }\n },\n resize: function resize() {\n var swiper = this;\n if (swiper.params.lazy.enabled) {\n swiper.lazy.load();\n }\n },\n scrollbarDragMove: function scrollbarDragMove() {\n var swiper = this;\n if (swiper.params.lazy.enabled) {\n swiper.lazy.load();\n }\n },\n transitionStart: function transitionStart() {\n var swiper = this;\n if (swiper.params.lazy.enabled) {\n if (swiper.params.lazy.loadOnTransitionStart || (!swiper.params.lazy.loadOnTransitionStart && !swiper.lazy.initialImageLoaded)) {\n swiper.lazy.load();\n }\n }\n },\n transitionEnd: function transitionEnd() {\n var swiper = this;\n if (swiper.params.lazy.enabled && !swiper.params.lazy.loadOnTransitionStart) {\n swiper.lazy.load();\n }\n },\n },\n };\n\n /* eslint no-bitwise: [\"error\", { \"allow\": [\">>\"] }] */\n\n var Controller = {\n LinearSpline: function LinearSpline(x, y) {\n var binarySearch = (function search() {\n var maxIndex;\n var minIndex;\n var guess;\n return function (array, val) {\n minIndex = -1;\n maxIndex = array.length;\n while (maxIndex - minIndex > 1) {\n guess = maxIndex + minIndex >> 1;\n if (array[guess] <= val) {\n minIndex = guess;\n } else {\n maxIndex = guess;\n }\n }\n return maxIndex;\n };\n }());\n this.x = x;\n this.y = y;\n this.lastIndex = x.length - 1;\n // Given an x value (x2), return the expected y2 value:\n // (x1,y1) is the known point before given value,\n // (x3,y3) is the known point after given value.\n var i1;\n var i3;\n\n this.interpolate = function interpolate(x2) {\n if (!x2) { return 0; }\n\n // Get the indexes of x1 and x3 (the array indexes before and after given x2):\n i3 = binarySearch(this.x, x2);\n i1 = i3 - 1;\n\n // We have our indexes i1 & i3, so we can calculate already:\n // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1\n return (((x2 - this.x[i1]) * (this.y[i3] - this.y[i1])) / (this.x[i3] - this.x[i1])) + this.y[i1];\n };\n return this;\n },\n // xxx: for now i will just save one spline function to to\n getInterpolateFunction: function getInterpolateFunction(c) {\n var swiper = this;\n if (!swiper.controller.spline) {\n swiper.controller.spline = swiper.params.loop ?\n new Controller.LinearSpline(swiper.slidesGrid, c.slidesGrid) :\n new Controller.LinearSpline(swiper.snapGrid, c.snapGrid);\n }\n },\n setTranslate: function setTranslate(setTranslate$1, byController) {\n var swiper = this;\n var controlled = swiper.controller.control;\n var multiplier;\n var controlledTranslate;\n function setControlledTranslate(c) {\n // this will create an Interpolate function based on the snapGrids\n // x is the Grid of the scrolled scroller and y will be the controlled scroller\n // it makes sense to create this only once and recall it for the interpolation\n // the function does a lot of value caching for performance\n var translate = swiper.rtlTranslate ? -swiper.translate : swiper.translate;\n if (swiper.params.controller.by === 'slide') {\n swiper.controller.getInterpolateFunction(c);\n // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid\n // but it did not work out\n controlledTranslate = -swiper.controller.spline.interpolate(-translate);\n }\n\n if (!controlledTranslate || swiper.params.controller.by === 'container') {\n multiplier = (c.maxTranslate() - c.minTranslate()) / (swiper.maxTranslate() - swiper.minTranslate());\n controlledTranslate = ((translate - swiper.minTranslate()) * multiplier) + c.minTranslate();\n }\n\n if (swiper.params.controller.inverse) {\n controlledTranslate = c.maxTranslate() - controlledTranslate;\n }\n c.updateProgress(controlledTranslate);\n c.setTranslate(controlledTranslate, swiper);\n c.updateActiveIndex();\n c.updateSlidesClasses();\n }\n if (Array.isArray(controlled)) {\n for (var i = 0; i < controlled.length; i += 1) {\n if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n setControlledTranslate(controlled[i]);\n }\n }\n } else if (controlled instanceof Swiper && byController !== controlled) {\n setControlledTranslate(controlled);\n }\n },\n setTransition: function setTransition(duration, byController) {\n var swiper = this;\n var controlled = swiper.controller.control;\n var i;\n function setControlledTransition(c) {\n c.setTransition(duration, swiper);\n if (duration !== 0) {\n c.transitionStart();\n c.$wrapperEl.transitionEnd(function () {\n if (!controlled) { return; }\n if (c.params.loop && swiper.params.controller.by === 'slide') {\n c.loopFix();\n }\n c.transitionEnd();\n });\n }\n }\n if (Array.isArray(controlled)) {\n for (i = 0; i < controlled.length; i += 1) {\n if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n setControlledTransition(controlled[i]);\n }\n }\n } else if (controlled instanceof Swiper && byController !== controlled) {\n setControlledTransition(controlled);\n }\n },\n };\n var Controller$1 = {\n name: 'controller',\n params: {\n controller: {\n control: undefined,\n inverse: false,\n by: 'slide', // or 'container'\n },\n },\n create: function create() {\n var swiper = this;\n Utils.extend(swiper, {\n controller: {\n control: swiper.params.controller.control,\n getInterpolateFunction: Controller.getInterpolateFunction.bind(swiper),\n setTranslate: Controller.setTranslate.bind(swiper),\n setTransition: Controller.setTransition.bind(swiper),\n },\n });\n },\n on: {\n update: function update() {\n var swiper = this;\n if (!swiper.controller.control) { return; }\n if (swiper.controller.spline) {\n swiper.controller.spline = undefined;\n delete swiper.controller.spline;\n }\n },\n resize: function resize() {\n var swiper = this;\n if (!swiper.controller.control) { return; }\n if (swiper.controller.spline) {\n swiper.controller.spline = undefined;\n delete swiper.controller.spline;\n }\n },\n observerUpdate: function observerUpdate() {\n var swiper = this;\n if (!swiper.controller.control) { return; }\n if (swiper.controller.spline) {\n swiper.controller.spline = undefined;\n delete swiper.controller.spline;\n }\n },\n setTranslate: function setTranslate(translate, byController) {\n var swiper = this;\n if (!swiper.controller.control) { return; }\n swiper.controller.setTranslate(translate, byController);\n },\n setTransition: function setTransition(duration, byController) {\n var swiper = this;\n if (!swiper.controller.control) { return; }\n swiper.controller.setTransition(duration, byController);\n },\n },\n };\n\n var a11y = {\n makeElFocusable: function makeElFocusable($el) {\n $el.attr('tabIndex', '0');\n return $el;\n },\n addElRole: function addElRole($el, role) {\n $el.attr('role', role);\n return $el;\n },\n addElLabel: function addElLabel($el, label) {\n $el.attr('aria-label', label);\n return $el;\n },\n disableEl: function disableEl($el) {\n $el.attr('aria-disabled', true);\n return $el;\n },\n enableEl: function enableEl($el) {\n $el.attr('aria-disabled', false);\n return $el;\n },\n onEnterKey: function onEnterKey(e) {\n var swiper = this;\n var params = swiper.params.a11y;\n if (e.keyCode !== 13) { return; }\n var $targetEl = $$1(e.target);\n if (swiper.navigation && swiper.navigation.$nextEl && $targetEl.is(swiper.navigation.$nextEl)) {\n if (!(swiper.isEnd && !swiper.params.loop)) {\n swiper.slideNext();\n }\n if (swiper.isEnd) {\n swiper.a11y.notify(params.lastSlideMessage);\n } else {\n swiper.a11y.notify(params.nextSlideMessage);\n }\n }\n if (swiper.navigation && swiper.navigation.$prevEl && $targetEl.is(swiper.navigation.$prevEl)) {\n if (!(swiper.isBeginning && !swiper.params.loop)) {\n swiper.slidePrev();\n }\n if (swiper.isBeginning) {\n swiper.a11y.notify(params.firstSlideMessage);\n } else {\n swiper.a11y.notify(params.prevSlideMessage);\n }\n }\n if (swiper.pagination && $targetEl.is((\".\" + (swiper.params.pagination.bulletClass)))) {\n $targetEl[0].click();\n }\n },\n notify: function notify(message) {\n var swiper = this;\n var notification = swiper.a11y.liveRegion;\n if (notification.length === 0) { return; }\n notification.html('');\n notification.html(message);\n },\n updateNavigation: function updateNavigation() {\n var swiper = this;\n\n if (swiper.params.loop) { return; }\n var ref = swiper.navigation;\n var $nextEl = ref.$nextEl;\n var $prevEl = ref.$prevEl;\n\n if ($prevEl && $prevEl.length > 0) {\n if (swiper.isBeginning) {\n swiper.a11y.disableEl($prevEl);\n } else {\n swiper.a11y.enableEl($prevEl);\n }\n }\n if ($nextEl && $nextEl.length > 0) {\n if (swiper.isEnd) {\n swiper.a11y.disableEl($nextEl);\n } else {\n swiper.a11y.enableEl($nextEl);\n }\n }\n },\n updatePagination: function updatePagination() {\n var swiper = this;\n var params = swiper.params.a11y;\n if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) {\n swiper.pagination.bullets.each(function (bulletIndex, bulletEl) {\n var $bulletEl = $$1(bulletEl);\n swiper.a11y.makeElFocusable($bulletEl);\n swiper.a11y.addElRole($bulletEl, 'button');\n swiper.a11y.addElLabel($bulletEl, params.paginationBulletMessage.replace(/{{index}}/, $bulletEl.index() + 1));\n });\n }\n },\n init: function init() {\n var swiper = this;\n\n swiper.$el.append(swiper.a11y.liveRegion);\n\n // Navigation\n var params = swiper.params.a11y;\n var $nextEl;\n var $prevEl;\n if (swiper.navigation && swiper.navigation.$nextEl) {\n $nextEl = swiper.navigation.$nextEl;\n }\n if (swiper.navigation && swiper.navigation.$prevEl) {\n $prevEl = swiper.navigation.$prevEl;\n }\n if ($nextEl) {\n swiper.a11y.makeElFocusable($nextEl);\n swiper.a11y.addElRole($nextEl, 'button');\n swiper.a11y.addElLabel($nextEl, params.nextSlideMessage);\n $nextEl.on('keydown', swiper.a11y.onEnterKey);\n }\n if ($prevEl) {\n swiper.a11y.makeElFocusable($prevEl);\n swiper.a11y.addElRole($prevEl, 'button');\n swiper.a11y.addElLabel($prevEl, params.prevSlideMessage);\n $prevEl.on('keydown', swiper.a11y.onEnterKey);\n }\n\n // Pagination\n if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) {\n swiper.pagination.$el.on('keydown', (\".\" + (swiper.params.pagination.bulletClass)), swiper.a11y.onEnterKey);\n }\n },\n destroy: function destroy() {\n var swiper = this;\n if (swiper.a11y.liveRegion && swiper.a11y.liveRegion.length > 0) { swiper.a11y.liveRegion.remove(); }\n\n var $nextEl;\n var $prevEl;\n if (swiper.navigation && swiper.navigation.$nextEl) {\n $nextEl = swiper.navigation.$nextEl;\n }\n if (swiper.navigation && swiper.navigation.$prevEl) {\n $prevEl = swiper.navigation.$prevEl;\n }\n if ($nextEl) {\n $nextEl.off('keydown', swiper.a11y.onEnterKey);\n }\n if ($prevEl) {\n $prevEl.off('keydown', swiper.a11y.onEnterKey);\n }\n\n // Pagination\n if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) {\n swiper.pagination.$el.off('keydown', (\".\" + (swiper.params.pagination.bulletClass)), swiper.a11y.onEnterKey);\n }\n },\n };\n var A11y = {\n name: 'a11y',\n params: {\n a11y: {\n enabled: true,\n notificationClass: 'swiper-notification',\n prevSlideMessage: 'Previous slide',\n nextSlideMessage: 'Next slide',\n firstSlideMessage: 'This is the first slide',\n lastSlideMessage: 'This is the last slide',\n paginationBulletMessage: 'Go to slide {{index}}',\n },\n },\n create: function create() {\n var swiper = this;\n Utils.extend(swiper, {\n a11y: {\n liveRegion: $$1((\" \")),\n },\n });\n Object.keys(a11y).forEach(function (methodName) {\n swiper.a11y[methodName] = a11y[methodName].bind(swiper);\n });\n },\n on: {\n init: function init() {\n var swiper = this;\n if (!swiper.params.a11y.enabled) { return; }\n swiper.a11y.init();\n swiper.a11y.updateNavigation();\n },\n toEdge: function toEdge() {\n var swiper = this;\n if (!swiper.params.a11y.enabled) { return; }\n swiper.a11y.updateNavigation();\n },\n fromEdge: function fromEdge() {\n var swiper = this;\n if (!swiper.params.a11y.enabled) { return; }\n swiper.a11y.updateNavigation();\n },\n paginationUpdate: function paginationUpdate() {\n var swiper = this;\n if (!swiper.params.a11y.enabled) { return; }\n swiper.a11y.updatePagination();\n },\n destroy: function destroy() {\n var swiper = this;\n if (!swiper.params.a11y.enabled) { return; }\n swiper.a11y.destroy();\n },\n },\n };\n\n /* eslint no-underscore-dangle: \"off\" */\n\n var Autoplay = {\n run: function run() {\n var swiper = this;\n var $activeSlideEl = swiper.slides.eq(swiper.activeIndex);\n var delay = swiper.params.autoplay.delay;\n if ($activeSlideEl.attr('data-swiper-autoplay')) {\n delay = $activeSlideEl.attr('data-swiper-autoplay') || swiper.params.autoplay.delay;\n }\n swiper.autoplay.timeout = Utils.nextTick(function () {\n if (swiper.params.autoplay.reverseDirection) {\n if (swiper.params.loop) {\n swiper.loopFix();\n swiper.slidePrev(swiper.params.speed, true, true);\n swiper.emit('autoplay');\n } else if (!swiper.isBeginning) {\n swiper.slidePrev(swiper.params.speed, true, true);\n swiper.emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n swiper.slideTo(swiper.slides.length - 1, swiper.params.speed, true, true);\n swiper.emit('autoplay');\n } else {\n swiper.autoplay.stop();\n }\n } else if (swiper.params.loop) {\n swiper.loopFix();\n swiper.slideNext(swiper.params.speed, true, true);\n swiper.emit('autoplay');\n } else if (!swiper.isEnd) {\n swiper.slideNext(swiper.params.speed, true, true);\n swiper.emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n swiper.slideTo(0, swiper.params.speed, true, true);\n swiper.emit('autoplay');\n } else {\n swiper.autoplay.stop();\n }\n }, delay);\n },\n start: function start() {\n var swiper = this;\n if (typeof swiper.autoplay.timeout !== 'undefined') { return false; }\n if (swiper.autoplay.running) { return false; }\n swiper.autoplay.running = true;\n swiper.emit('autoplayStart');\n swiper.autoplay.run();\n return true;\n },\n stop: function stop() {\n var swiper = this;\n if (!swiper.autoplay.running) { return false; }\n if (typeof swiper.autoplay.timeout === 'undefined') { return false; }\n\n if (swiper.autoplay.timeout) {\n clearTimeout(swiper.autoplay.timeout);\n swiper.autoplay.timeout = undefined;\n }\n swiper.autoplay.running = false;\n swiper.emit('autoplayStop');\n return true;\n },\n pause: function pause(speed) {\n var swiper = this;\n if (!swiper.autoplay.running) { return; }\n if (swiper.autoplay.paused) { return; }\n if (swiper.autoplay.timeout) { clearTimeout(swiper.autoplay.timeout); }\n swiper.autoplay.paused = true;\n if (speed === 0 || !swiper.params.autoplay.waitForTransition) {\n swiper.autoplay.paused = false;\n swiper.autoplay.run();\n } else {\n swiper.$wrapperEl[0].addEventListener('transitionend', swiper.autoplay.onTransitionEnd);\n swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.autoplay.onTransitionEnd);\n }\n },\n };\n\n var Autoplay$1 = {\n name: 'autoplay',\n params: {\n autoplay: {\n enabled: false,\n delay: 3000,\n waitForTransition: true,\n disableOnInteraction: true,\n stopOnLastSlide: false,\n reverseDirection: false,\n },\n },\n create: function create() {\n var swiper = this;\n Utils.extend(swiper, {\n autoplay: {\n running: false,\n paused: false,\n run: Autoplay.run.bind(swiper),\n start: Autoplay.start.bind(swiper),\n stop: Autoplay.stop.bind(swiper),\n pause: Autoplay.pause.bind(swiper),\n onTransitionEnd: function onTransitionEnd(e) {\n if (!swiper || swiper.destroyed || !swiper.$wrapperEl) { return; }\n if (e.target !== this) { return; }\n swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.autoplay.onTransitionEnd);\n swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.autoplay.onTransitionEnd);\n swiper.autoplay.paused = false;\n if (!swiper.autoplay.running) {\n swiper.autoplay.stop();\n } else {\n swiper.autoplay.run();\n }\n },\n },\n });\n },\n on: {\n init: function init() {\n var swiper = this;\n if (swiper.params.autoplay.enabled) {\n swiper.autoplay.start();\n }\n },\n beforeTransitionStart: function beforeTransitionStart(speed, internal) {\n var swiper = this;\n if (swiper.autoplay.running) {\n if (internal || !swiper.params.autoplay.disableOnInteraction) {\n swiper.autoplay.pause(speed);\n } else {\n swiper.autoplay.stop();\n }\n }\n },\n sliderFirstMove: function sliderFirstMove() {\n var swiper = this;\n if (swiper.autoplay.running) {\n if (swiper.params.autoplay.disableOnInteraction) {\n swiper.autoplay.stop();\n } else {\n swiper.autoplay.pause();\n }\n }\n },\n destroy: function destroy() {\n var swiper = this;\n if (swiper.autoplay.running) {\n swiper.autoplay.stop();\n }\n },\n },\n };\n\n var Fade = {\n setTranslate: function setTranslate() {\n var swiper = this;\n var slides = swiper.slides;\n for (var i = 0; i < slides.length; i += 1) {\n var $slideEl = swiper.slides.eq(i);\n var offset = $slideEl[0].swiperSlideOffset;\n var tx = -offset;\n if (!swiper.params.virtualTranslate) { tx -= swiper.translate; }\n var ty = 0;\n if (!swiper.isHorizontal()) {\n ty = tx;\n tx = 0;\n }\n var slideOpacity = swiper.params.fadeEffect.crossFade ?\n Math.max(1 - Math.abs($slideEl[0].progress), 0) :\n 1 + Math.min(Math.max($slideEl[0].progress, -1), 0);\n $slideEl\n .css({\n opacity: slideOpacity,\n })\n .transform((\"translate3d(\" + tx + \"px, \" + ty + \"px, 0px)\"));\n }\n },\n setTransition: function setTransition(duration) {\n var swiper = this;\n var slides = swiper.slides;\n var $wrapperEl = swiper.$wrapperEl;\n slides.transition(duration);\n if (swiper.params.virtualTranslate && duration !== 0) {\n var eventTriggered = false;\n slides.transitionEnd(function () {\n if (eventTriggered) { return; }\n if (!swiper || swiper.destroyed) { return; }\n eventTriggered = true;\n swiper.animating = false;\n var triggerEvents = ['webkitTransitionEnd', 'transitionend'];\n for (var i = 0; i < triggerEvents.length; i += 1) {\n $wrapperEl.trigger(triggerEvents[i]);\n }\n });\n }\n },\n };\n\n var EffectFade = {\n name: 'effect-fade',\n params: {\n fadeEffect: {\n crossFade: false,\n },\n },\n create: function create() {\n var swiper = this;\n Utils.extend(swiper, {\n fadeEffect: {\n setTranslate: Fade.setTranslate.bind(swiper),\n setTransition: Fade.setTransition.bind(swiper),\n },\n });\n },\n on: {\n beforeInit: function beforeInit() {\n var swiper = this;\n if (swiper.params.effect !== 'fade') { return; }\n swiper.classNames.push(((swiper.params.containerModifierClass) + \"fade\"));\n var overwriteParams = {\n slidesPerView: 1,\n slidesPerColumn: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n spaceBetween: 0,\n virtualTranslate: true,\n };\n Utils.extend(swiper.params, overwriteParams);\n Utils.extend(swiper.originalParams, overwriteParams);\n },\n setTranslate: function setTranslate() {\n var swiper = this;\n if (swiper.params.effect !== 'fade') { return; }\n swiper.fadeEffect.setTranslate();\n },\n setTransition: function setTransition(duration) {\n var swiper = this;\n if (swiper.params.effect !== 'fade') { return; }\n swiper.fadeEffect.setTransition(duration);\n },\n },\n };\n\n var Cube = {\n setTranslate: function setTranslate() {\n var swiper = this;\n var $el = swiper.$el;\n var $wrapperEl = swiper.$wrapperEl;\n var slides = swiper.slides;\n var swiperWidth = swiper.width;\n var swiperHeight = swiper.height;\n var rtl = swiper.rtlTranslate;\n var swiperSize = swiper.size;\n var params = swiper.params.cubeEffect;\n var isHorizontal = swiper.isHorizontal();\n var isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n var wrapperRotate = 0;\n var $cubeShadowEl;\n if (params.shadow) {\n if (isHorizontal) {\n $cubeShadowEl = $wrapperEl.find('.swiper-cube-shadow');\n if ($cubeShadowEl.length === 0) {\n $cubeShadowEl = $$1('
');\n $wrapperEl.append($cubeShadowEl);\n }\n $cubeShadowEl.css({ height: (swiperWidth + \"px\") });\n } else {\n $cubeShadowEl = $el.find('.swiper-cube-shadow');\n if ($cubeShadowEl.length === 0) {\n $cubeShadowEl = $$1('
');\n $el.append($cubeShadowEl);\n }\n }\n }\n for (var i = 0; i < slides.length; i += 1) {\n var $slideEl = slides.eq(i);\n var slideIndex = i;\n if (isVirtual) {\n slideIndex = parseInt($slideEl.attr('data-swiper-slide-index'), 10);\n }\n var slideAngle = slideIndex * 90;\n var round = Math.floor(slideAngle / 360);\n if (rtl) {\n slideAngle = -slideAngle;\n round = Math.floor(-slideAngle / 360);\n }\n var progress = Math.max(Math.min($slideEl[0].progress, 1), -1);\n var tx = 0;\n var ty = 0;\n var tz = 0;\n if (slideIndex % 4 === 0) {\n tx = -round * 4 * swiperSize;\n tz = 0;\n } else if ((slideIndex - 1) % 4 === 0) {\n tx = 0;\n tz = -round * 4 * swiperSize;\n } else if ((slideIndex - 2) % 4 === 0) {\n tx = swiperSize + (round * 4 * swiperSize);\n tz = swiperSize;\n } else if ((slideIndex - 3) % 4 === 0) {\n tx = -swiperSize;\n tz = (3 * swiperSize) + (swiperSize * 4 * round);\n }\n if (rtl) {\n tx = -tx;\n }\n\n if (!isHorizontal) {\n ty = tx;\n tx = 0;\n }\n\n var transform = \"rotateX(\" + (isHorizontal ? 0 : -slideAngle) + \"deg) rotateY(\" + (isHorizontal ? slideAngle : 0) + \"deg) translate3d(\" + tx + \"px, \" + ty + \"px, \" + tz + \"px)\";\n if (progress <= 1 && progress > -1) {\n wrapperRotate = (slideIndex * 90) + (progress * 90);\n if (rtl) { wrapperRotate = (-slideIndex * 90) - (progress * 90); }\n }\n $slideEl.transform(transform);\n if (params.slideShadows) {\n // Set shadows\n var shadowBefore = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');\n var shadowAfter = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');\n if (shadowBefore.length === 0) {\n shadowBefore = $$1((\"
\"));\n $slideEl.append(shadowBefore);\n }\n if (shadowAfter.length === 0) {\n shadowAfter = $$1((\"
\"));\n $slideEl.append(shadowAfter);\n }\n if (shadowBefore.length) { shadowBefore[0].style.opacity = Math.max(-progress, 0); }\n if (shadowAfter.length) { shadowAfter[0].style.opacity = Math.max(progress, 0); }\n }\n }\n $wrapperEl.css({\n '-webkit-transform-origin': (\"50% 50% -\" + (swiperSize / 2) + \"px\"),\n '-moz-transform-origin': (\"50% 50% -\" + (swiperSize / 2) + \"px\"),\n '-ms-transform-origin': (\"50% 50% -\" + (swiperSize / 2) + \"px\"),\n 'transform-origin': (\"50% 50% -\" + (swiperSize / 2) + \"px\"),\n });\n\n if (params.shadow) {\n if (isHorizontal) {\n $cubeShadowEl.transform((\"translate3d(0px, \" + ((swiperWidth / 2) + params.shadowOffset) + \"px, \" + (-swiperWidth / 2) + \"px) rotateX(90deg) rotateZ(0deg) scale(\" + (params.shadowScale) + \")\"));\n } else {\n var shadowAngle = Math.abs(wrapperRotate) - (Math.floor(Math.abs(wrapperRotate) / 90) * 90);\n var multiplier = 1.5 - (\n (Math.sin((shadowAngle * 2 * Math.PI) / 360) / 2) +\n (Math.cos((shadowAngle * 2 * Math.PI) / 360) / 2)\n );\n var scale1 = params.shadowScale;\n var scale2 = params.shadowScale / multiplier;\n var offset = params.shadowOffset;\n $cubeShadowEl.transform((\"scale3d(\" + scale1 + \", 1, \" + scale2 + \") translate3d(0px, \" + ((swiperHeight / 2) + offset) + \"px, \" + (-swiperHeight / 2 / scale2) + \"px) rotateX(-90deg)\"));\n }\n }\n var zFactor = (Browser.isSafari || Browser.isUiWebView) ? (-swiperSize / 2) : 0;\n $wrapperEl\n .transform((\"translate3d(0px,0,\" + zFactor + \"px) rotateX(\" + (swiper.isHorizontal() ? 0 : wrapperRotate) + \"deg) rotateY(\" + (swiper.isHorizontal() ? -wrapperRotate : 0) + \"deg)\"));\n },\n setTransition: function setTransition(duration) {\n var swiper = this;\n var $el = swiper.$el;\n var slides = swiper.slides;\n slides\n .transition(duration)\n .find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left')\n .transition(duration);\n if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) {\n $el.find('.swiper-cube-shadow').transition(duration);\n }\n },\n };\n\n var EffectCube = {\n name: 'effect-cube',\n params: {\n cubeEffect: {\n slideShadows: true,\n shadow: true,\n shadowOffset: 20,\n shadowScale: 0.94,\n },\n },\n create: function create() {\n var swiper = this;\n Utils.extend(swiper, {\n cubeEffect: {\n setTranslate: Cube.setTranslate.bind(swiper),\n setTransition: Cube.setTransition.bind(swiper),\n },\n });\n },\n on: {\n beforeInit: function beforeInit() {\n var swiper = this;\n if (swiper.params.effect !== 'cube') { return; }\n swiper.classNames.push(((swiper.params.containerModifierClass) + \"cube\"));\n swiper.classNames.push(((swiper.params.containerModifierClass) + \"3d\"));\n var overwriteParams = {\n slidesPerView: 1,\n slidesPerColumn: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n resistanceRatio: 0,\n spaceBetween: 0,\n centeredSlides: false,\n virtualTranslate: true,\n };\n Utils.extend(swiper.params, overwriteParams);\n Utils.extend(swiper.originalParams, overwriteParams);\n },\n setTranslate: function setTranslate() {\n var swiper = this;\n if (swiper.params.effect !== 'cube') { return; }\n swiper.cubeEffect.setTranslate();\n },\n setTransition: function setTransition(duration) {\n var swiper = this;\n if (swiper.params.effect !== 'cube') { return; }\n swiper.cubeEffect.setTransition(duration);\n },\n },\n };\n\n var Flip = {\n setTranslate: function setTranslate() {\n var swiper = this;\n var slides = swiper.slides;\n var rtl = swiper.rtlTranslate;\n for (var i = 0; i < slides.length; i += 1) {\n var $slideEl = slides.eq(i);\n var progress = $slideEl[0].progress;\n if (swiper.params.flipEffect.limitRotation) {\n progress = Math.max(Math.min($slideEl[0].progress, 1), -1);\n }\n var offset = $slideEl[0].swiperSlideOffset;\n var rotate = -180 * progress;\n var rotateY = rotate;\n var rotateX = 0;\n var tx = -offset;\n var ty = 0;\n if (!swiper.isHorizontal()) {\n ty = tx;\n tx = 0;\n rotateX = -rotateY;\n rotateY = 0;\n } else if (rtl) {\n rotateY = -rotateY;\n }\n\n $slideEl[0].style.zIndex = -Math.abs(Math.round(progress)) + slides.length;\n\n if (swiper.params.flipEffect.slideShadows) {\n // Set shadows\n var shadowBefore = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');\n var shadowAfter = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');\n if (shadowBefore.length === 0) {\n shadowBefore = $$1((\"
\"));\n $slideEl.append(shadowBefore);\n }\n if (shadowAfter.length === 0) {\n shadowAfter = $$1((\"
\"));\n $slideEl.append(shadowAfter);\n }\n if (shadowBefore.length) { shadowBefore[0].style.opacity = Math.max(-progress, 0); }\n if (shadowAfter.length) { shadowAfter[0].style.opacity = Math.max(progress, 0); }\n }\n $slideEl\n .transform((\"translate3d(\" + tx + \"px, \" + ty + \"px, 0px) rotateX(\" + rotateX + \"deg) rotateY(\" + rotateY + \"deg)\"));\n }\n },\n setTransition: function setTransition(duration) {\n var swiper = this;\n var slides = swiper.slides;\n var activeIndex = swiper.activeIndex;\n var $wrapperEl = swiper.$wrapperEl;\n slides\n .transition(duration)\n .find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left')\n .transition(duration);\n if (swiper.params.virtualTranslate && duration !== 0) {\n var eventTriggered = false;\n // eslint-disable-next-line\n slides.eq(activeIndex).transitionEnd(function onTransitionEnd() {\n if (eventTriggered) { return; }\n if (!swiper || swiper.destroyed) { return; }\n // if (!$(this).hasClass(swiper.params.slideActiveClass)) return;\n eventTriggered = true;\n swiper.animating = false;\n var triggerEvents = ['webkitTransitionEnd', 'transitionend'];\n for (var i = 0; i < triggerEvents.length; i += 1) {\n $wrapperEl.trigger(triggerEvents[i]);\n }\n });\n }\n },\n };\n\n var EffectFlip = {\n name: 'effect-flip',\n params: {\n flipEffect: {\n slideShadows: true,\n limitRotation: true,\n },\n },\n create: function create() {\n var swiper = this;\n Utils.extend(swiper, {\n flipEffect: {\n setTranslate: Flip.setTranslate.bind(swiper),\n setTransition: Flip.setTransition.bind(swiper),\n },\n });\n },\n on: {\n beforeInit: function beforeInit() {\n var swiper = this;\n if (swiper.params.effect !== 'flip') { return; }\n swiper.classNames.push(((swiper.params.containerModifierClass) + \"flip\"));\n swiper.classNames.push(((swiper.params.containerModifierClass) + \"3d\"));\n var overwriteParams = {\n slidesPerView: 1,\n slidesPerColumn: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n spaceBetween: 0,\n virtualTranslate: true,\n };\n Utils.extend(swiper.params, overwriteParams);\n Utils.extend(swiper.originalParams, overwriteParams);\n },\n setTranslate: function setTranslate() {\n var swiper = this;\n if (swiper.params.effect !== 'flip') { return; }\n swiper.flipEffect.setTranslate();\n },\n setTransition: function setTransition(duration) {\n var swiper = this;\n if (swiper.params.effect !== 'flip') { return; }\n swiper.flipEffect.setTransition(duration);\n },\n },\n };\n\n var Coverflow = {\n setTranslate: function setTranslate() {\n var swiper = this;\n var swiperWidth = swiper.width;\n var swiperHeight = swiper.height;\n var slides = swiper.slides;\n var $wrapperEl = swiper.$wrapperEl;\n var slidesSizesGrid = swiper.slidesSizesGrid;\n var params = swiper.params.coverflowEffect;\n var isHorizontal = swiper.isHorizontal();\n var transform = swiper.translate;\n var center = isHorizontal ? -transform + (swiperWidth / 2) : -transform + (swiperHeight / 2);\n var rotate = isHorizontal ? params.rotate : -params.rotate;\n var translate = params.depth;\n // Each slide offset from center\n for (var i = 0, length = slides.length; i < length; i += 1) {\n var $slideEl = slides.eq(i);\n var slideSize = slidesSizesGrid[i];\n var slideOffset = $slideEl[0].swiperSlideOffset;\n var offsetMultiplier = ((center - slideOffset - (slideSize / 2)) / slideSize) * params.modifier;\n\n var rotateY = isHorizontal ? rotate * offsetMultiplier : 0;\n var rotateX = isHorizontal ? 0 : rotate * offsetMultiplier;\n // var rotateZ = 0\n var translateZ = -translate * Math.abs(offsetMultiplier);\n\n var translateY = isHorizontal ? 0 : params.stretch * (offsetMultiplier);\n var translateX = isHorizontal ? params.stretch * (offsetMultiplier) : 0;\n\n // Fix for ultra small values\n if (Math.abs(translateX) < 0.001) { translateX = 0; }\n if (Math.abs(translateY) < 0.001) { translateY = 0; }\n if (Math.abs(translateZ) < 0.001) { translateZ = 0; }\n if (Math.abs(rotateY) < 0.001) { rotateY = 0; }\n if (Math.abs(rotateX) < 0.001) { rotateX = 0; }\n\n var slideTransform = \"translate3d(\" + translateX + \"px,\" + translateY + \"px,\" + translateZ + \"px) rotateX(\" + rotateX + \"deg) rotateY(\" + rotateY + \"deg)\";\n\n $slideEl.transform(slideTransform);\n $slideEl[0].style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1;\n if (params.slideShadows) {\n // Set shadows\n var $shadowBeforeEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');\n var $shadowAfterEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');\n if ($shadowBeforeEl.length === 0) {\n $shadowBeforeEl = $$1((\"
\"));\n $slideEl.append($shadowBeforeEl);\n }\n if ($shadowAfterEl.length === 0) {\n $shadowAfterEl = $$1((\"
\"));\n $slideEl.append($shadowAfterEl);\n }\n if ($shadowBeforeEl.length) { $shadowBeforeEl[0].style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0; }\n if ($shadowAfterEl.length) { $shadowAfterEl[0].style.opacity = (-offsetMultiplier) > 0 ? -offsetMultiplier : 0; }\n }\n }\n\n // Set correct perspective for IE10\n if (Support.pointerEvents || Support.prefixedPointerEvents) {\n var ws = $wrapperEl[0].style;\n ws.perspectiveOrigin = center + \"px 50%\";\n }\n },\n setTransition: function setTransition(duration) {\n var swiper = this;\n swiper.slides\n .transition(duration)\n .find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left')\n .transition(duration);\n },\n };\n\n var EffectCoverflow = {\n name: 'effect-coverflow',\n params: {\n coverflowEffect: {\n rotate: 50,\n stretch: 0,\n depth: 100,\n modifier: 1,\n slideShadows: true,\n },\n },\n create: function create() {\n var swiper = this;\n Utils.extend(swiper, {\n coverflowEffect: {\n setTranslate: Coverflow.setTranslate.bind(swiper),\n setTransition: Coverflow.setTransition.bind(swiper),\n },\n });\n },\n on: {\n beforeInit: function beforeInit() {\n var swiper = this;\n if (swiper.params.effect !== 'coverflow') { return; }\n\n swiper.classNames.push(((swiper.params.containerModifierClass) + \"coverflow\"));\n swiper.classNames.push(((swiper.params.containerModifierClass) + \"3d\"));\n\n swiper.params.watchSlidesProgress = true;\n swiper.originalParams.watchSlidesProgress = true;\n },\n setTranslate: function setTranslate() {\n var swiper = this;\n if (swiper.params.effect !== 'coverflow') { return; }\n swiper.coverflowEffect.setTranslate();\n },\n setTransition: function setTransition(duration) {\n var swiper = this;\n if (swiper.params.effect !== 'coverflow') { return; }\n swiper.coverflowEffect.setTransition(duration);\n },\n },\n };\n\n // Swiper Class\n\n Swiper.use([\n Device$1,\n Browser$1,\n Support$1,\n Resize,\n Observer$1,\n Virtual$1,\n Navigation$1,\n Pagination$1,\n Scrollbar$1,\n Parallax$1,\n Zoom$1,\n Lazy$3,\n Controller$1,\n A11y,\n Autoplay$1,\n EffectFade,\n EffectCube,\n EffectFlip,\n EffectCoverflow ]);\n\n {\n if (!window.Swiper) {\n window.Swiper = Swiper;\n }\n }\n\n function initSwipers(swiperEl) {\n var app = this;\n var $swiperEl = $$1(swiperEl);\n if ($swiperEl.length === 0) { return; }\n if ($swiperEl[0].swiper) { return; }\n var initialSlide;\n var params = {};\n var isTabs;\n var isRoutableTabs;\n if ($swiperEl.hasClass('tabs-swipeable-wrap')) {\n $swiperEl\n .addClass('swiper-container')\n .children('.tabs')\n .addClass('swiper-wrapper')\n .children('.tab')\n .addClass('swiper-slide');\n initialSlide = $swiperEl.children('.tabs').children('.tab-active').index();\n isTabs = true;\n isRoutableTabs = $swiperEl.find('.tabs-routable').length > 0;\n }\n if ($swiperEl.attr('data-swiper')) {\n params = JSON.parse($swiperEl.attr('data-swiper'));\n } else {\n params = $swiperEl.dataset();\n Object.keys(params).forEach(function (key) {\n var value = params[key];\n if (typeof value === 'string' && value.indexOf('{') === 0 && value.indexOf('}') > 0) {\n try {\n params[key] = JSON.parse(value);\n } catch (e) {\n // not JSON\n }\n }\n });\n }\n if (typeof params.initialSlide === 'undefined' && typeof initialSlide !== 'undefined') {\n params.initialSlide = initialSlide;\n }\n\n var swiper = app.swiper.create($swiperEl[0], params);\n if (isTabs) {\n swiper.on('slideChange', function () {\n if (isRoutableTabs) {\n var view = app.views.get($swiperEl.parents('.view'));\n if (!view) { view = app.views.main; }\n var router = view.router;\n var tabRoute = router.findTabRoute(swiper.slides.eq(swiper.activeIndex)[0]);\n if (tabRoute) { router.navigate(tabRoute.path); }\n } else {\n app.tab.show({\n tabEl: swiper.slides.eq(swiper.activeIndex),\n });\n }\n });\n }\n }\n\n var Swiper$1 = {\n name: 'swiper',\n static: {\n Swiper: Swiper,\n },\n create: function create() {\n var app = this;\n app.swiper = ConstructorMethods({\n defaultSelector: '.swiper-container',\n constructor: Swiper,\n domProp: 'swiper',\n });\n },\n on: {\n pageBeforeRemove: function pageBeforeRemove(page) {\n var app = this;\n page.$el.find('.swiper-init, .tabs-swipeable-wrap').each(function (index, swiperEl) {\n app.swiper.destroy(swiperEl);\n });\n },\n pageMounted: function pageMounted(page) {\n var app = this;\n page.$el.find('.tabs-swipeable-wrap').each(function (index, swiperEl) {\n initSwipers.call(app, swiperEl);\n });\n },\n pageInit: function pageInit(page) {\n var app = this;\n page.$el.find('.swiper-init, .tabs-swipeable-wrap').each(function (index, swiperEl) {\n initSwipers.call(app, swiperEl);\n });\n },\n pageReinit: function pageReinit(page) {\n var app = this;\n page.$el.find('.swiper-init, .tabs-swipeable-wrap').each(function (index, swiperEl) {\n var swiper = app.swiper.get(swiperEl);\n if (swiper && swiper.update) { swiper.update(); }\n });\n },\n tabMounted: function tabMounted(tabEl) {\n var app = this;\n $$1(tabEl).find('.swiper-init, .tabs-swipeable-wrap').each(function (index, swiperEl) {\n initSwipers.call(app, swiperEl);\n });\n },\n tabShow: function tabShow(tabEl) {\n var app = this;\n $$1(tabEl).find('.swiper-init, .tabs-swipeable-wrap').each(function (index, swiperEl) {\n var swiper = app.swiper.get(swiperEl);\n if (swiper && swiper.update) { swiper.update(); }\n });\n },\n tabBeforeRemove: function tabBeforeRemove(tabEl) {\n var app = this;\n $$1(tabEl).find('.swiper-init, .tabs-swipeable-wrap').each(function (index, swiperEl) {\n app.swiper.destroy(swiperEl);\n });\n },\n },\n };\n\n /* eslint indent: [\"off\"] */\n\n var PhotoBrowser = (function (Framework7Class$$1) {\n function PhotoBrowser(app, params) {\n if ( params === void 0 ) params = {};\n\n Framework7Class$$1.call(this, params, [app]);\n\n var pb = this;\n pb.app = app;\n\n var defaults = Utils.extend({\n on: {},\n }, app.params.photoBrowser);\n\n // Extend defaults with modules params\n pb.useModulesParams(defaults);\n\n pb.params = Utils.extend(defaults, params);\n\n Utils.extend(pb, {\n exposed: false,\n opened: false,\n activeIndex: pb.params.swiper.initialSlide,\n url: pb.params.url,\n view: pb.params.view || app.views.main,\n swipeToClose: {\n allow: true,\n isTouched: false,\n diff: undefined,\n start: undefined,\n current: undefined,\n started: false,\n activeSlide: undefined,\n timeStart: undefined,\n },\n });\n\n // Install Modules\n pb.useModules();\n\n // Init\n pb.init();\n }\n\n if ( Framework7Class$$1 ) PhotoBrowser.__proto__ = Framework7Class$$1;\n PhotoBrowser.prototype = Object.create( Framework7Class$$1 && Framework7Class$$1.prototype );\n PhotoBrowser.prototype.constructor = PhotoBrowser;\n\n PhotoBrowser.prototype.onSlideChange = function onSlideChange (swiper) {\n var pb = this;\n pb.activeIndex = swiper.activeIndex;\n\n var current = swiper.activeIndex + 1;\n var total = pb.params.virtualSlides ? pb.params.photos.length : swiper.slides.length;\n if (swiper.params.loop) {\n total -= 2;\n current -= swiper.loopedSlides;\n if (current < 1) { current = total + current; }\n if (current > total) { current -= total; }\n }\n\n var $activeSlideEl = pb.params.virtualSlides\n ? swiper.$wrapperEl.find((\".swiper-slide[data-swiper-slide-index=\\\"\" + (swiper.activeIndex) + \"\\\"]\"))\n : swiper.slides.eq(swiper.activeIndex);\n var $previousSlideEl = pb.params.virtualSlides\n ? swiper.$wrapperEl.find((\".swiper-slide[data-swiper-slide-index=\\\"\" + (swiper.previousIndex) + \"\\\"]\"))\n : swiper.slides.eq(swiper.previousIndex);\n\n var $currentEl = pb.$el.find('.photo-browser-current');\n var $totalEl = pb.$el.find('.photo-browser-total');\n if (pb.params.type === 'page' && pb.params.navbar && $currentEl.length === 0 && pb.app.theme === 'ios') {\n var navbarEl = pb.app.navbar.getElByPage(pb.$el);\n if (navbarEl) {\n $currentEl = $$1(navbarEl).find('.photo-browser-current');\n $totalEl = $$1(navbarEl).find('.photo-browser-total');\n }\n }\n $currentEl.text(current);\n $totalEl.text(total);\n\n // Update captions\n if (pb.captions.length > 0) {\n var captionIndex = swiper.params.loop ? $activeSlideEl.attr('data-swiper-slide-index') : pb.activeIndex;\n pb.$captionsContainerEl.find('.photo-browser-caption-active').removeClass('photo-browser-caption-active');\n pb.$captionsContainerEl.find((\"[data-caption-index=\\\"\" + captionIndex + \"\\\"]\")).addClass('photo-browser-caption-active');\n }\n\n // Stop Video\n var previousSlideVideo = $previousSlideEl.find('video');\n if (previousSlideVideo.length > 0) {\n if ('pause' in previousSlideVideo[0]) { previousSlideVideo[0].pause(); }\n }\n };\n\n PhotoBrowser.prototype.onTouchStart = function onTouchStart () {\n var pb = this;\n var swipeToClose = pb.swipeToClose;\n if (!swipeToClose.allow) { return; }\n swipeToClose.isTouched = true;\n };\n\n PhotoBrowser.prototype.onTouchMove = function onTouchMove (e) {\n var pb = this;\n var swipeToClose = pb.swipeToClose;\n\n if (!swipeToClose.isTouched) { return; }\n if (!swipeToClose.started) {\n swipeToClose.started = true;\n swipeToClose.start = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n if (pb.params.virtualSlides) {\n swipeToClose.activeSlide = pb.swiper.$wrapperEl.children('.swiper-slide-active');\n } else {\n swipeToClose.activeSlide = pb.swiper.slides.eq(pb.swiper.activeIndex);\n }\n swipeToClose.timeStart = Utils.now();\n }\n e.preventDefault();\n swipeToClose.current = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n swipeToClose.diff = swipeToClose.start - swipeToClose.current;\n var opacity = 1 - (Math.abs(swipeToClose.diff) / 300);\n var color = pb.exposed || pb.params.theme === 'dark' ? 0 : 255;\n swipeToClose.activeSlide.transform((\"translate3d(0,\" + (-swipeToClose.diff) + \"px,0)\"));\n pb.swiper.$el.css('background-color', (\"rgba(\" + color + \", \" + color + \", \" + color + \", \" + opacity + \")\")).transition(0);\n };\n\n PhotoBrowser.prototype.onTouchEnd = function onTouchEnd () {\n var pb = this;\n var swipeToClose = pb.swipeToClose;\n swipeToClose.isTouched = false;\n if (!swipeToClose.started) {\n swipeToClose.started = false;\n return;\n }\n swipeToClose.started = false;\n swipeToClose.allow = false;\n var diff = Math.abs(swipeToClose.diff);\n var timeDiff = (new Date()).getTime() - swipeToClose.timeStart;\n if ((timeDiff < 300 && diff > 20) || (timeDiff >= 300 && diff > 100)) {\n Utils.nextTick(function () {\n if (pb.$el) {\n if (swipeToClose.diff < 0) { pb.$el.addClass('swipe-close-to-bottom'); }\n else { pb.$el.addClass('swipe-close-to-top'); }\n }\n pb.emit('local::swipeToClose', pb);\n pb.close();\n swipeToClose.allow = true;\n });\n return;\n }\n if (diff !== 0) {\n swipeToClose.activeSlide.addClass('photo-browser-transitioning').transitionEnd(function () {\n swipeToClose.allow = true;\n swipeToClose.activeSlide.removeClass('photo-browser-transitioning');\n });\n } else {\n swipeToClose.allow = true;\n }\n pb.swiper.$el.transition('').css('background-color', '');\n swipeToClose.activeSlide.transform('');\n };\n\n // Render Functions\n PhotoBrowser.prototype.renderNavbar = function renderNavbar () {\n var pb = this;\n if (pb.params.renderNavbar) { return pb.params.renderNavbar.call(pb); }\n\n var iconsColor = pb.params.iconsColor;\n if (!pb.params.iconsColor && pb.params.theme === 'dark') { iconsColor = 'white'; }\n\n var backLinkText = pb.app.theme === 'ios' && pb.params.backLinkText ? pb.params.backLinkText : '';\n\n var isPopup = pb.params.type !== 'page';\n var navbarHtml = (\"\\n \\n
\\n
\\n
\\n \\n \" + (pb.params.navbarOfText) + \" \\n \\n
\\n
\\n
\\n
\\n \").trim();\n return navbarHtml;\n };\n\n PhotoBrowser.prototype.renderToolbar = function renderToolbar () {\n var pb = this;\n if (pb.params.renderToolbar) { return pb.params.renderToolbar.call(pb); }\n\n var iconsColor = pb.params.iconsColor;\n if (!pb.params.iconsColor && pb.params.theme === 'dark') { iconsColor = 'white'; }\n\n var toolbarHtml = (\"\\n \\n \").trim();\n return toolbarHtml;\n };\n\n PhotoBrowser.prototype.renderCaption = function renderCaption (caption, index) {\n var pb = this;\n if (pb.params.renderCaption) { return pb.params.renderCaption.call(pb, caption, index); }\n var captionHtml = (\"\\n \\n \" + caption + \"\\n
\\n \").trim();\n return captionHtml;\n };\n\n PhotoBrowser.prototype.renderObject = function renderObject (photo, index) {\n var pb = this;\n if (pb.params.renderObject) { return pb.params.renderObject.call(pb, photo, index); }\n var objHtml = \"\\n \" + (photo.html ? photo.html : photo) + \"
\\n \";\n return objHtml;\n };\n\n PhotoBrowser.prototype.renderLazyPhoto = function renderLazyPhoto (photo, index) {\n var pb = this;\n if (pb.params.renderLazyPhoto) { return pb.params.renderLazyPhoto.call(pb, photo, index); }\n var photoHtml = (\"\\n \\n
\" + (pb.app.theme === 'md' ? Utils.mdPreloaderContent : '') + \"
\\n
\\n \\n \\n
\\n \").trim();\n return photoHtml;\n };\n\n PhotoBrowser.prototype.renderPhoto = function renderPhoto (photo, index) {\n var pb = this;\n if (pb.params.renderPhoto) { return pb.params.renderPhoto.call(pb, photo, index); }\n var photoHtml = (\"\\n \\n
\\n \\n \\n
\\n \").trim();\n return photoHtml;\n };\n\n PhotoBrowser.prototype.render = function render () {\n var pb = this;\n if (pb.params.render) { return pb.params.render.call(pb, pb.params); }\n var html = (\"\\n \\n
\\n
\\n \" + (pb.params.navbar ? pb.renderNavbar() : '') + \"\\n \" + (pb.params.toolbar ? pb.renderToolbar() : '') + \"\\n
\\n \" + (pb.params.photos.map(function (photo, index) {\n if (photo.caption) { return pb.renderCaption(photo.caption, index); }\n return '';\n }).join(' ')) + \"\\n
\\n
\\n
\\n \" + (pb.params.virtualSlides ? '' : pb.params.photos.map(function (photo, index) {\n if (photo.html || ((typeof photo === 'string' || photo instanceof String) && photo.indexOf('<') >= 0 && photo.indexOf('>') >= 0)) {\n return pb.renderObject(photo, index);\n }\n if (pb.params.swiper.lazy === true || (pb.params.swiper.lazy && pb.params.swiper.lazy.enabled)) {\n return pb.renderLazyPhoto(photo, index);\n }\n return pb.renderPhoto(photo, index);\n }).join(' ')) + \"\\n
\\n
\\n
\\n
\\n
\\n \").trim();\n return html;\n };\n\n PhotoBrowser.prototype.renderStandalone = function renderStandalone () {\n var pb = this;\n if (pb.params.renderStandalone) { return pb.params.renderStandalone.call(pb); }\n var standaloneHtml = \"\";\n return standaloneHtml;\n };\n\n PhotoBrowser.prototype.renderPage = function renderPage () {\n var pb = this;\n if (pb.params.renderPage) { return pb.params.renderPage.call(pb); }\n var pageHtml = pb.render();\n\n return pageHtml;\n };\n\n PhotoBrowser.prototype.renderPopup = function renderPopup () {\n var pb = this;\n if (pb.params.renderPopup) { return pb.params.renderPopup.call(pb); }\n var popupHtml = \"\";\n\n return popupHtml;\n };\n\n // Callbacks\n PhotoBrowser.prototype.onOpen = function onOpen (type, el) {\n var pb = this;\n var app = pb.app;\n var $el = $$1(el);\n\n $el[0].f7PhotoBrowser = pb;\n\n pb.$el = $el;\n pb.el = $el[0];\n pb.openedIn = type;\n pb.opened = true;\n\n pb.$swiperContainerEl = pb.$el.find('.photo-browser-swiper-container');\n pb.$swiperWrapperEl = pb.$el.find('.photo-browser-swiper-wrapper');\n pb.slides = pb.$el.find('.photo-browser-slide');\n pb.$captionsContainerEl = pb.$el.find('.photo-browser-captions');\n pb.captions = pb.$el.find('.photo-browser-caption');\n\n // Init Swiper\n var swiperParams = Utils.extend({}, pb.params.swiper, {\n initialSlide: pb.activeIndex,\n on: {\n tap: function tap(e) {\n pb.emit('local::tap', e);\n },\n click: function click(e) {\n if (pb.params.exposition) {\n pb.expositionToggle();\n }\n pb.emit('local::click', e);\n },\n doubleTap: function doubleTap(e) {\n pb.emit('local::doubleTap', e);\n },\n slideChange: function slideChange() {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var swiper = this;\n pb.onSlideChange(swiper);\n pb.emit.apply(pb, [ 'local::slideChange' ].concat( args ));\n },\n transitionStart: function transitionStart() {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n pb.emit.apply(pb, [ 'local::transitionStart' ].concat( args ));\n },\n transitionEnd: function transitionEnd() {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n pb.emit.apply(pb, [ 'local::transitionEnd' ].concat( args ));\n },\n slideChangeTransitionStart: function slideChangeTransitionStart() {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n pb.emit.apply(pb, [ 'local::slideChangeTransitionStart' ].concat( args ));\n },\n slideChangeTransitionEnd: function slideChangeTransitionEnd() {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n pb.emit.apply(pb, [ 'local::slideChangeTransitionEnd' ].concat( args ));\n },\n lazyImageLoad: function lazyImageLoad() {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n pb.emit.apply(pb, [ 'local::lazyImageLoad' ].concat( args ));\n },\n lazyImageReady: function lazyImageReady() {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var slideEl = args[0];\n $$1(slideEl).removeClass('photo-browser-slide-lazy');\n pb.emit.apply(pb, [ 'local::lazyImageReady' ].concat( args ));\n },\n },\n });\n if (pb.params.swipeToClose && pb.params.type !== 'page') {\n Utils.extend(swiperParams.on, {\n touchStart: function touchStart(e) {\n pb.onTouchStart(e);\n pb.emit('local::touchStart', e);\n },\n touchMoveOpposite: function touchMoveOpposite(e) {\n pb.onTouchMove(e);\n pb.emit('local::touchMoveOpposite', e);\n },\n touchEnd: function touchEnd(e) {\n pb.onTouchEnd(e);\n pb.emit('local::touchEnd', e);\n },\n });\n }\n if (pb.params.virtualSlides) {\n Utils.extend(swiperParams, {\n virtual: {\n slides: pb.params.photos,\n renderSlide: function renderSlide(photo, index) {\n if (photo.html || ((typeof photo === 'string' || photo instanceof String) && photo.indexOf('<') >= 0 && photo.indexOf('>') >= 0)) {\n return pb.renderObject(photo, index);\n }\n if (pb.params.swiper.lazy === true || (pb.params.swiper.lazy && pb.params.swiper.lazy.enabled)) {\n return pb.renderLazyPhoto(photo, index);\n }\n return pb.renderPhoto(photo, index);\n },\n },\n });\n }\n\n pb.swiper = app.swiper.create(pb.$swiperContainerEl, swiperParams);\n\n if (pb.activeIndex === 0) {\n pb.onSlideChange(pb.swiper);\n }\n if (pb.$el) {\n pb.$el.trigger('photobrowser:open');\n }\n pb.emit('local::open photoBrowserOpen', pb);\n };\n\n PhotoBrowser.prototype.onOpened = function onOpened () {\n var pb = this;\n\n if (pb.$el) {\n pb.$el.trigger('photobrowser:opened');\n }\n pb.emit('local::opened photoBrowserOpened', pb);\n };\n\n PhotoBrowser.prototype.onClose = function onClose () {\n var pb = this;\n if (pb.destroyed) { return; }\n\n // Destroy Swiper\n if (pb.swiper && pb.swiper.destroy) {\n pb.swiper.destroy(true, false);\n pb.swiper = null;\n delete pb.swiper;\n }\n if (pb.$el) {\n pb.$el.trigger('photobrowser:close');\n }\n pb.emit('local::close photoBrowserClose', pb);\n };\n\n PhotoBrowser.prototype.onClosed = function onClosed () {\n var pb = this;\n if (pb.destroyed) { return; }\n pb.opened = false;\n pb.$el = null;\n pb.el = null;\n delete pb.$el;\n delete pb.el;\n if (pb.$el) {\n pb.$el.trigger('photobrowser:closed');\n }\n pb.emit('local::closed photoBrowserClosed', pb);\n };\n\n // Open\n PhotoBrowser.prototype.openPage = function openPage () {\n var pb = this;\n if (pb.opened) { return pb; }\n\n var pageHtml = pb.renderPage();\n\n pb.view.router.navigate({\n url: pb.url,\n route: {\n content: pageHtml,\n path: pb.url,\n on: {\n pageBeforeIn: function pageBeforeIn(e, page) {\n pb.view.$el.addClass((\"with-photo-browser-page with-photo-browser-page-\" + (pb.params.theme)));\n pb.onOpen('page', page.el);\n },\n pageAfterIn: function pageAfterIn(e, page) {\n pb.onOpened('page', page.el);\n },\n pageBeforeOut: function pageBeforeOut(e, page) {\n pb.view.$el.removeClass((\"with-photo-browser-page with-photo-browser-page-exposed with-photo-browser-page-\" + (pb.params.theme)));\n pb.onClose('page', page.el);\n },\n pageAfterOut: function pageAfterOut(e, page) {\n pb.onClosed('page', page.el);\n },\n },\n },\n });\n return pb;\n };\n\n PhotoBrowser.prototype.openStandalone = function openStandalone () {\n var pb = this;\n if (pb.opened) { return pb; }\n\n var standaloneHtml = pb.renderStandalone();\n\n var popupParams = {\n backdrop: false,\n content: standaloneHtml,\n on: {\n popupOpen: function popupOpen(popup) {\n pb.onOpen('popup', popup.el);\n },\n popupOpened: function popupOpened(popup) {\n pb.onOpened('popup', popup.el);\n },\n popupClose: function popupClose(popup) {\n pb.onClose('popup', popup.el);\n },\n popupClosed: function popupClosed(popup) {\n pb.onClosed('popup', popup.el);\n },\n },\n };\n\n if (pb.params.routableModals) {\n pb.view.router.navigate({\n url: pb.url,\n route: {\n path: pb.url,\n popup: popupParams,\n },\n });\n } else {\n pb.modal = pb.app.popup.create(popupParams).open();\n }\n return pb;\n };\n\n PhotoBrowser.prototype.openPopup = function openPopup () {\n var pb = this;\n if (pb.opened) { return pb; }\n\n var popupHtml = pb.renderPopup();\n\n var popupParams = {\n content: popupHtml,\n on: {\n popupOpen: function popupOpen(popup) {\n pb.onOpen('popup', popup.el);\n },\n popupOpened: function popupOpened(popup) {\n pb.onOpened('popup', popup.el);\n },\n popupClose: function popupClose(popup) {\n pb.onClose('popup', popup.el);\n },\n popupClosed: function popupClosed(popup) {\n pb.onClosed('popup', popup.el);\n },\n },\n };\n\n if (pb.params.routableModals) {\n pb.view.router.navigate({\n url: pb.url,\n route: {\n path: pb.url,\n popup: popupParams,\n },\n });\n } else {\n pb.modal = pb.app.popup.create(popupParams).open();\n }\n return pb;\n };\n\n // Exposition\n PhotoBrowser.prototype.expositionEnable = function expositionEnable () {\n var pb = this;\n if (pb.params.type === 'page') {\n pb.view.$el.addClass('with-photo-browser-page-exposed');\n }\n if (pb.$el) { pb.$el.addClass('photo-browser-exposed'); }\n if (pb.params.expositionHideCaptions) { pb.$captionsContainerEl.addClass('photo-browser-captions-exposed'); }\n pb.exposed = true;\n return pb;\n };\n\n PhotoBrowser.prototype.expositionDisable = function expositionDisable () {\n var pb = this;\n if (pb.params.type === 'page') {\n pb.view.$el.removeClass('with-photo-browser-page-exposed');\n }\n if (pb.$el) { pb.$el.removeClass('photo-browser-exposed'); }\n if (pb.params.expositionHideCaptions) { pb.$captionsContainerEl.removeClass('photo-browser-captions-exposed'); }\n pb.exposed = false;\n return pb;\n };\n\n PhotoBrowser.prototype.expositionToggle = function expositionToggle () {\n var pb = this;\n if (pb.params.type === 'page') {\n pb.view.$el.toggleClass('with-photo-browser-page-exposed');\n }\n if (pb.$el) { pb.$el.toggleClass('photo-browser-exposed'); }\n if (pb.params.expositionHideCaptions) { pb.$captionsContainerEl.toggleClass('photo-browser-captions-exposed'); }\n pb.exposed = !pb.exposed;\n return pb;\n };\n\n PhotoBrowser.prototype.open = function open (index) {\n var pb = this;\n var type = pb.params.type;\n if (pb.opened) {\n if (pb.swiper && typeof index !== 'undefined') {\n pb.swiper.slideTo(parseInt(index, 10));\n }\n return pb;\n }\n if (typeof index !== 'undefined') {\n pb.activeIndex = index;\n }\n if (type === 'standalone') {\n pb.openStandalone();\n }\n if (type === 'page') {\n pb.openPage();\n }\n if (type === 'popup') {\n pb.openPopup();\n }\n return pb;\n };\n\n PhotoBrowser.prototype.close = function close () {\n var pb = this;\n if (!pb.opened) { return pb; }\n if (pb.params.routableModals || pb.openedIn === 'page') {\n if (pb.view) { pb.view.router.back(); }\n } else {\n pb.modal.once('modalClosed', function () {\n Utils.nextTick(function () {\n pb.modal.destroy();\n delete pb.modal;\n });\n });\n pb.modal.close();\n }\n return pb;\n };\n // eslint-disable-next-line\n PhotoBrowser.prototype.init = function init () {};\n\n PhotoBrowser.prototype.destroy = function destroy () {\n var pb = this;\n pb.emit('local::beforeDestroy photoBrowserBeforeDestroy', pb);\n if (pb.$el) {\n pb.$el.trigger('photobrowser:beforedestroy');\n delete pb.$el[0].f7PhotoBrowser;\n }\n Utils.deleteProps(pb);\n pb = null;\n };\n\n return PhotoBrowser;\n }(Framework7Class));\n\n var PhotoBrowser$1 = {\n name: 'photoBrowser',\n params: {\n photoBrowser: {\n photos: [],\n exposition: true,\n expositionHideCaptions: false,\n type: 'standalone',\n navbar: true,\n toolbar: true,\n theme: 'light',\n captionsTheme: undefined,\n iconsColor: undefined,\n swipeToClose: true,\n backLinkText: 'Close',\n navbarOfText: 'of',\n view: undefined,\n url: 'photos/',\n routableModals: true,\n virtualSlides: true,\n\n renderNavbar: undefined,\n renderToolbar: undefined,\n renderCaption: undefined,\n renderObject: undefined,\n renderLazyPhoto: undefined,\n renderPhoto: undefined,\n renderPage: undefined,\n renderPopup: undefined,\n renderStandalone: undefined,\n\n swiper: {\n initialSlide: 0,\n spaceBetween: 20,\n speed: 300,\n loop: false,\n preloadImages: true,\n navigation: {\n nextEl: '.photo-browser-next',\n prevEl: '.photo-browser-prev',\n },\n zoom: {\n enabled: true,\n maxRatio: 3,\n minRatio: 1,\n },\n lazy: {\n enabled: true,\n },\n },\n },\n },\n create: function create() {\n var app = this;\n app.photoBrowser = ConstructorMethods({\n defaultSelector: '.photo-browser',\n constructor: PhotoBrowser,\n app: app,\n domProp: 'f7PhotoBrowser',\n });\n },\n static: {\n PhotoBrowser: PhotoBrowser,\n },\n };\n\n var Notification = (function (Modal$$1) {\n function Notification(app, params) {\n var extendedParams = Utils.extend({\n on: {},\n }, app.params.notification, params);\n\n // Extends with open/close Modal methods;\n Modal$$1.call(this, app, extendedParams);\n\n var notification = this;\n\n notification.app = app;\n\n notification.params = extendedParams;\n\n var ref = notification.params;\n var icon = ref.icon;\n var title = ref.title;\n var titleRightText = ref.titleRightText;\n var subtitle = ref.subtitle;\n var text = ref.text;\n var closeButton = ref.closeButton;\n var closeTimeout = ref.closeTimeout;\n var cssClass = ref.cssClass;\n var closeOnClick = ref.closeOnClick;\n\n var $el;\n if (!notification.params.el) {\n // Find Element\n var notificationHtml = notification.render({\n icon: icon,\n title: title,\n titleRightText: titleRightText,\n subtitle: subtitle,\n text: text,\n closeButton: closeButton,\n cssClass: cssClass,\n });\n\n $el = $$1(notificationHtml);\n } else {\n $el = $$1(notification.params.el);\n }\n\n if ($el && $el.length > 0 && $el[0].f7Modal) {\n return $el[0].f7Modal;\n }\n\n if ($el.length === 0) {\n return notification.destroy();\n }\n\n Utils.extend(notification, {\n $el: $el,\n el: $el[0],\n type: 'notification',\n });\n\n $el[0].f7Modal = notification;\n\n if (closeButton) {\n $el.find('.notification-close-button').on('click', function () {\n notification.close();\n });\n }\n $el.on('click', function (e) {\n if (closeButton && $$1(e.target).closest('.notification-close-button').length) {\n return;\n }\n notification.emit('local::click notificationClick', notification);\n if (closeOnClick) { notification.close(); }\n });\n\n notification.on('beforeDestroy', function () {\n $el.off('click');\n });\n\n /* Touch Events */\n var isTouched;\n var isMoved;\n var isScrolling;\n var touchesDiff;\n var touchStartTime;\n var notificationHeight;\n var touchesStart = {};\n function handleTouchStart(e) {\n if (isTouched) { return; }\n isTouched = true;\n isMoved = false;\n isScrolling = undefined;\n touchStartTime = Utils.now();\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 }\n function handleTouchMove(e) {\n if (!isTouched) { return; }\n var pageX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n var pageY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n if (typeof isScrolling === 'undefined') {\n isScrolling = !!(isScrolling || Math.abs(pageY - touchesStart.y) < Math.abs(pageX - touchesStart.x));\n }\n if (isScrolling) {\n isTouched = false;\n return;\n }\n e.preventDefault();\n if (!isMoved) {\n notification.$el.removeClass('notification-transitioning');\n notification.$el.transition(0);\n notificationHeight = notification.$el[0].offsetHeight / 2;\n }\n isMoved = true;\n touchesDiff = (pageY - touchesStart.y);\n var newTranslate = touchesDiff;\n if (touchesDiff > 0) {\n newTranslate = Math.pow( touchesDiff, 0.8 );\n }\n notification.$el.transform((\"translate3d(0, \" + newTranslate + \"px, 0)\"));\n }\n function handleTouchEnd() {\n if (!isTouched || !isMoved) {\n isTouched = false;\n isMoved = false;\n return;\n }\n isTouched = false;\n isMoved = false;\n if (touchesDiff === 0) {\n return;\n }\n\n var timeDiff = Utils.now() - touchStartTime;\n notification.$el.transition('');\n notification.$el.addClass('notification-transitioning');\n notification.$el.transform('');\n\n if (\n (touchesDiff < -10 && timeDiff < 300)\n || (-touchesDiff >= notificationHeight / 1)\n ) {\n notification.close();\n }\n }\n\n function attachTouchEvents() {\n {\n notification.$el.on(app.touchEvents.start, handleTouchStart, { passive: true });\n app.on('touchmove:active', handleTouchMove);\n app.on('touchend:passive', handleTouchEnd);\n }\n }\n function detachTouchEvents() {\n {\n notification.$el.off(app.touchEvents.start, handleTouchStart, { passive: true });\n app.off('touchmove:active', handleTouchMove);\n app.off('touchend:passive', handleTouchEnd);\n }\n }\n\n var timeoutId;\n function closeOnTimeout() {\n timeoutId = Utils.nextTick(function () {\n if (isTouched && isMoved) {\n closeOnTimeout();\n return;\n }\n notification.close();\n }, closeTimeout);\n }\n notification.on('open', function () {\n if (notification.params.swipeToClose) {\n attachTouchEvents();\n }\n $$1('.notification.modal-in').each(function (index, openedEl) {\n var notificationInstance = app.notification.get(openedEl);\n if (openedEl !== notification.el && notificationInstance) {\n notificationInstance.close();\n }\n });\n if (closeTimeout) {\n closeOnTimeout();\n }\n });\n notification.on('close beforeDestroy', function () {\n if (notification.params.swipeToClose) {\n detachTouchEvents();\n }\n win.clearTimeout(timeoutId);\n });\n\n return notification;\n }\n\n if ( Modal$$1 ) Notification.__proto__ = Modal$$1;\n Notification.prototype = Object.create( Modal$$1 && Modal$$1.prototype );\n Notification.prototype.constructor = Notification;\n\n Notification.prototype.render = function render () {\n var notification = this;\n if (notification.params.render) { return notification.params.render.call(notification, notification); }\n var ref = notification.params;\n var icon = ref.icon;\n var title = ref.title;\n var titleRightText = ref.titleRightText;\n var subtitle = ref.subtitle;\n var text = ref.text;\n var closeButton = ref.closeButton;\n var cssClass = ref.cssClass;\n return (\"\\n \\n \\n
\\n \" + (subtitle ? (\"
\" + subtitle + \"
\") : '') + \"\\n \" + (text ? (\"
\" + text + \"
\") : '') + \"\\n
\\n
\\n \").trim();\n };\n\n return Notification;\n }(Modal));\n\n var Notification$1 = {\n name: 'notification',\n static: {\n Notification: Notification,\n },\n create: function create() {\n var app = this;\n app.notification = Utils.extend(\n {},\n ModalMethods({\n app: app,\n constructor: Notification,\n defaultSelector: '.notification.modal-in',\n })\n );\n },\n params: {\n notification: {\n icon: null,\n title: null,\n titleRightText: null,\n subtitle: null,\n text: null,\n closeButton: false,\n closeTimeout: null,\n closeOnClick: false,\n swipeToClose: true,\n cssClass: null,\n render: null,\n },\n },\n };\n\n /* eslint \"no-useless-escape\": \"off\" */\n\n var Autocomplete = (function (Framework7Class$$1) {\n function Autocomplete(app, params) {\n if ( params === void 0 ) params = {};\n\n Framework7Class$$1.call(this, params, [app]);\n\n var ac = this;\n ac.app = app;\n\n var defaults = Utils.extend({\n on: {},\n }, app.params.autocomplete);\n\n\n // Extend defaults with modules params\n ac.useModulesParams(defaults);\n\n ac.params = Utils.extend(defaults, params);\n\n var $openerEl;\n if (ac.params.openerEl) {\n $openerEl = $$1(ac.params.openerEl);\n if ($openerEl.length) { $openerEl[0].f7Autocomplete = ac; }\n }\n\n var $inputEl;\n if (ac.params.inputEl) {\n $inputEl = $$1(ac.params.inputEl);\n if ($inputEl.length) { $inputEl[0].f7Autocomplete = ac; }\n }\n\n var view;\n if (ac.params.view) {\n view = ac.params.view;\n } else if ($openerEl || $inputEl) {\n view = app.views.get($openerEl || $inputEl);\n }\n if (!view) { view = app.views.main; }\n\n var id = Utils.now();\n\n var url = params.url;\n if (!url && $openerEl && $openerEl.length) {\n if ($openerEl.attr('href')) { url = $openerEl.attr('href'); }\n else if ($openerEl.find('a').length > 0) {\n url = $openerEl.find('a').attr('href');\n }\n }\n if (!url || url === '#' || url === '') { url = ac.params.url; }\n\n var inputType = ac.params.multiple ? 'checkbox' : 'radio';\n\n Utils.extend(ac, {\n $openerEl: $openerEl,\n openerEl: $openerEl && $openerEl[0],\n $inputEl: $inputEl,\n inputEl: $inputEl && $inputEl[0],\n id: id,\n view: view,\n url: url,\n value: ac.params.value || [],\n inputType: inputType,\n inputName: (inputType + \"-\" + id),\n $modalEl: undefined,\n $dropdownEl: undefined,\n });\n\n var previousQuery = '';\n function onInputChange() {\n var query = ac.$inputEl.val().trim();\n\n if (!ac.params.source) { return; }\n ac.params.source.call(ac, query, function (items) {\n var itemsHTML = '';\n var limit = ac.params.limit ? Math.min(ac.params.limit, items.length) : items.length;\n ac.items = items;\n var regExp;\n if (ac.params.highlightMatches) {\n query = query.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, '\\\\$&');\n regExp = new RegExp((\"(\" + query + \")\"), 'i');\n }\n\n var firstValue;\n var firstItem;\n for (var i = 0; i < limit; i += 1) {\n var itemValue = typeof items[i] === 'object' ? items[i][ac.params.valueProperty] : items[i];\n var itemText = typeof items[i] === 'object' ? items[i][ac.params.textProperty] : items[i];\n if (i === 0) {\n firstValue = itemValue;\n firstItem = ac.items[i];\n }\n itemsHTML += ac.renderItem({\n value: itemValue,\n text: ac.params.highlightMatches ? itemText.replace(regExp, '$1 ') : itemText,\n }, i);\n }\n if (itemsHTML === '' && query === '' && ac.params.dropdownPlaceholderText) {\n itemsHTML += ac.renderItem({\n placeholder: true,\n text: ac.params.dropdownPlaceholderText,\n });\n }\n ac.$dropdownEl.find('ul').html(itemsHTML);\n if (ac.params.typeahead) {\n if (!firstValue || !firstItem) {\n return;\n }\n if (firstValue.toLowerCase().indexOf(query.toLowerCase()) !== 0) {\n return;\n }\n if (previousQuery.toLowerCase() === query.toLowerCase()) {\n ac.value = [];\n return;\n }\n\n if (previousQuery.toLowerCase().indexOf(query.toLowerCase()) === 0) {\n previousQuery = query;\n ac.value = [];\n return;\n }\n $inputEl.val(firstValue);\n $inputEl[0].setSelectionRange(query.length, firstValue.length);\n\n var previousValue = typeof ac.value[0] === 'object' ? ac.value[0][ac.params.valueProperty] : ac.value[0];\n if (!previousValue || firstValue.toLowerCase() !== previousValue.toLowerCase()) {\n ac.value = [firstItem];\n ac.emit('local::change autocompleteChange', [firstItem]);\n }\n }\n\n previousQuery = query;\n });\n }\n function onPageInputChange() {\n var input = this;\n var value = input.value;\n var isValues = $$1(input).parents('.autocomplete-values').length > 0;\n var item;\n var itemValue;\n var aValue;\n if (isValues) {\n if (ac.inputType === 'checkbox' && !input.checked) {\n for (var i = 0; i < ac.value.length; i += 1) {\n aValue = typeof ac.value[i] === 'string' ? ac.value[i] : ac.value[i][ac.params.valueProperty];\n if (aValue === value || aValue * 1 === value * 1) {\n ac.value.splice(i, 1);\n }\n }\n ac.updateValues();\n ac.emit('local::change autocompleteChange', ac.value);\n }\n return;\n }\n\n // Find Related Item\n for (var i$1 = 0; i$1 < ac.items.length; i$1 += 1) {\n itemValue = typeof ac.items[i$1] === 'object' ? ac.items[i$1][ac.params.valueProperty] : ac.items[i$1];\n if (itemValue === value || itemValue * 1 === value * 1) { item = ac.items[i$1]; }\n }\n if (ac.inputType === 'radio') {\n ac.value = [item];\n } else if (input.checked) {\n ac.value.push(item);\n } else {\n for (var i$2 = 0; i$2 < ac.value.length; i$2 += 1) {\n aValue = typeof ac.value[i$2] === 'object' ? ac.value[i$2][ac.params.valueProperty] : ac.value[i$2];\n if (aValue === value || aValue * 1 === value * 1) {\n ac.value.splice(i$2, 1);\n }\n }\n }\n\n // Update Values Block\n ac.updateValues();\n\n // On Select Callback\n if (((ac.inputType === 'radio' && input.checked) || ac.inputType === 'checkbox')) {\n ac.emit('local::change autocompleteChange', ac.value);\n }\n }\n function onHtmlClick(e) {\n var $targetEl = $$1(e.target);\n if ($targetEl.is(ac.$inputEl[0]) || (ac.$dropdownEl && $targetEl.closest(ac.$dropdownEl[0]).length)) { return; }\n ac.close();\n }\n function onOpenerClick() {\n ac.open();\n }\n function onInputFocus() {\n ac.open();\n }\n function onInputBlur() {\n if (ac.$dropdownEl.find('label.active-state').length > 0) { return; }\n ac.close();\n }\n function onResize() {\n ac.positionDropdown();\n }\n\n function onKeyDown(e) {\n if (ac.opened && e.keyCode === 13) {\n e.preventDefault();\n ac.$inputEl.blur();\n }\n }\n function onDropdownclick() {\n var $clickedEl = $$1(this);\n var clickedItem;\n for (var i = 0; i < ac.items.length; i += 1) {\n var itemValue = typeof ac.items[i] === 'object' ? ac.items[i][ac.params.valueProperty] : ac.items[i];\n var value = $clickedEl.attr('data-value');\n if (itemValue === value || itemValue * 1 === value * 1) {\n clickedItem = ac.items[i];\n }\n }\n if (ac.params.updateInputValueOnSelect) {\n ac.$inputEl.val(typeof clickedItem === 'object' ? clickedItem[ac.params.valueProperty] : clickedItem);\n ac.$inputEl.trigger('input change');\n }\n ac.value = [clickedItem];\n ac.emit('local::change autocompleteChange', [clickedItem]);\n\n ac.close();\n }\n\n ac.attachEvents = function attachEvents() {\n if (ac.params.openIn !== 'dropdown' && ac.$openerEl) {\n ac.$openerEl.on('click', onOpenerClick);\n }\n if (ac.params.openIn === 'dropdown' && ac.$inputEl) {\n ac.$inputEl.on('focus', onInputFocus);\n ac.$inputEl.on(ac.params.inputEvents, onInputChange);\n if (app.device.android) {\n $$1('html').on('click', onHtmlClick);\n } else {\n ac.$inputEl.on('blur', onInputBlur);\n }\n if (ac.params.typeahead) {\n ac.$inputEl.on('keydown', onKeyDown);\n }\n }\n };\n ac.detachEvents = function attachEvents() {\n if (ac.params.openIn !== 'dropdown' && ac.$openerEl) {\n ac.$openerEl.off('click', onOpenerClick);\n }\n if (ac.params.openIn === 'dropdown' && ac.$inputEl) {\n ac.$inputEl.off('focus', onInputFocus);\n ac.$inputEl.off(ac.params.inputEvents, onInputChange);\n if (app.device.android) {\n $$1('html').off('click', onHtmlClick);\n } else {\n ac.$inputEl.off('blur', onInputBlur);\n }\n if (ac.params.typeahead) {\n ac.$inputEl.off('keydown', onKeyDown);\n }\n }\n };\n ac.attachDropdownEvents = function attachDropdownEvents() {\n ac.$dropdownEl.on('click', 'label', onDropdownclick);\n app.on('resize', onResize);\n };\n ac.detachDropdownEvents = function detachDropdownEvents() {\n ac.$dropdownEl.off('click', 'label', onDropdownclick);\n app.off('resize', onResize);\n };\n\n ac.attachPageEvents = function attachPageEvents() {\n ac.$el.on('change', 'input[type=\"radio\"], input[type=\"checkbox\"]', onPageInputChange);\n if (ac.params.closeOnSelect && !ac.params.multiple) {\n ac.$el.once('click', '.list label', function () {\n Utils.nextTick(function () {\n ac.close();\n });\n });\n }\n };\n ac.detachPageEvents = function detachPageEvents() {\n ac.$el.off('change', 'input[type=\"radio\"], input[type=\"checkbox\"]', onPageInputChange);\n };\n\n // Install Modules\n ac.useModules();\n\n // Init\n ac.init();\n\n return ac;\n }\n\n if ( Framework7Class$$1 ) Autocomplete.__proto__ = Framework7Class$$1;\n Autocomplete.prototype = Object.create( Framework7Class$$1 && Framework7Class$$1.prototype );\n Autocomplete.prototype.constructor = Autocomplete;\n\n Autocomplete.prototype.positionDropdown = function positionDropdown () {\n var obj;\n\n var ac = this;\n var $inputEl = ac.$inputEl;\n var app = ac.app;\n var $dropdownEl = ac.$dropdownEl;\n\n var $pageContentEl = $inputEl.parents('.page-content');\n if ($pageContentEl.length === 0) { return; }\n var inputOffset = $inputEl.offset();\n var inputOffsetWidth = $inputEl[0].offsetWidth;\n var inputOffsetHeight = $inputEl[0].offsetHeight;\n var $listEl = $inputEl.parents('.list');\n\n var $listParent;\n $listEl.parents().each(function (index, parentEl) {\n if ($listParent) { return; }\n var $parentEl = $$1(parentEl);\n if ($parentEl.parent($pageContentEl).length) { $listParent = $parentEl; }\n });\n\n var listOffset = $listEl.offset();\n var paddingBottom = parseInt($pageContentEl.css('padding-bottom'), 10);\n var listOffsetLeft = $listEl.length > 0 ? listOffset.left - $pageContentEl.offset().left : 0;\n var inputOffsetLeft = inputOffset.left - ($listEl.length > 0 ? listOffset.left : 0) - (app.rtl ? 0 : 0);\n var inputOffsetTop = inputOffset.top - ($pageContentEl.offset().top - $pageContentEl[0].scrollTop);\n\n var maxHeight = $pageContentEl[0].scrollHeight - paddingBottom - (inputOffsetTop + $pageContentEl[0].scrollTop) - $inputEl[0].offsetHeight;\n\n var paddingProp = app.rtl ? 'padding-right' : 'padding-left';\n var paddingValue;\n if ($listEl.length && !ac.params.expandInput) {\n paddingValue = (app.rtl ? $listEl[0].offsetWidth - inputOffsetLeft - inputOffsetWidth : inputOffsetLeft) - (app.theme === 'md' ? 16 : 15);\n }\n\n $dropdownEl.css({\n left: (($listEl.length > 0 ? listOffsetLeft : inputOffsetLeft) + \"px\"),\n top: ((inputOffsetTop + $pageContentEl[0].scrollTop + inputOffsetHeight) + \"px\"),\n width: (($listEl.length > 0 ? $listEl[0].offsetWidth : inputOffsetWidth) + \"px\"),\n });\n $dropdownEl.children('.autocomplete-dropdown-inner').css(( obj = {\n maxHeight: (maxHeight + \"px\")\n }, obj[paddingProp] = $listEl.length > 0 && !ac.params.expandInput ? (paddingValue + \"px\") : '', obj ));\n };\n\n Autocomplete.prototype.focus = function focus () {\n var ac = this;\n ac.$el.find('input[type=search]').focus();\n };\n\n Autocomplete.prototype.source = function source (query) {\n var ac = this;\n if (!ac.params.source) { return; }\n\n var $el = ac.$el;\n\n ac.params.source.call(ac, query, function (items) {\n var itemsHTML = '';\n var limit = ac.params.limit ? Math.min(ac.params.limit, items.length) : items.length;\n ac.items = items;\n for (var i = 0; i < limit; i += 1) {\n var selected = false;\n var itemValue = typeof items[i] === 'object' ? items[i][ac.params.valueProperty] : items[i];\n for (var j = 0; j < ac.value.length; j += 1) {\n var aValue = typeof ac.value[j] === 'object' ? ac.value[j][ac.params.valueProperty] : ac.value[j];\n if (aValue === itemValue || aValue * 1 === itemValue * 1) { selected = true; }\n }\n itemsHTML += ac.renderItem({\n value: itemValue,\n text: typeof items[i] === 'object' ? items[i][ac.params.textProperty] : items[i],\n inputType: ac.inputType,\n id: ac.id,\n inputName: ac.inputName,\n selected: selected,\n }, i);\n }\n $el.find('.autocomplete-found ul').html(itemsHTML);\n if (items.length === 0) {\n if (query.length !== 0) {\n $el.find('.autocomplete-not-found').show();\n $el.find('.autocomplete-found, .autocomplete-values').hide();\n } else {\n $el.find('.autocomplete-values').show();\n $el.find('.autocomplete-found, .autocomplete-not-found').hide();\n }\n } else {\n $el.find('.autocomplete-found').show();\n $el.find('.autocomplete-not-found, .autocomplete-values').hide();\n }\n });\n };\n\n Autocomplete.prototype.updateValues = function updateValues () {\n var ac = this;\n var valuesHTML = '';\n for (var i = 0; i < ac.value.length; i += 1) {\n valuesHTML += ac.renderItem({\n value: typeof ac.value[i] === 'object' ? ac.value[i][ac.params.valueProperty] : ac.value[i],\n text: typeof ac.value[i] === 'object' ? ac.value[i][ac.params.textProperty] : ac.value[i],\n inputType: ac.inputType,\n id: ac.id,\n inputName: ((ac.inputName) + \"-checked}\"),\n selected: true,\n }, i);\n }\n ac.$el.find('.autocomplete-values ul').html(valuesHTML);\n };\n\n Autocomplete.prototype.preloaderHide = function preloaderHide () {\n var ac = this;\n if (ac.params.openIn === 'dropdown' && ac.$dropdownEl) {\n ac.$dropdownEl.find('.autocomplete-preloader').removeClass('autocomplete-preloader-visible');\n } else {\n $$1('.autocomplete-preloader').removeClass('autocomplete-preloader-visible');\n }\n };\n\n Autocomplete.prototype.preloaderShow = function preloaderShow () {\n var ac = this;\n if (ac.params.openIn === 'dropdown' && ac.$dropdownEl) {\n ac.$dropdownEl.find('.autocomplete-preloader').addClass('autocomplete-preloader-visible');\n } else {\n $$1('.autocomplete-preloader').addClass('autocomplete-preloader-visible');\n }\n };\n\n Autocomplete.prototype.renderPreloader = function renderPreloader () {\n var ac = this;\n return (\"\\n \" + (ac.app.theme === 'md' ? Utils.mdPreloaderContent : '') + \"
\\n \").trim();\n };\n\n Autocomplete.prototype.renderSearchbar = function renderSearchbar () {\n var ac = this;\n if (ac.params.renderSearchbar) { return ac.params.renderSearchbar.call(ac); }\n var searchbarHTML = (\"\\n \\n \").trim();\n return searchbarHTML;\n };\n\n Autocomplete.prototype.renderItem = function renderItem (item, index) {\n var ac = this;\n if (ac.params.renderItem) { return ac.params.renderItem.call(ac, item, index); }\n var itemHtml;\n var itemValue = item.value && typeof item.value === 'string' ? item.value.replace(/\"/g, '"') : item.value;\n if (ac.params.openIn !== 'dropdown') {\n itemHtml = \"\\n \\n \\n \\n \\n \\n
\" + (item.text) + \"
\\n
\\n \\n \\n \";\n } else if (!item.placeholder) {\n // Dropdown\n itemHtml = \"\\n \\n \\n \\n
\" + (item.text) + \"
\\n
\\n \\n \\n \";\n } else {\n // Dropwdown placeholder\n itemHtml = \"\\n \\n \\n
\\n
\" + (item.text) + \"
\\n
\\n \\n \\n \";\n }\n return itemHtml.trim();\n };\n\n Autocomplete.prototype.renderNavbar = function renderNavbar () {\n var ac = this;\n if (ac.params.renderNavbar) { return ac.params.renderNavbar.call(ac); }\n var pageTitle = ac.params.pageTitle;\n if (typeof pageTitle === 'undefined' && ac.$openerEl && ac.$openerEl.length) {\n pageTitle = ac.$openerEl.find('.item-title').text().trim();\n }\n var navbarHtml = (\"\\n
\\n
\\n
\\n \" + (pageTitle ? (\"
\" + pageTitle + \"
\") : '') + \"\\n \" + (ac.params.preloader ? (\"\\n
\\n \" + (ac.renderPreloader()) + \"\\n
\\n \") : '') + \"\\n
\" + (ac.renderSearchbar()) + \"
\\n
\\n
\\n \").trim();\n return navbarHtml;\n };\n\n Autocomplete.prototype.renderDropdown = function renderDropdown () {\n var ac = this;\n if (ac.params.renderDropdown) { return ac.params.renderDropdown.call(ac, ac.items); }\n var dropdownHtml = (\"\\n
\\n
\\n \" + (ac.params.preloader ? ac.renderPreloader() : '') + \"\\n
\\n \").trim();\n return dropdownHtml;\n };\n\n Autocomplete.prototype.renderPage = function renderPage () {\n var ac = this;\n if (ac.params.renderPage) { return ac.params.renderPage.call(ac, ac.items); }\n\n var pageHtml = (\"\\n
\\n \" + (ac.renderNavbar()) + \"\\n
\\n
\\n
\\n
\\n
\\n \" + (ac.params.notFoundText) + \"
\\n \\n
\\n
\\n
\\n
\\n \").trim();\n return pageHtml;\n };\n\n Autocomplete.prototype.renderPopup = function renderPopup () {\n var ac = this;\n if (ac.params.renderPopup) { return ac.params.renderPopup.call(ac, ac.items); }\n var popupHtml = (\"\\n \\n \").trim();\n return popupHtml;\n };\n\n Autocomplete.prototype.onOpen = function onOpen (type, el) {\n var ac = this;\n var app = ac.app;\n var $el = $$1(el);\n ac.$el = $el;\n ac.el = $el[0];\n ac.openedIn = type;\n ac.opened = true;\n\n if (ac.params.openIn === 'dropdown') {\n ac.attachDropdownEvents();\n\n ac.$dropdownEl.addClass('autocomplete-dropdown-in');\n ac.$inputEl.trigger('input');\n } else {\n // Init SB\n var $searchbarEl = $el.find('.searchbar');\n if (ac.params.openIn === 'page' && app.theme === 'ios' && $searchbarEl.length === 0) {\n $searchbarEl = $$1(app.navbar.getElByPage($el)).find('.searchbar');\n }\n ac.searchbar = app.searchbar.create({\n el: $searchbarEl,\n backdropEl: $el.find('.searchbar-backdrop'),\n customSearch: true,\n on: {\n search: function search(sb, query) {\n if (query.length === 0 && ac.searchbar.enabled) {\n ac.searchbar.backdropShow();\n } else {\n ac.searchbar.backdropHide();\n }\n ac.source(query);\n },\n },\n });\n\n // Attach page events\n ac.attachPageEvents();\n\n // Update Values On Page Init\n ac.updateValues();\n\n // Source on load\n if (ac.params.requestSourceOnOpen) { ac.source(''); }\n }\n\n ac.emit('local::open autocompleteOpen', ac);\n };\n\n Autocomplete.prototype.autoFocus = function autoFocus () {\n var ac = this;\n if (ac.searchbar && ac.searchbar.$inputEl) {\n ac.searchbar.$inputEl.focus();\n }\n return ac;\n };\n\n Autocomplete.prototype.onOpened = function onOpened () {\n var ac = this;\n if (ac.params.openIn !== 'dropdown' && ac.params.autoFocus) {\n ac.autoFocus();\n }\n ac.emit('local::opened autocompleteOpened', ac);\n };\n\n Autocomplete.prototype.onClose = function onClose () {\n var ac = this;\n if (ac.destroyed) { return; }\n\n // Destroy SB\n if (ac.searchbar && ac.searchbar.destroy) {\n ac.searchbar.destroy();\n ac.searchbar = null;\n delete ac.searchbar;\n }\n\n if (ac.params.openIn === 'dropdown') {\n ac.detachDropdownEvents();\n ac.$dropdownEl.removeClass('autocomplete-dropdown-in').remove();\n ac.$inputEl.parents('.item-content-dropdown-expanded').removeClass('item-content-dropdown-expanded');\n } else {\n ac.detachPageEvents();\n }\n\n ac.emit('local::close autocompleteClose', ac);\n };\n\n Autocomplete.prototype.onClosed = function onClosed () {\n var ac = this;\n if (ac.destroyed) { return; }\n ac.opened = false;\n ac.$el = null;\n ac.el = null;\n delete ac.$el;\n delete ac.el;\n\n ac.emit('local::closed autocompleteClosed', ac);\n };\n\n Autocomplete.prototype.openPage = function openPage () {\n var ac = this;\n if (ac.opened) { return ac; }\n var pageHtml = ac.renderPage();\n ac.view.router.navigate({\n url: ac.url,\n route: {\n content: pageHtml,\n path: ac.url,\n on: {\n pageBeforeIn: function pageBeforeIn(e, page) {\n ac.onOpen('page', page.el);\n },\n pageAfterIn: function pageAfterIn(e, page) {\n ac.onOpened('page', page.el);\n },\n pageBeforeOut: function pageBeforeOut(e, page) {\n ac.onClose('page', page.el);\n },\n pageAfterOut: function pageAfterOut(e, page) {\n ac.onClosed('page', page.el);\n },\n },\n options: {\n animate: ac.params.animate,\n },\n },\n });\n return ac;\n };\n\n Autocomplete.prototype.openPopup = function openPopup () {\n var ac = this;\n if (ac.opened) { return ac; }\n var popupHtml = ac.renderPopup();\n\n var popupParams = {\n content: popupHtml,\n animate: ac.params.animate,\n on: {\n popupOpen: function popupOpen(popup) {\n ac.onOpen('popup', popup.el);\n },\n popupOpened: function popupOpened(popup) {\n ac.onOpened('popup', popup.el);\n },\n popupClose: function popupClose(popup) {\n ac.onClose('popup', popup.el);\n },\n popupClosed: function popupClosed(popup) {\n ac.onClosed('popup', popup.el);\n },\n },\n };\n\n if (ac.params.routableModals) {\n ac.view.router.navigate({\n url: ac.url,\n route: {\n path: ac.url,\n popup: popupParams,\n },\n });\n } else {\n ac.modal = ac.app.popup.create(popupParams).open(ac.params.animate);\n }\n return ac;\n };\n\n Autocomplete.prototype.openDropdown = function openDropdown () {\n var ac = this;\n\n if (!ac.$dropdownEl) {\n ac.$dropdownEl = $$1(ac.renderDropdown());\n }\n var $listEl = ac.$inputEl.parents('.list');\n if ($listEl.length && ac.$inputEl.parents('.item-content').length > 0 && ac.params.expandInput) {\n ac.$inputEl.parents('.item-content').addClass('item-content-dropdown-expanded');\n }\n\n var $pageContentEl = ac.$inputEl.parents('.page-content');\n if (ac.params.dropdownContainerEl) {\n $$1(ac.params.dropdownContainerEl).append(ac.$dropdownEl);\n } else if ($pageContentEl.length === 0) {\n ac.$dropdownEl.insertAfter(ac.$inputEl);\n } else {\n ac.positionDropdown();\n $pageContentEl.append(ac.$dropdownEl);\n }\n ac.onOpen('dropdown', ac.$dropdownEl);\n ac.onOpened('dropdown', ac.$dropdownEl);\n };\n\n Autocomplete.prototype.open = function open () {\n var ac = this;\n if (ac.opened) { return ac; }\n var openIn = ac.params.openIn;\n ac[(\"open\" + (openIn.split('').map(function (el, index) {\n if (index === 0) { return el.toUpperCase(); }\n return el;\n }).join('')))]();\n return ac;\n };\n\n Autocomplete.prototype.close = function close () {\n var ac = this;\n if (!ac.opened) { return ac; }\n if (ac.params.openIn === 'dropdown') {\n ac.onClose();\n ac.onClosed();\n } else if (ac.params.routableModals || ac.openedIn === 'page') {\n ac.view.router.back({ animate: ac.params.animate });\n } else {\n ac.modal.once('modalClosed', function () {\n Utils.nextTick(function () {\n ac.modal.destroy();\n delete ac.modal;\n });\n });\n ac.modal.close();\n }\n return ac;\n };\n\n Autocomplete.prototype.init = function init () {\n var ac = this;\n ac.attachEvents();\n };\n\n Autocomplete.prototype.destroy = function destroy () {\n var ac = this;\n ac.emit('local::beforeDestroy autocompleteBeforeDestroy', ac);\n ac.detachEvents();\n if (ac.$inputEl && ac.$inputEl[0]) {\n delete ac.$inputEl[0].f7Autocomplete;\n }\n if (ac.$openerEl && ac.$openerEl[0]) {\n delete ac.$openerEl[0].f7Autocomplete;\n }\n Utils.deleteProps(ac);\n ac.destroyed = true;\n };\n\n return Autocomplete;\n }(Framework7Class));\n\n var Autocomplete$1 = {\n name: 'autocomplete',\n params: {\n autocomplete: {\n openerEl: undefined,\n inputEl: undefined,\n view: undefined,\n\n // DropDown\n dropdownContainerEl: undefined,\n dropdownPlaceholderText: undefined,\n typeahead: false,\n highlightMatches: true,\n expandInput: false,\n updateInputValueOnSelect: true,\n inputEvents: 'input',\n\n value: undefined,\n multiple: false,\n\n source: undefined,\n limit: undefined,\n valueProperty: 'id',\n textProperty: 'text',\n\n openIn: 'page', // or 'popup' or 'dropdown'\n pageBackLinkText: 'Back',\n popupCloseLinkText: 'Close',\n pageTitle: undefined,\n searchbarPlaceholder: 'Search...',\n searchbarDisableText: 'Cancel',\n\n animate: true,\n\n autoFocus: false,\n closeOnSelect: false,\n notFoundText: 'Nothing found',\n requestSourceOnOpen: false,\n\n // Preloader\n preloaderColor: undefined,\n preloader: false,\n\n // Colors\n formColorTheme: undefined,\n navbarColorTheme: undefined,\n\n // Routing\n routableModals: true,\n url: 'select/',\n\n // Custom render functions\n renderDropdown: undefined,\n renderPage: undefined,\n renderPopup: undefined,\n renderItem: undefined,\n renderSearchbar: undefined,\n renderNavbar: undefined,\n\n },\n },\n static: {\n Autocomplete: Autocomplete,\n },\n create: function create() {\n var app = this;\n app.autocomplete = Utils.extend(\n ConstructorMethods({\n defaultSelector: undefined,\n constructor: Autocomplete,\n app: app,\n domProp: 'f7Autocomplete',\n }),\n {\n open: function open(autocompleteEl) {\n var ac = app.autocomplete.get(autocompleteEl);\n if (ac && ac.open) { return ac.open(); }\n return undefined;\n },\n close: function close(autocompleteEl) {\n var ac = app.autocomplete.get(autocompleteEl);\n if (ac && ac.close) { return ac.close(); }\n return undefined;\n },\n }\n );\n },\n };\n\n var Tooltip = (function (Framework7Class$$1) {\n function Tooltip(app, params) {\n if ( params === void 0 ) params = {};\n\n Framework7Class$$1.call(this, app, params);\n\n var tooltip = this;\n\n var defaults = Utils.extend({}, app.params.tooltip);\n\n // Extend defaults with modules params\n tooltip.useModulesParams(defaults);\n\n tooltip.params = Utils.extend(defaults, params);\n\n var ref = tooltip.params;\n var targetEl = ref.targetEl;\n if (!targetEl) { return tooltip; }\n\n var $targetEl = $$1(targetEl);\n if ($targetEl.length === 0) { return tooltip; }\n\n var $el = $$1(tooltip.render()).eq(0);\n\n Utils.extend(tooltip, {\n app: app,\n $targetEl: $targetEl,\n targetEl: $targetEl && $targetEl[0],\n $el: $el,\n el: $el && $el[0],\n text: tooltip.params.text || '',\n visible: false,\n opened: false,\n });\n\n $targetEl[0].f7Tooltip = tooltip;\n\n var touchesStart = {};\n var isTouched;\n function handleTouchStart(e) {\n if (isTouched) { return; }\n isTouched = true;\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 tooltip.show(this);\n }\n function handleTouchMove(e) {\n if (!isTouched) { return; }\n var x = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n var y = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n var distance = Math.pow( (\n (Math.pow( (x - touchesStart.x), 2 ))\n + (Math.pow( (y - touchesStart.y), 2 ))\n ), 0.5 );\n if (distance > 50) {\n isTouched = false;\n tooltip.hide();\n }\n }\n function handleTouchEnd() {\n if (!isTouched) { return; }\n isTouched = false;\n tooltip.hide();\n }\n function handleMouseEnter() {\n tooltip.show(this);\n }\n function handleMouseLeave() {\n tooltip.hide();\n }\n function handleTransitionEnd() {\n if (!$el.hasClass('tooltip-in')) {\n $el.removeClass('tooltip-out').remove();\n }\n }\n\n tooltip.attachEvents = function attachEvents() {\n $el.on('transitionend webkitTransitionEnd', handleTransitionEnd);\n if (Support.touch) {\n var passive = Support.passiveListener ? { passive: true } : false;\n $targetEl.on(app.touchEvents.start, handleTouchStart, passive);\n app.on('touchmove', handleTouchMove);\n app.on('touchend:passive', handleTouchEnd);\n } else {\n $targetEl.on('mouseenter', handleMouseEnter);\n $targetEl.on('mouseleave', handleMouseLeave);\n }\n };\n tooltip.detachEvents = function detachEvents() {\n $el.off('transitionend webkitTransitionEnd', handleTransitionEnd);\n if (Support.touch) {\n var passive = Support.passiveListener ? { passive: true } : false;\n $targetEl.off(app.touchEvents.start, handleTouchStart, passive);\n app.off('touchmove', handleTouchMove);\n app.off('touchend:passive', handleTouchEnd);\n } else {\n $targetEl.off('mouseenter', handleMouseEnter);\n $targetEl.off('mouseleave', handleMouseLeave);\n }\n };\n\n // Install Modules\n tooltip.useModules();\n\n tooltip.init();\n\n return tooltip;\n }\n\n if ( Framework7Class$$1 ) Tooltip.__proto__ = Framework7Class$$1;\n Tooltip.prototype = Object.create( Framework7Class$$1 && Framework7Class$$1.prototype );\n Tooltip.prototype.constructor = Tooltip;\n\n Tooltip.prototype.position = function position (targetEl) {\n var tooltip = this;\n var $el = tooltip.$el;\n var app = tooltip.app;\n $el.css({ left: '', top: '' });\n var $targetEl = $$1(targetEl || tooltip.el);\n var ref = [$el.width(), $el.height()];\n var width = ref[0];\n var height = ref[1];\n\n $el.css({ left: '', top: '' });\n\n var targetWidth;\n var targetHeight;\n var targetOffsetLeft;\n var targetOffsetTop;\n if ($targetEl && $targetEl.length > 0) {\n targetWidth = $targetEl.outerWidth();\n targetHeight = $targetEl.outerHeight();\n\n var targetOffset = $targetEl.offset();\n targetOffsetLeft = targetOffset.left - app.left;\n targetOffsetTop = targetOffset.top - app.top;\n\n var targetParentPage = $targetEl.parents('.page');\n if (targetParentPage.length > 0) {\n targetOffsetTop -= targetParentPage[0].scrollTop;\n }\n }\n var ref$1 = [0, 0, 0];\n var left = ref$1[0];\n var top = ref$1[1];\n\n // Top Position\n var position = 'top';\n\n if (height < targetOffsetTop) {\n // On top\n top = targetOffsetTop - height;\n } else if (height < app.height - targetOffsetTop - targetHeight) {\n // On bottom\n position = 'bottom';\n top = targetOffsetTop + targetHeight;\n } else {\n // On middle\n position = 'middle';\n top = ((targetHeight / 2) + targetOffsetTop) - (height / 2);\n if (top <= 0) {\n top = 8;\n } else if (top + height >= app.height) {\n top = app.height - height - 8;\n }\n }\n\n // Horizontal Position\n if (position === 'top' || position === 'bottom') {\n left = ((targetWidth / 2) + targetOffsetLeft) - (width / 2);\n if (left < 8) { left = 8; }\n if (left + width > app.width) { left = app.width - width - 8; }\n if (left < 0) { left = 0; }\n } else if (position === 'middle') {\n left = targetOffsetLeft - width;\n if (left < 8 || (left + width > app.width)) {\n if (left < 8) { left = targetOffsetLeft + targetWidth; }\n if (left + width > app.width) { left = app.width - width - 8; }\n }\n }\n\n // Apply Styles\n $el.css({ top: (top + \"px\"), left: (left + \"px\") });\n };\n\n Tooltip.prototype.show = function show (aroundEl) {\n var tooltip = this;\n var app = tooltip.app;\n var $el = tooltip.$el;\n var $targetEl = tooltip.$targetEl;\n app.root.append($el);\n tooltip.position(aroundEl);\n var $aroundEl = $$1(aroundEl);\n tooltip.visible = true;\n tooltip.opened = true;\n $targetEl.trigger('tooltip:show', tooltip);\n $el.trigger('tooltip:show', tooltip);\n if ($aroundEl.length && $aroundEl[0] !== $targetEl[0]) {\n $aroundEl.trigger('tooltip:show', tooltip);\n }\n tooltip.emit('local::show tooltipShow', tooltip);\n $el.removeClass('tooltip-out').addClass('tooltip-in');\n return tooltip;\n };\n\n Tooltip.prototype.hide = function hide () {\n var tooltip = this;\n var $el = tooltip.$el;\n var $targetEl = tooltip.$targetEl;\n tooltip.visible = false;\n tooltip.opened = false;\n $targetEl.trigger('tooltip:hide', tooltip);\n $el.trigger('tooltip:hide', tooltip);\n tooltip.emit('local::hide tooltipHide', tooltip);\n $el.addClass('tooltip-out').removeClass('tooltip-in');\n return tooltip;\n };\n\n Tooltip.prototype.render = function render () {\n var tooltip = this;\n if (tooltip.params.render) { return tooltip.params.render.call(tooltip, tooltip); }\n var ref = tooltip.params;\n var cssClass = ref.cssClass;\n var text = ref.text;\n return (\"\\n
\\n \").trim();\n };\n\n Tooltip.prototype.setText = function setText (newText) {\n var tooltip = this;\n if (typeof newText === 'undefined') {\n return tooltip;\n }\n tooltip.params.text = newText;\n tooltip.text = newText;\n if (tooltip.$el) {\n tooltip.$el.children('.tooltip-content').html(newText);\n }\n if (tooltip.opened) {\n tooltip.position();\n }\n return tooltip;\n };\n\n Tooltip.prototype.init = function init () {\n var tooltip = this;\n tooltip.attachEvents();\n };\n\n Tooltip.prototype.destroy = function destroy () {\n var tooltip = this;\n if (!tooltip.$targetEl || tooltip.destroyed) { return; }\n tooltip.$targetEl.trigger('tooltip:beforedestroy', tooltip);\n tooltip.emit('local::beforeDestroy tooltipBeforeDestroy', tooltip);\n tooltip.$el.remove();\n delete tooltip.$targetEl[0].f7Tooltip;\n tooltip.detachEvents();\n Utils.deleteProps(tooltip);\n tooltip.destroyed = true;\n };\n\n return Tooltip;\n }(Framework7Class));\n\n var Tooltip$1 = {\n name: 'tooltip',\n static: {\n Tooltip: Tooltip,\n },\n create: function create() {\n var app = this;\n app.tooltip = ConstructorMethods({\n defaultSelector: '.tooltip',\n constructor: Tooltip,\n app: app,\n domProp: 'f7Tooltip',\n });\n app.tooltip.show = function show(el) {\n var $el = $$1(el);\n if ($el.length === 0) { return undefined; }\n var tooltip = $el[0].f7Tooltip;\n if (!tooltip) { return undefined; }\n tooltip.show($el[0]);\n return tooltip;\n };\n app.tooltip.hide = function hide(el) {\n var $el = $$1(el);\n if ($el.length === 0) { return undefined; }\n var tooltip = $el[0].f7Tooltip;\n if (!tooltip) { return undefined; }\n tooltip.hide();\n return tooltip;\n };\n app.tooltip.setText = function text(el, newText) {\n var $el = $$1(el);\n if ($el.length === 0) { return undefined; }\n var tooltip = $el[0].f7Tooltip;\n if (!tooltip) { return undefined; }\n tooltip.setText(newText);\n return tooltip;\n };\n },\n params: {\n tooltip: {\n targetEl: null,\n text: null,\n cssClass: null,\n render: null,\n },\n },\n on: {\n tabMounted: function tabMounted(tabEl) {\n var app = this;\n $$1(tabEl).find('.tooltip-init').each(function (index, el) {\n var text = $$1(el).attr('data-tooltip');\n if (!text) { return; }\n app.tooltip.create({ targetEl: el, text: text });\n });\n },\n tabBeforeRemove: function tabBeforeRemove(tabEl) {\n $$1(tabEl).find('.tooltip-init').each(function (index, el) {\n if (el.f7Tooltip) { el.f7Tooltip.destroy(); }\n });\n },\n pageInit: function pageInit(page) {\n var app = this;\n page.$el.find('.tooltip-init').each(function (index, el) {\n var text = $$1(el).attr('data-tooltip');\n if (!text) { return; }\n app.tooltip.create({ targetEl: el, text: text });\n });\n },\n pageBeforeRemove: function pageBeforeRemove(page) {\n page.$el.find('.tooltip-init').each(function (index, el) {\n if (el.f7Tooltip) { el.f7Tooltip.destroy(); }\n });\n },\n },\n };\n\n /* eslint no-nested-ternary: off */\n\n var Gauge = (function (Framework7Class$$1) {\n function Gauge(app, params) {\n if ( params === void 0 ) params = {};\n\n // Extends with open/close Modal methods;\n Framework7Class$$1.call(this, app, params);\n\n var gauge = this;\n\n var defaults = Utils.extend({}, app.params.gauge);\n\n // Extend defaults with modules params\n gauge.useModulesParams(defaults);\n\n gauge.params = Utils.extend(defaults, params);\n\n var ref = gauge.params;\n var el = ref.el;\n if (!el) { return gauge; }\n\n var $el = $$1(el);\n if ($el.length === 0) { return gauge; }\n\n\n Utils.extend(gauge, {\n app: app,\n $el: $el,\n el: $el && $el[0],\n });\n\n $el[0].f7Gauge = gauge;\n\n // Install Modules\n gauge.useModules();\n\n gauge.init();\n\n return gauge;\n }\n\n if ( Framework7Class$$1 ) Gauge.__proto__ = Framework7Class$$1;\n Gauge.prototype = Object.create( Framework7Class$$1 && Framework7Class$$1.prototype );\n Gauge.prototype.constructor = Gauge;\n\n Gauge.prototype.calcRadius = function calcRadius () {\n var gauge = this;\n var ref = gauge.params;\n var size = ref.size;\n var borderWidth = ref.borderWidth;\n return (size / 2) - (borderWidth / 2);\n };\n\n Gauge.prototype.calcBorderLength = function calcBorderLength () {\n var gauge = this;\n var radius = gauge.calcRadius();\n return 2 * Math.PI * radius;\n };\n\n Gauge.prototype.render = function render () {\n var gauge = this;\n if (gauge.params.render) { return gauge.params.render.call(gauge, gauge); }\n\n var ref = gauge.params;\n var type = ref.type;\n var value = ref.value;\n var size = ref.size;\n var bgColor = ref.bgColor;\n var borderBgColor = ref.borderBgColor;\n var borderColor = ref.borderColor;\n var borderWidth = ref.borderWidth;\n var valueText = ref.valueText;\n var valueTextColor = ref.valueTextColor;\n var valueFontSize = ref.valueFontSize;\n var valueFontWeight = ref.valueFontWeight;\n var labelText = ref.labelText;\n var labelTextColor = ref.labelTextColor;\n var labelFontSize = ref.labelFontSize;\n var labelFontWeight = ref.labelFontWeight;\n\n var semiCircle = type === 'semicircle';\n var radius = gauge.calcRadius();\n var length = gauge.calcBorderLength();\n var progress = Math.max(Math.min(value, 1), 0);\n\n return (\"\\n
\\n \" + (semiCircle ? (\"\\n \\n \\n \") : (\"\\n \" + (borderBgColor ? (\"\\n \\n \") : '') + \"\\n \\n \")) + \"\\n \" + (valueText ? (\"\\n \" + valueText + \" \\n \") : '') + \"\\n \" + (labelText ? (\"\\n \" + labelText + \" \\n \") : '') + \"\\n \\n \").trim();\n };\n\n Gauge.prototype.update = function update (newParams) {\n if ( newParams === void 0 ) newParams = {};\n\n var gauge = this;\n var params = gauge.params;\n var $gaugeSvgEl = gauge.$gaugeSvgEl;\n\n Object.keys(newParams).forEach(function (param) {\n if (typeof newParams[param] !== 'undefined') {\n params[param] = newParams[param];\n }\n });\n if ($gaugeSvgEl.length === 0) { return gauge; }\n\n var value = params.value;\n var size = params.size;\n var bgColor = params.bgColor;\n var borderBgColor = params.borderBgColor;\n var borderColor = params.borderColor;\n var borderWidth = params.borderWidth;\n var valueText = params.valueText;\n var valueTextColor = params.valueTextColor;\n var valueFontSize = params.valueFontSize;\n var valueFontWeight = params.valueFontWeight;\n var labelText = params.labelText;\n var labelTextColor = params.labelTextColor;\n var labelFontSize = params.labelFontSize;\n var labelFontWeight = params.labelFontWeight;\n\n var length = gauge.calcBorderLength();\n var progress = Math.max(Math.min(value, 1), 0);\n var radius = gauge.calcRadius();\n var semiCircle = params.type === 'semicircle';\n\n var svgAttrs = {\n width: (size + \"px\"),\n height: ((semiCircle ? size / 2 : size) + \"px\"),\n viewBox: (\"0 0 \" + size + \" \" + (semiCircle ? size / 2 : size)),\n };\n Object.keys(svgAttrs).forEach(function (attr) {\n $gaugeSvgEl.attr(attr, svgAttrs[attr]);\n });\n if (semiCircle) {\n var backAttrs = {\n d: (\"M\" + (size - (borderWidth / 2)) + \",\" + (size / 2) + \" a1,1 0 0,0 -\" + (size - borderWidth) + \",0\"),\n stroke: borderBgColor,\n 'stroke-width': borderWidth,\n fill: bgColor || 'none',\n };\n var frontAttrs = {\n d: (\"M\" + (size - (borderWidth / 2)) + \",\" + (size / 2) + \" a1,1 0 0,0 -\" + (size - borderWidth) + \",0\"),\n stroke: borderColor,\n 'stroke-width': borderWidth,\n 'stroke-dasharray': length / 2,\n 'stroke-dashoffset': (length / 2) * (progress - 1),\n fill: borderBgColor ? 'none' : (bgColor || 'none'),\n };\n Object.keys(backAttrs).forEach(function (attr) {\n $gaugeSvgEl.find('.gauge-back-semi').attr(attr, backAttrs[attr]);\n });\n Object.keys(frontAttrs).forEach(function (attr) {\n $gaugeSvgEl.find('.gauge-front-semi').attr(attr, frontAttrs[attr]);\n });\n } else {\n var backAttrs$1 = {\n stroke: borderBgColor,\n 'stroke-width': borderWidth,\n fill: bgColor || 'none',\n cx: size / 2,\n cy: size / 2,\n r: radius,\n };\n var frontAttrs$1 = {\n transform: (\"rotate(-90 \" + (size / 2) + \" \" + (size / 2) + \")\"),\n stroke: borderColor,\n 'stroke-width': borderWidth,\n 'stroke-dasharray': length,\n 'stroke-dashoffset': length * (1 - progress),\n fill: borderBgColor ? 'none' : bgColor || 'none',\n cx: size / 2,\n cy: size / 2,\n r: radius,\n };\n Object.keys(backAttrs$1).forEach(function (attr) {\n $gaugeSvgEl.find('.gauge-back-circle').attr(attr, backAttrs$1[attr]);\n });\n Object.keys(frontAttrs$1).forEach(function (attr) {\n $gaugeSvgEl.find('.gauge-front-circle').attr(attr, frontAttrs$1[attr]);\n });\n }\n if (valueText) {\n if (!$gaugeSvgEl.find('.gauge-value-text').length) {\n $gaugeSvgEl.append('
');\n }\n var textAttrs = {\n x: '50%',\n y: semiCircle ? '100%' : '50%',\n 'font-weight': valueFontWeight,\n 'font-size': valueFontSize,\n fill: valueTextColor,\n dy: semiCircle ? (labelText ? -labelFontSize - 15 : -5) : 0,\n 'text-anchor': 'middle',\n 'dominant-baseline': !semiCircle && 'middle',\n };\n Object.keys(textAttrs).forEach(function (attr) {\n $gaugeSvgEl.find('.gauge-value-text').attr(attr, textAttrs[attr]);\n });\n $gaugeSvgEl.find('.gauge-value-text').text(valueText);\n } else {\n $gaugeSvgEl.find('.gauge-value-text').remove();\n }\n if (labelText) {\n if (!$gaugeSvgEl.find('.gauge-label-text').length) {\n $gaugeSvgEl.append('
');\n }\n var labelAttrs = {\n x: '50%',\n y: semiCircle ? '100%' : '50%',\n 'font-weight': labelFontWeight,\n 'font-size': labelFontSize,\n fill: labelTextColor,\n dy: semiCircle ? -5 : (valueText ? ((valueFontSize / 2) + 10) : 0),\n 'text-anchor': 'middle',\n 'dominant-baseline': !semiCircle && 'middle',\n };\n Object.keys(labelAttrs).forEach(function (attr) {\n $gaugeSvgEl.find('.gauge-label-text').attr(attr, labelAttrs[attr]);\n });\n $gaugeSvgEl.find('.gauge-label-text').text(labelText);\n } else {\n $gaugeSvgEl.find('.gauge-label-text').remove();\n }\n return gauge;\n };\n\n Gauge.prototype.init = function init () {\n var gauge = this;\n var $gaugeSvgEl = $$1(gauge.render()).eq(0);\n $gaugeSvgEl.f7Gauge = gauge;\n Utils.extend(gauge, {\n $gaugeSvgEl: $gaugeSvgEl,\n gaugeSvgEl: $gaugeSvgEl && $gaugeSvgEl[0],\n });\n gauge.$el.append($gaugeSvgEl);\n return gauge;\n };\n\n Gauge.prototype.destroy = function destroy () {\n var gauge = this;\n if (!gauge.$el || gauge.destroyed) { return; }\n gauge.$el.trigger('gauge:beforedestroy', gauge);\n gauge.emit('local::beforeDestroy gaugeBeforeDestroy', gauge);\n gauge.$gaugeSvgEl.remove();\n delete gauge.$el[0].f7Gauge;\n Utils.deleteProps(gauge);\n gauge.destroyed = true;\n };\n\n return Gauge;\n }(Framework7Class));\n\n var Gauge$1 = {\n name: 'gauge',\n static: {\n Gauge: Gauge,\n },\n create: function create() {\n var app = this;\n app.gauge = ConstructorMethods({\n defaultSelector: '.gauge',\n constructor: Gauge,\n app: app,\n domProp: 'f7Gauge',\n });\n app.gauge.update = function update(el, newParams) {\n var $el = $$1(el);\n if ($el.length === 0) { return undefined; }\n var gauge = app.gauge.get(el);\n if (!gauge) { return undefined; }\n gauge.update(newParams);\n return gauge;\n };\n },\n params: {\n gauge: {\n el: null,\n type: 'circle',\n value: 0,\n size: 200,\n bgColor: 'transparent',\n borderBgColor: '#eeeeee',\n borderColor: '#000000',\n borderWidth: 10,\n valueText: null,\n valueTextColor: '#000000',\n valueFontSize: 31,\n valueFontWeight: 500,\n labelText: null,\n labelTextColor: '#888888',\n labelFontSize: 14,\n labelFontWeight: 400,\n },\n },\n on: {\n tabMounted: function tabMounted(tabEl) {\n var app = this;\n $$1(tabEl).find('.gauge-init').each(function (index, el) {\n app.gauge.create(Utils.extend({ el: el }, $$1(el).dataset() || {}));\n });\n },\n tabBeforeRemove: function tabBeforeRemove(tabEl) {\n $$1(tabEl).find('.gauge-init').each(function (index, el) {\n if (el.f7Gauge) { el.f7Gauge.destroy(); }\n });\n },\n pageInit: function pageInit(page) {\n var app = this;\n page.$el.find('.gauge-init').each(function (index, el) {\n app.gauge.create(Utils.extend({ el: el }, $$1(el).dataset() || {}));\n });\n },\n pageBeforeRemove: function pageBeforeRemove(page) {\n page.$el.find('.gauge-init').each(function (index, el) {\n if (el.f7Gauge) { el.f7Gauge.destroy(); }\n });\n },\n },\n };\n\n var ViAd = (function (Framework7Class$$1) {\n function ViAd(app, params) {\n if ( params === void 0 ) params = {};\n\n Framework7Class$$1.call(this, params, [app]);\n var vi = this;\n if (!win.vi) {\n throw new Error('Framework7: vi SDK not found.');\n }\n\n var orientation;\n if (typeof win.orientation !== 'undefined') {\n orientation = win.orientation === -90 || win.orientation === 90 ? 'horizontal' : 'vertical';\n }\n var defaults = Utils.extend(\n {},\n app.params.vi,\n {\n appId: app.id,\n appVer: app.version,\n language: app.language,\n width: app.width,\n height: app.height,\n os: Device.os,\n osVersion: Device.osVersion,\n orientation: orientation,\n }\n );\n\n // Extend defaults with modules params\n vi.useModulesParams(defaults);\n\n vi.params = Utils.extend(defaults, params);\n\n var adParams = {};\n var skipParams = ('on autoplay fallbackOverlay fallbackOverlayText enabled').split(' ');\n Object.keys(vi.params).forEach(function (paramName) {\n if (skipParams.indexOf(paramName) >= 0) { return; }\n var paramValue = vi.params[paramName];\n if ([null, undefined].indexOf(paramValue) >= 0) { return; }\n adParams[paramName] = paramValue;\n });\n\n if (!vi.params.appId) {\n throw new Error('Framework7: \"app.id\" is required to display an ad. Make sure you have specified it on app initialization.');\n }\n if (!vi.params.placementId) {\n throw new Error('Framework7: \"placementId\" is required to display an ad.');\n }\n\n function onResize() {\n var $viFrame = $$1('iframe#viAd');\n if ($viFrame.length === 0) { return; }\n $viFrame\n .css({\n width: ((app.width) + \"px\"),\n height: ((app.height) + \"px\"),\n });\n }\n\n function removeOverlay() {\n if (!vi.$overlayEl) { return; }\n vi.$overlayEl.off('click touchstart');\n vi.$overlayEl.remove();\n }\n function createOverlay(videoEl) {\n if (!videoEl) { return; }\n vi.$overlayEl = $$1((\"\\n
\\n \" + (vi.params.fallbackOverlayText ? (\"
\" + (vi.params.fallbackOverlayText) + \"
\") : '') + \"\\n
\\n
\\n \").trim());\n\n var touchStartTime;\n vi.$overlayEl.on('touchstart', function () {\n touchStartTime = Utils.now();\n });\n vi.$overlayEl.on('click', function () {\n var timeDiff = Utils.now() - touchStartTime;\n if (timeDiff > 300) { return; }\n if (videoEl) {\n videoEl.play();\n removeOverlay();\n return;\n }\n vi.start();\n removeOverlay();\n });\n app.root.append(vi.$overlayEl);\n }\n\n // Create ad\n vi.ad = new win.vi.Ad(adParams);\n\n Utils.extend(vi.ad, {\n onAdReady: function onAdReady() {\n app.on('resize', onResize);\n vi.emit('local::ready');\n if (vi.params.autoplay) {\n vi.start();\n }\n },\n onAdStarted: function onAdStarted() {\n vi.emit('local::started');\n },\n onAdClick: function onAdClick(targetUrl) {\n vi.emit('local::click', targetUrl);\n },\n onAdImpression: function onAdImpression() {\n vi.emit('local::impression');\n },\n onAdStopped: function onAdStopped(reason) {\n app.off('resize', onResize);\n removeOverlay();\n\n vi.emit('local::stopped', reason);\n if (reason === 'complete') {\n vi.emit('local::complete');\n vi.emit('local::completed');\n }\n if (reason === 'userexit') {\n vi.emit('local::userexit');\n }\n vi.destroyed = true;\n },\n onAutoPlayFailed: function onAutoPlayFailed(reason, videoEl) {\n vi.emit('local::autoplayFailed', reason, videoEl);\n if (reason && reason.name && reason.name.indexOf('NotAllowedError') !== -1 && vi.params.fallbackOverlay) {\n createOverlay(videoEl);\n }\n },\n onAdError: function onAdError(msg) {\n removeOverlay();\n app.off('resize', onResize);\n vi.emit('local::error', msg);\n vi.destroyed = true;\n },\n });\n\n vi.init();\n\n Utils.extend(vi, {\n app: app,\n });\n }\n\n if ( Framework7Class$$1 ) ViAd.__proto__ = Framework7Class$$1;\n ViAd.prototype = Object.create( Framework7Class$$1 && Framework7Class$$1.prototype );\n ViAd.prototype.constructor = ViAd;\n\n ViAd.prototype.start = function start () {\n var vi = this;\n if (vi.destroyed) { return; }\n if (vi.ad) { vi.ad.startAd(); }\n };\n\n ViAd.prototype.pause = function pause () {\n var vi = this;\n if (vi.destroyed) { return; }\n if (vi.ad) { vi.ad.pauseAd(); }\n };\n\n ViAd.prototype.resume = function resume () {\n var vi = this;\n if (vi.destroyed) { return; }\n if (vi.ad) { vi.ad.resumeAd(); }\n };\n\n ViAd.prototype.stop = function stop () {\n var vi = this;\n if (vi.destroyed) { return; }\n if (vi.ad) { vi.ad.stopAd(); }\n };\n\n ViAd.prototype.init = function init () {\n var vi = this;\n if (vi.destroyed) { return; }\n if (vi.ad) { vi.ad.initAd(); }\n };\n\n ViAd.prototype.destroy = function destroy () {\n var vi = this;\n vi.destroyed = true;\n vi.emit('local::beforeDestroy');\n Utils.deleteProps(vi);\n };\n\n return ViAd;\n }(Framework7Class));\n\n var Vi = {\n name: 'vi',\n params: {\n vi: {\n enabled: false,\n autoplay: true,\n fallbackOverlay: true,\n fallbackOverlayText: 'Please watch this ad',\n showMute: true,\n startMuted: (Device.ios || Device.android) && !Device.cordova,\n appId: null,\n appVer: null,\n language: null,\n width: null,\n height: null,\n placementId: 'pltd4o7ibb9rc653x14',\n placementType: 'interstitial',\n videoSlot: null,\n showProgress: true,\n showBranding: true,\n os: null,\n osVersion: null,\n orientation: null,\n age: null,\n gender: null,\n advertiserId: null,\n latitude: null,\n longitude: null,\n accuracy: null,\n storeId: null,\n ip: null,\n manufacturer: null,\n model: null,\n connectionType: null,\n connectionProvider: null,\n },\n },\n create: function create() {\n var app = this;\n app.vi = {\n sdkReady: false,\n createAd: function createAd(adParams) {\n return new ViAd(app, adParams);\n },\n loadSdk: function loadSdk() {\n if (app.vi.skdReady) { return; }\n var script = doc.createElement('script');\n script.onload = function onload() {\n app.emit('viSdkReady');\n app.vi.skdReady = true;\n };\n script.src = 'https://c.vi-serve.com/viadshtml/vi.min.js';\n $$1('head').append(script);\n },\n };\n },\n on: {\n init: function init() {\n var app = this;\n if (app.params.vi.enabled || (app.passedParams.vi && app.passedParams.vi.enabled !== false)) { app.vi.loadSdk(); }\n },\n },\n };\n\n var Elevation = {\n name: 'elevation',\n };\n\n var Typography = {\n name: 'typography',\n };\n\n {\n if (typeof window !== 'undefined') {\n // Template7\n if (!window.Template7) { window.Template7 = Template7; }\n\n // Dom7\n if (!window.Dom7) { window.Dom7 = $$1; }\n }\n }\n\n // Install Core Modules & Components\n Framework7.use([\n DeviceModule,\n SupportModule,\n UtilsModule,\n ResizeModule,\n RequestModule,\n TouchModule,\n ClicksModule,\n Router$1,\n HistoryModule,\n StorageModule,\n Statusbar$1,\n View$1,\n Navbar$1,\n Toolbar$1,\n Subnavbar,\n TouchRipple$1,\n Modal$1,\n Dialog$1,\n Popup$1,\n LoginScreen$1,\n Popover$1,\n Actions$1,\n Sheet$1,\n Toast$1,\n Preloader$1,\n Progressbar$1,\n Sortable$1,\n Swipeout$1,\n Accordion$1,\n VirtualList$1,\n ListIndex$1,\n Timeline,\n Tabs,\n Panel$1,\n Card,\n Chip,\n Form,\n Input$1,\n Checkbox,\n Radio,\n Toggle$1,\n Range$1,\n Stepper$1,\n SmartSelect$1,\n Grid,\n Calendar$1,\n Picker$1,\n InfiniteScroll$1,\n PullToRefresh$1,\n Lazy$1,\n DataTable$1,\n Fab$1,\n Searchbar$1,\n Messages$1,\n Messagebar$1,\n Swiper$1,\n PhotoBrowser$1,\n Notification$1,\n Autocomplete$1,\n Tooltip$1,\n Gauge$1,\n Vi,\n Elevation,\n Typography\n ]);\n\n return Framework7;\n\n})));\n"]}
\ No newline at end of file
diff --git a/packages/core/package.json b/packages/core/package.json
index ccfd240323..9821f14cb6 100644
--- a/packages/core/package.json
+++ b/packages/core/package.json
@@ -1,6 +1,6 @@
{
"name": "framework7",
- "version": "3.0.6",
+ "version": "3.0.7",
"description": "Full featured mobile HTML framework for building iOS & Android apps",
"main": "js/framework7.js",
"jsnext:main": "framework7.esm.js",
diff --git a/packages/react/framework7-react.esm.js b/packages/react/framework7-react.esm.js
index a2d4b494e1..89c518b696 100644
--- a/packages/react/framework7-react.esm.js
+++ b/packages/react/framework7-react.esm.js
@@ -1,5 +1,5 @@
/**
- * Framework7 React 3.0.6
+ * Framework7 React 3.0.7
* Build full featured iOS & Android apps using Framework7 & React
* http://framework7.io/react/
*
diff --git a/packages/react/framework7-react.js b/packages/react/framework7-react.js
index d950427627..116171f6e5 100644
--- a/packages/react/framework7-react.js
+++ b/packages/react/framework7-react.js
@@ -1,5 +1,5 @@
/**
- * Framework7 React 3.0.6
+ * Framework7 React 3.0.7
* Build full featured iOS & Android apps using Framework7 & React
* http://framework7.io/react/
*
@@ -10552,7 +10552,7 @@
};
/**
- * Framework7 React 3.0.6
+ * Framework7 React 3.0.7
* Build full featured iOS & Android apps using Framework7 & React
* http://framework7.io/react/
*
@@ -10713,19 +10713,6 @@
if (self._f7router) { return self._f7router; }
var router;
- // eslint-disable-next-line
- if (COMPILER === 'vue') {
- var parent = self;
- while (parent && !router) {
- if (parent._f7router) { router = parent._f7router; }
- else if (parent.f7View) {
- router = parent.f7View.router;
- } else if (parent.$refs && parent.$refs.el && parent.$refs.el.f7View) {
- router = parent.$refs.el.f7View.router;
- }
- parent = parent.$parent;
- }
- }
return router;
},
set: function set(value) {
diff --git a/packages/react/framework7-react.min.js b/packages/react/framework7-react.min.js
index 38ef811c43..81cc07bb72 100644
--- a/packages/react/framework7-react.min.js
+++ b/packages/react/framework7-react.min.js
@@ -1,5 +1,5 @@
/**
- * Framework7 React 3.0.6
+ * Framework7 React 3.0.7
* Build full featured iOS & Android apps using Framework7 & React
* http://framework7.io/react/
*
@@ -9,5 +9,5 @@
*
* Released on: July 20, 2018
*/
-!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("react")):"function"==typeof define&&define.amd?define(["react"],t):e.Framework7React=t(e.React)}(this,function(e){"use strict";e=e&&e.hasOwnProperty("default")?e.default:e;var t={noUndefinedProps:function(e){var t={};return Object.keys(e).forEach(function(o){void 0!==e[o]&&(t[o]=e[o])}),t},isTrueProp:function(e){return!0===e||""===e},isStringProp:function(e){return"string"==typeof e&&""!==e},isObject:function(e){return"object"==typeof e&&null!==e&&e.constructor&&e.constructor===Object},now:function(){return Date.now()},extend:function(){for(var e,o=[],n=arguments.length;n--;)o[n]=arguments[n];var r,s,i=!0;"boolean"==typeof o[0]?(i=(e=o)[0],r=e[1],o.splice(0,2),s=o):(r=o[0],o.splice(0,1),s=o);for(var a=0;a
=0;e.defaultProps||(e.defaultProps={}),"function"!=typeof r.default||l?e.defaultProps[n]=r.default:e.defaultProps[n]=r.default()}})}var p=function(r){function s(e,t){r.call(this,e,t)}r&&(s.__proto__=r),s.prototype=Object.create(r&&r.prototype),s.prototype.constructor=s;var i={slots:{configurable:!0}};return s.prototype.render=function(){var n=this.props,r=n.className,s=n.id,i=n.style,a=t.classNames(r,"accordion-item-content",o.colorClasses(n));return e.createElement("div",{id:s,style:i,className:a},this.slots.default)},i.slots.get=function(){return n(this.props)},Object.defineProperties(s.prototype,i),s}(e.Component);function c(e){for(var t,o=e._reactInternalFiber.child;!t&&o;)o.stateNode&&o.stateNode instanceof window.HTMLElement?t=o.stateNode:o=o.child;return t}function u(e,t){for(var o=[],n=arguments.length-2;n-- >0;)o[n]=arguments[n+2];var r=e;t&&t.trim().length&&"string"==typeof t&&t.trim().split(" ").forEach(function(e){var t,n=(e||"").trim();if(n){var s="on"+(n=n.charAt(0).toUpperCase()+n.slice(1));r.props[s]&&(t=r.props)[s].apply(t,o)}})}l(p,Object.assign({id:[String,Number]},o.colorProps)),p.displayName="f7-accordion-content";var d=function(r){function s(e,t){r.call(this,e,t)}r&&(s.__proto__=r),s.prototype=Object.create(r&&r.prototype),s.prototype.constructor=s;var i={slots:{configurable:!0},el:{configurable:!0}};return s.prototype.onOpen=function(e){this.dispatchEvent("accordionOpen accordion:open",e)},s.prototype.onOpened=function(e){this.dispatchEvent("accordionOpened accordion:opened",e)},s.prototype.onClose=function(e){this.dispatchEvent("accordionClose accordion:close",e)},s.prototype.onClosed=function(e){this.dispatchEvent("accordionClosed accordion:closed",e)},s.prototype.render=function(){var n=this.props,r=n.className,s=n.id,i=n.style,a=n.opened,l=t.classNames(r,"accordion-item",{"accordion-item-opened":a},o.colorClasses(n));return e.createElement("div",{id:s,style:i,className:l},this.slots.default)},s.prototype.componentWillUnmount=function(){var e=this,t=e.el;t&&(t.removeEventListener("accordion:open",e.onOpenBound),t.removeEventListener("accordion:opened",e.onOpenedBound),t.removeEventListener("accordion:close",e.onCloseBound),t.removeEventListener("accordion:closed",e.onClosedBound))},s.prototype.componentDidMount=function(){var e=this,t=e.el;t&&(e.onOpenBound=e.onOpen.bind(e),e.onOpenedBound=e.onOpened.bind(e),e.onCloseBound=e.onClose.bind(e),e.onClosedBound=e.onClosed.bind(e),t.addEventListener("accordion:open",e.onOpenBound),t.addEventListener("accordion:opened",e.onOpenedBound),t.addEventListener("accordion:close",e.onCloseBound),t.addEventListener("accordion:closed",e.onClosedBound))},i.slots.get=function(){return n(this.props)},i.el.get=function(){return c(this)},s.prototype.dispatchEvent=function(e){for(var t=[],o=arguments.length-1;o-- >0;)t[o]=arguments[o+1];return u.apply(void 0,[this,e].concat(t))},Object.defineProperties(s.prototype,i),s}(e.Component);l(d,Object.assign({id:[String,Number],opened:Boolean},o.colorProps)),d.displayName="f7-accordion-item";var f=function(r){function s(e,t){r.call(this,e,t)}r&&(s.__proto__=r),s.prototype=Object.create(r&&r.prototype),s.prototype.constructor=s;var i={slots:{configurable:!0}};return s.prototype.render=function(){var n=this.props,r=n.className,s=n.id,i=n.style,a=t.classNames(r,"accordion-item-toggle",o.colorClasses(n));return e.createElement("div",{id:s,style:i,className:a},this.slots.default)},i.slots.get=function(){return n(this.props)},Object.defineProperties(s.prototype,i),s}(e.Component);l(f,Object.assign({id:[String,Number]},o.colorProps)),f.displayName="f7-accordion-toggle";var h=function(r){function s(e,t){r.call(this,e,t)}r&&(s.__proto__=r),s.prototype=Object.create(r&&r.prototype),s.prototype.constructor=s;var i={slots:{configurable:!0}};return s.prototype.render=function(){var n=this.props,r=n.className,s=n.id,i=n.style,a=t.classNames(r,"accordion-list",o.colorClasses(n));return e.createElement("div",{id:s,style:i,className:a},this.slots.default)},i.slots.get=function(){return n(this.props)},Object.defineProperties(s.prototype,i),s}(e.Component);l(h,Object.assign({id:[String,Number]},o.colorProps)),h.displayName="f7-accordion";var m=function(r){function s(e,t){r.call(this,e,t),this.__reactRefs={}}r&&(s.__proto__=r),s.prototype=Object.create(r&&r.prototype),s.prototype.constructor=s;var i={slots:{configurable:!0},refs:{configurable:!0}};return s.prototype.onClick=function(e){var t=this,o=t.$$,n=t.refs.el;t.props.close&&t.$f7&&n&&t.$f7.actions.close(o(n).parents(".actions-modal")),t.dispatchEvent("click",e)},s.prototype.render=function(){var n,r=this,s=this,i=s.props,a=i.id,l=i.className,p=i.style,c=i.bold;s.slots.media&&s.slots.media.length&&(n=e.createElement("div",{className:"actions-button-media"},this.slots.media));var u=t.classNames(l,{"actions-button":!0,"actions-button-bold":c},o.colorClasses(i));return e.createElement("div",{id:a,style:p,className:u,onClick:s.onClick.bind(s),ref:function(e){r.__reactRefs.el=e}},n,e.createElement("div",{className:"actions-button-text"},this.slots.default))},i.slots.get=function(){return n(this.props)},s.prototype.dispatchEvent=function(e){for(var t=[],o=arguments.length-1;o-- >0;)t[o]=arguments[o+1];return u.apply(void 0,[this,e].concat(t))},i.refs.get=function(){return this.__reactRefs},i.refs.set=function(e){},Object.defineProperties(s.prototype,i),s}(e.Component);l(m,Object.assign({id:[String,Number],bold:Boolean,close:{type:Boolean,default:!0}},o.colorProps)),m.displayName="f7-actions-button";var b=function(r){function s(e,t){r.call(this,e,t)}r&&(s.__proto__=r),s.prototype=Object.create(r&&r.prototype),s.prototype.constructor=s;var i={slots:{configurable:!0}};return s.prototype.render=function(){var n=this.props,r=n.className,s=n.id,i=n.style,a=t.classNames(r,"actions-group",o.colorClasses(n));return e.createElement("div",{id:s,style:i,className:a},this.slots.default)},i.slots.get=function(){return n(this.props)},Object.defineProperties(s.prototype,i),s}(e.Component);l(b,Object.assign({id:[String,Number]},o.colorProps)),b.displayName="f7-actions-group";var g=function(r){function s(e,t){r.call(this,e,t)}r&&(s.__proto__=r),s.prototype=Object.create(r&&r.prototype),s.prototype.constructor=s;var i={slots:{configurable:!0}};return s.prototype.onClick=function(e){this.dispatchEvent("click",e)},s.prototype.render=function(){var n=this.props,r=n.className,s=n.id,i=n.style,a=n.bold,l=t.classNames(r,"actions-label",{"actions-button-bold":a},o.colorClasses(n));return e.createElement("div",{id:s,style:i,className:l,onClick:this.onClick.bind(this)},this.slots.default)},i.slots.get=function(){return n(this.props)},s.prototype.dispatchEvent=function(e){for(var t=[],o=arguments.length-1;o-- >0;)t[o]=arguments[o+1];return u.apply(void 0,[this,e].concat(t))},Object.defineProperties(s.prototype,i),s}(e.Component);function v(e,t,o,n,r){var s,i;r&&(0===t.indexOf("props")?(s=e.props,i=o):0===t.indexOf("state")&&(s=e.state,i=n),t.slice(5).split(".").filter(function(e){return e}).forEach(function(e){void 0!==s&&null!==s&&(s=s[e]),void 0!==i&&null!==i&&(i=i[e])}),i!==s&&r&&r(s,i))}l(g,Object.assign({id:[String,Number],bold:Boolean},o.colorProps)),g.displayName="f7-actions-label";var y=function(r){function s(e,t){r.call(this,e,t),this.__reactRefs={}}r&&(s.__proto__=r),s.prototype=Object.create(r&&r.prototype),s.prototype.constructor=s;var i={slots:{configurable:!0},el:{configurable:!0},refs:{configurable:!0}};return s.prototype.onOpen=function(e){this.dispatchEvent("actions:open actionsOpen",e)},s.prototype.onOpened=function(e){this.dispatchEvent("actions:opened actionsOpened",e)},s.prototype.onClose=function(e){this.dispatchEvent("actions:close actionsClose",e)},s.prototype.onClosed=function(e){this.dispatchEvent("actions:closed actionsClosed",e)},s.prototype.open=function(e){if(this.$f7)return this.$f7.actions.open(this.refs.el,e)},s.prototype.close=function(e){if(this.$f7)return this.$f7.actions.close(this.refs.el,e)},s.prototype.render=function(){var n=this,r=this.props,s=r.className,i=r.id,a=r.style,l=r.grid,p=t.classNames(s,"actions-modal",{"actions-grid":l},o.colorClasses(r));return e.createElement("div",{id:i,style:a,ref:function(e){n.__reactRefs.el=e},className:p},this.slots.default)},s.prototype.componentWillUnmount=function(){var e=this;e.f7Actions&&e.f7Actions.destroy();var t=e.el;t&&(t.removeEventListener("actions:open",e.onOpenBound),t.removeEventListener("actions:opened",e.onOpenedBound),t.removeEventListener("actions:close",e.onCloseBound),t.removeEventListener("actions:closed",e.onClosedBound))},s.prototype.componentDidMount=function(){var e=this,t=e.refs.el;if(t){var o=e.props,n=o.grid,r=o.target,s=o.convertToPopover,i=o.forceToPopover,a=o.opened;e.onOpenBound=e.onOpen.bind(e),e.onOpenedBound=e.onOpened.bind(e),e.onCloseBound=e.onClose.bind(e),e.onClosedBound=e.onClosed.bind(e),t.addEventListener("actions:open",e.onOpenBound),t.addEventListener("actions:opened",e.onOpenedBound),t.addEventListener("actions:close",e.onCloseBound),t.addEventListener("actions:closed",e.onClosedBound),e.$f7ready(function(){var t={el:e.refs.el,grid:n};r&&(t.targetEl=r),"convertToPopover"in o&&(t.convertToPopover=s),"forceToPopover"in o&&(t.forceToPopover=i),e.f7Actions=e.$f7.actions.create(t),a&&e.f7Actions.open(!1)})}},i.slots.get=function(){return n(this.props)},i.el.get=function(){return c(this)},s.prototype.dispatchEvent=function(e){for(var t=[],o=arguments.length-1;o-- >0;)t[o]=arguments[o+1];return u.apply(void 0,[this,e].concat(t))},i.refs.get=function(){return this.__reactRefs},i.refs.set=function(e){},s.prototype.componentDidUpdate=function(e,t){var o=this;v(this,"props.opened",e,t,function(e){var t=o;t.f7Actions&&(e?t.f7Actions.open():t.f7Actions.close())})},Object.defineProperties(s.prototype,i),s}(e.Component);l(y,Object.assign({id:[String,Number],opened:Boolean,grid:Boolean,convertToPopover:Boolean,forceToPopover:Boolean,target:[String,Object]},o.colorProps)),y.displayName="f7-actions";var B={listeners:{},on:function(e,t){e.split(" ").forEach(function(e){B.listeners[e]||(B.listeners[e]=[]),B.listeners[e].push(t)})},off:function(e,t){e.split(" ").forEach(function(e){B.listeners[e]&&(void 0===t?B.listeners[e]=[]:B.listeners[e].forEach(function(o,n){o===t&&B.listeners[e].splice(n,1)}))})},once:function(e,t){"function"==typeof t&&B.on(e,function o(){for(var n=[],r=arguments.length;r--;)n[r]=arguments[r];t.apply(void 0,n),B.off(e,o)})},emit:function(e){for(var t=[],o=arguments.length-1;o-- >0;)t[o]=arguments[o+1];e.split(" ").forEach(function(e){if(B.listeners&&B.listeners[e]){var o=[];B.listeners[e].forEach(function(e){o.push(e)}),o.forEach(function(e){e.apply(void 0,t)})}})}},E={instance:null,Framework7:null,init:function(e,o,n){void 0===o&&(o={});var r=t.extend({},o,{root:e});n&&n.length&&!r.routes&&(r.routes=n),E.instance=new E.Framework7(r),B.emit("ready",E.instance)},ready:function(e){e&&(E.instance?e(E.instance):B.once("ready",e))},routers:{views:[],tabs:[],modals:null}},S=function(t){function o(e,o){t.call(this,e,o),this.__reactRefs={},this.state={modals:[]}}t&&(o.__proto__=t),o.prototype=Object.create(t&&t.prototype),o.prototype.constructor=o;var n={refs:{configurable:!0}};return o.prototype.render=function(){var t=this;return e.createElement("div",{ref:function(e){t.__reactRefs.el=e},className:"framework7-modals"},this.state.modals.map(function(t){var o=t.component;return e.createElement(o,Object.assign({key:t.id},t.props))}))},o.prototype.componentDidMount=function(){var e=this,t=e.refs.el;e.setState({modals:[]}),e.routerData={el:t,component:e},E.routers.modals=e.routerData},o.prototype.componentWillUnmount=function(){this.routerData&&(E.routers.modals=null,this.routerData=null,delete this.routerData)},o.prototype.componentDidUpdate=function(){this.routerData&&B.emit("modalsRouterDidUpdate",this.routerData)},n.refs.get=function(){return this.__reactRefs},n.refs.set=function(e){},Object.defineProperties(o.prototype,n),o}(e.Component);S.displayName="f7-routable-modals";var C=function(r){function s(e,t){r.call(this,e,t),this.__reactRefs={},this.state={modals:[]}}r&&(s.__proto__=r),s.prototype=Object.create(r&&r.prototype),s.prototype.constructor=s;var i={slots:{configurable:!0},refs:{configurable:!0}};return s.prototype.render=function(){var n=this,r=this.props,s=r.id,i=r.style,a=r.className,l=t.classNames(a,"framework7-root",o.colorClasses(r));return e.createElement("div",{ref:function(e){n.__reactRefs.el=e},id:s||"framework7-root",style:i,className:l},this.slots.default,e.createElement(S,null))},s.prototype.componentDidMount=function(){var e=this.props,t=e.params;void 0===t&&(t={});var o=e.routes,n=this.refs.el,r=n.parentNode;r&&r!==document.body&&r.parentNode===document.body&&(r.style.height="100%"),E.init(n,t,o)},i.slots.get=function(){return n(this.props)},i.refs.get=function(){return this.__reactRefs},i.refs.set=function(e){},Object.defineProperties(s.prototype,i),s}(e.Component);l(C,Object.assign({id:[String,Number],params:Object,routes:Array},o.colorProps)),C.displayName="f7-app";var N=function(r){function s(e,t){r.call(this,e,t)}r&&(s.__proto__=r),s.prototype=Object.create(r&&r.prototype),s.prototype.constructor=s;var i={slots:{configurable:!0}};return s.prototype.render=function(){var n=this.props,r=n.className,s=n.id,i=n.style,a=t.classNames(r,"badge",o.colorClasses(n));return e.createElement("span",{id:s,style:i,className:a},this.slots.default)},i.slots.get=function(){return n(this.props)},Object.defineProperties(s.prototype,i),s}(e.Component);l(N,Object.assign({id:[String,Number]},o.colorProps)),N.displayName="f7-badge";var _=function(r){function s(e,t){r.call(this,e,t)}r&&(s.__proto__=r),s.prototype=Object.create(r&&r.prototype),s.prototype.constructor=s;var i={slots:{configurable:!0}};return s.prototype.render=function(){var n=this.props,r=n.className,s=n.id,i=n.style,a=t.classNames(r,"block-footer",o.colorClasses(n));return e.createElement("div",{id:s,style:i,className:a},this.slots.default)},i.slots.get=function(){return n(this.props)},Object.defineProperties(s.prototype,i),s}(e.Component);l(_,Object.assign({id:[String,Number]},o.colorProps)),_.displayName="f7-block-footer";var k=function(r){function s(e,t){r.call(this,e,t)}r&&(s.__proto__=r),s.prototype=Object.create(r&&r.prototype),s.prototype.constructor=s;var i={slots:{configurable:!0}};return s.prototype.render=function(){var n=this.props,r=n.className,s=n.id,i=n.style,a=t.classNames(r,"block-header",o.colorClasses(n));return e.createElement("div",{id:s,style:i,className:a},this.slots.default)},i.slots.get=function(){return n(this.props)},Object.defineProperties(s.prototype,i),s}(e.Component);l(k,Object.assign({id:[String,Number]},o.colorProps)),k.displayName="f7-block-header";var w=function(r){function s(e,t){r.call(this,e,t)}r&&(s.__proto__=r),s.prototype=Object.create(r&&r.prototype),s.prototype.constructor=s;var i={slots:{configurable:!0}};return s.prototype.render=function(){var n=this.props,r=n.className,s=n.id,i=n.style,a=t.classNames(r,"block-title",o.colorClasses(n));return e.createElement("div",{id:s,style:i,className:a},this.slots.default)},i.slots.get=function(){return n(this.props)},Object.defineProperties(s.prototype,i),s}(e.Component);l(w,Object.assign({id:[String,Number]},o.colorProps)),w.displayName="f7-block-title";var O=function(r){function s(e,t){r.call(this,e,t)}r&&(s.__proto__=r),s.prototype=Object.create(r&&r.prototype),s.prototype.constructor=s;var i={slots:{configurable:!0},el:{configurable:!0}};return s.prototype.onTabShow=function(e){this.dispatchEvent("tabShow tab:show",e)},s.prototype.onTabHide=function(e){this.dispatchEvent("tabShow tab:hide",e)},s.prototype.render=function(){var n=this.props,r=n.className,s=n.inset,i=n.strong,a=n.accordionList,l=n.tabletInset,p=n.tabs,c=n.tab,u=n.tabActive,d=n.noHairlines,f=n.noHairlinesIos,h=n.noHairlinesMd,m=n.id,b=n.style,g=t.classNames(r,"block",{inset:s,"block-strong":i,"accordion-list":a,"tablet-inset":l,tabs:p,tab:c,"tab-active":u,"no-hairlines":d,"no-hairlines-md":h,"no-hairlines-ios":f},o.colorClasses(n));return e.createElement("div",{id:m,style:b,className:g},this.slots.default)},s.prototype.componentWillUnmount=function(){var e=this.el;e&&(e.removeEventListener("tab:show",this.onTabShowBound),e.removeEventListener("tab:hide",this.onTabHideBound))},s.prototype.componentDidMount=function(){var e=this.el;e&&(this.onTabShowBound=this.onTabShow.bind(this),this.onTabHideBound=this.onTabHide.bind(this),e.addEventListener("tab:show",this.onTabShowBound),e.addEventListener("tab:hide",this.onTabHideBound))},i.slots.get=function(){return n(this.props)},i.el.get=function(){return c(this)},s.prototype.dispatchEvent=function(e){for(var t=[],o=arguments.length-1;o-- >0;)t[o]=arguments[o+1];return u.apply(void 0,[this,e].concat(t))},Object.defineProperties(s.prototype,i),s}(e.Component);l(O,Object.assign({id:[String,Number],inset:Boolean,tabletInset:Boolean,strong:Boolean,tabs:Boolean,tab:Boolean,tabActive:Boolean,accordionList:Boolean,noHairlines:Boolean,noHairlinesMd:Boolean,noHairlinesIos:Boolean},o.colorProps)),O.displayName="f7-block";var P=function(r){function s(e,t){r.call(this,e,t),this.__reactRefs={}}r&&(s.__proto__=r),s.prototype=Object.create(r&&r.prototype),s.prototype.constructor=s;var i={sizeComputed:{configurable:!0},iconTextComputed:{configurable:!0},classes:{configurable:!0},slots:{configurable:!0},refs:{configurable:!0}};return i.sizeComputed.get=function(){var e=this.props.size;return"number"!=typeof e&&parseFloat(e)!==1*e||(e+="px"),e},i.iconTextComputed.get=function(){var e=this.props,t=e.material,o=e.f7,n=e.ifMd,r=e.ifIos,s=e.md,i=e.ios,a=t||o,l=n||s,p=r||i;return l&&this.$theme.md&&(l.indexOf("material:")>=0||l.indexOf("f7:")>=0)?a=l.split(":")[1]:p&&this.$theme.ios&&(p.indexOf("material:")>=0||p.indexOf("f7:")>=0)&&(a=p.split(":")[1]),a},i.classes.get=function(){var e={icon:!0},n=this.props,r=n.ifMd,s=n.ifIos,i=n.material,a=n.f7,l=n.fa,p=n.ion,c=n.icon,u=n.md,d=n.ios,f=n.className,h=r||u,m=s||d;if(h||m){var b=(this.$theme.md?h:m).split(":"),g=b[0],v=b[1];"material"!==g&&"fa"!==g&&"f7"!==g||(e.fa="fa"===g,e["material-icons"]="material"===g,e["f7-icons"]="f7"===g),"fa"!==g&&"ion"!==g||(e[g+"-"+v]=!0),"icon"===g&&(e[v]=!0)}else e={icon:!0,"material-icons":i,"f7-icons":a,fa:l},p&&(e["ion-"+p]=!0),l&&(e["fa-"+l]=!0),c&&(e[c]=!0);return t.classNames(f,e,o.colorClasses(n))},s.prototype.render=function(){var o=this,n=this.props,r=n.id,s=n.style;return e.createElement("i",{ref:function(e){o.__reactRefs.el=e},id:r,style:t.extend({fontSize:this.sizeComputed},s),className:this.classes},this.iconTextComputed,this.slots.default)},s.prototype.componentWillUnmount=function(){var e=this;e.f7Tooltip&&e.f7Tooltip.destroy&&(e.f7Tooltip.destroy(),e.f7Tooltip=null,delete e.f7Tooltip)},s.prototype.componentDidMount=function(){var e=this,t=e.refs.el;if(t){var o=e.props.tooltip;o&&e.$f7ready(function(n){e.f7Tooltip=n.tooltip.create({targetEl:t,text:o})})}},i.slots.get=function(){return n(this.props)},i.refs.get=function(){return this.__reactRefs},i.refs.set=function(e){},s.prototype.componentDidUpdate=function(e,t){var o=this;v(this,"props.tooltip",e,t,function(e){var t=o;e&&t.f7Tooltip&&t.f7Tooltip.setText(e)})},Object.defineProperties(s.prototype,i),s}(e.Component);l(P,Object.assign({id:[String,Number],material:String,f7:String,ion:String,fa:String,icon:String,ifMd:String,ifIos:String,ios:String,md:String,tooltip:String,size:[String,Number]},o.colorProps)),P.displayName="f7-icon";var L=function(r){function s(e,t){r.call(this,e,t),this.__reactRefs={}}r&&(s.__proto__=r),s.prototype=Object.create(r&&r.prototype),s.prototype.constructor=s;var i={attrs:{configurable:!0},classes:{configurable:!0},slots:{configurable:!0},refs:{configurable:!0}};return s.prototype.onClick=function(e){this.dispatchEvent("click",e)},i.attrs.get=function(){var e=this.props,n=e.href,r=e.target,s=e.tabLink,i=n;return!0===n&&(i="#"),!1===n&&(i=void 0),t.extend({href:i,target:r,"data-tab":t.isStringProp(s)&&s||void 0},o.linkRouterAttrs(e),o.linkActionsAttrs(e))},i.classes.get=function(){var e=this.props,n=e.noFastclick,r=e.noFastClick,s=e.tabLink,i=e.tabLinkActive,a=e.round,l=e.roundIos,p=e.roundMd,c=e.fill,u=e.fillIos,d=e.fillMd,f=e.big,h=e.bigIos,m=e.bigMd,b=e.small,g=e.smallIos,v=e.smallMd,y=e.raised,B=e.active,E=e.outline,S=e.disabled,C=e.className;return t.classNames(C,"button",{"tab-link":s||""===s,"tab-link-active":i,"no-fastclick":n||r,"button-round":a,"button-round-ios":l,"button-round-md":p,"button-fill":c,"button-fill-ios":u,"button-fill-md":d,"button-big":f,"button-big-ios":h,"button-big-md":m,"button-small":b,"button-small-ios":g,"button-small-md":v,"button-raised":y,"button-active":B,"button-outline":E,disabled:S},o.colorClasses(e),o.linkRouterClasses(e),o.linkActionsClasses(e))},s.prototype.render=function(){var t,o,n=this,r=this,s=r.props,i=s.text,a=s.icon,l=s.iconMaterial,p=s.iconIon,c=s.iconFa,u=s.iconF7,d=s.iconIfMd,f=s.iconIfIos,h=s.iconMd,m=s.iconIos,b=s.iconColor,g=s.iconSize,v=s.id,y=s.style;i&&(o=e.createElement("span",null,i));var B=d||h,E=f||m;return(a||l||p||c||u||B||E)&&(t=e.createElement(P,{material:l,ion:p,fa:c,f7:u,icon:a,md:B,ios:E,color:b,size:g})),e.createElement("a",Object.assign({ref:function(e){n.__reactRefs.el=e},id:v,style:y,className:r.classes,onClick:r.onClick.bind(r)},r.attrs),t,o,this.slots.default)},s.prototype.componentWillUnmount=function(){var e=this;e.f7Tooltip&&e.f7Tooltip.destroy&&(e.f7Tooltip.destroy(),e.f7Tooltip=null,delete e.f7Tooltip)},s.prototype.componentDidMount=function(){var e=this,t=e.props.tooltip;t&&e.$f7ready(function(o){e.f7Tooltip=o.tooltip.create({targetEl:e.refs.el,text:t})})},i.slots.get=function(){return n(this.props)},s.prototype.dispatchEvent=function(e){for(var t=[],o=arguments.length-1;o-- >0;)t[o]=arguments[o+1];return u.apply(void 0,[this,e].concat(t))},i.refs.get=function(){return this.__reactRefs},i.refs.set=function(e){},s.prototype.componentDidUpdate=function(e,t){var o=this;v(this,"props.tooltip",e,t,function(e){var t=o;e&&t.f7Tooltip&&t.f7Tooltip.setText(e)})},Object.defineProperties(s.prototype,i),s}(e.Component);l(L,Object.assign({id:[String,Number],noFastclick:Boolean,noFastClick:Boolean,text:String,tabLink:[Boolean,String],tabLinkActive:Boolean,href:{type:[String,Boolean],default:"#"},target:String,round:Boolean,roundMd:Boolean,roundIos:Boolean,fill:Boolean,fillMd:Boolean,fillIos:Boolean,big:Boolean,bigMd:Boolean,bigIos:Boolean,small:Boolean,smallMd:Boolean,smallIos:Boolean,raised:Boolean,outline:Boolean,active:Boolean,disabled:Boolean,tooltip:String},o.colorProps,o.linkIconProps,o.linkRouterProps,o.linkActionsProps)),L.displayName="f7-button";var j=function(r){function s(e,t){r.call(this,e,t)}r&&(s.__proto__=r),s.prototype=Object.create(r&&r.prototype),s.prototype.constructor=s;var i={slots:{configurable:!0}};return s.prototype.render=function(){var n=this.props,r=n.id,s=n.className,i=n.style,a=n.padding,l=t.classNames(s,"card-content",{"card-content-padding":a},o.colorClasses(n));return e.createElement("div",{id:r,style:i,className:l},this.slots.default)},i.slots.get=function(){return n(this.props)},Object.defineProperties(s.prototype,i),s}(e.Component);l(j,Object.assign({id:[String,Number],padding:{type:Boolean,default:!0}},o.colorProps)),j.displayName="f7-card-content";var I=function(r){function s(e,t){r.call(this,e,t)}r&&(s.__proto__=r),s.prototype=Object.create(r&&r.prototype),s.prototype.constructor=s;var i={slots:{configurable:!0}};return s.prototype.render=function(){var n=this.props,r=n.className,s=n.id,i=n.style,a=t.classNames(r,"card-footer",o.colorClasses(n));return e.createElement("div",{id:s,style:i,className:a},this.slots.default)},i.slots.get=function(){return n(this.props)},Object.defineProperties(s.prototype,i),s}(e.Component);l(I,Object.assign({id:[String,Number]},o.colorProps)),I.displayName="f7-card-footer";var M=function(r){function s(e,t){r.call(this,e,t)}r&&(s.__proto__=r),s.prototype=Object.create(r&&r.prototype),s.prototype.constructor=s;var i={slots:{configurable:!0}};return s.prototype.render=function(){var n=this.props,r=n.className,s=n.id,i=n.style,a=t.classNames(r,"card-header",o.colorClasses(n));return e.createElement("div",{id:s,style:i,className:a},this.slots.default)},i.slots.get=function(){return n(this.props)},Object.defineProperties(s.prototype,i),s}(e.Component);l(M,Object.assign({id:[String,Number]},o.colorProps)),M.displayName="f7-card-header";var x=function(r){function s(e,t){r.call(this,e,t)}r&&(s.__proto__=r),s.prototype=Object.create(r&&r.prototype),s.prototype.constructor=s;var i={slots:{configurable:!0}};return s.prototype.render=function(){var n,r,s,i=this,a=i.props,l=a.className,p=a.id,c=a.style,u=a.title,d=a.content,f=a.footer,h=a.padding,m=a.outline,b=t.classNames(l,"card",{"card-outline":m},o.colorClasses(a));return(u||i.slots&&i.slots.header)&&(n=e.createElement(M,null,u,this.slots.header)),(d||i.slots&&i.slots.content)&&(r=e.createElement(j,{padding:h},d,this.slots.content)),(f||i.slots&&i.slots.footer)&&(s=e.createElement(I,null,f,this.slots.footer)),e.createElement("div",{id:p,style:c,className:b},n,r,s,this.slots.default)},i.slots.get=function(){return n(this.props)},Object.defineProperties(s.prototype,i),s}(e.Component);l(x,Object.assign({id:[String,Number],title:[String,Number],content:[String,Number],footer:[String,Number],outline:Boolean,padding:{type:Boolean,default:!0}},o.colorProps)),x.displayName="f7-card";var R=function(r){function s(e,t){r.call(this,e,t)}r&&(s.__proto__=r),s.prototype=Object.create(r&&r.prototype),s.prototype.constructor=s;var i={classes:{configurable:!0},slots:{configurable:!0}};return s.prototype.onChange=function(e){this.dispatchEvent("change",e)},i.classes.get=function(){var e=this.props,n=e.className,r=e.disabled;return t.classNames(n,{checkbox:!0,disabled:r},o.colorClasses(e))},s.prototype.render=function(){var t,o=this.props,n=o.name,r=o.value,s=o.disabled,i=o.readonly,a=o.checked,l=o.defaultChecked,p=o.id,c=o.style;t=e.createElement("input",{type:"checkbox",name:n,value:r,disabled:s,readOnly:i,checked:a,defaultChecked:l,onChange:this.onChange.bind(this)});var u=e.createElement("i",{className:"icon-checkbox"});return e.createElement("label",{id:p,style:c,className:this.classes},t,u,this.slots.default)},i.slots.get=function(){return n(this.props)},s.prototype.dispatchEvent=function(e){for(var t=[],o=arguments.length-1;o-- >0;)t[o]=arguments[o+1];return u.apply(void 0,[this,e].concat(t))},Object.defineProperties(s.prototype,i),s}(e.Component);l(R,Object.assign({id:[String,Number],checked:Boolean,name:[Number,String],value:[Number,String,Boolean],disabled:Boolean,readonly:Boolean,defaultChecked:Boolean},o.colorProps)),R.displayName="f7-checkbox";var T=function(r){function s(e,t){r.call(this,e,t)}r&&(s.__proto__=r),s.prototype=Object.create(r&&r.prototype),s.prototype.constructor=s;var i={slots:{configurable:!0}};return s.prototype.onClick=function(e){this.dispatchEvent("click",e)},s.prototype.onDeleteClick=function(e){this.dispatchEvent("delete",e)},s.prototype.render=function(){var n,r,s,i=this,a=i.props,l=a.media,p=a.text,c=a.deleteable,u=a.className,d=a.id,f=a.style,h=a.mediaTextColor,m=a.mediaBgColor,b=a.outline;if(l||i.slots&&i.slots.media){var g=t.classNames("chip-media",h&&"text-color-"+h,m&&"bg-color-"+m);n=e.createElement("div",{className:g},l||this.slots.media)}(p||i.slots&&i.slots.text)&&(r=e.createElement("div",{className:"chip-label"},p,this.slots.text)),c&&(s=e.createElement("a",{href:"#",className:"chip-delete",onClick:i.onDeleteClick.bind(i)}));var v=t.classNames(u,"chip",{"chip-outline":b},o.colorClasses(a));return e.createElement("div",{id:d,style:f,className:v,onClick:i.onClick.bind(i)},n,r,s)},i.slots.get=function(){return n(this.props)},s.prototype.dispatchEvent=function(e){for(var t=[],o=arguments.length-1;o-- >0;)t[o]=arguments[o+1];return u.apply(void 0,[this,e].concat(t))},Object.defineProperties(s.prototype,i),s}(e.Component);l(T,Object.assign({id:[String,Number],media:String,text:[String,Number],deleteable:Boolean,mediaBgColor:String,mediaTextColor:String,outline:Boolean},o.colorProps)),T.displayName="f7-chip";var D=function(r){function s(e,t){r.call(this,e,t)}r&&(s.__proto__=r),s.prototype=Object.create(r&&r.prototype),s.prototype.constructor=s;var i={slots:{configurable:!0}};return s.prototype.onClick=function(e){this.dispatchEvent("click",e)},s.prototype.render=function(){var n,r=this.props,s=r.className,i=r.id,a=r.style,l=r.tag,p=r.width,c=r.tabletWidth,u=r.desktopWidth,d=l,f=t.classNames(s,((n={col:"auto"===p})["col-"+p]="auto"!==p,n["tablet-"+c]=c,n["desktop-"+u]=u,n),o.colorClasses(r));return e.createElement(d,{id:i,style:a,className:f,onClick:this.onClick.bind(this)},this.slots.default)},i.slots.get=function(){return n(this.props)},s.prototype.dispatchEvent=function(e){for(var t=[],o=arguments.length-1;o-- >0;)t[o]=arguments[o+1];return u.apply(void 0,[this,e].concat(t))},Object.defineProperties(s.prototype,i),s}(e.Component);l(D,Object.assign({id:[String,Number],tag:{type:String,default:"div"},width:{type:[Number,String],default:"auto"},tabletWidth:{type:[Number,String]},desktopWidth:{type:[Number,String]}},o.colorProps)),D.displayName="f7-col";var A=function(r){function s(e,t){r.call(this,e,t),this.__reactRefs={}}r&&(s.__proto__=r),s.prototype=Object.create(r&&r.prototype),s.prototype.constructor=s;var i={slots:{configurable:!0},refs:{configurable:!0}};return s.prototype.onClick=function(e){this.dispatchEvent("click",e)},s.prototype.render=function(){var n,r=this.props,s=r.className,i=r.id,a=r.style,l=r.fabClose,p=r.label,c=r.target,u=t.classNames(s,{"fab-close":l,"fab-label-button":p},o.colorClasses(r));return p&&(n=e.createElement("span",{className:"fab-label"},p)),e.createElement("a",{id:i,style:a,target:c,className:u,onClick:this.onClick.bind(this)},this.slots.default,n)},s.prototype.componentWillUnmount=function(){var e=this;e.f7Tooltip&&e.f7Tooltip.destroy&&(e.f7Tooltip.destroy(),e.f7Tooltip=null,delete e.f7Tooltip)},s.prototype.componentDidMount=function(){var e=this,t=e.props.tooltip;t&&e.$f7ready(function(o){e.f7Tooltip=o.tooltip.create({targetEl:e.refs.el,text:t})})},i.slots.get=function(){return n(this.props)},s.prototype.dispatchEvent=function(e){for(var t=[],o=arguments.length-1;o-- >0;)t[o]=arguments[o+1];return u.apply(void 0,[this,e].concat(t))},i.refs.get=function(){return this.__reactRefs},i.refs.set=function(e){},s.prototype.componentDidUpdate=function(e,t){var o=this;v(this,"props.tooltip",e,t,function(e){var t=o;e&&t.f7Tooltip&&t.f7Tooltip.setText(e)})},Object.defineProperties(s.prototype,i),s}(e.Component);l(A,Object.assign({id:[String,Number],fabClose:Boolean,label:String,target:String,tooltip:String},o.colorProps)),A.displayName="f7-fab-button";var $=function(r){function s(e,t){r.call(this,e,t)}r&&(s.__proto__=r),s.prototype=Object.create(r&&r.prototype),s.prototype.constructor=s;var i={slots:{configurable:!0}};return s.prototype.render=function(){var n=this.props,r=n.className,s=n.id,i=n.style,a=n.position,l=t.classNames(r,"fab-buttons","fab-buttons-"+a,o.colorClasses(n));return e.createElement("div",{id:s,style:i,className:l},this.slots.default)},i.slots.get=function(){return n(this.props)},Object.defineProperties(s.prototype,i),s}(e.Component);l($,Object.assign({id:[String,Number],position:{type:String,default:"top"}},o.colorProps)),$.displayName="f7-fab-buttons";var F=function(r){function s(e,t){r.call(this,e,t),this.__reactRefs={}}r&&(s.__proto__=r),s.prototype=Object.create(r&&r.prototype),s.prototype.constructor=s;var i={slots:{configurable:!0},refs:{configurable:!0}};return s.prototype.onClick=function(e){this.dispatchEvent("click",e)},s.prototype.render=function(){var n=this.props,r=n.className,s=n.id,i=n.style,a=n.morphTo,l=n.href,p=n.position,c=n.text,u=n.target,d=l;!0===d&&(d="#"),!1===d&&(d=void 0);var f,h,m=[],b=[],g=this.slots,v=g.link,y=g.default,B=g.root,E=g.text;if(y)for(var S=0;S0;)t[o]=arguments[o+1];return u.apply(void 0,[this,e].concat(t))},i.refs.get=function(){return this.__reactRefs},i.refs.set=function(e){},s.prototype.componentDidUpdate=function(e,t){var o=this;v(this,"props.tooltip",e,t,function(e){var t=o;e&&t.f7Tooltip&&t.f7Tooltip.setText(e)})},Object.defineProperties(s.prototype,i),s}(e.Component);l(F,Object.assign({id:[String,Number],morphTo:String,href:[Boolean,String],target:String,text:String,position:{type:String,default:"right-bottom"},tooltip:String},o.colorProps)),F.displayName="f7-fab";var H=function(o){function n(e,t){o.call(this,e,t)}return o&&(n.__proto__=o),n.prototype=Object.create(o&&o.prototype),n.prototype.constructor=n,n.prototype.render=function(){var o=this.props,n=o.className,r=o.id,s=o.style,i=o.type,a=o.value,l=o.size,p=o.bgColor,c=o.borderBgColor,u=o.borderColor,d=o.borderWidth,f=o.valueText,h=o.valueTextColor,m=o.valueFontSize,b=o.valueFontWeight,g=o.labelText,v=o.labelTextColor,y=o.labelFontSize,B=o.labelFontWeight,E=t.classNames(n,"gauge"),S="semicircle"===i,C=l/2-d/2,N=2*Math.PI*C,_=Math.max(Math.min(a,1),0);return e.createElement("div",{id:r,style:s,className:E},e.createElement("svg",{className:"gauge-svg",width:l+"px",height:(S?l/2:l)+"px",viewBox:"0 0 "+l+" "+(S?l/2:l)},S&&e.createElement("path",{className:"gauge-back-semi",d:"M"+(l-d/2)+","+l/2+" a1,1 0 0,0 -"+(l-d)+",0",stroke:c,strokeWidth:d,fill:p||"none"}),S&&e.createElement("path",{className:"gauge-front-semi",d:"M"+(l-d/2)+","+l/2+" a1,1 0 0,0 -"+(l-d)+",0",stroke:u,strokeWidth:d,strokeDasharray:N/2,strokeDashoffset:N/2*(_-1),fill:c?"none":p||"none"}),!S&&c&&e.createElement("circle",{className:"gauge-back-circle",stroke:c,strokeWidth:d,fill:p||"none",cx:l/2,cy:l/2,r:C}),!S&&e.createElement("circle",{className:"gauge-front-circle",transform:"rotate(-90 "+l/2+" "+l/2+")",stroke:u,strokeWidth:d,strokeDasharray:N,strokeDashoffset:N*(1-_),fill:c?"none":p||"none",cx:l/2,cy:l/2,r:C}),f&&e.createElement("text",{className:"gauge-value-text",x:"50%",y:S?"100%":"50%",fontWeight:b,fontSize:m,fill:h,dy:S?g?-y-15:-5:0,textAnchor:"middle",dominantBaseline:!S&&"middle"},f),g&&e.createElement("text",{className:"gauge-label-text",x:"50%",y:S?"100%":"50%",fontWeight:B,fontSize:y,fill:v,dy:S?-5:f?m/2+10:0,textAnchor:"middle",dominantBaseline:!S&&"middle"},g)))},n}(e.Component);l(H,{id:[String,Number],type:{type:String,default:"circle"},value:{type:[Number,String],default:0},size:{type:[Number,String],default:200},bgColor:{type:String,default:"transparent"},borderBgColor:{type:String,default:"#eeeeee"},borderColor:{type:String,default:"#000000"},borderWidth:{type:[Number,String],default:10},valueText:[Number,String],valueTextColor:{type:String,default:"#000000"},valueFontSize:{type:[Number,String],default:31},valueFontWeight:{type:[Number,String],default:500},labelText:String,labelTextColor:{type:String,default:"#888888"},labelFontSize:{type:[Number,String],default:14},labelFontWeight:{type:[Number,String],default:400}}),H.displayName="f7-gauge";var U=function(n){function r(e,t){n.call(this,e,t),this.__reactRefs={}}n&&(r.__proto__=n),r.prototype=Object.create(n&&n.prototype),r.prototype.constructor=r;var s={refs:{configurable:!0}};return r.prototype.toggle=function(){this.f7Toggle&&this.f7Toggle.toggle&&this.f7Toggle.toggle()},r.prototype.onChange=function(e){this.dispatchEvent("change",e)},r.prototype.render=function(){var n,r=this,s=this.props,i=s.className,a=s.disabled,l=s.id,p=s.style,c=s.name,u=s.readonly,d=s.checked,f=s.defaultChecked,h=s.value,m=t.classNames("toggle",i,{disabled:a},o.colorClasses(s));return n=e.createElement("input",{type:"checkbox",name:c,disabled:a,readOnly:u,checked:d,defaultChecked:f,value:h,onChange:this.onChange.bind(this)}),e.createElement("label",{ref:function(e){r.__reactRefs.el=e},id:l,style:p,className:m},n,e.createElement("span",{className:"toggle-icon"}))},r.prototype.componentWillUnmount=function(){this.f7Toggle&&this.f7Toggle.destroy&&this.f7Toggle.$el&&this.f7Toggle.destroy()},r.prototype.componentDidMount=function(){var e=this;e.props.init&&e.$f7ready(function(t){e.f7Toggle=t.toggle.create({el:e.refs.el,on:{change:function(t){e.dispatchEvent("toggle:change toggleChange",t.checked)}}})})},r.prototype.dispatchEvent=function(e){for(var t=[],o=arguments.length-1;o-- >0;)t[o]=arguments[o+1];return u.apply(void 0,[this,e].concat(t))},s.refs.get=function(){return this.__reactRefs},s.refs.set=function(e){},r.prototype.componentDidUpdate=function(e,t){var o=this;v(this,"props.checked",e,t,function(e){var t=o;t.f7Toggle&&(t.f7Toggle.checked=e)})},Object.defineProperties(r.prototype,s),r}(e.Component);l(U,Object.assign({id:[String,Number],init:{type:Boolean,default:!0},checked:Boolean,defaultChecked:Boolean,disabled:Boolean,readonly:Boolean,name:String,value:[String,Number,Array]},o.colorProps)),U.displayName="f7-toggle";var z=function(r){function s(e,t){r.call(this,e,t),this.__reactRefs={}}r&&(s.__proto__=r),s.prototype=Object.create(r&&r.prototype),s.prototype.constructor=s;var i={slots:{configurable:!0},refs:{configurable:!0}};return s.prototype.setValue=function(e){this.f7Range&&this.f7Range.setValue&&this.f7Range.setValue(e)},s.prototype.getValue=function(){if(this.f7Range&&this.f7Range.getValue)return this.f7Range.getValue()},s.prototype.render=function(){var n=this,r=this.props,s=this.props,i=s.id,a=s.disabled,l=s.className,p=s.style,c=s.input,u=s.inputId,d=s.name,f=t.classNames(l,"range-slider",{disabled:a},o.colorClasses(r));return e.createElement("div",{ref:function(e){n.__reactRefs.el=e},id:i,style:p,className:f},c&&e.createElement("input",{type:"range",name:d,id:u}),this.slots.default)},s.prototype.componentWillUnmount=function(){this.f7Range&&this.f7Range.destroy&&this.f7Range.destroy()},s.prototype.componentDidMount=function(){var e=this;e.$f7ready(function(o){if(e.props.init){var n=e.props,r=n.value,s=n.min,i=n.max,a=n.step,l=n.label,p=n.dual,c=n.draggableBar;e.f7Range=o.range.create(t.noUndefinedProps({el:e.refs.el,value:r,min:s,max:i,step:a,label:l,dual:p,draggableBar:c,on:{change:function(t,o){e.dispatchEvent("range:change rangeChange",o)},changed:function(t,o){e.dispatchEvent("range:changed rangeChanged",o)}}}))}})},i.slots.get=function(){return n(this.props)},s.prototype.dispatchEvent=function(e){for(var t=[],o=arguments.length-1;o-- >0;)t[o]=arguments[o+1];return u.apply(void 0,[this,e].concat(t))},i.refs.get=function(){return this.__reactRefs},i.refs.set=function(e){},s.prototype.componentDidUpdate=function(e,t){var o=this;v(this,"props.value",e,t,function(e){var t=o;t.f7Range&&t.f7Range.setValue(e)})},Object.defineProperties(s.prototype,i),s}(e.Component);l(z,Object.assign({id:[String,Number],init:{type:Boolean,default:!0},value:{type:[Number,Array,String],default:0},min:{type:[Number,String],default:0},max:{type:[Number,String],default:100},step:{type:[Number,String],default:1},label:{type:Boolean,default:!1},dual:{type:Boolean,default:!1},name:String,inputId:String,input:Boolean,disabled:Boolean,draggableBar:{type:Boolean,default:!0}},o.colorProps)),z.displayName="f7-range";var W=function(r){function s(e,t){var o,n=this;r.call(this,e,t),this.__reactRefs={},(o=n).onFocusBound=o.onFocus.bind(o),o.onBlurBound=o.onBlur.bind(o),o.onInputBound=o.onInput.bind(o),o.onChangeBound=o.onChange.bind(o),o.onTextareaResizeBound=o.onTextareaResize.bind(o),o.onInputNotEmptyBound=o.onInputNotEmpty.bind(o),o.onInputEmptyBound=o.onInputEmpty.bind(o),o.onInputClearBound=o.onInputClear.bind(o)}r&&(s.__proto__=r),s.prototype=Object.create(r&&r.prototype),s.prototype.constructor=s;var i={slots:{configurable:!0},refs:{configurable:!0}};return s.prototype.onTextareaResize=function(e){this.dispatchEvent("textarea:resize textareaResize",e)},s.prototype.onInputNotEmpty=function(e){this.dispatchEvent("input:notempty inputNotEmpty",e)},s.prototype.onInputEmpty=function(e){this.dispatchEvent("input:empty inputEmpty",e)},s.prototype.onInputClear=function(e){this.dispatchEvent("input:clear inputClear",e)},s.prototype.onInput=function(e){this.dispatchEvent("input",e)},s.prototype.onFocus=function(e){this.dispatchEvent("focus",e)},s.prototype.onBlur=function(e){this.dispatchEvent("blur",e)},s.prototype.onChange=function(e){this.dispatchEvent("change",e)},s.prototype.render=function(){var n,r=this,s=this,i=s.props,a=i.type,l=i.name,p=i.value,c=i.defaultValue,u=i.placeholder,d=i.id,f=i.inputId,h=i.size,m=i.accept,b=i.autocomplete,g=i.autocorrect,v=i.autocapitalize,y=i.spellcheck,B=i.autofocus,E=i.autosave,S=i.checked,C=i.disabled,N=i.max,_=i.min,k=i.step,w=i.maxlength,O=i.minlength,P=i.multiple,L=i.readonly,j=i.required,I=i.inputStyle,M=i.pattern,x=i.validate,R=i.tabindex,T=i.resizable,D=i.clearButton,A=i.errorMessage,$=i.errorMessageForce,F=i.info,H=i.wrap,W=i.style,V=i.className,q=i.noStoreData,G=i.noFormStoreData,Q=i.ignoreStoreData,Y=function(o,n){var i=o,d="file"!==a,D="input"===o,F=t.classNames("textarea"===a&&T&&"resizable",!H&&V,(G||q||Q)&&"no-store-data",A&&$&&"input-invalid");return e.createElement(i,{ref:function(e){r.__reactRefs.inputEl=e},style:I,name:l,type:D?a:void 0,placeholder:u,id:f,value:d?p:void 0,defaultValue:c,size:h,accept:m,autoComplete:b,autoCorrect:g,autoCapitalize:v,spellCheck:y,autoFocus:B,autoSave:E,checked:S,disabled:C,max:N,maxLength:w,min:_,minLength:O,step:k,multiple:P,readOnly:L,required:j,pattern:M,validate:"string"==typeof x&&x.length?x:void 0,"data-validate":!0===x||""===x||void 0,tabIndex:R,"data-error-message":$?void 0:A,className:F,onFocus:s.onFocusBound,onBlur:s.onBlurBound,onInput:s.onInputBound,onChange:s.onChangeBound},n)},J=s.slots,K=J.default,X=J.info;if(n="select"===a||"textarea"===a||"file"===a?"select"===a?Y("select",K):Y("file"===a?"input":"textarea"):K&&K.length>0||!a?K:"toggle"===a?e.createElement(U,{checked:S,readOnly:L,name:l,value:p,disabled:C,id:f,onChange:s.onChangeBound}):"range"===a?e.createElement(z,{value:p,disabled:C,min:_,max:N,step:k,name:l,id:f,input:!0,onRangeChange:s.onChangeBound}):Y("input"),H){var Z=t.classNames(V,"item-input-wrap",o.colorClasses(i));return e.createElement("div",{id:d,ref:function(e){r.__reactRefs.wrapEl=e},className:Z,style:W},n,A&&$&&e.createElement("div",{className:"item-input-error-message"},A),D&&e.createElement("span",{className:"input-clear-button"}),(F||X&&X.length)&&e.createElement("div",{className:"item-input-info"},F,this.slots.info))}return n},s.prototype.componentWillUnmount=function(){var e=this,t=e.props,o=t.type,n=t.resizable,r=t.clearButton;if("range"!==o&&"toggle"!==o){var s=e.refs.inputEl;s&&(s.removeEventListener("input:notempty",e.onInputNotEmptyBound,!1),"textarea"===o&&n&&s.removeEventListener("textarea:resze",e.onTextareaResizeBound,!1),r&&(s.removeEventListener("input:empty",e.onInputEmptyBound,!1),s.removeEventListener("input:clear",e.onInputClearBound,!1)))}},s.prototype.componentDidUpdate=function(e,t){var o=this;v(this,"props.value",e,t,function(){var e=o,t=e.props.type;"range"!==t&&"toggle"!==t&&e.$f7&&(e.updateInputOnDidUpdate=!0)});var n=this,r=n.props,s=r.validate,i=r.resizable,a=n.$f7;if(a&&n.updateInputOnDidUpdate){var l=n.refs.inputEl;if(!l)return;n.updateInputOnDidUpdate=!1,a.input.checkEmptyState(l),s&&a.input.validate(l),i&&a.input.resizeTextarea(l)}},s.prototype.componentDidMount=function(){var e=this;e.$f7ready(function(t){var o=e.props,n=o.validate,r=o.resizable,s=o.type,i=o.clearButton,a=o.value,l=o.defaultValue;if("range"!==s&&"toggle"!==s){var p=e.refs.inputEl;p&&(p.addEventListener("input:notempty",e.onInputNotEmptyBound,!1),"textarea"===s&&r&&p.addEventListener("textarea:resze",e.onTextareaResizeBound,!1),i&&(p.addEventListener("input:empty",e.onInputEmptyBound,!1),p.addEventListener("input:clear",e.onInputClearBound,!1)),t.input.checkEmptyState(p),(n||""===n)&&(void 0!==a&&null!==a&&""!==a||void 0!==l&&null!==l&&""!==l)&&setTimeout(function(){t.input.validate(p)},0),r&&t.input.resizeTextarea(p))}})},i.slots.get=function(){return n(this.props)},s.prototype.dispatchEvent=function(e){for(var t=[],o=arguments.length-1;o-- >0;)t[o]=arguments[o+1];return u.apply(void 0,[this,e].concat(t))},i.refs.get=function(){return this.__reactRefs},i.refs.set=function(e){},Object.defineProperties(s.prototype,i),s}(e.Component);l(W,Object.assign({type:String,name:String,value:[String,Number,Array],defaultValue:[String,Number,Array],placeholder:String,id:[String,Number],inputId:[String,Number],size:[String,Number],accept:[String,Number],autocomplete:[String],autocorrect:[String],autocapitalize:[String],spellcheck:[String],autofocus:Boolean,autosave:String,checked:Boolean,disabled:Boolean,max:[String,Number],min:[String,Number],step:[String,Number],maxlength:[String,Number],minlength:[String,Number],multiple:Boolean,readonly:Boolean,required:Boolean,inputStyle:String,pattern:String,validate:[Boolean,String],tabindex:[String,Number],resizable:Boolean,clearButton:Boolean,noFormStoreData:Boolean,noStoreData:Boolean,ignoreStoreData:Boolean,errorMessage:String,errorMessageForce:Boolean,info:String,wrap:{type:Boolean,default:!0}},o.colorProps)),W.displayName="f7-input";var V=function(r){function s(e,t){r.call(this,e,t)}r&&(s.__proto__=r),s.prototype=Object.create(r&&r.prototype),s.prototype.constructor=s;var i={slots:{configurable:!0}};return s.prototype.render=function(){var n=this.props,r=n.inline,s=n.id,i=n.style,a=n.className,l=n.floating,p=t.classNames(a,"item-title",{"item-label-inline":r,"item-label":!l,"item-floating-label":l},o.colorClasses(n));return e.createElement("div",{id:s,style:i,className:p},this.slots.default)},i.slots.get=function(){return n(this.props)},Object.defineProperties(s.prototype,i),s}(e.Component);l(V,Object.assign({id:[String,Number],floating:Boolean,inline:Boolean},o.colorProps)),V.displayName="f7-label";var q=function(r){function s(e,t){r.call(this,e,t),this.__reactRefs={},this.state={isTabbarLabel:e.tabbarLabel}}r&&(s.__proto__=r),s.prototype=Object.create(r&&r.prototype),s.prototype.constructor=s;var i={attrs:{configurable:!0},classes:{configurable:!0},slots:{configurable:!0},refs:{configurable:!0}};return s.prototype.onClick=function(e){this.props.smartSelect&&this.f7SmartSelect&&this.f7SmartSelect.open(),this.dispatchEvent("click",e)},i.attrs.get=function(){var e=this.props,n=e.href,r=e.target,s=e.tabLink,i=n;return!0===n&&(i="#"),!1===n&&(i=void 0),t.extend({href:i,target:r,"data-tab":t.isStringProp(s)&&s||void 0},o.linkRouterAttrs(e),o.linkActionsAttrs(e))},i.classes.get=function(){var e=this.props,n=e.noFastclick,r=e.noFastClick,s=e.tabLink,i=e.tabLinkActive,a=e.noLinkClass,l=e.smartSelect,p=e.className;return t.classNames(p,{link:!(a||this.state.isTabbarLabel),"icon-only":this.iconOnlyComputed,"tab-link":s||""===s,"tab-link-active":i,"no-fastclick":n||r,"smart-select":l},o.colorClasses(e),o.linkRouterClasses(e),o.linkActionsClasses(e))},s.prototype.render=function(){var t,o,n,r,s=this,i=this,a=i.props,l=a.text,p=a.badge,c=a.badgeColor,u=a.iconOnly,d=a.iconBadge,f=a.icon,h=a.iconColor,m=a.iconSize,b=a.iconMaterial,g=a.iconIon,v=a.iconFa,y=a.iconF7,B=a.iconIfMd,E=a.iconIfIos,S=a.iconMd,C=a.iconIos,_=a.id,k=a.style,w=i.slots.default;l&&(p&&(n=e.createElement(N,{color:c},p)),o=e.createElement("span",{className:i.state.isTabbarLabel?"tabbar-label":""},l,n));var O=B||S,L=E||C;return(f||b||g||v||y||O||L)&&(d&&(r=e.createElement(N,{color:c},d)),t=e.createElement(P,{material:b,f7:y,fa:v,ion:g,icon:f,md:O,ios:L,color:h,size:m},r)),u||!l&&w&&0===w.length||!l&&!w?i.iconOnlyComputed=!0:i.iconOnlyComputed=!1,e.createElement("a",Object.assign({ref:function(e){s.__reactRefs.el=e},id:_,style:k,className:i.classes,onClick:i.onClick.bind(i)},i.attrs),t,o,w)},s.prototype.componentWillUnmount=function(){var e=this;e.f7SmartSelect&&e.f7SmartSelect.destroy&&e.f7SmartSelect.destroy(),e.f7Tooltip&&e.f7Tooltip.destroy&&(e.f7Tooltip.destroy(),e.f7Tooltip=null,delete e.f7Tooltip)},s.prototype.componentDidMount=function(){var e=this,o=e.refs.el,n=e.props,r=n.tabbarLabel,s=n.tabLink,i=n.tooltip,a=n.smartSelect,l=n.smartSelectParams,p=!1;(r||(s||""===s)&&e.$$(o).parents(".tabbar-labels").length)&&(p=!0),e.setState({isTabbarLabel:p}),e.$f7ready(function(n){if(a){var r=t.extend({el:o},l||{});e.f7SmartSelect=n.smartSelect.create(r)}i&&(e.f7Tooltip=n.tooltip.create({targetEl:o,text:i}))})},i.slots.get=function(){return n(this.props)},s.prototype.dispatchEvent=function(e){for(var t=[],o=arguments.length-1;o-- >0;)t[o]=arguments[o+1];return u.apply(void 0,[this,e].concat(t))},i.refs.get=function(){return this.__reactRefs},i.refs.set=function(e){},s.prototype.componentDidUpdate=function(e,t){var o=this;v(this,"props.tooltip",e,t,function(e){var t=o;e&&t.f7Tooltip&&t.f7Tooltip.setText(e)})},Object.defineProperties(s.prototype,i),s}(e.Component);l(q,Object.assign({id:[String,Number],noLinkClass:Boolean,noFastClick:Boolean,noFastclick:Boolean,text:String,tabLink:[Boolean,String],tabLinkActive:Boolean,tabbarLabel:Boolean,iconOnly:Boolean,badge:[String,Number],badgeColor:[String],iconBadge:[String,Number],href:{type:[String,Boolean],default:"#"},target:String,tooltip:String,smartSelect:Boolean,smartSelectParams:Object},o.colorProps,o.linkIconProps,o.linkRouterProps,o.linkActionsProps)),q.displayName="f7-link";var G=function(r){function s(e,t){r.call(this,e,t)}r&&(s.__proto__=r),s.prototype=Object.create(r&&r.prototype),s.prototype.constructor=s;var i={attrs:{configurable:!0},classes:{configurable:!0},slots:{configurable:!0}};return s.prototype.onClick=function(e){this.dispatchEvent("click",e)},i.attrs.get=function(){var e=this.props,n=e.link,r=e.href,s=e.target,i=e.tabLink;return t.extend({href:"boolean"==typeof n&&"boolean"==typeof r?"#":n||r,target:s,"data-tab":t.isStringProp(i)&&i},o.linkRouterAttrs(e),o.linkActionsAttrs(e))},i.classes.get=function(){var e=this.props,n=e.noFastclick,r=e.noFastClick,s=e.tabLink,i=e.tabLinkActive;return t.classNames({"item-link":!0,"list-button":!0,"tab-link":s||""===s,"tab-link-active":i,"no-fastclick":n||r},o.colorClasses(e),o.linkRouterClasses(e),o.linkActionsClasses(e))},s.prototype.render=function(){var t=this.props,o=t.className,n=t.id,r=t.style,s=t.title,i=t.text;return e.createElement("li",{id:n,style:r,className:o},e.createElement("a",Object.assign({className:this.classes},this.attrs,{onClick:this.onClick.bind(this)}),this.slots.default,!this.slots.default&&(s||i)))},i.slots.get=function(){return n(this.props)},s.prototype.dispatchEvent=function(e){for(var t=[],o=arguments.length-1;o-- >0;)t[o]=arguments[o+1];return u.apply(void 0,[this,e].concat(t))},Object.defineProperties(s.prototype,i),s}(e.Component);l(G,Object.assign({id:[String,Number],noFastclick:Boolean,noFastClick:Boolean,title:[String,Number],text:[String,Number],tabLink:[Boolean,String],tabLinkActive:Boolean,link:[Boolean,String],href:[Boolean,String],target:String},o.colorProps,o.linkRouterProps,o.linkActionsProps)),G.displayName="f7-list-button";var Q=function(r){function s(e,t){r.call(this,e,t)}r&&(s.__proto__=r),s.prototype=Object.create(r&&r.prototype),s.prototype.constructor=s;var i={slots:{configurable:!0}};return s.prototype.render=function(){var n=this.props,r=n.className,s=n.id,i=n.style,a=n.mediaList,l=n.sortable,p=t.classNames(r,"list-group",{"media-list":a,sortable:l},o.colorClasses(n));return e.createElement("div",{id:s,style:i,className:p},e.createElement("ul",null,this.slots.default))},i.slots.get=function(){return n(this.props)},Object.defineProperties(s.prototype,i),s}(e.Component);l(Q,Object.assign({id:[String,Number],mediaList:Boolean,sortable:Boolean},o.colorProps)),Q.displayName="f7-list-group";var Y=function(r){function s(e,t){r.call(this,e,t),this.__reactRefs={}}r&&(s.__proto__=r),s.prototype=Object.create(r&&r.prototype),s.prototype.constructor=s;var i={slots:{configurable:!0},refs:{configurable:!0}};return s.prototype.update=function(){this.f7ListIndex&&this.f7ListIndex.update()},s.prototype.scrollListToIndex=function(e){this.f7ListIndex&&this.f7ListIndex.scrollListToIndex(e)},s.prototype.render=function(){var n=this,r=this.props,s=r.className,i=r.id,a=r.style,l=t.classNames(s,"list-index",o.colorClasses(r));return e.createElement("div",{ref:function(e){n.__reactRefs.el=e},id:i,style:a,className:l},this.slots.default)},s.prototype.componentDidMount=function(){var e=this;e.props.init&&e.$f7ready(function(t){var o=e.refs.el,n=e.props,r=n.listEl,s=n.indexes,i=n.iosItemHeight,a=n.mdItemHeight,l=n.scrollList,p=n.label;e.f7ListIndex=t.listIndex.create({el:o,listEl:r,indexes:s,iosItemHeight:i,mdItemHeight:a,scrollList:l,label:p,on:{select:function(t,o,n){e.dispatchEvent("listindex:select listIndexSelect",o,n)}}})})},s.prototype.componentWillUnmount=function(){this.props.init&&this.f7ListIndex&&this.f7ListIndex.destroy&&this.f7ListIndex.destroy()},i.slots.get=function(){return n(this.props)},s.prototype.dispatchEvent=function(e){for(var t=[],o=arguments.length-1;o-- >0;)t[o]=arguments[o+1];return u.apply(void 0,[this,e].concat(t))},i.refs.get=function(){return this.__reactRefs},i.refs.set=function(e){},s.prototype.componentDidUpdate=function(e,t){var o=this;v(this,"props.indexes",e,t,function(){o.f7ListIndex&&(o.f7ListIndex.params.indexes=o.indexes,o.update())})},Object.defineProperties(s.prototype,i),s}(e.Component);l(Y,Object.assign({id:[String,Number],init:{type:Boolean,default:!0},listEl:[String,Object],indexes:{type:[String,Array],default:"auto"},scrollList:{type:Boolean,default:!0},label:{type:Boolean,default:!1},iosItemHeight:{type:Number,default:14},mdItemHeight:{type:Number,default:14}},o.colorProps)),Y.displayName="f7-list-index";var J=function(r){function s(e,t){r.call(this,e,t)}r&&(s.__proto__=r),s.prototype=Object.create(r&&r.prototype),s.prototype.constructor=s;var i={slots:{configurable:!0}};return s.prototype.render=function(){var n=this.props,r=n.className,s=n.id,i=n.style,a=t.classNames(r,"item-cell",o.colorClasses(n));return e.createElement("div",{id:s,style:i,className:a},this.slots.default)},i.slots.get=function(){return n(this.props)},Object.defineProperties(s.prototype,i),s}(e.Component);l(J,Object.assign({id:[String,Number]},o.colorProps)),J.displayName="f7-list-item-cell";var K=function(r){function s(e,t){r.call(this,e,t),this.__reactRefs={},this.state={hasInput:!1,hasInlineLabel:!1,hasInputInfo:!1,hasInputErrorMessage:!1}}r&&(s.__proto__=r),s.prototype=Object.create(r&&r.prototype),s.prototype.constructor=s;var i={slots:{configurable:!0},refs:{configurable:!0}};return s.prototype.checkHasInputState=function(){var e=this,t=e.props,o=t.itemInput,n=t.inlineLabel,r=t.itemInputWithInfo,s=o||e.state.hasInput,i=n||e.state.hasInlineLabel,a=r||e.state.hasInputInfo,l=e.state.hasInputErrorMessage;s&&!e.state.hasInput?(e.hasInputSet=!0,e.setState({hasInput:s})):s||(e.hasInputSet=!1),a&&!e.state.hasInputInfo?(e.hasInputInfoSet=!0,e.setState({hasInputInfo:a})):a||(e.hasInputInfoSet=!1),l&&!e.state.hasInputErrorMessage?(e.hasInputErrorMessageSet=!0,e.setState({hasInputErrorMessage:l})):a||(e.hasInputErrorMessageSet=!1),i&&!e.state.hasInlineLabel?(e.hasInlineLabelSet=!0,e.setState({hasInlineLabel:i})):i||(e.hasInlineLabelSet=!1)},s.prototype.onClick=function(e){this.dispatchEvent("click",e)},s.prototype.onChange=function(e){this.dispatchEvent("change",e)},s.prototype.render=function(){var n,r,s,i,a,l,p,c,u,d,f,h,m,b,g=this,v=this,y=v.props,B=y.id,E=y.className,S=y.style,C=y.radio,_=y.checkbox,k=y.value,w=y.name,O=y.checked,P=y.defaultChecked,L=y.readonly,j=y.disabled,I=y.required,M=y.media,x=y.header,R=y.footer,T=y.title,D=y.subtitle,A=y.text,$=y.after,F=y.badge,H=y.mediaList,U=y.mediaItem,z=y.badgeColor,W=y.itemInput,V=y.inlineLabel,q=y.itemInputWithInfo,G=W||v.state.hasInput,Q=V||v.state.hasInlineLabel,Y=q||v.state.hasInputInfo,J=v.state.hasInputErrorMessage,K=[],X=[],Z=[],ee=[],te=[],oe=[],ne=[],re=[],se=[],ie=[],ae=[],le=[],pe=[],ce=[],ue=[],de=[],fe=[],he=v.slots.default,me=[];(he&&he.length&&he.forEach(function(e){Array.isArray(e)?me.push.apply(me,e):me.push(e)}),me.forEach(function(e){if(void 0!==e){var t,o=e.type&&(e.type.displayName||e.type.name);"F7Input"!==o&&"f7-input"!==o||(G=!0,e.props&&e.props.info&&(Y=!0),e.props&&e.props.errorMessage&&e.props.errorMessageForce&&(J=!0)),"F7Label"!==o&&"f7-label"!==o||e.props&&e.props.inline&&(Q=!0),(t=e.props?e.props.slot:void 0)&&"inner"!==t||te.push(e),"content-start"===t&&K.push(e),"content"===t&&X.push(e),"content-end"===t&&Z.push(e),"after-start"===t&&ne.push(e),"after"===t&&re.push(e),"after-end"===t&&se.push(e),"media"===t&&ie.push(e),"inner-start"===t&&ee.push(e),"inner-end"===t&&oe.push(e),"before-title"===t&&ae.push(e),"title"===t&&le.push(e),"after-title"===t&&pe.push(e),"subtitle"===t&&ce.push(e),"text"===t&&ue.push(e),"header"===t&&de.push(e),"footer"===t&&fe.push(e)}}),(C||_)&&(d=e.createElement("input",{value:k,name:w,checked:O,defaultChecked:P,readOnly:L,disabled:j,required:I,type:C?"radio":"checkbox",onChange:v.onChange.bind(v)}),f=e.createElement("i",{className:"icon icon-"+(C?"radio":"checkbox")})),M||ie.length)&&(M&&(b=e.createElement("img",{src:M})),u=e.createElement("div",{className:"item-media"},b,ie));var be=U||H;(x||de.length)&&(h=e.createElement("div",{className:"item-header"},x,de)),(R||fe.length)&&(m=e.createElement("div",{className:"item-footer"},R,fe)),(T||le.length||!be&&h||!be&&m)&&(n=e.createElement("div",{className:"item-title"},!be&&h,T,le,!be&&m)),(D||ce.length)&&(p=e.createElement("div",{className:"item-subtitle"},D,ce)),(A||ue.length)&&(c=e.createElement("div",{className:"item-text"},A,ue)),($||F||re.length)&&($&&(s=e.createElement("span",null,$)),F&&(i=e.createElement(N,{color:z},F)),r=e.createElement("div",{className:"item-after"},ne,s,i,re,se)),be?(l=e.createElement("div",{className:"item-title-row"},ae,n,pe,r),a=e.createElement("div",{ref:function(e){g.__reactRefs.innerEl=e},className:"item-inner"},ee,h,l,p,c,te,m,oe)):a=e.createElement("div",{ref:function(e){g.__reactRefs.innerEl=e},className:"item-inner"},ee,ae,n,pe,r,te,oe);var ge=_||C?"label":"div",ve=t.classNames(E,"item-content",{"item-checkbox":_,"item-radio":C,"item-input":G,"inline-label":Q,"item-input-with-info":Y,"item-input-with-error-message":J,"item-input-invalid":J},o.colorClasses(y));return e.createElement(ge,{ref:function(e){g.__reactRefs.el=e},id:B,style:S,className:ve,onClick:v.onClick.bind(v)},K,d,f,u,a,X,Z)},s.prototype.componentDidUpdate=function(){var e=this,t=e.refs.innerEl;if(t){var o=e.$$(t),n=o.children(".item-title.item-label"),r=o.children(".item-input-wrap"),s=n.hasClass("item-label-inline"),i=r.length>0,a=r.children(".item-input-info").length>0,l=r.children(".item-input-error-message").length>0;s!==e.state.hasInlineLabel&&e.setState({hasInlineLabel:s}),i!==e.state.hasInput&&e.setState({hasInput:i}),a!==e.state.hasInputInfo&&e.setState({hasInputInfo:a}),e.hasInputErrorMessageSet||l===e.state.hasInputErrorMessage||e.setState({hasInputErrorMessage:l})}},s.prototype.componentDidMount=function(){var e=this,t=e.refs.innerEl;if(t){var o=e.$$(t),n=o.children(".item-title.item-label"),r=o.children(".item-input-wrap"),s=n.hasClass("item-label-inline"),i=r.length>0,a=r.children(".item-input-info").length>0,l=r.children(".item-input-error-message").length>0;e.hasInlineLabelSet||s===e.state.hasInlineLabel||e.setState({hasInlineLabel:s}),e.hasInputSet||i===e.state.hasInput||e.setState({hasInput:i}),e.hasInputInfoSet||a===e.state.hasInputInfo||e.setState({hasInputInfo:a}),e.hasInputErrorMessageSet||l===e.state.hasInputErrorMessage||e.setState({hasInputErrorMessage:l})}},s.prototype.componentWillUpdate=function(){this.checkHasInputState()},s.prototype.componentWillMount=function(){this.checkHasInputState()},i.slots.get=function(){return n(this.props)},s.prototype.dispatchEvent=function(e){for(var t=[],o=arguments.length-1;o-- >0;)t[o]=arguments[o+1];return u.apply(void 0,[this,e].concat(t))},i.refs.get=function(){return this.__reactRefs},i.refs.set=function(e){},Object.defineProperties(s.prototype,i),s}(e.Component);l(K,Object.assign({id:[String,Number],title:[String,Number],text:[String,Number],media:String,subtitle:[String,Number],header:[String,Number],footer:[String,Number],after:[String,Number],badge:[String,Number],badgeColor:String,mediaList:Boolean,mediaItem:Boolean,itemInput:Boolean,itemInputWithInfo:Boolean,inlineLabel:Boolean,checkbox:Boolean,checked:Boolean,defaultChecked:Boolean,radio:Boolean,name:String,value:[String,Number,Array],readonly:Boolean,required:Boolean,disabled:Boolean},o.colorProps)),K.displayName="f7-list-item-content";var X=function(r){function s(e,t){r.call(this,e,t)}r&&(s.__proto__=r),s.prototype=Object.create(r&&r.prototype),s.prototype.constructor=s;var i={slots:{configurable:!0}};return s.prototype.render=function(){var n=this.props,r=n.className,s=n.id,i=n.style,a=t.classNames(r,"item-row",o.colorClasses(n));return e.createElement("div",{id:s,style:i,className:a},this.slots.default)},i.slots.get=function(){return n(this.props)},Object.defineProperties(s.prototype,i),s}(e.Component);l(X,Object.assign({id:[String,Number]},o.colorProps)),X.displayName="f7-list-item-row";var Z=function(r){function s(e,t){var o,n=this;r.call(this,e,t),this.__reactRefs={},this.state={isMedia:e.mediaItem||e.mediaList,isSortable:e.sortable,isSimple:!1},(o=n).onClickBound=o.onClick.bind(o),o.onChangeBound=o.onChange.bind(o),o.onSwipeoutOpenBound=o.onSwipeoutOpen.bind(o),o.onSwipeoutOpenedBound=o.onSwipeoutOpened.bind(o),o.onSwipeoutCloseBound=o.onSwipeoutClose.bind(o),o.onSwipeoutClosedBound=o.onSwipeoutClosed.bind(o),o.onSwipeoutDeleteBound=o.onSwipeoutDelete.bind(o),o.onSwipeoutDeletedBound=o.onSwipeoutDeleted.bind(o),o.onSwipeoutBound=o.onSwipeout.bind(o),o.onAccOpenBound=o.onAccOpen.bind(o),o.onAccOpenedBound=o.onAccOpened.bind(o),o.onAccCloseBound=o.onAccClose.bind(o),o.onAccClosedBound=o.onAccClosed.bind(o)}r&&(s.__proto__=r),s.prototype=Object.create(r&&r.prototype),s.prototype.constructor=s;var i={slots:{configurable:!0},refs:{configurable:!0}};return s.prototype.onClick=function(e){this.props.smartSelect&&this.f7SmartSelect&&this.f7SmartSelect.open(),"input"!==e.target.tagName.toLowerCase()&&this.dispatchEvent("click",e)},s.prototype.onSwipeoutDeleted=function(e){this.dispatchEvent("swipeout:deleted swipeoutDeleted",e)},s.prototype.onSwipeoutDelete=function(e){this.dispatchEvent("swipeout:delete swipeoutDelete",e)},s.prototype.onSwipeoutClose=function(e){this.dispatchEvent("swipeout:close swipeoutClose",e)},s.prototype.onSwipeoutClosed=function(e){this.dispatchEvent("swipeout:closed swipeoutClosed",e)},s.prototype.onSwipeoutOpen=function(e){this.dispatchEvent("swipeout:open swipeoutOpen",e)},s.prototype.onSwipeoutOpened=function(e){this.dispatchEvent("swipeout:opened swipeoutOpened",e)},s.prototype.onSwipeout=function(e){this.dispatchEvent("swipeout",e)},s.prototype.onAccClose=function(e){this.dispatchEvent("accordion:close accordionClose",e)},s.prototype.onAccClosed=function(e){this.dispatchEvent("accordion:closed accordionClosed",e)},s.prototype.onAccOpen=function(e){this.dispatchEvent("accordion:open accordionOpen",e)},s.prototype.onAccOpened=function(e){this.dispatchEvent("accordion:opened accordionOpened",e)},s.prototype.onChange=function(e){this.dispatchEvent("change",e)},s.prototype.onInput=function(e){this.dispatchEvent("input",e)},s.prototype.render=function(){var n,r,s=this,i=this,a=i.props,l=a.id,p=a.style,c=a.className,u=a.title,d=a.text,f=a.media,h=a.subtitle,m=a.header,b=a.footer,g=a.link,v=a.href,y=a.target,B=a.noFastclick,E=a.noFastClick,S=a.after,C=a.badge,N=a.badgeColor,_=a.mediaItem,k=a.mediaList,w=a.divider,O=a.groupTitle,P=a.swipeout,L=a.accordionItem,j=a.accordionItemOpened,I=a.smartSelect,M=a.checkbox,x=a.radio,R=a.checked,T=a.defaultChecked,D=a.name,A=a.value,$=a.readonly,F=a.required,H=a.disabled,U=a.itemInput,z=a.itemInputWithInfo,W=a.inlineLabel,V=a.sortable,q=_||k||i.state.isMedia,G=V||i.state.isSortable,Q=i.state.isSimple;if(!Q){var Y=!(g||v||L||I);if(r=e.createElement(K,{title:u,text:d,media:f,subtitle:h,after:S,header:m,footer:b,badge:C,badgeColor:N,mediaList:q,accordionItem:L,checkbox:M,checked:R,defaultChecked:T,radio:x,name:D,value:A,readonly:$,required:F,disabled:H,itemInput:U,itemInputWithInfo:z,inlineLabel:W,onClick:Y?i.onClickBound:null,onChange:Y?i.onChangeBound:null},this.slots["content-start"],this.slots.content,this.slots["content-end"],this.slots.media,this.slots["inner-start"],this.slots.inner,this.slots["inner-end"],this.slots["after-start"],this.slots.after,this.slots["after-end"],this.slots.header,this.slots.footer,this.slots["before-title"],this.slots.title,this.slots["after-title"],this.slots.subtitle,this.slots.text,P||L?null:i.slots.default),g||v||L||I){var J=t.extend({href:!0===g||L||I?"#":g||v,target:y},o.linkRouterAttrs(a),o.linkActionsAttrs(a)),X=t.classNames({"item-link":!0,"no-fastclick":B||E,"smart-select":I},o.linkRouterClasses(a),o.linkActionsClasses(a));n=e.createElement("a",Object.assign({className:X,onClick:i.onClick.bind(i)},J),r)}}var Z=t.classNames(c,{"item-divider":w,"list-group-title":O,"media-item":q,swipeout:P,"accordion-item":L,"accordion-item-opened":j},o.colorClasses(a));if(w||O)return e.createElement("li",{ref:function(e){s.__reactRefs.el=e},id:l,style:p,className:Z},e.createElement("span",null,this.slots.default,!this.slots.default&&u));if(Q)return e.createElement("li",{ref:function(e){s.__reactRefs.el=e},id:l,style:p,className:Z},u,this.slots.default);var ee=g||v||I||L?n:r;return e.createElement("li",{ref:function(e){s.__reactRefs.el=e},id:l,style:p,className:Z},this.slots["root-start"],P?e.createElement("div",{className:"swipeout-content"},ee):ee,G&&e.createElement("div",{className:"sortable-handler"}),(P||L)&&i.slots.default,this.slots.root,this.slots["root-end"])},s.prototype.componentWillUnmount=function(){var e=this,t=e.refs.el,o=e.props,n=o.swipeout,r=o.accordionItem,s=o.smartSelect;t&&(n&&(t.removeEventListener("swipeout:open",e.onSwipeoutOpenBound),t.removeEventListener("swipeout:opened",e.onSwipeoutOpenedBound),t.removeEventListener("swipeout:close",e.onSwipeoutCloseBound),t.removeEventListener("swipeout:closed",e.onSwipeoutClosedBound),t.removeEventListener("swipeout:delete",e.onSwipeoutDeleteBound),t.removeEventListener("swipeout:deleted",e.onSwipeoutDeletedBound),t.removeEventListener("swipeout",e.onSwipeoutBound)),r&&(t.removeEventListener("accordion:open",e.onAccOpenBound),t.removeEventListener("accordion:opened",e.onAccOpenedBound),t.removeEventListener("accordion:close",e.onAccCloseBound),t.removeEventListener("accordion:closed",e.onAccClosedBound))),s&&e.f7SmartSelect&&e.f7SmartSelect.destroy()},s.prototype.componentDidUpdate=function(e,t){var o=this;v(this,"props.swipeoutOpened",e,t,function(e){var t=o;if(t.props.swipeout){var n=t.refs.el;e?t.$f7.swipeout.open(n):t.$f7.swipeout.close(n)}});var n=this,r=n.$listEl;if(r&&(!r||0!==r.length)){var s=r.hasClass("media-list"),i=r.hasClass("simple-list"),a=r.hasClass("sortable");s!==n.state.isMedia&&n.setState({isMedia:s}),i!==n.state.isSimple&&n.setState({isSimple:i}),a!==n.state.isSortable&&n.setState({isSortable:a})}},s.prototype.componentDidMount=function(){var e=this,o=e.refs.el;if(o){e.$listEl=e.$$(o).parents(".list, .list-group").eq(0),e.$listEl.length&&e.setState({isMedia:e.$listEl.hasClass("media-list"),isSimple:e.$listEl.hasClass("simple-list"),isSortable:e.$listEl.hasClass("sortable")});var n=e.props,r=n.swipeout,s=n.swipeoutOpened,i=n.accordionItem,a=n.smartSelect,l=n.smartSelectParams;r&&(o.addEventListener("swipeout:open",e.onSwipeoutOpenBound),o.addEventListener("swipeout:opened",e.onSwipeoutOpenedBound),o.addEventListener("swipeout:close",e.onSwipeoutCloseBound),o.addEventListener("swipeout:closed",e.onSwipeoutClosedBound),o.addEventListener("swipeout:delete",e.onSwipeoutDeleteBound),o.addEventListener("swipeout:deleted",e.onSwipeoutDeletedBound),o.addEventListener("swipeout",e.onSwipeoutBound)),i&&(o.addEventListener("accordion:open",e.onAccOpenBound),o.addEventListener("accordion:opened",e.onAccOpenedBound),o.addEventListener("accordion:close",e.onAccCloseBound),o.addEventListener("accordion:closed",e.onAccClosedBound)),e.$f7ready(function(n){if(a){var r=t.extend({el:o.querySelector("a.smart-select")},l||{});e.f7SmartSelect=n.smartSelect.create(r)}s&&n.swipeout.open(o)})}},i.slots.get=function(){return n(this.props)},s.prototype.dispatchEvent=function(e){for(var t=[],o=arguments.length-1;o-- >0;)t[o]=arguments[o+1];return u.apply(void 0,[this,e].concat(t))},i.refs.get=function(){return this.__reactRefs},i.refs.set=function(e){},Object.defineProperties(s.prototype,i),s}(e.Component);l(Z,Object.assign({id:[String,Number],title:[String,Number],text:[String,Number],media:String,subtitle:[String,Number],header:[String,Number],footer:[String,Number],link:[Boolean,String],target:String,noFastclick:Boolean,noFastClick:Boolean,after:[String,Number],badge:[String,Number],badgeColor:String,mediaItem:Boolean,mediaList:Boolean,divider:Boolean,groupTitle:Boolean,swipeout:Boolean,swipeoutOpened:Boolean,sortable:Boolean,accordionItem:Boolean,accordionItemOpened:Boolean,smartSelect:Boolean,smartSelectParams:Object,checkbox:Boolean,radio:Boolean,checked:Boolean,defaultChecked:Boolean,name:String,value:[String,Number,Array],readonly:Boolean,required:Boolean,disabled:Boolean,itemInput:Boolean,itemInputWithInfo:Boolean,inlineLabel:Boolean},o.colorProps,o.linkRouterProps,o.linkActionsProps)),Z.displayName="f7-list-item";var ee=function(r){function s(e,t){r.call(this,e,t),this.__reactRefs={}}r&&(s.__proto__=r),s.prototype=Object.create(r&&r.prototype),s.prototype.constructor=s;var i={classes:{configurable:!0},slots:{configurable:!0},refs:{configurable:!0}};return s.prototype.onSortableEnable=function(e){this.dispatchEvent("sortable:enable sortableEnable",e)},s.prototype.onSortableDisable=function(e){this.dispatchEvent("sortable:disable sortableDisable",e)},s.prototype.onSortableSort=function(e){this.dispatchEvent("sortable:sort sortableSort",e,e.detail)},s.prototype.onTabShow=function(e){this.dispatchEvent("tab:show tabShow",e)},s.prototype.onTabHide=function(e){this.dispatchEvent("tab:hide tabHide",e)},i.classes.get=function(){var e=this.props,n=e.inset,r=e.tabletInset,s=e.mediaList,i=e.simpleList,a=e.linksList,l=e.sortable,p=e.accordionList,c=e.contactsList,u=e.virtualList,d=e.sortableEnabled,f=e.tab,h=e.tabActive,m=e.noHairlines,b=e.noHairlinesIos,g=e.noHairlinesMd,v=e.noHairlinesBetween,y=e.noHairlinesBetweenIos,B=e.noHairlinesBetweenMd,E=e.formStoreData,S=e.inlineLabels,C=e.className;return t.classNames(C,"list",{inset:n,"tablet-inset":r,"media-list":s,"simple-list":i,"links-list":a,sortable:l,"accordion-list":p,"contacts-list":c,"virtual-list":u,"sortable-enabled":d,tab:f,"tab-active":h,"no-hairlines":m,"no-hairlines-between":v,"no-hairlines-md":g,"no-hairlines-between-md":B,"no-hairlines-ios":b,"no-hairlines-between-ios":y,"form-store-data":E,"inline-labels":S},o.colorClasses(e))},s.prototype.render=function(){var o=this,n=this,r=n.props,s=r.id,i=r.style,a=r.form,l=n.slots,p=l.list,c=l.default,u=[],d=[],f=p||[],h=!1;t.flattenArray(c).forEach(function(e){var t;void 0!==e&&((t=e.type&&(e.type.displayName||e.type.name))||"string"!=typeof e.type||(t=e.type),!t||t&&!("li"===t||"F7ListItem"===t||"F7ListButton"===t||t.indexOf("list-item")>=0||t.indexOf("list-button")>=0||t.indexOf("f7-list-item")>=0||t.indexOf("f7-list-button")>=0)?h?d.push(e):u.push(e):t&&(h=!0,f.push(e)))});var m=a?"form":"div";return f.length>0?e.createElement(m,{id:s,ref:function(e){o.__reactRefs.el=e},style:i,className:n.classes},n.slots["before-list"],u,e.createElement("ul",null,f),n.slots["after-list"],d):e.createElement(m,{id:s,ref:function(e){o.__reactRefs.el=e},style:i,className:n.classes},n.slots["before-list"],u,n.slots["after-list"],d)},s.prototype.componentDidMount=function(){var e=this,o=e.refs.el,n=e.props,r=n.virtualList,s=n.virtualListParams;o&&(e.onSortableEnableBound=e.onSortableEnable.bind(e),e.onSortableDisableBound=e.onSortableDisable.bind(e),e.onSortableSortBound=e.onSortableSort.bind(e),e.onTabShowBound=e.onTabShow.bind(e),e.onTabHideBound=e.onTabHide.bind(e),o.addEventListener("sortable:enable",e.onSortableEnableBound),o.addEventListener("sortable:disable",e.onSortableDisableBound),o.addEventListener("sortable:sort",e.onSortableSortBound),o.addEventListener("tab:show",e.onTabShowBound),o.addEventListener("tab:hide",e.onTabHideBound)),r&&e.$f7ready(function(n){var r=(0,e.$$)(o).find("script"),i=r.html();!i&&r.length>0&&(i=r[0].outerHTML,i=/\